UNPKG

react-admit-one

Version:

An admit-one ticket for your React components

34 lines (33 loc) 1.17 kB
import getComponentName from './getDisplayName'; import { isForwardRefType } from './react-types'; function describeStackFrame(node) { // skipping components that are neither function/class components, nor html // elements, nor ref-forwarding components (admitOne uses forwardRef). // This will likely be the case with Work instances if (!node.type || (typeof node.type === 'object' && !isForwardRefType(node.type))) { return ''; } var name = getComponentName(node.type); var owner = node._debugOwner, source = node._debugSource; var info = ''; if (source) { var path = source.fileName; var fileName = path.replace(/^(.*)[\\/]/, ''); info = " (at " + fileName + ":" + source.lineNumber + ")"; } else if (owner) { var ownerName = getComponentName(owner.type); info = " (created by " + ownerName + ")"; } return "\n in " + name + info; } export default function captureComponentStack(element) { var frames = ''; var node = element._owner; while (node) { frames += describeStackFrame(node); node = node.return; } return frames; }