{"version":3,"file":"vue-aplayer.cjs","sources":["../node_modules/.pnpm/smoothscroll@0.4.0/node_modules/smoothscroll/smoothscroll.js","../src/components/vue-aplayer/utils/utils.js","../src/components/vue-aplayer/assets/play.svg?component","../src/components/vue-aplayer/assets/pause.svg?component","../src/components/vue-aplayer/assets/volume-up.svg?component","../src/components/vue-aplayer/assets/volume-down.svg?component","../src/components/vue-aplayer/assets/volume-off.svg?component","../src/components/vue-aplayer/assets/order-random.svg?component","../src/components/vue-aplayer/assets/order-list.svg?component","../src/components/vue-aplayer/assets/menu.svg?component","../src/components/vue-aplayer/assets/loop-all.svg?component","../src/components/vue-aplayer/assets/loop-one.svg?component","../src/components/vue-aplayer/assets/loop-none.svg?component","../src/components/vue-aplayer/assets/loading.svg?component","../src/components/vue-aplayer/assets/right.svg?component","../src/components/vue-aplayer/assets/skip.svg?component","../src/components/vue-aplayer/assets/lrc.svg?component","../src/components/vue-aplayer/components/Icon.vue","../src/components/vue-aplayer/components/List.vue","../src/components/vue-aplayer/components/Lyric.vue","../src/components/vue-aplayer/components/Controller.vue","../src/components/vue-aplayer/APlayer.vue","../src/components/vue-aplayer/index.js"],"sourcesContent":["(function (root, smoothScroll) {\n  'use strict';\n\n  // Support RequireJS and CommonJS/NodeJS module formats.\n  // Attach smoothScroll to the `window` when executed as a <script>.\n\n  // RequireJS\n  if (typeof define === 'function' && define.amd) {\n    define(smoothScroll);\n\n  // CommonJS\n  } else if (typeof exports === 'object' && typeof module === 'object') {\n    module.exports = smoothScroll();\n\n  } else {\n    root.smoothScroll = smoothScroll();\n  }\n\n})(this, function(){\n'use strict';\n\n// Do not initialize smoothScroll when running server side, handle it in client:\nif (typeof window !== 'object') return;\n\n// We do not want this script to be applied in browsers that do not support those\n// That means no smoothscroll on IE9 and below.\nif(document.querySelectorAll === void 0 || window.pageYOffset === void 0 || history.pushState === void 0) { return; }\n\n// Get the top position of an element in the document\nvar getTop = function(element, start) {\n    // return value of html.getBoundingClientRect().top ... IE : 0, other browsers : -pageYOffset\n    if(element.nodeName === 'HTML') return -start\n    return element.getBoundingClientRect().top + start\n}\n// ease in out function thanks to:\n// http://blog.greweb.fr/2012/02/bezier-curve-based-easing-functions-from-concept-to-implementation/\nvar easeInOutCubic = function (t) { return t<.5 ? 4*t*t*t : (t-1)*(2*t-2)*(2*t-2)+1 }\n\n// calculate the scroll position we should be in\n// given the start and end point of the scroll\n// the time elapsed from the beginning of the scroll\n// and the total duration of the scroll (default 500ms)\nvar position = function(start, end, elapsed, duration) {\n    if (elapsed > duration) return end;\n    return start + (end - start) * easeInOutCubic(elapsed / duration); // <-- you can change the easing funtion there\n    // return start + (end - start) * (elapsed / duration); // <-- this would give a linear scroll\n}\n\n// we use requestAnimationFrame to be called by the browser before every repaint\n// if the first argument is an element then scroll to the top of this element\n// if the first argument is numeric then scroll to this location\n// if the callback exist, it is called when the scrolling is finished\n// if context is set then scroll that element, else scroll window\nvar smoothScroll = function(el, duration, callback, context){\n    duration = duration || 500;\n    context = context || window;\n    var start = context.scrollTop || window.pageYOffset;\n\n    if (typeof el === 'number') {\n      var end = parseInt(el);\n    } else {\n      var end = getTop(el, start);\n    }\n\n    var clock = Date.now();\n    var requestAnimationFrame = window.requestAnimationFrame ||\n        window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame ||\n        function(fn){window.setTimeout(fn, 15);};\n\n    var step = function(){\n        var elapsed = Date.now() - clock;\n        if (context !== window) {\n          context.scrollTop = position(start, end, elapsed, duration);\n        }\n        else {\n          window.scroll(0, position(start, end, elapsed, duration));\n        }\n\n        if (elapsed > duration) {\n            if (typeof callback === 'function') {\n                callback(el);\n            }\n        } else {\n            requestAnimationFrame(step);\n        }\n    }\n    step();\n}\n\nvar linkHandler = function(ev) {\n    if (!ev.defaultPrevented) {\n        ev.preventDefault();\n\n        if (location.hash !== this.hash) window.history.pushState(null, null, this.hash)\n        // using the history api to solve issue #1 - back doesn't work\n        // most browser don't update :target when the history api is used:\n        // THIS IS A BUG FROM THE BROWSERS.\n        // change the scrolling duration in this call\n        var node = document.getElementById(this.hash.substring(1))\n        if (!node) return; // Do not scroll to non-existing node\n\n        smoothScroll(node, 500, function (el) {\n            location.replace('#' + el.id)\n            // this will cause the :target to be activated.\n        });\n    }\n}\n\n// We look for all the internal links in the documents and attach the smoothscroll function\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n    var internal = document.querySelectorAll('a[href^=\"#\"]:not([href=\"#\"])'), a;\n    for(var i=internal.length; a=internal[--i];){\n        a.addEventListener(\"click\", linkHandler, false);\n    }\n});\n\n// return smoothscroll API\nreturn smoothScroll;\n\n});\n","const isMobile = /mobile/i.test(window.navigator.userAgent);\r\n\r\nconst utils = {\r\n    isMobile: isMobile,\r\n    eventsName: {\r\n        moveStart: isMobile ? 'touchstart' : 'mousedown',\r\n        moving: isMobile ? 'touchmove' : 'mousemove',\r\n        moveEnd: isMobile ? 'touchend' : 'mouseup',\r\n    },\r\n    storage: {\r\n        set: (key, value) => {\r\n            localStorage.setItem(key, value);\r\n        },\r\n        get: (key) => {\r\n            localStorage.getItem(key);\r\n        }\r\n    },\r\n    /**\r\n     * Parse Second to Time String\r\n     *\r\n     * @param {Number} second\r\n     * @return {String} 00:00 or 00:00:00\r\n     */\r\n    secondToTime: (second) => {\r\n        const strMap = (num) => (num < 10 ? '0' + num : '' + num);\r\n        const hour = Math.floor(second / 3600);\r\n        const min = Math.floor((second - hour * 3600) / 60);\r\n        const sec = Math.floor(second - hour * 3600 - min * 60);\r\n        return (hour > 0 ? [hour, min, sec] : [min, sec]).map(strMap).join(':');\r\n    },\r\n    randomOrder: (length) => {\r\n        function shuffle(arr) {\r\n            for (let i = arr.length - 1; i >= 0; i--) {\r\n                const randomIndex = Math.floor(Math.random() * (i + 1));\r\n                const itemAtIndex = arr[randomIndex];\r\n                arr[randomIndex] = arr[i];\r\n                arr[i] = itemAtIndex;\r\n            }\r\n            return arr;\r\n        }\r\n        return shuffle(\r\n            [...Array(length)].map(function(item, i) {\r\n                return i;\r\n            })\r\n        );\r\n    },\r\n    /**\r\n     * Parse Lyric String to Array\r\n     * \r\n     * @param {String} lyricStr \r\n     * @return {Array} [[0, \"APlayer\"], [1.2, \"is\"], [34.56, \"Amazing\"]]\r\n     */\r\n    parse (lyricStr) {\r\n        if (lyricStr) {\r\n            lyricStr = lyricStr.replace(/([^\\]^\\n])\\[/g, (match, p) => p + '\\n[');\r\n            let lyricArr = lyricStr.split('\\n');\r\n            let lyricParseArr = [];\r\n            for (let i = 0; i < lyricArr.length; i++) {\r\n                // match lrc time\r\n                const lrcTimes = lyricArr[i].match(/\\[(\\d{2}):(\\d{2})(\\.(\\d{2,3}))?]/g);\r\n                // match lrc text\r\n                const lrcText = lyricArr[i]\r\n                    .replace(/.*\\[(\\d{2}):(\\d{2})(\\.(\\d{2,3}))?]/g, '')\r\n                    .replace(/<(\\d{2}):(\\d{2})(\\.(\\d{2,3}))?>/g, '')\r\n                    .replace(/^\\s+|\\s+$/g, '');\r\n\r\n                if (lrcTimes) {\r\n                    // handle multiple time tag\r\n                    for (let j = 0; j < lrcTimes.length; j++) {\r\n                        const oneTime = /\\[(\\d{2}):(\\d{2})(\\.(\\d{2,3}))?]/.exec(lrcTimes[j]);\r\n                        const min2sec = oneTime[1] * 60;\r\n                        const sec2sec = parseInt(oneTime[2]);\r\n                        const msec2sec = oneTime[4] ? parseInt(oneTime[4]) / ((oneTime[4] + '').length === 2 ? 100 : 1000) : 0;\r\n                        const lrcTime = min2sec + sec2sec + msec2sec;\r\n                        lyricParseArr.push([lrcTime, lrcText]);\r\n                    }\r\n                }\r\n            }\r\n            // sort by time\r\n            lyricParseArr = lyricParseArr.filter((item) => item[1]);\r\n            lyricParseArr.sort((a, b) => a[0] - b[0]);\r\n\r\n            return lyricParseArr;\r\n        } else {\r\n            return [];\r\n        }\r\n    },\r\n};\r\n\r\nexport default utils;","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 16 31\"\n}\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"path\", { d: \"M15.552 15.168q.448.32.448.832 0 .448-.448.768L1.856 25.28q-.768.512-1.312.192T0 24.192V7.744q0-.96.544-1.28t1.312.192z\" }, null, -1)\nconst _hoisted_3 = [\n  _hoisted_2\n]\n\nexport function render(_ctx, _cache) {\n  return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [..._hoisted_3]))\n}\nexport default { render: render }","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 17 32\"\n}\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"path\", { d: \"M14.08 4.8q2.88 0 2.88 2.048v18.24q0 2.112-2.88 2.112t-2.88-2.112V6.848q0-2.048 2.88-2.048m-11.2 0q2.88 0 2.88 2.048v18.24q0 2.112-2.88 2.112T0 25.088V6.848Q0 4.8 2.88 4.8\" }, null, -1)\nconst _hoisted_3 = [\n  _hoisted_2\n]\n\nexport function render(_ctx, _cache) {\n  return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [..._hoisted_3]))\n}\nexport default { render: render }","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 28 32\"\n}\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"path\", { d: \"M13.728 6.272v19.456q0 .448-.352.8t-.8.32-.8-.32l-5.952-5.952H1.152q-.48 0-.8-.352t-.352-.8v-6.848q0-.48.352-.8t.8-.352h4.672l5.952-5.952q.32-.32.8-.32t.8.32.352.8M20.576 16q0 1.344-.768 2.528t-2.016 1.664q-.16.096-.448.096-.448 0-.8-.32t-.32-.832q0-.384.192-.64t.544-.448.608-.384.512-.64.192-1.024-.192-1.024-.512-.64-.608-.384-.544-.448-.192-.64q0-.48.32-.832t.8-.32q.288 0 .448.096 1.248.48 2.016 1.664T20.576 16m4.576 0q0 2.72-1.536 5.056t-4 3.36q-.256.096-.448.096-.48 0-.832-.352t-.32-.8q0-.704.672-1.056 1.024-.512 1.376-.8 1.312-.96 2.048-2.4T22.848 16t-.736-3.104-2.048-2.4q-.352-.288-1.376-.8-.672-.352-.672-1.056 0-.448.32-.8t.8-.352q.224 0 .48.096 2.496 1.056 4 3.36T25.152 16m4.576 0q0 4.096-2.272 7.552t-6.048 5.056q-.224.096-.448.096-.48 0-.832-.352t-.32-.8q0-.64.704-1.056l.384-.192q.256-.128.416-.192.8-.448 1.44-.896 2.208-1.632 3.456-4.064T27.424 16t-1.216-5.152-3.456-4.064q-.64-.448-1.44-.896-.128-.096-.416-.192t-.384-.192q-.704-.416-.704-1.056 0-.448.32-.8t.832-.352q.224 0 .448.096 3.776 1.632 6.048 5.056T29.728 16\" }, null, -1)\nconst _hoisted_3 = [\n  _hoisted_2\n]\n\nexport function render(_ctx, _cache) {\n  return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [..._hoisted_3]))\n}\nexport default { render: render }","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 28 32\"\n}\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"path\", { d: \"M13.728 6.272v19.456q0 .448-.352.8t-.8.32-.8-.32l-5.952-5.952H1.152q-.48 0-.8-.352t-.352-.8v-6.848q0-.48.352-.8t.8-.352h4.672l5.952-5.952q.32-.32.8-.32t.8.32.352.8M20.576 16q0 1.344-.768 2.528t-2.016 1.664q-.16.096-.448.096-.448 0-.8-.32t-.32-.832q0-.384.192-.64t.544-.448.608-.384.512-.64.192-1.024-.192-1.024-.512-.64-.608-.384-.544-.448-.192-.64q0-.48.32-.832t.8-.32q.288 0 .448.096 1.248.48 2.016 1.664T20.576 16\" }, null, -1)\nconst _hoisted_3 = [\n  _hoisted_2\n]\n\nexport function render(_ctx, _cache) {\n  return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [..._hoisted_3]))\n}\nexport default { render: render }","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 28 32\"\n}\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"path\", { d: \"M13.728 6.272v19.456q0 .448-.352.8t-.8.32-.8-.32l-5.952-5.952H1.152q-.48 0-.8-.352t-.352-.8v-6.848q0-.48.352-.8t.8-.352h4.672l5.952-5.952q.32-.32.8-.32t.8.32.352.8\" }, null, -1)\nconst _hoisted_3 = [\n  _hoisted_2\n]\n\nexport function render(_ctx, _cache) {\n  return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [..._hoisted_3]))\n}\nexport default { render: render }","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 32 32\"\n}\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"path\", { d: \"m22.667 4 7 6-7 6 7 6-7 6v-4h-3.653l-3.76-3.76 2.827-2.827L20.668 20h2v-8h-2l-12 12h-6v-4h4.347l12-12h3.653V4zm-20 4h6l3.76 3.76L9.6 14.587 7.013 12H2.666z\" }, null, -1)\nconst _hoisted_3 = [\n  _hoisted_2\n]\n\nexport function render(_ctx, _cache) {\n  return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [..._hoisted_3]))\n}\nexport default { render: render }","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 32 32\"\n}\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"path\", { d: \"M.622 18.334h19.54v7.55l11.052-9.412-11.052-9.413v7.549H.622z\" }, null, -1)\nconst _hoisted_3 = [\n  _hoisted_2\n]\n\nexport function render(_ctx, _cache) {\n  return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [..._hoisted_3]))\n}\nexport default { render: render }","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 22 32\"\n}\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"path\", { d: \"M20.8 14.4q.704 0 1.152.48T22.4 16t-.48 1.12-1.12.48H1.6q-.64 0-1.12-.48T0 16t.448-1.12T1.6 14.4zM1.6 11.2q-.64 0-1.12-.48T0 9.6t.448-1.12T1.6 8h19.2q.704 0 1.152.48T22.4 9.6t-.48 1.12-1.12.48zm19.2 9.6q.704 0 1.152.48t.448 1.12-.48 1.12-1.12.48H1.6q-.64 0-1.12-.48T0 22.4t.448-1.12T1.6 20.8z\" }, null, -1)\nconst _hoisted_3 = [\n  _hoisted_2\n]\n\nexport function render(_ctx, _cache) {\n  return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [..._hoisted_3]))\n}\nexport default { render: render }","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 29 32\"\n}\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"path\", { d: \"M9.333 9.333h13.333v4L27.999 8l-5.333-5.333v4h-16v8h2.667zm13.334 13.334H9.334v-4L4.001 24l5.333 5.333v-4h16v-8h-2.667v5.333z\" }, null, -1)\nconst _hoisted_3 = [\n  _hoisted_2\n]\n\nexport function render(_ctx, _cache) {\n  return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [..._hoisted_3]))\n}\nexport default { render: render }","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 33 32\"\n}\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"path\", { d: \"M9.333 9.333h13.333v4L27.999 8l-5.333-5.333v4h-16v8h2.667zm13.334 13.334H9.334v-4L4.001 24l5.333 5.333v-4h16v-8h-2.667v5.333zM17.333 20v-8H16l-2.667 1.333v1.333h2v5.333z\" }, null, -1)\nconst _hoisted_3 = [\n  _hoisted_2\n]\n\nexport function render(_ctx, _cache) {\n  return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [..._hoisted_3]))\n}\nexport default { render: render }","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 29 32\"\n}\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"path\", { d: \"m2.667 7.027 1.707-1.693 22.293 22.293-1.693 1.707-4-4H9.334v4l-5.333-5.333 5.333-5.333v4h8.973l-8.973-8.973v.973H6.667v-3.64zm20 10.306h2.667v5.573l-2.667-2.667v-2.907zm0-10.666v-4L28 8l-5.333 5.333v-4H11.76L9.093 6.666z\" }, null, -1)\nconst _hoisted_3 = [\n  _hoisted_2\n]\n\nexport function render(_ctx, _cache) {\n  return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [..._hoisted_3]))\n}\nexport default { render: render }","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 32 32\"\n}\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"path\", { d: \"M4 16C4 9.4 9.4 4 16 4s12 5.4 12 12c0 1.2-.8 2-2 2s-2-.8-2-2c0-4.4-3.6-8-8-8s-8 3.6-8 8 3.6 8 8 8c1.2 0 2 .8 2 2s-.8 2-2 2C9.4 28 4 22.6 4 16\" }, null, -1)\nconst _hoisted_3 = [\n  _hoisted_2\n]\n\nexport function render(_ctx, _cache) {\n  return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [..._hoisted_3]))\n}\nexport default { render: render }","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 32 32\"\n}\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"path\", { d: \"M22 16 11.895 5.4 10 7.387 18.211 16 10 24.612l1.895 1.988 8.211-8.613z\" }, null, -1)\nconst _hoisted_3 = [\n  _hoisted_2\n]\n\nexport function render(_ctx, _cache) {\n  return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [..._hoisted_3]))\n}\nexport default { render: render }","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 32 32\"\n}\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"path\", { d: \"M25.468 6.947a1 1 0 0 0-1.03.057L18 11.384V7.831a1.001 1.001 0 0 0-1.562-.827l-12 8.164a1 1 0 0 0 0 1.654l12 8.168A.999.999 0 0 0 18 24.164v-3.556l6.438 4.382A.999.999 0 0 0 26 24.164V7.831c0-.371-.205-.71-.532-.884\" }, null, -1)\nconst _hoisted_3 = [\n  _hoisted_2\n]\n\nexport function render(_ctx, _cache) {\n  return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [..._hoisted_3]))\n}\nexport default { render: render }","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 32 32\"\n}\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"path\", { d: \"M26.667 5.333H5.333a2.667 2.667 0 0 0-2.666 2.666v16.002a2.667 2.667 0 0 0 2.666 2.666h21.335a2.667 2.667 0 0 0 2.666-2.666V7.999a2.667 2.667 0 0 0-2.666-2.666zM5.333 16h5.333v2.667H5.333zm13.334 8H5.334v-2.667h13.333zm8 0h-5.333v-2.667h5.333zm0-5.333H13.334V16h13.333z\" }, null, -1)\nconst _hoisted_3 = [\n  _hoisted_2\n]\n\nexport function render(_ctx, _cache) {\n  return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [..._hoisted_3]))\n}\nexport default { render: render }","<template>\r\n    <component :is=\"icons[type]\"></component>\r\n</template>\r\n<script setup>\r\n    import Play from \"../assets/play.svg?component\";\r\n    import Pause from \"../assets/pause.svg?component\";\r\n    import VolumeUp from \"../assets/volume-up.svg?component\";\r\n    import VolumeDown from \"../assets/volume-down.svg?component\";\r\n    import VolumeOff from \"../assets/volume-off.svg?component\";\r\n    import OrderRandom from \"../assets/order-random.svg?component\";\r\n    import OrderList from \"../assets/order-list.svg?component\";\r\n    import Menu from \"../assets/menu.svg?component\";\r\n    import LoopAll from \"../assets/loop-all.svg?component\";\r\n    import LoopOne from \"../assets/loop-one.svg?component\";\r\n    import LoopNone from \"../assets/loop-none.svg?component\";\r\n    import Loading from \"../assets/loading.svg?component\";\r\n    import Right from \"../assets/right.svg?component\";\r\n    import Skip from \"../assets/skip.svg?component\";\r\n    import Lrc from \"../assets/lrc.svg?component\";\r\n\r\n    const props = defineProps({\r\n        type: {\r\n            type: String\r\n        }\r\n    });\r\n\r\n    const icons = {\r\n        \"play\" : Play,\r\n        \"pause\" : Pause,\r\n        \"volumeUp\" : VolumeUp,\r\n        \"volumeDown\" : VolumeDown,\r\n        \"volumeOff\" : VolumeOff,\r\n        \"orderRandom\" : OrderRandom,\r\n        \"orderList\" : OrderList,\r\n        \"menu\" : Menu,\r\n        \"loopAll\" : LoopAll,\r\n        \"loopOne\" : LoopOne,\r\n        \"loopNone\" : LoopNone,\r\n        \"loading\" : Loading,\r\n        \"right\" : Right,\r\n        \"skip\" : Skip,\r\n        \"lrc\" : Lrc,\r\n    };\r\n</script>","<template>\r\n    <div class=\"aplayer-list\" :class=\"{ 'aplayer-list-hide': !aplayer.listFolded }\" :style=\"{ 'max-height': `${aplayer.listMaxHeight}px` }\">\r\n        <ol :style=\"{ 'max-height': `${aplayer.listMaxHeight}px` }\" ref=\"ol\">\r\n            <li v-for=\"(audio, index) in aplayer.audio\" :class=\"{ 'aplayer-list-light': (index === aplayer.index) }\" @click=\"switchList(index)\">\r\n                <span class=\"aplayer-list-cur\" :style=\"{ background: `${aplayer.coverColor[aplayer.index] || audio.theme || aplayer.theme}` }\"></span>\r\n                <span class=\"aplayer-list-index\">{{ index + 1 }}</span>\r\n                <span class=\"aplayer-list-title\">{{ audio.name }}</span>\r\n                <span class=\"aplayer-list-author\">{{ audio.artist ? audio.artist : \"\" }}</span>\r\n            </li>\r\n        </ol>\r\n    </div>\r\n</template>\r\n<script>\r\n    export default {\r\n        props: [\"aplayer\"],\r\n        computed: {\r\n            ol () {\r\n                return this.$refs.ol;\r\n            }\r\n        },\r\n        methods: {\r\n            showList () {\r\n                setTimeout(() => {\r\n                    this.ol.scrollTop = this.aplayer.index * 33;\r\n                }, 0);\r\n            },\r\n            switchList (index) {\r\n                if (index !== this.aplayer.index) {\r\n                    this.$emit(\"switchList\", index);\r\n                    this.$emit(\"play\");\r\n                } else {\r\n                    this.$emit(\"toggle\");\r\n                }\r\n            }\r\n        },\r\n    }\r\n</script>","<template>\r\n    <div class=\"aplayer-lrc\">\r\n        <div class=\"aplayer-lrc-contents\" :style=\"transformStyle\">\r\n            <p :class=\"{ 'aplayer-lrc-current': index === aplayer.lyricIndex }\" v-for=\"(lyric, index) in aplayer.lyrics[aplayer.index]\">{{ lyric[1] }}</p>\r\n        </div>\r\n    </div>\r\n</template>\r\n<script>\r\n    export default {\r\n        props: [\"aplayer\"],\r\n        computed: {\r\n            transformStyle () {\r\n                return {\r\n                    transform: `translateY(-${this.aplayer.lyricIndex * 16}px)`,\r\n                    webkitTransform: `translateY(-${this.aplayer.lyricIndex * 16}px)`,\r\n                }\r\n            }\r\n        }\r\n    }\r\n</script>","<template>\r\n    <div class=\"aplayer-controller\">\r\n        <div class=\"aplayer-bar-wrap\" @mouseover=\"aplayerThumbShowStatus = true\" @mouseout=\"aplayerThumbShowStatus = false\">\r\n            <div class=\"aplayer-bar\" ref=\"aplayerBar\">\r\n                <div class=\"aplayer-loaded\" :style=\"{ width: `${audioStatus.duration ? audioStatus.loadedTime / audioStatus.duration * 100 : 0}%` }\"></div>\r\n                <div class=\"aplayer-played\" :style=\"{ width: `${audioStatus.duration ? audioStatus.playedTime / audioStatus.duration * 100 : 0}%`, background: `${aplayer.coverColor[aplayer.index] || audio?.theme || aplayer.theme}` }\">\r\n                    <span class=\"aplayer-thumb\" :style=\"{ background: `${aplayer.coverColor[aplayer.index] || audio?.theme || aplayer.theme}` }\" v-show=\"aplayerThumbShowStatus\">\r\n                        <span class=\"aplayer-loading-icon\"><Icon type=\"loading\"></Icon></span>\r\n                    </span>\r\n                </div>\r\n            </div>\r\n        </div>\r\n        <div :class=\"{ 'aplayer-time': true, 'aplayer-time-narrow': styleStatus.timeNarrow }\">\r\n            <span class=\"aplayer-time-inner\">\r\n                <span class=\"aplayer-ptime\">{{ playedTime }}</span> / <span class=\"aplayer-dtime\">{{ duration }}</span>\r\n            </span>\r\n            <span class=\"aplayer-icon aplayer-icon-back\" @click=\"$emit('skipBack')\">\r\n                <Icon type=\"skip\"></Icon>\r\n            </span>\r\n            <span class=\"aplayer-icon aplayer-icon-play\" @click=\"$emit('toggle')\">\r\n                <Icon type=\"play\" v-show=\"!audioStatus.playStatus\"></Icon>\r\n                <Icon type=\"pause\" v-show=\"audioStatus.playStatus\"></Icon>\r\n            </span>\r\n            <span class=\"aplayer-icon aplayer-icon-forward\" @click=\"$emit('skipForward')\">\r\n                <Icon type=\"skip\"></Icon>\r\n            </span>\r\n            <div class=\"aplayer-volume-wrap\" :class=\"{ 'aplayer-volume-bar-wrap-active': volumeBarShowStatus }\">\r\n                <button type=\"button\" class=\"aplayer-icon aplayer-icon-volume-down\" @click=\"$emit('mute')\">\r\n                    <Icon :type=\"switchVolumeIcon\"></Icon>\r\n                </button>\r\n                <div class=\"aplayer-volume-bar-wrap\">\r\n                    <div class=\"aplayer-volume-bar\" ref=\"volumeBar\">\r\n                        <div class=\"aplayer-volume\" :style=\"{ height: `${aplayer.muted ? 0 : aplayer.volume * 100}%`, background: `${aplayer.coverColor[aplayer.index] || audio?.theme || aplayer.theme}` }\"></div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <button type=\"button\" class=\"aplayer-icon aplayer-icon-order\" @click=\"orderButtonClick\">\r\n                <Icon type=\"orderList\" v-show=\"aplayer.order === 'list'\"></Icon>\r\n                <Icon type=\"orderRandom\" v-show=\"aplayer.order === 'random'\"></Icon>\r\n            </button>\r\n            <button type=\"button\" class=\"aplayer-icon aplayer-icon-loop\" @click=\"loopButtonClick\">\r\n                <Icon type=\"loopOne\" v-show=\"aplayer.loop === 'one'\"></Icon>\r\n                <Icon type=\"loopAll\" v-show=\"aplayer.loop === 'all'\"></Icon>\r\n                <Icon type=\"loopNone\" v-show=\"aplayer.loop === 'none'\"></Icon>\r\n            </button>\r\n            <button type=\"button\" class=\"aplayer-icon aplayer-icon-menu\" @click=\"$emit('toggleList')\">\r\n                <Icon type=\"menu\"></Icon>\r\n            </button>\r\n            <button type=\"button\" :class=\"{ 'aplayer-icon': true, 'aplayer-icon-lrc': true, 'aplayer-icon-lrc-inactivity': !aplayer.lyricShow }\" @click=\"$emit('toggleLrc')\">\r\n                <Icon type=\"lrc\"></Icon>\r\n            </button>\r\n        </div>\r\n    </div>\r\n</template>\r\n<script>\r\n    import utils from \"../utils/utils.js\";\r\n    import Icon from \"./Icon.vue\";\r\n\r\n    const loopArr = [\"one\", \"all\", \"none\"];\r\n    const orderArr = [\"list\", \"random\"];\r\n\r\n    export default {\r\n        components: {\r\n            utils,\r\n            Icon,\r\n        },\r\n        props: [\"aplayer\", \"audioStatus\", \"styleStatus\"],\r\n        data () {\r\n            return {\r\n                aplayerThumbShowStatus: false,\r\n                volumeBarShowStatus: false,\r\n            }\r\n        },\r\n        computed: {\r\n            aplayerBar () {\r\n                return this.$refs.aplayerBar;\r\n            },\r\n            volumeBar () {\r\n                return this.$refs.volumeBar;\r\n            },\r\n            switchVolumeIcon () {\r\n                if (this.aplayer.muted || this.aplayer.volume <= 0) return \"volumeOff\";\r\n                if (this.aplayer.volume >= 0.95) return \"volumeUp\";\r\n                return \"volumeDown\";\r\n            },\r\n            audio () {\r\n                return this.aplayer.audio[this.aplayer.index];\r\n            },\r\n            duration () {\r\n                return utils.secondToTime(this.audioStatus.duration);\r\n            },\r\n            playedTime: {\r\n                get () {\r\n                    return utils.secondToTime(this.audioStatus.playedTime);\r\n                },\r\n                set (time) {\r\n                    this.$emit(\"playedTime\", time);\r\n                }\r\n            },\r\n            disableTimeUpdate: {\r\n                get () {\r\n                    return this.audioStatus.disableTimeUpdate;\r\n                },\r\n                set (status) {\r\n                    this.$emit(\"disableTimeUpdate\", status);\r\n                },\r\n            }\r\n        },\r\n        methods: {\r\n            loopButtonClick () {\r\n                let index = loopArr.indexOf(this.aplayer.loop);\r\n                index = (index + 1) % loopArr.length;\r\n                this.$emit(\"setLoop\", loopArr[index]);\r\n            },\r\n            orderButtonClick () {\r\n                let index = orderArr.indexOf(this.aplayer.order);\r\n                index = (index + 1) % orderArr.length;\r\n                this.$emit(\"setOrder\", orderArr[index]);\r\n            },\r\n\r\n            aplayerBarMoving (e) {\r\n                let percentage = ((e.clientX || e.changedTouches[0].clientX) - this.aplayerBar.getBoundingClientRect().left) / this.aplayerBar.clientWidth;\r\n                percentage = Math.max(percentage, 0);\r\n                percentage = Math.min(percentage, 1);\r\n                this.playedTime = percentage * this.audioStatus.duration;\r\n                this.$emit(\"updateLyric\");\r\n            },\r\n            aplayerBarMoveEnd (e) {\r\n                document.removeEventListener(utils.eventsName.moveEnd, this.aplayerBarMoveEnd);\r\n                document.removeEventListener(utils.eventsName.moving, this.aplayerBarMoving);\r\n                let percentage = ((e.clientX || e.changedTouches[0].clientX) - this.aplayerBar.getBoundingClientRect().left) / this.aplayerBar.clientWidth;\r\n                percentage = Math.max(percentage, 0);\r\n                percentage = Math.min(percentage, 1);\r\n                this.$emit(\"seek\", percentage * this.audioStatus.duration);\r\n                this.disableTimeUpdate = false;\r\n            },\r\n            aplayerBarMoveStart () {\r\n                this.disableTimeUpdate = true;\r\n                document.addEventListener(utils.eventsName.moving, this.aplayerBarMoving);\r\n                document.addEventListener(utils.eventsName.moveEnd, this.aplayerBarMoveEnd);\r\n            },\r\n\r\n            volumeBarMoving (e) {\r\n                let percentage = 1 - ((e.clientY || e.changedTouches[0].clientY) - this.volumeBar.getBoundingClientRect().top) / this.volumeBar.clientHeight;\r\n                percentage = Math.max(percentage, 0);\r\n                percentage = Math.min(percentage, 1);\r\n                this.$emit(\"setVolume\", percentage);\r\n            },\r\n            volumeBarMoveEnd (e) {\r\n                this.volumeBarShowStatus = false;\r\n                document.removeEventListener(utils.eventsName.moveEnd, this.volumeBarMoveEnd);\r\n                document.removeEventListener(utils.eventsName.moving, this.volumeBarMoving);\r\n                let percentage = 1 - ((e.clientY || e.changedTouches[0].clientY) - this.volumeBar.getBoundingClientRect().top) / this.volumeBar.clientHeight;\r\n                percentage = Math.max(percentage, 0);\r\n                percentage = Math.min(percentage, 1);\r\n                this.$emit(\"setVolume\", percentage, true);\r\n            },\r\n            volumeBarMoveStart () {\r\n                this.volumeBarShowStatus = true;\r\n                document.addEventListener(utils.eventsName.moving, this.volumeBarMoving);\r\n                document.addEventListener(utils.eventsName.moveEnd, this.volumeBarMoveEnd);\r\n            },\r\n        },\r\n        mounted () {\r\n            this.aplayerBar.parentNode.addEventListener(utils.eventsName.moveStart, this.aplayerBarMoveStart);\r\n            this.volumeBar.parentNode.addEventListener(utils.eventsName.moveStart, this.volumeBarMoveStart);\r\n        },\r\n        beforeUnmount () {\r\n            this.aplayerBar.parentNode.removeEventListener(utils.eventsName.moveStart, this.aplayerBarMoveStart);\r\n            this.volumeBar.parentNode.removeEventListener(utils.eventsName.moveStart, this.volumeBarMoveStart);\r\n        }\r\n    }\r\n</script>","<template>\r\n    <div class=\"aplayer\" v-if=\"!destroyComponent\" :class=\"{ 'aplayer-narrow': styleStatus.narrow, 'aplayer-fixed': aplayer.mode === 'fixed', 'aplayer-mini': (aplayer.mode === 'mini' || (aplayer.mode === 'fixed' && styleStatus.mini)), 'aplayer-loading': (audioStatus.playStatus && audioStatus.waitingStatus), 'aplayer-withlist': (aplayer.audio.length > 1), 'aplayer-withlrc': (aplayer.mode === 'normal' && aplayer.lyricShow), 'aplayer-mobile': styleStatus.isMobile }\" ref=\"aplayer\">\r\n        <List v-if=\"aplayer.mode === 'fixed'\" :aplayer=\"aplayer\" @play=\"play\" @toggle=\"toggle\" @switchList=\"switchList\" ref=\"list\" />\r\n        <div class=\"aplayer-body\" :style=\"{ width: `${aplayer.mode === 'fixed' ? 'calc(100% - 18px)' : '100%'}` }\">\r\n            <div class=\"aplayer-pic\" :style=\"coverStyle\" @click=\"toggle\">\r\n                <div class=\"aplayer-button\" :class=\"{ 'aplayer-play': !audioStatus.playStatus, 'aplayer-pause': audioStatus.playStatus }\">\r\n                    <div ref=\"switch\">\r\n                        <Icon type=\"play\" v-show=\"!audioStatus.playStatus\"></Icon>\r\n                        <Icon type=\"pause\" v-show=\"audioStatus.playStatus\"></Icon>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div class=\"aplayer-info\" ref=\"info\">\r\n                <div class=\"aplayer-music\">\r\n                    <span class=\"aplayer-title\">{{ aplayer.audio[aplayer.index] ? aplayer.audio[aplayer.index].name : \"No Audio\" }}</span>\r\n                    <span class=\"aplayer-author\">{{ aplayer.audio[aplayer.index] ? \" - \" + aplayer.audio[aplayer.index].artist : \"\" }}</span>\r\n                </div>\r\n                <Lyric v-if=\"aplayer.mode === 'normal'\" v-show=\"aplayer.lyricShow\" :aplayer=\"aplayer\" ref=\"lyric\" />\r\n                <Controller :aplayer=\"aplayer\" :audioStatus=\"audioStatus\" :styleStatus=\"styleStatus\" @playedTime=\"playedTime\" @disableTimeUpdate=\"disableTimeUpdate\" @toggle=\"toggle\" @skipBack=\"skipBack\" @skipForward=\"skipForward\" @seek=\"seek\" @mute=\"mute\" @setLoop=\"setLoop\" @setOrder=\"setOrder\" @toggleList=\"toggleList\" @toggleLrc=\"toggleLrc\" @setVolume=\"setVolume\" />\r\n            </div>\r\n            <div class=\"aplayer-notice\" :style=\"{ opacity: aplayer.noticeOpacity }\">{{ aplayer.noticeText }}</div>\r\n            <div class=\"aplayer-miniswitcher\" @click=\"styleStatus.mini = !styleStatus.mini\">\r\n                <button class=\"aplayer-icon\">\r\n                    <Icon type=\"right\"></Icon>\r\n                </button>\r\n            </div>\r\n        </div>\r\n        <List v-if=\"aplayer.mode === 'normal'\" :aplayer=\"aplayer\" @play=\"play\" @toggle=\"toggle\" @switchList=\"switchList\" ref=\"list\" />\r\n        <Lyric v-if=\"aplayer.mode === 'fixed'\" v-show=\"aplayer.lyricShow\" :aplayer=\"aplayer\" ref=\"lyric\" />\r\n        <audio ref=\"audio\"></audio>\r\n    </div>\r\n</template>\r\n<script>\r\n    import smoothScroll from \"smoothScroll\";\r\n    import utils from \"./utils/utils.js\";\r\n    import Icon from \"./components/Icon.vue\";\r\n    import List from \"./components/List.vue\";\r\n    import Lyric from \"./components/Lyric.vue\";\r\n    import Controller from \"./components/Controller.vue\";\r\n\r\n    let activeMutexInstance = null;\r\n\r\n    const mediaEvents = [\r\n        \"abort\",\r\n        \"canplay\", \"canplaythrough\",\r\n        \"durationchange\",\r\n        \"emptied\", \"encrypted\", \"ended\", \"error\",\r\n        \"interruptbegin\", \"interruptend\",\r\n        \"loadeddata\", \"loadedmetadata\", \"loadstart\",\r\n        \"mozaudioavailable\",\r\n        \"pause\", \"play\", \"playing\", \"progress\",\r\n        \"ratechange\",\r\n        \"seeked\", \"seeking\", \"stalled\", \"suspend\",\r\n        \"timeupdate\",\r\n        \"volumechange\",\r\n        \"waiting\",\r\n    ];\r\n\r\n    const aplayer = {\r\n        name: \"APlayer\",\r\n        components: {\r\n            smoothScroll,\r\n            utils,\r\n            Icon,\r\n            List,\r\n            Lyric,\r\n            Controller,\r\n        },\r\n        props: {\r\n            audio: {\r\n                type: Array,\r\n                default: [],\r\n            },\r\n            mode: {\r\n                type: String,\r\n                default: \"normal\", // \"normal\", \"fixed\", \"mini\"\r\n            },\r\n            autoplay: {\r\n                type: Boolean,\r\n                default: false,\r\n            },\r\n            mutex: {\r\n                type: Boolean,\r\n                default: true,\r\n            },\r\n            preload: {\r\n                type: String,\r\n                default: \"metadata\", // \"auto\", \"metadata\", \"none\"\r\n            },\r\n            theme: {\r\n                type: String,\r\n                default: \"#B7DAFF\",\r\n            },\r\n            autoSwitch: {\r\n                type: Boolean,\r\n                default: true,\r\n            },\r\n            loop: {\r\n                type: String,\r\n                default: \"all\", // \"one\", \"all\", \"none\"  \r\n            },\r\n            order: {\r\n                type: String,\r\n                default: \"list\", // \"list\", \"random\"\r\n            },\r\n            muted: {\r\n                type: Boolean,\r\n                default: false,\r\n            },\r\n            volume: {\r\n                type: Number,\r\n                default: 0.7,\r\n                validator (value) {\r\n                    return value >= 0 && value <= 1;\r\n                },\r\n            },\r\n            lrcType: {\r\n                type: Number,\r\n                default: 1,\r\n            },\r\n            lrcShow: {\r\n                type: Boolean,\r\n                default: true,\r\n            },\r\n            listFolded: {\r\n                type: Boolean,\r\n                default: false,\r\n            },\r\n            listMaxHeight: {\r\n                type: Number,\r\n                default: 250,\r\n            },\r\n            noticeSwitch: {\r\n                type: Boolean,\r\n                default: true,\r\n            },\r\n            storageName: {\r\n                type: String,\r\n                default: \"aplayer-setting\",\r\n            }\r\n        },\r\n        data () {\r\n            return {\r\n                aplayer: {\r\n                    index: 0,\r\n                    audio: [],\r\n                    randomOrder: [],\r\n                    mode: this.mode,\r\n                    autoplay: this.autoplay,\r\n                    mutex: this.mutex,\r\n                    preload: this.preload,\r\n                    theme: this.theme,\r\n                    autoSwitch: this.autoSwitch,\r\n                    coverColor: [],\r\n                    loop: this.loop,\r\n                    order: this.order,\r\n                    muted: this.muted,\r\n                    volume: this.volume,\r\n                    lyricType: this.lrcType,\r\n                    lyricShow: this.lrcShow,\r\n                    lyricIndex: 0,\r\n                    lyrics: [],\r\n                    listFolded: this.listFolded,\r\n                    listMaxHeight: this.listMaxHeight,\r\n                    noticeSwitch: this.noticeSwitch,\r\n                    noticeText: \"\",\r\n                    noticeOpacity: 0,\r\n                    storageName: this.storageName,\r\n                    storage: {},\r\n                },\r\n                audioStatus: {\r\n                    duration: 0,\r\n                    loadedTime: 0,\r\n                    playedTime: 0,\r\n                    playStatus: false,\r\n                    waitingStatus: false,\r\n                    disableTimeUpdate: false,\r\n                },\r\n                styleStatus: {\r\n                    isMobile: /mobile/i.test(window.navigator.userAgent),\r\n                    narrow: false,\r\n                    timeNarrow: false,\r\n                    mini: true,\r\n                },\r\n                destroyComponent: false,\r\n            }\r\n        },\r\n        computed: {\r\n            audioRef () {\r\n                return this.$refs.audio;\r\n            },\r\n            coverStyle () {\r\n                let audio = this.aplayer.audio[this.aplayer.index];\r\n                if (!audio?.cover) {\r\n                    return {\r\n                        \"background-color\": `${this.aplayer.coverColor[this.aplayer.index] || audio?.theme || this.aplayer.theme}`\r\n                    }\r\n                }\r\n                return {\r\n                    \"background-image\": `url(${audio.cover})`,\r\n                    \"background-color\": `${this.aplayer.coverColor[this.aplayer.index] || audio?.theme || this.aplayer.theme}`\r\n                }\r\n            },\r\n        },\r\n        methods: {\r\n            // internal methods\r\n            getStorage (key) {\r\n                return this.aplayer.storage[key];\r\n            },\r\n            setStorage (key, value) {\r\n                this.aplayer.storage[key] = value;\r\n                localStorage.setItem(this.aplayer.storageName, JSON.stringify(this.aplayer.storage));\r\n            },\r\n            setAudio (audio) {\r\n                if (this.hls) {\r\n                    this.hls.destroy();\r\n                    this.hls = null;\r\n                }\r\n                let type = audio.type;\r\n                if (!type || type === \"auto\") {\r\n                    type = (/m3u8(#|\\?|$)/i.exec(audio.url)) ? \"hls\" : \"normal\";\r\n                }\r\n                if (type === \"hls\") {\r\n                    if (Hls.isSupported()) {\r\n                        this.hls = new Hls();\r\n                        this.hls.loadSource(audio.url);\r\n                        this.hls.attachMedia(this.audioRef);\r\n                    } else if (this.audioRef.canPlayType(\"application/x-mpegURL\") || this.audioRef.canPlayType(\"application/vnd.apple.mpegURL\")) {\r\n                        this.audioRef.src = audio.url;\r\n                    } else {\r\n                        this.setNotice(\"Error: HLS is not supported.\");\r\n                    }\r\n                } else if (type === \"normal\") {\r\n                    this.audioRef.src = audio.url;\r\n                }\r\n            },\r\n            prevIndex () {\r\n                let index = this.aplayer.index;\r\n                if (this.aplayer.audio.length > 1) {\r\n                    if (this.aplayer.order === \"list\") {\r\n                        return index - 1 < 0 ? this.aplayer.audio.length - 1 : index - 1;\r\n                    } else if (this.aplayer.order === \"random\") {\r\n                        let randomIndex = this.aplayer.randomOrder.indexOf(index);\r\n                        if (randomIndex === 0) {\r\n                            return this.aplayer.randomOrder[this.aplayer.randomOrder.length - 1];\r\n                        } else {\r\n                            return this.aplayer.randomOrder[randomIndex - 1];\r\n                        }\r\n                    }\r\n                } else {\r\n                    return 0;\r\n                }\r\n            },\r\n            nextIndex () {\r\n                let index = this.aplayer.index;\r\n                if (this.aplayer.audio.length > 1) {\r\n                    if (this.aplayer.order === \"list\") {\r\n                        return (index + 1) % this.aplayer.audio.length;\r\n                    } else if (this.aplayer.order === \"random\") {\r\n                        let randomIndex = this.aplayer.randomOrder.indexOf(index);\r\n                        if (randomIndex === this.aplayer.randomOrder.length - 1) {\r\n                            return this.aplayer.randomOrder[0];\r\n                        } else {\r\n                            return this.aplayer.randomOrder[randomIndex + 1];\r\n                        }\r\n                    }\r\n                } else {\r\n                    return 0;\r\n                }\r\n            },\r\n            coverColor () {\r\n                let isEmpty = !this.aplayer.coverColor[this.aplayer.index];\r\n                if (this.aplayer.autoSwitch && isEmpty) {\r\n                    try {\r\n                        if (!this.colorThief) {\r\n                            this.colorThief = new ColorThief();\r\n                        }\r\n                        this.colorThief.getColorAsync(this.aplayer.audio[this.aplayer.index]?.cover, ([red, green, blue]) => this.aplayer.coverColor[this.aplayer.index] = `rgb(${red}, ${green}, ${blue})`);\r\n                    } catch (e) {\r\n                        this.aplayer.autoSwitch = false;\r\n                        this.setNotice(\"The color-thief is required to support self-adapting theme.\");\r\n                    }\r\n                }\r\n            },\r\n            switchStyle () {\r\n                if (this.$refs.switch) {\r\n                    this.$refs.switch.style.display = \"none\";\r\n                    setTimeout(() => {\r\n                        if (this.$refs.switch) {\r\n                            this.$refs.switch.style.display = \"block\";\r\n                        }\r\n                    }, 100);\r\n                }\r\n            },\r\n            loadedTime () {\r\n                return this.audioRef.buffered.length ? this.audioRef.buffered.end(this.audioRef.buffered.length - 1) : 0;\r\n            },\r\n            playedTime (time) {\r\n                this.audioStatus.playedTime = time;\r\n            },\r\n            disableTimeUpdate (status) {\r\n                this.audioStatus.disableTimeUpdate = status;\r\n            },\r\n            async loadLyric (lrc, index) {\r\n                try {\r\n                    let response = await fetch(this.aplayer.audio[index].lrc);\r\n                    if (response.ok || response.status === 304) {\r\n                        lrc = utils.parse(await response.text());\r\n                    } else {\r\n                        this.setNotice(\"LRC file request fails: status \" + response.status);\r\n                    } \r\n                } catch (e) {\r\n                    console.warn(e);\r\n                } finally {\r\n                    this.aplayer.lyrics[index] = lrc;\r\n                    this.updateLyric();\r\n                }\r\n            },\r\n            switchLyric (index) {\r\n                if (this.aplayer.lyrics[index]) {\r\n                    return ;\r\n                }\r\n                let lrc = [[0, \"Not available\"]];\r\n                if (this.aplayer.lyricType === 1) {\r\n                    // async\r\n                    this.aplayer.lyrics[index] = [[0, \"Loading\"]];\r\n                    this.loadLyric(lrc, index);\r\n                } else if (this.aplayer.lyricType === 2) {\r\n                    // sync\r\n                    if (this.aplayer.audio[index].lrc) {\r\n                        lrc = utils.parse(this.aplayer.audio[index].lrc);\r\n                    }\r\n                    this.aplayer.lyrics[index] = lrc;\r\n                    this.updateLyric();\r\n                }\r\n            },\r\n            updateLyric () {\r\n                let lyric = this.aplayer.lyrics[this.aplayer.index];\r\n                if (lyric) {\r\n                    for (let i = 0; i < lyric.length; i++) {\r\n                        const current = lyric[i];\r\n                        const next = lyric[i + 1];\r\n                        if (this.audioStatus.playedTime >= current[0] && (!next || this.audioStatus.playedTime < next[0])) {\r\n                            this.aplayer.lyricIndex = i;\r\n                        }\r\n                    }\r\n                }\r\n            },\r\n            // expose methods\r\n            init () {\r\n                this.destroyComponent = false;\r\n\r\n                // load localstorage data\r\n                this.aplayer.storage = JSON.parse(localStorage.getItem(this.aplayer.storageName)) || {};\r\n                this.aplayer.volume = this.getStorage(\"volume\") || this.aplayer.volume;\r\n\r\n                // set audio\r\n                this.audioRef.preload = this.aplayer.preload;\r\n                this.audioRef.muted = this.aplayer.muted;\r\n                this.audioRef.volume = this.aplayer.volume;\r\n\r\n                // bind events\r\n                mediaEvents.forEach(event => {\r\n                    this.audioRef.addEventListener(event, e => this.$emit(event, e));\r\n                });\r\n\r\n                this.audioRef.addEventListener('play', () => this.audioStatus.playStatus = true);\r\n                this.audioRef.addEventListener('pause', () => this.audioStatus.playStatus = false);\r\n                this.audioRef.addEventListener('timeupdate', this.timeupdate);\r\n                // show audio time: the metadata has loaded or changed\r\n                this.audioRef.addEventListener('durationchange', this.durationchange);\r\n                // can seek now\r\n                this.audioRef.addEventListener('loadedmetadata', this.loadedmetadata);\r\n                // show audio loaded bar: to inform interested parties of progress downloading the media\r\n                this.audioRef.addEventListener('canplay', this.canplay);\r\n                this.audioRef.addEventListener('progress', this.progress);\r\n                // audio download error: an error occurs\r\n                this.audioRef.addEventListener('error', this.error);\r\n                // multiple audio play\r\n                this.audioRef.addEventListener('ended', this.ended);\r\n                // audio loading\r\n                this.audioRef.addEventListener('waiting', this.waiting);\r\n                // audio loaded\r\n                this.audioRef.addEventListener('playing', this.playing);\r\n\r\n                window.addEventListener(\"resize\", this.resize);\r\n\r\n                this.addList(this.audio, true);\r\n                this.aplayer.autoplay && this.play();\r\n                this.$emit(\"init\");\r\n            },\r\n            play () {\r\n                this.switchStyle();\r\n                this.audioStatus.playStatus = true;\r\n                this.$nextTick(() => {\r\n                    this.audioStatus.playStatus = true;\r\n                    if (this.aplayer.mutex) {\r\n                        if (activeMutexInstance && activeMutexInstance !== this) {\r\n                            activeMutexInstance.pause();\r\n                        }\r\n                        activeMutexInstance = this;\r\n                    }\r\n\r\n                    const playPromise = this.audioRef.play();\r\n                    if (playPromise) {\r\n                        playPromise.catch((e) => {\r\n                            console.warn(e);\r\n                            if (e.name === 'NotAllowedError') {\r\n                                this.audioStatus.playStatus = false;\r\n                            }\r\n                        });\r\n                    }\r\n                });\r\n            },\r\n            pause () {\r\n                this.switchStyle();\r\n                this.audioStatus.playStatus = false;\r\n                this.audioRef.pause();\r\n            },\r\n            toggle () {\r\n                !this.audioStatus.playStatus ? this.play() : this.pause();\r\n            },\r\n            seek (time) {\r\n                time = Math.max(time, 0);\r\n                time = Math.min(time, this.audioStatus.duration);\r\n                this.audioStatus.playedTime = time;\r\n                this.audioRef.currentTime = time;\r\n            },\r\n            mute () {\r\n                this.aplayer.muted = !this.aplayer.muted;\r\n                this.audioRef.muted = !this.audioRef.muted;\r\n            },\r\n            setVolume (volume, storage = false) {\r\n                volume = parseFloat(volume);\r\n                if (!isNaN(volume)) {\r\n                    volume = Math.max(volume, 0);\r\n                    volume = Math.min(volume, 1);\r\n\r\n                    this.aplayer.volume = volume;\r\n                    this.audioRef.volume = volume;\r\n                    storage && this.setStorage(\"volume\", volume);\r\n\r\n                    if (this.aplayer.muted) {\r\n                        this.mute();\r\n                    }\r\n                }\r\n            },\r\n            // user set theme > auto cover theme > audio theme > aplayer theme\r\n            setTheme (color, index = this.aplayer.index) {\r\n                if (color) {\r\n                    if (this.aplayer.coverColor[index]) {\r\n                        this.aplayer.coverColor[index] = color;\r\n                    } else if (this.aplayer.audio[index]) {\r\n                        this.aplayer.audio[index].theme = color\r\n                    }\r\n                }\r\n            },\r\n            setMode (mode = \"normal\") {\r\n                if (mode != \"normal\" && mode != \"fixed\" && mode != \"mini\") {\r\n                    return ;\r\n                }\r\n                this.aplayer.mode = mode;\r\n\r\n                // reset style status\r\n                setTimeout(() => {\r\n                    this.resize();\r\n                }, 0);\r\n            },\r\n            setLoop (loop) {\r\n                if (loop != \"one\" && loop != \"all\" && loop != \"none\") {\r\n                    return ;\r\n                }\r\n                if (this.aplayer.audio.length <= 1 && loop === \"one\") {\r\n                    loop = \"all\";\r\n                }\r\n                this.aplayer.loop = loop;\r\n            },\r\n            setOrder (order) {\r\n                if (order != \"list\" && order != \"random\") {\r\n                    return ;\r\n                }\r\n                this.aplayer.order = order;\r\n            },\r\n            setNotice (text, time = 2000, opacity = 0.8) {\r\n                if (!this.aplayer.noticeSwitch || this.aplayer.mode === \"mini\" || (this.aplayer.mode === \"fixed\" && this.styleStatus.mini)) {\r\n                    console.warn(text);\r\n                    return ;\r\n                }\r\n                this.aplayer.noticeText = text;\r\n                this.aplayer.noticeOpacity = opacity;\r\n                if (this.noticeTimeout) {\r\n                    clearTimeout(this.noticeTimeout);\r\n                }\r\n                this.$emit(\"noticeshow\");\r\n                if (time) {\r\n                    this.noticeTimeout = setTimeout(() => {\r\n                        this.aplayer.noticeOpacity = 0;\r\n                        this.$emit(\"noticehide\");\r\n                    }, time);\r\n                }\r\n            },\r\n            skipBack () {\r\n                this.switchList(this.prevIndex());\r\n            },\r\n            skipForward () {\r\n                this.switchList(this.nextIndex());\r\n            },\r\n            destroy () {\r\n                this.destroyComponent = true;\r\n                this.$emit(\"destroy\");\r\n            },\r\n            showLrc () {\r\n                this.$emit(\"lrcshow\");\r\n                this.aplayer.lyricShow = true;\r\n            },\r\n            hideLrc () {\r\n                this.$emit(\"lrchide\");\r\n                this.aplayer.lyricShow = false;\r\n            },\r\n            toggleLrc () {\r\n                !this.aplayer.lyricShow ? this.showLrc() : this.hideLrc();\r\n            },\r\n            showList () {\r\n                this.$emit(\"listshow\");\r\n                if (this.aplayer.mode !== \"mini\") {\r\n                    this.$refs.list.showList();\r\n                }\r\n                this.aplayer.listFolded = true;\r\n            },\r\n            hideList () {\r\n                this.$emit(\"listhide\");\r\n                this.aplayer.listFolded = false;\r\n            },\r\n            toggleList () {\r\n                !this.aplayer.listFolded ? this.showList() : this.hideList();\r\n            },\r\n            addList (audios, clear = false) {\r\n                this.$emit(\"listadd\", audios);\r\n                if (Object.prototype.toString.call(audios) !== \"[object Array]\") {\r\n                    audios = [audios];\r\n                }\r\n\r\n                audios.map((item) => {\r\n                    item.name = item.name || item.title || \"Audio Name\";\r\n                    item.artist = item.artist || item.author || \"Audio Artist\";\r\n                    item.cover = item.cover || item.pic;\r\n                    item.type = item.type || \"normal\";\r\n                    return item;\r\n                });\r\n\r\n                const isEmpty = this.aplayer.audio.length === 0;\r\n\r\n                if (clear) {\r\n                    this.aplayer.audio = [];\r\n                }\r\n                this.aplayer.audio = this.aplayer.audio.concat(audios);\r\n\r\n                this.aplayer.randomOrder = utils.randomOrder(this.aplayer.audio.length);\r\n\r\n                if (isEmpty) {\r\n                    let index = 0;\r\n                    if (this.aplayer.order === \"random\") {\r\n                        index = this.aplayer.randomOrder[0];\r\n                    }\r\n                    this.switchList(index);\r\n                }\r\n            },\r\n            removeList (index) {\r\n                this.$emit(\"listremove\", nextIndex);\r\n                this.aplayer.coverColor.splice(index, 1);\r\n                this.aplayer.randomOrder.splice(this.aplayer.randomOrder.indexOf(this.aplayer.audio.length - 1), 1);\r\n                if (this.aplayer.audio[index]) {\r\n                    if (this.aplayer.audio.length > 1) {\r\n                        this.aplayer.audio.splice(index, 1);\r\n                        if (index === this.aplayer.index) {\r\n                            if (this.aplayer.audio[index]) {\r\n                                this.switchList(index);\r\n                            } else {\r\n                                this.switchList(index - 1);\r\n                            }\r\n                        }\r\n                        if (this.aplayer.index > index) {\r\n                            this.aplayer.index--;\r\n                        }\r\n                    } else {\r\n                        this.clearList();\r\n                    }\r\n                }\r\n                this.aplayer.lyrics.splice(index, 1);\r\n            },\r\n            switchList (index) {\r\n                this.$emit(\"listswitch\", index);\r\n                if (typeof index !== \"undefined\" && this.aplayer.audio[index]) {\r\n                    this.aplayer.index = index;\r\n                    this.coverColor();\r\n                    if (this.aplayer.mode !== \"mini\") {\r\n                        smoothScroll(index * 33, 500, null, this.$refs.list.ol);\r\n                    }\r\n                    // set audio\r\n                    this.setAudio(this.aplayer.audio[index]);\r\n                    // set lyric\r\n                    this.switchLyric(index);\r\n                    // set time\r\n                    this.audioStatus.duration = 0;\r\n                    this.audioStatus.playedTime = 0;\r\n                }\r\n            },\r\n            clearList () {\r\n                this.$emit(\"listclear\");\r\n                this.pause();\r\n                this.audioRef.src = \"\";\r\n                this.aplayer.audio = [];\r\n                this.aplayer.randomOrder = [];\r\n                this.aplayer.coverColor = [];\r\n                this.aplayer.lyrics = [];\r\n                this.aplayer.index = 0;\r\n                this.aplayer.lyricIndex = 0;\r\n                this.audioStatus.duration = 0;\r\n                this.audioStatus.loadedTime = 0;\r\n                this.audioStatus.playedTime = 0;\r\n                this.audioStatus.playStatus = false;\r\n                this.audioStatus.waitingStatus = false;\r\n                this.audioStatus.disableTimeUpdate = false;\r\n            },\r\n            // media events\r\n            timeupdate () {\r\n                if (!this.audioStatus.disableTimeUpdate) {\r\n                    this.audioStatus.playedTime = this.audioRef.currentTime;\r\n                }\r\n                this.updateLyric();\r\n            },\r\n            durationchange () {\r\n                this.audioStatus.duration = this.audioRef.duration;\r\n            },\r\n            loadedmetadata () {\r\n                this.seek(0);\r\n                this.audioStatus.playStatus && this.audioRef.play();\r\n            },\r\n            canplay () {\r\n                this.audioStatus.loadedTime = this.loadedTime();\r\n            },\r\n            progress () {\r\n                this.audioStatus.loadedTime = this.loadedTime();\r\n            },\r\n            error () {\r\n                if (this.aplayer.audio.length > 1) {\r\n                    let playStatus = this.audioStatus.playStatus;\r\n                    this.setNotice(\"An audio error has occurred, player will skip forward in 2 seconds.\");\r\n                    this.skipForwardTimeout && clearTimeout(this.skipForwardTimeout);\r\n                    this.skipForwardTimeout = setTimeout(() => {\r\n                        this.skipForward();\r\n                        playStatus && this.play();\r\n                    }, 2000);\r\n                } else if (this.aplayer.audio.length === 1) {\r\n                    this.setNotice(\"An audio error has occurred.\");\r\n                }\r\n            }, \r\n            ended () {\r\n                let index = this.aplayer.index;\r\n                if (this.aplayer.loop === \"none\") {\r\n                    this.skipForward();\r\n                    if (this.aplayer.order === \"list\") {\r\n                        (index < this.aplayer.audio.length - 1) ? this.play() : this.pause();\r\n                    } else if (this.aplayer.order === \"random\") {\r\n                        (this.aplayer.randomOrder.indexOf(index) < this.aplayer.randomOrder.length - 1) ? this.play() : this.pause();\r\n                    }\r\n                } else if (this.aplayer.loop === \"one\") {\r\n                    this.switchList(index);\r\n                    this.play();\r\n                } else if (this.aplayer.loop === \"all\") {\r\n                    this.skipForward();\r\n                    this.play();\r\n                }\r\n            },\r\n            waiting () {\r\n                this.audioStatus.waitingStatus = true;\r\n            },\r\n            playing () {\r\n                this.audioStatus.waitingStatus = false;\r\n            },\r\n            resize () {\r\n                if (this.aplayer.mode === \"normal\") {\r\n                    this.styleStatus.narrow = (this.$refs.aplayer.offsetWidth <= 300);\r\n                    this.styleStatus.timeNarrow = (this.$refs.info.offsetWidth <= 200);\r\n                } else {\r\n                    this.styleStatus.narrow = window.innerWidth <= 318;\r\n                    this.styleStatus.timeNarrow = true;\r\n                }\r\n            },\r\n        },\r\n        watch: {\r\n            audio (audio) {\r\n                this.addList(audio, true);\r\n            }\r\n        },\r\n        mounted () {\r\n            this.init();\r\n        },\r\n        beforeUnmount () {\r\n            this.clearList();\r\n\r\n            this.hls && this.hls.destroy();\r\n            if (activeMutexInstance === this) activeMutexInstance = null;\r\n            this.colorThief = null;\r\n            this.noticeTimeout && clearTimeout(this.noticeTimeout);\r\n            this.skipForwardTimeout && clearTimeout(this.skipForwardTimeout);\r\n\r\n            // remove bind events\r\n            mediaEvents.forEach(event => {\r\n                this.audioRef.removeEventListener(event, e => this.$emit(event, e));\r\n            });\r\n\r\n            this.audioRef.removeEventListener('play', () => this.audioStatus.playStatus = true);\r\n            this.audioRef.removeEventListener('pause', () => this.audioStatus.playStatus = false);\r\n            this.audioRef.removeEventListener('timeupdate', this.timeupdate);\r\n            this.audioRef.removeEventListener('durationchange', this.durationchange);\r\n            this.audioRef.removeEventListener('loadedmetadata', this.loadedmetadata);\r\n            this.audioRef.removeEventListener('canplay', this.canplay);\r\n            this.audioRef.removeEventListener('progress', this.progress);\r\n            this.audioRef.removeEventListener('error', this.error);\r\n            this.audioRef.removeEventListener('ended', this.ended);\r\n            this.audioRef.removeEventListener('waiting', this.waiting);\r\n            this.audioRef.removeEventListener('playing', this.playing);\r\n            window.removeEventListener(\"resize\", this.resize);\r\n        }\r\n    };\r\n    export default aplayer;\r\n</script>\r\n<style lang=\"scss\">\r\n    @import \"./style/index\";\r\n</style>","import APlayer from \"./APlayer.vue\";\r\n\r\nAPlayer.install = (app) => {\r\n    app.component(APlayer.name, APlayer);\r\n}\r\n\r\nexport default APlayer;"],"names":["root","smoothScroll","module","this","getTop","element","start","easeInOutCubic","t","position","end","elapsed","duration","el","callback","context","clock","requestAnimationFrame","fn","step","linkHandler","ev","node","internal","a","i","isMobile","utils","key","value","second","strMap","num","hour","min","sec","length","shuffle","arr","randomIndex","itemAtIndex","item","lyricStr","match","p","lyricArr","lyricParseArr","lrcTimes","lrcText","j","oneTime","min2sec","sec2sec","msec2sec","lrcTime","b","_hoisted_1","_hoisted_2","_createElementVNode","_hoisted_3","render","_ctx","_cache","_openBlock","_createElementBlock","Play","Pause","VolumeUp","VolumeDown","VolumeOff","OrderRandom","OrderList","Menu","LoopAll","LoopOne","LoopNone","Loading","Right","Skip","Lrc","icons","_sfc_main","index","_hoisted_4","_normalizeClass","$props","_normalizeStyle","_Fragment","_renderList","audio","$event","$options","_toDisplayString","lyric","loopArr","orderArr","Icon","time","status","percentage","_hoisted_5","_hoisted_6","_hoisted_7","$data","_a","_b","_createVNode","_component_Icon","_createTextVNode","_vShow","_hoisted_8","_c","args","activeMutexInstance","mediaEvents","aplayer","List","Lyric","Controller","type","isEmpty","red","green","blue","lrc","response","e","current","next","event","playPromise","volume","storage","color","mode","loop","order","text","opacity","audios","clear","playStatus","_createCommentVNode","_createBlock","_component_List","_component_Lyric","_component_Controller","APlayer","app"],"mappings":"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","x_google_ignoreList":[0]}