@recursyve/ngx-material-components 19.0.0-beta.15 → 20.0.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 (60) hide show
  1. package/chip-list/index.d.ts +41 -2
  2. package/common/index.d.ts +24 -4
  3. package/dropzone/index.d.ts +125 -6
  4. package/fesm2022/recursyve-ngx-material-components-chip-list.mjs +13 -13
  5. package/fesm2022/recursyve-ngx-material-components-chip-list.mjs.map +1 -1
  6. package/fesm2022/recursyve-ngx-material-components-common.mjs +3 -3
  7. package/fesm2022/recursyve-ngx-material-components-common.mjs.map +1 -1
  8. package/fesm2022/recursyve-ngx-material-components-dropzone.mjs +35 -35
  9. package/fesm2022/recursyve-ngx-material-components-dropzone.mjs.map +1 -1
  10. package/fesm2022/recursyve-ngx-material-components-form-field-error.mjs +6 -6
  11. package/fesm2022/recursyve-ngx-material-components-form-field-error.mjs.map +1 -1
  12. package/fesm2022/recursyve-ngx-material-components-loading.mjs +10 -10
  13. package/fesm2022/recursyve-ngx-material-components-loading.mjs.map +1 -1
  14. package/fesm2022/recursyve-ngx-material-components-typeahead.mjs +46 -46
  15. package/fesm2022/recursyve-ngx-material-components-typeahead.mjs.map +1 -1
  16. package/form-field-error/index.d.ts +53 -4
  17. package/index.d.ts +3 -1
  18. package/loading/index.d.ts +31 -3
  19. package/package.json +7 -7
  20. package/typeahead/index.d.ts +212 -4
  21. package/chip-list/chip-list.d.ts +0 -26
  22. package/chip-list/icons/clear/chip-list-items-clear-icon.d.ts +0 -5
  23. package/chip-list/items/chip-list-items.d.ts +0 -14
  24. package/common/provider.d.ts +0 -3
  25. package/common/translater/constant.d.ts +0 -2
  26. package/common/translater/options.d.ts +0 -7
  27. package/common/translater/translate-pipe.d.ts +0 -8
  28. package/common/translater/translater.d.ts +0 -1
  29. package/dropzone/config.d.ts +0 -42
  30. package/dropzone/constant.d.ts +0 -2
  31. package/dropzone/dropzone.d.ts +0 -42
  32. package/dropzone/dropzone.directive.d.ts +0 -12
  33. package/dropzone/icons/delete/delete-icon.component.d.ts +0 -5
  34. package/dropzone/icons/file/file-icon.component.d.ts +0 -5
  35. package/dropzone/icons/image/image-icon.component.d.ts +0 -5
  36. package/dropzone/models.d.ts +0 -20
  37. package/dropzone/options.d.ts +0 -4
  38. package/dropzone/pipes/file-size.pipe.d.ts +0 -10
  39. package/dropzone/preview/file-preview.d.ts +0 -14
  40. package/dropzone/provider.d.ts +0 -3
  41. package/form-field-error/constant.d.ts +0 -3
  42. package/form-field-error/error-transformer.d.ts +0 -13
  43. package/form-field-error/form-field-error.d.ts +0 -8
  44. package/form-field-error/form-field-error.directive.d.ts +0 -17
  45. package/form-field-error/options.d.ts +0 -9
  46. package/form-field-error/provider.d.ts +0 -3
  47. package/loading/constant.d.ts +0 -2
  48. package/loading/loading-spinner.d.ts +0 -9
  49. package/loading/loading.d.ts +0 -13
  50. package/loading/options.d.ts +0 -4
  51. package/loading/provider.d.ts +0 -3
  52. package/typeahead/async-typeahead.d.ts +0 -30
  53. package/typeahead/constants.d.ts +0 -2
  54. package/typeahead/icons/search/typeahead-search-icon.d.ts +0 -5
  55. package/typeahead/provider.d.ts +0 -3
  56. package/typeahead/providers/async-typeahead.provider.d.ts +0 -11
  57. package/typeahead/providers/async-typeahead.service.d.ts +0 -46
  58. package/typeahead/providers/index.d.ts +0 -2
  59. package/typeahead/typeahead-base.d.ts +0 -111
  60. package/typeahead/typeahead.d.ts +0 -12
