{"version":3,"sources":["jsdelivr-header.js","/npm/lrc-parser@1.0.1/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,MAAM,IAAwB,oBAAX,OAAyB,QAAQ,MAAM,IAAM,KAShE,SAAS,YAAY,GAEnB,OADa,EAAK,OAAO,MAAM,GAAI,GACvB,MAAM,KACpB,CAEA,SAAS,UAAU,GACjB,GAAoB,iBAAT,EACT,MAAM,IAAI,UAAU,wCAItB,IAAI,EAAQ,EAAK,MAAM,KACvB,MAAM,EAAY,uBAEZ,EAAU,EACV,EAAe,IAAI,OAAO,EAAU,OAFvB,OAE2C,QAGxD,EAAQ,GACR,EAAU,GACV,EAAS,CAAC,EAEhB,IAAI,IAAI,EAAI,GAAmC,IAAhC,EAAa,KAAK,EAAM,IAAe,IACpD,EAAM,KAAK,EAAM,IAGnB,EAAM,QAAO,CAAC,EAAQ,KACpB,MAAO,EAAK,GAAS,YAAY,GAEjC,OADA,EAAO,GAAO,EACP,IACN,GAEH,EAAM,OAAO,EAAG,EAAM,QACtB,MAAM,EAAY,IAAI,OAAO,EAAa,OAAS,IAAM,EAAQ,QACjE,EAAQ,EAAM,QAAO,GAAQ,EAAU,KAAK,KAE5C,IAAK,IAAI,EAAI,EAAG,EAAI,EAAM,OAAQ,EAAI,EAAG,IAAK,CAC5C,MAAM,EAAU,EAAa,KAAK,EAAM,IAClC,EAAiB,EAAQ,KAAK,EAAM,EAAI,IAC9C,GAAI,GAAW,EAAgB,CAC7B,MAAO,CAAE,EAAO,GAAQ,GACjB,CAAE,GAAO,EAChB,EAAQ,KAAK,CACX,MAAO,YAAY,GACnB,OACA,IAAK,YAAY,IAErB,CACF,CAGA,OADA,EAAO,QAAU,EACV,CACT,CAIA,SAAS,YAAY,GACnB,EAAS,EAAO,MAAM,KACtB,MAAM,EAAU,SAAS,EAAO,GAAI,IAC9B,EAAU,WAAW,EAAO,IAClC,GAAI,EAAU,EAAG,CAEf,OAAO,YADc,GAAV,EAAe,GACL,QAAQ,GAC/B,CACA,OAAO,CACT,CAEA,OAAO,QAAU","file":"/npm/lrc-parser@1.0.1/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/lrc-parser@1.0.1/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","const EOL = typeof window === 'undefined' ? require('os').EOL : '\\n'\r\n\r\n/**\r\n * \r\n * @param {string} data \r\n * @example [length: 03:36]\r\n * @return {<Array>{string}} ['length', '03:06']\r\n */\r\n\r\nfunction extractInfo(data) {\r\n  const info = data.trim().slice(1, -1) // remove brackets: length: 03:06\r\n  return info.split(': ')\r\n}\r\n\r\nfunction lrcParser(data) {\r\n  if (typeof data !== 'string') {\r\n    throw new TypeError('expect first argument to be a string')\r\n  }\r\n  // split a long stirng into lines by system's end-of-line marker line \\r\\n on Windows\r\n  // or \\n on POSIX\r\n  let lines = data.split(EOL)\r\n  const timeStart = /\\[(\\d*\\:\\d*\\.?\\d*)\\]/ // i.g [00:10.55]\r\n  const scriptText = /(.+)/ // Havana ooh na-na (ayy) \r\n  const timeEnd = timeStart\r\n  const startAndText = new RegExp(timeStart.source + scriptText.source)\r\n\r\n\r\n  const infos = []\r\n  const scripts = []\r\n  const result = {}\r\n\r\n  for(let i = 0; startAndText.test(lines[i]) === false; i++) {\r\n    infos.push(lines[i])\r\n  }\r\n\r\n  infos.reduce((result, info) => {\r\n    const [key, value] = extractInfo(info)\r\n    result[key] = value\r\n    return result\r\n  }, result)\r\n\r\n  lines.splice(0, infos.length) // remove all info lines\r\n  const qualified = new RegExp(startAndText.source + '|' + timeEnd.source)\r\n  lines = lines.filter(line => qualified.test(line))\r\n  \r\n  for (let i = 0, l = lines.length; i < l; i++) {\r\n    const matches = startAndText.exec(lines[i])\r\n    const timeEndMatches = timeEnd.exec(lines[i + 1])  \r\n    if (matches && timeEndMatches) {\r\n      const [, start, text] = matches\r\n      const [, end] = timeEndMatches\r\n      scripts.push({\r\n        start: convertTime(start),\r\n        text,\r\n        end: convertTime(end),\r\n      })\r\n    }\r\n  }\r\n\r\n  result.scripts = scripts\r\n  return result\r\n}\r\n\r\n// convert time string to seconds\r\n// i.g: [01:09.10] -> 69.10\r\nfunction convertTime(string) {\r\n  string = string.split(':');\r\n  const minutes = parseInt(string[0], 10)\r\n  const seconds = parseFloat(string[1])\r\n  if (minutes > 0) {\r\n    const sc = minutes * 60 + seconds\r\n    return parseFloat(sc.toFixed(2))\r\n  }\r\n  return seconds\r\n}\r\n\r\nmodule.exports = lrcParser\r\n"]}