index.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import React from 'react';
  2. import { pick } from '@utils';
  3. import { STATUS_CANVAS_SELECTED } from '@common/constants';
  4. import withGGEditorContext from '@common/context/GGEditorContext/withGGEditorContext';
  5. import Panel from './Panel';
  6. class DetailPanel extends React.Component {
  7. state = {
  8. status: '',
  9. }
  10. constructor(props) {
  11. super(props);
  12. this.bindEvent();
  13. }
  14. bindEvent() {
  15. const { onAfterAddPage } = this.props;
  16. onAfterAddPage(({ page }) => {
  17. this.setState({
  18. status: STATUS_CANVAS_SELECTED,
  19. });
  20. page.on('statuschange', ({ status }) => {
  21. this.setState({ status });
  22. });
  23. });
  24. }
  25. render() {
  26. const { children } = this.props;
  27. const { status } = this.state;
  28. if (!status) {
  29. return null;
  30. }
  31. return (
  32. <div {...pick(this.props, ['style', 'className'])}>
  33. {
  34. React.Children.toArray(children).map(child => React.cloneElement(child, {
  35. status,
  36. }))
  37. }
  38. </div>
  39. );
  40. }
  41. }
  42. export const NodePanel = Panel.create('node');
  43. export const EdgePanel = Panel.create('edge');
  44. export const GroupPanel = Panel.create('group');
  45. export const MultiPanel = Panel.create('multi');
  46. export const CanvasPanel = Panel.create('canvas');
  47. export default withGGEditorContext(DetailPanel);