@@ -1 +1 @@
1
- {"version":3,"file":"recursyve-ngx-material-components-dropzone.mjs","sources":["../../../src/material-components/dropzone/dropzone.directive.ts","../../../src/material-components/dropzone/constant.ts","../../../src/material-components/dropzone/icons/file/file-icon.component.ts","../../../src/material-components/dropzone/icons/file/file-icon.template.svg","../../../src/material-components/dropzone/icons/image/image-icon.component.ts","../../../src/material-components/dropzone/icons/image/image-icon.template.svg","../../../src/material-components/dropzone/models.ts","../../../src/material-components/dropzone/pipes/file-size.pipe.ts","../../../src/material-components/dropzone/icons/delete/delete-icon.component.ts","../../../src/material-components/dropzone/icons/delete/delete-icon.template.svg","../../../src/material-components/dropzone/preview/file-preview.ts","../../../src/material-components/dropzone/preview/file-preview.html","../../../src/material-components/dropzone/dropzone.ts","../../../src/material-components/dropzone/dropzone.html","../../../src/material-components/dropzone/provider.ts","../../../src/material-components/dropzone/index.ts","../../../src/material-components/dropzone/recursyve-ngx-material-components-dropzone.ts"],"sourcesContent":["import { Directive, EventEmitter, HostBinding, HostListener, output, Output } from \"@angular/core\";\n\n@Directive({\n selector: \"[niceDropzone]\",\n standalone: true\n})\nexport class NiceDropzoneDirective {\n @HostBinding(\"class.file-over\")\n public fileOver!: boolean;\n\n @Output()\n public filesDropped = new EventEmitter<FileList>();\n\n public files = output()\n\n // Dragover listener\n @HostListener(\"dragover\", [\"$event\"])\n public onDragOver(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.fileOver = true;\n }\n\n // Dragleave listener\n @HostListener(\"dragleave\", [\"$event\"])\n public onDragLeave(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.fileOver = false;\n }\n\n // Drop listener\n @HostListener(\"drop\", [\"$event\"])\n public ondrop(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.fileOver = false;\n\n if (!event.dataTransfer) {\n return;\n }\n\n const files = event.dataTransfer.files;\n if (files.length > 0) {\n this.filesDropped.emit(files);\n }\n }\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const NICE_DROPZONE_TRANSLATION_KEYS = new InjectionToken(\"nice_dropzone_translation_keys\");\n","import { Component } from \"@angular/core\";\n\n@Component({\n selector: \"nice-dropzone-file-icon\",\n templateUrl: \"./file-icon.template.svg\"\n})\nexport class NiceDropzoneFileIcon {}\n","<svg fill=\"none\" viewBox=\"-1.25 -1.25 40 40\" height=\"40\" width=\"40\">\n <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M5.859375 36.328125h25.78125c1.294375 0 2.34375 -1.049375 2.34375 -2.34375V12.6890625c-0.00015625 -0.621171875 -0.246875 -1.2168750000000002 -0.6859375 -1.65625l-9.175 -9.175c-0.439375 -0.43909062499999996 -1.03515625 -0.6858046875 -1.65625 -0.6859375H5.859375c-1.2765624999999998 0 -2.34375 1.0671875000000002 -2.34375 2.34375v30.46875c0 1.2765624999999998 1.0671875000000002 2.34375 2.34375 2.34375Z\" stroke-width=\"2.5\"></path>\n <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M33.984375 12.890625h-9.375c-0.6215625 0 -1.2178125 -0.24693750000000003 -1.65734375 -0.68646875S22.265625 11.16846875 22.265625 10.546875v-9.375\" stroke-width=\"2.5\"></path>\n</svg>","import { Component } from \"@angular/core\";\n\n@Component({\n selector: \"nice-dropzone-image-icon\",\n templateUrl: \"./image-icon.template.svg\"\n})\nexport class NiceDropzoneImageIcon {}\n","<svg width=\"40\" height=\"43\" viewBox=\"0 0 40 43\" fill=\"none\">\n <path d=\"M29.333 1.5H2.66634C1.92996 1.5 1.33301 2.09695 1.33301 2.83333V33.0556C1.33301 33.7919 1.92996 34.3889 2.66634 34.3889H29.333C30.0694 34.3889 30.6663 33.7919 30.6663 33.0556V2.83333C30.6663 2.09695 30.0694 1.5 29.333 1.5Z\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M38.6667 11.2778V40.1667C38.6621 40.5189 38.5201 40.8554 38.2711 41.1044C38.022 41.3535 37.6855 41.4954 37.3333 41.5001H12\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M30.6663 27.2778H1.33301\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M7.55566 27.2778L16.8001 14.0689C17.0316 13.7366 17.3357 13.4614 17.6895 13.2642C18.0432 13.0669 18.4372 12.9528 18.8415 12.9306C19.2459 12.9083 19.6501 12.9784 20.0233 13.1356C20.3965 13.2928 20.7291 13.533 20.9957 13.8378L30.6668 25.0556\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M9.33268 6.8335C9.8601 6.8335 10.3757 6.98989 10.8142 7.28291C11.2527 7.57593 11.5945 7.9924 11.7964 8.47967C11.9982 8.96694 12.051 9.50312 11.9481 10.0204C11.8452 10.5377 11.5912 11.0128 11.2183 11.3858C10.8454 11.7587 10.3702 12.0127 9.85292 12.1156C9.33564 12.2185 8.79946 12.1657 8.31219 11.9638C7.82492 11.762 7.40845 11.4202 7.11543 10.9817C6.82241 10.5432 6.66602 10.0276 6.66602 9.50016C6.66602 8.79292 6.94697 8.11464 7.44706 7.61454C7.94716 7.11445 8.62544 6.8335 9.33268 6.8335\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>\n","export type NiceFileDimensions = {\n width: number;\n height: number;\n ratio: number;\n};\n\nexport type NiceLocalFile = {\n file: File;\n name: string;\n size?: number;\n dimensions?: NiceFileDimensions;\n};\n\nexport type NiceRemoteFile = {\n id: string | number;\n name: string;\n url: string;\n size?: number;\n};\n\nexport type NiceSelectedFiles = NiceLocalFile | NiceRemoteFile;\n\nexport function isLocalFile(file: NiceSelectedFiles): file is NiceLocalFile {\n return \"file\" in file;\n}\n\nexport function isRemoteFile(file: NiceSelectedFiles): file is NiceRemoteFile {\n return \"id\" in file;\n}\n","import { inject, Pipe, PipeTransform } from \"@angular/core\";\nimport { NiceTranslater, NICE_COMPONENTS_TRANSLATER } from \"@recursyve/ngx-material-components/common\";\n\nimport { NICE_DROPZONE_TRANSLATION_KEYS } from \"../constant\";\nimport { NiceDropzoneTranslationKeyConfig } from \"../config\";\n\n@Pipe({\n name: \"niceFileSize\"\n})\nexport class FileSizePipe implements PipeTransform {\n private readonly units = [\"B\", \"KB\", \"MB\", \"GB\"] as const;\n\n private readonly translater = inject<NiceTranslater>(NICE_COMPONENTS_TRANSLATER);\n private readonly translationKeys = inject<NiceDropzoneTranslationKeyConfig>(NICE_DROPZONE_TRANSLATION_KEYS);\n\n public transform(bytes: number | null | undefined, precision = 0): string {\n const defaultUnit = this.translater(this.translationKeys.size.units.B);\n\n if (!bytes) {\n return `0 ${defaultUnit}`;\n }\n\n const unitIndex = Math.floor(Math.log(bytes) / Math.log(1000));\n const boundedUnitIndex = Math.min(unitIndex, this.units.length - 1);\n\n const size = bytes / Math.pow(1000, boundedUnitIndex);\n\n const unit = this.translater(this.translationKeys.size.units[this.units[boundedUnitIndex]]);\n return `${size.toFixed(precision)} ${unit}`;\n }\n}\n","import { Component } from \"@angular/core\";\n\n@Component({\n selector: \"nice-dropzone-delete-icon\",\n templateUrl: \"./delete-icon.template.svg\"\n})\nexport class NiceDropzoneDeleteIcon {}\n","<svg viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M12 0a12 12 0 1 0 12 12A12 12 0 0 0 12 0Zm5.49 16.07a1 1 0 0 1 -1.41 1.42l-3.9 -3.9a0.25 0.25 0 0 0 -0.36 0l-3.9 3.9a1 1 0 1 1 -1.41 -1.42l3.9 -3.89a0.25 0.25 0 0 0 0 -0.36l-3.9 -3.9a1 1 0 0 1 1.41 -1.41l3.9 3.9a0.25 0.25 0 0 0 0.36 0l3.9 -3.9a1 1 0 0 1 1.41 1.41l-3.9 3.9a0.25 0.25 0 0 0 0 0.36Z\" fill=\"currentColor\" stroke-width=\"1\"></path>\n</svg>","import { Component, computed, inject, input, output } from \"@angular/core\";\nimport { NiceTranslatePipe } from \"@recursyve/ngx-material-components/common\";\n\nimport { NICE_DROPZONE_TRANSLATION_KEYS } from \"../constant\";\nimport { NiceDropzoneModes } from \"../dropzone\";\nimport { NiceDropzoneTranslationKeyConfig } from \"../config\";\nimport { isLocalFile, NiceFileDimensions, NiceSelectedFiles } from \"../models\";\nimport { FileSizePipe } from \"../pipes/file-size.pipe\";\nimport { NiceDropzoneDeleteIcon } from \"../icons/delete/delete-icon.component\";\nimport { NiceDropzoneFileIcon } from \"../icons/file/file-icon.component\";\n\n@Component({\n selector: \"nice-dropzone-file-preview\",\n templateUrl: \"./file-preview.html\",\n styleUrls: [\"./file-preview.scss\"],\n imports: [NiceDropzoneDeleteIcon, NiceTranslatePipe, FileSizePipe, NiceDropzoneFileIcon],\n host: {\n style: \"flex: 1 1 auto;\"\n }\n})\nexport class NiceDropzoneFilePreview {\n public readonly file = input.required<NiceSelectedFiles>();\n public readonly mode = input.required<NiceDropzoneModes>();\n\n protected readonly clickDelete = output<void>();\n\n protected readonly isImage = computed(() => this.mode() === \"image\");\n protected readonly imageDimensions = computed<NiceFileDimensions | null>(() => {\n const file = this.file();\n if (isLocalFile(file)) {\n return file.dimensions ?? null;\n }\n\n return null;\n });\n protected readonly imageUrl = computed<string>(() => {\n const file = this.file();\n if (isLocalFile(file)) {\n return URL.createObjectURL(file.file);\n }\n\n return file.url;\n });\n\n protected _translationKeys = inject<NiceDropzoneTranslationKeyConfig>(NICE_DROPZONE_TRANSLATION_KEYS);\n}\n","<div class=\"nice-dropzone-preview\">\n @if (isImage()) {\n <img class=\"nice-dropzone-preview-image\" alt=\"\" draggable=\"false\" [src]=\"imageUrl()\" />\n } @else {\n <div class=\"nice-dropzone-preview-file\">\n <nice-dropzone-file-icon />\n </div>\n }\n\n <div class=\"nice-dropzone-preview-file-info\">\n <span class=\"mat-body-medium\">{{ file().name }}</span>\n\n @if (imageDimensions(); as dimension) {\n <span class=\"mat-label-medium\">\n {{ `${dimension.width}x${dimension.height}` }} {{ _translationKeys.ratio.pixels | niceTranslate }}\n </span>\n }\n\n @if (file().size; as size) {\n <span class=\"mat-label-medium\">{{ size | niceFileSize }}</span>\n }\n </div>\n\n <div class=\"nice-dropzone-preview-actions\">\n <button class=\"nice-dropzone-preview-actions-delete\" (click)=\"$event.stopPropagation(); clickDelete.emit()\">\n <nice-dropzone-delete-icon />\n </button>\n </div>\n</div>\n","import { coerceBooleanProperty } from \"@angular/cdk/coercion\";\nimport {\n Component,\n effect,\n ElementRef,\n forwardRef,\n inject,\n input,\n OnDestroy,\n signal,\n viewChild,\n ViewEncapsulation\n} from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { MatRippleLoader } from \"@angular/material/core\";\nimport { NiceTranslatePipe } from \"@recursyve/ngx-material-components/common\";\n\nimport { NICE_DROPZONE_TRANSLATION_KEYS } from \"./constant\";\nimport {\n NiceDropzoneFileSizeConfig,\n NiceDropzoneImageConfig,\n NiceDropzoneTranslationKeyConfig\n} from \"./config\";\nimport { NiceDropzoneDirective } from \"./dropzone.directive\";\nimport { NiceDropzoneFileIcon } from \"./icons/file/file-icon.component\";\nimport { NiceDropzoneImageIcon } from \"./icons/image/image-icon.component\";\nimport { NiceFileDimensions, NiceSelectedFiles } from \"./models\";\nimport { NiceDropzoneFilePreview } from \"./preview/file-preview\";\n\nexport const niceDropzoneModes = [\"image\", \"file\", \"all\"] as const;\nexport type NiceDropzoneModes = (typeof niceDropzoneModes)[number];\n\n@Component({\n selector: \"nice-dropzone\",\n templateUrl: \"dropzone.html\",\n styleUrl: \"dropzone.scss\",\n imports: [\n NiceDropzoneDirective,\n NiceDropzoneImageIcon,\n NiceDropzoneFileIcon,\n NiceDropzoneFilePreview,\n NiceTranslatePipe\n ],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NiceDropzone),\n multi: true\n }\n ]\n})\nexport class NiceDropzone implements OnDestroy, ControlValueAccessor {\n public readonly mode = input<NiceDropzoneModes>(\"all\");\n public readonly multiple = input(false, { transform: coerceBooleanProperty });\n public readonly disabled = input(false, { transform: coerceBooleanProperty });\n public readonly accept = input<string[]>();\n public readonly config = input<NiceDropzoneImageConfig>();\n public readonly maxFileSize = input<NiceDropzoneFileSizeConfig>();\n\n protected readonly _elementRef = viewChild(\"element\", { read: ElementRef });\n protected readonly _inputRef = viewChild<ElementRef<HTMLInputElement>>(\"fileInput\");\n\n /**\n * Handles the lazy creation of the MatButton ripple.\n * Used to improve the initial load time of large applications.\n */\n protected readonly _rippleLoader: MatRippleLoader = inject(MatRippleLoader);\n protected readonly _translationKeys = inject<NiceDropzoneTranslationKeyConfig>(NICE_DROPZONE_TRANSLATION_KEYS);\n\n protected readonly files = signal<NiceSelectedFiles[]>([]);\n\n protected _disabled = false;\n\n private _onChange!: (value: NiceSelectedFiles | NiceSelectedFiles[] | null) => void;\n private _value: NiceSelectedFiles | NiceSelectedFiles[] | null = null;\n\n constructor() {\n effect(() => {\n const elementRef = this._elementRef();\n if (!elementRef) {\n return;\n }\n\n this._rippleLoader.configureRipple(elementRef.nativeElement, { className: \"nice-dropzone-ripple\" });\n });\n\n effect(() => {\n this._disabled = this.disabled();\n });\n }\n\n public ngOnDestroy(): void {\n this._rippleLoader.destroyRipple(this._elementRef()?.nativeElement);\n }\n\n public writeValue(value: NiceSelectedFiles | NiceSelectedFiles[] | null): void {\n this._value = value;\n if (value) {\n this.files.set(Array.isArray(value) ? value : [value]);\n }\n }\n\n public registerOnChange(fn: (value: NiceSelectedFiles | NiceSelectedFiles[] | null) => void): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(): void {\n // Do nothing\n }\n\n public setDisabledState(disabled: boolean): void {\n this._disabled = disabled;\n }\n\n public onFileChanged(event: Event): void {\n const files = (event.target as HTMLInputElement).files;\n if (!files) {\n return;\n }\n\n this.onFilesDropped(files);\n }\n\n public async onFilesDropped(fileList: FileList): Promise<void> {\n if (this.multiple() && !this._value) {\n this._value = [];\n }\n\n const accept = this.accept();\n for (const file of Array.from(fileList)) {\n if (accept && !accept.includes(file.type)) {\n continue;\n }\n\n const isImage = file.type.startsWith(\"image/\");\n const value = {\n file,\n name: file.name,\n size: file.size,\n ...(isImage && { dimensions: await this.getImageDimension(file) })\n } satisfies NiceSelectedFiles;\n if (this.multiple()) {\n (this._value as NiceSelectedFiles[]).push(value);\n } else {\n this._value = value;\n this.propagateChanges(this._value);\n return;\n }\n }\n\n if (this._value) {\n this.propagateChanges(this._value);\n }\n\n this.resetInput();\n }\n\n public onFileDelete(index: number): void {\n if (this.multiple()) {\n const files = [...this.files()];\n files.splice(index, 1);\n this.propagateChanges(files);\n } else {\n this.propagateChanges(null);\n this.resetInput();\n }\n }\n\n protected propagateChanges(value: NiceSelectedFiles | NiceSelectedFiles[] | null): void {\n if (value) {\n this.files.set(Array.isArray(value) ? value : [value]);\n } else {\n this.files.set([]);\n }\n\n this._value = value;\n this._onChange(value);\n }\n\n protected getImageDimension(file: File): Promise<NiceFileDimensions> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n\n reader.onload = () => {\n const image = new Image();\n image.onload = () => {\n resolve({\n width: image.width,\n height: image.height,\n ratio: image.width / image.height\n });\n };\n image.onerror = reject;\n image.src = reader.result as string;\n };\n\n reader.readAsDataURL(file);\n });\n }\n\n protected resetInput(): void {\n const input = this._inputRef();\n if (!input) {\n return;\n }\n\n input.nativeElement.value = \"\";\n }\n}\n","<div\n class=\"nice-dropzone-container\"\n>\n <div\n #element\n role=\"none\"\n class=\"nice-dropzone\"\n [class.nice-dropzone-disabled]=\"_disabled\"\n [class.nice-dropzone-multiple]=\"multiple()\"\n [class.nice-dropzone-single]=\"!multiple()\"\n [class.nice-dropzone-image]=\"mode() === 'image'\"\n [class.nice-dropzone-file]=\"mode() === 'file'\"\n [class.nice-dropzone-all]=\"mode() === 'all'\"\n [class.nice-dropzone-selected]=\"files().length > 0\"\n\n niceDropzone\n (filesDropped)=\"onFilesDropped($event)\"\n (click)=\"fileInput.click()\"\n (keyup.enter)=\"fileInput.click()\"\n >\n <div class=\"nice-dropzone-ripple\"></div>\n\n @if (multiple() || (!multiple() && !files().length)) {\n <div class=\"nice-dropzone-placeholder\">\n <div class=\"nice-dropzone-icon\">\n @if (mode() === \"image\") {\n <nice-dropzone-image-icon />\n } @else {\n <nice-dropzone-file-icon />\n }\n </div>\n\n <div class=\"nice-dropzone-content\">\n <span class=\"nice-dropzone-content-title\">\n @if (mode() === \"image\") {\n @if (multiple()) {\n {{ _translationKeys.upload.images | niceTranslate }}\n } @else {\n {{ _translationKeys.upload.image | niceTranslate }}\n }\n } @else {\n @if (multiple()) {\n {{ _translationKeys.upload.files | niceTranslate }}\n } @else {\n {{ _translationKeys.upload.file | niceTranslate }}\n }\n }\n </span>\n\n <div class=\"nice-dropzone-content-description\">\n @if (accept()?.length) {\n <span>\n {{ _translationKeys.format.label | niceTranslate }}:&nbsp;\n\n <span>\n {{ accept()?.join(\", \") }}\n </span>\n </span>\n }\n\n @if (mode() === \"image\" && config()?.recommendedSize; as recommendedSize) {\n <span>\n {{ _translationKeys.ratio.label | niceTranslate }}:&nbsp;\n\n <span>{{ recommendedSize.width }}x{{ recommendedSize.height }} {{ _translationKeys.ratio.pixels | niceTranslate }}</span>\n </span>\n }\n\n @if (maxFileSize(); as maxFileSize) {\n <span>\n {{ _translationKeys.size.label | niceTranslate }}:&nbsp;\n\n <span>{{ maxFileSize.size }} {{ _translationKeys.size.units[maxFileSize.unit] | niceTranslate }}</span>\n </span>\n }\n </div>\n </div>\n </div>\n } @else {\n <nice-dropzone-file-preview [file]=\"files()[0]\" [mode]=\"mode()\" (clickDelete)=\"onFileDelete(0)\" />\n }\n </div>\n\n @if (multiple()) {\n <div class=\"nice-dropzone-multiple-files-preview\">\n @for (file of files(); track file) {\n <nice-dropzone-file-preview [file]=\"file\" [mode]=\"mode()\" (clickDelete)=\"onFileDelete($index)\" />\n }\n </div>\n }\n</div>\n\n<input #fileInput style=\"display: none;\" type=\"file\" [accept]=\"accept()\" [multiple]=\"multiple()\" (change)=\"onFileChanged($event)\" />\n","import { Provider } from \"@angular/core\";\nimport { NICE_DROPZONE_TRANSLATION_KEYS } from \"./constant\";\nimport { NiceDropzoneTranslationKeyConfig } from \"./config\";\nimport { NiceDropzoneOptions } from \"./options\";\n\nconst defaultTranslationKeys: NiceDropzoneTranslationKeyConfig = {\n upload: {\n file: \"components.dropzone.upload.file\",\n files: \"components.dropzone.upload.files\",\n image: \"components.dropzone.upload.image\",\n images: \"components.dropzone.upload.images\"\n },\n format: {\n label: \"components.dropzone.format.label\"\n },\n ratio: {\n label: \"components.dropzone.ratio.label\",\n pixels: \"components.dropzone.ratio.pixels\"\n },\n size: {\n label: \"components.dropzone.size.label\",\n units: {\n B: \"components.dropzone.size.units.B\",\n KB: \"components.dropzone.size.units.KB\",\n MB: \"components.dropzone.size.units.MB\",\n GB: \"components.dropzone.size.units.GB\"\n }\n }\n};\n\nexport function provideDropzone(options?: NiceDropzoneOptions): Provider[] {\n return [\n {\n provide: NICE_DROPZONE_TRANSLATION_KEYS,\n useValue: options?.translationKeys ?? defaultTranslationKeys\n }\n ];\n}\n","/*\n * Public API Surface of dropzone\n */\n\nexport * from \"./dropzone.directive\";\nexport * from \"./dropzone\";\nexport * from \"./config\";\nexport * from \"./models\";\nexport * from \"./options\";\nexport * from \"./provider\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;MAMa,qBAAqB,CAAA;AAEvB,IAAA,QAAQ;AAGR,IAAA,YAAY,GAAG,IAAI,YAAY,EAAY;IAE3C,KAAK,GAAG,MAAM,EAAE;;AAIhB,IAAA,UAAU,CAAC,KAAgB,EAAA;QAC9B,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;;;AAKjB,IAAA,WAAW,CAAC,KAAgB,EAAA;QAC/B,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;;;AAKlB,IAAA,MAAM,CAAC,KAAgB,EAAA;QAC1B,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AAErB,QAAA,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;YACrB;;AAGJ,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK;AACtC,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAClB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;;;wGAtC5B,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE;AACf,iBAAA;8BAGU,QAAQ,EAAA,CAAA;sBADd,WAAW;uBAAC,iBAAiB;gBAIvB,YAAY,EAAA,CAAA;sBADlB;gBAOM,UAAU,EAAA,CAAA;sBADhB,YAAY;uBAAC,UAAU,EAAE,CAAC,QAAQ,CAAC;gBAS7B,WAAW,EAAA,CAAA;sBADjB,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;gBAS9B,MAAM,EAAA,CAAA;sBADZ,YAAY;uBAAC,MAAM,EAAE,CAAC,QAAQ,CAAC;;;AC9B7B,MAAM,8BAA8B,GAAG,IAAI,cAAc,CAAC,gCAAgC,CAAC;;MCIrF,oBAAoB,CAAA;wGAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,mFCNjC,42BAGM,EAAA,CAAA;;4FDGO,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;+BACI,yBAAyB,EAAA,QAAA,EAAA,42BAAA,EAAA;;;MEG1B,qBAAqB,CAAA;wGAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,oFCNlC,2tDAOA,EAAA,CAAA;;4FDDa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;+BACI,0BAA0B,EAAA,QAAA,EAAA,2tDAAA,EAAA;;;AEmBlC,SAAU,WAAW,CAAC,IAAuB,EAAA;IAC/C,OAAO,MAAM,IAAI,IAAI;AACzB;AAEM,SAAU,YAAY,CAAC,IAAuB,EAAA;IAChD,OAAO,IAAI,IAAI,IAAI;AACvB;;MCnBa,YAAY,CAAA;IACJ,KAAK,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU;AAExC,IAAA,UAAU,GAAG,MAAM,CAAiB,0BAA0B,CAAC;AAC/D,IAAA,eAAe,GAAG,MAAM,CAAmC,8BAA8B,CAAC;AAEpG,IAAA,SAAS,CAAC,KAAgC,EAAE,SAAS,GAAG,CAAC,EAAA;AAC5D,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAEtE,IAAI,CAAC,KAAK,EAAE;YACR,OAAO,CAAA,EAAA,EAAK,WAAW,CAAA,CAAE;;QAG7B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9D,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAEnE,QAAA,MAAM,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,gBAAgB,CAAC;QAErD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC3F,OAAO,CAAA,EAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE;;wGAnBtC,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA;;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE;AACT,iBAAA;;;MCFY,sBAAsB,CAAA;wGAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,qFCNnC,wdAEM,EAAA,CAAA;;4FDIO,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,SAAS;+BACI,2BAA2B,EAAA,QAAA,EAAA,wdAAA,EAAA;;;MEiB5B,uBAAuB,CAAA;AAChB,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAqB;AAC1C,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAqB;IAEvC,WAAW,GAAG,MAAM,EAAQ;AAE5B,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,KAAK,OAAO,CAAC;AACjD,IAAA,eAAe,GAAG,QAAQ,CAA4B,MAAK;AAC1E,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,QAAA,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE;AACnB,YAAA,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI;;AAGlC,QAAA,OAAO,IAAI;AACf,KAAC,CAAC;AACiB,IAAA,QAAQ,GAAG,QAAQ,CAAS,MAAK;AAChD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,QAAA,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE;YACnB,OAAO,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;;QAGzC,OAAO,IAAI,CAAC,GAAG;AACnB,KAAC,CAAC;AAEQ,IAAA,gBAAgB,GAAG,MAAM,CAAmC,8BAA8B,CAAC;wGAxB5F,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpBpC,0iCA6BA,EDdc,MAAA,EAAA,CAAA,kwCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,sBAAsB,iEAAE,iBAAiB,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,YAAY,EAAA,IAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,oBAAoB,EAAA,QAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,CAAA;;4FAK9E,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBATnC,SAAS;+BACI,4BAA4B,EAAA,OAAA,EAG7B,CAAC,sBAAsB,EAAE,iBAAiB,EAAE,YAAY,EAAE,oBAAoB,CAAC,EAClF,IAAA,EAAA;AACF,wBAAA,KAAK,EAAE;AACV,qBAAA,EAAA,QAAA,EAAA,0iCAAA,EAAA,MAAA,EAAA,CAAA,kwCAAA,CAAA,EAAA;;;AEWQ,MAAA,iBAAiB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK;MAuB3C,YAAY,CAAA;AACL,IAAA,IAAI,GAAG,KAAK,CAAoB,KAAK,CAAC;IACtC,QAAQ,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAC;IAC7D,QAAQ,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAC;IAC7D,MAAM,GAAG,KAAK,EAAY;IAC1B,MAAM,GAAG,KAAK,EAA2B;IACzC,WAAW,GAAG,KAAK,EAA8B;IAE9C,WAAW,GAAG,SAAS,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AACxD,IAAA,SAAS,GAAG,SAAS,CAA+B,WAAW,CAAC;AAEnF;;;AAGG;AACgB,IAAA,aAAa,GAAoB,MAAM,CAAC,eAAe,CAAC;AACxD,IAAA,gBAAgB,GAAG,MAAM,CAAmC,8BAA8B,CAAC;AAE3F,IAAA,KAAK,GAAG,MAAM,CAAsB,EAAE,CAAC;IAEhD,SAAS,GAAG,KAAK;AAEnB,IAAA,SAAS;IACT,MAAM,GAAmD,IAAI;AAErE,IAAA,WAAA,GAAA;QACI,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE;YACrC,IAAI,CAAC,UAAU,EAAE;gBACb;;AAGJ,YAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,UAAU,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,sBAAsB,EAAE,CAAC;AACvG,SAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACR,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE;AACpC,SAAC,CAAC;;IAGC,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC;;AAGhE,IAAA,UAAU,CAAC,KAAqD,EAAA;AACnE,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;QACnB,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;;;AAIvD,IAAA,gBAAgB,CAAC,EAAmE,EAAA;AACvF,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;IAGhB,iBAAiB,GAAA;;;AAIjB,IAAA,gBAAgB,CAAC,QAAiB,EAAA;AACrC,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;;AAGtB,IAAA,aAAa,CAAC,KAAY,EAAA;AAC7B,QAAA,MAAM,KAAK,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK;QACtD,IAAI,CAAC,KAAK,EAAE;YACR;;AAGJ,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;;IAGvB,MAAM,cAAc,CAAC,QAAkB,EAAA;QAC1C,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACjC,YAAA,IAAI,CAAC,MAAM,GAAG,EAAE;;AAGpB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;QAC5B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AACrC,YAAA,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACvC;;YAGJ,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;AAC9C,YAAA,MAAM,KAAK,GAAG;gBACV,IAAI;gBACJ,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,gBAAA,IAAI,OAAO,IAAI,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE;aACxC;AAC7B,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AAChB,gBAAA,IAAI,CAAC,MAA8B,CAAC,IAAI,CAAC,KAAK,CAAC;;iBAC7C;AACH,gBAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;gBAClC;;;AAIR,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACb,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;;QAGtC,IAAI,CAAC,UAAU,EAAE;;AAGd,IAAA,YAAY,CAAC,KAAa,EAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACjB,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAC/B,YAAA,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACtB,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;;aACzB;AACH,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;YAC3B,IAAI,CAAC,UAAU,EAAE;;;AAIf,IAAA,gBAAgB,CAAC,KAAqD,EAAA;QAC5E,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;;aACnD;AACH,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;;AAGtB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;;AAGf,IAAA,iBAAiB,CAAC,IAAU,EAAA;QAClC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACnC,YAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE;AAE/B,YAAA,MAAM,CAAC,MAAM,GAAG,MAAK;AACjB,gBAAA,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE;AACzB,gBAAA,KAAK,CAAC,MAAM,GAAG,MAAK;AAChB,oBAAA,OAAO,CAAC;wBACJ,KAAK,EAAE,KAAK,CAAC,KAAK;wBAClB,MAAM,EAAE,KAAK,CAAC,MAAM;AACpB,wBAAA,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;AAC9B,qBAAA,CAAC;AACN,iBAAC;AACD,gBAAA,KAAK,CAAC,OAAO,GAAG,MAAM;AACtB,gBAAA,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC,MAAgB;AACvC,aAAC;AAED,YAAA,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;AAC9B,SAAC,CAAC;;IAGI,UAAU,GAAA;AAChB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;QAC9B,IAAI,CAAC,KAAK,EAAE;YACR;;AAGJ,QAAA,KAAK,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;;wGA3JzB,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,YAAY,EARV,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,YAAY,CAAC;AAC3C,gBAAA,KAAK,EAAE;AACV;AACJ,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAU6D,UAAU,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5D5E,85HA6FA,EAAA,MAAA,EAAA,CAAA,i+EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDxDQ,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,qBAAqB,EAAA,QAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,oBAAoB,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,uBAAuB,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACvB,iBAAiB,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAWZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBApBxB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAGhB,OAAA,EAAA;wBACL,qBAAqB;wBACrB,qBAAqB;wBACrB,oBAAoB;wBACpB,uBAAuB;wBACvB;qBACH,EACc,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAC1B,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,kBAAkB,CAAC;AAC3C,4BAAA,KAAK,EAAE;AACV;AACJ,qBAAA,EAAA,QAAA,EAAA,85HAAA,EAAA,MAAA,EAAA,CAAA,i+EAAA,CAAA,EAAA;;;AE7CL,MAAM,sBAAsB,GAAqC;AAC7D,IAAA,MAAM,EAAE;AACJ,QAAA,IAAI,EAAE,iCAAiC;AACvC,QAAA,KAAK,EAAE,kCAAkC;AACzC,QAAA,KAAK,EAAE,kCAAkC;AACzC,QAAA,MAAM,EAAE;AACX,KAAA;AACD,IAAA,MAAM,EAAE;AACJ,QAAA,KAAK,EAAE;AACV,KAAA;AACD,IAAA,KAAK,EAAE;AACH,QAAA,KAAK,EAAE,iCAAiC;AACxC,QAAA,MAAM,EAAE;AACX,KAAA;AACD,IAAA,IAAI,EAAE;AACF,QAAA,KAAK,EAAE,gCAAgC;AACvC,QAAA,KAAK,EAAE;AACH,YAAA,CAAC,EAAE,kCAAkC;AACrC,YAAA,EAAE,EAAE,mCAAmC;AACvC,YAAA,EAAE,EAAE,mCAAmC;AACvC,YAAA,EAAE,EAAE;AACP;AACJ;CACJ;AAEK,SAAU,eAAe,CAAC,OAA6B,EAAA;IACzD,OAAO;AACH,QAAA;AACI,YAAA,OAAO,EAAE,8BAA8B;AACvC,YAAA,QAAQ,EAAE,OAAO,EAAE,eAAe,IAAI;AACzC;KACJ;AACL;;ACrCA;;AAEG;;ACFH;;AAEG;;;;"}
1
+ {"version":3,"file":"recursyve-ngx-material-components-dropzone.mjs","sources":["../../../src/material-components/dropzone/dropzone.directive.ts","../../../src/material-components/dropzone/constant.ts","../../../src/material-components/dropzone/icons/file/file-icon.component.ts","../../../src/material-components/dropzone/icons/file/file-icon.template.svg","../../../src/material-components/dropzone/icons/image/image-icon.component.ts","../../../src/material-components/dropzone/icons/image/image-icon.template.svg","../../../src/material-components/dropzone/models.ts","../../../src/material-components/dropzone/pipes/file-size.pipe.ts","../../../src/material-components/dropzone/icons/delete/delete-icon.component.ts","../../../src/material-components/dropzone/icons/delete/delete-icon.template.svg","../../../src/material-components/dropzone/preview/file-preview.ts","../../../src/material-components/dropzone/preview/file-preview.html","../../../src/material-components/dropzone/dropzone.ts","../../../src/material-components/dropzone/dropzone.html","../../../src/material-components/dropzone/provider.ts","../../../src/material-components/dropzone/index.ts","../../../src/material-components/dropzone/recursyve-ngx-material-components-dropzone.ts"],"sourcesContent":["import { Directive, EventEmitter, HostBinding, HostListener, output, Output } from \"@angular/core\";\n\n@Directive({\n selector: \"[niceDropzone]\",\n standalone: true\n})\nexport class NiceDropzoneDirective {\n @HostBinding(\"class.file-over\")\n public fileOver!: boolean;\n\n @Output()\n public filesDropped = new EventEmitter<FileList>();\n\n public files = output()\n\n // Dragover listener\n @HostListener(\"dragover\", [\"$event\"])\n public onDragOver(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.fileOver = true;\n }\n\n // Dragleave listener\n @HostListener(\"dragleave\", [\"$event\"])\n public onDragLeave(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.fileOver = false;\n }\n\n // Drop listener\n @HostListener(\"drop\", [\"$event\"])\n public ondrop(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.fileOver = false;\n\n if (!event.dataTransfer) {\n return;\n }\n\n const files = event.dataTransfer.files;\n if (files.length > 0) {\n this.filesDropped.emit(files);\n }\n }\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const NICE_DROPZONE_TRANSLATION_KEYS = new InjectionToken(\"nice_dropzone_translation_keys\");\n","import { Component } from \"@angular/core\";\n\n@Component({\n selector: \"nice-dropzone-file-icon\",\n templateUrl: \"./file-icon.template.svg\"\n})\nexport class NiceDropzoneFileIcon {}\n","<svg fill=\"none\" viewBox=\"-1.25 -1.25 40 40\" height=\"40\" width=\"40\">\n <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M5.859375 36.328125h25.78125c1.294375 0 2.34375 -1.049375 2.34375 -2.34375V12.6890625c-0.00015625 -0.621171875 -0.246875 -1.2168750000000002 -0.6859375 -1.65625l-9.175 -9.175c-0.439375 -0.43909062499999996 -1.03515625 -0.6858046875 -1.65625 -0.6859375H5.859375c-1.2765624999999998 0 -2.34375 1.0671875000000002 -2.34375 2.34375v30.46875c0 1.2765624999999998 1.0671875000000002 2.34375 2.34375 2.34375Z\" stroke-width=\"2.5\"></path>\n <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M33.984375 12.890625h-9.375c-0.6215625 0 -1.2178125 -0.24693750000000003 -1.65734375 -0.68646875S22.265625 11.16846875 22.265625 10.546875v-9.375\" stroke-width=\"2.5\"></path>\n</svg>","import { Component } from \"@angular/core\";\n\n@Component({\n selector: \"nice-dropzone-image-icon\",\n templateUrl: \"./image-icon.template.svg\"\n})\nexport class NiceDropzoneImageIcon {}\n","<svg width=\"40\" height=\"43\" viewBox=\"0 0 40 43\" fill=\"none\">\n <path d=\"M29.333 1.5H2.66634C1.92996 1.5 1.33301 2.09695 1.33301 2.83333V33.0556C1.33301 33.7919 1.92996 34.3889 2.66634 34.3889H29.333C30.0694 34.3889 30.6663 33.7919 30.6663 33.0556V2.83333C30.6663 2.09695 30.0694 1.5 29.333 1.5Z\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M38.6667 11.2778V40.1667C38.6621 40.5189 38.5201 40.8554 38.2711 41.1044C38.022 41.3535 37.6855 41.4954 37.3333 41.5001H12\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M30.6663 27.2778H1.33301\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M7.55566 27.2778L16.8001 14.0689C17.0316 13.7366 17.3357 13.4614 17.6895 13.2642C18.0432 13.0669 18.4372 12.9528 18.8415 12.9306C19.2459 12.9083 19.6501 12.9784 20.0233 13.1356C20.3965 13.2928 20.7291 13.533 20.9957 13.8378L30.6668 25.0556\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M9.33268 6.8335C9.8601 6.8335 10.3757 6.98989 10.8142 7.28291C11.2527 7.57593 11.5945 7.9924 11.7964 8.47967C11.9982 8.96694 12.051 9.50312 11.9481 10.0204C11.8452 10.5377 11.5912 11.0128 11.2183 11.3858C10.8454 11.7587 10.3702 12.0127 9.85292 12.1156C9.33564 12.2185 8.79946 12.1657 8.31219 11.9638C7.82492 11.762 7.40845 11.4202 7.11543 10.9817C6.82241 10.5432 6.66602 10.0276 6.66602 9.50016C6.66602 8.79292 6.94697 8.11464 7.44706 7.61454C7.94716 7.11445 8.62544 6.8335 9.33268 6.8335\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>\n","export type NiceFileDimensions = {\n width: number;\n height: number;\n ratio: number;\n};\n\nexport type NiceLocalFile = {\n file: File;\n name: string;\n size?: number;\n dimensions?: NiceFileDimensions;\n};\n\nexport type NiceRemoteFile = {\n id: string | number;\n name: string;\n url: string;\n size?: number;\n};\n\nexport type NiceSelectedFiles = NiceLocalFile | NiceRemoteFile;\n\nexport function isLocalFile(file: NiceSelectedFiles): file is NiceLocalFile {\n return \"file\" in file;\n}\n\nexport function isRemoteFile(file: NiceSelectedFiles): file is NiceRemoteFile {\n return \"id\" in file;\n}\n","import { inject, Pipe, PipeTransform } from \"@angular/core\";\nimport { NiceTranslater, NICE_COMPONENTS_TRANSLATER } from \"@recursyve/ngx-material-components/common\";\n\nimport { NICE_DROPZONE_TRANSLATION_KEYS } from \"../constant\";\nimport { NiceDropzoneTranslationKeyConfig } from \"../config\";\n\n@Pipe({\n name: \"niceFileSize\"\n})\nexport class FileSizePipe implements PipeTransform {\n private readonly units = [\"B\", \"KB\", \"MB\", \"GB\"] as const;\n\n private readonly translater = inject<NiceTranslater>(NICE_COMPONENTS_TRANSLATER);\n private readonly translationKeys = inject<NiceDropzoneTranslationKeyConfig>(NICE_DROPZONE_TRANSLATION_KEYS);\n\n public transform(bytes: number | null | undefined, precision = 0): string {\n const defaultUnit = this.translater(this.translationKeys.size.units.B);\n\n if (!bytes) {\n return `0 ${defaultUnit}`;\n }\n\n const unitIndex = Math.floor(Math.log(bytes) / Math.log(1000));\n const boundedUnitIndex = Math.min(unitIndex, this.units.length - 1);\n\n const size = bytes / Math.pow(1000, boundedUnitIndex);\n\n const unit = this.translater(this.translationKeys.size.units[this.units[boundedUnitIndex]]);\n return `${size.toFixed(precision)} ${unit}`;\n }\n}\n","import { Component } from \"@angular/core\";\n\n@Component({\n selector: \"nice-dropzone-delete-icon\",\n templateUrl: \"./delete-icon.template.svg\"\n})\nexport class NiceDropzoneDeleteIcon {}\n","<svg viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M12 0a12 12 0 1 0 12 12A12 12 0 0 0 12 0Zm5.49 16.07a1 1 0 0 1 -1.41 1.42l-3.9 -3.9a0.25 0.25 0 0 0 -0.36 0l-3.9 3.9a1 1 0 1 1 -1.41 -1.42l3.9 -3.89a0.25 0.25 0 0 0 0 -0.36l-3.9 -3.9a1 1 0 0 1 1.41 -1.41l3.9 3.9a0.25 0.25 0 0 0 0.36 0l3.9 -3.9a1 1 0 0 1 1.41 1.41l-3.9 3.9a0.25 0.25 0 0 0 0 0.36Z\" fill=\"currentColor\" stroke-width=\"1\"></path>\n</svg>","import { Component, computed, inject, input, output } from \"@angular/core\";\nimport { NiceTranslatePipe } from \"@recursyve/ngx-material-components/common\";\n\nimport { NICE_DROPZONE_TRANSLATION_KEYS } from \"../constant\";\nimport { NiceDropzoneModes } from \"../dropzone\";\nimport { NiceDropzoneTranslationKeyConfig } from \"../config\";\nimport { isLocalFile, NiceFileDimensions, NiceSelectedFiles } from \"../models\";\nimport { FileSizePipe } from \"../pipes/file-size.pipe\";\nimport { NiceDropzoneDeleteIcon } from \"../icons/delete/delete-icon.component\";\nimport { NiceDropzoneFileIcon } from \"../icons/file/file-icon.component\";\n\n@Component({\n selector: \"nice-dropzone-file-preview\",\n templateUrl: \"./file-preview.html\",\n styleUrls: [\"./file-preview.scss\"],\n imports: [NiceDropzoneDeleteIcon, NiceTranslatePipe, FileSizePipe, NiceDropzoneFileIcon],\n host: {\n style: \"flex: 1 1 auto;\"\n }\n})\nexport class NiceDropzoneFilePreview {\n public readonly file = input.required<NiceSelectedFiles>();\n public readonly mode = input.required<NiceDropzoneModes>();\n\n protected readonly clickDelete = output<void>();\n\n protected readonly isImage = computed(() => this.mode() === \"image\");\n protected readonly imageDimensions = computed<NiceFileDimensions | null>(() => {\n const file = this.file();\n if (isLocalFile(file)) {\n return file.dimensions ?? null;\n }\n\n return null;\n });\n protected readonly imageUrl = computed<string>(() => {\n const file = this.file();\n if (isLocalFile(file)) {\n return URL.createObjectURL(file.file);\n }\n\n return file.url;\n });\n\n protected _translationKeys = inject<NiceDropzoneTranslationKeyConfig>(NICE_DROPZONE_TRANSLATION_KEYS);\n}\n","<div class=\"nice-dropzone-preview\">\n @if (isImage()) {\n <img class=\"nice-dropzone-preview-image\" alt=\"\" draggable=\"false\" [src]=\"imageUrl()\" />\n } @else {\n <div class=\"nice-dropzone-preview-file\">\n <nice-dropzone-file-icon />\n </div>\n }\n\n <div class=\"nice-dropzone-preview-file-info\">\n <span class=\"mat-body-medium\">{{ file().name }}</span>\n\n @if (imageDimensions(); as dimension) {\n <span class=\"mat-label-medium\">\n {{ `${dimension.width}x${dimension.height}` }} {{ _translationKeys.ratio.pixels | niceTranslate }}\n </span>\n }\n\n @if (file().size; as size) {\n <span class=\"mat-label-medium\">{{ size | niceFileSize }}</span>\n }\n </div>\n\n <div class=\"nice-dropzone-preview-actions\">\n <button class=\"nice-dropzone-preview-actions-delete\" (click)=\"$event.stopPropagation(); clickDelete.emit()\">\n <nice-dropzone-delete-icon />\n </button>\n </div>\n</div>\n","import { coerceBooleanProperty } from \"@angular/cdk/coercion\";\nimport {\n Component,\n effect,\n ElementRef,\n forwardRef,\n inject,\n input,\n OnDestroy,\n signal,\n viewChild,\n ViewEncapsulation\n} from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { MatRippleLoader } from \"@angular/material/core\";\nimport { NiceTranslatePipe } from \"@recursyve/ngx-material-components/common\";\n\nimport { NICE_DROPZONE_TRANSLATION_KEYS } from \"./constant\";\nimport {\n NiceDropzoneFileSizeConfig,\n NiceDropzoneImageConfig,\n NiceDropzoneTranslationKeyConfig\n} from \"./config\";\nimport { NiceDropzoneDirective } from \"./dropzone.directive\";\nimport { NiceDropzoneFileIcon } from \"./icons/file/file-icon.component\";\nimport { NiceDropzoneImageIcon } from \"./icons/image/image-icon.component\";\nimport { NiceFileDimensions, NiceSelectedFiles } from \"./models\";\nimport { NiceDropzoneFilePreview } from \"./preview/file-preview\";\n\nexport const niceDropzoneModes = [\"image\", \"file\", \"all\"] as const;\nexport type NiceDropzoneModes = (typeof niceDropzoneModes)[number];\n\n@Component({\n selector: \"nice-dropzone\",\n templateUrl: \"dropzone.html\",\n styleUrl: \"dropzone.scss\",\n imports: [\n NiceDropzoneDirective,\n NiceDropzoneImageIcon,\n NiceDropzoneFileIcon,\n NiceDropzoneFilePreview,\n NiceTranslatePipe\n ],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NiceDropzone),\n multi: true\n }\n ]\n})\nexport class NiceDropzone implements OnDestroy, ControlValueAccessor {\n public readonly mode = input<NiceDropzoneModes>(\"all\");\n public readonly multiple = input(false, { transform: coerceBooleanProperty });\n public readonly disabled = input(false, { transform: coerceBooleanProperty });\n public readonly accept = input<string[]>();\n public readonly config = input<NiceDropzoneImageConfig>();\n public readonly maxFileSize = input<NiceDropzoneFileSizeConfig>();\n\n protected readonly _elementRef = viewChild(\"element\", { read: ElementRef });\n protected readonly _inputRef = viewChild<ElementRef<HTMLInputElement>>(\"fileInput\");\n\n /**\n * Handles the lazy creation of the MatButton ripple.\n * Used to improve the initial load time of large applications.\n */\n protected readonly _rippleLoader: MatRippleLoader = inject(MatRippleLoader);\n protected readonly _translationKeys = inject<NiceDropzoneTranslationKeyConfig>(NICE_DROPZONE_TRANSLATION_KEYS);\n\n protected readonly files = signal<NiceSelectedFiles[]>([]);\n\n protected _disabled = false;\n\n private _onChange!: (value: NiceSelectedFiles | NiceSelectedFiles[] | null) => void;\n private _value: NiceSelectedFiles | NiceSelectedFiles[] | null = null;\n\n constructor() {\n effect(() => {\n const elementRef = this._elementRef();\n if (!elementRef) {\n return;\n }\n\n this._rippleLoader.configureRipple(elementRef.nativeElement, { className: \"nice-dropzone-ripple\" });\n });\n\n effect(() => {\n this._disabled = this.disabled();\n });\n }\n\n public ngOnDestroy(): void {\n this._rippleLoader.destroyRipple(this._elementRef()?.nativeElement);\n }\n\n public writeValue(value: NiceSelectedFiles | NiceSelectedFiles[] | null): void {\n this._value = value;\n if (value) {\n this.files.set(Array.isArray(value) ? value : [value]);\n }\n }\n\n public registerOnChange(fn: (value: NiceSelectedFiles | NiceSelectedFiles[] | null) => void): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(): void {\n // Do nothing\n }\n\n public setDisabledState(disabled: boolean): void {\n this._disabled = disabled;\n }\n\n public onFileChanged(event: Event): void {\n const files = (event.target as HTMLInputElement).files;\n if (!files) {\n return;\n }\n\n this.onFilesDropped(files);\n }\n\n public async onFilesDropped(fileList: FileList): Promise<void> {\n if (this.multiple() && !this._value) {\n this._value = [];\n }\n\n const accept = this.accept();\n for (const file of Array.from(fileList)) {\n if (accept && !accept.includes(file.type)) {\n continue;\n }\n\n const isImage = file.type.startsWith(\"image/\");\n const value = {\n file,\n name: file.name,\n size: file.size,\n ...(isImage && { dimensions: await this.getImageDimension(file) })\n } satisfies NiceSelectedFiles;\n if (this.multiple()) {\n (this._value as NiceSelectedFiles[]).push(value);\n } else {\n this._value = value;\n this.propagateChanges(this._value);\n return;\n }\n }\n\n if (this._value) {\n this.propagateChanges(this._value);\n }\n\n this.resetInput();\n }\n\n public onFileDelete(index: number): void {\n if (this.multiple()) {\n const files = [...this.files()];\n files.splice(index, 1);\n this.propagateChanges(files);\n } else {\n this.propagateChanges(null);\n this.resetInput();\n }\n }\n\n protected propagateChanges(value: NiceSelectedFiles | NiceSelectedFiles[] | null): void {\n if (value) {\n this.files.set(Array.isArray(value) ? value : [value]);\n } else {\n this.files.set([]);\n }\n\n this._value = value;\n this._onChange(value);\n }\n\n protected getImageDimension(file: File): Promise<NiceFileDimensions> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n\n reader.onload = () => {\n const image = new Image();\n image.onload = () => {\n resolve({\n width: image.width,\n height: image.height,\n ratio: image.width / image.height\n });\n };\n image.onerror = reject;\n image.src = reader.result as string;\n };\n\n reader.readAsDataURL(file);\n });\n }\n\n protected resetInput(): void {\n const input = this._inputRef();\n if (!input) {\n return;\n }\n\n input.nativeElement.value = \"\";\n }\n}\n","<div\n class=\"nice-dropzone-container\"\n>\n <div\n #element\n role=\"none\"\n class=\"nice-dropzone\"\n [class.nice-dropzone-disabled]=\"_disabled\"\n [class.nice-dropzone-multiple]=\"multiple()\"\n [class.nice-dropzone-single]=\"!multiple()\"\n [class.nice-dropzone-image]=\"mode() === 'image'\"\n [class.nice-dropzone-file]=\"mode() === 'file'\"\n [class.nice-dropzone-all]=\"mode() === 'all'\"\n [class.nice-dropzone-selected]=\"files().length > 0\"\n\n niceDropzone\n (filesDropped)=\"onFilesDropped($event)\"\n (click)=\"fileInput.click()\"\n (keyup.enter)=\"fileInput.click()\"\n >\n <div class=\"nice-dropzone-ripple\"></div>\n\n @if (multiple() || (!multiple() && !files().length)) {\n <div class=\"nice-dropzone-placeholder\">\n <div class=\"nice-dropzone-icon\">\n @if (mode() === \"image\") {\n <nice-dropzone-image-icon />\n } @else {\n <nice-dropzone-file-icon />\n }\n </div>\n\n <div class=\"nice-dropzone-content\">\n <span class=\"nice-dropzone-content-title\">\n @if (mode() === \"image\") {\n @if (multiple()) {\n {{ _translationKeys.upload.images | niceTranslate }}\n } @else {\n {{ _translationKeys.upload.image | niceTranslate }}\n }\n } @else {\n @if (multiple()) {\n {{ _translationKeys.upload.files | niceTranslate }}\n } @else {\n {{ _translationKeys.upload.file | niceTranslate }}\n }\n }\n </span>\n\n <div class=\"nice-dropzone-content-description\">\n @if (accept()?.length) {\n <span>\n {{ _translationKeys.format.label | niceTranslate }}:&nbsp;\n\n <span>\n {{ accept()?.join(\", \") }}\n </span>\n </span>\n }\n\n @if (mode() === \"image\" && config()?.recommendedSize; as recommendedSize) {\n <span>\n {{ _translationKeys.ratio.label | niceTranslate }}:&nbsp;\n\n <span>{{ recommendedSize.width }}x{{ recommendedSize.height }} {{ _translationKeys.ratio.pixels | niceTranslate }}</span>\n </span>\n }\n\n @if (maxFileSize(); as maxFileSize) {\n <span>\n {{ _translationKeys.size.label | niceTranslate }}:&nbsp;\n\n <span>{{ maxFileSize.size }} {{ _translationKeys.size.units[maxFileSize.unit] | niceTranslate }}</span>\n </span>\n }\n </div>\n </div>\n </div>\n } @else {\n <nice-dropzone-file-preview [file]=\"files()[0]\" [mode]=\"mode()\" (clickDelete)=\"onFileDelete(0)\" />\n }\n </div>\n\n @if (multiple()) {\n <div class=\"nice-dropzone-multiple-files-preview\">\n @for (file of files(); track file) {\n <nice-dropzone-file-preview [file]=\"file\" [mode]=\"mode()\" (clickDelete)=\"onFileDelete($index)\" />\n }\n </div>\n }\n</div>\n\n<input #fileInput style=\"display: none;\" type=\"file\" [accept]=\"accept()\" [multiple]=\"multiple()\" (change)=\"onFileChanged($event)\" />\n","import { Provider } from \"@angular/core\";\nimport { NICE_DROPZONE_TRANSLATION_KEYS } from \"./constant\";\nimport { NiceDropzoneTranslationKeyConfig } from \"./config\";\nimport { NiceDropzoneOptions } from \"./options\";\n\nconst defaultTranslationKeys: NiceDropzoneTranslationKeyConfig = {\n upload: {\n file: \"components.dropzone.upload.file\",\n files: \"components.dropzone.upload.files\",\n image: \"components.dropzone.upload.image\",\n images: \"components.dropzone.upload.images\"\n },\n format: {\n label: \"components.dropzone.format.label\"\n },\n ratio: {\n label: \"components.dropzone.ratio.label\",\n pixels: \"components.dropzone.ratio.pixels\"\n },\n size: {\n label: \"components.dropzone.size.label\",\n units: {\n B: \"components.dropzone.size.units.B\",\n KB: \"components.dropzone.size.units.KB\",\n MB: \"components.dropzone.size.units.MB\",\n GB: \"components.dropzone.size.units.GB\"\n }\n }\n};\n\nexport function provideDropzone(options?: NiceDropzoneOptions): Provider[] {\n return [\n {\n provide: NICE_DROPZONE_TRANSLATION_KEYS,\n useValue: options?.translationKeys ?? defaultTranslationKeys\n }\n ];\n}\n","/*\n * Public API Surface of dropzone\n */\n\nexport * from \"./dropzone.directive\";\nexport * from \"./dropzone\";\nexport * from \"./config\";\nexport * from \"./models\";\nexport * from \"./options\";\nexport * from \"./provider\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;MAMa,qBAAqB,CAAA;AAEvB,IAAA,QAAQ;AAGR,IAAA,YAAY,GAAG,IAAI,YAAY,EAAY;IAE3C,KAAK,GAAG,MAAM,EAAE;;AAIhB,IAAA,UAAU,CAAC,KAAgB,EAAA;QAC9B,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;IACxB;;AAIO,IAAA,WAAW,CAAC,KAAgB,EAAA;QAC/B,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;IACzB;;AAIO,IAAA,MAAM,CAAC,KAAgB,EAAA;QAC1B,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AAErB,QAAA,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;YACrB;QACJ;AAEA,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK;AACtC,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAClB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;QACjC;IACJ;uGAxCS,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE;AACf,iBAAA;8BAGU,QAAQ,EAAA,CAAA;sBADd,WAAW;uBAAC,iBAAiB;gBAIvB,YAAY,EAAA,CAAA;sBADlB;gBAOM,UAAU,EAAA,CAAA;sBADhB,YAAY;uBAAC,UAAU,EAAE,CAAC,QAAQ,CAAC;gBAS7B,WAAW,EAAA,CAAA;sBADjB,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;gBAS9B,MAAM,EAAA,CAAA;sBADZ,YAAY;uBAAC,MAAM,EAAE,CAAC,QAAQ,CAAC;;;AC9B7B,MAAM,8BAA8B,GAAG,IAAI,cAAc,CAAC,gCAAgC,CAAC;;MCIrF,oBAAoB,CAAA;uGAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,mFCNjC,42BAGM,EAAA,CAAA;;2FDGO,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;+BACI,yBAAyB,EAAA,QAAA,EAAA,42BAAA,EAAA;;;MEG1B,qBAAqB,CAAA;uGAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,oFCNlC,2tDAOA,EAAA,CAAA;;2FDDa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;+BACI,0BAA0B,EAAA,QAAA,EAAA,2tDAAA,EAAA;;;AEmBlC,SAAU,WAAW,CAAC,IAAuB,EAAA;IAC/C,OAAO,MAAM,IAAI,IAAI;AACzB;AAEM,SAAU,YAAY,CAAC,IAAuB,EAAA;IAChD,OAAO,IAAI,IAAI,IAAI;AACvB;;MCnBa,YAAY,CAAA;IACJ,KAAK,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU;AAExC,IAAA,UAAU,GAAG,MAAM,CAAiB,0BAA0B,CAAC;AAC/D,IAAA,eAAe,GAAG,MAAM,CAAmC,8BAA8B,CAAC;AAEpG,IAAA,SAAS,CAAC,KAAgC,EAAE,SAAS,GAAG,CAAC,EAAA;AAC5D,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAEtE,IAAI,CAAC,KAAK,EAAE;YACR,OAAO,CAAA,EAAA,EAAK,WAAW,CAAA,CAAE;QAC7B;QAEA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9D,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAEnE,QAAA,MAAM,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,gBAAgB,CAAC;QAErD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC3F,OAAO,CAAA,EAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE;IAC/C;uGApBS,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE;AACT,iBAAA;;;MCFY,sBAAsB,CAAA;uGAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,qFCNnC,wdAEM,EAAA,CAAA;;2FDIO,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,SAAS;+BACI,2BAA2B,EAAA,QAAA,EAAA,wdAAA,EAAA;;;MEiB5B,uBAAuB,CAAA;AAChB,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,+CAAqB;AAC1C,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,+CAAqB;IAEvC,WAAW,GAAG,MAAM,EAAQ;AAE5B,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,KAAK,OAAO,mDAAC;AACjD,IAAA,eAAe,GAAG,QAAQ,CAA4B,MAAK;AAC1E,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,QAAA,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE;AACnB,YAAA,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI;QAClC;AAEA,QAAA,OAAO,IAAI;AACf,IAAA,CAAC,2DAAC;AACiB,IAAA,QAAQ,GAAG,QAAQ,CAAS,MAAK;AAChD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,QAAA,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE;YACnB,OAAO,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;QACzC;QAEA,OAAO,IAAI,CAAC,GAAG;AACnB,IAAA,CAAC,oDAAC;AAEQ,IAAA,gBAAgB,GAAG,MAAM,CAAmC,8BAA8B,CAAC;uGAxB5F,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpBpC,0iCA6BA,EAAA,MAAA,EAAA,CAAA,kwCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDdc,sBAAsB,sEAAmC,oBAAoB,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAArD,iBAAiB,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,YAAY,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,CAAA;;2FAKxD,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBATnC,SAAS;+BACI,4BAA4B,EAAA,OAAA,EAG7B,CAAC,sBAAsB,EAAE,iBAAiB,EAAE,YAAY,EAAE,oBAAoB,CAAC,EAAA,IAAA,EAClF;AACF,wBAAA,KAAK,EAAE;AACV,qBAAA,EAAA,QAAA,EAAA,0iCAAA,EAAA,MAAA,EAAA,CAAA,kwCAAA,CAAA,EAAA;;;AEWE,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK;MAuB3C,YAAY,CAAA;AACL,IAAA,IAAI,GAAG,KAAK,CAAoB,KAAK,gDAAC;AACtC,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,4CAAI,SAAS,EAAE,qBAAqB,EAAA,CAAA,GAAA,CAAlC,EAAE,SAAS,EAAE,qBAAqB,EAAE,GAAC;AAC7D,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,4CAAI,SAAS,EAAE,qBAAqB,EAAA,CAAA,GAAA,CAAlC,EAAE,SAAS,EAAE,qBAAqB,EAAE,GAAC;IAC7D,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAY;IAC1B,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAA2B;IACzC,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAA8B;AAE9C,IAAA,WAAW,GAAG,SAAS,CAAC,SAAS,+CAAI,IAAI,EAAE,UAAU,EAAA,CAAA,GAAA,CAAlB,EAAE,IAAI,EAAE,UAAU,EAAE,GAAC;AACxD,IAAA,SAAS,GAAG,SAAS,CAA+B,WAAW,qDAAC;AAEnF;;;AAGG;AACgB,IAAA,aAAa,GAAoB,MAAM,CAAC,eAAe,CAAC;AACxD,IAAA,gBAAgB,GAAG,MAAM,CAAmC,8BAA8B,CAAC;AAE3F,IAAA,KAAK,GAAG,MAAM,CAAsB,EAAE,iDAAC;IAEhD,SAAS,GAAG,KAAK;AAEnB,IAAA,SAAS;IACT,MAAM,GAAmD,IAAI;AAErE,IAAA,WAAA,GAAA;QACI,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE;YACrC,IAAI,CAAC,UAAU,EAAE;gBACb;YACJ;AAEA,YAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,UAAU,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,sBAAsB,EAAE,CAAC;AACvG,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACR,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE;AACpC,QAAA,CAAC,CAAC;IACN;IAEO,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC;IACvE;AAEO,IAAA,UAAU,CAAC,KAAqD,EAAA;AACnE,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;QACnB,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1D;IACJ;AAEO,IAAA,gBAAgB,CAAC,EAAmE,EAAA;AACvF,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACvB;IAEO,iBAAiB,GAAA;;IAExB;AAEO,IAAA,gBAAgB,CAAC,QAAiB,EAAA;AACrC,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;IAC7B;AAEO,IAAA,aAAa,CAAC,KAAY,EAAA;AAC7B,QAAA,MAAM,KAAK,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK;QACtD,IAAI,CAAC,KAAK,EAAE;YACR;QACJ;AAEA,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;IAC9B;IAEO,MAAM,cAAc,CAAC,QAAkB,EAAA;QAC1C,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACjC,YAAA,IAAI,CAAC,MAAM,GAAG,EAAE;QACpB;AAEA,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;QAC5B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AACrC,YAAA,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACvC;YACJ;YAEA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;AAC9C,YAAA,MAAM,KAAK,GAAG;gBACV,IAAI;gBACJ,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,gBAAA,IAAI,OAAO,IAAI,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE;aACxC;AAC7B,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AAChB,gBAAA,IAAI,CAAC,MAA8B,CAAC,IAAI,CAAC,KAAK,CAAC;YACpD;iBAAO;AACH,gBAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;gBAClC;YACJ;QACJ;AAEA,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACb,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;QACtC;QAEA,IAAI,CAAC,UAAU,EAAE;IACrB;AAEO,IAAA,YAAY,CAAC,KAAa,EAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACjB,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAC/B,YAAA,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACtB,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;QAChC;aAAO;AACH,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;YAC3B,IAAI,CAAC,UAAU,EAAE;QACrB;IACJ;AAEU,IAAA,gBAAgB,CAAC,KAAqD,EAAA;QAC5E,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1D;aAAO;AACH,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB;AAEA,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;IACzB;AAEU,IAAA,iBAAiB,CAAC,IAAU,EAAA;QAClC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACnC,YAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE;AAE/B,YAAA,MAAM,CAAC,MAAM,GAAG,MAAK;AACjB,gBAAA,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE;AACzB,gBAAA,KAAK,CAAC,MAAM,GAAG,MAAK;AAChB,oBAAA,OAAO,CAAC;wBACJ,KAAK,EAAE,KAAK,CAAC,KAAK;wBAClB,MAAM,EAAE,KAAK,CAAC,MAAM;AACpB,wBAAA,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;AAC9B,qBAAA,CAAC;AACN,gBAAA,CAAC;AACD,gBAAA,KAAK,CAAC,OAAO,GAAG,MAAM;AACtB,gBAAA,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC,MAAgB;AACvC,YAAA,CAAC;AAED,YAAA,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;AAC9B,QAAA,CAAC,CAAC;IACN;IAEU,UAAU,GAAA;AAChB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;QAC9B,IAAI,CAAC,KAAK,EAAE;YACR;QACJ;AAEA,QAAA,KAAK,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;IAClC;uGA5JS,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EARV;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,YAAY,CAAC;AAC3C,gBAAA,KAAK,EAAE;AACV;AACJ,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAU6D,UAAU,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5D5E,85HA6FA,EAAA,MAAA,EAAA,CAAA,i+EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDxDQ,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,qBAAqB,EAAA,QAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,oBAAoB,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,uBAAuB,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACvB,iBAAiB,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAWZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBApBxB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,OAAA,EAGhB;wBACL,qBAAqB;wBACrB,qBAAqB;wBACrB,oBAAoB;wBACpB,uBAAuB;wBACvB;qBACH,EAAA,aAAA,EACc,iBAAiB,CAAC,IAAI,EAAA,SAAA,EAC1B;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,kBAAkB,CAAC;AAC3C,4BAAA,KAAK,EAAE;AACV;AACJ,qBAAA,EAAA,QAAA,EAAA,85HAAA,EAAA,MAAA,EAAA,CAAA,i+EAAA,CAAA,EAAA;;;AE7CL,MAAM,sBAAsB,GAAqC;AAC7D,IAAA,MAAM,EAAE;AACJ,QAAA,IAAI,EAAE,iCAAiC;AACvC,QAAA,KAAK,EAAE,kCAAkC;AACzC,QAAA,KAAK,EAAE,kCAAkC;AACzC,QAAA,MAAM,EAAE;AACX,KAAA;AACD,IAAA,MAAM,EAAE;AACJ,QAAA,KAAK,EAAE;AACV,KAAA;AACD,IAAA,KAAK,EAAE;AACH,QAAA,KAAK,EAAE,iCAAiC;AACxC,QAAA,MAAM,EAAE;AACX,KAAA;AACD,IAAA,IAAI,EAAE;AACF,QAAA,KAAK,EAAE,gCAAgC;AACvC,QAAA,KAAK,EAAE;AACH,YAAA,CAAC,EAAE,kCAAkC;AACrC,YAAA,EAAE,EAAE,mCAAmC;AACvC,YAAA,EAAE,EAAE,mCAAmC;AACvC,YAAA,EAAE,EAAE;AACP;AACJ;CACJ;AAEK,SAAU,eAAe,CAAC,OAA6B,EAAA;IACzD,OAAO;AACH,QAAA;AACI,YAAA,OAAO,EAAE,8BAA8B;AACvC,YAAA,QAAQ,EAAE,OAAO,EAAE,eAAe,IAAI;AACzC;KACJ;AACL;;ACrCA;;AAEG;;ACFH;;AAEG;;;;"}
@@ -67,8 +67,8 @@ class NiceFormErrorComponent {
67
67
  }
68
68
  this.message = value;
69
69
  }
70
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: NiceFormErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
71
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: NiceFormErrorComponent, isStandalone: true, selector: "nice-form-field-error", inputs: { error: "error" }, ngImport: i0, template: `
70
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceFormErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
71
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.1", type: NiceFormErrorComponent, isStandalone: true, selector: "nice-form-field-error", inputs: { error: "error" }, ngImport: i0, template: `
72
72
  @if (message) {
73
73
  <div [@animation]="increment">
74
74
  <mat-error>{{ message }}</mat-error>
@@ -85,7 +85,7 @@ class NiceFormErrorComponent {
85
85
  ])
86
86
  ], encapsulation: i0.ViewEncapsulation.None });
