{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-jsx/src/external/ansi-to-html.js"],"names":["defaults","fg","bg","newline","escapeXML","stream","colors","getDefaultColors","range","forEach","red","green","blue","setStyleColor","gray","c","l","toHexString","r","g","b","toColorHexString","num","str","toString","length","ref","results","j","len","push","join","generateOutput","stack","token","data","options","result","pushText","handleDisplay","pushForegroundColor","code","parseInt","codeMap","resetStyles","pushTag","pushStyle","closeTag","pushBackgroundColor","stackClone","slice","reverse","map","tag","low","high","notCategory","category","e","categoryForCode","text","style","color","last","pop","tokenize","callback","ansiMatch","ansiHandler","remove","removeXterm256","m","g1","ansiMess","trim","trimRight","split","o","realText","tokens","pattern","sub","process","handler","i","replace","results1","outer","updateStickyStack","stickyStack","filter","Filter","constructor","Object","assign","opts","toHtml","input","buf","element","output"],"mappings":"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","file":"ansi-to-html.js","sourcesContent":["const defaults = {\n    fg: '#FFF',\n    bg: '#000',\n    newline: false,\n    escapeXML: false,\n    stream: false,\n    colors: getDefaultColors()\n};\n\nfunction getDefaultColors() {\n    const colors = {\n        0: '#000',\n        1: '#A00',\n        2: '#0A0',\n        3: '#A50',\n        4: '#00A',\n        5: '#A0A',\n        6: '#0AA',\n        7: '#AAA',\n        8: '#555',\n        9: '#F55',\n        10: '#5F5',\n        11: '#FF5',\n        12: '#55F',\n        13: '#F5F',\n        14: '#5FF',\n        15: '#FFF'\n    };\n\n    range(0, 5).forEach(red => {\n        range(0, 5).forEach(green => {\n            range(0, 5).forEach(blue => setStyleColor(red, green, blue, colors));\n        });\n    });\n\n    range(0, 23).forEach(function (gray) {\n        const c = gray + 232;\n        const l = toHexString(gray * 10 + 8);\n\n        colors[c] = '#' + l + l + l;\n    });\n\n    return colors;\n}\n\n/**\n * @param {number} red\n * @param {number} green\n * @param {number} blue\n * @param {object} colors\n */\nfunction setStyleColor(red, green, blue, colors) {\n    const c = 16 + (red * 36) + (green * 6) + blue;\n    const r = red > 0 ? red * 40 + 55 : 0;\n    const g = green > 0 ? green * 40 + 55 : 0;\n    const b = blue > 0 ? blue * 40 + 55 : 0;\n\n    colors[c] = toColorHexString([r, g, b]);\n}\n\n/**\n * Converts from a number like 15 to a hex string like 'F'\n * @param {number} num\n * @returns {string}\n */\nfunction toHexString(num) {\n    var str = num.toString(16);\n\n    while (str.length < 2) {\n        str = '0' + str;\n    }\n\n    return str;\n}\n\n/**\n * Converts from an array of numbers like [15, 15, 15] to a hex string like 'FFF'\n * @param {[red, green, blue]} ref\n * @returns {string}\n */\nfunction toColorHexString(ref) {\n    var results = [];\n\n    for (var j = 0, len = ref.length; j < len; j++) {\n        results.push(toHexString(ref[j]));\n    }\n\n    return '#' + results.join('');\n}\n\n/**\n * @param {Array} stack\n * @param {string} token\n * @param {*} data\n * @param {object} options\n */\nfunction generateOutput(stack, token, data, options) {\n    var result;\n\n    if (token === 'text') {\n        result = pushText(data, options);\n    } else if (token === 'display') {\n        result = handleDisplay(stack, data, options);\n    } else if (token === 'xterm256') {\n        result = pushForegroundColor(stack, options.colors[data]);\n    }\n\n    return result;\n}\n\n/**\n * @param {Array} stack\n * @param {number} code\n * @param {object} options\n * @returns {*}\n */\nfunction handleDisplay(stack, code, options) {\n    code = parseInt(code, 10);\n    var result;\n\n    const codeMap = {\n        '-1': () => '<br/>',\n        0: () => stack.length && resetStyles(stack),\n        1: () => pushTag(stack, 'b'),\n        3: () => pushTag(stack, 'i'),\n        4: () => pushTag(stack, 'u'),\n        8: () => pushStyle(stack, 'display:none'),\n        9: () => pushTag(stack, 'strike'),\n        22: () => closeTag(stack, 'b'),\n        23: () => closeTag(stack, 'i'),\n        24: () => closeTag(stack, 'u'),\n        39: () => pushForegroundColor(stack, options.fg),\n        49: () => pushBackgroundColor(stack, options.bg)\n    };\n\n    if (codeMap[code]) {\n        result = codeMap[code]();\n    } else if (4 < code && code < 7) {\n        result = pushTag(stack, 'blink');\n    } else if (29 < code && code < 38) {\n        result = pushForegroundColor(stack, options.colors[code - 30]);\n    } else if ((39 < code && code < 48)) {\n        result = pushBackgroundColor(stack, options.colors[code - 40]);\n    } else if ((89 < code && code < 98)) {\n        result = pushForegroundColor(stack, options.colors[8 + (code - 90)]);\n    } else if ((99 < code && code < 108)) {\n        result = pushBackgroundColor(stack, options.colors[8 + (code - 100)]);\n    }\n\n    return result;\n}\n\n/**\n * Clear all the styles\n * @returns {string}\n */\nfunction resetStyles(stack) {\n    var stackClone = stack.slice(0);\n\n    stack.length = 0;\n\n    return stackClone.reverse().map(function (tag) {\n        return '</' + tag + '>';\n    }).join('');\n}\n\n/**\n * Creates an array of numbers ranging from low to high\n * @param {number} low\n * @param {number} high\n * @returns {Array}\n * @example range(3, 7); // creates [3, 4, 5, 6, 7]\n */\nfunction range(low, high) {\n    const results = [];\n\n    for (var j = low; j <= high; j++) {\n        results.push(j);\n    }\n\n    return results;\n}\n\n\n\n/**\n * Returns a new function that is true if value is NOT the same category\n * @param {string} category\n * @returns {function}\n */\nfunction notCategory(category) {\n    return function (e) {\n        return (category === null || e.category !== category) && category !== 'all';\n    };\n}\n\n/**\n * Converts a code into an ansi token type\n * @param {number} code\n * @returns {string}\n */\nfunction categoryForCode(code) {\n    code = parseInt(code, 10);\n    var result = null;\n\n    if (code === 0) {\n        result = 'all';\n    } else if (code === 1) {\n        result = 'bold';\n    } else if ((2 < code && code < 5)) {\n        result = 'underline';\n    } else if ((4 < code && code < 7)) {\n        result = 'blink';\n    } else if (code === 8) {\n        result = 'hide';\n    } else if (code === 9) {\n        result = 'strike';\n    } else if ((29 < code && code < 38) || code === 39 || (89 < code && code < 98)) {\n        result = 'foreground-color';\n    } else if ((39 < code && code < 48) || code === 49 || (99 < code && code < 108)) {\n        result = 'background-color';\n    }\n\n    return result;\n}\n\n/**\n * @param {string} text\n * @param {object} options\n * @returns {string}\n */\nfunction pushText(text, options) {\n  return text;\n}\n\n/**\n * @param {Array} stack\n * @param {string} tag\n * @param {string} [style='']\n * @returns {string}\n */\nfunction pushTag(stack, tag, style) {\n    if (!style) {\n        style = '';\n    }\n\n    stack.push(tag);\n\n    return ['<' + tag, (style ? ' style=\"' + style + '\"' : void 0), '>'].join('');\n}\n\n/**\n * @param {Array} stack\n * @param {string} style\n * @returns {string}\n */\nfunction pushStyle (stack, style) {\n    return pushTag(stack, 'span', style);\n}\n\nfunction pushForegroundColor(stack, color) {\n    return pushTag(stack, 'span', 'color:' + color);\n}\n\nfunction pushBackgroundColor(stack, color) {\n    return pushTag(stack, 'span', 'background-color:' + color);\n}\n\n/**\n * @param {Array} stack\n * @param {string} style\n * @returns {string}\n */\nfunction closeTag(stack, style) {\n    var last;\n\n    if (stack.slice(-1)[0] === style) {\n        last = stack.pop();\n    }\n\n    if (last) {\n        return '</' + style + '>';\n    }\n}\n\n/**\n * @param {string} text\n * @param {object} options\n * @param {function} callback\n * @returns {Array}\n */\nfunction tokenize(text, options, callback) {\n    var ansiMatch = false;\n    var ansiHandler = 3;\n\n    function remove() {\n        return '';\n    }\n\n    function removeXterm256(m, g1) {\n        callback('xterm256', g1);\n        return '';\n    }\n\n    function newline(m) {\n        if (options.newline) {\n            callback('display', -1);\n        } else {\n            callback('text', m);\n        }\n\n        return '';\n    }\n\n    function ansiMess(m, g1) {\n        ansiMatch = true;\n        if (g1.trim().length === 0) {\n            g1 = '0';\n        }\n\n        g1 = g1.trimRight(';').split(';');\n\n        for (var o = 0, len = g1.length; o < len; o++) {\n            callback('display', g1[o]);\n        }\n\n        return '';\n    }\n\n    function realText(m) {\n        callback('text', m);\n\n        return '';\n    }\n\n    /* eslint no-control-regex:0 */\n    const tokens = [{\n        pattern: /^\\x08+/,\n        sub: remove\n    }, {\n        pattern: /^\\x1b\\[[012]?K/,\n        sub: remove\n    }, {\n        pattern: /^\\x1b\\[\\(B/,\n        sub: remove\n    }, {\n        pattern: /^\\x1b\\[38;5;(\\d+)m/,\n        sub: removeXterm256\n    }, {\n        pattern: /^\\n/,\n        sub: newline\n    }, {\n        pattern: /^\\x1b\\[((?:\\d{1,3};?)+|)m/,\n        sub: ansiMess\n    }, {\n        pattern: /^\\x1b\\[?[\\d;]{0,3}/,\n        sub: remove\n    }, {\n        pattern: /^([^\\x1b\\x08\\n]+)/,\n        sub: realText\n    }];\n\n    function process(handler, i) {\n        if (i > ansiHandler && ansiMatch) {\n            return;\n        }\n\n        ansiMatch = false;\n\n        text = text.replace(handler.pattern, handler.sub);\n    }\n\n    var handler;\n    var results1 = [];\n    var length = text.length;\n\n    outer:\n    while (length > 0) {\n        for (var i = 0, o = 0, len = tokens.length; o < len; i = ++o) {\n            handler = tokens[i];\n            process(handler, i);\n\n            if (text.length !== length) {\n                // We matched a token and removed it from the text. We need to\n                // start matching *all* tokens against the new text.\n                length = text.length;\n                continue outer;\n            }\n        }\n\n        if (text.length === length) {\n            break;\n        } else {\n            results1.push(0);\n        }\n\n        length = text.length;\n    }\n\n    return results1;\n}\n\n/**\n * If streaming, then the stack is \"sticky\"\n *\n * @param {Array} stickyStack\n * @param {string} token\n * @param {*} data\n * @returns {Array}\n */\nfunction updateStickyStack(stickyStack, token, data) {\n    if (token !== 'text') {\n        stickyStack = stickyStack.filter(notCategory(categoryForCode(data)));\n        stickyStack.push({token: token, data: data, category: categoryForCode(data)});\n    }\n\n    return stickyStack;\n}\n\nexport default class Filter {\n  \n  constructor(options) {\n    options = options || {};\n\n    if (options.colors) {\n        options.colors = Object.assign({}, defaults.colors, options.colors);\n    }\n\n    this.opts = Object.assign({}, defaults, options);\n    this.stack = [];\n    this.stickyStack = [];\n  }\n  toHtml (input) {\n        input = typeof input === 'string' ? [input] : input;\n        const stack = this.stack;\n        const options = this.opts;\n        const buf = [];\n\n        this.stickyStack.forEach(element => {\n            var output = generateOutput(stack, element.token, element.data, options);\n\n            if (output) {\n                buf.push(output);\n            }\n        });\n\n        tokenize(input.join(''), options, (token, data) => {\n            var output = generateOutput(stack, token, data, options);\n\n            if (output) {\n                buf.push(output);\n            }\n\n            if (options.stream) {\n                this.stickyStack = updateStickyStack(this.stickyStack, token, data);\n            }\n        });\n\n        if (stack.length) {\n            buf.push(resetStyles(stack));\n        }\n\n        return buf.join('');\n    }\n}\n\n"]}