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.
Files changed (51) hide show
  1. package/README.md +3 -3
  2. package/angle-selector/README.md +34 -34
  3. package/box-shadow/README.md +33 -33
  4. package/color-picker/README.md +49 -49
  5. package/data-table/README.md +113 -113
  6. package/date-picker/README.md +69 -69
  7. package/dialog/README.md +92 -92
  8. package/drawer-menu/README.md +77 -77
  9. package/dropzone/README.md +422 -60
  10. package/fesm2022/ngx-kit-angle-selector.mjs +2 -2
  11. package/fesm2022/ngx-kit-angle-selector.mjs.map +1 -1
  12. package/fesm2022/ngx-kit-box-shadow.mjs +2 -2
  13. package/fesm2022/ngx-kit-box-shadow.mjs.map +1 -1
  14. package/fesm2022/ngx-kit-color-picker.mjs +4 -4
  15. package/fesm2022/ngx-kit-color-picker.mjs.map +1 -1
  16. package/fesm2022/ngx-kit-data-table.mjs +2 -2
  17. package/fesm2022/ngx-kit-data-table.mjs.map +1 -1
  18. package/fesm2022/ngx-kit-date-picker.mjs +1322 -200
  19. package/fesm2022/ngx-kit-date-picker.mjs.map +1 -1
  20. package/fesm2022/ngx-kit-dialog.mjs +2 -2
  21. package/fesm2022/ngx-kit-dialog.mjs.map +1 -1
  22. package/fesm2022/ngx-kit-drawer-menu.mjs +2 -2
  23. package/fesm2022/ngx-kit-drawer-menu.mjs.map +1 -1
  24. package/fesm2022/ngx-kit-dropzone.mjs +273 -28
  25. package/fesm2022/ngx-kit-dropzone.mjs.map +1 -1
  26. package/fesm2022/ngx-kit-form-field.mjs.map +1 -1
  27. package/fesm2022/ngx-kit-gallery.mjs +2 -2
  28. package/fesm2022/ngx-kit-gallery.mjs.map +1 -1
  29. package/fesm2022/ngx-kit-gradient-picker.mjs.map +1 -1
  30. package/fesm2022/ngx-kit-image-editor.mjs +101 -14
  31. package/fesm2022/ngx-kit-image-editor.mjs.map +1 -1
  32. package/fesm2022/ngx-kit-menu.mjs +8 -8
  33. package/fesm2022/ngx-kit-menu.mjs.map +1 -1
  34. package/fesm2022/ngx-kit-message.mjs +5 -0
  35. package/fesm2022/ngx-kit-message.mjs.map +1 -1
  36. package/fesm2022/ngx-kit-notify.mjs.map +1 -1
  37. package/fesm2022/ngx-kit-shared.mjs +2 -2
  38. package/fesm2022/ngx-kit-shared.mjs.map +1 -1
  39. package/fesm2022/ngx-kit-time-picker.mjs +2 -2
  40. package/fesm2022/ngx-kit-time-picker.mjs.map +1 -1
  41. package/gallery/README.md +71 -71
  42. package/gradient-picker/README.md +41 -41
  43. package/menu/README.md +85 -85
  44. package/message/README.md +70 -70
  45. package/notify/README.md +58 -58
  46. package/package.json +1 -1
  47. package/shared/README.md +117 -117
  48. package/time-picker/README.md +95 -95
  49. package/types/ngx-kit-date-picker.d.ts +302 -36
  50. package/types/ngx-kit-dropzone.d.ts +129 -18
  51. 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
- interface NgxDropzoneFile {
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: 'pending' | 'accepted' | 'rejected';
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
- * ناحیه‌ی درگ‌اند‌دراپِ فایل — کاملاً مستقل (بدون وابستگی به هیچ lib
22
- * دیگه‌ای، حتی shared)، signal-based و OnPush.
54
+ * Upload adapter used by ngx-dropzone.
23
55
  *
24
- * ویژگی‌های مهمی که معمولاً پیاده‌سازی‌های ساده‌ی dropzone ندارن:
25
- * - شمارنده‌ی dragenter/dragleave: چون dragleave برای فرزندهای داخل
26
- * dropzone هم شلیک می‌شه، پیاده‌سازی‌های ساده موقع درگ‌کردن روی متن/آیکون
27
- * داخل ناحیه، حالت "درگ" رو اشتباهی خاموش می‌کنن (چشمک‌زدن). این‌جا با
28
- * شمارنده حل شده.
29
- * - پیمایش بازگشتیِ پوشه‌ها (وقتی کاربر یه پوشه رو درگ کنه، نه فقط فایل).
30
- * - قابل‌دسترسی با کیبورد (focusable + Enter/Space).
31
- * - پاک‌سازی object URL پیش‌نمایش‌ها روی حذف/destroy (وگرنه نشتی حافظه‌ست).
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
- protected readonly files: _angular_core.WritableSignal<NgxDropzoneFile[]>;
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
- displayMaxWidth: _angular_core.InputSignal<number>;
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; }; "displayMaxWidth": { "alias": "displayMaxWidth"; "required": false; "isSignal": true; }; }, { "saved": "saved"; "cancelled": "cancelled"; }, never, never, true, never>;
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 };