"use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } // Generated by CoffeeScript 2.5.1 var AnsiPainter, styles, tags, tools, hasProp = {}.hasOwnProperty; tools = require('./tools'); tags = require('./ansiPainter/tags'); styles = require('./ansiPainter/styles'); module.exports = AnsiPainter = function () { var self; var AnsiPainter = /*#__PURE__*/function () { function AnsiPainter() { _classCallCheck(this, AnsiPainter); } _createClass(AnsiPainter, [{ key: "paint", value: function paint(s) { return this._replaceSpecialStrings(this._renderDom(this._parse(s))); } }, { key: "_replaceSpecialStrings", value: function _replaceSpecialStrings(str) { return str.replace(/&sp;/g, ' ').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace(/&/g, '&'); } }, { key: "_parse", value: function _parse(string) { var injectFakeRoot = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; if (injectFakeRoot) { string = '' + string + ''; } return tools.toDom(string); } }, { key: "_renderDom", value: function _renderDom(dom) { var parentStyles; parentStyles = { bg: 'none', color: 'none' }; return this._renderChildren(dom, parentStyles); } }, { key: "_renderChildren", value: function _renderChildren(children, parentStyles) { var child, n, ret; ret = ''; for (n in children) { if (!hasProp.call(children, n)) continue; child = children[n]; ret += this._renderNode(child, parentStyles); } return ret; } }, { key: "_renderNode", value: function _renderNode(node, parentStyles) { if (node.type === 'text') { return this._renderTextNode(node, parentStyles); } else { return this._renderTag(node, parentStyles); } } }, { key: "_renderTextNode", value: function _renderTextNode(node, parentStyles) { return this._wrapInStyle(node.data, parentStyles); } }, { key: "_wrapInStyle", value: function _wrapInStyle(str, style) { return styles.color(style.color) + styles.bg(style.bg) + str + styles.none(); } }, { key: "_renderTag", value: function _renderTag(node, parentStyles) { var currentStyles, tagStyles; tagStyles = this._getStylesForTagName(node.name); currentStyles = this._mixStyles(parentStyles, tagStyles); return this._renderChildren(node.children, currentStyles); } }, { key: "_mixStyles", value: function _mixStyles() { var final, i, key, len, style, val; final = {}; for (var _len = arguments.length, styles = new Array(_len), _key = 0; _key < _len; _key++) { styles[_key] = arguments[_key]; } for (i = 0, len = styles.length; i < len; i++) { style = styles[i]; for (key in style) { if (!hasProp.call(style, key)) continue; val = style[key]; if (final[key] == null || val !== 'inherit') { final[key] = val; } } } return final; } }, { key: "_getStylesForTagName", value: function _getStylesForTagName(name) { if (tags[name] == null) { throw Error("Unknown tag name `".concat(name, "`")); } return tags[name]; } }], [{ key: "getInstance", value: function getInstance() { if (self._instance == null) { self._instance = new self(); } return self._instance; } }, { key: "paint", value: function paint(str) { return self.getInstance().paint(str); } }, { key: "strip", value: function strip(s) { return s.replace(/\x1b\[[0-9]+m/g, ''); } }]); return AnsiPainter; }(); ; AnsiPainter.tags = tags; self = AnsiPainter; return AnsiPainter; }.call(void 0);