ngx-kit 6.0.2 → 6.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/angle-selector/README.md +34 -34
- package/box-shadow/README.md +33 -33
- package/color-picker/README.md +49 -49
- package/data-table/README.md +113 -113
- package/date-picker/README.md +69 -69
- package/dialog/README.md +92 -92
- package/drawer-menu/README.md +77 -77
- package/dropzone/README.md +422 -60
- package/fesm2022/ngx-kit-angle-selector.mjs +2 -2
- package/fesm2022/ngx-kit-angle-selector.mjs.map +1 -1
- package/fesm2022/ngx-kit-box-shadow.mjs +2 -2
- package/fesm2022/ngx-kit-box-shadow.mjs.map +1 -1
- package/fesm2022/ngx-kit-color-picker.mjs +4 -4
- package/fesm2022/ngx-kit-color-picker.mjs.map +1 -1
- package/fesm2022/ngx-kit-data-table.mjs +2 -2
- package/fesm2022/ngx-kit-data-table.mjs.map +1 -1
- package/fesm2022/ngx-kit-date-picker.mjs +1322 -200
- package/fesm2022/ngx-kit-date-picker.mjs.map +1 -1
- package/fesm2022/ngx-kit-dialog.mjs +2 -2
- package/fesm2022/ngx-kit-dialog.mjs.map +1 -1
- package/fesm2022/ngx-kit-drawer-menu.mjs +2 -2
- package/fesm2022/ngx-kit-drawer-menu.mjs.map +1 -1
- package/fesm2022/ngx-kit-dropzone.mjs +273 -28
- package/fesm2022/ngx-kit-dropzone.mjs.map +1 -1
- package/fesm2022/ngx-kit-form-field.mjs.map +1 -1
- package/fesm2022/ngx-kit-gallery.mjs +2 -2
- package/fesm2022/ngx-kit-gallery.mjs.map +1 -1
- package/fesm2022/ngx-kit-gradient-picker.mjs.map +1 -1
- package/fesm2022/ngx-kit-image-editor.mjs +101 -14
- package/fesm2022/ngx-kit-image-editor.mjs.map +1 -1
- package/fesm2022/ngx-kit-menu.mjs +8 -8
- package/fesm2022/ngx-kit-menu.mjs.map +1 -1
- package/fesm2022/ngx-kit-message.mjs +5 -0
- package/fesm2022/ngx-kit-message.mjs.map +1 -1
- package/fesm2022/ngx-kit-notify.mjs.map +1 -1
- package/fesm2022/ngx-kit-shared.mjs +2 -2
- package/fesm2022/ngx-kit-shared.mjs.map +1 -1
- package/fesm2022/ngx-kit-time-picker.mjs +2 -2
- package/fesm2022/ngx-kit-time-picker.mjs.map +1 -1
- package/gallery/README.md +71 -71
- package/gradient-picker/README.md +41 -41
- package/menu/README.md +85 -85
- package/message/README.md +70 -70
- package/notify/README.md +58 -58
- package/package.json +1 -1
- package/shared/README.md +117 -117
- package/time-picker/README.md +95 -95
- package/types/ngx-kit-date-picker.d.ts +302 -36
- package/types/ngx-kit-dropzone.d.ts +129 -18
- package/types/ngx-kit-image-editor.d.ts +50 -5
|
@@ -1,13 +1,22 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { OnDestroy } from '@angular/core';
|
|
2
|
+
import { OnDestroy, InjectionToken } from '@angular/core';
|
|
3
|
+
import { HttpHeaders } from '@angular/common/http';
|
|
4
|
+
import { Observable } from 'rxjs';
|
|
3
5
|
|
|
4
|
-
|
|
6
|
+
type NgxDropzoneFileStatus = 'pending' | 'accepted' | 'uploading' | 'uploaded' | 'error' | 'canceled';
|
|
7
|
+
interface NgxDropzoneFile<TResponse = any> {
|
|
5
8
|
/** شناسهی یکتا برای track کردن توی @for و امکان حذف تکی */
|
|
6
9
|
id: string;
|
|
7
10
|
file: File;
|
|
8
11
|
/** فقط برای فایلهای تصویری پر میشه (object URL) */
|
|
9
12
|
previewUrl?: string;
|
|
10
|
-
status:
|
|
13
|
+
status: NgxDropzoneFileStatus;
|
|
14
|
+
/** Upload progress, from 0 to 100. */
|
|
15
|
+
progress: number;
|
|
16
|
+
/** Response returned by the upload adapter. */
|
|
17
|
+
response?: TResponse;
|
|
18
|
+
/** Upload error, if the request failed. */
|
|
19
|
+
error?: any;
|
|
11
20
|
/** در صورت رد شدن، دلیلش */
|
|
12
21
|
rejectionReason?: NgxDropzoneRejectionReason;
|
|
13
22
|
}
|
|
@@ -17,19 +26,57 @@ interface NgxDropzoneRejectedFile {
|
|
|
17
26
|
reason: NgxDropzoneRejectionReason;
|
|
18
27
|
}
|
|
19
28
|
|
|
29
|
+
interface NgxDropzoneUploadRequest {
|
|
30
|
+
/** Target endpoint. */
|
|
31
|
+
url: string;
|
|
32
|
+
/** Multipart form field name used for the file. */
|
|
33
|
+
alias: string;
|
|
34
|
+
file: File;
|
|
35
|
+
/** Optional additional multipart fields. */
|
|
36
|
+
data?: Record<string, string | Blob | number | boolean>;
|
|
37
|
+
/** Optional request headers. */
|
|
38
|
+
headers?: HttpHeaders | Record<string, string | string[]>;
|
|
39
|
+
/** Send cookies/auth information for cross-origin requests. */
|
|
40
|
+
withCredentials?: boolean;
|
|
41
|
+
}
|
|
42
|
+
type NgxDropzoneUploadEvent<TResponse = unknown> = {
|
|
43
|
+
type: 'progress';
|
|
44
|
+
loaded: number;
|
|
45
|
+
total?: number;
|
|
46
|
+
percent: number;
|
|
47
|
+
} | {
|
|
48
|
+
type: 'response';
|
|
49
|
+
response: TResponse;
|
|
50
|
+
status: number;
|
|
51
|
+
headers?: HttpHeaders;
|
|
52
|
+
};
|
|
20
53
|
/**
|
|
21
|
-
*
|
|
22
|
-
* دیگهای، حتی shared)، signal-based و OnPush.
|
|
54
|
+
* Upload adapter used by ngx-dropzone.
|
|
23
55
|
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
56
|
+
* Implement this interface when the default HttpClient implementation is not
|
|
57
|
+
* suitable (for example, when the host application uses Axios, fetch, tus,
|
|
58
|
+
* S3 multipart upload, etc.).
|
|
59
|
+
*/
|
|
60
|
+
interface NgxDropzoneUploadService {
|
|
61
|
+
upload<TResponse = unknown>(request: NgxDropzoneUploadRequest): Observable<NgxDropzoneUploadEvent<TResponse>>;
|
|
62
|
+
}
|
|
63
|
+
interface NgxDropzoneUploadProgressEvent {
|
|
64
|
+
item: NgxDropzoneFileLike;
|
|
65
|
+
loaded: number;
|
|
66
|
+
total?: number;
|
|
67
|
+
percent: number;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Deliberately small structural type so consumers do not have to depend on a
|
|
71
|
+
* concrete response type.
|
|
32
72
|
*/
|
|
73
|
+
interface NgxDropzoneFileLike {
|
|
74
|
+
id: string;
|
|
75
|
+
file: File;
|
|
76
|
+
progress: number;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
type NgxDropzoneUploadMode = 'all' | 'single';
|
|
33
80
|
declare class NgxDropzoneComponent implements OnDestroy {
|
|
34
81
|
/** الگوی accept مثل input[type=file]: "image/*", ".pdf,.docx" و ... */
|
|
35
82
|
accept: _angular_core.InputSignal<string>;
|
|
@@ -41,16 +88,55 @@ declare class NgxDropzoneComponent implements OnDestroy {
|
|
|
41
88
|
disabled: _angular_core.InputSignal<boolean>;
|
|
42
89
|
/** نمایش لیست/پیشنمایش فایلهای انتخابشده داخل خودِ کامپوننت */
|
|
43
90
|
showFileList: _angular_core.InputSignal<boolean>;
|
|
91
|
+
/** Upload endpoint. */
|
|
92
|
+
uploadUrl: _angular_core.InputSignal<string>;
|
|
93
|
+
/** Multipart form-data field name. */
|
|
94
|
+
uploadAlias: _angular_core.InputSignal<string>;
|
|
95
|
+
/** Automatically enqueue newly accepted files for upload. */
|
|
96
|
+
autoUpload: _angular_core.InputSignal<boolean>;
|
|
97
|
+
/** Maximum number of simultaneous uploads. */
|
|
98
|
+
maxParallel: _angular_core.InputSignal<number>;
|
|
99
|
+
/**
|
|
100
|
+
* Manual upload behavior:
|
|
101
|
+
* - all: one "Upload all" action uploads all pending files.
|
|
102
|
+
* - single: every pending row gets its own Upload button.
|
|
103
|
+
*/
|
|
104
|
+
uploadMode: _angular_core.InputSignal<NgxDropzoneUploadMode>;
|
|
105
|
+
/** Extra multipart form fields sent with every file. */
|
|
106
|
+
uploadData: _angular_core.InputSignal<Record<string, string | number | boolean | Blob>>;
|
|
107
|
+
/** Optional request headers. */
|
|
108
|
+
uploadHeaders: _angular_core.InputSignal<Record<string, string | string[]>>;
|
|
109
|
+
/** Send credentials/cookies with the upload request. */
|
|
110
|
+
uploadWithCredentials: _angular_core.InputSignal<boolean>;
|
|
44
111
|
filesAdded: _angular_core.OutputEmitterRef<File[]>;
|
|
45
112
|
filesRejected: _angular_core.OutputEmitterRef<NgxDropzoneRejectedFile[]>;
|
|
46
|
-
/** کل لیست فعلی (بعد از هر تغییر) — برای binding راحتتر */
|
|
47
113
|
filesChange: _angular_core.OutputEmitterRef<File[]>;
|
|
48
|
-
|
|
114
|
+
/** Emitted when an individual upload starts. */
|
|
115
|
+
uploadStarted: _angular_core.OutputEmitterRef<NgxDropzoneFile<any>>;
|
|
116
|
+
/** Emitted for every upload progress update. */
|
|
117
|
+
uploadProgress: _angular_core.OutputEmitterRef<NgxDropzoneUploadProgressEvent>;
|
|
118
|
+
/** Emitted after a file is successfully uploaded. */
|
|
119
|
+
uploadSuccess: _angular_core.OutputEmitterRef<NgxDropzoneFile<any>>;
|
|
120
|
+
/** Emitted when an upload fails. */
|
|
121
|
+
uploadError: _angular_core.OutputEmitterRef<{
|
|
122
|
+
item: NgxDropzoneFile;
|
|
123
|
+
error: unknown;
|
|
124
|
+
}>;
|
|
125
|
+
protected readonly files: _angular_core.WritableSignal<NgxDropzoneFile<any>[]>;
|
|
49
126
|
protected readonly isDragging: _angular_core.WritableSignal<boolean>;
|
|
50
127
|
private dragCounter;
|
|
128
|
+
private readonly uploadService;
|
|
51
129
|
private readonly fileInput;
|
|
130
|
+
private readonly uploadSubscriptions;
|
|
131
|
+
private readonly uploadQueue;
|
|
132
|
+
private activeUploads;
|
|
133
|
+
private readonly activeUploadIds;
|
|
134
|
+
protected readonly pendingCount: _angular_core.Signal<number>;
|
|
135
|
+
protected readonly hasUploadConfiguration: _angular_core.Signal<boolean>;
|
|
52
136
|
protected readonly hint: _angular_core.Signal<string>;
|
|
53
137
|
protected formatSize(bytes: number): string;
|
|
138
|
+
protected isPending(item: NgxDropzoneFile): boolean;
|
|
139
|
+
protected trackById(_index: number, item: NgxDropzoneFile): string;
|
|
54
140
|
ngOnDestroy(): void;
|
|
55
141
|
protected onDragEnter(ev: DragEvent): void;
|
|
56
142
|
protected onDragOver(ev: DragEvent): void;
|
|
@@ -60,12 +146,37 @@ declare class NgxDropzoneComponent implements OnDestroy {
|
|
|
60
146
|
protected onKeydown(ev: KeyboardEvent): void;
|
|
61
147
|
protected onFileInputChange(ev: Event): void;
|
|
62
148
|
protected removeFile(id: string): void;
|
|
149
|
+
protected uploadAll(): void;
|
|
150
|
+
protected uploadSingle(id: string): void;
|
|
151
|
+
protected retryUpload(id: string): void;
|
|
63
152
|
private handleIncomingFiles;
|
|
153
|
+
private enqueueUploads;
|
|
154
|
+
private pumpQueue;
|
|
155
|
+
private startUpload;
|
|
156
|
+
private markUploadError;
|
|
157
|
+
private finishUpload;
|
|
158
|
+
private updateFile;
|
|
64
159
|
private emitCurrentFiles;
|
|
65
160
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgxDropzoneComponent, never>;
|
|
66
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgxDropzoneComponent, "ngx-dropzone", never, { "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "maxFileSize": { "alias": "maxFileSize"; "required": false; "isSignal": true; }; "maxFiles": { "alias": "maxFiles"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "showFileList": { "alias": "showFileList"; "required": false; "isSignal": true; }; }, { "filesAdded": "filesAdded"; "filesRejected": "filesRejected"; "filesChange": "filesChange"; }, never, ["[dropzone-icon]", "*"], true, never>;
|
|
161
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgxDropzoneComponent, "ngx-dropzone", never, { "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "maxFileSize": { "alias": "maxFileSize"; "required": false; "isSignal": true; }; "maxFiles": { "alias": "maxFiles"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "showFileList": { "alias": "showFileList"; "required": false; "isSignal": true; }; "uploadUrl": { "alias": "uploadUrl"; "required": false; "isSignal": true; }; "uploadAlias": { "alias": "uploadAlias"; "required": false; "isSignal": true; }; "autoUpload": { "alias": "autoUpload"; "required": false; "isSignal": true; }; "maxParallel": { "alias": "maxParallel"; "required": false; "isSignal": true; }; "uploadMode": { "alias": "uploadMode"; "required": false; "isSignal": true; }; "uploadData": { "alias": "uploadData"; "required": false; "isSignal": true; }; "uploadHeaders": { "alias": "uploadHeaders"; "required": false; "isSignal": true; }; "uploadWithCredentials": { "alias": "uploadWithCredentials"; "required": false; "isSignal": true; }; }, { "filesAdded": "filesAdded"; "filesRejected": "filesRejected"; "filesChange": "filesChange"; "uploadStarted": "uploadStarted"; "uploadProgress": "uploadProgress"; "uploadSuccess": "uploadSuccess"; "uploadError": "uploadError"; }, never, ["[dropzone-icon]", "*"], true, never>;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
declare class NgxDropzoneHttpUploadService implements NgxDropzoneUploadService {
|
|
165
|
+
private readonly http;
|
|
166
|
+
upload<TResponse = unknown>(request: NgxDropzoneUploadRequest): Observable<NgxDropzoneUploadEvent<TResponse>>;
|
|
167
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgxDropzoneHttpUploadService, never>;
|
|
168
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<NgxDropzoneHttpUploadService>;
|
|
67
169
|
}
|
|
68
170
|
|
|
171
|
+
/**
|
|
172
|
+
* Upload adapter used by ngx-dropzone.
|
|
173
|
+
*
|
|
174
|
+
* Default: Angular HttpClient.
|
|
175
|
+
* Override this token at application/component level to use Axios or any
|
|
176
|
+
* other upload implementation.
|
|
177
|
+
*/
|
|
178
|
+
declare const NGX_DROPZONE_UPLOAD_SERVICE: InjectionToken<NgxDropzoneUploadService>;
|
|
179
|
+
|
|
69
180
|
/**
|
|
70
181
|
* چک میکنه یه فایل با pattern رشتهای accept (مثل input[type=file])
|
|
71
182
|
* مطابقت داره یا نه. پشتیبانی میشه از:
|
|
@@ -80,5 +191,5 @@ declare function formatBytes(bytes: number): string;
|
|
|
80
191
|
/** استخراج فایلهای واقعی از یک DataTransfer، شامل پیمایش بازگشتیِ پوشهها (وقتی مرورگر پشتیبانی کنه) */
|
|
81
192
|
declare function extractFilesFromDataTransfer(dataTransfer: DataTransfer): Promise<File[]>;
|
|
82
193
|
|
|
83
|
-
export { NgxDropzoneComponent, extractFilesFromDataTransfer, formatBytes, matchesAccept };
|
|
84
|
-
export type { NgxDropzoneFile, NgxDropzoneRejectedFile, NgxDropzoneRejectionReason };
|
|
194
|
+
export { NGX_DROPZONE_UPLOAD_SERVICE, NgxDropzoneComponent, NgxDropzoneHttpUploadService, extractFilesFromDataTransfer, formatBytes, matchesAccept };
|
|
195
|
+
export type { NgxDropzoneFile, NgxDropzoneFileLike, NgxDropzoneFileStatus, NgxDropzoneRejectedFile, NgxDropzoneRejectionReason, NgxDropzoneUploadEvent, NgxDropzoneUploadMode, NgxDropzoneUploadProgressEvent, NgxDropzoneUploadRequest, NgxDropzoneUploadService };
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { InjectionToken } from '@angular/core';
|
|
2
3
|
|
|
3
4
|
interface NgxCropRect {
|
|
4
5
|
/** همه به پیکسلهای واقعیِ تصویر مبدأ (نه پیکسل صفحه) */
|
|
@@ -53,6 +54,27 @@ declare class NgxPointerDragDirective {
|
|
|
53
54
|
}
|
|
54
55
|
|
|
55
56
|
type Corner = 'nw' | 'ne' | 'sw' | 'se';
|
|
57
|
+
|
|
58
|
+
declare const NGX_IMAGE_EDITOR_LOCALIZATION: InjectionToken<NgxImageEditorLocalization>;
|
|
59
|
+
declare class NgxImageEditorLocalization {
|
|
60
|
+
LoadingImage: string;
|
|
61
|
+
Rotation: string;
|
|
62
|
+
Brightness: string;
|
|
63
|
+
Contrast: string;
|
|
64
|
+
Saturation: string;
|
|
65
|
+
Filter: string;
|
|
66
|
+
None: string;
|
|
67
|
+
Grayscale: string;
|
|
68
|
+
Sepia: string;
|
|
69
|
+
Invert: string;
|
|
70
|
+
Cartoon: string;
|
|
71
|
+
Cancel: string;
|
|
72
|
+
Save: string;
|
|
73
|
+
Saving: string;
|
|
74
|
+
Reset: string;
|
|
75
|
+
}
|
|
76
|
+
declare const DEFAULT_NGX_IMAGE_EDITOR_LOCALIZATION: NgxImageEditorLocalization;
|
|
77
|
+
|
|
56
78
|
/**
|
|
57
79
|
* ویرایشگر تصویر: کراپ + چرخش + روشنایی/کنتراست/اشباع + فیلترهای آماده
|
|
58
80
|
* (سیاهوسفید، سپیا، معکوس، کارتونی) + فشردهسازی خروجی. کاملاً روی Canvas
|
|
@@ -63,6 +85,15 @@ type Corner = 'nw' | 'ne' | 'sw' | 'se';
|
|
|
63
85
|
* (createWorkingCopy)، نه روی تصویر اصلی که ممکنه چند مگاپیکسل باشه — وگرنه
|
|
64
86
|
* درگکردن اسلایدرها/گوشههای کراپ رو کاربر حس تاخیر میکرد. فقط لحظهی
|
|
65
87
|
* save()، رندر نهایی از روی تصویر اصلیِ کامل انجام میشه.
|
|
88
|
+
*
|
|
89
|
+
* اندازهی صحنه (stage) با panelSize کنترل میشه: عرض همیشه ۱۰۰٪ عرضِ
|
|
90
|
+
* والدِ کامپوننته (با ResizeObserver اندازهگیری میشه، پس با تغییر سایز
|
|
91
|
+
* صفحه/layout هم زنده هماهنگ میمونه)، ارتفاع دقیقاً همون چیزیه که کاربر با
|
|
92
|
+
* panelSize میده. تصویر همیشه با یک مقیاسِ «contain» واقعی (هم بر اساس
|
|
93
|
+
* عرض، هم بر اساس ارتفاع — هرکدوم تنگتره) جا داده میشه، پس کلِ تصویر
|
|
94
|
+
* همیشه در محدودهی همین باکس دیده میشه، صرفنظر از اندازهی واقعیِ فایل.
|
|
95
|
+
* سقفِ مقیاس هم ۱ هست، یعنی تصاویر کوچیک بزرگنمایی نمیشن (که باعثِ محو
|
|
96
|
+
* شدنشون میشد).
|
|
66
97
|
*/
|
|
67
98
|
declare class NgxImageEditorComponent {
|
|
68
99
|
source: _angular_core.InputSignal<string | File | Blob | null>;
|
|
@@ -71,8 +102,14 @@ declare class NgxImageEditorComponent {
|
|
|
71
102
|
outputMaxWidth: _angular_core.InputSignal<number | undefined>;
|
|
72
103
|
outputMaxHeight: _angular_core.InputSignal<number | undefined>;
|
|
73
104
|
outputType: _angular_core.InputSignal<"image/jpeg" | "image/png" | "image/webp">;
|
|
74
|
-
/**
|
|
75
|
-
|
|
105
|
+
/**
|
|
106
|
+
* کدوم فیلترها نشون داده بشن (و به چه ترتیبی). اگه ندید، هر ۵ تا نشون داده
|
|
107
|
+
* میشن. آرایهی خالی یعنی کلِ بخشِ فیلتر مخفی بشه.
|
|
108
|
+
*/
|
|
109
|
+
filters: _angular_core.InputSignal<NgxImageFilterPreset[]>;
|
|
110
|
+
quality: _angular_core.InputSignal<number>;
|
|
111
|
+
defaultLocalization: NgxImageEditorLocalization;
|
|
112
|
+
localize: _angular_core.InputSignal<NgxImageEditorLocalization>;
|
|
76
113
|
saved: _angular_core.OutputEmitterRef<NgxImageEditorResult>;
|
|
77
114
|
cancelled: _angular_core.OutputEmitterRef<void>;
|
|
78
115
|
protected readonly loading: _angular_core.WritableSignal<boolean>;
|
|
@@ -80,16 +117,24 @@ declare class NgxImageEditorComponent {
|
|
|
80
117
|
protected readonly loadError: _angular_core.WritableSignal<string | null>;
|
|
81
118
|
private readonly originalImage;
|
|
82
119
|
private readonly workingCanvas;
|
|
120
|
+
private readonly stageWrapEl;
|
|
121
|
+
/** عرضِ واقعیِ رندرشدهی کانتینر؛ چون عرض همیشه ۱۰۰٪ (fluid) هست، باید زنده اندازهگیری بشه */
|
|
122
|
+
private readonly containerWidth;
|
|
83
123
|
protected readonly rotation: _angular_core.WritableSignal<number>;
|
|
84
124
|
protected readonly brightness: _angular_core.WritableSignal<number>;
|
|
85
125
|
protected readonly contrast: _angular_core.WritableSignal<number>;
|
|
86
126
|
protected readonly saturation: _angular_core.WritableSignal<number>;
|
|
87
127
|
protected readonly filterPreset: _angular_core.WritableSignal<NgxImageFilterPreset>;
|
|
88
|
-
protected readonly quality: _angular_core.WritableSignal<number>;
|
|
89
128
|
protected readonly crop: _angular_core.WritableSignal<NgxCropRect>;
|
|
90
129
|
protected readonly adjustments: _angular_core.Signal<NgxImageEditorAdjustments>;
|
|
130
|
+
protected readonly filterLabels: _angular_core.Signal<Record<NgxImageFilterPreset, string>>;
|
|
91
131
|
/** تصویرِ (کوچیکشدهیِ) چرخیده — پایهی نمایش صحنهی کراپ */
|
|
92
132
|
protected readonly rotatedWorkingCanvas: _angular_core.Signal<HTMLCanvasElement | null>;
|
|
133
|
+
protected readonly panelSize: _angular_core.Signal<number>;
|
|
134
|
+
/**
|
|
135
|
+
* مقیاسِ «contain» واقعی: کوچیکترینِ نسبتِ عرض و ارتفاع (هرکدوم تنگتره)
|
|
136
|
+
* تعیینکنندهست، و سقفش هم ۱ هست تا تصاویر کوچیک بزرگنمایی نشن.
|
|
137
|
+
*/
|
|
93
138
|
protected readonly displayScale: _angular_core.Signal<number>;
|
|
94
139
|
protected readonly stageImageUrl: _angular_core.Signal<string | null>;
|
|
95
140
|
protected readonly stageSize: _angular_core.Signal<{
|
|
@@ -117,7 +162,7 @@ declare class NgxImageEditorComponent {
|
|
|
117
162
|
protected cancel(): void;
|
|
118
163
|
save(): Promise<void>;
|
|
119
164
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgxImageEditorComponent, never>;
|
|
120
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgxImageEditorComponent, "ngx-image-editor", never, { "source": { "alias": "source"; "required": false; "isSignal": true; }; "aspectRatio": { "alias": "aspectRatio"; "required": false; "isSignal": true; }; "outputMaxWidth": { "alias": "outputMaxWidth"; "required": false; "isSignal": true; }; "outputMaxHeight": { "alias": "outputMaxHeight"; "required": false; "isSignal": true; }; "outputType": { "alias": "outputType"; "required": false; "isSignal": true; }; "
|
|
165
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgxImageEditorComponent, "ngx-image-editor", never, { "source": { "alias": "source"; "required": false; "isSignal": true; }; "aspectRatio": { "alias": "aspectRatio"; "required": false; "isSignal": true; }; "outputMaxWidth": { "alias": "outputMaxWidth"; "required": false; "isSignal": true; }; "outputMaxHeight": { "alias": "outputMaxHeight"; "required": false; "isSignal": true; }; "outputType": { "alias": "outputType"; "required": false; "isSignal": true; }; "filters": { "alias": "filters"; "required": false; "isSignal": true; }; "quality": { "alias": "quality"; "required": false; "isSignal": true; }; "localize": { "alias": "localize"; "required": false; "isSignal": true; }; }, { "saved": "saved"; "cancelled": "cancelled"; }, never, never, true, never>;
|
|
121
166
|
}
|
|
122
167
|
|
|
123
168
|
/** یه File/Blob/data-URL/URL رو به یک HTMLImageElement بارگذاریشده تبدیل میکنه */
|
|
@@ -171,5 +216,5 @@ declare function applyCartoonEffect(ctx: CanvasRenderingContext2D, width: number
|
|
|
171
216
|
edgeThreshold?: number;
|
|
172
217
|
}): void;
|
|
173
218
|
|
|
174
|
-
export { NgxImageEditorComponent, NgxPointerDragDirective, applyCartoonEffect, canvasToBlob, createWorkingCopy, fitWithin, loadImage, renderComposite, renderRotated };
|
|
219
|
+
export { DEFAULT_NGX_IMAGE_EDITOR_LOCALIZATION, NGX_IMAGE_EDITOR_LOCALIZATION, NgxImageEditorComponent, NgxImageEditorLocalization, NgxPointerDragDirective, applyCartoonEffect, canvasToBlob, createWorkingCopy, fitWithin, loadImage, renderComposite, renderRotated };
|
|
175
220
|
export type { NgxCropRect, NgxImageEditorAdjustments, NgxImageEditorResult, NgxImageFilterPreset, NgxPointerDragDelta };
|