valtech-components 2.0.679 → 2.0.681
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/services/auth/auth.service.mjs +2 -11
- package/esm2022/lib/services/auth/types.mjs +1 -1
- package/esm2022/lib/version.mjs +2 -2
- package/esm2022/public-api.mjs +1 -7
- package/fesm2022/valtech-components.mjs +4 -783
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/services/auth/auth.service.d.ts +1 -6
- package/lib/services/auth/types.d.ts +0 -18
- package/lib/version.d.ts +1 -1
- package/package.json +2 -6
- package/public-api.d.ts +0 -4
- package/esm2022/lib/components/molecules/image-crop/image-crop.component.mjs +0 -174
- package/esm2022/lib/components/molecules/image-crop/index.mjs +0 -2
- package/esm2022/lib/components/organisms/avatar-upload/avatar-upload.component.mjs +0 -345
- package/esm2022/lib/components/organisms/avatar-upload/types.mjs +0 -15
- package/esm2022/lib/services/image/image.service.mjs +0 -244
- package/esm2022/lib/services/image/index.mjs +0 -3
- package/esm2022/lib/services/image/types.mjs +0 -13
- package/lib/components/molecules/image-crop/image-crop.component.d.ts +0 -59
- package/lib/components/molecules/image-crop/index.d.ts +0 -1
- package/lib/components/organisms/avatar-upload/avatar-upload.component.d.ts +0 -82
- package/lib/components/organisms/avatar-upload/types.d.ts +0 -62
- package/lib/services/image/image.service.d.ts +0 -76
- package/lib/services/image/index.d.ts +0 -2
- package/lib/services/image/types.d.ts +0 -74
- package/src/lib/services/firebase/firebase-messaging-sw.js +0 -134
|
@@ -6,7 +6,7 @@ import { AuthStateService } from './auth-state.service';
|
|
|
6
6
|
import { TokenService } from './token.service';
|
|
7
7
|
import { AuthStorageService } from './storage.service';
|
|
8
8
|
import { AuthSyncService } from './sync.service';
|
|
9
|
-
import { SigninRequest, SigninResponse, SignupRequest, SignupResponse, VerifyEmailRequest, VerifyEmailResponse, ResendCodeRequest, ResendCodeResponse, MFAVerifyResponse, RefreshResponse, GetPermissionsResponse, GetProfileResponse, UpdateProfileRequest, UpdateProfileResponse, MFASetupResponse, MFAConfirmResponse, MFADisableResponse, ForgotPasswordRequest, ForgotPasswordResponse, ResetPasswordRequest, ResetPasswordResponse, ChangePasswordResponse, DeleteAccountResponse, SwitchOrgResponse, MFAMethod, AuthError, ValtechAuthConfig, EnableNotificationsResult, NotificationPermissionState, RegisterDeviceResult, TOTPSetupResponse, TOTPVerifySetupResponse, TOTPDisableResponse, RegenerateBackupCodesResponse, BackupCodesCountResponse, OAuthProvider, LinkedProvider, HasPasswordResponse, UpdateHandleResponse, CheckHandleResponse
|
|
9
|
+
import { SigninRequest, SigninResponse, SignupRequest, SignupResponse, VerifyEmailRequest, VerifyEmailResponse, ResendCodeRequest, ResendCodeResponse, MFAVerifyResponse, RefreshResponse, GetPermissionsResponse, GetProfileResponse, UpdateProfileRequest, UpdateProfileResponse, MFASetupResponse, MFAConfirmResponse, MFADisableResponse, ForgotPasswordRequest, ForgotPasswordResponse, ResetPasswordRequest, ResetPasswordResponse, ChangePasswordResponse, DeleteAccountResponse, SwitchOrgResponse, MFAMethod, AuthError, ValtechAuthConfig, EnableNotificationsResult, NotificationPermissionState, RegisterDeviceResult, TOTPSetupResponse, TOTPVerifySetupResponse, TOTPDisableResponse, RegenerateBackupCodesResponse, BackupCodesCountResponse, OAuthProvider, LinkedProvider, HasPasswordResponse, UpdateHandleResponse, CheckHandleResponse } from './types';
|
|
10
10
|
import { OAuthService } from './oauth.service';
|
|
11
11
|
import { FirebaseService, MessagingService } from '../firebase';
|
|
12
12
|
import { I18nService } from '../i18n';
|
|
@@ -241,11 +241,6 @@ export declare class AuthService implements OnDestroy {
|
|
|
241
241
|
* Actualiza el perfil del usuario.
|
|
242
242
|
*/
|
|
243
243
|
updateProfile(request: UpdateProfileRequest): Observable<UpdateProfileResponse>;
|
|
244
|
-
/**
|
|
245
|
-
* Actualiza el avatar del usuario en el backend.
|
|
246
|
-
* Nota: El estado local del avatar se maneja a través de getProfile().
|
|
247
|
-
*/
|
|
248
|
-
updateAvatar(request: UpdateAvatarRequest): Observable<UpdateAvatarResponse>;
|
|
249
244
|
/**
|
|
250
245
|
* Inicia el proceso de recuperación de contraseña.
|
|
251
246
|
* Envía un código al email del usuario.
|
|
@@ -453,24 +453,6 @@ export interface UpdateProfileResponse {
|
|
|
453
453
|
operationId: string;
|
|
454
454
|
updated: boolean;
|
|
455
455
|
}
|
|
456
|
-
/**
|
|
457
|
-
* Request para actualizar avatar del usuario.
|
|
458
|
-
*/
|
|
459
|
-
export interface UpdateAvatarRequest {
|
|
460
|
-
/** URL del avatar en Firebase Storage */
|
|
461
|
-
avatarUrl: string;
|
|
462
|
-
/** URL del thumbnail (opcional) */
|
|
463
|
-
avatarThumbnail?: string;
|
|
464
|
-
}
|
|
465
|
-
/**
|
|
466
|
-
* Response de actualizar avatar.
|
|
467
|
-
*/
|
|
468
|
-
export interface UpdateAvatarResponse {
|
|
469
|
-
operationId: string;
|
|
470
|
-
avatarUrl: string;
|
|
471
|
-
avatarThumbnail?: string;
|
|
472
|
-
updatedAt: string;
|
|
473
|
-
}
|
|
474
456
|
/**
|
|
475
457
|
* Request para cambiar de organización activa.
|
|
476
458
|
*/
|
package/lib/version.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "valtech-components",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.681",
|
|
4
4
|
"private": false,
|
|
5
5
|
"bin": {
|
|
6
6
|
"valtech-firebase-config": "./src/lib/services/firebase/scripts/generate-sw-config.js"
|
|
@@ -22,15 +22,11 @@
|
|
|
22
22
|
"prismjs": "^1.30.0",
|
|
23
23
|
"qr-code-styling": "^1.9.0",
|
|
24
24
|
"rxjs": "~7.8.0",
|
|
25
|
-
"swiper": "^11.2.8"
|
|
26
|
-
"ngx-image-cropper": "^9.0.0"
|
|
25
|
+
"swiper": "^11.2.8"
|
|
27
26
|
},
|
|
28
27
|
"peerDependenciesMeta": {
|
|
29
28
|
"@capacitor/app": {
|
|
30
29
|
"optional": true
|
|
31
|
-
},
|
|
32
|
-
"ngx-image-cropper": {
|
|
33
|
-
"optional": true
|
|
34
30
|
}
|
|
35
31
|
},
|
|
36
32
|
"dependencies": {
|
package/public-api.d.ts
CHANGED
|
@@ -169,7 +169,6 @@ export * from './lib/components/molecules/username-input/username-input.componen
|
|
|
169
169
|
export * from './lib/components/molecules/username-input/types';
|
|
170
170
|
export * from './lib/components/molecules/linked-providers/linked-providers.component';
|
|
171
171
|
export * from './lib/components/molecules/linked-providers/types';
|
|
172
|
-
export * from './lib/components/molecules/image-crop/image-crop.component';
|
|
173
172
|
export * from './lib/components/organisms/article/article.component';
|
|
174
173
|
export * from './lib/components/organisms/article/types';
|
|
175
174
|
export * from './lib/components/organisms/banner/banner.component';
|
|
@@ -215,8 +214,6 @@ export * from './lib/components/organisms/terminal-404/terminal-404.component';
|
|
|
215
214
|
export * from './lib/components/organisms/terminal-404/types';
|
|
216
215
|
export * from './lib/components/organisms/bottom-nav/bottom-nav.component';
|
|
217
216
|
export * from './lib/components/organisms/bottom-nav/types';
|
|
218
|
-
export * from './lib/components/organisms/avatar-upload/avatar-upload.component';
|
|
219
|
-
export * from './lib/components/organisms/avatar-upload/types';
|
|
220
217
|
export * from './lib/components/templates/layout/layout.component';
|
|
221
218
|
export * from './lib/components/templates/simple/simple.component';
|
|
222
219
|
export * from './lib/components/templates/simple/types';
|
|
@@ -254,7 +251,6 @@ export * from './lib/services/app-config';
|
|
|
254
251
|
export * from './lib/services/presets';
|
|
255
252
|
export * from './lib/services/skeleton';
|
|
256
253
|
export * from './lib/services/pagination';
|
|
257
|
-
export * from './lib/services/image';
|
|
258
254
|
export * from './lib/services/ads';
|
|
259
255
|
export * from './lib/components/molecules/ad-slot/ad-slot.component';
|
|
260
256
|
export * from './lib/services/feedback';
|
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { Component, computed, EventEmitter, inject, input, Output, signal, } from '@angular/core';
|
|
3
|
-
import { IonButton, IonButtons, IonContent, IonHeader, IonTitle, IonToolbar, } from '@ionic/angular/standalone';
|
|
4
|
-
import { ImageCropperComponent } from 'ngx-image-cropper';
|
|
5
|
-
import { I18nService } from '../../../services/i18n';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
/**
|
|
8
|
-
* ImageCropComponent
|
|
9
|
-
*
|
|
10
|
-
* A modal-ready component for cropping images with a specified aspect ratio.
|
|
11
|
-
* Uses ngx-image-cropper internally and provides a simple interface.
|
|
12
|
-
*
|
|
13
|
-
* @example Inside an ion-modal
|
|
14
|
-
* ```html
|
|
15
|
-
* <ion-modal [isOpen]="showCropModal">
|
|
16
|
-
* <ng-template>
|
|
17
|
-
* <val-image-crop
|
|
18
|
-
* [image]="selectedFile"
|
|
19
|
-
* [aspectRatio]="1"
|
|
20
|
-
* [roundCropper]="true"
|
|
21
|
-
* (cropComplete)="onCropComplete($event)"
|
|
22
|
-
* (cancel)="showCropModal = false"
|
|
23
|
-
* />
|
|
24
|
-
* </ng-template>
|
|
25
|
-
* </ion-modal>
|
|
26
|
-
* ```
|
|
27
|
-
*/
|
|
28
|
-
export class ImageCropComponent {
|
|
29
|
-
constructor() {
|
|
30
|
-
this.i18n = inject(I18nService);
|
|
31
|
-
/** Image file to crop */
|
|
32
|
-
this.image = input.required();
|
|
33
|
-
/** Aspect ratio (1 for square, 16/9 for widescreen, etc.) */
|
|
34
|
-
this.aspectRatio = input(1);
|
|
35
|
-
/** Use round cropper (for avatars) */
|
|
36
|
-
this.roundCropper = input(true);
|
|
37
|
-
/** Resize output to specific width (0 = no resize) */
|
|
38
|
-
this.resizeToWidth = input(0);
|
|
39
|
-
/** i18n namespace for labels */
|
|
40
|
-
this.i18nNamespace = input('ImageCrop');
|
|
41
|
-
/** Emitted when crop is confirmed with the cropped blob */
|
|
42
|
-
this.cropComplete = new EventEmitter();
|
|
43
|
-
/** Emitted when user cancels the crop */
|
|
44
|
-
this.cancel = new EventEmitter();
|
|
45
|
-
/** Emitted when image fails to load */
|
|
46
|
-
this.loadFailed = new EventEmitter();
|
|
47
|
-
/** Internal signal for cropped blob */
|
|
48
|
-
this.croppedBlob = signal(null);
|
|
49
|
-
/** Computed text for cancel button */
|
|
50
|
-
this.cancelText = computed(() => {
|
|
51
|
-
this.i18n.lang(); // Track language changes
|
|
52
|
-
return this.i18n.t('cancel', 'Common') || 'Cancelar';
|
|
53
|
-
});
|
|
54
|
-
/** Computed text for confirm button */
|
|
55
|
-
this.confirmText = computed(() => {
|
|
56
|
-
this.i18n.lang();
|
|
57
|
-
return this.i18n.t('confirm', 'Common') || 'Confirmar';
|
|
58
|
-
});
|
|
59
|
-
/** Computed text for title */
|
|
60
|
-
this.titleText = computed(() => {
|
|
61
|
-
this.i18n.lang();
|
|
62
|
-
return this.i18n.t('cropImage', this.i18nNamespace()) || 'Recortar imagen';
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
/** Handle crop event from ngx-image-cropper */
|
|
66
|
-
onImageCropped(event) {
|
|
67
|
-
if (event.blob) {
|
|
68
|
-
this.croppedBlob.set(event.blob);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
/** Confirm and emit the cropped blob */
|
|
72
|
-
confirmCrop() {
|
|
73
|
-
const blob = this.croppedBlob();
|
|
74
|
-
if (blob) {
|
|
75
|
-
this.cropComplete.emit(blob);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
/** Handle load failure */
|
|
79
|
-
onLoadFailed() {
|
|
80
|
-
this.loadFailed.emit();
|
|
81
|
-
}
|
|
82
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ImageCropComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
83
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: ImageCropComponent, isStandalone: true, selector: "val-image-crop", inputs: { image: { classPropertyName: "image", publicName: "image", isSignal: true, isRequired: true, transformFunction: null }, aspectRatio: { classPropertyName: "aspectRatio", publicName: "aspectRatio", isSignal: true, isRequired: false, transformFunction: null }, roundCropper: { classPropertyName: "roundCropper", publicName: "roundCropper", isSignal: true, isRequired: false, transformFunction: null }, resizeToWidth: { classPropertyName: "resizeToWidth", publicName: "resizeToWidth", isSignal: true, isRequired: false, transformFunction: null }, i18nNamespace: { classPropertyName: "i18nNamespace", publicName: "i18nNamespace", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { cropComplete: "cropComplete", cancel: "cancel", loadFailed: "loadFailed" }, ngImport: i0, template: `
|
|
84
|
-
<ion-header>
|
|
85
|
-
<ion-toolbar>
|
|
86
|
-
<ion-buttons slot="start">
|
|
87
|
-
<ion-button (click)="cancel.emit()" color="medium">
|
|
88
|
-
{{ cancelText() }}
|
|
89
|
-
</ion-button>
|
|
90
|
-
</ion-buttons>
|
|
91
|
-
<ion-title>{{ titleText() }}</ion-title>
|
|
92
|
-
<ion-buttons slot="end">
|
|
93
|
-
<ion-button
|
|
94
|
-
(click)="confirmCrop()"
|
|
95
|
-
color="primary"
|
|
96
|
-
[strong]="true"
|
|
97
|
-
[disabled]="!croppedBlob()"
|
|
98
|
-
>
|
|
99
|
-
{{ confirmText() }}
|
|
100
|
-
</ion-button>
|
|
101
|
-
</ion-buttons>
|
|
102
|
-
</ion-toolbar>
|
|
103
|
-
</ion-header>
|
|
104
|
-
|
|
105
|
-
<ion-content class="image-crop-content">
|
|
106
|
-
<image-cropper
|
|
107
|
-
[imageFile]="image()"
|
|
108
|
-
[aspectRatio]="aspectRatio()"
|
|
109
|
-
[maintainAspectRatio]="true"
|
|
110
|
-
[roundCropper]="roundCropper()"
|
|
111
|
-
[resizeToWidth]="resizeToWidth()"
|
|
112
|
-
format="jpeg"
|
|
113
|
-
outputType="blob"
|
|
114
|
-
(imageCropped)="onImageCropped($event)"
|
|
115
|
-
(loadImageFailed)="onLoadFailed()"
|
|
116
|
-
/>
|
|
117
|
-
</ion-content>
|
|
118
|
-
`, isInline: true, styles: [":host{display:flex;flex-direction:column;height:100%}.image-crop-content{--background: var(--ion-color-dark)}.image-crop-content::part(scroll){display:flex;flex-direction:column}image-cropper{--cropper-outline-color: rgba(255, 255, 255, .3);--cropper-background-color: var(--ion-color-dark);flex:1;height:100%;max-height:calc(100vh - 56px)}::ng-deep .ngx-ic-component{height:100%!important}::ng-deep .ngx-ic-source-image{max-height:100%!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { 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: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: ImageCropperComponent, selector: "image-cropper", inputs: ["imageChangedEvent", "imageURL", "imageBase64", "imageFile", "imageAltText", "options", "cropperFrameAriaLabel", "output", "format", "autoCrop", "cropper", "transform", "maintainAspectRatio", "aspectRatio", "resetCropOnAspectRatioChange", "resizeToWidth", "resizeToHeight", "cropperMinWidth", "cropperMinHeight", "cropperMaxHeight", "cropperMaxWidth", "cropperStaticWidth", "cropperStaticHeight", "canvasRotation", "initialStepSize", "roundCropper", "onlyScaleDown", "imageQuality", "backgroundColor", "containWithinAspectRatio", "hideResizeSquares", "allowMoveImage", "checkImageType", "alignImage", "disabled", "hidden"], outputs: ["imageCropped", "startCropImage", "imageLoaded", "cropperReady", "loadImageFailed", "transformChange", "cropperChange"] }] }); }
|
|
119
|
-
}
|
|
120
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ImageCropComponent, decorators: [{
|
|
121
|
-
type: Component,
|
|
122
|
-
args: [{ selector: 'val-image-crop', standalone: true, imports: [
|
|
123
|
-
CommonModule,
|
|
124
|
-
IonHeader,
|
|
125
|
-
IonToolbar,
|
|
126
|
-
IonTitle,
|
|
127
|
-
IonButtons,
|
|
128
|
-
IonButton,
|
|
129
|
-
IonContent,
|
|
130
|
-
ImageCropperComponent,
|
|
131
|
-
], template: `
|
|
132
|
-
<ion-header>
|
|
133
|
-
<ion-toolbar>
|
|
134
|
-
<ion-buttons slot="start">
|
|
135
|
-
<ion-button (click)="cancel.emit()" color="medium">
|
|
136
|
-
{{ cancelText() }}
|
|
137
|
-
</ion-button>
|
|
138
|
-
</ion-buttons>
|
|
139
|
-
<ion-title>{{ titleText() }}</ion-title>
|
|
140
|
-
<ion-buttons slot="end">
|
|
141
|
-
<ion-button
|
|
142
|
-
(click)="confirmCrop()"
|
|
143
|
-
color="primary"
|
|
144
|
-
[strong]="true"
|
|
145
|
-
[disabled]="!croppedBlob()"
|
|
146
|
-
>
|
|
147
|
-
{{ confirmText() }}
|
|
148
|
-
</ion-button>
|
|
149
|
-
</ion-buttons>
|
|
150
|
-
</ion-toolbar>
|
|
151
|
-
</ion-header>
|
|
152
|
-
|
|
153
|
-
<ion-content class="image-crop-content">
|
|
154
|
-
<image-cropper
|
|
155
|
-
[imageFile]="image()"
|
|
156
|
-
[aspectRatio]="aspectRatio()"
|
|
157
|
-
[maintainAspectRatio]="true"
|
|
158
|
-
[roundCropper]="roundCropper()"
|
|
159
|
-
[resizeToWidth]="resizeToWidth()"
|
|
160
|
-
format="jpeg"
|
|
161
|
-
outputType="blob"
|
|
162
|
-
(imageCropped)="onImageCropped($event)"
|
|
163
|
-
(loadImageFailed)="onLoadFailed()"
|
|
164
|
-
/>
|
|
165
|
-
</ion-content>
|
|
166
|
-
`, styles: [":host{display:flex;flex-direction:column;height:100%}.image-crop-content{--background: var(--ion-color-dark)}.image-crop-content::part(scroll){display:flex;flex-direction:column}image-cropper{--cropper-outline-color: rgba(255, 255, 255, .3);--cropper-background-color: var(--ion-color-dark);flex:1;height:100%;max-height:calc(100vh - 56px)}::ng-deep .ngx-ic-component{height:100%!important}::ng-deep .ngx-ic-source-image{max-height:100%!important}\n"] }]
|
|
167
|
-
}], propDecorators: { cropComplete: [{
|
|
168
|
-
type: Output
|
|
169
|
-
}], cancel: [{
|
|
170
|
-
type: Output
|
|
171
|
-
}], loadFailed: [{
|
|
172
|
-
type: Output
|
|
173
|
-
}] } });
|
|
174
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtY3JvcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2ltYWdlLWNyb3AvaW1hZ2UtY3JvcC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBQ1QsUUFBUSxFQUNSLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFNBQVMsRUFDVCxRQUFRLEVBQ1IsVUFBVSxHQUNYLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFxQixxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFFckQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBc0ZILE1BQU0sT0FBTyxrQkFBa0I7SUFyRi9CO1FBc0ZVLFNBQUksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFbkMseUJBQXlCO1FBQ2hCLFVBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFRLENBQUM7UUFFeEMsNkRBQTZEO1FBQ3BELGdCQUFXLEdBQUcsS0FBSyxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBRXhDLHNDQUFzQztRQUM3QixpQkFBWSxHQUFHLEtBQUssQ0FBVSxJQUFJLENBQUMsQ0FBQztRQUU3QyxzREFBc0Q7UUFDN0Msa0JBQWEsR0FBRyxLQUFLLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFFMUMsZ0NBQWdDO1FBQ3ZCLGtCQUFhLEdBQUcsS0FBSyxDQUFTLFdBQVcsQ0FBQyxDQUFDO1FBRXBELDJEQUEyRDtRQUNqRCxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFbEQseUNBQXlDO1FBQy9CLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRTVDLHVDQUF1QztRQUM3QixlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUVoRCx1Q0FBdUM7UUFDN0IsZ0JBQVcsR0FBRyxNQUFNLENBQWMsSUFBSSxDQUFDLENBQUM7UUFFbEQsc0NBQXNDO1FBQzVCLGVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyx5QkFBeUI7WUFDM0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLElBQUksVUFBVSxDQUFDO1FBQ3ZELENBQUMsQ0FBQyxDQUFDO1FBRUgsdUNBQXVDO1FBQzdCLGdCQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2pCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxJQUFJLFdBQVcsQ0FBQztRQUN6RCxDQUFDLENBQUMsQ0FBQztRQUVILDhCQUE4QjtRQUNwQixjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2pCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxJQUFJLGlCQUFpQixDQUFDO1FBQzdFLENBQUMsQ0FBQyxDQUFDO0tBcUJKO0lBbkJDLCtDQUErQztJQUMvQyxjQUFjLENBQUMsS0FBd0I7UUFDckMsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkMsQ0FBQztJQUNILENBQUM7SUFFRCx3Q0FBd0M7SUFDeEMsV0FBVztRQUNULE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNoQyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsQ0FBQztJQUNILENBQUM7SUFFRCwwQkFBMEI7SUFDMUIsWUFBWTtRQUNWLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQzsrR0FsRVUsa0JBQWtCO21HQUFsQixrQkFBa0IsMjFCQXhFbkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUNULDBnQkE1Q0MsWUFBWSwrQkFDWixTQUFTLG9HQUNULFVBQVUsbUZBQ1YsUUFBUSxpRkFDUixVQUFVLDhFQUNWLFNBQVMsb1BBQ1QsVUFBVSx3S0FDVixxQkFBcUI7OzRGQTBFWixrQkFBa0I7a0JBckY5QixTQUFTOytCQUNFLGdCQUFnQixjQUNkLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFNBQVM7d0JBQ1QsVUFBVTt3QkFDVixRQUFRO3dCQUNSLFVBQVU7d0JBQ1YsU0FBUzt3QkFDVCxVQUFVO3dCQUNWLHFCQUFxQjtxQkFDdEIsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQ1Q7OEJBd0RTLFlBQVk7c0JBQXJCLE1BQU07Z0JBR0csTUFBTTtzQkFBZixNQUFNO2dCQUdHLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgRXZlbnRFbWl0dGVyLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBPdXRwdXQsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBJb25CdXR0b24sXG4gIElvbkJ1dHRvbnMsXG4gIElvbkNvbnRlbnQsXG4gIElvbkhlYWRlcixcbiAgSW9uVGl0bGUsXG4gIElvblRvb2xiYXIsXG59IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgSW1hZ2VDcm9wcGVkRXZlbnQsIEltYWdlQ3JvcHBlckNvbXBvbmVudCB9IGZyb20gJ25neC1pbWFnZS1jcm9wcGVyJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5cbi8qKlxuICogSW1hZ2VDcm9wQ29tcG9uZW50XG4gKlxuICogQSBtb2RhbC1yZWFkeSBjb21wb25lbnQgZm9yIGNyb3BwaW5nIGltYWdlcyB3aXRoIGEgc3BlY2lmaWVkIGFzcGVjdCByYXRpby5cbiAqIFVzZXMgbmd4LWltYWdlLWNyb3BwZXIgaW50ZXJuYWxseSBhbmQgcHJvdmlkZXMgYSBzaW1wbGUgaW50ZXJmYWNlLlxuICpcbiAqIEBleGFtcGxlIEluc2lkZSBhbiBpb24tbW9kYWxcbiAqIGBgYGh0bWxcbiAqIDxpb24tbW9kYWwgW2lzT3Blbl09XCJzaG93Q3JvcE1vZGFsXCI+XG4gKiAgIDxuZy10ZW1wbGF0ZT5cbiAqICAgICA8dmFsLWltYWdlLWNyb3BcbiAqICAgICAgIFtpbWFnZV09XCJzZWxlY3RlZEZpbGVcIlxuICogICAgICAgW2FzcGVjdFJhdGlvXT1cIjFcIlxuICogICAgICAgW3JvdW5kQ3JvcHBlcl09XCJ0cnVlXCJcbiAqICAgICAgIChjcm9wQ29tcGxldGUpPVwib25Dcm9wQ29tcGxldGUoJGV2ZW50KVwiXG4gKiAgICAgICAoY2FuY2VsKT1cInNob3dDcm9wTW9kYWwgPSBmYWxzZVwiXG4gKiAgICAgLz5cbiAqICAgPC9uZy10ZW1wbGF0ZT5cbiAqIDwvaW9uLW1vZGFsPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1pbWFnZS1jcm9wJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBJb25IZWFkZXIsXG4gICAgSW9uVG9vbGJhcixcbiAgICBJb25UaXRsZSxcbiAgICBJb25CdXR0b25zLFxuICAgIElvbkJ1dHRvbixcbiAgICBJb25Db250ZW50LFxuICAgIEltYWdlQ3JvcHBlckNvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8aW9uLWhlYWRlcj5cbiAgICAgIDxpb24tdG9vbGJhcj5cbiAgICAgICAgPGlvbi1idXR0b25zIHNsb3Q9XCJzdGFydFwiPlxuICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJjYW5jZWwuZW1pdCgpXCIgY29sb3I9XCJtZWRpdW1cIj5cbiAgICAgICAgICAgIHt7IGNhbmNlbFRleHQoKSB9fVxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9pb24tYnV0dG9ucz5cbiAgICAgICAgPGlvbi10aXRsZT57eyB0aXRsZVRleHQoKSB9fTwvaW9uLXRpdGxlPlxuICAgICAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxuICAgICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgICAoY2xpY2spPVwiY29uZmlybUNyb3AoKVwiXG4gICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgW3N0cm9uZ109XCJ0cnVlXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY3JvcHBlZEJsb2IoKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgY29uZmlybVRleHQoKSB9fVxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9pb24tYnV0dG9ucz5cbiAgICAgIDwvaW9uLXRvb2xiYXI+XG4gICAgPC9pb24taGVhZGVyPlxuXG4gICAgPGlvbi1jb250ZW50IGNsYXNzPVwiaW1hZ2UtY3JvcC1jb250ZW50XCI+XG4gICAgICA8aW1hZ2UtY3JvcHBlclxuICAgICAgICBbaW1hZ2VGaWxlXT1cImltYWdlKClcIlxuICAgICAgICBbYXNwZWN0UmF0aW9dPVwiYXNwZWN0UmF0aW8oKVwiXG4gICAgICAgIFttYWludGFpbkFzcGVjdFJhdGlvXT1cInRydWVcIlxuICAgICAgICBbcm91bmRDcm9wcGVyXT1cInJvdW5kQ3JvcHBlcigpXCJcbiAgICAgICAgW3Jlc2l6ZVRvV2lkdGhdPVwicmVzaXplVG9XaWR0aCgpXCJcbiAgICAgICAgZm9ybWF0PVwianBlZ1wiXG4gICAgICAgIG91dHB1dFR5cGU9XCJibG9iXCJcbiAgICAgICAgKGltYWdlQ3JvcHBlZCk9XCJvbkltYWdlQ3JvcHBlZCgkZXZlbnQpXCJcbiAgICAgICAgKGxvYWRJbWFnZUZhaWxlZCk9XCJvbkxvYWRGYWlsZWQoKVwiXG4gICAgICAvPlxuICAgIDwvaW9uLWNvbnRlbnQ+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgfVxuXG4gICAgICAuaW1hZ2UtY3JvcC1jb250ZW50IHtcbiAgICAgICAgLS1iYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItZGFyayk7XG4gICAgICB9XG5cbiAgICAgIC5pbWFnZS1jcm9wLWNvbnRlbnQ6OnBhcnQoc2Nyb2xsKSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICB9XG5cbiAgICAgIGltYWdlLWNyb3BwZXIge1xuICAgICAgICAtLWNyb3BwZXItb3V0bGluZS1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpO1xuICAgICAgICAtLWNyb3BwZXItYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSA1NnB4KTtcbiAgICAgIH1cblxuICAgICAgLyogRW5zdXJlIHRoZSBjcm9wcGVyIHdyYXBwZXIgdGFrZXMgZnVsbCBoZWlnaHQgKi9cbiAgICAgIDo6bmctZGVlcCAubmd4LWljLWNvbXBvbmVudCB7XG4gICAgICAgIGhlaWdodDogMTAwJSAhaW1wb3J0YW50O1xuICAgICAgfVxuXG4gICAgICA6Om5nLWRlZXAgLm5neC1pYy1zb3VyY2UtaW1hZ2Uge1xuICAgICAgICBtYXgtaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgSW1hZ2VDcm9wQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcblxuICAvKiogSW1hZ2UgZmlsZSB0byBjcm9wICovXG4gIHJlYWRvbmx5IGltYWdlID0gaW5wdXQucmVxdWlyZWQ8RmlsZT4oKTtcblxuICAvKiogQXNwZWN0IHJhdGlvICgxIGZvciBzcXVhcmUsIDE2LzkgZm9yIHdpZGVzY3JlZW4sIGV0Yy4pICovXG4gIHJlYWRvbmx5IGFzcGVjdFJhdGlvID0gaW5wdXQ8bnVtYmVyPigxKTtcblxuICAvKiogVXNlIHJvdW5kIGNyb3BwZXIgKGZvciBhdmF0YXJzKSAqL1xuICByZWFkb25seSByb3VuZENyb3BwZXIgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcblxuICAvKiogUmVzaXplIG91dHB1dCB0byBzcGVjaWZpYyB3aWR0aCAoMCA9IG5vIHJlc2l6ZSkgKi9cbiAgcmVhZG9ubHkgcmVzaXplVG9XaWR0aCA9IGlucHV0PG51bWJlcj4oMCk7XG5cbiAgLyoqIGkxOG4gbmFtZXNwYWNlIGZvciBsYWJlbHMgKi9cbiAgcmVhZG9ubHkgaTE4bk5hbWVzcGFjZSA9IGlucHV0PHN0cmluZz4oJ0ltYWdlQ3JvcCcpO1xuXG4gIC8qKiBFbWl0dGVkIHdoZW4gY3JvcCBpcyBjb25maXJtZWQgd2l0aCB0aGUgY3JvcHBlZCBibG9iICovXG4gIEBPdXRwdXQoKSBjcm9wQ29tcGxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPEJsb2I+KCk7XG5cbiAgLyoqIEVtaXR0ZWQgd2hlbiB1c2VyIGNhbmNlbHMgdGhlIGNyb3AgKi9cbiAgQE91dHB1dCgpIGNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKiogRW1pdHRlZCB3aGVuIGltYWdlIGZhaWxzIHRvIGxvYWQgKi9cbiAgQE91dHB1dCgpIGxvYWRGYWlsZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqIEludGVybmFsIHNpZ25hbCBmb3IgY3JvcHBlZCBibG9iICovXG4gIHByb3RlY3RlZCBjcm9wcGVkQmxvYiA9IHNpZ25hbDxCbG9iIHwgbnVsbD4obnVsbCk7XG5cbiAgLyoqIENvbXB1dGVkIHRleHQgZm9yIGNhbmNlbCBidXR0b24gKi9cbiAgcHJvdGVjdGVkIGNhbmNlbFRleHQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTsgLy8gVHJhY2sgbGFuZ3VhZ2UgY2hhbmdlc1xuICAgIHJldHVybiB0aGlzLmkxOG4udCgnY2FuY2VsJywgJ0NvbW1vbicpIHx8ICdDYW5jZWxhcic7XG4gIH0pO1xuXG4gIC8qKiBDb21wdXRlZCB0ZXh0IGZvciBjb25maXJtIGJ1dHRvbiAqL1xuICBwcm90ZWN0ZWQgY29uZmlybVRleHQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoJ2NvbmZpcm0nLCAnQ29tbW9uJykgfHwgJ0NvbmZpcm1hcic7XG4gIH0pO1xuXG4gIC8qKiBDb21wdXRlZCB0ZXh0IGZvciB0aXRsZSAqL1xuICBwcm90ZWN0ZWQgdGl0bGVUZXh0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHRoaXMuaTE4bi5sYW5nKCk7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KCdjcm9wSW1hZ2UnLCB0aGlzLmkxOG5OYW1lc3BhY2UoKSkgfHwgJ1JlY29ydGFyIGltYWdlbic7XG4gIH0pO1xuXG4gIC8qKiBIYW5kbGUgY3JvcCBldmVudCBmcm9tIG5neC1pbWFnZS1jcm9wcGVyICovXG4gIG9uSW1hZ2VDcm9wcGVkKGV2ZW50OiBJbWFnZUNyb3BwZWRFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5ibG9iKSB7XG4gICAgICB0aGlzLmNyb3BwZWRCbG9iLnNldChldmVudC5ibG9iKTtcbiAgICB9XG4gIH1cblxuICAvKiogQ29uZmlybSBhbmQgZW1pdCB0aGUgY3JvcHBlZCBibG9iICovXG4gIGNvbmZpcm1Dcm9wKCk6IHZvaWQge1xuICAgIGNvbnN0IGJsb2IgPSB0aGlzLmNyb3BwZWRCbG9iKCk7XG4gICAgaWYgKGJsb2IpIHtcbiAgICAgIHRoaXMuY3JvcENvbXBsZXRlLmVtaXQoYmxvYik7XG4gICAgfVxuICB9XG5cbiAgLyoqIEhhbmRsZSBsb2FkIGZhaWx1cmUgKi9cbiAgb25Mb2FkRmFpbGVkKCk6IHZvaWQge1xuICAgIHRoaXMubG9hZEZhaWxlZC5lbWl0KCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export * from './image-crop.component';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2ltYWdlLWNyb3AvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vaW1hZ2UtY3JvcC5jb21wb25lbnQnO1xuIl19
|