'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); exports.printElementAsLeaf = exports.printElement = exports.printComment = exports.printText = exports.printChildren = exports.printProps = undefined; var _escape_html = require('./escape_html'); var _escape_html2 = _interopRequireDefault(_escape_html); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : {default: obj}; } // Return empty string if keys is empty. /** * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * */ const printProps = (exports.printProps = ( keys, props, config, indentation, depth, refs, printer ) => { const indentationNext = indentation + config.indent; const colors = config.colors; return keys .map(key => { const value = props[key]; let printed = printer(value, config, indentationNext, depth, refs); if (typeof value !== 'string') { if (printed.indexOf('\n') !== -1) { printed = config.spacingOuter + indentationNext + printed + config.spacingOuter + indentation; } printed = '{' + printed + '}'; } return ( config.spacingInner + indentation + colors.prop.open + key + colors.prop.close + '=' + colors.value.open + printed + colors.value.close ); }) .join(''); }); // Return empty string if children is empty. const printChildren = (exports.printChildren = ( children, config, indentation, depth, refs, printer ) => children .map( child => config.spacingOuter + indentation + (typeof child === 'string' ? printText(child, config) : printer(child, config, indentation, depth, refs)) ) .join('')); const printText = (exports.printText = (text, config) => { const contentColor = config.colors.content; return ( contentColor.open + (0, _escape_html2.default)(text) + contentColor.close ); }); const printComment = (exports.printComment = (comment, config) => { const commentColor = config.colors.comment; return ( commentColor.open + '' + commentColor.close ); }); // Separate the functions to format props, children, and element, // so a plugin could override a particular function, if needed. // Too bad, so sad: the traditional (but unnecessary) space // in a self-closing tagColor requires a second test of printedProps. const printElement = (exports.printElement = ( type, printedProps, printedChildren, config, indentation ) => { const tagColor = config.colors.tag; return ( tagColor.open + '<' + type + (printedProps && tagColor.close + printedProps + config.spacingOuter + indentation + tagColor.open) + (printedChildren ? '>' + tagColor.close + printedChildren + config.spacingOuter + indentation + tagColor.open + '' + tagColor.close ); }); const printElementAsLeaf = (exports.printElementAsLeaf = (type, config) => { const tagColor = config.colors.tag; return ( tagColor.open + '<' + type + tagColor.close + ' …' + tagColor.open + ' />' + tagColor.close ); });