diff --git a/docs/uncompiled/artplayer-plugin-multiple-subtitles/index.js b/docs/uncompiled/artplayer-plugin-multiple-subtitles/index.js
index 6ebd31ffc..483339ed8 100644
--- a/docs/uncompiled/artplayer-plugin-multiple-subtitles/index.js
+++ b/docs/uncompiled/artplayer-plugin-multiple-subtitles/index.js
@@ -158,7 +158,7 @@ function unescape(str) {
const reg = new RegExp(`(${Object.keys(map).join("|")})`, "g");
return str.replace(reg, (tag)=>map[tag] || tag);
}
-async function loadSubtitleAsVtt(option, art) {
+async function loadVtt(option, art) {
const { getExt, srtToVtt, assToVtt } = art.constructor.utils;
const response = await fetch(option.url);
const buffer = await response.arrayBuffer();
@@ -193,14 +193,16 @@ function mergeTrees(trees, subtitles) {
}
return result;
}
+const all = "_ALL_";
function artplayerPluginMultipleSubtitles({ subtitles, onMerge = ()=>null }) {
return async (art)=>{
- const vtts = await Promise.all(subtitles.map((option)=>loadSubtitleAsVtt(option, art)));
const parser = new (0, _parser.WebVTTParser)();
- const trees = vtts.map((vtt)=>parser.parse(vtt, "metadata"));
const seri = new (0, _parser.WebVTTSerializer)();
+ const vtts = await Promise.all(subtitles.map((option)=>loadVtt(option, art)));
+ const trees = vtts.map((vtt)=>parser.parse(vtt, "metadata"));
const tree = onMerge(trees, subtitles) || mergeTrees(trees, subtitles);
- if (tree?.cues?.length) {
+ function setTree(tree) {
+ if (!tree?.cues) return;
const vtt = seri.serialize(tree.cues);
const url = URL.createObjectURL(new Blob([
vtt
@@ -214,12 +216,34 @@ function artplayerPluginMultipleSubtitles({ subtitles, onMerge = ()=>null }) {
type: "vtt",
onVttLoad: unescape
});
- } else throw new Error("No subtitle found");
+ }
+ setTree(tree);
+ let _track = all;
+ return {
+ name: "multipleSubtitles",
+ get track () {
+ return _track;
+ },
+ set track (name){
+ if (name === all || name === "") {
+ _track = all;
+ setTree(tree);
+ } else {
+ const index = subtitles.findIndex((item)=>item.name === name);
+ if (index === -1) throw new Error(`The subtitle "${name}" is not found`);
+ else {
+ _track = name;
+ setTree(trees[index]);
+ }
+ }
+ }
+ };
};
}
artplayerPluginMultipleSubtitles.env = "development";
artplayerPluginMultipleSubtitles.version = "1.0.0";
artplayerPluginMultipleSubtitles.build = "2023-11-24 00:15:21";
+artplayerPluginMultipleSubtitles.all = all;
artplayerPluginMultipleSubtitles.WebVTTParser = (0, _parser.WebVTTParser);
artplayerPluginMultipleSubtitles.WebVTTSerializer = (0, _parser.WebVTTSerializer);
if (typeof window !== "undefined") window["artplayerPluginMultipleSubtitles"] = artplayerPluginMultipleSubtitles;
diff --git a/docs/uncompiled/artplayer-plugin-multiple-subtitles/index.js.map b/docs/uncompiled/artplayer-plugin-multiple-subtitles/index.js.map
index afbdd39a1..ce7839204 100644
--- a/docs/uncompiled/artplayer-plugin-multiple-subtitles/index.js.map
+++ b/docs/uncompiled/artplayer-plugin-multiple-subtitles/index.js.map
@@ -1 +1 @@
-{"mappings":"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","sources":["packages/artplayer-plugin-multiple-subtitles/src/index.js","packages/artplayer-plugin-multiple-subtitles/src/parser.js","node_modules/@parcel/transformer-js/src/esmodule-helpers.js"],"sourcesContent":["import { WebVTTParser, WebVTTSerializer } from './parser';\n\nfunction unescape(str) {\n const map = {\n '&': '&',\n '<': '<',\n '>': '>',\n ''': \"'\",\n '"': '\"',\n };\n const reg = new RegExp(`(${Object.keys(map).join('|')})`, 'g');\n return str.replace(reg, (tag) => map[tag] || tag);\n}\n\nasync function loadSubtitleAsVtt(option, art) {\n const { getExt, srtToVtt, assToVtt } = art.constructor.utils;\n const response = await fetch(option.url);\n const buffer = await response.arrayBuffer();\n const decoder = new TextDecoder(option.encoding || 'utf-8');\n const text = decoder.decode(buffer);\n switch (option.type || getExt(option.url)) {\n case 'srt': {\n return srtToVtt(text);\n }\n case 'ass': {\n return assToVtt(text);\n }\n case 'vtt': {\n return text;\n }\n default:\n return '';\n }\n}\n\nfunction mergeTrees(trees, subtitles) {\n const parser = new WebVTTParser();\n const result = parser.parse('', 'metadata');\n\n for (let i = 0; i < trees.length; i++) {\n const tree = trees[i];\n const option = subtitles[i];\n\n for (let j = 0; j < tree.cues.length; j++) {\n const cue = tree.cues[j];\n for (let k = 0; k < cue.tree.children.length; k++) {\n const children = cue.tree.children[k];\n children.value = `
${children.value}
`;\n }\n }\n\n if (result.cues.length === 0) {\n result.cues = tree.cues;\n } else {\n for (let l = 0; l < result.cues.length; l++) {\n result.cues[l].tree.children.push(...(tree.cues[l]?.tree?.children || []));\n }\n }\n }\n\n return result;\n}\n\nexport default function artplayerPluginMultipleSubtitles({ subtitles, onMerge = () => null }) {\n return async (art) => {\n const vtts = await Promise.all(subtitles.map((option) => loadSubtitleAsVtt(option, art)));\n const parser = new WebVTTParser();\n const trees = vtts.map((vtt) => parser.parse(vtt, 'metadata'));\n const seri = new WebVTTSerializer();\n const tree = onMerge(trees, subtitles) || mergeTrees(trees, subtitles);\n if (tree?.cues?.length) {\n const vtt = seri.serialize(tree.cues);\n const url = URL.createObjectURL(new Blob([vtt], { type: 'text/vtt' }));\n art.option.subtitle.escape = false;\n art.subtitle.init({\n ...art.option.subtitle,\n url,\n type: 'vtt',\n onVttLoad: unescape,\n });\n } else {\n throw new Error('No subtitle found');\n }\n };\n}\n\nartplayerPluginMultipleSubtitles.env = process.env.NODE_ENV;\nartplayerPluginMultipleSubtitles.version = process.env.APP_VER;\nartplayerPluginMultipleSubtitles.build = process.env.BUILD_DATE;\nartplayerPluginMultipleSubtitles.WebVTTParser = WebVTTParser;\nartplayerPluginMultipleSubtitles.WebVTTSerializer = WebVTTSerializer;\n\nif (typeof window !== 'undefined') {\n window['artplayerPluginMultipleSubtitles'] = artplayerPluginMultipleSubtitles;\n}\n","// Any copyright is dedicated to the Public Domain.\n// http://creativecommons.org/publicdomain/zero/1.0/\n\n// Not intended to be fast, but if you can make it faster, please help out!\n\n/* eslint-disable */\n(function () {\n var defaultCueSettings = {\n direction: 'horizontal',\n snapToLines: true,\n linePosition: 'auto',\n lineAlign: 'start',\n textPosition: 'auto',\n positionAlign: 'auto',\n size: 100,\n alignment: 'center',\n };\n\n var WebVTTParser = function (entities) {\n if (!entities) {\n entities = {\n '&': '&',\n '<': '<',\n '>': '>',\n '&lrm': '\\u200e',\n '&rlm': '\\u200f',\n ' ': '\\u00A0',\n };\n }\n this.entities = entities;\n this.parse = function (input, mode) {\n // global search and replace for \\0\n input = input.replace(/\\0/g, '\\uFFFD');\n var NEWLINE = /\\r\\n|\\r|\\n/,\n startTime = Date.now(),\n linePos = 0,\n lines = input.split(NEWLINE),\n alreadyCollected = false,\n styles = [],\n cues = [],\n errors = [];\n function err(message, col) {\n errors.push({ message: message, line: linePos + 1, col: col });\n }\n\n var line = lines[linePos],\n lineLength = line.length,\n signature = 'WEBVTT',\n bom = 0,\n signature_length = signature.length;\n\n /* Byte order mark */\n if (line[0] === '\\ufeff') {\n bom = 1;\n signature_length += 1;\n }\n /* SIGNATURE */\n if (\n lineLength < signature_length ||\n line.indexOf(signature) !== 0 + bom ||\n (lineLength > signature_length && line[signature_length] !== ' ' && line[signature_length] !== '\\t')\n ) {\n err('No valid signature. (File needs to start with \"WEBVTT\".)');\n }\n\n linePos++;\n\n /* HEADER */\n while (lines[linePos] != '' && lines[linePos] != undefined) {\n err('No blank line after the signature.');\n if (lines[linePos].indexOf('-->') != -1) {\n alreadyCollected = true;\n break;\n }\n linePos++;\n }\n\n /* CUE LOOP */\n while (lines[linePos] != undefined) {\n var cue;\n while (!alreadyCollected && lines[linePos] == '') {\n linePos++;\n }\n if (!alreadyCollected && lines[linePos] == undefined) break;\n\n /* CUE CREATION */\n cue = Object.assign({}, defaultCueSettings, {\n id: '',\n startTime: 0,\n endTime: 0,\n pauseOnExit: false,\n direction: 'horizontal',\n snapToLines: true,\n linePosition: 'auto',\n lineAlign: 'start',\n textPosition: 'auto',\n positionAlign: 'auto',\n size: 100,\n alignment: 'center',\n text: '',\n tree: null,\n });\n\n var parseTimings = true;\n\n if (lines[linePos].indexOf('-->') == -1) {\n cue.id = lines[linePos];\n\n /* COMMENTS\n Not part of the specification's parser as these would just be ignored. However,\n we want them to be conforming and not get \"Cue identifier cannot be standalone\".\n */\n if (/^NOTE($|[ \\t])/.test(cue.id)) {\n // .startsWith fails in Chrome\n linePos++;\n while (lines[linePos] != '' && lines[linePos] != undefined) {\n if (lines[linePos].indexOf('-->') != -1) err('Cannot have timestamp in a comment.');\n linePos++;\n }\n continue;\n }\n\n /* STYLES */\n if (/^STYLE($|[ \\t])/.test(cue.id)) {\n var style = [];\n var invalid = false;\n linePos++;\n while (lines[linePos] != '' && lines[linePos] != undefined) {\n if (lines[linePos].indexOf('-->') != -1) {\n err('Cannot have timestamp in a style block.');\n invalid = true;\n }\n style.push(lines[linePos]);\n linePos++;\n }\n if (cues.length) {\n err('Style blocks cannot appear after the first cue.');\n continue;\n }\n if (!invalid) {\n styles.push(style.join('\\n'));\n }\n continue;\n }\n\n linePos++;\n\n if (lines[linePos] == '' || lines[linePos] == undefined) {\n err('Cue identifier cannot be standalone.');\n continue;\n }\n\n if (lines[linePos].indexOf('-->') == -1) {\n parseTimings = false;\n err('Cue identifier needs to be followed by timestamp.');\n continue;\n }\n }\n\n /* TIMINGS */\n alreadyCollected = false;\n var timings = new WebVTTCueTimingsAndSettingsParser(lines[linePos], err);\n var previousCueStart = 0;\n if (cues.length > 0) {\n previousCueStart = cues[cues.length - 1].startTime;\n }\n if (parseTimings && !timings.parse(cue, previousCueStart)) {\n /* BAD CUE */\n\n cue = null;\n linePos++;\n\n /* BAD CUE LOOP */\n while (lines[linePos] != '' && lines[linePos] != undefined) {\n if (lines[linePos].indexOf('-->') != -1) {\n alreadyCollected = true;\n break;\n }\n linePos++;\n }\n continue;\n }\n linePos++;\n\n /* CUE TEXT LOOP */\n while (lines[linePos] != '' && lines[linePos] != undefined) {\n if (lines[linePos].indexOf('-->') != -1) {\n err('Blank line missing before cue.');\n alreadyCollected = true;\n break;\n }\n if (cue.text != '') cue.text += '\\n';\n cue.text += lines[linePos];\n linePos++;\n }\n\n /* CUE TEXT PROCESSING */\n var cuetextparser = new WebVTTCueTextParser(cue.text, err, mode, entities);\n cue.tree = cuetextparser.parse(cue.startTime, cue.endTime);\n cues.push(cue);\n }\n cues.sort(function (a, b) {\n if (a.startTime < b.startTime) return -1;\n if (a.startTime > b.startTime) return 1;\n if (a.endTime > b.endTime) return -1;\n if (a.endTime < b.endTime) return 1;\n return 0;\n });\n /* END */\n return { cues: cues, errors: errors, time: Date.now() - startTime, styles: styles };\n };\n };\n\n var WebVTTCueTimingsAndSettingsParser = function (line, errorHandler) {\n var SPACE = /[\\u0020\\t\\f]/,\n NOSPACE = /[^\\u0020\\t\\f]/,\n line = line,\n pos = 0,\n err = function (message) {\n errorHandler(message, pos + 1);\n },\n spaceBeforeSetting = true;\n function skip(pattern) {\n while (line[pos] != undefined && pattern.test(line[pos])) {\n pos++;\n }\n }\n function collect(pattern) {\n var str = '';\n while (line[pos] != undefined && pattern.test(line[pos])) {\n str += line[pos];\n pos++;\n }\n return str;\n }\n /* http://dev.w3.org/html5/webvtt/#collect-a-webvtt-timestamp */\n function timestamp() {\n var units = 'minutes',\n val1,\n val2,\n val3,\n val4;\n // 3\n if (line[pos] == undefined) {\n err('No timestamp found.');\n return;\n }\n // 4\n if (!/\\d/.test(line[pos])) {\n err('Timestamp must start with a character in the range 0-9.');\n return;\n }\n // 5-7\n val1 = collect(/\\d/);\n if (val1.length > 2 || parseInt(val1, 10) > 59) {\n units = 'hours';\n }\n // 8\n if (line[pos] != ':') {\n err('No time unit separator found.');\n return;\n }\n pos++;\n // 9-11\n val2 = collect(/\\d/);\n if (val2.length != 2) {\n err('Must be exactly two digits.');\n return;\n }\n // 12\n if (units == 'hours' || line[pos] == ':') {\n if (line[pos] != ':') {\n err('No seconds found or minutes is greater than 59.');\n return;\n }\n pos++;\n val3 = collect(/\\d/);\n if (val3.length != 2) {\n err('Must be exactly two digits.');\n return;\n }\n } else {\n if (val1.length != 2) {\n err('Must be exactly two digits.');\n return;\n }\n val3 = val2;\n val2 = val1;\n val1 = '0';\n }\n // 13\n if (line[pos] != '.') {\n err('No decimal separator (\".\") found.');\n return;\n }\n pos++;\n // 14-16\n val4 = collect(/\\d/);\n if (val4.length != 3) {\n err('Milliseconds must be given in three digits.');\n return;\n }\n // 17\n if (parseInt(val2, 10) > 59) {\n err('You cannot have more than 59 minutes.');\n return;\n }\n if (parseInt(val3, 10) > 59) {\n err('You cannot have more than 59 seconds.');\n return;\n }\n return (\n parseInt(val1, 10) * 60 * 60 + parseInt(val2, 10) * 60 + parseInt(val3, 10) + parseInt(val4, 10) / 1000\n );\n }\n\n /* http://dev.w3.org/html5/webvtt/#parse-the-webvtt-settings */\n function parseSettings(input, cue) {\n var settings = input.split(SPACE),\n seen = [];\n for (var i = 0; i < settings.length; i++) {\n if (settings[i] == '') continue;\n\n var index = settings[i].indexOf(':'),\n setting = settings[i].slice(0, index),\n value = settings[i].slice(index + 1);\n\n if (seen.indexOf(setting) != -1) {\n err('Duplicate setting.');\n }\n seen.push(setting);\n\n if (value == '') {\n err('No value for setting defined.');\n return;\n }\n\n if (setting == 'vertical') {\n // writing direction\n if (value != 'rl' && value != 'lr') {\n err(\"Writing direction can only be set to 'rl' or 'rl'.\");\n continue;\n }\n cue.direction = value;\n } else if (setting == 'line') {\n // line position and optionally line alignment\n if (/,/.test(value)) {\n var comp = value.split(',');\n value = comp[0];\n var lineAlign = comp[1];\n }\n if (!/^[-\\d](\\d*)(\\.\\d+)?%?$/.test(value)) {\n err('Line position takes a number or percentage.');\n continue;\n }\n if (value.indexOf('-', 1) != -1) {\n err(\"Line position can only have '-' at the start.\");\n continue;\n }\n if (value.indexOf('%') != -1 && value.indexOf('%') != value.length - 1) {\n err(\"Line position can only have '%' at the end.\");\n continue;\n }\n if (value[0] == '-' && value[value.length - 1] == '%') {\n err('Line position cannot be a negative percentage.');\n continue;\n }\n var numVal = value;\n var isPercent = false;\n if (value[value.length - 1] == '%') {\n isPercent = true;\n numVal = value.slice(0, value.length - 1);\n if (parseInt(value, 10) > 100) {\n err('Line position cannot be >100%.');\n continue;\n }\n }\n if (numVal === '' || isNaN(numVal) || !isFinite(numVal)) {\n err('Line position needs to be a number');\n continue;\n }\n if (lineAlign !== undefined) {\n if (!['start', 'center', 'end'].includes(lineAlign)) {\n err('Line alignment needs to be one of start, center or end');\n continue;\n }\n cue.lineAlign = lineAlign;\n }\n cue.snapToLines = !isPercent;\n cue.linePosition = parseFloat(numVal);\n if (parseFloat(numVal).toString() !== numVal) {\n cue.nonSerializable = true;\n }\n } else if (setting == 'position') {\n // text position and optional positionAlign\n if (/,/.test(value)) {\n var comp = value.split(',');\n value = comp[0];\n var positionAlign = comp[1];\n }\n if (value[value.length - 1] != '%') {\n err('Text position must be a percentage.');\n continue;\n }\n if (parseInt(value, 10) > 100 || parseInt(value, 10) < 0) {\n err('Text position needs to be between 0 and 100%.');\n continue;\n }\n numVal = value.slice(0, value.length - 1);\n if (numVal === '' || isNaN(numVal) || !isFinite(numVal)) {\n err('Line position needs to be a number');\n continue;\n }\n if (positionAlign !== undefined) {\n if (!['line-left', 'center', 'line-right'].includes(positionAlign)) {\n err('Position alignment needs to be one of line-left, center or line-right');\n continue;\n }\n cue.positionAlign = positionAlign;\n }\n cue.textPosition = parseFloat(numVal);\n } else if (setting == 'size') {\n // size\n if (value[value.length - 1] != '%') {\n err('Size must be a percentage.');\n continue;\n }\n if (parseInt(value, 10) > 100) {\n err('Size cannot be >100%.');\n continue;\n }\n var size = value.slice(0, value.length - 1);\n if (size === undefined || size === '' || isNaN(size)) {\n err('Size needs to be a number');\n size = 100;\n continue;\n } else {\n size = parseFloat(size);\n if (size < 0 || size > 100) {\n err('Size needs to be between 0 and 100%.');\n continue;\n }\n }\n cue.size = size;\n } else if (setting == 'align') {\n // alignment\n var alignValues = ['start', 'center', 'end', 'left', 'right'];\n if (alignValues.indexOf(value) == -1) {\n err('Alignment can only be set to one of ' + alignValues.join(', ') + '.');\n continue;\n }\n cue.alignment = value;\n } else {\n err('Invalid setting.');\n }\n }\n }\n\n this.parse = function (cue, previousCueStart) {\n skip(SPACE);\n cue.startTime = timestamp();\n if (cue.startTime == undefined) {\n return;\n }\n if (cue.startTime < previousCueStart) {\n err('Start timestamp is not greater than or equal to start timestamp of previous cue.');\n }\n if (NOSPACE.test(line[pos])) {\n err(\"Timestamp not separated from '-->' by whitespace.\");\n }\n skip(SPACE);\n // 6-8\n if (line[pos] != '-') {\n err('No valid timestamp separator found.');\n return;\n }\n pos++;\n if (line[pos] != '-') {\n err('No valid timestamp separator found.');\n return;\n }\n pos++;\n if (line[pos] != '>') {\n err('No valid timestamp separator found.');\n return;\n }\n pos++;\n if (NOSPACE.test(line[pos])) {\n err(\"'-->' not separated from timestamp by whitespace.\");\n }\n skip(SPACE);\n cue.endTime = timestamp();\n if (cue.endTime == undefined) {\n return;\n }\n if (cue.endTime <= cue.startTime) {\n err('End timestamp is not greater than start timestamp.');\n }\n\n if (NOSPACE.test(line[pos])) {\n spaceBeforeSetting = false;\n }\n skip(SPACE);\n parseSettings(line.substring(pos), cue);\n return true;\n };\n this.parseTimestamp = function () {\n var ts = timestamp();\n if (line[pos] != undefined) {\n err('Timestamp must not have trailing characters.');\n return;\n }\n return ts;\n };\n };\n\n var WebVTTCueTextParser = function (line, errorHandler, mode, entities) {\n this.entities = entities;\n var self = this;\n var line = line,\n pos = 0,\n err = function (message) {\n if (mode == 'metadata') return;\n errorHandler(message, pos + 1);\n };\n\n this.parse = function (cueStart, cueEnd) {\n function removeCycles(tree) {\n const cyclelessTree = { ...tree };\n if (tree.children) {\n cyclelessTree.children = tree.children.map(removeCycles);\n }\n if (cyclelessTree.parent) {\n delete cyclelessTree.parent;\n }\n return cyclelessTree;\n }\n\n var result = { children: [] },\n current = result,\n timestamps = [];\n\n function attach(token) {\n current.children.push({\n type: 'object',\n name: token[1],\n classes: token[2],\n children: [],\n parent: current,\n });\n current = current.children[current.children.length - 1];\n }\n function inScope(name) {\n var node = current;\n while (node) {\n if (node.name == name) return true;\n node = node.parent;\n }\n return;\n }\n\n while (line[pos] != undefined) {\n var token = nextToken();\n if (token[0] == 'text') {\n current.children.push({ type: 'text', value: token[1], parent: current });\n } else if (token[0] == 'start tag') {\n if (mode == 'chapters') err('Start tags not allowed in chapter title text.');\n var name = token[1];\n if (name != 'v' && name != 'lang' && token[3] != '') {\n err('Only and can have an annotation.');\n }\n if (name == 'c' || name == 'i' || name == 'b' || name == 'u' || name == 'ruby') {\n attach(token);\n } else if (name == 'rt' && current.name == 'ruby') {\n attach(token);\n } else if (name == 'v') {\n if (inScope('v')) {\n err(' cannot be nested inside itself.');\n }\n attach(token);\n current.value = token[3]; // annotation\n if (!token[3]) {\n err(' requires an annotation.');\n }\n } else if (name == 'lang') {\n attach(token);\n current.value = token[3]; // language\n } else {\n err('Incorrect start tag.');\n }\n } else if (token[0] == 'end tag') {\n if (mode == 'chapters') err('End tags not allowed in chapter title text.');\n // XXX check content\n if (token[1] == current.name) {\n current = current.parent;\n } else if (token[1] == 'ruby' && current.name == 'rt') {\n current = current.parent.parent;\n } else {\n err('Incorrect end tag.');\n }\n } else if (token[0] == 'timestamp') {\n if (mode == 'chapters') err('Timestamp not allowed in chapter title text.');\n var timings = new WebVTTCueTimingsAndSettingsParser(token[1], err),\n timestamp = timings.parseTimestamp();\n if (timestamp != undefined) {\n if (timestamp <= cueStart || timestamp >= cueEnd) {\n err('Timestamp must be between start timestamp and end timestamp.');\n }\n if (timestamps.length > 0 && timestamps[timestamps.length - 1] >= timestamp) {\n err('Timestamp must be greater than any previous timestamp.');\n }\n current.children.push({ type: 'timestamp', value: timestamp, parent: current });\n timestamps.push(timestamp);\n }\n }\n }\n while (current.parent) {\n if (current.name != 'v') {\n err('Required end tag missing.');\n }\n current = current.parent;\n }\n return removeCycles(result);\n };\n\n function nextToken() {\n var state = 'data',\n result = '',\n buffer = '',\n classes = [];\n while (line[pos - 1] != undefined || pos == 0) {\n var c = line[pos];\n if (state == 'data') {\n if (c == '&') {\n buffer = c;\n state = 'escape';\n } else if (c == '<' && result == '') {\n state = 'tag';\n } else if (c == '<' || c == undefined) {\n return ['text', result];\n } else {\n result += c;\n }\n } else if (state == 'escape') {\n if (c == '<' || c == undefined) {\n err('Incorrect escape.');\n let m;\n if ((m = buffer.match(/^([0-9]+)$/))) {\n result += String.fromCharCode(m[1]);\n } else {\n if (self.entities[buffer]) {\n result += self.entities[buffer];\n } else {\n result += buffer;\n }\n }\n return ['text', result];\n } else if (c == '&') {\n err('Incorrect escape.');\n result += buffer;\n buffer = c;\n } else if (/[a-z#0-9]/i.test(c)) {\n buffer += c;\n } else if (c == ';') {\n let m;\n if ((m = buffer.match(/^(x?[0-9]+)$/))) {\n // we prepend \"0\" so that x20 be interpreted as hexadecim (0x20)\n result += String.fromCharCode('0' + m[1]);\n } else if (self.entities[buffer + c]) {\n result += self.entities[buffer + c];\n } else if ((m = Object.keys(entities).find((n) => buffer.startsWith(n)))) {\n // partial match\n result += self.entities[m] + buffer.slice(m.length) + c;\n } else {\n err('Incorrect escape.');\n result += buffer + ';';\n }\n state = 'data';\n } else {\n err('Incorrect escape.');\n result += buffer + c;\n state = 'data';\n }\n } else if (state == 'tag') {\n if (c == '\\t' || c == '\\n' || c == '\\f' || c == ' ') {\n state = 'start tag annotation';\n } else if (c == '.') {\n state = 'start tag class';\n } else if (c == '/') {\n state = 'end tag';\n } else if (/\\d/.test(c)) {\n result = c;\n state = 'timestamp tag';\n } else if (c == '>' || c == undefined) {\n if (c == '>') {\n pos++;\n }\n return ['start tag', '', [], ''];\n } else {\n result = c;\n state = 'start tag';\n }\n } else if (state == 'start tag') {\n if (c == '\\t' || c == '\\f' || c == ' ') {\n state = 'start tag annotation';\n } else if (c == '\\n') {\n buffer = c;\n state = 'start tag annotation';\n } else if (c == '.') {\n state = 'start tag class';\n } else if (c == '>' || c == undefined) {\n if (c == '>') {\n pos++;\n }\n return ['start tag', result, [], ''];\n } else {\n result += c;\n }\n } else if (state == 'start tag class') {\n if (c == '\\t' || c == '\\f' || c == ' ') {\n if (buffer) {\n classes.push(buffer);\n }\n buffer = '';\n state = 'start tag annotation';\n } else if (c == '\\n') {\n if (buffer) {\n classes.push(buffer);\n }\n buffer = c;\n state = 'start tag annotation';\n } else if (c == '.') {\n if (buffer) {\n classes.push(buffer);\n }\n buffer = '';\n } else if (c == '>' || c == undefined) {\n if (c == '>') {\n pos++;\n }\n if (buffer) {\n classes.push(buffer);\n }\n return ['start tag', result, classes, ''];\n } else {\n buffer += c;\n }\n } else if (state == 'start tag annotation') {\n if (c == '>' || c == undefined) {\n if (c == '>') {\n pos++;\n }\n buffer = buffer\n .split(/[\\u0020\\t\\f\\r\\n]+/)\n .filter(function (item) {\n if (item) return true;\n })\n .join(' ');\n return ['start tag', result, classes, buffer];\n } else {\n buffer += c;\n }\n } else if (state == 'end tag') {\n if (c == '>' || c == undefined) {\n if (c == '>') {\n pos++;\n }\n return ['end tag', result];\n } else {\n result += c;\n }\n } else if (state == 'timestamp tag') {\n if (c == '>' || c == undefined) {\n if (c == '>') {\n pos++;\n }\n return ['timestamp', result];\n } else {\n result += c;\n }\n } else {\n err('Never happens.'); // The joke is it might.\n }\n // 8\n pos++;\n }\n }\n };\n\n var WebVTTSerializer = function () {\n function serializeTimestamp(seconds) {\n const ms = ('00' + (seconds - Math.floor(seconds)).toFixed(3) * 1000).slice(-3);\n let h = 0,\n m = 0,\n s = 0;\n if (seconds >= 3600) {\n h = Math.floor(seconds / 3600);\n }\n m = Math.floor((seconds - 3600 * h) / 60);\n s = Math.floor(seconds - 3600 * h - 60 * m);\n return (h ? h + ':' : '') + ('' + m).padStart(2, '0') + ':' + ('' + s).padStart(2, '0') + '.' + ms;\n }\n function serializeCueSettings(cue) {\n var result = '';\n const nonDefaultSettings = Object.keys(defaultCueSettings).filter((s) => cue[s] !== defaultCueSettings[s]);\n if (nonDefaultSettings.includes('direction')) {\n result += ' vertical:' + cue.direction;\n }\n if (nonDefaultSettings.includes('alignment')) {\n result += ' align:' + cue.alignment;\n }\n if (nonDefaultSettings.includes('size')) {\n result += ' size:' + cue.size + '%';\n }\n if (nonDefaultSettings.includes('lineAlign') || nonDefaultSettings.includes('linePosition')) {\n result +=\n ' line:' +\n cue.linePosition +\n (cue.snapToLines ? '' : '%') +\n (cue.lineAlign && cue.lineAlign != defaultCueSettings.lineAlign ? ',' + cue.lineAlign : '');\n }\n if (nonDefaultSettings.includes('textPosition') || nonDefaultSettings.includes('positionAlign')) {\n result +=\n ' position:' +\n cue.textPosition +\n '%' +\n (cue.positionAlign && cue.positionAlign !== defaultCueSettings.positionAlign\n ? ',' + cue.positionAlign\n : '');\n }\n return result;\n }\n function serializeTree(tree) {\n var result = '';\n for (var i = 0; i < tree.length; i++) {\n var node = tree[i];\n if (node.type == 'text') {\n result += node.value.replace(/&/g, '&').replace(//g, '>');\n } else if (node.type == 'object') {\n result += '<' + node.name;\n if (node.classes) {\n for (var y = 0; y < node.classes.length; y++) {\n result += '.' + node.classes[y];\n }\n }\n if (node.value) {\n result += ' ' + node.value;\n }\n result += '>';\n if (node.children) result += serializeTree(node.children);\n result += '' + node.name + '>';\n } else if (node.type == 'timestamp') {\n result += '<' + serializeTimestamp(node.value) + '>';\n } else {\n result += '<' + node.value + '>';\n }\n }\n return result;\n }\n function serializeCue(cue) {\n return (\n (cue.id !== undefined ? cue.id + '\\n' : '') +\n serializeTimestamp(cue.startTime) +\n ' --> ' +\n serializeTimestamp(cue.endTime) +\n serializeCueSettings(cue) +\n '\\n' +\n serializeTree(cue.tree.children) +\n '\\n\\n'\n );\n }\n function serializeStyle(style) {\n return 'STYLE\\n' + style + '\\n\\n';\n }\n this.serialize = function (cues, styles) {\n var result = 'WEBVTT\\n\\n';\n if (styles) {\n for (var i = 0; i < styles.length; i++) {\n result += serializeStyle(styles[i]);\n }\n }\n for (var i = 0; i < cues.length; i++) {\n result += serializeCue(cues[i]);\n }\n return result;\n };\n };\n\n function exportify(object) {\n object.WebVTTParser = WebVTTParser;\n object.WebVTTCueTimingsAndSettingsParser = WebVTTCueTimingsAndSettingsParser;\n object.WebVTTCueTextParser = WebVTTCueTextParser;\n object.WebVTTSerializer = WebVTTSerializer;\n }\n if (typeof window !== 'undefined') exportify(window);\n if (typeof exports !== 'undefined') exportify(exports);\n})();\n","exports.interopDefault = function (a) {\n return a && a.__esModule ? a : {default: a};\n};\n\nexports.defineInteropFlag = function (a) {\n Object.defineProperty(a, '__esModule', {value: true});\n};\n\nexports.exportAll = function (source, dest) {\n Object.keys(source).forEach(function (key) {\n if (key === 'default' || key === '__esModule' || dest.hasOwnProperty(key)) {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function () {\n return source[key];\n },\n });\n });\n\n return dest;\n};\n\nexports.export = function (dest, destName, get) {\n Object.defineProperty(dest, destName, {\n enumerable: true,\n get: get,\n });\n};\n"],"names":[],"version":3,"file":"index.js.map","sourceRoot":"../../../"}
\ No newline at end of file
+{"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6CAgEwB;AAhExB;AAEA,SAAS,SAAS,GAAG;IACjB,MAAM,MAAM;QACR,SAAS;QACT,QAAQ;QACR,QAAQ;QACR,SAAS;QACT,UAAU;IACd;IACA,MAAM,MAAM,IAAI,OAAO,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;IAC1D,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,MAAQ,GAAG,CAAC,IAAI,IAAI;AACjD;AAEA,eAAe,QAAQ,MAAM,EAAE,GAAG;IAC9B,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,WAAW,CAAC,KAAK;IAC5D,MAAM,WAAW,MAAM,MAAM,OAAO,GAAG;IACvC,MAAM,SAAS,MAAM,SAAS,WAAW;IACzC,MAAM,UAAU,IAAI,YAAY,OAAO,QAAQ,IAAI;IACnD,MAAM,OAAO,QAAQ,MAAM,CAAC;IAC5B,OAAQ,OAAO,IAAI,IAAI,OAAO,OAAO,GAAG;QACpC,KAAK;YACD,OAAO,SAAS;QAEpB,KAAK;YACD,OAAO,SAAS;QAEpB,KAAK;YACD,OAAO;QAEX;YACI,OAAO;IACf;AACJ;AAEA,SAAS,WAAW,KAAK,EAAE,SAAS;IAChC,MAAM,SAAS,IAAI,CAAA,GAAA,oBAAY,AAAD;IAC9B,MAAM,SAAS,OAAO,KAAK,CAAC,IAAI;IAEhC,IAAK,IAAI,IAAI,GAAG,IAAI,MAAM,MAAM,EAAE,IAAK;QACnC,MAAM,OAAO,KAAK,CAAC,EAAE;QACrB,MAAM,SAAS,SAAS,CAAC,EAAE;QAE3B,IAAK,IAAI,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE,IAAK;YACvC,MAAM,MAAM,KAAK,IAAI,CAAC,EAAE;YACxB,IAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAK;gBAC/C,MAAM,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE;gBACrC,SAAS,KAAK,GAAG,CAAC,yBAAyB,EAAE,OAAO,IAAI,CAAC,EAAE,EAAE,SAAS,KAAK,CAAC,MAAM,CAAC;YACvF;QACJ;QAEA,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,GACvB,OAAO,IAAI,GAAG,KAAK,IAAI;aAEvB,IAAK,IAAI,IAAI,GAAG,IAAI,OAAO,IAAI,CAAC,MAAM,EAAE,IACpC,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAK,KAAK,IAAI,CAAC,EAAE,EAAE,MAAM,YAAY,EAAE;IAGpF;IAEA,OAAO;AACX;AAEA,MAAM,MAAM;AACG,SAAS,iCAAiC,EAAE,SAAS,EAAE,UAAU,IAAM,IAAI,EAAE;IACxF,OAAO,OAAO;QACV,MAAM,SAAS,IAAI,CAAA,GAAA,oBAAY,AAAD;QAC9B,MAAM,OAAO,IAAI,CAAA,GAAA,wBAAgB,AAAD;QAEhC,MAAM,OAAO,MAAM,QAAQ,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,SAAW,QAAQ,QAAQ;QACzE,MAAM,QAAQ,KAAK,GAAG,CAAC,CAAC,MAAQ,OAAO,KAAK,CAAC,KAAK;QAClD,MAAM,OAAO,QAAQ,OAAO,cAAc,WAAW,OAAO;QAE5D,SAAS,QAAQ,IAAI;YACjB,IAAI,CAAC,MAAM,MAAM;YACjB,MAAM,MAAM,KAAK,SAAS,CAAC,KAAK,IAAI;YACpC,MAAM,MAAM,IAAI,eAAe,CAAC,IAAI,KAAK;gBAAC;aAAI,EAAE;gBAAE,MAAM;YAAW;YACnE,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG;YAC7B,IAAI,QAAQ,CAAC,IAAI,CAAC;gBACd,GAAG,IAAI,MAAM,CAAC,QAAQ;gBACtB;gBACA,MAAM;gBACN,WAAW;YACf;QACJ;QAEA,QAAQ;QACR,IAAI,SAAS;QAEb,OAAO;YACH,MAAM;YACN,IAAI,SAAQ;gBACR,OAAO;YACX;YACA,IAAI,OAAM,KAAM;gBACZ,IAAI,SAAS,OAAO,SAAS,IAAI;oBAC7B,SAAS;oBACT,QAAQ;gBACZ,OAAO;oBACH,MAAM,QAAQ,UAAU,SAAS,CAAC,CAAC,OAAS,KAAK,IAAI,KAAK;oBAC1D,IAAI,UAAU,IACV,MAAM,IAAI,MAAM,CAAC,cAAc,EAAE,KAAK,cAAc,CAAC;yBAClD;wBACH,SAAS;wBACT,QAAQ,KAAK,CAAC,MAAM;oBACxB;gBACJ;YACJ;QACJ;IACJ;AACJ;AAEA,iCAAiC,GAAG;AACpC,iCAAiC,OAAO;AACxC,iCAAiC,KAAK;AAEtC,iCAAiC,GAAG,GAAG;AACvC,iCAAiC,YAAY,GAAG,CAAA,GAAA,oBAAY,AAAD;AAC3D,iCAAiC,gBAAgB,GAAG,CAAA,GAAA,wBAAgB,AAAD;AAEnE,IAAI,OAAO,WAAW,aAClB,MAAM,CAAC,mCAAmC,GAAG;;;ACzHjD,mDAAmD;AACnD,oDAAoD;AAEpD,2EAA2E;AAE3E,kBAAkB,GACjB,CAAA;IACG,IAAI,qBAAqB;QACrB,WAAW;QACX,aAAa;QACb,cAAc;QACd,WAAW;QACX,cAAc;QACd,eAAe;QACf,MAAM;QACN,WAAW;IACf;IAEA,IAAI,eAAe,SAAU,QAAQ;QACjC,IAAI,CAAC,UACD,WAAW;YACP,QAAQ;YACR,OAAO;YACP,OAAO;YACP,QAAQ;YACR,QAAQ;YACR,SAAS;QACb;QAEJ,IAAI,CAAC,QAAQ,GAAG;QAChB,IAAI,CAAC,KAAK,GAAG,SAAU,KAAK,EAAE,IAAI;YAC9B,mCAAmC;YACnC,QAAQ,MAAM,OAAO,CAAC,OAAO;YAC7B,IAAI,UAAU,cACV,YAAY,KAAK,GAAG,IACpB,UAAU,GACV,QAAQ,MAAM,KAAK,CAAC,UACpB,mBAAmB,OACnB,SAAS,EAAE,EACX,OAAO,EAAE,EACT,SAAS,EAAE;YACf,SAAS,IAAI,OAAO,EAAE,GAAG;gBACrB,OAAO,IAAI,CAAC;oBAAE,SAAS;oBAAS,MAAM,UAAU;oBAAG,KAAK;gBAAI;YAChE;YAEA,IAAI,OAAO,KAAK,CAAC,QAAQ,EACrB,aAAa,KAAK,MAAM,EACxB,YAAY,UACZ,MAAM,GACN,mBAAmB,UAAU,MAAM;YAEvC,mBAAmB,GACnB,IAAI,IAAI,CAAC,EAAE,KAAK,UAAU;gBACtB,MAAM;gBACN,oBAAoB;YACxB;YACA,aAAa,GACb,IACI,aAAa,oBACb,KAAK,OAAO,CAAC,eAAe,IAAI,OAC/B,aAAa,oBAAoB,IAAI,CAAC,iBAAiB,KAAK,OAAO,IAAI,CAAC,iBAAiB,KAAK,KAE/F,IAAI;YAGR;YAEA,UAAU,GACV,MAAO,KAAK,CAAC,QAAQ,IAAI,MAAM,KAAK,CAAC,QAAQ,IAAI,UAAW;gBACxD,IAAI;gBACJ,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,IAAI;oBACrC,mBAAmB;oBACnB;gBACJ;gBACA;YACJ;YAEA,YAAY,GACZ,MAAO,KAAK,CAAC,QAAQ,IAAI,UAAW;gBAChC,IAAI;gBACJ,MAAO,CAAC,oBAAoB,KAAK,CAAC,QAAQ,IAAI,GAC1C;gBAEJ,IAAI,CAAC,oBAAoB,KAAK,CAAC,QAAQ,IAAI,WAAW;gBAEtD,gBAAgB,GAChB,MAAM,OAAO,MAAM,CAAC,CAAC,GAAG,oBAAoB;oBACxC,IAAI;oBACJ,WAAW;oBACX,SAAS;oBACT,aAAa;oBACb,WAAW;oBACX,aAAa;oBACb,cAAc;oBACd,WAAW;oBACX,cAAc;oBACd,eAAe;oBACf,MAAM;oBACN,WAAW;oBACX,MAAM;oBACN,MAAM;gBACV;gBAEA,IAAI,eAAe;gBAEnB,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,IAAI;oBACrC,IAAI,EAAE,GAAG,KAAK,CAAC,QAAQ;oBAEvB;;;WAGT,GACS,IAAI,iBAAiB,IAAI,CAAC,IAAI,EAAE,GAAG;wBAC/B,8BAA8B;wBAC9B;wBACA,MAAO,KAAK,CAAC,QAAQ,IAAI,MAAM,KAAK,CAAC,QAAQ,IAAI,UAAW;4BACxD,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI;4BAC7C;wBACJ;wBACA;oBACJ;oBAEA,UAAU,GACV,IAAI,kBAAkB,IAAI,CAAC,IAAI,EAAE,GAAG;wBAChC,IAAI,QAAQ,EAAE;wBACd,IAAI,UAAU;wBACd;wBACA,MAAO,KAAK,CAAC,QAAQ,IAAI,MAAM,KAAK,CAAC,QAAQ,IAAI,UAAW;4BACxD,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,IAAI;gCACrC,IAAI;gCACJ,UAAU;4BACd;4BACA,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ;4BACzB;wBACJ;wBACA,IAAI,KAAK,MAAM,EAAE;4BACb,IAAI;4BACJ;wBACJ;wBACA,IAAI,CAAC,SACD,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC;wBAE3B;oBACJ;oBAEA;oBAEA,IAAI,KAAK,CAAC,QAAQ,IAAI,MAAM,KAAK,CAAC,QAAQ,IAAI,WAAW;wBACrD,IAAI;wBACJ;oBACJ;oBAEA,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,IAAI;wBACrC,eAAe;wBACf,IAAI;wBACJ;oBACJ;gBACJ;gBAEA,WAAW,GACX,mBAAmB;gBACnB,IAAI,UAAU,IAAI,kCAAkC,KAAK,CAAC,QAAQ,EAAE;gBACpE,IAAI,mBAAmB;gBACvB,IAAI,KAAK,MAAM,GAAG,GACd,mBAAmB,IAAI,CAAC,KAAK,MAAM,GAAG,EAAE,CAAC,SAAS;gBAEtD,IAAI,gBAAgB,CAAC,QAAQ,KAAK,CAAC,KAAK,mBAAmB;oBACvD,WAAW,GAEX,MAAM;oBACN;oBAEA,gBAAgB,GAChB,MAAO,KAAK,CAAC,QAAQ,IAAI,MAAM,KAAK,CAAC,QAAQ,IAAI,UAAW;wBACxD,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,IAAI;4BACrC,mBAAmB;4BACnB;wBACJ;wBACA;oBACJ;oBACA;gBACJ;gBACA;gBAEA,iBAAiB,GACjB,MAAO,KAAK,CAAC,QAAQ,IAAI,MAAM,KAAK,CAAC,QAAQ,IAAI,UAAW;oBACxD,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,IAAI;wBACrC,IAAI;wBACJ,mBAAmB;wBACnB;oBACJ;oBACA,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;oBAChC,IAAI,IAAI,IAAI,KAAK,CAAC,QAAQ;oBAC1B;gBACJ;gBAEA,uBAAuB,GACvB,IAAI,gBAAgB,IAAI,oBAAoB,IAAI,IAAI,EAAE,KAAK,MAAM;gBACjE,IAAI,IAAI,GAAG,cAAc,KAAK,CAAC,IAAI,SAAS,EAAE,IAAI,OAAO;gBACzD,KAAK,IAAI,CAAC;YACd;YACA,KAAK,IAAI,CAAC,SAAU,CAAC,EAAE,CAAC;gBACpB,IAAI,EAAE,SAAS,GAAG,EAAE,SAAS,EAAE,OAAO;gBACtC,IAAI,EAAE,SAAS,GAAG,EAAE,SAAS,EAAE,OAAO;gBACtC,IAAI,EAAE,OAAO,GAAG,EAAE,OAAO,EAAE,OAAO;gBAClC,IAAI,EAAE,OAAO,GAAG,EAAE,OAAO,EAAE,OAAO;gBAClC,OAAO;YACX;YACA,OAAO,GACP,OAAO;gBAAE,MAAM;gBAAM,QAAQ;gBAAQ,MAAM,KAAK,GAAG,KAAK;gBAAW,QAAQ;YAAO;QACtF;IACJ;IAEA,IAAI,oCAAoC,SAAU,IAAI,EAAE,YAAY;QAChE,IAAI,QAAQ,gBACR,UAAU,iBACV,OAAO,MACP,MAAM,GACN,MAAM,SAAU,OAAO;YACnB,aAAa,SAAS,MAAM;QAChC,GACA,qBAAqB;QACzB,SAAS,KAAK,OAAO;YACjB,MAAO,IAAI,CAAC,IAAI,IAAI,aAAa,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,EACnD;QAER;QACA,SAAS,QAAQ,OAAO;YACpB,IAAI,MAAM;YACV,MAAO,IAAI,CAAC,IAAI,IAAI,aAAa,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAG;gBACtD,OAAO,IAAI,CAAC,IAAI;gBAChB;YACJ;YACA,OAAO;QACX;QACA,8DAA8D,GAC9D,SAAS;YACL,IAAI,QAAQ,WACR,MACA,MACA,MACA;YACJ,IAAI;YACJ,IAAI,IAAI,CAAC,IAAI,IAAI,WAAW;gBACxB,IAAI;gBACJ;YACJ;YACA,IAAI;YACJ,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG;gBACvB,IAAI;gBACJ;YACJ;YACA,MAAM;YACN,OAAO,QAAQ;YACf,IAAI,KAAK,MAAM,GAAG,KAAK,SAAS,MAAM,MAAM,IACxC,QAAQ;YAEZ,IAAI;YACJ,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK;gBAClB,IAAI;gBACJ;YACJ;YACA;YACA,OAAO;YACP,OAAO,QAAQ;YACf,IAAI,KAAK,MAAM,IAAI,GAAG;gBAClB,IAAI;gBACJ;YACJ;YACA,KAAK;YACL,IAAI,SAAS,WAAW,IAAI,CAAC,IAAI,IAAI,KAAK;gBACtC,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK;oBAClB,IAAI;oBACJ;gBACJ;gBACA;gBACA,OAAO,QAAQ;gBACf,IAAI,KAAK,MAAM,IAAI,GAAG;oBAClB,IAAI;oBACJ;gBACJ;YACJ,OAAO;gBACH,IAAI,KAAK,MAAM,IAAI,GAAG;oBAClB,IAAI;oBACJ;gBACJ;gBACA,OAAO;gBACP,OAAO;gBACP,OAAO;YACX;YACA,KAAK;YACL,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK;gBAClB,IAAI;gBACJ;YACJ;YACA;YACA,QAAQ;YACR,OAAO,QAAQ;YACf,IAAI,KAAK,MAAM,IAAI,GAAG;gBAClB,IAAI;gBACJ;YACJ;YACA,KAAK;YACL,IAAI,SAAS,MAAM,MAAM,IAAI;gBACzB,IAAI;gBACJ;YACJ;YACA,IAAI,SAAS,MAAM,MAAM,IAAI;gBACzB,IAAI;gBACJ;YACJ;YACA,OACI,SAAS,MAAM,MAAf,OAA+B,SAAS,MAAM,MAAM,KAAK,SAAS,MAAM,MAAM,SAAS,MAAM,MAAM;QAE3G;QAEA,6DAA6D,GAC7D,SAAS,cAAc,KAAK,EAAE,GAAG;YAC7B,IAAI,WAAW,MAAM,KAAK,CAAC,QACvB,OAAO,EAAE;YACb,IAAK,IAAI,IAAI,GAAG,IAAI,SAAS,MAAM,EAAE,IAAK;gBACtC,IAAI,QAAQ,CAAC,EAAE,IAAI,IAAI;gBAEvB,IAAI,QAAQ,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,MAC5B,UAAU,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,QAC/B,QAAQ,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ;gBAEtC,IAAI,KAAK,OAAO,CAAC,YAAY,IACzB,IAAI;gBAER,KAAK,IAAI,CAAC;gBAEV,IAAI,SAAS,IAAI;oBACb,IAAI;oBACJ;gBACJ;gBAEA,IAAI,WAAW,YAAY;oBACvB,oBAAoB;oBACpB,IAAI,SAAS,QAAQ,SAAS,MAAM;wBAChC,IAAI;wBACJ;oBACJ;oBACA,IAAI,SAAS,GAAG;gBACpB,OAAO,IAAI,WAAW,QAAQ;oBAC1B,8CAA8C;oBAC9C,IAAI,IAAI,IAAI,CAAC,QAAQ;wBACjB,IAAI,OAAO,MAAM,KAAK,CAAC;wBACvB,QAAQ,IAAI,CAAC,EAAE;wBACf,IAAI,YAAY,IAAI,CAAC,EAAE;oBAC3B;oBACA,IAAI,CAAC,yBAAyB,IAAI,CAAC,QAAQ;wBACvC,IAAI;wBACJ;oBACJ;oBACA,IAAI,MAAM,OAAO,CAAC,KAAK,MAAM,IAAI;wBAC7B,IAAI;wBACJ;oBACJ;oBACA,IAAI,MAAM,OAAO,CAAC,QAAQ,MAAM,MAAM,OAAO,CAAC,QAAQ,MAAM,MAAM,GAAG,GAAG;wBACpE,IAAI;wBACJ;oBACJ;oBACA,IAAI,KAAK,CAAC,EAAE,IAAI,OAAO,KAAK,CAAC,MAAM,MAAM,GAAG,EAAE,IAAI,KAAK;wBACnD,IAAI;wBACJ;oBACJ;oBACA,IAAI,SAAS;oBACb,IAAI,YAAY;oBAChB,IAAI,KAAK,CAAC,MAAM,MAAM,GAAG,EAAE,IAAI,KAAK;wBAChC,YAAY;wBACZ,SAAS,MAAM,KAAK,CAAC,GAAG,MAAM,MAAM,GAAG;wBACvC,IAAI,SAAS,OAAO,MAAM,KAAK;4BAC3B,IAAI;4BACJ;wBACJ;oBACJ;oBACA,IAAI,WAAW,MAAM,MAAM,WAAW,CAAC,SAAS,SAAS;wBACrD,IAAI;wBACJ;oBACJ;oBACA,IAAI,cAAc,WAAW;wBACzB,IAAI,CAAC;4BAAC;4BAAS;4BAAU;yBAAM,CAAC,QAAQ,CAAC,YAAY;4BACjD,IAAI;4BACJ;wBACJ;wBACA,IAAI,SAAS,GAAG;oBACpB;oBACA,IAAI,WAAW,GAAG,CAAC;oBACnB,IAAI,YAAY,GAAG,WAAW;oBAC9B,IAAI,WAAW,QAAQ,QAAQ,OAAO,QAClC,IAAI,eAAe,GAAG;gBAE9B,OAAO,IAAI,WAAW,YAAY;oBAC9B,2CAA2C;oBAC3C,IAAI,IAAI,IAAI,CAAC,QAAQ;wBACjB,IAAI,OAAO,MAAM,KAAK,CAAC;wBACvB,QAAQ,IAAI,CAAC,EAAE;wBACf,IAAI,gBAAgB,IAAI,CAAC,EAAE;oBAC/B;oBACA,IAAI,KAAK,CAAC,MAAM,MAAM,GAAG,EAAE,IAAI,KAAK;wBAChC,IAAI;wBACJ;oBACJ;oBACA,IAAI,SAAS,OAAO,MAAM,OAAO,SAAS,OAAO,MAAM,GAAG;wBACtD,IAAI;wBACJ;oBACJ;oBACA,SAAS,MAAM,KAAK,CAAC,GAAG,MAAM,MAAM,GAAG;oBACvC,IAAI,WAAW,MAAM,MAAM,WAAW,CAAC,SAAS,SAAS;wBACrD,IAAI;wBACJ;oBACJ;oBACA,IAAI,kBAAkB,WAAW;wBAC7B,IAAI,CAAC;4BAAC;4BAAa;4BAAU;yBAAa,CAAC,QAAQ,CAAC,gBAAgB;4BAChE,IAAI;4BACJ;wBACJ;wBACA,IAAI,aAAa,GAAG;oBACxB;oBACA,IAAI,YAAY,GAAG,WAAW;gBAClC,OAAO,IAAI,WAAW,QAAQ;oBAC1B,OAAO;oBACP,IAAI,KAAK,CAAC,MAAM,MAAM,GAAG,EAAE,IAAI,KAAK;wBAChC,IAAI;wBACJ;oBACJ;oBACA,IAAI,SAAS,OAAO,MAAM,KAAK;wBAC3B,IAAI;wBACJ;oBACJ;oBACA,IAAI,OAAO,MAAM,KAAK,CAAC,GAAG,MAAM,MAAM,GAAG;oBACzC,IAAI,SAAS,aAAa,SAAS,MAAM,MAAM,OAAO;wBAClD,IAAI;wBACJ,OAAO;wBACP;oBACJ,OAAO;wBACH,OAAO,WAAW;wBAClB,IAAI,OAAO,KAAK,OAAO,KAAK;4BACxB,IAAI;4BACJ;wBACJ;oBACJ;oBACA,IAAI,IAAI,GAAG;gBACf,OAAO,IAAI,WAAW,SAAS;oBAC3B,YAAY;oBACZ,IAAI,cAAc;wBAAC;wBAAS;wBAAU;wBAAO;wBAAQ;qBAAQ;oBAC7D,IAAI,YAAY,OAAO,CAAC,UAAU,IAAI;wBAClC,IAAI,yCAAyC,YAAY,IAAI,CAAC,QAAQ;wBACtE;oBACJ;oBACA,IAAI,SAAS,GAAG;gBACpB,OACI,IAAI;YAEZ;QACJ;QAEA,IAAI,CAAC,KAAK,GAAG,SAAU,GAAG,EAAE,gBAAgB;YACxC,KAAK;YACL,IAAI,SAAS,GAAG;YAChB,IAAI,IAAI,SAAS,IAAI,WACjB;YAEJ,IAAI,IAAI,SAAS,GAAG,kBAChB,IAAI;YAER,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,GACtB,IAAI;YAER,KAAK;YACL,MAAM;YACN,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK;gBAClB,IAAI;gBACJ;YACJ;YACA;YACA,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK;gBAClB,IAAI;gBACJ;YACJ;YACA;YACA,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK;gBAClB,IAAI;gBACJ;YACJ;YACA;YACA,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,GACtB,IAAI;YAER,KAAK;YACL,IAAI,OAAO,GAAG;YACd,IAAI,IAAI,OAAO,IAAI,WACf;YAEJ,IAAI,IAAI,OAAO,IAAI,IAAI,SAAS,EAC5B,IAAI;YAGR,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,GACtB,qBAAqB;YAEzB,KAAK;YACL,cAAc,KAAK,SAAS,CAAC,MAAM;YACnC,OAAO;QACX;QACA,IAAI,CAAC,cAAc,GAAG;YAClB,IAAI,KAAK;YACT,IAAI,IAAI,CAAC,IAAI,IAAI,WAAW;gBACxB,IAAI;gBACJ;YACJ;YACA,OAAO;QACX;IACJ;IAEA,IAAI,sBAAsB,SAAU,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ;QAClE,IAAI,CAAC,QAAQ,GAAG;QAChB,IAAI,OAAO,IAAI;QACf,IAAI,OAAO,MACP,MAAM,GACN,MAAM,SAAU,OAAO;YACnB,IAAI,QAAQ,YAAY;YACxB,aAAa,SAAS,MAAM;QAChC;QAEJ,IAAI,CAAC,KAAK,GAAG,SAAU,QAAQ,EAAE,MAAM;YACnC,SAAS,aAAa,IAAI;gBACtB,MAAM,gBAAgB;oBAAE,GAAG,IAAI;gBAAC;gBAChC,IAAI,KAAK,QAAQ,EACb,cAAc,QAAQ,GAAG,KAAK,QAAQ,CAAC,GAAG,CAAC;gBAE/C,IAAI,cAAc,MAAM,EACpB,OAAO,cAAc,MAAM;gBAE/B,OAAO;YACX;YAEA,IAAI,SAAS;gBAAE,UAAU,EAAE;YAAC,GACxB,UAAU,QACV,aAAa,EAAE;YAEnB,SAAS,OAAO,KAAK;gBACjB,QAAQ,QAAQ,CAAC,IAAI,CAAC;oBAClB,MAAM;oBACN,MAAM,KAAK,CAAC,EAAE;oBACd,SAAS,KAAK,CAAC,EAAE;oBACjB,UAAU,EAAE;oBACZ,QAAQ;gBACZ;gBACA,UAAU,QAAQ,QAAQ,CAAC,QAAQ,QAAQ,CAAC,MAAM,GAAG,EAAE;YAC3D;YACA,SAAS,QAAQ,IAAI;gBACjB,IAAI,OAAO;gBACX,MAAO,KAAM;oBACT,IAAI,KAAK,IAAI,IAAI,MAAM,OAAO;oBAC9B,OAAO,KAAK,MAAM;gBACtB;gBACA;YACJ;YAEA,MAAO,IAAI,CAAC,IAAI,IAAI,UAAW;gBAC3B,IAAI,QAAQ;gBACZ,IAAI,KAAK,CAAC,EAAE,IAAI,QACZ,QAAQ,QAAQ,CAAC,IAAI,CAAC;oBAAE,MAAM;oBAAQ,OAAO,KAAK,CAAC,EAAE;oBAAE,QAAQ;gBAAQ;qBACpE,IAAI,KAAK,CAAC,EAAE,IAAI,aAAa;oBAChC,IAAI,QAAQ,YAAY,IAAI;oBAC5B,IAAI,OAAO,KAAK,CAAC,EAAE;oBACnB,IAAI,QAAQ,OAAO,QAAQ,UAAU,KAAK,CAAC,EAAE,IAAI,IAC7C,IAAI;oBAER,IAAI,QAAQ,OAAO,QAAQ,OAAO,QAAQ,OAAO,QAAQ,OAAO,QAAQ,QACpE,OAAO;yBACJ,IAAI,QAAQ,QAAQ,QAAQ,IAAI,IAAI,QACvC,OAAO;yBACJ,IAAI,QAAQ,KAAK;wBACpB,IAAI,QAAQ,MACR,IAAI;wBAER,OAAO;wBACP,QAAQ,KAAK,GAAG,KAAK,CAAC,EAAE,EAAE,aAAa;wBACvC,IAAI,CAAC,KAAK,CAAC,EAAE,EACT,IAAI;oBAEZ,OAAO,IAAI,QAAQ,QAAQ;wBACvB,OAAO;wBACP,QAAQ,KAAK,GAAG,KAAK,CAAC,EAAE,EAAE,WAAW;oBACzC,OACI,IAAI;gBAEZ,OAAO,IAAI,KAAK,CAAC,EAAE,IAAI,WAAW;oBAC9B,IAAI,QAAQ,YAAY,IAAI;oBAC5B,2BAA2B;oBAC3B,IAAI,KAAK,CAAC,EAAE,IAAI,QAAQ,IAAI,EACxB,UAAU,QAAQ,MAAM;yBACrB,IAAI,KAAK,CAAC,EAAE,IAAI,UAAU,QAAQ,IAAI,IAAI,MAC7C,UAAU,QAAQ,MAAM,CAAC,MAAM;yBAE/B,IAAI;gBAEZ,OAAO,IAAI,KAAK,CAAC,EAAE,IAAI,aAAa;oBAChC,IAAI,QAAQ,YAAY,IAAI;oBAC5B,IAAI,UAAU,IAAI,kCAAkC,KAAK,CAAC,EAAE,EAAE,MAC1D,YAAY,QAAQ,cAAc;oBACtC,IAAI,aAAa,WAAW;wBACxB,IAAI,aAAa,YAAY,aAAa,QACtC,IAAI;wBAER,IAAI,WAAW,MAAM,GAAG,KAAK,UAAU,CAAC,WAAW,MAAM,GAAG,EAAE,IAAI,WAC9D,IAAI;wBAER,QAAQ,QAAQ,CAAC,IAAI,CAAC;4BAAE,MAAM;4BAAa,OAAO;4BAAW,QAAQ;wBAAQ;wBAC7E,WAAW,IAAI,CAAC;oBACpB;gBACJ;YACJ;YACA,MAAO,QAAQ,MAAM,CAAE;gBACnB,IAAI,QAAQ,IAAI,IAAI,KAChB,IAAI;gBAER,UAAU,QAAQ,MAAM;YAC5B;YACA,OAAO,aAAa;QACxB;QAEA,SAAS;YACL,IAAI,QAAQ,QACR,SAAS,IACT,SAAS,IACT,UAAU,EAAE;YAChB,MAAO,IAAI,CAAC,MAAM,EAAE,IAAI,aAAa,OAAO,EAAG;gBAC3C,IAAI,IAAI,IAAI,CAAC,IAAI;gBACjB,IAAI,SAAS,QAAQ;oBACjB,IAAI,KAAK,KAAK;wBACV,SAAS;wBACT,QAAQ;oBACZ,OAAO,IAAI,KAAK,OAAO,UAAU,IAC7B,QAAQ;yBACL,IAAI,KAAK,OAAO,KAAK,WACxB,OAAO;wBAAC;wBAAQ;qBAAO;yBAEvB,UAAU;gBAElB,OAAO,IAAI,SAAS,UAAU;oBAC1B,IAAI,KAAK,OAAO,KAAK,WAAW;wBAC5B,IAAI;wBACJ,IAAI;wBACJ,IAAK,IAAI,OAAO,KAAK,CAAC,iBAClB,UAAU,OAAO,YAAY,CAAC,CAAC,CAAC,EAAE;6BAElC,IAAI,KAAK,QAAQ,CAAC,OAAO,EACrB,UAAU,KAAK,QAAQ,CAAC,OAAO;6BAE/B,UAAU;wBAGlB,OAAO;4BAAC;4BAAQ;yBAAO;oBAC3B,OAAO,IAAI,KAAK,KAAK;wBACjB,IAAI;wBACJ,UAAU;wBACV,SAAS;oBACb,OAAO,IAAI,aAAa,IAAI,CAAC,IACzB,UAAU;yBACP,IAAI,KAAK,KAAK;wBACjB,IAAI;wBACJ,IAAK,IAAI,OAAO,KAAK,CAAC,mBAClB,gEAAgE;wBAChE,UAAU,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE;6BACrC,IAAI,KAAK,QAAQ,CAAC,SAAS,EAAE,EAChC,UAAU,KAAK,QAAQ,CAAC,SAAS,EAAE;6BAChC,IAAK,IAAI,OAAO,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,IAAM,OAAO,UAAU,CAAC,KAChE,gBAAgB;wBAChB,UAAU,KAAK,QAAQ,CAAC,EAAE,GAAG,OAAO,KAAK,CAAC,EAAE,MAAM,IAAI;6BACnD;4BACH,IAAI;4BACJ,UAAU,SAAS;wBACvB;wBACA,QAAQ;oBACZ,OAAO;wBACH,IAAI;wBACJ,UAAU,SAAS;wBACnB,QAAQ;oBACZ;gBACJ,OAAO,IAAI,SAAS,OAAO;oBACvB,IAAI,KAAK,OAAQ,KAAK,QAAQ,KAAK,QAAQ,KAAK,KAC5C,QAAQ;yBACL,IAAI,KAAK,KACZ,QAAQ;yBACL,IAAI,KAAK,KACZ,QAAQ;yBACL,IAAI,KAAK,IAAI,CAAC,IAAI;wBACrB,SAAS;wBACT,QAAQ;oBACZ,OAAO,IAAI,KAAK,OAAO,KAAK,WAAW;wBACnC,IAAI,KAAK,KACL;wBAEJ,OAAO;4BAAC;4BAAa;4BAAI,EAAE;4BAAE;yBAAG;oBACpC,OAAO;wBACH,SAAS;wBACT,QAAQ;oBACZ;gBACJ,OAAO,IAAI,SAAS,aAAa;oBAC7B,IAAI,KAAK,OAAQ,KAAK,QAAQ,KAAK,KAC/B,QAAQ;yBACL,IAAI,KAAK,MAAM;wBAClB,SAAS;wBACT,QAAQ;oBACZ,OAAO,IAAI,KAAK,KACZ,QAAQ;yBACL,IAAI,KAAK,OAAO,KAAK,WAAW;wBACnC,IAAI,KAAK,KACL;wBAEJ,OAAO;4BAAC;4BAAa;4BAAQ,EAAE;4BAAE;yBAAG;oBACxC,OACI,UAAU;gBAElB,OAAO,IAAI,SAAS,mBAAmB;oBACnC,IAAI,KAAK,OAAQ,KAAK,QAAQ,KAAK,KAAK;wBACpC,IAAI,QACA,QAAQ,IAAI,CAAC;wBAEjB,SAAS;wBACT,QAAQ;oBACZ,OAAO,IAAI,KAAK,MAAM;wBAClB,IAAI,QACA,QAAQ,IAAI,CAAC;wBAEjB,SAAS;wBACT,QAAQ;oBACZ,OAAO,IAAI,KAAK,KAAK;wBACjB,IAAI,QACA,QAAQ,IAAI,CAAC;wBAEjB,SAAS;oBACb,OAAO,IAAI,KAAK,OAAO,KAAK,WAAW;wBACnC,IAAI,KAAK,KACL;wBAEJ,IAAI,QACA,QAAQ,IAAI,CAAC;wBAEjB,OAAO;4BAAC;4BAAa;4BAAQ;4BAAS;yBAAG;oBAC7C,OACI,UAAU;gBAElB,OAAO,IAAI,SAAS;oBAChB,IAAI,KAAK,OAAO,KAAK,WAAW;wBAC5B,IAAI,KAAK,KACL;wBAEJ,SAAS,OACJ,KAAK,CAAC,qBACN,MAAM,CAAC,SAAU,IAAI;4BAClB,IAAI,MAAM,OAAO;wBACrB,GACC,IAAI,CAAC;wBACV,OAAO;4BAAC;4BAAa;4BAAQ;4BAAS;yBAAO;oBACjD,OACI,UAAU;uBAEX,IAAI,SAAS;oBAChB,IAAI,KAAK,OAAO,KAAK,WAAW;wBAC5B,IAAI,KAAK,KACL;wBAEJ,OAAO;4BAAC;4BAAW;yBAAO;oBAC9B,OACI,UAAU;uBAEX,IAAI,SAAS;oBAChB,IAAI,KAAK,OAAO,KAAK,WAAW;wBAC5B,IAAI,KAAK,KACL;wBAEJ,OAAO;4BAAC;4BAAa;yBAAO;oBAChC,OACI,UAAU;uBAGd,IAAI,mBAAmB,wBAAwB;gBAEnD,IAAI;gBACJ;YACJ;QACJ;IACJ;IAEA,IAAI,mBAAmB;QACnB,SAAS,mBAAmB,OAAO;YAC/B,MAAM,KAAK,AAAC,CAAA,OAAO,AAAC,CAAA,UAAU,KAAK,KAAK,CAAC,QAAO,EAAG,OAAO,CAAC,KAAK,IAAG,EAAG,KAAK,CAAC;YAC5E,IAAI,IAAI,GACJ,IAAI,GACJ,IAAI;YACR,IAAI,WAAW,MACX,IAAI,KAAK,KAAK,CAAC,UAAU;YAE7B,IAAI,KAAK,KAAK,CAAC,AAAC,CAAA,UAAU,OAAO,CAAA,IAAK;YACtC,IAAI,KAAK,KAAK,CAAC,UAAU,OAAO,IAAI,KAAK;YACzC,OAAO,AAAC,CAAA,IAAI,IAAI,MAAM,EAAC,IAAK,AAAC,CAAA,KAAK,CAAA,EAAG,QAAQ,CAAC,GAAG,OAAO,MAAM,AAAC,CAAA,KAAK,CAAA,EAAG,QAAQ,CAAC,GAAG,OAAO,MAAM;QACpG;QACA,SAAS,qBAAqB,GAAG;YAC7B,IAAI,SAAS;YACb,MAAM,qBAAqB,OAAO,IAAI,CAAC,oBAAoB,MAAM,CAAC,CAAC,IAAM,GAAG,CAAC,EAAE,KAAK,kBAAkB,CAAC,EAAE;YACzG,IAAI,mBAAmB,QAAQ,CAAC,cAC5B,UAAU,eAAe,IAAI,SAAS;YAE1C,IAAI,mBAAmB,QAAQ,CAAC,cAC5B,UAAU,YAAY,IAAI,SAAS;YAEvC,IAAI,mBAAmB,QAAQ,CAAC,SAC5B,UAAU,WAAW,IAAI,IAAI,GAAG;YAEpC,IAAI,mBAAmB,QAAQ,CAAC,gBAAgB,mBAAmB,QAAQ,CAAC,iBACxE,UACI,WACA,IAAI,YAAY,GACf,CAAA,IAAI,WAAW,GAAG,KAAK,GAAE,IACzB,CAAA,IAAI,SAAS,IAAI,IAAI,SAAS,IAAI,mBAAmB,SAAS,GAAG,MAAM,IAAI,SAAS,GAAG,EAAC;YAEjG,IAAI,mBAAmB,QAAQ,CAAC,mBAAmB,mBAAmB,QAAQ,CAAC,kBAC3E,UACI,eACA,IAAI,YAAY,GAChB,MACC,CAAA,IAAI,aAAa,IAAI,IAAI,aAAa,KAAK,mBAAmB,aAAa,GACtE,MAAM,IAAI,aAAa,GACvB,EAAC;YAEf,OAAO;QACX;QACA,SAAS,cAAc,IAAI;YACvB,IAAI,SAAS;YACb,IAAK,IAAI,IAAI,GAAG,IAAI,KAAK,MAAM,EAAE,IAAK;gBAClC,IAAI,OAAO,IAAI,CAAC,EAAE;gBAClB,IAAI,KAAK,IAAI,IAAI,QACb,UAAU,KAAK,KAAK,CAAC,OAAO,CAAC,MAAM,SAAS,OAAO,CAAC,MAAM,QAAQ,OAAO,CAAC,MAAM;qBAC7E,IAAI,KAAK,IAAI,IAAI,UAAU;oBAC9B,UAAU,MAAM,KAAK,IAAI;oBACzB,IAAI,KAAK,OAAO,EACZ,IAAK,IAAI,IAAI,GAAG,IAAI,KAAK,OAAO,CAAC,MAAM,EAAE,IACrC,UAAU,MAAM,KAAK,OAAO,CAAC,EAAE;oBAGvC,IAAI,KAAK,KAAK,EACV,UAAU,MAAM,KAAK,KAAK;oBAE9B,UAAU;oBACV,IAAI,KAAK,QAAQ,EAAE,UAAU,cAAc,KAAK,QAAQ;oBACxD,UAAU,OAAO,KAAK,IAAI,GAAG;gBACjC,OAAO,IAAI,KAAK,IAAI,IAAI,aACpB,UAAU,MAAM,mBAAmB,KAAK,KAAK,IAAI;qBAEjD,UAAU,MAAM,KAAK,KAAK,GAAG;YAErC;YACA,OAAO;QACX;QACA,SAAS,aAAa,GAAG;YACrB,OACI,AAAC,CAAA,IAAI,EAAE,KAAK,YAAY,IAAI,EAAE,GAAG,OAAO,EAAC,IACzC,mBAAmB,IAAI,SAAS,IAChC,UACA,mBAAmB,IAAI,OAAO,IAC9B,qBAAqB,OACrB,OACA,cAAc,IAAI,IAAI,CAAC,QAAQ,IAC/B;QAER;QACA,SAAS,eAAe,KAAK;YACzB,OAAO,YAAY,QAAQ;QAC/B;QACA,IAAI,CAAC,SAAS,GAAG,SAAU,IAAI,EAAE,MAAM;YACnC,IAAI,SAAS;YACb,IAAI,QACA,IAAK,IAAI,IAAI,GAAG,IAAI,OAAO,MAAM,EAAE,IAC/B,UAAU,eAAe,MAAM,CAAC,EAAE;YAG1C,IAAK,IAAI,IAAI,GAAG,IAAI,KAAK,MAAM,EAAE,IAC7B,UAAU,aAAa,IAAI,CAAC,EAAE;YAElC,OAAO;QACX;IACJ;IAEA,SAAS,UAAU,MAAM;QACrB,OAAO,YAAY,GAAG;QACtB,OAAO,iCAAiC,GAAG;QAC3C,OAAO,mBAAmB,GAAG;QAC7B,OAAO,gBAAgB,GAAG;IAC9B;IACA,IAAI,OAAO,WAAW,aAAa,UAAU;IACT,UAAU;AAClD,CAAA;;;ACh4BA,QAAQ,cAAc,GAAG,SAAU,CAAC;IAClC,OAAO,KAAK,EAAE,UAAU,GAAG,IAAI;QAAC,SAAS;IAAC;AAC5C;AAEA,QAAQ,iBAAiB,GAAG,SAAU,CAAC;IACrC,OAAO,cAAc,CAAC,GAAG,cAAc;QAAC,OAAO;IAAI;AACrD;AAEA,QAAQ,SAAS,GAAG,SAAU,MAAM,EAAE,IAAI;IACxC,OAAO,IAAI,CAAC,QAAQ,OAAO,CAAC,SAAU,GAAG;QACvC,IAAI,QAAQ,aAAa,QAAQ,gBAAgB,KAAK,cAAc,CAAC,MACnE;QAGF,OAAO,cAAc,CAAC,MAAM,KAAK;YAC/B,YAAY;YACZ,KAAK;gBACH,OAAO,MAAM,CAAC,IAAI;YACpB;QACF;IACF;IAEA,OAAO;AACT;AAEA,QAAQ,MAAM,GAAG,SAAU,IAAI,EAAE,QAAQ,EAAE,GAAG;IAC5C,OAAO,cAAc,CAAC,MAAM,UAAU;QACpC,YAAY;QACZ,KAAK;IACP;AACF","sources":["packages/artplayer-plugin-multiple-subtitles/src/index.js","packages/artplayer-plugin-multiple-subtitles/src/parser.js","node_modules/@parcel/transformer-js/src/esmodule-helpers.js"],"sourcesContent":["import { WebVTTParser, WebVTTSerializer } from './parser';\n\nfunction unescape(str) {\n const map = {\n '&': '&',\n '<': '<',\n '>': '>',\n ''': \"'\",\n '"': '\"',\n };\n const reg = new RegExp(`(${Object.keys(map).join('|')})`, 'g');\n return str.replace(reg, (tag) => map[tag] || tag);\n}\n\nasync function loadVtt(option, art) {\n const { getExt, srtToVtt, assToVtt } = art.constructor.utils;\n const response = await fetch(option.url);\n const buffer = await response.arrayBuffer();\n const decoder = new TextDecoder(option.encoding || 'utf-8');\n const text = decoder.decode(buffer);\n switch (option.type || getExt(option.url)) {\n case 'srt': {\n return srtToVtt(text);\n }\n case 'ass': {\n return assToVtt(text);\n }\n case 'vtt': {\n return text;\n }\n default:\n return '';\n }\n}\n\nfunction mergeTrees(trees, subtitles) {\n const parser = new WebVTTParser();\n const result = parser.parse('', 'metadata');\n\n for (let i = 0; i < trees.length; i++) {\n const tree = trees[i];\n const option = subtitles[i];\n\n for (let j = 0; j < tree.cues.length; j++) {\n const cue = tree.cues[j];\n for (let k = 0; k < cue.tree.children.length; k++) {\n const children = cue.tree.children[k];\n children.value = `${children.value}
`;\n }\n }\n\n if (result.cues.length === 0) {\n result.cues = tree.cues;\n } else {\n for (let l = 0; l < result.cues.length; l++) {\n result.cues[l].tree.children.push(...(tree.cues[l]?.tree?.children || []));\n }\n }\n }\n\n return result;\n}\n\nconst all = '_ALL_';\nexport default function artplayerPluginMultipleSubtitles({ subtitles, onMerge = () => null }) {\n return async (art) => {\n const parser = new WebVTTParser();\n const seri = new WebVTTSerializer();\n\n const vtts = await Promise.all(subtitles.map((option) => loadVtt(option, art)));\n const trees = vtts.map((vtt) => parser.parse(vtt, 'metadata'));\n const tree = onMerge(trees, subtitles) || mergeTrees(trees, subtitles);\n\n function setTree(tree) {\n if (!tree?.cues) return;\n const vtt = seri.serialize(tree.cues);\n const url = URL.createObjectURL(new Blob([vtt], { type: 'text/vtt' }));\n art.option.subtitle.escape = false;\n art.subtitle.init({\n ...art.option.subtitle,\n url,\n type: 'vtt',\n onVttLoad: unescape,\n });\n }\n\n setTree(tree);\n let _track = all;\n\n return {\n name: 'multipleSubtitles',\n get track() {\n return _track;\n },\n set track(name) {\n if (name === all || name === '') {\n _track = all;\n setTree(tree);\n } else {\n const index = subtitles.findIndex((item) => item.name === name);\n if (index === -1) {\n throw new Error(`The subtitle \"${name}\" is not found`);\n } else {\n _track = name;\n setTree(trees[index]);\n }\n }\n },\n };\n };\n}\n\nartplayerPluginMultipleSubtitles.env = process.env.NODE_ENV;\nartplayerPluginMultipleSubtitles.version = process.env.APP_VER;\nartplayerPluginMultipleSubtitles.build = process.env.BUILD_DATE;\n\nartplayerPluginMultipleSubtitles.all = all;\nartplayerPluginMultipleSubtitles.WebVTTParser = WebVTTParser;\nartplayerPluginMultipleSubtitles.WebVTTSerializer = WebVTTSerializer;\n\nif (typeof window !== 'undefined') {\n window['artplayerPluginMultipleSubtitles'] = artplayerPluginMultipleSubtitles;\n}\n","// Any copyright is dedicated to the Public Domain.\n// http://creativecommons.org/publicdomain/zero/1.0/\n\n// Not intended to be fast, but if you can make it faster, please help out!\n\n/* eslint-disable */\n(function () {\n var defaultCueSettings = {\n direction: 'horizontal',\n snapToLines: true,\n linePosition: 'auto',\n lineAlign: 'start',\n textPosition: 'auto',\n positionAlign: 'auto',\n size: 100,\n alignment: 'center',\n };\n\n var WebVTTParser = function (entities) {\n if (!entities) {\n entities = {\n '&': '&',\n '<': '<',\n '>': '>',\n '&lrm': '\\u200e',\n '&rlm': '\\u200f',\n ' ': '\\u00A0',\n };\n }\n this.entities = entities;\n this.parse = function (input, mode) {\n // global search and replace for \\0\n input = input.replace(/\\0/g, '\\uFFFD');\n var NEWLINE = /\\r\\n|\\r|\\n/,\n startTime = Date.now(),\n linePos = 0,\n lines = input.split(NEWLINE),\n alreadyCollected = false,\n styles = [],\n cues = [],\n errors = [];\n function err(message, col) {\n errors.push({ message: message, line: linePos + 1, col: col });\n }\n\n var line = lines[linePos],\n lineLength = line.length,\n signature = 'WEBVTT',\n bom = 0,\n signature_length = signature.length;\n\n /* Byte order mark */\n if (line[0] === '\\ufeff') {\n bom = 1;\n signature_length += 1;\n }\n /* SIGNATURE */\n if (\n lineLength < signature_length ||\n line.indexOf(signature) !== 0 + bom ||\n (lineLength > signature_length && line[signature_length] !== ' ' && line[signature_length] !== '\\t')\n ) {\n err('No valid signature. (File needs to start with \"WEBVTT\".)');\n }\n\n linePos++;\n\n /* HEADER */\n while (lines[linePos] != '' && lines[linePos] != undefined) {\n err('No blank line after the signature.');\n if (lines[linePos].indexOf('-->') != -1) {\n alreadyCollected = true;\n break;\n }\n linePos++;\n }\n\n /* CUE LOOP */\n while (lines[linePos] != undefined) {\n var cue;\n while (!alreadyCollected && lines[linePos] == '') {\n linePos++;\n }\n if (!alreadyCollected && lines[linePos] == undefined) break;\n\n /* CUE CREATION */\n cue = Object.assign({}, defaultCueSettings, {\n id: '',\n startTime: 0,\n endTime: 0,\n pauseOnExit: false,\n direction: 'horizontal',\n snapToLines: true,\n linePosition: 'auto',\n lineAlign: 'start',\n textPosition: 'auto',\n positionAlign: 'auto',\n size: 100,\n alignment: 'center',\n text: '',\n tree: null,\n });\n\n var parseTimings = true;\n\n if (lines[linePos].indexOf('-->') == -1) {\n cue.id = lines[linePos];\n\n /* COMMENTS\n Not part of the specification's parser as these would just be ignored. However,\n we want them to be conforming and not get \"Cue identifier cannot be standalone\".\n */\n if (/^NOTE($|[ \\t])/.test(cue.id)) {\n // .startsWith fails in Chrome\n linePos++;\n while (lines[linePos] != '' && lines[linePos] != undefined) {\n if (lines[linePos].indexOf('-->') != -1) err('Cannot have timestamp in a comment.');\n linePos++;\n }\n continue;\n }\n\n /* STYLES */\n if (/^STYLE($|[ \\t])/.test(cue.id)) {\n var style = [];\n var invalid = false;\n linePos++;\n while (lines[linePos] != '' && lines[linePos] != undefined) {\n if (lines[linePos].indexOf('-->') != -1) {\n err('Cannot have timestamp in a style block.');\n invalid = true;\n }\n style.push(lines[linePos]);\n linePos++;\n }\n if (cues.length) {\n err('Style blocks cannot appear after the first cue.');\n continue;\n }\n if (!invalid) {\n styles.push(style.join('\\n'));\n }\n continue;\n }\n\n linePos++;\n\n if (lines[linePos] == '' || lines[linePos] == undefined) {\n err('Cue identifier cannot be standalone.');\n continue;\n }\n\n if (lines[linePos].indexOf('-->') == -1) {\n parseTimings = false;\n err('Cue identifier needs to be followed by timestamp.');\n continue;\n }\n }\n\n /* TIMINGS */\n alreadyCollected = false;\n var timings = new WebVTTCueTimingsAndSettingsParser(lines[linePos], err);\n var previousCueStart = 0;\n if (cues.length > 0) {\n previousCueStart = cues[cues.length - 1].startTime;\n }\n if (parseTimings && !timings.parse(cue, previousCueStart)) {\n /* BAD CUE */\n\n cue = null;\n linePos++;\n\n /* BAD CUE LOOP */\n while (lines[linePos] != '' && lines[linePos] != undefined) {\n if (lines[linePos].indexOf('-->') != -1) {\n alreadyCollected = true;\n break;\n }\n linePos++;\n }\n continue;\n }\n linePos++;\n\n /* CUE TEXT LOOP */\n while (lines[linePos] != '' && lines[linePos] != undefined) {\n if (lines[linePos].indexOf('-->') != -1) {\n err('Blank line missing before cue.');\n alreadyCollected = true;\n break;\n }\n if (cue.text != '') cue.text += '\\n';\n cue.text += lines[linePos];\n linePos++;\n }\n\n /* CUE TEXT PROCESSING */\n var cuetextparser = new WebVTTCueTextParser(cue.text, err, mode, entities);\n cue.tree = cuetextparser.parse(cue.startTime, cue.endTime);\n cues.push(cue);\n }\n cues.sort(function (a, b) {\n if (a.startTime < b.startTime) return -1;\n if (a.startTime > b.startTime) return 1;\n if (a.endTime > b.endTime) return -1;\n if (a.endTime < b.endTime) return 1;\n return 0;\n });\n /* END */\n return { cues: cues, errors: errors, time: Date.now() - startTime, styles: styles };\n };\n };\n\n var WebVTTCueTimingsAndSettingsParser = function (line, errorHandler) {\n var SPACE = /[\\u0020\\t\\f]/,\n NOSPACE = /[^\\u0020\\t\\f]/,\n line = line,\n pos = 0,\n err = function (message) {\n errorHandler(message, pos + 1);\n },\n spaceBeforeSetting = true;\n function skip(pattern) {\n while (line[pos] != undefined && pattern.test(line[pos])) {\n pos++;\n }\n }\n function collect(pattern) {\n var str = '';\n while (line[pos] != undefined && pattern.test(line[pos])) {\n str += line[pos];\n pos++;\n }\n return str;\n }\n /* http://dev.w3.org/html5/webvtt/#collect-a-webvtt-timestamp */\n function timestamp() {\n var units = 'minutes',\n val1,\n val2,\n val3,\n val4;\n // 3\n if (line[pos] == undefined) {\n err('No timestamp found.');\n return;\n }\n // 4\n if (!/\\d/.test(line[pos])) {\n err('Timestamp must start with a character in the range 0-9.');\n return;\n }\n // 5-7\n val1 = collect(/\\d/);\n if (val1.length > 2 || parseInt(val1, 10) > 59) {\n units = 'hours';\n }\n // 8\n if (line[pos] != ':') {\n err('No time unit separator found.');\n return;\n }\n pos++;\n // 9-11\n val2 = collect(/\\d/);\n if (val2.length != 2) {\n err('Must be exactly two digits.');\n return;\n }\n // 12\n if (units == 'hours' || line[pos] == ':') {\n if (line[pos] != ':') {\n err('No seconds found or minutes is greater than 59.');\n return;\n }\n pos++;\n val3 = collect(/\\d/);\n if (val3.length != 2) {\n err('Must be exactly two digits.');\n return;\n }\n } else {\n if (val1.length != 2) {\n err('Must be exactly two digits.');\n return;\n }\n val3 = val2;\n val2 = val1;\n val1 = '0';\n }\n // 13\n if (line[pos] != '.') {\n err('No decimal separator (\".\") found.');\n return;\n }\n pos++;\n // 14-16\n val4 = collect(/\\d/);\n if (val4.length != 3) {\n err('Milliseconds must be given in three digits.');\n return;\n }\n // 17\n if (parseInt(val2, 10) > 59) {\n err('You cannot have more than 59 minutes.');\n return;\n }\n if (parseInt(val3, 10) > 59) {\n err('You cannot have more than 59 seconds.');\n return;\n }\n return (\n parseInt(val1, 10) * 60 * 60 + parseInt(val2, 10) * 60 + parseInt(val3, 10) + parseInt(val4, 10) / 1000\n );\n }\n\n /* http://dev.w3.org/html5/webvtt/#parse-the-webvtt-settings */\n function parseSettings(input, cue) {\n var settings = input.split(SPACE),\n seen = [];\n for (var i = 0; i < settings.length; i++) {\n if (settings[i] == '') continue;\n\n var index = settings[i].indexOf(':'),\n setting = settings[i].slice(0, index),\n value = settings[i].slice(index + 1);\n\n if (seen.indexOf(setting) != -1) {\n err('Duplicate setting.');\n }\n seen.push(setting);\n\n if (value == '') {\n err('No value for setting defined.');\n return;\n }\n\n if (setting == 'vertical') {\n // writing direction\n if (value != 'rl' && value != 'lr') {\n err(\"Writing direction can only be set to 'rl' or 'rl'.\");\n continue;\n }\n cue.direction = value;\n } else if (setting == 'line') {\n // line position and optionally line alignment\n if (/,/.test(value)) {\n var comp = value.split(',');\n value = comp[0];\n var lineAlign = comp[1];\n }\n if (!/^[-\\d](\\d*)(\\.\\d+)?%?$/.test(value)) {\n err('Line position takes a number or percentage.');\n continue;\n }\n if (value.indexOf('-', 1) != -1) {\n err(\"Line position can only have '-' at the start.\");\n continue;\n }\n if (value.indexOf('%') != -1 && value.indexOf('%') != value.length - 1) {\n err(\"Line position can only have '%' at the end.\");\n continue;\n }\n if (value[0] == '-' && value[value.length - 1] == '%') {\n err('Line position cannot be a negative percentage.');\n continue;\n }\n var numVal = value;\n var isPercent = false;\n if (value[value.length - 1] == '%') {\n isPercent = true;\n numVal = value.slice(0, value.length - 1);\n if (parseInt(value, 10) > 100) {\n err('Line position cannot be >100%.');\n continue;\n }\n }\n if (numVal === '' || isNaN(numVal) || !isFinite(numVal)) {\n err('Line position needs to be a number');\n continue;\n }\n if (lineAlign !== undefined) {\n if (!['start', 'center', 'end'].includes(lineAlign)) {\n err('Line alignment needs to be one of start, center or end');\n continue;\n }\n cue.lineAlign = lineAlign;\n }\n cue.snapToLines = !isPercent;\n cue.linePosition = parseFloat(numVal);\n if (parseFloat(numVal).toString() !== numVal) {\n cue.nonSerializable = true;\n }\n } else if (setting == 'position') {\n // text position and optional positionAlign\n if (/,/.test(value)) {\n var comp = value.split(',');\n value = comp[0];\n var positionAlign = comp[1];\n }\n if (value[value.length - 1] != '%') {\n err('Text position must be a percentage.');\n continue;\n }\n if (parseInt(value, 10) > 100 || parseInt(value, 10) < 0) {\n err('Text position needs to be between 0 and 100%.');\n continue;\n }\n numVal = value.slice(0, value.length - 1);\n if (numVal === '' || isNaN(numVal) || !isFinite(numVal)) {\n err('Line position needs to be a number');\n continue;\n }\n if (positionAlign !== undefined) {\n if (!['line-left', 'center', 'line-right'].includes(positionAlign)) {\n err('Position alignment needs to be one of line-left, center or line-right');\n continue;\n }\n cue.positionAlign = positionAlign;\n }\n cue.textPosition = parseFloat(numVal);\n } else if (setting == 'size') {\n // size\n if (value[value.length - 1] != '%') {\n err('Size must be a percentage.');\n continue;\n }\n if (parseInt(value, 10) > 100) {\n err('Size cannot be >100%.');\n continue;\n }\n var size = value.slice(0, value.length - 1);\n if (size === undefined || size === '' || isNaN(size)) {\n err('Size needs to be a number');\n size = 100;\n continue;\n } else {\n size = parseFloat(size);\n if (size < 0 || size > 100) {\n err('Size needs to be between 0 and 100%.');\n continue;\n }\n }\n cue.size = size;\n } else if (setting == 'align') {\n // alignment\n var alignValues = ['start', 'center', 'end', 'left', 'right'];\n if (alignValues.indexOf(value) == -1) {\n err('Alignment can only be set to one of ' + alignValues.join(', ') + '.');\n continue;\n }\n cue.alignment = value;\n } else {\n err('Invalid setting.');\n }\n }\n }\n\n this.parse = function (cue, previousCueStart) {\n skip(SPACE);\n cue.startTime = timestamp();\n if (cue.startTime == undefined) {\n return;\n }\n if (cue.startTime < previousCueStart) {\n err('Start timestamp is not greater than or equal to start timestamp of previous cue.');\n }\n if (NOSPACE.test(line[pos])) {\n err(\"Timestamp not separated from '-->' by whitespace.\");\n }\n skip(SPACE);\n // 6-8\n if (line[pos] != '-') {\n err('No valid timestamp separator found.');\n return;\n }\n pos++;\n if (line[pos] != '-') {\n err('No valid timestamp separator found.');\n return;\n }\n pos++;\n if (line[pos] != '>') {\n err('No valid timestamp separator found.');\n return;\n }\n pos++;\n if (NOSPACE.test(line[pos])) {\n err(\"'-->' not separated from timestamp by whitespace.\");\n }\n skip(SPACE);\n cue.endTime = timestamp();\n if (cue.endTime == undefined) {\n return;\n }\n if (cue.endTime <= cue.startTime) {\n err('End timestamp is not greater than start timestamp.');\n }\n\n if (NOSPACE.test(line[pos])) {\n spaceBeforeSetting = false;\n }\n skip(SPACE);\n parseSettings(line.substring(pos), cue);\n return true;\n };\n this.parseTimestamp = function () {\n var ts = timestamp();\n if (line[pos] != undefined) {\n err('Timestamp must not have trailing characters.');\n return;\n }\n return ts;\n };\n };\n\n var WebVTTCueTextParser = function (line, errorHandler, mode, entities) {\n this.entities = entities;\n var self = this;\n var line = line,\n pos = 0,\n err = function (message) {\n if (mode == 'metadata') return;\n errorHandler(message, pos + 1);\n };\n\n this.parse = function (cueStart, cueEnd) {\n function removeCycles(tree) {\n const cyclelessTree = { ...tree };\n if (tree.children) {\n cyclelessTree.children = tree.children.map(removeCycles);\n }\n if (cyclelessTree.parent) {\n delete cyclelessTree.parent;\n }\n return cyclelessTree;\n }\n\n var result = { children: [] },\n current = result,\n timestamps = [];\n\n function attach(token) {\n current.children.push({\n type: 'object',\n name: token[1],\n classes: token[2],\n children: [],\n parent: current,\n });\n current = current.children[current.children.length - 1];\n }\n function inScope(name) {\n var node = current;\n while (node) {\n if (node.name == name) return true;\n node = node.parent;\n }\n return;\n }\n\n while (line[pos] != undefined) {\n var token = nextToken();\n if (token[0] == 'text') {\n current.children.push({ type: 'text', value: token[1], parent: current });\n } else if (token[0] == 'start tag') {\n if (mode == 'chapters') err('Start tags not allowed in chapter title text.');\n var name = token[1];\n if (name != 'v' && name != 'lang' && token[3] != '') {\n err('Only and can have an annotation.');\n }\n if (name == 'c' || name == 'i' || name == 'b' || name == 'u' || name == 'ruby') {\n attach(token);\n } else if (name == 'rt' && current.name == 'ruby') {\n attach(token);\n } else if (name == 'v') {\n if (inScope('v')) {\n err(' cannot be nested inside itself.');\n }\n attach(token);\n current.value = token[3]; // annotation\n if (!token[3]) {\n err(' requires an annotation.');\n }\n } else if (name == 'lang') {\n attach(token);\n current.value = token[3]; // language\n } else {\n err('Incorrect start tag.');\n }\n } else if (token[0] == 'end tag') {\n if (mode == 'chapters') err('End tags not allowed in chapter title text.');\n // XXX check content\n if (token[1] == current.name) {\n current = current.parent;\n } else if (token[1] == 'ruby' && current.name == 'rt') {\n current = current.parent.parent;\n } else {\n err('Incorrect end tag.');\n }\n } else if (token[0] == 'timestamp') {\n if (mode == 'chapters') err('Timestamp not allowed in chapter title text.');\n var timings = new WebVTTCueTimingsAndSettingsParser(token[1], err),\n timestamp = timings.parseTimestamp();\n if (timestamp != undefined) {\n if (timestamp <= cueStart || timestamp >= cueEnd) {\n err('Timestamp must be between start timestamp and end timestamp.');\n }\n if (timestamps.length > 0 && timestamps[timestamps.length - 1] >= timestamp) {\n err('Timestamp must be greater than any previous timestamp.');\n }\n current.children.push({ type: 'timestamp', value: timestamp, parent: current });\n timestamps.push(timestamp);\n }\n }\n }\n while (current.parent) {\n if (current.name != 'v') {\n err('Required end tag missing.');\n }\n current = current.parent;\n }\n return removeCycles(result);\n };\n\n function nextToken() {\n var state = 'data',\n result = '',\n buffer = '',\n classes = [];\n while (line[pos - 1] != undefined || pos == 0) {\n var c = line[pos];\n if (state == 'data') {\n if (c == '&') {\n buffer = c;\n state = 'escape';\n } else if (c == '<' && result == '') {\n state = 'tag';\n } else if (c == '<' || c == undefined) {\n return ['text', result];\n } else {\n result += c;\n }\n } else if (state == 'escape') {\n if (c == '<' || c == undefined) {\n err('Incorrect escape.');\n let m;\n if ((m = buffer.match(/^([0-9]+)$/))) {\n result += String.fromCharCode(m[1]);\n } else {\n if (self.entities[buffer]) {\n result += self.entities[buffer];\n } else {\n result += buffer;\n }\n }\n return ['text', result];\n } else if (c == '&') {\n err('Incorrect escape.');\n result += buffer;\n buffer = c;\n } else if (/[a-z#0-9]/i.test(c)) {\n buffer += c;\n } else if (c == ';') {\n let m;\n if ((m = buffer.match(/^(x?[0-9]+)$/))) {\n // we prepend \"0\" so that x20 be interpreted as hexadecim (0x20)\n result += String.fromCharCode('0' + m[1]);\n } else if (self.entities[buffer + c]) {\n result += self.entities[buffer + c];\n } else if ((m = Object.keys(entities).find((n) => buffer.startsWith(n)))) {\n // partial match\n result += self.entities[m] + buffer.slice(m.length) + c;\n } else {\n err('Incorrect escape.');\n result += buffer + ';';\n }\n state = 'data';\n } else {\n err('Incorrect escape.');\n result += buffer + c;\n state = 'data';\n }\n } else if (state == 'tag') {\n if (c == '\\t' || c == '\\n' || c == '\\f' || c == ' ') {\n state = 'start tag annotation';\n } else if (c == '.') {\n state = 'start tag class';\n } else if (c == '/') {\n state = 'end tag';\n } else if (/\\d/.test(c)) {\n result = c;\n state = 'timestamp tag';\n } else if (c == '>' || c == undefined) {\n if (c == '>') {\n pos++;\n }\n return ['start tag', '', [], ''];\n } else {\n result = c;\n state = 'start tag';\n }\n } else if (state == 'start tag') {\n if (c == '\\t' || c == '\\f' || c == ' ') {\n state = 'start tag annotation';\n } else if (c == '\\n') {\n buffer = c;\n state = 'start tag annotation';\n } else if (c == '.') {\n state = 'start tag class';\n } else if (c == '>' || c == undefined) {\n if (c == '>') {\n pos++;\n }\n return ['start tag', result, [], ''];\n } else {\n result += c;\n }\n } else if (state == 'start tag class') {\n if (c == '\\t' || c == '\\f' || c == ' ') {\n if (buffer) {\n classes.push(buffer);\n }\n buffer = '';\n state = 'start tag annotation';\n } else if (c == '\\n') {\n if (buffer) {\n classes.push(buffer);\n }\n buffer = c;\n state = 'start tag annotation';\n } else if (c == '.') {\n if (buffer) {\n classes.push(buffer);\n }\n buffer = '';\n } else if (c == '>' || c == undefined) {\n if (c == '>') {\n pos++;\n }\n if (buffer) {\n classes.push(buffer);\n }\n return ['start tag', result, classes, ''];\n } else {\n buffer += c;\n }\n } else if (state == 'start tag annotation') {\n if (c == '>' || c == undefined) {\n if (c == '>') {\n pos++;\n }\n buffer = buffer\n .split(/[\\u0020\\t\\f\\r\\n]+/)\n .filter(function (item) {\n if (item) return true;\n })\n .join(' ');\n return ['start tag', result, classes, buffer];\n } else {\n buffer += c;\n }\n } else if (state == 'end tag') {\n if (c == '>' || c == undefined) {\n if (c == '>') {\n pos++;\n }\n return ['end tag', result];\n } else {\n result += c;\n }\n } else if (state == 'timestamp tag') {\n if (c == '>' || c == undefined) {\n if (c == '>') {\n pos++;\n }\n return ['timestamp', result];\n } else {\n result += c;\n }\n } else {\n err('Never happens.'); // The joke is it might.\n }\n // 8\n pos++;\n }\n }\n };\n\n var WebVTTSerializer = function () {\n function serializeTimestamp(seconds) {\n const ms = ('00' + (seconds - Math.floor(seconds)).toFixed(3) * 1000).slice(-3);\n let h = 0,\n m = 0,\n s = 0;\n if (seconds >= 3600) {\n h = Math.floor(seconds / 3600);\n }\n m = Math.floor((seconds - 3600 * h) / 60);\n s = Math.floor(seconds - 3600 * h - 60 * m);\n return (h ? h + ':' : '') + ('' + m).padStart(2, '0') + ':' + ('' + s).padStart(2, '0') + '.' + ms;\n }\n function serializeCueSettings(cue) {\n var result = '';\n const nonDefaultSettings = Object.keys(defaultCueSettings).filter((s) => cue[s] !== defaultCueSettings[s]);\n if (nonDefaultSettings.includes('direction')) {\n result += ' vertical:' + cue.direction;\n }\n if (nonDefaultSettings.includes('alignment')) {\n result += ' align:' + cue.alignment;\n }\n if (nonDefaultSettings.includes('size')) {\n result += ' size:' + cue.size + '%';\n }\n if (nonDefaultSettings.includes('lineAlign') || nonDefaultSettings.includes('linePosition')) {\n result +=\n ' line:' +\n cue.linePosition +\n (cue.snapToLines ? '' : '%') +\n (cue.lineAlign && cue.lineAlign != defaultCueSettings.lineAlign ? ',' + cue.lineAlign : '');\n }\n if (nonDefaultSettings.includes('textPosition') || nonDefaultSettings.includes('positionAlign')) {\n result +=\n ' position:' +\n cue.textPosition +\n '%' +\n (cue.positionAlign && cue.positionAlign !== defaultCueSettings.positionAlign\n ? ',' + cue.positionAlign\n : '');\n }\n return result;\n }\n function serializeTree(tree) {\n var result = '';\n for (var i = 0; i < tree.length; i++) {\n var node = tree[i];\n if (node.type == 'text') {\n result += node.value.replace(/&/g, '&').replace(//g, '>');\n } else if (node.type == 'object') {\n result += '<' + node.name;\n if (node.classes) {\n for (var y = 0; y < node.classes.length; y++) {\n result += '.' + node.classes[y];\n }\n }\n if (node.value) {\n result += ' ' + node.value;\n }\n result += '>';\n if (node.children) result += serializeTree(node.children);\n result += '' + node.name + '>';\n } else if (node.type == 'timestamp') {\n result += '<' + serializeTimestamp(node.value) + '>';\n } else {\n result += '<' + node.value + '>';\n }\n }\n return result;\n }\n function serializeCue(cue) {\n return (\n (cue.id !== undefined ? cue.id + '\\n' : '') +\n serializeTimestamp(cue.startTime) +\n ' --> ' +\n serializeTimestamp(cue.endTime) +\n serializeCueSettings(cue) +\n '\\n' +\n serializeTree(cue.tree.children) +\n '\\n\\n'\n );\n }\n function serializeStyle(style) {\n return 'STYLE\\n' + style + '\\n\\n';\n }\n this.serialize = function (cues, styles) {\n var result = 'WEBVTT\\n\\n';\n if (styles) {\n for (var i = 0; i < styles.length; i++) {\n result += serializeStyle(styles[i]);\n }\n }\n for (var i = 0; i < cues.length; i++) {\n result += serializeCue(cues[i]);\n }\n return result;\n };\n };\n\n function exportify(object) {\n object.WebVTTParser = WebVTTParser;\n object.WebVTTCueTimingsAndSettingsParser = WebVTTCueTimingsAndSettingsParser;\n object.WebVTTCueTextParser = WebVTTCueTextParser;\n object.WebVTTSerializer = WebVTTSerializer;\n }\n if (typeof window !== 'undefined') exportify(window);\n if (typeof exports !== 'undefined') exportify(exports);\n})();\n","exports.interopDefault = function (a) {\n return a && a.__esModule ? a : {default: a};\n};\n\nexports.defineInteropFlag = function (a) {\n Object.defineProperty(a, '__esModule', {value: true});\n};\n\nexports.exportAll = function (source, dest) {\n Object.keys(source).forEach(function (key) {\n if (key === 'default' || key === '__esModule' || dest.hasOwnProperty(key)) {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function () {\n return source[key];\n },\n });\n });\n\n return dest;\n};\n\nexports.export = function (dest, destName, get) {\n Object.defineProperty(dest, destName, {\n enumerable: true,\n get: get,\n });\n};\n"],"names":[],"version":3,"file":"index.js.map","sourceRoot":"../../../"}
\ No newline at end of file
diff --git a/packages/artplayer-plugin-multiple-subtitles/src/index.js b/packages/artplayer-plugin-multiple-subtitles/src/index.js
index 3039b818b..2b04ae0de 100644
--- a/packages/artplayer-plugin-multiple-subtitles/src/index.js
+++ b/packages/artplayer-plugin-multiple-subtitles/src/index.js
@@ -12,7 +12,7 @@ function unescape(str) {
return str.replace(reg, (tag) => map[tag] || tag);
}
-async function loadSubtitleAsVtt(option, art) {
+async function loadVtt(option, art) {
const { getExt, srtToVtt, assToVtt } = art.constructor.utils;
const response = await fetch(option.url);
const buffer = await response.arrayBuffer();
@@ -61,14 +61,18 @@ function mergeTrees(trees, subtitles) {
return result;
}
+const all = '_ALL_';
export default function artplayerPluginMultipleSubtitles({ subtitles, onMerge = () => null }) {
return async (art) => {
- const vtts = await Promise.all(subtitles.map((option) => loadSubtitleAsVtt(option, art)));
const parser = new WebVTTParser();
- const trees = vtts.map((vtt) => parser.parse(vtt, 'metadata'));
const seri = new WebVTTSerializer();
+
+ const vtts = await Promise.all(subtitles.map((option) => loadVtt(option, art)));
+ const trees = vtts.map((vtt) => parser.parse(vtt, 'metadata'));
const tree = onMerge(trees, subtitles) || mergeTrees(trees, subtitles);
- if (tree?.cues?.length) {
+
+ function setTree(tree) {
+ if (!tree?.cues) return;
const vtt = seri.serialize(tree.cues);
const url = URL.createObjectURL(new Blob([vtt], { type: 'text/vtt' }));
art.option.subtitle.escape = false;
@@ -78,15 +82,39 @@ export default function artplayerPluginMultipleSubtitles({ subtitles, onMerge =
type: 'vtt',
onVttLoad: unescape,
});
- } else {
- throw new Error('No subtitle found');
}
+
+ setTree(tree);
+ let _track = all;
+
+ return {
+ name: 'multipleSubtitles',
+ get track() {
+ return _track;
+ },
+ set track(name) {
+ if (name === all || name === '') {
+ _track = all;
+ setTree(tree);
+ } else {
+ const index = subtitles.findIndex((item) => item.name === name);
+ if (index === -1) {
+ throw new Error(`The subtitle "${name}" is not found`);
+ } else {
+ _track = name;
+ setTree(trees[index]);
+ }
+ }
+ },
+ };
};
}
artplayerPluginMultipleSubtitles.env = process.env.NODE_ENV;
artplayerPluginMultipleSubtitles.version = process.env.APP_VER;
artplayerPluginMultipleSubtitles.build = process.env.BUILD_DATE;
+
+artplayerPluginMultipleSubtitles.all = all;
artplayerPluginMultipleSubtitles.WebVTTParser = WebVTTParser;
artplayerPluginMultipleSubtitles.WebVTTSerializer = WebVTTSerializer;