ng-zorro-antd-mobile
Version:
An enterprise-class mobile UI components based on Ant Design and Angular
1 lines • 17.9 kB
Source Map (JSON)
{"version":3,"file":"ng-zorro-antd-mobile-image-picker.mjs","sources":["../../components/image-picker/image-picker.component.ts","../../components/image-picker/image-picker.component.html","../../components/image-picker/image-picker.module.ts","../../components/image-picker/ng-zorro-antd-mobile-image-picker.ts"],"sourcesContent":["import { Component, Input, Output, EventEmitter, ViewChild, ViewContainerRef } from '@angular/core';\n\nexport interface ElementType {\n type: string; // 'img' | 'select' | 'white'\n backgroundImage: string;\n transform: string;\n}\n\n@Component({\n selector: 'ImagePicker, nzm-image-picker',\n templateUrl: './image-picker.component.html'\n})\nexport class ImagePickerComponent {\n prefixCls: string = 'am-image-picker';\n flexEl: ElementType[][] = [];\n\n private _accept: string = 'image/*';\n private _count: number = 4;\n private _selectable: boolean = true;\n private _files: Array<any> = [];\n private _multiple: boolean = false;\n\n @ViewChild('fileSelectorInput', { read: ViewContainerRef })\n private _fileSelectorInput: ViewContainerRef;\n\n @Input() capture: boolean | string = false;\n @Input() disableDelete: boolean = false;\n @Input()\n get files() {\n return this._files;\n }\n set files(value: Array<any>) {\n this._files = value;\n this.sortItem();\n }\n @Input()\n get accept(): string {\n return this._accept;\n }\n set accept(value: string) {\n this._accept = value;\n this.sortItem();\n }\n @Input()\n get length(): number {\n return this._count;\n }\n set length(value: number) {\n if (value > 0) {\n this._count = value;\n } else {\n this._count = 4;\n }\n this.sortItem();\n }\n @Input()\n get multiple(): boolean {\n return this._multiple;\n }\n set multiple(value: boolean) {\n this._multiple = value;\n this.sortItem();\n }\n @Input()\n get selectable(): boolean {\n return this._selectable;\n }\n set selectable(value: boolean) {\n this._selectable = value;\n this.sortItem();\n }\n @Output()\n onFail: EventEmitter<any> = new EventEmitter();\n @Output()\n onChange: EventEmitter<any> = new EventEmitter();\n @Output()\n onImageClick: EventEmitter<any> = new EventEmitter();\n @Output()\n onAddImageClick: EventEmitter<any> = new EventEmitter();\n\n constructor() {}\n\n sortItem() {\n if (!this._files) {\n return;\n }\n let count = parseInt('' + this._count, 10);\n if (count <= 0) {\n count = 4;\n }\n let allEl: ElementType[] = this._files.map(item => {\n return {\n type: 'img',\n backgroundImage: 'url(' + item.url + ')',\n transform: 'rotate(' + this.getRotation(item.orientation) + 'deg)'\n };\n });\n if (this._selectable) {\n allEl.push({\n type: 'select',\n backgroundImage: '',\n transform: ''\n });\n }\n const length = allEl.length;\n if (length !== 0 && length % count !== 0) {\n const blankCount = count - (length % count);\n const fillBlankEl: any[] = [];\n for (let i = 0; i < blankCount; i++) {\n fillBlankEl.push({\n type: 'white',\n backgroundImage: '',\n transform: ''\n });\n }\n allEl = allEl.concat(fillBlankEl);\n }\n this.flexEl = [];\n for (let i = 0; i < allEl.length / count; i++) {\n const rowEl = allEl.slice(i * count, i * count + count);\n this.flexEl.push(rowEl);\n }\n }\n\n addImage(imgItem: any) {\n this._files.push({\n type: 'img',\n url: imgItem.url,\n orientation: imgItem.orientation\n });\n this.sortItem();\n this.onChange.emit({\n files: this._files,\n operationType: 'add',\n index: this._files.length - 1\n });\n }\n\n removeImage(index: number) {\n this._files.splice(index, 1);\n this.sortItem();\n this.onChange.emit({\n files: this._files,\n operationType: 'remove',\n index: index\n });\n }\n\n imageClick(index: number) {\n this.onImageClick.emit({\n index: index,\n files: this._files\n });\n }\n\n addImageClick(e) {\n this.onAddImageClick.emit(e);\n }\n\n parseFile(file: any, index: number) {\n const reader = new FileReader();\n reader.onload = e => {\n const dataURL = (e.target as any).result;\n if (!dataURL) {\n this.onFail.emit(`Fail to get the ${index} image`);\n return;\n }\n\n let orientation = 1;\n this.getOrientation(file, res => {\n // -2: not jpeg , -1: not defined\n if (res > 0) {\n orientation = res;\n }\n this.addImage({\n url: dataURL,\n orientation,\n file\n });\n });\n };\n reader.readAsDataURL(file);\n }\n\n fileChange(event) {\n const fileList: FileList = event.target.files;\n if (fileList && fileList.length) {\n for (let i = 0; i < fileList.length; i++) {\n this.parseFile(fileList[i], i);\n }\n }\n }\n\n getRotation(orientation = 1) {\n let imgRotation = 0;\n switch (orientation) {\n case 3:\n imgRotation = 180;\n break;\n case 6:\n imgRotation = 90;\n break;\n case 8:\n imgRotation = 270;\n break;\n default:\n }\n return imgRotation;\n }\n\n // https://stackoverflow.com/questions/7584794/accessing-jpeg-exif-rotation-data-in-javascript-on-the-client-side\n getOrientation(file: any, callback: (_: number) => void) {\n const reader = new FileReader();\n reader.onload = e => {\n const view = new DataView((e.target as any).result);\n if (view.getUint16(0, false) !== 0xffd8) {\n return callback(-2);\n }\n const length = view.byteLength;\n let offset = 2;\n while (offset < length) {\n const marker = view.getUint16(offset, false);\n offset += 2;\n if (marker === 0xffe1) {\n const tmp = view.getUint32((offset += 2), false);\n if (tmp !== 0x45786966) {\n return callback(-1);\n }\n const little = view.getUint16((offset += 6), false) === 0x4949;\n offset += view.getUint32(offset + 4, little);\n const tags = view.getUint16(offset, little);\n offset += 2;\n for (let i = 0; i < tags; i++) {\n if (view.getUint16(offset + i * 12, little) === 0x0112) {\n return callback(view.getUint16(offset + i * 12 + 8, little));\n }\n }\n } else if ((marker & 0xff00) !== 0xff00) {\n break;\n } else {\n offset += view.getUint16(offset, false);\n }\n }\n return callback(-1);\n };\n reader.readAsArrayBuffer(file.slice(0, 64 * 1024));\n }\n}\n","<div class=\"{{ prefixCls }}-list\" role=\"group\">\n <Flex *ngFor=\"let rowItem of flexEl; let i = index\">\n <FlexItem *ngFor=\"let item of rowItem; let j = index\">\n <div *ngIf=\"item && 'img' === item.type && item.backgroundImage\" class=\"{{ prefixCls }}-item\">\n <div\n role=\"button\"\n *ngIf=\"!disableDelete\"\n aria-label=\"Click and Remove this image\"\n class=\"{{ prefixCls }}-item-remove\"\n (click)=\"removeImage(i * length + j)\"\n ></div>\n <div\n role=\"button\"\n aria-label=\"Image can be clicked\"\n class=\"{{ prefixCls }}-item-content\"\n [ngStyle]=\"{ 'background-image': item.backgroundImage, transform: item.transform }\"\n (click)=\"imageClick(i * length + j)\"\n ></div>\n </div>\n <div\n role=\"button\"\n aria-label=\"Choose and add image\"\n *ngIf=\"item && 'select' === item.type\"\n class=\"{{ prefixCls }}-item {{ prefixCls }}-upload-btn\"\n (click)=\"addImageClick($event)\"\n >\n <input\n #fileSelectorInput\n type=\"file\"\n [accept]=\"accept\"\n [multiple]=\"multiple\"\n [attr.capture]=\"capture ? capture : null\"\n (change)=\"fileChange($event)\"\n />\n </div>\n <div *ngIf=\"item && 'white' === item.type\" class=\"{{ prefixCls }}-item-white\"></div>\n </FlexItem>\n </Flex>\n</div>\n","import { NgModule } from '@angular/core';\nimport { ImagePickerComponent } from './image-picker.component';\nimport { FlexModule } from 'ng-zorro-antd-mobile/flex';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n declarations: [ImagePickerComponent],\n exports: [ImagePickerComponent],\n imports: [CommonModule, FlexModule]\n})\nexport class ImagePickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}