From 7d133abf589ee74d90677482527343ad9a97e0d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Renato=20B=C3=B6hler?= Date: Sun, 5 Apr 2020 11:55:39 -0300 Subject: [PATCH 1/2] fixes node selection not being deregistered upon deletion --- packages/react-diagrams-core/src/entities/node/NodeWidget.tsx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/react-diagrams-core/src/entities/node/NodeWidget.tsx b/packages/react-diagrams-core/src/entities/node/NodeWidget.tsx index 271b268..1070151 100644 --- a/packages/react-diagrams-core/src/entities/node/NodeWidget.tsx +++ b/packages/react-diagrams-core/src/entities/node/NodeWidget.tsx @@ -36,6 +36,9 @@ export class NodeWidget extends React.Component { componentWillUnmount(): void { this.ob.disconnect(); this.ob = null; + + this.listener.deregister(); + this.listener = null; } componentDidUpdate(prevProps: Readonly, prevState: Readonly, snapshot?: any): void { From 696994f0adf7add1cbe75afae06afcde23e9cd77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Renato=20B=C3=B6hler?= Date: Sun, 5 Apr 2020 12:15:27 -0300 Subject: [PATCH 2/2] fixes link widget trying to register listener on ports that aren't set yet --- packages/react-diagrams-core/src/entities/link/LinkWidget.tsx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/react-diagrams-core/src/entities/link/LinkWidget.tsx b/packages/react-diagrams-core/src/entities/link/LinkWidget.tsx index a64c081..5f64cb2 100644 --- a/packages/react-diagrams-core/src/entities/link/LinkWidget.tsx +++ b/packages/react-diagrams-core/src/entities/link/LinkWidget.tsx @@ -47,6 +47,8 @@ export class LinkWidget extends React.Component { installTarget() { this.targetListener && this.targetListener.deregister(); + + if (!this.props.link.getTargetPort()) return; this.targetListener = this.props.link.getTargetPort().registerListener({ reportInitialPosition: (event: BaseEntityEvent) => { this.forceUpdate(); @@ -56,6 +58,8 @@ export class LinkWidget extends React.Component { installSource() { this.sourceListener && this.sourceListener.deregister(); + + if (!this.props.link.getSourcePort()) return; this.sourceListener = this.props.link.getSourcePort().registerListener({ reportInitialPosition: (event: BaseEntityEvent) => { this.forceUpdate();