{"version":3,"file":"VideoLayer.mjs","sources":["../../../../../../packages/layer/data/Video/VideoLayer.ts"],"sourcesContent":["interface VideoOption {\r\n  url: string\r\n  zooms: number[]\r\n  bounds: any\r\n  opacity: number\r\n  loop: boolean\r\n}\r\n\r\nclass VideoLayer {\r\n\r\n  canvas: HTMLCanvasElement | null;\r\n  context: CanvasRenderingContext2D | null;\r\n  video: HTMLVideoElement | null;\r\n  layer: any;\r\n  canPlay = false;\r\n  frame = -1;\r\n\r\n  constructor (options: VideoOption, video: HTMLVideoElement) {\r\n    const canvas = document.createElement('canvas');\r\n    this.video = video;\r\n    video.src = options.url;\r\n    video.autoplay = true;\r\n    video.muted = true;\r\n    video.crossOrigin= \"anonymous\";\r\n    video.loop = options.loop;\r\n    const layerOptions: any = {\r\n      ...options,\r\n      canvas\r\n    };\r\n    this.canvas = canvas;\r\n    this.context = canvas.getContext('2d') as CanvasRenderingContext2D;\r\n    this.layer = new AMap.CanvasLayer(layerOptions);\r\n    this.initVideoEvents();\r\n    this.load();\r\n  }\r\n\r\n  getLayer () {\r\n    return this.layer;\r\n  }\r\n\r\n  initVideoEvents () {\r\n    this.video?.addEventListener('canplaythrough', () => {\r\n      if (this.canvas) {\r\n        this.canvas.width = this.video?.videoWidth as number;\r\n        this.canvas.height = this.video?.videoHeight as number;\r\n      }\r\n      this.canPlay = true;\r\n      this.play();\r\n    });\r\n  }\r\n\r\n  load () {\r\n    this.video?.load();\r\n  }\r\n\r\n  play () {\r\n    if (this.canPlay) {\r\n      this.video?.play();\r\n      this.stopRender();\r\n      this.render();\r\n    }\r\n  }\r\n\r\n  pause () {\r\n    this.stopRender();\r\n    this.video?.pause();\r\n  }\r\n\r\n  stopRender () {\r\n    if (this.frame) {\r\n      cancelAnimationFrame(this.frame);\r\n    }\r\n  }\r\n\r\n  render () {\r\n    this.frame = window.requestAnimationFrame(() => {\r\n      this.render();\r\n    });\r\n    if (this.video?.paused) {\r\n      this.video?.play();\r\n    } else {\r\n      this.context?.clearRect(0, 0, this.canvas?.width as number, this.canvas?.height as number);\r\n      this.context?.drawImage(this.video as any, 0, 0, this.canvas?.width as number, this.canvas?.height as number);  //绘制视频\r\n      this.layer.reFresh();\r\n    }\r\n  }\r\n\r\n  destroy () {\r\n    this.stopRender();\r\n    if (this.video) {\r\n      this.video.pause();\r\n    }\r\n    this.video = null;\r\n  }\r\n\r\n  setUrl (url: string) {\r\n    this.stopRender();\r\n    this.canPlay = false;\r\n    if (this.video) {\r\n      this.video.src = url;\r\n      this.load();\r\n    }\r\n  }\r\n\r\n  setZooms (zooms) {\r\n    this.getLayer().setZoom(zooms);\r\n  }\r\n\r\n  setOpacity (opacity) {\r\n    this.getLayer().setOpacity(opacity);\r\n  }\r\n\r\n  setBounds (bounds) {\r\n    this.getLayer().setBounds(bounds);\r\n  }\r\n\r\n  setzIndex (zIndex) {\r\n    this.getLayer().setzIndex(zIndex);\r\n  }\r\n\r\n  show () {\r\n    this.getLayer().show();\r\n  }\r\n\r\n  hide () {\r\n    this.getLayer().hide();\r\n  }\r\n}\r\n\r\nexport default VideoLayer;\r\n"],"names":["_a"],"mappings":"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"}