{"version":3,"sources":["../../../src/components/AudioPlayer/index.js"],"names":["dayjs","extend","durationPlugin","utcPlugin","AudioPlayer","props","state","duration","currentDuration","isPlaying","player","src","oncanplay","setState","event","target","onended","onpause","onplay","ontimeupdate","currentTime","prevProps","pause","playerList","document","getElementsByTagName","Array","from","forEach","paused","play","ref","display","clickPlayOrPause","value","utc","asMilliseconds","format","React","Component"],"mappings":"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","file":"index.js","sourcesContent":["import React from \"react\";\nimport { Slider, Icon } from \"antd\";\nimport dayjs from \"dayjs\";\nimport durationPlugin from \"dayjs/plugin/duration\";\nimport utcPlugin from \"dayjs/plugin/utc\";\nimport \"./index.less\";\n\ndayjs.extend(durationPlugin);\ndayjs.extend(utcPlugin);\n\nclass AudioPlayer extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n duration: 0,\n currentDuration: 0,\n isPlaying: false\n };\n }\n\n componentDidMount() {\n if (this.player) {\n const { src } = this.props;\n this.player.oncanplay = event =>\n this.setState({ duration: event.target.duration });\n this.player.onended = () =>\n this.setState({ isPlaying: false, currentDuration: 0 });\n this.player.onpause = () => this.setState({ isPlaying: false });\n this.player.onplay = () => this.setState({ isPlaying: true });\n this.player.ontimeupdate = event =>\n this.setState({ currentDuration: event.target.currentTime });\n this.player.src = src;\n }\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.src !== prevProps.src) {\n this.player.oncanplay = event =>\n this.setState({ duration: event.target.duration });\n this.player.onended = () =>\n this.setState({ isPlaying: false, currentDuration: 0 });\n this.player.onpause = () => this.setState({ isPlaying: false });\n this.player.onplay = () => this.setState({ isPlaying: true });\n this.player.ontimeupdate = event =>\n this.setState({ currentDuration: event.target.currentTime });\n this.player.src = this.props.src;\n }\n }\n\n clickPlayOrPause(isPlaying) {\n if (!this.player) {\n return;\n }\n if (isPlaying) {\n this.player.pause();\n } else {\n // 如果是播放,先暂停其他的播放\n const playerList = document.getElementsByTagName(\"audio\");\n if (playerList) {\n Array.from(playerList).forEach(player => {\n if(!player.paused) {\n player.pause();\n }\n })\n }\n this.player.play();\n }\n }\n\n render() {\n const { currentDuration, isPlaying, duration } = this.state;\n return (\n
\n {/* eslint-disable-next-line jsx-a11y/media-has-caption */}\n {\n this.player = ref;\n }}\n style={{ display: \"none\" }}\n />\n { this.clickPlayOrPause(isPlaying); }}\n >\n {isPlaying ? (\n \n ) : (\n \n )}\n \n {\n if (this.player) {\n this.player.currentTime = value;\n }\n }}\n />\n \n {dayjs\n .utc(dayjs.duration(currentDuration, \"seconds\").asMilliseconds())\n .format(\"mm:ss\")}\n /\n {dayjs\n .utc(dayjs.duration(duration, \"seconds\").asMilliseconds())\n .format(\"mm:ss\")}\n \n
\n );\n }\n}\n\nexport default AudioPlayer;\n"]}