Index: imaps-frontend/node_modules/renderkid/lib/RenderKid.js
===================================================================
--- imaps-frontend/node_modules/renderkid/lib/RenderKid.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/renderkid/lib/RenderKid.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,241 @@
+"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, Layout, RenderKid, Styles, blockStyleApplier, cloneAndMergeDeep, inlineStyleApplier, isPlainObject, stripAnsi, terminalWidth, tools;
+inlineStyleApplier = require('./renderKid/styleApplier/inline');
+blockStyleApplier = require('./renderKid/styleApplier/block');
+isPlainObject = require('lodash/isPlainObject');
+
+var _require = require('./tools');
+
+cloneAndMergeDeep = _require.cloneAndMergeDeep;
+AnsiPainter = require('./AnsiPainter');
+Styles = require('./renderKid/Styles');
+Layout = require('./Layout');
+tools = require('./tools');
+stripAnsi = require('strip-ansi');
+terminalWidth = require('./tools').getCols();
+
+module.exports = RenderKid = function () {
+  var self;
+
+  var RenderKid = /*#__PURE__*/function () {
+    function RenderKid() {
+      var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+
+      _classCallCheck(this, RenderKid);
+
+      this.tools = self.tools;
+      this._config = cloneAndMergeDeep(self._defaultConfig, config);
+
+      this._initStyles();
+    }
+
+    _createClass(RenderKid, [{
+      key: "_initStyles",
+      value: function _initStyles() {
+        return this._styles = new Styles();
+      }
+    }, {
+      key: "style",
+      value: function style() {
+        return this._styles.setRule.apply(this._styles, arguments);
+      }
+    }, {
+      key: "_getStyleFor",
+      value: function _getStyleFor(el) {
+        return this._styles.getStyleFor(el);
+      }
+    }, {
+      key: "render",
+      value: function render(input) {
+        var withColors = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+        return this._paint(this._renderDom(this._toDom(input)), withColors);
+      }
+    }, {
+      key: "_toDom",
+      value: function _toDom(input) {
+        if (typeof input === 'string') {
+          return this._parse(input);
+        } else if (isPlainObject(input) || Array.isArray(input)) {
+          return this._objToDom(input);
+        } else {
+          throw Error("Invalid input type. Only strings, arrays and objects are accepted");
+        }
+      }
+    }, {
+      key: "_objToDom",
+      value: function _objToDom(o) {
+        var injectFakeRoot = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+
+        if (injectFakeRoot) {
+          o = {
+            body: o
+          };
+        }
+
+        return tools.objectToDom(o);
+      }
+    }, {
+      key: "_paint",
+      value: function _paint(text, withColors) {
+        var painted;
+        painted = AnsiPainter.paint(text);
+
+        if (withColors) {
+          return painted;
+        } else {
+          return stripAnsi(painted);
+        }
+      }
+    }, {
+      key: "_parse",
+      value: function _parse(string) {
+        var injectFakeRoot = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+
+        if (injectFakeRoot) {
+          string = '<body>' + string + '</body>';
+        }
+
+        return tools.stringToDom(string);
+      }
+    }, {
+      key: "_renderDom",
+      value: function _renderDom(dom) {
+        var bodyTag, layout, rootBlock;
+        bodyTag = dom[0];
+        layout = new Layout(this._config.layout);
+        rootBlock = layout.getRootBlock();
+
+        this._renderBlockNode(bodyTag, null, rootBlock);
+
+        return layout.get();
+      }
+    }, {
+      key: "_renderChildrenOf",
+      value: function _renderChildrenOf(parentNode, parentBlock) {
+        var i, len, node, nodes;
+        nodes = parentNode.children;
+
+        for (i = 0, len = nodes.length; i < len; i++) {
+          node = nodes[i];
+
+          this._renderNode(node, parentNode, parentBlock);
+        }
+      }
+    }, {
+      key: "_renderNode",
+      value: function _renderNode(node, parentNode, parentBlock) {
+        if (node.type === 'text') {
+          this._renderText(node, parentNode, parentBlock);
+        } else if (node.name === 'br') {
+          this._renderBr(node, parentNode, parentBlock);
+        } else if (this._isBlock(node)) {
+          this._renderBlockNode(node, parentNode, parentBlock);
+        } else if (this._isNone(node)) {
+          return;
+        } else {
+          this._renderInlineNode(node, parentNode, parentBlock);
+        }
+      }
+    }, {
+      key: "_renderText",
+      value: function _renderText(node, parentNode, parentBlock) {
+        var ref, text;
+        text = node.data;
+        text = text.replace(/\s+/g, ' '); // let's only trim if the parent is an inline element
+
+        if ((parentNode != null ? (ref = parentNode.styles) != null ? ref.display : void 0 : void 0) !== 'inline') {
+          text = text.trim();
+        }
+
+        if (text.length === 0) {
+          return;
+        }
+
+        text = text.replace(/&nl;/g, "\n");
+        return parentBlock.write(text);
+      }
+    }, {
+      key: "_renderBlockNode",
+      value: function _renderBlockNode(node, parentNode, parentBlock) {
+        var after, before, block, blockConfig;
+
+        var _blockStyleApplier$ap = blockStyleApplier.applyTo(node, this._getStyleFor(node));
+
+        before = _blockStyleApplier$ap.before;
+        after = _blockStyleApplier$ap.after;
+        blockConfig = _blockStyleApplier$ap.blockConfig;
+        block = parentBlock.openBlock(blockConfig);
+
+        if (before !== '') {
+          block.write(before);
+        }
+
+        this._renderChildrenOf(node, block);
+
+        if (after !== '') {
+          block.write(after);
+        }
+
+        return block.close();
+      }
+    }, {
+      key: "_renderInlineNode",
+      value: function _renderInlineNode(node, parentNode, parentBlock) {
+        var after, before;
+
+        var _inlineStyleApplier$a = inlineStyleApplier.applyTo(node, this._getStyleFor(node));
+
+        before = _inlineStyleApplier$a.before;
+        after = _inlineStyleApplier$a.after;
+
+        if (before !== '') {
+          parentBlock.write(before);
+        }
+
+        this._renderChildrenOf(node, parentBlock);
+
+        if (after !== '') {
+          return parentBlock.write(after);
+        }
+      }
+    }, {
+      key: "_renderBr",
+      value: function _renderBr(node, parentNode, parentBlock) {
+        return parentBlock.write("\n");
+      }
+    }, {
+      key: "_isBlock",
+      value: function _isBlock(node) {
+        return !(node.type === 'text' || node.name === 'br' || this._getStyleFor(node).display !== 'block');
+      }
+    }, {
+      key: "_isNone",
+      value: function _isNone(node) {
+        return !(node.type === 'text' || node.name === 'br' || this._getStyleFor(node).display !== 'none');
+      }
+    }]);
+
+    return RenderKid;
+  }();
+
+  ;
+  self = RenderKid;
+  RenderKid.AnsiPainter = AnsiPainter;
+  RenderKid.Layout = Layout;
+  RenderKid.quote = tools.quote;
+  RenderKid.tools = tools;
+  RenderKid._defaultConfig = {
+    layout: {
+      terminalWidth: terminalWidth
+    }
+  };
+  return RenderKid;
+}.call(void 0);
