string, PropTypes.object]).isRequired, // Equal character rendered between property name and value. equal: PropTypes.string, mode: PropTypes.oneOf(Object.values(MODE)), onDOMNodeMouseOver: PropTypes.func, onDOMNodeMouseOut: PropTypes.func, onInspectIconClick: PropTypes.func, // Normally a PropRep will quote a property name that isn't valid // when unquoted; but this flag can be used to suppress the // quoting. suppressQuotes: PropTypes.bool, shouldRenderTooltip: PropTypes.bool, }; /** * Function that given a name, a delimiter and an object returns an array * of React elements representing an object property (e.g. `name: value`) * * @param {object} props * @return {Array} Array of React elements. */ function PropRep(props) { let { equal, keyClassName, mode, name, shouldRenderTooltip, suppressQuotes } = props; const className = `nodeName${keyClassName ? " " + keyClassName : ""}`; let key; // The key can be a simple string, for plain objects, // or another object for maps and weakmaps. if (typeof name === "string") { if (!suppressQuotes) { name = maybeEscapePropertyName(name); } key = span( { className: appendRTLClassNameIfNeeded(className, name), title: shouldRenderTooltip ? name : null, }, name ); } else { key = props.Rep({ ...props, className, object: name, mode: mode || MODE.TINY, defaultRep: undefined, }); } return [ key, span( { className: "objectEqual", }, equal ), props.Rep({ ...props }), ]; } const rep = wrapRender(PropRep); // Exports from this module export default rep; PK