{"version":3,"file":"cty-mobile-ui-record.mjs","sources":["../../../packages/components/record/record.ts","../../../packages/components/record/record.html","../../../packages/components/record/module.ts","../../../packages/components/record/controller.ts","../../../packages/components/record/cty-mobile-ui-record.ts"],"sourcesContent":["import {\r\n  Output,\r\n  EventEmitter,\r\n  Component,\r\n  OnInit,\r\n  NgZone,\r\n  Input\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CtyIcon } from 'cty-mobile-ui/icon';\r\nimport { CtyOverlay } from 'cty-mobile-ui/overlay';\r\nimport { CtyAlert } from 'cty-mobile-ui/alert';\r\nimport { CtyCircle } from 'cty-mobile-ui/circle';\r\nimport { IonText, IonButton } from '@ionic/angular/standalone';\r\nimport { closeOutline } from 'ionicons/icons';\r\nimport { addIcons } from 'ionicons';\r\n\r\nimport {\r\n  CTYRecordService,\r\n  CTYInspectService,\r\n  CTYControllerService,\r\n} from 'cty-mobile-ui/services';\r\n\r\ndeclare let wx: any;\r\n@Component({\r\n  selector: 'cty-record',\r\n  standalone: true,\r\n  imports: [CommonModule, CtyIcon, CtyOverlay, CtyAlert, IonText, IonButton, CtyCircle],\r\n  templateUrl: './record.html',\r\n  styleUrl: './record.scss',\r\n})\r\nexport class CtyRecord implements OnInit {\r\n  @Input() backdropDismiss: boolean = false;\r\n  @Input() closeable: boolean = true;\r\n  @Input() maxSeconds: number = 60;\r\n  @Input() minSeconds: number = 1;\r\n  @Input() circleColor: string = 'var(--cty-color-primary)';\r\n  @Input() circleWidth: number | string = 50;\r\n  @Output() ctyRecordStart = new EventEmitter<CtyRecord>(true);\r\n  @Output() ctyRecording = new EventEmitter<CtyRecord>(true);\r\n  @Output() ctyRecordEnd = new EventEmitter<object>(true);\r\n  @Output() ctyRecordComplete = new EventEmitter<object>(true);\r\n  @Output() ctyDismiss = new EventEmitter<CtyRecord>(true);\r\n  _recordDesc = '点击开始录音';\r\n  _recordTime = '0s';\r\n  _recordStatus = '';\r\n  recorded = false;\r\n  recording = false;\r\n  auditioning = false;\r\n  recordSecond = 0; /*录音时长*/\r\n  timeStart!: Date; /*录音开始时间*/\r\n  timeEnd!: Date; /*录音结束时间*/\r\n  lasttime = 0;\r\n  countDownTimer = 0;\r\n  recordFile = '';\r\n  _showWarning = false;\r\n  constructor(\r\n    private zone: NgZone,\r\n    public ctyControllerService: CTYControllerService,\r\n    public ctyInspectService: CTYInspectService,\r\n    public ctyRecordService: CTYRecordService\r\n  ) {\r\n    addIcons({closeOutline})\r\n  }\r\n\r\n  ngOnInit() {\r\n    this._initRecord();\r\n    if (this.ctyInspectService.IsMicroMessager()) {\r\n      wx.onVoicePlayEnd({\r\n        success: () => {\r\n          this.zone.run(() => {\r\n            this.auditioning = false;\r\n            this.endRecord();\r\n          });\r\n        },\r\n      });\r\n    }\r\n  }\r\n  _initRecord() {\r\n    this.auditioning = false;\r\n    this.recorded = false;\r\n    this.recording = false;\r\n    this._recordDesc = '点击开始录音';\r\n    this._recordTime = '0s';\r\n    this._recordStatus = '';\r\n  }\r\n\r\n  _doReRecord() {\r\n    this.startRecord();\r\n  }\r\n\r\n  async _doRecord() {\r\n    //防止点击太快\r\n    let ntime: number = new Date().getTime();\r\n    if (ntime - this.lasttime <= 500) {\r\n      return;\r\n    }\r\n    //开始录音\r\n    if (!this.recorded) {\r\n      this.startRecord();\r\n    } else {\r\n      this.auditioning = !this.auditioning;\r\n      if (this.auditioning) {\r\n        this._recordDesc = '点击结束试听';\r\n        this._recordTime = '试听中';\r\n        this._recordStatus = '暂停';\r\n        try {\r\n          const playStatus = await this.ctyRecordService.PlayVoice(\r\n            this.recordFile\r\n          );\r\n          if (typeof playStatus == 'string' && playStatus === 'finish') {\r\n            this.endRecord();\r\n          }\r\n        } catch (error) {}\r\n      } else {\r\n        this.endRecord();\r\n        try {\r\n          await this.ctyRecordService.PauseVoice(this.recordFile);\r\n        } catch (error) {}\r\n      }\r\n    }\r\n  }\r\n\r\n  async startRecord() {\r\n    this.recordSecond = 0;\r\n    this.recording = true;\r\n    this.recorded = false;\r\n    this.auditioning = false;\r\n    this._recordDesc = '点击结束录音';\r\n    this._recordTime = this.recordSecond + 's';\r\n    this._recordStatus = '正在录音';\r\n    this.timeStart = new Date();\r\n    this.countDown();\r\n    this.ctyRecordStart.emit();\r\n    try {\r\n      await this.ctyRecordService.StartRecord();\r\n    } catch (error) {}\r\n  }\r\n\r\n  async _doStopRecord() {\r\n    clearTimeout(this.countDownTimer);\r\n    this.timeEnd = new Date();\r\n    this.recordSecond = Math.min(\r\n      Math.floor((+this.timeEnd - +this.timeStart) / 1000),\r\n      this.maxSeconds\r\n    ); //录音秒数\r\n    this.recorded = true;\r\n    this.recording = false;\r\n    this.endRecord();\r\n    try {\r\n      this.recordFile = await this.ctyRecordService.StopRecord();\r\n    } catch (error) {}\r\n    if (this.recordSecond < this.minSeconds) {\r\n      this._initRecord();\r\n      this.ctyControllerService.Toast('时间太短');\r\n      return;\r\n    }\r\n    this.ctyRecordEnd.emit({\r\n      file: this.recordFile,\r\n      duration: this.recordSecond,\r\n    });\r\n  }\r\n\r\n  endRecord() {\r\n    this._recordDesc = '点击试听录音';\r\n    this._recordTime = '已录音' + this.recordSecond + 's';\r\n    this._recordStatus = '试听';\r\n  }\r\n\r\n  async _doConfirm() {\r\n    try {\r\n      await this.ctyRecordService.PauseVoice(this.recordFile);\r\n    } catch (error) {}\r\n    this.ctyRecordComplete.emit({\r\n      file: this.recordFile,\r\n      duration: this.recordSecond,\r\n    });\r\n  }\r\n\r\n  _closeRecord() {\r\n    if (this.auditioning) {\r\n      this.ctyControllerService.Toast('正在试听录音');\r\n      return;\r\n    }\r\n    if (this.recording) {\r\n      this.ctyControllerService.Toast('正在录音');\r\n      return;\r\n    }\r\n    if (!this.recorded) {\r\n      this._dismiss();\r\n      return;\r\n    }\r\n    this._showWarning = true;\r\n  }\r\n\r\n  countDown() {\r\n    clearTimeout(this.countDownTimer);\r\n    if (this.recordSecond < this.maxSeconds) {\r\n      this.countDownTimer = window.setTimeout(() => {\r\n        this.recordSecond++;\r\n        this.recordSecond = Math.min(this.maxSeconds, this.recordSecond);\r\n        this._recordTime = this.recordSecond + 's';\r\n        this.countDown();\r\n      }, 1000);\r\n      this.ctyRecording.emit();\r\n    } else {\r\n      this._doStopRecord();\r\n    }\r\n  }\r\n  _doAlertAction({ index }: any) {\r\n    this._showWarning = false;\r\n    if (index == 1) {\r\n      this._dismiss();\r\n    }\r\n  }\r\n  _dismiss() {\r\n    this.ctyDismiss.emit();\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    try {\r\n      if (this.ctyInspectService.IsMicroMessager()) {\r\n        wx.stopVoice({\r\n          localId: this.recordFile,\r\n        });\r\n      }\r\n    } catch (error) {}\r\n  }\r\n}\r\n","<cty-overlay\r\n    position=\"bottom\"\r\n    [backdropDismiss]=\"backdropDismiss\"\r\n    (ctyDismiss)=\"_dismiss()\"\r\n>\r\n    <div class=\"cty-record safe-area-bottom-padding flex-center-column\">\r\n        <ng-content select=\"[name=header]\"></ng-content>\r\n        <div class=\"cty-record__close\" *ngIf=\"closeable\" (click)=\"_closeRecord()\">\r\n            <cty-icon name=\"close-outline\"></cty-icon>\r\n        </div>\r\n        <p class=\"cty-record__desc\">{{_recordDesc}}</p>\r\n        <p class=\"cty-record__time\">{{_recordTime}}</p>\r\n        <div class=\"cty-record__main flex-align-end-center\">\r\n            <div\r\n                class=\"cty-record__redo flex-column-center\"\r\n                *ngIf=\"recorded\"\r\n                (click)=\"_doReRecord()\"\r\n            >\r\n                <cty-icon name=\"cty-redo\" class=\"flex-center\"></cty-icon>\r\n                <ion-text>重录</ion-text>\r\n            </div>\r\n            <ion-button\r\n                *ngIf=\"!recording\"\r\n                class=\"cty-record__button flex-center\"\r\n                (click)=\"_doRecord()\"\r\n            >\r\n                <cty-icon name=\"cty-record\" *ngIf=\"!auditioning&&!recorded\"></cty-icon>\r\n                <cty-icon name=\"cty-pause\" *ngIf=\"auditioning&&recorded\"></cty-icon>\r\n                <cty-icon name=\"cty-play\" *ngIf=\"!auditioning&&recorded\"></cty-icon>\r\n            </ion-button>\r\n            <div\r\n                *ngIf=\"recording\"\r\n                class=\"cty-record__recording flex-center\"\r\n                (click)=\"_doStopRecord()\"\r\n            >\r\n                <cty-circle\r\n                    [rate]=\"recordSecond/maxSeconds*100\"\r\n                    [width]=\"circleWidth\"\r\n                    [color]=\"circleColor\"\r\n                >\r\n                </cty-circle>\r\n                <cty-icon name=\"cty-pause\"></cty-icon>\r\n            </div>\r\n        <div\r\n            class=\"cty-record__yes flex-column-center\"\r\n            *ngIf=\"recorded\"\r\n            (click)=\"_doConfirm()\"\r\n        >\r\n            <cty-icon name=\"cty-yes\" class=\"flex-center\"></cty-icon>\r\n            <ion-text>确定</ion-text>\r\n        </div>\r\n        </div>\r\n        <p class=\"cty-record__send\" *ngIf=\"!auditioning&&!recorded&&!recording\">仅发送语音</p>\r\n        <p class=\"cty-record__status\" *ngIf=\"auditioning||recorded||recording\">{{_recordStatus}}</p>\r\n    </div>\r\n</cty-overlay>\r\n<cty-alert\r\n    *ngIf=\"_showWarning\"\r\n    title=\"取消录音\"\r\n    content=\"确定取消本条录音？\"\r\n    [buttons]=\"['取消','确定']\"\r\n    (ctyDismiss)=\"_showWarning=false\"\r\n    (ctyTap)=\"_doAlertAction($event)\"\r\n></cty-alert>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CtyRecord } from './record';\r\n@NgModule({\r\n  imports: [CommonModule, CtyRecord],\r\n  exports: [CtyRecord],\r\n})\r\nexport class CtyRecordModule {}\r\n","import {\r\n  Injectable,\r\n  ApplicationRef,\r\n  EmbeddedViewRef,\r\n  EnvironmentInjector,\r\n  ComponentRef,\r\n  createComponent,\r\n} from '@angular/core';\r\nimport { CtyRecord } from './record';\r\nimport { RecordOptions } from './types';\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class CtyRecordController {\r\n  constructor(\r\n    public applicationRef: ApplicationRef,\r\n    public injector: EnvironmentInjector\r\n  ) {}\r\n  public async create(\r\n    opt: RecordOptions,\r\n    selector: string = 'app-root',\r\n    className: string = ''\r\n  ): Promise<CtyRecord> {\r\n    const componentRef: ComponentRef<CtyRecord> = createComponent(CtyRecord, {\r\n      environmentInjector: this.injector,\r\n    });\r\n    this.applicationRef.attachView(componentRef.hostView);\r\n    const customEl = (componentRef.hostView as EmbeddedViewRef<any>)\r\n      .rootNodes[0] as HTMLElement;\r\n    customEl.className = className;\r\n    document.body.querySelector(selector)!.appendChild(customEl);\r\n    let component: any = componentRef.instance;\r\n    for (let key in opt) {\r\n      component[key] = opt[key as keyof RecordOptions];\r\n    }\r\n    component.ctyDismiss.subscribe(() => {\r\n      componentRef.destroy();\r\n    });\r\n    return component;\r\n  }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}