{"version":3,"sources":["../src/Debug.js"],"names":["typeName","spaces","indent","debugNode","debugNodes","booleanValue","Function","bind","call","Boolean","prototype","valueOf","node","adapter","displayNameOfNode","type","displayName","n","Array","join","depth","string","split","map","x","propString","prop","options","String","quoteStyle","Number","verbose","propsString","props","keys","Object","filter","key","indentChildren","childrenStrs","indentLength","length","isRSTNodeLike","nodeType","name","isValidElement","ignoreProps","beforeProps","afterProps","childrenIndented","nodeClose","nodes","undefined"],"mappings":"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","file":"Debug.js","sourcesContent":["import escape from 'lodash.escape';\nimport functionName from 'function.prototype.name';\nimport isString from 'is-string';\nimport isNumber from 'is-number-object';\nimport isCallable from 'is-callable';\nimport isBoolean from 'is-boolean-object';\nimport inspect from 'object-inspect';\nimport has from 'has';\n\nimport {\n propsOfNode,\n childrenOfNode,\n} from './RSTTraversal';\nimport getAdapter from './getAdapter';\n\nconst booleanValue = Function.bind.call(Function.call, Boolean.prototype.valueOf);\n\nexport function typeName(node) {\n const adapter = getAdapter();\n if (adapter.displayNameOfNode) {\n return getAdapter().displayNameOfNode(node) || 'Component';\n }\n return typeof node.type === 'function'\n ? (node.type.displayName || functionName(node.type) || 'Component')\n : node.type;\n}\n\nexport function spaces(n) {\n return Array(n + 1).join(' ');\n}\n\nexport function indent(depth, string) {\n return string.split('\\n').map((x) => `${spaces(depth)}${x}`).join('\\n');\n}\n\nfunction propString(prop, options) {\n if (isString(prop)) {\n return inspect(String(prop), { quoteStyle: 'double' });\n }\n if (isNumber(prop)) {\n return `{${inspect(Number(prop))}}`;\n }\n if (isBoolean(prop)) {\n return `{${inspect(booleanValue(prop))}}`;\n }\n if (isCallable(prop)) {\n return `{${inspect(prop)}}`;\n }\n if (typeof prop === 'object') {\n if (options.verbose) {\n return `{${inspect(prop)}}`;\n }\n\n return '{{...}}';\n }\n return `{[${typeof prop}]}`;\n}\n\nfunction propsString(node, options) {\n const props = propsOfNode(node);\n const keys = Object.keys(props).filter((x) => x !== 'children');\n return keys.map((key) => `${key}=${propString(props[key], options)}`).join(' ');\n}\n\nfunction indentChildren(childrenStrs, indentLength) {\n return childrenStrs.length\n ? `\\n${childrenStrs.map((x) => indent(indentLength, x)).join('\\n')}\\n`\n : '';\n}\n\nfunction isRSTNodeLike(node) {\n return has(node, 'nodeType')\n && typeof node.nodeType === 'string'\n && has(node, 'type')\n && has(node, 'key')\n && has(node, 'ref')\n && has(node, 'instance')\n && has(node, 'rendered');\n}\n\nexport function debugNode(node, indentLength = 2, options = {}) {\n if (typeof node === 'string' || typeof node === 'number') return escape(node);\n if (typeof node === 'function') {\n const name = functionName(node);\n return `[function${name ? ` ${name}` : ''}]`;\n }\n if (!node) return '';\n\n const adapter = getAdapter();\n if (!adapter.isValidElement(node) && !isRSTNodeLike(node)) {\n return `{${inspect(node)}}`;\n }\n\n const childrenStrs = childrenOfNode(node)\n .map((n) => debugNode(n, indentLength, options))\n .filter(Boolean);\n const type = typeName(node);\n\n const props = options.ignoreProps ? '' : propsString(node, options);\n const beforeProps = props ? ' ' : '';\n const afterProps = childrenStrs.length\n ? '>'\n : ' ';\n const childrenIndented = indentChildren(childrenStrs, indentLength);\n const nodeClose = childrenStrs.length ? `` : '/>';\n return `<${type}${beforeProps}${props}${afterProps}${childrenIndented}${nodeClose}`;\n}\n\nexport function debugNodes(nodes, options = {}) {\n return nodes.map((node) => debugNode(node, undefined, options)).join('\\n\\n\\n');\n}\n"]}