1- import BaseAnnotator from '../common/BaseAnnotator' ;
1+ import BaseAnnotator , { Options } from '../common/BaseAnnotator' ;
22import BaseManager from '../common/BaseManager' ;
33import { centerRegion , isRegion , RegionManager } from '../region' ;
4+ import { Event } from '../@types' ;
45import { getAnnotation } from '../store/annotations' ;
56import { HighlightManager } from '../highlight' ;
7+ import { Mode } from '../store' ;
68import { scrollToLocation } from '../utils/scroll' ;
79import './DocumentAnnotator.scss' ;
810
@@ -11,6 +13,12 @@ export default class DocumentAnnotator extends BaseAnnotator {
1113
1214 managers : Map < number , Set < BaseManager > > = new Map ( ) ;
1315
16+ constructor ( options : Options ) {
17+ super ( options ) ;
18+
19+ this . addListener ( Event . ANNOTATIONS_MODE_CHANGE , this . handleChangeMode ) ;
20+ }
21+
1422 getAnnotatedElement ( ) : HTMLElement | null | undefined {
1523 return this . containerEl ?. querySelector ( '.bp-doc' ) ;
1624 }
@@ -57,6 +65,18 @@ export default class DocumentAnnotator extends BaseAnnotator {
5765 return this . annotatedEl ? Array . from ( this . annotatedEl . querySelectorAll ( '.page' ) ) : [ ] ;
5866 }
5967
68+ handleChangeMode = ( { mode } : { mode : Mode } ) : void => {
69+ if ( ! this . annotatedEl ) {
70+ return ;
71+ }
72+
73+ if ( mode === Mode . HIGHLIGHT ) {
74+ this . annotatedEl . classList . add ( 'ba-is-highlighting' ) ;
75+ } else {
76+ this . annotatedEl . classList . remove ( 'ba-is-highlighting' ) ;
77+ }
78+ } ;
79+
6080 render ( ) : void {
6181 this . getPages ( )
6282 . filter ( ( { dataset } ) => dataset . loaded && dataset . pageNumber )
0 commit comments