@colijnit/transaction 12.0.5 → 12.1.3

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 (81) hide show
  1. package/app/component/core/base/default-ok-cancel-buttons.component.d.ts +13 -0
  2. package/app/component/core/base/transaction-base.component.d.ts +48 -0
  3. package/app/component/{shopping-cart → core}/characteristic-answer/characteristic-answer.component.d.ts +0 -0
  4. package/app/component/core/directive/template-wrapper.directive.d.ts +13 -0
  5. package/app/component/{shopping-cart → core}/stock-status-indicator/stock-status-indicator.component.d.ts +0 -0
  6. package/app/component/core/warehouse/warehouse.component.d.ts +35 -0
  7. package/app/component/service-order/ione-service-order-module.d.ts +2 -0
  8. package/app/component/service-order/ione-service-order.component.d.ts +25 -0
  9. package/app/component/service-order/service-order.component.d.ts +53 -0
  10. package/app/component/service-order/summary/transaction-article-summary.component.d.ts +17 -0
  11. package/app/component/service-order/summary/transaction-delivery-summary.component.d.ts +20 -0
  12. package/app/component/service-order/summary/transaction-order-summary.component.d.ts +16 -0
  13. package/app/component/service-order/summary/transaction-payment-info.component.d.ts +14 -0
  14. package/app/component/service-order/summary/transaction-product-contract-summary.component.d.ts +7 -0
  15. package/app/component/service-order/summary/transaction-product-summary.component.d.ts +15 -0
  16. package/app/component/service-order/summary/transaction-service-status.component.d.ts +15 -0
  17. package/app/component/service-order/summary/transaction-service-summary.component.d.ts +15 -0
  18. package/app/component/service-order/summary/transaction-summary-block.component.d.ts +16 -0
  19. package/app/component/service-order/transaction-article-text/transaction-article-text.component.d.ts +24 -0
  20. package/app/component/service-order/transaction-header-block/transaction-header-block.component.d.ts +15 -0
  21. package/app/component/service-order/transaction-manager/transaction-manager.component.d.ts +63 -0
  22. package/app/component/service-order/transaction-order-line-view/transaction-order-line-view.component.d.ts +16 -0
  23. package/app/component/service-order/transaction-order-lines/transaction-order-lines.component.d.ts +25 -0
  24. package/app/component/service-order/transaction-order-totals/transaction-order-totals.component.d.ts +6 -0
  25. package/app/component/service-order/transaction-relation/transaction-relation-address.component.d.ts +22 -0
  26. package/app/component/service-order/transaction-relation/transaction-relation-edit.component.d.ts +29 -0
  27. package/app/component/service-order/transaction-sidebar/transaction-line-accordion.component.d.ts +11 -0
  28. package/app/component/service-order/transaction-sidebar/transaction-sidebar-right.component.d.ts +26 -0
  29. package/app/component/shopping-cart/shopping-cart-manager/shopping-cart-manager.component.d.ts +1 -1
  30. package/app/service/ione-connector-adapter.service.d.ts +1 -0
  31. package/app/service/transaction-event.service.d.ts +5 -0
  32. package/app/service/transaction.service.d.ts +19 -8
  33. package/bundles/colijnit-transaction.umd.js +2396 -63
  34. package/bundles/colijnit-transaction.umd.js.map +1 -1
  35. package/colijnit-transaction.d.ts +26 -2
  36. package/colijnit-transaction.metadata.json +1 -1
  37. package/esm2015/app/component/checkout/checkout-overview/checkout-overview.component.js +2 -2
  38. package/esm2015/app/component/checkout/ione-checkout.module.js +3 -3
  39. package/esm2015/app/component/common/icon/icon.component.js +2 -1
  40. package/esm2015/app/component/core/base/default-ok-cancel-buttons.component.js +39 -0
  41. package/esm2015/app/component/core/base/transaction-base.component.js +146 -0
  42. package/esm2015/app/component/core/characteristic-answer/characteristic-answer.component.js +100 -0
  43. package/esm2015/app/component/core/directive/template-wrapper.directive.js +69 -0
  44. package/esm2015/app/component/{shopping-cart → core}/stock-status-indicator/stock-status-indicator.component.js +1 -1
  45. package/esm2015/app/component/core/warehouse/warehouse.component.js +133 -0
  46. package/esm2015/app/component/service-order/ione-service-order-module.js +108 -0
  47. package/esm2015/app/component/service-order/ione-service-order.component.js +96 -0
  48. package/esm2015/app/component/service-order/service-order.component.js +195 -0
  49. package/esm2015/app/component/service-order/summary/transaction-article-summary.component.js +55 -0
  50. package/esm2015/app/component/service-order/summary/transaction-delivery-summary.component.js +59 -0
  51. package/esm2015/app/component/service-order/summary/transaction-order-summary.component.js +43 -0
  52. package/esm2015/app/component/service-order/summary/transaction-payment-info.component.js +35 -0
  53. package/esm2015/app/component/service-order/summary/transaction-product-contract-summary.component.js +38 -0
  54. package/esm2015/app/component/service-order/summary/transaction-product-summary.component.js +41 -0
  55. package/esm2015/app/component/service-order/summary/transaction-service-status.component.js +37 -0
  56. package/esm2015/app/component/service-order/summary/transaction-service-summary.component.js +38 -0
  57. package/esm2015/app/component/service-order/summary/transaction-summary-block.component.js +53 -0
  58. package/esm2015/app/component/service-order/transaction-article-text/transaction-article-text.component.js +194 -0
  59. package/esm2015/app/component/service-order/transaction-header-block/transaction-header-block.component.js +83 -0
  60. package/esm2015/app/component/service-order/transaction-manager/transaction-manager.component.js +305 -0
  61. package/esm2015/app/component/service-order/transaction-order-line-view/transaction-order-line-view.component.js +76 -0
  62. package/esm2015/app/component/service-order/transaction-order-lines/transaction-order-lines.component.js +71 -0
  63. package/esm2015/app/component/service-order/transaction-order-totals/transaction-order-totals.component.js +36 -0
  64. package/esm2015/app/component/service-order/transaction-relation/transaction-relation-address.component.js +116 -0
  65. package/esm2015/app/component/service-order/transaction-relation/transaction-relation-edit.component.js +225 -0
  66. package/esm2015/app/component/service-order/transaction-sidebar/transaction-line-accordion.component.js +172 -0
  67. package/esm2015/app/component/service-order/transaction-sidebar/transaction-sidebar-right.component.js +120 -0
  68. package/esm2015/app/component/shopping-cart/ione-shopping-cart.module.js +4 -6
  69. package/esm2015/app/component/shopping-cart/shopping-cart-line/shopping-cart-line.component.js +1 -1
  70. package/esm2015/app/component/shopping-cart/shopping-cart-manager/shopping-cart-manager.component.js +1 -1
  71. package/esm2015/app/service/ione-connector-adapter.service.js +24 -6
  72. package/esm2015/app/service/transaction-event.service.js +4 -1
  73. package/esm2015/app/service/transaction.service.js +122 -37
  74. package/esm2015/assets/dictionary/text.properties.js +37 -1
  75. package/esm2015/colijnit-transaction.js +27 -3
  76. package/esm2015/public_api.js +3 -1
  77. package/fesm2015/colijnit-transaction.js +2625 -50
  78. package/fesm2015/colijnit-transaction.js.map +1 -1
  79. package/package.json +3 -3
  80. package/public_api.d.ts +2 -0
  81. package/esm2015/app/component/shopping-cart/characteristic-answer/characteristic-answer.component.js +0 -99
