@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,534 +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
- var InteractionComponent = /** @class */ (function () {
9
- function InteractionComponent() {
10
- this.minimizedChanged = new EventEmitter();
11
- this.isAgentTyping = new EventEmitter();
12
- this.newMessage = new EventEmitter();
13
- this._minimized = false;
14
- }
15
- Object.defineProperty(InteractionComponent.prototype, "_minimized", {
16
- get: function () {
17
- return this.minimized;
18
- },
19
- set: function (value) {
20
- this.minimized = value;
21
- this.minimizedChanged.emit(value);
22
- },
23
- enumerable: true,
24
- configurable: true
25
- });
26
- InteractionComponent.prototype.ngOnInit = function () {
27
- };
28
- InteractionComponent.prototype.minimize = function () {
29
- this._minimized = true;
30
- };
31
- InteractionComponent.prototype.maximize = function () {
32
- this._minimized = false;
33
- };
34
- InteractionComponent.prototype.isConferenceCall = function () {
35
- if (this.interaction.parties && this.interaction.parties.length > 1) {
36
- return true;
37
- }
38
- return false;
39
- };
40
- return InteractionComponent;
41
- }());
42
- InteractionComponent.decorators = [
43
- { type: Component, args: [{
44
- selector: 'amc-interaction',
45
- template: "<div class=\"AnswerCallFocused\">\n <div class=\"editor callHeaderTop\">\n <img class=\"statusImage\" [src]=\"interaction.UIHeadersData.statusUrl\" (click)=\"interaction.UIHeadersData.focusHandler.handler(interaction.UIHeadersData.focusHandler.operationName, interaction.UIHeadersData.focusHandler.operationMetadata)\" />\n <label class=\"statusText\">\n <b>{{interaction.UIHeadersData.statusText}}</b>\n </label>\n <label class=\"verticalDivider\">|</label>\n <label class=\"directionText\" *ngIf=\"!interaction.UIHeadersData.displayHoldCounter\">{{interaction.UIHeadersData.directionText}}</label>\n <div class=\"holdCallDurationDiv\" *ngIf=\"interaction.UIHeadersData.displayHoldCounter\">\n <amc-holdtimer [holdCounterData]=\"interaction.UIHeadersData.holdCounterData\"></amc-holdtimer>\n </div>\n <img class=\"ViewExpandImage\" [src]=\"interaction.UIHeadersData.minimizeUrl\" (click)=\"minimize()\" *ngIf=\"!_minimized\" />\n <img class=\"ViewCollapseImage\" [src]=\"interaction.UIHeadersData.maximizeUrl\" (click)=\"maximize()\" *ngIf=\"_minimized\" />\n <div class=\"DurationDiv\" *ngIf=\"interaction.displayCallTimer\">\n <amc-duration [startTime]=\"interaction.startTime\"></amc-duration>\n </div>\n </div>\n\n <div *ngIf=\"!_minimized\">\n\n <div *ngIf=\"!isConferenceCall()\">\n <div class=\"editor container\">\n <input class=\"callImage\" type=\"image\" [src]=\"interaction.subheaderData.image.href\" [title]=\"interaction.subheaderData.tooltip || ''\">\n <input class=\"editor phoneNumberValue\" readonly type=\"text\" [value]=\"interaction.subheaderData.value\">\n </div>\n\n <div class=\"cadSection\">\n <ng-container *ngFor=\"let property of interaction.properties\">\n <ng-container *ngIf=\"property.visible\">\n <label class=\"col1\" [title]=\"property.displayKey\">{{property.displayKey}}</label>\n <amc-property class=\"col2\" [property]=\"property\"> </amc-property>\n </ng-container>\n </ng-container>\n\n <ng-container *ngFor=\"let property of interaction.associatedData\">\n <ng-container *ngIf=\"property.visible\">\n <div class=\"editor displayDiv\">\n <label class=\"displayLabels\" [title]=\"property.displayKey\">{{property.displayKey}}</label>\n <amc-property class=\"col2\" [property]=\"property\"> </amc-property>\n </div>\n </ng-container>\n </ng-container>\n </div>\n\n <app-chat-box *ngIf=\"interaction.chat\" [isTyping]=\"interaction.chat.isCustomerTyping\" [settings]=\"interaction.chat.settings\"\n [messages]=\"interaction.chat.messages\" (isAgentTyping)=\"isAgentTyping.emit($event)\" (newMessage)=\"newMessage.emit($event)\"></app-chat-box>\n\n <div [id]='interaction.interactionId'> </div>\n <amc-operation [operations]=\"interaction.operations\"></amc-operation>\n </div>\n\n <div *ngIf=\"isConferenceCall()\">\n <div *ngFor=\"let party of interaction.parties\">\n <div class=\"editor container\">\n <input class=\"callImage\" type=\"image\" [src]=\"party.header.image.href\" [title]=\"party.header.tooltip || ''\">\n <input class=\"editor phoneNumberValue\" readonly type=\"text\" [value]=\"party.header.value\">\n </div>\n\n <div class=\"grid-container\">\n <ng-container *ngFor=\"let property of party.properties\">\n <ng-container *ngIf=\"property.visible\">\n <label class=\"col1\" [title]=\"property.displayKey\">{{property.displayKey}}</label>\n <amc-property class=\"col2\" [property]=\"property\"> </amc-property>\n </ng-container>\n </ng-container>\n </div>\n <amc-operation [operations]=\"party.operations\"></amc-operation>\n <div class=\"AnswerCallFocused\"></div>\n </div>\n <amc-operation [operations]=\"interaction.operations\"></amc-operation>\n </div>\n\n </div>\n</div>\n",
46
- 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}"]
47
- },] },
48
- ];
49
- InteractionComponent.ctorParameters = function () { return []; };
50
- InteractionComponent.propDecorators = {
51
- interaction: [{ type: Input }],
52
- minimizedChanged: [{ type: Output }],
53
- isAgentTyping: [{ type: Output }],
54
- newMessage: [{ type: Output }]
55
- };
56
- var ScenarioComponent = /** @class */ (function () {
57
- function ScenarioComponent() {
58
- this.minimizedChanged = new EventEmitter();
59
- this.isAgentTyping = new EventEmitter();
60
- this.newMessage = new EventEmitter();
61
- this.afterViewChecked = new EventEmitter();
62
- }
63
- ScenarioComponent.prototype.ngAfterViewChecked = function () {
64
- this.afterViewChecked.emit();
65
- };
66
- ScenarioComponent.prototype.onMinimizedChanged = function () {
67
- this.minimizedChanged.emit();
68
- };
69
- return ScenarioComponent;
70
- }());
71
- ScenarioComponent.decorators = [
72
- { type: Component, args: [{
73
- selector: 'amc-scenario',
74
- template: "<ng-container *ngIf=\"scenario && scenario.interactions\">\n <amc-interaction *ngFor=\"let interaction of scenario.interactions\" [interaction]=\"interaction\"\n (minimizedChanged)=\"onMinimizedChanged()\" (isAgentTyping)=\"isAgentTyping.emit($event)\"\n (newMessage)=\"newMessage.emit($event)\">\n </amc-interaction>\n</ng-container>\n",
75
- 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}"]
76
- },] },
77
- ];
78
- ScenarioComponent.ctorParameters = function () { return []; };
79
- ScenarioComponent.propDecorators = {
80
- scenario: [{ type: Input }],
81
- minimizedChanged: [{ type: Output }],
82
- isAgentTyping: [{ type: Output }],
83
- newMessage: [{ type: Output }],
84
- afterViewChecked: [{ type: Output }]
85
- };
86
- var OperationComponent = /** @class */ (function () {
87
- function OperationComponent() {
88
- }
89
- OperationComponent.prototype.ngOnInit = function () {
90
- };
91
- return OperationComponent;
92
- }());
93
- OperationComponent.decorators = [
94
- { type: Component, args: [{
95
- selector: 'amc-operation',
96
- template: "<div class=\"callOptions\">\n <img class=\"AnswerCallImages\" *ngFor=\"let operation of operations\" [title]=\"operation.title\" [src]=\"operation.icon\" (click)=\"operation.handler(operation.operationName, operation.operationMetadata)\"\n />\n</div>",
97
- 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}"]
98
- },] },
99
- ];
100
- OperationComponent.ctorParameters = function () { return []; };
101
- OperationComponent.propDecorators = {
102
- operations: [{ type: Input }]
103
- };
104
- var IChatMessageType = {
105
- AGENT: 'AGENT',
106
- OTHER_PERSON: 'OTHER_PERSON',
107
- INFORMATION: 'INFORMATION',
108
- };
109
- var Property = /** @class */ (function () {
110
- function Property(key, value, visible, valueType, customOperation) {
111
- var _this = this;
112
- this.displayOperation = (function () {
113
- _this.displayKey = _this.key;
114
- _this.displayValue = _this.value;
115
- });
116
- this.key = key;
117
- this.value = value;
118
- visible != null ? (this.visible = visible) : (this.visible = true);
119
- valueType != null
120
- ? (this.displayValueType = valueType)
121
- : (this.displayValueType = ValueType.STRING);
122
- this.customOperations = customOperation;
123
- this.displayOperation();
124
- }
125
- return Property;
126
- }());
127
- var ValueType = {
128
- STRING: 0,
129
- COUNTER: 1,
130
- };
131
- ValueType[ValueType.STRING] = 'STRING';
132
- ValueType[ValueType.COUNTER] = 'COUNTER';
133
- function secondsToHms(seconds_in) {
134
- seconds_in = Number(seconds_in);
135
- var h = Math.floor(seconds_in / 3600);
136
- var m = Math.floor(seconds_in % 3600 / 60);
137
- var s = Math.floor(seconds_in % 3600 % 60);
138
- var hDisplay = h > 0 ? h.toString() + ':' : '';
139
- var mDisplay = m > 0 ? ('0' + m.toString()).slice(-2) + ':' : '00:';
140
- var sDisplay = s > 0 ? ('0' + s.toString()).slice(-2) : '00';
141
- return hDisplay + mDisplay + sDisplay;
142
- }
143
- var PropertyComponent = /** @class */ (function () {
144
- function PropertyComponent() {
145
- this._timerId = null;
146
- this.processedDisplayValue = '';
147
- }
148
- PropertyComponent.prototype.ngOnInit = function () {
149
- this.initValues();
150
- };
151
- PropertyComponent.prototype.initValues = function () {
152
- if (this.property.displayValueType === ValueType.COUNTER) {
153
- this.startCallCounter();
154
- }
155
- else {
156
- this.processedDisplayValue = this.property.displayValue;
157
- }
158
- };
159
- PropertyComponent.prototype.startCallCounter = function () {
160
- var _this = this;
161
- if (this._timerId == null) {
162
- this._timerId = window.setInterval((function () {
163
- var callStartTime = _this.property.displayValue;
164
- var currentTime = new Date().getTime() / 1000;
165
- var secondsPassed = Math.floor((currentTime) - (callStartTime / 1000));
166
- _this.processedDisplayValue = secondsToHms(secondsPassed);
167
- }), 1000);
168
- }
169
- };
170
- PropertyComponent.prototype.ngOnDestroy = function () {
171
- if (this.property.displayValueType === ValueType.COUNTER) {
172
- if (this._timerId != null) {
173
- clearInterval(this._timerId);
174
- this._timerId = null;
175
- }
176
- }
177
- };
178
- return PropertyComponent;
179
- }());
180
- PropertyComponent.decorators = [
181
- { type: Component, args: [{
182
- selector: 'amc-property',
183
- template: "<input [name]=\"processedDisplayValue\" readonly [title]=\"processedDisplayValue\" class=\"displayData\" type=\"text\" [value]=\"processedDisplayValue\"\n *ngIf=\"!property.customOperations\" />\n<input class=\"cursor\" [name]=\"processedDisplayValue\" class=\"displayData\" readonly [title]=\"processedDisplayValue\" type=\"text\" [value]=\"processedDisplayValue\"\n (click)=\"property.customOperations.handler(property.customOperations.eventName,property.customOperations.eventMetadata)\"\n *ngIf=\"property.customOperations\" />\n",
184
- 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}"]
185
- },] },
186
- ];
187
- PropertyComponent.ctorParameters = function () { return []; };
188
- PropertyComponent.propDecorators = {
189
- property: [{ type: Input }]
190
- };
191
- var HoldtimerComponent = /** @class */ (function () {
192
- function HoldtimerComponent() {
193
- this.displayTime = '00:00/00:00';
194
- }
195
- HoldtimerComponent.prototype.ngOnInit = function () {
196
- this.startCallCounter();
197
- };
198
- HoldtimerComponent.prototype.startCallCounter = function () {
199
- var _this = this;
200
- var pastTimeInSeconds = this.CaculatePastHoldDuration();
201
- if (this._timerId == null) {
202
- this._timerId = window.setInterval((function () {
203
- var currentTime = new Date().getTime() / 1000;
204
- var secondsPassedCurrentCall = Math.floor((currentTime) - (_this.holdCounterData.currentHoldStartTime / 1000));
205
- _this.displayTime = secondsToHms(secondsPassedCurrentCall) +
206
- '/' + secondsToHms(pastTimeInSeconds + secondsPassedCurrentCall);
207
- }), 1000);
208
- }
209
- };
210
- HoldtimerComponent.prototype.CaculatePastHoldDuration = function () {
211
- var pastTimeInSeconds = 0;
212
- if (this.holdCounterData.pastCallDurations) {
213
- this.holdCounterData.pastCallDurations.forEach((function (holdTimerIterator) {
214
- pastTimeInSeconds += (holdTimerIterator.endTime - holdTimerIterator.startTime) / 1000;
215
- }));
216
- }
217
- return pastTimeInSeconds;
218
- };
219
- HoldtimerComponent.prototype.ngOnDestroy = function () {
220
- if (this._timerId != null) {
221
- clearInterval(this._timerId);
222
- this._timerId = null;
223
- }
224
- };
225
- return HoldtimerComponent;
226
- }());
227
- HoldtimerComponent.decorators = [
228
- { type: Component, args: [{
229
- selector: 'amc-holdtimer',
230
- template: "<div class=\"holdCallDurationDiv\">\n <input class=\"holdCallDurationTimer\" name=\"HoldCallDuration/TotalHoldCallDuration\" type=\"text\" [value]=\"displayTime\"\n readonly>\n</div>\n",
231
- 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}"]
232
- },] },
233
- ];
234
- HoldtimerComponent.ctorParameters = function () { return []; };
235
- HoldtimerComponent.propDecorators = {
236
- holdCounterData: [{ type: Input }]
237
- };
238
- var DurationComponent = /** @class */ (function () {
239
- function DurationComponent() {
240
- this.displayTime = '00:00/00:00';
241
- }
242
- DurationComponent.prototype.ngOnInit = function () {
243
- this.startCallCounter();
244
- };
245
- DurationComponent.prototype.startCallCounter = function () {
246
- var _this = this;
247
- if (this._timerId == null) {
248
- this._timerId = window.setInterval((function () {
249
- var callStartTime = _this.startTime;
250
- var currentTime = new Date().getTime() / 1000;
251
- var secondsPassed = Math.floor((currentTime) - (callStartTime / 1000));
252
- _this.displayTime = Math.floor(secondsPassed / 60) + ':' + ('0' + (secondsPassed % 60)).slice(-2);
253
- }), 1000);
254
- }
255
- };
256
- DurationComponent.prototype.ngOnDestroy = function () {
257
- if (this._timerId != null) {
258
- clearInterval(this._timerId);
259
- this._timerId = null;
260
- }
261
- };
262
- return DurationComponent;
263
- }());
264
- DurationComponent.decorators = [
265
- { type: Component, args: [{
266
- selector: 'amc-duration',
267
- template: "<div class=\"holdCallDurationDiv\">\n <input class=\"block durationInput\" name=\"CallDuration\" type=\"text\" [value]=\"displayTime\" readonly>\n</div>\n",
268
- 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}"]
269
- },] },
270
- ];
271
- DurationComponent.ctorParameters = function () { return []; };
272
- DurationComponent.propDecorators = {
273
- startTime: [{ type: Input }]
274
- };
275
- var ChatBoxComponent = /** @class */ (function () {
276
- function ChatBoxComponent() {
277
- this.isTyping = false;
278
- this.lastCount = -1;
279
- this._isAgentTyping = false;
280
- this.isAgentTyping = new EventEmitter();
281
- this.newMessage = new EventEmitter();
282
- this.newMessageText = '';
283
- this.usernameToColor = {};
284
- this.colors = [
285
- '#81c784',
286
- '#ffab91',
287
- '#f48fb1',
288
- '#29b6f6',
289
- '#e1bee7',
290
- '#9ccc65',
291
- '#ffc107',
292
- '#26c6da',
293
- '#cddc39',
294
- ];
295
- this.colorsIndex = 0;
296
- this.agentColor = '#29b6f6';
297
- }
298
- ChatBoxComponent.prototype.ngAfterViewChecked = function () {
299
- if (this.lastCount !== this.messages.length) {
300
- this.lastCount = this.messages.length;
301
- this.scrollToBottom();
302
- }
303
- };
304
- ChatBoxComponent.prototype.getColor = function (message) {
305
- if (message.type && message.type === IChatMessageType.AGENT) {
306
- return this.agentColor;
307
- }
308
- else if (message.username) {
309
- if (!this.usernameToColor[message.username]) {
310
- this.usernameToColor[message.username] = this.colors[this.colorsIndex];
311
- this.colorsIndex = (this.colorsIndex + 1) % this.colors.length;
312
- }
313
- return this.usernameToColor[message.username];
314
- }
315
- else {
316
- return this.colors[0];
317
- }
318
- };
319
- ChatBoxComponent.prototype.shouldAlignRight = function (message) {
320
- return message.type && message.type === IChatMessageType.AGENT;
321
- };
322
- ChatBoxComponent.prototype.sendNewMessage = function () {
323
- if (this.newMessageText) {
324
- this.newMessage.emit(this.newMessageText);
325
- this.newMessageText = '';
326
- }
327
- };
328
- ChatBoxComponent.prototype.onNewMessageFocus = function (event) {
329
- var isTyping = event && this.newMessageText.length > 0;
330
- if (isTyping !== this._isAgentTyping) {
331
- this._isAgentTyping = isTyping;
332
- this.isAgentTyping.emit(isTyping);
333
- }
334
- };
335
- ChatBoxComponent.prototype.onKeyup = function () {
336
- var isTyping = this.newMessageText.length > 0;
337
- if (isTyping !== this._isAgentTyping) {
338
- this._isAgentTyping = isTyping;
339
- this.isAgentTyping.emit(isTyping);
340
- }
341
- };
342
- ChatBoxComponent.prototype.scrollToBottom = function () {
343
- try {
344
- this.messagesContainer.nativeElement.scrollTop = this.messagesContainer.nativeElement.scrollHeight;
345
- }
346
- catch (e) { }
347
- };
348
- return ChatBoxComponent;
349
- }());
350
- ChatBoxComponent.decorators = [
351
- { type: Component, args: [{
352
- selector: 'app-chat-box',
353
- template: "<div class=\"chat-box\">\n <div #MessagesContainer class=\"messages\" [style.max-height]='settings.maxHeight'>\n <ng-container *ngFor=\"let message of messages\">\n <app-chat-message [alignRight]=\"shouldAlignRight(message)\" [message]=\"message.text\" [username]=\"message.username\"\n [timestamp]=\"message.timestamp\" [image]=\"message.userIcon\" [fallbackImage]=\"settings.fallbackUserIcon\" [color]=\"getColor(message)\">\n </app-chat-message>\n </ng-container>\n\n <div *ngIf=\"isTyping\" class=\"typing-indicator\">\n Someone is typing\n <span></span>\n <span></span>\n <span></span>\n </div>\n </div>\n\n <div class=\"new-message\">\n <input #NewMessageText [(ngModel)]=\"newMessageText\" type=\"text\" placeholder=\"Type a message\" (focus)=\"onNewMessageFocus(true)\"\n (blur)=\"onNewMessageFocus(false)\" (keydown.enter)=\"sendNewMessage()\" (keyup)='onKeyup()' [disabled]=\"settings.disableSendMessage\">\n <input type=\"image\" [src]=\"settings.sendImage\" (click)=\"sendNewMessage()\" [disabled]=\"settings.disableSendMessage\">\n </div>\n</div>\n",
354
- 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}}"],
355
- },] },
356
- ];
357
- ChatBoxComponent.ctorParameters = function () { return []; };
358
- ChatBoxComponent.propDecorators = {
359
- settings: [{ type: Input }],
360
- isTyping: [{ type: Input }],
361
- messages: [{ type: Input }],
362
- isAgentTyping: [{ type: Output }],
363
- newMessage: [{ type: Output }],
364
- messagesContainer: [{ type: ViewChild, args: ['MessagesContainer',] }]
365
- };
366
- var ChatMessageComponent = /** @class */ (function () {
367
- function ChatMessageComponent() {
368
- this.alignRight = false;
369
- }
370
- ChatMessageComponent.prototype.ngOnInit = function () {
371
- };
372
- return ChatMessageComponent;
373
- }());
374
- ChatMessageComponent.decorators = [
375
- { type: Component, args: [{
376
- selector: 'app-chat-message',
377
- template: "<div [class]=\"alignRight? 'message right-message' : 'message left-message'\">\n <div class=\"message-header\">\n <img *ngIf=\"image\" class=\"image\" [src]=\"image\" (error)=\"image = fallbackImage\" [style.border-color]=\"color\" />\n <span *ngIf=\"username\" class=\"username\">{{username}}</span>\n <span *ngIf=\"timestamp\" class=\"timestamp\">{{timestamp}}</span>\n </div>\n\n <div class=\"message-body-container\">\n <div>\n <div class=\"message-body\" [style.background-color]=\"color\" [style.border-color]=\"color\">\n <span [innerHTML]=\"message\"></span>\n </div>\n </div>\n </div>\n</div>\n",
378
- 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}"]
379
- },] },
380
- ];
381
- ChatMessageComponent.ctorParameters = function () { return []; };
382
- ChatMessageComponent.propDecorators = {
383
- message: [{ type: Input }],
384
- alignRight: [{ type: Input }],
385
- username: [{ type: Input }],
386
- color: [{ type: Input }],
387
- timestamp: [{ type: Input }],
388
- image: [{ type: Input }],
389
- fallbackImage: [{ type: Input }]
390
- };
391
- var DispositionComponent = /** @class */ (function () {
392
- function DispositionComponent() {
393
- this.selectedDisposition = new EventEmitter();
394
- }
395
- DispositionComponent.prototype.ngOnInit = function () {
396
- };
397
- DispositionComponent.prototype.submitDisposition = function () {
398
- this.selectedDisposition.emit({ 'dispositionid': this.selectedDispositionValue,
399
- dispositionName: this.disposition.get(this.selectedDispositionValue) });
400
- };
401
- return DispositionComponent;
402
- }());
403
- DispositionComponent.decorators = [
404
- { type: Component, args: [{
405
- selector: 'app-disposition',
406
- template: "<div class=\"reasonCodeModalFrame\">\n <div>\n <div>\n <label class=\"reasonCodeLabelStyle\">{{dispositionHeader}}</label>\n <br />\n <hr />\n </div>\n <ng-container *ngFor=\"let disp of disposition\">\n <div>\n <input [required]=\"!selectedDispositionValue\" type=\"radio\" name=\"disposition_name\" value=\"{{disp.key}}\" [(ngModel)]=\"selectedDispositionValue\"/>\n <label class=\"reasonCodeLabelStyle\">{{disp.value}}</label>\n </div>\n </ng-container>\n <p>\n <input type=\"image\" src=\"https://engage.contactcanvas.com/MSCRMToolbar/Images/voice_check_normal.png\" title=\"Submit Call Result\"\n (click)=\"submitDisposition()\" style='float:right; margin-right:20px; margin-bottom:10px; width:20px; height:20px' />\n </p>\n </div>\n</div>\n",
407
- 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}"]
408
- },] },
409
- ];
410
- DispositionComponent.ctorParameters = function () { return []; };
411
- DispositionComponent.propDecorators = {
412
- dispositionHeader: [{ type: Input }],
413
- disposition: [{ type: Input }],
414
- selectedDisposition: [{ type: Output }]
415
- };
416
- var ActivityComponent = /** @class */ (function () {
417
- function ActivityComponent() {
418
- this.ActivitySave = new EventEmitter();
419
- this.OnNameSelectChange = new EventEmitter();
420
- this.OnRelatedToChange = new EventEmitter();
421
- this.OnSubjectChange = new EventEmitter();
422
- this.OnCallNotesChange = new EventEmitter();
423
- this.isActivityMaximized = true;
424
- }
425
- ActivityComponent.prototype.ngOnInit = function () {
426
- };
427
- ActivityComponent.prototype.onNameSelectChange = function (event) {
428
- this.activity.WhoObject = this.getWho(event.currentTarget.value);
429
- this.OnNameSelectChange.emit(this.activity);
430
- };
431
- ActivityComponent.prototype.parseWhoObject = function (whoObject) {
432
- return whoObject.objectType + ': ' + whoObject.objectName;
433
- };
434
- ActivityComponent.prototype.parseWhatObject = function (whatObject) {
435
- return whatObject.objectType + ': ' + whatObject.objectName;
436
- };
437
- ActivityComponent.prototype.onRelatedToChange = function (event) {
438
- this.activity.WhatObject = this.getWhat(event.currentTarget.value);
439
- this.OnRelatedToChange.emit(this.activity);
440
- };
441
- ActivityComponent.prototype.onSubjectChange = function (event) {
442
- this.activity.Subject = event.srcElement.value;
443
- this.OnSubjectChange.emit(this.activity);
444
- };
445
- ActivityComponent.prototype.onCallNotesChange = function (event) {
446
- this.activity.Subject = event.srcElement.value.trim();
447
- this.OnCallNotesChange.emit(this.activity);
448
- };
449
- ActivityComponent.prototype.getWho = function (id) {
450
- for (var i = 0; i < this.activity.whoList.length; i++) {
451
- if (this.activity.whoList[i].objectId === id) {
452
- return this.activity.whoList[i];
453
- }
454
- }
455
- };
456
- ActivityComponent.prototype.getWhat = function (id) {
457
- for (var i = 0; i < this.activity.whatList.length; i++) {
458
- if (this.activity.whatList[i].objectId === id) {
459
- return this.activity.whatList[i];
460
- }
461
- }
462
- };
463
- ActivityComponent.prototype.loadQuickComment = function (value) {
464
- this.activity.Description = this.activity.Description + this.activity.quickCommentList[value];
465
- };
466
- ActivityComponent.prototype.activitySave = function (clearActivityFields) {
467
- this.ActivitySave.emit(this.activity);
468
- };
469
- return ActivityComponent;
470
- }());
471
- ActivityComponent.decorators = [
472
- { type: Component, args: [{
473
- selector: 'app-activity',
474
- template: "<div *ngIf=\"isActivityMaximized\" class=\"callDisplay\">\n <div class=\"editor callHeader\">\n <label class=\"headerLabel\">\n <b>Activity Information</b>\n </label>\n <img class=\"ViewResizeImage\" src=\"/assets/images/section_collapse.png\" (click)=\"isActivityMaximized = false\" title=\"Collapse\">\n </div>\n <div class=\"callBody\">\n <div class=\"activityFields\">\n <form>\n <div class=\"editor displayDiv\">\n <label class=\"displayLabels\" title=\"Call From\">{{activity.NameFieldName}}</label>\n <select class=\"dropDownListStyle displayData\" data-resetperactivity=\"false\" (change)=\"onNameSelectChange($event)\">\n <option *ngFor=\"let who of activity.whoList\" value=\"{{who.objectId}}\">{{parseWhoObject(who)}}</option>\n </select>\n </div>\n <div class=\"editor displayDiv\">\n <label class=\"displayLabels\" title=\"Related To\">{{activity.RelatedToFieldName}}</label>\n <select class=\"dropDownListStyle displayData\" (change)=\"onRelatedToChange($event)\" data-resetperactivity=\"false\">\n <option *ngFor=\"let what of activity.whatList\" value=\"{{what.objectId}}\">{{parseWhatObject(what)}}</option>\n </select>\n </div>\n <div class=\"editor displayDiv\">\n <label class=\"displayLabels\" title=\"Subject\">{{activity.SubjectFieldName}}</label>\n <input class=\"activitySubjectTextBoxStyle displayData\" (change)=\"onSubjectChange($event)\" title=\"{{activity.Subject}}\"\n type=\"text\" value=\"{{activity.Subject}}\">\n </div>\n <div class=\"editor displayDiv\">\n <div class=\"callNotesContainer\">\n <div class=\"textAreaDiv\">\n <textarea value=\"{{activity.Description}}\" placeholder=\"Click to add a comment\" class=\"activityCommentsTextBoxStyle\"\n (change)=\"onCallNotesChange($event)\" cols=\"20\" rows=\"2\" title=\"\"></textarea>\n </div>\n <div class=\"notesButtonBorder\">\n <div class=\"commentsButtonDiv\">\n <div class=\"quickCommentsDiv\">\n <input *ngFor=\"let quickComment of activity.quickCommentList ; let i = index;\" class=\"quickNotesBotton\" type=\"button\"\n value=\"{{i+1}}\" (click)=\"loadQuickComment(i)\" title=\"{{quickComment}}\">\n </div>\n <div class=\"submitDiv\">\n <input class=\"submitButton\" type=\"button\" value=\"Submit\" (click)=\"activitySave(false)\">\n </div>\n </div>\n </div>\n </div>\n </div>\n </form>\n </div>\n </div>\n</div>\n<div *ngIf=\"!isActivityMaximized\" class=\"callDisplay\">\n <div class=\"editor callHeader\">\n <label class=\"headerLabel\">\n <b>Activity Information</b>\n </label>\n <img class=\"ViewResizeImage\" src=\"assets/images/section_expand.png\" (click)=\"isActivityMaximized = true\" title=\"Expand\">\n </div>\n",
475
- 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}"]
476
- },] },
477
- ];
478
- ActivityComponent.ctorParameters = function () { return []; };
479
- ActivityComponent.propDecorators = {
480
- activity: [{ type: Input }],
481
- ActivitySave: [{ type: Output }],
482
- OnNameSelectChange: [{ type: Output }],
483
- OnRelatedToChange: [{ type: Output }],
484
- OnSubjectChange: [{ type: Output }],
485
- OnCallNotesChange: [{ type: Output }]
486
- };
487
- var UILibraryModule = /** @class */ (function () {
488
- function UILibraryModule(injector) {
489
- this.injector = injector;
490
- }
491
- UILibraryModule.prototype.ngDoBootstrap = function (app) {
492
- if (!customElements.get('amc-webcomponents-scenario')) {
493
- var strategyFactory = new ElementZoneStrategyFactory(ScenarioComponent, this.injector);
494
- customElements.define('amc-webcomponents-scenario', createCustomElement(ScenarioComponent, {
495
- injector: this.injector,
496
- strategyFactory: strategyFactory
497
- }));
498
- }
499
- if (!customElements.get('amc-webcomponents-disposition')) {
500
- var strategyFactory = new ElementZoneStrategyFactory(DispositionComponent, this.injector);
501
- customElements.define('amc-webcomponents-disposition', createCustomElement(DispositionComponent, {
502
- injector: this.injector,
503
- strategyFactory: strategyFactory
504
- }));
505
- }
506
- };
507
- return UILibraryModule;
508
- }());
509
- UILibraryModule.decorators = [
510
- { type: NgModule, args: [{
511
- imports: [BrowserModule, CommonModule, FormsModule],
512
- declarations: [
513
- InteractionComponent,
514
- ScenarioComponent,
515
- OperationComponent,
516
- PropertyComponent,
517
- HoldtimerComponent,
518
- DurationComponent,
519
- ChatBoxComponent,
520
- ChatMessageComponent,
521
- DispositionComponent,
522
- ActivityComponent
523
- ],
524
- entryComponents: [ScenarioComponent, DispositionComponent],
525
- bootstrap: [],
526
- exports: [ScenarioComponent]
527
- },] },
528
- ];
529
- UILibraryModule.ctorParameters = function () { return [
530
- { type: Injector }
531
- ]; };
532
-
533
- 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 };
534
- //# 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==
@@ -0,0 +1,11 @@
1
+ export function secondsToHms(seconds_in) {
2
+ seconds_in = Number(seconds_in);
3
+ var h = Math.floor(seconds_in / 3600);
4
+ var m = Math.floor(seconds_in % 3600 / 60);
5
+ var s = Math.floor(seconds_in % 3600 % 60);
6
+ var hDisplay = h > 0 ? h.toString() + ':' : '';
7
+ var mDisplay = m > 0 ? ('0' + m.toString()).slice(-2) + ':' : '00:';
8
+ var sDisplay = s > 0 ? ('0' + s.toString()).slice(-2) : '00';
9
+ return hDisplay + mDisplay + sDisplay;
10
+ }
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhbWMtdGVjaG5vbG9neS91aS1saWJyYXJ5LyIsInNvdXJjZXMiOlsicHJvamVjdHMvVUlMaWJyYXJ5L3NyYy9hcHAvSGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFVBQVUsWUFBWSxDQUFDLFVBQWtCO0lBQzdDLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEMsSUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDeEMsSUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLElBQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQztJQUU3QyxJQUFNLFFBQVEsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDakQsSUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDdEUsSUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUMvRCxPQUFPLFFBQVEsR0FBRyxRQUFRLEdBQUcsUUFBUSxDQUFDO0FBQ3hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gc2Vjb25kc1RvSG1zKHNlY29uZHNfaW46IG51bWJlcik6IHN0cmluZyB7XHJcbiAgc2Vjb25kc19pbiA9IE51bWJlcihzZWNvbmRzX2luKTtcclxuICBjb25zdCBoID0gTWF0aC5mbG9vcihzZWNvbmRzX2luIC8gMzYwMCk7XHJcbiAgY29uc3QgbSA9IE1hdGguZmxvb3Ioc2Vjb25kc19pbiAlIDM2MDAgLyA2MCk7XHJcbiAgY29uc3QgcyA9IE1hdGguZmxvb3Ioc2Vjb25kc19pbiAlIDM2MDAgJSA2MCk7XHJcblxyXG4gIGNvbnN0IGhEaXNwbGF5ID0gaCA+IDAgPyBoLnRvU3RyaW5nKCkgKyAnOicgOiAnJztcclxuICBjb25zdCBtRGlzcGxheSA9IG0gPiAwID8gKCcwJyArIG0udG9TdHJpbmcoKSkuc2xpY2UoLTIpICsgJzonIDogJzAwOic7XHJcbiAgY29uc3Qgc0Rpc3BsYXkgPSBzID4gMCA/ICgnMCcgKyBzLnRvU3RyaW5nKCkpLnNsaWNlKC0yKSA6ICcwMCc7XHJcbiAgcmV0dXJuIGhEaXNwbGF5ICsgbURpc3BsYXkgKyBzRGlzcGxheTtcclxufVxyXG4iXX0=