@amc-technology/ui-library 1.0.28 → 1.0.33

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/amc-technology-ui-library.d.ts +1 -3
  2. package/amc-technology-ui-library.metadata.json +1 -1
  3. package/bundles/amc-technology-ui-library.umd.js +1087 -726
  4. package/bundles/amc-technology-ui-library.umd.js.map +1 -57
  5. package/bundles/amc-technology-ui-library.umd.min.js +16 -2
  6. package/bundles/amc-technology-ui-library.umd.min.js.map +1 -266
  7. package/esm2015/amc-technology-ui-library.js +16 -1579
  8. package/esm2015/projects/UILibrary/src/app/Helpers.js +11 -0
  9. package/esm2015/projects/UILibrary/src/app/components/activity/activity.component.js +83 -0
  10. package/esm2015/projects/UILibrary/src/app/components/chat-box/chat-box.component.js +104 -0
  11. package/esm2015/projects/UILibrary/src/app/components/chat-message/chat-message.component.js +39 -0
  12. package/esm2015/projects/UILibrary/src/app/components/disposition/disposition.component.js +49 -0
  13. package/esm2015/projects/UILibrary/src/app/components/duration/duration.component.js +58 -0
  14. package/esm2015/projects/UILibrary/src/app/components/holdtimer/holdtimer.component.js +72 -0
  15. package/esm2015/projects/UILibrary/src/app/components/interaction/interaction.component.js +80 -0
  16. package/esm2015/projects/UILibrary/src/app/components/login/login.component.js +45 -0
  17. package/esm2015/projects/UILibrary/src/app/components/operation/operation.component.js +57 -0
  18. package/esm2015/projects/UILibrary/src/app/components/property/property.component.js +99 -0
  19. package/esm2015/projects/UILibrary/src/app/components/scenario/scenario.component.js +40 -0
  20. package/esm2015/projects/UILibrary/src/app/models/chat.message.js +7 -0
  21. package/esm2015/projects/UILibrary/src/app/models/chat.settings.js +1 -0
  22. package/esm2015/projects/UILibrary/src/app/models/disposition.interface.js +1 -0
  23. package/esm2015/projects/UILibrary/src/app/models/login.interface.js +1 -0
  24. package/esm2015/projects/UILibrary/src/app/models/uilibrary.model.js +40 -0
  25. package/esm2015/projects/UILibrary/src/app/uilibrary.module.js +73 -0
  26. package/esm2015/public_api.js +2 -0
  27. package/esm5/amc-technology-ui-library.js +16 -716
  28. package/esm5/projects/UILibrary/src/app/Helpers.js +11 -0
  29. package/esm5/projects/UILibrary/src/app/components/activity/activity.component.js +84 -0
  30. package/esm5/projects/UILibrary/src/app/components/chat-box/chat-box.component.js +105 -0
  31. package/esm5/projects/UILibrary/src/app/components/chat-message/chat-message.component.js +40 -0
  32. package/esm5/projects/UILibrary/src/app/components/disposition/disposition.component.js +61 -0
  33. package/esm5/projects/UILibrary/src/app/components/duration/duration.component.js +60 -0
  34. package/esm5/projects/UILibrary/src/app/components/holdtimer/holdtimer.component.js +74 -0
  35. package/esm5/projects/UILibrary/src/app/components/interaction/interaction.component.js +85 -0
  36. package/esm5/projects/UILibrary/src/app/components/login/login.component.js +68 -0
  37. package/esm5/projects/UILibrary/src/app/components/operation/operation.component.js +58 -0
  38. package/esm5/projects/UILibrary/src/app/components/property/property.component.js +101 -0
  39. package/esm5/projects/UILibrary/src/app/components/scenario/scenario.component.js +41 -0
  40. package/esm5/projects/UILibrary/src/app/models/chat.message.js +7 -0
  41. package/esm5/projects/UILibrary/src/app/models/chat.settings.js +1 -0
  42. package/esm5/projects/UILibrary/src/app/models/disposition.interface.js +1 -0
  43. package/esm5/projects/UILibrary/src/app/models/login.interface.js +1 -0
  44. package/esm5/projects/UILibrary/src/app/models/uilibrary.model.js +43 -0
  45. package/esm5/projects/UILibrary/src/app/uilibrary.module.js +74 -0
  46. package/esm5/public_api.js +2 -0
  47. package/fesm2015/amc-technology-ui-library.js +813 -0
  48. package/fesm2015/amc-technology-ui-library.js.map +1 -0
  49. package/fesm5/amc-technology-ui-library.js +867 -0
  50. package/fesm5/amc-technology-ui-library.js.map +1 -0
  51. package/package.json +14 -66
  52. package/projects/UILibrary/src/app/components/activity/activity.component.d.ts +11 -9
  53. package/projects/UILibrary/src/app/components/disposition/disposition.component.d.ts +5 -3
  54. package/projects/UILibrary/src/app/components/duration/duration.component.d.ts +4 -1
  55. package/projects/UILibrary/src/app/components/holdtimer/holdtimer.component.d.ts +4 -1
  56. package/projects/UILibrary/src/app/components/interaction/interaction.component.d.ts +4 -1
  57. package/projects/UILibrary/src/app/components/login/login.component.d.ts +11 -0
  58. package/projects/UILibrary/src/app/components/operation/operation.component.d.ts +6 -0
  59. package/projects/UILibrary/src/app/components/property/property.component.d.ts +5 -0
  60. package/projects/UILibrary/src/app/components/scenario/scenario.component.d.ts +2 -2
  61. package/projects/UILibrary/src/app/models/disposition.interface.d.ts +12 -0
  62. package/projects/UILibrary/src/app/models/login.interface.d.ts +13 -0
  63. package/projects/UILibrary/src/app/models/uilibrary.model.d.ts +23 -24
  64. package/webcomponents/webcomponents.js +3 -3
  65. package/esm2015/amc-technology-ui-library.js.map +0 -44
  66. package/esm5/amc-technology-ui-library.js.map +0 -44
  67. package/projects/UILibrary/src/app/components/amc-collapsible-container/amc-collapsible-container.component.d.ts +0 -6
  68. package/projects/UILibrary/src/app/components/caller-information/caller-information.component.d.ts +0 -14
  69. package/projects/UILibrary/src/app/components/recent-activities/recent-activities.component.d.ts +0 -45
