@amc-technology/ui-library 1.0.29 → 1.0.34

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 (66) hide show
  1. package/amc-technology-ui-library.d.ts +1 -0
  2. package/amc-technology-ui-library.metadata.json +1 -1
  3. package/bundles/amc-technology-ui-library.umd.js +1087 -541
  4. package/bundles/amc-technology-ui-library.umd.js.map +1 -51
  5. package/bundles/amc-technology-ui-library.umd.min.js +16 -2
  6. package/bundles/amc-technology-ui-library.umd.min.js.map +1 -227
  7. package/esm2015/amc-technology-ui-library.js +16 -1141
  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 -534
  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 +10 -10
  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 +4 -0
  64. package/webcomponents/webcomponents.js +3 -3
  65. package/esm2015/amc-technology-ui-library.js.map +0 -38
  66. package/esm5/amc-technology-ui-library.js.map +0 -38
@@ -1,1141 +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
- * This contains the main identifying information about the interaction.
289
- * @record
290
- */
291
-
292
- /**
293
- * It contains URLs for minimize, maximize, interaction specific icon urls for interaction.
294
- * And header number which needs to be displayed at top.
295
- * @record
296
- */
297
-
298
- /**
299
- * @record
300
- */
301
-
302
- /**
303
- * @record
304
- */
305
-
306
- /**
307
- * It contains Operation Icon URL and its hadlers which need to be displayed in Interaction.
308
- * @record
309
- */
310
-
311
- /**
312
- * It contains Operation Icon URL and its hadlers which need to be displayed in Interaction.
313
- * @record
314
- */
315
-
316
- /**
317
- * This contains properties and operations to be displayed for conference member.
318
- * @record
319
- */
320
-
321
- /**
322
- * key value pairs which can be used amongst other interfaces/classes to store metadata of those entities.
323
- * @record
324
- */
325
-
326
- /**
327
- * This interface contains key value pairs, some custom operation which generates display key and display value.
328
- * Also it includes custom operation handler for click event on properties.
329
- * @record
330
- */
331
-
332
- /**
333
- * A helper method to make instances of [IProperty]
334
- */
335
- class Property {
336
- /**
337
- *
338
- * @param {?} key
339
- * @param {?} value : if value type is COUNTER then value should be start time in MilliSeconds.
340
- * @param {?=} visible
341
- * @param {?=} valueType
342
- * @param {?=} customOperation
343
- */
344
- constructor(key, value, visible, valueType, customOperation) {
345
- /**
346
- * Operation responsible for generating displayKey and dispkayValur from key and value.
347
- */
348
- this.displayOperation = (/**
349
- * @return {?}
350
- */
351
- () => {
352
- this.displayKey = this.key;
353
- this.displayValue = this.value;
354
- });
355
- this.key = key;
356
- this.value = value;
357
- visible != null ? (this.visible = visible) : (this.visible = true);
358
- valueType != null
359
- ? (this.displayValueType = valueType)
360
- : (this.displayValueType = ValueType.STRING);
361
- this.customOperations = customOperation;
362
- this.displayOperation();
363
- }
364
- }
365
- /**
366
- * Interface which contains eventName and handler associated with it.
367
- * @record
368
- */
369
-
370
- /** @enum {number} */
371
- const ValueType = {
372
- STRING: 0,
373
- COUNTER: 1,
374
- };
375
- ValueType[ValueType.STRING] = 'STRING';
376
- ValueType[ValueType.COUNTER] = 'COUNTER';
377
-
378
- /**
379
- * @fileoverview added by tsickle
380
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
381
- */
382
- /**
383
- * @param {?} seconds_in
384
- * @return {?}
385
- */
386
- function secondsToHms(seconds_in) {
387
- seconds_in = Number(seconds_in);
388
- /** @type {?} */
389
- const h = Math.floor(seconds_in / 3600);
390
- /** @type {?} */
391
- const m = Math.floor(seconds_in % 3600 / 60);
392
- /** @type {?} */
393
- const s = Math.floor(seconds_in % 3600 % 60);
394
- /** @type {?} */
395
- const hDisplay = h > 0 ? h.toString() + ':' : '';
396
- /** @type {?} */
397
- const mDisplay = m > 0 ? ('0' + m.toString()).slice(-2) + ':' : '00:';
398
- /** @type {?} */
399
- const sDisplay = s > 0 ? ('0' + s.toString()).slice(-2) : '00';
400
- return hDisplay + mDisplay + sDisplay;
401
- }
402
-
403
- /**
404
- * @fileoverview added by tsickle
405
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
406
- */
407
- /**
408
- * @ignore
409
- */
410
- class PropertyComponent {
411
- /**
412
- * @ignore
413
- */
414
- constructor() {
415
- this._timerId = null;
416
- this.processedDisplayValue = '';
417
- }
418
- /**
419
- * @ignore
420
- * @return {?}
421
- */
422
- ngOnInit() {
423
- this.initValues();
424
- }
425
- /**
426
- * @ignore
427
- * @return {?}
428
- */
429
- initValues() {
430
- if (this.property.displayValueType === ValueType.COUNTER) {
431
- this.startCallCounter();
432
- }
433
- else {
434
- this.processedDisplayValue = this.property.displayValue;
435
- }
436
- }
437
- /**
438
- * @ignore
439
- * @private
440
- * @return {?}
441
- */
442
- startCallCounter() {
443
- if (this._timerId == null) {
444
- this._timerId = window.setInterval((/**
445
- * @return {?}
446
- */
447
- () => {
448
- /** @type {?} */
449
- const callStartTime = this.property.displayValue;
450
- /** @type {?} */
451
- const currentTime = new Date().getTime() / 1000;
452
- /** @type {?} */
453
- const secondsPassed = Math.floor((currentTime) - (callStartTime / 1000));
454
- this.processedDisplayValue = secondsToHms(secondsPassed);
455
- }), 1000);
456
- }
457
- }
458
- /**
459
- * @ignore
460
- * @return {?}
461
- */
462
- ngOnDestroy() {
463
- if (this.property.displayValueType === ValueType.COUNTER) {
464
- // clear the timer.
465
- if (this._timerId != null) {
466
- clearInterval(this._timerId);
467
- this._timerId = null;
468
- }
469
- }
470
- }
471
- }
472
- PropertyComponent.decorators = [
473
- { type: Component, args: [{
474
- selector: 'amc-property',
475
- template: `<input [name]="processedDisplayValue" readonly [title]="processedDisplayValue" class="displayData" type="text" [value]="processedDisplayValue"
476
- *ngIf="!property.customOperations" />
477
- <input class="cursor" [name]="processedDisplayValue" class="displayData" readonly [title]="processedDisplayValue" type="text" [value]="processedDisplayValue"
478
- (click)="property.customOperations.handler(property.customOperations.eventName,property.customOperations.eventMetadata)"
479
- *ngIf="property.customOperations" />
480
- `,
481
- 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}`]
482
- },] },
483
- ];
484
- /** @nocollapse */
485
- PropertyComponent.ctorParameters = () => [];
486
- PropertyComponent.propDecorators = {
487
- property: [{ type: Input }]
488
- };
489
-
490
- /**
491
- * @fileoverview added by tsickle
492
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
493
- */
494
- class HoldtimerComponent {
495
- constructor() {
496
- this.displayTime = '00:00/00:00';
497
- }
498
- /**
499
- * @return {?}
500
- */
501
- ngOnInit() {
502
- this.startCallCounter();
503
- }
504
- /**
505
- * @ignore
506
- * @private
507
- * @return {?}
508
- */
509
- startCallCounter() {
510
- /** @type {?} */
511
- const pastTimeInSeconds = this.CaculatePastHoldDuration();
512
- if (this._timerId == null) {
513
- this._timerId = window.setInterval((/**
514
- * @return {?}
515
- */
516
- () => {
517
- /** @type {?} */
518
- const currentTime = new Date().getTime() / 1000;
519
- /** @type {?} */
520
- const secondsPassedCurrentCall = Math.floor((currentTime) - (this.holdCounterData.currentHoldStartTime / 1000));
521
- this.displayTime = secondsToHms(secondsPassedCurrentCall) +
522
- '/' + secondsToHms(pastTimeInSeconds + secondsPassedCurrentCall);
523
- }), 1000);
524
- }
525
- }
526
- /**
527
- * @private
528
- * @return {?}
529
- */
530
- CaculatePastHoldDuration() {
531
- /** @type {?} */
532
- let pastTimeInSeconds = 0;
533
- if (this.holdCounterData.pastCallDurations) {
534
- this.holdCounterData.pastCallDurations.forEach((/**
535
- * @param {?} holdTimerIterator
536
- * @return {?}
537
- */
538
- (holdTimerIterator) => {
539
- pastTimeInSeconds += (holdTimerIterator.endTime - holdTimerIterator.startTime) / 1000;
540
- }));
541
- }
542
- return pastTimeInSeconds;
543
- }
544
- /**
545
- * @ignore
546
- * @return {?}
547
- */
548
- ngOnDestroy() {
549
- // clear the timer.
550
- if (this._timerId != null) {
551
- clearInterval(this._timerId);
552
- this._timerId = null;
553
- }
554
- }
555
- }
556
- HoldtimerComponent.decorators = [
557
- { type: Component, args: [{
558
- selector: 'amc-holdtimer',
559
- template: `<div class="holdCallDurationDiv">
560
- <input class="holdCallDurationTimer" name="HoldCallDuration/TotalHoldCallDuration" type="text" [value]="displayTime"
561
- readonly>
562
- </div>
563
- `,
564
- 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}`]
565
- },] },
566
- ];
567
- /** @nocollapse */
568
- HoldtimerComponent.ctorParameters = () => [];
569
- HoldtimerComponent.propDecorators = {
570
- holdCounterData: [{ type: Input }]
571
- };
572
-
573
- /**
574
- * @fileoverview added by tsickle
575
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
576
- */
577
- class DurationComponent {
578
- constructor() {
579
- this.displayTime = '00:00/00:00';
580
- }
581
- /**
582
- * @return {?}
583
- */
584
- ngOnInit() {
585
- this.startCallCounter();
586
- }
587
- /**
588
- * @ignore
589
- * @private
590
- * @return {?}
591
- */
592
- startCallCounter() {
593
- if (this._timerId == null) {
594
- this._timerId = window.setInterval((/**
595
- * @return {?}
596
- */
597
- () => {
598
- /** @type {?} */
599
- const callStartTime = this.startTime;
600
- /** @type {?} */
601
- const currentTime = new Date().getTime() / 1000;
602
- /** @type {?} */
603
- const secondsPassed = Math.floor((currentTime) - (callStartTime / 1000));
604
- this.displayTime = Math.floor(secondsPassed / 60) + ':' + ('0' + (secondsPassed % 60)).slice(-2);
605
- }), 1000);
606
- }
607
- }
608
- /**
609
- * @return {?}
610
- */
611
- ngOnDestroy() {
612
- // clear the timer.
613
- if (this._timerId != null) {
614
- clearInterval(this._timerId);
615
- this._timerId = null;
616
- }
617
- }
618
- }
619
- DurationComponent.decorators = [
620
- { type: Component, args: [{
621
- selector: 'amc-duration',
622
- template: `<div class="holdCallDurationDiv">
623
- <input class="block durationInput" name="CallDuration" type="text" [value]="displayTime" readonly>
624
- </div>
625
- `,
626
- 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}`]
627
- },] },
628
- ];
629
- /** @nocollapse */
630
- DurationComponent.ctorParameters = () => [];
631
- DurationComponent.propDecorators = {
632
- startTime: [{ type: Input }]
633
- };
634
-
635
- /**
636
- * @fileoverview added by tsickle
637
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
638
- */
639
- class ChatBoxComponent {
640
- constructor() {
641
- this.isTyping = false;
642
- this.lastCount = -1;
643
- this._isAgentTyping = false;
644
- this.isAgentTyping = new EventEmitter();
645
- this.newMessage = new EventEmitter();
646
- this.newMessageText = '';
647
- this.usernameToColor = {};
648
- this.colors = [
649
- '#81c784',
650
- '#ffab91',
651
- '#f48fb1',
652
- '#29b6f6',
653
- '#e1bee7',
654
- '#9ccc65',
655
- '#ffc107',
656
- '#26c6da',
657
- '#cddc39',
658
- ];
659
- this.colorsIndex = 0;
660
- this.agentColor = '#29b6f6';
661
- }
662
- /**
663
- * @return {?}
664
- */
665
- ngAfterViewChecked() {
666
- if (this.lastCount !== this.messages.length) {
667
- this.lastCount = this.messages.length;
668
- this.scrollToBottom();
669
- }
670
- }
671
- /**
672
- * @param {?} message
673
- * @return {?}
674
- */
675
- getColor(message) {
676
- if (message.type && message.type === IChatMessageType.AGENT) {
677
- return this.agentColor;
678
- }
679
- else if (message.username) {
680
- if (!this.usernameToColor[message.username]) {
681
- this.usernameToColor[message.username] = this.colors[this.colorsIndex];
682
- this.colorsIndex = (this.colorsIndex + 1) % this.colors.length;
683
- }
684
- return this.usernameToColor[message.username];
685
- }
686
- else {
687
- return this.colors[0];
688
- }
689
- }
690
- /**
691
- * @param {?} message
692
- * @return {?}
693
- */
694
- shouldAlignRight(message) {
695
- return message.type && message.type === IChatMessageType.AGENT;
696
- }
697
- /**
698
- * @return {?}
699
- */
700
- sendNewMessage() {
701
- if (this.newMessageText) {
702
- this.newMessage.emit(this.newMessageText);
703
- this.newMessageText = '';
704
- }
705
- }
706
- /**
707
- * @param {?} event
708
- * @return {?}
709
- */
710
- onNewMessageFocus(event) {
711
- /** @type {?} */
712
- const isTyping = event && this.newMessageText.length > 0;
713
- if (isTyping !== this._isAgentTyping) {
714
- this._isAgentTyping = isTyping;
715
- this.isAgentTyping.emit(isTyping);
716
- }
717
- }
718
- /**
719
- * @return {?}
720
- */
721
- onKeyup() {
722
- /** @type {?} */
723
- const isTyping = this.newMessageText.length > 0;
724
- if (isTyping !== this._isAgentTyping) {
725
- this._isAgentTyping = isTyping;
726
- this.isAgentTyping.emit(isTyping);
727
- }
728
- }
729
- /**
730
- * @return {?}
731
- */
732
- scrollToBottom() {
733
- try {
734
- this.messagesContainer.nativeElement.scrollTop = this.messagesContainer.nativeElement.scrollHeight;
735
- }
736
- catch (e) { }
737
- }
738
- }
739
- ChatBoxComponent.decorators = [
740
- { type: Component, args: [{
741
- selector: 'app-chat-box',
742
- template: `<div class="chat-box">
743
- <div #MessagesContainer class="messages" [style.max-height]='settings.maxHeight'>
744
- <ng-container *ngFor="let message of messages">
745
- <app-chat-message [alignRight]="shouldAlignRight(message)" [message]="message.text" [username]="message.username"
746
- [timestamp]="message.timestamp" [image]="message.userIcon" [fallbackImage]="settings.fallbackUserIcon" [color]="getColor(message)">
747
- </app-chat-message>
748
- </ng-container>
749
-
750
- <div *ngIf="isTyping" class="typing-indicator">
751
- Someone is typing
752
- <span></span>
753
- <span></span>
754
- <span></span>
755
- </div>
756
- </div>
757
-
758
- <div class="new-message">
759
- <input #NewMessageText [(ngModel)]="newMessageText" type="text" placeholder="Type a message" (focus)="onNewMessageFocus(true)"
760
- (blur)="onNewMessageFocus(false)" (keydown.enter)="sendNewMessage()" (keyup)='onKeyup()' [disabled]="settings.disableSendMessage">
761
- <input type="image" [src]="settings.sendImage" (click)="sendNewMessage()" [disabled]="settings.disableSendMessage">
762
- </div>
763
- </div>
764
- `,
765
- 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}}`],
766
- },] },
767
- ];
768
- /** @nocollapse */
769
- ChatBoxComponent.ctorParameters = () => [];
770
- ChatBoxComponent.propDecorators = {
771
- settings: [{ type: Input }],
772
- isTyping: [{ type: Input }],
773
- messages: [{ type: Input }],
774
- isAgentTyping: [{ type: Output }],
775
- newMessage: [{ type: Output }],
776
- messagesContainer: [{ type: ViewChild, args: ['MessagesContainer',] }]
777
- };
778
-
779
- /**
780
- * @fileoverview added by tsickle
781
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
782
- */
783
- class ChatMessageComponent {
784
- constructor() {
785
- this.alignRight = false;
786
- }
787
- /**
788
- * @return {?}
789
- */
790
- ngOnInit() {
791
- }
792
- }
793
- ChatMessageComponent.decorators = [
794
- { type: Component, args: [{
795
- selector: 'app-chat-message',
796
- template: `<div [class]="alignRight? 'message right-message' : 'message left-message'">
797
- <div class="message-header">
798
- <img *ngIf="image" class="image" [src]="image" (error)="image = fallbackImage" [style.border-color]="color" />
799
- <span *ngIf="username" class="username">{{username}}</span>
800
- <span *ngIf="timestamp" class="timestamp">{{timestamp}}</span>
801
- </div>
802
-
803
- <div class="message-body-container">
804
- <div>
805
- <div class="message-body" [style.background-color]="color" [style.border-color]="color">
806
- <span [innerHTML]="message"></span>
807
- </div>
808
- </div>
809
- </div>
810
- </div>
811
- `,
812
- 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}`]
813
- },] },
814
- ];
815
- /** @nocollapse */
816
- ChatMessageComponent.ctorParameters = () => [];
817
- ChatMessageComponent.propDecorators = {
818
- message: [{ type: Input }],
819
- alignRight: [{ type: Input }],
820
- username: [{ type: Input }],
821
- color: [{ type: Input }],
822
- timestamp: [{ type: Input }],
823
- image: [{ type: Input }],
824
- fallbackImage: [{ type: Input }]
825
- };
826
-
827
- /**
828
- * @fileoverview added by tsickle
829
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
830
- */
831
- class DispositionComponent {
832
- constructor() {
833
- this.selectedDisposition = new EventEmitter();
834
- }
835
- /**
836
- * @return {?}
837
- */
838
- ngOnInit() {
839
- }
840
- /**
841
- * @return {?}
842
- */
843
- submitDisposition() {
844
- this.selectedDisposition.emit({ 'dispositionid': this.selectedDispositionValue,
845
- dispositionName: this.disposition.get(this.selectedDispositionValue) });
846
- }
847
- }
848
- DispositionComponent.decorators = [
849
- { type: Component, args: [{
850
- selector: 'app-disposition',
851
- template: `<div class="reasonCodeModalFrame">
852
- <div>
853
- <div>
854
- <label class="reasonCodeLabelStyle">{{dispositionHeader}}</label>
855
- <br />
856
- <hr />
857
- </div>
858
- <ng-container *ngFor="let disp of disposition">
859
- <div>
860
- <input [required]="!selectedDispositionValue" type="radio" name="disposition_name" value="{{disp.key}}" [(ngModel)]="selectedDispositionValue"/>
861
- <label class="reasonCodeLabelStyle">{{disp.value}}</label>
862
- </div>
863
- </ng-container>
864
- <p>
865
- <input type="image" src="https://engage.contactcanvas.com/MSCRMToolbar/Images/voice_check_normal.png" title="Submit Call Result"
866
- (click)="submitDisposition()" style='float:right; margin-right:20px; margin-bottom:10px; width:20px; height:20px' />
867
- </p>
868
- </div>
869
- </div>
870
- `,
871
- 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}`]
872
- },] },
873
- ];
874
- /** @nocollapse */
875
- DispositionComponent.ctorParameters = () => [];
876
- DispositionComponent.propDecorators = {
877
- dispositionHeader: [{ type: Input }],
878
- disposition: [{ type: Input }],
879
- selectedDisposition: [{ type: Output }]
880
- };
881
-
882
- /**
883
- * @fileoverview added by tsickle
884
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
885
- */
886
- class ActivityComponent {
887
- constructor() {
888
- this.ActivitySave = new EventEmitter();
889
- this.OnNameSelectChange = new EventEmitter();
890
- this.OnRelatedToChange = new EventEmitter();
891
- this.OnSubjectChange = new EventEmitter();
892
- this.OnCallNotesChange = new EventEmitter();
893
- this.isActivityMaximized = true;
894
- }
895
- /**
896
- * @return {?}
897
- */
898
- ngOnInit() {
899
- }
900
- /**
901
- * @protected
902
- * @param {?} event
903
- * @return {?}
904
- */
905
- onNameSelectChange(event) {
906
- this.activity.WhoObject = this.getWho(event.currentTarget.value);
907
- this.OnNameSelectChange.emit(this.activity);
908
- }
909
- /**
910
- * @protected
911
- * @param {?} whoObject
912
- * @return {?}
913
- */
914
- parseWhoObject(whoObject) {
915
- return whoObject.objectType + ': ' + whoObject.objectName;
916
- }
917
- /**
918
- * @protected
919
- * @param {?} whatObject
920
- * @return {?}
921
- */
922
- parseWhatObject(whatObject) {
923
- return whatObject.objectType + ': ' + whatObject.objectName;
924
- }
925
- /**
926
- * @protected
927
- * @param {?} event
928
- * @return {?}
929
- */
930
- onRelatedToChange(event) {
931
- this.activity.WhatObject = this.getWhat(event.currentTarget.value);
932
- this.OnRelatedToChange.emit(this.activity);
933
- }
934
- /**
935
- * @protected
936
- * @param {?} event
937
- * @return {?}
938
- */
939
- onSubjectChange(event) {
940
- this.activity.Subject = event.srcElement.value;
941
- this.OnSubjectChange.emit(this.activity);
942
- }
943
- /**
944
- * @protected
945
- * @param {?} event
946
- * @return {?}
947
- */
948
- onCallNotesChange(event) {
949
- this.activity.Subject = event.srcElement.value.trim();
950
- this.OnCallNotesChange.emit(this.activity);
951
- }
952
- /**
953
- * @protected
954
- * @param {?} id
955
- * @return {?}
956
- */
957
- getWho(id) {
958
- for (let i = 0; i < this.activity.whoList.length; i++) {
959
- if (this.activity.whoList[i].objectId === id) {
960
- return this.activity.whoList[i];
961
- }
962
- }
963
- }
964
- /**
965
- * @protected
966
- * @param {?} id
967
- * @return {?}
968
- */
969
- getWhat(id) {
970
- for (let i = 0; i < this.activity.whatList.length; i++) {
971
- if (this.activity.whatList[i].objectId === id) {
972
- return this.activity.whatList[i];
973
- }
974
- }
975
- }
976
- /**
977
- * @protected
978
- * @param {?} value
979
- * @return {?}
980
- */
981
- loadQuickComment(value) {
982
- this.activity.Description = this.activity.Description + this.activity.quickCommentList[value];
983
- }
984
- /**
985
- * @protected
986
- * @param {?} clearActivityFields
987
- * @return {?}
988
- */
989
- activitySave(clearActivityFields) {
990
- this.ActivitySave.emit(this.activity);
991
- }
992
- }
993
- ActivityComponent.decorators = [
994
- { type: Component, args: [{
995
- selector: 'app-activity',
996
- template: `<div *ngIf="isActivityMaximized" class="callDisplay">
997
- <div class="editor callHeader">
998
- <label class="headerLabel">
999
- <b>Activity Information</b>
1000
- </label>
1001
- <img class="ViewResizeImage" src="/assets/images/section_collapse.png" (click)="isActivityMaximized = false" title="Collapse">
1002
- </div>
1003
- <div class="callBody">
1004
- <div class="activityFields">
1005
- <form>
1006
- <div class="editor displayDiv">
1007
- <label class="displayLabels" title="Call From">{{activity.NameFieldName}}</label>
1008
- <select class="dropDownListStyle displayData" data-resetperactivity="false" (change)="onNameSelectChange($event)">
1009
- <option *ngFor="let who of activity.whoList" value="{{who.objectId}}">{{parseWhoObject(who)}}</option>
1010
- </select>
1011
- </div>
1012
- <div class="editor displayDiv">
1013
- <label class="displayLabels" title="Related To">{{activity.RelatedToFieldName}}</label>
1014
- <select class="dropDownListStyle displayData" (change)="onRelatedToChange($event)" data-resetperactivity="false">
1015
- <option *ngFor="let what of activity.whatList" value="{{what.objectId}}">{{parseWhatObject(what)}}</option>
1016
- </select>
1017
- </div>
1018
- <div class="editor displayDiv">
1019
- <label class="displayLabels" title="Subject">{{activity.SubjectFieldName}}</label>
1020
- <input class="activitySubjectTextBoxStyle displayData" (change)="onSubjectChange($event)" title="{{activity.Subject}}"
1021
- type="text" value="{{activity.Subject}}">
1022
- </div>
1023
- <div class="editor displayDiv">
1024
- <div class="callNotesContainer">
1025
- <div class="textAreaDiv">
1026
- <textarea value="{{activity.Description}}" placeholder="Click to add a comment" class="activityCommentsTextBoxStyle"
1027
- (change)="onCallNotesChange($event)" cols="20" rows="2" title=""></textarea>
1028
- </div>
1029
- <div class="notesButtonBorder">
1030
- <div class="commentsButtonDiv">
1031
- <div class="quickCommentsDiv">
1032
- <input *ngFor="let quickComment of activity.quickCommentList ; let i = index;" class="quickNotesBotton" type="button"
1033
- value="{{i+1}}" (click)="loadQuickComment(i)" title="{{quickComment}}">
1034
- </div>
1035
- <div class="submitDiv">
1036
- <input class="submitButton" type="button" value="Submit" (click)="activitySave(false)">
1037
- </div>
1038
- </div>
1039
- </div>
1040
- </div>
1041
- </div>
1042
- </form>
1043
- </div>
1044
- </div>
1045
- </div>
1046
- <div *ngIf="!isActivityMaximized" class="callDisplay">
1047
- <div class="editor callHeader">
1048
- <label class="headerLabel">
1049
- <b>Activity Information</b>
1050
- </label>
1051
- <img class="ViewResizeImage" src="assets/images/section_expand.png" (click)="isActivityMaximized = true" title="Expand">
1052
- </div>
1053
- `,
1054
- styles: [`.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}.callHeader{background-color:#f4f5fb!important;width:100%!important;margin-top:0!important}.headerLabel{margin-left:10px}.ViewResizeImage{width:20px;height:20px;float:right;cursor:pointer}.callBody{border-top:0;position:relative}.displayDiv{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.displayLabels{margin-left:5px;width:25%;margin-right:2px}.displayData{width:70%}.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:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-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}.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}.commentsButtonDiv{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.quickNotesBotton{background-color:#1e72ba;border:0;color:#fff;height:70%;width:20px;margin:2px;outline:0;font-size:70%}.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}.submitDiv{text-align:right;padding-right:4px}.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}`]
1055
- },] },
1056
- ];
1057
- /** @nocollapse */
1058
- ActivityComponent.ctorParameters = () => [];
1059
- ActivityComponent.propDecorators = {
1060
- activity: [{ type: Input }],
1061
- ActivitySave: [{ type: Output }],
1062
- OnNameSelectChange: [{ type: Output }],
1063
- OnRelatedToChange: [{ type: Output }],
1064
- OnSubjectChange: [{ type: Output }],
1065
- OnCallNotesChange: [{ type: Output }]
1066
- };
1067
-
1068
- /**
1069
- * @fileoverview added by tsickle
1070
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1071
- */
1072
- class UILibraryModule {
1073
- /**
1074
- * @param {?} injector
1075
- */
1076
- constructor(injector) {
1077
- this.injector = injector;
1078
- }
1079
- /**
1080
- * @param {?} app
1081
- * @return {?}
1082
- */
1083
- ngDoBootstrap(app) {
1084
- if (!customElements.get('amc-webcomponents-scenario')) {
1085
- /** @type {?} */
1086
- const strategyFactory = new ElementZoneStrategyFactory(ScenarioComponent, this.injector);
1087
- customElements.define('amc-webcomponents-scenario', createCustomElement(ScenarioComponent, {
1088
- injector: this.injector,
1089
- strategyFactory: strategyFactory
1090
- }));
1091
- }
1092
- if (!customElements.get('amc-webcomponents-disposition')) {
1093
- /** @type {?} */
1094
- const strategyFactory = new ElementZoneStrategyFactory(DispositionComponent, this.injector);
1095
- customElements.define('amc-webcomponents-disposition', createCustomElement(DispositionComponent, {
1096
- injector: this.injector,
1097
- strategyFactory: strategyFactory
1098
- }));
1099
- }
1100
- }
1101
- }
1102
- UILibraryModule.decorators = [
1103
- { type: NgModule, args: [{
1104
- imports: [BrowserModule, CommonModule, FormsModule],
1105
- declarations: [
1106
- InteractionComponent,
1107
- ScenarioComponent,
1108
- OperationComponent,
1109
- PropertyComponent,
1110
- HoldtimerComponent,
1111
- DurationComponent,
1112
- ChatBoxComponent,
1113
- ChatMessageComponent,
1114
- DispositionComponent,
1115
- ActivityComponent
1116
- ],
1117
- entryComponents: [ScenarioComponent, DispositionComponent],
1118
- bootstrap: [],
1119
- exports: [ScenarioComponent]
1120
- },] },
1121
- ];
1122
- /** @nocollapse */
1123
- UILibraryModule.ctorParameters = () => [
1124
- { type: Injector }
1125
- ];
1126
-
1127
- /**
1128
- * @fileoverview added by tsickle
1129
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1130
- */
1131
-
1132
- /**
1133
- * @fileoverview added by tsickle
1134
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1135
- */
1136
- /**
1137
- * Generated bundle index. Do not edit.
1138
- */
1139
-
1140
- export { UILibraryModule, Property, ValueType, IChatMessageType, ActivityComponent as ɵj, ChatBoxComponent as ɵg, ChatMessageComponent as ɵh, DispositionComponent as ɵi, DurationComponent as ɵf, HoldtimerComponent as ɵe, InteractionComponent as ɵa, OperationComponent as ɵc, PropertyComponent as ɵd, ScenarioComponent as ɵb };
1141
- //# 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==