87
87
  }
88
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: NiceFormErrorComponent, decorators: [{
88
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceFormErrorComponent, decorators: [{
89
89
  type: Component,
90
90
  args: [{ selector: "nice-form-field-error", template: `
91
91
  @if (message) {
@@ -179,10 +179,10 @@ class NiceFormFieldErrorDirective {
179
179
  }
180
180
  this.ref.instance.error = text.length > 0 ? this.translater(text, params) : text;
181
181
  }
182
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: NiceFormFieldErrorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
183
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.10", type: NiceFormFieldErrorDirective, isStandalone: true, selector: "[niceFormFieldError]", ngImport: i0 });
182
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceFormFieldErrorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
183
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.1", type: NiceFormFieldErrorDirective, isStandalone: true, selector: "[niceFormFieldError]", ngImport: i0 });
184
184
  }
185
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: NiceFormFieldErrorDirective, decorators: [{
185
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceFormFieldErrorDirective, decorators: [{
186
186
  type: Directive,
187
187
  args: [{ selector: "[niceFormFieldError]", standalone: true }]
188
188
  }] });
@@ -1 +1 @@
1
- {"version":3,"file":"recursyve-ngx-material-components-form-field-error.mjs","sources":["../../../src/material-components/form-field-error/error-transformer.ts","../../../src/material-components/form-field-error/form-field-error.ts","../../../src/material-components/form-field-error/constant.ts","../../../src/material-components/form-field-error/form-field-error.directive.ts","../../../src/material-components/form-field-error/provider.ts","../../../src/material-components/form-field-error/recursyve-ngx-material-components-form-field-error.ts"],"sourcesContent":["import { ValidationErrors } from \"@angular/forms\";\n\nexport type TransformedError = { key: string; params?: Record<string, string> };\nexport type ErrorTransformer = (error: string, details: ValidationErrors) => TransformedError;\nexport type ErrorTransformers = Record<string, ErrorTransformer>;\n\nexport const PatternErrorTransformer: ErrorTransformer = (error: string, details: ValidationErrors) => {\n if (details[\"requiredPattern\"]) {\n return {\n key: details[\"requiredPattern\"]\n }\n }\n\n return { key: error };\n};\n\nexport const MaskErrorTransformer: ErrorTransformer = (error: string, details: ValidationErrors) => {\n if (details[\"requiredMask\"]) {\n return {\n key: details[\"requiredMask\"]\n }\n }\n\n return { key: error };\n};\n\nexport const LengthErrorTransformer: ErrorTransformer = (error: string, details: ValidationErrors) => {\n return {\n key: error,\n params: {\n value: details[\"requiredLength\"]\n }\n };\n};\n\nexport const MinErrorTransformer: ErrorTransformer = (error: string, details: ValidationErrors) => {\n return {\n key: error,\n params: {\n min: details[\"min\"],\n actual: details[\"actual\"]\n }\n };\n};\n\nexport const MaxErrorTransformer: ErrorTransformer = (error: string, details: ValidationErrors) => {\n return {\n key: error,\n params: {\n max: details[\"max\"],\n actual: details[\"actual\"]\n }\n };\n};\n\nexport const DefaultErrorTransformers: ErrorTransformers = {\n pattern: PatternErrorTransformer,\n mask: MaskErrorTransformer,\n minlength: LengthErrorTransformer,\n maxlength: LengthErrorTransformer,\n min: MinErrorTransformer,\n max: MaxErrorTransformer\n};\n","import { animate, style, transition, trigger } from \"@angular/animations\";\nimport { Component, Input, ViewEncapsulation } from \"@angular/core\";\nimport { MatError } from \"@angular/material/form-field\";\n\n@Component({\n selector: \"nice-form-field-error\",\n template: `\n @if (message) {\n <div [@animation]=\"increment\">\n <mat-error>{{ message }}</mat-error>\n </div>\n }\n `,\n styleUrls: [\"./form-field-error.scss\"],\n animations: [\n trigger(\"animation\", [\n transition(\":increment\", [style({ opacity: 0 }), animate(\"200ms ease-in\", style({ opacity: 1 }))]),\n transition(\":enter\", [\n style({ opacity: 0, transform: \"translateY(-1rem)\" }),\n animate(\"200ms ease-in\", style({ opacity: 1, transform: \"translateY(0)\" }))\n ]),\n transition(\":leave\", [animate(\"200ms ease-out\", style({ opacity: 0, transform: \"translateY(-1rem)\" }))])\n ])\n ],\n encapsulation: ViewEncapsulation.None,\n imports: [\n MatError\n ]\n})\nexport class NiceFormErrorComponent {\n public message = \"\";\n public increment = 0;\n\n @Input()\n public set error(value: string) {\n if (value) {\n if (this.message !== value) {\n this.increment++;\n }\n }\n this.message = value;\n }\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const NICE_FORM_FIELD_ERROR_TRANSFORMERS = new InjectionToken(\"nice_form_field_error_transformers\");\nexport const NICE_FORM_FIELD_ERROR_TRANSLATER = new InjectionToken(\"nice_form_field_error_translater\");\n","import {\n AfterViewInit,\n ComponentRef,\n DestroyRef,\n Directive,\n ElementRef,\n inject,\n ViewContainerRef\n} from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { AbstractControlDirective, NgControl } from \"@angular/forms\";\nimport { MatFormField } from \"@angular/material/form-field\";\nimport { NiceTranslater } from \"@recursyve/ngx-material-components/common\";\nimport { combineLatest, startWith } from \"rxjs\";\n\nimport { NiceFormErrorComponent } from \"./form-field-error\";\nimport { ErrorTransformers } from \"./error-transformer\";\nimport { NICE_FORM_FIELD_ERROR_TRANSFORMERS, NICE_FORM_FIELD_ERROR_TRANSLATER } from \"./constant\";\n\n@Directive({ selector: \"[niceFormFieldError]\", standalone: true })\nexport class NiceFormFieldErrorDirective implements AfterViewInit {\n private readonly destroyRef = inject(DestroyRef);\n private readonly elementRef = inject(ElementRef);\n private readonly viewContainerRef = inject(ViewContainerRef);\n private readonly formField = inject(MatFormField);\n private readonly transformers = inject<ErrorTransformers>(NICE_FORM_FIELD_ERROR_TRANSFORMERS);\n private readonly translater = inject<NiceTranslater>(NICE_FORM_FIELD_ERROR_TRANSLATER);\n\n private ref: ComponentRef<NiceFormErrorComponent> | null = null ;\n private control: NgControl | AbstractControlDirective | null = null;\n\n public onChange = () => {\n if (this.control === null || this.control.pending) {\n return;\n }\n\n if (this.control.valid || this.control.untouched) {\n this.setError(\"\", {});\n return;\n }\n\n for (const error in this.control.errors) {\n const details = this.control.errors[error];\n if (typeof details !== \"object\") {\n this.setError(`errors.${error}`, {});\n continue;\n }\n\n const transformer = this.transformers[error];\n if (!transformer) {\n this.setError(`errors.${error}`, {});\n continue;\n }\n\n const { key, params } = transformer(error, details);\n this.setError(`errors.${key}`, params ?? {});\n }\n }\n\n public ngAfterViewInit(): void {\n this.control = this.formField._control.ngControl;\n\n if (this.control !== null && this.control.statusChanges !== null) {\n combineLatest([\n this.formField._control.stateChanges,\n this.control.statusChanges.pipe(startWith(this.control.status))\n ])\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.onChange());\n }\n }\n\n public setError(text: string, params: Record<string, string>): void {\n if (!this.ref) {\n this.ref = this.viewContainerRef.createComponent(NiceFormErrorComponent);\n if (this.elementRef.nativeElement.getElementsByClassName(\"mat-mdc-form-field-subscript-wrapper\").item(0)) {\n const hint = this.elementRef.nativeElement.getElementsByClassName(\"mat-mdc-form-field-hint\").item(0);\n (this.ref.location.nativeElement as HTMLDivElement).style.position = \"absolute\";\n (this.ref.location.nativeElement as HTMLDivElement).style.top = hint ? \"16px\" : \"0\";\n\n const wrapper = this.elementRef.nativeElement\n .getElementsByClassName(\"mat-mdc-form-field-subscript-wrapper\")\n .item(0);\n if (hint) {\n wrapper.classList.add(\"override-height\");\n }\n\n wrapper.prepend(this.ref.location.nativeElement);\n }\n }\n\n if (text) {\n this.elementRef.nativeElement.classList.add(\"form-error-show\");\n } else {\n this.elementRef.nativeElement.classList.remove(\"form-error-show\");\n }\n\n this.ref.instance.error = text.length > 0 ? this.translater(text, params) : text;\n }\n}\n","import { Provider } from \"@angular/core\";\nimport { NICE_FORM_FIELD_ERROR_TRANSFORMERS, NICE_FORM_FIELD_ERROR_TRANSLATER } from \"./constant\";\nimport { NiceFormFieldErrorsOptions } from \"./options\";\nimport { DefaultErrorTransformers } from \"./error-transformer\";\n\nexport function provideFormFieldError(options: NiceFormFieldErrorsOptions): Provider[] {\n return [\n {\n provide: NICE_FORM_FIELD_ERROR_TRANSFORMERS,\n useValue: {\n ...DefaultErrorTransformers,\n ...options.errorTransformers\n }\n },\n {\n provide: NICE_FORM_FIELD_ERROR_TRANSLATER,\n ...options.translater\n }\n ];\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recursyve-ngx-material-components-form-field-error.mjs","sources":["../../../src/material-components/form-field-error/error-transformer.ts","../../../src/material-components/form-field-error/form-field-error.ts","../../../src/material-components/form-field-error/constant.ts","../../../src/material-components/form-field-error/form-field-error.directive.ts","../../../src/material-components/form-field-error/provider.ts","../../../src/material-components/form-field-error/recursyve-ngx-material-components-form-field-error.ts"],"sourcesContent":["import { ValidationErrors } from \"@angular/forms\";\n\nexport type TransformedError = { key: string; params?: Record<string, string> };\nexport type ErrorTransformer = (error: string, details: ValidationErrors) => TransformedError;\nexport type ErrorTransformers = Record<string, ErrorTransformer>;\n\nexport const PatternErrorTransformer: ErrorTransformer = (error: string, details: ValidationErrors) => {\n if (details[\"requiredPattern\"]) {\n return {\n key: details[\"requiredPattern\"]\n }\n }\n\n return { key: error };\n};\n\nexport const MaskErrorTransformer: ErrorTransformer = (error: string, details: ValidationErrors) => {\n if (details[\"requiredMask\"]) {\n return {\n key: details[\"requiredMask\"]\n }\n }\n\n return { key: error };\n};\n\nexport const LengthErrorTransformer: ErrorTransformer = (error: string, details: ValidationErrors) => {\n return {\n key: error,\n params: {\n value: details[\"requiredLength\"]\n }\n };\n};\n\nexport const MinErrorTransformer: ErrorTransformer = (error: string, details: ValidationErrors) => {\n return {\n key: error,\n params: {\n min: details[\"min\"],\n actual: details[\"actual\"]\n }\n };\n};\n\nexport const MaxErrorTransformer: ErrorTransformer = (error: string, details: ValidationErrors) => {\n return {\n key: error,\n params: {\n max: details[\"max\"],\n actual: details[\"actual\"]\n }\n };\n};\n\nexport const DefaultErrorTransformers: ErrorTransformers = {\n pattern: PatternErrorTransformer,\n mask: MaskErrorTransformer,\n minlength: LengthErrorTransformer,\n maxlength: LengthErrorTransformer,\n min: MinErrorTransformer,\n max: MaxErrorTransformer\n};\n","import { animate, style, transition, trigger } from \"@angular/animations\";\nimport { Component, Input, ViewEncapsulation } from \"@angular/core\";\nimport { MatError } from \"@angular/material/form-field\";\n\n@Component({\n selector: \"nice-form-field-error\",\n template: `\n @if (message) {\n <div [@animation]=\"increment\">\n <mat-error>{{ message }}</mat-error>\n </div>\n }\n `,\n styleUrls: [\"./form-field-error.scss\"],\n animations: [\n trigger(\"animation\", [\n transition(\":increment\", [style({ opacity: 0 }), animate(\"200ms ease-in\", style({ opacity: 1 }))]),\n transition(\":enter\", [\n style({ opacity: 0, transform: \"translateY(-1rem)\" }),\n animate(\"200ms ease-in\", style({ opacity: 1, transform: \"translateY(0)\" }))\n ]),\n transition(\":leave\", [animate(\"200ms ease-out\", style({ opacity: 0, transform: \"translateY(-1rem)\" }))])\n ])\n ],\n encapsulation: ViewEncapsulation.None,\n imports: [\n MatError\n ]\n})\nexport class NiceFormErrorComponent {\n public message = \"\";\n public increment = 0;\n\n @Input()\n public set error(value: string) {\n if (value) {\n if (this.message !== value) {\n this.increment++;\n }\n }\n this.message = value;\n }\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const NICE_FORM_FIELD_ERROR_TRANSFORMERS = new InjectionToken(\"nice_form_field_error_transformers\");\nexport const NICE_FORM_FIELD_ERROR_TRANSLATER = new InjectionToken(\"nice_form_field_error_translater\");\n","import {\n AfterViewInit,\n ComponentRef,\n DestroyRef,\n Directive,\n ElementRef,\n inject,\n ViewContainerRef\n} from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { AbstractControlDirective, NgControl } from \"@angular/forms\";\nimport { MatFormField } from \"@angular/material/form-field\";\nimport { NiceTranslater } from \"@recursyve/ngx-material-components/common\";\nimport { combineLatest, startWith } from \"rxjs\";\n\nimport { NiceFormErrorComponent } from \"./form-field-error\";\nimport { ErrorTransformers } from \"./error-transformer\";\nimport { NICE_FORM_FIELD_ERROR_TRANSFORMERS, NICE_FORM_FIELD_ERROR_TRANSLATER } from \"./constant\";\n\n@Directive({ selector: \"[niceFormFieldError]\", standalone: true })\nexport class NiceFormFieldErrorDirective implements AfterViewInit {\n private readonly destroyRef = inject(DestroyRef);\n private readonly elementRef = inject(ElementRef);\n private readonly viewContainerRef = inject(ViewContainerRef);\n private readonly formField = inject(MatFormField);\n private readonly transformers = inject<ErrorTransformers>(NICE_FORM_FIELD_ERROR_TRANSFORMERS);\n private readonly translater = inject<NiceTranslater>(NICE_FORM_FIELD_ERROR_TRANSLATER);\n\n private ref: ComponentRef<NiceFormErrorComponent> | null = null ;\n private control: NgControl | AbstractControlDirective | null = null;\n\n public onChange = () => {\n if (this.control === null || this.control.pending) {\n return;\n }\n\n if (this.control.valid || this.control.untouched) {\n this.setError(\"\", {});\n return;\n }\n\n for (const error in this.control.errors) {\n const details = this.control.errors[error];\n if (typeof details !== \"object\") {\n this.setError(`errors.${error}`, {});\n continue;\n }\n\n const transformer = this.transformers[error];\n if (!transformer) {\n this.setError(`errors.${error}`, {});\n continue;\n }\n\n const { key, params } = transformer(error, details);\n this.setError(`errors.${key}`, params ?? {});\n }\n }\n\n public ngAfterViewInit(): void {\n this.control = this.formField._control.ngControl;\n\n if (this.control !== null && this.control.statusChanges !== null) {\n combineLatest([\n this.formField._control.stateChanges,\n this.control.statusChanges.pipe(startWith(this.control.status))\n ])\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.onChange());\n }\n }\n\n public setError(text: string, params: Record<string, string>): void {\n if (!this.ref) {\n this.ref = this.viewContainerRef.createComponent(NiceFormErrorComponent);\n if (this.elementRef.nativeElement.getElementsByClassName(\"mat-mdc-form-field-subscript-wrapper\").item(0)) {\n const hint = this.elementRef.nativeElement.getElementsByClassName(\"mat-mdc-form-field-hint\").item(0);\n (this.ref.location.nativeElement as HTMLDivElement).style.position = \"absolute\";\n (this.ref.location.nativeElement as HTMLDivElement).style.top = hint ? \"16px\" : \"0\";\n\n const wrapper = this.elementRef.nativeElement\n .getElementsByClassName(\"mat-mdc-form-field-subscript-wrapper\")\n .item(0);\n if (hint) {\n wrapper.classList.add(\"override-height\");\n }\n\n wrapper.prepend(this.ref.location.nativeElement);\n }\n }\n\n if (text) {\n this.elementRef.nativeElement.classList.add(\"form-error-show\");\n } else {\n this.elementRef.nativeElement.classList.remove(\"form-error-show\");\n }\n\n this.ref.instance.error = text.length > 0 ? this.translater(text, params) : text;\n }\n}\n","import { Provider } from \"@angular/core\";\nimport { NICE_FORM_FIELD_ERROR_TRANSFORMERS, NICE_FORM_FIELD_ERROR_TRANSLATER } from \"./constant\";\nimport { NiceFormFieldErrorsOptions } from \"./options\";\nimport { DefaultErrorTransformers } from \"./error-transformer\";\n\nexport function provideFormFieldError(options: NiceFormFieldErrorsOptions): Provider[] {\n return [\n {\n provide: NICE_FORM_FIELD_ERROR_TRANSFORMERS,\n useValue: {\n ...DefaultErrorTransformers,\n ...options.errorTransformers\n }\n },\n {\n provide: NICE_FORM_FIELD_ERROR_TRANSLATER,\n ...options.translater\n }\n ];\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -7,13 +7,13 @@ import { MatProgressSpinner } from '@angular/material/progress-spinner';
7
7
  const NICE_LOADING_OPTIONS = new InjectionToken("nice_loading_options");
8
8
 
9
9
  class NiceLoadingSpinner {
10
- loading = input(false);
11
- mode = input("indeterminate");
12
- diameter = input(50);
13
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: NiceLoadingSpinner, deps: [], target: i0.ɵɵFactoryTarget.Component });
14
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.10", type: NiceLoadingSpinner, isStandalone: true, selector: "nice-loading-spinner", inputs: { loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, diameter: { classPropertyName: "diameter", publicName: "diameter", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<mat-spinner [diameter]=\"diameter()\" [mode]=\"mode()\"></mat-spinner>\n", styles: [":host{display:inline-block}\n"], dependencies: [{ kind: "component", type: MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }] });
10
+ loading = input(false, ...(ngDevMode ? [{ debugName: "loading" }] : []));
11
+ mode = input("indeterminate", ...(ngDevMode ? [{ debugName: "mode" }] : []));
12
+ diameter = input(50, ...(ngDevMode ? [{ debugName: "diameter" }] : []));
13
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceLoadingSpinner, deps: [], target: i0.ɵɵFactoryTarget.Component });
14
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.2.1", type: NiceLoadingSpinner, isStandalone: true, selector: "nice-loading-spinner", inputs: { loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, diameter: { classPropertyName: "diameter", publicName: "diameter", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<mat-spinner [diameter]=\"diameter()\" [mode]=\"mode()\"></mat-spinner>\n", styles: [":host{display:inline-block}\n"], dependencies: [{ kind: "component", type: MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }] });
15
15
  }
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: NiceLoadingSpinner, decorators: [{
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceLoadingSpinner, decorators: [{
17
17
  type: Component,
18
18
  args: [{ selector: "nice-loading-spinner", imports: [MatProgressSpinner], template: "<mat-spinner [diameter]=\"diameter()\" [mode]=\"mode()\"></mat-spinner>\n", styles: [":host{display:inline-block}\n"] }]
19
19
  }] });
