123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- 'use strict';
- Object.defineProperty(exports, '__esModule', {
- value: true
- });
- exports.printElementAsLeaf = exports.printElement = exports.printComment = exports.printText = exports.printChildren = exports.printProps = void 0;
- var _escapeHTML = _interopRequireDefault(require('./escapeHTML'));
- function _interopRequireDefault(obj) {
- return obj && obj.__esModule ? obj : {default: obj};
- }
- /**
- * Copyright (c) Facebook, Inc. and its affiliates. 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.
- */
- // Return empty string if keys is empty.
- const 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.
- exports.printProps = printProps;
- const 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('');
- exports.printChildren = printChildren;
- const printText = (text, config) => {
- const contentColor = config.colors.content;
- return (
- contentColor.open + (0, _escapeHTML.default)(text) + contentColor.close
- );
- };
- exports.printText = printText;
- const printComment = (comment, config) => {
- const commentColor = config.colors.comment;
- return (
- commentColor.open +
- '<!--' +
- (0, _escapeHTML.default)(comment) +
- '-->' +
- 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.
- exports.printComment = printComment;
- const 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 +
- '</' +
- type
- : (printedProps && !config.min ? '' : ' ') + '/') +
- '>' +
- tagColor.close
- );
- };
- exports.printElement = printElement;
- const printElementAsLeaf = (type, config) => {
- const tagColor = config.colors.tag;
- return (
- tagColor.open +
- '<' +
- type +
- tagColor.close +
- ' …' +
- tagColor.open +
- ' />' +
- tagColor.close
- );
- };
- exports.printElementAsLeaf = printElementAsLeaf;
|