valtech-components 2.0.590 → 2.0.592
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/organisms/rotating-text/rotating-text.component.mjs +180 -0
- package/esm2022/lib/components/organisms/rotating-text/types.mjs +2 -0
- package/esm2022/lib/components/organisms/terminal-404/terminal-404.component.mjs +224 -0
- package/esm2022/lib/components/organisms/terminal-404/types.mjs +2 -0
- package/esm2022/lib/services/auth/auth.service.mjs +4 -4
- package/esm2022/lib/services/auth/index.mjs +1 -3
- package/esm2022/lib/services/auth/types.mjs +1 -1
- package/esm2022/public-api.mjs +5 -1
- package/fesm2022/valtech-components.mjs +398 -219
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/organisms/rotating-text/rotating-text.component.d.ts +47 -0
- package/lib/components/organisms/rotating-text/types.d.ts +28 -0
- package/lib/components/organisms/terminal-404/terminal-404.component.d.ts +36 -0
- package/lib/components/organisms/terminal-404/types.d.ts +22 -0
- package/lib/services/auth/auth.service.d.ts +3 -3
- package/lib/services/auth/index.d.ts +0 -1
- package/lib/services/auth/types.d.ts +0 -52
- package/package.json +1 -7
- package/public-api.d.ts +4 -0
- package/esm2022/lib/services/auth/google-auth.service.mjs +0 -221
- package/lib/services/auth/google-auth.service.d.ts +0 -102
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, Input, signal, computed } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
/**
|
|
6
|
+
* val-rotating-text
|
|
7
|
+
*
|
|
8
|
+
* A component that rotates through an array of text messages with smooth animations.
|
|
9
|
+
* Features entrance/exit animations with fade, blur, and scale effects.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* <val-rotating-text
|
|
13
|
+
* [props]="{
|
|
14
|
+
* messages: [
|
|
15
|
+
* { aboveTitle: 'Welcome', title: 'Hello World' },
|
|
16
|
+
* { aboveTitle: 'Tip:', title: 'Stay curious' }
|
|
17
|
+
* ],
|
|
18
|
+
* interval: 4000,
|
|
19
|
+
* showDots: true
|
|
20
|
+
* }"
|
|
21
|
+
* ></val-rotating-text>
|
|
22
|
+
*
|
|
23
|
+
* @input props - Configuration for the rotating text component
|
|
24
|
+
*/
|
|
25
|
+
export class RotatingTextComponent {
|
|
26
|
+
constructor() {
|
|
27
|
+
this.intervalId = null;
|
|
28
|
+
/**
|
|
29
|
+
* Component configuration.
|
|
30
|
+
*/
|
|
31
|
+
this.props = {
|
|
32
|
+
messages: [],
|
|
33
|
+
interval: 4000,
|
|
34
|
+
showDots: true,
|
|
35
|
+
aboveTitleColor: 'medium',
|
|
36
|
+
titleColor: 'dark',
|
|
37
|
+
};
|
|
38
|
+
// Animation state
|
|
39
|
+
this.currentIndex = signal(0);
|
|
40
|
+
this.isEntering = signal(true);
|
|
41
|
+
this.isExiting = signal(false);
|
|
42
|
+
// Current message computed from index
|
|
43
|
+
this.currentMessage = computed(() => this.props.messages[this.currentIndex()]);
|
|
44
|
+
}
|
|
45
|
+
// Color values
|
|
46
|
+
get aboveTitleColorValue() {
|
|
47
|
+
const color = this.props.aboveTitleColor || 'medium';
|
|
48
|
+
return color.startsWith('--') || color.startsWith('#') || color.startsWith('rgb')
|
|
49
|
+
? color
|
|
50
|
+
: `var(--ion-color-${color})`;
|
|
51
|
+
}
|
|
52
|
+
get titleColorValue() {
|
|
53
|
+
const color = this.props.titleColor || 'dark';
|
|
54
|
+
return color.startsWith('--') || color.startsWith('#') || color.startsWith('rgb')
|
|
55
|
+
? color
|
|
56
|
+
: `var(--ion-color-${color})`;
|
|
57
|
+
}
|
|
58
|
+
ngOnInit() {
|
|
59
|
+
if (this.props.messages.length > 1) {
|
|
60
|
+
this.startRotation();
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
ngOnDestroy() {
|
|
64
|
+
this.stopRotation();
|
|
65
|
+
}
|
|
66
|
+
startRotation() {
|
|
67
|
+
const interval = this.props.interval ?? 4000;
|
|
68
|
+
this.intervalId = setInterval(() => {
|
|
69
|
+
this.rotateToNext();
|
|
70
|
+
}, interval);
|
|
71
|
+
}
|
|
72
|
+
stopRotation() {
|
|
73
|
+
if (this.intervalId) {
|
|
74
|
+
clearInterval(this.intervalId);
|
|
75
|
+
this.intervalId = null;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
rotateToNext() {
|
|
79
|
+
// Start exit animation
|
|
80
|
+
this.isEntering.set(false);
|
|
81
|
+
this.isExiting.set(true);
|
|
82
|
+
// After exit animation, change text and start enter animation
|
|
83
|
+
setTimeout(() => {
|
|
84
|
+
this.currentIndex.update((i) => (i + 1) % this.props.messages.length);
|
|
85
|
+
this.isExiting.set(false);
|
|
86
|
+
this.isEntering.set(true);
|
|
87
|
+
}, 400); // Match exit animation duration
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Navigate to a specific message by index.
|
|
91
|
+
*/
|
|
92
|
+
goToMessage(index) {
|
|
93
|
+
if (index === this.currentIndex())
|
|
94
|
+
return;
|
|
95
|
+
this.stopRotation();
|
|
96
|
+
this.isEntering.set(false);
|
|
97
|
+
this.isExiting.set(true);
|
|
98
|
+
setTimeout(() => {
|
|
99
|
+
this.currentIndex.set(index);
|
|
100
|
+
this.isExiting.set(false);
|
|
101
|
+
this.isEntering.set(true);
|
|
102
|
+
if (this.props.messages.length > 1) {
|
|
103
|
+
this.startRotation();
|
|
104
|
+
}
|
|
105
|
+
}, 400);
|
|
106
|
+
}
|
|
107
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RotatingTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
108
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: RotatingTextComponent, isStandalone: true, selector: "val-rotating-text", inputs: { props: "props" }, ngImport: i0, template: `
|
|
109
|
+
<div
|
|
110
|
+
class="rotating-banner"
|
|
111
|
+
[ngStyle]="{ background: props.backgroundColor || 'transparent' }"
|
|
112
|
+
>
|
|
113
|
+
<div
|
|
114
|
+
class="rotating-text"
|
|
115
|
+
[class.text-enter]="isEntering()"
|
|
116
|
+
[class.text-exit]="isExiting()"
|
|
117
|
+
>
|
|
118
|
+
<div
|
|
119
|
+
class="above-title"
|
|
120
|
+
[ngStyle]="{ color: aboveTitleColorValue }"
|
|
121
|
+
>
|
|
122
|
+
{{ currentMessage()?.aboveTitle }}
|
|
123
|
+
</div>
|
|
124
|
+
<div
|
|
125
|
+
class="title"
|
|
126
|
+
[ngStyle]="{ color: titleColorValue }"
|
|
127
|
+
>
|
|
128
|
+
{{ currentMessage()?.title }}
|
|
129
|
+
</div>
|
|
130
|
+
</div>
|
|
131
|
+
<div class="progress-dots" *ngIf="props.showDots !== false">
|
|
132
|
+
<div
|
|
133
|
+
*ngFor="let message of props.messages; let i = index"
|
|
134
|
+
class="progress-dot"
|
|
135
|
+
[class.active]="i === currentIndex()"
|
|
136
|
+
(click)="goToMessage(i)"
|
|
137
|
+
></div>
|
|
138
|
+
</div>
|
|
139
|
+
</div>
|
|
140
|
+
`, isInline: true, styles: [".rotating-banner{text-align:center;padding:2rem 1rem;min-height:120px;display:flex;flex-direction:column;justify-content:center;align-items:center}.rotating-text{position:relative;overflow:hidden}.rotating-text .above-title{font-size:1.125rem;margin-bottom:.75rem;font-family:monospace}.rotating-text .title{font-size:2rem;font-weight:900}.text-enter{animation:textEnter .6s ease-out forwards}.text-exit{animation:textExit .4s ease-in forwards}@keyframes textEnter{0%{opacity:0;transform:translateY(20px) scale(.95);filter:blur(4px)}to{opacity:1;transform:translateY(0) scale(1);filter:blur(0)}}@keyframes textExit{0%{opacity:1;transform:translateY(0) scale(1);filter:blur(0)}to{opacity:0;transform:translateY(-20px) scale(.95);filter:blur(4px)}}.progress-dots{display:flex;gap:8px;margin-top:1.5rem}.progress-dot{width:8px;height:8px;border-radius:50%;background:var(--ion-color-medium-tint);transition:all .3s ease;cursor:pointer}.progress-dot.active{background:var(--ion-color-dark);transform:scale(1.3)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
|
|
141
|
+
}
|
|
142
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RotatingTextComponent, decorators: [{
|
|
143
|
+
type: Component,
|
|
144
|
+
args: [{ selector: 'val-rotating-text', standalone: true, imports: [CommonModule], template: `
|
|
145
|
+
<div
|
|
146
|
+
class="rotating-banner"
|
|
147
|
+
[ngStyle]="{ background: props.backgroundColor || 'transparent' }"
|
|
148
|
+
>
|
|
149
|
+
<div
|
|
150
|
+
class="rotating-text"
|
|
151
|
+
[class.text-enter]="isEntering()"
|
|
152
|
+
[class.text-exit]="isExiting()"
|
|
153
|
+
>
|
|
154
|
+
<div
|
|
155
|
+
class="above-title"
|
|
156
|
+
[ngStyle]="{ color: aboveTitleColorValue }"
|
|
157
|
+
>
|
|
158
|
+
{{ currentMessage()?.aboveTitle }}
|
|
159
|
+
</div>
|
|
160
|
+
<div
|
|
161
|
+
class="title"
|
|
162
|
+
[ngStyle]="{ color: titleColorValue }"
|
|
163
|
+
>
|
|
164
|
+
{{ currentMessage()?.title }}
|
|
165
|
+
</div>
|
|
166
|
+
</div>
|
|
167
|
+
<div class="progress-dots" *ngIf="props.showDots !== false">
|
|
168
|
+
<div
|
|
169
|
+
*ngFor="let message of props.messages; let i = index"
|
|
170
|
+
class="progress-dot"
|
|
171
|
+
[class.active]="i === currentIndex()"
|
|
172
|
+
(click)="goToMessage(i)"
|
|
173
|
+
></div>
|
|
174
|
+
</div>
|
|
175
|
+
</div>
|
|
176
|
+
`, styles: [".rotating-banner{text-align:center;padding:2rem 1rem;min-height:120px;display:flex;flex-direction:column;justify-content:center;align-items:center}.rotating-text{position:relative;overflow:hidden}.rotating-text .above-title{font-size:1.125rem;margin-bottom:.75rem;font-family:monospace}.rotating-text .title{font-size:2rem;font-weight:900}.text-enter{animation:textEnter .6s ease-out forwards}.text-exit{animation:textExit .4s ease-in forwards}@keyframes textEnter{0%{opacity:0;transform:translateY(20px) scale(.95);filter:blur(4px)}to{opacity:1;transform:translateY(0) scale(1);filter:blur(0)}}@keyframes textExit{0%{opacity:1;transform:translateY(0) scale(1);filter:blur(0)}to{opacity:0;transform:translateY(-20px) scale(.95);filter:blur(4px)}}.progress-dots{display:flex;gap:8px;margin-top:1.5rem}.progress-dot{width:8px;height:8px;border-radius:50%;background:var(--ion-color-medium-tint);transition:all .3s ease;cursor:pointer}.progress-dot.active{background:var(--ion-color-dark);transform:scale(1.3)}\n"] }]
|
|
177
|
+
}], propDecorators: { props: [{
|
|
178
|
+
type: Input
|
|
179
|
+
}] } });
|
|
180
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm90YXRpbmctdGV4dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3JvdGF0aW5nLXRleHQvcm90YXRpbmctdGV4dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFHdEY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUEwSEgsTUFBTSxPQUFPLHFCQUFxQjtJQXpIbEM7UUEwSFUsZUFBVSxHQUEwQyxJQUFJLENBQUM7UUFFakU7O1dBRUc7UUFDTSxVQUFLLEdBQXlCO1lBQ3JDLFFBQVEsRUFBRSxFQUFFO1lBQ1osUUFBUSxFQUFFLElBQUk7WUFDZCxRQUFRLEVBQUUsSUFBSTtZQUNkLGVBQWUsRUFBRSxRQUFRO1lBQ3pCLFVBQVUsRUFBRSxNQUFNO1NBQ25CLENBQUM7UUFFRixrQkFBa0I7UUFDbEIsaUJBQVksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixjQUFTLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTFCLHNDQUFzQztRQUN0QyxtQkFBYyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO0tBeUUzRTtJQXZFQyxlQUFlO0lBQ2YsSUFBSSxvQkFBb0I7UUFDdEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLElBQUksUUFBUSxDQUFDO1FBQ3JELE9BQU8s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Q0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3ZCLENBQUM7UUFDSCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDVixDQUFDOytHQTVGVSxxQkFBcUI7bUdBQXJCLHFCQUFxQix5R0FsQ3RCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWdDVCwwakNBcEhTLFlBQVk7OzRGQXNIWCxxQkFBcUI7a0JBekhqQyxTQUFTOytCQUNFLG1CQUFtQixjQUNqQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsWUFvRmI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBZ0NUOzhCQVFRLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgc2lnbmFsLCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm90YXRpbmdUZXh0TWV0YWRhdGEsIFJvdGF0aW5nVGV4dE1lc3NhZ2UgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiB2YWwtcm90YXRpbmctdGV4dFxuICpcbiAqIEEgY29tcG9uZW50IHRoYXQgcm90YXRlcyB0aHJvdWdoIGFuIGFycmF5IG9mIHRleHQgbWVzc2FnZXMgd2l0aCBzbW9vdGggYW5pbWF0aW9ucy5cbiAqIEZlYXR1cmVzIGVudHJhbmNlL2V4aXQgYW5pbWF0aW9ucyB3aXRoIGZhZGUsIGJsdXIsIGFuZCBzY2FsZSBlZmZlY3RzLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8dmFsLXJvdGF0aW5nLXRleHRcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICBtZXNzYWdlczogW1xuICogICAgICAgeyBhYm92ZVRpdGxlOiAnV2VsY29tZScsIHRpdGxlOiAnSGVsbG8gV29ybGQnIH0sXG4gKiAgICAgICB7IGFib3ZlVGl0bGU6ICdUaXA6JywgdGl0bGU6ICdTdGF5IGN1cmlvdXMnIH1cbiAqICAgICBdLFxuICogICAgIGludGVydmFsOiA0MDAwLFxuICogICAgIHNob3dEb3RzOiB0cnVlXG4gKiAgIH1cIlxuICogPjwvdmFsLXJvdGF0aW5nLXRleHQ+XG4gKlxuICogQGlucHV0IHByb3BzIC0gQ29uZmlndXJhdGlvbiBmb3IgdGhlIHJvdGF0aW5nIHRleHQgY29tcG9uZW50XG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1yb3RhdGluZy10ZXh0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5yb3RhdGluZy1iYW5uZXIge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDJyZW0gMXJlbTtcbiAgICAgICAgbWluLWhlaWdodDogMTIwcHg7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICAucm90YXRpbmctdGV4dCB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cblxuICAgICAgLnJvdGF0aW5nLXRleHQgLmFib3ZlLXRpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjEyNXJlbTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC43NXJlbTtcbiAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTtcbiAgICAgIH1cblxuICAgICAgLnJvdGF0aW5nLXRleHQgLnRpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiAycmVtO1xuICAgICAgICBmb250LXdlaWdodDogOTAwO1xuICAgICAgfVxuXG4gICAgICAudGV4dC1lbnRlciB7XG4gICAgICAgIGFuaW1hdGlvbjogdGV4dEVudGVyIDAuNnMgZWFzZS1vdXQgZm9yd2FyZHM7XG4gICAgICB9XG5cbiAgICAgIC50ZXh0LWV4aXQge1xuICAgICAgICBhbmltYXRpb246IHRleHRFeGl0IDAuNHMgZWFzZS1pbiBmb3J3YXJkcztcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyB0ZXh0RW50ZXIge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCkgc2NhbGUoMC45NSk7XG4gICAgICAgICAgZmlsdGVyOiBibHVyKDRweCk7XG4gICAgICAgIH1cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMSk7XG4gICAgICAgICAgZmlsdGVyOiBibHVyKDApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgdGV4dEV4aXQge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMSk7XG4gICAgICAgICAgZmlsdGVyOiBibHVyKDApO1xuICAgICAgICB9XG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0yMHB4KSBzY2FsZSgwLjk1KTtcbiAgICAgICAgICBmaWx0ZXI6IGJsdXIoNHB4KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAucHJvZ3Jlc3MtZG90cyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgICBtYXJnaW4tdG9wOiAxLjVyZW07XG4gICAgICB9XG5cbiAgICAgIC5wcm9ncmVzcy1kb3Qge1xuICAgICAgICB3aWR0aDogOHB4O1xuICAgICAgICBoZWlnaHQ6IDhweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLXRpbnQpO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5wcm9ncmVzcy1kb3QuYWN0aXZlIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMyk7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInJvdGF0aW5nLWJhbm5lclwiXG4gICAgICBbbmdTdHlsZV09XCJ7IGJhY2tncm91bmQ6IHByb3BzLmJhY2tncm91bmRDb2xvciB8fCAndHJhbnNwYXJlbnQnIH1cIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJyb3RhdGluZy10ZXh0XCJcbiAgICAgICAgW2NsYXNzLnRleHQtZW50ZXJdPVwiaXNFbnRlcmluZygpXCJcbiAgICAgICAgW2NsYXNzLnRleHQtZXhpdF09XCJpc0V4aXRpbmcoKVwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImFib3ZlLXRpdGxlXCJcbiAgICAgICAgICBbbmdTdHlsZV09XCJ7IGNvbG9yOiBhYm92ZVRpdGxlQ29sb3JWYWx1ZSB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGN1cnJlbnRNZXNzYWdlKCk/LmFib3ZlVGl0bGUgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInRpdGxlXCJcbiAgICAgICAgICBbbmdTdHlsZV09XCJ7IGNvbG9yOiB0aXRsZUNvbG9yVmFsdWUgfVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBjdXJyZW50TWVzc2FnZSgpPy50aXRsZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzLWRvdHNcIiAqbmdJZj1cInByb3BzLnNob3dEb3RzICE9PSBmYWxzZVwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nRm9yPVwibGV0IG1lc3NhZ2Ugb2YgcHJvcHMubWVzc2FnZXM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgIGNsYXNzPVwicHJvZ3Jlc3MtZG90XCJcbiAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImkgPT09IGN1cnJlbnRJbmRleCgpXCJcbiAgICAgICAgICAoY2xpY2spPVwiZ29Ub01lc3NhZ2UoaSlcIlxuICAgICAgICA+PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgUm90YXRpbmdUZXh0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIGludGVydmFsSWQ6IFJldHVyblR5cGU8dHlwZW9mIHNldEludGVydmFsPiB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBDb21wb25lbnQgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIEBJbnB1dCgpIHByb3BzOiBSb3RhdGluZ1RleHRNZXRhZGF0YSA9IHtcbiAgICBtZXNzYWdlczogW10sXG4gICAgaW50ZXJ2YWw6IDQwMDAsXG4gICAgc2hvd0RvdHM6IHRydWUsXG4gICAgYWJvdmVUaXRsZUNvbG9yOiAnbWVkaXVtJyxcbiAgICB0aXRsZUNvbG9yOiAnZGFyaycsXG4gIH07XG5cbiAgLy8gQW5pbWF0aW9uIHN0YXRlXG4gIGN1cnJlbnRJbmRleCA9IHNpZ25hbCgwKTtcbiAgaXNFbnRlcmluZyA9IHNpZ25hbCh0cnVlKTtcbiAgaXNFeGl0aW5nID0gc2lnbmFsKGZhbHNlKTtcblxuICAvLyBDdXJyZW50IG1lc3NhZ2UgY29tcHV0ZWQgZnJvbSBpbmRleFxuICBjdXJyZW50TWVzc2FnZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMucHJvcHMubWVzc2FnZXNbdGhpcy5jdXJyZW50SW5kZXgoKV0pO1xuXG4gIC8vIENvbG9yIHZhbHVlc1xuICBnZXQgYWJvdmVUaXRsZUNvbG9yVmFsdWUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb2xvciA9IHRoaXMucHJvcHMuYWJvdmVUaXRsZUNvbG9yIHx8ICdtZWRpdW0nO1xuICAgIHJldHVybiBjb2xvci5zdGFydHNXaXRoKCctLScpIHx8IGNvbG9yLnN0YXJ0c1dpdGgoJyMnKSB8fCBjb2xvci5zdGFydHNXaXRoKCdyZ2InKVxuICAgICAgPyBjb2xvclxuICAgICAgOiBgdmFyKC0taW9uLWNvbG9yLSR7Y29sb3J9KWA7XG4gIH1cblxuICBnZXQgdGl0bGVDb2xvclZhbHVlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgY29sb3IgPSB0aGlzLnByb3BzLnRpdGxlQ29sb3IgfHwgJ2RhcmsnO1xuICAgIHJldHVybiBjb2xvci5zdGFydHNXaXRoKCctLScpIHx8IGNvbG9yLnN0YXJ0c1dpdGgoJyMnKSB8fCBjb2xvci5zdGFydHNXaXRoKCdyZ2InKVxuICAgICAgPyBjb2xvclxuICAgICAgOiBgdmFyKC0taW9uLWNvbG9yLSR7Y29sb3J9KWA7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9wcy5tZXNzYWdlcy5sZW5ndGggPiAxKSB7XG4gICAgICB0aGlzLnN0YXJ0Um90YXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3BSb3RhdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFydFJvdGF0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IGludGVydmFsID0gdGhpcy5wcm9wcy5pbnRlcnZhbCA/PyA0MDAwO1xuICAgIHRoaXMuaW50ZXJ2YWxJZCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgIHRoaXMucm90YXRlVG9OZXh0KCk7XG4gICAgfSwgaW50ZXJ2YWwpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdG9wUm90YXRpb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW50ZXJ2YWxJZCkge1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsSWQpO1xuICAgICAgdGhpcy5pbnRlcnZhbElkID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJvdGF0ZVRvTmV4dCgpOiB2b2lkIHtcbiAgICAvLyBTdGFydCBleGl0IGFuaW1hdGlvblxuICAgIHRoaXMuaXNFbnRlcmluZy5zZXQoZmFsc2UpO1xuICAgIHRoaXMuaXNFeGl0aW5nLnNldCh0cnVlKTtcblxuICAgIC8vIEFmdGVyIGV4aXQgYW5pbWF0aW9uLCBjaGFuZ2UgdGV4dCBhbmQgc3RhcnQgZW50ZXIgYW5pbWF0aW9uXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmN1cnJlbnRJbmRleC51cGRhdGUoKGkpID0+IChpICsgMSkgJSB0aGlzLnByb3BzLm1lc3NhZ2VzLmxlbmd0aCk7XG4gICAgICB0aGlzLmlzRXhpdGluZy5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5pc0VudGVyaW5nLnNldCh0cnVlKTtcbiAgICB9LCA0MDApOyAvLyBNYXRjaCBleGl0IGFuaW1hdGlvbiBkdXJhdGlvblxuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlIHRvIGEgc3BlY2lmaWMgbWVzc2FnZSBieSBpbmRleC5cbiAgICovXG4gIGdvVG9NZXNzYWdlKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoaW5kZXggPT09IHRoaXMuY3VycmVudEluZGV4KCkpIHJldHVybjtcblxuICAgIHRoaXMuc3RvcFJvdGF0aW9uKCk7XG4gICAgdGhpcy5pc0VudGVyaW5nLnNldChmYWxzZSk7XG4gICAgdGhpcy5pc0V4aXRpbmcuc2V0KHRydWUpO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmN1cnJlbnRJbmRleC5zZXQoaW5kZXgpO1xuICAgICAgdGhpcy5pc0V4aXRpbmcuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMuaXNFbnRlcmluZy5zZXQodHJ1ZSk7XG4gICAgICBpZiAodGhpcy5wcm9wcy5tZXNzYWdlcy5sZW5ndGggPiAxKSB7XG4gICAgICAgIHRoaXMuc3RhcnRSb3RhdGlvbigpO1xuICAgICAgfVxuICAgIH0sIDQwMCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3JvdGF0aW5nLXRleHQvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQSBzaW5nbGUgbWVzc2FnZSB0byBkaXNwbGF5IGluIHRoZSByb3RhdGluZyB0ZXh0IGNvbXBvbmVudC5cbiAqXG4gKiBAcHJvcGVydHkgYWJvdmVUaXRsZSAtIFNtYWxsIHRleHQgZGlzcGxheWVkIGFib3ZlIHRoZSBtYWluIHRpdGxlLlxuICogQHByb3BlcnR5IHRpdGxlIC0gVGhlIG1haW4gdGl0bGUgdGV4dC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSb3RhdGluZ1RleHRNZXNzYWdlIHtcbiAgYWJvdmVUaXRsZTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BzIGZvciB2YWwtcm90YXRpbmctdGV4dCBjb21wb25lbnQuXG4gKlxuICogQHByb3BlcnR5IG1lc3NhZ2VzIC0gQXJyYXkgb2YgbWVzc2FnZXMgdG8gcm90YXRlIHRocm91Z2guXG4gKiBAcHJvcGVydHkgaW50ZXJ2YWwgLSBUaW1lIGluIG1pbGxpc2Vjb25kcyBiZXR3ZWVuIHJvdGF0aW9ucyAoZGVmYXVsdDogNDAwMCkuXG4gKiBAcHJvcGVydHkgc2hvd0RvdHMgLSBXaGV0aGVyIHRvIHNob3cgbmF2aWdhdGlvbiBkb3RzIChkZWZhdWx0OiB0cnVlKS5cbiAqIEBwcm9wZXJ0eSBhYm92ZVRpdGxlQ29sb3IgLSBDb2xvciBmb3IgYWJvdmUgdGl0bGUgdGV4dCAoZGVmYXVsdDogJ21lZGl1bScpLlxuICogQHByb3BlcnR5IHRpdGxlQ29sb3IgLSBDb2xvciBmb3IgbWFpbiB0aXRsZSB0ZXh0IChkZWZhdWx0OiAnZGFyaycpLlxuICogQHByb3BlcnR5IGJhY2tncm91bmRDb2xvciAtIEJhY2tncm91bmQgY29sb3IgZm9yIHRoZSBzZWN0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJvdGF0aW5nVGV4dE1ldGFkYXRhIHtcbiAgbWVzc2FnZXM6IFJvdGF0aW5nVGV4dE1lc3NhZ2VbXTtcbiAgaW50ZXJ2YWw/OiBudW1iZXI7XG4gIHNob3dEb3RzPzogYm9vbGVhbjtcbiAgYWJvdmVUaXRsZUNvbG9yPzogc3RyaW5nO1xuICB0aXRsZUNvbG9yPzogc3RyaW5nO1xuICBiYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmc7XG59XG4iXX0=
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import { Component, Input, signal } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { RouterLink } from '@angular/router';
|
|
4
|
+
import { IonButton } from '@ionic/angular/standalone';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common";
|
|
7
|
+
/**
|
|
8
|
+
* val-terminal-404
|
|
9
|
+
*
|
|
10
|
+
* A fun, terminal-styled 404 page component with typing animations.
|
|
11
|
+
*
|
|
12
|
+
* Features:
|
|
13
|
+
* - Terminal window aesthetic with colored dots
|
|
14
|
+
* - Typing animation effect with sequential line reveals
|
|
15
|
+
* - Blinking cursor
|
|
16
|
+
* - Customizable colors to match brand
|
|
17
|
+
* - Shows the attempted path
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* <val-terminal-404
|
|
21
|
+
* [props]="{
|
|
22
|
+
* primaryColor: '#4a1d96',
|
|
23
|
+
* homeRoute: '/',
|
|
24
|
+
* homeButtonText: 'cd /home'
|
|
25
|
+
* }"
|
|
26
|
+
* ></val-terminal-404>
|
|
27
|
+
*/
|
|
28
|
+
export class Terminal404Component {
|
|
29
|
+
constructor() {
|
|
30
|
+
this.props = {};
|
|
31
|
+
this.requestedPath = signal('page-not-found');
|
|
32
|
+
}
|
|
33
|
+
get backgroundGradient() {
|
|
34
|
+
const bg = this.props.backgroundColor;
|
|
35
|
+
if (bg) {
|
|
36
|
+
return `linear-gradient(135deg, ${bg.start} 0%, ${bg.middle} 50%, ${bg.end} 100%)`;
|
|
37
|
+
}
|
|
38
|
+
return 'linear-gradient(135deg, #ede9fe 0%, #ddd6fe 50%, #c4b5fd 100%)';
|
|
39
|
+
}
|
|
40
|
+
ngOnInit() {
|
|
41
|
+
if (typeof window !== 'undefined') {
|
|
42
|
+
const path = window.location.pathname.slice(1) || 'unknown';
|
|
43
|
+
this.requestedPath.set(path);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Lighten a hex color for hover states
|
|
48
|
+
*/
|
|
49
|
+
lightenColor(hex) {
|
|
50
|
+
// Simple lighten by adding to RGB values
|
|
51
|
+
const num = parseInt(hex.replace('#', ''), 16);
|
|
52
|
+
const r = Math.min(255, (num >> 16) + 20);
|
|
53
|
+
const g = Math.min(255, ((num >> 8) & 0x00ff) + 20);
|
|
54
|
+
const b = Math.min(255, (num & 0x0000ff) + 20);
|
|
55
|
+
return `#${((r << 16) | (g << 8) | b).toString(16).padStart(6, '0')}`;
|
|
56
|
+
}
|
|
57
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: Terminal404Component, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
58
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: Terminal404Component, isStandalone: true, selector: "val-terminal-404", inputs: { props: "props" }, ngImport: i0, template: `
|
|
59
|
+
<div
|
|
60
|
+
class="terminal-container"
|
|
61
|
+
[ngStyle]="{
|
|
62
|
+
background: backgroundGradient
|
|
63
|
+
}"
|
|
64
|
+
>
|
|
65
|
+
<div
|
|
66
|
+
class="error-code"
|
|
67
|
+
[ngStyle]="{
|
|
68
|
+
color: props.primaryColor || '#4a1d96',
|
|
69
|
+
textShadow: '0 0 40px ' + (props.primaryColor || '#4a1d96') + '4d'
|
|
70
|
+
}"
|
|
71
|
+
>
|
|
72
|
+
404
|
|
73
|
+
</div>
|
|
74
|
+
|
|
75
|
+
<div
|
|
76
|
+
class="terminal"
|
|
77
|
+
[ngStyle]="{ background: props.terminalBackground || '#0d1117' }"
|
|
78
|
+
>
|
|
79
|
+
<div class="terminal-header">
|
|
80
|
+
<div class="terminal-dot dot-red"></div>
|
|
81
|
+
<div class="terminal-dot dot-yellow"></div>
|
|
82
|
+
<div class="terminal-dot dot-green"></div>
|
|
83
|
+
<span class="terminal-title">bash - 404</span>
|
|
84
|
+
</div>
|
|
85
|
+
|
|
86
|
+
<div class="terminal-body">
|
|
87
|
+
<div class="line">
|
|
88
|
+
<span class="prompt">user@app</span>
|
|
89
|
+
<span class="command">:~$ </span>
|
|
90
|
+
<span class="command">cd /{{ requestedPath() }}</span>
|
|
91
|
+
</div>
|
|
92
|
+
|
|
93
|
+
<div class="line">
|
|
94
|
+
<span class="error"
|
|
95
|
+
>bash: cd: /{{ requestedPath() }}: No existe el directorio</span
|
|
96
|
+
>
|
|
97
|
+
</div>
|
|
98
|
+
|
|
99
|
+
<div class="line">
|
|
100
|
+
<span class="prompt">user@app</span>
|
|
101
|
+
<span class="command">:~$ </span>
|
|
102
|
+
<span class="command">sudo find / -name "pagina"</span>
|
|
103
|
+
</div>
|
|
104
|
+
|
|
105
|
+
<div class="line">
|
|
106
|
+
<span class="info"
|
|
107
|
+
><span class="search-icon">🔍</span> Buscando...</span
|
|
108
|
+
>
|
|
109
|
+
</div>
|
|
110
|
+
|
|
111
|
+
<div class="line">
|
|
112
|
+
<span class="warning">find: No se encontraron resultados.</span>
|
|
113
|
+
</div>
|
|
114
|
+
|
|
115
|
+
<div class="line">
|
|
116
|
+
<span class="prompt">user@app</span>
|
|
117
|
+
<span class="command">:~$ </span>
|
|
118
|
+
<span class="cursor"></span>
|
|
119
|
+
</div>
|
|
120
|
+
</div>
|
|
121
|
+
</div>
|
|
122
|
+
|
|
123
|
+
<div class="action-container">
|
|
124
|
+
<ion-button
|
|
125
|
+
class="home-button"
|
|
126
|
+
[routerLink]="props.homeRoute || '/'"
|
|
127
|
+
expand="block"
|
|
128
|
+
[ngStyle]="{
|
|
129
|
+
'--background': props.primaryColor || '#4a1d96',
|
|
130
|
+
'--background-hover': lightenColor(props.primaryColor || '#4a1d96')
|
|
131
|
+
}"
|
|
132
|
+
>
|
|
133
|
+
{{ props.homeButtonText || 'cd /home' }}
|
|
134
|
+
</ion-button>
|
|
135
|
+
</div>
|
|
136
|
+
</div>
|
|
137
|
+
`, isInline: true, styles: [":host{display:block;width:100%}.terminal-container{min-height:70vh;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:2rem;border-radius:16px}.terminal{border-radius:12px;padding:0;max-width:600px;width:100%;box-shadow:0 20px 60px #0000004d;overflow:hidden}.terminal-header{background:#161b22;padding:12px 16px;display:flex;align-items:center;gap:8px}.terminal-dot{width:12px;height:12px;border-radius:50%}.dot-red{background:#ff5f56}.dot-yellow{background:#ffbd2e}.dot-green{background:#27ca40}.terminal-title{flex:1;text-align:center;color:#8b949e;font-size:.85rem;font-family:monospace}.terminal-body{padding:24px;font-family:Fira Code,Monaco,Consolas,monospace;font-size:.95rem;line-height:1.8}.line{margin-bottom:8px;opacity:0;animation:fadeIn .3s ease forwards}.line:nth-child(1){animation-delay:.2s}.line:nth-child(2){animation-delay:.8s}.line:nth-child(3){animation-delay:1.4s}.line:nth-child(4){animation-delay:2s}.line:nth-child(5){animation-delay:2.6s}.line:nth-child(6){animation-delay:3.2s}@keyframes fadeIn{to{opacity:1}}.prompt{color:#7ee787}.command{color:#c9d1d9}.error{color:#f85149}.info{color:#58a6ff}.warning{color:#d29922}.cursor{display:inline-block;width:10px;height:18px;background:#7ee787;margin-left:4px;animation:blink 1s step-end infinite;vertical-align:text-bottom}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.error-code{font-size:6rem;font-weight:900;text-align:center;margin:.5rem 0 1rem;font-family:monospace}.action-container{margin-top:2rem;text-align:center;opacity:0;animation:fadeIn .5s ease forwards;animation-delay:3.8s}.home-button{--border-radius: 8px;font-family:monospace}.search-icon{animation:searching 2s ease-in-out infinite;display:inline-block}@keyframes searching{0%,to{transform:translate(0)}25%{transform:translate(5px)}75%{transform:translate(-5px)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] }); }
|
|
138
|
+
}
|
|
139
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: Terminal404Component, decorators: [{
|
|
140
|
+
type: Component,
|
|
141
|
+
args: [{ selector: 'val-terminal-404', standalone: true, imports: [CommonModule, IonButton, RouterLink], template: `
|
|
142
|
+
<div
|
|
143
|
+
class="terminal-container"
|
|
144
|
+
[ngStyle]="{
|
|
145
|
+
background: backgroundGradient
|
|
146
|
+
}"
|
|
147
|
+
>
|
|
148
|
+
<div
|
|
149
|
+
class="error-code"
|
|
150
|
+
[ngStyle]="{
|
|
151
|
+
color: props.primaryColor || '#4a1d96',
|
|
152
|
+
textShadow: '0 0 40px ' + (props.primaryColor || '#4a1d96') + '4d'
|
|
153
|
+
}"
|
|
154
|
+
>
|
|
155
|
+
404
|
|
156
|
+
</div>
|
|
157
|
+
|
|
158
|
+
<div
|
|
159
|
+
class="terminal"
|
|
160
|
+
[ngStyle]="{ background: props.terminalBackground || '#0d1117' }"
|
|
161
|
+
>
|
|
162
|
+
<div class="terminal-header">
|
|
163
|
+
<div class="terminal-dot dot-red"></div>
|
|
164
|
+
<div class="terminal-dot dot-yellow"></div>
|
|
165
|
+
<div class="terminal-dot dot-green"></div>
|
|
166
|
+
<span class="terminal-title">bash - 404</span>
|
|
167
|
+
</div>
|
|
168
|
+
|
|
169
|
+
<div class="terminal-body">
|
|
170
|
+
<div class="line">
|
|
171
|
+
<span class="prompt">user@app</span>
|
|
172
|
+
<span class="command">:~$ </span>
|
|
173
|
+
<span class="command">cd /{{ requestedPath() }}</span>
|
|
174
|
+
</div>
|
|
175
|
+
|
|
176
|
+
<div class="line">
|
|
177
|
+
<span class="error"
|
|
178
|
+
>bash: cd: /{{ requestedPath() }}: No existe el directorio</span
|
|
179
|
+
>
|
|
180
|
+
</div>
|
|
181
|
+
|
|
182
|
+
<div class="line">
|
|
183
|
+
<span class="prompt">user@app</span>
|
|
184
|
+
<span class="command">:~$ </span>
|
|
185
|
+
<span class="command">sudo find / -name "pagina"</span>
|
|
186
|
+
</div>
|
|
187
|
+
|
|
188
|
+
<div class="line">
|
|
189
|
+
<span class="info"
|
|
190
|
+
><span class="search-icon">🔍</span> Buscando...</span
|
|
191
|
+
>
|
|
192
|
+
</div>
|
|
193
|
+
|
|
194
|
+
<div class="line">
|
|
195
|
+
<span class="warning">find: No se encontraron resultados.</span>
|
|
196
|
+
</div>
|
|
197
|
+
|
|
198
|
+
<div class="line">
|
|
199
|
+
<span class="prompt">user@app</span>
|
|
200
|
+
<span class="command">:~$ </span>
|
|
201
|
+
<span class="cursor"></span>
|
|
202
|
+
</div>
|
|
203
|
+
</div>
|
|
204
|
+
</div>
|
|
205
|
+
|
|
206
|
+
<div class="action-container">
|
|
207
|
+
<ion-button
|
|
208
|
+
class="home-button"
|
|
209
|
+
[routerLink]="props.homeRoute || '/'"
|
|
210
|
+
expand="block"
|
|
211
|
+
[ngStyle]="{
|
|
212
|
+
'--background': props.primaryColor || '#4a1d96',
|
|
213
|
+
'--background-hover': lightenColor(props.primaryColor || '#4a1d96')
|
|
214
|
+
}"
|
|
215
|
+
>
|
|
216
|
+
{{ props.homeButtonText || 'cd /home' }}
|
|
217
|
+
</ion-button>
|
|
218
|
+
</div>
|
|
219
|
+
</div>
|
|
220
|
+
`, styles: [":host{display:block;width:100%}.terminal-container{min-height:70vh;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:2rem;border-radius:16px}.terminal{border-radius:12px;padding:0;max-width:600px;width:100%;box-shadow:0 20px 60px #0000004d;overflow:hidden}.terminal-header{background:#161b22;padding:12px 16px;display:flex;align-items:center;gap:8px}.terminal-dot{width:12px;height:12px;border-radius:50%}.dot-red{background:#ff5f56}.dot-yellow{background:#ffbd2e}.dot-green{background:#27ca40}.terminal-title{flex:1;text-align:center;color:#8b949e;font-size:.85rem;font-family:monospace}.terminal-body{padding:24px;font-family:Fira Code,Monaco,Consolas,monospace;font-size:.95rem;line-height:1.8}.line{margin-bottom:8px;opacity:0;animation:fadeIn .3s ease forwards}.line:nth-child(1){animation-delay:.2s}.line:nth-child(2){animation-delay:.8s}.line:nth-child(3){animation-delay:1.4s}.line:nth-child(4){animation-delay:2s}.line:nth-child(5){animation-delay:2.6s}.line:nth-child(6){animation-delay:3.2s}@keyframes fadeIn{to{opacity:1}}.prompt{color:#7ee787}.command{color:#c9d1d9}.error{color:#f85149}.info{color:#58a6ff}.warning{color:#d29922}.cursor{display:inline-block;width:10px;height:18px;background:#7ee787;margin-left:4px;animation:blink 1s step-end infinite;vertical-align:text-bottom}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.error-code{font-size:6rem;font-weight:900;text-align:center;margin:.5rem 0 1rem;font-family:monospace}.action-container{margin-top:2rem;text-align:center;opacity:0;animation:fadeIn .5s ease forwards;animation-delay:3.8s}.home-button{--border-radius: 8px;font-family:monospace}.search-icon{animation:searching 2s ease-in-out infinite;display:inline-block}@keyframes searching{0%,to{transform:translate(0)}25%{transform:translate(5px)}75%{transform:translate(-5px)}}\n"] }]
|
|
221
|
+
}], propDecorators: { props: [{
|
|
222
|
+
type: Input
|
|
223
|
+
}] } });
|
|
224
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVybWluYWwtNDA0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvdGVybWluYWwtNDA0L3Rlcm1pbmFsLTQwNC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7QUFHdEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBc1FILE1BQU0sT0FBTyxvQkFBb0I7SUFyUWpDO1FBc1FXLFVBQUssR0FBd0IsRUFBRSxDQUFDO1FBRXpDLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7S0E0QjFDO0lBMUJDLElBQUksa0JBQWtCO1FBQ3BCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDO1FBQ3RDLElBQUksRUFBRSxFQUFFLENBQUM7WUFDUCxPQUFPLDJCQUEyQixFQUFFLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQyxNQUFNLFNBQVMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDO1FBQ3JGLENBQUM7UUFDRCxPQUFPLGdFQUFnRSxDQUFDO0lBQzFFLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUNsQyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDO1lBQzVELElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUFZLENBQUMsR0FBVztRQUN0Qix5Q0FBeUM7UUFDekMsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQy9DLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDcEQsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDL0MsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUN4RSxDQUFDOytHQTlCVSxvQkFBb0I7bUdBQXBCLG9CQUFvQix3R0FqRnJCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0VULDYzREFoUVMsWUFBWSxvSEFBRSxTQUFTLG9QQUFFLFVBQVU7OzRGQWtRbEMsb0JBQW9CO2tCQXJRaEMsU0FBUzsrQkFDRSxrQkFBa0IsY0FDaEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUMsWUFpTHBDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0VUOzhCQUdRLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUm91dGVyTGluayB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJb25CdXR0b24gfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IFRlcm1pbmFsNDA0TWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiB2YWwtdGVybWluYWwtNDA0XG4gKlxuICogQSBmdW4sIHRlcm1pbmFsLXN0eWxlZCA0MDQgcGFnZSBjb21wb25lbnQgd2l0aCB0eXBpbmcgYW5pbWF0aW9ucy5cbiAqXG4gKiBGZWF0dXJlczpcbiAqIC0gVGVybWluYWwgd2luZG93IGFlc3RoZXRpYyB3aXRoIGNvbG9yZWQgZG90c1xuICogLSBUeXBpbmcgYW5pbWF0aW9uIGVmZmVjdCB3aXRoIHNlcXVlbnRpYWwgbGluZSByZXZlYWxzXG4gKiAtIEJsaW5raW5nIGN1cnNvclxuICogLSBDdXN0b21pemFibGUgY29sb3JzIHRvIG1hdGNoIGJyYW5kXG4gKiAtIFNob3dzIHRoZSBhdHRlbXB0ZWQgcGF0aFxuICpcbiAqIEBleGFtcGxlXG4gKiA8dmFsLXRlcm1pbmFsLTQwNFxuICogICBbcHJvcHNdPVwie1xuICogICAgIHByaW1hcnlDb2xvcjogJyM0YTFkOTYnLFxuICogICAgIGhvbWVSb3V0ZTogJy8nLFxuICogICAgIGhvbWVCdXR0b25UZXh0OiAnY2QgL2hvbWUnXG4gKiAgIH1cIlxuICogPjwvdmFsLXRlcm1pbmFsLTQwND5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXRlcm1pbmFsLTQwNCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIElvbkJ1dHRvbiwgUm91dGVyTGlua10sXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgfVxuXG4gICAgICAudGVybWluYWwtY29udGFpbmVyIHtcbiAgICAgICAgbWluLWhlaWdodDogNzB2aDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDJyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gICAgICB9XG5cbiAgICAgIC50ZXJtaW5hbCB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIG1heC13aWR0aDogNjAwcHg7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBib3gtc2hhZG93OiAwIDIwcHggNjBweCByZ2JhKDAsIDAsIDAsIDAuMyk7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICB9XG5cbiAgICAgIC50ZXJtaW5hbC1oZWFkZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjMTYxYjIyO1xuICAgICAgICBwYWRkaW5nOiAxMnB4IDE2cHg7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgfVxuXG4gICAgICAudGVybWluYWwtZG90IHtcbiAgICAgICAgd2lkdGg6IDEycHg7XG4gICAgICAgIGhlaWdodDogMTJweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgfVxuXG4gICAgICAuZG90LXJlZCB7XG4gICAgICAgIGJhY2tncm91bmQ6ICNmZjVmNTY7XG4gICAgICB9XG4gICAgICAuZG90LXllbGxvdyB7XG4gICAgICAgIGJhY2tncm91bmQ6ICNmZmJkMmU7XG4gICAgICB9XG4gICAgICAuZG90LWdyZWVuIHtcbiAgICAgICAgYmFja2dyb3VuZDogIzI3Y2E0MDtcbiAgICAgIH1cblxuICAgICAgLnRlcm1pbmFsLXRpdGxlIHtcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBjb2xvcjogIzhiOTQ5ZTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtO1xuICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlO1xuICAgICAgfVxuXG4gICAgICAudGVybWluYWwtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IDI0cHg7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAnRmlyYSBDb2RlJywgJ01vbmFjbycsICdDb25zb2xhcycsIG1vbm9zcGFjZTtcbiAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMS44O1xuICAgICAgfVxuXG4gICAgICAubGluZSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDhweDtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgYW5pbWF0aW9uOiBmYWRlSW4gMC4zcyBlYXNlIGZvcndhcmRzO1xuICAgICAgfVxuXG4gICAgICAubGluZTpudGgtY2hpbGQoMSkge1xuICAgICAgICBhbmltYXRpb24tZGVsYXk6IDAuMnM7XG4gICAgICB9XG4gICAgICAubGluZTpudGgtY2hpbGQoMikge1xuICAgICAgICBhbmltYXRpb24tZGVsYXk6IDAuOHM7XG4gICAgICB9XG4gICAgICAubGluZTpudGgtY2hpbGQoMykge1xuICAgICAgICBhbmltYXRpb24tZGVsYXk6IDEuNHM7XG4gICAgICB9XG4gICAgICAubGluZTpudGgtY2hpbGQoNCkge1xuICAgICAgICBhbmltYXRpb24tZGVsYXk6IDJzO1xuICAgICAgfVxuICAgICAgLmxpbmU6bnRoLWNoaWxkKDUpIHtcbiAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiAyLjZzO1xuICAgICAgfVxuICAgICAgLmxpbmU6bnRoLWNoaWxkKDYpIHtcbiAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiAzLjJzO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGZhZGVJbiB7XG4gICAgICAgIHRvIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5wcm9tcHQge1xuICAgICAgICBjb2xvcjogIzdlZTc4NztcbiAgICAgIH1cblxuICAgICAgLmNvbW1hbmQge1xuICAgICAgICBjb2xvcjogI2M5ZDFkOTtcbiAgICAgIH1cblxuICAgICAgLmVycm9yIHtcbiAgICAgICAgY29sb3I6ICNmODUxNDk7XG4gICAgICB9XG5cbiAgICAgIC5pbmZvIHtcbiAgICAgICAgY29sb3I6ICM1OGE2ZmY7XG4gICAgICB9XG5cbiAgICAgIC53YXJuaW5nIHtcbiAgICAgICAgY29sb3I6ICNkMjk5MjI7XG4gICAgICB9XG5cbiAgICAgIC5jdXJzb3Ige1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMHB4O1xuICAgICAgICBoZWlnaHQ6IDE4cHg7XG4gICAgICAgIGJhY2tncm91bmQ6ICM3ZWU3ODc7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiA0cHg7XG4gICAgICAgIGFuaW1hdGlvbjogYmxpbmsgMXMgc3RlcC1lbmQgaW5maW5pdGU7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiB0ZXh0LWJvdHRvbTtcbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBibGluayB7XG4gICAgICAgIDAlLFxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG4gICAgICAgIDUwJSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuZXJyb3ItY29kZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogNnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBtYXJnaW46IDAuNXJlbSAwIDFyZW07XG4gICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7XG4gICAgICB9XG5cbiAgICAgIC5hY3Rpb24tY29udGFpbmVyIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMnJlbTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICBhbmltYXRpb246IGZhZGVJbiAwLjVzIGVhc2UgZm9yd2FyZHM7XG4gICAgICAgIGFuaW1hdGlvbi1kZWxheTogMy44cztcbiAgICAgIH1cblxuICAgICAgLmhvbWUtYnV0dG9uIHtcbiAgICAgICAgLS1ib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7XG4gICAgICB9XG5cbiAgICAgIC5zZWFyY2gtaWNvbiB7XG4gICAgICAgIGFuaW1hdGlvbjogc2VhcmNoaW5nIDJzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgc2VhcmNoaW5nIHtcbiAgICAgICAgMCUsXG4gICAgICAgIDEwMCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgICAgICAgfVxuICAgICAgICAyNSUge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg1cHgpO1xuICAgICAgICB9XG4gICAgICAgIDc1JSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01cHgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInRlcm1pbmFsLWNvbnRhaW5lclwiXG4gICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgIGJhY2tncm91bmQ6IGJhY2tncm91bmRHcmFkaWVudFxuICAgICAgfVwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImVycm9yLWNvZGVcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgY29sb3I6IHByb3BzLnByaW1hcnlDb2xvciB8fCAnIzRhMWQ5NicsXG4gICAgICAgICAgdGV4dFNoYWRvdzogJzAgMCA0MHB4ICcgKyAocHJvcHMucHJpbWFyeUNvbG9yIHx8ICcjNGExZDk2JykgKyAnNGQnXG4gICAgICAgIH1cIlxuICAgICAgPlxuICAgICAgICA0MDRcbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwidGVybWluYWxcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7IGJhY2tncm91bmQ6IHByb3BzLnRlcm1pbmFsQmFja2dyb3VuZCB8fCAnIzBkMTExNycgfVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXJtaW5hbC1oZWFkZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGVybWluYWwtZG90IGRvdC1yZWRcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGVybWluYWwtZG90IGRvdC15ZWxsb3dcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGVybWluYWwtZG90IGRvdC1ncmVlblwiPjwvZGl2PlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGVybWluYWwtdGl0bGVcIj5iYXNoIC0gNDA0PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwidGVybWluYWwtYm9keVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaW5lXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInByb21wdFwiPnVzZXImIzY0O2FwcDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29tbWFuZFwiPjp+JCA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbW1hbmRcIj5jZCAve3sgcmVxdWVzdGVkUGF0aCgpIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxpbmVcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3JcIlxuICAgICAgICAgICAgICA+YmFzaDogY2Q6IC97eyByZXF1ZXN0ZWRQYXRoKCkgfX06IE5vIGV4aXN0ZSBlbCBkaXJlY3RvcmlvPC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGluZVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwcm9tcHRcIj51c2VyJiM2NDthcHA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbW1hbmRcIj46fiQgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb21tYW5kXCI+c3VkbyBmaW5kIC8gLW5hbWUgXCJwYWdpbmFcIjwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaW5lXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImluZm9cIlxuICAgICAgICAgICAgICA+PHNwYW4gY2xhc3M9XCJzZWFyY2gtaWNvblwiPvCflI08L3NwYW4+IEJ1c2NhbmRvLi4uPC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGluZVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ3YXJuaW5nXCI+ZmluZDogTm8gc2UgZW5jb250cmFyb24gcmVzdWx0YWRvcy48L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGluZVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwcm9tcHRcIj51c2VyJiM2NDthcHA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbW1hbmRcIj46fiQgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3JcIj48L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tY29udGFpbmVyXCI+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJob21lLWJ1dHRvblwiXG4gICAgICAgICAgW3JvdXRlckxpbmtdPVwicHJvcHMuaG9tZVJvdXRlIHx8ICcvJ1wiXG4gICAgICAgICAgZXhwYW5kPVwiYmxvY2tcIlxuICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICctLWJhY2tncm91bmQnOiBwcm9wcy5wcmltYXJ5Q29sb3IgfHwgJyM0YTFkOTYnLFxuICAgICAgICAgICAgJy0tYmFja2dyb3VuZC1ob3Zlcic6IGxpZ2h0ZW5Db2xvcihwcm9wcy5wcmltYXJ5Q29sb3IgfHwgJyM0YTFkOTYnKVxuICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcHJvcHMuaG9tZUJ1dHRvblRleHQgfHwgJ2NkIC9ob21lJyB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgVGVybWluYWw0MDRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBwcm9wczogVGVybWluYWw0MDRNZXRhZGF0YSA9IHt9O1xuXG4gIHJlcXVlc3RlZFBhdGggPSBzaWduYWwoJ3BhZ2Utbm90LWZvdW5kJyk7XG5cbiAgZ2V0IGJhY2tncm91bmRHcmFkaWVudCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJnID0gdGhpcy5wcm9wcy5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgaWYgKGJnKSB7XG4gICAgICByZXR1cm4gYGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICR7Ymcuc3RhcnR9IDAlLCAke2JnLm1pZGRsZX0gNTAlLCAke2JnLmVuZH0gMTAwJSlgO1xuICAgIH1cbiAgICByZXR1cm4gJ2xpbmVhci1ncmFkaWVudCgxMzVkZWcsICNlZGU5ZmUgMCUsICNkZGQ2ZmUgNTAlLCAjYzRiNWZkIDEwMCUpJztcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uc3QgcGF0aCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5zbGljZSgxKSB8fCAndW5rbm93bic7XG4gICAgICB0aGlzLnJlcXVlc3RlZFBhdGguc2V0KHBhdGgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBMaWdodGVuIGEgaGV4IGNvbG9yIGZvciBob3ZlciBzdGF0ZXNcbiAgICovXG4gIGxpZ2h0ZW5Db2xvcihoZXg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gU2ltcGxlIGxpZ2h0ZW4gYnkgYWRkaW5nIHRvIFJHQiB2YWx1ZXNcbiAgICBjb25zdCBudW0gPSBwYXJzZUludChoZXgucmVwbGFjZSgnIycsICcnKSwgMTYpO1xuICAgIGNvbnN0IHIgPSBNYXRoLm1pbigyNTUsIChudW0gPj4gMTYpICsgMjApO1xuICAgIGNvbnN0IGcgPSBNYXRoLm1pbigyNTUsICgobnVtID4+IDgpICYgMHgwMGZmKSArIDIwKTtcbiAgICBjb25zdCBiID0gTWF0aC5taW4oMjU1LCAobnVtICYgMHgwMDAwZmYpICsgMjApO1xuICAgIHJldHVybiBgIyR7KChyIDw8IDE2KSB8IChnIDw8IDgpIHwgYikudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDYsICcwJyl9YDtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3Rlcm1pbmFsLTQwNC90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciB0ZXJtaW5hbCA0MDQgcGFnZSBjb21wb25lbnQuXG4gKlxuICogQHByb3BlcnR5IGJhY2tncm91bmRDb2xvciAtIEJhY2tncm91bmQgZ3JhZGllbnQgY29sb3JzIChkZWZhdWx0OiBsYXZlbmRlciBwdXJwbGUpXG4gKiBAcHJvcGVydHkgcHJpbWFyeUNvbG9yIC0gTWFpbiBicmFuZCBjb2xvciBmb3IgNDA0IHRleHQgYW5kIGJ1dHRvbiAoZGVmYXVsdDogIzRhMWQ5NilcbiAqIEBwcm9wZXJ0eSB0ZXJtaW5hbEJhY2tncm91bmQgLSBUZXJtaW5hbCB3aW5kb3cgYmFja2dyb3VuZCAoZGVmYXVsdDogIzBkMTExNylcbiAqIEBwcm9wZXJ0eSBob21lUm91dGUgLSBSb3V0ZSBmb3IgdGhlIGhvbWUgYnV0dG9uIChkZWZhdWx0OiAnLycpXG4gKiBAcHJvcGVydHkgaG9tZUJ1dHRvblRleHQgLSBUZXh0IGZvciBob21lIGJ1dHRvbiAoZGVmYXVsdDogJ2NkIC9ob21lJylcbiAqIEBwcm9wZXJ0eSBzaG93TGFuZ3VhZ2VTZWxlY3RvciAtIFNob3cgbGFuZ3VhZ2Ugc2VsZWN0b3IgaW4gaGVhZGVyIChkZWZhdWx0OiB0cnVlKVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRlcm1pbmFsNDA0TWV0YWRhdGEge1xuICBiYWNrZ3JvdW5kQ29sb3I/OiB7XG4gICAgc3RhcnQ6IHN0cmluZztcbiAgICBtaWRkbGU6IHN0cmluZztcbiAgICBlbmQ6IHN0cmluZztcbiAgfTtcbiAgcHJpbWFyeUNvbG9yPzogc3RyaW5nO1xuICB0ZXJtaW5hbEJhY2tncm91bmQ/OiBzdHJpbmc7XG4gIGhvbWVSb3V0ZT86IHN0cmluZztcbiAgaG9tZUJ1dHRvblRleHQ/OiBzdHJpbmc7XG4gIHNob3dMYW5ndWFnZVNlbGVjdG9yPzogYm9vbGVhbjtcbn1cbiJdfQ==
|