3
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
4
*--------------------------------------------------------------------------------------------*/
5
5
6
+ import { EditContext } from './editContextFactory.js' ;
7
+
6
8
const COLOR_FOR_CONTROL_BOUNDS = 'blue' ;
7
9
const COLOR_FOR_SELECTION_BOUNDS = 'red' ;
8
10
const COLOR_FOR_CHARACTER_BOUNDS = 'green' ;
9
11
10
- export class DebugEditContext extends EditContext {
12
+ export class DebugEditContext {
11
13
private _isDebugging = true ;
12
14
private _controlBounds : DOMRect | null = null ;
13
15
private _selectionBounds : DOMRect | null = null ;
14
16
private _characterBounds : { rangeStart : number ; characterBounds : DOMRect [ ] } | null = null ;
15
17
16
- constructor ( options ?: EditContextInit | undefined ) {
17
- super ( options ) ;
18
+ private _editContext : EditContext ;
19
+
20
+ constructor ( window : Window , options ?: EditContextInit | undefined ) {
21
+ this . _editContext = EditContext . create ( window , options ) ;
22
+ }
23
+
24
+ get text ( ) : DOMString {
25
+ return this . _editContext . text ;
26
+ }
27
+
28
+ get selectionStart ( ) : number {
29
+ return this . _editContext . selectionStart ;
30
+ }
31
+
32
+ get selectionEnd ( ) : number {
33
+ return this . _editContext . selectionEnd ;
34
+ }
35
+
36
+ get characterBoundsRangeStart ( ) : number {
37
+ return this . _editContext . characterBoundsRangeStart ;
18
38
}
19
39
20
- override updateText ( rangeStart : number , rangeEnd : number , text : string ) : void {
21
- super . updateText ( rangeStart , rangeEnd , text ) ;
40
+ updateText ( rangeStart : number , rangeEnd : number , text : string ) : void {
41
+ this . _editContext . updateText ( rangeStart , rangeEnd , text ) ;
22
42
this . renderDebug ( ) ;
23
43
}
24
- override updateSelection ( start : number , end : number ) : void {
25
- super . updateSelection ( start , end ) ;
44
+ updateSelection ( start : number , end : number ) : void {
45
+ this . _editContext . updateSelection ( start , end ) ;
26
46
this . renderDebug ( ) ;
27
47
}
28
- override updateControlBounds ( controlBounds : DOMRect ) : void {
29
- super . updateControlBounds ( controlBounds ) ;
48
+ updateControlBounds ( controlBounds : DOMRect ) : void {
49
+ this . _editContext . updateControlBounds ( controlBounds ) ;
30
50
this . _controlBounds = controlBounds ;
31
51
this . renderDebug ( ) ;
32
52
}
33
- override updateSelectionBounds ( selectionBounds : DOMRect ) : void {
34
- super . updateSelectionBounds ( selectionBounds ) ;
53
+ updateSelectionBounds ( selectionBounds : DOMRect ) : void {
54
+ this . _editContext . updateSelectionBounds ( selectionBounds ) ;
35
55
this . _selectionBounds = selectionBounds ;
36
56
this . renderDebug ( ) ;
37
57
}
38
- override updateCharacterBounds ( rangeStart : number , characterBounds : DOMRect [ ] ) : void {
39
- super . updateCharacterBounds ( rangeStart , characterBounds ) ;
58
+ updateCharacterBounds ( rangeStart : number , characterBounds : DOMRect [ ] ) : void {
59
+ this . _editContext . updateCharacterBounds ( rangeStart , characterBounds ) ;
40
60
this . _characterBounds = { rangeStart, characterBounds } ;
41
61
this . renderDebug ( ) ;
42
62
}
43
- override attachedElements ( ) : HTMLElement [ ] {
44
- return super . attachedElements ( ) ;
63
+ attachedElements ( ) : HTMLElement [ ] {
64
+ return this . _editContext . attachedElements ( ) ;
45
65
}
46
66
47
- override characterBounds ( ) : DOMRect [ ] {
48
- return super . characterBounds ( ) ;
67
+ characterBounds ( ) : DOMRect [ ] {
68
+ return this . _editContext . characterBounds ( ) ;
49
69
}
50
70
51
71
private readonly _ontextupdateWrapper = new EventListenerWrapper ( 'textupdate' , this ) ;
@@ -54,22 +74,22 @@ export class DebugEditContext extends EditContext {
54
74
private readonly _oncompositionstartWrapper = new EventListenerWrapper ( 'compositionstart' , this ) ;
55
75
private readonly _oncompositionendWrapper = new EventListenerWrapper ( 'compositionend' , this ) ;
56
76
57
- override get ontextupdate ( ) : EventHandler | null { return this . _ontextupdateWrapper . eventHandler ; }
58
- override set ontextupdate ( value : EventHandler | null ) { this . _ontextupdateWrapper . eventHandler = value ; }
59
- override get ontextformatupdate ( ) : EventHandler | null { return this . _ontextformatupdateWrapper . eventHandler ; }
60
- override set ontextformatupdate ( value : EventHandler | null ) { this . _ontextformatupdateWrapper . eventHandler = value ; }
61
- override get oncharacterboundsupdate ( ) : EventHandler | null { return this . _oncharacterboundsupdateWrapper . eventHandler ; }
62
- override set oncharacterboundsupdate ( value : EventHandler | null ) { this . _oncharacterboundsupdateWrapper . eventHandler = value ; }
63
- override get oncompositionstart ( ) : EventHandler | null { return this . _oncompositionstartWrapper . eventHandler ; }
64
- override set oncompositionstart ( value : EventHandler | null ) { this . _oncompositionstartWrapper . eventHandler = value ; }
65
- override get oncompositionend ( ) : EventHandler | null { return this . _oncompositionendWrapper . eventHandler ; }
66
- override set oncompositionend ( value : EventHandler | null ) { this . _oncompositionendWrapper . eventHandler = value ; }
77
+ get ontextupdate ( ) : EventHandler | null { return this . _ontextupdateWrapper . eventHandler ; }
78
+ set ontextupdate ( value : EventHandler | null ) { this . _ontextupdateWrapper . eventHandler = value ; }
79
+ get ontextformatupdate ( ) : EventHandler | null { return this . _ontextformatupdateWrapper . eventHandler ; }
80
+ set ontextformatupdate ( value : EventHandler | null ) { this . _ontextformatupdateWrapper . eventHandler = value ; }
81
+ get oncharacterboundsupdate ( ) : EventHandler | null { return this . _oncharacterboundsupdateWrapper . eventHandler ; }
82
+ set oncharacterboundsupdate ( value : EventHandler | null ) { this . _oncharacterboundsupdateWrapper . eventHandler = value ; }
83
+ get oncompositionstart ( ) : EventHandler | null { return this . _oncompositionstartWrapper . eventHandler ; }
84
+ set oncompositionstart ( value : EventHandler | null ) { this . _oncompositionstartWrapper . eventHandler = value ; }
85
+ get oncompositionend ( ) : EventHandler | null { return this . _oncompositionendWrapper . eventHandler ; }
86
+ set oncompositionend ( value : EventHandler | null ) { this . _oncompositionendWrapper . eventHandler = value ; }
67
87
68
88
69
89
private readonly _listenerMap = new Map < EventListenerOrEventListenerObject , EventListenerOrEventListenerObject > ( ) ;
70
90
71
- override addEventListener < K extends keyof EditContextEventHandlersEventMap > ( type : K , listener : ( this : GlobalEventHandlers , ev : EditContextEventHandlersEventMap [ K ] ) => any , options ?: boolean | AddEventListenerOptions ) : void ;
72
- override addEventListener ( type : string , listener : EventListenerOrEventListenerObject , options ?: boolean | AddEventListenerOptions ) : void {
91
+ addEventListener < K extends keyof EditContextEventHandlersEventMap > ( type : K , listener : ( this : GlobalEventHandlers , ev : EditContextEventHandlersEventMap [ K ] ) => any , options ?: boolean | AddEventListenerOptions ) : void ;
92
+ addEventListener ( type : string , listener : EventListenerOrEventListenerObject , options ?: boolean | AddEventListenerOptions ) : void {
73
93
if ( ! listener ) { return ; }
74
94
75
95
const debugListener = ( event : Event ) => {
@@ -84,22 +104,22 @@ export class DebugEditContext extends EditContext {
84
104
}
85
105
} ;
86
106
this . _listenerMap . set ( listener , debugListener ) ;
87
- super . addEventListener ( type , debugListener , options ) ;
107
+ this . _editContext . addEventListener ( type , debugListener , options ) ;
88
108
this . renderDebug ( ) ;
89
109
}
90
110
91
- override removeEventListener ( type : string , listener : EventListenerOrEventListenerObject | null , options ?: boolean | EventListenerOptions | undefined ) : void {
111
+ removeEventListener ( type : string , listener : EventListenerOrEventListenerObject | null , options ?: boolean | EventListenerOptions | undefined ) : void {
92
112
if ( ! listener ) { return ; }
93
113
const debugListener = this . _listenerMap . get ( listener ) ;
94
114
if ( debugListener ) {
95
- super . removeEventListener ( type , debugListener , options ) ;
115
+ this . _editContext . removeEventListener ( type , debugListener , options ) ;
96
116
this . _listenerMap . delete ( listener ) ;
97
117
}
98
118
this . renderDebug ( ) ;
99
119
}
100
120
101
- override dispatchEvent ( event : Event ) : boolean {
102
- return super . dispatchEvent ( event ) ;
121
+ dispatchEvent ( event : Event ) : boolean {
122
+ return this . _editContext . dispatchEvent ( event ) ;
103
123
}
104
124
105
125
public startDebugging ( ) {
@@ -131,7 +151,7 @@ export class DebugEditContext extends EditContext {
131
151
this . _disposables . push ( createRect ( rect , COLOR_FOR_CHARACTER_BOUNDS ) ) ;
132
152
}
133
153
}
134
- this . _disposables . push ( createDiv ( this . text , this . selectionStart , this . selectionEnd ) ) ;
154
+ this . _disposables . push ( createDiv ( this . _editContext . text , this . _editContext . selectionStart , this . _editContext . selectionEnd ) ) ;
135
155
}
136
156
}
137
157
0 commit comments