mc-image-editor
Version:
An image editor library for magic-cut app (http://www.magic-cut.in/)
67 lines • 7.35 kB
JavaScript
import { Component, Input, Output, EventEmitter, HostListener, ChangeDetectionStrategy, } from '@angular/core';
import { FileRepositoryService } from '../../services/file-repository/file-repository.service';
export class FileReaderComponent {
constructor(fileRepositoryService) {
this.fileRepositoryService = fileRepositoryService;
this.fileAppend = new EventEmitter();
this.accept = '*';
this.scope = '';
}
set multiple(value) {
this._multiple = typeof value !== 'undefined';
}
get multiple() {
return this._multiple;
}
set dropzone(value) {
this._dropzone = typeof value !== 'undefined';
if (!this._dropzone) {
this._multiple = true;
}
}
get dropzone() {
return this._dropzone;
}
onDragOver($event) {
$event.stopPropagation();
$event.preventDefault();
}
onDrop($event) {
$event.stopPropagation();
$event.preventDefault();
}
readFiles(files) {
const changed = [...files].map((f) => {
if (f.type.match(this.accept.replace('*', '.*'))) {
this.fileRepositoryService.scope(this.scope).push(f);
return f;
}
});
this.fileAppend.emit(changed);
return changed;
}
onFilesAppend(files) {
this.fileAppend.emit(this.readFiles(files));
}
}
FileReaderComponent.decorators = [
{ type: Component, args: [{
selector: 'mc-file-reader',
template: "<div *ngIf=\"dropzone\" (drop)=\"onFilesAppend($event.dataTransfer.files)\">\n\t<ng-content></ng-content>\n</div>\n<input\n\t*ngIf=\"!dropzone\"\n\ttype=\"file\"\n\t[multiple]=\"multiple\"\n\t[accept]=\"accept\"\n\t(change)=\"readFiles($event.target.files)\"\n/>\n",
changeDetection: ChangeDetectionStrategy.OnPush,
styles: [""]
},] }
];
FileReaderComponent.ctorParameters = () => [
{ type: FileRepositoryService }
];
FileReaderComponent.propDecorators = {
fileAppend: [{ type: Output }],
accept: [{ type: Input }],
scope: [{ type: Input }],
multiple: [{ type: Input }],
dropzone: [{ type: Input }],
onDragOver: [{ type: HostListener, args: ['dragover', ['$event'],] }],
onDrop: [{ type: HostListener, args: ['drop', ['$event'],] }]
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1yZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWMtaW1hZ2UtZWRpdG9yL3NyYy9saWIvY29tcG9uZW50cy9maWxlLXJlYWRlci9maWxlLXJlYWRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixZQUFZLEVBQ1osdUJBQXVCLEdBQ3hCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBUS9GLE1BQU0sT0FBTyxtQkFBbUI7SUFvQzlCLFlBQTZCLHFCQUE0QztRQUE1QywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBaEMvRCxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVqQyxXQUFNLEdBQUcsR0FBRyxDQUFDO1FBQ2IsVUFBSyxHQUFHLEVBQUUsQ0FBQztJQTZCd0QsQ0FBQztJQTNCN0UsSUFBYSxRQUFRLENBQUMsS0FBYztRQUNsQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sS0FBSyxLQUFLLFdBQVcsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFhLFFBQVEsQ0FBQyxLQUFjO1FBQ2xDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxLQUFLLEtBQUssV0FBVyxDQUFDO1FBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ25CLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1NBQ3ZCO0lBQ0gsQ0FBQztJQUNELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRXFDLFVBQVUsQ0FBQyxNQUFXO1FBQzFELE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN6QixNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVpQyxNQUFNLENBQUMsTUFBVztRQUNsRCxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDekIsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFJRCxTQUFTLENBQUMsS0FBa0I7UUFDMUIsTUFBTSxPQUFPLEdBQWdCLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNoRCxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO2dCQUNoRCxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBRXJELE9BQU8sQ0FBQyxDQUFDO2FBQ1Y7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTlCLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBa0I7UUFDOUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7OztZQTVERixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtnQkFDMUIsb1JBQTJDO2dCQUUzQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7YUFDaEQ7OztZQVBRLHFCQUFxQjs7O3lCQVkzQixNQUFNO3FCQUVOLEtBQUs7b0JBQ0wsS0FBSzt1QkFFTCxLQUFLO3VCQU9MLEtBQUs7eUJBVUwsWUFBWSxTQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQztxQkFLbkMsWUFBWSxTQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRmlsZVJlcG9zaXRvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmlsZS1yZXBvc2l0b3J5L2ZpbGUtcmVwb3NpdG9yeS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWMtZmlsZS1yZWFkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZS1yZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWxlLXJlYWRlci5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBGaWxlUmVhZGVyQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSBfZHJvcHpvbmU6IGJvb2xlYW47XG4gIHByaXZhdGUgX211bHRpcGxlOiBib29sZWFuO1xuXG4gIEBPdXRwdXQoKSBmaWxlQXBwZW5kID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBJbnB1dCgpIGFjY2VwdCA9ICcqJztcbiAgQElucHV0KCkgc2NvcGUgPSAnJztcblxuICBASW5wdXQoKSBzZXQgbXVsdGlwbGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9tdWx0aXBsZSA9IHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCc7XG4gIH1cbiAgZ2V0IG11bHRpcGxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9tdWx0aXBsZTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBkcm9wem9uZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2Ryb3B6b25lID0gdHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJztcbiAgICBpZiAoIXRoaXMuX2Ryb3B6b25lKSB7XG4gICAgICB0aGlzLl9tdWx0aXBsZSA9IHRydWU7XG4gICAgfVxuICB9XG4gIGdldCBkcm9wem9uZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZHJvcHpvbmU7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkcmFnb3ZlcicsIFsnJGV2ZW50J10pIG9uRHJhZ092ZXIoJGV2ZW50OiBhbnkpIHtcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkcm9wJywgWyckZXZlbnQnXSkgb25Ecm9wKCRldmVudDogYW55KSB7XG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBmaWxlUmVwb3NpdG9yeVNlcnZpY2U6IEZpbGVSZXBvc2l0b3J5U2VydmljZSkge31cblxuICByZWFkRmlsZXMoZmlsZXM6IEFycmF5PEZpbGU+KSB7XG4gICAgY29uc3QgY2hhbmdlZDogQXJyYXk8RmlsZT4gPSBbLi4uZmlsZXNdLm1hcCgoZikgPT4ge1xuICAgICAgaWYgKGYudHlwZS5tYXRjaCh0aGlzLmFjY2VwdC5yZXBsYWNlKCcqJywgJy4qJykpKSB7XG4gICAgICAgIHRoaXMuZmlsZVJlcG9zaXRvcnlTZXJ2aWNlLnNjb3BlKHRoaXMuc2NvcGUpLnB1c2goZik7XG5cbiAgICAgICAgcmV0dXJuIGY7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmZpbGVBcHBlbmQuZW1pdChjaGFuZ2VkKTtcblxuICAgIHJldHVybiBjaGFuZ2VkO1xuICB9XG5cbiAgb25GaWxlc0FwcGVuZChmaWxlczogQXJyYXk8RmlsZT4pIHtcbiAgICB0aGlzLmZpbGVBcHBlbmQuZW1pdCh0aGlzLnJlYWRGaWxlcyhmaWxlcykpO1xuICB9XG59XG4iXX0=