@schenkerjon/ng-govbr-tw 0.4.0 → 1.0.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/esm2022/lib/animations/animate.directive.mjs +239 -0
- package/esm2022/lib/animations/animation.service.mjs +178 -0
- package/esm2022/lib/animations/animation.types.mjs +34 -0
- package/esm2022/lib/animations/index.mjs +13 -0
- package/esm2022/lib/animations/success-check.component.mjs +129 -0
- package/esm2022/lib/components/accordion/br-accordion.component.mjs +98 -47
- package/esm2022/lib/components/button/br-button.component.mjs +27 -13
- package/esm2022/lib/components/card/br-card.component.mjs +51 -32
- package/esm2022/lib/components/chip/br-chip.component.mjs +141 -0
- package/esm2022/lib/components/divider/br-divider.component.mjs +104 -0
- package/esm2022/lib/components/input/br-input.component.mjs +7 -11
- package/esm2022/lib/components/input-cep/br-input-cep.component.mjs +296 -0
- package/esm2022/lib/components/input-cnpj/br-input-cnpj.component.mjs +7 -11
- package/esm2022/lib/components/input-cpf/br-input-cpf.component.mjs +7 -11
- package/esm2022/lib/components/input-money/br-input-money.component.mjs +325 -0
- package/esm2022/lib/components/input-telefone/br-input-telefone.component.mjs +264 -0
- package/esm2022/lib/components/modal/br-modal.component.mjs +35 -21
- package/esm2022/lib/components/notification/br-notification.component.mjs +131 -0
- package/esm2022/lib/components/pagination/br-pagination.component.mjs +228 -132
- package/esm2022/lib/components/select/br-select.component.mjs +7 -11
- package/esm2022/lib/components/signin/br-signin.component.mjs +169 -0
- package/esm2022/lib/components/skeleton/br-skeleton.component.mjs +41 -25
- package/esm2022/lib/components/stepper/br-stepper.component.mjs +241 -0
- package/esm2022/lib/components/switch/br-switch.component.mjs +157 -0
- package/esm2022/lib/components/table/br-table.component.mjs +1 -1
- package/esm2022/lib/components/textarea/br-textarea.component.mjs +7 -11
- package/esm2022/lib/components/timeline/br-timeline.component.mjs +123 -0
- package/esm2022/lib/components/tooltip/br-tooltip.component.mjs +31 -14
- package/esm2022/lib/components/upload/br-upload.component.mjs +7 -7
- package/esm2022/public-api.mjs +13 -1
- package/fesm2022/schenkerjon-ng-govbr-tw.mjs +3024 -322
- package/fesm2022/schenkerjon-ng-govbr-tw.mjs.map +1 -1
- package/lib/animations/animate.directive.d.ts +84 -0
- package/lib/animations/animation.service.d.ts +90 -0
- package/lib/animations/animation.types.d.ts +117 -0
- package/lib/animations/index.d.ts +8 -0
- package/lib/animations/success-check.component.d.ts +28 -0
- package/lib/components/accordion/br-accordion.component.d.ts +10 -2
- package/lib/components/button/br-button.component.d.ts +7 -1
- package/lib/components/card/br-card.component.d.ts +5 -1
- package/lib/components/chip/br-chip.component.d.ts +19 -0
- package/lib/components/divider/br-divider.component.d.ts +14 -0
- package/lib/components/input/br-input.component.d.ts +4 -4
- package/lib/components/input-cep/br-input-cep.component.d.ts +55 -0
- package/lib/components/input-cnpj/br-input-cnpj.component.d.ts +4 -4
- package/lib/components/input-cpf/br-input-cpf.component.d.ts +4 -4
- package/lib/components/input-money/br-input-money.component.d.ts +44 -0
- package/lib/components/input-telefone/br-input-telefone.component.d.ts +36 -0
- package/lib/components/modal/br-modal.component.d.ts +4 -0
- package/lib/components/notification/br-notification.component.d.ts +26 -0
- package/lib/components/pagination/br-pagination.component.d.ts +12 -1
- package/lib/components/select/br-select.component.d.ts +4 -4
- package/lib/components/signin/br-signin.component.d.ts +32 -0
- package/lib/components/skeleton/br-skeleton.component.d.ts +4 -1
- package/lib/components/stepper/br-stepper.component.d.ts +23 -0
- package/lib/components/switch/br-switch.component.d.ts +24 -0
- package/lib/components/textarea/br-textarea.component.d.ts +4 -4
- package/lib/components/timeline/br-timeline.component.d.ts +15 -0
- package/lib/components/tooltip/br-tooltip.component.d.ts +2 -0
- package/package.json +1 -1
- package/public-api.d.ts +14 -0
- package/src/lib/styles/govbr-components.css +91 -0
- package/src/lib/styles/govbr-contrast.css +252 -0
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import { Directive, ElementRef, Input, Output, EventEmitter, inject, effect, } from '@angular/core';
|
|
2
|
+
import { BrAnimationService } from './animation.service';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* Diretiva para aplicar animações a qualquer elemento
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* <!-- Animação imediata -->
|
|
9
|
+
* <div brAnimate="fadeInUp">Conteúdo</div>
|
|
10
|
+
*
|
|
11
|
+
* <!-- Animação quando visível -->
|
|
12
|
+
* <div brAnimate="fadeInUp" brAnimateTrigger="visible">Conteúdo</div>
|
|
13
|
+
*
|
|
14
|
+
* <!-- Com configurações -->
|
|
15
|
+
* <div brAnimate="scaleIn" [brAnimateDuration]="300" brAnimateEasing="easeOutBack">
|
|
16
|
+
* Conteúdo
|
|
17
|
+
* </div>
|
|
18
|
+
*
|
|
19
|
+
* <!-- Stagger em lista -->
|
|
20
|
+
* <ul>
|
|
21
|
+
* <li *ngFor="let item of items; let i = index"
|
|
22
|
+
* brAnimate="fadeInUp"
|
|
23
|
+
* [brAnimateDelay]="i * 50">
|
|
24
|
+
* {{ item }}
|
|
25
|
+
* </li>
|
|
26
|
+
* </ul>
|
|
27
|
+
*/
|
|
28
|
+
export class BrAnimateDirective {
|
|
29
|
+
constructor() {
|
|
30
|
+
this.el = inject(ElementRef);
|
|
31
|
+
this.animationService = inject(BrAnimationService);
|
|
32
|
+
/** Tipo de animação */
|
|
33
|
+
this.animation = 'fadeIn';
|
|
34
|
+
/** Trigger que inicia a animação */
|
|
35
|
+
this.brAnimateTrigger = 'immediate';
|
|
36
|
+
/** Threshold para Intersection Observer (0-1) */
|
|
37
|
+
this.brAnimateThreshold = 0.1;
|
|
38
|
+
/** Se deve animar apenas uma vez */
|
|
39
|
+
this.brAnimateOnce = true;
|
|
40
|
+
/** Se a animação está habilitada */
|
|
41
|
+
this.brAnimateEnabled = true;
|
|
42
|
+
/** Evento emitido no início da animação */
|
|
43
|
+
this.brAnimateStart = new EventEmitter();
|
|
44
|
+
/** Evento emitido no fim da animação */
|
|
45
|
+
this.brAnimateEnd = new EventEmitter();
|
|
46
|
+
this.hasAnimated = false;
|
|
47
|
+
this.boundHandleAnimationEnd = this.handleAnimationEnd.bind(this);
|
|
48
|
+
this.boundHandleHover = this.handleHover.bind(this);
|
|
49
|
+
this.boundHandleHoverOut = this.handleHoverOut.bind(this);
|
|
50
|
+
this.boundHandleFocus = this.handleFocus.bind(this);
|
|
51
|
+
this.boundHandleBlur = this.handleBlur.bind(this);
|
|
52
|
+
this.boundHandleClick = this.handleClick.bind(this);
|
|
53
|
+
// Reage a mudanças no serviço de animação
|
|
54
|
+
effect(() => {
|
|
55
|
+
if (!this.animationService.isEnabled()) {
|
|
56
|
+
this.clearAnimation();
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
ngOnInit() {
|
|
61
|
+
if (!this.brAnimateEnabled)
|
|
62
|
+
return;
|
|
63
|
+
this.setupTrigger();
|
|
64
|
+
}
|
|
65
|
+
ngOnDestroy() {
|
|
66
|
+
this.cleanup();
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Inicia a animação programaticamente
|
|
70
|
+
*/
|
|
71
|
+
play() {
|
|
72
|
+
if (!this.canAnimate())
|
|
73
|
+
return;
|
|
74
|
+
this.applyAnimation();
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Reseta a animação para poder rodar novamente
|
|
78
|
+
*/
|
|
79
|
+
reset() {
|
|
80
|
+
this.hasAnimated = false;
|
|
81
|
+
this.clearAnimation();
|
|
82
|
+
}
|
|
83
|
+
setupTrigger() {
|
|
84
|
+
const element = this.el.nativeElement;
|
|
85
|
+
switch (this.brAnimateTrigger) {
|
|
86
|
+
case 'immediate':
|
|
87
|
+
// Pequeno delay para garantir que o elemento está no DOM
|
|
88
|
+
requestAnimationFrame(() => this.play());
|
|
89
|
+
break;
|
|
90
|
+
case 'visible':
|
|
91
|
+
this.setupIntersectionObserver();
|
|
92
|
+
break;
|
|
93
|
+
case 'hover':
|
|
94
|
+
element.addEventListener('mouseenter', this.boundHandleHover);
|
|
95
|
+
element.addEventListener('mouseleave', this.boundHandleHoverOut);
|
|
96
|
+
break;
|
|
97
|
+
case 'focus':
|
|
98
|
+
element.addEventListener('focus', this.boundHandleFocus);
|
|
99
|
+
element.addEventListener('blur', this.boundHandleBlur);
|
|
100
|
+
break;
|
|
101
|
+
case 'click':
|
|
102
|
+
element.addEventListener('click', this.boundHandleClick);
|
|
103
|
+
break;
|
|
104
|
+
case 'manual':
|
|
105
|
+
// Não faz nada, espera chamada programática
|
|
106
|
+
break;
|
|
107
|
+
}
|
|
108
|
+
// Listener para fim da animação
|
|
109
|
+
element.addEventListener('animationend', this.boundHandleAnimationEnd);
|
|
110
|
+
}
|
|
111
|
+
setupIntersectionObserver() {
|
|
112
|
+
if (typeof IntersectionObserver === 'undefined') {
|
|
113
|
+
// Fallback: anima imediatamente
|
|
114
|
+
this.play();
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
this.observer = new IntersectionObserver((entries) => {
|
|
118
|
+
entries.forEach((entry) => {
|
|
119
|
+
if (entry.isIntersecting && this.canAnimate()) {
|
|
120
|
+
this.applyAnimation();
|
|
121
|
+
if (this.brAnimateOnce) {
|
|
122
|
+
this.observer?.disconnect();
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
}, { threshold: this.brAnimateThreshold });
|
|
127
|
+
this.observer.observe(this.el.nativeElement);
|
|
128
|
+
}
|
|
129
|
+
canAnimate() {
|
|
130
|
+
if (!this.brAnimateEnabled)
|
|
131
|
+
return false;
|
|
132
|
+
if (!this.animationService.isEnabled())
|
|
133
|
+
return false;
|
|
134
|
+
if (this.brAnimateOnce && this.hasAnimated)
|
|
135
|
+
return false;
|
|
136
|
+
return true;
|
|
137
|
+
}
|
|
138
|
+
applyAnimation() {
|
|
139
|
+
const element = this.el.nativeElement;
|
|
140
|
+
const duration = this.animationService.resolveDuration(this.brAnimateDuration);
|
|
141
|
+
const easing = this.animationService.resolveEasing(this.brAnimateEasing);
|
|
142
|
+
const delay = this.brAnimateDelay || 0;
|
|
143
|
+
// Emite evento de início
|
|
144
|
+
this.brAnimateStart.emit({
|
|
145
|
+
type: this.animation,
|
|
146
|
+
phase: 'start',
|
|
147
|
+
element,
|
|
148
|
+
timestamp: Date.now(),
|
|
149
|
+
});
|
|
150
|
+
// Aplica a animação
|
|
151
|
+
element.style.animation = `br-${this.animation} ${duration}ms ${easing} ${delay}ms both`;
|
|
152
|
+
this.hasAnimated = true;
|
|
153
|
+
}
|
|
154
|
+
clearAnimation() {
|
|
155
|
+
const element = this.el.nativeElement;
|
|
156
|
+
element.style.animation = '';
|
|
157
|
+
}
|
|
158
|
+
handleAnimationEnd() {
|
|
159
|
+
const element = this.el.nativeElement;
|
|
160
|
+
this.brAnimateEnd.emit({
|
|
161
|
+
type: this.animation,
|
|
162
|
+
phase: 'end',
|
|
163
|
+
element,
|
|
164
|
+
timestamp: Date.now(),
|
|
165
|
+
});
|
|
166
|
+
// Para triggers de hover/focus, limpa para poder repetir
|
|
167
|
+
if (this.brAnimateTrigger === 'hover' || this.brAnimateTrigger === 'focus') {
|
|
168
|
+
this.clearAnimation();
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
handleHover() {
|
|
172
|
+
if (this.canAnimate() || this.brAnimateTrigger === 'hover') {
|
|
173
|
+
this.hasAnimated = false; // Permite repetir no hover
|
|
174
|
+
this.applyAnimation();
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
handleHoverOut() {
|
|
178
|
+
this.clearAnimation();
|
|
179
|
+
}
|
|
180
|
+
handleFocus() {
|
|
181
|
+
if (this.canAnimate() || this.brAnimateTrigger === 'focus') {
|
|
182
|
+
this.hasAnimated = false;
|
|
183
|
+
this.applyAnimation();
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
handleBlur() {
|
|
187
|
+
this.clearAnimation();
|
|
188
|
+
}
|
|
189
|
+
handleClick() {
|
|
190
|
+
if (this.canAnimate() || this.brAnimateTrigger === 'click') {
|
|
191
|
+
this.hasAnimated = false;
|
|
192
|
+
this.clearAnimation();
|
|
193
|
+
// Força reflow para reiniciar a animação
|
|
194
|
+
this.el.nativeElement.getBoundingClientRect();
|
|
195
|
+
this.applyAnimation();
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
cleanup() {
|
|
199
|
+
const element = this.el.nativeElement;
|
|
200
|
+
this.observer?.disconnect();
|
|
201
|
+
element.removeEventListener('animationend', this.boundHandleAnimationEnd);
|
|
202
|
+
element.removeEventListener('mouseenter', this.boundHandleHover);
|
|
203
|
+
element.removeEventListener('mouseleave', this.boundHandleHoverOut);
|
|
204
|
+
element.removeEventListener('focus', this.boundHandleFocus);
|
|
205
|
+
element.removeEventListener('blur', this.boundHandleBlur);
|
|
206
|
+
element.removeEventListener('click', this.boundHandleClick);
|
|
207
|
+
}
|
|
208
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BrAnimateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
209
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: BrAnimateDirective, isStandalone: true, selector: "[brAnimate]", inputs: { animation: ["brAnimate", "animation"], brAnimateTrigger: "brAnimateTrigger", brAnimateDuration: "brAnimateDuration", brAnimateDelay: "brAnimateDelay", brAnimateEasing: "brAnimateEasing", brAnimateThreshold: "brAnimateThreshold", brAnimateOnce: "brAnimateOnce", brAnimateEnabled: "brAnimateEnabled" }, outputs: { brAnimateStart: "brAnimateStart", brAnimateEnd: "brAnimateEnd" }, ngImport: i0 }); }
|
|
210
|
+
}
|
|
211
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BrAnimateDirective, decorators: [{
|
|
212
|
+
type: Directive,
|
|
213
|
+
args: [{
|
|
214
|
+
selector: '[brAnimate]',
|
|
215
|
+
standalone: true,
|
|
216
|
+
}]
|
|
217
|
+
}], ctorParameters: () => [], propDecorators: { animation: [{
|
|
218
|
+
type: Input,
|
|
219
|
+
args: ['brAnimate']
|
|
220
|
+
}], brAnimateTrigger: [{
|
|
221
|
+
type: Input
|
|
222
|
+
}], brAnimateDuration: [{
|
|
223
|
+
type: Input
|
|
224
|
+
}], brAnimateDelay: [{
|
|
225
|
+
type: Input
|
|
226
|
+
}], brAnimateEasing: [{
|
|
227
|
+
type: Input
|
|
228
|
+
}], brAnimateThreshold: [{
|
|
229
|
+
type: Input
|
|
230
|
+
}], brAnimateOnce: [{
|
|
231
|
+
type: Input
|
|
232
|
+
}], brAnimateEnabled: [{
|
|
233
|
+
type: Input
|
|
234
|
+
}], brAnimateStart: [{
|
|
235
|
+
type: Output
|
|
236
|
+
}], brAnimateEnd: [{
|
|
237
|
+
type: Output
|
|
238
|
+
}] } });
|
|
239
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1nb3Zici10dy9zcmMvbGliL2FuaW1hdGlvbnMvYW5pbWF0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxFQUdMLE1BQU0sRUFDTixZQUFZLEVBQ1osTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFTekQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJHO0FBS0gsTUFBTSxPQUFPLGtCQUFrQjtJQTJDN0I7UUExQ2lCLE9BQUUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDeEIscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFL0QsdUJBQXVCO1FBQ0gsY0FBUyxHQUFvQixRQUFRLENBQUM7UUFFMUQsb0NBQW9DO1FBQzNCLHFCQUFnQixHQUF1QixXQUFXLENBQUM7UUFXNUQsaURBQWlEO1FBQ3hDLHVCQUFrQixHQUFHLEdBQUcsQ0FBQztRQUVsQyxvQ0FBb0M7UUFDM0Isa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFFOUIsb0NBQW9DO1FBQzNCLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUVqQywyQ0FBMkM7UUFDakMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQUVoRSx3Q0FBd0M7UUFDOUIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQUd0RCxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQiw0QkFBdUIsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdELHFCQUFnQixHQUFHLElBQUksQ0FBQyxXQUFXLENB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Q0FBQyxDQUFDO1FBQ3BFLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDNUQsT0FBTyxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDMUQsT0FBTyxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM5RCxDQUFDOytHQXRPVSxrQkFBa0I7bUdBQWxCLGtCQUFrQjs7NEZBQWxCLGtCQUFrQjtrQkFKOUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsYUFBYTtvQkFDdkIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCO3dEQU1xQixTQUFTO3NCQUE1QixLQUFLO3VCQUFDLFdBQVc7Z0JBR1QsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUdHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFHRyxjQUFjO3NCQUF0QixLQUFLO2dCQUdHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBR0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUdHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBR0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUdJLGNBQWM7c0JBQXZCLE1BQU07Z0JBR0csWUFBWTtzQkFBckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgRGlyZWN0aXZlLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIGluamVjdCxcclxuICBlZmZlY3QsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJyQW5pbWF0aW9uU2VydmljZSB9IGZyb20gJy4vYW5pbWF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gIEJyQW5pbWF0aW9uVHlwZSxcclxuICBCckFuaW1hdGlvbkR1cmF0aW9uLFxyXG4gIEJyQW5pbWF0aW9uRWFzaW5nLFxyXG4gIEJyQW5pbWF0aW9uVHJpZ2dlcixcclxuICBCckFuaW1hdGlvbkV2ZW50LFxyXG59IGZyb20gJy4vYW5pbWF0aW9uLnR5cGVzJztcclxuXHJcbi8qKlxyXG4gKiBEaXJldGl2YSBwYXJhIGFwbGljYXIgYW5pbWHDp8O1ZXMgYSBxdWFscXVlciBlbGVtZW50b1xyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiA8IS0tIEFuaW1hw6fDo28gaW1lZGlhdGEgLS0+XHJcbiAqIDxkaXYgYnJBbmltYXRlPVwiZmFkZUluVXBcIj5Db250ZcO6ZG88L2Rpdj5cclxuICpcclxuICogPCEtLSBBbmltYcOnw6NvIHF1YW5kbyB2aXPDrXZlbCAtLT5cclxuICogPGRpdiBickFuaW1hdGU9XCJmYWRlSW5VcFwiIGJyQW5pbWF0ZVRyaWdnZXI9XCJ2aXNpYmxlXCI+Q29udGXDumRvPC9kaXY+XHJcbiAqXHJcbiAqIDwhLS0gQ29tIGNvbmZpZ3VyYcOnw7VlcyAtLT5cclxuICogPGRpdiBickFuaW1hdGU9XCJzY2FsZUluXCIgW2JyQW5pbWF0ZUR1cmF0aW9uXT1cIjMwMFwiIGJyQW5pbWF0ZUVhc2luZz1cImVhc2VPdXRCYWNrXCI+XHJcbiAqICAgQ29udGXDumRvXHJcbiAqIDwvZGl2PlxyXG4gKlxyXG4gKiA8IS0tIFN0YWdnZXIgZW0gbGlzdGEgLS0+XHJcbiAqIDx1bD5cclxuICogICA8bGkgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXM7IGxldCBpID0gaW5kZXhcIlxyXG4gKiAgICAgICBickFuaW1hdGU9XCJmYWRlSW5VcFwiXHJcbiAqICAgICAgIFtickFuaW1hdGVEZWxheV09XCJpICogNTBcIj5cclxuICogICAgIHt7IGl0ZW0gfX1cclxuICogICA8L2xpPlxyXG4gKiA8L3VsPlxyXG4gKi9cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbYnJBbmltYXRlXScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEJyQW5pbWF0ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwcml2YXRlIHJlYWRvbmx5IGVsID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgYW5pbWF0aW9uU2VydmljZSA9IGluamVjdChCckFuaW1hdGlvblNlcnZpY2UpO1xyXG5cclxuICAvKiogVGlwbyBkZSBhbmltYcOnw6NvICovXHJcbiAgQElucHV0KCdickFuaW1hdGUnKSBhbmltYXRpb246IEJyQW5pbWF0aW9uVHlwZSA9ICdmYWRlSW4nO1xyXG5cclxuICAvKiogVHJpZ2dlciBxdWUgaW5pY2lhIGEgYW5pbWHDp8OjbyAqL1xyXG4gIEBJbnB1dCgpIGJyQW5pbWF0ZVRyaWdnZXI6IEJyQW5pbWF0aW9uVHJpZ2dlciA9ICdpbW1lZGlhdGUnO1xyXG5cclxuICAvKiogRHVyYcOnw6NvIGRhIGFuaW1hw6fDo28gKi9cclxuICBASW5wdXQoKSBickFuaW1hdGVEdXJhdGlvbj86IG51bWJlciB8IEJyQW5pbWF0aW9uRHVyYXRpb247XHJcblxyXG4gIC8qKiBEZWxheSBhbnRlcyBkZSBpbmljaWFyICovXHJcbiAgQElucHV0KCkgYnJBbmltYXRlRGVsYXk/OiBudW1iZXI7XHJcblxyXG4gIC8qKiBDdXJ2YSBkZSBlYXNpbmcgKi9cclxuICBASW5wdXQoKSBickFuaW1hdGVFYXNpbmc/OiBCckFuaW1hdGlvbkVhc2luZztcclxuXHJcbiAgLyoqIFRocmVzaG9sZCBwYXJhIEludGVyc2VjdGlvbiBPYnNlcnZlciAoMC0xKSAqL1xyXG4gIEBJbnB1dCgpIGJyQW5pbWF0ZVRocmVzaG9sZCA9IDAuMTtcclxuXHJcbiAgLyoqIFNlIGRldmUgYW5pbWFyIGFwZW5hcyB1bWEgdmV6ICovXHJcbiAgQElucHV0KCkgYnJBbmltYXRlT25jZSA9IHRydWU7XHJcblxyXG4gIC8qKiBTZSBhIGFuaW1hw6fDo28gZXN0w6EgaGFiaWxpdGFkYSAqL1xyXG4gIEBJbnB1dCgpIGJyQW5pbWF0ZUVuYWJsZWQgPSB0cnVlO1xyXG5cclxuICAvKiogRXZlbnRvIGVtaXRpZG8gbm8gaW7DrWNpbyBkYSBhbmltYcOnw6NvICovXHJcbiAgQE91dHB1dCgpIGJyQW5pbWF0ZVN0YXJ0ID0gbmV3IEV2ZW50RW1pdHRlcjxCckFuaW1hdGlvbkV2ZW50PigpO1xyXG5cclxuICAvKiogRXZlbnRvIGVtaXRpZG8gbm8gZmltIGRhIGFuaW1hw6fDo28gKi9cclxuICBAT3V0cHV0KCkgYnJBbmltYXRlRW5kID0gbmV3IEV2ZW50RW1pdHRlcjxCckFuaW1hdGlvbkV2ZW50PigpO1xyXG5cclxuICBwcml2YXRlIG9ic2VydmVyPzogSW50ZXJzZWN0aW9uT2JzZXJ2ZXI7XHJcbiAgcHJpdmF0ZSBoYXNBbmltYXRlZCA9IGZhbHNlO1xyXG4gIHByaXZhdGUgYm91bmRIYW5kbGVBbmltYXRpb25FbmQgPSB0aGlzLmhhbmRsZUFuaW1hdGlvbkVuZC5iaW5kKHRoaXMpO1xyXG4gIHByaXZhdGUgYm91bmRIYW5kbGVIb3ZlciA9IHRoaXMuaGFuZGxlSG92ZXIuYmluZCh0aGlzKTtcclxuICBwcml2YXRlIGJvdW5kSGFuZGxlSG92ZXJPdXQgPSB0aGlzLmhhbmRsZUhvdmVyT3V0LmJpbmQodGhpcyk7XHJcbiAgcHJpdmF0ZSBib3VuZEhhbmRsZUZvY3VzID0gdGhpcy5oYW5kbGVGb2N1cy5iaW5kKHRoaXMpO1xyXG4gIHByaXZhdGUgYm91bmRIYW5kbGVCbHVyID0gdGhpcy5oYW5kbGVCbHVyLmJpbmQodGhpcyk7XHJcbiAgcHJpdmF0ZSBib3VuZEhhbmRsZUNsaWNrID0gdGhpcy5oYW5kbGVDbGljay5iaW5kKHRoaXMpO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIC8vIFJlYWdlIGEgbXVkYW7Dp2FzIG5vIHNlcnZpw6dvIGRlIGFuaW1hw6fDo29cclxuICAgIGVmZmVjdCgoKSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy5hbmltYXRpb25TZXJ2aWNlLmlzRW5hYmxlZCgpKSB7XHJcbiAgICAgICAgdGhpcy5jbGVhckFuaW1hdGlvbigpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmJyQW5pbWF0ZUVuYWJsZWQpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLnNldHVwVHJpZ2dlcigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmNsZWFudXAoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaWNpYSBhIGFuaW1hw6fDo28gcHJvZ3JhbWF0aWNhbWVudGVcclxuICAgKi9cclxuICBwbGF5KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmNhbkFuaW1hdGUoKSkgcmV0dXJuO1xyXG4gICAgdGhpcy5hcHBseUFuaW1hdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzZXRhIGEgYW5pbWHDp8OjbyBwYXJhIHBvZGVyIHJvZGFyIG5vdmFtZW50ZVxyXG4gICAqL1xyXG4gIHJlc2V0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5oYXNBbmltYXRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5jbGVhckFuaW1hdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXR1cFRyaWdnZXIoKTogdm9pZCB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xyXG5cclxuICAgIHN3aXRjaCAodGhpcy5ickFuaW1hdGVUcmlnZ2VyKSB7XHJcbiAgICAgIGNhc2UgJ2ltbWVkaWF0ZSc6XHJcbiAgICAgICAgLy8gUGVxdWVubyBkZWxheSBwYXJhIGdhcmFudGlyIHF1ZSBvIGVsZW1lbnRvIGVzdMOhIG5vIERPTVxyXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB0aGlzLnBsYXkoKSk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlICd2aXNpYmxlJzpcclxuICAgICAgICB0aGlzLnNldHVwSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgJ2hvdmVyJzpcclxuICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZW50ZXInLCB0aGlzLmJvdW5kSGFuZGxlSG92ZXIpO1xyXG4gICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIHRoaXMuYm91bmRIYW5kbGVIb3Zlck91dCk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlICdmb2N1cyc6XHJcbiAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsIHRoaXMuYm91bmRIYW5kbGVGb2N1cyk7XHJcbiAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgdGhpcy5ib3VuZEhhbmRsZUJsdXIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSAnY2xpY2snOlxyXG4gICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmJvdW5kSGFuZGxlQ2xpY2spO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSAnbWFudWFsJzpcclxuICAgICAgICAvLyBOw6NvIGZheiBuYWRhLCBlc3BlcmEgY2hhbWFkYSBwcm9ncmFtw6F0aWNhXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTGlzdGVuZXIgcGFyYSBmaW0gZGEgYW5pbWHDp8Ojb1xyXG4gICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdhbmltYXRpb25lbmQnLCB0aGlzLmJvdW5kSGFuZGxlQW5pbWF0aW9uRW5kKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0dXBJbnRlcnNlY3Rpb25PYnNlcnZlcigpOiB2b2lkIHtcclxuICAgIGlmICh0eXBlb2YgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIC8vIEZhbGxiYWNrOiBhbmltYSBpbWVkaWF0YW1lbnRlXHJcbiAgICAgIHRoaXMucGxheSgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5vYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihcclxuICAgICAgKGVudHJpZXMpID0+IHtcclxuICAgICAgICBlbnRyaWVzLmZvckVhY2goKGVudHJ5KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZW50cnkuaXNJbnRlcnNlY3RpbmcgJiYgdGhpcy5jYW5BbmltYXRlKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5hcHBseUFuaW1hdGlvbigpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuYnJBbmltYXRlT25jZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMub2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9LFxyXG4gICAgICB7IHRocmVzaG9sZDogdGhpcy5ickFuaW1hdGVUaHJlc2hvbGQgfVxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy5lbC5uYXRpdmVFbGVtZW50KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2FuQW5pbWF0ZSgpOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5ickFuaW1hdGVFbmFibGVkKSByZXR1cm4gZmFsc2U7XHJcbiAgICBpZiAoIXRoaXMuYW5pbWF0aW9uU2VydmljZS5pc0VuYWJsZWQoKSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgaWYgKHRoaXMuYnJBbmltYXRlT25jZSAmJiB0aGlzLmhhc0FuaW1hdGVkKSByZXR1cm4gZmFsc2U7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlBbmltYXRpb24oKTogdm9pZCB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgY29uc3QgZHVyYXRpb24gPSB0aGlzLmFuaW1hdGlvblNlcnZpY2UucmVzb2x2ZUR1cmF0aW9uKHRoaXMuYnJBbmltYXRlRHVyYXRpb24pO1xyXG4gICAgY29uc3QgZWFzaW5nID0gdGhpcy5hbmltYXRpb25TZXJ2aWNlLnJlc29sdmVFYXNpbmcodGhpcy5ickFuaW1hdGVFYXNpbmcpO1xyXG4gICAgY29uc3QgZGVsYXkgPSB0aGlzLmJyQW5pbWF0ZURlbGF5IHx8IDA7XHJcblxyXG4gICAgLy8gRW1pdGUgZXZlbnRvIGRlIGluw61jaW9cclxuICAgIHRoaXMuYnJBbmltYXRlU3RhcnQuZW1pdCh7XHJcbiAgICAgIHR5cGU6IHRoaXMuYW5pbWF0aW9uLFxyXG4gICAgICBwaGFzZTogJ3N0YXJ0JyxcclxuICAgICAgZWxlbWVudCxcclxuICAgICAgdGltZXN0YW1wOiBEYXRlLm5vdygpLFxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gQXBsaWNhIGEgYW5pbWHDp8Ojb1xyXG4gICAgZWxlbWVudC5zdHlsZS5hbmltYXRpb24gPSBgYnItJHt0aGlzLmFuaW1hdGlvbn0gJHtkdXJhdGlvbn1tcyAke2Vhc2luZ30gJHtkZWxheX1tcyBib3RoYDtcclxuXHJcbiAgICB0aGlzLmhhc0FuaW1hdGVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xlYXJBbmltYXRpb24oKTogdm9pZCB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgZWxlbWVudC5zdHlsZS5hbmltYXRpb24gPSAnJztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlQW5pbWF0aW9uRW5kKCk6IHZvaWQge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuXHJcbiAgICB0aGlzLmJyQW5pbWF0ZUVuZC5lbWl0KHtcclxuICAgICAgdHlwZTogdGhpcy5hbmltYXRpb24sXHJcbiAgICAgIHBoYXNlOiAnZW5kJyxcclxuICAgICAgZWxlbWVudCxcclxuICAgICAgdGltZXN0YW1wOiBEYXRlLm5vdygpLFxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gUGFyYSB0cmlnZ2VycyBkZSBob3Zlci9mb2N1cywgbGltcGEgcGFyYSBwb2RlciByZXBldGlyXHJcbiAgICBpZiAodGhpcy5ickFuaW1hdGVUcmlnZ2VyID09PSAnaG92ZXInIHx8IHRoaXMuYnJBbmltYXRlVHJpZ2dlciA9PT0gJ2ZvY3VzJykge1xyXG4gICAgICB0aGlzLmNsZWFyQW5pbWF0aW9uKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUhvdmVyKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY2FuQW5pbWF0ZSgpIHx8IHRoaXMuYnJBbmltYXRlVHJpZ2dlciA9PT0gJ2hvdmVyJykge1xyXG4gICAgICB0aGlzLmhhc0FuaW1hdGVkID0gZmFsc2U7IC8vIFBlcm1pdGUgcmVwZXRpciBubyBob3ZlclxyXG4gICAgICB0aGlzLmFwcGx5QW5pbWF0aW9uKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUhvdmVyT3V0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jbGVhckFuaW1hdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVGb2N1cygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNhbkFuaW1hdGUoKSB8fCB0aGlzLmJyQW5pbWF0ZVRyaWdnZXIgPT09ICdmb2N1cycpIHtcclxuICAgICAgdGhpcy5oYXNBbmltYXRlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmFwcGx5QW5pbWF0aW9uKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUJsdXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNsZWFyQW5pbWF0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUNsaWNrKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY2FuQW5pbWF0ZSgpIHx8IHRoaXMuYnJBbmltYXRlVHJpZ2dlciA9PT0gJ2NsaWNrJykge1xyXG4gICAgICB0aGlzLmhhc0FuaW1hdGVkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2xlYXJBbmltYXRpb24oKTtcclxuICAgICAgLy8gRm9yw6dhIHJlZmxvdyBwYXJhIHJlaW5pY2lhciBhIGFuaW1hw6fDo29cclxuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICB0aGlzLmFwcGx5QW5pbWF0aW9uKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNsZWFudXAoKTogdm9pZCB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xyXG5cclxuICAgIHRoaXMub2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcclxuXHJcbiAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsIHRoaXMuYm91bmRIYW5kbGVBbmltYXRpb25FbmQpO1xyXG4gICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgdGhpcy5ib3VuZEhhbmRsZUhvdmVyKTtcclxuICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIHRoaXMuYm91bmRIYW5kbGVIb3Zlck91dCk7XHJcbiAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgdGhpcy5ib3VuZEhhbmRsZUZvY3VzKTtcclxuICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignYmx1cicsIHRoaXMuYm91bmRIYW5kbGVCbHVyKTtcclxuICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmJvdW5kSGFuZGxlQ2xpY2spO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { Injectable, signal, computed, inject, InjectionToken } from '@angular/core';
|
|
2
|
+
import { BR_ANIMATION_DEFAULT_CONFIG, BR_ANIMATION_DURATION_MAP, BR_ANIMATION_EASING_MAP, } from './animation.types';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/** Token para injetar configuração customizada */
|
|
5
|
+
export const BR_ANIMATION_CONFIG = new InjectionToken('BR_ANIMATION_CONFIG');
|
|
6
|
+
/**
|
|
7
|
+
* Serviço de animações Gov.br
|
|
8
|
+
* @description Gerencia configuração global e estado das animações
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* // No módulo/componente principal
|
|
12
|
+
* providers: [
|
|
13
|
+
* {
|
|
14
|
+
* provide: BR_ANIMATION_CONFIG,
|
|
15
|
+
* useValue: { enabled: true, defaultDuration: 'fast' }
|
|
16
|
+
* }
|
|
17
|
+
* ]
|
|
18
|
+
*
|
|
19
|
+
* // No componente
|
|
20
|
+
* constructor(private animationService: BrAnimationService) {
|
|
21
|
+
* this.animationService.enable();
|
|
22
|
+
* }
|
|
23
|
+
*/
|
|
24
|
+
export class BrAnimationService {
|
|
25
|
+
constructor() {
|
|
26
|
+
/** Configuração global reativa */
|
|
27
|
+
this._config = signal({ ...BR_ANIMATION_DEFAULT_CONFIG });
|
|
28
|
+
/** Se animações estão habilitadas (considera reduced motion) */
|
|
29
|
+
this.isEnabled = computed(() => {
|
|
30
|
+
const config = this._config();
|
|
31
|
+
if (!config.enabled)
|
|
32
|
+
return false;
|
|
33
|
+
if (config.respectReducedMotion && this._prefersReducedMotion())
|
|
34
|
+
return false;
|
|
35
|
+
return true;
|
|
36
|
+
});
|
|
37
|
+
/** Configuração atual (readonly) */
|
|
38
|
+
this.config = computed(() => this._config());
|
|
39
|
+
/** Cache de media query */
|
|
40
|
+
this._reducedMotionQuery = null;
|
|
41
|
+
/** Custom config injected optionally */
|
|
42
|
+
this._customConfig = inject(BR_ANIMATION_CONFIG, { optional: true });
|
|
43
|
+
// Merge com configuração customizada
|
|
44
|
+
if (this._customConfig) {
|
|
45
|
+
this._config.update(current => ({ ...current, ...this._customConfig }));
|
|
46
|
+
}
|
|
47
|
+
// Setup listener para prefers-reduced-motion
|
|
48
|
+
this._setupReducedMotionListener();
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Habilita animações globalmente
|
|
52
|
+
*/
|
|
53
|
+
enable() {
|
|
54
|
+
this._config.update(config => ({ ...config, enabled: true }));
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Desabilita animações globalmente
|
|
58
|
+
*/
|
|
59
|
+
disable() {
|
|
60
|
+
this._config.update(config => ({ ...config, enabled: false }));
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Toggle do estado de animações
|
|
64
|
+
*/
|
|
65
|
+
toggle() {
|
|
66
|
+
this._config.update(config => ({ ...config, enabled: !config.enabled }));
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Atualiza configuração global
|
|
70
|
+
*/
|
|
71
|
+
configure(config) {
|
|
72
|
+
this._config.update(current => ({ ...current, ...config }));
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Define duração padrão
|
|
76
|
+
*/
|
|
77
|
+
setDefaultDuration(duration) {
|
|
78
|
+
this._config.update(config => ({ ...config, defaultDuration: duration }));
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Define easing padrão
|
|
82
|
+
*/
|
|
83
|
+
setDefaultEasing(easing) {
|
|
84
|
+
this._config.update(config => ({ ...config, defaultEasing: easing }));
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Resolve duração para valor em ms
|
|
88
|
+
*/
|
|
89
|
+
resolveDuration(duration) {
|
|
90
|
+
if (duration === undefined) {
|
|
91
|
+
const defaultDur = this._config().defaultDuration;
|
|
92
|
+
return typeof defaultDur === 'number' ? defaultDur : BR_ANIMATION_DURATION_MAP[defaultDur];
|
|
93
|
+
}
|
|
94
|
+
return typeof duration === 'number' ? duration : BR_ANIMATION_DURATION_MAP[duration];
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Resolve easing para valor CSS
|
|
98
|
+
*/
|
|
99
|
+
resolveEasing(easing) {
|
|
100
|
+
const resolvedEasing = easing || this._config().defaultEasing;
|
|
101
|
+
return BR_ANIMATION_EASING_MAP[resolvedEasing];
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Gera string de animação CSS
|
|
105
|
+
*/
|
|
106
|
+
getAnimationString(config) {
|
|
107
|
+
if (!this.isEnabled())
|
|
108
|
+
return 'none';
|
|
109
|
+
const duration = this.resolveDuration(config.duration);
|
|
110
|
+
const easing = this.resolveEasing(config.easing);
|
|
111
|
+
const delay = config.delay || 0;
|
|
112
|
+
const iterations = config.iterations === 'infinite' ? 'infinite' : (config.iterations || 1);
|
|
113
|
+
const direction = config.direction || 'normal';
|
|
114
|
+
const fillMode = config.fillMode || 'both';
|
|
115
|
+
return `br-${config.type} ${duration}ms ${easing} ${delay}ms ${iterations} ${direction} ${fillMode}`;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Aplica animação a um elemento
|
|
119
|
+
*/
|
|
120
|
+
animate(element, config) {
|
|
121
|
+
return new Promise((resolve, reject) => {
|
|
122
|
+
if (!this.isEnabled()) {
|
|
123
|
+
resolve();
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
const animationString = this.getAnimationString(config);
|
|
127
|
+
element.style.animation = animationString;
|
|
128
|
+
const handleEnd = () => {
|
|
129
|
+
element.removeEventListener('animationend', handleEnd);
|
|
130
|
+
element.removeEventListener('animationcancel', handleCancel);
|
|
131
|
+
resolve();
|
|
132
|
+
};
|
|
133
|
+
const handleCancel = () => {
|
|
134
|
+
element.removeEventListener('animationend', handleEnd);
|
|
135
|
+
element.removeEventListener('animationcancel', handleCancel);
|
|
136
|
+
reject(new Error('Animation cancelled'));
|
|
137
|
+
};
|
|
138
|
+
element.addEventListener('animationend', handleEnd);
|
|
139
|
+
element.addEventListener('animationcancel', handleCancel);
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Remove animação de um elemento
|
|
144
|
+
*/
|
|
145
|
+
clearAnimation(element) {
|
|
146
|
+
element.style.animation = '';
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Verifica se usuário prefere movimento reduzido
|
|
150
|
+
*/
|
|
151
|
+
_prefersReducedMotion() {
|
|
152
|
+
if (typeof window === 'undefined')
|
|
153
|
+
return false;
|
|
154
|
+
return this._reducedMotionQuery?.matches ?? false;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Configura listener para mudanças de preferência
|
|
158
|
+
*/
|
|
159
|
+
_setupReducedMotionListener() {
|
|
160
|
+
if (typeof window === 'undefined')
|
|
161
|
+
return;
|
|
162
|
+
this._reducedMotionQuery = window.matchMedia('(prefers-reduced-motion: reduce)');
|
|
163
|
+
// Força re-avaliação quando preferência muda
|
|
164
|
+
this._reducedMotionQuery.addEventListener('change', () => {
|
|
165
|
+
// Trigger recomputation via signal update
|
|
166
|
+
this._config.update(config => ({ ...config }));
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BrAnimationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
170
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BrAnimationService, providedIn: 'root' }); }
|
|
171
|
+
}
|
|
172
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BrAnimationService, decorators: [{
|
|
173
|
+
type: Injectable,
|
|
174
|
+
args: [{
|
|
175
|
+
providedIn: 'root',
|
|
176
|
+
}]
|
|
177
|
+
}], ctorParameters: () => [] });
|
|
178
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1nb3Zici10dy9zcmMvbGliL2FuaW1hdGlvbnMvYW5pbWF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckYsT0FBTyxFQUtMLDJCQUEyQixFQUMzQix5QkFBeUIsRUFDekIsdUJBQXVCLEdBQ3hCLE1BQU0sbUJBQW1CLENBQUM7O0FBRTNCLGtEQUFrRDtBQUNsRCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLGNBQWMsQ0FDbkQscUJBQXFCLENBQ3RCLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFJSCxNQUFNLE9BQU8sa0JBQWtCO0lBcUI3QjtRQXBCQSxrQ0FBa0M7UUFDakIsWUFBTyxHQUFHLE1BQU0sQ0FBMEIsRUFBRSxHQUFHLDJCQUEyQixFQUFFLENBQUMsQ0FBQztRQUUvRixnRUFBZ0U7UUFDdkQsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDakMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTztnQkFBRSxPQUFPLEtBQUssQ0FBQztZQUNsQyxJQUFJLE1BQU0sQ0FBQyxvQkFBb0IsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUU7Z0JBQUUsT0FBTyxLQUFLLENBQUM7WUFDOUUsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztRQUVILG9DQUFvQztRQUMzQixXQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBRWpELDJCQUEyQjtRQUNuQix3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R0FBRyxFQUFFO1lBQ3ZELDBDQUEwQztZQUMxQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBdEtVLGtCQUFrQjttSEFBbEIsa0JBQWtCLGNBRmpCLE1BQU07OzRGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBzaWduYWwsIGNvbXB1dGVkLCBpbmplY3QsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQnJBbmltYXRpb25HbG9iYWxDb25maWcsXHJcbiAgQnJBbmltYXRpb25EdXJhdGlvbixcclxuICBCckFuaW1hdGlvbkVhc2luZyxcclxuICBCckFuaW1hdGlvbkNvbmZpZyxcclxuICBCUl9BTklNQVRJT05fREVGQVVMVF9DT05GSUcsXHJcbiAgQlJfQU5JTUFUSU9OX0RVUkFUSU9OX01BUCxcclxuICBCUl9BTklNQVRJT05fRUFTSU5HX01BUCxcclxufSBmcm9tICcuL2FuaW1hdGlvbi50eXBlcyc7XHJcblxyXG4vKiogVG9rZW4gcGFyYSBpbmpldGFyIGNvbmZpZ3VyYcOnw6NvIGN1c3RvbWl6YWRhICovXHJcbmV4cG9ydCBjb25zdCBCUl9BTklNQVRJT05fQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPFBhcnRpYWw8QnJBbmltYXRpb25HbG9iYWxDb25maWc+PihcclxuICAnQlJfQU5JTUFUSU9OX0NPTkZJRydcclxuKTtcclxuXHJcbi8qKlxyXG4gKiBTZXJ2acOnbyBkZSBhbmltYcOnw7VlcyBHb3YuYnJcclxuICogQGRlc2NyaXB0aW9uIEdlcmVuY2lhIGNvbmZpZ3VyYcOnw6NvIGdsb2JhbCBlIGVzdGFkbyBkYXMgYW5pbWHDp8O1ZXNcclxuICpcclxuICogQGV4YW1wbGVcclxuICogLy8gTm8gbcOzZHVsby9jb21wb25lbnRlIHByaW5jaXBhbFxyXG4gKiBwcm92aWRlcnM6IFtcclxuICogICB7XHJcbiAqICAgICBwcm92aWRlOiBCUl9BTklNQVRJT05fQ09ORklHLFxyXG4gKiAgICAgdXNlVmFsdWU6IHsgZW5hYmxlZDogdHJ1ZSwgZGVmYXVsdER1cmF0aW9uOiAnZmFzdCcgfVxyXG4gKiAgIH1cclxuICogXVxyXG4gKlxyXG4gKiAvLyBObyBjb21wb25lbnRlXHJcbiAqIGNvbnN0cnVjdG9yKHByaXZhdGUgYW5pbWF0aW9uU2VydmljZTogQnJBbmltYXRpb25TZXJ2aWNlKSB7XHJcbiAqICAgdGhpcy5hbmltYXRpb25TZXJ2aWNlLmVuYWJsZSgpO1xyXG4gKiB9XHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQnJBbmltYXRpb25TZXJ2aWNlIHtcclxuICAvKiogQ29uZmlndXJhw6fDo28gZ2xvYmFsIHJlYXRpdmEgKi9cclxuICBwcml2YXRlIHJlYWRvbmx5IF9jb25maWcgPSBzaWduYWw8QnJBbmltYXRpb25HbG9iYWxDb25maWc+KHsgLi4uQlJfQU5JTUFUSU9OX0RFRkFVTFRfQ09ORklHIH0pO1xyXG5cclxuICAvKiogU2UgYW5pbWHDp8O1ZXMgZXN0w6NvIGhhYmlsaXRhZGFzIChjb25zaWRlcmEgcmVkdWNlZCBtb3Rpb24pICovXHJcbiAgcmVhZG9ubHkgaXNFbmFibGVkID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5fY29uZmlnKCk7XHJcbiAgICBpZiAoIWNvbmZpZy5lbmFibGVkKSByZXR1cm4gZmFsc2U7XHJcbiAgICBpZiAoY29uZmlnLnJlc3BlY3RSZWR1Y2VkTW90aW9uICYmIHRoaXMuX3ByZWZlcnNSZWR1Y2VkTW90aW9uKCkpIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH0pO1xyXG5cclxuICAvKiogQ29uZmlndXJhw6fDo28gYXR1YWwgKHJlYWRvbmx5KSAqL1xyXG4gIHJlYWRvbmx5IGNvbmZpZyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX2NvbmZpZygpKTtcclxuXHJcbiAgLyoqIENhY2hlIGRlIG1lZGlhIHF1ZXJ5ICovXHJcbiAgcHJpdmF0ZSBfcmVkdWNlZE1vdGlvblF1ZXJ5OiBNZWRpYVF1ZXJ5TGlzdCB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvKiogQ3VzdG9tIGNvbmZpZyBpbmplY3RlZCBvcHRpb25hbGx5ICovXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfY3VzdG9tQ29uZmlnID0gaW5qZWN0KEJSX0FOSU1BVElPTl9DT05GSUcsIHsgb3B0aW9uYWw6IHRydWUgfSk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgLy8gTWVyZ2UgY29tIGNvbmZpZ3VyYcOnw6NvIGN1c3RvbWl6YWRhXHJcbiAgICBpZiAodGhpcy5fY3VzdG9tQ29uZmlnKSB7XHJcbiAgICAgIHRoaXMuX2NvbmZpZy51cGRhdGUoY3VycmVudCA9PiAoeyAuLi5jdXJyZW50LCAuLi50aGlzLl9jdXN0b21Db25maWcgfSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFNldHVwIGxpc3RlbmVyIHBhcmEgcHJlZmVycy1yZWR1Y2VkLW1vdGlvblxyXG4gICAgdGhpcy5fc2V0dXBSZWR1Y2VkTW90aW9uTGlzdGVuZXIoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhYmlsaXRhIGFuaW1hw6fDtWVzIGdsb2JhbG1lbnRlXHJcbiAgICovXHJcbiAgZW5hYmxlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY29uZmlnLnVwZGF0ZShjb25maWcgPT4gKHsgLi4uY29uZmlnLCBlbmFibGVkOiB0cnVlIH0pKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlc2FiaWxpdGEgYW5pbWHDp8O1ZXMgZ2xvYmFsbWVudGVcclxuICAgKi9cclxuICBkaXNhYmxlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY29uZmlnLnVwZGF0ZShjb25maWcgPT4gKHsgLi4uY29uZmlnLCBlbmFibGVkOiBmYWxzZSB9KSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUb2dnbGUgZG8gZXN0YWRvIGRlIGFuaW1hw6fDtWVzXHJcbiAgICovXHJcbiAgdG9nZ2xlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY29uZmlnLnVwZGF0ZShjb25maWcgPT4gKHsgLi4uY29uZmlnLCBlbmFibGVkOiAhY29uZmlnLmVuYWJsZWQgfSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQXR1YWxpemEgY29uZmlndXJhw6fDo28gZ2xvYmFsXHJcbiAgICovXHJcbiAgY29uZmlndXJlKGNvbmZpZzogUGFydGlhbDxCckFuaW1hdGlvbkdsb2JhbENvbmZpZz4pOiB2b2lkIHtcclxuICAgIHRoaXMuX2NvbmZpZy51cGRhdGUoY3VycmVudCA9PiAoeyAuLi5jdXJyZW50LCAuLi5jb25maWcgfSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVmaW5lIGR1cmHDp8OjbyBwYWRyw6NvXHJcbiAgICovXHJcbiAgc2V0RGVmYXVsdER1cmF0aW9uKGR1cmF0aW9uOiBudW1iZXIgfCBCckFuaW1hdGlvbkR1cmF0aW9uKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jb25maWcudXBkYXRlKGNvbmZpZyA9PiAoeyAuLi5jb25maWcsIGRlZmF1bHREdXJhdGlvbjogZHVyYXRpb24gfSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVmaW5lIGVhc2luZyBwYWRyw6NvXHJcbiAgICovXHJcbiAgc2V0RGVmYXVsdEVhc2luZyhlYXNpbmc6IEJyQW5pbWF0aW9uRWFzaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jb25maWcudXBkYXRlKGNvbmZpZyA9PiAoeyAuLi5jb25maWcsIGRlZmF1bHRFYXNpbmc6IGVhc2luZyB9KSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXNvbHZlIGR1cmHDp8OjbyBwYXJhIHZhbG9yIGVtIG1zXHJcbiAgICovXHJcbiAgcmVzb2x2ZUR1cmF0aW9uKGR1cmF0aW9uPzogbnVtYmVyIHwgQnJBbmltYXRpb25EdXJhdGlvbik6IG51bWJlciB7XHJcbiAgICBpZiAoZHVyYXRpb24gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBjb25zdCBkZWZhdWx0RHVyID0gdGhpcy5fY29uZmlnKCkuZGVmYXVsdER1cmF0aW9uO1xyXG4gICAgICByZXR1cm4gdHlwZW9mIGRlZmF1bHREdXIgPT09ICdudW1iZXInID8gZGVmYXVsdER1ciA6IEJSX0FOSU1BVElPTl9EVVJBVElPTl9NQVBbZGVmYXVsdER1cl07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHlwZW9mIGR1cmF0aW9uID09PSAnbnVtYmVyJyA/IGR1cmF0aW9uIDogQlJfQU5JTUFUSU9OX0RVUkFUSU9OX01BUFtkdXJhdGlvbl07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXNvbHZlIGVhc2luZyBwYXJhIHZhbG9yIENTU1xyXG4gICAqL1xyXG4gIHJlc29sdmVFYXNpbmcoZWFzaW5nPzogQnJBbmltYXRpb25FYXNpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgcmVzb2x2ZWRFYXNpbmcgPSBlYXNpbmcgfHwgdGhpcy5fY29uZmlnKCkuZGVmYXVsdEVhc2luZztcclxuICAgIHJldHVybiBCUl9BTklNQVRJT05fRUFTSU5HX01BUFtyZXNvbHZlZEVhc2luZ107XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXJhIHN0cmluZyBkZSBhbmltYcOnw6NvIENTU1xyXG4gICAqL1xyXG4gIGdldEFuaW1hdGlvblN0cmluZyhjb25maWc6IEJyQW5pbWF0aW9uQ29uZmlnKTogc3RyaW5nIHtcclxuICAgIGlmICghdGhpcy5pc0VuYWJsZWQoKSkgcmV0dXJuICdub25lJztcclxuXHJcbiAgICBjb25zdCBkdXJhdGlvbiA9IHRoaXMucmVzb2x2ZUR1cmF0aW9uKGNvbmZpZy5kdXJhdGlvbik7XHJcbiAgICBjb25zdCBlYXNpbmcgPSB0aGlzLnJlc29sdmVFYXNpbmcoY29uZmlnLmVhc2luZyk7XHJcbiAgICBjb25zdCBkZWxheSA9IGNvbmZpZy5kZWxheSB8fCAwO1xyXG4gICAgY29uc3QgaXRlcmF0aW9ucyA9IGNvbmZpZy5pdGVyYXRpb25zID09PSAnaW5maW5pdGUnID8gJ2luZmluaXRlJyA6IChjb25maWcuaXRlcmF0aW9ucyB8fCAxKTtcclxuICAgIGNvbnN0IGRpcmVjdGlvbiA9IGNvbmZpZy5kaXJlY3Rpb24gfHwgJ25vcm1hbCc7XHJcbiAgICBjb25zdCBmaWxsTW9kZSA9IGNvbmZpZy5maWxsTW9kZSB8fCAnYm90aCc7XHJcblxyXG4gICAgcmV0dXJuIGBici0ke2NvbmZpZy50eXBlfSAke2R1cmF0aW9ufW1zICR7ZWFzaW5nfSAke2RlbGF5fW1zICR7aXRlcmF0aW9uc30gJHtkaXJlY3Rpb259ICR7ZmlsbE1vZGV9YDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFwbGljYSBhbmltYcOnw6NvIGEgdW0gZWxlbWVudG9cclxuICAgKi9cclxuICBhbmltYXRlKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBjb25maWc6IEJyQW5pbWF0aW9uQ29uZmlnKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMuaXNFbmFibGVkKCkpIHtcclxuICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBhbmltYXRpb25TdHJpbmcgPSB0aGlzLmdldEFuaW1hdGlvblN0cmluZyhjb25maWcpO1xyXG4gICAgICBlbGVtZW50LnN0eWxlLmFuaW1hdGlvbiA9IGFuaW1hdGlvblN0cmluZztcclxuXHJcbiAgICAgIGNvbnN0IGhhbmRsZUVuZCA9ICgpID0+IHtcclxuICAgICAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsIGhhbmRsZUVuZCk7XHJcbiAgICAgICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdhbmltYXRpb25jYW5jZWwnLCBoYW5kbGVDYW5jZWwpO1xyXG4gICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgfTtcclxuXHJcbiAgICAgIGNvbnN0IGhhbmRsZUNhbmNlbCA9ICgpID0+IHtcclxuICAgICAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsIGhhbmRsZUVuZCk7XHJcbiAgICAgICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdhbmltYXRpb25jYW5jZWwnLCBoYW5kbGVDYW5jZWwpO1xyXG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ0FuaW1hdGlvbiBjYW5jZWxsZWQnKSk7XHJcbiAgICAgIH07XHJcblxyXG4gICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsIGhhbmRsZUVuZCk7XHJcbiAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignYW5pbWF0aW9uY2FuY2VsJywgaGFuZGxlQ2FuY2VsKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlIGFuaW1hw6fDo28gZGUgdW0gZWxlbWVudG9cclxuICAgKi9cclxuICBjbGVhckFuaW1hdGlvbihlbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xyXG4gICAgZWxlbWVudC5zdHlsZS5hbmltYXRpb24gPSAnJztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFZlcmlmaWNhIHNlIHVzdcOhcmlvIHByZWZlcmUgbW92aW1lbnRvIHJlZHV6aWRvXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfcHJlZmVyc1JlZHVjZWRNb3Rpb24oKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiB0aGlzLl9yZWR1Y2VkTW90aW9uUXVlcnk/Lm1hdGNoZXMgPz8gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb25maWd1cmEgbGlzdGVuZXIgcGFyYSBtdWRhbsOnYXMgZGUgcHJlZmVyw6puY2lhXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfc2V0dXBSZWR1Y2VkTW90aW9uTGlzdGVuZXIoKTogdm9pZCB7XHJcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLl9yZWR1Y2VkTW90aW9uUXVlcnkgPSB3aW5kb3cubWF0Y2hNZWRpYSgnKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSknKTtcclxuXHJcbiAgICAvLyBGb3LDp2EgcmUtYXZhbGlhw6fDo28gcXVhbmRvIHByZWZlcsOqbmNpYSBtdWRhXHJcbiAgICB0aGlzLl9yZWR1Y2VkTW90aW9uUXVlcnkuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKCkgPT4ge1xyXG4gICAgICAvLyBUcmlnZ2VyIHJlY29tcHV0YXRpb24gdmlhIHNpZ25hbCB1cGRhdGVcclxuICAgICAgdGhpcy5fY29uZmlnLnVwZGF0ZShjb25maWcgPT4gKHsgLi4uY29uZmlnIH0pKTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tipos e interfaces para o sistema de animações Gov.br
|
|
3
|
+
* @description Sistema de animações configurável e acessível
|
|
4
|
+
*/
|
|
5
|
+
/** Mapeamento de easing para valores CSS */
|
|
6
|
+
export const BR_ANIMATION_EASING_MAP = {
|
|
7
|
+
linear: 'linear',
|
|
8
|
+
ease: 'ease',
|
|
9
|
+
easeIn: 'ease-in',
|
|
10
|
+
easeOut: 'ease-out',
|
|
11
|
+
easeInOut: 'ease-in-out',
|
|
12
|
+
easeInBack: 'cubic-bezier(0.6, -0.28, 0.735, 0.045)',
|
|
13
|
+
easeOutBack: 'cubic-bezier(0.175, 0.885, 0.32, 1.275)',
|
|
14
|
+
easeInOutBack: 'cubic-bezier(0.68, -0.55, 0.265, 1.55)',
|
|
15
|
+
easeInElastic: 'cubic-bezier(0.5, -0.5, 0.75, 1.25)',
|
|
16
|
+
easeOutElastic: 'cubic-bezier(0.25, -0.25, 0.25, 1.5)',
|
|
17
|
+
easeOutBounce: 'cubic-bezier(0.34, 1.56, 0.64, 1)',
|
|
18
|
+
};
|
|
19
|
+
/** Mapeamento de duração para valores em ms */
|
|
20
|
+
export const BR_ANIMATION_DURATION_MAP = {
|
|
21
|
+
instant: 100,
|
|
22
|
+
fast: 150,
|
|
23
|
+
normal: 250,
|
|
24
|
+
slow: 400,
|
|
25
|
+
slower: 600,
|
|
26
|
+
};
|
|
27
|
+
/** Configuração padrão global */
|
|
28
|
+
export const BR_ANIMATION_DEFAULT_CONFIG = {
|
|
29
|
+
enabled: false, // Desabilitado por padrão
|
|
30
|
+
respectReducedMotion: true,
|
|
31
|
+
defaultDuration: 'normal',
|
|
32
|
+
defaultEasing: 'easeOut',
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9uLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZ292YnItdHcvc3JjL2xpYi9hbmltYXRpb25zL2FuaW1hdGlvbi50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUEwRkgsNENBQTRDO0FBQzVDLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFzQztJQUN4RSxNQUFNLEVBQUUsUUFBUTtJQUNoQixJQUFJLEVBQUUsTUFBTTtJQUNaLE1BQU0sRUFBRSxTQUFTO0lBQ2pCLE9BQU8sRUFBRSxVQUFVO0lBQ25CLFNBQVMsRUFBRSxhQUFhO0lBQ3hCLFVBQVUsRUFBRSx3Q0FBd0M7SUFDcEQsV0FBVyxFQUFFLHlDQUF5QztJQUN0RCxhQUFhLEVBQUUsd0NBQXdDO0lBQ3ZELGFBQWEsRUFBRSxxQ0FBcUM7SUFDcEQsY0FBYyxFQUFFLHNDQUFzQztJQUN0RCxhQUFhLEVBQUUsbUNBQW1DO0NBQzFDLENBQUM7QUFLWCwrQ0FBK0M7QUFDL0MsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQXdDO0lBQzVFLE9BQU8sRUFBRSxHQUFHO0lBQ1osSUFBSSxFQUFFLEdBQUc7SUFDVCxNQUFNLEVBQUUsR0FBRztJQUNYLElBQUksRUFBRSxHQUFHO0lBQ1QsTUFBTSxFQUFFLEdBQUc7Q0FDSCxDQUFDO0FBd0NYLGlDQUFpQztBQUNqQyxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBNEI7SUFDbEUsT0FBTyxFQUFFLEtBQUssRUFBRSwwQkFBMEI7SUFDMUMsb0JBQW9CLEVBQUUsSUFBSTtJQUMxQixlQUFlLEVBQUUsUUFBUTtJQUN6QixhQUFhLEVBQUUsU0FBUztDQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFRpcG9zIGUgaW50ZXJmYWNlcyBwYXJhIG8gc2lzdGVtYSBkZSBhbmltYcOnw7VlcyBHb3YuYnJcclxuICogQGRlc2NyaXB0aW9uIFNpc3RlbWEgZGUgYW5pbWHDp8O1ZXMgY29uZmlndXLDoXZlbCBlIGFjZXNzw612ZWxcclxuICovXHJcblxyXG4vKiogVGlwb3MgZGUgYW5pbWHDp8OjbyBkZSBlbnRyYWRhICovXHJcbmV4cG9ydCB0eXBlIEJyQW5pbWF0aW9uRW50ZXIgPVxyXG4gIHwgJ2ZhZGVJbidcclxuICB8ICdmYWRlSW5VcCdcclxuICB8ICdmYWRlSW5Eb3duJ1xyXG4gIHwgJ2ZhZGVJbkxlZnQnXHJcbiAgfCAnZmFkZUluUmlnaHQnXHJcbiAgfCAnc2NhbGVJbidcclxuICB8ICdzbGlkZUluVXAnXHJcbiAgfCAnc2xpZGVJbkRvd24nXHJcbiAgfCAnc2xpZGVJbkxlZnQnXHJcbiAgfCAnc2xpZGVJblJpZ2h0J1xyXG4gIHwgJ2V4cGFuZEhlaWdodCdcclxuICB8ICdleHBhbmRXaWR0aCc7XHJcblxyXG4vKiogVGlwb3MgZGUgYW5pbWHDp8OjbyBkZSBzYcOtZGEgKi9cclxuZXhwb3J0IHR5cGUgQnJBbmltYXRpb25MZWF2ZSA9XHJcbiAgfCAnZmFkZU91dCdcclxuICB8ICdmYWRlT3V0VXAnXHJcbiAgfCAnZmFkZU91dERvd24nXHJcbiAgfCAnZmFkZU91dExlZnQnXHJcbiAgfCAnZmFkZU91dFJpZ2h0J1xyXG4gIHwgJ3NjYWxlT3V0J1xyXG4gIHwgJ3NsaWRlT3V0VXAnXHJcbiAgfCAnc2xpZGVPdXREb3duJ1xyXG4gIHwgJ3NsaWRlT3V0TGVmdCdcclxuICB8ICdzbGlkZU91dFJpZ2h0J1xyXG4gIHwgJ2NvbGxhcHNlSGVpZ2h0J1xyXG4gIHwgJ2NvbGxhcHNlV2lkdGgnO1xyXG5cclxuLyoqIFRpcG9zIGRlIGFuaW1hw6fDo28gZGUgYXRlbsOnw6NvL2ZlZWRiYWNrICovXHJcbmV4cG9ydCB0eXBlIEJyQW5pbWF0aW9uQXR0ZW50aW9uID1cclxuICB8ICdwdWxzZSdcclxuICB8ICdzaGFrZSdcclxuICB8ICdib3VuY2UnXHJcbiAgfCAnd2lnZ2xlJ1xyXG4gIHwgJ2ZsYXNoJ1xyXG4gIHwgJ2hlYXJ0YmVhdCdcclxuICB8ICdzd2luZyc7XHJcblxyXG4vKiogVGlwb3MgZGUgYW5pbWHDp8OjbyBkZSBsb2FkaW5nICovXHJcbmV4cG9ydCB0eXBlIEJyQW5pbWF0aW9uTG9hZGluZyA9XHJcbiAgfCAnc3BpbidcclxuICB8ICdkb3RzJ1xyXG4gIHwgJ2JhcnMnXHJcbiAgfCAnc2hpbW1lcidcclxuICB8ICd3YXZlJ1xyXG4gIHwgJ3Byb2dyZXNzSW5kZXRlcm1pbmF0ZSc7XHJcblxyXG4vKiogVGlwb3MgZGUgYW5pbWHDp8OjbyBkZSBob3ZlciAqL1xyXG5leHBvcnQgdHlwZSBCckFuaW1hdGlvbkhvdmVyID1cclxuICB8ICdsaWZ0J1xyXG4gIHwgJ2dyb3cnXHJcbiAgfCAnc2hyaW5rJ1xyXG4gIHwgJ2dsb3cnXHJcbiAgfCAndW5kZXJsaW5lJ1xyXG4gIHwgJ3JpcHBsZSc7XHJcblxyXG4vKiogVGlwb3MgZGUgYW5pbWHDp8OjbyBkZSBzdWNlc3NvL2ZlZWRiYWNrICovXHJcbmV4cG9ydCB0eXBlIEJyQW5pbWF0aW9uRmVlZGJhY2sgPVxyXG4gIHwgJ2NoZWNrbWFyaydcclxuICB8ICdzdWNjZXNzUG9wJ1xyXG4gIHwgJ2Vycm9yU2hha2UnXHJcbiAgfCAnd2FybmluZ1B1bHNlJztcclxuXHJcbi8qKiBVbmnDo28gZGUgdG9kb3Mgb3MgdGlwb3MgZGUgYW5pbWHDp8OjbyAqL1xyXG5leHBvcnQgdHlwZSBCckFuaW1hdGlvblR5cGUgPVxyXG4gIHwgQnJBbmltYXRpb25FbnRlclxyXG4gIHwgQnJBbmltYXRpb25MZWF2ZVxyXG4gIHwgQnJBbmltYXRpb25BdHRlbnRpb25cclxuICB8IEJyQW5pbWF0aW9uTG9hZGluZ1xyXG4gIHwgQnJBbmltYXRpb25Ib3ZlclxyXG4gIHwgQnJBbmltYXRpb25GZWVkYmFjaztcclxuXHJcbi8qKiBDdXJ2YXMgZGUgZWFzaW5nIGRpc3BvbsOtdmVpcyAqL1xyXG5leHBvcnQgdHlwZSBCckFuaW1hdGlvbkVhc2luZyA9XHJcbiAgfCAnbGluZWFyJ1xyXG4gIHwgJ2Vhc2UnXHJcbiAgfCAnZWFzZUluJ1xyXG4gIHwgJ2Vhc2VPdXQnXHJcbiAgfCAnZWFzZUluT3V0J1xyXG4gIHwgJ2Vhc2VJbkJhY2snXHJcbiAgfCAnZWFzZU91dEJhY2snXHJcbiAgfCAnZWFzZUluT3V0QmFjaydcclxuICB8ICdlYXNlSW5FbGFzdGljJ1xyXG4gIHwgJ2Vhc2VPdXRFbGFzdGljJ1xyXG4gIHwgJ2Vhc2VPdXRCb3VuY2UnO1xyXG5cclxuLyoqIE1hcGVhbWVudG8gZGUgZWFzaW5nIHBhcmEgdmFsb3JlcyBDU1MgKi9cclxuZXhwb3J0IGNvbnN0IEJSX0FOSU1BVElPTl9FQVNJTkdfTUFQOiBSZWNvcmQ8QnJBbmltYXRpb25FYXNpbmcsIHN0cmluZz4gPSB7XHJcbiAgbGluZWFyOiAnbGluZWFyJyxcclxuICBlYXNlOiAnZWFzZScsXHJcbiAgZWFzZUluOiAnZWFzZS1pbicsXHJcbiAgZWFzZU91dDogJ2Vhc2Utb3V0JyxcclxuICBlYXNlSW5PdXQ6ICdlYXNlLWluLW91dCcsXHJcbiAgZWFzZUluQmFjazogJ2N1YmljLWJlemllcigwLjYsIC0wLjI4LCAwLjczNSwgMC4wNDUpJyxcclxuICBlYXNlT3V0QmFjazogJ2N1YmljLWJlemllcigwLjE3NSwgMC44ODUsIDAuMzIsIDEuMjc1KScsXHJcbiAgZWFzZUluT3V0QmFjazogJ2N1YmljLWJlemllcigwLjY4LCAtMC41NSwgMC4yNjUsIDEuNTUpJyxcclxuICBlYXNlSW5FbGFzdGljOiAnY3ViaWMtYmV6aWVyKDAuNSwgLTAuNSwgMC43NSwgMS4yNSknLFxyXG4gIGVhc2VPdXRFbGFzdGljOiAnY3ViaWMtYmV6aWVyKDAuMjUsIC0wLjI1LCAwLjI1LCAxLjUpJyxcclxuICBlYXNlT3V0Qm91bmNlOiAnY3ViaWMtYmV6aWVyKDAuMzQsIDEuNTYsIDAuNjQsIDEpJyxcclxufSBhcyBjb25zdDtcclxuXHJcbi8qKiBEdXJhw6fDtWVzIHByZWRlZmluaWRhcyAqL1xyXG5leHBvcnQgdHlwZSBCckFuaW1hdGlvbkR1cmF0aW9uID0gJ2luc3RhbnQnIHwgJ2Zhc3QnIHwgJ25vcm1hbCcgfCAnc2xvdycgfCAnc2xvd2VyJztcclxuXHJcbi8qKiBNYXBlYW1lbnRvIGRlIGR1cmHDp8OjbyBwYXJhIHZhbG9yZXMgZW0gbXMgKi9cclxuZXhwb3J0IGNvbnN0IEJSX0FOSU1BVElPTl9EVVJBVElPTl9NQVA6IFJlY29yZDxCckFuaW1hdGlvbkR1cmF0aW9uLCBudW1iZXI+ID0ge1xyXG4gIGluc3RhbnQ6IDEwMCxcclxuICBmYXN0OiAxNTAsXHJcbiAgbm9ybWFsOiAyNTAsXHJcbiAgc2xvdzogNDAwLFxyXG4gIHNsb3dlcjogNjAwLFxyXG59IGFzIGNvbnN0O1xyXG5cclxuLyoqIENvbmZpZ3VyYcOnw6NvIGRlIHVtYSBhbmltYcOnw6NvIGluZGl2aWR1YWwgKi9cclxuZXhwb3J0IGludGVyZmFjZSBCckFuaW1hdGlvbkNvbmZpZyB7XHJcbiAgLyoqIFRpcG8gZGEgYW5pbWHDp8OjbyAqL1xyXG4gIHR5cGU6IEJyQW5pbWF0aW9uVHlwZTtcclxuICAvKiogRHVyYcOnw6NvIGVtIG1zIG91IHByZWRlZmluaWRhICovXHJcbiAgZHVyYXRpb24/OiBudW1iZXIgfCBCckFuaW1hdGlvbkR1cmF0aW9uO1xyXG4gIC8qKiBEZWxheSBhbnRlcyBkZSBpbmljaWFyIGVtIG1zICovXHJcbiAgZGVsYXk/OiBudW1iZXI7XHJcbiAgLyoqIEN1cnZhIGRlIGVhc2luZyAqL1xyXG4gIGVhc2luZz86IEJyQW5pbWF0aW9uRWFzaW5nO1xyXG4gIC8qKiBOw7ptZXJvIGRlIGl0ZXJhw6fDtWVzIChJbmZpbml0eSBwYXJhIGxvb3ApICovXHJcbiAgaXRlcmF0aW9ucz86IG51bWJlciB8ICdpbmZpbml0ZSc7XHJcbiAgLyoqIERpcmXDp8OjbyBkYSBhbmltYcOnw6NvICovXHJcbiAgZGlyZWN0aW9uPzogJ25vcm1hbCcgfCAncmV2ZXJzZScgfCAnYWx0ZXJuYXRlJyB8ICdhbHRlcm5hdGUtcmV2ZXJzZSc7XHJcbiAgLyoqIEVzdGFkbyBmaW5hbCBhcMOzcyBhbmltYcOnw6NvICovXHJcbiAgZmlsbE1vZGU/OiAnbm9uZScgfCAnZm9yd2FyZHMnIHwgJ2JhY2t3YXJkcycgfCAnYm90aCc7XHJcbn1cclxuXHJcbi8qKiBDb25maWd1cmHDp8OjbyBkZSBhbmltYcOnw6NvIGRlIGVudHJhZGEvc2HDrWRhICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQnJUcmFuc2l0aW9uQ29uZmlnIHtcclxuICAvKiogQW5pbWHDp8OjbyBkZSBlbnRyYWRhICovXHJcbiAgZW50ZXI/OiBCckFuaW1hdGlvbkNvbmZpZztcclxuICAvKiogQW5pbWHDp8OjbyBkZSBzYcOtZGEgKi9cclxuICBsZWF2ZT86IEJyQW5pbWF0aW9uQ29uZmlnO1xyXG59XHJcblxyXG4vKiogQ29uZmlndXJhw6fDo28gZ2xvYmFsIGRlIGFuaW1hw6fDtWVzICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQnJBbmltYXRpb25HbG9iYWxDb25maWcge1xyXG4gIC8qKiBIYWJpbGl0YS9kZXNhYmlsaXRhIHRvZGFzIGFzIGFuaW1hw6fDtWVzIGdsb2JhbG1lbnRlICovXHJcbiAgZW5hYmxlZDogYm9vbGVhbjtcclxuICAvKiogUmVzcGVpdGEgcHJlZmVyw6puY2lhIGRvIHVzdcOhcmlvIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uKSAqL1xyXG4gIHJlc3BlY3RSZWR1Y2VkTW90aW9uOiBib29sZWFuO1xyXG4gIC8qKiBEdXJhw6fDo28gcGFkcsOjbyBwYXJhIHRvZGFzIGFzIGFuaW1hw6fDtWVzICovXHJcbiAgZGVmYXVsdER1cmF0aW9uOiBudW1iZXIgfCBCckFuaW1hdGlvbkR1cmF0aW9uO1xyXG4gIC8qKiBFYXNpbmcgcGFkcsOjbyBwYXJhIHRvZGFzIGFzIGFuaW1hw6fDtWVzICovXHJcbiAgZGVmYXVsdEVhc2luZzogQnJBbmltYXRpb25FYXNpbmc7XHJcbn1cclxuXHJcbi8qKiBDb25maWd1cmHDp8OjbyBwYWRyw6NvIGdsb2JhbCAqL1xyXG5leHBvcnQgY29uc3QgQlJfQU5JTUFUSU9OX0RFRkFVTFRfQ09ORklHOiBCckFuaW1hdGlvbkdsb2JhbENvbmZpZyA9IHtcclxuICBlbmFibGVkOiBmYWxzZSwgLy8gRGVzYWJpbGl0YWRvIHBvciBwYWRyw6NvXHJcbiAgcmVzcGVjdFJlZHVjZWRNb3Rpb246IHRydWUsXHJcbiAgZGVmYXVsdER1cmF0aW9uOiAnbm9ybWFsJyxcclxuICBkZWZhdWx0RWFzaW5nOiAnZWFzZU91dCcsXHJcbn0gYXMgY29uc3Q7XHJcblxyXG4vKiogRXN0YWRvIGRlIHVtYSBhbmltYcOnw6NvIGVtIGV4ZWN1w6fDo28gKi9cclxuZXhwb3J0IGludGVyZmFjZSBCckFuaW1hdGlvblN0YXRlIHtcclxuICAvKiogU2UgZXN0w6EgYW5pbWFuZG8gKi9cclxuICBpc0FuaW1hdGluZzogYm9vbGVhbjtcclxuICAvKiogVGlwbyBhdHVhbCAqL1xyXG4gIGN1cnJlbnRBbmltYXRpb246IEJyQW5pbWF0aW9uVHlwZSB8IG51bGw7XHJcbiAgLyoqIFNlIGZvaSBjb25jbHXDrWRhICovXHJcbiAgaXNDb21wbGV0ZWQ6IGJvb2xlYW47XHJcbiAgLyoqIFNlIGZvaSBjYW5jZWxhZGEgKi9cclxuICBpc0NhbmNlbGxlZDogYm9vbGVhbjtcclxufVxyXG5cclxuLyoqIEV2ZW50byBlbWl0aWRvIGR1cmFudGUgYW5pbWHDp8OjbyAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEJyQW5pbWF0aW9uRXZlbnQge1xyXG4gIC8qKiBUaXBvIGRhIGFuaW1hw6fDo28gKi9cclxuICB0eXBlOiBCckFuaW1hdGlvblR5cGU7XHJcbiAgLyoqIEZhc2U6IGluw61jaW8sIGZpbSwgY2FuY2VsYW1lbnRvICovXHJcbiAgcGhhc2U6ICdzdGFydCcgfCAnZW5kJyB8ICdjYW5jZWwnO1xyXG4gIC8qKiBFbGVtZW50byBhbHZvICovXHJcbiAgZWxlbWVudDogSFRNTEVsZW1lbnQ7XHJcbiAgLyoqIFRpbWVzdGFtcCBkbyBldmVudG8gKi9cclxuICB0aW1lc3RhbXA6IG51bWJlcjtcclxufVxyXG5cclxuLyoqIFRyaWdnZXIgcGFyYSBpbmljaWFyIGFuaW1hw6fDo28gKi9cclxuZXhwb3J0IHR5cGUgQnJBbmltYXRpb25UcmlnZ2VyID1cclxuICB8ICdpbW1lZGlhdGUnICAgICAvLyBJbWVkaWF0YW1lbnRlIGFvIG1vbnRhclxyXG4gIHwgJ3Zpc2libGUnICAgICAgIC8vIFF1YW5kbyB2aXPDrXZlbCBubyB2aWV3cG9ydCAoSW50ZXJzZWN0aW9uIE9ic2VydmVyKVxyXG4gIHwgJ2hvdmVyJyAgICAgICAgIC8vIE5vIGhvdmVyXHJcbiAgfCAnZm9jdXMnICAgICAgICAgLy8gTm8gZm9jdXNcclxuICB8ICdjbGljaycgICAgICAgICAvLyBObyBjbGlja1xyXG4gIHwgJ21hbnVhbCc7ICAgICAgIC8vIENvbnRyb2xhZG8gcHJvZ3JhbWF0aWNhbWVudGVcclxuXHJcbi8qKiBDb25maWd1cmHDp8OjbyBwYXJhIGRpcmV0aXZhIGJyQW5pbWF0ZSAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEJyQW5pbWF0ZURpcmVjdGl2ZUNvbmZpZyB7XHJcbiAgLyoqIEFuaW1hw6fDo28gYSBleGVjdXRhciAqL1xyXG4gIGFuaW1hdGlvbjogQnJBbmltYXRpb25UeXBlO1xyXG4gIC8qKiBUcmlnZ2VyIHF1ZSBpbmljaWEgYSBhbmltYcOnw6NvICovXHJcbiAgdHJpZ2dlcj86IEJyQW5pbWF0aW9uVHJpZ2dlcjtcclxuICAvKiogRHVyYcOnw6NvICovXHJcbiAgZHVyYXRpb24/OiBudW1iZXIgfCBCckFuaW1hdGlvbkR1cmF0aW9uO1xyXG4gIC8qKiBEZWxheSAqL1xyXG4gIGRlbGF5PzogbnVtYmVyO1xyXG4gIC8qKiBFYXNpbmcgKi9cclxuICBlYXNpbmc/OiBCckFuaW1hdGlvbkVhc2luZztcclxuICAvKiogVGhyZXNob2xkIHBhcmEgSW50ZXJzZWN0aW9uIE9ic2VydmVyICgwLTEpICovXHJcbiAgdmlzaWJpbGl0eVRocmVzaG9sZD86IG51bWJlcjtcclxuICAvKiogU2UgZGV2ZSBhbmltYXIgYXBlbmFzIHVtYSB2ZXogKi9cclxuICBvbmNlPzogYm9vbGVhbjtcclxufVxyXG5cclxuLyoqIENvbmZpZ3VyYcOnw6NvIHBhcmEgc3RhZ2dlciAoYW5pbWHDp8OjbyBlbSBzZXF1w6puY2lhKSAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEJyU3RhZ2dlckNvbmZpZyB7XHJcbiAgLyoqIEFuaW1hw6fDo28gYmFzZSAqL1xyXG4gIGFuaW1hdGlvbjogQnJBbmltYXRpb25UeXBlO1xyXG4gIC8qKiBEZWxheSBlbnRyZSBjYWRhIGl0ZW0gZW0gbXMgKi9cclxuICBzdGFnZ2VyRGVsYXk6IG51bWJlcjtcclxuICAvKiogRGVsYXkgaW5pY2lhbCBhbnRlcyBkbyBwcmltZWlybyBpdGVtICovXHJcbiAgaW5pdGlhbERlbGF5PzogbnVtYmVyO1xyXG4gIC8qKiBEdXJhw6fDo28gZGUgY2FkYSBhbmltYcOnw6NvICovXHJcbiAgZHVyYXRpb24/OiBudW1iZXIgfCBCckFuaW1hdGlvbkR1cmF0aW9uO1xyXG4gIC8qKiBFYXNpbmcgKi9cclxuICBlYXNpbmc/OiBCckFuaW1hdGlvbkVhc2luZztcclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sistema de Animações Gov.br
|
|
3
|
+
* @description Animações configuráveis e acessíveis para componentes Angular
|
|
4
|
+
*/
|
|
5
|
+
// Types e interfaces
|
|
6
|
+
export * from './animation.types';
|
|
7
|
+
// Serviço principal
|
|
8
|
+
export { BrAnimationService, BR_ANIMATION_CONFIG } from './animation.service';
|
|
9
|
+
// Diretiva de animação
|
|
10
|
+
export { BrAnimateDirective } from './animate.directive';
|
|
11
|
+
// Componentes de feedback
|
|
12
|
+
export { BrSuccessCheckComponent } from './success-check.component';
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1nb3Zici10dy9zcmMvbGliL2FuaW1hdGlvbnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgscUJBQXFCO0FBQ3JCLGNBQWMsbUJBQW1CLENBQUM7QUFFbEMsb0JBQW9CO0FBQ3BCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTlFLHVCQUF1QjtBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV6RCwwQkFBMEI7QUFDMUIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkJBQTJCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogU2lzdGVtYSBkZSBBbmltYcOnw7VlcyBHb3YuYnJcclxuICogQGRlc2NyaXB0aW9uIEFuaW1hw6fDtWVzIGNvbmZpZ3Vyw6F2ZWlzIGUgYWNlc3PDrXZlaXMgcGFyYSBjb21wb25lbnRlcyBBbmd1bGFyXHJcbiAqL1xyXG5cclxuLy8gVHlwZXMgZSBpbnRlcmZhY2VzXHJcbmV4cG9ydCAqIGZyb20gJy4vYW5pbWF0aW9uLnR5cGVzJztcclxuXHJcbi8vIFNlcnZpw6dvIHByaW5jaXBhbFxyXG5leHBvcnQgeyBCckFuaW1hdGlvblNlcnZpY2UsIEJSX0FOSU1BVElPTl9DT05GSUcgfSBmcm9tICcuL2FuaW1hdGlvbi5zZXJ2aWNlJztcclxuXHJcbi8vIERpcmV0aXZhIGRlIGFuaW1hw6fDo29cclxuZXhwb3J0IHsgQnJBbmltYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9hbmltYXRlLmRpcmVjdGl2ZSc7XHJcblxyXG4vLyBDb21wb25lbnRlcyBkZSBmZWVkYmFja1xyXG5leHBvcnQgeyBCclN1Y2Nlc3NDaGVja0NvbXBvbmVudCB9IGZyb20gJy4vc3VjY2Vzcy1jaGVjay5jb21wb25lbnQnO1xyXG4iXX0=
|