@@ -119,6 +119,8 @@ interface CardInfoMap {
119
119
}
120
120
}
121
121
122
+ const CANVAS_ANNOTATION_ID = 'canvas-annotation' ;
123
+
122
124
export default class Annotation extends Base {
123
125
constructor ( config ?: AnnotationConfig ) {
124
126
super ( config ) ;
@@ -413,7 +415,7 @@ export default class Annotation extends Base {
413
415
414
416
const isCanvas = item . isCanvas ?.( ) ;
415
417
416
- const itemId = isCanvas ? 'canvas-annotation' : item . getID ( ) ;
418
+ const itemId = isCanvas ? CANVAS_ANNOTATION_ID : item . getID ( ) ;
417
419
let { card, link, x, y, title, content } = cardInfoMap [ itemId ] || { } ;
418
420
419
421
const getTitle = this . get ( 'getTitle' ) ;
@@ -588,7 +590,7 @@ export default class Annotation extends Base {
588
590
public hideCard ( id ) {
589
591
if ( this . destroyed ) return ;
590
592
const cardInfoMap = this . get ( 'cardInfoMap' ) ;
591
- if ( ! cardInfoMap ) return ;
593
+ if ( ! cardInfoMap || ! cardInfoMap [ id ] ) return ;
592
594
const { card, link } = cardInfoMap [ id ] ;
593
595
modifyCSS ( card , { display : 'none' } ) ;
594
596
link ?. hide ( ) ;
@@ -876,7 +878,7 @@ export default class Annotation extends Base {
876
878
const graph = this . get ( 'graph' ) ;
877
879
Object . values ( cardInfoMap ) . forEach ( info => {
878
880
const { id, card, isCanvas } = info ;
879
- if ( isCanvas || card . style . display === 'none' ) return ;
881
+ if ( ! card || isCanvas || card . style . display === 'none' ) return ;
880
882
const item = graph . findById ( id ) ;
881
883
if ( item && item . isVisible ( ) ) {
882
884
this . toggleAnnotation ( item ) ;
@@ -904,7 +906,7 @@ export default class Annotation extends Base {
904
906
const data = [ ] ;
905
907
Object . values ( cardInfoMap ) . forEach ( info => {
906
908
const { title, content, x, y, id, collapsed, card } = info ;
907
- if ( card . style . display === 'none' && ! saveClosed ) return ;
909
+ if ( card && card . style . display === 'none' && ! saveClosed ) return ;
908
910
const item = graph . findById ( id ) || graph . get ( 'canvas' ) ;
909
911
data . push ( {
910
912
id,
@@ -913,7 +915,7 @@ export default class Annotation extends Base {
913
915
collapsed,
914
916
title : title || getTitle ?.( item ) ,
915
917
content : content || getContent ?.( item ) ,
916
- visible : card . style . display !== 'none'
918
+ visible : card && card . style . display !== 'none'
917
919
} )
918
920
} ) ;
919
921
return data ;
@@ -923,10 +925,19 @@ export default class Annotation extends Base {
923
925
const graph = this . get ( 'graph' ) ;
924
926
data . forEach ( info => {
925
927
const { id, x, y, title, content, collapsed, visible } = info ;
926
- const item = graph . findById ( id ) || graph . get ( 'canvas' ) ;
928
+ let item = graph . findById ( id ) ;
929
+ if ( ! item && id === CANVAS_ANNOTATION_ID ) {
930
+ item = graph . get ( 'canvas' ) ;
931
+ }
932
+ if ( ! item ) {
933
+ const cardInfoMap = this . get ( 'cardInfoMap' ) || { } ;
934
+ cardInfoMap [ id ] = info ;
935
+ this . set ( 'cardInfoMap' , cardInfoMap ) ;
936
+ return ;
937
+ }
927
938
this . toggleAnnotation ( item , { x, y, title, content, collapsed } ) ;
928
939
if ( ! visible ) this . hideCard ( id ) ;
929
- } )
940
+ } ) ;
930
941
}
931
942
932
943
/**
0 commit comments