UNPKG

preview-gallery

Version:

Angular library for previewing photos before uploading

1 lines 8.47 kB
{"version":3,"file":"preview-gallery.mjs","sources":["../../../projects/preview-gallery/src/lib/preview-gallery.component.ts","../../../projects/preview-gallery/src/lib/preview-gallery.component.html","../../../projects/preview-gallery/src/directives/preview-btn.directive.ts","../../../projects/preview-gallery/src/lib/preview-gallery.module.ts","../../../projects/preview-gallery/src/public-api.ts","../../../projects/preview-gallery/src/preview-gallery.ts"],"sourcesContent":["import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\n\nexport interface PreviewImage {\n path: string;\n id: symbol | number;\n}\n\n@Component({\n selector: 'ngx-preview-gallery',\n templateUrl: './preview-gallery.component.html',\n styleUrls: ['./preview-gallery.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PreviewGalleryComponent implements OnInit {\n @Output() images: EventEmitter<Array<PreviewImage>> = new EventEmitter();\n @Input() initialImages = []\n fileInput: FormControl = new FormControl();\n urls: Array<PreviewImage> = [];\n fullScreenImage: null | string = null\n\n constructor(private cdr: ChangeDetectorRef, private sanitizer: DomSanitizer) { }\n\n ngOnInit(): void {}\n\n onFileSelected(inputNode: HTMLInputElement): void {\n if(!inputNode?.files?.length) return\n const reader = new FileReader();\n reader.readAsDataURL(inputNode.files[0]);\n if(!inputNode.files[0].type.includes(\"image\")) return\n reader.onload = (e: any) => {\n this.urls.push({\n path: e.target.result,\n id: Symbol(\"id\")\n });\n this.cdr.detectChanges()\n this.images.emit(this.urls)\n };\n }\n\n delete(id: symbol | number): void {\n this.urls.forEach((item, index) => {\n if(item.id === id) {\n this.urls.splice(index, 1)\n }\n })\n this.images.emit(this.urls)\n }\n\n setUrls(urls: Array<PreviewImage>): void {\n this.urls = urls\n this.cdr.detectChanges()\n }\n\n trackByFn(index: number, item: PreviewImage): symbol | number {\n return item.id\n }\n\n getUrl(path: string): SafeStyle {\n return this.sanitizer.bypassSecurityTrustStyle(`url(${path})`)\n }\n}\n","<div class=\"preview\">\n <input hidden (change)=\"onFileSelected(fileInput)\" class=\"fileInput\" #fileInput id=\"fileInput\" type=\"file\">\n <ul *ngIf=\"urls.length\" class=\"container\">\n <li *ngFor=\"let url of urls; trackBy: trackByFn\" (click)=\"fullScreenImage=url.path\" class=\"img-wrap\">\n <div (click)=\"delete(url.id)\" class=\"close\"></div>\n <div [style.background-image]=\"getUrl(url.path)\" class=\"img\"></div>\n </li>\n </ul>\n</div>\n\n<div class=\"full\" (click)=\"fullScreenImage=null\" *ngIf=\"fullScreenImage\">\n <img class=\"full__image\" src=\"{{fullScreenImage}}\" alt=\"img\">\n</div>\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[preview-btn]',\n host: {\n '(click)': 'onClick()'\n }\n})\nexport class PreviewBtnDirective {\n\n constructor() {}\n\n onClick() {\n const container = document.getElementsByTagName('ngx-preview-gallery')[0]\n const inp = container.getElementsByClassName('fileInput')[0]\n const clickEvent = new MouseEvent(\"click\", {\n \"view\": window,\n \"bubbles\": true,\n \"cancelable\": false\n });\n inp.dispatchEvent(clickEvent)\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { PreviewBtnDirective } from '../directives/preview-btn.directive';\nimport { PreviewGalleryComponent } from './preview-gallery.component';\n\n\n\n@NgModule({\n declarations: [\n PreviewGalleryComponent,\n PreviewBtnDirective\n ],\n imports: [\n CommonModule,\n ],\n exports: [\n PreviewGalleryComponent,\n PreviewBtnDirective\n ]\n})\nexport class PreviewGalleryModule { }\n","/*\n * Public API Surface of preview-gallery\n */\n\nexport * from './lib/preview-gallery.component';\nexport * from './lib/preview-gallery.module';\nexport * from './directives/preview-btn.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;MAea,uBAAuB,CAAA;IAOlC,WAAoB,CAAA,GAAsB,EAAU,SAAuB,EAAA;QAAvD,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;QAAU,IAAS,CAAA,SAAA,GAAT,SAAS,CAAc;AANjE,QAAA,IAAA,CAAA,MAAM,GAAsC,IAAI,YAAY,EAAE,CAAC;QAChE,IAAa,CAAA,aAAA,GAAG,EAAE,CAAA;AAC3B,QAAA,IAAA,CAAA,SAAS,GAAgB,IAAI,WAAW,EAAE,CAAC;QAC3C,IAAI,CAAA,IAAA,GAAwB,EAAE,CAAC;QAC/B,IAAe,CAAA,eAAA,GAAkB,IAAI,CAAA;KAE2C;AAEhF,IAAA,QAAQ,MAAW;AAEnB,IAAA,cAAc,CAAC,SAA2B,EAAA;AACxC,QAAA,IAAG,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM;YAAE,OAAM;AACpC,QAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAChC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,QAAA,IAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,OAAM;AACrD,QAAA,MAAM,CAAC,MAAM,GAAG,CAAC,CAAM,KAAI;AACzB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACb,gBAAA,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM;AACrB,gBAAA,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC;AACjB,aAAA,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAA;YACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC7B,SAAC,CAAC;KACH;AAED,IAAA,MAAM,CAAC,EAAmB,EAAA;QACxB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AAChC,YAAA,IAAG,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;gBACjB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;AAC3B,aAAA;AACH,SAAC,CAAC,CAAA;QACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;KAC5B;AAED,IAAA,OAAO,CAAC,IAAyB,EAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;AAChB,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAA;KACzB;IAED,SAAS,CAAC,KAAa,EAAE,IAAkB,EAAA;QACzC,OAAO,IAAI,CAAC,EAAE,CAAA;KACf;AAED,IAAA,MAAM,CAAC,IAAY,EAAA;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAO,IAAA,EAAA,IAAI,CAAG,CAAA,CAAA,CAAC,CAAA;KAC/D;;oHA9CU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,sICfpC,goBAaA,EAAA,MAAA,EAAA,CAAA,khEAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FDEa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;+BACE,qBAAqB,EAAA,eAAA,EAGd,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,goBAAA,EAAA,MAAA,EAAA,CAAA,khEAAA,CAAA,EAAA,CAAA;mIAGrC,MAAM,EAAA,CAAA;sBAAf,MAAM;gBACE,aAAa,EAAA,CAAA;sBAArB,KAAK;;;METK,mBAAmB,CAAA;AAE9B,IAAA,WAAA,GAAA,GAAgB;IAEhB,OAAO,GAAA;QACL,MAAM,SAAS,GAAG,QAAQ,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAA;QACzE,MAAM,GAAG,GAAG,SAAS,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;AAC5D,QAAA,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,OAAO,EAAE;AACzC,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,YAAY,EAAE,KAAK;AACpB,SAAA,CAAC,CAAC;AACH,QAAA,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,CAAA;KAC9B;;gHAbU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;oGAAnB,mBAAmB,EAAA,QAAA,EAAA,eAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,WAAW;AACvB,qBAAA;AACF,iBAAA,CAAA;;;MCaY,oBAAoB,CAAA;;iHAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,iBAX7B,uBAAuB;QACvB,mBAAmB,CAAA,EAAA,OAAA,EAAA,CAGnB,YAAY,CAAA,EAAA,OAAA,EAAA,CAGZ,uBAAuB;QACvB,mBAAmB,CAAA,EAAA,CAAA,CAAA;AAGV,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EARtB,OAAA,EAAA,CAAA;YACP,YAAY;AACb,SAAA,CAAA,EAAA,CAAA,CAAA;2FAMU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAbhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,uBAAuB;wBACvB,mBAAmB;AACpB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;AACb,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,uBAAuB;wBACvB,mBAAmB;AACpB,qBAAA;AACF,iBAAA,CAAA;;;ACnBD;;AAEG;;ACFH;;AAEG;;;;"}