{"version":3,"sources":["jsdelivr-header.js","/npm/alan-audio20@1.0.1/ReactPlayer.js"],"names":[],"mappings":"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","file":"/npm/alan-audio20@1.0.1/ReactPlayer.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/alan-audio20@1.0.1/ReactPlayer.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","\"use strict\";\r\n\r\nObject.defineProperty(exports, \"__esModule\", {\r\n  value: true,\r\n});\r\nexports.default = void 0;\r\n\r\nvar _react = _interopRequireWildcard(require(\"react\"));\r\n\r\nvar _emptyPoster = _interopRequireDefault(\r\n  require(\"./assets/icons/empty-poster.svg\")\r\n);\r\n\r\nvar _mute = _interopRequireDefault(require(\"./assets/icons/mute.svg\"));\r\n\r\nvar _unMute = _interopRequireDefault(require(\"./assets/icons/unMute.svg\"));\r\n\r\nvar _pause = _interopRequireDefault(require(\"./assets/icons/pause.svg\"));\r\n\r\nvar _pauseBlack = _interopRequireDefault(\r\n  require(\"./assets/icons/pause-black.svg\")\r\n);\r\n\r\nvar _play = _interopRequireDefault(require(\"./assets/icons/play.svg\"));\r\n\r\nvar _playBlack = _interopRequireDefault(\r\n  require(\"./assets/icons/play-black.svg\")\r\n);\r\n\r\nvar _backward5Seconds = _interopRequireDefault(\r\n  require(\"./assets/icons/backward-5-seconds.svg\")\r\n);\r\n\r\nvar _backward5SecondsBlack = _interopRequireDefault(\r\n  require(\"./assets/icons/backward-5-seconds-black.svg\")\r\n);\r\n\r\nvar _forward5Seconds = _interopRequireDefault(\r\n  require(\"./assets/icons/forward-5-seconds.svg\")\r\n);\r\n\r\nvar _forward5SecondsBlack = _interopRequireDefault(\r\n  require(\"./assets/icons/forward-5-seconds-black.svg\")\r\n);\r\n\r\nvar _useWindowSize = _interopRequireDefault(require(\"./hooks/useWindowSize\"));\r\n\r\nfunction _interopRequireDefault(obj) {\r\n  return obj && obj.__esModule ? obj : { default: obj };\r\n}\r\n\r\nfunction _getRequireWildcardCache(nodeInterop) {\r\n  if (typeof WeakMap !== \"function\") return null;\r\n  var cacheBabelInterop = new WeakMap();\r\n  var cacheNodeInterop = new WeakMap();\r\n  return (_getRequireWildcardCache = function (nodeInterop) {\r\n    return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\r\n  })(nodeInterop);\r\n}\r\n\r\nfunction _interopRequireWildcard(obj, nodeInterop) {\r\n  if (!nodeInterop && obj && obj.__esModule) {\r\n    return obj;\r\n  }\r\n  if (obj === null || (typeof obj !== \"object\" && typeof obj !== \"function\")) {\r\n    return { default: obj };\r\n  }\r\n  var cache = _getRequireWildcardCache(nodeInterop);\r\n  if (cache && cache.has(obj)) {\r\n    return cache.get(obj);\r\n  }\r\n  var newObj = {};\r\n  var hasPropertyDescriptor =\r\n    Object.defineProperty && Object.getOwnPropertyDescriptor;\r\n  for (var key in obj) {\r\n    if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\r\n      var desc = hasPropertyDescriptor\r\n        ? Object.getOwnPropertyDescriptor(obj, key)\r\n        : null;\r\n      if (desc && (desc.get || desc.set)) {\r\n        Object.defineProperty(newObj, key, desc);\r\n      } else {\r\n        newObj[key] = obj[key];\r\n      }\r\n    }\r\n  }\r\n  newObj.default = obj;\r\n  if (cache) {\r\n    cache.set(obj, newObj);\r\n  }\r\n  return newObj;\r\n}\r\n\r\nfunction ReactPlayer({ src, artistImage = _emptyPoster.default, title }) {\r\n  const [isPlaying, setIsPlaying] = (0, _react.useState)(false);\r\n  const [duration, setDuration] = (0, _react.useState)(0);\r\n  const [currentTime, setCurrentTime] = (0, _react.useState)(0);\r\n  const [volume, setVolume] = (0, _react.useState)(50);\r\n  const [isMuted, setIsMuted] = (0, _react.useState)(false);\r\n  const audioRef = (0, _react.useRef)();\r\n  const progressBarRef = (0, _react.useRef)();\r\n  const isReady = (0, _react.useRef)(false);\r\n  (0, _react.useEffect)(() => {\r\n    if (!isReady.current) {\r\n      isReady.current = true;\r\n    }\r\n  }, []); // update on the current time of audio\r\n\r\n  (0, _react.useEffect)(() => {\r\n    onLoadedMetadata();\r\n    progressBarRef.current.value = Math.floor(audioRef.current.currentTime);\r\n    progressBarRef.current.style.setProperty(\r\n      \"--move-progressbar\",\r\n      `${\r\n        (progressBarRef.current.value /\r\n          calculateTime(audioRef.current.duration)) *\r\n        100\r\n      }%`\r\n    );\r\n\r\n    if (currentTime >= audioRef.current.duration) {\r\n      setIsPlaying(false);\r\n      audioRef.current.currentTime = 0;\r\n    } // if (!audioRef.current.onCanPlayThrough) {\r\n    //   console.log(\"can play\");\r\n    // } else {\r\n    //   console.log(\"can not play\");\r\n    // }\r\n  }, [currentTime, isPlaying]); // run on first load\r\n\r\n  (0, _react.useEffect)(() => {\r\n    onLoadedMetadata();\r\n  }, []); // set duration everytime the player has loaded metadata\r\n\r\n  const onLoadedMetadata = () => {\r\n    const seconds = Math.floor(audioRef.current.duration);\r\n    progressBarRef.current.max = seconds;\r\n    setDuration(seconds); // try {\r\n    //   await audioRef.current.onLoadedMetadata\r\n    //   console.log(\"onLoadedMetadata try\")\r\n    //   const seconds = Math.floor(audioRef.current.duration);\r\n    //   setDuration(seconds);\r\n    //   progressBarRef.current.max = seconds;\r\n    // } catch {\r\n    //   console.log(\"onLoadedMetadata catch\")\r\n    // }\r\n  };\r\n\r\n  const togglePlayPause = async () => {\r\n    try {\r\n      const prevState = isPlaying;\r\n      setIsPlaying(!prevState);\r\n\r\n      if (!prevState) {\r\n        await play();\r\n      } else {\r\n        pause();\r\n      }\r\n    } catch (err) {}\r\n  };\r\n\r\n  const play = async () => {\r\n    try {\r\n      await audioRef.current.play();\r\n      setCurrentTime(progressBarRef.current.value);\r\n      audioRef.current.currentTime = progressBarRef.current.value;\r\n    } catch {\r\n      console.log(\"play promise failed, retrying...\");\r\n    }\r\n  };\r\n\r\n  const pause = async () => {\r\n    try {\r\n      await audioRef.current.pause();\r\n      setCurrentTime(progressBarRef.current.value);\r\n      audioRef.current.currentTime = progressBarRef.current.value;\r\n    } catch {\r\n      console.log(\"pause promise failed, retrying...\");\r\n    }\r\n  };\r\n\r\n  const changeAudioToProgressBar = async () => {\r\n    if (isPlaying) {\r\n      await play();\r\n    } else {\r\n      await pause();\r\n    }\r\n  };\r\n\r\n  const calculateTime = (secs) => {\r\n    const minutes = Math.floor(secs / 60);\r\n    const returnedMinutes = minutes < 10 ? `0${minutes}` : `${minutes}`;\r\n    const seconds = Math.floor(secs % 60);\r\n    const returnedSeconds = seconds < 10 ? `0${seconds}` : `${seconds}`;\r\n    return `${returnedMinutes}:${returnedSeconds}`;\r\n  };\r\n\r\n  const toggleMute = () => {\r\n    if (isMuted) {\r\n      setIsMuted(false);\r\n      setVolume(50);\r\n      audioRef.current.volume = 0.5;\r\n    } else {\r\n      setIsMuted(true);\r\n      setVolume(0);\r\n      audioRef.current.volume = 0;\r\n    }\r\n  };\r\n\r\n  const changeVolume = (event) => {\r\n    setVolume(+event.target.value);\r\n    if (+event.target.value === 0) setIsMuted(true);\r\n    else setIsMuted(false);\r\n    audioRef.current.volume = event.target.value / 100;\r\n  };\r\n\r\n  const { width } = (0, _useWindowSize.default)();\r\n  return /*#__PURE__*/ _react.default.createElement(\r\n    \"div\",\r\n    {\r\n      className: \"App\",\r\n    },\r\n    /*#__PURE__*/ _react.default.createElement(\"audio\", {\r\n      ref: audioRef,\r\n      src: src,\r\n      preload: \"metadata\",\r\n      onLoadedMetadata: onLoadedMetadata,\r\n      onTimeUpdate: () =>\r\n        setCurrentTime(\r\n          audioRef.current.currentTime,\r\n          setDuration(audioRef.current.duration)\r\n        ),\r\n    }),\r\n    /*#__PURE__*/ _react.default.createElement(\r\n      \"div\",\r\n      {\r\n        className: \"audio-player\",\r\n      },\r\n      /*#__PURE__*/ _react.default.createElement(\r\n        \"div\",\r\n        {\r\n          className: \"audio-player__poster\",\r\n        },\r\n        /*#__PURE__*/ _react.default.createElement(\"img\", {\r\n          src: artistImage,\r\n          alt: \"audio-poster\",\r\n        })\r\n      ),\r\n      /*#__PURE__*/ _react.default.createElement(\r\n        \"div\",\r\n        null,\r\n        /*#__PURE__*/ _react.default.createElement(\r\n          \"div\",\r\n          {\r\n            className: \"audio-player__artist\",\r\n          },\r\n          title\r\n        ),\r\n        /*#__PURE__*/ _react.default.createElement(\r\n          \"div\",\r\n          {\r\n            style: {\r\n              display: \"flex\",\r\n              alignItems: \"center\",\r\n              marginTop: \"40px\",\r\n            },\r\n          },\r\n          /*#__PURE__*/ _react.default.createElement(\r\n            \"div\",\r\n            {\r\n              className: \"audio-player__timer\",\r\n            },\r\n            /*#__PURE__*/ _react.default.createElement(\r\n              \"span\",\r\n              {\r\n                className: \"timer-start\",\r\n              },\r\n              calculateTime(currentTime)\r\n            ),\r\n            /*#__PURE__*/ _react.default.createElement(\"input\", {\r\n              className: \"timer-range\",\r\n              type: \"range\",\r\n              defaultValue: \"0\",\r\n              ref: progressBarRef,\r\n              onChange: changeAudioToProgressBar,\r\n              style:\r\n                width > 768\r\n                  ? {\r\n                      background: `linear-gradient(to right, white ${\r\n                        (currentTime / duration) * 100\r\n                      }%, rgba(255,255,255,0.3) 0)`,\r\n                    }\r\n                  : {\r\n                      background: `linear-gradient(to right, black ${\r\n                        (currentTime / duration) * 100\r\n                      }%, rgba(20,20,42,0.4) 0)`,\r\n                    },\r\n            }),\r\n            /*#__PURE__*/ _react.default.createElement(\r\n              \"span\",\r\n              {\r\n                className: \"timer-end\",\r\n              },\r\n              duration ? calculateTime(duration) : \"00:00\"\r\n            )\r\n          ),\r\n          width > 768 &&\r\n            /*#__PURE__*/ _react.default.createElement(\r\n              \"div\",\r\n              {\r\n                className: \"audio-player__volume\",\r\n              },\r\n              /*#__PURE__*/ _react.default.createElement(\"img\", {\r\n                src: isMuted ? _mute.default : _unMute.default,\r\n                onClick: toggleMute,\r\n                alt: \"volume-range\",\r\n              }),\r\n              /*#__PURE__*/ _react.default.createElement(\"input\", {\r\n                type: \"range\",\r\n                min: \"0\",\r\n                max: \"100\",\r\n                defaultValue: \"50\",\r\n                value: volume,\r\n                className: \"volume-range\",\r\n                onChange: changeVolume,\r\n                style: {\r\n                  background: `linear-gradient(to right, white ${volume}%, rgba(255,255,255,0.3) 0)`,\r\n                },\r\n              })\r\n            )\r\n        ),\r\n        /*#__PURE__*/ _react.default.createElement(\r\n          \"div\",\r\n          {\r\n            className: \"audio-player__control\",\r\n          },\r\n          /*#__PURE__*/ _react.default.createElement(\"img\", {\r\n            src:\r\n              width > 768\r\n                ? _backward5Seconds.default\r\n                : _backward5SecondsBlack.default,\r\n            alt: \"previous-button\",\r\n            onClick: () => {\r\n              setCurrentTime(+progressBarRef.current.value - 5);\r\n              audioRef.current.currentTime = +progressBarRef.current.value - 5;\r\n            },\r\n          }),\r\n          width > 768 &&\r\n            /*#__PURE__*/ _react.default.createElement(\"img\", {\r\n              src: isPlaying ? _pause.default : _play.default,\r\n              alt: \"play-button\",\r\n              onClick: togglePlayPause,\r\n            }),\r\n          width < 768 &&\r\n            /*#__PURE__*/ _react.default.createElement(\"img\", {\r\n              src: isPlaying ? _pauseBlack.default : _playBlack.default,\r\n              alt: \"play-button\",\r\n              onClick: togglePlayPause,\r\n            }),\r\n          /*#__PURE__*/ _react.default.createElement(\"img\", {\r\n            src:\r\n              width > 768\r\n                ? _forward5Seconds.default\r\n                : _forward5SecondsBlack.default,\r\n            alt: \"forward-button\",\r\n            onClick: () => {\r\n              setCurrentTime(+progressBarRef.current.value + 5);\r\n              audioRef.current.currentTime = +progressBarRef.current.value + 5;\r\n            },\r\n          })\r\n        )\r\n      )\r\n    )\r\n  );\r\n}\r\n\r\nvar _default = ReactPlayer;\r\nexports.default = _default;\r\n"]}