{"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);\n\nconst utils = {\n    isMobile: isMobile,\n    eventsName: {\n        moveStart: isMobile ? 'touchstart' : 'mousedown',\n        moving: isMobile ? 'touchmove' : 'mousemove',\n        moveEnd: isMobile ? 'touchend' : 'mouseup',\n    },\n    storage: {\n        set: (key, value) => {\n            localStorage.setItem(key, value);\n        },\n        get: (key) => {\n            localStorage.getItem(key);\n        }\n    },\n    /**\n     * Parse Second to Time String\n     *\n     * @param {Number} second\n     * @return {String} 00:00 or 00:00:00\n     */\n    secondToTime: (second) => {\n        const strMap = (num) => (num < 10 ? '0' + num : '' + num);\n        const hour = Math.floor(second / 3600);\n        const min = Math.floor((second - hour * 3600) / 60);\n        const sec = Math.floor(second - hour * 3600 - min * 60);\n        return (hour > 0 ? [hour, min, sec] : [min, sec]).map(strMap).join(':');\n    },\n    randomOrder: (length) => {\n        function shuffle(arr) {\n            for (let i = arr.length - 1; i >= 0; i--) {\n                const randomIndex = Math.floor(Math.random() * (i + 1));\n                const itemAtIndex = arr[randomIndex];\n                arr[randomIndex] = arr[i];\n                arr[i] = itemAtIndex;\n            }\n            return arr;\n        }\n        return shuffle(\n            [...Array(length)].map(function(item, i) {\n                return i;\n            })\n        );\n    },\n    /**\n     * Parse Lyric String to Array\n     * \n     * @param {String} lyricStr \n     * @return {Array} [[0, \"APlayer\"], [1.2, \"is\"], [34.56, \"Amazing\"]]\n     */\n    parse (lyricStr) {\n        if (lyricStr) {\n            lyricStr = lyricStr.replace(/([^\\]^\\n])\\[/g, (match, p) => p + '\\n[');\n            let lyricArr = lyricStr.split('\\n');\n            let lyricParseArr = [];\n            for (let i = 0; i < lyricArr.length; i++) {\n                // match lrc time\n                const lrcTimes = lyricArr[i].match(/\\[(\\d{2}):(\\d{2})(\\.(\\d{2,3}))?]/g);\n                // match lrc text\n                const lrcText = lyricArr[i]\n                    .replace(/.*\\[(\\d{2}):(\\d{2})(\\.(\\d{2,3}))?]/g, '')\n                    .replace(/<(\\d{2}):(\\d{2})(\\.(\\d{2,3}))?>/g, '')\n                    .replace(/^\\s+|\\s+$/g, '');\n\n                if (lrcTimes) {\n                    // handle multiple time tag\n                    for (let j = 0; j < lrcTimes.length; j++) {\n                        const oneTime = /\\[(\\d{2}):(\\d{2})(\\.(\\d{2,3}))?]/.exec(lrcTimes[j]);\n                        const min2sec = oneTime[1] * 60;\n                        const sec2sec = parseInt(oneTime[2]);\n                        const msec2sec = oneTime[4] ? parseInt(oneTime[4]) / ((oneTime[4] + '').length === 2 ? 100 : 1000) : 0;\n                        const lrcTime = min2sec + sec2sec + msec2sec;\n                        lyricParseArr.push([lrcTime, lrcText]);\n                    }\n                }\n            }\n            // sort by time\n            lyricParseArr = lyricParseArr.filter((item) => item[1]);\n            lyricParseArr.sort((a, b) => a[0] - b[0]);\n\n            return lyricParseArr;\n        } else {\n            return [];\n        }\n    },\n};\n\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>\n    <component :is=\"icons[type]\"></component>\n</template>\n<script setup>\n    import Play from \"../assets/play.svg?component\";\n    import Pause from \"../assets/pause.svg?component\";\n    import VolumeUp from \"../assets/volume-up.svg?component\";\n    import VolumeDown from \"../assets/volume-down.svg?component\";\n    import VolumeOff from \"../assets/volume-off.svg?component\";\n    import OrderRandom from \"../assets/order-random.svg?component\";\n    import OrderList from \"../assets/order-list.svg?component\";\n    import Menu from \"../assets/menu.svg?component\";\n    import LoopAll from \"../assets/loop-all.svg?component\";\n    import LoopOne from \"../assets/loop-one.svg?component\";\n    import LoopNone from \"../assets/loop-none.svg?component\";\n    import Loading from \"../assets/loading.svg?component\";\n    import Right from \"../assets/right.svg?component\";\n    import Skip from \"../assets/skip.svg?component\";\n    import Lrc from \"../assets/lrc.svg?component\";\n\n    const props = defineProps({\n        type: {\n            type: String\n        }\n    });\n\n    const icons = {\n        \"play\" : Play,\n        \"pause\" : Pause,\n        \"volumeUp\" : VolumeUp,\n        \"volumeDown\" : VolumeDown,\n        \"volumeOff\" : VolumeOff,\n        \"orderRandom\" : OrderRandom,\n        \"orderList\" : OrderList,\n        \"menu\" : Menu,\n        \"loopAll\" : LoopAll,\n        \"loopOne\" : LoopOne,\n        \"loopNone\" : LoopNone,\n        \"loading\" : Loading,\n        \"right\" : Right,\n        \"skip\" : Skip,\n        \"lrc\" : Lrc,\n    };\n</script>","<template>\n    <div class=\"aplayer-list\" :class=\"{ 'aplayer-list-hide': !aplayer.listFolded }\" :style=\"{ 'max-height': `${aplayer.listMaxHeight}px` }\">\n        <ol :style=\"{ 'max-height': `${aplayer.listMaxHeight}px` }\" ref=\"ol\">\n            <li v-for=\"(audio, index) in aplayer.audio\" :class=\"{ 'aplayer-list-light': (index === aplayer.index) }\" @click=\"switchList(index)\">\n                <span class=\"aplayer-list-cur\" :style=\"{ background: `${aplayer.coverColor[aplayer.index] || audio.theme || aplayer.theme}` }\"></span>\n                <span class=\"aplayer-list-index\">{{ index + 1 }}</span>\n                <span class=\"aplayer-list-title\">{{ audio.name }}</span>\n                <span class=\"aplayer-list-author\">{{ audio.artist ? audio.artist : \"\" }}</span>\n            </li>\n        </ol>\n    </div>\n</template>\n<script>\n    export default {\n        props: [\"aplayer\"],\n        computed: {\n            ol () {\n                return this.$refs.ol;\n            }\n        },\n        methods: {\n            showList () {\n                setTimeout(() => {\n                    this.ol.scrollTop = this.aplayer.index * 33;\n                }, 0);\n            },\n            switchList (index) {\n                if (index !== this.aplayer.index) {\n                    this.$emit(\"switchList\", index);\n                    this.$emit(\"play\");\n                } else {\n                    this.$emit(\"toggle\");\n                }\n            }\n        },\n    }\n</script>","<template>\n    <div class=\"aplayer-lrc\">\n        <div class=\"aplayer-lrc-contents\" :style=\"transformStyle\">\n            <p :class=\"{ 'aplayer-lrc-current': index === aplayer.lyricIndex }\" v-for=\"(lyric, index) in aplayer.lyrics[aplayer.index]\">{{ lyric[1] }}</p>\n        </div>\n    </div>\n</template>\n<script>\n    export default {\n        props: [\"aplayer\"],\n        computed: {\n            transformStyle () {\n                //console.log('Lyric Offset:', this.aplayer.lyricOffset);\n                return {\n                    transform: `translateY(-${this.aplayer.lyricIndex * this.aplayer.lyricOffset}px)`,\n                    webkitTransform: `translateY(-${this.aplayer.lyricIndex * this.aplayer.lyricOffset}px)`,\n                }\n            }\n        }\n    }\n</script>","<template>\n    <div class=\"aplayer-controller\">\n        <div class=\"aplayer-bar-wrap\" @mouseover=\"aplayerThumbShowStatus = true\" @mouseout=\"aplayerThumbShowStatus = false\">\n            <div class=\"aplayer-bar\" ref=\"aplayerBar\">\n                <div class=\"aplayer-loaded\" :style=\"{ width: `${audioStatus.duration ? audioStatus.loadedTime / audioStatus.duration * 100 : 0}%` }\"></div>\n                <div class=\"aplayer-played\" :style=\"{ width: `${audioStatus.duration ? audioStatus.playedTime / audioStatus.duration * 100 : 0}%`, background: `${aplayer.coverColor[aplayer.index] || audio?.theme || aplayer.theme}` }\">\n                    <span class=\"aplayer-thumb\" :style=\"{ background: `${aplayer.coverColor[aplayer.index] || audio?.theme || aplayer.theme}` }\" v-show=\"aplayerThumbShowStatus\">\n                        <span class=\"aplayer-loading-icon\"><Icon type=\"loading\"></Icon></span>\n                    </span>\n                </div>\n            </div>\n        </div>\n        <div :class=\"{ 'aplayer-time': true, 'aplayer-time-narrow': styleStatus.timeNarrow }\">\n            <span class=\"aplayer-time-inner\">\n                <span class=\"aplayer-ptime\">{{ playedTime }}</span> / <span class=\"aplayer-dtime\">{{ duration }}</span>\n            </span>\n            <span class=\"aplayer-icon aplayer-icon-back\" @click=\"$emit('skipBack')\">\n                <Icon type=\"skip\"></Icon>\n            </span>\n            <span class=\"aplayer-icon aplayer-icon-play\" @click=\"$emit('toggle')\">\n                <Icon type=\"play\" v-show=\"!audioStatus.playStatus\"></Icon>\n                <Icon type=\"pause\" v-show=\"audioStatus.playStatus\"></Icon>\n            </span>\n            <span class=\"aplayer-icon aplayer-icon-forward\" @click=\"$emit('skipForward')\">\n                <Icon type=\"skip\"></Icon>\n            </span>\n            <div class=\"aplayer-volume-wrap\" :class=\"{ 'aplayer-volume-bar-wrap-active': volumeBarShowStatus }\">\n                <button type=\"button\" class=\"aplayer-icon aplayer-icon-volume-down\" @click=\"$emit('mute')\">\n                    <Icon :type=\"switchVolumeIcon\"></Icon>\n                </button>\n                <div class=\"aplayer-volume-bar-wrap\">\n                    <div class=\"aplayer-volume-bar\" ref=\"volumeBar\">\n                        <div class=\"aplayer-volume\" :style=\"{ height: `${aplayer.muted ? 0 : aplayer.volume * 100}%`, background: `${aplayer.coverColor[aplayer.index] || audio?.theme || aplayer.theme}` }\"></div>\n                    </div>\n                </div>\n            </div>\n            <button type=\"button\" class=\"aplayer-icon aplayer-icon-order\" @click=\"orderButtonClick\">\n                <Icon type=\"orderList\" v-show=\"aplayer.order === 'list'\"></Icon>\n                <Icon type=\"orderRandom\" v-show=\"aplayer.order === 'random'\"></Icon>\n            </button>\n            <button type=\"button\" class=\"aplayer-icon aplayer-icon-loop\" @click=\"loopButtonClick\">\n                <Icon type=\"loopOne\" v-show=\"aplayer.loop === 'one'\"></Icon>\n                <Icon type=\"loopAll\" v-show=\"aplayer.loop === 'all'\"></Icon>\n                <Icon type=\"loopNone\" v-show=\"aplayer.loop === 'none'\"></Icon>\n            </button>\n            <button type=\"button\" class=\"aplayer-icon aplayer-icon-menu\" @click=\"$emit('toggleList')\">\n                <Icon type=\"menu\"></Icon>\n            </button>\n            <button type=\"button\" :class=\"{ 'aplayer-icon': true, 'aplayer-icon-lrc': true, 'aplayer-icon-lrc-inactivity': !aplayer.lyricShow }\" @click=\"$emit('toggleLrc')\">\n                <Icon type=\"lrc\"></Icon>\n            </button>\n        </div>\n    </div>\n</template>\n<script>\n    import utils from \"../utils/utils.js\";\n    import Icon from \"./Icon.vue\";\n\n    const loopArr = [\"one\", \"all\", \"none\"];\n    const orderArr = [\"list\", \"random\"];\n\n    export default {\n        components: {\n            utils,\n            Icon,\n        },\n        props: [\"aplayer\", \"audioStatus\", \"styleStatus\"],\n        data () {\n            return {\n                aplayerThumbShowStatus: false,\n                volumeBarShowStatus: false,\n            }\n        },\n        computed: {\n            aplayerBar () {\n                return this.$refs.aplayerBar;\n            },\n            volumeBar () {\n                return this.$refs.volumeBar;\n            },\n            switchVolumeIcon () {\n                if (this.aplayer.muted || this.aplayer.volume <= 0) return \"volumeOff\";\n                if (this.aplayer.volume >= 0.95) return \"volumeUp\";\n                return \"volumeDown\";\n            },\n            audio () {\n                return this.aplayer.audio[this.aplayer.index];\n            },\n            duration () {\n                return utils.secondToTime(this.audioStatus.duration);\n            },\n            playedTime: {\n                get () {\n                    return utils.secondToTime(this.audioStatus.playedTime);\n                },\n                set (time) {\n                    this.$emit(\"playedTime\", time);\n                }\n            },\n            disableTimeUpdate: {\n                get () {\n                    return this.audioStatus.disableTimeUpdate;\n                },\n                set (status) {\n                    this.$emit(\"disableTimeUpdate\", status);\n                },\n            }\n        },\n        methods: {\n            loopButtonClick () {\n                let index = loopArr.indexOf(this.aplayer.loop);\n                index = (index + 1) % loopArr.length;\n                this.$emit(\"setLoop\", loopArr[index]);\n            },\n            orderButtonClick () {\n                let index = orderArr.indexOf(this.aplayer.order);\n                index = (index + 1) % orderArr.length;\n                this.$emit(\"setOrder\", orderArr[index]);\n            },\n\n            aplayerBarMoving (e) {\n                let percentage = ((e.clientX || e.changedTouches[0].clientX) - this.aplayerBar.getBoundingClientRect().left) / this.aplayerBar.clientWidth;\n                percentage = Math.max(percentage, 0);\n                percentage = Math.min(percentage, 1);\n                this.playedTime = percentage * this.audioStatus.duration;\n                this.$emit(\"updateLyric\");\n            },\n            aplayerBarMoveEnd (e) {\n                document.removeEventListener(utils.eventsName.moveEnd, this.aplayerBarMoveEnd);\n                document.removeEventListener(utils.eventsName.moving, this.aplayerBarMoving);\n                let percentage = ((e.clientX || e.changedTouches[0].clientX) - this.aplayerBar.getBoundingClientRect().left) / this.aplayerBar.clientWidth;\n                percentage = Math.max(percentage, 0);\n                percentage = Math.min(percentage, 1);\n                this.$emit(\"seek\", percentage * this.audioStatus.duration);\n                this.disableTimeUpdate = false;\n            },\n            aplayerBarMoveStart () {\n                this.disableTimeUpdate = true;\n                document.addEventListener(utils.eventsName.moving, this.aplayerBarMoving);\n                document.addEventListener(utils.eventsName.moveEnd, this.aplayerBarMoveEnd);\n            },\n\n            volumeBarMoving (e) {\n                let percentage = 1 - ((e.clientY || e.changedTouches[0].clientY) - this.volumeBar.getBoundingClientRect().top) / this.volumeBar.clientHeight;\n                percentage = Math.max(percentage, 0);\n                percentage = Math.min(percentage, 1);\n                this.$emit(\"setVolume\", percentage);\n            },\n            volumeBarMoveEnd (e) {\n                this.volumeBarShowStatus = false;\n                document.removeEventListener(utils.eventsName.moveEnd, this.volumeBarMoveEnd);\n                document.removeEventListener(utils.eventsName.moving, this.volumeBarMoving);\n                let percentage = 1 - ((e.clientY || e.changedTouches[0].clientY) - this.volumeBar.getBoundingClientRect().top) / this.volumeBar.clientHeight;\n                percentage = Math.max(percentage, 0);\n                percentage = Math.min(percentage, 1);\n                this.$emit(\"setVolume\", percentage, true);\n            },\n            volumeBarMoveStart () {\n                this.volumeBarShowStatus = true;\n                document.addEventListener(utils.eventsName.moving, this.volumeBarMoving);\n                document.addEventListener(utils.eventsName.moveEnd, this.volumeBarMoveEnd);\n            },\n        },\n        mounted () {\n            this.aplayerBar.parentNode.addEventListener(utils.eventsName.moveStart, this.aplayerBarMoveStart);\n            this.volumeBar.parentNode.addEventListener(utils.eventsName.moveStart, this.volumeBarMoveStart);\n        },\n        beforeUnmount () {\n            this.aplayerBar.parentNode.removeEventListener(utils.eventsName.moveStart, this.aplayerBarMoveStart);\n            this.volumeBar.parentNode.removeEventListener(utils.eventsName.moveStart, this.volumeBarMoveStart);\n        }\n    }\n</script>","<template>\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\">\n        <List v-if=\"aplayer.mode === 'fixed'\" :aplayer=\"aplayer\" @play=\"play\" @toggle=\"toggle\" @switchList=\"switchList\" ref=\"list\" />\n        <div class=\"aplayer-body\" :style=\"{ width: `${aplayer.mode === 'fixed' ? 'calc(100% - 18px)' : '100%'}` }\">\n            <div class=\"aplayer-pic\" :style=\"coverStyle\" @click=\"toggle\">\n                <div class=\"aplayer-button\" :class=\"{ 'aplayer-play': !audioStatus.playStatus, 'aplayer-pause': audioStatus.playStatus }\">\n                    <div ref=\"switch\">\n                        <Icon type=\"play\" v-show=\"!audioStatus.playStatus\"></Icon>\n                        <Icon type=\"pause\" v-show=\"audioStatus.playStatus\"></Icon>\n                    </div>\n                </div>\n            </div>\n            <div class=\"aplayer-info\" ref=\"info\">\n                <div class=\"aplayer-music\">\n                    <span class=\"aplayer-title\">{{ aplayer.audio[aplayer.index] ? aplayer.audio[aplayer.index].name : \"No Audio\" }}</span>\n                    <span class=\"aplayer-author\">{{ aplayer.audio[aplayer.index] ? \" - \" + aplayer.audio[aplayer.index].artist : \"\" }}</span>\n                </div>\n                <Lyric v-if=\"aplayer.mode === 'normal'\" v-show=\"aplayer.lyricShow\" :aplayer=\"aplayer\" ref=\"lyric\" />\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\" />\n            </div>\n            <div class=\"aplayer-notice\" :style=\"{ opacity: aplayer.noticeOpacity }\">{{ aplayer.noticeText }}</div>\n            <div class=\"aplayer-miniswitcher\" @click=\"styleStatus.mini = !styleStatus.mini\">\n                <button class=\"aplayer-icon\">\n                    <Icon type=\"right\"></Icon>\n                </button>\n            </div>\n        </div>\n        <List v-if=\"aplayer.mode === 'normal'\" :aplayer=\"aplayer\" @play=\"play\" @toggle=\"toggle\" @switchList=\"switchList\" ref=\"list\" />\n        <Lyric v-if=\"aplayer.mode === 'fixed'\" v-show=\"aplayer.lyricShow\" :aplayer=\"aplayer\" ref=\"lyric\" />\n        <audio ref=\"audio\"></audio>\n    </div>\n</template>\n<script>\n    import smoothScroll from \"smoothScroll\";\n    import utils from \"./utils/utils.js\";\n    import Icon from \"./components/Icon.vue\";\n    import List from \"./components/List.vue\";\n    import Lyric from \"./components/Lyric.vue\";\n    import Controller from \"./components/Controller.vue\";\n\n    let activeMutexInstance = null;\n\n    const mediaEvents = [\n        \"abort\",\n        \"canplay\", \"canplaythrough\",\n        \"durationchange\",\n        \"emptied\", \"encrypted\", \"ended\", \"error\",\n        \"interruptbegin\", \"interruptend\",\n        \"loadeddata\", \"loadedmetadata\", \"loadstart\",\n        \"mozaudioavailable\",\n        \"pause\", \"play\", \"playing\", \"progress\",\n        \"ratechange\",\n        \"seeked\", \"seeking\", \"stalled\", \"suspend\",\n        \"timeupdate\",\n        \"volumechange\",\n        \"waiting\",\n    ];\n\n    const aplayer = {\n        name: \"APlayer\",\n        components: {\n            smoothScroll,\n            utils,\n            Icon,\n            List,\n            Lyric,\n            Controller,\n        },\n        props: {\n            audio: {\n                type: Array,\n                default: [],\n            },\n            mode: {\n                type: String,\n                default: \"normal\", // \"normal\", \"fixed\", \"mini\"\n            },\n            autoplay: {\n                type: Boolean,\n                default: false,\n            },\n            mutex: {\n                type: Boolean,\n                default: true,\n            },\n            preload: {\n                type: String,\n                default: \"metadata\", // \"auto\", \"metadata\", \"none\"\n            },\n            theme: {\n                type: String,\n                default: \"#B7DAFF\",\n            },\n            autoSwitch: {\n                type: Boolean,\n                default: true,\n            },\n            loop: {\n                type: String,\n                default: \"all\", // \"one\", \"all\", \"none\"  \n            },\n            order: {\n                type: String,\n                default: \"list\", // \"list\", \"random\"\n            },\n            muted: {\n                type: Boolean,\n                default: false,\n            },\n            volume: {\n                type: Number,\n                default: 0.7,\n                validator (value) {\n                    return value >= 0 && value <= 1;\n                },\n            },\n            lrcType: {\n                type: Number,\n                default: 1,\n            },\n            lrcShow: {\n                type: Boolean,\n                default: true,\n            },\n            lyricOffset: {\n                type: Number,\n                default: 16,\n            },\n            listFolded: {\n                type: Boolean,\n                default: false,\n            },\n            listMaxHeight: {\n                type: Number,\n                default: 250,\n            },\n            noticeSwitch: {\n                type: Boolean,\n                default: true,\n            },\n            storageName: {\n                type: String,\n                default: \"aplayer-setting\",\n            }\n        },\n        data () {\n            return {\n                aplayer: {\n                    index: 0,\n                    audio: [],\n                    randomOrder: [],\n                    mode: this.mode,\n                    autoplay: this.autoplay,\n                    mutex: this.mutex,\n                    preload: this.preload,\n                    theme: this.theme,\n                    autoSwitch: this.autoSwitch,\n                    coverColor: [],\n                    loop: this.loop,\n                    order: this.order,\n                    muted: this.muted,\n                    volume: this.volume,\n                    lyricType: this.lrcType,\n                    lyricShow: this.lrcShow,\n                    lyricIndex: 0,\n                    lyrics: [],\n                    lyricOffset: this.lyricOffset,\n                    listFolded: this.listFolded,\n                    listMaxHeight: this.listMaxHeight,\n                    noticeSwitch: this.noticeSwitch,\n                    noticeText: \"\",\n                    noticeOpacity: 0,\n                    storageName: this.storageName,\n                    storage: {},\n                },\n                audioStatus: {\n                    duration: 0,\n                    loadedTime: 0,\n                    playedTime: 0,\n                    playStatus: false,\n                    waitingStatus: false,\n                    disableTimeUpdate: false,\n                },\n                styleStatus: {\n                    isMobile: /mobile/i.test(window.navigator.userAgent),\n                    narrow: false,\n                    timeNarrow: false,\n                    mini: true,\n                },\n                destroyComponent: false,\n            }\n        },\n        computed: {\n            audioRef () {\n                return this.$refs.audio;\n            },\n            coverStyle () {\n                let audio = this.aplayer.audio[this.aplayer.index];\n                if (!audio?.cover) {\n                    return {\n                        \"background-color\": `${this.aplayer.coverColor[this.aplayer.index] || audio?.theme || this.aplayer.theme}`\n                    }\n                }\n                return {\n                    \"background-image\": `url(${audio.cover})`,\n                    \"background-color\": `${this.aplayer.coverColor[this.aplayer.index] || audio?.theme || this.aplayer.theme}`\n                }\n            },\n        },\n        methods: {\n            // internal methods\n            getStorage (key) {\n                return this.aplayer.storage[key];\n            },\n            setStorage (key, value) {\n                this.aplayer.storage[key] = value;\n                localStorage.setItem(this.aplayer.storageName, JSON.stringify(this.aplayer.storage));\n            },\n            setAudio (audio) {\n                if (this.hls) {\n                    this.hls.destroy();\n                    this.hls = null;\n                }\n                let type = audio.type;\n                if (!type || type === \"auto\") {\n                    type = (/m3u8(#|\\?|$)/i.exec(audio.url)) ? \"hls\" : \"normal\";\n                }\n                if (type === \"hls\") {\n                    if (Hls.isSupported()) {\n                        this.hls = new Hls();\n                        this.hls.loadSource(audio.url);\n                        this.hls.attachMedia(this.audioRef);\n                    } else if (this.audioRef.canPlayType(\"application/x-mpegURL\") || this.audioRef.canPlayType(\"application/vnd.apple.mpegURL\")) {\n                        this.audioRef.src = audio.url;\n                    } else {\n                        this.setNotice(\"Error: HLS is not supported.\");\n                    }\n                } else if (type === \"normal\") {\n                    this.audioRef.src = audio.url;\n                }\n            },\n            prevIndex () {\n                let index = this.aplayer.index;\n                if (this.aplayer.audio.length > 1) {\n                    if (this.aplayer.order === \"list\") {\n                        return index - 1 < 0 ? this.aplayer.audio.length - 1 : index - 1;\n                    } else if (this.aplayer.order === \"random\") {\n                        let randomIndex = this.aplayer.randomOrder.indexOf(index);\n                        if (randomIndex === 0) {\n                            return this.aplayer.randomOrder[this.aplayer.randomOrder.length - 1];\n                        } else {\n                            return this.aplayer.randomOrder[randomIndex - 1];\n                        }\n                    }\n                } else {\n                    return 0;\n                }\n            },\n            nextIndex () {\n                let index = this.aplayer.index;\n                if (this.aplayer.audio.length > 1) {\n                    if (this.aplayer.order === \"list\") {\n                        return (index + 1) % this.aplayer.audio.length;\n                    } else if (this.aplayer.order === \"random\") {\n                        let randomIndex = this.aplayer.randomOrder.indexOf(index);\n                        if (randomIndex === this.aplayer.randomOrder.length - 1) {\n                            return this.aplayer.randomOrder[0];\n                        } else {\n                            return this.aplayer.randomOrder[randomIndex + 1];\n                        }\n                    }\n                } else {\n                    return 0;\n                }\n            },\n            coverColor () {\n                let isEmpty = !this.aplayer.coverColor[this.aplayer.index];\n                if (this.aplayer.autoSwitch && isEmpty) {\n                    try {\n                        if (!this.colorThief) {\n                            this.colorThief = new ColorThief();\n                        }\n                        this.colorThief.getColorAsync(this.aplayer.audio[this.aplayer.index]?.cover, ([red, green, blue]) => this.aplayer.coverColor[this.aplayer.index] = `rgb(${red}, ${green}, ${blue})`);\n                    } catch (e) {\n                        this.aplayer.autoSwitch = false;\n                        this.setNotice(\"The color-thief is required to support self-adapting theme.\");\n                    }\n                }\n            },\n            switchStyle () {\n                if (this.$refs.switch) {\n                    this.$refs.switch.style.display = \"none\";\n                    setTimeout(() => {\n                        if (this.$refs.switch) {\n                            this.$refs.switch.style.display = \"block\";\n                        }\n                    }, 100);\n                }\n            },\n            loadedTime () {\n                return this.audioRef.buffered.length ? this.audioRef.buffered.end(this.audioRef.buffered.length - 1) : 0;\n            },\n            playedTime (time) {\n                this.audioStatus.playedTime = time;\n            },\n            disableTimeUpdate (status) {\n                this.audioStatus.disableTimeUpdate = status;\n            },\n            async loadLyric (lrc, index) {\n                try {\n                    let response = await fetch(this.aplayer.audio[index].lrc);\n                    if (response.ok || response.status === 304) {\n                        lrc = utils.parse(await response.text());\n                    } else {\n                        this.setNotice(\"LRC file request fails: status \" + response.status);\n                    } \n                } catch (e) {\n                    console.warn(e);\n                } finally {\n                    this.aplayer.lyrics[index] = lrc;\n                    this.updateLyric();\n                }\n            },\n            switchLyric (index) {\n                if (this.aplayer.lyrics[index]) {\n                    return ;\n                }\n                let lrc = [[0, \"Not available\"]];\n                if (this.aplayer.lyricType === 1) {\n                    // async\n                    this.aplayer.lyrics[index] = [[0, \"Loading\"]];\n                    this.loadLyric(lrc, index);\n                } else if (this.aplayer.lyricType === 2) {\n                    // sync\n                    if (this.aplayer.audio[index].lrc) {\n                        lrc = utils.parse(this.aplayer.audio[index].lrc);\n                    }\n                    this.aplayer.lyrics[index] = lrc;\n                    this.updateLyric();\n                }\n            },\n            updateLyric () {\n                let lyric = this.aplayer.lyrics[this.aplayer.index];\n                if (lyric) {\n                    for (let i = 0; i < lyric.length; i++) {\n                        const current = lyric[i];\n                        const next = lyric[i + 1];\n                        if (this.audioStatus.playedTime >= current[0] && (!next || this.audioStatus.playedTime < next[0])) {\n                            this.aplayer.lyricIndex = i;\n                        }\n                    }\n                }\n            },\n            // expose methods\n            init () {\n                this.destroyComponent = false;\n\n                // load localstorage data\n                this.aplayer.storage = JSON.parse(localStorage.getItem(this.aplayer.storageName)) || {};\n                this.aplayer.volume = this.getStorage(\"volume\") || this.aplayer.volume;\n\n                // set audio\n                this.audioRef.preload = this.aplayer.preload;\n                this.audioRef.muted = this.aplayer.muted;\n                this.audioRef.volume = this.aplayer.volume;\n\n                // bind events\n                mediaEvents.forEach(event => {\n                    this.audioRef.addEventListener(event, e => this.$emit(event, e));\n                });\n\n                this.audioRef.addEventListener('play', () => this.audioStatus.playStatus = true);\n                this.audioRef.addEventListener('pause', () => this.audioStatus.playStatus = false);\n                this.audioRef.addEventListener('timeupdate', this.timeupdate);\n                // show audio time: the metadata has loaded or changed\n                this.audioRef.addEventListener('durationchange', this.durationchange);\n                // can seek now\n                this.audioRef.addEventListener('loadedmetadata', this.loadedmetadata);\n                // show audio loaded bar: to inform interested parties of progress downloading the media\n                this.audioRef.addEventListener('canplay', this.canplay);\n                this.audioRef.addEventListener('progress', this.progress);\n                // audio download error: an error occurs\n                this.audioRef.addEventListener('error', this.error);\n                // multiple audio play\n                this.audioRef.addEventListener('ended', this.ended);\n                // audio loading\n                this.audioRef.addEventListener('waiting', this.waiting);\n                // audio loaded\n                this.audioRef.addEventListener('playing', this.playing);\n\n                window.addEventListener(\"resize\", this.resize);\n\n                this.addList(this.audio, true);\n                this.aplayer.autoplay && this.play();\n                this.$emit(\"init\");\n            },\n            play () {\n                this.switchStyle();\n                this.audioStatus.playStatus = true;\n                this.$nextTick(() => {\n                    this.audioStatus.playStatus = true;\n                    if (this.aplayer.mutex) {\n                        if (activeMutexInstance && activeMutexInstance !== this) {\n                            activeMutexInstance.pause();\n                        }\n                        activeMutexInstance = this;\n                    }\n\n                    const playPromise = this.audioRef.play();\n                    if (playPromise) {\n                        playPromise.catch((e) => {\n                            console.warn(e);\n                            if (e.name === 'NotAllowedError') {\n                                this.audioStatus.playStatus = false;\n                            }\n                        });\n                    }\n                });\n            },\n            pause () {\n                this.switchStyle();\n                this.audioStatus.playStatus = false;\n                this.audioRef.pause();\n            },\n            toggle () {\n                !this.audioStatus.playStatus ? this.play() : this.pause();\n            },\n            seek (time) {\n                time = Math.max(time, 0);\n                time = Math.min(time, this.audioStatus.duration);\n                this.audioStatus.playedTime = time;\n                this.audioRef.currentTime = time;\n            },\n            mute () {\n                this.aplayer.muted = !this.aplayer.muted;\n                this.audioRef.muted = !this.audioRef.muted;\n            },\n            setVolume (volume, storage = false) {\n                volume = parseFloat(volume);\n                if (!isNaN(volume)) {\n                    volume = Math.max(volume, 0);\n                    volume = Math.min(volume, 1);\n\n                    this.aplayer.volume = volume;\n                    this.audioRef.volume = volume;\n                    storage && this.setStorage(\"volume\", volume);\n\n                    if (this.aplayer.muted) {\n                        this.mute();\n                    }\n                }\n            },\n            // user set theme > auto cover theme > audio theme > aplayer theme\n            setTheme (color, index = this.aplayer.index) {\n                if (color) {\n                    if (this.aplayer.coverColor[index]) {\n                        this.aplayer.coverColor[index] = color;\n                    } else if (this.aplayer.audio[index]) {\n                        this.aplayer.audio[index].theme = color\n                    }\n                }\n            },\n            setMode (mode = \"normal\") {\n                if (mode != \"normal\" && mode != \"fixed\" && mode != \"mini\") {\n                    return ;\n                }\n                this.aplayer.mode = mode;\n\n                // reset style status\n                setTimeout(() => {\n                    this.resize();\n                }, 0);\n            },\n            setLoop (loop) {\n                if (loop != \"one\" && loop != \"all\" && loop != \"none\") {\n                    return ;\n                }\n                if (this.aplayer.audio.length <= 1 && loop === \"one\") {\n                    loop = \"all\";\n                }\n                this.aplayer.loop = loop;\n            },\n            setOrder (order) {\n                if (order != \"list\" && order != \"random\") {\n                    return ;\n                }\n                this.aplayer.order = order;\n            },\n            setNotice (text, time = 2000, opacity = 0.8) {\n                if (!this.aplayer.noticeSwitch || this.aplayer.mode === \"mini\" || (this.aplayer.mode === \"fixed\" && this.styleStatus.mini)) {\n                    console.warn(text);\n                    return ;\n                }\n                this.aplayer.noticeText = text;\n                this.aplayer.noticeOpacity = opacity;\n                if (this.noticeTimeout) {\n                    clearTimeout(this.noticeTimeout);\n                }\n                this.$emit(\"noticeshow\");\n                if (time) {\n                    this.noticeTimeout = setTimeout(() => {\n                        this.aplayer.noticeOpacity = 0;\n                        this.$emit(\"noticehide\");\n                    }, time);\n                }\n            },\n            skipBack () {\n                this.switchList(this.prevIndex());\n            },\n            skipForward () {\n                this.switchList(this.nextIndex());\n            },\n            destroy () {\n                this.destroyComponent = true;\n                this.$emit(\"destroy\");\n            },\n            showLrc () {\n                this.$emit(\"lrcshow\");\n                this.aplayer.lyricShow = true;\n            },\n            hideLrc () {\n                this.$emit(\"lrchide\");\n                this.aplayer.lyricShow = false;\n            },\n            toggleLrc () {\n                !this.aplayer.lyricShow ? this.showLrc() : this.hideLrc();\n            },\n            showList () {\n                this.$emit(\"listshow\");\n                if (this.aplayer.mode !== \"mini\") {\n                    this.$refs.list.showList();\n                }\n                this.aplayer.listFolded = true;\n            },\n            hideList () {\n                this.$emit(\"listhide\");\n                this.aplayer.listFolded = false;\n            },\n            toggleList () {\n                !this.aplayer.listFolded ? this.showList() : this.hideList();\n            },\n            addList (audios, clear = false) {\n                this.$emit(\"listadd\", audios);\n                if (Object.prototype.toString.call(audios) !== \"[object Array]\") {\n                    audios = [audios];\n                }\n\n                audios.map((item) => {\n                    item.name = item.name || item.title || \"Audio Name\";\n                    item.artist = item.artist || item.author || \"Audio Artist\";\n                    item.cover = item.cover || item.pic;\n                    item.type = item.type || \"normal\";\n                    return item;\n                });\n\n                const isEmpty = this.aplayer.audio.length === 0;\n\n                if (clear) {\n                    this.aplayer.audio = [];\n                }\n                this.aplayer.audio = this.aplayer.audio.concat(audios);\n\n                this.aplayer.randomOrder = utils.randomOrder(this.aplayer.audio.length);\n\n                if (isEmpty) {\n                    let index = 0;\n                    if (this.aplayer.order === \"random\") {\n                        index = this.aplayer.randomOrder[0];\n                    }\n                    this.switchList(index);\n                }\n            },\n            removeList (index) {\n                this.$emit(\"listremove\", nextIndex);\n                this.aplayer.coverColor.splice(index, 1);\n                this.aplayer.randomOrder.splice(this.aplayer.randomOrder.indexOf(this.aplayer.audio.length - 1), 1);\n                if (this.aplayer.audio[index]) {\n                    if (this.aplayer.audio.length > 1) {\n                        this.aplayer.audio.splice(index, 1);\n                        if (index === this.aplayer.index) {\n                            if (this.aplayer.audio[index]) {\n                                this.switchList(index);\n                            } else {\n                                this.switchList(index - 1);\n                            }\n                        }\n                        if (this.aplayer.index > index) {\n                            this.aplayer.index--;\n                        }\n                    } else {\n                        this.clearList();\n                    }\n                }\n                this.aplayer.lyrics.splice(index, 1);\n            },\n            switchList (index) {\n                this.$emit(\"listswitch\", index);\n                if (typeof index !== \"undefined\" && this.aplayer.audio[index]) {\n                    this.aplayer.index = index;\n                    this.coverColor();\n                    if (this.aplayer.mode !== \"mini\") {\n                        smoothScroll(index * 33, 500, null, this.$refs.list.ol);\n                    }\n                    // set audio\n                    this.setAudio(this.aplayer.audio[index]);\n                    // set lyric\n                    this.switchLyric(index);\n                    // set time\n                    this.audioStatus.duration = 0;\n                    this.audioStatus.playedTime = 0;\n                }\n            },\n            clearList () {\n                this.$emit(\"listclear\");\n                this.pause();\n                this.audioRef.src = \"\";\n                this.aplayer.audio = [];\n                this.aplayer.randomOrder = [];\n                this.aplayer.coverColor = [];\n                this.aplayer.lyrics = [];\n                this.aplayer.index = 0;\n                this.aplayer.lyricIndex = 0;\n                this.audioStatus.duration = 0;\n                this.audioStatus.loadedTime = 0;\n                this.audioStatus.playedTime = 0;\n                this.audioStatus.playStatus = false;\n                this.audioStatus.waitingStatus = false;\n                this.audioStatus.disableTimeUpdate = false;\n            },\n            // media events\n            timeupdate () {\n                if (!this.audioStatus.disableTimeUpdate) {\n                    this.audioStatus.playedTime = this.audioRef.currentTime;\n                }\n                this.updateLyric();\n            },\n            durationchange () {\n                this.audioStatus.duration = this.audioRef.duration;\n            },\n            loadedmetadata () {\n                this.seek(0);\n                this.audioStatus.playStatus && this.audioRef.play();\n            },\n            canplay () {\n                this.audioStatus.loadedTime = this.loadedTime();\n            },\n            progress () {\n                this.audioStatus.loadedTime = this.loadedTime();\n            },\n            error () {\n                if (this.aplayer.audio.length > 1) {\n                    let playStatus = this.audioStatus.playStatus;\n                    this.setNotice(\"An audio error has occurred, player will skip forward in 2 seconds.\");\n                    this.skipForwardTimeout && clearTimeout(this.skipForwardTimeout);\n                    this.skipForwardTimeout = setTimeout(() => {\n                        this.skipForward();\n                        playStatus && this.play();\n                    }, 2000);\n                } else if (this.aplayer.audio.length === 1) {\n                    this.setNotice(\"An audio error has occurred.\");\n                }\n            }, \n            ended () {\n                let index = this.aplayer.index;\n                if (this.aplayer.loop === \"none\") {\n                    this.skipForward();\n                    if (this.aplayer.order === \"list\") {\n                        (index < this.aplayer.audio.length - 1) ? this.play() : this.pause();\n                    } else if (this.aplayer.order === \"random\") {\n                        (this.aplayer.randomOrder.indexOf(index) < this.aplayer.randomOrder.length - 1) ? this.play() : this.pause();\n                    }\n                } else if (this.aplayer.loop === \"one\") {\n                    this.switchList(index);\n                    this.play();\n                } else if (this.aplayer.loop === \"all\") {\n                    this.skipForward();\n                    this.play();\n                }\n            },\n            waiting () {\n                this.audioStatus.waitingStatus = true;\n            },\n            playing () {\n                this.audioStatus.waitingStatus = false;\n            },\n            resize () {\n                if (this.aplayer.mode === \"normal\") {\n                    this.styleStatus.narrow = (this.$refs.aplayer.offsetWidth <= 300);\n                    this.styleStatus.timeNarrow = (this.$refs.info.offsetWidth <= 200);\n                } else {\n                    this.styleStatus.narrow = window.innerWidth <= 318;\n                    this.styleStatus.timeNarrow = true;\n                }\n            },\n        },\n        watch: {\n            audio (audio) {\n                this.addList(audio, true);\n            }\n        },\n        mounted () {\n            this.init();\n        },\n        beforeUnmount () {\n            this.clearList();\n\n            this.hls && this.hls.destroy();\n            if (activeMutexInstance === this) activeMutexInstance = null;\n            this.colorThief = null;\n            this.noticeTimeout && clearTimeout(this.noticeTimeout);\n            this.skipForwardTimeout && clearTimeout(this.skipForwardTimeout);\n\n            // remove bind events\n            mediaEvents.forEach(event => {\n                this.audioRef.removeEventListener(event, e => this.$emit(event, e));\n            });\n\n            this.audioRef.removeEventListener('play', () => this.audioStatus.playStatus = true);\n            this.audioRef.removeEventListener('pause', () => this.audioStatus.playStatus = false);\n            this.audioRef.removeEventListener('timeupdate', this.timeupdate);\n            this.audioRef.removeEventListener('durationchange', this.durationchange);\n            this.audioRef.removeEventListener('loadedmetadata', this.loadedmetadata);\n            this.audioRef.removeEventListener('canplay', this.canplay);\n            this.audioRef.removeEventListener('progress', this.progress);\n            this.audioRef.removeEventListener('error', this.error);\n            this.audioRef.removeEventListener('ended', this.ended);\n            this.audioRef.removeEventListener('waiting', this.waiting);\n            this.audioRef.removeEventListener('playing', this.playing);\n            window.removeEventListener(\"resize\", this.resize);\n    },\n};\n    export default aplayer;\n</script>\n<style lang=\"scss\">\n    @import \"./style/index\";\n</style>","import APlayer from \"./APlayer.vue\";\n\nAPlayer.install = (app) => {\n    app.component(APlayer.name, APlayer);\n}\n\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]}