{"version":3,"file":"mosaic-design-infosec-components-components-file-upload.mjs","sources":["../../../libs/components/file-upload/src/lib/components/file-upload/file-upload.component.ts","../../../libs/components/file-upload/src/lib/components/file-upload/file-upload.component.html","../../../libs/components/file-upload/src/lib/file-upload.module.ts","../../../libs/components/file-upload/src/lib/types/file-upload-error-type.ts","../../../libs/components/file-upload/src/lib/validators/file-extension.ts","../../../libs/components/file-upload/mosaic-design-infosec-components-components-file-upload.ts"],"sourcesContent":["import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    EmbeddedViewRef,\n    Inject,\n    Input,\n    OnDestroy,\n    TemplateRef,\n    ViewChild,\n    ViewContainerRef\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { KbqFileItem } from '@koobiq/components/file-upload';\nimport { BehaviorSubject, fromEvent, takeUntil } from 'rxjs';\n\nimport { DestroyService } from '@mosaic-design/infosec-components/services';\nimport { WINDOW, WindowRef } from '@mosaic-design/infosec-components/tokens';\nimport { OnChange, OnTouch } from '@mosaic-design/infosec-components/types';\nimport { isNonNullable } from '@mosaic-design/infosec-components/utils';\n\nconst DropZoneVisibleClassName = 'ic-file-upload__drop-zone_visible';\nconst DropZoneFullscreenClassName = 'ic-file-upload__drop-zone_fullscreen';\n\n/** TODO:\n * удалить компонент, когда в koobiq реализуют fullscreen drop zone\n * см. https://youtrack.ptsecurity.com/issue/DS-2356\n */\n@Component({\n    selector: 'ic-file-upload',\n    templateUrl: './file-upload.component.html',\n    styleUrls: ['./file-upload.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: FileUploadComponent,\n            multi: true\n        },\n        DestroyService\n    ]\n})\nexport class FileUploadComponent implements ControlValueAccessor, AfterViewInit, OnDestroy {\n    @ViewChild('dropAreaOuterTemplate') dropAreaOuterTemplate: TemplateRef<HTMLElement> | undefined;\n\n    @Input() accept: string[] = [];\n    @Input() isFullScreenDropArea = false;\n    @Input() dropAreaTemplate: TemplateRef<HTMLElement> | undefined;\n\n    file: KbqFileItem | undefined = undefined;\n\n    private overlayRef: OverlayRef | undefined;\n    private dropAreaPortal: TemplatePortal<HTMLElement> | undefined;\n    private dropAreaEmbeddedViewRef: EmbeddedViewRef<HTMLElement> | undefined;\n\n    constructor(\n        private destroyed$: DestroyService,\n        private changeDetectorRef: ChangeDetectorRef,\n        @Inject(WINDOW) private windowRef: WindowRef,\n        private viewContainerRef: ViewContainerRef,\n        private overlay: Overlay\n    ) {}\n\n    ngAfterViewInit(): void {\n        this.initDropArea();\n    }\n\n    ngOnDestroy(): void {\n        this.overlayRef?.dispose();\n    }\n\n    onChange: OnChange<KbqFileItem | null> = () => {\n        // empty\n    };\n\n    onTouch: OnTouch = () => {\n        // empty\n    };\n\n    registerOnChange(fn: FileUploadComponent['onChange']): void {\n        this.onChange = fn;\n    }\n\n    registerOnTouched(fn: FileUploadComponent['onTouch']): void {\n        this.onTouch = fn;\n    }\n\n    writeValue(value: KbqFileItem | undefined): void {\n        this.file = value ? value : undefined;\n    }\n\n    onFileChanged(file: KbqFileItem | null): void {\n        this.file = file ? file : undefined;\n\n        this.emitChange(file);\n    }\n\n    private initDropArea(): void {\n        if (this.isFullScreenDropArea) {\n            this.initFullscreenDropArea();\n        }\n    }\n\n    private initFullscreenDropArea(): void {\n        if (!this.dropAreaOuterTemplate) {\n            return;\n        }\n\n        this.overlayRef = this.overlay.create({ hasBackdrop: true });\n        this.dropAreaPortal = new TemplatePortal<HTMLElement>(this.dropAreaOuterTemplate, this.viewContainerRef);\n\n        fromEvent<DragEvent>(this.windowRef.document.body, 'dragenter')\n            .pipe(takeUntil(this.destroyed$))\n            .subscribe((event) => this.onDragEnter(event));\n        fromEvent<DragEvent>(this.overlayRef.overlayElement, 'dragover')\n            .pipe(takeUntil(this.destroyed$))\n            .subscribe((event) => this.onDragOver(event));\n        fromEvent<DragEvent>(this.overlayRef.overlayElement, 'dragleave')\n            .pipe(takeUntil(this.destroyed$))\n            .subscribe((event) => this.onDragLeave(event));\n        fromEvent<DragEvent>(this.overlayRef.overlayElement, 'drop')\n            .pipe(takeUntil(this.destroyed$))\n            .subscribe((event) => this.onDrop(event));\n    }\n\n    private showDropArea(): void {\n        if (this.isFullScreenDropArea) {\n            if (this.overlayRef && !this.overlayRef.hasAttached()) {\n                this.dropAreaEmbeddedViewRef = this.overlayRef.attach(\n                    this.dropAreaPortal as TemplatePortal<HTMLElement>\n                );\n                (this.dropAreaEmbeddedViewRef.rootNodes[0] as HTMLElement).classList.add(\n                    DropZoneVisibleClassName,\n                    DropZoneFullscreenClassName\n                );\n            }\n        } else {\n            (this.dropAreaEmbeddedViewRef?.rootNodes[0] as HTMLElement).classList.add(DropZoneVisibleClassName);\n        }\n    }\n\n    private hideDropArea(): void {\n        if (this.isFullScreenDropArea) {\n            this.overlayRef?.detach();\n        } else {\n            (this.dropAreaEmbeddedViewRef?.rootNodes[0] as HTMLElement).classList.remove(DropZoneVisibleClassName);\n        }\n    }\n\n    private onDragEnter(event: DragEvent): void {\n        event.stopPropagation();\n        event.preventDefault();\n\n        this.showDropArea();\n    }\n\n    private onDragOver(event: DragEvent): void {\n        event.stopPropagation();\n        event.preventDefault();\n    }\n\n    private onDragLeave(event: DragEvent): void {\n        if ((event.currentTarget as HTMLElement).contains(event.relatedTarget as HTMLElement)) {\n            return;\n        }\n\n        event.preventDefault();\n        event.stopPropagation();\n\n        this.hideDropArea();\n    }\n\n    private onDrop(event: DragEvent): void {\n        if (!event.dataTransfer) {\n            return;\n        }\n\n        event.preventDefault();\n        event.stopPropagation();\n\n        this.hideDropArea();\n\n        const files = event.dataTransfer.files;\n        const firstFile = files[0];\n\n        if (isNonNullable(firstFile)) {\n            this.onFileChanged({\n                file: firstFile,\n                loading: new BehaviorSubject<boolean>(false),\n                progress: new BehaviorSubject<number>(0)\n            });\n\n            this.changeDetectorRef.markForCheck();\n        }\n    }\n\n    private emitChange(fileItem: KbqFileItem | null): void {\n        this.onChange(fileItem);\n        this.onTouch();\n    }\n}\n","<kbq-single-file-upload [ngModel]=\"file\" (ngModelChange)=\"onFileChanged($event)\" [accept]=\"accept\">\n    <i kbq-icon=\"kbq-file-o_16\"></i>\n    <kbq-hint>\n        <ng-content hint></ng-content>\n    </kbq-hint>\n</kbq-single-file-upload>\n\n<ng-template #dropAreaOuterTemplate>\n    <div class=\"ic-file-upload__drop-zone\">\n        <ng-container *ngIf=\"dropAreaTemplate\" [ngTemplateOutlet]=\"dropAreaTemplate\"></ng-container>\n    </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { KbqFileUploadModule } from '@koobiq/components/file-upload';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIconModule } from '@koobiq/components/icon';\n\nimport { FileUploadComponent } from './components';\n\n/**\n * @deprecated Будет удален в 19 версии. Компоненты будут standalone\n */\n@NgModule({\n    imports: [CommonModule, FormsModule, KbqFileUploadModule, KbqFormFieldModule, KbqIconModule],\n    declarations: [FileUploadComponent],\n    exports: [FileUploadComponent]\n})\nexport class IcFileUploadModule {}\n","export enum FileUploadErrorType {\n    FileExtension = 'fileExtension'\n}\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\nimport { KbqFileItem } from '@koobiq/components/file-upload';\n\nimport { FileUploadErrorType } from '../types';\n\nexport function fileExtensionValidator(...allowedExtensions: string[]): ValidatorFn {\n    return (control: AbstractControl) => {\n        const value = control.value as KbqFileItem | null;\n\n        if (!value) {\n            return null;\n        } else {\n            const hasAllowedExtension = (file: File): boolean =>\n                allowedExtensions.some((extension) => file.name.endsWith(extension));\n\n            return hasAllowedExtension(value.file)\n                ? null\n                : {\n                      [FileUploadErrorType.FileExtension]: value\n                  };\n        }\n    };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}