@@ -1,1579 +1,16 @@
1
- import { Component, Input, Output, EventEmitter, ViewChild, NgModule, Injector } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { FormsModule } from '@angular/forms';
4
- import { createCustomElement } from '@angular/elements';
5
- import { BrowserModule } from '@angular/platform-browser';
6
- import { ElementZoneStrategyFactory } from 'elements-zone-strategy';
7
-
8
- /**
9
- * @fileoverview added by tsickle
10
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
11
- */
12
- /**
13
- * @ignore
14
- */
15
- class InteractionComponent {
16
- /**
17
- * @ignore
18
- */
19
- constructor() {
20
- this.minimizedChanged = new EventEmitter();
21
- this.isAgentTyping = new EventEmitter();
22
- this.newMessage = new EventEmitter();
23
- this._minimized = false;
24
- }
25
- /**
26
- * @param {?} value
27
- * @return {?}
28
- */
29
- set _minimized(value) {
30
- this.minimized = value;
31
- this.minimizedChanged.emit(value);
32
- }
33
- /**
34
- * @return {?}
35
- */
36
- get _minimized() {
37
- return this.minimized;
38
- }
39
- /**
40
- * @ignore
41
- * @return {?}
42
- */
43
- ngOnInit() {
44
- }
45
- /**
46
- * @ignore
47
- * @return {?}
48
- */
49
- minimize() {
50
- this._minimized = true;
51
- }
52
- /**
53
- * @ignore
54
- * @return {?}
55
- */
56
- maximize() {
57
- this._minimized = false;
58
- }
59
- /**
60
- * @ignore
61
- * @return {?}
62
- */
63
- isConferenceCall() {
64
- if (this.interaction.parties && this.interaction.parties.length > 1) {
65
- return true;
66
- }
67
- return false;
68
- }
69
- }
70
- InteractionComponent.decorators = [
71
- { type: Component, args: [{
72
- selector: 'amc-interaction',
73
- template: `<div class="AnswerCallFocused">
74
- <div class="editor callHeaderTop">
75
- <img class="statusImage" [src]="interaction.UIHeadersData.statusUrl" (click)="interaction.UIHeadersData.focusHandler.handler(interaction.UIHeadersData.focusHandler.operationName, interaction.UIHeadersData.focusHandler.operationMetadata)" />
76
- <label class="statusText">
77
- <b>{{interaction.UIHeadersData.statusText}}</b>
78
- </label>
79
- <label class="verticalDivider">|</label>
80
- <label class="directionText" *ngIf="!interaction.UIHeadersData.displayHoldCounter">{{interaction.UIHeadersData.directionText}}</label>
81
- <div class="holdCallDurationDiv" *ngIf="interaction.UIHeadersData.displayHoldCounter">
82
- <amc-holdtimer [holdCounterData]="interaction.UIHeadersData.holdCounterData"></amc-holdtimer>
83
- </div>
84
- <img class="ViewExpandImage" [src]="interaction.UIHeadersData.minimizeUrl" (click)="minimize()" *ngIf="!_minimized" />
85
- <img class="ViewCollapseImage" [src]="interaction.UIHeadersData.maximizeUrl" (click)="maximize()" *ngIf="_minimized" />
86
- <div class="DurationDiv" *ngIf="interaction.displayCallTimer">
87
- <amc-duration [startTime]="interaction.startTime"></amc-duration>
88
- </div>
89
- </div>
90
-
91
- <div *ngIf="!_minimized">
92
-
93
- <div *ngIf="!isConferenceCall()">
94
- <div class="editor container">
95
- <input class="callImage" type="image" [src]="interaction.subheaderData.image.href" [title]="interaction.subheaderData.tooltip || ''">
96
- <input class="editor phoneNumberValue" readonly type="text" [value]="interaction.subheaderData.value">
97
- </div>
98
-
99
- <div class="cadSection">
100
- <ng-container *ngFor="let property of interaction.properties">
101
- <ng-container *ngIf="property.visible">
102
- <label class="col1" [title]="property.displayKey">{{property.displayKey}}</label>
103
- <amc-property class="col2" [property]="property"> </amc-property>
104
- </ng-container>
105
- </ng-container>
106
-
107
- <ng-container *ngFor="let property of interaction.associatedData">
108
- <ng-container *ngIf="property.visible">
109
- <div class="editor displayDiv">
110
- <label class="displayLabels" [title]="property.displayKey">{{property.displayKey}}</label>
111
- <amc-property class="col2" [property]="property"> </amc-property>
112
- </div>
113
- </ng-container>
114
- </ng-container>
115
- </div>
116
-
117
- <app-chat-box *ngIf="interaction.chat" [isTyping]="interaction.chat.isCustomerTyping" [settings]="interaction.chat.settings"
118
- [messages]="interaction.chat.messages" (isAgentTyping)="isAgentTyping.emit($event)" (newMessage)="newMessage.emit($event)"></app-chat-box>
119
-
120
- <div [id]='interaction.interactionId'> </div>
121
- <amc-operation [operations]="interaction.operations"></amc-operation>
122
- </div>
123
-
124
- <div *ngIf="isConferenceCall()">
125
- <div *ngFor="let party of interaction.parties">
126
- <div class="editor container">
127
- <input class="callImage" type="image" [src]="party.header.image.href" [title]="party.header.tooltip || ''">
128
- <input class="editor phoneNumberValue" readonly type="text" [value]="party.header.value">
129
- </div>
130
-
131
- <div class="grid-container">
132
- <ng-container *ngFor="let property of party.properties">
133
- <ng-container *ngIf="property.visible">
134
- <label class="col1" [title]="property.displayKey">{{property.displayKey}}</label>
135
- <amc-property class="col2" [property]="property"> </amc-property>
136
- </ng-container>
137
- </ng-container>
138
- </div>
139
- <amc-operation [operations]="party.operations"></amc-operation>
140
- <div class="AnswerCallFocused"></div>
141
- </div>
142
- <amc-operation [operations]="interaction.operations"></amc-operation>
143
- </div>
144
-
145
- </div>
146
- </div>
147
- `,
148
- styles: [`:host{display:block}.container{margin-left:5px!important;padding-left:0}.cadSection{margin-bottom:5px}.grid-container{margin-left:5px;display:grid;grid-template-columns:auto 1fr;grid-column-gap:10px;max-width:calc(100% - 5px);overflow:hidden}.col1{grid-column:1/2}.col2{grid-column:2/3}`, `body{padding-top:5px;padding-bottom:5px;margin:0}.login{width:20px;height:20px;display:block;margin-top:2px;margin-left:auto;margin-right:auto}.editor{font-size:.9em;text-align:left;margin:4px 5% 0 0;font-family:Arial;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;border:0;padding-top:2px;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.editor .standalone-line{width:90%!important;text-align:center!important}.editorHyperLink label{font-size:.95em;float:left;width:30%;margin-left:2%;text-align:left;color:#000;font-family:Arial;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:0;padding-top:0}.editorHyperLink input[type=text]{font-size:.95em;width:60%;text-align:left;margin:0 5% 0 0;color:#318fc5;cursor:pointer;font-family:Arial;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border:0;padding-top:0;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.AnswerCallImages{height:20px;margin:6px 0 0 5px;cursor:pointer}.AnswerCallFocused{border:1px solid #939598;margin-left:0;font-family:Arial;position:relative;background-color:#fff;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.ViewCollapseImage,.ViewExpandImage{width:20px;height:20px;float:right;cursor:pointer}.answerPhoneNumberStyle{border:0;position:relative;top:-12px;left:-38px;max-width:80px;height:15px;text-overflow:ellipsis;font-size:.85em}.callHeaderTop{border-bottom:1px solid;background-color:#f4f5fb;width:100%;margin-top:0}.statusImage{width:15px;height:15px;margin-left:10px;float:left;margin-right:5px}.statusText{float:left;margin-top:1px}.displayDiv{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.DurationDiv{float:right;width:17%;text-align:right;margin-right:5px}.displayLabels{margin-left:5px;width:25%;overflow:hidden;text-overflow:ellipsis}.displayData{border:0;outline:0}.container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.callOptions{background-color:#f6f7fb;bottom:0;width:100%;text-align:center}.directionText{font-size:.8em;margin-left:2px}.phoneNumberValue{font-weight:700;font-size:1em;margin-left:5px}.durationInput{background-color:transparent;border:0;width:100%;text-align:right}.topBorder{border-top:1px solid #939598}.holdCallDurationDiv{float:left;margin-top:1px;margin-left:2px}.holdCallDurationTimer{background-color:transparent;border:0;width:100%}.verticalDivider{margin-left:2px;float:left}.callImage{height:20px}`]
149
- },] },
150
- ];
151
- /** @nocollapse */
152
- InteractionComponent.ctorParameters = () => [];
153
- InteractionComponent.propDecorators = {
154
- interaction: [{ type: Input }],
155
- minimizedChanged: [{ type: Output }],
156
- isAgentTyping: [{ type: Output }],
157
- newMessage: [{ type: Output }]
158
- };
159
-
160
- /**
161
- * @fileoverview added by tsickle
162
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
163
- */
164
- class ScenarioComponent {
165
- constructor() {
166
- this.minimizedChanged = new EventEmitter();
167
- this.isAgentTyping = new EventEmitter();
168
- this.newMessage = new EventEmitter();
169
- this.afterViewChecked = new EventEmitter();
170
- }
171
- /**
172
- * @return {?}
173
- */
174
- ngAfterViewChecked() {
175
- this.afterViewChecked.emit();
176
- }
177
- /**
178
- * @return {?}
179
- */
180
- onMinimizedChanged() {
181
- this.minimizedChanged.emit();
182
- }
183
- }
184
- ScenarioComponent.decorators = [
185
- { type: Component, args: [{
186
- selector: 'amc-scenario',
187
- template: `<ng-container *ngIf="scenario && scenario.interactions">
188
- <amc-interaction *ngFor="let interaction of scenario.interactions" [interaction]="interaction"
189
- (minimizedChanged)="onMinimizedChanged()" (isAgentTyping)="isAgentTyping.emit($event)"
190
- (newMessage)="newMessage.emit($event)">
191
- </amc-interaction>
192
- </ng-container>
193
- `,
194
- styles: [``, `body{padding-top:5px;padding-bottom:5px;margin:0}.login{width:20px;height:20px;display:block;margin-top:2px;margin-left:auto;margin-right:auto}.editor{font-size:.9em;text-align:left;margin:4px 5% 0 0;font-family:Arial;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;border:0;padding-top:2px;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.editor .standalone-line{width:90%!important;text-align:center!important}.editorHyperLink label{font-size:.95em;float:left;width:30%;margin-left:2%;text-align:left;color:#000;font-family:Arial;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:0;padding-top:0}.editorHyperLink input[type=text]{font-size:.95em;width:60%;text-align:left;margin:0 5% 0 0;color:#318fc5;cursor:pointer;font-family:Arial;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border:0;padding-top:0;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.AnswerCallImages{height:20px;margin:6px 0 0 5px;cursor:pointer}.AnswerCallFocused{border:1px solid #939598;margin-left:0;font-family:Arial;position:relative;background-color:#fff;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.ViewCollapseImage,.ViewExpandImage{width:20px;height:20px;float:right;cursor:pointer}.answerPhoneNumberStyle{border:0;position:relative;top:-12px;left:-38px;max-width:80px;height:15px;text-overflow:ellipsis;font-size:.85em}.callHeaderTop{border-bottom:1px solid;background-color:#f4f5fb;width:100%;margin-top:0}.statusImage{width:15px;height:15px;margin-left:10px;float:left;margin-right:5px}.statusText{float:left;margin-top:1px}.displayDiv{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.DurationDiv{float:right;width:17%;text-align:right;margin-right:5px}.displayLabels{margin-left:5px;width:25%;overflow:hidden;text-overflow:ellipsis}.displayData{border:0;outline:0}.container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.callOptions{background-color:#f6f7fb;bottom:0;width:100%;text-align:center}.directionText{font-size:.8em;margin-left:2px}.phoneNumberValue{font-weight:700;font-size:1em;margin-left:5px}.durationInput{background-color:transparent;border:0;width:100%;text-align:right}.topBorder{border-top:1px solid #939598}.holdCallDurationDiv{float:left;margin-top:1px;margin-left:2px}.holdCallDurationTimer{background-color:transparent;border:0;width:100%}.verticalDivider{margin-left:2px;float:left}.callImage{height:20px}`]
195
- },] },
196
- ];
197
- /** @nocollapse */
198
- ScenarioComponent.ctorParameters = () => [];
199
- ScenarioComponent.propDecorators = {
200
- scenario: [{ type: Input }],
201
- minimizedChanged: [{ type: Output }],
202
- isAgentTyping: [{ type: Output }],
203
- newMessage: [{ type: Output }],
204
- afterViewChecked: [{ type: Output }]
205
- };
206
-
207
- /**
208
- * @fileoverview added by tsickle
209
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
210
- */
211
- /**
212
- * @ignore
213
- */
214
- class OperationComponent {
215
- /**
216
- * @ignore
217
- */
218
- constructor() {
219
- }
220
- /**
221
- * @ignore
222
- * @return {?}
223
- */
224
- ngOnInit() {
225
- }
226
- }
227
- OperationComponent.decorators = [
228
- { type: Component, args: [{
229
- selector: 'amc-operation',
230
- template: `<div class="callOptions">
231
- <img class="AnswerCallImages" *ngFor="let operation of operations" [title]="operation.title" [src]="operation.icon" (click)="operation.handler(operation.operationName, operation.operationMetadata)"
232
- />
233
- </div>`,
234
- styles: [``, `body{padding-top:5px;padding-bottom:5px;margin:0}.login{width:20px;height:20px;display:block;margin-top:2px;margin-left:auto;margin-right:auto}.editor{font-size:.9em;text-align:left;margin:4px 5% 0 0;font-family:Arial;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;border:0;padding-top:2px;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.editor .standalone-line{width:90%!important;text-align:center!important}.editorHyperLink label{font-size:.95em;float:left;width:30%;margin-left:2%;text-align:left;color:#000;font-family:Arial;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:0;padding-top:0}.editorHyperLink input[type=text]{font-size:.95em;width:60%;text-align:left;margin:0 5% 0 0;color:#318fc5;cursor:pointer;font-family:Arial;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border:0;padding-top:0;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.AnswerCallImages{height:20px;margin:6px 0 0 5px;cursor:pointer}.AnswerCallFocused{border:1px solid #939598;margin-left:0;font-family:Arial;position:relative;background-color:#fff;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.ViewCollapseImage,.ViewExpandImage{width:20px;height:20px;float:right;cursor:pointer}.answerPhoneNumberStyle{border:0;position:relative;top:-12px;left:-38px;max-width:80px;height:15px;text-overflow:ellipsis;font-size:.85em}.callHeaderTop{border-bottom:1px solid;background-color:#f4f5fb;width:100%;margin-top:0}.statusImage{width:15px;height:15px;margin-left:10px;float:left;margin-right:5px}.statusText{float:left;margin-top:1px}.displayDiv{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.DurationDiv{float:right;width:17%;text-align:right;margin-right:5px}.displayLabels{margin-left:5px;width:25%;overflow:hidden;text-overflow:ellipsis}.displayData{border:0;outline:0}.container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.callOptions{background-color:#f6f7fb;bottom:0;width:100%;text-align:center}.directionText{font-size:.8em;margin-left:2px}.phoneNumberValue{font-weight:700;font-size:1em;margin-left:5px}.durationInput{background-color:transparent;border:0;width:100%;text-align:right}.topBorder{border-top:1px solid #939598}.holdCallDurationDiv{float:left;margin-top:1px;margin-left:2px}.holdCallDurationTimer{background-color:transparent;border:0;width:100%}.verticalDivider{margin-left:2px;float:left}.callImage{height:20px}`]
235
- },] },
236
- ];
237
- /** @nocollapse */
238
- OperationComponent.ctorParameters = () => [];
239
- OperationComponent.propDecorators = {
240
- operations: [{ type: Input }]
241
- };
242
-
243
- /**
244
- * @fileoverview added by tsickle
245
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
246
- */
247
- /**
248
- * @record
249
- */
250
-
251
- /** @enum {string} */
252
- const IChatMessageType = {
253
- AGENT: 'AGENT',
254
- OTHER_PERSON: 'OTHER_PERSON',
255
- INFORMATION: 'INFORMATION',
256
- };
257
-
258
- /**
259
- * @fileoverview added by tsickle
260
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
261
- */
262
- /**
263
- * @record
264
- */
265
-
266
- /**
267
- * @fileoverview added by tsickle
268
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
269
- */
270
- /**
271
- * It is collection of Interaction which need to be displayed on scenario component.
272
- * @record
273
- */
274
-
275
- /**
276
- * @record
277
- */
278
-
279
- /**
280
- * @record
281
- */
282
-
283
- /**
284
- * @record
285
- */
286
-
287
- /**
288
- * @record
289
- */
290
-
291
- /**
292
- * This contains the main identifying information about the interaction.
293
- * @record
294
- */
295
-
296
- /**
297
- * It contains URLs for minimize, maximize, interaction specific icon urls for interaction.
298
- * And header number which needs to be displayed at top.
299
- * @record
300
- */
301
-
302
- /**
303
- * @record
304
- */
305
-
306
- /**
307
- * @record
308
- */
309
-
310
- /**
311
- * It contains Operation Icon URL and its hadlers which need to be displayed in Interaction.
312
- * @record
313
- */
314
-
315
- /**
316
- * It contains Operation Icon URL and its hadlers which need to be displayed in Interaction.
317
- * @record
318
- */
319
-
320
- /**
321
- * This contains properties and operations to be displayed for conference member.
322
- * @record
323
- */
324
-
325
- /**
326
- * key value pairs which can be used amongst other interfaces/classes to store metadata of those entities.
327
- * @record
328
- */
329
-
330
- /**
331
- * This interface contains key value pairs, some custom operation which generates display key and display value.
332
- * Also it includes custom operation handler for click event on properties.
333
- * @record
334
- */
335
-
336
- /**
337
- * A helper method to make instances of [IProperty]
338
- */
339
- class Property {
340
- /**
341
- *
342
- * @param {?} key
343
- * @param {?} value : if value type is COUNTER then value should be start time in MilliSeconds.
344
- * @param {?=} visible
345
- * @param {?=} valueType
346
- * @param {?=} customOperation
347
- */
348
- constructor(key, value, visible, valueType, customOperation) {
349
- /**
350
- * Operation responsible for generating displayKey and dispkayValur from key and value.
351
- */
352
- this.displayOperation = (/**
353
- * @return {?}
354
- */
355
- () => {
356
- this.displayKey = this.key;
357
- this.displayValue = this.value;
358
- });
359
- this.key = key;
360
- this.value = value;
361
- visible != null ? (this.visible = visible) : (this.visible = true);
362
- valueType != null
363
- ? (this.displayValueType = valueType)
364
- : (this.displayValueType = ValueType.STRING);
365
- this.customOperations = customOperation;
366
- this.displayOperation();
367
- }
368
- }
369
- /**
370
- * Interface which contains eventName and handler associated with it.
371
- * @record
372
- */
373
-
374
- /** @enum {number} */
375
- const ValueType = {
376
- STRING: 0,
377
- COUNTER: 1,
378
- };
379
- ValueType[ValueType.STRING] = 'STRING';
380
- ValueType[ValueType.COUNTER] = 'COUNTER';
381
-
382
- /**
383
- * @fileoverview added by tsickle
384
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
385
- */
386
- /**
387
- * @param {?} seconds_in
388
- * @return {?}
389
- */
390
- function secondsToHms(seconds_in) {
391
- seconds_in = Number(seconds_in);
392
- /** @type {?} */
393
- const h = Math.floor(seconds_in / 3600);
394
- /** @type {?} */
395
- const m = Math.floor(seconds_in % 3600 / 60);
396
- /** @type {?} */
397
- const s = Math.floor(seconds_in % 3600 % 60);
398
- /** @type {?} */
399
- const hDisplay = h > 0 ? h.toString() + ':' : '';
400
- /** @type {?} */
401
- const mDisplay = m > 0 ? ('0' + m.toString()).slice(-2) + ':' : '00:';
402
- /** @type {?} */
403
- const sDisplay = s > 0 ? ('0' + s.toString()).slice(-2) : '00';
404
- return hDisplay + mDisplay + sDisplay;
405
- }
406
-
407
- /**
408
- * @fileoverview added by tsickle
409
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
410
- */
411
- /**
412
- * @ignore
413
- */
414
- class PropertyComponent {
415
- /**
416
- * @ignore
417
- */
418
- constructor() {
419
- this._timerId = null;
420
- this.processedDisplayValue = '';
421
- }
422
- /**
423
- * @ignore
424
- * @return {?}
425
- */
426
- ngOnInit() {
427
- this.initValues();
428
- }
429
- /**
430
- * @ignore
431
- * @return {?}
432
- */
433
- initValues() {
434
- if (this.property.displayValueType === ValueType.COUNTER) {
435
- this.startCallCounter();
436
- }
437
- else {
438
- this.processedDisplayValue = this.property.displayValue;
439
- }
440
- }
441
- /**
442
- * @ignore
443
- * @private
444
- * @return {?}
445
- */
446
- startCallCounter() {
447
- if (this._timerId == null) {
448
- this._timerId = window.setInterval((/**
449
- * @return {?}
450
- */
451
- () => {
452
- /** @type {?} */
453
- const callStartTime = this.property.displayValue;
454
- /** @type {?} */
455
- const currentTime = new Date().getTime() / 1000;
456
- /** @type {?} */
457
- const secondsPassed = Math.floor((currentTime) - (callStartTime / 1000));
458
- this.processedDisplayValue = secondsToHms(secondsPassed);
459
- }), 1000);
460
- }
461
- }
462
- /**
463
- * @ignore
464
- * @return {?}
465
- */
466
- ngOnDestroy() {
467
- if (this.property.displayValueType === ValueType.COUNTER) {
468
- // clear the timer.
469
- if (this._timerId != null) {
470
- clearInterval(this._timerId);
471
- this._timerId = null;
472
- }
473
- }
474
- }
475
- }
476
- PropertyComponent.decorators = [
477
- { type: Component, args: [{
478
- selector: 'amc-property',
479
- template: `<input [name]="processedDisplayValue" readonly [title]="processedDisplayValue" class="displayData" type="text" [value]="processedDisplayValue"
480
- *ngIf="!property.customOperations" />
481
- <input class="cursor" [name]="processedDisplayValue" class="displayData" readonly [title]="processedDisplayValue" type="text" [value]="processedDisplayValue"
482
- (click)="property.customOperations.handler(property.customOperations.eventName,property.customOperations.eventMetadata)"
483
- *ngIf="property.customOperations" />
484
- `,
485
- styles: [`input{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;border:0}`, `body{padding-top:5px;padding-bottom:5px;margin:0}.login{width:20px;height:20px;display:block;margin-top:2px;margin-left:auto;margin-right:auto}.editor{font-size:.9em;text-align:left;margin:4px 5% 0 0;font-family:Arial;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;border:0;padding-top:2px;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.editor .standalone-line{width:90%!important;text-align:center!important}.editorHyperLink label{font-size:.95em;float:left;width:30%;margin-left:2%;text-align:left;color:#000;font-family:Arial;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:0;padding-top:0}.editorHyperLink input[type=text]{font-size:.95em;width:60%;text-align:left;margin:0 5% 0 0;color:#318fc5;cursor:pointer;font-family:Arial;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border:0;padding-top:0;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.AnswerCallImages{height:20px;margin:6px 0 0 5px;cursor:pointer}.AnswerCallFocused{border:1px solid #939598;margin-left:0;font-family:Arial;position:relative;background-color:#fff;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.ViewCollapseImage,.ViewExpandImage{width:20px;height:20px;float:right;cursor:pointer}.answerPhoneNumberStyle{border:0;position:relative;top:-12px;left:-38px;max-width:80px;height:15px;text-overflow:ellipsis;font-size:.85em}.callHeaderTop{border-bottom:1px solid;background-color:#f4f5fb;width:100%;margin-top:0}.statusImage{width:15px;height:15px;margin-left:10px;float:left;margin-right:5px}.statusText{float:left;margin-top:1px}.displayDiv{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.DurationDiv{float:right;width:17%;text-align:right;margin-right:5px}.displayLabels{margin-left:5px;width:25%;overflow:hidden;text-overflow:ellipsis}.displayData{border:0;outline:0}.container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.callOptions{background-color:#f6f7fb;bottom:0;width:100%;text-align:center}.directionText{font-size:.8em;margin-left:2px}.phoneNumberValue{font-weight:700;font-size:1em;margin-left:5px}.durationInput{background-color:transparent;border:0;width:100%;text-align:right}.topBorder{border-top:1px solid #939598}.holdCallDurationDiv{float:left;margin-top:1px;margin-left:2px}.holdCallDurationTimer{background-color:transparent;border:0;width:100%}.verticalDivider{margin-left:2px;float:left}.callImage{height:20px}`]
486
- },] },
487
- ];
488
- /** @nocollapse */
489
- PropertyComponent.ctorParameters = () => [];
490
- PropertyComponent.propDecorators = {
491
- property: [{ type: Input }]
492
- };
493
-
494
- /**
495
- * @fileoverview added by tsickle
496
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
497
- */
498
- class HoldtimerComponent {
499
- constructor() {
500
- this.displayTime = '00:00/00:00';
501
- }
502
- /**
503
- * @return {?}
504
- */
505
- ngOnInit() {
506
- this.startCallCounter();
507
- }
508
- /**
509
- * @ignore
510
- * @private
511
- * @return {?}
512
- */
513
- startCallCounter() {
514
- /** @type {?} */
515
- const pastTimeInSeconds = this.CaculatePastHoldDuration();
516
- if (this._timerId == null) {
517
- this._timerId = window.setInterval((/**
518
- * @return {?}
519
- */
520
- () => {
521
- /** @type {?} */
522
- const currentTime = new Date().getTime() / 1000;
523
- /** @type {?} */
524
- const secondsPassedCurrentCall = Math.floor((currentTime) - (this.holdCounterData.currentHoldStartTime / 1000));
525
- this.displayTime = secondsToHms(secondsPassedCurrentCall) +
526
- '/' + secondsToHms(pastTimeInSeconds + secondsPassedCurrentCall);
527
- }), 1000);
528
- }
529
- }
530
- /**
531
- * @private
532
- * @return {?}
533
- */
534
- CaculatePastHoldDuration() {
535
- /** @type {?} */
536
- let pastTimeInSeconds = 0;
537
- if (this.holdCounterData.pastCallDurations) {
538
- this.holdCounterData.pastCallDurations.forEach((/**
539
- * @param {?} holdTimerIterator
540
- * @return {?}
541
- */
542
- (holdTimerIterator) => {
543
- pastTimeInSeconds += (holdTimerIterator.endTime - holdTimerIterator.startTime) / 1000;
544
- }));
545
- }
546
- return pastTimeInSeconds;
547
- }
548
- /**
549
- * @ignore
550
- * @return {?}
551
- */
552
- ngOnDestroy() {
553
- // clear the timer.
554
- if (this._timerId != null) {
555
- clearInterval(this._timerId);
556
- this._timerId = null;
557
- }
558
- }
559
- }
560
- HoldtimerComponent.decorators = [
561
- { type: Component, args: [{
562
- selector: 'amc-holdtimer',
563
- template: `<div class="holdCallDurationDiv">
564
- <input class="holdCallDurationTimer" name="HoldCallDuration/TotalHoldCallDuration" type="text" [value]="displayTime"
565
- readonly>
566
- </div>
567
- `,
568
- styles: [``, `body{padding-top:5px;padding-bottom:5px;margin:0}.login{width:20px;height:20px;display:block;margin-top:2px;margin-left:auto;margin-right:auto}.editor{font-size:.9em;text-align:left;margin:4px 5% 0 0;font-family:Arial;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;border:0;padding-top:2px;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.editor .standalone-line{width:90%!important;text-align:center!important}.editorHyperLink label{font-size:.95em;float:left;width:30%;margin-left:2%;text-align:left;color:#000;font-family:Arial;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:0;padding-top:0}.editorHyperLink input[type=text]{font-size:.95em;width:60%;text-align:left;margin:0 5% 0 0;color:#318fc5;cursor:pointer;font-family:Arial;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border:0;padding-top:0;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.AnswerCallImages{height:20px;margin:6px 0 0 5px;cursor:pointer}.AnswerCallFocused{border:1px solid #939598;margin-left:0;font-family:Arial;position:relative;background-color:#fff;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.ViewCollapseImage,.ViewExpandImage{width:20px;height:20px;float:right;cursor:pointer}.answerPhoneNumberStyle{border:0;position:relative;top:-12px;left:-38px;max-width:80px;height:15px;text-overflow:ellipsis;font-size:.85em}.callHeaderTop{border-bottom:1px solid;background-color:#f4f5fb;width:100%;margin-top:0}.statusImage{width:15px;height:15px;margin-left:10px;float:left;margin-right:5px}.statusText{float:left;margin-top:1px}.displayDiv{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.DurationDiv{float:right;width:17%;text-align:right;margin-right:5px}.displayLabels{margin-left:5px;width:25%;overflow:hidden;text-overflow:ellipsis}.displayData{border:0;outline:0}.container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.callOptions{background-color:#f6f7fb;bottom:0;width:100%;text-align:center}.directionText{font-size:.8em;margin-left:2px}.phoneNumberValue{font-weight:700;font-size:1em;margin-left:5px}.durationInput{background-color:transparent;border:0;width:100%;text-align:right}.topBorder{border-top:1px solid #939598}.holdCallDurationDiv{float:left;margin-top:1px;margin-left:2px}.holdCallDurationTimer{background-color:transparent;border:0;width:100%}.verticalDivider{margin-left:2px;float:left}.callImage{height:20px}`]
569
- },] },
570
- ];
571
- /** @nocollapse */
572
- HoldtimerComponent.ctorParameters = () => [];
573
- HoldtimerComponent.propDecorators = {
574
- holdCounterData: [{ type: Input }]
575
- };
576
-
577
- /**
578
- * @fileoverview added by tsickle
579
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
580
- */
581
- class DurationComponent {
582
- constructor() {
583
- this.displayTime = '00:00/00:00';
584
- }
585
- /**
586
- * @return {?}
587
- */
588
- ngOnInit() {
589
- this.startCallCounter();
590
- }
591
- /**
592
- * @ignore
593
- * @private
594
- * @return {?}
595
- */
596
- startCallCounter() {
597
- if (this._timerId == null) {
598
- this._timerId = window.setInterval((/**
599
- * @return {?}
600
- */
601
- () => {
602
- /** @type {?} */
603
- const callStartTime = this.startTime;
604
- /** @type {?} */
605
- const currentTime = new Date().getTime() / 1000;
606
- /** @type {?} */
607
- const secondsPassed = Math.floor((currentTime) - (callStartTime / 1000));
608
- this.displayTime = Math.floor(secondsPassed / 60) + ':' + ('0' + (secondsPassed % 60)).slice(-2);
609
- }), 1000);
610
- }
611
- }
612
- /**
613
- * @return {?}
614
- */
615
- ngOnDestroy() {
616
- // clear the timer.
617
- if (this._timerId != null) {
618
- clearInterval(this._timerId);
619
- this._timerId = null;
620
- }
621
- }
622
- }
623
- DurationComponent.decorators = [
624
- { type: Component, args: [{
625
- selector: 'amc-duration',
626
- template: `<div class="holdCallDurationDiv">
627
- <input class="block durationInput" name="CallDuration" type="text" [value]="displayTime" readonly>
628
- </div>
629
- `,
630
- styles: [``, `body{padding-top:5px;padding-bottom:5px;margin:0}.login{width:20px;height:20px;display:block;margin-top:2px;margin-left:auto;margin-right:auto}.editor{font-size:.9em;text-align:left;margin:4px 5% 0 0;font-family:Arial;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;border:0;padding-top:2px;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.editor .standalone-line{width:90%!important;text-align:center!important}.editorHyperLink label{font-size:.95em;float:left;width:30%;margin-left:2%;text-align:left;color:#000;font-family:Arial;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:0;padding-top:0}.editorHyperLink input[type=text]{font-size:.95em;width:60%;text-align:left;margin:0 5% 0 0;color:#318fc5;cursor:pointer;font-family:Arial;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border:0;padding-top:0;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.AnswerCallImages{height:20px;margin:6px 0 0 5px;cursor:pointer}.AnswerCallFocused{border:1px solid #939598;margin-left:0;font-family:Arial;position:relative;background-color:#fff;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.ViewCollapseImage,.ViewExpandImage{width:20px;height:20px;float:right;cursor:pointer}.answerPhoneNumberStyle{border:0;position:relative;top:-12px;left:-38px;max-width:80px;height:15px;text-overflow:ellipsis;font-size:.85em}.callHeaderTop{border-bottom:1px solid;background-color:#f4f5fb;width:100%;margin-top:0}.statusImage{width:15px;height:15px;margin-left:10px;float:left;margin-right:5px}.statusText{float:left;margin-top:1px}.displayDiv{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.DurationDiv{float:right;width:17%;text-align:right;margin-right:5px}.displayLabels{margin-left:5px;width:25%;overflow:hidden;text-overflow:ellipsis}.displayData{border:0;outline:0}.container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.callOptions{background-color:#f6f7fb;bottom:0;width:100%;text-align:center}.directionText{font-size:.8em;margin-left:2px}.phoneNumberValue{font-weight:700;font-size:1em;margin-left:5px}.durationInput{background-color:transparent;border:0;width:100%;text-align:right}.topBorder{border-top:1px solid #939598}.holdCallDurationDiv{float:left;margin-top:1px;margin-left:2px}.holdCallDurationTimer{background-color:transparent;border:0;width:100%}.verticalDivider{margin-left:2px;float:left}.callImage{height:20px}`]
631
- },] },
632
- ];
633
- /** @nocollapse */
634
- DurationComponent.ctorParameters = () => [];
635
- DurationComponent.propDecorators = {
636
- startTime: [{ type: Input }]
637
- };
638
-
639
- /**
640
- * @fileoverview added by tsickle
641
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
642
- */
643
- class ChatBoxComponent {
644
- constructor() {
645
- this.isTyping = false;
646
- this.lastCount = -1;
647
- this._isAgentTyping = false;
648
- this.isAgentTyping = new EventEmitter();
649
- this.newMessage = new EventEmitter();
650
- this.newMessageText = '';
651
- this.usernameToColor = {};
652
- this.colors = [
653
- '#81c784',
654
- '#ffab91',
655
- '#f48fb1',
656
- '#29b6f6',
657
- '#e1bee7',
658
- '#9ccc65',
659
- '#ffc107',
660
- '#26c6da',
661
- '#cddc39',
662
- ];
663
- this.colorsIndex = 0;
664
- this.agentColor = '#29b6f6';
665
- }
666
- /**
667
- * @return {?}
668
- */
669
- ngAfterViewChecked() {
670
- if (this.lastCount !== this.messages.length) {
671
- this.lastCount = this.messages.length;
672
- this.scrollToBottom();
673
- }
674
- }
675
- /**
676
- * @param {?} message
677
- * @return {?}
678
- */
679
- getColor(message) {
680
- if (message.type && message.type === IChatMessageType.AGENT) {
681
- return this.agentColor;
682
- }
683
- else if (message.username) {
684
- if (!this.usernameToColor[message.username]) {
685
- this.usernameToColor[message.username] = this.colors[this.colorsIndex];
686
- this.colorsIndex = (this.colorsIndex + 1) % this.colors.length;
687
- }
688
- return this.usernameToColor[message.username];
689
- }
690
- else {
691
- return this.colors[0];
692
- }
693
- }
694
- /**
695
- * @param {?} message
696
- * @return {?}
697
- */
698
- shouldAlignRight(message) {
699
- return message.type && message.type === IChatMessageType.AGENT;
700
- }
701
- /**
702
- * @return {?}
703
- */
704
- sendNewMessage() {
705
- if (this.newMessageText) {
706
- this.newMessage.emit(this.newMessageText);
707
- this.newMessageText = '';
708
- }
709
- }
710
- /**
711
- * @param {?} event
712
- * @return {?}
713
- */
714
- onNewMessageFocus(event) {
715
- /** @type {?} */
716
- const isTyping = event && this.newMessageText.length > 0;
717
- if (isTyping !== this._isAgentTyping) {
718
- this._isAgentTyping = isTyping;
719
- this.isAgentTyping.emit(isTyping);
720
- }
721
- }
722
- /**
723
- * @return {?}
724
- */
725
- onKeyup() {
726
- /** @type {?} */
727
- const isTyping = this.newMessageText.length > 0;
728
- if (isTyping !== this._isAgentTyping) {
729
- this._isAgentTyping = isTyping;
730
- this.isAgentTyping.emit(isTyping);
731
- }
732
- }
733
- /**
734
- * @return {?}
735
- */
736
- scrollToBottom() {
737
- try {
738
- this.messagesContainer.nativeElement.scrollTop = this.messagesContainer.nativeElement.scrollHeight;
739
- }
740
- catch (e) { }
741
- }
742
- }
743
- ChatBoxComponent.decorators = [
744
- { type: Component, args: [{
745
- selector: 'app-chat-box',
746
- template: `<div class="chat-box">
747
- <div #MessagesContainer class="messages" [style.max-height]='settings.maxHeight'>
748
- <ng-container *ngFor="let message of messages">
749
- <app-chat-message [alignRight]="shouldAlignRight(message)" [message]="message.text" [username]="message.username"
750
- [timestamp]="message.timestamp" [image]="message.userIcon" [fallbackImage]="settings.fallbackUserIcon" [color]="getColor(message)">
751
- </app-chat-message>
752
- </ng-container>
753
-
754
- <div *ngIf="isTyping" class="typing-indicator">
755
- Someone is typing
756
- <span></span>
757
- <span></span>
758
- <span></span>
759
- </div>
760
- </div>
761
-
762
- <div class="new-message">
763
- <input #NewMessageText [(ngModel)]="newMessageText" type="text" placeholder="Type a message" (focus)="onNewMessageFocus(true)"
764
- (blur)="onNewMessageFocus(false)" (keydown.enter)="sendNewMessage()" (keyup)='onKeyup()' [disabled]="settings.disableSendMessage">
765
- <input type="image" [src]="settings.sendImage" (click)="sendNewMessage()" [disabled]="settings.disableSendMessage">
766
- </div>
767
- </div>
768
- `,
769
- styles: [`.chat-box{background-color:#eceff1}.messages{padding:5px;overflow:auto;min-height:50px}.new-message{border-top:1px solid #000;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-line-pack:center;align-content:center;height:25px}.new-message input[type=text]{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;background-color:#eceff1;border:none;min-width:0}.new-message input[type=image]{position:relative;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);height:20px;cursor:pointer}.new-message input[type=image]:disabled{opacity:.5;cursor:auto}.new-message input:focus{outline:0}.typing-indicator{font-size:1em;font-style:italic}.typing-indicator span{display:inline-block;height:10px;width:10px;border-radius:50%;background-color:#9e9e9e;margin:0 1px;opacity:.2}.typing-indicator span:nth-of-type(1){-webkit-animation:1.5s .33333s infinite blink;animation:1.5s .33333s infinite blink}.typing-indicator span:nth-of-type(2){-webkit-animation:1.5s .66666s infinite blink;animation:1.5s .66666s infinite blink}.typing-indicator span:nth-of-type(3){-webkit-animation:1.5s .99999s infinite blink;animation:1.5s .99999s infinite blink}@-webkit-keyframes blink{50%{opacity:1}}@keyframes blink{50%{opacity:1}}`],
770
- },] },
771
- ];
772
- /** @nocollapse */
773
- ChatBoxComponent.ctorParameters = () => [];
774
- ChatBoxComponent.propDecorators = {
775
- settings: [{ type: Input }],
776
- isTyping: [{ type: Input }],
777
- messages: [{ type: Input }],
778
- isAgentTyping: [{ type: Output }],
779
- newMessage: [{ type: Output }],
780
- messagesContainer: [{ type: ViewChild, args: ['MessagesContainer',] }]
781
- };
782
-
783
- /**
784
- * @fileoverview added by tsickle
785
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
786
- */
787
- class ChatMessageComponent {
788
- constructor() {
789
- this.alignRight = false;
790
- }
791
- /**
792
- * @return {?}
793
- */
794
- ngOnInit() {
795
- }
796
- }
797
- ChatMessageComponent.decorators = [
798
- { type: Component, args: [{
799
- selector: 'app-chat-message',
800
- template: `<div [class]="alignRight? 'message right-message' : 'message left-message'">
801
- <div class="message-header">
802
- <img *ngIf="image" class="image" [src]="image" (error)="image = fallbackImage" [style.border-color]="color" />
803
- <span *ngIf="username" class="username">{{username}}</span>
804
- <span *ngIf="timestamp" class="timestamp">{{timestamp}}</span>
805
- </div>
806
-
807
- <div class="message-body-container">
808
- <div>
809
- <div class="message-body" [style.background-color]="color" [style.border-color]="color">
810
- <span [innerHTML]="message"></span>
811
- </div>
812
- </div>
813
- </div>
814
- </div>
815
- `,
816
- styles: [`:host{display:block;margin-top:2px;margin-bottom:2px}.right-message{text-align:end}.message-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-text-emphasis:none;text-emphasis:none;font-style:italic;font-size:.7em;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:.5em}.message-header .image{height:30px;border-radius:50%;border:2px solid red}.message-header .username{font-weight:700}.right-message>.message-header{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;margin-right:1px}.right-message>.message-header .image,.right-message>.message-header .username{margin-left:5px}.left-message>.message-header{margin-left:1px}.left-message>.message-header .image,.left-message>.message-header .username{margin-right:5px}.message-body-container{display:-webkit-box;display:-ms-flexbox;display:flex}.right-message>.message-body-container{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.message-body{display:inline-block;position:relative;border-radius:.4em;padding:3px;font-style:normal;font-size:1em;text-align:start;min-width:2em;overflow-wrap:break-word;word-wrap:break-word;-ms-word-break:break-all;word-break:break-all;word-break:break-word;-ms-hyphens:auto;-webkit-hyphens:auto;hyphens:auto}.left-message .message-body:after{content:"";position:absolute;left:.8em;top:-.4em;border-bottom:.4em solid #000;border-bottom-color:inherit;border-left:.4em solid transparent;border-right:.4em solid transparent}.right-message .message-body:after{content:"";position:absolute;right:.8em;top:-.4em;border-bottom:.4em solid #000;border-bottom-color:inherit;border-left:.4em solid transparent;border-right:.4em solid transparent}`]
817
- },] },
818
- ];
819
- /** @nocollapse */
820
- ChatMessageComponent.ctorParameters = () => [];
821
- ChatMessageComponent.propDecorators = {
822
- message: [{ type: Input }],
823
- alignRight: [{ type: Input }],
824
- username: [{ type: Input }],
825
- color: [{ type: Input }],
826
- timestamp: [{ type: Input }],
827
- image: [{ type: Input }],
828
- fallbackImage: [{ type: Input }]
829
- };
830
-
831
- /**
832
- * @fileoverview added by tsickle
833
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
834
- */
835
- class DispositionComponent {
836
- constructor() {
837
- this.selectedDisposition = new EventEmitter();
838
- }
839
- /**
840
- * @return {?}
841
- */
842
- ngOnInit() {
843
- }
844
- /**
845
- * @return {?}
846
- */
847
- submitDisposition() {
848
- this.selectedDisposition.emit({ 'dispositionid': this.selectedDispositionValue,
849
- dispositionName: this.disposition.get(this.selectedDispositionValue) });
850
- }
851
- }
852
- DispositionComponent.decorators = [
853
- { type: Component, args: [{
854
- selector: 'app-disposition',
855
- template: `<div class="reasonCodeModalFrame">
856
- <div>
857
- <div>
858
- <label class="reasonCodeLabelStyle">{{dispositionHeader}}</label>
859
- <br />
860
- <hr />
861
- </div>
862
- <ng-container *ngFor="let disp of disposition">
863
- <div>
864
- <input [required]="!selectedDispositionValue" type="radio" name="disposition_name" value="{{disp.key}}" [(ngModel)]="selectedDispositionValue"/>
865
- <label class="reasonCodeLabelStyle">{{disp.value}}</label>
866
- </div>
867
- </ng-container>
868
- <p>
869
- <input type="image" src="https://engage.contactcanvas.com/MSCRMToolbar/Images/voice_check_normal.png" title="Submit Call Result"
870
- (click)="submitDisposition()" style='float:right; margin-right:20px; margin-bottom:10px; width:20px; height:20px' />
871
- </p>
872
- </div>
873
- </div>
874
- `,
875
- styles: [`.reasonCodeModalFrame{background-color:#eef6ff;clear:none;border-radius:10px;margin:0;padding:0;white-space:nowrap;overflow:hidden!important}.reasonCodeLabelStyle{font-size:.95em!important;color:#000!important;font-family:Arial!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;width:90%;text-align:left;display:inline-block;vertical-align:middle}`]
876
- },] },
877
- ];
878
- /** @nocollapse */
879
- DispositionComponent.ctorParameters = () => [];
880
- DispositionComponent.propDecorators = {
881
- dispositionHeader: [{ type: Input }],
882
- disposition: [{ type: Input }],
883
- selectedDisposition: [{ type: Output }]
884
- };
885
-
886
- /**
887
- * @fileoverview added by tsickle
888
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
889
- */
890
- class ActivityComponent {
891
- constructor() {
892
- this.ActivitySave = new EventEmitter();
893
- this.OnNameSelectChange = new EventEmitter();
894
- this.OnRelatedToChange = new EventEmitter();
895
- this.OnSubjectChange = new EventEmitter();
896
- this.OnCallNotesChange = new EventEmitter();
897
- this.OnQuickCommentPress = new EventEmitter();
898
- this.title = 'Activity Information';
899
- }
900
- /**
901
- * @param {?} event
902
- * @return {?}
903
- */
904
- onNameSelectChange(event) {
905
- if (event.currentTarget.value !== '-1') {
906
- this.activity.who = this.activity.whoList.find((/**
907
- * @param {?} who
908
- * @return {?}
909
- */
910
- who => who.entityId === event.currentTarget.value));
911
- this.OnNameSelectChange.emit(this.activity);
912
- }
913
- else {
914
- this.activity.who = null;
915
- this.OnNameSelectChange.emit(this.activity);
916
- }
917
- }
918
- /**
919
- * @protected
920
- * @param {?} who
921
- * @return {?}
922
- */
923
- parseWho(who) {
924
- return who.entityType + ': ' + who.entityName;
925
- }
926
- /**
927
- * @protected
928
- * @param {?} what
929
- * @return {?}
930
- */
931
- parseWhat(what) {
932
- return what.entityType + ': ' + what.entityName;
933
- }
934
- /**
935
- * @param {?} event
936
- * @return {?}
937
- */
938
- onRelatedToChange(event) {
939
- if (event.currentTarget.value !== '-1') {
940
- this.activity.what = this.activity.whatList.find((/**
941
- * @param {?} what
942
- * @return {?}
943
- */
944
- what => what.entityId === event.currentTarget.value));
945
- this.OnRelatedToChange.emit(this.activity);
946
- }
947
- else {
948
- this.activity.what = null;
949
- this.OnRelatedToChange.emit(this.activity);
950
- }
951
- }
952
- /**
953
- * @param {?} event
954
- * @return {?}
955
- */
956
- onSubjectChange(event) {
957
- this.activity.subject = event.srcElement.value;
958
- this.OnSubjectChange.emit(this.activity);
959
- }
960
- /**
961
- * @param {?} event
962
- * @return {?}
963
- */
964
- onCallNotesChange(event) {
965
- this.activity.description = event.currentTarget.value;
966
- this.OnCallNotesChange.emit(this.activity);
967
- }
968
- /**
969
- * @protected
970
- * @param {?} value
971
- * @return {?}
972
- */
973
- loadQuickComment(value) {
974
- if (this.activity.description) {
975
- this.activity.description = this.activity.description + '\n' + this.activity.quickCommentList[value];
976
- }
977
- else {
978
- this.activity.description = this.activity.quickCommentList[value];
979
- }
980
- this.OnQuickCommentPress.emit(this.activity.quickCommentList[value]);
981
- }
982
- /**
983
- * @return {?}
984
- */
985
- activitySave() {
986
- this.ActivitySave.emit(this.activity);
987
- }
988
- }
989
- ActivityComponent.decorators = [
990
- { type: Component, args: [{
991
- selector: 'amc-activity',
992
- template: `<app-amc-collapsible-container>
993
- <div role=headerExpand>
994
- <label class="headerLabel">
995
- <b>Activity Information</b>
996
- </label>
997
- </div>
998
-
999
- <div role=headerCollapse>
1000
- <label class="headerLabel">
1001
- <b>Activity Information</b>
1002
- </label>
1003
- </div>
1004
-
1005
- <div role="body">
1006
- <div class="activityFields">
1007
- <form>
1008
- <div class="editor displayDiv">
1009
- <label class="displayLabels" title="Call From">{{activity.nameFieldName}}</label>
1010
- <select class="dropDownListStyle displayData" data-resetperactivity="false" (change)="onNameSelectChange($event)">
1011
- <option *ngFor="let who of activity.whoList; let i = index" value="{{who.entityId}}" [selected]="i===0">{{parseWho(who)}}</option>
1012
- <option value="-1"></option>
1013
- </select>
1014
- </div>
1015
- <div class="editor displayDiv">
1016
- <label class="displayLabels" title="Related To">{{activity.relatedToFieldName}}</label>
1017
- <select class="dropDownListStyle displayData" (change)="onRelatedToChange($event)" data-resetperactivity="false">
1018
- <option *ngFor="let what of activity.whatList; let i = index" value="{{what.entityId}}" [selected]="i===0">{{parseWhat(what)}}</option>
1019
- <option value="-1"></option>
1020
- </select>
1021
- </div>
1022
- <div class="editor displayDiv">
1023
- <label class="displayLabels" title="Subject">{{activity.subjectFieldName}}</label>
1024
- <input class="activitySubjectTextBoxStyle displayData" (change)="onSubjectChange($event)" title="{{activity.subject}}"
1025
- type="text" value="{{activity.subject}}">
1026
- </div>
1027
- <div class="editor displayDiv">
1028
- <div class="callNotesSection">
1029
- <div class="textAreaDiv">
1030
- <textarea value="{{activity.description}}" placeholder="Click to add a comment" class="activityCommentsTextBoxStyle"
1031
- (change)="onCallNotesChange($event)" cols="20" rows="2" title=""></textarea>
1032
- </div>
1033
- <div class="notesButtonBorder">
1034
- <div class="commentsButtonDiv">
1035
- <div class="quickCommentsDiv">
1036
- <input *ngFor="let quickComment of activity.quickCommentList ; let i = index;" class="quickNotesButton" type="button"
1037
- value="{{i+1}}" (click)="loadQuickComment(i)" title="{{quickComment}}">
1038
- </div>
1039
- <div class="submitDiv">
1040
- <input class="submitButton" type="button" value="Save" (click)="activitySave()">
1041
- </div>
1042
- </div>
1043
- </div>
1044
- </div>
1045
- </div>
1046
- </form>
1047
- </div>
1048
- </div>
1049
- </app-amc-collapsible-container>
1050
- `,
1051
- styles: [`.submitDiv{text-align:right;padding-right:4px}.callHeader{background-color:#f4f5fb!important;width:100%!important;margin-top:0!important;border:1px solid #939598!important}.notesButtonBorder{background-color:#fff;border-left:1px solid #939598;border-bottom:1px solid #939598;border-right:1px solid #939598;border-bottom-left-radius:3px!important;border-bottom-right-radius:3px!important;height:auto}.quickNotesButton{background-color:#1e72ba;border:0;color:#fff;height:70%;width:30px;margin:2px;outline:0;font-size:70%}.submitButton{border:0;float:right;margin-top:2px;outline:0;cursor:pointer;background-color:#6cb047;color:#fff;border-radius:4px;font-size:98%;margin-bottom:2px}.callBody{border:1px solid #939598;border-top:1px solid #939598;position:relative}.callDisplay{display:grid;margin-bottom:8px;background-color:#fff}.editor{font-size:.9em;width:70%;text-align:left;margin:4px 5% 0 0;font-family:Arial;white-space:nowrap;text-overflow:ellipsis;border:0;padding-top:2px;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.dropDownListStyle{border:1px solid #939598!important;border-radius:3px!important;width:71%!important;height:20px!important;text-align:left!important;white-space:nowrap!important;text-overflow:ellipsis!important;margin:0 5px 0 0;cursor:pointer}.activitySubjectTextBoxStyle{border:1px solid #939598!important;border-radius:3px!important;width:71%!important;height:20px!important;text-align:left!important;box-sizing:content-box;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;margin:0 5px 0 0;padding-left:2px}.activityCommentsTextBoxStyle{border:none;color:#333!important;text-align:left!important;margin:0;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;resize:none;width:100%;height:95px}.displayDiv{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.displayLabels{margin-left:5px;width:25%;margin-right:2px;color:#333}.displayData{width:70%}.commentsButtonDiv{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#f6f7fb}.quickCommentsDiv{text-align:left;-webkit-box-flex:1;-ms-flex:1 0 0px;flex:1 0 0;-ms-flex-wrap:wrap;flex-wrap:wrap;display:-webkit-box;display:-ms-flexbox;display:flex;margin:2px}.callNotesSection{float:left;height:100%;width:100%;margin-right:5px;margin-left:5px;margin-bottom:5px}.ViewResizeImage{width:20px;height:20px;float:right;cursor:pointer}.headerLabel{color:#333;margin-left:10px}input[type=button]:disabled{background-color:#d3d3d3;cursor:auto}.activityFields{position:relative;z-index:0}.textAreaDiv{background-color:#fff;border-left:1px solid #939598;border-bottom:1px solid #939598;border-right:1px solid #939598;border-top:1px solid #939598;border-top-left-radius:3px!important;border-top-right-radius:3px!important}`]
1052
- },] },
1053
- ];
1054
- /** @nocollapse */
1055
- ActivityComponent.ctorParameters = () => [];
1056
- ActivityComponent.propDecorators = {
1057
- activity: [{ type: Input }],
1058
- ActivitySave: [{ type: Output }],
1059
- OnNameSelectChange: [{ type: Output }],
1060
- OnRelatedToChange: [{ type: Output }],
1061
- OnSubjectChange: [{ type: Output }],
1062
- OnCallNotesChange: [{ type: Output }],
1063
- OnQuickCommentPress: [{ type: Output }]
1064
- };
1065
-
1066
- /**
1067
- * @fileoverview added by tsickle
1068
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1069
- */
1070
- class CallerInformationComponent {
1071
- constructor() {
1072
- this.agentSelectedCallerInformation = new EventEmitter();
1073
- this.maximizeCallerInformation = true;
1074
- this.showAllCallers = false;
1075
- this.title = 'Caller Information';
1076
- }
1077
- /**
1078
- * @return {?}
1079
- */
1080
- ngOnChanges() {
1081
- this.showAllCallers = false;
1082
- }
1083
- /**
1084
- * @return {?}
1085
- */
1086
- expandCallerInfoResults() {
1087
- this.showAllCallers = true;
1088
- }
1089
- /**
1090
- * @return {?}
1091
- */
1092
- collapseCallerInfoResults() {
1093
- this.showAllCallers = false;
1094
- }
1095
- /**
1096
- * @param {?} i
1097
- * @return {?}
1098
- */
1099
- onAgentSelectedCallerInformation(i) {
1100
- this.agentSelectedCallerInformation.emit(i);
1101
- }
1102
- }
1103
- CallerInformationComponent.decorators = [
1104
- { type: Component, args: [{
1105
- selector: 'app-caller-information',
1106
- template: `<app-amc-collapsible-container>
1107
- <div role="headerExpand">
1108
- <label class="headerLabel">
1109
- <b>Caller Information</b>
1110
- </label>
1111
- <img title="Multiple Matches Available" *ngIf="callers.length > 1" src="../../assets/images/MultiMatchAlert.png" class="multiMatchImg" />
1112
- </div>
1113
-
1114
- <div role="headerCollapse">
1115
- <label class="headerLabel">
1116
- <b>Caller Information</b>
1117
- </label>
1118
- <img title="Multiple Matches Available" *ngIf="callers.length > 1" src="../../assets/images/MultiMatchAlert.png" class="multiMatchImg" />
1119
- </div>
1120
-
1121
- <div role="body">
1122
- <div *ngIf="this.callers.length > 1">
1123
- <span class="overflowWrapper">
1124
- <img class="CRMResultImageMultiMatch" src="{{ callers[0].imgUrl }}"/>
1125
- <input id="{{ this.callers[0].entityId }}" name="{{ this.callers[0].entityName }}" (click)="onAgentSelectedCallerInformation(this.callers[0])" readonly
1126
- class="multiMatchLabel" title="{{ this.callers[0].entityName }}" type="{{ callers[0].entityType }}" value="{{ this.callers[0].entityName }}"/>
1127
- <span class="positioning">
1128
- <img *ngIf="!this.showAllCallers" class="CRMExpandImage" src="../../assets/images/down-arrow.png" (click)="expandCallerInfoResults()"/>
1129
- <img *ngIf="this.showAllCallers" class="CRMExpandImage" src="../../assets/images/up-arrow.png" (click)="collapseCallerInfoResults()"/>
1130
- </span>
1131
- </span>
1132
- <div *ngIf="this.showAllCallers">
1133
- <div *ngFor="let i of this.callers | slice: 1; let index = index">
1134
- <span
1135
- class="overflowWrapper"
1136
- >
1137
- <img class="CRMResultImageMultiMatch" src="{{ i.imgUrl }}"/>
1138
- <input id="{{ i.entityId }}" name="{{ i.entityName }}" readonly class=" multiMatchLabel" (click)="onAgentSelectedCallerInformation(i)"
1139
- title="{{ i.entityName }}" type="text" value="{{ i.entityName }}"/>
1140
- </span>
1141
- </div>
1142
- </div>
1143
- </div>
1144
-
1145
- <div *ngIf="callers.length === 1">
1146
- <div class="editorFull displayDiv" *ngFor="let i of this.callers | slice: 0:1; let index = index; let first = first">
1147
- <span class="overflowWrapper">
1148
- <img class="CRMResultImageMultiMatch" src="{{ i.imgUrl }}"/>
1149
- <input class="singleSearchResultSelect singleMatchFirstWrapper" id="{{ i.entityId }}" [class.firstSingleMatchResult]="first"
1150
- value="{{ i.entityName }}" title="{{ i.entityName }}" (click)="onAgentSelectedCallerInformation(i)" readonly/>
1151
- </span>
1152
- </div>
1153
- <div class="editorFull displayDiv" *ngFor="let i of this.callers | slice: 1; let index = index; let first = first">
1154
- <span class="overflowWrapper">
1155
- <label title="{{ i.entityName }}" class="displayLabelsTabbed">{{ i.entityName }}</label>
1156
- <input class="singleSearchResultSelect singleMatchTabbedItemsWrapper singleMatchLabel" id="{{ i.entityId }}" value="{{ i.entityName }}" title="{{ i.entityName }}" readonly />
1157
- </span>
1158
- </div>
1159
- </div>
1160
- </div>
1161
- </app-amc-collapsible-container>
1162
- `,
1163
- styles: [`.callHeader{background-color:#f4f5fb!important;width:100%!important;margin-top:0!important;border:1px solid #939598!important}.displayDiv{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.multiMatchImg{height:18px;margin-left:5px}.editor{font-size:.9em;width:70%;text-align:left;margin:4px 5% 0 0;font-family:Arial;white-space:nowrap;text-overflow:ellipsis;border:0;padding-top:2px;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.editorFull{font-size:.9em;width:100%;text-align:left;font-family:Arial;white-space:nowrap;text-overflow:ellipsis;border:0;padding-top:2px;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.CRMResultImageMultiMatch{width:18px;height:18px;margin-right:2px;margin-left:5px;margin-top:-5px}.CRMExpandImage{width:6px;height:6px;cursor:pointer;margin-bottom:2px}.callBody{border:1px solid #939598;border-top:1px solid #939598;position:relative;padding-bottom:1px}.callDisplay{margin-bottom:8px;display:grid;background-color:#fff;display:grid}.overflowWrapper{width:100%;overflow-x:hidden;overflow-y:hidden}.singleSearchResultSelect{border:0 solid #939598!important;height:30px!important;text-align:left!important;white-space:nowrap!important;text-overflow:ellipsis!important;margin:0;outline:0}.singleMatchFirstWrapper{cursor:pointer;border:0;outline:0;overflow:hidden;text-overflow:ellipsis;display:inline-block;width:calc(100% - 30px)}.singleMatchTabbedItemsWrapper{width:70%}.displayLabelsTabbed{margin-left:5px;width:35%;font-weight:400;margin-bottom:0;margin-top:0;outline:0;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.ViewResizeImage{width:20px;height:20px;float:right;cursor:pointer}.headerLabel{margin-left:10px}.firstSingleMatchResult{font-weight:700;border:0 solid #939598!important;height:30px!important;text-align:left!important;white-space:nowrap!important;text-overflow:ellipsis!important;margin:0 0 0 5px;outline:0}.multiMatchLabel{border:0;cursor:pointer;outline:0;overflow:hidden;text-overflow:ellipsis;display:inline-block;width:calc(95% - 45px)}.singleMatchLabel{border:0;outline:0;overflow:hidden;text-overflow:ellipsis;display:inline-block;width:calc(65% - 13px)}.positioning{float:right;margin-right:4%}`]
1164
- },] },
1165
- ];
1166
- /** @nocollapse */
1167
- CallerInformationComponent.ctorParameters = () => [];
1168
- CallerInformationComponent.propDecorators = {
1169
- callers: [{ type: Input }],
1170
- agentSelectedCallerInformation: [{ type: Output }]
1171
- };
1172
-
1173
- /**
1174
- * @fileoverview added by tsickle
1175
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1176
- */
1177
- class RecentActivitiesComponent {
1178
- constructor() {
1179
- this.SubjectChange = new EventEmitter();
1180
- this.NameChange = new EventEmitter();
1181
- this.RelatedToChange = new EventEmitter();
1182
- this.CallNotesChange = new EventEmitter();
1183
- this.QuickCommentChange = new EventEmitter();
1184
- this.SaveActivity = new EventEmitter();
1185
- this.collapseToggle = true;
1186
- this.workingRecentInteractionId = null;
1187
- this.isActivityMaximized = true;
1188
- }
1189
- /**
1190
- * @param {?} isExpand
1191
- * @return {?}
1192
- */
1193
- expandAndCollapse(isExpand) {
1194
- this.collapseToggle = isExpand;
1195
- }
1196
- /**
1197
- * @protected
1198
- * @param {?} isExpand
1199
- * @param {?} interactionId
1200
- * @return {?}
1201
- */
1202
- expandAndCollapseRecentActivity(isExpand, interactionId) {
1203
- return (isExpand ? this.workingRecentInteractionId = interactionId : this.workingRecentInteractionId = null);
1204
- }
1205
- /**
1206
- * @protected
1207
- * @param {?} interactionId
1208
- * @return {?}
1209
- */
1210
- getIndexWho(interactionId) {
1211
- /** @type {?} */
1212
- const index = this.savedInteractions.get(interactionId).whoList.findIndex((/**
1213
- * @param {?} item
1214
- * @return {?}
1215
- */
1216
- item => item.entityId === this.savedInteractions.get(interactionId).who.entityId));
1217
- return index;
1218
- }
1219
- /**
1220
- * @protected
1221
- * @param {?} interactionId
1222
- * @return {?}
1223
- */
1224
- getIndexWhat(interactionId) {
1225
- /** @type {?} */
1226
- const index = this.savedInteractions.get(interactionId).whatList.findIndex((/**
1227
- * @param {?} item
1228
- * @return {?}
1229
- */
1230
- item => item.entityId === this.savedInteractions.get(interactionId).what.entityId));
1231
- return index;
1232
- }
1233
- /**
1234
- * @protected
1235
- * @param {?} interactionId
1236
- * @return {?}
1237
- */
1238
- onSubjectChange(interactionId) {
1239
- this.SubjectChange.emit({
1240
- interactionId,
1241
- Subject: this.savedInteractions.get(interactionId).subject
1242
- });
1243
- }
1244
- /**
1245
- * @protected
1246
- * @param {?} event
1247
- * @param {?} interactionId
1248
- * @return {?}
1249
- */
1250
- onNameChange(event, interactionId) {
1251
- if (event.currentTarget.value === '-1') {
1252
- this.NameChange.emit({
1253
- interactionId,
1254
- whoObject: null
1255
- });
1256
- }
1257
- else {
1258
- this.NameChange.emit({
1259
- interactionId,
1260
- whoObject: this.savedInteractions.get(interactionId).whoList[event.target.value]
1261
- });
1262
- }
1263
- }
1264
- /**
1265
- * @protected
1266
- * @param {?} event
1267
- * @param {?} interactionId
1268
- * @return {?}
1269
- */
1270
- onRelatedToChange(event, interactionId) {
1271
- if (event.currentTarget.value === '-1') {
1272
- this.RelatedToChange.emit({
1273
- interactionId,
1274
- whatObject: null
1275
- });
1276
- }
1277
- else {
1278
- this.RelatedToChange.emit({
1279
- interactionId,
1280
- whatObject: this.savedInteractions.get(interactionId).whatList[event.target.value]
1281
- });
1282
- }
1283
- }
1284
- /**
1285
- * @protected
1286
- * @param {?} interactionId
1287
- * @return {?}
1288
- */
1289
- onCallNotesChange(interactionId) {
1290
- this.CallNotesChange.emit({
1291
- interactionId,
1292
- Description: this.savedInteractions.get(interactionId).description
1293
- });
1294
- }
1295
- /**
1296
- * @protected
1297
- * @param {?} commentIndex
1298
- * @param {?} interactionId
1299
- * @return {?}
1300
- */
1301
- loadQuickComment(commentIndex, interactionId) {
1302
- this.QuickCommentChange.emit({
1303
- interactionId,
1304
- commentIndex
1305
- });
1306
- }
1307
- /**
1308
- * @protected
1309
- * @param {?} interactionId
1310
- * @return {?}
1311
- */
1312
- submitActivity(interactionId) {
1313
- this.SaveActivity.emit({
1314
- interactionId,
1315
- });
1316
- }
1317
- /**
1318
- * @protected
1319
- * @param {?} who
1320
- * @return {?}
1321
- */
1322
- parseWho(who) {
1323
- return ((who.entityType) ? who.entityType : 'Entity') + ': ' + who.entityName;
1324
- }
1325
- /**
1326
- * @protected
1327
- * @param {?} what
1328
- * @return {?}
1329
- */
1330
- parseWhat(what) {
1331
- return ((what.entityType) ? what.entityType : 'Entity') + ': ' + what.entityName;
1332
- }
1333
- }
1334
- RecentActivitiesComponent.decorators = [
1335
- { type: Component, args: [{
1336
- selector: 'app-recent-activities',
1337
- template: `<app-amc-collapsible-container>
1338
- <div role="headerExpand">
1339
- <label class="headerLabel">
1340
- <b>Recent Activities</b>
1341
- </label>
1342
- </div>
1343
- <div role="body">
1344
- <div class="callBodyBorderless">
1345
- <div *ngFor="let interaction of interactionIds; let last = last">
1346
- <div *ngIf="this.workingRecentInteractionId === interaction">
1347
- <div (click)="expandAndCollapseRecentActivity(false, interaction)" class="editor callHeaderRecentActivitySelected">
1348
- <label class="headerLabelClickableLook">
1349
- <img src="/assets/images/Phone_Number_Icon.png" class="RecentCallsImg"/>
1350
- <b>{{ savedInteractions.get(interaction).subject }}</b>
1351
- </label>
1352
- </div>
1353
- <div class="recentBody">
1354
- <div class="activityFields">
1355
- <form>
1356
- <div class="editor displayDiv">
1357
- <label class="displayLabels" title="Subject">Subject</label>
1358
- <input class="activitySubjectTextBoxStyle displayData" type="text" value="{{ savedInteractions.get(interaction) }}" (change)="onSubjectChange(interaction)"
1359
- (keyup)="onSubjectChange(interaction)" name="subject" [(ngModel)]="savedInteractions.get(interaction).subject" />
1360
- </div>
1361
- <div class="editor displayDiv">
1362
- <label class="displayLabels" title="Name">Name</label>
1363
- <select class="dropDownListStyle displayData" (change)="onNameChange($event, interaction)" name="whoItem">
1364
- <option *ngFor="let whoItem of savedInteractions.get(interaction).whoList; let i = index" value="{{i}}" [selected]="i===getIndexWho(interaction)">{{ parseWho(whoItem) }}</option>
1365
- <option value="-1"></option>
1366
- </select>
1367
- </div>
1368
- <div class="editor displayDiv">
1369
- <label class="displayLabels" title="Regarding">Related To</label>
1370
- <select class="dropDownListStyle displayData" (change)="onRelatedToChange($event, interaction)" name="whatItem">
1371
- <option *ngFor="let whatItem of savedInteractions.get(interaction).whatList; let i = index" value={{i}} [selected]="i===getIndexWhat(interaction)">{{ parseWhat(whatItem) }}</option>
1372
- <option value="-1"></option>
1373
- </select>
1374
- </div>
1375
- <div class="editor displayDiv">
1376
- <div class="callNotesSection">
1377
- <div class="callNotesTextArea">
1378
- <textarea placeholder="Click to add a comment" (change)="onCallNotesChange(interaction)" class="activityCommentsTextBoxStyle" value="{{ savedInteractions.get(interaction) }}"
1379
- (keyup)="onCallNotesChange(interaction)" name="description" [(ngModel)]="savedInteractions.get(interaction).description" rows="5" title="">
1380
- </textarea>
1381
- </div>
1382
- <div class="notesButtonBorder">
1383
- <div class="commentsButtonDiv">
1384
- <div class="quickCommentsDiv">
1385
- <input *ngFor="let quickComment of savedInteractions.get(interaction).quickCommentList; let i = index;" class="quickNotesButton" type="button"
1386
- value="{{i+1}}" (click)="loadQuickComment(i, interaction)" title="{{quickComment}}">
1387
- </div>
1388
- <div class="callNotesButtonsSection">
1389
- <input class="submitButton" type="button" value="Save" (click)="submitActivity(interaction)"/>
1390
- </div>
1391
- </div>
1392
- </div>
1393
- </div>
1394
- </div>
1395
- </form>
1396
- </div>
1397
- </div>
1398
- </div>
1399
- <div *ngIf="!(this.workingRecentInteractionId === interaction)">
1400
- <div [class.callHeaderBottomBorder]='last' (click)="expandAndCollapseRecentActivity(true, interaction)" class="editor callHeaderRecentActivityUnselected">
1401
- <label class="headerLabelClickableLook">
1402
- <img src="/assets/images/Phone_Number_Icon.png" class="RecentCallsImg"/>
1403
- <b>{{ savedInteractions.get(interaction).subject }}</b>
1404
- </label>
1405
- </div>
1406
- </div>
1407
- </div>
1408
- </div>
1409
- </div>
1410
-
1411
- <div role="headerCollapse">
1412
- <label class="headerLabel">
1413
- <b>Recent Activities</b>
1414
- </label>
1415
- </div>
1416
- </app-amc-collapsible-container>
1417
- `,
1418
- styles: [`.callSection{margin-left:0;font-family:Arial;position:relative;margin-top:5px;background-color:#fff}.notesButtonBorder{background-color:#fff;border-left:1px solid #939598;border-bottom:1px solid #939598;border-right:1px solid #939598;border-bottom-left-radius:3px!important;border-bottom-right-radius:3px!important;height:auto}.quickCommentsDiv{text-align:left;-webkit-box-flex:1;-ms-flex:1 0 0px;flex:1 0 0;-ms-flex-wrap:wrap;flex-wrap:wrap;display:-webkit-box;display:-ms-flexbox;display:flex;margin:2px}.quickNotesButton{background-color:#1e72ba;border:0;color:#fff;height:70%;width:30px;margin:2px;outline:0;font-size:70%}.submitButton{border:0;float:right;margin-top:2px;outline:0;cursor:pointer;background-color:#6cb047;color:#fff;border-radius:4px;font-size:98%;margin-bottom:2px}.commentsButtonDiv{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#f6f7fb}.callNotesButtonsSection{text-align:right;padding-right:4px}.ViewResizeImage{width:20px;height:20px;float:right;cursor:pointer}.recentBody{border:1px solid #939598;border-top:1px solid #fff;position:relative}.callBodyBorderless{position:relative}.callDisplay{margin-bottom:8px;background-color:#fff}.editor{font-size:.9em;width:70%;text-align:left;margin:4px 5% 0 0;font-family:Arial;white-space:nowrap;text-overflow:ellipsis;border:0;padding-top:5px;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.dropDownListStyle{border:1px solid #939598!important;border-radius:3px!important;width:70%!important;height:20px!important;text-align:left!important;white-space:nowrap!important;text-overflow:ellipsis!important;margin:0 5px 0 0;cursor:pointer}.activitySubjectTextBoxStyle{border:1px solid #939598!important;border-radius:3px!important;width:70%!important;height:20px!important;text-align:left!important;box-sizing:content-box;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;margin:0 5px 0 0;padding-left:2px}.activityCommentsTextBoxStyle{color:#333!important;text-align:left!important;margin:0;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;resize:none;width:100%;height:100%;border:none}.displayDiv{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.displayLabels{margin-left:5px;width:25%;overflow:hidden;text-overflow:ellipsis}.displayData{width:70%}.headerLabel{margin-left:10px}.activityFields{position:relative;z-index:0}.callNotesTextArea{background-color:#fff;border-bottom:1px solid #939598;border-top:1px solid #939598;border-top-left-radius:3px!important;border-top-right-radius:3px!important}.callNotesSection{float:left;height:100%;width:100%;background-color:#f6f7fb}.callHeaderRecentActivitySelected{cursor:pointer;border-left:1px solid #939598!important;border-right:1px solid #939598!important;background-color:#cfecf2!important;width:100%!important;margin-top:0!important}.callHeaderRecentActivityUnselected{cursor:pointer;border-left:1px solid #939598!important;border-right:1px solid #939598!important;background-color:#e6f4f7!important;width:100%!important;margin-top:0!important}.callHeader{border:1px solid #939598!important;background-color:#f4f5fb!important;width:100%!important;margin-top:0!important}.callHeaderBottomBorder{cursor:pointer;border-bottom:1px solid #939598!important;border-left:1px solid #939598!important;border-right:1px solid #939598!important;background-color:#e6f4f7!important;width:100%!important;margin-top:0!important}.RecentCallsImg{height:15px;vertical-align:text-bottom}.headerLabelClickableLook{cursor:pointer;display:inline-block;margin-left:10px;max-width:80%;overflow:hidden;text-overflow:ellipsis}input[type=button]:disabled{background-color:#d3d3d3;cursor:auto}`]
1419
- },] },
1420
- ];
1421
- /** @nocollapse */
1422
- RecentActivitiesComponent.ctorParameters = () => [];
1423
- RecentActivitiesComponent.propDecorators = {
1424
- savedInteractions: [{ type: Input }],
1425
- interactionIds: [{ type: Input }],
1426
- SubjectChange: [{ type: Output }],
1427
- NameChange: [{ type: Output }],
1428
- RelatedToChange: [{ type: Output }],
1429
- CallNotesChange: [{ type: Output }],
1430
- QuickCommentChange: [{ type: Output }],
1431
- SaveActivity: [{ type: Output }]
1432
- };
1433
-
1434
- /**
1435
- * @fileoverview added by tsickle
1436
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1437
- */
1438
- class AmcCollapsibleContainerComponent {
1439
- constructor() {
1440
- this.isActivityMaximized = true;
1441
- }
1442
- /**
1443
- * @return {?}
1444
- */
1445
- ngOnInit() {
1446
- }
1447
- }
1448
- AmcCollapsibleContainerComponent.decorators = [
1449
- { type: Component, args: [{
1450
- selector: 'app-amc-collapsible-container',
1451
- template: `<div *ngIf="isActivityMaximized" class="callDisplay">
1452
- <div class="editor callHeader">
1453
- <img class="ViewResizeImage" src="/assets/images/section_collapse.png" (click)="isActivityMaximized = false" title="Collapse">
1454
- <ng-content select="div[role=headerExpand]"></ng-content>
1455
- </div>
1456
- <div class="callBody">
1457
- <ng-content select="div[role=body]"></ng-content>
1458
- </div>
1459
- </div>
1460
-
1461
- <div *ngIf="!isActivityMaximized" class="callDisplay">
1462
- <div class="editor callHeader">
1463
- <img class="ViewResizeImage" src="assets/images/section_expand.png" (click)="isActivityMaximized = true" title="Expand">
1464
- <ng-content select="div[role=headerCollapse]"></ng-content>
1465
- </div>
1466
- </div>
1467
- `,
1468
- styles: [`.callHeader{background-color:#f4f5fb!important;width:100%!important;margin-top:0!important;border:1px solid #939598!important}.callDisplay{display:grid;margin-bottom:8px;background-color:#fff}.editor{font-size:.9em;width:70%;text-align:left;margin:4px 5% 0 0;font-family:Arial;white-space:nowrap;text-overflow:ellipsis;border:0;padding-top:2px;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.headerLabel{color:#333;margin-left:10px}.ViewResizeImage{width:20px;height:20px;float:right;cursor:pointer}.callBody{border:1px solid #939598;border-top:1px solid #939598;position:relative}`]
1469
- },] },
1470
- ];
1471
- /** @nocollapse */
1472
- AmcCollapsibleContainerComponent.ctorParameters = () => [];
1473
-
1474
- /**
1475
- * @fileoverview added by tsickle
1476
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1477
- */
1478
- class UILibraryModule {
1479
- /**
1480
- * @param {?} injector
1481
- */
1482
- constructor(injector) {
1483
- this.injector = injector;
1484
- }
1485
- /**
1486
- * @param {?} app
1487
- * @return {?}
1488
- */
1489
- ngDoBootstrap(app) {
1490
- // Scenario Component
1491
- if (!customElements.get('amc-webcomponents-scenario')) {
1492
- /** @type {?} */
1493
- const strategyFactory = new ElementZoneStrategyFactory(ScenarioComponent, this.injector);
1494
- customElements.define('amc-webcomponents-scenario', createCustomElement(ScenarioComponent, {
1495
- injector: this.injector,
1496
- strategyFactory: strategyFactory
1497
- }));
1498
- }
1499
- // Activity Information
1500
- if (!customElements.get('amc-webcomponents-activity')) {
1501
- /** @type {?} */
1502
- const strategyFactory = new ElementZoneStrategyFactory(ActivityComponent, this.injector);
1503
- customElements.define('amc-webcomponents-activity', createCustomElement(ActivityComponent, {
1504
- injector: this.injector,
1505
- strategyFactory: strategyFactory
1506
- }));
1507
- }
1508
- // Caller Information
1509
- if (!customElements.get('amc-webcomponents-callerinfo')) {
1510
- /** @type {?} */
1511
- const strategyFactory = new ElementZoneStrategyFactory(CallerInformationComponent, this.injector);
1512
- customElements.define('amc-webcomponents-callerinfo', createCustomElement(CallerInformationComponent, {
1513
- injector: this.injector,
1514
- strategyFactory: strategyFactory
1515
- }));
1516
- }
1517
- // Recent Activities
1518
- if (!customElements.get('amc-webcomponents-recentactivity')) {
1519
- /** @type {?} */
1520
- const strategyFactory = new ElementZoneStrategyFactory(RecentActivitiesComponent, this.injector);
1521
- customElements.define('amc-webcomponents-recentactivity', createCustomElement(RecentActivitiesComponent, {
1522
- injector: this.injector,
1523
- strategyFactory: strategyFactory
1524
- }));
1525
- }
1526
- // Disposition
1527
- if (!customElements.get('amc-webcomponents-disposition')) {
1528
- /** @type {?} */
1529
- const strategyFactory = new ElementZoneStrategyFactory(DispositionComponent, this.injector);
1530
- customElements.define('amc-webcomponents-disposition', createCustomElement(DispositionComponent, {
1531
- injector: this.injector,
1532
- strategyFactory: strategyFactory
1533
- }));
1534
- }
1535
- }
1536
- }
1537
- UILibraryModule.decorators = [
1538
- { type: NgModule, args: [{
1539
- imports: [BrowserModule, CommonModule, FormsModule],
1540
- declarations: [
1541
- InteractionComponent,
1542
- ScenarioComponent,
1543
- OperationComponent,
1544
- PropertyComponent,
1545
- HoldtimerComponent,
1546
- DurationComponent,
1547
- ChatBoxComponent,
1548
- ChatMessageComponent,
1549
- DispositionComponent,
1550
- ActivityComponent,
1551
- CallerInformationComponent,
1552
- RecentActivitiesComponent,
1553
- AmcCollapsibleContainerComponent
1554
- ],
1555
- entryComponents: [ScenarioComponent, ActivityComponent, CallerInformationComponent, RecentActivitiesComponent],
1556
- bootstrap: [],
1557
- exports: [ScenarioComponent, ActivityComponent, CallerInformationComponent, RecentActivitiesComponent]
1558
- },] },
1559
- ];
1560
- /** @nocollapse */
1561
- UILibraryModule.ctorParameters = () => [
1562
- { type: Injector }
1563
- ];
1564
-
1565
- /**
1566
- * @fileoverview added by tsickle
1567
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1568
- */
1569
-
1570
- /**
1571
- * @fileoverview added by tsickle
1572
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1573
- */
1574
- /**
1575
- * Generated bundle index. Do not edit.
1576
- */
1577
-
1578
- export { UILibraryModule, Property, ValueType, IChatMessageType, ActivityComponent as ɵj, AmcCollapsibleContainerComponent as ɵm, CallerInformationComponent as ɵk, ChatBoxComponent as ɵg, ChatMessageComponent as ɵh, DispositionComponent as ɵi, DurationComponent as ɵf, HoldtimerComponent as ɵe, InteractionComponent as ɵa, OperationComponent as ɵc, PropertyComponent as ɵd, RecentActivitiesComponent as ɵl, ScenarioComponent as ɵb };
1579
- //# sourceMappingURL=amc-technology-ui-library.js.map
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public_api';
5
+ export { ActivityComponent as ɵj } from './projects/UILibrary/src/app/components/activity/activity.component';
6
+ export { ChatBoxComponent as ɵg } from './projects/UILibrary/src/app/components/chat-box/chat-box.component';
7
+ export { ChatMessageComponent as ɵh } from './projects/UILibrary/src/app/components/chat-message/chat-message.component';
8
+ export { DispositionComponent as ɵi } from './projects/UILibrary/src/app/components/disposition/disposition.component';
9
+ export { DurationComponent as ɵf } from './projects/UILibrary/src/app/components/duration/duration.component';
10
+ export { HoldtimerComponent as ɵe } from './projects/UILibrary/src/app/components/holdtimer/holdtimer.component';
11
+ export { InteractionComponent as ɵa } from './projects/UILibrary/src/app/components/interaction/interaction.component';
12
+ export { LoginComponent as ɵk } from './projects/UILibrary/src/app/components/login/login.component';
13
+ export { OperationComponent as ɵc } from './projects/UILibrary/src/app/components/operation/operation.component';
14
+ export { PropertyComponent as ɵd } from './projects/UILibrary/src/app/components/property/property.component';
15
+ export { ScenarioComponent as ɵb } from './projects/UILibrary/src/app/components/scenario/scenario.component';
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1jLXRlY2hub2xvZ3ktdWktbGlicmFyeS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhbWMtdGVjaG5vbG9neS91aS1saWJyYXJ5LyIsInNvdXJjZXMiOlsiYW1jLXRlY2hub2xvZ3ktdWktbGlicmFyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDO0FBRTdCLE9BQU8sRUFBQyxpQkFBaUIsSUFBSSxFQUFFLEVBQUMsTUFBTSxxRUFBcUUsQ0FBQztBQUM1RyxPQUFPLEVBQUMsZ0JBQWdCLElBQUksRUFBRSxFQUFDLE1BQU0scUVBQXFFLENBQUM7QUFDM0csT0FBTyxFQUFDLG9CQUFvQixJQUFJLEVBQUUsRUFBQyxNQUFNLDZFQUE2RSxDQUFDO0FBQ3ZILE9BQU8sRUFBQyxvQkFBb0IsSUFBSSxFQUFFLEVBQUMsTUFBTSwyRUFBMkUsQ0FBQztBQUNySCxPQUFPLEVBQUMsaUJBQWlCLElBQUksRUFBRSxFQUFDLE1BQU0scUVBQXFFLENBQUM7QUFDNUcsT0FBTyxFQUFDLGtCQUFrQixJQUFJLEVBQUUsRUFBQyxNQUFNLHVFQUF1RSxDQUFDO0FBQy9HLE9BQU8sRUFBQyxvQkFBb0IsSUFBSSxFQUFFLEVBQUMsTUFBTSwyRUFBMkUsQ0FBQztBQUNySCxPQUFPLEVBQUMsY0FBYyxJQUFJLEVBQUUsRUFBQyxNQUFNLCtEQUErRCxDQUFDO0FBQ25HLE9BQU8sRUFBQyxrQkFBa0IsSUFBSSxFQUFFLEVBQUMsTUFBTSx1RUFBdUUsQ0FBQztBQUMvRyxPQUFPLEVBQUMsaUJBQWlCLElBQUksRUFBRSxFQUFDLE1BQU0scUVBQXFFLENBQUM7QUFDNUcsT0FBTyxFQUFDLGlCQUFpQixJQUFJLEVBQUUsRUFBQyxNQUFNLHFFQUFxRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpY19hcGknO1xuXG5leHBvcnQge0FjdGl2aXR5Q29tcG9uZW50IGFzIMm1an0gZnJvbSAnLi9wcm9qZWN0cy9VSUxpYnJhcnkvc3JjL2FwcC9jb21wb25lbnRzL2FjdGl2aXR5L2FjdGl2aXR5LmNvbXBvbmVudCc7XG5leHBvcnQge0NoYXRCb3hDb21wb25lbnQgYXMgybVnfSBmcm9tICcuL3Byb2plY3RzL1VJTGlicmFyeS9zcmMvYXBwL2NvbXBvbmVudHMvY2hhdC1ib3gvY2hhdC1ib3guY29tcG9uZW50JztcbmV4cG9ydCB7Q2hhdE1lc3NhZ2VDb21wb25lbnQgYXMgybVofSBmcm9tICcuL3Byb2plY3RzL1VJTGlicmFyeS9zcmMvYXBwL2NvbXBvbmVudHMvY2hhdC1tZXNzYWdlL2NoYXQtbWVzc2FnZS5jb21wb25lbnQnO1xuZXhwb3J0IHtEaXNwb3NpdGlvbkNvbXBvbmVudCBhcyDJtWl9IGZyb20gJy4vcHJvamVjdHMvVUlMaWJyYXJ5L3NyYy9hcHAvY29tcG9uZW50cy9kaXNwb3NpdGlvbi9kaXNwb3NpdGlvbi5jb21wb25lbnQnO1xuZXhwb3J0IHtEdXJhdGlvbkNvbXBvbmVudCBhcyDJtWZ9IGZyb20gJy4vcHJvamVjdHMvVUlMaWJyYXJ5L3NyYy9hcHAvY29tcG9uZW50cy9kdXJhdGlvbi9kdXJhdGlvbi5jb21wb25lbnQnO1xuZXhwb3J0IHtIb2xkdGltZXJDb21wb25lbnQgYXMgybVlfSBmcm9tICcuL3Byb2plY3RzL1VJTGlicmFyeS9zcmMvYXBwL2NvbXBvbmVudHMvaG9sZHRpbWVyL2hvbGR0aW1lci5jb21wb25lbnQnO1xuZXhwb3J0IHtJbnRlcmFjdGlvbkNvbXBvbmVudCBhcyDJtWF9IGZyb20gJy4vcHJvamVjdHMvVUlMaWJyYXJ5L3NyYy9hcHAvY29tcG9uZW50cy9pbnRlcmFjdGlvbi9pbnRlcmFjdGlvbi5jb21wb25lbnQnO1xuZXhwb3J0IHtMb2dpbkNvbXBvbmVudCBhcyDJtWt9IGZyb20gJy4vcHJvamVjdHMvVUlMaWJyYXJ5L3NyYy9hcHAvY29tcG9uZW50cy9sb2dpbi9sb2dpbi5jb21wb25lbnQnO1xuZXhwb3J0IHtPcGVyYXRpb25Db21wb25lbnQgYXMgybVjfSBmcm9tICcuL3Byb2plY3RzL1VJTGlicmFyeS9zcmMvYXBwL2NvbXBvbmVudHMvb3BlcmF0aW9uL29wZXJhdGlvbi5jb21wb25lbnQnO1xuZXhwb3J0IHtQcm9wZXJ0eUNvbXBvbmVudCBhcyDJtWR9IGZyb20gJy4vcHJvamVjdHMvVUlMaWJyYXJ5L3NyYy9hcHAvY29tcG9uZW50cy9wcm9wZXJ0eS9wcm9wZXJ0eS5jb21wb25lbnQnO1xuZXhwb3J0IHtTY2VuYXJpb0NvbXBvbmVudCBhcyDJtWJ9IGZyb20gJy4vcHJvamVjdHMvVUlMaWJyYXJ5L3NyYy9hcHAvY29tcG9uZW50cy9zY2VuYXJpby9zY2VuYXJpby5jb21wb25lbnQnOyJdfQ==