'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.test = exports.serialize = undefined; var _markup = require('./lib/markup'); /** * 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 elementSymbol = Symbol.for('react.element'); // Given element.props.children, or subtree during recursive traversal, // return flattened array of children. const getChildren = function (arg) { let children = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; if (Array.isArray(arg)) { arg.forEach(item => { getChildren(item, children); }); } else if (arg != null && arg !== false) { children.push(arg); } return children; }; const getType = element => { if (typeof element.type === 'string') { return element.type; } if (typeof element.type === 'function') { return element.type.displayName || element.type.name || 'Unknown'; } return 'UNDEFINED'; }; const serialize = exports.serialize = (element, config, indentation, depth, refs, printer) => ++depth > config.maxDepth ? (0, _markup.printElementAsLeaf)(getType(element), config) : (0, _markup.printElement)(getType(element), (0, _markup.printProps)(Object.keys(element.props).filter(key => key !== 'children').sort(), element.props, config, indentation + config.indent, depth, refs, printer), (0, _markup.printChildren)(getChildren(element.props.children), config, indentation + config.indent, depth, refs, printer), config, indentation); const test = exports.test = val => val && val.$$typeof === elementSymbol; exports.default = { serialize, test };