@@ -21,7 +21,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImpo
21
21
  class NiceLoadingDirective {
22
22
  options = inject(NICE_LOADING_OPTIONS, { optional: true });
23
23
  overlay = inject(Overlay);
24
- loading = input(null, { alias: "niceLoadingOverlay" });
24
+ loading = input(null, ...(ngDevMode ? [{ debugName: "loading", alias: "niceLoadingOverlay" }] : [{ alias: "niceLoadingOverlay" }]));
25
25
  overlayRef = null;
26
26
  _loading = false;
27
27
  constructor() {
@@ -57,10 +57,10 @@ class NiceLoadingDirective {
57
57
  this.overlayRef.detach();
58
58
  }
59
59
  }
60
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: NiceLoadingDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
61
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.10", type: NiceLoadingDirective, isStandalone: true, selector: "[niceLoadingOverlay]", inputs: { loading: { classPropertyName: "loading", publicName: "niceLoadingOverlay", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
60
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceLoadingDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
61
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.2.1", type: NiceLoadingDirective, isStandalone: true, selector: "[niceLoadingOverlay]", inputs: { loading: { classPropertyName: "loading", publicName: "niceLoadingOverlay", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
62
62
  }
63
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: NiceLoadingDirective, decorators: [{
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceLoadingDirective, decorators: [{
64
64
  type: Directive,
65
65
  args: [{ selector: "[niceLoadingOverlay]", standalone: true }]
66
66
  }], ctorParameters: () => [] });
