uitec-ng-header 1.1.0 → 1.2.0
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/README.md +11 -182
- package/esm2020/lib/ui-header.component.mjs +20 -26
- package/esm2020/lib/ui-header.module.mjs +4 -10
- package/esm2020/public-api.mjs +1 -17
- package/fesm2015/uitec-ng-header.mjs +24 -1808
- package/fesm2015/uitec-ng-header.mjs.map +1 -1
- package/fesm2020/uitec-ng-header.mjs +24 -1771
- package/fesm2020/uitec-ng-header.mjs.map +1 -1
- package/lib/ui-header.component.d.ts +8 -11
- package/lib/ui-header.module.d.ts +1 -2
- package/package.json +2 -3
- package/public-api.d.ts +0 -15
- package/esm2020/lib/assistant/components/assistant-action-card/ui-assistant-action-card.component.mjs +0 -102
- package/esm2020/lib/assistant/components/assistant-button/ui-assistant-button.component.mjs +0 -18
- package/esm2020/lib/assistant/components/assistant-composer/ui-assistant-composer.component.mjs +0 -79
- package/esm2020/lib/assistant/components/assistant-layout/ui-assistant-layout.component.mjs +0 -140
- package/esm2020/lib/assistant/components/assistant-messages/ui-assistant-messages.component.mjs +0 -144
- package/esm2020/lib/assistant/components/assistant-panel/ui-assistant-panel.component.mjs +0 -156
- package/esm2020/lib/assistant/components/assistant-text/ui-assistant-text.component.mjs +0 -26
- package/esm2020/lib/assistant/models/uiny-api.models.mjs +0 -12
- package/esm2020/lib/assistant/models/uiny.models.mjs +0 -2
- package/esm2020/lib/assistant/services/ui-assistant.service.mjs +0 -137
- package/esm2020/lib/assistant/services/uiny-api.service.mjs +0 -149
- package/esm2020/lib/assistant/services/uiny-chat.service.mjs +0 -368
- package/esm2020/lib/assistant/services/uiny-session.service.mjs +0 -74
- package/esm2020/lib/assistant/ui-assistant.module.mjs +0 -59
- package/esm2020/lib/assistant/uiny.config.mjs +0 -53
- package/esm2020/lib/assistant/utils/uiny-api.adapter.mjs +0 -154
- package/esm2020/lib/assistant/utils/uiny-contexto.mjs +0 -43
- package/esm2020/lib/assistant/utils/uiny-markdown.mjs +0 -122
- package/lib/assistant/components/assistant-action-card/ui-assistant-action-card.component.d.ts +0 -33
- package/lib/assistant/components/assistant-button/ui-assistant-button.component.d.ts +0 -9
- package/lib/assistant/components/assistant-composer/ui-assistant-composer.component.d.ts +0 -24
- package/lib/assistant/components/assistant-layout/ui-assistant-layout.component.d.ts +0 -51
- package/lib/assistant/components/assistant-messages/ui-assistant-messages.component.d.ts +0 -38
- package/lib/assistant/components/assistant-panel/ui-assistant-panel.component.d.ts +0 -53
- package/lib/assistant/components/assistant-text/ui-assistant-text.component.d.ts +0 -14
- package/lib/assistant/models/uiny-api.models.d.ts +0 -109
- package/lib/assistant/models/uiny.models.d.ts +0 -104
- package/lib/assistant/services/ui-assistant.service.d.ts +0 -55
- package/lib/assistant/services/uiny-api.service.d.ts +0 -38
- package/lib/assistant/services/uiny-chat.service.d.ts +0 -82
- package/lib/assistant/services/uiny-session.service.d.ts +0 -38
- package/lib/assistant/ui-assistant.module.d.ts +0 -19
- package/lib/assistant/uiny.config.d.ts +0 -31
- package/lib/assistant/utils/uiny-api.adapter.d.ts +0 -22
- package/lib/assistant/utils/uiny-contexto.d.ts +0 -7
- package/lib/assistant/utils/uiny-markdown.d.ts +0 -37
|
@@ -1,28 +1,26 @@
|
|
|
1
|
-
import { EventEmitter,
|
|
1
|
+
import { EventEmitter, OnInit, TemplateRef } from '@angular/core';
|
|
2
2
|
import { AuthAcesso, AuthService, BaseUrlService, IframeService, LayoutService, UserAuthDTO, UsuarioMenuDTO } from 'uitec-ng-core';
|
|
3
|
-
import { UiAssistantService } from './assistant/services/ui-assistant.service';
|
|
4
3
|
import * as i0 from "@angular/core";
|
|
5
|
-
export declare class UiHeaderComponent implements OnInit
|
|
4
|
+
export declare class UiHeaderComponent implements OnInit {
|
|
6
5
|
authService: AuthService;
|
|
7
6
|
urlService: BaseUrlService;
|
|
8
7
|
layoutService: LayoutService;
|
|
9
8
|
iframeService: IframeService;
|
|
10
|
-
assistantService: UiAssistantService;
|
|
11
9
|
private document;
|
|
12
10
|
collapseSidebar: boolean;
|
|
13
11
|
fullScreen: boolean;
|
|
14
12
|
headerBackdrop: string;
|
|
15
|
-
isFree:
|
|
13
|
+
isFree: boolean;
|
|
16
14
|
menus: UsuarioMenuDTO[];
|
|
17
15
|
sidebar: boolean;
|
|
16
|
+
fullWidth: boolean;
|
|
18
17
|
redirectHome: boolean;
|
|
19
18
|
darkDefault: string;
|
|
20
|
-
/** Exibe o botão da Uiny (assistente virtual). Exige um <ui-assistant-layout> envolvendo a aplicação. */
|
|
21
|
-
showAssistant: boolean;
|
|
22
19
|
collapseSidebarChange: EventEmitter<boolean>;
|
|
23
20
|
fullScreenChange: EventEmitter<boolean>;
|
|
24
21
|
headerBackdropChange: EventEmitter<boolean>;
|
|
25
22
|
onNavigate: EventEmitter<UsuarioMenuDTO>;
|
|
23
|
+
onUpgrade: EventEmitter<void>;
|
|
26
24
|
left: TemplateRef<any>;
|
|
27
25
|
center: TemplateRef<any>;
|
|
28
26
|
right: TemplateRef<any>;
|
|
@@ -31,14 +29,13 @@ export declare class UiHeaderComponent implements OnInit, OnChanges, OnDestroy {
|
|
|
31
29
|
elem: any;
|
|
32
30
|
userObs: UserAuthDTO;
|
|
33
31
|
accessObs: AuthAcesso;
|
|
34
|
-
constructor(authService: AuthService, urlService: BaseUrlService, layoutService: LayoutService, iframeService: IframeService,
|
|
35
|
-
ngOnChanges(changes: SimpleChanges): void;
|
|
36
|
-
ngOnDestroy(): void;
|
|
32
|
+
constructor(authService: AuthService, urlService: BaseUrlService, layoutService: LayoutService, iframeService: IframeService, document: any);
|
|
37
33
|
ngOnInit(): void;
|
|
38
34
|
layoutToggle(): void;
|
|
39
35
|
updateIframeTheme(): void;
|
|
40
36
|
addEventListenerOnIframe(): void;
|
|
41
37
|
setStatusSideBar(): void;
|
|
38
|
+
fecharBackdrop(): void;
|
|
42
39
|
sidebarToggle(): void;
|
|
43
40
|
home(): void;
|
|
44
41
|
logout(): void;
|
|
@@ -46,5 +43,5 @@ export declare class UiHeaderComponent implements OnInit, OnChanges, OnDestroy {
|
|
|
46
43
|
buildAmbiente(): void;
|
|
47
44
|
toggleFullScreen(): void;
|
|
48
45
|
static ɵfac: i0.ɵɵFactoryDeclaration<UiHeaderComponent, never>;
|
|
49
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<UiHeaderComponent, "ui-header", never, { "collapseSidebar": "collapseSidebar"; "fullScreen": "fullScreen"; "headerBackdrop": "headerBackdrop"; "isFree": "isFree"; "menus": "menus"; "sidebar": "sidebar"; "
|
|
46
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<UiHeaderComponent, "ui-header", never, { "collapseSidebar": "collapseSidebar"; "fullScreen": "fullScreen"; "headerBackdrop": "headerBackdrop"; "isFree": "isFree"; "menus": "menus"; "sidebar": "sidebar"; "fullWidth": "fullWidth"; "redirectHome": "redirectHome"; "darkDefault": "darkDefault"; }, { "collapseSidebarChange": "collapseSidebarChange"; "fullScreenChange": "fullScreenChange"; "headerBackdropChange": "headerBackdropChange"; "onNavigate": "onNavigate"; "onUpgrade": "onUpgrade"; }, ["left", "center", "right"], never, false, never>;
|
|
50
47
|
}
|
|
@@ -6,9 +6,8 @@ import * as i4 from "@angular/forms";
|
|
|
6
6
|
import * as i5 from "uitec-ng-icon";
|
|
7
7
|
import * as i6 from "uitec-ng-user-top";
|
|
8
8
|
import * as i7 from "primeng/tooltip";
|
|
9
|
-
import * as i8 from "./assistant/ui-assistant.module";
|
|
10
9
|
export declare class UiHeaderModule {
|
|
11
10
|
static ɵfac: i0.ɵɵFactoryDeclaration<UiHeaderModule, never>;
|
|
12
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<UiHeaderModule, [typeof i1.UiHeaderComponent, typeof i2.MyAccountComponent], [typeof i3.CommonModule, typeof i4.ReactiveFormsModule, typeof i5.UiIconModule, typeof i6.UiUserTopModule, typeof i7.TooltipModule
|
|
11
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<UiHeaderModule, [typeof i1.UiHeaderComponent, typeof i2.MyAccountComponent], [typeof i3.CommonModule, typeof i4.ReactiveFormsModule, typeof i5.UiIconModule, typeof i6.UiUserTopModule, typeof i7.TooltipModule], [typeof i1.UiHeaderComponent]>;
|
|
13
12
|
static ɵinj: i0.ɵɵInjectorDeclaration<UiHeaderModule>;
|
|
14
13
|
}
|
package/package.json
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "uitec-ng-header",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": "^15.2.0",
|
|
6
|
-
"@angular/core": "^15.2.0"
|
|
7
|
-
"@angular/router": "^15.2.0"
|
|
6
|
+
"@angular/core": "^15.2.0"
|
|
8
7
|
},
|
|
9
8
|
"dependencies": {
|
|
10
9
|
"tslib": "^2.3.0"
|
package/public-api.d.ts
CHANGED
|
@@ -1,18 +1,3 @@
|
|
|
1
1
|
export * from './lib/ui-header.service';
|
|
2
2
|
export * from './lib/ui-header.component';
|
|
3
3
|
export * from './lib/ui-header.module';
|
|
4
|
-
export * from './lib/assistant/ui-assistant.module';
|
|
5
|
-
export * from './lib/assistant/uiny.config';
|
|
6
|
-
export * from './lib/assistant/models/uiny.models';
|
|
7
|
-
export * from './lib/assistant/models/uiny-api.models';
|
|
8
|
-
export * from './lib/assistant/services/ui-assistant.service';
|
|
9
|
-
export * from './lib/assistant/services/uiny-api.service';
|
|
10
|
-
export * from './lib/assistant/services/uiny-chat.service';
|
|
11
|
-
export * from './lib/assistant/services/uiny-session.service';
|
|
12
|
-
export * from './lib/assistant/components/assistant-button/ui-assistant-button.component';
|
|
13
|
-
export * from './lib/assistant/components/assistant-layout/ui-assistant-layout.component';
|
|
14
|
-
export * from './lib/assistant/components/assistant-panel/ui-assistant-panel.component';
|
|
15
|
-
export * from './lib/assistant/components/assistant-messages/ui-assistant-messages.component';
|
|
16
|
-
export * from './lib/assistant/components/assistant-text/ui-assistant-text.component';
|
|
17
|
-
export * from './lib/assistant/components/assistant-composer/ui-assistant-composer.component';
|
|
18
|
-
export * from './lib/assistant/components/assistant-action-card/ui-assistant-action-card.component';
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, NgZone, Output } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@angular/common";
|
|
4
|
-
import * as i2 from "uitec-ng-icon";
|
|
5
|
-
const ROTULOS = {
|
|
6
|
-
pendente: 'Aguardando sua confirmação',
|
|
7
|
-
executando: 'Executando…',
|
|
8
|
-
concluida: 'Concluída',
|
|
9
|
-
cancelada: 'Cancelada',
|
|
10
|
-
expirada: 'Expirada',
|
|
11
|
-
invalidada: 'Precisa de nova confirmação',
|
|
12
|
-
falha: 'Não concluída',
|
|
13
|
-
indeterminada: 'Resultado a verificar',
|
|
14
|
-
};
|
|
15
|
-
const DESCRICOES = {
|
|
16
|
-
concluida: 'A alteração foi aplicada.',
|
|
17
|
-
cancelada: 'Nada foi alterado.',
|
|
18
|
-
expirada: 'O prazo para confirmar terminou. Nada foi alterado; peça de novo se ainda quiser.',
|
|
19
|
-
invalidada: 'Os dados mudaram desde a proposta. Peça a alteração de novo para revisar.',
|
|
20
|
-
falha: 'A alteração não foi aplicada.',
|
|
21
|
-
};
|
|
22
|
-
/**
|
|
23
|
-
* Card de ação pendente. A confirmação só acontece pelo clique em "Confirmar":
|
|
24
|
-
* o card emite apenas o id da ação persistida, sem argumentos.
|
|
25
|
-
*/
|
|
26
|
-
export class UiAssistantActionCardComponent {
|
|
27
|
-
constructor(cdr, zone) {
|
|
28
|
-
this.cdr = cdr;
|
|
29
|
-
this.zone = zone;
|
|
30
|
-
this.confirmar = new EventEmitter();
|
|
31
|
-
this.cancelar = new EventEmitter();
|
|
32
|
-
this.verificar = new EventEmitter();
|
|
33
|
-
this.agora = Date.now();
|
|
34
|
-
}
|
|
35
|
-
ngOnChanges() {
|
|
36
|
-
this.agendar();
|
|
37
|
-
}
|
|
38
|
-
ngOnDestroy() {
|
|
39
|
-
clearInterval(this.timer);
|
|
40
|
-
}
|
|
41
|
-
/** O servidor decide a expiração; aqui só evitamos oferecer um clique que já vai falhar. */
|
|
42
|
-
get expiradaLocalmente() {
|
|
43
|
-
return this.acao?.estado === 'pendente' && !!this.acao.expiraEm && this.acao.expiraEm.getTime() <= this.agora;
|
|
44
|
-
}
|
|
45
|
-
get estado() {
|
|
46
|
-
return this.expiradaLocalmente ? 'expirada' : this.acao?.estado;
|
|
47
|
-
}
|
|
48
|
-
get rotulo() {
|
|
49
|
-
return ROTULOS[this.estado] ?? '';
|
|
50
|
-
}
|
|
51
|
-
get descricao() {
|
|
52
|
-
return this.acao?.aviso || DESCRICOES[this.estado] || null;
|
|
53
|
-
}
|
|
54
|
-
get podeDecidir() {
|
|
55
|
-
return this.estado === 'pendente' && !this.acao.enviando;
|
|
56
|
-
}
|
|
57
|
-
get minutosRestantes() {
|
|
58
|
-
if (this.estado !== 'pendente' || !this.acao.expiraEm)
|
|
59
|
-
return null;
|
|
60
|
-
return Math.max(1, Math.ceil((this.acao.expiraEm.getTime() - this.agora) / 60000));
|
|
61
|
-
}
|
|
62
|
-
ehCor(valor) {
|
|
63
|
-
return /^#(?:[0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(valor);
|
|
64
|
-
}
|
|
65
|
-
aoConfirmar() {
|
|
66
|
-
if (this.podeDecidir)
|
|
67
|
-
this.confirmar.emit(this.acao.id);
|
|
68
|
-
}
|
|
69
|
-
aoCancelar() {
|
|
70
|
-
if (this.podeDecidir)
|
|
71
|
-
this.cancelar.emit(this.acao.id);
|
|
72
|
-
}
|
|
73
|
-
agendar() {
|
|
74
|
-
clearInterval(this.timer);
|
|
75
|
-
this.agora = Date.now();
|
|
76
|
-
if (this.acao?.estado !== 'pendente' || !this.acao.expiraEm)
|
|
77
|
-
return;
|
|
78
|
-
this.zone.runOutsideAngular(() => {
|
|
79
|
-
this.timer = setInterval(() => this.zone.run(() => {
|
|
80
|
-
this.agora = Date.now();
|
|
81
|
-
if (this.expiradaLocalmente)
|
|
82
|
-
clearInterval(this.timer);
|
|
83
|
-
this.cdr.markForCheck();
|
|
84
|
-
}), 15000);
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
UiAssistantActionCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UiAssistantActionCardComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
89
|
-
UiAssistantActionCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: UiAssistantActionCardComponent, selector: "ui-assistant-action-card", inputs: { acao: "acao" }, outputs: { confirmar: "confirmar", cancelar: "cancelar", verificar: "verificar" }, usesOnChanges: true, ngImport: i0, template: "<article class=\"uiny-acao\" [ngClass]=\"'uiny-acao--' + estado\" [attr.aria-busy]=\"acao.enviando ? 'true' : null\"\n [attr.aria-labelledby]=\"'uiny-acao-' + acao.id\">\n <header class=\"uiny-acao__topo\">\n <span class=\"uiny-acao__selo\">\n <span *ngIf=\"estado === 'executando' || acao.enviando\" class=\"uiny-acao__spinner\" aria-hidden=\"true\"></span>\n <ui-icon *ngIf=\"estado === 'concluida'\" icon=\"check_circle\" size=\"16\"></ui-icon>\n <ui-icon *ngIf=\"estado === 'falha' || estado === 'indeterminada'\" icon=\"error\" size=\"16\"></ui-icon>\n <ui-icon *ngIf=\"estado === 'pendente' && !acao.enviando\" icon=\"pending_actions\" size=\"16\"></ui-icon>\n {{ rotulo }}\n </span>\n <span *ngIf=\"minutosRestantes\" class=\"uiny-acao__prazo\">expira em {{ minutosRestantes }} min</span>\n </header>\n\n <p class=\"uiny-acao__resumo\" [id]=\"'uiny-acao-' + acao.id\">{{ acao.resumo }}</p>\n\n <dl *ngIf=\"acao.detalhes?.length\" class=\"uiny-acao__detalhes\">\n <div *ngFor=\"let d of acao.detalhes\" class=\"uiny-acao__item\">\n <dt>{{ d.rotulo }}</dt>\n <dd>\n <span *ngIf=\"ehCor(d.valor)\" class=\"uiny-acao__cor\" [style.background-color]=\"d.valor\" aria-hidden=\"true\"></span>\n {{ d.valor }}\n </dd>\n </div>\n </dl>\n\n <p *ngIf=\"descricao\" class=\"uiny-acao__descricao\" role=\"status\">{{ descricao }}</p>\n\n <div *ngIf=\"estado === 'pendente'\" class=\"uiny-acao__botoes\">\n <button type=\"button\" class=\"uiny-acao__botao uiny-acao__botao--secundario\" [disabled]=\"!podeDecidir\" (click)=\"aoCancelar()\">\n Cancelar\n </button>\n <button type=\"button\" class=\"uiny-acao__botao uiny-acao__botao--primario\" [disabled]=\"!podeDecidir\" (click)=\"aoConfirmar()\">\n Confirmar\n </button>\n </div>\n\n <div *ngIf=\"estado === 'indeterminada'\" class=\"uiny-acao__botoes\">\n <button type=\"button\" class=\"uiny-acao__botao uiny-acao__botao--secundario\" [disabled]=\"acao.enviando\" (click)=\"verificar.emit(acao.id)\">\n Verificar resultado\n </button>\n </div>\n</article>\n", styles: [":host{display:block;margin-top:8px}.uiny-acao{padding:12px 14px;border:1px solid var(--uiny-borda, #ececf3);border-left:3px solid var(--uiny-primaria, #7366ff);border-radius:12px;background:var(--uiny-fundo, #fff);box-shadow:0 2px 10px #1f1b4d0d}.uiny-acao--concluida{border-left-color:#1aa467}.uiny-acao--falha,.uiny-acao--indeterminada{border-left-color:var(--uiny-erro, #d9364f)}.uiny-acao--cancelada,.uiny-acao--expirada,.uiny-acao--invalidada{border-left-color:var(--uiny-texto-suave, #6b6b80)}.uiny-acao__topo{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}.uiny-acao__selo{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;color:var(--uiny-primaria, #7366ff)}.uiny-acao--concluida .uiny-acao__selo{color:#1aa467}.uiny-acao--falha .uiny-acao__selo,.uiny-acao--indeterminada .uiny-acao__selo{color:var(--uiny-erro, #d9364f)}.uiny-acao--cancelada .uiny-acao__selo,.uiny-acao--expirada .uiny-acao__selo,.uiny-acao--invalidada .uiny-acao__selo{color:var(--uiny-texto-suave, #6b6b80)}.uiny-acao__prazo{font-size:11px;color:var(--uiny-texto-suave, #6b6b80)}.uiny-acao__resumo{margin:0;font-weight:600;line-height:1.45;color:var(--uiny-texto, #2b2b2b);overflow-wrap:anywhere}.uiny-acao__detalhes{margin:10px 0 0;padding:8px 10px;border-radius:9px;background:var(--uiny-fundo-suave, #f7f7fb);font-size:13px}.uiny-acao__item{display:flex;justify-content:space-between;gap:12px}.uiny-acao__item+.uiny-acao__item{margin-top:4px}.uiny-acao__item dt{font-weight:400;color:var(--uiny-texto-suave, #6b6b80)}.uiny-acao__item dd{display:inline-flex;align-items:center;gap:6px;margin:0;font-weight:600;text-align:right;overflow-wrap:anywhere}.uiny-acao__cor{flex:0 0 auto;width:14px;height:14px;border:1px solid rgba(0,0,0,.12);border-radius:4px}.uiny-acao__descricao{margin:8px 0 0;font-size:12.5px;line-height:1.45;color:var(--uiny-texto-suave, #6b6b80)}.uiny-acao__botoes{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}.uiny-acao__botao{min-height:34px;padding:0 14px;border-radius:9px;font-size:13px;font-weight:600;cursor:pointer}.uiny-acao__botao:disabled{opacity:.5;cursor:not-allowed}.uiny-acao__botao:focus-visible{outline:2px solid var(--uiny-primaria, #7366ff);outline-offset:2px}.uiny-acao__botao--primario{border:1px solid var(--uiny-primaria, #7366ff);background:var(--uiny-primaria, #7366ff);color:#fff}.uiny-acao__botao--secundario{border:1px solid var(--uiny-borda, #ececf3);background:transparent;color:var(--uiny-texto, #2b2b2b)}.uiny-acao__spinner{width:12px;height:12px;border:2px solid var(--uiny-borda, #ececf3);border-top-color:var(--uiny-primaria, #7366ff);border-radius:50%;animation:uiny-girar .8s linear infinite}@keyframes uiny-girar{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.uiny-acao__spinner{animation-duration:2.4s}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.UiIconComponent, selector: "ui-icon", inputs: ["icon", "size", "class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
90
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UiAssistantActionCardComponent, decorators: [{
|
|
91
|
-
type: Component,
|
|
92
|
-
args: [{ selector: 'ui-assistant-action-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<article class=\"uiny-acao\" [ngClass]=\"'uiny-acao--' + estado\" [attr.aria-busy]=\"acao.enviando ? 'true' : null\"\n [attr.aria-labelledby]=\"'uiny-acao-' + acao.id\">\n <header class=\"uiny-acao__topo\">\n <span class=\"uiny-acao__selo\">\n <span *ngIf=\"estado === 'executando' || acao.enviando\" class=\"uiny-acao__spinner\" aria-hidden=\"true\"></span>\n <ui-icon *ngIf=\"estado === 'concluida'\" icon=\"check_circle\" size=\"16\"></ui-icon>\n <ui-icon *ngIf=\"estado === 'falha' || estado === 'indeterminada'\" icon=\"error\" size=\"16\"></ui-icon>\n <ui-icon *ngIf=\"estado === 'pendente' && !acao.enviando\" icon=\"pending_actions\" size=\"16\"></ui-icon>\n {{ rotulo }}\n </span>\n <span *ngIf=\"minutosRestantes\" class=\"uiny-acao__prazo\">expira em {{ minutosRestantes }} min</span>\n </header>\n\n <p class=\"uiny-acao__resumo\" [id]=\"'uiny-acao-' + acao.id\">{{ acao.resumo }}</p>\n\n <dl *ngIf=\"acao.detalhes?.length\" class=\"uiny-acao__detalhes\">\n <div *ngFor=\"let d of acao.detalhes\" class=\"uiny-acao__item\">\n <dt>{{ d.rotulo }}</dt>\n <dd>\n <span *ngIf=\"ehCor(d.valor)\" class=\"uiny-acao__cor\" [style.background-color]=\"d.valor\" aria-hidden=\"true\"></span>\n {{ d.valor }}\n </dd>\n </div>\n </dl>\n\n <p *ngIf=\"descricao\" class=\"uiny-acao__descricao\" role=\"status\">{{ descricao }}</p>\n\n <div *ngIf=\"estado === 'pendente'\" class=\"uiny-acao__botoes\">\n <button type=\"button\" class=\"uiny-acao__botao uiny-acao__botao--secundario\" [disabled]=\"!podeDecidir\" (click)=\"aoCancelar()\">\n Cancelar\n </button>\n <button type=\"button\" class=\"uiny-acao__botao uiny-acao__botao--primario\" [disabled]=\"!podeDecidir\" (click)=\"aoConfirmar()\">\n Confirmar\n </button>\n </div>\n\n <div *ngIf=\"estado === 'indeterminada'\" class=\"uiny-acao__botoes\">\n <button type=\"button\" class=\"uiny-acao__botao uiny-acao__botao--secundario\" [disabled]=\"acao.enviando\" (click)=\"verificar.emit(acao.id)\">\n Verificar resultado\n </button>\n </div>\n</article>\n", styles: [":host{display:block;margin-top:8px}.uiny-acao{padding:12px 14px;border:1px solid var(--uiny-borda, #ececf3);border-left:3px solid var(--uiny-primaria, #7366ff);border-radius:12px;background:var(--uiny-fundo, #fff);box-shadow:0 2px 10px #1f1b4d0d}.uiny-acao--concluida{border-left-color:#1aa467}.uiny-acao--falha,.uiny-acao--indeterminada{border-left-color:var(--uiny-erro, #d9364f)}.uiny-acao--cancelada,.uiny-acao--expirada,.uiny-acao--invalidada{border-left-color:var(--uiny-texto-suave, #6b6b80)}.uiny-acao__topo{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}.uiny-acao__selo{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;color:var(--uiny-primaria, #7366ff)}.uiny-acao--concluida .uiny-acao__selo{color:#1aa467}.uiny-acao--falha .uiny-acao__selo,.uiny-acao--indeterminada .uiny-acao__selo{color:var(--uiny-erro, #d9364f)}.uiny-acao--cancelada .uiny-acao__selo,.uiny-acao--expirada .uiny-acao__selo,.uiny-acao--invalidada .uiny-acao__selo{color:var(--uiny-texto-suave, #6b6b80)}.uiny-acao__prazo{font-size:11px;color:var(--uiny-texto-suave, #6b6b80)}.uiny-acao__resumo{margin:0;font-weight:600;line-height:1.45;color:var(--uiny-texto, #2b2b2b);overflow-wrap:anywhere}.uiny-acao__detalhes{margin:10px 0 0;padding:8px 10px;border-radius:9px;background:var(--uiny-fundo-suave, #f7f7fb);font-size:13px}.uiny-acao__item{display:flex;justify-content:space-between;gap:12px}.uiny-acao__item+.uiny-acao__item{margin-top:4px}.uiny-acao__item dt{font-weight:400;color:var(--uiny-texto-suave, #6b6b80)}.uiny-acao__item dd{display:inline-flex;align-items:center;gap:6px;margin:0;font-weight:600;text-align:right;overflow-wrap:anywhere}.uiny-acao__cor{flex:0 0 auto;width:14px;height:14px;border:1px solid rgba(0,0,0,.12);border-radius:4px}.uiny-acao__descricao{margin:8px 0 0;font-size:12.5px;line-height:1.45;color:var(--uiny-texto-suave, #6b6b80)}.uiny-acao__botoes{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}.uiny-acao__botao{min-height:34px;padding:0 14px;border-radius:9px;font-size:13px;font-weight:600;cursor:pointer}.uiny-acao__botao:disabled{opacity:.5;cursor:not-allowed}.uiny-acao__botao:focus-visible{outline:2px solid var(--uiny-primaria, #7366ff);outline-offset:2px}.uiny-acao__botao--primario{border:1px solid var(--uiny-primaria, #7366ff);background:var(--uiny-primaria, #7366ff);color:#fff}.uiny-acao__botao--secundario{border:1px solid var(--uiny-borda, #ececf3);background:transparent;color:var(--uiny-texto, #2b2b2b)}.uiny-acao__spinner{width:12px;height:12px;border:2px solid var(--uiny-borda, #ececf3);border-top-color:var(--uiny-primaria, #7366ff);border-radius:50%;animation:uiny-girar .8s linear infinite}@keyframes uiny-girar{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.uiny-acao__spinner{animation-duration:2.4s}}\n"] }]
|
|
93
|
-
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }]; }, propDecorators: { acao: [{
|
|
94
|
-
type: Input
|
|
95
|
-
}], confirmar: [{
|
|
96
|
-
type: Output
|
|
97
|
-
}], cancelar: [{
|
|
98
|
-
type: Output
|
|
99
|
-
}], verificar: [{
|
|
100
|
-
type: Output
|
|
101
|
-
}] } });
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktYXNzaXN0YW50LWFjdGlvbi1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWhlYWRlci9zcmMvbGliL2Fzc2lzdGFudC9jb21wb25lbnRzL2Fzc2lzdGFudC1hY3Rpb24tY2FyZC91aS1hc3Npc3RhbnQtYWN0aW9uLWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktaGVhZGVyL3NyYy9saWIvYXNzaXN0YW50L2NvbXBvbmVudHMvYXNzaXN0YW50LWFjdGlvbi1jYXJkL3VpLWFzc2lzdGFudC1hY3Rpb24tY2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBR04sTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDOzs7O0FBR3ZCLE1BQU0sT0FBTyxHQUFtQztJQUM1QyxRQUFRLEVBQUUsNEJBQTRCO0lBQ3RDLFVBQVUsRUFBRSxhQUFhO0lBQ3pCLFNBQVMsRUFBRSxXQUFXO0lBQ3RCLFNBQVMsRUFBRSxXQUFXO0lBQ3RCLFFBQVEsRUFBRSxVQUFVO0lBQ3BCLFVBQVUsRUFBRSw2QkFBNkI7SUFDekMsS0FBSyxFQUFFLGVBQWU7SUFDdEIsYUFBYSxFQUFFLHVCQUF1QjtDQUN6QyxDQUFDO0FBRUYsTUFBTSxVQUFVLEdBQTRDO0lBQ3hELFNBQVMsRUFBRSwyQkFBMkI7SUFDdEMsU0FBUyxFQUFFLG9CQUFvQjtJQUMvQixRQUFRLEVBQUUsbUZBQW1GO0lBQzdGLFVBQVUsRUFBRSwyRUFBMkU7SUFDdkYsS0FBSyxFQUFFLCtCQUErQjtDQUN6QyxDQUFDO0FBRUY7OztHQUdHO0FBT0gsTUFBTSxPQUFPLDhCQUE4QjtJQVd2QyxZQUFvQixHQUFzQixFQUFVLElBQVk7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QUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO2dCQUM5QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxJQUFJLENBQUMsa0JBQWtCO29CQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3ZELElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDNUIsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDZixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OzRIQXRFUSw4QkFBOEI7Z0hBQTlCLDhCQUE4QixrTUMxQzNDLDJ0RUEwQ0E7NEZEQWEsOEJBQThCO2tCQU4xQyxTQUFTOytCQUNJLDBCQUEwQixtQkFHbkIsdUJBQXVCLENBQUMsTUFBTTs2SEFJdEMsSUFBSTtzQkFBWixLQUFLO2dCQUVJLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBJbnB1dCxcclxuICAgIE5nWm9uZSxcclxuICAgIE9uQ2hhbmdlcyxcclxuICAgIE9uRGVzdHJveSxcclxuICAgIE91dHB1dFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBVaW55QWNhbywgVWlueUVzdGFkb0FjYW8gfSBmcm9tICcuLi8uLi9tb2RlbHMvdWlueS5tb2RlbHMnO1xyXG5cclxuY29uc3QgUk9UVUxPUzogUmVjb3JkPFVpbnlFc3RhZG9BY2FvLCBzdHJpbmc+ID0ge1xyXG4gICAgcGVuZGVudGU6ICdBZ3VhcmRhbmRvIHN1YSBjb25maXJtYcOnw6NvJyxcclxuICAgIGV4ZWN1dGFuZG86ICdFeGVjdXRhbmRv4oCmJyxcclxuICAgIGNvbmNsdWlkYTogJ0NvbmNsdcOtZGEnLFxyXG4gICAgY2FuY2VsYWRhOiAnQ2FuY2VsYWRhJyxcclxuICAgIGV4cGlyYWRhOiAnRXhwaXJhZGEnLFxyXG4gICAgaW52YWxpZGFkYTogJ1ByZWNpc2EgZGUgbm92YSBjb25maXJtYcOnw6NvJyxcclxuICAgIGZhbGhhOiAnTsOjbyBjb25jbHXDrWRhJyxcclxuICAgIGluZGV0ZXJtaW5hZGE6ICdSZXN1bHRhZG8gYSB2ZXJpZmljYXInLFxyXG59O1xyXG5cclxuY29uc3QgREVTQ1JJQ09FUzogUGFydGlhbDxSZWNvcmQ8VWlueUVzdGFkb0FjYW8sIHN0cmluZz4+ID0ge1xyXG4gICAgY29uY2x1aWRhOiAnQSBhbHRlcmHDp8OjbyBmb2kgYXBsaWNhZGEuJyxcclxuICAgIGNhbmNlbGFkYTogJ05hZGEgZm9pIGFsdGVyYWRvLicsXHJcbiAgICBleHBpcmFkYTogJ08gcHJhem8gcGFyYSBjb25maXJtYXIgdGVybWlub3UuIE5hZGEgZm9pIGFsdGVyYWRvOyBwZcOnYSBkZSBub3ZvIHNlIGFpbmRhIHF1aXNlci4nLFxyXG4gICAgaW52YWxpZGFkYTogJ09zIGRhZG9zIG11ZGFyYW0gZGVzZGUgYSBwcm9wb3N0YS4gUGXDp2EgYSBhbHRlcmHDp8OjbyBkZSBub3ZvIHBhcmEgcmV2aXNhci4nLFxyXG4gICAgZmFsaGE6ICdBIGFsdGVyYcOnw6NvIG7Do28gZm9pIGFwbGljYWRhLicsXHJcbn07XHJcblxyXG4vKipcclxuICogQ2FyZCBkZSBhw6fDo28gcGVuZGVudGUuIEEgY29uZmlybWHDp8OjbyBzw7MgYWNvbnRlY2UgcGVsbyBjbGlxdWUgZW0gXCJDb25maXJtYXJcIjpcclxuICogbyBjYXJkIGVtaXRlIGFwZW5hcyBvIGlkIGRhIGHDp8OjbyBwZXJzaXN0aWRhLCBzZW0gYXJndW1lbnRvcy5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd1aS1hc3Npc3RhbnQtYWN0aW9uLWNhcmQnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3VpLWFzc2lzdGFudC1hY3Rpb24tY2FyZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi91aS1hc3Npc3RhbnQtYWN0aW9uLWNhcmQuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVaUFzc2lzdGFudEFjdGlvbkNhcmRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcblxyXG4gICAgQElucHV0KCkgYWNhbzogVWlueUFjYW87XHJcblxyXG4gICAgQE91dHB1dCgpIGNvbmZpcm1hciA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gICAgQE91dHB1dCgpIGNhbmNlbGFyID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgICBAT3V0cHV0KCkgdmVyaWZpY2FyID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gICAgcHVibGljIGFnb3JhID0gRGF0ZS5ub3coKTtcclxuICAgIHByaXZhdGUgdGltZXI6IGFueTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgem9uZTogTmdab25lKSB7IH1cclxuXHJcbiAgICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmFnZW5kYXIoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICBjbGVhckludGVydmFsKHRoaXMudGltZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBPIHNlcnZpZG9yIGRlY2lkZSBhIGV4cGlyYcOnw6NvOyBhcXVpIHPDsyBldml0YW1vcyBvZmVyZWNlciB1bSBjbGlxdWUgcXVlIGrDoSB2YWkgZmFsaGFyLiAqL1xyXG4gICAgZ2V0IGV4cGlyYWRhTG9jYWxtZW50ZSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hY2FvPy5lc3RhZG8gPT09ICdwZW5kZW50ZScgJiYgISF0aGlzLmFjYW8uZXhwaXJhRW0gJiYgdGhpcy5hY2FvLmV4cGlyYUVtLmdldFRpbWUoKSA8PSB0aGlzLmFnb3JhO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBlc3RhZG8oKTogVWlueUVzdGFkb0FjYW8ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmV4cGlyYWRhTG9jYWxtZW50ZSA/ICdleHBpcmFkYScgOiB0aGlzLmFjYW8/LmVzdGFkbztcclxuICAgIH1cclxuXHJcbiAgICBnZXQgcm90dWxvKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIFJPVFVMT1NbdGhpcy5lc3RhZG9dID8/ICcnO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBkZXNjcmljYW8oKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWNhbz8uYXZpc28gfHwgREVTQ1JJQ09FU1t0aGlzLmVzdGFkb10gfHwgbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgcG9kZURlY2lkaXIoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZXN0YWRvID09PSAncGVuZGVudGUnICYmICF0aGlzLmFjYW8uZW52aWFuZG87XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IG1pbnV0b3NSZXN0YW50ZXMoKTogbnVtYmVyIHwgbnVsbCB7XHJcbiAgICAgICAgaWYgKHRoaXMuZXN0YWRvICE9PSAncGVuZGVudGUnIHx8ICF0aGlzLmFjYW8uZXhwaXJhRW0pIHJldHVybiBudWxsO1xyXG4gICAgICAgIHJldHVybiBNYXRoLm1heCgxLCBNYXRoLmNlaWwoKHRoaXMuYWNhby5leHBpcmFFbS5nZXRUaW1lKCkgLSB0aGlzLmFnb3JhKSAvIDYwMDAwKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZWhDb3IodmFsb3I6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAvXiMoPzpbMC05YS1mXXszfXxbMC05YS1mXXs2fXxbMC05YS1mXXs4fSkkL2kudGVzdCh2YWxvcik7XHJcbiAgICB9XHJcblxyXG4gICAgYW9Db25maXJtYXIoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMucG9kZURlY2lkaXIpIHRoaXMuY29uZmlybWFyLmVtaXQodGhpcy5hY2FvLmlkKTtcclxuICAgIH1cclxuXHJcbiAgICBhb0NhbmNlbGFyKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnBvZGVEZWNpZGlyKSB0aGlzLmNhbmNlbGFyLmVtaXQodGhpcy5hY2FvLmlkKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFnZW5kYXIoKTogdm9pZCB7XHJcbiAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVyKTtcclxuICAgICAgICB0aGlzLmFnb3JhID0gRGF0ZS5ub3coKTtcclxuICAgICAgICBpZiAodGhpcy5hY2FvPy5lc3RhZG8gIT09ICdwZW5kZW50ZScgfHwgIXRoaXMuYWNhby5leHBpcmFFbSkgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudGltZXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB0aGlzLnpvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWdvcmEgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZXhwaXJhZGFMb2NhbG1lbnRlKSBjbGVhckludGVydmFsKHRoaXMudGltZXIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICAgIH0pLCAxNTAwMCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuIiwiPGFydGljbGUgY2xhc3M9XCJ1aW55LWFjYW9cIiBbbmdDbGFzc109XCIndWlueS1hY2FvLS0nICsgZXN0YWRvXCIgW2F0dHIuYXJpYS1idXN5XT1cImFjYW8uZW52aWFuZG8gPyAndHJ1ZScgOiBudWxsXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiJ3VpbnktYWNhby0nICsgYWNhby5pZFwiPlxuICAgIDxoZWFkZXIgY2xhc3M9XCJ1aW55LWFjYW9fX3RvcG9cIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ1aW55LWFjYW9fX3NlbG9cIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZXN0YWRvID09PSAnZXhlY3V0YW5kbycgfHwgYWNhby5lbnZpYW5kb1wiIGNsYXNzPVwidWlueS1hY2FvX19zcGlubmVyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgPHVpLWljb24gKm5nSWY9XCJlc3RhZG8gPT09ICdjb25jbHVpZGEnXCIgaWNvbj1cImNoZWNrX2NpcmNsZVwiIHNpemU9XCIxNlwiPjwvdWktaWNvbj5cbiAgICAgICAgICAgIDx1aS1pY29uICpuZ0lmPVwiZXN0YWRvID09PSAnZmFsaGEnIHx8IGVzdGFkbyA9PT0gJ2luZGV0ZXJtaW5hZGEnXCIgaWNvbj1cImVycm9yXCIgc2l6ZT1cIjE2XCI+PC91aS1pY29uPlxuICAgICAgICAgICAgPHVpLWljb24gKm5nSWY9XCJlc3RhZG8gPT09ICdwZW5kZW50ZScgJiYgIWFjYW8uZW52aWFuZG9cIiBpY29uPVwicGVuZGluZ19hY3Rpb25zXCIgc2l6ZT1cIjE2XCI+PC91aS1pY29uPlxuICAgICAgICAgICAge3sgcm90dWxvIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJtaW51dG9zUmVzdGFudGVzXCIgY2xhc3M9XCJ1aW55LWFjYW9fX3ByYXpvXCI+ZXhwaXJhIGVtIHt7IG1pbnV0b3NSZXN0YW50ZXMgfX0gbWluPC9zcGFuPlxuICAgIDwvaGVhZGVyPlxuXG4gICAgPHAgY2xhc3M9XCJ1aW55LWFjYW9fX3Jlc3Vtb1wiIFtpZF09XCIndWlueS1hY2FvLScgKyBhY2FvLmlkXCI+e3sgYWNhby5yZXN1bW8gfX08L3A+XG5cbiAgICA8ZGwgKm5nSWY9XCJhY2FvLmRldGFsaGVzPy5sZW5ndGhcIiBjbGFzcz1cInVpbnktYWNhb19fZGV0YWxoZXNcIj5cbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZCBvZiBhY2FvLmRldGFsaGVzXCIgY2xhc3M9XCJ1aW55LWFjYW9fX2l0ZW1cIj5cbiAgICAgICAgICAgIDxkdD57eyBkLnJvdHVsbyB9fTwvZHQ+XG4gICAgICAgICAgICA8ZGQ+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJlaENvcihkLnZhbG9yKVwiIGNsYXNzPVwidWlueS1hY2FvX19jb3JcIiBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJkLnZhbG9yXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIHt7IGQudmFsb3IgfX1cbiAgICAgICAgICAgIDwvZGQ+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGw+XG5cbiAgICA8cCAqbmdJZj1cImRlc2NyaWNhb1wiIGNsYXNzPVwidWlueS1hY2FvX19kZXNjcmljYW9cIiByb2xlPVwic3RhdHVzXCI+e3sgZGVzY3JpY2FvIH19PC9wPlxuXG4gICAgPGRpdiAqbmdJZj1cImVzdGFkbyA9PT0gJ3BlbmRlbnRlJ1wiIGNsYXNzPVwidWlueS1hY2FvX19ib3RvZXNcIj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ1aW55LWFjYW9fX2JvdGFvIHVpbnktYWNhb19fYm90YW8tLXNlY3VuZGFyaW9cIiBbZGlzYWJsZWRdPVwiIXBvZGVEZWNpZGlyXCIgKGNsaWNrKT1cImFvQ2FuY2VsYXIoKVwiPlxuICAgICAgICAgICAgQ2FuY2VsYXJcbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidWlueS1hY2FvX19ib3RhbyB1aW55LWFjYW9fX2JvdGFvLS1wcmltYXJpb1wiIFtkaXNhYmxlZF09XCIhcG9kZURlY2lkaXJcIiAoY2xpY2spPVwiYW9Db25maXJtYXIoKVwiPlxuICAgICAgICAgICAgQ29uZmlybWFyXG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj1cImVzdGFkbyA9PT0gJ2luZGV0ZXJtaW5hZGEnXCIgY2xhc3M9XCJ1aW55LWFjYW9fX2JvdG9lc1wiPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInVpbnktYWNhb19fYm90YW8gdWlueS1hY2FvX19ib3Rhby0tc2VjdW5kYXJpb1wiIFtkaXNhYmxlZF09XCJhY2FvLmVudmlhbmRvXCIgKGNsaWNrKT1cInZlcmlmaWNhci5lbWl0KGFjYW8uaWQpXCI+XG4gICAgICAgICAgICBWZXJpZmljYXIgcmVzdWx0YWRvXG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9hcnRpY2xlPlxuIl19
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
2
|
-
import { UiAssistantService } from '../../services/ui-assistant.service';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "../../services/ui-assistant.service";
|
|
5
|
-
import * as i2 from "@angular/common";
|
|
6
|
-
/** Botão que abre/fecha a Uiny. Só aparece quando a assistente está disponível. */
|
|
7
|
-
export class UiAssistantButtonComponent {
|
|
8
|
-
constructor(assistant) {
|
|
9
|
-
this.assistant = assistant;
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
UiAssistantButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UiAssistantButtonComponent, deps: [{ token: i1.UiAssistantService }], target: i0.ɵɵFactoryTarget.Component });
|
|
13
|
-
UiAssistantButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: UiAssistantButtonComponent, selector: "ui-assistant-button", ngImport: i0, template: "<button *ngIf=\"assistant.disponivel$ | async\" #botao type=\"button\" class=\"uiny-trigger\"\n [class.is-open]=\"assistant.aberto$ | async\"\n [attr.aria-expanded]=\"(assistant.aberto$ | async) ? 'true' : 'false'\"\n aria-controls=\"uiny-painel\"\n [attr.aria-label]=\"(assistant.aberto$ | async) ? 'Fechar a Uiny, assistente da Uishop' : 'Abrir a Uiny, assistente da Uishop'\"\n [title]=\"(assistant.aberto$ | async) ? 'Fechar a Uiny' : 'Falar com a Uiny'\"\n (click)=\"assistant.alternar(botao)\">\n <svg class=\"uiny-trigger__mark\" viewBox=\"0 0 24 24\" width=\"18\" height=\"18\" aria-hidden=\"true\" focusable=\"false\">\n <path d=\"M12 2.5c.5 3.9 2.6 6.9 6.4 8.2.5.2.5.9 0 1.1-3.8 1.3-5.9 4.3-6.4 8.2-.1.6-.9.6-1 0-.5-3.9-2.6-6.9-6.4-8.2-.5-.2-.5-.9 0-1.1 3.8-1.3 5.9-4.3 6.4-8.2.1-.6.9-.6 1 0Z\" fill=\"currentColor\"/>\n <path d=\"M19 2.8c.2 1.3.9 2.2 2.1 2.6.2.1.2.3 0 .4-1.2.4-1.9 1.3-2.1 2.6 0 .2-.3.2-.3 0-.2-1.3-.9-2.2-2.1-2.6-.2-.1-.2-.3 0-.4 1.2-.4 1.9-1.3 2.1-2.6 0-.2.3-.2.3 0Z\" fill=\"currentColor\" opacity=\".7\"/>\n </svg>\n <span class=\"uiny-trigger__label\">Uiny</span>\n</button>\n", styles: [":host{display:inline-flex}.uiny-trigger{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 14px 0 10px;border:1px solid rgba(115,102,255,.28);border-radius:999px;background:rgba(115,102,255,.08);color:var(--theme-default, #7366ff);font-size:13px;font-weight:600;line-height:1;cursor:pointer;transition:background-color .15s ease,border-color .15s ease,color .15s ease}.uiny-trigger:hover{background:rgba(115,102,255,.14);border-color:#7366ff73}.uiny-trigger:focus-visible{outline:2px solid var(--theme-default, #7366ff);outline-offset:2px}.uiny-trigger.is-open{background:var(--theme-default, #7366ff);border-color:var(--theme-default, #7366ff);color:#fff}.uiny-trigger__mark{flex:0 0 auto}@media (max-width: 575.98px){.uiny-trigger{width:34px;padding:0;justify-content:center}.uiny-trigger__label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}}@media (prefers-reduced-motion: reduce){.uiny-trigger{transition:none}}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
14
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UiAssistantButtonComponent, decorators: [{
|
|
15
|
-
type: Component,
|
|
16
|
-
args: [{ selector: 'ui-assistant-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button *ngIf=\"assistant.disponivel$ | async\" #botao type=\"button\" class=\"uiny-trigger\"\n [class.is-open]=\"assistant.aberto$ | async\"\n [attr.aria-expanded]=\"(assistant.aberto$ | async) ? 'true' : 'false'\"\n aria-controls=\"uiny-painel\"\n [attr.aria-label]=\"(assistant.aberto$ | async) ? 'Fechar a Uiny, assistente da Uishop' : 'Abrir a Uiny, assistente da Uishop'\"\n [title]=\"(assistant.aberto$ | async) ? 'Fechar a Uiny' : 'Falar com a Uiny'\"\n (click)=\"assistant.alternar(botao)\">\n <svg class=\"uiny-trigger__mark\" viewBox=\"0 0 24 24\" width=\"18\" height=\"18\" aria-hidden=\"true\" focusable=\"false\">\n <path d=\"M12 2.5c.5 3.9 2.6 6.9 6.4 8.2.5.2.5.9 0 1.1-3.8 1.3-5.9 4.3-6.4 8.2-.1.6-.9.6-1 0-.5-3.9-2.6-6.9-6.4-8.2-.5-.2-.5-.9 0-1.1 3.8-1.3 5.9-4.3 6.4-8.2.1-.6.9-.6 1 0Z\" fill=\"currentColor\"/>\n <path d=\"M19 2.8c.2 1.3.9 2.2 2.1 2.6.2.1.2.3 0 .4-1.2.4-1.9 1.3-2.1 2.6 0 .2-.3.2-.3 0-.2-1.3-.9-2.2-2.1-2.6-.2-.1-.2-.3 0-.4 1.2-.4 1.9-1.3 2.1-2.6 0-.2.3-.2.3 0Z\" fill=\"currentColor\" opacity=\".7\"/>\n </svg>\n <span class=\"uiny-trigger__label\">Uiny</span>\n</button>\n", styles: [":host{display:inline-flex}.uiny-trigger{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 14px 0 10px;border:1px solid rgba(115,102,255,.28);border-radius:999px;background:rgba(115,102,255,.08);color:var(--theme-default, #7366ff);font-size:13px;font-weight:600;line-height:1;cursor:pointer;transition:background-color .15s ease,border-color .15s ease,color .15s ease}.uiny-trigger:hover{background:rgba(115,102,255,.14);border-color:#7366ff73}.uiny-trigger:focus-visible{outline:2px solid var(--theme-default, #7366ff);outline-offset:2px}.uiny-trigger.is-open{background:var(--theme-default, #7366ff);border-color:var(--theme-default, #7366ff);color:#fff}.uiny-trigger__mark{flex:0 0 auto}@media (max-width: 575.98px){.uiny-trigger{width:34px;padding:0;justify-content:center}.uiny-trigger__label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}}@media (prefers-reduced-motion: reduce){.uiny-trigger{transition:none}}\n"] }]
|
|
17
|
-
}], ctorParameters: function () { return [{ type: i1.UiAssistantService }]; } });
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktYXNzaXN0YW50LWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1oZWFkZXIvc3JjL2xpYi9hc3Npc3RhbnQvY29tcG9uZW50cy9hc3Npc3RhbnQtYnV0dG9uL3VpLWFzc2lzdGFudC1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktaGVhZGVyL3NyYy9saWIvYXNzaXN0YW50L2NvbXBvbmVudHMvYXNzaXN0YW50LWJ1dHRvbi91aS1hc3Npc3RhbnQtYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7Ozs7QUFFekUsbUZBQW1GO0FBT25GLE1BQU0sT0FBTywwQkFBMEI7SUFDbkMsWUFBbUIsU0FBNkI7UUFBN0IsY0FBUyxHQUFULFNBQVMsQ0FBb0I7SUFBSSxDQUFDOzt3SEFENUMsMEJBQTBCOzRHQUExQiwwQkFBMEIsMkRDVnZDLGdvQ0FhQTs0RkRIYSwwQkFBMEI7a0JBTnRDLFNBQVM7K0JBQ0kscUJBQXFCLG1CQUdkLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVaUFzc2lzdGFudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91aS1hc3Npc3RhbnQuc2VydmljZSc7XG5cbi8qKiBCb3TDo28gcXVlIGFicmUvZmVjaGEgYSBVaW55LiBTw7MgYXBhcmVjZSBxdWFuZG8gYSBhc3Npc3RlbnRlIGVzdMOhIGRpc3BvbsOtdmVsLiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd1aS1hc3Npc3RhbnQtYnV0dG9uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdWktYXNzaXN0YW50LWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdWktYXNzaXN0YW50LWJ1dHRvbi5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFVpQXNzaXN0YW50QnV0dG9uQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgYXNzaXN0YW50OiBVaUFzc2lzdGFudFNlcnZpY2UpIHsgfVxufVxuIiwiPGJ1dHRvbiAqbmdJZj1cImFzc2lzdGFudC5kaXNwb25pdmVsJCB8IGFzeW5jXCIgI2JvdGFvIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInVpbnktdHJpZ2dlclwiXG4gICAgW2NsYXNzLmlzLW9wZW5dPVwiYXNzaXN0YW50LmFiZXJ0byQgfCBhc3luY1wiXG4gICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCIoYXNzaXN0YW50LmFiZXJ0byQgfCBhc3luYykgPyAndHJ1ZScgOiAnZmFsc2UnXCJcbiAgICBhcmlhLWNvbnRyb2xzPVwidWlueS1wYWluZWxcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiKGFzc2lzdGFudC5hYmVydG8kIHwgYXN5bmMpID8gJ0ZlY2hhciBhIFVpbnksIGFzc2lzdGVudGUgZGEgVWlzaG9wJyA6ICdBYnJpciBhIFVpbnksIGFzc2lzdGVudGUgZGEgVWlzaG9wJ1wiXG4gICAgW3RpdGxlXT1cIihhc3Npc3RhbnQuYWJlcnRvJCB8IGFzeW5jKSA/ICdGZWNoYXIgYSBVaW55JyA6ICdGYWxhciBjb20gYSBVaW55J1wiXG4gICAgKGNsaWNrKT1cImFzc2lzdGFudC5hbHRlcm5hcihib3RhbylcIj5cbiAgICA8c3ZnIGNsYXNzPVwidWlueS10cmlnZ2VyX19tYXJrXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGZvY3VzYWJsZT1cImZhbHNlXCI+XG4gICAgICAgIDxwYXRoIGQ9XCJNMTIgMi41Yy41IDMuOSAyLjYgNi45IDYuNCA4LjIuNS4yLjUuOSAwIDEuMS0zLjggMS4zLTUuOSA0LjMtNi40IDguMi0uMS42LS45LjYtMSAwLS41LTMuOS0yLjYtNi45LTYuNC04LjItLjUtLjItLjUtLjkgMC0xLjEgMy44LTEuMyA1LjktNC4zIDYuNC04LjIuMS0uNi45LS42IDEgMFpcIiBmaWxsPVwiY3VycmVudENvbG9yXCIvPlxuICAgICAgICA8cGF0aCBkPVwiTTE5IDIuOGMuMiAxLjMuOSAyLjIgMi4xIDIuNi4yLjEuMi4zIDAgLjQtMS4yLjQtMS45IDEuMy0yLjEgMi42IDAgLjItLjMuMi0uMyAwLS4yLTEuMy0uOS0yLjItMi4xLTIuNi0uMi0uMS0uMi0uMyAwLS40IDEuMi0uNCAxLjktMS4zIDIuMS0yLjYgMC0uMi4zLS4yLjMgMFpcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgb3BhY2l0eT1cIi43XCIvPlxuICAgIDwvc3ZnPlxuICAgIDxzcGFuIGNsYXNzPVwidWlueS10cmlnZ2VyX19sYWJlbFwiPlVpbnk8L3NwYW4+XG48L2J1dHRvbj5cbiJdfQ==
|
package/esm2020/lib/assistant/components/assistant-composer/ui-assistant-composer.component.mjs
DELETED
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
-
import { UINY_MENSAGEM_MAX_CARACTERES } from '../../uiny.config';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/common";
|
|
5
|
-
import * as i2 from "uitec-ng-icon";
|
|
6
|
-
const ALTURA_MAXIMA = 160;
|
|
7
|
-
/** Campo de mensagem: Enter envia, Shift+Enter quebra linha, cresce até ALTURA_MAXIMA. */
|
|
8
|
-
export class UiAssistantComposerComponent {
|
|
9
|
-
constructor() {
|
|
10
|
-
this.desabilitado = false;
|
|
11
|
-
this.enviando = false;
|
|
12
|
-
/** Explica por que o envio está bloqueado (sem internet, carregando...). */
|
|
13
|
-
this.motivo = null;
|
|
14
|
-
this.enviar = new EventEmitter();
|
|
15
|
-
this.max = UINY_MENSAGEM_MAX_CARACTERES;
|
|
16
|
-
this.texto = '';
|
|
17
|
-
}
|
|
18
|
-
get vazio() {
|
|
19
|
-
return !this.texto.trim();
|
|
20
|
-
}
|
|
21
|
-
get bloqueado() {
|
|
22
|
-
return this.desabilitado || this.enviando || this.vazio || this.texto.length > this.max;
|
|
23
|
-
}
|
|
24
|
-
get mostrarContador() {
|
|
25
|
-
return this.texto.length > this.max - 400;
|
|
26
|
-
}
|
|
27
|
-
focar() {
|
|
28
|
-
this.campo?.nativeElement.focus({ preventScroll: true });
|
|
29
|
-
}
|
|
30
|
-
limpar() {
|
|
31
|
-
this.texto = '';
|
|
32
|
-
if (this.campo) {
|
|
33
|
-
this.campo.nativeElement.value = '';
|
|
34
|
-
this.ajustarAltura();
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
aoDigitar(valor) {
|
|
38
|
-
this.texto = valor;
|
|
39
|
-
this.ajustarAltura();
|
|
40
|
-
}
|
|
41
|
-
aoTeclar(evento) {
|
|
42
|
-
if (evento.key !== 'Enter' || evento.shiftKey)
|
|
43
|
-
return;
|
|
44
|
-
// durante a composição (IME, acentos em alguns teclados) Enter confirma o caractere
|
|
45
|
-
if (evento.isComposing || evento.keyCode === 229)
|
|
46
|
-
return;
|
|
47
|
-
evento.preventDefault();
|
|
48
|
-
this.submeter();
|
|
49
|
-
}
|
|
50
|
-
submeter() {
|
|
51
|
-
if (this.bloqueado)
|
|
52
|
-
return;
|
|
53
|
-
this.enviar.emit(this.texto.trim());
|
|
54
|
-
}
|
|
55
|
-
ajustarAltura() {
|
|
56
|
-
const el = this.campo.nativeElement;
|
|
57
|
-
el.style.height = 'auto';
|
|
58
|
-
el.style.height = Math.min(el.scrollHeight, ALTURA_MAXIMA) + 'px';
|
|
59
|
-
el.style.overflowY = el.scrollHeight > ALTURA_MAXIMA ? 'auto' : 'hidden';
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
UiAssistantComposerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UiAssistantComposerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
63
|
-
UiAssistantComposerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: UiAssistantComposerComponent, selector: "ui-assistant-composer", inputs: { desabilitado: "desabilitado", enviando: "enviando", motivo: "motivo" }, outputs: { enviar: "enviar" }, viewQueries: [{ propertyName: "campo", first: true, predicate: ["campo"], descendants: true, static: true }], ngImport: i0, template: "<form class=\"uiny-composer\" (submit)=\"$event.preventDefault(); submeter()\">\n <label for=\"uiny-campo\" class=\"uiny-sr\">Mensagem para a Uiny</label>\n <div class=\"uiny-composer__caixa\" [class.is-desabilitado]=\"desabilitado\">\n <textarea #campo id=\"uiny-campo\" class=\"uiny-composer__campo\" rows=\"1\"\n placeholder=\"Pergunte algo para a Uiny\"\n [value]=\"texto\"\n [attr.aria-describedby]=\"motivo ? 'uiny-campo-motivo' : 'uiny-campo-dica'\"\n [attr.maxlength]=\"max + 200\"\n (input)=\"aoDigitar(campo.value)\"\n (keydown)=\"aoTeclar($event)\"></textarea>\n\n <button type=\"submit\" class=\"uiny-composer__enviar\" [disabled]=\"bloqueado\"\n [attr.aria-label]=\"enviando ? 'Aguardando a resposta da Uiny' : 'Enviar mensagem'\"\n [title]=\"enviando ? 'Aguardando a resposta' : 'Enviar (Enter)'\">\n <span *ngIf=\"enviando\" class=\"uiny-composer__spinner\" aria-hidden=\"true\"></span>\n <ui-icon *ngIf=\"!enviando\" icon=\"arrow_upward\" size=\"20\"></ui-icon>\n </button>\n </div>\n\n <div class=\"uiny-composer__rodape\">\n <span *ngIf=\"motivo\" id=\"uiny-campo-motivo\" class=\"uiny-composer__motivo\">{{ motivo }}</span>\n <span *ngIf=\"!motivo\" id=\"uiny-campo-dica\">Enter envia \u00B7 Shift+Enter quebra a linha</span>\n <span *ngIf=\"mostrarContador\" class=\"uiny-composer__contador\" [class.is-excedido]=\"texto.length > max\">\n {{ texto.length }}/{{ max }}\n </span>\n </div>\n</form>\n", styles: [":host{display:block;padding:10px 12px 12px;border-top:1px solid var(--uiny-borda, #ececf3);background:var(--uiny-fundo, #fff)}.uiny-composer__caixa{display:flex;align-items:flex-end;gap:8px;padding:6px 6px 6px 12px;border:1px solid var(--uiny-borda, #ececf3);border-radius:14px;background:var(--uiny-fundo-suave, #f7f7fb);transition:border-color .15s ease,box-shadow .15s ease}.uiny-composer__caixa:focus-within{border-color:var(--uiny-primaria, #7366ff);box-shadow:0 0 0 3px #7366ff26}.uiny-composer__caixa.is-desabilitado{opacity:.75}.uiny-composer__campo{flex:1 1 auto;min-width:0;max-height:160px;padding:6px 0;border:0;outline:0;background:transparent;color:var(--uiny-texto, #2b2b2b);font:inherit;font-size:14px;line-height:1.45;resize:none;overflow-y:hidden}.uiny-composer__campo::placeholder{color:var(--uiny-texto-suave, #6b6b80)}.uiny-composer__enviar{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border:0;border-radius:10px;background:var(--uiny-primaria, #7366ff);color:#fff;cursor:pointer;transition:opacity .15s ease}.uiny-composer__enviar:disabled{opacity:.35;cursor:not-allowed}.uiny-composer__enviar:focus-visible{outline:2px solid var(--uiny-primaria, #7366ff);outline-offset:2px}.uiny-composer__spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:uiny-girar .8s linear infinite}.uiny-composer__rodape{display:flex;justify-content:space-between;gap:8px;margin-top:6px;padding:0 4px;font-size:11px;color:var(--uiny-texto-suave, #6b6b80)}.uiny-composer__motivo{color:var(--uiny-offline-texto, #8a5300)}.uiny-composer__contador.is-excedido{color:var(--uiny-erro, #d9364f);font-weight:600}.uiny-sr{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}@keyframes uiny-girar{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.uiny-composer__caixa,.uiny-composer__enviar{transition:none}.uiny-composer__spinner{animation-duration:2.4s}}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.UiIconComponent, selector: "ui-icon", inputs: ["icon", "size", "class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
64
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UiAssistantComposerComponent, decorators: [{
|
|
65
|
-
type: Component,
|
|
66
|
-
args: [{ selector: 'ui-assistant-composer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<form class=\"uiny-composer\" (submit)=\"$event.preventDefault(); submeter()\">\n <label for=\"uiny-campo\" class=\"uiny-sr\">Mensagem para a Uiny</label>\n <div class=\"uiny-composer__caixa\" [class.is-desabilitado]=\"desabilitado\">\n <textarea #campo id=\"uiny-campo\" class=\"uiny-composer__campo\" rows=\"1\"\n placeholder=\"Pergunte algo para a Uiny\"\n [value]=\"texto\"\n [attr.aria-describedby]=\"motivo ? 'uiny-campo-motivo' : 'uiny-campo-dica'\"\n [attr.maxlength]=\"max + 200\"\n (input)=\"aoDigitar(campo.value)\"\n (keydown)=\"aoTeclar($event)\"></textarea>\n\n <button type=\"submit\" class=\"uiny-composer__enviar\" [disabled]=\"bloqueado\"\n [attr.aria-label]=\"enviando ? 'Aguardando a resposta da Uiny' : 'Enviar mensagem'\"\n [title]=\"enviando ? 'Aguardando a resposta' : 'Enviar (Enter)'\">\n <span *ngIf=\"enviando\" class=\"uiny-composer__spinner\" aria-hidden=\"true\"></span>\n <ui-icon *ngIf=\"!enviando\" icon=\"arrow_upward\" size=\"20\"></ui-icon>\n </button>\n </div>\n\n <div class=\"uiny-composer__rodape\">\n <span *ngIf=\"motivo\" id=\"uiny-campo-motivo\" class=\"uiny-composer__motivo\">{{ motivo }}</span>\n <span *ngIf=\"!motivo\" id=\"uiny-campo-dica\">Enter envia \u00B7 Shift+Enter quebra a linha</span>\n <span *ngIf=\"mostrarContador\" class=\"uiny-composer__contador\" [class.is-excedido]=\"texto.length > max\">\n {{ texto.length }}/{{ max }}\n </span>\n </div>\n</form>\n", styles: [":host{display:block;padding:10px 12px 12px;border-top:1px solid var(--uiny-borda, #ececf3);background:var(--uiny-fundo, #fff)}.uiny-composer__caixa{display:flex;align-items:flex-end;gap:8px;padding:6px 6px 6px 12px;border:1px solid var(--uiny-borda, #ececf3);border-radius:14px;background:var(--uiny-fundo-suave, #f7f7fb);transition:border-color .15s ease,box-shadow .15s ease}.uiny-composer__caixa:focus-within{border-color:var(--uiny-primaria, #7366ff);box-shadow:0 0 0 3px #7366ff26}.uiny-composer__caixa.is-desabilitado{opacity:.75}.uiny-composer__campo{flex:1 1 auto;min-width:0;max-height:160px;padding:6px 0;border:0;outline:0;background:transparent;color:var(--uiny-texto, #2b2b2b);font:inherit;font-size:14px;line-height:1.45;resize:none;overflow-y:hidden}.uiny-composer__campo::placeholder{color:var(--uiny-texto-suave, #6b6b80)}.uiny-composer__enviar{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border:0;border-radius:10px;background:var(--uiny-primaria, #7366ff);color:#fff;cursor:pointer;transition:opacity .15s ease}.uiny-composer__enviar:disabled{opacity:.35;cursor:not-allowed}.uiny-composer__enviar:focus-visible{outline:2px solid var(--uiny-primaria, #7366ff);outline-offset:2px}.uiny-composer__spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:uiny-girar .8s linear infinite}.uiny-composer__rodape{display:flex;justify-content:space-between;gap:8px;margin-top:6px;padding:0 4px;font-size:11px;color:var(--uiny-texto-suave, #6b6b80)}.uiny-composer__motivo{color:var(--uiny-offline-texto, #8a5300)}.uiny-composer__contador.is-excedido{color:var(--uiny-erro, #d9364f);font-weight:600}.uiny-sr{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}@keyframes uiny-girar{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.uiny-composer__caixa,.uiny-composer__enviar{transition:none}.uiny-composer__spinner{animation-duration:2.4s}}\n"] }]
|
|
67
|
-
}], propDecorators: { desabilitado: [{
|
|
68
|
-
type: Input
|
|
69
|
-
}], enviando: [{
|
|
70
|
-
type: Input
|
|
71
|
-
}], motivo: [{
|
|
72
|
-
type: Input
|
|
73
|
-
}], enviar: [{
|
|
74
|
-
type: Output
|
|
75
|
-
}], campo: [{
|
|
76
|
-
type: ViewChild,
|
|
77
|
-
args: ['campo', { static: true }]
|
|
78
|
-
}] } });
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktYXNzaXN0YW50LWNvbXBvc2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWhlYWRlci9zcmMvbGliL2Fzc2lzdGFudC9jb21wb25lbnRzL2Fzc2lzdGFudC1jb21wb3Nlci91aS1hc3Npc3RhbnQtY29tcG9zZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktaGVhZGVyL3NyYy9saWIvYXNzaXN0YW50L2NvbXBvbmVudHMvYXNzaXN0YW50LWNvbXBvc2VyL3VpLWFzc2lzdGFudC1jb21wb3Nlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkgsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7QUFFakUsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDO0FBRTFCLDBGQUEwRjtBQU8xRixNQUFNLE9BQU8sNEJBQTRCO0lBTnpDO1FBUWEsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUMxQiw0RUFBNEU7UUFDbkUsV0FBTSxHQUFrQixJQUFJLENBQUM7UUFFNUIsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFJOUIsUUFBRyxHQUFHLDRCQUE0QixDQUFDO1FBQzVDLFVBQUssR0FBRyxFQUFFLENBQUM7S0FrRHJCO0lBaERHLElBQUksS0FBSztRQUNMLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDVCxPQUFPLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDNUYsQ0FBQztJQUVELElBQUksZUFBZTtRQUNmLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7SUFDOUMsQ0FBQztJQUVELEtBQUs7UUFDRCxJQUFJLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsTUFBTTtRQUNGLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNaLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQ3hCO0lBQ0wsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFhO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsUUFBUSxDQUFDLE1BQXFCO1FBQzFCLElBQUksTUFBTSxDQUFDLEdBQUcsS0FBSyxPQUFPLElBQUksTUFBTSxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBQ3RELG9GQUFvRjtRQUNwRixJQUFJLE1BQU0sQ0FBQyxXQUFXLElBQUksTUFBTSxDQUFDLE9BQU8sS0FBSyxHQUFHO1lBQUUsT0FBTztRQUN6RCxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxJQUFJLENBQUMsU0FBUztZQUFFLE9BQU87UUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFTyxhQUFhO1FBQ2pCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDO1FBQ3BDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUN6QixFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ2xFLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxZQUFZLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUM3RSxDQUFDOzswSEE3RFEsNEJBQTRCOzhHQUE1Qiw0QkFBNEIsNFJDWnpDLG9rREEyQkE7NEZEZmEsNEJBQTRCO2tCQU54QyxTQUFTOytCQUNJLHVCQUF1QixtQkFHaEIsdUJBQXVCLENBQUMsTUFBTTs4QkFJdEMsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFFSSxNQUFNO3NCQUFmLE1BQU07Z0JBRStCLEtBQUs7c0JBQTFDLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVSU5ZX01FTlNBR0VNX01BWF9DQVJBQ1RFUkVTIH0gZnJvbSAnLi4vLi4vdWlueS5jb25maWcnO1xuXG5jb25zdCBBTFRVUkFfTUFYSU1BID0gMTYwO1xuXG4vKiogQ2FtcG8gZGUgbWVuc2FnZW06IEVudGVyIGVudmlhLCBTaGlmdCtFbnRlciBxdWVicmEgbGluaGEsIGNyZXNjZSBhdMOpIEFMVFVSQV9NQVhJTUEuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3VpLWFzc2lzdGFudC1jb21wb3NlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3VpLWFzc2lzdGFudC1jb21wb3Nlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdWktYXNzaXN0YW50LWNvbXBvc2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgVWlBc3Npc3RhbnRDb21wb3NlckNvbXBvbmVudCB7XG5cbiAgICBASW5wdXQoKSBkZXNhYmlsaXRhZG8gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBlbnZpYW5kbyA9IGZhbHNlO1xuICAgIC8qKiBFeHBsaWNhIHBvciBxdWUgbyBlbnZpbyBlc3TDoSBibG9xdWVhZG8gKHNlbSBpbnRlcm5ldCwgY2FycmVnYW5kby4uLikuICovXG4gICAgQElucHV0KCkgbW90aXZvOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIEBPdXRwdXQoKSBlbnZpYXIgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAgIEBWaWV3Q2hpbGQoJ2NhbXBvJywgeyBzdGF0aWM6IHRydWUgfSkgY2FtcG86IEVsZW1lbnRSZWY8SFRNTFRleHRBcmVhRWxlbWVudD47XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgbWF4ID0gVUlOWV9NRU5TQUdFTV9NQVhfQ0FSQUNURVJFUztcbiAgICBwdWJsaWMgdGV4dG8gPSAnJztcblxuICAgIGdldCB2YXppbygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLnRleHRvLnRyaW0oKTtcbiAgICB9XG5cbiAgICBnZXQgYmxvcXVlYWRvKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kZXNhYmlsaXRhZG8gfHwgdGhpcy5lbnZpYW5kbyB8fCB0aGlzLnZhemlvIHx8IHRoaXMudGV4dG8ubGVuZ3RoID4gdGhpcy5tYXg7XG4gICAgfVxuXG4gICAgZ2V0IG1vc3RyYXJDb250YWRvcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGV4dG8ubGVuZ3RoID4gdGhpcy5tYXggLSA0MDA7XG4gICAgfVxuXG4gICAgZm9jYXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2FtcG8/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgIH1cblxuICAgIGxpbXBhcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50ZXh0byA9ICcnO1xuICAgICAgICBpZiAodGhpcy5jYW1wbykge1xuICAgICAgICAgICAgdGhpcy5jYW1wby5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgICAgICB0aGlzLmFqdXN0YXJBbHR1cmEoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFvRGlnaXRhcih2YWxvcjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGV4dG8gPSB2YWxvcjtcbiAgICAgICAgdGhpcy5hanVzdGFyQWx0dXJhKCk7XG4gICAgfVxuXG4gICAgYW9UZWNsYXIoZXZlbnRvOiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudG8ua2V5ICE9PSAnRW50ZXInIHx8IGV2ZW50by5zaGlmdEtleSkgcmV0dXJuO1xuICAgICAgICAvLyBkdXJhbnRlIGEgY29tcG9zacOnw6NvIChJTUUsIGFjZW50b3MgZW0gYWxndW5zIHRlY2xhZG9zKSBFbnRlciBjb25maXJtYSBvIGNhcmFjdGVyZVxuICAgICAgICBpZiAoZXZlbnRvLmlzQ29tcG9zaW5nIHx8IGV2ZW50by5rZXlDb2RlID09PSAyMjkpIHJldHVybjtcbiAgICAgICAgZXZlbnRvLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuc3VibWV0ZXIoKTtcbiAgICB9XG5cbiAgICBzdWJtZXRlcigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYmxvcXVlYWRvKSByZXR1cm47XG4gICAgICAgIHRoaXMuZW52aWFyLmVtaXQodGhpcy50ZXh0by50cmltKCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWp1c3RhckFsdHVyYSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZWwgPSB0aGlzLmNhbXBvLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGVsLnN0eWxlLmhlaWdodCA9ICdhdXRvJztcbiAgICAgICAgZWwuc3R5bGUuaGVpZ2h0ID0gTWF0aC5taW4oZWwuc2Nyb2xsSGVpZ2h0LCBBTFRVUkFfTUFYSU1BKSArICdweCc7XG4gICAgICAgIGVsLnN0eWxlLm92ZXJmbG93WSA9IGVsLnNjcm9sbEhlaWdodCA+IEFMVFVSQV9NQVhJTUEgPyAnYXV0bycgOiAnaGlkZGVuJztcbiAgICB9XG59XG4iLCI8Zm9ybSBjbGFzcz1cInVpbnktY29tcG9zZXJcIiAoc3VibWl0KT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBzdWJtZXRlcigpXCI+XG4gICAgPGxhYmVsIGZvcj1cInVpbnktY2FtcG9cIiBjbGFzcz1cInVpbnktc3JcIj5NZW5zYWdlbSBwYXJhIGEgVWlueTwvbGFiZWw+XG4gICAgPGRpdiBjbGFzcz1cInVpbnktY29tcG9zZXJfX2NhaXhhXCIgW2NsYXNzLmlzLWRlc2FiaWxpdGFkb109XCJkZXNhYmlsaXRhZG9cIj5cbiAgICAgICAgPHRleHRhcmVhICNjYW1wbyBpZD1cInVpbnktY2FtcG9cIiBjbGFzcz1cInVpbnktY29tcG9zZXJfX2NhbXBvXCIgcm93cz1cIjFcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJQZXJndW50ZSBhbGdvIHBhcmEgYSBVaW55XCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJ0ZXh0b1wiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cIm1vdGl2byA/ICd1aW55LWNhbXBvLW1vdGl2bycgOiAndWlueS1jYW1wby1kaWNhJ1wiXG4gICAgICAgICAgICBbYXR0ci5tYXhsZW5ndGhdPVwibWF4ICsgMjAwXCJcbiAgICAgICAgICAgIChpbnB1dCk9XCJhb0RpZ2l0YXIoY2FtcG8udmFsdWUpXCJcbiAgICAgICAgICAgIChrZXlkb3duKT1cImFvVGVjbGFyKCRldmVudClcIj48L3RleHRhcmVhPlxuXG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwidWlueS1jb21wb3Nlcl9fZW52aWFyXCIgW2Rpc2FibGVkXT1cImJsb3F1ZWFkb1wiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImVudmlhbmRvID8gJ0FndWFyZGFuZG8gYSByZXNwb3N0YSBkYSBVaW55JyA6ICdFbnZpYXIgbWVuc2FnZW0nXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJlbnZpYW5kbyA/ICdBZ3VhcmRhbmRvIGEgcmVzcG9zdGEnIDogJ0VudmlhciAoRW50ZXIpJ1wiPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJlbnZpYW5kb1wiIGNsYXNzPVwidWlueS1jb21wb3Nlcl9fc3Bpbm5lclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDx1aS1pY29uICpuZ0lmPVwiIWVudmlhbmRvXCIgaWNvbj1cImFycm93X3Vwd2FyZFwiIHNpemU9XCIyMFwiPjwvdWktaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwidWlueS1jb21wb3Nlcl9fcm9kYXBlXCI+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwibW90aXZvXCIgaWQ9XCJ1aW55LWNhbXBvLW1vdGl2b1wiIGNsYXNzPVwidWlueS1jb21wb3Nlcl9fbW90aXZvXCI+e3sgbW90aXZvIH19PC9zcGFuPlxuICAgICAgICA8c3BhbiAqbmdJZj1cIiFtb3Rpdm9cIiBpZD1cInVpbnktY2FtcG8tZGljYVwiPkVudGVyIGVudmlhIMK3IFNoaWZ0K0VudGVyIHF1ZWJyYSBhIGxpbmhhPC9zcGFuPlxuICAgICAgICA8c3BhbiAqbmdJZj1cIm1vc3RyYXJDb250YWRvclwiIGNsYXNzPVwidWlueS1jb21wb3Nlcl9fY29udGFkb3JcIiBbY2xhc3MuaXMtZXhjZWRpZG9dPVwidGV4dG8ubGVuZ3RoID4gbWF4XCI+XG4gICAgICAgICAgICB7eyB0ZXh0by5sZW5ndGggfX0ve3sgbWF4IH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==
|
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Inject, NgZone, Optional, Output, ViewChild } from '@angular/core';
|
|
2
|
-
import { NavigationEnd, Router } from '@angular/router';
|
|
3
|
-
import { Subscription } from 'rxjs';
|
|
4
|
-
import { filter } from 'rxjs/operators';
|
|
5
|
-
import { UiAssistantService } from '../../services/ui-assistant.service';
|
|
6
|
-
import { larguraPainel, UINY_CONFIG, UINY_LADO_A_LADO_PADRAO } from '../../uiny.config';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "../../services/ui-assistant.service";
|
|
9
|
-
import * as i2 from "@angular/router";
|
|
10
|
-
import * as i3 from "@angular/common";
|
|
11
|
-
import * as i4 from "../assistant-panel/ui-assistant-panel.component";
|
|
12
|
-
const DURACAO_TRANSICAO_MS = 240;
|
|
13
|
-
/**
|
|
14
|
-
* Contêiner que hospeda a Uiny ao lado da aplicação.
|
|
15
|
-
*
|
|
16
|
-
* Envolve TODO o layout da aplicação (inclusive o header e a sidebar fixos):
|
|
17
|
-
*
|
|
18
|
-
* <ui-assistant-layout (assistantEvent)="...">
|
|
19
|
-
* <div class="page-wrapper">...</div>
|
|
20
|
-
* </ui-assistant-layout>
|
|
21
|
-
*
|
|
22
|
-
* Fechado, não altera nada: a página rola normalmente pela janela.
|
|
23
|
-
* Aberto no desktop, vira uma linha flex [aplicação | painel]: a coluna da aplicação passa
|
|
24
|
-
* a ser o bloco de contenção dos elementos position:fixed (contain: layout) e ganha rolagem
|
|
25
|
-
* própria. Assim o header e a sidebar fixos ocupam a coluna da esquerda, sem serem cobertos.
|
|
26
|
-
* Em telas estreitas o painel ocupa a largura toda e a aplicação fica recolhida até voltar.
|
|
27
|
-
*/
|
|
28
|
-
export class UiAssistantLayoutComponent {
|
|
29
|
-
constructor(assistant, cdr, zone, config, router) {
|
|
30
|
-
this.assistant = assistant;
|
|
31
|
-
this.cdr = cdr;
|
|
32
|
-
this.zone = zone;
|
|
33
|
-
this.router = router;
|
|
34
|
-
/** Ações concluídas e instruções de interface (tema atualizado, atualizar listagem, abrir prévia). */
|
|
35
|
-
this.assistantEvent = new EventEmitter();
|
|
36
|
-
/** Painel montado e layout em modo contido (inclui a animação de fechamento). */
|
|
37
|
-
this.contido = false;
|
|
38
|
-
/** Painel com a largura final (classe que dispara a transição). */
|
|
39
|
-
this.expandido = false;
|
|
40
|
-
/** Tela estreita: painel em largura total, aplicação recolhida. */
|
|
41
|
-
this.empilhado = false;
|
|
42
|
-
this.disponivel = false;
|
|
43
|
-
this.subs = new Subscription();
|
|
44
|
-
this.midia = null;
|
|
45
|
-
this.scrollJanela = 0;
|
|
46
|
-
this.largura = larguraPainel(config);
|
|
47
|
-
const ladoALado = config?.larguraMinimaLadoALado || UINY_LADO_A_LADO_PADRAO;
|
|
48
|
-
if (typeof window !== 'undefined' && window.matchMedia) {
|
|
49
|
-
this.midia = window.matchMedia(`(max-width: ${ladoALado - 0.02}px)`);
|
|
50
|
-
this.empilhado = this.midia.matches;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
ngOnInit() {
|
|
54
|
-
this.removerHost = this.assistant.registrarHost();
|
|
55
|
-
this.subs.add(this.assistant.disponivel$.subscribe(d => {
|
|
56
|
-
this.disponivel = d;
|
|
57
|
-
this.cdr.markForCheck();
|
|
58
|
-
}));
|
|
59
|
-
this.subs.add(this.assistant.aberto$.subscribe(aberto => aberto ? this.abrir() : this.fechar()));
|
|
60
|
-
this.subs.add(this.assistant.eventos$.subscribe(e => this.assistantEvent.emit(e)));
|
|
61
|
-
// Com o layout contido a janela não rola: replica o scroll ao topo da navegação.
|
|
62
|
-
if (this.router) {
|
|
63
|
-
this.subs.add(this.router.events.pipe(filter(e => e instanceof NavigationEnd)).subscribe(() => {
|
|
64
|
-
if (this.contido && this.rolagem)
|
|
65
|
-
this.rolagem.nativeElement.scrollTop = 0;
|
|
66
|
-
}));
|
|
67
|
-
}
|
|
68
|
-
if (this.midia) {
|
|
69
|
-
const aoMudar = (e) => this.zone.run(() => {
|
|
70
|
-
this.empilhado = e.matches;
|
|
71
|
-
this.cdr.markForCheck();
|
|
72
|
-
});
|
|
73
|
-
this.midia.addEventListener ? this.midia.addEventListener('change', aoMudar) : this.midia.addListener(aoMudar);
|
|
74
|
-
this.subs.add(() => this.midia.removeEventListener
|
|
75
|
-
? this.midia.removeEventListener('change', aoMudar)
|
|
76
|
-
: this.midia.removeListener(aoMudar));
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
ngOnDestroy() {
|
|
80
|
-
clearTimeout(this.timerFechamento);
|
|
81
|
-
this.subs.unsubscribe();
|
|
82
|
-
this.removerHost?.();
|
|
83
|
-
if (this.contido)
|
|
84
|
-
this.restaurarJanela();
|
|
85
|
-
}
|
|
86
|
-
abrir() {
|
|
87
|
-
clearTimeout(this.timerFechamento);
|
|
88
|
-
if (!this.contido) {
|
|
89
|
-
this.scrollJanela = window.scrollY || 0;
|
|
90
|
-
this.contido = true;
|
|
91
|
-
this.cdr.detectChanges();
|
|
92
|
-
// a rolagem passa da janela para a coluna da aplicação, na mesma posição
|
|
93
|
-
this.rolagem.nativeElement.scrollTop = this.scrollJanela;
|
|
94
|
-
}
|
|
95
|
-
// próximo frame: a largura sai de 0 e a transição acontece
|
|
96
|
-
requestAnimationFrame(() => {
|
|
97
|
-
this.expandido = true;
|
|
98
|
-
this.cdr.detectChanges();
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
fechar() {
|
|
102
|
-
if (!this.contido)
|
|
103
|
-
return;
|
|
104
|
-
this.expandido = false;
|
|
105
|
-
this.cdr.detectChanges();
|
|
106
|
-
clearTimeout(this.timerFechamento);
|
|
107
|
-
this.timerFechamento = setTimeout(() => {
|
|
108
|
-
this.restaurarJanela();
|
|
109
|
-
this.cdr.detectChanges();
|
|
110
|
-
}, this.semAnimacao() ? 0 : DURACAO_TRANSICAO_MS);
|
|
111
|
-
}
|
|
112
|
-
restaurarJanela() {
|
|
113
|
-
const topo = this.empilhado ? this.scrollJanela : (this.rolagem?.nativeElement.scrollTop ?? 0);
|
|
114
|
-
this.contido = false;
|
|
115
|
-
this.cdr.detectChanges();
|
|
116
|
-
window.scrollTo(0, topo);
|
|
117
|
-
}
|
|
118
|
-
semAnimacao() {
|
|
119
|
-
return typeof window !== 'undefined' && !!window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
UiAssistantLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UiAssistantLayoutComponent, deps: [{ token: i1.UiAssistantService }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: UINY_CONFIG, optional: true }, { token: i2.Router, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
123
|
-
UiAssistantLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: UiAssistantLayoutComponent, selector: "ui-assistant-layout", outputs: { assistantEvent: "assistantEvent" }, viewQueries: [{ propertyName: "rolagem", first: true, predicate: ["rolagem"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"uiny-layout\"\n [class.uiny-layout--contido]=\"contido\"\n [class.uiny-layout--expandido]=\"expandido\"\n [class.uiny-layout--empilhado]=\"empilhado\"\n [style.--uiny-largura]=\"largura + 'px'\">\n\n <div class=\"uiny-layout__app\"\n [attr.inert]=\"contido && expandido && empilhado ? '' : null\"\n [attr.aria-hidden]=\"contido && expandido && empilhado ? 'true' : null\">\n <div #rolagem class=\"uiny-layout__rolagem\">\n <ng-content></ng-content>\n </div>\n </div>\n\n <aside *ngIf=\"disponivel && contido\" id=\"uiny-painel\" class=\"uiny-layout__painel\"\n aria-label=\"Uiny, assistente da Uishop\"\n [attr.aria-hidden]=\"expandido ? null : 'true'\"\n [attr.inert]=\"expandido ? null : ''\">\n <div class=\"uiny-layout__painel-conteudo\">\n <ui-assistant-panel [empilhado]=\"empilhado\"></ui-assistant-panel>\n </div>\n </aside>\n</div>\n", styles: ["@charset \"UTF-8\";:host{display:block}.uiny-layout,.uiny-layout__app,.uiny-layout__rolagem{display:block}.uiny-layout--contido{display:flex;width:100%;height:100vh;height:100dvh;overflow:hidden}.uiny-layout--contido .uiny-layout__app{flex:1 1 0;min-width:0;height:100%;position:relative;contain:layout paint;overflow:hidden}.uiny-layout--contido .uiny-layout__rolagem{height:100%;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.uiny-layout__painel{flex:0 0 auto;width:0;height:100%;overflow:hidden;position:relative;z-index:2;transition:width .24s cubic-bezier(.2,.8,.2,1)}.uiny-layout__painel-conteudo{width:var(--uiny-largura, 380px);height:100%}.uiny-layout--expandido .uiny-layout__painel{width:var(--uiny-largura, 380px)}.uiny-layout--empilhado .uiny-layout__painel,.uiny-layout--empilhado .uiny-layout__painel-conteudo{width:100%}.uiny-layout--empilhado .uiny-layout__painel{transition:opacity .18s ease;opacity:0}.uiny-layout--empilhado.uiny-layout--expandido .uiny-layout__painel{width:100%;opacity:1}.uiny-layout--empilhado.uiny-layout--expandido .uiny-layout__app{display:none}@media (prefers-reduced-motion: reduce){.uiny-layout__painel,.uiny-layout--empilhado .uiny-layout__painel{transition:none}}@media print{.uiny-layout__painel{display:none}}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.UiAssistantPanelComponent, selector: "ui-assistant-panel", inputs: ["empilhado"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
124
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UiAssistantLayoutComponent, decorators: [{
|
|
125
|
-
type: Component,
|
|
126
|
-
args: [{ selector: 'ui-assistant-layout', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"uiny-layout\"\n [class.uiny-layout--contido]=\"contido\"\n [class.uiny-layout--expandido]=\"expandido\"\n [class.uiny-layout--empilhado]=\"empilhado\"\n [style.--uiny-largura]=\"largura + 'px'\">\n\n <div class=\"uiny-layout__app\"\n [attr.inert]=\"contido && expandido && empilhado ? '' : null\"\n [attr.aria-hidden]=\"contido && expandido && empilhado ? 'true' : null\">\n <div #rolagem class=\"uiny-layout__rolagem\">\n <ng-content></ng-content>\n </div>\n </div>\n\n <aside *ngIf=\"disponivel && contido\" id=\"uiny-painel\" class=\"uiny-layout__painel\"\n aria-label=\"Uiny, assistente da Uishop\"\n [attr.aria-hidden]=\"expandido ? null : 'true'\"\n [attr.inert]=\"expandido ? null : ''\">\n <div class=\"uiny-layout__painel-conteudo\">\n <ui-assistant-panel [empilhado]=\"empilhado\"></ui-assistant-panel>\n </div>\n </aside>\n</div>\n", styles: ["@charset \"UTF-8\";:host{display:block}.uiny-layout,.uiny-layout__app,.uiny-layout__rolagem{display:block}.uiny-layout--contido{display:flex;width:100%;height:100vh;height:100dvh;overflow:hidden}.uiny-layout--contido .uiny-layout__app{flex:1 1 0;min-width:0;height:100%;position:relative;contain:layout paint;overflow:hidden}.uiny-layout--contido .uiny-layout__rolagem{height:100%;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.uiny-layout__painel{flex:0 0 auto;width:0;height:100%;overflow:hidden;position:relative;z-index:2;transition:width .24s cubic-bezier(.2,.8,.2,1)}.uiny-layout__painel-conteudo{width:var(--uiny-largura, 380px);height:100%}.uiny-layout--expandido .uiny-layout__painel{width:var(--uiny-largura, 380px)}.uiny-layout--empilhado .uiny-layout__painel,.uiny-layout--empilhado .uiny-layout__painel-conteudo{width:100%}.uiny-layout--empilhado .uiny-layout__painel{transition:opacity .18s ease;opacity:0}.uiny-layout--empilhado.uiny-layout--expandido .uiny-layout__painel{width:100%;opacity:1}.uiny-layout--empilhado.uiny-layout--expandido .uiny-layout__app{display:none}@media (prefers-reduced-motion: reduce){.uiny-layout__painel,.uiny-layout--empilhado .uiny-layout__painel{transition:none}}@media print{.uiny-layout__painel{display:none}}\n"] }]
|
|
127
|
-
}], ctorParameters: function () { return [{ type: i1.UiAssistantService }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: undefined, decorators: [{
|
|
128
|
-
type: Optional
|
|
129
|
-
}, {
|
|
130
|
-
type: Inject,
|
|
131
|
-
args: [UINY_CONFIG]
|
|
132
|
-
}] }, { type: i2.Router, decorators: [{
|
|
133
|
-
type: Optional
|
|
134
|
-
}] }]; }, propDecorators: { assistantEvent: [{
|
|
135
|
-
type: Output
|
|
136
|
-
}], rolagem: [{
|
|
137
|
-
type: ViewChild,
|
|
138
|
-
args: ['rolagem', { static: true }]
|
|
139
|
-
}] } });
|
|
140
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktYXNzaXN0YW50LWxheW91dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1oZWFkZXIvc3JjL2xpYi9hc3Npc3RhbnQvY29tcG9uZW50cy9hc3Npc3RhbnQtbGF5b3V0L3VpLWFzc2lzdGFudC1sYXlvdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktaGVhZGVyL3NyYy9saWIvYXNzaXN0YW50L2NvbXBvbmVudHMvYXNzaXN0YW50LWxheW91dC91aS1hc3Npc3RhbnQtbGF5b3V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixNQUFNLEVBR04sUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7QUFFeEYsTUFBTSxvQkFBb0IsR0FBRyxHQUFHLENBQUM7QUFFakM7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFPSCxNQUFNLE9BQU8sMEJBQTBCO0lBc0JuQyxZQUNXLFNBQTZCLEVBQzVCLEdBQXNCLEVBQ3RCLElBQVksRUFDYSxNQUF5QixFQUN0QyxNQUFjO1FBSjNCLGNBQVMsR0FBVCxTQUFT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QyxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUNqSSxDQUFDOzt3SEE3R1EsMEJBQTBCLDJHQTBCWCxXQUFXOzRHQTFCMUIsMEJBQTBCLDROQzVDdkMsczhCQXVCQTs0RkRxQmEsMEJBQTBCO2tCQU50QyxTQUFTOytCQUNJLHFCQUFxQixtQkFHZCx1QkFBdUIsQ0FBQyxNQUFNOzswQkE0QjFDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsV0FBVzs7MEJBQzlCLFFBQVE7NENBeEJILGNBQWM7c0JBQXZCLE1BQU07Z0JBRWlDLE9BQU87c0JBQTlDLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIEluamVjdCxcclxuICAgIE5nWm9uZSxcclxuICAgIE9uRGVzdHJveSxcclxuICAgIE9uSW5pdCxcclxuICAgIE9wdGlvbmFsLFxyXG4gICAgT3V0cHV0LFxyXG4gICAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFVpbnlDb25maWcsIFVpbnlFdmVudG8gfSBmcm9tICcuLi8uLi9tb2RlbHMvdWlueS5tb2RlbHMnO1xyXG5pbXBvcnQgeyBVaUFzc2lzdGFudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91aS1hc3Npc3RhbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IGxhcmd1cmFQYWluZWwsIFVJTllfQ09ORklHLCBVSU5ZX0xBRE9fQV9MQURPX1BBRFJBTyB9IGZyb20gJy4uLy4uL3VpbnkuY29uZmlnJztcclxuXHJcbmNvbnN0IERVUkFDQU9fVFJBTlNJQ0FPX01TID0gMjQwO1xyXG5cclxuLyoqXHJcbiAqIENvbnTDqmluZXIgcXVlIGhvc3BlZGEgYSBVaW55IGFvIGxhZG8gZGEgYXBsaWNhw6fDo28uXHJcbiAqXHJcbiAqIEVudm9sdmUgVE9ETyBvIGxheW91dCBkYSBhcGxpY2HDp8OjbyAoaW5jbHVzaXZlIG8gaGVhZGVyIGUgYSBzaWRlYmFyIGZpeG9zKTpcclxuICpcclxuICogICA8dWktYXNzaXN0YW50LWxheW91dCAoYXNzaXN0YW50RXZlbnQpPVwiLi4uXCI+XHJcbiAqICAgICAgIDxkaXYgY2xhc3M9XCJwYWdlLXdyYXBwZXJcIj4uLi48L2Rpdj5cclxuICogICA8L3VpLWFzc2lzdGFudC1sYXlvdXQ+XHJcbiAqXHJcbiAqIEZlY2hhZG8sIG7Do28gYWx0ZXJhIG5hZGE6IGEgcMOhZ2luYSByb2xhIG5vcm1hbG1lbnRlIHBlbGEgamFuZWxhLlxyXG4gKiBBYmVydG8gbm8gZGVza3RvcCwgdmlyYSB1bWEgbGluaGEgZmxleCBbYXBsaWNhw6fDo28gfCBwYWluZWxdOiBhIGNvbHVuYSBkYSBhcGxpY2HDp8OjbyBwYXNzYVxyXG4gKiBhIHNlciBvIGJsb2NvIGRlIGNvbnRlbsOnw6NvIGRvcyBlbGVtZW50b3MgcG9zaXRpb246Zml4ZWQgKGNvbnRhaW46IGxheW91dCkgZSBnYW5oYSByb2xhZ2VtXHJcbiAqIHByw7NwcmlhLiBBc3NpbSBvIGhlYWRlciBlIGEgc2lkZWJhciBmaXhvcyBvY3VwYW0gYSBjb2x1bmEgZGEgZXNxdWVyZGEsIHNlbSBzZXJlbSBjb2JlcnRvcy5cclxuICogRW0gdGVsYXMgZXN0cmVpdGFzIG8gcGFpbmVsIG9jdXBhIGEgbGFyZ3VyYSB0b2RhIGUgYSBhcGxpY2HDp8OjbyBmaWNhIHJlY29saGlkYSBhdMOpIHZvbHRhci5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd1aS1hc3Npc3RhbnQtbGF5b3V0JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi91aS1hc3Npc3RhbnQtbGF5b3V0LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3VpLWFzc2lzdGFudC1sYXlvdXQuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVaUFzc2lzdGFudExheW91dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgICAvKiogQcOnw7VlcyBjb25jbHXDrWRhcyBlIGluc3RydcOnw7VlcyBkZSBpbnRlcmZhY2UgKHRlbWEgYXR1YWxpemFkbywgYXR1YWxpemFyIGxpc3RhZ2VtLCBhYnJpciBwcsOpdmlhKS4gKi9cclxuICAgIEBPdXRwdXQoKSBhc3Npc3RhbnRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8VWlueUV2ZW50bz4oKTtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdyb2xhZ2VtJywgeyBzdGF0aWM6IHRydWUgfSkgcm9sYWdlbTogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XHJcblxyXG4gICAgLyoqIFBhaW5lbCBtb250YWRvIGUgbGF5b3V0IGVtIG1vZG8gY29udGlkbyAoaW5jbHVpIGEgYW5pbWHDp8OjbyBkZSBmZWNoYW1lbnRvKS4gKi9cclxuICAgIHB1YmxpYyBjb250aWRvID0gZmFsc2U7XHJcbiAgICAvKiogUGFpbmVsIGNvbSBhIGxhcmd1cmEgZmluYWwgKGNsYXNzZSBxdWUgZGlzcGFyYSBhIHRyYW5zacOnw6NvKS4gKi9cclxuICAgIHB1YmxpYyBleHBhbmRpZG8gPSBmYWxzZTtcclxuICAgIC8qKiBUZWxhIGVzdHJlaXRhOiBwYWluZWwgZW0gbGFyZ3VyYSB0b3RhbCwgYXBsaWNhw6fDo28gcmVjb2xoaWRhLiAqL1xyXG4gICAgcHVibGljIGVtcGlsaGFkbyA9IGZhbHNlO1xyXG4gICAgcHVibGljIGRpc3Bvbml2ZWwgPSBmYWxzZTtcclxuICAgIHB1YmxpYyByZWFkb25seSBsYXJndXJhOiBudW1iZXI7XHJcblxyXG4gICAgcHJpdmF0ZSByZW1vdmVySG9zdDogKCkgPT4gdm9pZDtcclxuICAgIHByaXZhdGUgc3VicyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuICAgIHByaXZhdGUgbWlkaWE6IE1lZGlhUXVlcnlMaXN0IHwgbnVsbCA9IG51bGw7XHJcbiAgICBwcml2YXRlIHRpbWVyRmVjaGFtZW50bzogYW55O1xyXG4gICAgcHJpdmF0ZSBzY3JvbGxKYW5lbGEgPSAwO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHB1YmxpYyBhc3Npc3RhbnQ6IFVpQXNzaXN0YW50U2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICAgICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsXHJcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChVSU5ZX0NPTkZJRykgY29uZmlnOiBVaW55Q29uZmlnIHwgbnVsbCxcclxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJvdXRlcjogUm91dGVyXHJcbiAgICApIHtcclxuICAgICAgICB0aGlzLmxhcmd1cmEgPSBsYXJndXJhUGFpbmVsKGNvbmZpZyk7XHJcbiAgICAgICAgY29uc3QgbGFkb0FMYWRvID0gY29uZmlnPy5sYXJndXJhTWluaW1hTGFkb0FMYWRvIHx8IFVJTllfTEFET19BX0xBRE9fUEFEUkFPO1xyXG4gICAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cubWF0Y2hNZWRpYSkge1xyXG4gICAgICAgICAgICB0aGlzLm1pZGlhID0gd2luZG93Lm1hdGNoTWVkaWEoYChtYXgtd2lkdGg6ICR7bGFkb0FMYWRvIC0gMC4wMn1weClgKTtcclxuICAgICAgICAgICAgdGhpcy5lbXBpbGhhZG8gPSB0aGlzLm1pZGlhLm1hdGNoZXM7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucmVtb3Zlckhvc3QgPSB0aGlzLmFzc2lzdGFudC5yZWdpc3RyYXJIb3N0KCk7XHJcblxyXG4gICAgICAgIHRoaXMuc3Vicy5hZGQodGhpcy5hc3Npc3RhbnQuZGlzcG9uaXZlbCQuc3Vic2NyaWJlKGQgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmRpc3Bvbml2ZWwgPSBkO1xyXG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9KSk7XHJcbiAgICAgICAgdGhpcy5zdWJzLmFkZCh0aGlzLmFzc2lzdGFudC5hYmVydG8kLnN1YnNjcmliZShhYmVydG8gPT4gYWJlcnRvID8gdGhpcy5hYnJpcigpIDogdGhpcy5mZWNoYXIoKSkpO1xyXG4gICAgICAgIHRoaXMuc3Vicy5hZGQodGhpcy5hc3Npc3RhbnQuZXZlbnRvcyQuc3Vic2NyaWJlKGUgPT4gdGhpcy5hc3Npc3RhbnRFdmVudC5lbWl0KGUpKSk7XHJcblxyXG4gICAgICAgIC8vIENvbSBvIGxheW91dCBjb250aWRvIGEgamFuZWxhIG7Do28gcm9sYTogcmVwbGljYSBvIHNjcm9sbCBhbyB0b3BvIGRhIG5hdmVnYcOnw6NvLlxyXG4gICAgICAgIGlmICh0aGlzLnJvdXRlcikge1xyXG4gICAgICAgICAgICB0aGlzLnN1YnMuYWRkKHRoaXMucm91dGVyLmV2ZW50cy5waXBlKGZpbHRlcihlID0+IGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbnRpZG8gJiYgdGhpcy5yb2xhZ2VtKSB0aGlzLnJvbGFnZW0ubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5taWRpYSkge1xyXG4gICAgICAgICAgICBjb25zdCBhb011ZGFyID0gKGU6IE1lZGlhUXVlcnlMaXN0RXZlbnQpID0+IHRoaXMuem9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lbXBpbGhhZG8gPSBlLm1hdGNoZXM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMubWlkaWEuYWRkRXZlbnRMaXN0ZW5lciA/IHRoaXMubWlkaWEuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgYW9NdWRhcikgOiB0aGlzLm1pZGlhLmFkZExpc3RlbmVyKGFvTXVkYXIpO1xyXG4gICAgICAgICAgICB0aGlzLnN1YnMuYWRkKCgpID0+IHRoaXMubWlkaWEucmVtb3ZlRXZlbnRMaXN0ZW5lclxyXG4gICAgICAgICAgICAgICAgPyB0aGlzLm1pZGlhLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGFvTXVkYXIpXHJcbiAgICAgICAgICAgICAgICA6IHRoaXMubWlkaWEucmVtb3ZlTGlzdGVuZXIoYW9NdWRhcikpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lckZlY2hhbWVudG8pO1xyXG4gICAgICAgIHRoaXMuc3Vicy51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIHRoaXMucmVtb3Zlckhvc3Q/LigpO1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnRpZG8pIHRoaXMucmVzdGF1cmFySmFuZWxhKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhYnJpcigpOiB2b2lkIHtcclxuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lckZlY2hhbWVudG8pO1xyXG4gICAgICAgIGlmICghdGhpcy5jb250aWRvKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsSmFuZWxhID0gd2luZG93LnNjcm9sbFkgfHwgMDtcclxuICAgICAgICAgICAgdGhpcy5jb250aWRvID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAvLyBhIHJvbGFnZW0gcGFzc2EgZGEgamFuZWxhIHBhcmEgYSBjb2x1bmEgZGEgYXBsaWNhw6fDo28sIG5hIG1lc21hIHBvc2nDp8Ojb1xyXG4gICAgICAgICAgICB0aGlzLnJvbGFnZW0ubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSB0aGlzLnNjcm9sbEphbmVsYTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gcHLDs3hpbW8gZnJhbWU6IGEgbGFyZ3VyYSBzYWkgZGUgMCBlIGEgdHJhbnNpw6fDo28gYWNvbnRlY2VcclxuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmV4cGFuZGlkbyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGZlY2hhcigpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuY29udGlkbykgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuZXhwYW5kaWRvID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVyRmVjaGFtZW50byk7XHJcbiAgICAgICAgdGhpcy50aW1lckZlY2hhbWVudG8gPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5yZXN0YXVyYXJKYW5lbGEoKTtcclxuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0sIHRoaXMuc2VtQW5pbWFjYW8oKSA/IDAgOiBEVVJBQ0FPX1RSQU5TSUNBT19NUyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSByZXN0YXVyYXJKYW5lbGEoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgdG9wbyA9IHRoaXMuZW1waWxoYWRvID8gdGhpcy5zY3JvbGxKYW5lbGEgOiAodGhpcy5yb2xhZ2VtPy5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA/PyAwKTtcclxuICAgICAgICB0aGlzLmNvbnRpZG8gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgd2luZG93LnNjcm9sbFRvKDAsIHRvcG8pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2VtQW5pbWFjYW8oKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmICEhd2luZG93Lm1hdGNoTWVkaWEgJiYgd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpJykubWF0Y2hlcztcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwidWlueS1sYXlvdXRcIlxuICAgIFtjbGFzcy51aW55LWxheW91dC0tY29udGlkb109XCJjb250aWRvXCJcbiAgICBbY2xhc3MudWlueS1sYXlvdXQtLWV4cGFuZGlkb109XCJleHBhbmRpZG9cIlxuICAgIFtjbGFzcy51aW55LWxheW91dC0tZW1waWxoYWRvXT1cImVtcGlsaGFkb1wiXG4gICAgW3N0eWxlLi0tdWlueS1sYXJndXJhXT1cImxhcmd1cmEgKyAncHgnXCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwidWlueS1sYXlvdXRfX2FwcFwiXG4gICAgICAgIFthdHRyLmluZXJ0XT1cImNvbnRpZG8gJiYgZXhwYW5kaWRvICYmIGVtcGlsaGFkbyA/ICcnIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtaGlkZGVuXT1cImNvbnRpZG8gJiYgZXhwYW5kaWRvICYmIGVtcGlsaGFkbyA/ICd0cnVlJyA6IG51bGxcIj5cbiAgICAgICAgPGRpdiAjcm9sYWdlbSBjbGFzcz1cInVpbnktbGF5b3V0X19yb2xhZ2VtXCI+XG4gICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGFzaWRlICpuZ0lmPVwiZGlzcG9uaXZlbCAmJiBjb250aWRvXCIgaWQ9XCJ1aW55LXBhaW5lbFwiIGNsYXNzPVwidWlueS1sYXlvdXRfX3BhaW5lbFwiXG4gICAgICAgIGFyaWEtbGFiZWw9XCJVaW55LCBhc3Npc3RlbnRlIGRhIFVpc2hvcFwiXG4gICAgICAgIFthdHRyLmFyaWEtaGlkZGVuXT1cImV4cGFuZGlkbyA/IG51bGwgOiAndHJ1ZSdcIlxuICAgICAgICBbYXR0ci5pbmVydF09XCJleHBhbmRpZG8gPyBudWxsIDogJydcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInVpbnktbGF5b3V0X19wYWluZWwtY29udGV1ZG9cIj5cbiAgICAgICAgICAgIDx1aS1hc3Npc3RhbnQtcGFuZWwgW2VtcGlsaGFkb109XCJlbXBpbGhhZG9cIj48L3VpLWFzc2lzdGFudC1wYW5lbD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9hc2lkZT5cbjwvZGl2PlxuIl19
|