Skip to content

Commit 81dd6e8

Browse files
authored
Merge pull request #17870 from ckeditor/poc-typing-logger-enhanced
Fix (engine): Selection should not move to another table row while switching heading rows. Closes #17962. Internal: Enhanced logging of editor internals.
2 parents 96dbece + 5da51de commit 81dd6e8

File tree

14 files changed

+458
-165
lines changed

14 files changed

+458
-165
lines changed

packages/ckeditor5-engine/src/dev-utils/utils.ts

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,3 +97,40 @@ export function logDocument( document: any, version: any ): void {
9797
// @if CK_DEBUG_TYPING // 'font-weight: bold; color: red'
9898
// @if CK_DEBUG_TYPING // );
9999
// @if CK_DEBUG_TYPING // }, 300 );
100+
101+
// @if CK_DEBUG_TYPING // export function _buildLogMessage( context, className, message = '', ...rest ) {
102+
// @if CK_DEBUG_TYPING // const editor = _findAllEditorInstances().find( editor => (
103+
// @if CK_DEBUG_TYPING // _getLogNodes( editor ).includes( context )
104+
// @if CK_DEBUG_TYPING // ) );
105+
// @if CK_DEBUG_TYPING // const editorName = editor && Object.getPrototypeOf( editor ).constructor.name;
106+
// @if CK_DEBUG_TYPING // const editorPrefix = editor ? `${ editorName }-${ editor.id.slice( -4 ) } ` : 'UNKNOWN ';
107+
// @if CK_DEBUG_TYPING // return [
108+
// @if CK_DEBUG_TYPING // `%c${ editorPrefix }%c[${ className }]%c ${ message }`,
109+
// @if CK_DEBUG_TYPING // 'font-weight: normal;',
110+
// @if CK_DEBUG_TYPING // 'font-weight: bold; color: green',
111+
// @if CK_DEBUG_TYPING // '',
112+
// @if CK_DEBUG_TYPING // ...rest
113+
// @if CK_DEBUG_TYPING // ];
114+
// @if CK_DEBUG_TYPING // }
115+
116+
// @if CK_DEBUG_TYPING // function _findAllEditorInstances() {
117+
// @if CK_DEBUG_TYPING // const editors = new Set();
118+
// @if CK_DEBUG_TYPING // for ( const domEditable of document.querySelectorAll( '.ck.ck-content.ck-editor__editable' ) ) {
119+
// @if CK_DEBUG_TYPING // if ( domEditable.ckeditorInstance ) {
120+
// @if CK_DEBUG_TYPING // editors.add( domEditable.ckeditorInstance );
121+
// @if CK_DEBUG_TYPING // }
122+
// @if CK_DEBUG_TYPING // }
123+
// @if CK_DEBUG_TYPING // return Array.from( editors );
124+
// @if CK_DEBUG_TYPING // }
125+
126+
// @if CK_DEBUG_TYPING // function _getLogNodes( editor ) {
127+
// @if CK_DEBUG_TYPING // return [
128+
// @if CK_DEBUG_TYPING // editor.editing.view._renderer,
129+
// @if CK_DEBUG_TYPING // editor.editing.view.domConverter,
130+
// @if CK_DEBUG_TYPING // ...editor.editing.view._observers.values(),
131+
// @if CK_DEBUG_TYPING // editor.plugins.get( 'Input' ),
132+
// @if CK_DEBUG_TYPING // editor.plugins.get( 'WidgetTypeAround' ),
133+
// @if CK_DEBUG_TYPING // editor.commands.get( 'delete' ),
134+
// @if CK_DEBUG_TYPING // editor.commands.get( 'deleteForward' )
135+
// @if CK_DEBUG_TYPING // ];
136+
// @if CK_DEBUG_TYPING // }

packages/ckeditor5-engine/src/view/domconverter.ts

Lines changed: 42 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ import type EditableElement from './editableelement.js';
4242
import type ViewTextProxy from './textproxy.js';
4343
import type ViewRawElement from './rawelement.js';
4444

45+
// @if CK_DEBUG_TYPING // const { _buildLogMessage } = require( '../dev-utils/utils.js' );
46+
4547
type DomNode = globalThis.Node;
4648
type DomElement = globalThis.HTMLElement;
4749
type DomDocument = globalThis.Document;
@@ -1098,36 +1100,52 @@ export default class DomConverter {
10981100
public focus( viewEditable: EditableElement ): void {
10991101
const domEditable = this.mapViewToDom( viewEditable );
11001102

1101-
if ( domEditable && domEditable.ownerDocument.activeElement !== domEditable ) {
1102-
// Save the scrollX and scrollY positions before the focus.
1103-
const { scrollX, scrollY } = global.window;
1104-
const scrollPositions: Array<[ number, number ]> = [];
1103+
if ( !domEditable || domEditable.ownerDocument.activeElement === domEditable ) {
1104+
// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {
1105+
// @if CK_DEBUG_TYPING // console.info( ..._buildLogMessage( this, 'DomConverter',
1106+
// @if CK_DEBUG_TYPING // '%cDOM editable is already active or does not exist',
1107+
// @if CK_DEBUG_TYPING // 'font-style: italic'
1108+
// @if CK_DEBUG_TYPING // ) );
1109+
// @if CK_DEBUG_TYPING // }
11051110

1106-
// Save all scrollLeft and scrollTop values starting from domEditable up to
1107-
// document#documentElement.
1108-
forEachDomElementAncestor( domEditable, node => {
1109-
const { scrollLeft, scrollTop } = ( node as DomElement );
1111+
return;
1112+
}
11101113

1111-
scrollPositions.push( [ scrollLeft, scrollTop ] );
1112-
} );
1114+
// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {
1115+
// @if CK_DEBUG_TYPING // console.info( ..._buildLogMessage( this, 'DomConverter',
1116+
// @if CK_DEBUG_TYPING // 'Focus DOM editable:',
1117+
// @if CK_DEBUG_TYPING // { domEditable }
1118+
// @if CK_DEBUG_TYPING // ) );
1119+
// @if CK_DEBUG_TYPING // }
11131120

1114-
domEditable.focus();
1121+
// Save the scrollX and scrollY positions before the focus.
1122+
const { scrollX, scrollY } = global.window;
1123+
const scrollPositions: Array<[ number, number ]> = [];
11151124

1116-
// Restore scrollLeft and scrollTop values starting from domEditable up to
1117-
// document#documentElement.
1118-
// https://github.com/ckeditor/ckeditor5-engine/issues/951
1119-
// https://github.com/ckeditor/ckeditor5-engine/issues/957
1120-
forEachDomElementAncestor( domEditable, node => {
1121-
const [ scrollLeft, scrollTop ] = scrollPositions.shift() as [ number, number ];
1125+
// Save all scrollLeft and scrollTop values starting from domEditable up to
1126+
// document#documentElement.
1127+
forEachDomElementAncestor( domEditable, node => {
1128+
const { scrollLeft, scrollTop } = ( node as DomElement );
11221129

1123-
node.scrollLeft = scrollLeft;
1124-
node.scrollTop = scrollTop;
1125-
} );
1130+
scrollPositions.push( [ scrollLeft, scrollTop ] );
1131+
} );
11261132

1127-
// Restore the scrollX and scrollY positions after the focus.
1128-
// https://github.com/ckeditor/ckeditor5-engine/issues/951
1129-
global.window.scrollTo( scrollX, scrollY );
1130-
}
1133+
domEditable.focus();
1134+
1135+
// Restore scrollLeft and scrollTop values starting from domEditable up to
1136+
// document#documentElement.
1137+
// https://github.com/ckeditor/ckeditor5-engine/issues/951
1138+
// https://github.com/ckeditor/ckeditor5-engine/issues/957
1139+
forEachDomElementAncestor( domEditable, node => {
1140+
const [ scrollLeft, scrollTop ] = scrollPositions.shift() as [ number, number ];
1141+
1142+
node.scrollLeft = scrollLeft;
1143+
node.scrollTop = scrollTop;
1144+
} );
1145+
1146+
// Restore the scrollX and scrollY positions after the focus.
1147+
// https://github.com/ckeditor/ckeditor5-engine/issues/951
1148+
global.window.scrollTo( scrollX, scrollY );
11311149
}
11321150

11331151
/**

packages/ckeditor5-engine/src/view/observer/compositionobserver.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import DomEventObserver from './domeventobserver.js';
1111
import type View from '../view.js';
1212
import type DomEventData from './domeventdata.js';
1313

14-
// @if CK_DEBUG_TYPING // const { _debouncedLine } = require( '../../dev-utils/utils.js' );
14+
// @if CK_DEBUG_TYPING // const { _debouncedLine, _buildLogMessage } = require( '../../dev-utils/utils.js' );
1515

1616
/**
1717
* {@link module:engine/view/document~Document#event:compositionstart Compositionstart},
@@ -36,20 +36,20 @@ export default class CompositionObserver extends DomEventObserver<'compositionst
3636

3737
document.on<ViewDocumentCompositionStartEvent>( 'compositionstart', () => {
3838
// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {
39-
// @if CK_DEBUG_TYPING // console.log( '%c[CompositionObserver] ' +
40-
// @if CK_DEBUG_TYPING // '┌───────────────────────────── isComposing = true ─────────────────────────────┐',
39+
// @if CK_DEBUG_TYPING // console.log( ..._buildLogMessage( this, 'CompositionObserver',
40+
// @if CK_DEBUG_TYPING // '%c┌───────────────────────────── isComposing = true ─────────────────────────────┐',
4141
// @if CK_DEBUG_TYPING // 'font-weight: bold; color: green'
42-
// @if CK_DEBUG_TYPING // );
42+
// @if CK_DEBUG_TYPING // ) );
4343
// @if CK_DEBUG_TYPING // }
4444
document.isComposing = true;
4545
}, { priority: 'low' } );
4646

4747
document.on<ViewDocumentCompositionEndEvent>( 'compositionend', () => {
4848
// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {
49-
// @if CK_DEBUG_TYPING // console.log( '%c[CompositionObserver] ' +
50-
// @if CK_DEBUG_TYPING // '└───────────────────────────── isComposing = false ─────────────────────────────┘',
49+
// @if CK_DEBUG_TYPING // console.log( ..._buildLogMessage( this, 'CompositionObserver',
50+
// @if CK_DEBUG_TYPING // '%c└───────────────────────────── isComposing = false ─────────────────────────────┘',
5151
// @if CK_DEBUG_TYPING // 'font-weight: bold; color: green'
52-
// @if CK_DEBUG_TYPING // );
52+
// @if CK_DEBUG_TYPING // ) );
5353
// @if CK_DEBUG_TYPING // }
5454
document.isComposing = false;
5555
}, { priority: 'low' } );
@@ -61,7 +61,9 @@ export default class CompositionObserver extends DomEventObserver<'compositionst
6161
public onDomEvent( domEvent: CompositionEvent ): void {
6262
// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {
6363
// @if CK_DEBUG_TYPING // _debouncedLine();
64-
// @if CK_DEBUG_TYPING // console.group( `%c[CompositionObserver]%c ${ domEvent.type }`, 'color: green', '' );
64+
// @if CK_DEBUG_TYPING // console.group( ..._buildLogMessage( this, 'CompositionObserver',
65+
// @if CK_DEBUG_TYPING // `${ domEvent.type }`
66+
// @if CK_DEBUG_TYPING // ) );
6567
// @if CK_DEBUG_TYPING // }
6668

6769
this.fire( domEvent.type, domEvent, {

packages/ckeditor5-engine/src/view/observer/focusobserver.ts

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ import type DomEventData from './domeventdata.js';
1414
import type View from '../view.js';
1515
import type { ViewDocumentInputEvent } from './inputobserver.js';
1616

17+
// @if CK_DEBUG_TYPING // const { _debouncedLine, _buildLogMessage } = require( '../../dev-utils/utils.js' );
18+
1719
/**
1820
* {@link module:engine/view/document~Document#event:focus Focus}
1921
* and {@link module:engine/view/document~Document#event:blur blur} events observer.
@@ -68,16 +70,48 @@ export default class FocusObserver extends DomEventObserver<'focus' | 'blur'> {
6870
*/
6971
public flush(): void {
7072
if ( this._isFocusChanging ) {
73+
// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {
74+
// @if CK_DEBUG_TYPING // _debouncedLine();
75+
// @if CK_DEBUG_TYPING // console.group( ..._buildLogMessage( this, 'FocusObserver',
76+
// @if CK_DEBUG_TYPING // 'flush focus'
77+
// @if CK_DEBUG_TYPING // ) );
78+
// @if CK_DEBUG_TYPING // }
79+
7180
this._isFocusChanging = false;
7281
this.document.isFocused = true;
82+
83+
// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {
84+
// @if CK_DEBUG_TYPING // console.groupEnd();
85+
// @if CK_DEBUG_TYPING // }
7386
}
7487
}
7588

7689
/**
7790
* @inheritDoc
7891
*/
7992
public onDomEvent( domEvent: FocusEvent ): void {
93+
// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {
94+
// @if CK_DEBUG_TYPING // _debouncedLine();
95+
// @if CK_DEBUG_TYPING // console.group( ..._buildLogMessage( this, 'FocusObserver',
96+
// @if CK_DEBUG_TYPING // `${ domEvent.type } event`
97+
// @if CK_DEBUG_TYPING // ) );
98+
// @if CK_DEBUG_TYPING // console.info( ..._buildLogMessage( this, 'FocusObserver',
99+
// @if CK_DEBUG_TYPING // 'DOM target:',
100+
// @if CK_DEBUG_TYPING // { target: domEvent.target, relatedTarget: domEvent.relatedTarget }
101+
// @if CK_DEBUG_TYPING // ) );
102+
// @if CK_DEBUG_TYPING // const domSelection = window.getSelection();
103+
// @if CK_DEBUG_TYPING // console.info( ..._buildLogMessage( this, 'FocusObserver',
104+
// @if CK_DEBUG_TYPING // 'DOM Selection:',
105+
// @if CK_DEBUG_TYPING // { node: domSelection!.anchorNode, offset: domSelection!.anchorOffset },
106+
// @if CK_DEBUG_TYPING // { node: domSelection!.focusNode, offset: domSelection!.focusOffset }
107+
// @if CK_DEBUG_TYPING // ) );
108+
// @if CK_DEBUG_TYPING // }
109+
80110
this.fire( domEvent.type, domEvent );
111+
112+
// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {
113+
// @if CK_DEBUG_TYPING // console.groupEnd();
114+
// @if CK_DEBUG_TYPING // }
81115
}
82116

83117
/**
@@ -105,8 +139,19 @@ export default class FocusObserver extends DomEventObserver<'focus' | 'blur'> {
105139
// in a situation where `selectionchange` already caused selection change.
106140
this._renderTimeoutId = setTimeout( () => {
107141
this._renderTimeoutId = null;
142+
143+
// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {
144+
// @if CK_DEBUG_TYPING // console.group( ..._buildLogMessage( this, 'FocusObserver',
145+
// @if CK_DEBUG_TYPING // 'flush on timeout'
146+
// @if CK_DEBUG_TYPING // ) );
147+
// @if CK_DEBUG_TYPING // }
148+
108149
this.flush();
109150
this.view.change( () => {} );
151+
152+
// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {
153+
// @if CK_DEBUG_TYPING // console.groupEnd();
154+
// @if CK_DEBUG_TYPING // }
110155
}, 50 );
111156
}
112157

@@ -116,13 +161,30 @@ export default class FocusObserver extends DomEventObserver<'focus' | 'blur'> {
116161
private _handleBlur( data: DomEventData<FocusEvent> ): void {
117162
const selectedEditable = this.document.selection.editableElement;
118163

164+
// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {
165+
// @if CK_DEBUG_TYPING // console.info( ..._buildLogMessage( this, 'FocusObserver',
166+
// @if CK_DEBUG_TYPING // 'selectedEditable:',
167+
// @if CK_DEBUG_TYPING // { selectedEditable }
168+
// @if CK_DEBUG_TYPING // ) );
169+
// @if CK_DEBUG_TYPING // }
170+
119171
if ( selectedEditable === null || selectedEditable === data.target ) {
172+
// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {
173+
// @if CK_DEBUG_TYPING // console.group( ..._buildLogMessage( this, 'FocusObserver',
174+
// @if CK_DEBUG_TYPING // 'document no longer focused'
175+
// @if CK_DEBUG_TYPING // ) );
176+
// @if CK_DEBUG_TYPING // }
177+
120178
this.document.isFocused = false;
121179
this._isFocusChanging = false;
122180

123181
// Re-render the document to update view elements
124182
// (changing document.isFocused already marked view as changed since last rendering).
125183
this.view.change( () => {} );
184+
185+
// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {
186+
// @if CK_DEBUG_TYPING // console.groupEnd();
187+
// @if CK_DEBUG_TYPING // }
126188
}
127189
}
128190

packages/ckeditor5-engine/src/view/observer/inputobserver.ts

Lines changed: 29 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import type ViewRange from '../range.js';
1313
import DataTransfer from '../datatransfer.js';
1414
import { env } from '@ckeditor/ckeditor5-utils';
1515

16-
// @if CK_DEBUG_TYPING // const { _debouncedLine } = require( '../../dev-utils/utils.js' );
16+
// @if CK_DEBUG_TYPING // const { _debouncedLine, _buildLogMessage } = require( '../../dev-utils/utils.js' );
1717

1818
/**
1919
* Observer for events connected with data input.
@@ -33,9 +33,9 @@ export default class InputObserver extends DomEventObserver<'beforeinput'> {
3333
public onDomEvent( domEvent: InputEvent ): void {
3434
// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {
3535
// @if CK_DEBUG_TYPING // _debouncedLine();
36-
// @if CK_DEBUG_TYPING // console.group( `%c[InputObserver]%c ${ domEvent.type }: ${ domEvent.inputType }`,
37-
// @if CK_DEBUG_TYPING // 'color: green', 'color: default'
38-
// @if CK_DEBUG_TYPING // );
36+
// @if CK_DEBUG_TYPING // console.group( ..._buildLogMessage( this, 'InputObserver',
37+
// @if CK_DEBUG_TYPING // `${ domEvent.type }: ${ domEvent.inputType }`
38+
// @if CK_DEBUG_TYPING // ) );
3939
// @if CK_DEBUG_TYPING // }
4040

4141
const domTargetRanges = domEvent.getTargetRanges();
@@ -54,17 +54,21 @@ export default class InputObserver extends DomEventObserver<'beforeinput'> {
5454
data = domEvent.data;
5555

5656
// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {
57-
// @if CK_DEBUG_TYPING // console.info( `%c[InputObserver]%c event data: %c${ JSON.stringify( data ) }`,
58-
// @if CK_DEBUG_TYPING // 'color: green; font-weight: bold', 'font-weight: bold', 'color: blue;'
59-
// @if CK_DEBUG_TYPING // );
57+
// @if CK_DEBUG_TYPING // console.info( ..._buildLogMessage( this, 'InputObserver',
58+
// @if CK_DEBUG_TYPING // `%cevent data: %c${ JSON.stringify( data ) }`,
59+
// @if CK_DEBUG_TYPING // 'font-weight: bold',
60+
// @if CK_DEBUG_TYPING // 'color: blue;'
61+
// @if CK_DEBUG_TYPING // ) );
6062
// @if CK_DEBUG_TYPING // }
6163
} else if ( dataTransfer ) {
6264
data = dataTransfer.getData( 'text/plain' );
6365

6466
// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {
65-
// @if CK_DEBUG_TYPING // console.info( `%c[InputObserver]%c event data transfer: %c${ JSON.stringify( data ) }`,
66-
// @if CK_DEBUG_TYPING // 'color: green; font-weight: bold', 'font-weight: bold', 'color: blue;'
67-
// @if CK_DEBUG_TYPING // );
67+
// @if CK_DEBUG_TYPING // console.info( ..._buildLogMessage( this, 'InputObserver',
68+
// @if CK_DEBUG_TYPING // `%cevent data transfer: %c${ JSON.stringify( data ) }`,
69+
// @if CK_DEBUG_TYPING // 'font-weight: bold',
70+
// @if CK_DEBUG_TYPING // 'color: blue;'
71+
// @if CK_DEBUG_TYPING // ) );
6872
// @if CK_DEBUG_TYPING // }
6973
}
7074

@@ -75,10 +79,12 @@ export default class InputObserver extends DomEventObserver<'beforeinput'> {
7579
targetRanges = Array.from( viewDocument.selection.getRanges() );
7680

7781
// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {
78-
// @if CK_DEBUG_TYPING // console.info( '%c[InputObserver]%c using fake selection:',
79-
// @if CK_DEBUG_TYPING // 'color: green; font-weight: bold', 'font-weight: bold', targetRanges,
82+
// @if CK_DEBUG_TYPING // console.info( ..._buildLogMessage( this, 'InputObserver',
83+
// @if CK_DEBUG_TYPING // '%cusing fake selection:',
84+
// @if CK_DEBUG_TYPING // 'font-weight: bold',
85+
// @if CK_DEBUG_TYPING // targetRanges,
8086
// @if CK_DEBUG_TYPING // viewDocument.selection.isFake ? 'fake view selection' : 'fake DOM parent'
81-
// @if CK_DEBUG_TYPING // );
87+
// @if CK_DEBUG_TYPING // ) );
8288
// @if CK_DEBUG_TYPING // }
8389
} else if ( domTargetRanges.length ) {
8490
targetRanges = domTargetRanges.map( domRange => {
@@ -97,9 +103,11 @@ export default class InputObserver extends DomEventObserver<'beforeinput'> {
97103
} ).filter( ( range ): range is ViewRange => !!range );
98104

99105
// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {
100-
// @if CK_DEBUG_TYPING // console.info( '%c[InputObserver]%c using target ranges:',
101-
// @if CK_DEBUG_TYPING // 'color: green; font-weight: bold', 'font-weight: bold', targetRanges
102-
// @if CK_DEBUG_TYPING // );
106+
// @if CK_DEBUG_TYPING // console.info( ..._buildLogMessage( this, 'InputObserver',
107+
// @if CK_DEBUG_TYPING // '%cusing target ranges:',
108+
// @if CK_DEBUG_TYPING // 'font-weight: bold',
109+
// @if CK_DEBUG_TYPING // targetRanges
110+
// @if CK_DEBUG_TYPING // ) );
103111
// @if CK_DEBUG_TYPING // }
104112
}
105113
// For Android devices we use a fallback to the current DOM selection, Android modifies it according
@@ -110,9 +118,11 @@ export default class InputObserver extends DomEventObserver<'beforeinput'> {
110118
targetRanges = Array.from( view.domConverter.domSelectionToView( domSelection ).getRanges() );
111119

112120
// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {
113-
// @if CK_DEBUG_TYPING // console.info( '%c[InputObserver]%c using selection ranges:',
114-
// @if CK_DEBUG_TYPING // 'color: green; font-weight: bold', 'font-weight: bold', targetRanges
115-
// @if CK_DEBUG_TYPING // );
121+
// @if CK_DEBUG_TYPING // console.info( ..._buildLogMessage( this, 'InputObserver',
122+
// @if CK_DEBUG_TYPING // '%cusing selection ranges:',
123+
// @if CK_DEBUG_TYPING // 'font-weight: bold',
124+
// @if CK_DEBUG_TYPING // targetRanges
125+
// @if CK_DEBUG_TYPING // ) );
116126
// @if CK_DEBUG_TYPING // }
117127
}
118128

0 commit comments

Comments
 (0)