valtech-components 4.0.225 → 4.0.226
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.
- package/esm2022/lib/components/molecules/chat-composer/chat-composer.component.mjs +238 -0
- package/esm2022/lib/components/molecules/conversation-list-item/conversation-list-item.component.mjs +108 -0
- package/esm2022/lib/components/molecules/message-bubble/message-bubble.component.mjs +259 -191
- package/esm2022/lib/components/molecules/typing-indicator/typing-indicator.component.mjs +11 -12
- package/esm2022/lib/components/organisms/chat-window/chat-window.component.mjs +217 -184
- package/esm2022/lib/components/organisms/thread-panel/thread-panel.component.mjs +1 -1
- package/esm2022/lib/services/chat/types.mjs +1 -1
- package/esm2022/lib/shared/utils/datetime.mjs +54 -1
- package/esm2022/lib/version.mjs +2 -2
- package/esm2022/public-api.mjs +4 -2
- package/fesm2022/valtech-components.mjs +865 -380
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/molecules/chat-composer/chat-composer.component.d.ts +46 -0
- package/lib/components/molecules/conversation-list-item/conversation-list-item.component.d.ts +30 -0
- package/lib/components/molecules/message-bubble/message-bubble.component.d.ts +33 -32
- package/lib/components/molecules/typing-indicator/typing-indicator.component.d.ts +5 -4
- package/lib/components/organisms/chat-window/chat-window.component.d.ts +52 -52
- package/lib/services/chat/types.d.ts +6 -2
- package/lib/shared/utils/datetime.d.ts +19 -0
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +3 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component,
|
|
1
|
+
import { Component, computed, inject, input } from '@angular/core';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import { I18nService } from '../../../services/i18n';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
@@ -17,8 +17,9 @@ const TYPING_I18N = {
|
|
|
17
17
|
/**
|
|
18
18
|
* val-typing-indicator
|
|
19
19
|
*
|
|
20
|
-
* Muestra quienes estan escribiendo
|
|
21
|
-
*
|
|
20
|
+
* Muestra quienes estan escribiendo con animacion de tres puntos. Se oculta
|
|
21
|
+
* si `typingUsers` esta vacio. Usa signal input para que `typingText` (computed)
|
|
22
|
+
* recompute al cambiar la lista.
|
|
22
23
|
*
|
|
23
24
|
* @example
|
|
24
25
|
* <val-typing-indicator [typingUsers]="['Maria', 'Carlos']" />
|
|
@@ -26,10 +27,10 @@ const TYPING_I18N = {
|
|
|
26
27
|
export class TypingIndicatorComponent {
|
|
27
28
|
constructor() {
|
|
28
29
|
this.i18n = inject(I18nService);
|
|
29
|
-
this.typingUsers = [];
|
|
30
|
+
this.typingUsers = input([]);
|
|
30
31
|
this.typingText = computed(() => {
|
|
31
32
|
this.i18n.lang();
|
|
32
|
-
const users = this.typingUsers
|
|
33
|
+
const users = this.typingUsers();
|
|
33
34
|
if (users.length === 0)
|
|
34
35
|
return '';
|
|
35
36
|
if (users.length === 1) {
|
|
@@ -43,8 +44,8 @@ export class TypingIndicatorComponent {
|
|
|
43
44
|
this.i18n.registerDefaults('TypingIndicator', TYPING_I18N);
|
|
44
45
|
}
|
|
45
46
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TypingIndicatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
46
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TypingIndicatorComponent, isStandalone: true, selector: "val-typing-indicator", inputs: { typingUsers: "typingUsers" }, ngImport: i0, template: `
|
|
47
|
-
@if (typingUsers
|
|
47
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TypingIndicatorComponent, isStandalone: true, selector: "val-typing-indicator", inputs: { typingUsers: { classPropertyName: "typingUsers", publicName: "typingUsers", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
48
|
+
@if (typingUsers().length > 0) {
|
|
48
49
|
<div class="typing-indicator">
|
|
49
50
|
<div class="dots">
|
|
50
51
|
<span></span>
|
|
@@ -59,7 +60,7 @@ export class TypingIndicatorComponent {
|
|
|
59
60
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TypingIndicatorComponent, decorators: [{
|
|
60
61
|
type: Component,
|
|
61
62
|
args: [{ selector: 'val-typing-indicator', standalone: true, imports: [CommonModule], template: `
|
|
62
|
-
@if (typingUsers
|
|
63
|
+
@if (typingUsers().length > 0) {
|
|
63
64
|
<div class="typing-indicator">
|
|
64
65
|
<div class="dots">
|
|
65
66
|
<span></span>
|
|
@@ -70,7 +71,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
70
71
|
</div>
|
|
71
72
|
}
|
|
72
73
|
`, styles: [".typing-indicator{display:flex;align-items:center;gap:8px;padding:4px 12px;min-height:28px}.typing-text{font-size:.8125rem;color:var(--ion-color-medium, #92949c);font-style:italic}.dots{display:flex;align-items:center;gap:3px}.dots span{display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--ion-color-medium, #92949c);animation:typing-dot 1.2s infinite ease-in-out}.dots span:nth-child(1){animation-delay:0s}.dots span:nth-child(2){animation-delay:.2s}.dots span:nth-child(3){animation-delay:.4s}@keyframes typing-dot{0%,60%,to{transform:translateY(0);opacity:.4}30%{transform:translateY(-4px);opacity:1}}\n"] }]
|
|
73
|
-
}], ctorParameters: () => []
|
|
74
|
-
|
|
75
|
-
}] } });
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwaW5nLWluZGljYXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3R5cGluZy1pbmRpY2F0b3IvdHlwaW5nLWluZGljYXRvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUVyRCxNQUFNLFdBQVcsR0FBRztJQUNsQixFQUFFLEVBQUU7UUFDRixHQUFHLEVBQUUseUJBQXlCO1FBQzlCLEdBQUcsRUFBRSxvQ0FBb0M7UUFDekMsSUFBSSxFQUFFLDBCQUEwQjtLQUNqQztJQUNELEVBQUUsRUFBRTtRQUNGLEdBQUcsRUFBRSxrQkFBa0I7UUFDdkIsR0FBRyxFQUFFLCtCQUErQjtRQUNwQyxJQUFJLEVBQUUsMkJBQTJCO0tBQ2xDO0NBQ0YsQ0FBQztBQUVGOzs7Ozs7OztHQVFHO0FBbUJILE1BQU0sT0FBTyx3QkFBd0I7SUFLbkM7UUFKVSxTQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTVCLGdCQUFXLEdBQWEsRUFBRSxDQUFDO1FBTTFCLGVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDakIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7WUFDckMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUM7Z0JBQUUsT0FBTyxFQUFFLENBQUM7WUFDbEMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN2QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ25FLENBQUM7WUFDRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNwRixDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUNoRCxDQUFDLENBQUMsQ0FBQztRQWRELElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDN0QsQ0FBQzsrR0FQVSx3QkFBd0I7bUdBQXhCLHdCQUF3Qix3SEFkekI7Ozs7Ozs7Ozs7O0dBV1QsK3JCQVpTLFlBQVk7OzRGQWVYLHdCQUF3QjtrQkFsQnBDLFNBQVM7K0JBQ0Usc0JBQXNCLGNBQ3BCLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxZQUNiOzs7Ozs7Ozs7OztHQVdUO3dEQU1RLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBpbmplY3QsIGNvbXB1dGVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcblxuY29uc3QgVFlQSU5HX0kxOE4gPSB7XG4gIGVzOiB7XG4gICAgb25lOiAne25hbWV9IGVzdGEgZXNjcmliaWVuZG8nLFxuICAgIHR3bzogJ3tuYW1lfSB5IHtvdGhlcn0gZXN0YW4gZXNjcmliaWVuZG8nLFxuICAgIG1hbnk6ICdWYXJpb3MgZXN0YW4gZXNjcmliaWVuZG8nLFxuICB9LFxuICBlbjoge1xuICAgIG9uZTogJ3tuYW1lfSBpcyB0eXBpbmcnLFxuICAgIHR3bzogJ3tuYW1lfSBhbmQge290aGVyfSBhcmUgdHlwaW5nJyxcbiAgICBtYW55OiAnU2V2ZXJhbCBwZW9wbGUgYXJlIHR5cGluZycsXG4gIH0sXG59O1xuXG4vKipcbiAqIHZhbC10eXBpbmctaW5kaWNhdG9yXG4gKlxuICogTXVlc3RyYSBxdWllbmVzIGVzdGFuIGVzY3JpYmllbmRvIGVuIGVsIGNoYXQgY29uIGFuaW1hY2lvbiBkZSB0cmVzIHB1bnRvcy5cbiAqIFNlIG9jdWx0YSBhdXRvbWF0aWNhbWVudGUgc2kgdHlwaW5nVXNlcnMgZXN0YSB2YWNpby5cbiAqXG4gKiBAZXhhbXBsZVxuICogPHZhbC10eXBpbmctaW5kaWNhdG9yIFt0eXBpbmdVc2Vyc109XCJbJ01hcmlhJywgJ0NhcmxvcyddXCIgLz5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXR5cGluZy1pbmRpY2F0b3InLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGU6IGBcbiAgICBAaWYgKHR5cGluZ1VzZXJzICYmIHR5cGluZ1VzZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJ0eXBpbmctaW5kaWNhdG9yXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkb3RzXCI+XG4gICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c3BhbiBjbGFzcz1cInR5cGluZy10ZXh0XCI+e3sgdHlwaW5nVGV4dCgpIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICBgLFxuICBzdHlsZVVybHM6IFsnLi90eXBpbmctaW5kaWNhdG9yLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFR5cGluZ0luZGljYXRvckNvbXBvbmVudCB7XG4gIHByb3RlY3RlZCBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcblxuICBASW5wdXQoKSB0eXBpbmdVc2Vyczogc3RyaW5nW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmkxOG4ucmVnaXN0ZXJEZWZhdWx0cygnVHlwaW5nSW5kaWNhdG9yJywgVFlQSU5HX0kxOE4pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHR5cGluZ1RleHQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICBjb25zdCB1c2VycyA9IHRoaXMudHlwaW5nVXNlcnMgPz8gW107XG4gICAgaWYgKHVzZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuICcnO1xuICAgIGlmICh1c2Vycy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiB0aGlzLmkxOG4udCgnb25lJywgJ1R5cGluZ0luZGljYXRvcicsIHsgbmFtZTogdXNlcnNbMF0gfSk7XG4gICAgfVxuICAgIGlmICh1c2Vycy5sZW5ndGggPT09IDIpIHtcbiAgICAgIHJldHVybiB0aGlzLmkxOG4udCgndHdvJywgJ1R5cGluZ0luZGljYXRvcicsIHsgbmFtZTogdXNlcnNbMF0sIG90aGVyOiB1c2Vyc1sxXSB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KCdtYW55JywgJ1R5cGluZ0luZGljYXRvcicpO1xuICB9KTtcbn1cbiJdfQ==
|
|
74
|
+
}], ctorParameters: () => [] });
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwaW5nLWluZGljYXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3R5cGluZy1pbmRpY2F0b3IvdHlwaW5nLWluZGljYXRvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUVyRCxNQUFNLFdBQVcsR0FBRztJQUNsQixFQUFFLEVBQUU7UUFDRixHQUFHLEVBQUUseUJBQXlCO1FBQzlCLEdBQUcsRUFBRSxvQ0FBb0M7UUFDekMsSUFBSSxFQUFFLDBCQUEwQjtLQUNqQztJQUNELEVBQUUsRUFBRTtRQUNGLEdBQUcsRUFBRSxrQkFBa0I7UUFDdkIsR0FBRyxFQUFFLCtCQUErQjtRQUNwQyxJQUFJLEVBQUUsMkJBQTJCO0tBQ2xDO0NBQ0YsQ0FBQztBQUVGOzs7Ozs7Ozs7R0FTRztBQW1CSCxNQUFNLE9BQU8sd0JBQXdCO0lBS25DO1FBSlUsU0FBSSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUU1QixnQkFBVyxHQUFHLEtBQUssQ0FBVyxFQUFFLENBQUMsQ0FBQztRQU1qQyxlQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2pCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQztnQkFBRSxPQUFPLEVBQUUsQ0FBQztZQUNsQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbkUsQ0FBQztZQUNELElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDdkIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3BGLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQyxDQUFDO1FBZEQsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUM3RCxDQUFDOytHQVBVLHdCQUF3QjttR0FBeEIsd0JBQXdCLHNPQWR6Qjs7Ozs7Ozs7Ozs7R0FXVCwrckJBWlMsWUFBWTs7NEZBZVgsd0JBQXdCO2tCQWxCcEMsU0FBUzsrQkFDRSxzQkFBc0IsY0FDcEIsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDLFlBQ2I7Ozs7Ozs7Ozs7O0dBV1QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBpbmplY3QsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcblxuY29uc3QgVFlQSU5HX0kxOE4gPSB7XG4gIGVzOiB7XG4gICAgb25lOiAne25hbWV9IGVzdGEgZXNjcmliaWVuZG8nLFxuICAgIHR3bzogJ3tuYW1lfSB5IHtvdGhlcn0gZXN0YW4gZXNjcmliaWVuZG8nLFxuICAgIG1hbnk6ICdWYXJpb3MgZXN0YW4gZXNjcmliaWVuZG8nLFxuICB9LFxuICBlbjoge1xuICAgIG9uZTogJ3tuYW1lfSBpcyB0eXBpbmcnLFxuICAgIHR3bzogJ3tuYW1lfSBhbmQge290aGVyfSBhcmUgdHlwaW5nJyxcbiAgICBtYW55OiAnU2V2ZXJhbCBwZW9wbGUgYXJlIHR5cGluZycsXG4gIH0sXG59O1xuXG4vKipcbiAqIHZhbC10eXBpbmctaW5kaWNhdG9yXG4gKlxuICogTXVlc3RyYSBxdWllbmVzIGVzdGFuIGVzY3JpYmllbmRvIGNvbiBhbmltYWNpb24gZGUgdHJlcyBwdW50b3MuIFNlIG9jdWx0YVxuICogc2kgYHR5cGluZ1VzZXJzYCBlc3RhIHZhY2lvLiBVc2Egc2lnbmFsIGlucHV0IHBhcmEgcXVlIGB0eXBpbmdUZXh0YCAoY29tcHV0ZWQpXG4gKiByZWNvbXB1dGUgYWwgY2FtYmlhciBsYSBsaXN0YS5cbiAqXG4gKiBAZXhhbXBsZVxuICogPHZhbC10eXBpbmctaW5kaWNhdG9yIFt0eXBpbmdVc2Vyc109XCJbJ01hcmlhJywgJ0NhcmxvcyddXCIgLz5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXR5cGluZy1pbmRpY2F0b3InLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGU6IGBcbiAgICBAaWYgKHR5cGluZ1VzZXJzKCkubGVuZ3RoID4gMCkge1xuICAgICAgPGRpdiBjbGFzcz1cInR5cGluZy1pbmRpY2F0b3JcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRvdHNcIj5cbiAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidHlwaW5nLXRleHRcIj57eyB0eXBpbmdUZXh0KCkgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL3R5cGluZy1pbmRpY2F0b3IuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgVHlwaW5nSW5kaWNhdG9yQ29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuXG4gIHJlYWRvbmx5IHR5cGluZ1VzZXJzID0gaW5wdXQ8c3RyaW5nW10+KFtdKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmkxOG4ucmVnaXN0ZXJEZWZhdWx0cygnVHlwaW5nSW5kaWNhdG9yJywgVFlQSU5HX0kxOE4pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHR5cGluZ1RleHQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICBjb25zdCB1c2VycyA9IHRoaXMudHlwaW5nVXNlcnMoKTtcbiAgICBpZiAodXNlcnMubGVuZ3RoID09PSAwKSByZXR1cm4gJyc7XG4gICAgaWYgKHVzZXJzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIHRoaXMuaTE4bi50KCdvbmUnLCAnVHlwaW5nSW5kaWNhdG9yJywgeyBuYW1lOiB1c2Vyc1swXSB9KTtcbiAgICB9XG4gICAgaWYgKHVzZXJzLmxlbmd0aCA9PT0gMikge1xuICAgICAgcmV0dXJuIHRoaXMuaTE4bi50KCd0d28nLCAnVHlwaW5nSW5kaWNhdG9yJywgeyBuYW1lOiB1c2Vyc1swXSwgb3RoZXI6IHVzZXJzWzFdIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pMThuLnQoJ21hbnknLCAnVHlwaW5nSW5kaWNhdG9yJyk7XG4gIH0pO1xufVxuIl19
|