11import { Renderer , Calculator } from '@idraw/renderer' ;
22import {
33 // throttle,
4- calcElementsContextSize ,
5- EventEmitter
4+ calcMaterialsContextSize ,
5+ EventEmitter ,
66} from '@idraw/util' ;
77import type {
88 Data ,
@@ -11,9 +11,9 @@ import type {
1111 BoardMiddlewareObject ,
1212 BoardWatcherEventMap ,
1313 ViewSizeInfo ,
14- PointSize ,
14+ Point ,
1515 BoardExtendEventMap ,
16- UtilEventEmitter
16+ UtilEventEmitter ,
1717} from '@idraw/types' ;
1818import { BoardWatcher } from './watcher' ;
1919import { Sharer } from './sharer' ;
@@ -40,18 +40,19 @@ export class Board<T extends BoardExtendEventMap = BoardExtendEventMap> {
4040 #eventHub: EventEmitter < T > = new EventEmitter < T > ( ) ;
4141 #hasDestroyed: boolean = false ;
4242 constructor ( opts : BoardOptions ) {
43- const { boardContent } = opts ;
43+ const { boardContent, container } = opts ;
4444 const sharer = new Sharer ( ) ;
4545
4646 const watcher = new BoardWatcher ( {
4747 boardContent,
4848 sharer,
49- disabled : opts ?. disableWatcher
49+ disabled : opts ?. disableWatcher ,
50+ container,
5051 } ) ;
5152 const renderer = new Renderer ( {
5253 viewContext : boardContent . viewContext ,
5354 tempContext : boardContent . tempContext ,
54- sharer
55+ sharer,
5556 } ) ;
5657 const calculator = renderer . getCalculator ( ) ;
5758
@@ -70,7 +71,7 @@ export class Board<T extends BoardExtendEventMap = BoardExtendEventMap> {
7071 } ,
7172 afterDrawFrame : ( e ) => {
7273 this . #handleAfterDrawFrame( e ) ;
73- }
74+ } ,
7475 } ) ;
7576 this . #init( ) ;
7677 this . #resetActiveMiddlewareObjs( ) ;
@@ -131,6 +132,7 @@ export class Board<T extends BoardExtendEventMap = BoardExtendEventMap> {
131132 this . #watcher. on ( 'scrollX' , this . #handleScrollX. bind ( this ) ) ;
132133 this . #watcher. on ( 'scrollY' , this . #handleScrollY. bind ( this ) ) ;
133134 this . #watcher. on ( 'resize' , this . #handleResize. bind ( this ) ) ;
135+ this . #watcher. on ( 'click' , this . #handleClick. bind ( this ) ) ;
134136 this . #watcher. on ( 'doubleClick' , this . #handleDoubleClick. bind ( this ) ) ;
135137 this . #watcher. on ( 'contextMenu' , this . #handleContextMenu. bind ( this ) ) ;
136138 }
@@ -190,6 +192,16 @@ export class Board<T extends BoardExtendEventMap = BoardExtendEventMap> {
190192 }
191193 }
192194
195+ #handleClick( e : BoardWatcherEventMap [ 'click' ] ) {
196+ for ( let i = 0 ; i < this . #activeMiddlewareObjs. length ; i ++ ) {
197+ const obj = this . #activeMiddlewareObjs[ i ] ;
198+ const result = obj ?. click ?.( e ) ;
199+ if ( result === false ) {
200+ return ;
201+ }
202+ }
203+ }
204+
193205 #handleDoubleClick( e : BoardWatcherEventMap [ 'doubleClick' ] ) {
194206 for ( let i = 0 ; i < this . #activeMiddlewareObjs. length ; i ++ ) {
195207 const obj = this . #activeMiddlewareObjs[ i ] ;
@@ -320,21 +332,21 @@ export class Board<T extends BoardExtendEventMap = BoardExtendEventMap> {
320332 const viewSizeInfo = sharer . getActiveViewSizeInfo ( ) ;
321333 const viewScaleInfo = sharer . getActiveViewScaleInfo ( ) ;
322334 // const currentScaleInfo = sharer.getActiveViewScaleInfo();
323- const newViewContextSize = calcElementsContextSize ( data . elements , {
335+ const newViewContextSize = calcMaterialsContextSize ( data . materials , {
324336 viewWidth : viewSizeInfo . width ,
325337 viewHeight : viewSizeInfo . height ,
326- extend : true
338+ extend : true ,
327339 } ) ;
328340
329- this . #viewer. resetVirtualFlatItemMap ( data , {
341+ this . #viewer. resetVirtualItemMap ( data , {
330342 viewSizeInfo,
331- viewScaleInfo
343+ viewScaleInfo,
332344 } ) ;
333345
334346 this . #viewer. drawFrame ( ) ;
335347 const newViewSizeInfo = {
336348 ...viewSizeInfo ,
337- ...newViewContextSize
349+ ...newViewContextSize ,
338350 } ;
339351
340352 this . #sharer. setActiveViewSizeInfo ( newViewSizeInfo ) ;
@@ -372,7 +384,7 @@ export class Board<T extends BoardExtendEventMap = BoardExtendEventMap> {
372384 this . #middlewareMap. set ( middleware , {
373385 status : 'enable' ,
374386 middlewareObject : obj ,
375- config
387+ config,
376388 } ) ;
377389 this . #resetActiveMiddlewareObjs( ) ;
378390 }
@@ -398,14 +410,14 @@ export class Board<T extends BoardExtendEventMap = BoardExtendEventMap> {
398410 }
399411 }
400412
401- scale ( opts : { scale : number ; point : PointSize ; ignoreUpdateVisibleStatus ?: boolean } ) {
413+ scale ( opts : { scale : number ; point : Point ; ignoreUpdateVisibleStatus ?: boolean } ) {
402414 const viewer = this . #viewer;
403415 const { ignoreUpdateVisibleStatus } = opts ;
404416 const { moveX, moveY } = viewer . scale ( {
405417 ...opts ,
406418 ...{
407- ignoreUpdateVisibleStatus : true
408- }
419+ ignoreUpdateVisibleStatus : true ,
420+ } ,
409421 } ) ;
410422 viewer . scroll ( { moveX, moveY, ignoreUpdateVisibleStatus } ) ;
411423 }
0 commit comments