handleConnector.js 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import * as d3 from 'd3';
  2. const createHandleConnector = (config, _leftHandle, _rightHandle) => {
  3. let rightHandle = _rightHandle;
  4. let leftHandle = _leftHandle;
  5. let offset = {
  6. x: leftHandle.width() / 2,
  7. y: -config.connectorHeight / 2
  8. };
  9. let node; // plain svg node
  10. const handleConnector = (selection) => {
  11. let rect = selection.append('rect')
  12. .attr('class', 'mod2-rect__connector')
  13. .attr('height', config.connectorHeight)
  14. .attr('stroke-width', config.strokeWidth)
  15. .attr('stroke', config.colors.axis);
  16. node = rect.node();
  17. handleConnector.update();
  18. };
  19. handleConnector.update = (withTransition = false) => {
  20. let element = d3.select(node);
  21. if (withTransition) {
  22. element = element.transition()
  23. .duration(config.duration);
  24. }
  25. element
  26. .attr('x', leftHandle.x() + offset.x)
  27. .attr('y', leftHandle.y() + offset.y)
  28. .attr('width', rightHandle.x() - leftHandle.x() - leftHandle.width());
  29. };
  30. return handleConnector;
  31. };
  32. export default createHandleConnector;