UNPKG

react-tree-graph

Version:

A react library for generating a graphical tree from data using d3

53 lines (50 loc) 1.82 kB
import _extends from '@babel/runtime/helpers/extends'; import React from 'react'; import wrapHandlers from '../wrapHandlers.js'; function Node(props) { function getTransform() { return `translate(${props.x}, ${props.y})`; } let offset = 0.5; let nodePropsWithDefaults = props.nodeProps; switch (props.shape) { case 'circle': nodePropsWithDefaults = { r: 5, ...nodePropsWithDefaults }; offset += nodePropsWithDefaults.r; break; case 'image': case 'rect': nodePropsWithDefaults = { height: 10, width: 10, ...nodePropsWithDefaults }; nodePropsWithDefaults = { x: -nodePropsWithDefaults.width / 2, y: -nodePropsWithDefaults.height / 2, ...nodePropsWithDefaults }; offset += nodePropsWithDefaults.width / 2; break; } if (props.direction === 'rtl') { offset = -offset; } const wrappedNodeProps = wrapHandlers(nodePropsWithDefaults, props[props.keyProp]); const wrappedGProps = wrapHandlers(props.gProps, props[props.keyProp]); const wrappedTextProps = wrapHandlers(props.textProps, props[props.keyProp]); const label = typeof props[props.labelProp] === 'string' ? /*#__PURE__*/React.createElement("text", _extends({ dx: offset, dy: 5 }, wrappedTextProps), props[props.labelProp]) : /*#__PURE__*/React.createElement("g", _extends({ transform: `translate(${offset}, 5)` }, wrappedTextProps), props[props.labelProp]); return /*#__PURE__*/React.createElement("g", _extends({}, wrappedGProps, { transform: getTransform(), direction: props.direction === 'rtl' ? 'rtl' : null }), /*#__PURE__*/React.createElement(props.shape, wrappedNodeProps), label); } export { Node as default };