You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							147 lines
						
					
					
						
							3.5 KiB
						
					
					
				
			
		
		
	
	
							147 lines
						
					
					
						
							3.5 KiB
						
					
					
				'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;
 | 
						|
 |