@@ -0,0 +1,305 @@
1
+ import { __awaiter } from "tslib";
2
+ import { Component, EventEmitter, Output, ViewChild } from "@angular/core";
3
+ import { TransactionService } from "../../../service/transaction.service";
4
+ import { NumberUtils } from "@colijnit/transactionapi/build/utils/number-utils";
5
+ import { TransactionEventService } from "../../../service/transaction-event.service";
6
+ import { ResolvePendingLineReasonRequest } from "@colijnit/transactionapi/build/model/resolve-pending-reason-request.bo";
7
+ import { TransactionLineType } from "@colijnit/transactionapi/build/enum/transaction-line-type.enum";
8
+ import { PendingReasonType } from "@colijnit/transactionapi/build/enum/pending-reason-type.enum";
9
+ import { DictionaryService } from "../../../service/dictionary.service";
10
+ import { PositionGridRow } from "../../../../enum/position-grid-row.enum";
11
+ import { TransactionBaseComponent } from "../../core/base/transaction-base.component";
12
+ import { PromptService } from "@colijnit/corecomponents_v12";
13
+ export class TransactionManagerComponent extends TransactionBaseComponent {
14
+ constructor(service, transactionEvents, promptService, _dictionaryService) {
15
+ super(service);
16
+ this.service = service;
17
+ this.transactionEvents = transactionEvents;
18
+ this.promptService = promptService;
19
+ this._dictionaryService = _dictionaryService;
20
+ this.linesChanged = new EventEmitter();
21
+ this.articleAdded = new EventEmitter();
22
+ this.columns = [];
23
+ this._inOutCollection = [];
24
+ this._showCharacteristic = false;
25
+ this._subs = [];
26
+ this._subs.push(this.service.transactionLoaded.subscribe((transactionInfoResponse) => {
27
+ if (transactionInfoResponse.isSuccess) {
28
+ this.transaction = transactionInfoResponse;
29
+ }
30
+ }));
31
+ }
32
+ get amountOfLines() {
33
+ return NumberUtils.NrOrDefault(this.service.articleAmount, 0);
34
+ }
35
+ get showCharacteristicDialog() {
36
+ return this._showCharacteristic;
37
+ }
38
+ set showCharacteristicDialog(value) {
39
+ this._showCharacteristic = value;
40
+ }
41
+ ngOnDestroy() {
42
+ this._subs.forEach(sub => sub.unsubscribe());
43
+ }
44
+ addArticleLine(transactionUuid, sku, amount, lineNr, beforeOrAfter) {
45
+ return __awaiter(this, void 0, void 0, function* () {
46
+ const goodId = yield this.service.getGoodIdFromArticleNr(sku);
47
+ if (goodId) {
48
+ yield this._loadArticle(goodId);
49
+ yield this._handleAddArticleLineAt(amount, lineNr, beforeOrAfter);
50
+ }
51
+ else {
52
+ this.promptService.showError(this._dictionaryService.get("ARTICLE_UNKNOWN"));
53
+ }
54
+ });
55
+ }
56
+ changeLineSequence(fromIndex, toIndex) {
57
+ return __awaiter(this, void 0, void 0, function* () {
58
+ let fromLine = this._getTransactionLineInfoByIndex(fromIndex);
59
+ let toLine = this._getTransactionLineInfoByIndex(toIndex);
60
+ let aboveLineNr;
61
+ let belowLineNr;
62
+ if (fromIndex > toIndex) {
63
+ aboveLineNr = toLine.lineNr;
64
+ }
65
+ else {
66
+ belowLineNr = toLine.lineNr;
67
+ }
68
+ yield this.service.changeLineSequence(fromLine.uuid, aboveLineNr, belowLineNr, false)
69
+ .then((value) => {
70
+ this.handleLineOperationStatus(value);
71
+ }, (error) => this.promptService.showError(error));
72
+ });
73
+ }
74
+ showStockManager(line) {
75
+ return __awaiter(this, void 0, void 0, function* () {
76
+ this.warehouse.selectedWarehouseNr = line.warehouseNumber;
77
+ this.warehouse.amount = line.amount;
78
+ this.warehouse.commissionCode = line.commissionCode;
79
+ this.warehouse.message = this.currentOperationStatus.pendingReason;
80
+ this.warehouse.show(line.articleNumber);
81
+ });
82
+ }
83
+ warehouseOkClick() {
84
+ return __awaiter(this, void 0, void 0, function* () {
85
+ if (this.warehouse.commissionCode !== undefined) {
86
+ this.currentReason.commissionCode = this.warehouse.commissionCode;
87
+ }
88
+ if (this.warehouse.amount !== undefined) {
89
+ this.currentReason.quantity = this.warehouse.amount;
90
+ }
91
+ if (this.warehouse.selectedWarehouseNr !== undefined) {
92
+ this.currentReason.warehouseNr = this.warehouse.selectedWarehouseNr;
93
+ }
94
+ if (this.currentReason) {
95
+ yield this.service.resolvePendingLineReason(this.currentReason, false)
96
+ .then((value) => {
97
+ this.handleLineOperationStatus(value);
98
+ });
99
+ }
100
+ });
101
+ }
102
+ warehouseCancelClick() {
103
+ return __awaiter(this, void 0, void 0, function* () {
104
+ if (this.currentReason) {
105
+ yield this._cancelArticle(this.currentReason.lineUuid);
106
+ }
107
+ });
108
+ }
109
+ handleCharacteristicAnswerOkClick(answer) {
110
+ return __awaiter(this, void 0, void 0, function* () {
111
+ this.currentReason = new ResolvePendingLineReasonRequest(this.currentOperationStatus.uuid, this.currentOperationStatus.pendingReason, this.currentOperationStatus.pendingReasonType);
112
+ this.currentReason.textualUserInput = answer;
113
+ yield this.service.resolvePendingLineReason(this.currentReason, false)
114
+ .then((value) => {
115
+ this.handleLineOperationStatus(value);
116
+ });
117
+ });
118
+ }
119
+ _handleAddArticle(amount = 1) {
120
+ return __awaiter(this, void 0, void 0, function* () {
121
+ yield this.service.addTransactionLine(TransactionLineType.ArticleLine, this.newArticleNr, amount, this.newArticle.standardWareHouse, this.newArticle.commissionCode, false, 0, 0, false)
122
+ .then((value) => {
123
+ this.handleLineOperationStatus(value);
124
+ }, (error) => this.promptService.showError(error));
125
+ });
126
+ }
127
+ _handleAddArticleLineAt(amount, lineNr, beforeOrAfter) {
128
+ return __awaiter(this, void 0, void 0, function* () {
129
+ yield this.service.addArticleToTransaction(this.transactionInfo.uuid, this.newArticleNr, amount, this.newArticle.standardWareHouse, this.newArticle.commissionCode, false, beforeOrAfter === PositionGridRow.Before ? lineNr : undefined, beforeOrAfter === PositionGridRow.After ? lineNr : undefined)
130
+ .then((value) => {
131
+ this.lineOperationStatuses = value.lineOperationStatuses;
132
+ this.handleLineOperationStatus(value);
133
+ }, (error) => this.promptService.showError(error));
134
+ });
135
+ }
136
+ _getWareHouseNoFromArticle() {
137
+ if (this.newArticle !== undefined && this.newArticle.stockLocations !== undefined && this.newArticle.stockLocations.length) {
138
+ return this.newArticle.stockLocations[0].warehouseNr;
139
+ }
140
+ return 0;
141
+ }
142
+ isLineOperationStatus(lineOperationStatuses) {
143
+ this.currentOperationStatus = this.service.pendingLineOperationStatus(lineOperationStatuses);
144
+ if (this.currentOperationStatus !== undefined) {
145
+ return true;
146
+ }
147
+ return false;
148
+ }
149
+ _confirmAction() {
150
+ return __awaiter(this, void 0, void 0, function* () {
151
+ this.currentReason = new ResolvePendingLineReasonRequest(this.currentOperationStatus.uuid, this.currentOperationStatus.pendingReason, this.currentOperationStatus.pendingReasonType);
152
+ const pendingReasonText = yield this._getPendingReasonText(this.currentOperationStatus.pendingReason);
153
+ this.currentReason.confirmation = yield this.promptService.showYesNo(pendingReasonText, " ");
154
+ yield this.service.resolvePendingLineReason(this.currentReason, false)
155
+ .then((value) => {
156
+ this.handleLineOperationStatus(value);
157
+ });
158
+ });
159
+ }
160
+ _showInformation() {
161
+ return __awaiter(this, void 0, void 0, function* () {
162
+ this.currentReason = new ResolvePendingLineReasonRequest(this.currentOperationStatus.uuid, this.currentOperationStatus.pendingReason, this.currentOperationStatus.pendingReasonType);
163
+ const pendingReasonText = yield this._getPendingReasonText(this.currentOperationStatus.pendingReason);
164
+ yield this.promptService.showOkModal(pendingReasonText, " ");
165
+ yield this.service.resolvePendingLineReason(this.currentReason, false)
166
+ .then((value) => {
167
+ this.handleLineOperationStatus(value);
168
+ });
169
+ });
170
+ }
171
+ _getPendingReasonText(pendingReason) {
172
+ return __awaiter(this, void 0, void 0, function* () {
173
+ if (pendingReason === "ARTICLE_IS_DISCONTINUED_DO_YOU_WANT_TO_CONTINUE_PLEASE_CONFIRM") {
174
+ return this._dictionaryService.get("ARTICLE_IN_OUT_COLLECTION").replace("|~", yield this.getInOutCollectionOfArticle());
175
+ }
176
+ return this._dictionaryService.get(pendingReason);
177
+ });
178
+ }
179
+ getInOutCollectionOfArticle() {
180
+ return __awaiter(this, void 0, void 0, function* () {
181
+ if (!this._inOutCollection.length) {
182
+ this._inOutCollection = yield this.service.getInOutCollection("NL");
183
+ }
184
+ const domainValue = this._inOutCollection.find(element => element.code === this.newArticle.inOutCollection);
185
+ if (domainValue) {
186
+ return domainValue.description;
187
+ }
188
+ return "";
189
+ });
190
+ }
191
+ handleLineOperationStatus(lineOperationResponse) {
192
+ return __awaiter(this, void 0, void 0, function* () {
193
+ if (this.isLineOperationStatus(lineOperationResponse.lineOperationStatuses)) {
194
+ this.transaction = lineOperationResponse;
195
+ this.articleAdded.emit(this.transaction);
196
+ yield this._handlePendingLine(this.currentOperationStatus.uuid).then();
197
+ }
198
+ else {
199
+ yield this._saveTransaction();
200
+ }
201
+ });
202
+ }
203
+ _handlePendingLine(lineUuid) {
204
+ return __awaiter(this, void 0, void 0, function* () {
205
+ this.currentReason = new ResolvePendingLineReasonRequest(this.currentOperationStatus.uuid, this.currentOperationStatus.pendingReason, this.currentOperationStatus.pendingReasonType);
206
+ this.currentPendingLine = this.transactionLines.find(l => l.uuid === lineUuid);
207
+ switch (this.currentOperationStatus.pendingReasonType) {
208
+ case PendingReasonType.ABORTED:
209
+ case PendingReasonType.CANCELLED:
210
+ yield this._cancelArticle(this.currentPendingLine.uuid);
211
+ break;
212
+ case PendingReasonType.CONFIRMATION_NEEDED:
213
+ yield this._confirmAction();
214
+ break;
215
+ case PendingReasonType.INVALID_LOGISTICS:
216
+ yield this.showStockManager(this.currentPendingLine);
217
+ break;
218
+ case PendingReasonType.NON_CRITICAL_DISCONTINUATION:
219
+ yield this._showInformation();
220
+ break;
221
+ case PendingReasonType.CHARACTERISTICS_ANSWER_NEEDED:
222
+ this.CharacteristicsAnswerNeeded();
223
+ break;
224
+ case PendingReasonType.NONE:
225
+ default:
226
+ this.currentReason = undefined;
227
+ this.currentPendingLine = undefined;
228
+ break;
229
+ }
230
+ });
231
+ }
232
+ _saveTransaction() {
233
+ return __awaiter(this, void 0, void 0, function* () {
234
+ if (this.transactionInfo) {
235
+ const success = yield this.service.saveTransactionByUuid(this.transactionInfo.uuid);
236
+ if (!success) {
237
+ this.promptService.showError("Transaction could not be saved!");
238
+ }
239
+ }
240
+ });
241
+ }
242
+ _loadArticle(goodId) {
243
+ return __awaiter(this, void 0, void 0, function* () {
244
+ this.newArticle = yield this.service.getArticleFullObject(goodId);
245
+ this.newArticleNr = this.newArticle.articleNr;
246
+ });
247
+ }
248
+ addEmailAddressToTransaction(emailAddress) {
249
+ this.service.emailAddress = emailAddress;
250
+ }
251
+ CharacteristicsAnswerNeeded() {
252
+ this.characteristicAnswer.question = this.currentOperationStatus.characteristic.question;
253
+ this.characteristicAnswer.title = this.newArticle.description;
254
+ this.characteristicAnswer.value = this.currentOperationStatus.characteristic.value;
255
+ this.characteristicAnswer.characteristics = this.currentOperationStatus.characteristic.transactionLineCharacteristicChoices;
256
+ setTimeout(() => {
257
+ this.characteristicAnswer.open();
258
+ // eslint-disable-next-line no-magic-numbers
259
+ }, 1000);
260
+ }
261
+ _getTransactionLineInfoByIndex(index) {
262
+ if (index >= 0 && index < this.transactionLines.length) {
263
+ return this.service.currentLines[index];
264
+ }
265
+ }
266
+ _cancelArticle(uuid) {
267
+ return __awaiter(this, void 0, void 0, function* () {
268
+ yield this.service.cancelAddTransactionLine(uuid, false)
269
+ .then((response) => {
270
+ this.transaction = response;
271
+ this.articleAdded.emit(response);
272
+ });
273
+ });
274
+ }
275
+ }
276
+ TransactionManagerComponent.decorators = [
277
+ { type: Component, args: [{
278
+ // eslint-disable-next-line @angular-eslint/component-selector
279
+ selector: "transaction-manager",
280
+ template: `
281
+ <warehouse #warehouse
282
+ (okClick)="warehouseOkClick()"
283
+ (cancelClick)="warehouseCancelClick()"
284
+ ></warehouse>
285
+ <characteristic-answer
286
+ #characteristicAnswer
287
+ (okClick)="handleCharacteristicAnswerOkClick($event)"
288
+ ></characteristic-answer>
289
+ `,
290
+ styles: ["html,body{height:100%}body{margin:0;font-family:Roboto,\"Helvetica Neue\",sans-serif}.flex-center,.warehouse-line-container{display:flex}.flex-center,.warehouse-line-container{flex-direction:row}.flex-center{align-items:center!important;justify-content:center!important}::ng-deep #warehouseDialog ::ng-deep .form-content .message-field,.commission-fields{margin-left:11px}.triangle{border-radius:3px}.full-width{width:100%}.flex-center{margin:10px 0}::ng-deep #warehouseDialog{align-items:center;max-height:100%}::ng-deep #warehouseDialog ::ng-deep co-form{height:100%;width:500px}::ng-deep #warehouseDialog ::ng-deep .form-content{height:calc(100% - 80px);width:100%}::ng-deep #warehouseDialog ::ng-deep .form-content .message-field{height:20px;word-wrap:break-word;white-space:normal}co-button:not(:last-child){margin-right:10px}.commission-fields{justify-content:space-between;margin:10px 0}.warehouse-description-item{width:15rem}.warehouse-nr-item{width:5rem}co-input-number-picker co-button{max-width:20px}\n"]
291
+ },] }
292
+ ];
293
+ TransactionManagerComponent.ctorParameters = () => [
294
+ { type: TransactionService },
295
+ { type: TransactionEventService },
296
+ { type: PromptService },
297
+ { type: DictionaryService }
298
+ ];
299
+ TransactionManagerComponent.propDecorators = {
300
+ warehouse: [{ type: ViewChild, args: ["warehouse",] }],
301
+ characteristicAnswer: [{ type: ViewChild, args: ["characteristicAnswer",] }],
302
+ linesChanged: [{ type: Output }],
303
+ articleAdded: [{ type: Output }]
304
+ };
305
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tbWFuYWdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudC9zZXJ2aWNlLW9yZGVyL3RyYW5zYWN0aW9uLW1hbmFnZXIvdHJhbnNhY3Rpb24tbWFuYWdlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFhLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFDeEUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBRTlFLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBRW5GLE9BQU8sRUFBQywrQkFBK0IsRUFBQyxNQUFNLHdFQUF3RSxDQUFDO0FBQ3ZILE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGdFQUFnRSxDQUFDO0FBR25HLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDhEQUE4RCxDQUFDO0FBRS9GLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBRXRFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUV4RSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUdwRixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFpQjNELE1BQU0sT0FBTywyQkFBNEIsU0FBUSx3QkFBd0I7SUF3Q3ZFLFlBQ1MsT0FBMkIsRUFDM0IsaUJBQTBDLEVBQzFDLGFBQTRCLEVBQzVCLGtCQUFxQztRQUU1QyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFMUixZQUFPLEdBQVAsT0FBTyxDQUFvQjtRQUMzQixzQkFBaUIsR0FBakIsaUJBQWlC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QUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNqQyxDQUFDLENBQ0YsQ0FBQztRQUNOLENBQUM7S0FBQTs7O1lBaFVGLFNBQVMsU0FBQztnQkFDVCw4REFBOEQ7Z0JBQzlELFFBQVEsRUFBRSxxQkFBcUI7Z0JBQy9CLFFBQVEsRUFBRTs7Ozs7Ozs7O0dBU1Q7O2FBRUY7OztZQWxDTyxrQkFBa0I7WUFHbEIsdUJBQXVCO1lBZXZCLGFBQWE7WUFQYixpQkFBaUI7Ozt3QkF5QnRCLFNBQVMsU0FBQyxXQUFXO21DQUdyQixTQUFTLFNBQUMsc0JBQXNCOzJCQUdoQyxNQUFNOzJCQUdOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPbkRlc3Ryb3ksIE91dHB1dCwgVmlld0NoaWxkfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtUcmFuc2FjdGlvblNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLnNlcnZpY2VcIjtcbmltcG9ydCB7TnVtYmVyVXRpbHN9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvdXRpbHMvbnVtYmVyLXV0aWxzXCI7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7VHJhbnNhY3Rpb25FdmVudFNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLWV2ZW50LnNlcnZpY2VcIjtcbmltcG9ydCB7VHJhbnNhY3Rpb25MaW5lSW5mb30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1saW5lLWluZm8uYm9cIjtcbmltcG9ydCB7UmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uUmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9yZXNvbHZlLXBlbmRpbmctcmVhc29uLXJlcXVlc3QuYm9cIjtcbmltcG9ydCB7VHJhbnNhY3Rpb25MaW5lVHlwZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3RyYW5zYWN0aW9uLWxpbmUtdHlwZS5lbnVtXCI7XG5pbXBvcnQge0NvRG9tYWluVmFsdWV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvY28tZG9tYWluLXZhbHVlLmJvXCI7XG5pbXBvcnQge0xpbmVPcGVyYXRpb25TdGF0dXN9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvbGluZS1vcGVyYXRpb24tc3RhdHVzLmJvXCI7XG5pbXBvcnQge1BlbmRpbmdSZWFzb25UeXBlfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vcGVuZGluZy1yZWFzb24tdHlwZS5lbnVtXCI7XG5pbXBvcnQge0FydGljbGVGdWxsT2JqZWN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2FydGljbGUtZnVsbC1vYmplY3RcIjtcbmltcG9ydCB7RGljdGlvbmFyeVNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlL2RpY3Rpb25hcnkuc2VydmljZVwiO1xuaW1wb3J0IHtMaW5lT3BlcmF0aW9uUmVzcG9uc2V9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvbGluZS1vcGVyYXRpb24tcmVzcG9uc2UuYm9cIjtcbmltcG9ydCB7UG9zaXRpb25HcmlkUm93fSBmcm9tIFwiLi4vLi4vLi4vLi4vZW51bS9wb3NpdGlvbi1ncmlkLXJvdy5lbnVtXCI7XG5pbXBvcnQge0NoYXJhY3RlcmlzdGljQW5zd2VyQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vY29yZS9jaGFyYWN0ZXJpc3RpYy1hbnN3ZXIvY2hhcmFjdGVyaXN0aWMtYW5zd2VyLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtUcmFuc2FjdGlvbkJhc2VDb21wb25lbnR9IGZyb20gXCIuLi8uLi9jb3JlL2Jhc2UvdHJhbnNhY3Rpb24tYmFzZS5jb21wb25lbnRcIjtcbmltcG9ydCB7VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2V9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24taW5mby1yZXNwb25zZS5ib1wiO1xuaW1wb3J0IHtXYXJlaG91c2VDb21wb25lbnR9IGZyb20gXCIuLi8uLi9jb3JlL3dhcmVob3VzZS93YXJlaG91c2UuY29tcG9uZW50XCI7XG5pbXBvcnQge1Byb21wdFNlcnZpY2V9IGZyb20gXCJAY29saWpuaXQvY29yZWNvbXBvbmVudHNfdjEyXCI7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogXCJ0cmFuc2FjdGlvbi1tYW5hZ2VyXCIsXG4gIHRlbXBsYXRlOiBgXG4gICAgPHdhcmVob3VzZSAjd2FyZWhvdXNlXG4gICAgICAgIChva0NsaWNrKT1cIndhcmVob3VzZU9rQ2xpY2soKVwiXG4gICAgICAgIChjYW5jZWxDbGljayk9XCJ3YXJlaG91c2VDYW5jZWxDbGljaygpXCJcbiAgICA+PC93YXJlaG91c2U+XG4gICAgPGNoYXJhY3RlcmlzdGljLWFuc3dlclxuICAgICAgI2NoYXJhY3RlcmlzdGljQW5zd2VyXG4gICAgICAob2tDbGljayk9XCJoYW5kbGVDaGFyYWN0ZXJpc3RpY0Fuc3dlck9rQ2xpY2soJGV2ZW50KVwiXG4gICAgPjwvY2hhcmFjdGVyaXN0aWMtYW5zd2VyPlxuICBgLFxuICBzdHlsZVVybHM6IFtcIi4vdHJhbnNhY3Rpb24tbWFuYWdlci5jb21wb25lbnQuc2Nzc1wiXVxufSlcbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbk1hbmFnZXJDb21wb25lbnQgZXh0ZW5kcyBUcmFuc2FjdGlvbkJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKFwid2FyZWhvdXNlXCIpXG4gIHB1YmxpYyB3YXJlaG91c2U6IFdhcmVob3VzZUNvbXBvbmVudDtcblxuICBAVmlld0NoaWxkKFwiY2hhcmFjdGVyaXN0aWNBbnN3ZXJcIilcbiAgcHVibGljIGNoYXJhY3RlcmlzdGljQW5zd2VyOiBDaGFyYWN0ZXJpc3RpY0Fuc3dlckNvbXBvbmVudDtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIHJlYWRvbmx5IGxpbmVzQ2hhbmdlZDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcmVhZG9ubHkgYXJ0aWNsZUFkZGVkOiBFdmVudEVtaXR0ZXI8VHJhbnNhY3Rpb25JbmZvUmVzcG9uc2U+ID0gbmV3IEV2ZW50RW1pdHRlcjxUcmFuc2FjdGlvbkluZm9SZXNwb25zZT4oKTtcblxuICBwdWJsaWMgZ2V0IGFtb3VudE9mTGluZXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTnVtYmVyVXRpbHMuTnJPckRlZmF1bHQodGhpcy5zZXJ2aWNlLmFydGljbGVBbW91bnQsIDApO1xuICB9XG5cbiAgcHVibGljIGdldCBzaG93Q2hhcmFjdGVyaXN0aWNEaWFsb2coKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Nob3dDaGFyYWN0ZXJpc3RpYztcbiAgfVxuXG4gIHB1YmxpYyBzZXQgc2hvd0NoYXJhY3RlcmlzdGljRGlhbG9nKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc2hvd0NoYXJhY3RlcmlzdGljID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgbmV3QXJ0aWNsZU5yOiBzdHJpbmc7XG4gIHB1YmxpYyBuZXdBcnRpY2xlOiBBcnRpY2xlRnVsbE9iamVjdDtcbiAgcHVibGljIHNlbGVjdGVkV2FyZWhvdXNlTnI6IG51bWJlcjtcbiAgcHVibGljIGFtb3VudDogbnVtYmVyO1xuXG4gIHB1YmxpYyBjb2x1bW5zOiBhbnlbXSA9IFtdO1xuXG4gIHB1YmxpYyBjdXJyZW50UGVuZGluZ0xpbmU6IFRyYW5zYWN0aW9uTGluZUluZm87XG4gIHB1YmxpYyBjdXJyZW50UmVhc29uOiBSZXNvbHZlUGVuZGluZ0xpbmVSZWFzb25SZXF1ZXN0O1xuXG4gIHByaXZhdGUgY3VycmVudE9wZXJhdGlvblN0YXR1czogTGluZU9wZXJhdGlvblN0YXR1cztcbiAgcHJpdmF0ZSBfaW5PdXRDb2xsZWN0aW9uOiBDb0RvbWFpblZhbHVlW10gPSBbXTtcbiAgcHJpdmF0ZSBfc2hvd0NoYXJhY3RlcmlzdGljOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX3N1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHNlcnZpY2U6IFRyYW5zYWN0aW9uU2VydmljZSxcbiAgICBwdWJsaWMgdHJhbnNhY3Rpb25FdmVudHM6IFRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLFxuICAgIHB1YmxpYyBwcm9tcHRTZXJ2aWNlOiBQcm9tcHRTZXJ2aWNlLFxuICAgIHB1YmxpYyBfZGljdGlvbmFyeVNlcnZpY2U6IERpY3Rpb25hcnlTZXJ2aWNlLFxuICApIHtcbiAgICBzdXBlcihzZXJ2aWNlKTtcblxuICAgIHRoaXMuX3N1YnMucHVzaChcbiAgICAgIHRoaXMuc2VydmljZS50cmFuc2FjdGlvbkxvYWRlZC5zdWJzY3JpYmUoKHRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlOiBUcmFuc2FjdGlvbkluZm9SZXNwb25zZSkgPT4ge1xuICAgICAgICBpZiAodHJhbnNhY3Rpb25JbmZvUmVzcG9uc2UuaXNTdWNjZXNzKSB7XG4gICAgICAgICAgdGhpcy50cmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnMuZm9yRWFjaChzdWIgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFkZEFydGljbGVMaW5lKHRyYW5zYWN0aW9uVXVpZDogc3RyaW5nLCBza3U6IHN0cmluZywgYW1vdW50OiBudW1iZXIsIGxpbmVOcjogbnVtYmVyLCBiZWZvcmVPckFmdGVyOiBQb3NpdGlvbkdyaWRSb3cpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBnb29kSWQ6IG51bWJlciA9IGF3YWl0IHRoaXMuc2VydmljZS5nZXRHb29kSWRGcm9tQXJ0aWNsZU5yKHNrdSk7XG4gICAgaWYgKGdvb2RJZCkge1xuICAgICAgYXdhaXQgdGhpcy5fbG9hZEFydGljbGUoZ29vZElkKTtcbiAgICAgIGF3YWl0IHRoaXMuX2hhbmRsZUFkZEFydGljbGVMaW5lQXQoYW1vdW50LCBsaW5lTnIsIGJlZm9yZU9yQWZ0ZXIpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMucHJvbXB0U2VydmljZS5zaG93RXJyb3IodGhpcy5fZGljdGlvbmFyeVNlcnZpY2UuZ2V0KFwiQVJUSUNMRV9VTktOT1dOXCIpKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2hhbmdlTGluZVNlcXVlbmNlKGZyb21JbmRleDogbnVtYmVyLCB0b0luZGV4OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsZXQgZnJvbUxpbmU6IFRyYW5zYWN0aW9uTGluZUluZm8gPSB0aGlzLl9nZXRUcmFuc2FjdGlvbkxpbmVJbmZvQnlJbmRleChmcm9tSW5kZXgpXG4gICAgbGV0IHRvTGluZTogVHJhbnNhY3Rpb25MaW5lSW5mbyA9IHRoaXMuX2dldFRyYW5zYWN0aW9uTGluZUluZm9CeUluZGV4KHRvSW5kZXgpO1xuICAgIGxldCBhYm92ZUxpbmVOcjogbnVtYmVyO1xuICAgIGxldCBiZWxvd0xpbmVOcjogbnVtYmVyO1xuXG4gICAgaWYgKGZyb21JbmRleCA+IHRvSW5kZXgpIHtcbiAgICAgIGFib3ZlTGluZU5yID0gdG9MaW5lLmxpbmVOcjtcbiAgICB9IGVsc2Uge1xuICAgICAgYmVsb3dMaW5lTnIgPSB0b0xpbmUubGluZU5yO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuc2VydmljZS5jaGFuZ2VMaW5lU2VxdWVuY2UoZnJvbUxpbmUudXVpZCwgYWJvdmVMaW5lTnIsIGJlbG93TGluZU5yLCBmYWxzZSlcbiAgICAgIC50aGVuKCh2YWx1ZTogTGluZU9wZXJhdGlvblJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVMaW5lT3BlcmF0aW9uU3RhdHVzKHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGVycm9yKSA9PiB0aGlzLnByb21wdFNlcnZpY2Uuc2hvd0Vycm9yKGVycm9yKSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2hvd1N0b2NrTWFuYWdlcihsaW5lOiBUcmFuc2FjdGlvbkxpbmVJbmZvKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy53YXJlaG91c2Uuc2VsZWN0ZWRXYXJlaG91c2VOciA9IGxpbmUud2FyZWhvdXNlTnVtYmVyO1xuICAgIHRoaXMud2FyZWhvdXNlLmFtb3VudCA9IGxpbmUuYW1vdW50O1xuICAgIHRoaXMud2FyZWhvdXNlLmNvbW1pc3Npb25Db2RlID0gbGluZS5jb21taXNzaW9uQ29kZTtcbiAgICB0aGlzLndhcmVob3VzZS5tZXNzYWdlID0gdGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzLnBlbmRpbmdSZWFzb247XG4gICAgdGhpcy53YXJlaG91c2Uuc2hvdyhsaW5lLmFydGljbGVOdW1iZXIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHdhcmVob3VzZU9rQ2xpY2soKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMud2FyZWhvdXNlLmNvbW1pc3Npb25Db2RlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY3VycmVudFJlYXNvbi5jb21taXNzaW9uQ29kZSA9IHRoaXMud2FyZWhvdXNlLmNvbW1pc3Npb25Db2RlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLndhcmVob3VzZS5hbW91bnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jdXJyZW50UmVhc29uLnF1YW50aXR5ID0gdGhpcy53YXJlaG91c2UuYW1vdW50O1xuICAgIH1cblxuICAgIGlmICh0aGlzLndhcmVob3VzZS5zZWxlY3RlZFdhcmVob3VzZU5yICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY3VycmVudFJlYXNvbi53YXJlaG91c2VOciA9IHRoaXMud2FyZWhvdXNlLnNlbGVjdGVkV2FyZWhvdXNlTnI7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY3VycmVudFJlYXNvbikge1xuICAgICAgYXdhaXQgdGhpcy5zZXJ2aWNlLnJlc29sdmVQZW5kaW5nTGluZVJlYXNvbih0aGlzLmN1cnJlbnRSZWFzb24sIGZhbHNlKVxuICAgICAgICAudGhlbigodmFsdWU6IExpbmVPcGVyYXRpb25SZXNwb25zZSkgPT4ge1xuICAgICAgICAgIHRoaXMuaGFuZGxlTGluZU9wZXJhdGlvblN0YXR1cyh2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB3YXJlaG91c2VDYW5jZWxDbGljaygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5jdXJyZW50UmVhc29uKSB7XG4gICAgICBhd2FpdCB0aGlzLl9jYW5jZWxBcnRpY2xlKHRoaXMuY3VycmVudFJlYXNvbi5saW5lVXVpZCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGhhbmRsZUNoYXJhY3RlcmlzdGljQW5zd2VyT2tDbGljayhhbnN3ZXI6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuY3VycmVudFJlYXNvbiA9IG5ldyBSZXNvbHZlUGVuZGluZ0xpbmVSZWFzb25SZXF1ZXN0KHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cy51dWlkLCB0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMucGVuZGluZ1JlYXNvbiwgdGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzLnBlbmRpbmdSZWFzb25UeXBlKTtcbiAgICB0aGlzLmN1cnJlbnRSZWFzb24udGV4dHVhbFVzZXJJbnB1dCA9IGFuc3dlcjtcbiAgICBhd2FpdCB0aGlzLnNlcnZpY2UucmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uKHRoaXMuY3VycmVudFJlYXNvbiwgZmFsc2UpXG4gICAgICAudGhlbigodmFsdWU6IExpbmVPcGVyYXRpb25SZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZUxpbmVPcGVyYXRpb25TdGF0dXModmFsdWUpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9oYW5kbGVBZGRBcnRpY2xlKGFtb3VudDogbnVtYmVyID0gMSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuc2VydmljZS5hZGRUcmFuc2FjdGlvbkxpbmUoVHJhbnNhY3Rpb25MaW5lVHlwZS5BcnRpY2xlTGluZSxcbiAgICAgIHRoaXMubmV3QXJ0aWNsZU5yLFxuICAgICAgYW1vdW50LFxuICAgICAgdGhpcy5uZXdBcnRpY2xlLnN0YW5kYXJkV2FyZUhvdXNlLFxuICAgICAgdGhpcy5uZXdBcnRpY2xlLmNvbW1pc3Npb25Db2RlLFxuICAgICAgZmFsc2UsXG4gICAgICAwLFxuICAgICAgMCxcbiAgICAgIGZhbHNlKVxuICAgICAgLnRoZW4oKHZhbHVlOiBMaW5lT3BlcmF0aW9uUmVzcG9uc2UpID0+IHtcbiAgICAgICAgdGhpcy5oYW5kbGVMaW5lT3BlcmF0aW9uU3RhdHVzKHZhbHVlKTtcbiAgICAgIH0sXG4gICAgICAoZXJyb3IpID0+IHRoaXMucHJvbXB0U2VydmljZS5zaG93RXJyb3IoZXJyb3IpKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX2hhbmRsZUFkZEFydGljbGVMaW5lQXQoYW1vdW50OiBudW1iZXIsIGxpbmVOcjogbnVtYmVyLCBiZWZvcmVPckFmdGVyOiBQb3NpdGlvbkdyaWRSb3cpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnNlcnZpY2UuYWRkQXJ0aWNsZVRvVHJhbnNhY3Rpb24odGhpcy50cmFuc2FjdGlvbkluZm8udXVpZCxcbiAgICAgIHRoaXMubmV3QXJ0aWNsZU5yLFxuICAgICAgYW1vdW50LFxuICAgICAgdGhpcy5uZXdBcnRpY2xlLnN0YW5kYXJkV2FyZUhvdXNlLFxuICAgICAgdGhpcy5uZXdBcnRpY2xlLmNvbW1pc3Npb25Db2RlLFxuICAgICAgZmFsc2UsXG4gICAgICBiZWZvcmVPckFmdGVyID09PSBQb3NpdGlvbkdyaWRSb3cuQmVmb3JlID8gbGluZU5yIDogdW5kZWZpbmVkLFxuICAgICAgYmVmb3JlT3JBZnRlciA9PT0gUG9zaXRpb25HcmlkUm93LkFmdGVyID8gbGluZU5yIDogdW5kZWZpbmVkKVxuICAgICAgLnRoZW4oKHZhbHVlOiBMaW5lT3BlcmF0aW9uUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICB0aGlzLmxpbmVPcGVyYXRpb25TdGF0dXNlcyA9IHZhbHVlLmxpbmVPcGVyYXRpb25TdGF0dXNlcztcbiAgICAgICAgICB0aGlzLmhhbmRsZUxpbmVPcGVyYXRpb25TdGF0dXModmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgICAoZXJyb3IpID0+IHRoaXMucHJvbXB0U2VydmljZS5zaG93RXJyb3IoZXJyb3IpKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFdhcmVIb3VzZU5vRnJvbUFydGljbGUoKTogbnVtYmVyIHtcbiAgICBpZiAodGhpcy5uZXdBcnRpY2xlICE9PSB1bmRlZmluZWQgJiYgdGhpcy5uZXdBcnRpY2xlLnN0b2NrTG9jYXRpb25zICE9PSB1bmRlZmluZWQgJiYgdGhpcy5uZXdBcnRpY2xlLnN0b2NrTG9jYXRpb25zLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRoaXMubmV3QXJ0aWNsZS5zdG9ja0xvY2F0aW9uc1swXS53YXJlaG91c2VOcjtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBwdWJsaWMgaXNMaW5lT3BlcmF0aW9uU3RhdHVzKGxpbmVPcGVyYXRpb25TdGF0dXNlczogTGluZU9wZXJhdGlvblN0YXR1c1tdKTogYm9vbGVhbiB7XG4gICAgdGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzID0gdGhpcy5zZXJ2aWNlLnBlbmRpbmdMaW5lT3BlcmF0aW9uU3RhdHVzKGxpbmVPcGVyYXRpb25TdGF0dXNlcyk7XG4gICAgaWYgKHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfY29uZmlybUFjdGlvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmN1cnJlbnRSZWFzb24gPSBuZXcgUmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uUmVxdWVzdCh0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMudXVpZCwgdGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzLnBlbmRpbmdSZWFzb24sIHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cy5wZW5kaW5nUmVhc29uVHlwZSk7XG4gICAgY29uc3QgcGVuZGluZ1JlYXNvblRleHQ6IHN0cmluZyA9IGF3YWl0IHRoaXMuX2dldFBlbmRpbmdSZWFzb25UZXh0KHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cy5wZW5kaW5nUmVhc29uKTtcbiAgICB0aGlzLmN1cnJlbnRSZWFzb24uY29uZmlybWF0aW9uICA9IGF3YWl0IHRoaXMucHJvbXB0U2VydmljZS5zaG93WWVzTm8ocGVuZGluZ1JlYXNvblRleHQsIFwiIFwiKTtcbiAgICBhd2FpdCB0aGlzLnNlcnZpY2UucmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uKHRoaXMuY3VycmVudFJlYXNvbiwgZmFsc2UpXG4gICAgICAudGhlbigodmFsdWU6IExpbmVPcGVyYXRpb25SZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZUxpbmVPcGVyYXRpb25TdGF0dXModmFsdWUpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9zaG93SW5mb3JtYXRpb24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jdXJyZW50UmVhc29uID0gbmV3IFJlc29sdmVQZW5kaW5nTGluZVJlYXNvblJlcXVlc3QodGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzLnV1aWQsIHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cy5wZW5kaW5nUmVhc29uLCB0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMucGVuZGluZ1JlYXNvblR5cGUpO1xuICAgIGNvbnN0IHBlbmRpbmdSZWFzb25UZXh0OiBzdHJpbmcgPSBhd2FpdCB0aGlzLl9nZXRQZW5kaW5nUmVhc29uVGV4dCh0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMucGVuZGluZ1JlYXNvbik7XG4gICAgYXdhaXQgdGhpcy5wcm9tcHRTZXJ2aWNlLnNob3dPa01vZGFsKHBlbmRpbmdSZWFzb25UZXh0LCBcIiBcIik7XG4gICAgYXdhaXQgdGhpcy5zZXJ2aWNlLnJlc29sdmVQZW5kaW5nTGluZVJlYXNvbih0aGlzLmN1cnJlbnRSZWFzb24sIGZhbHNlKVxuICAgICAgLnRoZW4oKHZhbHVlOiBMaW5lT3BlcmF0aW9uUmVzcG9uc2UpID0+IHtcbiAgICAgICAgdGhpcy5oYW5kbGVMaW5lT3BlcmF0aW9uU3RhdHVzKHZhbHVlKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfZ2V0UGVuZGluZ1JlYXNvblRleHQocGVuZGluZ1JlYXNvbjogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBpZiAocGVuZGluZ1JlYXNvbiA9PT0gXCJBUlRJQ0xFX0lTX0RJU0NPTlRJTlVFRF9ET19ZT1VfV0FOVF9UT19DT05USU5VRV9QTEVBU0VfQ09ORklSTVwiKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZGljdGlvbmFyeVNlcnZpY2UuZ2V0KFwiQVJUSUNMRV9JTl9PVVRfQ09MTEVDVElPTlwiKS5yZXBsYWNlKFwifH5cIiwgYXdhaXQgdGhpcy5nZXRJbk91dENvbGxlY3Rpb25PZkFydGljbGUoKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9kaWN0aW9uYXJ5U2VydmljZS5nZXQocGVuZGluZ1JlYXNvbik7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldEluT3V0Q29sbGVjdGlvbk9mQXJ0aWNsZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGlmICghdGhpcy5faW5PdXRDb2xsZWN0aW9uLmxlbmd0aCkge1xuICAgICAgdGhpcy5faW5PdXRDb2xsZWN0aW9uID0gYXdhaXQgdGhpcy5zZXJ2aWNlLmdldEluT3V0Q29sbGVjdGlvbihcIk5MXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IGRvbWFpblZhbHVlOiBDb0RvbWFpblZhbHVlID0gdGhpcy5faW5PdXRDb2xsZWN0aW9uLmZpbmQoZWxlbWVudCA9PiBlbGVtZW50LmNvZGUgPT09IHRoaXMubmV3QXJ0aWNsZS5pbk91dENvbGxlY3Rpb24pO1xuICAgIGlmIChkb21haW5WYWx1ZSkge1xuICAgICAgcmV0dXJuIGRvbWFpblZhbHVlLmRlc2NyaXB0aW9uO1xuICAgIH1cbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVMaW5lT3BlcmF0aW9uU3RhdHVzKGxpbmVPcGVyYXRpb25SZXNwb25zZTogTGluZU9wZXJhdGlvblJlc3BvbnNlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuaXNMaW5lT3BlcmF0aW9uU3RhdHVzKGxpbmVPcGVyYXRpb25SZXNwb25zZS5saW5lT3BlcmF0aW9uU3RhdHVzZXMpKSB7XG4gICAgICB0aGlzLnRyYW5zYWN0aW9uID0gbGluZU9wZXJhdGlvblJlc3BvbnNlO1xuICAgICAgdGhpcy5hcnRpY2xlQWRkZWQuZW1pdCh0aGlzLnRyYW5zYWN0aW9uKTtcbiAgICAgIGF3YWl0IHRoaXMuX2hhbmRsZVBlbmRpbmdMaW5lKHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cy51dWlkKS50aGVuKCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgYXdhaXQgdGhpcy5fc2F2ZVRyYW5zYWN0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSAgYXN5bmMgX2hhbmRsZVBlbmRpbmdMaW5lKGxpbmVVdWlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmN1cnJlbnRSZWFzb24gPSBuZXcgUmVzb2x2ZVBlbmRpbmdMaW5lUmVhc29uUmVxdWVzdCh0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMudXVpZCwgdGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzLnBlbmRpbmdSZWFzb24sIHRoaXMuY3VycmVudE9wZXJhdGlvblN0YXR1cy5wZW5kaW5nUmVhc29uVHlwZSk7XG4gICAgdGhpcy5jdXJyZW50UGVuZGluZ0xpbmUgPSB0aGlzLnRyYW5zYWN0aW9uTGluZXMuZmluZChsID0+IGwudXVpZCA9PT0gbGluZVV1aWQpO1xuXG4gICAgc3dpdGNoICh0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMucGVuZGluZ1JlYXNvblR5cGUpIHtcbiAgICAgIGNhc2UgUGVuZGluZ1JlYXNvblR5cGUuQUJPUlRFRDpcbiAgICAgIGNhc2UgUGVuZGluZ1JlYXNvblR5cGUuQ0FOQ0VMTEVEOlxuICAgICAgICBhd2FpdCB0aGlzLl9jYW5jZWxBcnRpY2xlKHRoaXMuY3VycmVudFBlbmRpbmdMaW5lLnV1aWQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUGVuZGluZ1JlYXNvblR5cGUuQ09ORklSTUFUSU9OX05FRURFRDpcbiAgICAgICAgYXdhaXQgdGhpcy5fY29uZmlybUFjdGlvbigpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUGVuZGluZ1JlYXNvblR5cGUuSU5WQUxJRF9MT0dJU1RJQ1M6XG4gICAgICAgIGF3YWl0IHRoaXMuc2hvd1N0b2NrTWFuYWdlcih0aGlzLmN1cnJlbnRQZW5kaW5nTGluZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBQZW5kaW5nUmVhc29uVHlwZS5OT05fQ1JJVElDQUxfRElTQ09OVElOVUFUSU9OOlxuICAgICAgICBhd2FpdCB0aGlzLl9zaG93SW5mb3JtYXRpb24oKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFBlbmRpbmdSZWFzb25UeXBlLkNIQVJBQ1RFUklTVElDU19BTlNXRVJfTkVFREVEOlxuICAgICAgICB0aGlzLkNoYXJhY3RlcmlzdGljc0Fuc3dlck5lZWRlZCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUGVuZGluZ1JlYXNvblR5cGUuTk9ORTpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuY3VycmVudFJlYXNvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5jdXJyZW50UGVuZGluZ0xpbmUgPSB1bmRlZmluZWQ7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX3NhdmVUcmFuc2FjdGlvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy50cmFuc2FjdGlvbkluZm8pIHtcbiAgICAgIGNvbnN0IHN1Y2Nlc3MgPSBhd2FpdCB0aGlzLnNlcnZpY2Uuc2F2ZVRyYW5zYWN0aW9uQnlVdWlkKHRoaXMudHJhbnNhY3Rpb25JbmZvLnV1aWQpO1xuICAgICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICAgIHRoaXMucHJvbXB0U2VydmljZS5zaG93RXJyb3IoXCJUcmFuc2FjdGlvbiBjb3VsZCBub3QgYmUgc2F2ZWQhXCIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX2xvYWRBcnRpY2xlKGdvb2RJZDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5uZXdBcnRpY2xlID0gYXdhaXQgdGhpcy5zZXJ2aWNlLmdldEFydGljbGVGdWxsT2JqZWN0KGdvb2RJZCk7XG4gICAgdGhpcy5uZXdBcnRpY2xlTnIgPSB0aGlzLm5ld0FydGljbGUuYXJ0aWNsZU5yO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRFbWFpbEFkZHJlc3NUb1RyYW5zYWN0aW9uKGVtYWlsQWRkcmVzczogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZXJ2aWNlLmVtYWlsQWRkcmVzcyA9IGVtYWlsQWRkcmVzcztcbiAgfVxuXG4gIHByaXZhdGUgQ2hhcmFjdGVyaXN0aWNzQW5zd2VyTmVlZGVkKCk6IHZvaWQge1xuICAgIHRoaXMuY2hhcmFjdGVyaXN0aWNBbnN3ZXIucXVlc3Rpb24gPSB0aGlzLmN1cnJlbnRPcGVyYXRpb25TdGF0dXMuY2hhcmFjdGVyaXN0aWMucXVlc3Rpb247XG4gICAgdGhpcy5jaGFyYWN0ZXJpc3RpY0Fuc3dlci50aXRsZSA9IHRoaXMubmV3QXJ0aWNsZS5kZXNjcmlwdGlvbjtcbiAgICB0aGlzLmNoYXJhY3RlcmlzdGljQW5zd2VyLnZhbHVlID0gdGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzLmNoYXJhY3RlcmlzdGljLnZhbHVlO1xuICAgIHRoaXMuY2hhcmFjdGVyaXN0aWNBbnN3ZXIuY2hhcmFjdGVyaXN0aWNzID0gdGhpcy5jdXJyZW50T3BlcmF0aW9uU3RhdHVzLmNoYXJhY3RlcmlzdGljLnRyYW5zYWN0aW9uTGluZUNoYXJhY3RlcmlzdGljQ2hvaWNlcztcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5jaGFyYWN0ZXJpc3RpY0Fuc3dlci5vcGVuKCk7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgIH0sIDEwMDApO1xuXG4gIH1cblxuICBwcml2YXRlIF9nZXRUcmFuc2FjdGlvbkxpbmVJbmZvQnlJbmRleChpbmRleDogbnVtYmVyKTogVHJhbnNhY3Rpb25MaW5lSW5mbyB7XG4gICAgaWYgKGluZGV4ID49IDAgJiYgaW5kZXggPCB0aGlzLnRyYW5zYWN0aW9uTGluZXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmN1cnJlbnRMaW5lc1tpbmRleF1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9jYW5jZWxBcnRpY2xlKHV1aWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuc2VydmljZS5jYW5jZWxBZGRUcmFuc2FjdGlvbkxpbmUodXVpZCwgZmFsc2UpXG4gICAgICAudGhlbigocmVzcG9uc2U6IFRyYW5zYWN0aW9uSW5mb1Jlc3BvbnNlKSA9PiB7XG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb24gPSByZXNwb25zZTtcbiAgICAgICAgdGhpcy5hcnRpY2xlQWRkZWQuZW1pdChyZXNwb25zZSk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,76 @@
1
+ import { __awaiter } from "tslib";
2
+ import { Component, Input } from "@angular/core";
3
+ import { StockStatus } from "@colijnit/transactionapi/build/enum/refcode/stock-status.enum";
4
+ import { TransactionEventService } from "../../../service/transaction-event.service";
5
+ import { TransactionService } from "../../../service/transaction.service";
6
+ export class TransactionOrderLineViewComponent {
7
+ constructor(_service, _eventService) {
8
+ this._service = _service;
9
+ this._eventService = _eventService;
10
+ this.stock = StockStatus.Low;
11
+ }
12
+ ngOnInit() {
13
+ this._loadArticleImage();
14
+ }
15
+ _loadArticleImage() {
16
+ return __awaiter(this, void 0, void 0, function* () {
17
+ if (this.line) {
18
+ this.image = this.line ? yield this._service.retrieveLineImage(this.line) : undefined;
19
+ }
20
+ });
21
+ }
22
+ transactionLineClick(line) {
23
+ this._eventService.transactionLineClicked.next(this.line);
24
+ }
25
+ }
26
+ TransactionOrderLineViewComponent.decorators = [
27
+ { type: Component, args: [{
28
+ // eslint-disable-next-line @angular-eslint/component-selector
29
+ selector: "transaction-order-line-view",
30
+ template: `
31
+ <div class="transaction-order-line-r" fxFlex (click)="transactionLineClick(line)">
32
+ <div fxLayout="row" class="full-width">
33
+ <div fxLayout="column" class="transaction-order-line-description" fxLayoutGap="20px">
34
+ <div fxLayout="row" fxLayoutGap="10px">
35
+ <span [textContent]="line.goodDescription" class="cart-line-description-main"></span>
36
+ <span *ngIf="line.goodDescription && line.articleNumber">|</span>
37
+ <span [textContent]="line.articleNumber" class="cart-line-description-artnr"></span>
38
+ </div>
39
+ <div>
40
+ <span [innerHTML]="line.configurationReadable" class="cart-line-description-detail"></span>
41
+ </div>
42
+ </div>
43
+ <div fxLayout="column" class="transaction-order-line-image">
44
+ <image-display [model]="image"></image-display>
45
+ </div>
46
+ </div>
47
+ <div fxLayout="row" class="transaction-order-line-right">
48
+ <div fxLayout="column" class="transaction-order-line-stock">
49
+ <span [textContent]="'STOCK' | localize" class="small-font"></span>
50
+ <stock-status-indicator [model]="stock"></stock-status-indicator>
51
+ <span [textContent]="'DELIVERY_TIME_PERIOD' | localize" class="small-font"></span>
52
+ <span [textContent]="line.deliveryDate | deliveryTime"></span>
53
+ </div>
54
+ <div class="transaction-order-line-amount">
55
+ <co-input-number-picker
56
+ class="horizontal"
57
+ [(model)]="line.amount" [min]="0" [buttonShowMode]="'always'"
58
+ [readonly]="true"></co-input-number-picker>
59
+ </div>
60
+ <div class="transaction-order-line-totals">
61
+ <span [textContent]="line.netLineTotal | coCurrency: true"></span>
62
+ </div>
63
+ </div>
64
+ </div>
65
+ `,
66
+ styles: ["html,body{height:100%}body{margin:0;font-family:Roboto,\"Helvetica Neue\",sans-serif}.transaction-order-line-r .transaction-order-line-description .cart-line-description-artnr{font-size:10px}.flex-center{display:flex}.flex-center{flex-direction:row}.flex-center{align-items:center!important;justify-content:center!important}.transaction-order-line-r .transaction-order-line-description,.transaction-order-line-r .transaction-order-line-right .transaction-order-line-amount,.transaction-order-line-r .transaction-order-line-image,.transaction-order-line-r .transaction-order-line-right .transaction-order-line-stock,.transaction-order-line-r .transaction-order-line-right .transaction-order-line-totals{margin-top:20px}.transaction-order-line-r .transaction-order-line-description,.transaction-order-line-r .transaction-order-line-right .transaction-order-line-amount,.transaction-order-line-r .transaction-order-line-image,.transaction-order-line-r .transaction-order-line-right .transaction-order-line-stock,.transaction-order-line-r .transaction-order-line-right .transaction-order-line-totals{margin-bottom:20px}.transaction-order-line-r .transaction-order-line-description,.transaction-order-line-r .transaction-order-line-right .transaction-order-line-amount,.transaction-order-line-r .transaction-order-line-right .transaction-order-line-totals{margin-left:20px}.transaction-order-line-r .transaction-order-line-description,.transaction-order-line-r .transaction-order-line-right .transaction-order-line-amount{margin-right:20px}.triangle{border-radius:3px}.full-width{width:100%}.flex-center{margin:10px 0}:host{display:block;padding:20px}:host ::ng-deep collapseable{width:100%!important}.horizontal{display:flex;flex-direction:row}.service-request-button-wrapper{display:flex;justify-content:center;margin-top:20px}.transaction-order-line-r{display:flex;justify-content:stretch;flex-direction:row}@media (max-width: 800px){.transaction-order-line-r{flex-direction:column}}.transaction-order-line-r .transaction-order-line-image{display:flex;flex:1 0 auto!important;flex-direction:column;align-items:center;justify-content:center;padding-right:10px}.transaction-order-line-r .transaction-order-line-image image-display{width:6em;height:6em}.transaction-order-line-r .transaction-order-line-image ::ng-deep no-image-display{display:none}.transaction-order-line-r .transaction-order-line-description{display:flex;flex-direction:column;width:auto;max-width:355px;margin-left:10px}.transaction-order-line-r .transaction-order-line-description .cart-line-description-main{font-weight:bold}.transaction-order-line-r .transaction-order-line-right{justify-content:flex-end;align-items:center}.transaction-order-line-r .transaction-order-line-right .transaction-order-line-stock{width:10em}.transaction-order-line-r .transaction-order-line-right .transaction-order-line-amount{width:15em}.transaction-order-line-r .transaction-order-line-right .transaction-order-line-totals{display:flex;justify-content:flex-end;min-width:100px;font-weight:bold}.transaction-order-line-r .transaction-order-line-right .transaction-order-line-totals span{text-align:right}\n"]
67
+ },] }
68
+ ];
69
+ TransactionOrderLineViewComponent.ctorParameters = () => [
70
+ { type: TransactionService },
71
+ { type: TransactionEventService }
72
+ ];
73
+ TransactionOrderLineViewComponent.propDecorators = {
74
+ line: [{ type: Input }]
75
+ };
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tb3JkZXItbGluZS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50L3NlcnZpY2Utb3JkZXIvdHJhbnNhY3Rpb24tb3JkZXItbGluZS12aWV3L3RyYW5zYWN0aW9uLW9yZGVyLWxpbmUtdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBRXZELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSwrREFBK0QsQ0FBQztBQUMxRixPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQTZDeEUsTUFBTSxPQUFPLGlDQUFpQztJQVcxQyxZQUNZLFFBQTRCLEVBQzVCLGFBQXNDO1FBRHRDLGFBQVEsR0FBUixRQUFRLENBQW9CO1FBQzVCLGtCQUFhLEdBQWIsYUFBYSxDQUF5QjtRQVQzQyxVQUFLLEdBQWdCLFdBQVcsQ0FBQyxHQUFHLENBQUM7SUFXNUMsQ0FBQztJQVJNLFFBQVE7UUFDWCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBUWEsaUJBQWlCOztZQUMzQixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7YUFDdkY7UUFDTCxDQUFDO0tBQUE7SUFFTSxvQkFBb0IsQ0FBQyxJQUF5QjtRQUNqRCxJQUFJLENBQUMsYUFBYSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUQsQ0FBQzs7O1lBcEVKLFNBQVMsU0FBQztnQkFDVCw4REFBOEQ7Z0JBQzVELFFBQVEsRUFBRSw2QkFBNkI7Z0JBQ3ZDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FtQ1Q7O2FBSUo7OztZQTVDTyxrQkFBa0I7WUFEbEIsdUJBQXVCOzs7bUJBK0MxQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIElucHV0LCBPbkluaXR9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25MaW5lSW5mb30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1saW5lLWluZm8uYm9cIjtcclxuaW1wb3J0IHtTdG9ja1N0YXR1c30gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3JlZmNvZGUvc3RvY2stc3RhdHVzLmVudW1cIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkV2ZW50U2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24tZXZlbnQuc2VydmljZVwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24uc2VydmljZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcclxuICAgIHNlbGVjdG9yOiBcInRyYW5zYWN0aW9uLW9yZGVyLWxpbmUtdmlld1wiLFxyXG4gICAgdGVtcGxhdGU6IGBcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zYWN0aW9uLW9yZGVyLWxpbmUtclwiIGZ4RmxleCAoY2xpY2spPVwidHJhbnNhY3Rpb25MaW5lQ2xpY2sobGluZSlcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBjbGFzcz1cImZ1bGwtd2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgY2xhc3M9XCJ0cmFuc2FjdGlvbi1vcmRlci1saW5lLWRlc2NyaXB0aW9uXCIgZnhMYXlvdXRHYXA9XCIyMHB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjEwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFt0ZXh0Q29udGVudF09XCJsaW5lLmdvb2REZXNjcmlwdGlvblwiIGNsYXNzPVwiY2FydC1saW5lLWRlc2NyaXB0aW9uLW1haW5cIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxpbmUuZ29vZERlc2NyaXB0aW9uICYmIGxpbmUuYXJ0aWNsZU51bWJlclwiPnw8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbdGV4dENvbnRlbnRdPVwibGluZS5hcnRpY2xlTnVtYmVyXCIgY2xhc3M9XCJjYXJ0LWxpbmUtZGVzY3JpcHRpb24tYXJ0bnJcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJsaW5lLmNvbmZpZ3VyYXRpb25SZWFkYWJsZVwiIGNsYXNzPVwiY2FydC1saW5lLWRlc2NyaXB0aW9uLWRldGFpbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGNsYXNzPVwidHJhbnNhY3Rpb24tb3JkZXItbGluZS1pbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1hZ2UtZGlzcGxheSBbbW9kZWxdPVwiaW1hZ2VcIj48L2ltYWdlLWRpc3BsYXk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBjbGFzcz1cInRyYW5zYWN0aW9uLW9yZGVyLWxpbmUtcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgY2xhc3M9XCJ0cmFuc2FjdGlvbi1vcmRlci1saW5lLXN0b2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFt0ZXh0Q29udGVudF09XCInU1RPQ0snIHwgbG9jYWxpemVcIiBjbGFzcz1cInNtYWxsLWZvbnRcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdG9jay1zdGF0dXMtaW5kaWNhdG9yIFttb2RlbF09XCJzdG9ja1wiPjwvc3RvY2stc3RhdHVzLWluZGljYXRvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW3RleHRDb250ZW50XT1cIidERUxJVkVSWV9USU1FX1BFUklPRCcgfCBsb2NhbGl6ZVwiIGNsYXNzPVwic21hbGwtZm9udFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW3RleHRDb250ZW50XT1cImxpbmUuZGVsaXZlcnlEYXRlIHwgZGVsaXZlcnlUaW1lXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2FjdGlvbi1vcmRlci1saW5lLWFtb3VudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGNvLWlucHV0LW51bWJlci1waWNrZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJob3Jpem9udGFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwibGluZS5hbW91bnRcIiBbbWluXT1cIjBcIiBbYnV0dG9uU2hvd01vZGVdPVwiJ2Fsd2F5cydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwidHJ1ZVwiPjwvY28taW5wdXQtbnVtYmVyLXBpY2tlcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJhbnNhY3Rpb24tb3JkZXItbGluZS10b3RhbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW3RleHRDb250ZW50XT1cImxpbmUubmV0TGluZVRvdGFsIHwgY29DdXJyZW5jeTogdHJ1ZVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgIGAsXHJcbiAgICBzdHlsZVVybHM6IFtcclxuICAgICAgICBcIi4vdHJhbnNhY3Rpb24tb3JkZXItbGluZS12aWV3LmNvbXBvbmVudC5zY3NzXCJcclxuICAgIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uT3JkZXJMaW5lVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGxpbmU6IFRyYW5zYWN0aW9uTGluZUluZm87XHJcblxyXG4gICAgcHVibGljIHN0b2NrOiBTdG9ja1N0YXR1cyA9IFN0b2NrU3RhdHVzLkxvdztcclxuICAgIHB1YmxpYyBpbWFnZTogc3RyaW5nO1xyXG5cclxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9sb2FkQXJ0aWNsZUltYWdlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBfc2VydmljZTogVHJhbnNhY3Rpb25TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2V2ZW50U2VydmljZTogVHJhbnNhY3Rpb25FdmVudFNlcnZpY2UsXHJcbiAgICApIHtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFzeW5jIF9sb2FkQXJ0aWNsZUltYWdlKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIGlmICh0aGlzLmxpbmUpIHtcclxuICAgICAgICAgIHRoaXMuaW1hZ2UgPSB0aGlzLmxpbmUgPyBhd2FpdCB0aGlzLl9zZXJ2aWNlLnJldHJpZXZlTGluZUltYWdlKHRoaXMubGluZSkgOiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB0cmFuc2FjdGlvbkxpbmVDbGljayhsaW5lOiBUcmFuc2FjdGlvbkxpbmVJbmZvKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fZXZlbnRTZXJ2aWNlLnRyYW5zYWN0aW9uTGluZUNsaWNrZWQubmV4dCh0aGlzLmxpbmUpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,71 @@
1
+ import { Component, EventEmitter, Output, ViewChild } from "@angular/core";
2
+ import { DictionaryService } from "../../../service/dictionary.service";
3
+ import { TransactionEventService } from "../../../service/transaction-event.service";
4
+ import { TransactionService } from "../../../service/transaction.service";
5
+ import { TransactionBaseComponent } from "../../core/base/transaction-base.component";
6
+ export class TransactionOrderLinesComponent extends TransactionBaseComponent {
7
+ constructor(service, _eventService, _dictionaryService) {
8
+ super(service);
9
+ this.service = service;
10
+ this._eventService = _eventService;
11
+ this._dictionaryService = _dictionaryService;
12
+ this.createServiceClick = new EventEmitter();
13
+ this.nothingSelected = true;
14
+ this.columns = [];
15
+ this.columns.push({ field: "articleNumber", headerText: this._dictionaryService.get("ARTICLE_NR"), allowFiltering: false }, { field: "goodDescription", headerText: this._dictionaryService.get("DESCRIPTION") }, { field: "detailsAsString", headerText: this._dictionaryService.get("DETAILS") }, { field: "price", headerText: this._dictionaryService.get("PRICE") }, { field: "amount", headerText: this._dictionaryService.get("NUMBER") }, { field: "lineTotal", headerText: this._dictionaryService.get("SUBTOTAL") }, { field: "logisticState", headerText: this._dictionaryService.get("STATE") }, { field: "expectedDeliveryDate", headerText: this._dictionaryService.get("EXPECTED_DELIVERY_DATE") });
16
+ }
17
+ get pagingEnabled() {
18
+ if (this.transactionLines) {
19
+ return this.transactionLines.length >= TransactionOrderLinesComponent.MAX_TRANSACTION_LINES;
20
+ }
21
+ return false;
22
+ }
23
+ set selectedTransLine(value) {
24
+ this._selectedTransLine = value;
25
+ this.nothingSelected = this._selectedTransLine === null;
26
+ }
27
+ get selectedTransLine() {
28
+ return this._selectedTransLine;
29
+ }
30
+ onRowClick(row) {
31
+ this.selectedTransLine = row;
32
+ this._eventService.transactionLineClicked.next(this.selectedTransLine);
33
+ }
34
+ onRowDeselect(event) {
35
+ this.selectedTransLine = null;
36
+ }
37
+ // TODO: navragen wat de bedoeling is, zie originele source iOneJS
38
+ newServiceRequestClick() {
39
+ if (this.nothingSelected) {
40
+ return;
41
+ }
42
+ this.createServiceClick.emit(this._selectedTransLine);
43
+ }
44
+ }
45
+ TransactionOrderLinesComponent.MAX_TRANSACTION_LINES = 20;
46
+ TransactionOrderLinesComponent.decorators = [
47
+ { type: Component, args: [{
48
+ // eslint-disable-next-line @angular-eslint/component-selector
49
+ selector: "transaction-order-lines",
50
+ template: `
51
+ <co-grid #transactionGrid
52
+ [data]="transactionLines"
53
+ [columns]="columns"
54
+ [pagingEnabled]="pagingEnabled"
55
+ [maxNumberOfRows]="'20'"
56
+ (rowsSelected)="onRowClick($event)"
57
+ ></co-grid>
58
+ `,
59
+ styles: ["html,body{height:100%}body{margin:0;font-family:Roboto,\"Helvetica Neue\",sans-serif}.transaction-order-line-r .transaction-order-line-description .cart-line-description-artnr{font-size:10px}.flex-center{display:flex}.flex-center{flex-direction:row}.flex-center{align-items:center!important;justify-content:center!important}.transaction-order-line-r .transaction-order-line-description,.transaction-order-line-r .transaction-order-line-right .transaction-order-line-amount,.transaction-order-line-r .transaction-order-line-image,.transaction-order-line-r .transaction-order-line-right .transaction-order-line-stock,.transaction-order-line-r .transaction-order-line-right .transaction-order-line-totals{margin-top:20px}.transaction-order-line-r .transaction-order-line-description,.transaction-order-line-r .transaction-order-line-right .transaction-order-line-amount,.transaction-order-line-r .transaction-order-line-image,.transaction-order-line-r .transaction-order-line-right .transaction-order-line-stock,.transaction-order-line-r .transaction-order-line-right .transaction-order-line-totals{margin-bottom:20px}.transaction-order-line-r .transaction-order-line-description,.transaction-order-line-r .transaction-order-line-right .transaction-order-line-amount,.transaction-order-line-r .transaction-order-line-right .transaction-order-line-totals{margin-left:20px}.transaction-order-line-r .transaction-order-line-description,.transaction-order-line-r .transaction-order-line-right .transaction-order-line-amount{margin-right:20px}.triangle{border-radius:3px}.full-width{width:100%}.flex-center{margin:10px 0}:host{display:block;padding:20px}:host ::ng-deep collapseable{width:100%!important}.service-request-button-wrapper{display:flex;justify-content:center;margin-top:20px}.transaction-order-line-r{display:flex;justify-content:stretch;flex-direction:row}@media (max-width: 800px){.transaction-order-line-r{flex-direction:column}}.transaction-order-line-r .transaction-order-line-image{display:flex;flex:1 0 auto!important;flex-direction:column;align-items:center;justify-content:center;padding-right:10px}.transaction-order-line-r .transaction-order-line-image image-display{width:6em;height:6em}.transaction-order-line-r .transaction-order-line-image ::ng-deep no-image-display{display:none}.transaction-order-line-r .transaction-order-line-description{display:flex;flex-direction:column;width:auto;max-width:355px;margin-left:10px}.transaction-order-line-r .transaction-order-line-description .cart-line-description-main{font-weight:bold}.transaction-order-line-r .transaction-order-line-right{justify-content:flex-end;align-items:center}.transaction-order-line-r .transaction-order-line-right .transaction-order-line-stock{width:10em}.transaction-order-line-r .transaction-order-line-right .transaction-order-line-amount{width:15em}.transaction-order-line-r .transaction-order-line-right .transaction-order-line-totals{display:flex;justify-content:flex-end;min-width:100px;font-weight:bold}.transaction-order-line-r .transaction-order-line-right .transaction-order-line-totals span{text-align:right}\n"]
60
+ },] }
61
+ ];
62
+ TransactionOrderLinesComponent.ctorParameters = () => [
63
+ { type: TransactionService },
64
+ { type: TransactionEventService },
65
+ { type: DictionaryService }
66
+ ];
67
+ TransactionOrderLinesComponent.propDecorators = {
68
+ transactionGrid: [{ type: ViewChild, args: ["transactionGrid",] }],
69
+ createServiceClick: [{ type: Output }]
70
+ };
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tb3JkZXItbGluZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnQvc2VydmljZS1vcmRlci90cmFuc2FjdGlvbi1vcmRlci1saW5lcy90cmFuc2FjdGlvbi1vcmRlci1saW5lcy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQVMsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUdoRixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUN4RSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQWtCcEYsTUFBTSxPQUFPLDhCQUErQixTQUFRLHdCQUF3QjtJQStCeEUsWUFDVyxPQUEyQixFQUMxQixhQUFzQyxFQUN0QyxrQkFBcUM7UUFFN0MsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBSlIsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUFDMUIsa0JBQWEsR0FBYixhQUFhLENBQXlCO1FBQ3RDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUEzQjFDLHVCQUFrQixHQUFzQyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQVVoRyxvQkFBZSxHQUFZLElBQUksQ0FBQztRQUNoQyxZQUFPLEdBQVUsRUFBRSxDQUFDO1FBb0J2QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDYixFQUFDLEtBQUssRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBQyxFQUN0RyxFQUFDLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFBQyxFQUNsRixFQUFDLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBQyxFQUM5RSxFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUMsRUFDbEUsRUFBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFDLEVBQ3BFLEVBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBQyxFQUN6RSxFQUFDLEtBQUssRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUMsRUFDMUUsRUFBQyxLQUFLLEVBQUUsc0JBQXNCLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsRUFBQyxDQUNyRyxDQUFDO0lBQ04sQ0FBQztJQXRDRCxJQUFXLGFBQWE7UUFDcEIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDekIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxJQUFJLDhCQUE4QixDQUFDLHFCQUFxQixDQUFDO1NBQzdGO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQU9ELElBQVksaUJBQWlCLENBQUMsS0FBMEI7UUFDcEQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztRQUNoQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxJQUFJLENBQUM7SUFDNUQsQ0FBQztJQUVELElBQVksaUJBQWlCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDO0lBQ25DLENBQUM7SUFxQk0sVUFBVSxDQUFDLEdBQXdCO1FBQ3RDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxHQUFHLENBQUM7UUFDN0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVNLGFBQWEsQ0FBQyxLQUFVO1FBQzNCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7SUFDbEMsQ0FBQztJQUVELGtFQUFrRTtJQUMzRCxzQkFBc0I7UUFDekIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3RCLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDMUQsQ0FBQzs7QUFoRXNCLG9EQUFxQixHQUFHLEVBQUUsQ0FBQzs7WUFqQnJELFNBQVMsU0FBQztnQkFDVCw4REFBOEQ7Z0JBQzVELFFBQVEsRUFBRSx5QkFBeUI7Z0JBQ25DLFFBQVEsRUFBRTs7Ozs7Ozs7S0FRVDs7YUFJSjs7O1lBbEJPLGtCQUFrQjtZQURsQix1QkFBdUI7WUFEdkIsaUJBQWlCOzs7OEJBd0JwQixTQUFTLFNBQUMsaUJBQWlCO2lDQUczQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0NvR3JpZENvbXBvbmVudH0gZnJvbSBcIkBjb2xpam5pdC9jb3JlY29tcG9uZW50c192MTJcIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkxpbmVJbmZvfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLWxpbmUtaW5mby5ib1wiO1xyXG5pbXBvcnQge0RpY3Rpb25hcnlTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZS9kaWN0aW9uYXJ5LnNlcnZpY2VcIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkV2ZW50U2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24tZXZlbnQuc2VydmljZVwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24uc2VydmljZVwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uQmFzZUNvbXBvbmVudH0gZnJvbSBcIi4uLy4uL2NvcmUvYmFzZS90cmFuc2FjdGlvbi1iYXNlLmNvbXBvbmVudFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcclxuICAgIHNlbGVjdG9yOiBcInRyYW5zYWN0aW9uLW9yZGVyLWxpbmVzXCIsXHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgICAgIDxjby1ncmlkICN0cmFuc2FjdGlvbkdyaWRcclxuICAgICAgICAgICAgICAgICBbZGF0YV09XCJ0cmFuc2FjdGlvbkxpbmVzXCJcclxuICAgICAgICAgICAgICAgICBbY29sdW1uc109XCJjb2x1bW5zXCJcclxuICAgICAgICAgICAgICAgICBbcGFnaW5nRW5hYmxlZF09XCJwYWdpbmdFbmFibGVkXCJcclxuICAgICAgICAgICAgICAgICBbbWF4TnVtYmVyT2ZSb3dzXT1cIicyMCdcIlxyXG4gICAgICAgICAgICAgICAgIChyb3dzU2VsZWN0ZWQpPVwib25Sb3dDbGljaygkZXZlbnQpXCJcclxuICAgICAgICA+PC9jby1ncmlkPlxyXG4gICAgYCxcclxuICAgIHN0eWxlVXJsczogW1xyXG4gICAgICAgIFwiLi90cmFuc2FjdGlvbi1vcmRlci1saW5lcy5jb21wb25lbnQuc2Nzc1wiXHJcbiAgICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbk9yZGVyTGluZXNDb21wb25lbnQgZXh0ZW5kcyBUcmFuc2FjdGlvbkJhc2VDb21wb25lbnQge1xyXG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBNQVhfVFJBTlNBQ1RJT05fTElORVMgPSAyMDtcclxuXHJcbiAgICBAVmlld0NoaWxkKFwidHJhbnNhY3Rpb25HcmlkXCIpXHJcbiAgICBwdWJsaWMgdHJhbnNhY3Rpb25HcmlkOiBDb0dyaWRDb21wb25lbnQ8YW55PjtcclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBjcmVhdGVTZXJ2aWNlQ2xpY2s6IEV2ZW50RW1pdHRlcjxUcmFuc2FjdGlvbkxpbmVJbmZvPiA9IG5ldyBFdmVudEVtaXR0ZXI8VHJhbnNhY3Rpb25MaW5lSW5mbz4oKTtcclxuXHJcblxyXG4gICAgcHVibGljIGdldCBwYWdpbmdFbmFibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uTGluZXMpIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uTGluZXMubGVuZ3RoID49IFRyYW5zYWN0aW9uT3JkZXJMaW5lc0NvbXBvbmVudC5NQVhfVFJBTlNBQ1RJT05fTElORVM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbm90aGluZ1NlbGVjdGVkOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIHB1YmxpYyBjb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIHByaXZhdGUgX3NlbGVjdGVkVHJhbnNMaW5lOiBUcmFuc2FjdGlvbkxpbmVJbmZvO1xyXG5cclxuICAgIHByaXZhdGUgc2V0IHNlbGVjdGVkVHJhbnNMaW5lKHZhbHVlOiBUcmFuc2FjdGlvbkxpbmVJbmZvKSB7XHJcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRUcmFuc0xpbmUgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLm5vdGhpbmdTZWxlY3RlZCA9IHRoaXMuX3NlbGVjdGVkVHJhbnNMaW5lID09PSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0IHNlbGVjdGVkVHJhbnNMaW5lKCk6IFRyYW5zYWN0aW9uTGluZUluZm8ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZFRyYW5zTGluZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwdWJsaWMgc2VydmljZTogVHJhbnNhY3Rpb25TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2V2ZW50U2VydmljZTogVHJhbnNhY3Rpb25FdmVudFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfZGljdGlvbmFyeVNlcnZpY2U6IERpY3Rpb25hcnlTZXJ2aWNlLFxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoc2VydmljZSk7XHJcblxyXG4gICAgICAgIHRoaXMuY29sdW1ucy5wdXNoKFxyXG4gICAgICAgICAgICB7ZmllbGQ6IFwiYXJ0aWNsZU51bWJlclwiLCBoZWFkZXJUZXh0OiB0aGlzLl9kaWN0aW9uYXJ5U2VydmljZS5nZXQoXCJBUlRJQ0xFX05SXCIpLCBhbGxvd0ZpbHRlcmluZzogZmFsc2V9LFxyXG4gICAgICAgICAgICB7ZmllbGQ6IFwiZ29vZERlc2NyaXB0aW9uXCIsIGhlYWRlclRleHQ6IHRoaXMuX2RpY3Rpb25hcnlTZXJ2aWNlLmdldChcIkRFU0NSSVBUSU9OXCIpfSxcclxuICAgICAgICAgICAge2ZpZWxkOiBcImRldGFpbHNBc1N0cmluZ1wiLCBoZWFkZXJUZXh0OiB0aGlzLl9kaWN0aW9uYXJ5U2VydmljZS5nZXQoXCJERVRBSUxTXCIpfSxcclxuICAgICAgICAgICAge2ZpZWxkOiBcInByaWNlXCIsIGhlYWRlclRleHQ6IHRoaXMuX2RpY3Rpb25hcnlTZXJ2aWNlLmdldChcIlBSSUNFXCIpfSxcclxuICAgICAgICAgICAge2ZpZWxkOiBcImFtb3VudFwiLCBoZWFkZXJUZXh0OiB0aGlzLl9kaWN0aW9uYXJ5U2VydmljZS5nZXQoXCJOVU1CRVJcIil9LFxyXG4gICAgICAgICAgICB7ZmllbGQ6IFwibGluZVRvdGFsXCIsIGhlYWRlclRleHQ6IHRoaXMuX2RpY3Rpb25hcnlTZXJ2aWNlLmdldChcIlNVQlRPVEFMXCIpfSxcclxuICAgICAgICAgICAge2ZpZWxkOiBcImxvZ2lzdGljU3RhdGVcIiwgaGVhZGVyVGV4dDogdGhpcy5fZGljdGlvbmFyeVNlcnZpY2UuZ2V0KFwiU1RBVEVcIil9LFxyXG4gICAgICAgICAgICB7ZmllbGQ6IFwiZXhwZWN0ZWREZWxpdmVyeURhdGVcIiwgaGVhZGVyVGV4dDogdGhpcy5fZGljdGlvbmFyeVNlcnZpY2UuZ2V0KFwiRVhQRUNURURfREVMSVZFUllfREFURVwiKX0sXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25Sb3dDbGljayhyb3c6IFRyYW5zYWN0aW9uTGluZUluZm8pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVHJhbnNMaW5lID0gcm93O1xyXG4gICAgICAgIHRoaXMuX2V2ZW50U2VydmljZS50cmFuc2FjdGlvbkxpbmVDbGlja2VkLm5leHQodGhpcy5zZWxlY3RlZFRyYW5zTGluZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uUm93RGVzZWxlY3QoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUcmFuc0xpbmUgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFRPRE86IG5hdnJhZ2VuIHdhdCBkZSBiZWRvZWxpbmcgaXMsIHppZSBvcmlnaW5lbGUgc291cmNlIGlPbmVKU1xyXG4gICAgcHVibGljIG5ld1NlcnZpY2VSZXF1ZXN0Q2xpY2soKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMubm90aGluZ1NlbGVjdGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jcmVhdGVTZXJ2aWNlQ2xpY2suZW1pdCh0aGlzLl9zZWxlY3RlZFRyYW5zTGluZSk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,36 @@
1
+ import { Component } from "@angular/core";
2
+ import { TransactionService } from "../../../service/transaction.service";
3
+ import { TransactionBaseComponent } from "../../core/base/transaction-base.component";
4
+ export class TransactionOrderTotalsComponent extends TransactionBaseComponent {
5
+ constructor(service) {
6
+ super(service);
7
+ this.service = service;
8
+ }
9
+ }
10
+ TransactionOrderTotalsComponent.decorators = [
11
+ { type: Component, args: [{
12
+ // eslint-disable-next-line @angular-eslint/component-selector
13
+ selector: "transaction-order-totals",
14
+ template: `
15
+ <div class="totals-wrapper">
16
+ <div class="totals-item">
17
+ <div class="totals-item-description" [textContent]="'SUBTOTAL' | localize"></div>
18
+ <div class="totals-item-value" [textContent]="transactionTotal?.grossAmount | coCurrency | coCurrency"></div>
19
+ </div>
20
+ <div class="totals-item">
21
+ <div class="totals-item-description" [textContent]="'VAT_AMOUNT' | localize"></div>
22
+ <div class="totals-item-value" [textContent]="transactionTotal?.surchargeAmount | coCurrency"></div>
23
+ </div>
24
+ <div class="totals-item total">
25
+ <div class="totals-item-description" [textContent]="'TRANSACTION_SUM_I' | localize"></div>
26
+ <div class="totals-item-value" [textContent]="transactionTotal?.netAmount | coCurrency"></div>
27
+ </div>
28
+ </div>
29
+ `,
30
+ styles: ["html,body{height:100%}body{margin:0;font-family:Roboto,\"Helvetica Neue\",sans-serif}.flex-center{display:flex}.flex-center{flex-direction:row}.flex-center{align-items:center!important;justify-content:center!important}.triangle{border-radius:3px}.full-width{width:100%}.flex-center{margin:10px 0}:host .totals-wrapper{width:310px;font-size:13px}:host .totals-item{display:flex;flex-direction:row;height:25px;align-items:center}:host .totals-item>div{text-align:end;width:50%}:host .totals-item.total{font-weight:bold;height:30px;border-top:1px solid #DCE4EA}\n"]
31
+ },] }
32
+ ];
33
+ TransactionOrderTotalsComponent.ctorParameters = () => [
34
+ { type: TransactionService }
35
+ ];
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tb3JkZXItdG90YWxzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50L3NlcnZpY2Utb3JkZXIvdHJhbnNhY3Rpb24tb3JkZXItdG90YWxzL3RyYW5zYWN0aW9uLW9yZGVyLXRvdGFscy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBUSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUV4RSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQTBCcEYsTUFBTSxPQUFPLCtCQUFnQyxTQUFRLHdCQUF3QjtJQUV6RSxZQUN1QixPQUEyQjtRQUU5QyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFGSSxZQUFPLEdBQVAsT0FBTyxDQUFvQjtJQUdsRCxDQUFDOzs7WUE3QkosU0FBUyxTQUFDO2dCQUNULDhEQUE4RDtnQkFDNUQsUUFBUSxFQUFFLDBCQUEwQjtnQkFDcEMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7S0FlVDs7YUFJSjs7O1lBM0JPLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvblNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvblRvdGFsfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3RyYW5zYWN0aW9uLXRvdGFsLmJvXCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25CYXNlQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vY29yZS9iYXNlL3RyYW5zYWN0aW9uLWJhc2UuY29tcG9uZW50XCI7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcclxuICAgIHNlbGVjdG9yOiBcInRyYW5zYWN0aW9uLW9yZGVyLXRvdGFsc1wiLFxyXG4gICAgdGVtcGxhdGU6IGBcclxuICAgICAgICA8ZGl2IGNsYXNzPVwidG90YWxzLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvdGFscy1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG90YWxzLWl0ZW0tZGVzY3JpcHRpb25cIiBbdGV4dENvbnRlbnRdPVwiJ1NVQlRPVEFMJyB8IGxvY2FsaXplXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG90YWxzLWl0ZW0tdmFsdWVcIiBbdGV4dENvbnRlbnRdPVwidHJhbnNhY3Rpb25Ub3RhbD8uZ3Jvc3NBbW91bnQgfCBjb0N1cnJlbmN5IHwgY29DdXJyZW5jeVwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvdGFscy1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG90YWxzLWl0ZW0tZGVzY3JpcHRpb25cIiBbdGV4dENvbnRlbnRdPVwiJ1ZBVF9BTU9VTlQnIHwgbG9jYWxpemVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b3RhbHMtaXRlbS12YWx1ZVwiIFt0ZXh0Q29udGVudF09XCJ0cmFuc2FjdGlvblRvdGFsPy5zdXJjaGFyZ2VBbW91bnQgfCBjb0N1cnJlbmN5XCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG90YWxzLWl0ZW0gdG90YWxcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b3RhbHMtaXRlbS1kZXNjcmlwdGlvblwiIFt0ZXh0Q29udGVudF09XCInVFJBTlNBQ1RJT05fU1VNX0knIHwgbG9jYWxpemVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b3RhbHMtaXRlbS12YWx1ZVwiIFt0ZXh0Q29udGVudF09XCJ0cmFuc2FjdGlvblRvdGFsPy5uZXRBbW91bnQgfCBjb0N1cnJlbmN5XCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgYCxcclxuICAgIHN0eWxlVXJsczogW1xyXG4gICAgICAgIFwiLi90cmFuc2FjdGlvbi1vcmRlci10b3RhbHMuY29tcG9uZW50LnNjc3NcIlxyXG4gICAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25PcmRlclRvdGFsc0NvbXBvbmVudCBleHRlbmRzIFRyYW5zYWN0aW9uQmFzZUNvbXBvbmVudCB7XHJcblxyXG4gICAgY29uc3RydWN0b3IgKFxyXG4gICAgICAgIHByb3RlY3RlZCByZWFkb25seSBzZXJ2aWNlOiBUcmFuc2FjdGlvblNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKHNlcnZpY2UpO1xyXG4gICAgfVxyXG5cclxufVxyXG4iXX0=