{"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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"}