valtech-components 2.0.451 → 2.0.453
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/tabbed-content/tabbed-content.component.mjs +170 -0
- package/esm2022/lib/components/organisms/tabbed-content/types.mjs +2 -0
- package/esm2022/lib/components/templates/page-content/page-content.component.mjs +11 -11
- package/esm2022/lib/components/templates/page-template/page-template.component.mjs +3 -5
- package/esm2022/lib/services/auth/auth-state.service.mjs +173 -0
- package/esm2022/lib/services/auth/auth.service.mjs +454 -0
- package/esm2022/lib/services/auth/config.mjs +76 -0
- package/esm2022/lib/services/auth/guards.mjs +194 -0
- package/esm2022/lib/services/auth/index.mjs +70 -0
- package/esm2022/lib/services/auth/interceptor.mjs +98 -0
- package/esm2022/lib/services/auth/storage.service.mjs +141 -0
- package/esm2022/lib/services/auth/sync.service.mjs +149 -0
- package/esm2022/lib/services/auth/token.service.mjs +113 -0
- package/esm2022/lib/services/auth/types.mjs +29 -0
- package/esm2022/lib/services/firebase/config.mjs +108 -0
- package/esm2022/lib/services/firebase/firebase.service.mjs +288 -0
- package/esm2022/lib/services/firebase/firestore-collection.mjs +254 -0
- package/esm2022/lib/services/firebase/firestore.service.mjs +509 -0
- package/esm2022/lib/services/firebase/index.mjs +49 -0
- package/esm2022/lib/services/firebase/messaging.service.mjs +512 -0
- package/esm2022/lib/services/firebase/shared-config.mjs +138 -0
- package/esm2022/lib/services/firebase/storage.service.mjs +422 -0
- package/esm2022/lib/services/firebase/types.mjs +8 -0
- package/esm2022/lib/services/firebase/utils/path-builder.mjs +195 -0
- package/esm2022/lib/services/firebase/utils/query-builder.mjs +302 -0
- package/esm2022/lib/services/link-processor.service.mjs +61 -43
- package/esm2022/lib/services/modal/modal.service.mjs +8 -9
- package/esm2022/lib/services/navigation.service.mjs +11 -11
- package/esm2022/public-api.mjs +23 -4
- package/fesm2022/valtech-components.mjs +4599 -102
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/organisms/tabbed-content/tabbed-content.component.d.ts +65 -0
- package/lib/components/organisms/tabbed-content/types.d.ts +53 -0
- package/lib/components/templates/page-content/page-content.component.d.ts +3 -0
- package/lib/services/auth/auth-state.service.d.ts +85 -0
- package/lib/services/auth/auth.service.d.ts +146 -0
- package/lib/services/auth/config.d.ts +38 -0
- package/lib/services/auth/guards.d.ts +123 -0
- package/lib/services/auth/index.d.ts +63 -0
- package/lib/services/auth/interceptor.d.ts +22 -0
- package/lib/services/auth/storage.service.d.ts +48 -0
- package/lib/services/auth/sync.service.d.ts +49 -0
- package/lib/services/auth/token.service.d.ts +51 -0
- package/lib/services/auth/types.d.ts +315 -0
- package/lib/services/firebase/config.d.ts +49 -0
- package/lib/services/firebase/firebase.service.d.ts +140 -0
- package/lib/services/firebase/firestore-collection.d.ts +175 -0
- package/lib/services/firebase/firestore.service.d.ts +304 -0
- package/lib/services/firebase/index.d.ts +39 -0
- package/lib/services/firebase/messaging.service.d.ts +263 -0
- package/lib/services/firebase/shared-config.d.ts +126 -0
- package/lib/services/firebase/storage.service.d.ts +206 -0
- package/lib/services/firebase/types.d.ts +281 -0
- package/lib/services/firebase/utils/path-builder.d.ts +132 -0
- package/lib/services/firebase/utils/query-builder.d.ts +210 -0
- package/lib/services/modal/modal.service.d.ts +2 -0
- package/lib/services/navigation.service.d.ts +4 -4
- package/package.json +3 -1
- package/public-api.d.ts +9 -0
- package/fesm2022/valtech-components-simple-modal-content.component-DQhEgUmS.mjs +0 -136
- package/fesm2022/valtech-components-simple-modal-content.component-DQhEgUmS.mjs.map +0 -1
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter, signal, computed, ChangeDetectionStrategy, } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { SegmentControlComponent } from '../../molecules/segment-control/segment-control.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
/**
|
|
7
|
+
* val-tabbed-content
|
|
8
|
+
*
|
|
9
|
+
* A container component that combines segment navigation with dynamic content panels.
|
|
10
|
+
* Uses segment-control internally for tab navigation and renders the associated
|
|
11
|
+
* template for the active tab.
|
|
12
|
+
*
|
|
13
|
+
* @example Basic usage with templates
|
|
14
|
+
* ```html
|
|
15
|
+
* <ng-template #catalogTemplate>
|
|
16
|
+
* <div>Catalog Content</div>
|
|
17
|
+
* </ng-template>
|
|
18
|
+
* <ng-template #settingsTemplate>
|
|
19
|
+
* <div>Settings Content</div>
|
|
20
|
+
* </ng-template>
|
|
21
|
+
*
|
|
22
|
+
* <val-tabbed-content [props]="{
|
|
23
|
+
* tabs: [
|
|
24
|
+
* { value: 'catalog', label: 'Catalog', icon: 'layers-outline', template: catalogTemplate },
|
|
25
|
+
* { value: 'settings', label: 'Settings', icon: 'settings-outline', template: settingsTemplate }
|
|
26
|
+
* ],
|
|
27
|
+
* selectedTab: 'catalog',
|
|
28
|
+
* scrollable: true,
|
|
29
|
+
* animated: true
|
|
30
|
+
* }" (tabChange)="onTabChange($event)"></val-tabbed-content>
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* @input props: TabbedContentMetadata - Configuration for the tabbed content
|
|
34
|
+
* @output tabChange: string - Emits the selected tab value when changed
|
|
35
|
+
*/
|
|
36
|
+
export class TabbedContentComponent {
|
|
37
|
+
constructor() {
|
|
38
|
+
/**
|
|
39
|
+
* Emits when the active tab changes.
|
|
40
|
+
*/
|
|
41
|
+
this.tabChange = new EventEmitter();
|
|
42
|
+
/** Currently selected tab value */
|
|
43
|
+
this.selectedValue = signal('');
|
|
44
|
+
/** Whether a transition is in progress */
|
|
45
|
+
this.isTransitioning = signal(false);
|
|
46
|
+
/** Computed animation duration string */
|
|
47
|
+
this.animationDuration = computed(() => `${this.props.animationDuration || 300}ms`);
|
|
48
|
+
/** Computed segment control props derived from tabs config */
|
|
49
|
+
this.segmentControlProps = computed(() => {
|
|
50
|
+
const options = this.props.tabs.map(tab => ({
|
|
51
|
+
value: tab.value,
|
|
52
|
+
label: tab.label,
|
|
53
|
+
icon: tab.icon,
|
|
54
|
+
disabled: tab.disabled,
|
|
55
|
+
layout: tab.layout || 'icon-top',
|
|
56
|
+
}));
|
|
57
|
+
return {
|
|
58
|
+
options,
|
|
59
|
+
value: this.selectedValue(),
|
|
60
|
+
color: this.props.color || 'primary',
|
|
61
|
+
scrollable: this.props.scrollable ?? false,
|
|
62
|
+
swipeGesture: this.props.swipeGesture ?? true,
|
|
63
|
+
mode: this.props.mode,
|
|
64
|
+
};
|
|
65
|
+
});
|
|
66
|
+
/** Computed active tab object */
|
|
67
|
+
this.activeTab = computed(() => {
|
|
68
|
+
return this.props.tabs.find(tab => tab.value === this.selectedValue());
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
ngOnInit() {
|
|
72
|
+
// Set initial selected tab
|
|
73
|
+
const initialValue = this.props.selectedTab || this.props.tabs[0]?.value || '';
|
|
74
|
+
this.selectedValue.set(initialValue);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Handles segment change events.
|
|
78
|
+
*/
|
|
79
|
+
onSegmentChange(value) {
|
|
80
|
+
if (value === this.selectedValue()) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
// Trigger transition animation
|
|
84
|
+
if (this.props.animated !== false) {
|
|
85
|
+
this.isTransitioning.set(true);
|
|
86
|
+
// Reset transition state after animation completes
|
|
87
|
+
setTimeout(() => {
|
|
88
|
+
this.selectedValue.set(value);
|
|
89
|
+
this.isTransitioning.set(false);
|
|
90
|
+
this.tabChange.emit(value);
|
|
91
|
+
}, (this.props.animationDuration || 300) / 2);
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
this.selectedValue.set(value);
|
|
95
|
+
this.tabChange.emit(value);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Creates the context object for the template outlet.
|
|
100
|
+
*/
|
|
101
|
+
getTemplateContext(tab) {
|
|
102
|
+
const index = this.props.tabs.findIndex(t => t.value === tab.value);
|
|
103
|
+
return {
|
|
104
|
+
$implicit: tab.value,
|
|
105
|
+
tab,
|
|
106
|
+
index,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TabbedContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
110
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TabbedContentComponent, isStandalone: true, selector: "val-tabbed-content", inputs: { props: "props" }, outputs: { tabChange: "tabChange" }, ngImport: i0, template: `
|
|
111
|
+
<div
|
|
112
|
+
class="tabbed-content"
|
|
113
|
+
[class]="props.cssClass"
|
|
114
|
+
[style.--animation-duration]="animationDuration()"
|
|
115
|
+
>
|
|
116
|
+
<!-- Segment Control Navigation -->
|
|
117
|
+
<val-segment-control
|
|
118
|
+
[props]="segmentControlProps()"
|
|
119
|
+
(segmentChange)="onSegmentChange($event)"
|
|
120
|
+
></val-segment-control>
|
|
121
|
+
|
|
122
|
+
<!-- Tab Content Panel -->
|
|
123
|
+
<div
|
|
124
|
+
class="tabbed-content__panel"
|
|
125
|
+
[class.tabbed-content__panel--animated]="props.animated !== false"
|
|
126
|
+
[class.tabbed-content__panel--transitioning]="isTransitioning()"
|
|
127
|
+
>
|
|
128
|
+
@if (activeTab(); as tab) {
|
|
129
|
+
<ng-container
|
|
130
|
+
*ngTemplateOutlet="tab.template; context: getTemplateContext(tab)"
|
|
131
|
+
></ng-container>
|
|
132
|
+
}
|
|
133
|
+
</div>
|
|
134
|
+
</div>
|
|
135
|
+
`, isInline: true, styles: [".tabbed-content{display:flex;flex-direction:column;width:100%}.tabbed-content val-segment-control{margin-bottom:1rem}.tabbed-content val-segment-control ion-segment{--background: var(--ion-color-light);border-radius:12px;padding:4px}.tabbed-content__panel{width:100%;min-height:100px}.tabbed-content__panel--animated{animation:fadeIn var(--animation-duration, .3s) ease-out}.tabbed-content__panel--transitioning{opacity:0;animation:fadeOut calc(var(--animation-duration, .3s) / 2) ease-out forwards}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeOut{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-10px)}}:host-context(.dark) .tabbed-content val-segment-control ion-segment,:host-context([data-theme=dark]) .tabbed-content val-segment-control ion-segment{--background: var(--ion-color-dark-tint)}@media (max-width: 576px){.tabbed-content val-segment-control ion-segment{padding:2px}.tabbed-content val-segment-control ion-segment-button{min-width:auto;padding:8px 12px}.tabbed-content val-segment-control ion-segment-button ion-label{font-size:.75rem}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SegmentControlComponent, selector: "val-segment-control", inputs: ["props"], outputs: ["segmentChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
136
|
+
}
|
|
137
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TabbedContentComponent, decorators: [{
|
|
138
|
+
type: Component,
|
|
139
|
+
args: [{ selector: 'val-tabbed-content', standalone: true, imports: [CommonModule, SegmentControlComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
140
|
+
<div
|
|
141
|
+
class="tabbed-content"
|
|
142
|
+
[class]="props.cssClass"
|
|
143
|
+
[style.--animation-duration]="animationDuration()"
|
|
144
|
+
>
|
|
145
|
+
<!-- Segment Control Navigation -->
|
|
146
|
+
<val-segment-control
|
|
147
|
+
[props]="segmentControlProps()"
|
|
148
|
+
(segmentChange)="onSegmentChange($event)"
|
|
149
|
+
></val-segment-control>
|
|
150
|
+
|
|
151
|
+
<!-- Tab Content Panel -->
|
|
152
|
+
<div
|
|
153
|
+
class="tabbed-content__panel"
|
|
154
|
+
[class.tabbed-content__panel--animated]="props.animated !== false"
|
|
155
|
+
[class.tabbed-content__panel--transitioning]="isTransitioning()"
|
|
156
|
+
>
|
|
157
|
+
@if (activeTab(); as tab) {
|
|
158
|
+
<ng-container
|
|
159
|
+
*ngTemplateOutlet="tab.template; context: getTemplateContext(tab)"
|
|
160
|
+
></ng-container>
|
|
161
|
+
}
|
|
162
|
+
</div>
|
|
163
|
+
</div>
|
|
164
|
+
`, styles: [".tabbed-content{display:flex;flex-direction:column;width:100%}.tabbed-content val-segment-control{margin-bottom:1rem}.tabbed-content val-segment-control ion-segment{--background: var(--ion-color-light);border-radius:12px;padding:4px}.tabbed-content__panel{width:100%;min-height:100px}.tabbed-content__panel--animated{animation:fadeIn var(--animation-duration, .3s) ease-out}.tabbed-content__panel--transitioning{opacity:0;animation:fadeOut calc(var(--animation-duration, .3s) / 2) ease-out forwards}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeOut{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-10px)}}:host-context(.dark) .tabbed-content val-segment-control ion-segment,:host-context([data-theme=dark]) .tabbed-content val-segment-control ion-segment{--background: var(--ion-color-dark-tint)}@media (max-width: 576px){.tabbed-content val-segment-control ion-segment{padding:2px}.tabbed-content val-segment-control ion-segment-button{min-width:auto;padding:8px 12px}.tabbed-content val-segment-control ion-segment-button ion-label{font-size:.75rem}}\n"] }]
|
|
165
|
+
}], propDecorators: { props: [{
|
|
166
|
+
type: Input
|
|
167
|
+
}], tabChange: [{
|
|
168
|
+
type: Output
|
|
169
|
+
}] } });
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiYmVkLWNvbnRlbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy90YWJiZWQtY29udGVudC90YWJiZWQtY29udGVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUNSLHVCQUF1QixHQUV4QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkRBQTJELENBQUM7OztBQUlwRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2Qkc7QUFrQ0gsTUFBTSxPQUFPLHNCQUFzQjtJQWpDbkM7UUF1Q0U7O1dBRUc7UUFDTyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVqRCxtQ0FBbUM7UUFDM0Isa0JBQWEsR0FBRyxNQUFNLENBQVMsRUFBRSxDQUFDLENBQUM7UUFFM0MsMENBQTBDO1FBQzFDLG9CQUFlLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBRXpDLHlDQUF5QztRQUN6QyxzQkFBaUIsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFFL0UsOERBQThEO1FBQzlELHdCQUFtQixHQUFHLFFBQVEsQ0FBeUIsR0FBRyxFQUFFO1lBQzFELE1BQU0sT0FBTyxHQUFvQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUMzRCxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUs7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WUFBWSxzTUFBRSx1QkFBdUI7OzRGQThCcEMsc0JBQXNCO2tCQWpDbEMsU0FBUzsrQkFDRSxvQkFBb0IsY0FDbEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLHVCQUF1QixDQUFDLG1CQUMvQix1QkFBdUIsQ0FBQyxNQUFNLFlBQ3JDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJUOzhCQU9RLEtBQUs7c0JBQWIsS0FBSztnQkFLSSxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIHNpZ25hbCxcbiAgY29tcHV0ZWQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFNlZ21lbnRDb250cm9sQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3NlZ21lbnQtY29udHJvbC9zZWdtZW50LWNvbnRyb2wuY29tcG9uZW50JztcbmltcG9ydCB7IFNlZ21lbnRDb250cm9sTWV0YWRhdGEsIFNlZ21lbnRPcHRpb24gfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvc2VnbWVudC1jb250cm9sL3R5cGVzJztcbmltcG9ydCB7IFRhYmJlZENvbnRlbnRNZXRhZGF0YSwgVGFiYmVkQ29udGVudFRhYiwgVGFiYmVkQ29udGVudENvbnRleHQgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiB2YWwtdGFiYmVkLWNvbnRlbnRcbiAqXG4gKiBBIGNvbnRhaW5lciBjb21wb25lbnQgdGhhdCBjb21iaW5lcyBzZWdtZW50IG5hdmlnYXRpb24gd2l0aCBkeW5hbWljIGNvbnRlbnQgcGFuZWxzLlxuICogVXNlcyBzZWdtZW50LWNvbnRyb2wgaW50ZXJuYWxseSBmb3IgdGFiIG5hdmlnYXRpb24gYW5kIHJlbmRlcnMgdGhlIGFzc29jaWF0ZWRcbiAqIHRlbXBsYXRlIGZvciB0aGUgYWN0aXZlIHRhYi5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZSB3aXRoIHRlbXBsYXRlc1xuICogYGBgaHRtbFxuICogPG5nLXRlbXBsYXRlICNjYXRhbG9nVGVtcGxhdGU+XG4gKiAgIDxkaXY+Q2F0YWxvZyBDb250ZW50PC9kaXY+XG4gKiA8L25nLXRlbXBsYXRlPlxuICogPG5nLXRlbXBsYXRlICNzZXR0aW5nc1RlbXBsYXRlPlxuICogICA8ZGl2PlNldHRpbmdzIENvbnRlbnQ8L2Rpdj5cbiAqIDwvbmctdGVtcGxhdGU+XG4gKlxuICogPHZhbC10YWJiZWQtY29udGVudCBbcHJvcHNdPVwie1xuICogICB0YWJzOiBbXG4gKiAgICAgeyB2YWx1ZTogJ2NhdGFsb2cnLCBsYWJlbDogJ0NhdGFsb2cnLCBpY29uOiAnbGF5ZXJzLW91dGxpbmUnLCB0ZW1wbGF0ZTogY2F0YWxvZ1RlbXBsYXRlIH0sXG4gKiAgICAgeyB2YWx1ZTogJ3NldHRpbmdzJywgbGFiZWw6ICdTZXR0aW5ncycsIGljb246ICdzZXR0aW5ncy1vdXRsaW5lJywgdGVtcGxhdGU6IHNldHRpbmdzVGVtcGxhdGUgfVxuICogICBdLFxuICogICBzZWxlY3RlZFRhYjogJ2NhdGFsb2cnLFxuICogICBzY3JvbGxhYmxlOiB0cnVlLFxuICogICBhbmltYXRlZDogdHJ1ZVxuICogfVwiICh0YWJDaGFuZ2UpPVwib25UYWJDaGFuZ2UoJGV2ZW50KVwiPjwvdmFsLXRhYmJlZC1jb250ZW50PlxuICogYGBgXG4gKlxuICogQGlucHV0IHByb3BzOiBUYWJiZWRDb250ZW50TWV0YWRhdGEgLSBDb25maWd1cmF0aW9uIGZvciB0aGUgdGFiYmVkIGNvbnRlbnRcbiAqIEBvdXRwdXQgdGFiQ2hhbmdlOiBzdHJpbmcgLSBFbWl0cyB0aGUgc2VsZWN0ZWQgdGFiIHZhbHVlIHdoZW4gY2hhbmdlZFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtdGFiYmVkLWNvbnRlbnQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBTZWdtZW50Q29udHJvbENvbXBvbmVudF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwidGFiYmVkLWNvbnRlbnRcIlxuICAgICAgW2NsYXNzXT1cInByb3BzLmNzc0NsYXNzXCJcbiAgICAgIFtzdHlsZS4tLWFuaW1hdGlvbi1kdXJhdGlvbl09XCJhbmltYXRpb25EdXJhdGlvbigpXCJcbiAgICA+XG4gICAgICA8IS0tIFNlZ21lbnQgQ29udHJvbCBOYXZpZ2F0aW9uIC0tPlxuICAgICAgPHZhbC1zZWdtZW50LWNvbnRyb2xcbiAgICAgICAgW3Byb3BzXT1cInNlZ21lbnRDb250cm9sUHJvcHMoKVwiXG4gICAgICAgIChzZWdtZW50Q2hhbmdlKT1cIm9uU2VnbWVudENoYW5nZSgkZXZlbnQpXCJcbiAgICAgID48L3ZhbC1zZWdtZW50LWNvbnRyb2w+XG5cbiAgICAgIDwhLS0gVGFiIENvbnRlbnQgUGFuZWwgLS0+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwidGFiYmVkLWNvbnRlbnRfX3BhbmVsXCJcbiAgICAgICAgW2NsYXNzLnRhYmJlZC1jb250ZW50X19wYW5lbC0tYW5pbWF0ZWRdPVwicHJvcHMuYW5pbWF0ZWQgIT09IGZhbHNlXCJcbiAgICAgICAgW2NsYXNzLnRhYmJlZC1jb250ZW50X19wYW5lbC0tdHJhbnNpdGlvbmluZ109XCJpc1RyYW5zaXRpb25pbmcoKVwiXG4gICAgICA+XG4gICAgICAgIEBpZiAoYWN0aXZlVGFiKCk7IGFzIHRhYikge1xuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFiLnRlbXBsYXRlOyBjb250ZXh0OiBnZXRUZW1wbGF0ZUNvbnRleHQodGFiKVwiXG4gICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vdGFiYmVkLWNvbnRlbnQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgVGFiYmVkQ29udGVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIG9iamVjdCBmb3IgdGhlIHRhYmJlZCBjb250ZW50LlxuICAgKi9cbiAgQElucHV0KCkgcHJvcHMhOiBUYWJiZWRDb250ZW50TWV0YWRhdGE7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIGFjdGl2ZSB0YWIgY2hhbmdlcy5cbiAgICovXG4gIEBPdXRwdXQoKSB0YWJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAvKiogQ3VycmVudGx5IHNlbGVjdGVkIHRhYiB2YWx1ZSAqL1xuICBwcml2YXRlIHNlbGVjdGVkVmFsdWUgPSBzaWduYWw8c3RyaW5nPignJyk7XG5cbiAgLyoqIFdoZXRoZXIgYSB0cmFuc2l0aW9uIGlzIGluIHByb2dyZXNzICovXG4gIGlzVHJhbnNpdGlvbmluZyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgLyoqIENvbXB1dGVkIGFuaW1hdGlvbiBkdXJhdGlvbiBzdHJpbmcgKi9cbiAgYW5pbWF0aW9uRHVyYXRpb24gPSBjb21wdXRlZCgoKSA9PiBgJHt0aGlzLnByb3BzLmFuaW1hdGlvbkR1cmF0aW9uIHx8IDMwMH1tc2ApO1xuXG4gIC8qKiBDb21wdXRlZCBzZWdtZW50IGNvbnRyb2wgcHJvcHMgZGVyaXZlZCBmcm9tIHRhYnMgY29uZmlnICovXG4gIHNlZ21lbnRDb250cm9sUHJvcHMgPSBjb21wdXRlZDxTZWdtZW50Q29udHJvbE1ldGFkYXRhPigoKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9uczogU2VnbWVudE9wdGlvbltdID0gdGhpcy5wcm9wcy50YWJzLm1hcCh0YWIgPT4gKHtcbiAgICAgIHZhbHVlOiB0YWIudmFsdWUsXG4gICAgICBsYWJlbDogdGFiLmxhYmVsLFxuICAgICAgaWNvbjogdGFiLmljb24sXG4gICAgICBkaXNhYmxlZDogdGFiLmRpc2FibGVkLFxuICAgICAgbGF5b3V0OiB0YWIubGF5b3V0IHx8ICdpY29uLXRvcCcsXG4gICAgfSkpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG9wdGlvbnMsXG4gICAgICB2YWx1ZTogdGhpcy5zZWxlY3RlZFZhbHVlKCksXG4gICAgICBjb2xvcjogdGhpcy5wcm9wcy5jb2xvciB8fCAncHJpbWFyeScsXG4gICAgICBzY3JvbGxhYmxlOiB0aGlzLnByb3BzLnNjcm9sbGFibGUgPz8gZmFsc2UsXG4gICAgICBzd2lwZUdlc3R1cmU6IHRoaXMucHJvcHMuc3dpcGVHZXN0dXJlID8/IHRydWUsXG4gICAgICBtb2RlOiB0aGlzLnByb3BzLm1vZGUsXG4gICAgfTtcbiAgfSk7XG5cbiAgLyoqIENvbXB1dGVkIGFjdGl2ZSB0YWIgb2JqZWN0ICovXG4gIGFjdGl2ZVRhYiA9IGNvbXB1dGVkPFRhYmJlZENvbnRlbnRUYWIgfCB1bmRlZmluZWQ+KCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy50YWJzLmZpbmQodGFiID0+IHRhYi52YWx1ZSA9PT0gdGhpcy5zZWxlY3RlZFZhbHVlKCkpO1xuICB9KTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBTZXQgaW5pdGlhbCBzZWxlY3RlZCB0YWJcbiAgICBjb25zdCBpbml0aWFsVmFsdWUgPSB0aGlzLnByb3BzLnNlbGVjdGVkVGFiIHx8IHRoaXMucHJvcHMudGFic1swXT8udmFsdWUgfHwgJyc7XG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlLnNldChpbml0aWFsVmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgc2VnbWVudCBjaGFuZ2UgZXZlbnRzLlxuICAgKi9cbiAgb25TZWdtZW50Q2hhbmdlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUgPT09IHRoaXMuc2VsZWN0ZWRWYWx1ZSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gVHJpZ2dlciB0cmFuc2l0aW9uIGFuaW1hdGlvblxuICAgIGlmICh0aGlzLnByb3BzLmFuaW1hdGVkICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5pc1RyYW5zaXRpb25pbmcuc2V0KHRydWUpO1xuXG4gICAgICAvLyBSZXNldCB0cmFuc2l0aW9uIHN0YXRlIGFmdGVyIGFuaW1hdGlvbiBjb21wbGV0ZXNcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUuc2V0KHZhbHVlKTtcbiAgICAgICAgdGhpcy5pc1RyYW5zaXRpb25pbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy50YWJDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgICB9LCAodGhpcy5wcm9wcy5hbmltYXRpb25EdXJhdGlvbiB8fCAzMDApIC8gMik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZS5zZXQodmFsdWUpO1xuICAgICAgdGhpcy50YWJDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIGNvbnRleHQgb2JqZWN0IGZvciB0aGUgdGVtcGxhdGUgb3V0bGV0LlxuICAgKi9cbiAgZ2V0VGVtcGxhdGVDb250ZXh0KHRhYjogVGFiYmVkQ29udGVudFRhYik6IFRhYmJlZENvbnRlbnRDb250ZXh0IHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMucHJvcHMudGFicy5maW5kSW5kZXgodCA9PiB0LnZhbHVlID09PSB0YWIudmFsdWUpO1xuICAgIHJldHVybiB7XG4gICAgICAkaW1wbGljaXQ6IHRhYi52YWx1ZSxcbiAgICAgIHRhYixcbiAgICAgIGluZGV4LFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3RhYmJlZC1jb250ZW50L3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29sb3IgfSBmcm9tICdAaW9uaWMvY29yZSc7XG5cbi8qKlxuICogQ29udGV4dCBwYXNzZWQgdG8gZWFjaCB0YWIncyB0ZW1wbGF0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWJiZWRDb250ZW50Q29udGV4dCB7XG4gIC8qKiBUaGUgdmFsdWUgb2YgdGhlIGFjdGl2ZSB0YWIgKi9cbiAgJGltcGxpY2l0OiBzdHJpbmc7XG4gIC8qKiBUaGUgZnVsbCB0YWIgY29uZmlndXJhdGlvbiAqL1xuICB0YWI6IFRhYmJlZENvbnRlbnRUYWI7XG4gIC8qKiBJbmRleCBvZiB0aGUgdGFiICovXG4gIGluZGV4OiBudW1iZXI7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgYSBzaW5nbGUgdGFiLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhYmJlZENvbnRlbnRUYWIge1xuICAvKiogVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSB0YWIgKi9cbiAgdmFsdWU6IHN0cmluZztcbiAgLyoqIERpc3BsYXkgbGFiZWwgZm9yIHRoZSB0YWIgYnV0dG9uICovXG4gIGxhYmVsPzogc3RyaW5nO1xuICAvKiogSWNvbiBuYW1lIChJb25pY29ucykgKi9cbiAgaWNvbj86IHN0cmluZztcbiAgLyoqIFdoZXRoZXIgdGhlIHRhYiBpcyBkaXNhYmxlZCAqL1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIC8qKiBMYXlvdXQgZGlyZWN0aW9uIGZvciBpY29uIGFuZCBsYWJlbCAqL1xuICBsYXlvdXQ/OiAnaWNvbi1zdGFydCcgfCAnaWNvbi1lbmQnIHwgJ2ljb24tdG9wJyB8ICdpY29uLWJvdHRvbSc7XG4gIC8qKiBUZW1wbGF0ZSB0byByZW5kZXIgd2hlbiB0aGlzIHRhYiBpcyBhY3RpdmUgKi9cbiAgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPFRhYmJlZENvbnRlbnRDb250ZXh0Pjtcbn1cblxuLyoqXG4gKiBNZXRhZGF0YSBmb3IgdGhlIHRhYmJlZC1jb250ZW50IGNvbXBvbmVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWJiZWRDb250ZW50TWV0YWRhdGEge1xuICAvKiogQXJyYXkgb2YgdGFiIGNvbmZpZ3VyYXRpb25zICovXG4gIHRhYnM6IFRhYmJlZENvbnRlbnRUYWJbXTtcbiAgLyoqIEluaXRpYWxseSBzZWxlY3RlZCB0YWIgdmFsdWUgKGRlZmF1bHRzIHRvIGZpcnN0IHRhYikgKi9cbiAgc2VsZWN0ZWRUYWI/OiBzdHJpbmc7XG4gIC8qKiBDb2xvciB0aGVtZSBmb3IgdGhlIHNlZ21lbnQgY29udHJvbCAqL1xuICBjb2xvcj86IENvbG9yO1xuICAvKiogQWxsb3cgaG9yaXpvbnRhbCBzY3JvbGxpbmcgZm9yIG1hbnkgdGFicyAqL1xuICBzY3JvbGxhYmxlPzogYm9vbGVhbjtcbiAgLyoqIEVuYWJsZSBzd2lwZSBnZXN0dXJlIHRvIGNoYW5nZSB0YWJzIChpT1Mgb25seSkgKi9cbiAgc3dpcGVHZXN0dXJlPzogYm9vbGVhbjtcbiAgLyoqIFZpc3VhbCBtb2RlIHN0eWxlICovXG4gIG1vZGU/OiAnaW9zJyB8ICdtZCc7XG4gIC8qKiBFbmFibGUgZmFkZSBhbmltYXRpb24gb24gdGFiIGNoYW5nZSAqL1xuICBhbmltYXRlZD86IGJvb2xlYW47XG4gIC8qKiBBbmltYXRpb24gZHVyYXRpb24gaW4gbWlsbGlzZWNvbmRzICovXG4gIGFuaW1hdGlvbkR1cmF0aW9uPzogbnVtYmVyO1xuICAvKiogQWRkaXRpb25hbCBDU1MgY2xhc3MgZm9yIHRoZSBjb250YWluZXIgKi9cbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XG59XG4iXX0=
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { Component, EventEmitter,
|
|
2
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
3
3
|
import { IonContent } from '@ionic/angular/standalone';
|
|
4
4
|
import { HeaderComponent } from '../../organisms/header/header.component';
|
|
5
|
-
import { ThemeService } from '../../../services/theme.service';
|
|
6
|
-
import { NavigationService } from '../../../services/navigation.service';
|
|
7
5
|
import { resolveColor } from '../../../shared/utils/styles';
|
|
8
6
|
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "
|
|
7
|
+
import * as i1 from "../../../services/theme.service";
|
|
8
|
+
import * as i2 from "../../../services/navigation.service";
|
|
9
|
+
import * as i3 from "@angular/common";
|
|
10
10
|
/**
|
|
11
11
|
* val-page-content
|
|
12
12
|
*
|
|
@@ -34,9 +34,9 @@ import * as i1 from "@angular/common";
|
|
|
34
34
|
* @output onHeaderClick - Emits when a header action is clicked
|
|
35
35
|
*/
|
|
36
36
|
export class PageContentComponent {
|
|
37
|
-
constructor() {
|
|
38
|
-
this.theme =
|
|
39
|
-
this.nav =
|
|
37
|
+
constructor(theme, nav) {
|
|
38
|
+
this.theme = theme;
|
|
39
|
+
this.nav = nav;
|
|
40
40
|
/**
|
|
41
41
|
* Page content configuration.
|
|
42
42
|
*/
|
|
@@ -108,7 +108,7 @@ export class PageContentComponent {
|
|
|
108
108
|
this.nav.navigateByUrl(this.props.homeRoute);
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PageContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
111
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PageContentComponent, deps: [{ token: i1.ThemeService }, { token: i2.NavigationService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
112
112
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PageContentComponent, isStandalone: true, selector: "val-page-content", inputs: { props: "props" }, outputs: { onHeaderClick: "onHeaderClick" }, ngImport: i0, template: `
|
|
113
113
|
<div class="ion-page">
|
|
114
114
|
<val-header
|
|
@@ -128,7 +128,7 @@ export class PageContentComponent {
|
|
|
128
128
|
</ion-content>
|
|
129
129
|
<ng-content select="[extra-footer]"></ng-content>
|
|
130
130
|
</div>
|
|
131
|
-
`, isInline: true, styles: ["main{min-height:60vh}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type:
|
|
131
|
+
`, isInline: true, styles: ["main{min-height:60vh}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: HeaderComponent, selector: "val-header", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }] }); }
|
|
132
132
|
}
|
|
133
133
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PageContentComponent, decorators: [{
|
|
134
134
|
type: Component,
|
|
@@ -152,9 +152,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
152
152
|
<ng-content select="[extra-footer]"></ng-content>
|
|
153
153
|
</div>
|
|
154
154
|
`, styles: ["main{min-height:60vh}\n"] }]
|
|
155
|
-
}], propDecorators: { props: [{
|
|
155
|
+
}], ctorParameters: () => [{ type: i1.ThemeService }, { type: i2.NavigationService }], propDecorators: { props: [{
|
|
156
156
|
type: Input
|
|
157
157
|
}], onHeaderClick: [{
|
|
158
158
|
type: Output
|
|
159
159
|
}] } });
|
|
160
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1jb250ZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvcGFnZS1jb250ZW50L3BhZ2UtY29udGVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUkxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7O0FBRTVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJHO0FBK0JILE1BQU0sT0FBTyxvQkFBb0I7SUFNL0IsWUFDVSxLQUFtQixFQUNuQixHQUFzQjtRQUR0QixVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ25CLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBUGhDOztXQUVHO1FBQ00sVUFBSyxHQUF3QixFQUFFLENBQUM7UUFPekM7O1dBRUc7UUFDTyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFckQ7O1dBRUc7UUFDYyxrQkFBYSxHQUFHO1lBQy9CLFFBQVEsRUFBRSxJQUFJO1lBQ2QsV0FBVyxFQUFFLElBQUk7WUFDakIsT0FBTyxFQUFFO2dCQUNQLFFBQVEsRUFBRSxLQUFLO2dCQUNmLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixTQUFTLEVBQUUsTUFBZTtnQkFDMUIsUUFBUSxFQUFFLElBQUk7Z0JBQ2QsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsT0FBTyxFQUFFO29CQUNQO3dCQUNFLEtBQUssRUFBRSxhQUFhO3dCQUNwQixXQUFXLEVBQUUsRUFBRTt3QkFDZixRQUFRLEVBQUUsTUFBZTt3QkFDekIsSUFBSSxFQUFFLE9BQWdCO3dCQUN0QixLQUFLLEVBQUU7NEJBQ0wsS0FBSyxFQUFFLEVBQUU7NEJBQ1QsR0FBRyxFQUFFLGFBQWE7NEJBQ2xCLEdBQUcsRUFBRSxhQUFhOzRCQUNsQixJQUFJLEVBQUUsS0FBYzs0QkFDcEIsTUFBTSxFQUFFLEtBQUs7NEJBQ2IsUUFBUSxFQUFFLEtBQUs7NEJBQ2YsSUFBSSxFQUFFLE9BQWdCOzRCQUN0QixPQUFPLEVBQUUsS0FBSzs0QkFDZCxJQUFJLEVBQUUsSUFBSTt5QkFDWDtxQkFDRjtpQkFDRjthQUNGO1NBQ0YsQ0FBQztJQXZDQyxDQUFDO0lBeUNKOztPQUVHO0lBQ0gsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQ2pELENBQUM7SUFFRDs7T0FFRztJQUNILGFBQWE7UUFDWCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdEIsT0FBTyw2QkFBNkIsQ0FBQztRQUN2QyxDQUFDO1FBRUQsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7UUFDakMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ1IsT0FBTyw2QkFBNkIsQ0FBQztRQUN2QyxDQUFDO1FBRUQsT0FBTyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsb0JBQW9CLENBQUMsS0FBYTtRQUNoQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUvQiw0REFBNEQ7UUFDNUQsSUFBSSxLQUFLLEtBQUssYUFBYSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDcEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMvQyxDQUFDO0lBQ0gsQ0FBQzsrR0FuRlUsb0JBQW9CO21HQUFwQixvQkFBb0IscUpBMUJyQjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CVCxnR0FwQlMsWUFBWSxvSEFBRSxlQUFlLGdHQUFFLFVBQVU7OzRGQTJCeEMsb0JBQW9CO2tCQTlCaEMsU0FBUzsrQkFDRSxrQkFBa0IsY0FDaEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxVQUFVLENBQUMsWUFDMUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQlQ7aUhBV1EsS0FBSztzQkFBYixLQUFLO2dCQVVJLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElvbkNvbnRlbnQgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IEhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaGVtZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90aGVtZS5zZXJ2aWNlJztcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFBhZ2VDb250ZW50TWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IHJlc29sdmVDb2xvciB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC91dGlscy9zdHlsZXMnO1xuXG4vKipcbiAqIHZhbC1wYWdlLWNvbnRlbnRcbiAqXG4gKiBBIHBhZ2UgY29udGVudCB0ZW1wbGF0ZSB3aXRoIGNvcnBvcmF0ZSBoZWFkZXIsIG1haW4gY29udGVudCBhcmVhLFxuICogYW5kIGZvb3RlciBzbG90cy4gU3VwcG9ydHMgZGFyayBtb2RlIGFuZCBjdXN0b21pemFibGUgYmFja2dyb3VuZHMuXG4gKlxuICogQGV4YW1wbGVcbiAqIDx2YWwtcGFnZS1jb250ZW50XG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgaGVhZGVyOiB7IC4uLiB9LFxuICogICAgIGJhY2tncm91bmQ6ICctLW1haW4tYmFja2dyb3VuZCcsXG4gKiAgICAgaG9tZVJvdXRlOiAnLydcbiAqICAgfVwiXG4gKiAgIChvbkhlYWRlckNsaWNrKT1cImhhbmRsZUhlYWRlckFjdGlvbigkZXZlbnQpXCJcbiAqID5cbiAqICAgPGRpdiBjb250ZW50PlxuICogICAgIDwhLS0gTWFpbiBwYWdlIGNvbnRlbnQgLS0+XG4gKiAgIDwvZGl2PlxuICogICA8ZGl2IGZvb3Rlcj5cbiAqICAgICA8dmFsLWNvbXBhbnktZm9vdGVyIFtwcm9wc109XCJmb290ZXJQcm9wc1wiPjwvdmFsLWNvbXBhbnktZm9vdGVyPlxuICogICA8L2Rpdj5cbiAqIDwvdmFsLXBhZ2UtY29udGVudD5cbiAqXG4gKiBAaW5wdXQgcHJvcHMgLSBQYWdlIGNvbnRlbnQgY29uZmlndXJhdGlvblxuICogQG91dHB1dCBvbkhlYWRlckNsaWNrIC0gRW1pdHMgd2hlbiBhIGhlYWRlciBhY3Rpb24gaXMgY2xpY2tlZFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtcGFnZS1jb250ZW50JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSGVhZGVyQ29tcG9uZW50LCBJb25Db250ZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiaW9uLXBhZ2VcIj5cbiAgICAgIDx2YWwtaGVhZGVyXG4gICAgICAgIFtwcm9wc109XCJoZWFkZXJQcm9wc1wiXG4gICAgICAgIChvbkNsaWNrKT1cIm9uSGVhZGVyQ2xpY2tIYW5kbGVyKCRldmVudClcIlxuICAgICAgLz5cbiAgICAgIDxpb24tY29udGVudFxuICAgICAgICBbZnVsbHNjcmVlbl09XCJ0cnVlXCJcbiAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICctLWJhY2tncm91bmQnOiBnZXRCYWNrZ3JvdW5kKClcbiAgICAgICAgfVwiXG4gICAgICA+XG4gICAgICAgIDxtYWluPlxuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltjb250ZW50XVwiPjwvbmctY29udGVudD5cbiAgICAgICAgPC9tYWluPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZm9vdGVyXVwiPjwvbmctY29udGVudD5cbiAgICAgIDwvaW9uLWNvbnRlbnQ+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZXh0cmEtZm9vdGVyXVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBgXG4gICAgbWFpbiB7XG4gICAgICBtaW4taGVpZ2h0OiA2MHZoO1xuICAgIH1cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZUNvbnRlbnRDb21wb25lbnQge1xuICAvKipcbiAgICogUGFnZSBjb250ZW50IGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBASW5wdXQoKSBwcm9wczogUGFnZUNvbnRlbnRNZXRhZGF0YSA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdGhlbWU6IFRoZW1lU2VydmljZSxcbiAgICBwcml2YXRlIG5hdjogTmF2aWdhdGlvblNlcnZpY2VcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIGEgaGVhZGVyIGFjdGlvbiBpcyBjbGlja2VkLlxuICAgKi9cbiAgQE91dHB1dCgpIG9uSGVhZGVyQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAvKipcbiAgICogRGVmYXVsdCBoZWFkZXIgY29uZmlndXJhdGlvbiAoY2FjaGVkIHRvIGF2b2lkIGluZmluaXRlIGNoYW5nZSBkZXRlY3Rpb24pLlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0SGVhZGVyID0ge1xuICAgIGJvcmRlcmVkOiB0cnVlLFxuICAgIHRyYW5zbHVjZW50OiB0cnVlLFxuICAgIHRvb2xiYXI6IHtcbiAgICAgIHdpdGhCYWNrOiBmYWxzZSxcbiAgICAgIHdpdGhBY3Rpb25zOiB0cnVlLFxuICAgICAgdGV4dENvbG9yOiAnZGFyaycgYXMgY29uc3QsXG4gICAgICB3aXRoTWVudTogdHJ1ZSxcbiAgICAgIHRpdGxlOiAnJyxcbiAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHRva2VuOiAnaGVhZGVyLWxvZ28nLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnJyxcbiAgICAgICAgICBwb3NpdGlvbjogJ2xlZnQnIGFzIGNvbnN0LFxuICAgICAgICAgIHR5cGU6ICdJTUFHRScgYXMgY29uc3QsXG4gICAgICAgICAgaW1hZ2U6IHtcbiAgICAgICAgICAgIHdpZHRoOiAxMCxcbiAgICAgICAgICAgIHNyYzogJy0tbWFpbi1sb2dvJyxcbiAgICAgICAgICAgIGFsdDogJ2hlYWRlciBsb2dvJyxcbiAgICAgICAgICAgIG1vZGU6ICdib3gnIGFzIGNvbnN0LFxuICAgICAgICAgICAgc2hhZGVkOiBmYWxzZSxcbiAgICAgICAgICAgIGJvcmRlcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIHNpemU6ICdzbWFsbCcgYXMgY29uc3QsXG4gICAgICAgICAgICBsaW1pdGVkOiBmYWxzZSxcbiAgICAgICAgICAgIGZsZXg6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgfTtcblxuICAvKipcbiAgICogR2V0cyBoZWFkZXIgcHJvcHMsIHVzaW5nIGNhY2hlZCBkZWZhdWx0IGlmIG5vdCBwcm92aWRlZC5cbiAgICovXG4gIGdldCBoZWFkZXJQcm9wcygpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5oZWFkZXIgfHwgdGhpcy5kZWZhdWx0SGVhZGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGJhY2tncm91bmQgY29sb3IgYmFzZWQgb24gdGhlbWUuXG4gICAqL1xuICBnZXRCYWNrZ3JvdW5kKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMudGhlbWUuSXNEYXJrKSB7XG4gICAgICByZXR1cm4gJ3ZhcigtLWlvbi1iYWNrZ3JvdW5kLWNvbG9yKSc7XG4gICAgfVxuXG4gICAgY29uc3QgYmcgPSB0aGlzLnByb3BzLmJhY2tncm91bmQ7XG4gICAgaWYgKCFiZykge1xuICAgICAgcmV0dXJuICd2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvciknO1xuICAgIH1cblxuICAgIHJldHVybiByZXNvbHZlQ29sb3IoYmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgaGVhZGVyIGFjdGlvbiBjbGlja3MuXG4gICAqL1xuICBvbkhlYWRlckNsaWNrSGFuZGxlcih0b2tlbjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5vbkhlYWRlckNsaWNrLmVtaXQodG9rZW4pO1xuXG4gICAgLy8gTmF2aWdhdGUgdG8gaG9tZSByb3V0ZSBpZiBjb25maWd1cmVkIGFuZCBsb2dvIHdhcyBjbGlja2VkXG4gICAgaWYgKHRva2VuID09PSAnaGVhZGVyLWxvZ28nICYmIHRoaXMucHJvcHMuaG9tZVJvdXRlKSB7XG4gICAgICB0aGlzLm5hdi5uYXZpZ2F0ZUJ5VXJsKHRoaXMucHJvcHMuaG9tZVJvdXRlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -72,7 +72,6 @@ export class PageTemplateComponent {
|
|
|
72
72
|
limit: props.descriptionLimit || 180,
|
|
73
73
|
content: props.pageDescription,
|
|
74
74
|
color: props.descriptionColor || 'dark',
|
|
75
|
-
expandText: 'more'
|
|
76
75
|
}"
|
|
77
76
|
/>
|
|
78
77
|
</div>
|
|
@@ -88,7 +87,7 @@ export class PageTemplateComponent {
|
|
|
88
87
|
<val-button
|
|
89
88
|
class="back-button"
|
|
90
89
|
[props]="{
|
|
91
|
-
text: props.backButtonText || '
|
|
90
|
+
text: props.backButtonText || 'Volver',
|
|
92
91
|
color: 'dark',
|
|
93
92
|
size: 'small',
|
|
94
93
|
type: 'button',
|
|
@@ -138,7 +137,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
138
137
|
limit: props.descriptionLimit || 180,
|
|
139
138
|
content: props.pageDescription,
|
|
140
139
|
color: props.descriptionColor || 'dark',
|
|
141
|
-
expandText: 'more'
|
|
142
140
|
}"
|
|
143
141
|
/>
|
|
144
142
|
</div>
|
|
@@ -154,7 +152,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
154
152
|
<val-button
|
|
155
153
|
class="back-button"
|
|
156
154
|
[props]="{
|
|
157
|
-
text: props.backButtonText || '
|
|
155
|
+
text: props.backButtonText || 'Volver',
|
|
158
156
|
color: 'dark',
|
|
159
157
|
size: 'small',
|
|
160
158
|
type: 'button',
|
|
@@ -178,4 +176,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
178
176
|
}], onBack: [{
|
|
179
177
|
type: Output
|
|
180
178
|
}] } });
|
|
181
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
179
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS10ZW1wbGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvdGVtcGxhdGVzL3BhZ2UtdGVtcGxhdGUvcGFnZS10ZW1wbGF0ZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUNwRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7O0FBR3RFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNEJHO0FBNkZILE1BQU0sT0FBTyxxQkFBcUI7SUE1RmxDO1FBNkZVLFFBQUcsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFcEM7O1dBRUc7UUFDTSxVQUFLLEdBQXlCLEVBQUUsQ0FBQztRQUUxQzs7V0FFRztRQUNPLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0tBUzdDO0lBUEM7O09BRUc7SUFDSCxVQUFVO1FBQ1IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2xCLENBQUM7K0dBbkJVLHFCQUFxQjttR0FBckIscUJBQXFCLHdJQTlFdEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1EVCxvU0E3REMsWUFBWSwrQkFDWixTQUFTLG9HQUNULFVBQVUsbUZBQ1YsUUFBUSxpRkFDUix1QkFBdUIsbUZBQ3ZCLE9BQU8sd0VBQ1AsTUFBTSxvREFDTixNQUFNLGtUQUNOLGVBQWU7OzRGQWdGTixxQkFBcUI7a0JBNUZqQyxTQUFTOytCQUNFLG1CQUFtQixjQUNqQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixTQUFTO3dCQUNULFVBQVU7d0JBQ1YsUUFBUTt3QkFDUix1QkFBdUI7d0JBQ3ZCLE9BQU87d0JBQ1AsTUFBTTt3QkFDTixNQUFNO3dCQUNOLGVBQWU7cUJBQ2hCLFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1EVDs4QkFpQ1EsS0FBSztzQkFBYixLQUFLO2dCQUtJLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgSW9uQ29sLCBJb25HcmlkLCBJb25IZWFkZXIsIElvblJvdywgSW9uVGl0bGUsIElvblRvb2xiYXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IEV4cGFuZGFibGVUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2V4cGFuZGFibGUtdGV4dC9leHBhbmRhYmxlLXRleHQuY29tcG9uZW50JztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IFBhZ2VUZW1wbGF0ZU1ldGFkYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogdmFsLXBhZ2UtdGVtcGxhdGVcbiAqXG4gKiBBIHBhZ2UgdGVtcGxhdGUgY29tcG9uZW50IHdpdGggdGl0bGUsIGV4cGFuZGFibGUgZGVzY3JpcHRpb24sXG4gKiBjb250ZW50IHByb2plY3Rpb24sIGFuZCBvcHRpb25hbCBiYWNrIG5hdmlnYXRpb24gYnV0dG9uLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8dmFsLXBhZ2UtdGVtcGxhdGVcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICBwYWdlVGl0bGU6ICdHZXR0aW5nIFN0YXJ0ZWQnLFxuICogICAgIHBhZ2VEZXNjcmlwdGlvbjogJ0xlYXJuIGhvdyB0byB1c2Ugb3VyIGNvbXBvbmVudHMuLi4nLFxuICogICAgIHNob3dCYWNrQnV0dG9uOiB0cnVlXG4gKiAgIH1cIlxuICogPlxuICogICA8ZGl2IGV4dHJhLWRlc2NyaXB0aW9uPlxuICogICAgIDxwPkFkZGl0aW9uYWwgaW5mbyBoZXJlPC9wPlxuICogICA8L2Rpdj5cbiAqXG4gKiAgIDwhLS0gTWFpbiBjb250ZW50IC0tPlxuICogICA8bXktY29udGVudD48L215LWNvbnRlbnQ+XG4gKlxuICogICA8ZGl2IGV4dHJhLWZvb3Rlcj5cbiAqICAgICA8cD5Gb290ZXIgY29udGVudDwvcD5cbiAqICAgPC9kaXY+XG4gKiA8L3ZhbC1wYWdlLXRlbXBsYXRlPlxuICpcbiAqIEBpbnB1dCBwcm9wcyAtIFBhZ2UgdGVtcGxhdGUgY29uZmlndXJhdGlvblxuICogQG91dHB1dCBvbkJhY2sgLSBFbWl0cyB3aGVuIGJhY2sgYnV0dG9uIGlzIGNsaWNrZWRcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXBhZ2UtdGVtcGxhdGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIElvbkhlYWRlcixcbiAgICBJb25Ub29sYmFyLFxuICAgIElvblRpdGxlLFxuICAgIEV4cGFuZGFibGVUZXh0Q29tcG9uZW50LFxuICAgIElvbkdyaWQsXG4gICAgSW9uUm93LFxuICAgIElvbkNvbCxcbiAgICBCdXR0b25Db21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgQGlmIChwcm9wcy5wYWdlVGl0bGUpIHtcbiAgICAgIDxpb24taGVhZGVyIFtjbGFzcy5pb24tbm8tYm9yZGVyXT1cInRydWVcIj5cbiAgICAgICAgPGlvbi10b29sYmFyIHN0eWxlPVwiLS1iYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcIj5cbiAgICAgICAgICA8aW9uLXRpdGxlIGNsYXNzPVwicGFnZS10aXRsZVwiIHNpemU9XCJsYXJnZVwiPnt7IHByb3BzLnBhZ2VUaXRsZSB9fTwvaW9uLXRpdGxlPlxuICAgICAgICA8L2lvbi10b29sYmFyPlxuICAgICAgPC9pb24taGVhZGVyPlxuICAgIH1cbiAgICA8aW9uLWdyaWQ+XG4gICAgICA8aW9uLXJvdyBjbGFzcz1cImlvbi1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGRlc2NyaXB0aW9uLXJvd1wiPlxuICAgICAgICA8aW9uLWNvbCBzaXplPVwiMTJcIiBzaXplLW1kPVwiMTBcIiBzaXplLWxnPVwiOFwiPlxuICAgICAgICAgIEBpZiAocHJvcHMucGFnZURlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb24tY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgIDx2YWwtZXhwYW5kYWJsZS10ZXh0XG4gICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgIGxpbWl0OiBwcm9wcy5kZXNjcmlwdGlvbkxpbWl0IHx8IDE4MCxcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHByb3BzLnBhZ2VEZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiBwcm9wcy5kZXNjcmlwdGlvbkNvbG9yIHx8ICdkYXJrJyxcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZXh0cmEtZGVzY3JpcHRpb25dXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2lvbi1jb2w+XG4gICAgICA8L2lvbi1yb3c+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZXh0cmEtZm9vdGVyXVwiPjwvbmctY29udGVudD5cbiAgICAgIEBpZiAocHJvcHMuc2hvd0JhY2tCdXR0b24pIHtcbiAgICAgICAgPGlvbi1yb3cgY2xhc3M9XCJpb24tanVzdGlmeS1jb250ZW50LWNlbnRlciBiYWNrLXJvd1wiPlxuICAgICAgICAgIDxpb24tY29sIHNpemU9XCIxMlwiIHNpemUtbWQ9XCIxMFwiIHNpemUtbGc9XCI4XCI+XG4gICAgICAgICAgICA8dmFsLWJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImJhY2stYnV0dG9uXCJcbiAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICB0ZXh0OiBwcm9wcy5iYWNrQnV0dG9uVGV4dCB8fCAnVm9sdmVyJyxcbiAgICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICAgIHNpemU6ICdzbWFsbCcsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgICAgICAgICAgc3RhdGU6ICdFTkFCTEVEJyxcbiAgICAgICAgICAgICAgICBmaWxsOiAnb3V0bGluZScsXG4gICAgICAgICAgICAgICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgICAgICAgICAgICAgaWNvbjoge1xuICAgICAgICAgICAgICAgICAgbmFtZTogJ2Fycm93LWJhY2stb3V0bGluZScsXG4gICAgICAgICAgICAgICAgICBzbG90OiAnc3RhcnQnXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlQmFjaygpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICA8L2lvbi1yb3c+XG4gICAgICB9XG4gICAgPC9pb24tZ3JpZD5cbiAgYCxcbiAgc3R5bGVzOiBgXG4gICAgLnBhZ2UtdGl0bGUge1xuICAgICAgbWFyZ2luLWxlZnQ6IC00cHg7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgICAgZm9udC1zaXplOiAyLjVyZW07XG4gICAgICBmb250LXdlaWdodDogODAwO1xuICAgIH1cblxuICAgIC5kZXNjcmlwdGlvbi1yb3cge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICB9XG5cbiAgICAuZGVzY3JpcHRpb24tY29udGFpbmVyIHtcbiAgICAgIG1hcmdpbi10b3A6IDFyZW07XG4gICAgfVxuXG4gICAgLmJhY2stcm93IHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gICAgfVxuXG4gICAgLmJhY2stYnV0dG9uIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgbWFyZ2luOiAxcmVtIDA7XG4gICAgfVxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlVGVtcGxhdGVDb21wb25lbnQge1xuICBwcml2YXRlIG5hdiA9IGluamVjdChOYXZDb250cm9sbGVyKTtcblxuICAvKipcbiAgICogUGFnZSB0ZW1wbGF0ZSBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgQElucHV0KCkgcHJvcHM6IFBhZ2VUZW1wbGF0ZU1ldGFkYXRhID0ge307XG5cbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIGJhY2sgYnV0dG9uIGlzIGNsaWNrZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgb25CYWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBIYW5kbGVzIGJhY2sgbmF2aWdhdGlvbi5cbiAgICovXG4gIGhhbmRsZUJhY2soKTogdm9pZCB7XG4gICAgdGhpcy5vbkJhY2suZW1pdCgpO1xuICAgIHRoaXMubmF2LmJhY2soKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { Injectable, signal, computed } from '@angular/core';
|
|
2
|
+
import { INITIAL_AUTH_STATE, INITIAL_MFA_STATE, } from './types';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* Servicio para manejo de estado de autenticación con Angular Signals.
|
|
6
|
+
* Proporciona estado reactivo inmutable.
|
|
7
|
+
*/
|
|
8
|
+
export class AuthStateService {
|
|
9
|
+
constructor() {
|
|
10
|
+
// Estado interno (mutable solo dentro del servicio)
|
|
11
|
+
this._state = signal(INITIAL_AUTH_STATE);
|
|
12
|
+
this._mfaPending = signal(INITIAL_MFA_STATE);
|
|
13
|
+
// =============================================
|
|
14
|
+
// Signals públicos (readonly)
|
|
15
|
+
// =============================================
|
|
16
|
+
/** Estado completo de autenticación */
|
|
17
|
+
this.state = this._state.asReadonly();
|
|
18
|
+
/** Estado de MFA pendiente */
|
|
19
|
+
this.mfaPending = this._mfaPending.asReadonly();
|
|
20
|
+
/** Usuario está autenticado */
|
|
21
|
+
this.isAuthenticated = computed(() => this._state().isAuthenticated);
|
|
22
|
+
/** Estado de carga */
|
|
23
|
+
this.isLoading = computed(() => this._state().isLoading);
|
|
24
|
+
/** Token de acceso */
|
|
25
|
+
this.accessToken = computed(() => this._state().accessToken);
|
|
26
|
+
/** Roles del usuario */
|
|
27
|
+
this.roles = computed(() => this._state().roles);
|
|
28
|
+
/** Permisos del usuario */
|
|
29
|
+
this.permissions = computed(() => this._state().permissions);
|
|
30
|
+
/** Usuario es super admin */
|
|
31
|
+
this.isSuperAdmin = computed(() => this._state().isSuperAdmin);
|
|
32
|
+
/** Error actual */
|
|
33
|
+
this.error = computed(() => this._state().error);
|
|
34
|
+
/** Información del usuario */
|
|
35
|
+
this.user = computed(() => {
|
|
36
|
+
const state = this._state();
|
|
37
|
+
if (!state.isAuthenticated || !state.userId) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
userId: state.userId,
|
|
42
|
+
email: state.email || '',
|
|
43
|
+
roles: state.roles,
|
|
44
|
+
permissions: state.permissions,
|
|
45
|
+
isSuperAdmin: state.isSuperAdmin,
|
|
46
|
+
};
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
// =============================================
|
|
50
|
+
// Métodos de actualización
|
|
51
|
+
// =============================================
|
|
52
|
+
/**
|
|
53
|
+
* Establece el estado de carga.
|
|
54
|
+
*/
|
|
55
|
+
setLoading(isLoading) {
|
|
56
|
+
this._state.update((s) => ({ ...s, isLoading }));
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Establece el estado de autenticación exitosa.
|
|
60
|
+
*/
|
|
61
|
+
setAuthenticated(data) {
|
|
62
|
+
this._state.set({
|
|
63
|
+
isAuthenticated: true,
|
|
64
|
+
isLoading: false,
|
|
65
|
+
accessToken: data.accessToken,
|
|
66
|
+
refreshToken: data.refreshToken,
|
|
67
|
+
userId: data.userId || null,
|
|
68
|
+
email: data.email || null,
|
|
69
|
+
roles: data.roles,
|
|
70
|
+
permissions: data.permissions,
|
|
71
|
+
isSuperAdmin: data.isSuperAdmin,
|
|
72
|
+
expiresAt: data.expiresAt,
|
|
73
|
+
error: null,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Actualiza solo el access token (después de refresh).
|
|
78
|
+
*/
|
|
79
|
+
updateAccessToken(accessToken, expiresIn) {
|
|
80
|
+
const expiresAt = Date.now() + expiresIn * 1000;
|
|
81
|
+
this._state.update((s) => ({
|
|
82
|
+
...s,
|
|
83
|
+
accessToken,
|
|
84
|
+
expiresAt,
|
|
85
|
+
}));
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Actualiza los permisos.
|
|
89
|
+
*/
|
|
90
|
+
updatePermissions(roles, permissions, isSuperAdmin) {
|
|
91
|
+
this._state.update((s) => ({
|
|
92
|
+
...s,
|
|
93
|
+
roles,
|
|
94
|
+
permissions,
|
|
95
|
+
isSuperAdmin,
|
|
96
|
+
}));
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Establece un error de autenticación.
|
|
100
|
+
*/
|
|
101
|
+
setError(error) {
|
|
102
|
+
this._state.update((s) => ({
|
|
103
|
+
...s,
|
|
104
|
+
error,
|
|
105
|
+
isLoading: false,
|
|
106
|
+
}));
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Limpia el error.
|
|
110
|
+
*/
|
|
111
|
+
clearError() {
|
|
112
|
+
this._state.update((s) => ({
|
|
113
|
+
...s,
|
|
114
|
+
error: null,
|
|
115
|
+
}));
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Establece estado de MFA pendiente.
|
|
119
|
+
*/
|
|
120
|
+
setMFAPending(mfaState) {
|
|
121
|
+
this._mfaPending.set(mfaState);
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Limpia el estado de MFA pendiente.
|
|
125
|
+
*/
|
|
126
|
+
clearMFAPending() {
|
|
127
|
+
this._mfaPending.set(INITIAL_MFA_STATE);
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Resetea todo el estado a valores iniciales.
|
|
131
|
+
*/
|
|
132
|
+
reset() {
|
|
133
|
+
this._state.set(INITIAL_AUTH_STATE);
|
|
134
|
+
this._mfaPending.set(INITIAL_MFA_STATE);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Restaura estado desde datos almacenados.
|
|
138
|
+
*/
|
|
139
|
+
restoreFromStorage(stored) {
|
|
140
|
+
if (stored.accessToken) {
|
|
141
|
+
this._state.set({
|
|
142
|
+
isAuthenticated: true,
|
|
143
|
+
isLoading: false,
|
|
144
|
+
accessToken: stored.accessToken,
|
|
145
|
+
refreshToken: stored.refreshToken || null,
|
|
146
|
+
userId: null, // Se extraerá del token
|
|
147
|
+
email: null, // Se extraerá del token
|
|
148
|
+
roles: stored.roles || [],
|
|
149
|
+
permissions: stored.permissions || [],
|
|
150
|
+
isSuperAdmin: stored.isSuperAdmin || false,
|
|
151
|
+
expiresAt: stored.expiresAt || null,
|
|
152
|
+
error: null,
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Actualiza el userId y email (después de parsear el token).
|
|
158
|
+
*/
|
|
159
|
+
updateUserInfo(userId, email) {
|
|
160
|
+
this._state.update((s) => ({
|
|
161
|
+
...s,
|
|
162
|
+
userId,
|
|
163
|
+
email,
|
|
164
|
+
}));
|
|
165
|
+
}
|
|
166
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AuthStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
167
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AuthStateService, providedIn: 'root' }); }
|
|
168
|
+
}
|
|
169
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AuthStateService, decorators: [{
|
|
170
|
+
type: Injectable,
|
|
171
|
+
args: [{ providedIn: 'root' }]
|
|
172
|
+
}] });
|
|
173
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1zdGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9hdXRoL2F1dGgtc3RhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUtMLGtCQUFrQixFQUNsQixpQkFBaUIsR0FFbEIsTUFBTSxTQUFTLENBQUM7O0FBRWpCOzs7R0FHRztBQUVILE1BQU0sT0FBTyxnQkFBZ0I7SUFEN0I7UUFFRSxvREFBb0Q7UUFDNUMsV0FBTSxHQUFHLE1BQU0sQ0FBWSxrQkFBa0IsQ0FBQyxDQUFDO1FBQy9DLGdCQUFXLEdBQUcsTUFBTSxDQUFrQixpQkFBaUIsQ0FBQyxDQUFDO1FBRWpFLGdEQUFnRDtRQUNoRCw4QkFBOEI7UUFDOUIsZ0RBQWdEO1FBRWhELHVDQUF1QztRQUM5QixVQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUUxQyw4QkFBOEI7UUFDckIsZUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFcEQsK0JBQStCO1FBQ3RCLG9CQUFlLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUV6RSxzQkFBc0I7UUFDYixjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU3RCxzQkFBc0I7UUFDYixnQkFBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFakUsd0JBQXdCO1FBQ2YsVUFBSyxHQUFHLFFBQVEs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QUFFLHdCQUF3QjtnQkFDdEMsS0FBSyxFQUFFLElBQUksRUFBRSx3QkFBd0I7Z0JBQ3JDLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUU7Z0JBQ3pCLFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVyxJQUFJLEVBQUU7Z0JBQ3JDLFlBQVksRUFBRSxNQUFNLENBQUMsWUFBWSxJQUFJLEtBQUs7Z0JBQzFDLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUyxJQUFJLElBQUk7Z0JBQ25DLEtBQUssRUFBRSxJQUFJO2FBQ1osQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILGNBQWMsQ0FBQyxNQUFjLEVBQUUsS0FBYTtRQUMxQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN6QixHQUFHLENBQUM7WUFDSixNQUFNO1lBQ04sS0FBSztTQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQzsrR0EvTFUsZ0JBQWdCO21IQUFoQixnQkFBZ0IsY0FESCxNQUFNOzs0RkFDbkIsZ0JBQWdCO2tCQUQ1QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIHNpZ25hbCwgY29tcHV0ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEF1dGhTdGF0ZSxcbiAgQXV0aFVzZXIsXG4gIEF1dGhFcnJvcixcbiAgTUZBUGVuZGluZ1N0YXRlLFxuICBJTklUSUFMX0FVVEhfU1RBVEUsXG4gIElOSVRJQUxfTUZBX1NUQVRFLFxuICBTdG9yZWRBdXRoU3RhdGUsXG59IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIFNlcnZpY2lvIHBhcmEgbWFuZWpvIGRlIGVzdGFkbyBkZSBhdXRlbnRpY2FjacOzbiBjb24gQW5ndWxhciBTaWduYWxzLlxuICogUHJvcG9yY2lvbmEgZXN0YWRvIHJlYWN0aXZvIGlubXV0YWJsZS5cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBdXRoU3RhdGVTZXJ2aWNlIHtcbiAgLy8gRXN0YWRvIGludGVybm8gKG11dGFibGUgc29sbyBkZW50cm8gZGVsIHNlcnZpY2lvKVxuICBwcml2YXRlIF9zdGF0ZSA9IHNpZ25hbDxBdXRoU3RhdGU+KElOSVRJQUxfQVVUSF9TVEFURSk7XG4gIHByaXZhdGUgX21mYVBlbmRpbmcgPSBzaWduYWw8TUZBUGVuZGluZ1N0YXRlPihJTklUSUFMX01GQV9TVEFURSk7XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFNpZ25hbHMgcMO6YmxpY29zIChyZWFkb25seSlcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqIEVzdGFkbyBjb21wbGV0byBkZSBhdXRlbnRpY2FjacOzbiAqL1xuICByZWFkb25seSBzdGF0ZSA9IHRoaXMuX3N0YXRlLmFzUmVhZG9ubHkoKTtcblxuICAvKiogRXN0YWRvIGRlIE1GQSBwZW5kaWVudGUgKi9cbiAgcmVhZG9ubHkgbWZhUGVuZGluZyA9IHRoaXMuX21mYVBlbmRpbmcuYXNSZWFkb25seSgpO1xuXG4gIC8qKiBVc3VhcmlvIGVzdMOhIGF1dGVudGljYWRvICovXG4gIHJlYWRvbmx5IGlzQXV0aGVudGljYXRlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX3N0YXRlKCkuaXNBdXRoZW50aWNhdGVkKTtcblxuICAvKiogRXN0YWRvIGRlIGNhcmdhICovXG4gIHJlYWRvbmx5IGlzTG9hZGluZyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX3N0YXRlKCkuaXNMb2FkaW5nKTtcblxuICAvKiogVG9rZW4gZGUgYWNjZXNvICovXG4gIHJlYWRvbmx5IGFjY2Vzc1Rva2VuID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fc3RhdGUoKS5hY2Nlc3NUb2tlbik7XG5cbiAgLyoqIFJvbGVzIGRlbCB1c3VhcmlvICovXG4gIHJlYWRvbmx5IHJvbGVzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fc3RhdGUoKS5yb2xlcyk7XG5cbiAgLyoqIFBlcm1pc29zIGRlbCB1c3VhcmlvICovXG4gIHJlYWRvbmx5IHBlcm1pc3Npb25zID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fc3RhdGUoKS5wZXJtaXNzaW9ucyk7XG5cbiAgLyoqIFVzdWFyaW8gZXMgc3VwZXIgYWRtaW4gKi9cbiAgcmVhZG9ubHkgaXNTdXBlckFkbWluID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fc3RhdGUoKS5pc1N1cGVyQWRtaW4pO1xuXG4gIC8qKiBFcnJvciBhY3R1YWwgKi9cbiAgcmVhZG9ubHkgZXJyb3IgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9zdGF0ZSgpLmVycm9yKTtcblxuICAvKiogSW5mb3JtYWNpw7NuIGRlbCB1c3VhcmlvICovXG4gIHJlYWRvbmx5IHVzZXIgPSBjb21wdXRlZDxBdXRoVXNlciB8IG51bGw+KCgpID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuX3N0YXRlKCk7XG4gICAgaWYgKCFzdGF0ZS5pc0F1dGhlbnRpY2F0ZWQgfHwgIXN0YXRlLnVzZXJJZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICB1c2VySWQ6IHN0YXRlLnVzZXJJZCxcbiAgICAgIGVtYWlsOiBzdGF0ZS5lbWFpbCB8fCAnJyxcbiAgICAgIHJvbGVzOiBzdGF0ZS5yb2xlcyxcbiAgICAgIHBlcm1pc3Npb25zOiBzdGF0ZS5wZXJtaXNzaW9ucyxcbiAgICAgIGlzU3VwZXJBZG1pbjogc3RhdGUuaXNTdXBlckFkbWluLFxuICAgIH07XG4gIH0pO1xuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBNw6l0b2RvcyBkZSBhY3R1YWxpemFjacOzblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogRXN0YWJsZWNlIGVsIGVzdGFkbyBkZSBjYXJnYS5cbiAgICovXG4gIHNldExvYWRpbmcoaXNMb2FkaW5nOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5fc3RhdGUudXBkYXRlKChzKSA9PiAoeyAuLi5zLCBpc0xvYWRpbmcgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVzdGFibGVjZSBlbCBlc3RhZG8gZGUgYXV0ZW50aWNhY2nDs24gZXhpdG9zYS5cbiAgICovXG4gIHNldEF1dGhlbnRpY2F0ZWQoZGF0YToge1xuICAgIGFjY2Vzc1Rva2VuOiBzdHJpbmc7XG4gICAgcmVmcmVzaFRva2VuOiBzdHJpbmc7XG4gICAgdXNlcklkPzogc3RyaW5nO1xuICAgIGVtYWlsPzogc3RyaW5nO1xuICAgIHJvbGVzOiBzdHJpbmdbXTtcbiAgICBwZXJtaXNzaW9uczogc3RyaW5nW107XG4gICAgaXNTdXBlckFkbWluOiBib29sZWFuO1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICB9KTogdm9pZCB7XG4gICAgdGhpcy5fc3RhdGUuc2V0KHtcbiAgICAgIGlzQXV0aGVudGljYXRlZDogdHJ1ZSxcbiAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICBhY2Nlc3NUb2tlbjogZGF0YS5hY2Nlc3NUb2tlbixcbiAgICAgIHJlZnJlc2hUb2tlbjogZGF0YS5yZWZyZXNoVG9rZW4sXG4gICAgICB1c2VySWQ6IGRhdGEudXNlcklkIHx8IG51bGwsXG4gICAgICBlbWFpbDogZGF0YS5lbWFpbCB8fCBudWxsLFxuICAgICAgcm9sZXM6IGRhdGEucm9sZXMsXG4gICAgICBwZXJtaXNzaW9uczogZGF0YS5wZXJtaXNzaW9ucyxcbiAgICAgIGlzU3VwZXJBZG1pbjogZGF0YS5pc1N1cGVyQWRtaW4sXG4gICAgICBleHBpcmVzQXQ6IGRhdGEuZXhwaXJlc0F0LFxuICAgICAgZXJyb3I6IG51bGwsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWN0dWFsaXphIHNvbG8gZWwgYWNjZXNzIHRva2VuIChkZXNwdcOpcyBkZSByZWZyZXNoKS5cbiAgICovXG4gIHVwZGF0ZUFjY2Vzc1Rva2VuKGFjY2Vzc1Rva2VuOiBzdHJpbmcsIGV4cGlyZXNJbjogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgZXhwaXJlc0F0ID0gRGF0ZS5ub3coKSArIGV4cGlyZXNJbiAqIDEwMDA7XG4gICAgdGhpcy5fc3RhdGUudXBkYXRlKChzKSA9PiAoe1xuICAgICAgLi4ucyxcbiAgICAgIGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwaXJlc0F0LFxuICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY3R1YWxpemEgbG9zIHBlcm1pc29zLlxuICAgKi9cbiAgdXBkYXRlUGVybWlzc2lvbnMoXG4gICAgcm9sZXM6IHN0cmluZ1tdLFxuICAgIHBlcm1pc3Npb25zOiBzdHJpbmdbXSxcbiAgICBpc1N1cGVyQWRtaW46IGJvb2xlYW5cbiAgKTogdm9pZCB7XG4gICAgdGhpcy5fc3RhdGUudXBkYXRlKChzKSA9PiAoe1xuICAgICAgLi4ucyxcbiAgICAgIHJvbGVzLFxuICAgICAgcGVybWlzc2lvbnMsXG4gICAgICBpc1N1cGVyQWRtaW4sXG4gICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVzdGFibGVjZSB1biBlcnJvciBkZSBhdXRlbnRpY2FjacOzbi5cbiAgICovXG4gIHNldEVycm9yKGVycm9yOiBBdXRoRXJyb3IpOiB2b2lkIHtcbiAgICB0aGlzLl9zdGF0ZS51cGRhdGUoKHMpID0+ICh7XG4gICAgICAuLi5zLFxuICAgICAgZXJyb3IsXG4gICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaW1waWEgZWwgZXJyb3IuXG4gICAqL1xuICBjbGVhckVycm9yKCk6IHZvaWQge1xuICAgIHRoaXMuX3N0YXRlLnVwZGF0ZSgocykgPT4gKHtcbiAgICAgIC4uLnMsXG4gICAgICBlcnJvcjogbnVsbCxcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogRXN0YWJsZWNlIGVzdGFkbyBkZSBNRkEgcGVuZGllbnRlLlxuICAgKi9cbiAgc2V0TUZBUGVuZGluZyhtZmFTdGF0ZTogTUZBUGVuZGluZ1N0YXRlKTogdm9pZCB7XG4gICAgdGhpcy5fbWZhUGVuZGluZy5zZXQobWZhU3RhdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIExpbXBpYSBlbCBlc3RhZG8gZGUgTUZBIHBlbmRpZW50ZS5cbiAgICovXG4gIGNsZWFyTUZBUGVuZGluZygpOiB2b2lkIHtcbiAgICB0aGlzLl9tZmFQZW5kaW5nLnNldChJTklUSUFMX01GQV9TVEFURSk7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRlYSB0b2RvIGVsIGVzdGFkbyBhIHZhbG9yZXMgaW5pY2lhbGVzLlxuICAgKi9cbiAgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5fc3RhdGUuc2V0KElOSVRJQUxfQVVUSF9TVEFURSk7XG4gICAgdGhpcy5fbWZhUGVuZGluZy5zZXQoSU5JVElBTF9NRkFfU1RBVEUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc3RhdXJhIGVzdGFkbyBkZXNkZSBkYXRvcyBhbG1hY2VuYWRvcy5cbiAgICovXG4gIHJlc3RvcmVGcm9tU3RvcmFnZShzdG9yZWQ6IFBhcnRpYWw8U3RvcmVkQXV0aFN0YXRlPik6IHZvaWQge1xuICAgIGlmIChzdG9yZWQuYWNjZXNzVG9rZW4pIHtcbiAgICAgIHRoaXMuX3N0YXRlLnNldCh7XG4gICAgICAgIGlzQXV0aGVudGljYXRlZDogdHJ1ZSxcbiAgICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgYWNjZXNzVG9rZW46IHN0b3JlZC5hY2Nlc3NUb2tlbixcbiAgICAgICAgcmVmcmVzaFRva2VuOiBzdG9yZWQucmVmcmVzaFRva2VuIHx8IG51bGwsXG4gICAgICAgIHVzZXJJZDogbnVsbCwgLy8gU2UgZXh0cmFlcsOhIGRlbCB0b2tlblxuICAgICAgICBlbWFpbDogbnVsbCwgLy8gU2UgZXh0cmFlcsOhIGRlbCB0b2tlblxuICAgICAgICByb2xlczogc3RvcmVkLnJvbGVzIHx8IFtdLFxuICAgICAgICBwZXJtaXNzaW9uczogc3RvcmVkLnBlcm1pc3Npb25zIHx8IFtdLFxuICAgICAgICBpc1N1cGVyQWRtaW46IHN0b3JlZC5pc1N1cGVyQWRtaW4gfHwgZmFsc2UsXG4gICAgICAgIGV4cGlyZXNBdDogc3RvcmVkLmV4cGlyZXNBdCB8fCBudWxsLFxuICAgICAgICBlcnJvcjogbnVsbCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBY3R1YWxpemEgZWwgdXNlcklkIHkgZW1haWwgKGRlc3B1w6lzIGRlIHBhcnNlYXIgZWwgdG9rZW4pLlxuICAgKi9cbiAgdXBkYXRlVXNlckluZm8odXNlcklkOiBzdHJpbmcsIGVtYWlsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9zdGF0ZS51cGRhdGUoKHMpID0+ICh7XG4gICAgICAuLi5zLFxuICAgICAgdXNlcklkLFxuICAgICAgZW1haWwsXG4gICAgfSkpO1xuICB9XG59XG4iXX0=
|