@@ -1 +1 @@
1
- {"version":3,"file":"recursyve-ngx-material-components-loading.mjs","sources":["../../../src/material-components/loading/constant.ts","../../../src/material-components/loading/loading-spinner.ts","../../../src/material-components/loading/loading-spinner.html","../../../src/material-components/loading/loading.ts","../../../src/material-components/loading/provider.ts","../../../src/material-components/loading/recursyve-ngx-material-components-loading.ts"],"sourcesContent":["import { InjectionToken } from \"@angular/core\";\n\nexport const NICE_LOADING_OPTIONS = new InjectionToken(\"nice_loading_options\");\n","import { Component, input } from \"@angular/core\";\nimport { MatProgressSpinner, ProgressSpinnerMode } from \"@angular/material/progress-spinner\";\n\n@Component({\n selector: \"nice-loading-spinner\",\n templateUrl: \"loading-spinner.html\",\n styleUrls: [\"./loading-spinner.scss\"],\n imports: [MatProgressSpinner]\n})\nexport class NiceLoadingSpinner {\n public readonly loading = input<boolean>(false);\n public readonly mode = input<ProgressSpinnerMode>(\"indeterminate\");\n public readonly diameter = input(50);\n}\n","<mat-spinner [diameter]=\"diameter()\" [mode]=\"mode()\"></mat-spinner>\n","import { Overlay, OverlayRef } from \"@angular/cdk/overlay\";\nimport { ComponentPortal } from \"@angular/cdk/portal\";\nimport { Directive, effect, inject, input, OnDestroy } from \"@angular/core\";\nimport { NICE_LOADING_OPTIONS } from \"./constant\";\nimport { NiceLoadingSpinner } from \"./loading-spinner\";\nimport { NiceLoadingOptions } from \"./options\";\n\n@Directive({ selector: \"[niceLoadingOverlay]\", standalone: true })\nexport class NiceLoadingDirective implements OnDestroy {\n private readonly options = inject<NiceLoadingOptions>(NICE_LOADING_OPTIONS, { optional: true });\n private readonly overlay = inject(Overlay);\n\n public loading = input<boolean | null>(null, { alias: \"niceLoadingOverlay\" });\n\n private overlayRef: OverlayRef | null = null;\n private _loading = false;\n\n constructor() {\n effect(() => {\n if (this.loading() === this._loading) {\n return;\n }\n\n this._loading = this.loading() ?? false;\n if (!this.overlayRef) {\n this.overlayRef = this.overlay.create({\n positionStrategy: this.overlay\n .position()\n .global()\n .centerHorizontally()\n .centerVertically(),\n hasBackdrop: true,\n panelClass: \"nice-loading-overlay\"\n });\n }\n\n if (this._loading) {\n this.overlayRef.attach(new ComponentPortal(this.options?.customLoading ?? NiceLoadingSpinner));\n } else {\n this.overlayRef.detach();\n }\n });\n }\n\n public ngOnDestroy(): void {\n if (!this.overlayRef) {\n return;\n }\n\n if (this.overlayRef.hasAttached()) {\n this.overlayRef.detach();\n }\n }\n}\n","import { Provider } from \"@angular/core\";\nimport { NiceLoadingOptions } from \"./options\";\nimport { NICE_LOADING_OPTIONS } from \"./constant\";\n\nexport function provideNiceLoadingOptions(options: NiceLoadingOptions): Provider {\n return {\n provide: NICE_LOADING_OPTIONS,\n useValue: options\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recursyve-ngx-material-components-loading.mjs","sources":["../../../src/material-components/loading/constant.ts","../../../src/material-components/loading/loading-spinner.ts","../../../src/material-components/loading/loading-spinner.html","../../../src/material-components/loading/loading.ts","../../../src/material-components/loading/provider.ts","../../../src/material-components/loading/recursyve-ngx-material-components-loading.ts"],"sourcesContent":["import { InjectionToken } from \"@angular/core\";\n\nexport const NICE_LOADING_OPTIONS = new InjectionToken(\"nice_loading_options\");\n","import { Component, input } from \"@angular/core\";\nimport { MatProgressSpinner, ProgressSpinnerMode } from \"@angular/material/progress-spinner\";\n\n@Component({\n selector: \"nice-loading-spinner\",\n templateUrl: \"loading-spinner.html\",\n styleUrls: [\"./loading-spinner.scss\"],\n imports: [MatProgressSpinner]\n})\nexport class NiceLoadingSpinner {\n public readonly loading = input<boolean>(false);\n public readonly mode = input<ProgressSpinnerMode>(\"indeterminate\");\n public readonly diameter = input(50);\n}\n","<mat-spinner [diameter]=\"diameter()\" [mode]=\"mode()\"></mat-spinner>\n","import { Overlay, OverlayRef } from \"@angular/cdk/overlay\";\nimport { ComponentPortal } from \"@angular/cdk/portal\";\nimport { Directive, effect, inject, input, OnDestroy } from \"@angular/core\";\nimport { NICE_LOADING_OPTIONS } from \"./constant\";\nimport { NiceLoadingSpinner } from \"./loading-spinner\";\nimport { NiceLoadingOptions } from \"./options\";\n\n@Directive({ selector: \"[niceLoadingOverlay]\", standalone: true })\nexport class NiceLoadingDirective implements OnDestroy {\n private readonly options = inject<NiceLoadingOptions>(NICE_LOADING_OPTIONS, { optional: true });\n private readonly overlay = inject(Overlay);\n\n public loading = input<boolean | null>(null, { alias: \"niceLoadingOverlay\" });\n\n private overlayRef: OverlayRef | null = null;\n private _loading = false;\n\n constructor() {\n effect(() => {\n if (this.loading() === this._loading) {\n return;\n }\n\n this._loading = this.loading() ?? false;\n if (!this.overlayRef) {\n this.overlayRef = this.overlay.create({\n positionStrategy: this.overlay\n .position()\n .global()\n .centerHorizontally()\n .centerVertically(),\n hasBackdrop: true,\n panelClass: \"nice-loading-overlay\"\n });\n }\n\n if (this._loading) {\n this.overlayRef.attach(new ComponentPortal(this.options?.customLoading ?? NiceLoadingSpinner));\n } else {\n this.overlayRef.detach();\n }\n });\n }\n\n public ngOnDestroy(): void {\n if (!this.overlayRef) {\n return;\n }\n\n if (this.overlayRef.hasAttached()) {\n this.overlayRef.detach();\n }\n }\n}\n","import { Provider } from \"@angular/core\";\nimport { NiceLoadingOptions } from \"./options\";\nimport { NICE_LOADING_OPTIONS } from \"./constant\";\n\nexport function provideNiceLoadingOptions(options: NiceLoadingOptions): Provider {\n return {\n provide: NICE_LOADING_OPTIONS,\n useValue: options\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAEO,MAAM,oBAAoB,GAAG,IAAI,cAAc,CAAC,sBAAsB,CAAC;;MCOjE,kBAAkB,CAAA;AACX,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,mDAAC;AAC/B,IAAA,IAAI,GAAG,KAAK,CAAsB,eAAe,gDAAC;AAClD,IAAA,QAAQ,GAAG,KAAK,CAAC,EAAE,oDAAC;uGAH3B,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECT/B,2EACA,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDMc,kBAAkB,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAEnB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;+BACI,sBAAsB,EAAA,OAAA,EAGvB,CAAC,kBAAkB,CAAC,EAAA,QAAA,EAAA,2EAAA,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA;;;MECpB,oBAAoB,CAAA;IACZ,OAAO,GAAG,MAAM,CAAqB,oBAAoB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC9E,IAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AAEnC,IAAA,OAAO,GAAG,KAAK,CAAiB,IAAI,2CAAI,KAAK,EAAE,oBAAoB,EAAA,CAAA,GAAA,CAA7B,EAAE,KAAK,EAAE,oBAAoB,EAAE,GAAC;IAErE,UAAU,GAAsB,IAAI;IACpC,QAAQ,GAAG,KAAK;AAExB,IAAA,WAAA,GAAA;QACI,MAAM,CAAC,MAAK;YACR,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,QAAQ,EAAE;gBAClC;YACJ;YAEA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK;AACvC,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBAClB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;oBAClC,gBAAgB,EAAE,IAAI,CAAC;AAClB,yBAAA,QAAQ;AACR,yBAAA,MAAM;AACN,yBAAA,kBAAkB;AAClB,yBAAA,gBAAgB,EAAE;AACvB,oBAAA,WAAW,EAAE,IAAI;AACjB,oBAAA,UAAU,EAAE;AACf,iBAAA,CAAC;YACN;AAEA,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,gBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,IAAI,kBAAkB,CAAC,CAAC;YAClG;iBAAO;AACH,gBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;YAC5B;AACJ,QAAA,CAAC,CAAC;IACN;IAEO,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAClB;QACJ;AAEA,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE;AAC/B,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;QAC5B;IACJ;uGA5CS,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,sBAAsB,EAAE,UAAU,EAAE,IAAI,EAAE;;;ACH3D,SAAU,yBAAyB,CAAC,OAA2B,EAAA;IACjE,OAAO;AACH,QAAA,OAAO,EAAE,oBAAoB;AAC7B,QAAA,QAAQ,EAAE;KACb;AACL;;ACTA;;AAEG;;;;"}