propTypes = { object: PropTypes.object.isRequired, shouldRenderTooltip: PropTypes.bool, }; function DocumentRep(props) { const grip = props.object; const shouldRenderTooltip = props.shouldRenderTooltip; const location = getLocation(grip); const config = getElementConfig({ grip, location, shouldRenderTooltip }); return span( config, getTitle(grip), location ? span({ className: "location" }, ` ${location}`) : null ); } function getElementConfig(opts) { const { grip, location, shouldRenderTooltip } = opts; const config = { "data-link-actor-id": grip.actor, className: "objectBox objectBox-document", }; if (!shouldRenderTooltip || !location) { return config; } config.title = `${grip.class} ${location}`; return config; } function getLocation(grip) { const location = grip.preview.location; return location ? getURLDisplayString(location) : null; } function getTitle(grip) { return span( { className: "objectTitle", }, grip.class ); } // Registration function supportsObject(object, noGrip = false) { return object?.preview && getGripType(object, noGrip) === "HTMLDocument"; } const rep = wrapRender(DocumentRep); // Exports from this module export { rep, supportsObject }; PK