{"version":3,"file":"cty-mobile-ui-image-upload.mjs","sources":["../../../packages/components/image-upload/image-upload.ts","../../../packages/components/image-upload/image-upload.html","../../../packages/components/image-upload/module.ts","../../../packages/components/image-upload/cty-mobile-ui-image-upload.ts"],"sourcesContent":["import {\r\n  Component,\r\n  OnInit,\r\n  Input,\r\n  Output,\r\n  EventEmitter,\r\n  OnChanges,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CameraPhotoController, CameraPhotoOptions } from 'cty-mobile-ui/camera-photo';\r\nimport { ImageViewerOptions, CtyImageViewerController } from 'cty-mobile-ui/image-viewer';\r\nimport { ImageOption } from './types';\r\nimport { addIcons } from 'ionicons';\r\nimport { addOutline } from 'ionicons/icons';\r\nimport { ResourceResult } from 'cty-mobile-ui/services';\r\nimport { CtyIcon } from 'cty-mobile-ui/icon';\r\n@Component({\r\n  selector: 'cty-image-upload',\r\n  standalone: true,\r\n  imports: [CommonModule, CtyIcon],\r\n  templateUrl: './image-upload.html',\r\n  styleUrl: './image-upload.scss',\r\n})\r\nexport class CtyImageUpload implements OnInit, OnChanges {\r\n  // 上传区域图标名称\r\n  @Input() addIcon: string = 'add-outline';\r\n  // 上传区域图片链接\r\n  @Input() addImage: string = '';\r\n  // 已上传的图片列表\r\n  @Input() images: Array<string|ImageOption> = [];\r\n  @Input() closeIcon: string = 'cty-close2';\r\n  // cameraPhoto组件的参数\r\n  @Input() cameraPhotoOptions: CameraPhotoOptions = {};\r\n  // 图片上传数量限制\r\n  @Input() count: number = 9;\r\n  // 是否在点击预览图后展示全屏图片预览\r\n  @Input() imageViewer: boolean = true;\r\n  // 全屏图片预览的配置项，可选值见ImageViewer\r\n  @Input() imageViewerOptions: ImageViewerOptions = {};\r\n  @Input() imageViewerClassName: string = '';\r\n  // 是否展示删除按钮\r\n  @Input() deleteable: boolean = true;\r\n  // 图片上传成功\r\n  @Output() ctyImagePicker = new EventEmitter<ImageOption[]>(true);\r\n  // 点击上传\r\n  @Output() ctyAddImageTap = new EventEmitter<CtyImageUpload>(true);\r\n  // 点击图片\r\n  @Output() ctyImageTap = new EventEmitter<number>(true);\r\n  // 删除图片\r\n  @Output() ctyDeleteImage = new EventEmitter<ImageOption[]>(true);\r\n  // 关闭图片全屏预览\r\n  @Output() ctImageViewerDismiss = new EventEmitter<CtyImageUpload>(true);\r\n  private _imageViewerOptions: ImageViewerOptions = { images: [] };\r\n  public _images: ImageOption[] = [];\r\n  constructor(\r\n    private ImageViewerCtrl: CtyImageViewerController,\r\n    private cameraPhotoCtrl: CameraPhotoController\r\n  ) {\r\n    addIcons({addOutline});\r\n  }\r\n\r\n  ngOnInit() {}\r\n  ngOnChanges() {\r\n    this._images = this.images.map((item:string|ImageOption) => {\r\n      if (typeof item === 'string') {\r\n        return { url: item };\r\n      }\r\n      return item\r\n    });\r\n    if (this._images.length > this.count) {\r\n      const num = this._images.length - this.count;\r\n      this._images.splice(0, num);\r\n    }\r\n    this._imageViewerOptions.images = [];\r\n    this._images.forEach((item) => {\r\n      this._imageViewerOptions.images!.push(item.url as string);\r\n    });\r\n  }\r\n\r\n  async imageTap(index: number) {\r\n    if (this.imageViewer) {\r\n      this._imageViewerOptions.initialSlide = index;\r\n      const obj = Object.assign({}, this.imageViewerOptions, this._imageViewerOptions);\r\n      const ImageViewer = await this.ImageViewerCtrl.create( obj, 'ion-app', this.imageViewerClassName  );\r\n      ImageViewer.ctyDismiss.subscribe(() => {\r\n        this.ctImageViewerDismiss.emit();\r\n      });\r\n    }\r\n    this.ctyImageTap.emit(index);\r\n  }\r\n\r\n  async pickerImage() {\r\n    if (this._imageViewerOptions.images!.length >= this.count) {\r\n      return;\r\n    }\r\n    this.ctyAddImageTap.emit();\r\n    const count = this.count - this._imageViewerOptions.images!.length;\r\n    const obj = Object.assign( { file: false }, this.cameraPhotoOptions, { count } );\r\n    const cameraPhoto = await this.cameraPhotoCtrl.create(obj);\r\n    cameraPhoto.ctyTap.subscribe((res: { imageList: ResourceResult[] , index: number}) => {\r\n      this.getPictrue(res);\r\n    });\r\n  }\r\n\r\n  getPictrue(res: { imageList: ResourceResult[] , index: number}) {\r\n    if (res.imageList?.length>0) {\r\n      res.imageList.forEach((item: ResourceResult) => {\r\n        this._imageViewerOptions.images!.push(item.url as string);\r\n        this._images.push({\r\n          url: item.url,\r\n        });\r\n      });\r\n      this.ctyImagePicker.emit(res.imageList);\r\n    }\r\n  }\r\n\r\n  deletePictrue(event: MouseEvent, index: number) {\r\n    event.stopPropagation();\r\n    event.preventDefault();\r\n    this._imageViewerOptions.images!.splice(index, 1);\r\n    this._images.splice(index, 1);\r\n    this.ctyDeleteImage.emit(this._images);\r\n  }\r\n}\r\n","<div class=\"cty-image-upload flex-wrap\">\r\n    <div\r\n        class=\"cty-image-upload__item\"\r\n        *ngFor=\"let item of _images; let idx = index\"\r\n        (click)=\"imageTap(idx)\"\r\n    >\r\n        <img class=\"cty-image-upload__item-img\" [src]=\"item.url\" [ngStyle]=\"{ 'object-fit': item.fit }\"/>\r\n        <div class=\"cty-image-upload__item-close flex\" (click)=\"deletePictrue($event,idx)\" *ngIf=\"deleteable\">\r\n            <cty-icon class=\"cty-image-upload__item-close-icon\" [name]=\"closeIcon\"></cty-icon>\r\n        </div>\r\n    </div>\r\n    <div\r\n        class=\"cty-image-upload__item flex-column-center\"\r\n        (click)=\"pickerImage()\"\r\n        *ngIf=\"_images.length < count\"\r\n    >\r\n        <cty-icon class=\"cty-image-upload__add-icon\" *ngIf=\"!addImage && addIcon\" [name]=\"addIcon\"></cty-icon>\r\n        <img *ngIf=\"addImage\" class=\"cty-image-upload__add-image\" [src]=\"addImage\" />\r\n        <ng-content select=\"[name=description]\"></ng-content>\r\n    </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CtyImageUpload } from './image-upload';\r\n@NgModule({\r\n  imports: [CommonModule, CtyImageUpload],\r\n  exports: [CtyImageUpload],\r\n})\r\nexport class CtyImageUploadModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;MAuBa,cAAc,CAAA;IA+BzB,WACU,CAAA,eAAyC,EACzC,eAAsC,EAAA;QADtC,IAAe,CAAA,eAAA,GAAf,eAAe,CAA0B;QACzC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAuB;;QA/BvC,IAAO,CAAA,OAAA,GAAW,aAAa,CAAC;;QAEhC,IAAQ,CAAA,QAAA,GAAW,EAAE,CAAC;;QAEtB,IAAM,CAAA,MAAA,GAA8B,EAAE,CAAC;QACvC,IAAS,CAAA,SAAA,GAAW,YAAY,CAAC;;QAEjC,IAAkB,CAAA,kBAAA,GAAuB,EAAE,CAAC;;QAE5C,IAAK,CAAA,KAAA,GAAW,CAAC,CAAC;;QAElB,IAAW,CAAA,WAAA,GAAY,IAAI,CAAC;;QAE5B,IAAkB,CAAA,kBAAA,GAAuB,EAAE,CAAC;QAC5C,IAAoB,CAAA,oBAAA,GAAW,EAAE,CAAC;;QAElC,IAAU,CAAA,UAAA,GAAY,IAAI,CAAC;;AAE1B,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,CAAgB,IAAI,CAAC,CAAC;;AAEvD,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,CAAiB,IAAI,CAAC,CAAC;;AAExD,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,CAAS,IAAI,CAAC,CAAC;;AAE7C,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,CAAgB,IAAI,CAAC,CAAC;;AAEvD,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,YAAY,CAAiB,IAAI,CAAC,CAAC;AAChE,QAAA,IAAA,CAAA,mBAAmB,GAAuB,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAC1D,IAAO,CAAA,OAAA,GAAkB,EAAE,CAAC;AAKjC,QAAA,QAAQ,CAAC,EAAC,UAAU,EAAC,CAAC,CAAC;KACxB;AAED,IAAA,QAAQ,MAAK;IACb,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAuB,KAAI;AACzD,YAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC5B,gBAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;aACtB;AACD,YAAA,OAAO,IAAI,CAAA;AACb,SAAC,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE;YACpC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;YAC7C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SAC7B;AACD,QAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,EAAE,CAAC;QACrC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;YAC5B,IAAI,CAAC,mBAAmB,CAAC,MAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAa,CAAC,CAAC;AAC5D,SAAC,CAAC,CAAC;KACJ;IAED,MAAM,QAAQ,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,mBAAmB,CAAC,YAAY,GAAG,KAAK,CAAC;AAC9C,YAAA,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;AACjF,YAAA,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,oBAAoB,CAAG,CAAC;AACpG,YAAA,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;AACpC,gBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;AACnC,aAAC,CAAC,CAAC;SACJ;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC9B;AAED,IAAA,MAAM,WAAW,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAO,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE;YACzD,OAAO;SACR;AACD,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;AAC3B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAO,CAAC,MAAM,CAAC;QACnE,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,kBAAkB,EAAE,EAAE,KAAK,EAAE,CAAE,CAAC;QACjF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC3D,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAmD,KAAI;AACnF,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACvB,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,UAAU,CAAC,GAAmD,EAAA;QAC5D,IAAI,GAAG,CAAC,SAAS,EAAE,MAAM,GAAC,CAAC,EAAE;YAC3B,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAoB,KAAI;gBAC7C,IAAI,CAAC,mBAAmB,CAAC,MAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAa,CAAC,CAAC;AAC1D,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;oBAChB,GAAG,EAAE,IAAI,CAAC,GAAG;AACd,iBAAA,CAAC,CAAC;AACL,aAAC,CAAC,CAAC;YACH,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;SACzC;KACF;IAED,aAAa,CAAC,KAAiB,EAAE,KAAa,EAAA;QAC5C,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,IAAI,CAAC,mBAAmB,CAAC,MAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACxC;+GAnGU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,ECvB3B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,yhCAqBA,EDFY,MAAA,EAAA,CAAA,04FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,qVAAE,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIpB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAP1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,cAChB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,OAAO,CAAC,EAAA,QAAA,EAAA,yhCAAA,EAAA,MAAA,EAAA,CAAA,04FAAA,CAAA,EAAA,CAAA;iIAMvB,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAEG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAEG,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;gBAEG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAEG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAEG,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;gBACG,oBAAoB,EAAA,CAAA;sBAA5B,KAAK;gBAEG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAEI,cAAc,EAAA,CAAA;sBAAvB,MAAM;gBAEG,cAAc,EAAA,CAAA;sBAAvB,MAAM;gBAEG,WAAW,EAAA,CAAA;sBAApB,MAAM;gBAEG,cAAc,EAAA,CAAA;sBAAvB,MAAM;gBAEG,oBAAoB,EAAA,CAAA;sBAA7B,MAAM;;;ME5CI,oBAAoB,CAAA;+GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EAHrB,OAAA,EAAA,CAAA,YAAY,EAAE,cAAc,aAC5B,cAAc,CAAA,EAAA,CAAA,CAAA,EAAA;gHAEb,oBAAoB,EAAA,OAAA,EAAA,CAHrB,YAAY,EAAE,cAAc,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAG3B,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,cAAc,CAAC;oBACvC,OAAO,EAAE,CAAC,cAAc,CAAC;AAC1B,iBAAA,CAAA;;;ACND;;AAEG;;;;"}