@@ -73,7 +73,7 @@ export abstract class SnapEventHandler<D extends SnapData = SnapData> implements
7373 }
7474
7575 private cleanupResources ( ) {
76- this . clearSnapTip ( ) ;
76+ this . clearSnapPrompt ( ) ;
7777 this . clearInput ( ) ;
7878 this . removeTempVisuals ( ) ;
7979 this . snaps . forEach ( ( snap ) => snap . clear ( ) ) ;
@@ -93,9 +93,9 @@ export abstract class SnapEventHandler<D extends SnapData = SnapData> implements
9393 private updateSnapPoint ( view : IView , event : PointerEvent ) {
9494 this . setSnaped ( view , event ) ;
9595 if ( this . _snaped ) {
96- this . showSnapPrompt ( this . formatPrompt ( this . _snaped ) ) ;
96+ this . showSnapPrompt ( this . _snaped ) ;
9797 } else {
98- this . clearSnapTip ( ) ;
98+ this . clearSnapPrompt ( ) ;
9999 }
100100 }
101101
@@ -104,22 +104,6 @@ export abstract class SnapEventHandler<D extends SnapData = SnapData> implements
104104 view . document . visual . update ( ) ;
105105 }
106106
107- private formatPrompt ( snaped : SnapResult ) {
108- let prompt = this . data . prompt ?.( snaped ) ;
109- if ( ! prompt ) {
110- let distance = snaped . distance ?? snaped . refPoint ?. distanceTo ( snaped . point ! ) ;
111- if ( distance ) {
112- prompt = this . formatDistance ( distance ) ;
113- }
114- }
115-
116- return [ snaped . info , prompt ] . filter ( ( x ) => x !== undefined ) . join ( " -> " ) ;
117- }
118-
119- protected formatDistance ( num : number ) {
120- return num . toFixed ( 2 ) ;
121- }
122-
123107 protected setSnaped ( view : IView , event : PointerEvent ) {
124108 this . findSnapPoint ( ShapeType . Edge , view , event ) ;
125109
@@ -173,16 +157,42 @@ export abstract class SnapEventHandler<D extends SnapData = SnapData> implements
173157 return { shapes, view, mx : event . offsetX , my : event . offsetY } ;
174158 }
175159
176- private clearSnapTip ( ) {
160+ protected clearSnapPrompt ( ) {
177161 PubSub . default . pub ( "clearFloatTip" ) ;
178162 }
179163
180- private showSnapPrompt ( msg : string | undefined ) {
181- if ( ! msg ) {
182- this . clearSnapTip ( ) ;
164+ protected showSnapPrompt ( snaped : SnapResult ) {
165+ const prompt = this . formatSnapPrompt ( snaped ) ;
166+ if ( ! prompt ) {
167+ this . clearSnapPrompt ( ) ;
183168 return ;
184169 }
185- PubSub . default . pub ( "showFloatTip" , MessageType . info , msg ) ;
170+ PubSub . default . pub ( "showFloatTip" , prompt ) ;
171+ }
172+
173+ protected formatSnapPrompt (
174+ snaped : SnapResult ,
175+ ) : HTMLElement | { level : MessageType ; msg : string } | undefined {
176+ let prompt = this . data . prompt ?.( snaped ) ;
177+ if ( ! prompt ) {
178+ let distance = snaped . distance ?? snaped . refPoint ?. distanceTo ( snaped . point ! ) ;
179+ if ( distance ) {
180+ prompt = this . formatSnapDistance ( distance ) ;
181+ }
182+ }
183+
184+ if ( ! prompt && ! snaped . info ) {
185+ return undefined ;
186+ }
187+
188+ return {
189+ level : MessageType . info ,
190+ msg : [ snaped . info , prompt ] . filter ( ( x ) => x !== undefined ) . join ( " -> " ) ,
191+ } ;
192+ }
193+
194+ protected formatSnapDistance ( num : number ) {
195+ return num . toFixed ( 2 ) ;
186196 }
187197
188198 private removeTempVisuals ( ) {
0 commit comments