@ckeditor/ckeditor5-engine 30.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +17 -0
- package/README.md +30 -0
- package/package.json +70 -0
- package/src/controller/datacontroller.js +563 -0
- package/src/controller/editingcontroller.js +149 -0
- package/src/conversion/conversion.js +644 -0
- package/src/conversion/conversionhelpers.js +40 -0
- package/src/conversion/downcastdispatcher.js +914 -0
- package/src/conversion/downcasthelpers.js +1706 -0
- package/src/conversion/mapper.js +696 -0
- package/src/conversion/modelconsumable.js +329 -0
- package/src/conversion/upcastdispatcher.js +807 -0
- package/src/conversion/upcasthelpers.js +997 -0
- package/src/conversion/viewconsumable.js +623 -0
- package/src/dataprocessor/basichtmlwriter.js +32 -0
- package/src/dataprocessor/dataprocessor.jsdoc +64 -0
- package/src/dataprocessor/htmldataprocessor.js +159 -0
- package/src/dataprocessor/htmlwriter.js +22 -0
- package/src/dataprocessor/xmldataprocessor.js +161 -0
- package/src/dev-utils/model.js +482 -0
- package/src/dev-utils/operationreplayer.js +140 -0
- package/src/dev-utils/utils.js +103 -0
- package/src/dev-utils/view.js +1091 -0
- package/src/index.js +52 -0
- package/src/model/batch.js +82 -0
- package/src/model/differ.js +1282 -0
- package/src/model/document.js +483 -0
- package/src/model/documentfragment.js +390 -0
- package/src/model/documentselection.js +1261 -0
- package/src/model/element.js +438 -0
- package/src/model/history.js +138 -0
- package/src/model/item.jsdoc +14 -0
- package/src/model/liveposition.js +182 -0
- package/src/model/liverange.js +221 -0
- package/src/model/markercollection.js +553 -0
- package/src/model/model.js +934 -0
- package/src/model/node.js +507 -0
- package/src/model/nodelist.js +217 -0
- package/src/model/operation/attributeoperation.js +202 -0
- package/src/model/operation/detachoperation.js +103 -0
- package/src/model/operation/insertoperation.js +188 -0
- package/src/model/operation/markeroperation.js +154 -0
- package/src/model/operation/mergeoperation.js +216 -0
- package/src/model/operation/moveoperation.js +209 -0
- package/src/model/operation/nooperation.js +58 -0
- package/src/model/operation/operation.js +139 -0
- package/src/model/operation/operationfactory.js +49 -0
- package/src/model/operation/renameoperation.js +155 -0
- package/src/model/operation/rootattributeoperation.js +211 -0
- package/src/model/operation/splitoperation.js +254 -0
- package/src/model/operation/transform.js +2389 -0
- package/src/model/operation/utils.js +292 -0
- package/src/model/position.js +1164 -0
- package/src/model/range.js +1049 -0
- package/src/model/rootelement.js +111 -0
- package/src/model/schema.js +1851 -0
- package/src/model/selection.js +902 -0
- package/src/model/text.js +138 -0
- package/src/model/textproxy.js +279 -0
- package/src/model/treewalker.js +414 -0
- package/src/model/utils/autoparagraphing.js +77 -0
- package/src/model/utils/deletecontent.js +528 -0
- package/src/model/utils/getselectedcontent.js +150 -0
- package/src/model/utils/insertcontent.js +824 -0
- package/src/model/utils/modifyselection.js +229 -0
- package/src/model/utils/selection-post-fixer.js +297 -0
- package/src/model/writer.js +1574 -0
- package/src/view/attributeelement.js +274 -0
- package/src/view/containerelement.js +123 -0
- package/src/view/document.js +221 -0
- package/src/view/documentfragment.js +273 -0
- package/src/view/documentselection.js +387 -0
- package/src/view/domconverter.js +1437 -0
- package/src/view/downcastwriter.js +2121 -0
- package/src/view/editableelement.js +118 -0
- package/src/view/element.js +945 -0
- package/src/view/elementdefinition.jsdoc +59 -0
- package/src/view/emptyelement.js +119 -0
- package/src/view/filler.js +161 -0
- package/src/view/item.jsdoc +14 -0
- package/src/view/matcher.js +776 -0
- package/src/view/node.js +391 -0
- package/src/view/observer/arrowkeysobserver.js +58 -0
- package/src/view/observer/bubblingemittermixin.js +307 -0
- package/src/view/observer/bubblingeventinfo.js +71 -0
- package/src/view/observer/clickobserver.js +46 -0
- package/src/view/observer/compositionobserver.js +79 -0
- package/src/view/observer/domeventdata.js +82 -0
- package/src/view/observer/domeventobserver.js +99 -0
- package/src/view/observer/fakeselectionobserver.js +118 -0
- package/src/view/observer/focusobserver.js +106 -0
- package/src/view/observer/inputobserver.js +44 -0
- package/src/view/observer/keyobserver.js +83 -0
- package/src/view/observer/mouseobserver.js +56 -0
- package/src/view/observer/mutationobserver.js +345 -0
- package/src/view/observer/observer.js +118 -0
- package/src/view/observer/selectionobserver.js +242 -0
- package/src/view/placeholder.js +285 -0
- package/src/view/position.js +426 -0
- package/src/view/range.js +533 -0
- package/src/view/rawelement.js +148 -0
- package/src/view/renderer.js +1037 -0
- package/src/view/rooteditableelement.js +107 -0
- package/src/view/selection.js +718 -0
- package/src/view/styles/background.js +73 -0
- package/src/view/styles/border.js +362 -0
- package/src/view/styles/margin.js +41 -0
- package/src/view/styles/padding.js +40 -0
- package/src/view/styles/utils.js +277 -0
- package/src/view/stylesmap.js +938 -0
- package/src/view/text.js +147 -0
- package/src/view/textproxy.js +199 -0
- package/src/view/treewalker.js +496 -0
- package/src/view/uielement.js +238 -0
- package/src/view/upcastwriter.js +484 -0
- package/src/view/view.js +721 -0
- package/theme/placeholder.css +27 -0
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @module engine/view/observer/fakeselectionobserver
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import Observer from './observer';
|
|
11
|
+
import ViewSelection from '../selection';
|
|
12
|
+
import { keyCodes } from '@ckeditor/ckeditor5-utils/src/keyboard';
|
|
13
|
+
import { debounce } from 'lodash-es';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Fake selection observer class. If view selection is fake it is placed in dummy DOM container. This observer listens
|
|
17
|
+
* on {@link module:engine/view/document~Document#event:keydown keydown} events and handles moving fake view selection to the correct place
|
|
18
|
+
* if arrow keys are pressed.
|
|
19
|
+
* Fires {@link module:engine/view/document~Document#event:selectionChange selectionChange event} simulating natural behaviour of
|
|
20
|
+
* {@link module:engine/view/observer/selectionobserver~SelectionObserver SelectionObserver}.
|
|
21
|
+
*
|
|
22
|
+
* @extends module:engine/view/observer/observer~Observer
|
|
23
|
+
*/
|
|
24
|
+
export default class FakeSelectionObserver extends Observer {
|
|
25
|
+
/**
|
|
26
|
+
* Creates new FakeSelectionObserver instance.
|
|
27
|
+
*
|
|
28
|
+
* @param {module:engine/view/view~View} view
|
|
29
|
+
*/
|
|
30
|
+
constructor( view ) {
|
|
31
|
+
super( view );
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Fires debounced event `selectionChangeDone`. It uses `lodash#debounce` method to delay function call.
|
|
35
|
+
*
|
|
36
|
+
* @private
|
|
37
|
+
* @param {Object} data Selection change data.
|
|
38
|
+
* @method #_fireSelectionChangeDoneDebounced
|
|
39
|
+
*/
|
|
40
|
+
this._fireSelectionChangeDoneDebounced = debounce( data => this.document.fire( 'selectionChangeDone', data ), 200 );
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* @inheritDoc
|
|
45
|
+
*/
|
|
46
|
+
observe() {
|
|
47
|
+
const document = this.document;
|
|
48
|
+
|
|
49
|
+
document.on( 'arrowKey', ( eventInfo, data ) => {
|
|
50
|
+
const selection = document.selection;
|
|
51
|
+
|
|
52
|
+
if ( selection.isFake && this.isEnabled ) {
|
|
53
|
+
// Prevents default key down handling - no selection change will occur.
|
|
54
|
+
data.preventDefault();
|
|
55
|
+
}
|
|
56
|
+
}, { context: '$capture' } );
|
|
57
|
+
|
|
58
|
+
document.on( 'arrowKey', ( eventInfo, data ) => {
|
|
59
|
+
const selection = document.selection;
|
|
60
|
+
|
|
61
|
+
if ( selection.isFake && this.isEnabled ) {
|
|
62
|
+
this._handleSelectionMove( data.keyCode );
|
|
63
|
+
}
|
|
64
|
+
}, { priority: 'lowest' } );
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* @inheritDoc
|
|
69
|
+
*/
|
|
70
|
+
destroy() {
|
|
71
|
+
super.destroy();
|
|
72
|
+
|
|
73
|
+
this._fireSelectionChangeDoneDebounced.cancel();
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Handles collapsing view selection according to given key code. If left or up key is provided - new selection will be
|
|
78
|
+
* collapsed to left. If right or down key is pressed - new selection will be collapsed to right.
|
|
79
|
+
*
|
|
80
|
+
* This method fires {@link module:engine/view/document~Document#event:selectionChange} and
|
|
81
|
+
* {@link module:engine/view/document~Document#event:selectionChangeDone} events imitating behaviour of
|
|
82
|
+
* {@link module:engine/view/observer/selectionobserver~SelectionObserver}.
|
|
83
|
+
*
|
|
84
|
+
* @private
|
|
85
|
+
* @param {Number} keyCode
|
|
86
|
+
* @fires module:engine/view/document~Document#event:selectionChange
|
|
87
|
+
* @fires module:engine/view/document~Document#event:selectionChangeDone
|
|
88
|
+
*/
|
|
89
|
+
_handleSelectionMove( keyCode ) {
|
|
90
|
+
const selection = this.document.selection;
|
|
91
|
+
const newSelection = new ViewSelection( selection.getRanges(), { backward: selection.isBackward, fake: false } );
|
|
92
|
+
|
|
93
|
+
// Left or up arrow pressed - move selection to start.
|
|
94
|
+
if ( keyCode == keyCodes.arrowleft || keyCode == keyCodes.arrowup ) {
|
|
95
|
+
newSelection.setTo( newSelection.getFirstPosition() );
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// Right or down arrow pressed - move selection to end.
|
|
99
|
+
if ( keyCode == keyCodes.arrowright || keyCode == keyCodes.arrowdown ) {
|
|
100
|
+
newSelection.setTo( newSelection.getLastPosition() );
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
const data = {
|
|
104
|
+
oldSelection: selection,
|
|
105
|
+
newSelection,
|
|
106
|
+
domSelection: null
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
// Fire dummy selection change event.
|
|
110
|
+
this.document.fire( 'selectionChange', data );
|
|
111
|
+
|
|
112
|
+
// Call` #_fireSelectionChangeDoneDebounced` every time when `selectionChange` event is fired.
|
|
113
|
+
// This function is debounced what means that `selectionChangeDone` event will be fired only when
|
|
114
|
+
// defined int the function time will elapse since the last time the function was called.
|
|
115
|
+
// So `selectionChangeDone` will be fired when selection will stop changing.
|
|
116
|
+
this._fireSelectionChangeDoneDebounced( data );
|
|
117
|
+
}
|
|
118
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @module engine/view/observer/focusobserver
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/* globals setTimeout, clearTimeout */
|
|
11
|
+
|
|
12
|
+
import DomEventObserver from './domeventobserver';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* {@link module:engine/view/document~Document#event:focus Focus}
|
|
16
|
+
* and {@link module:engine/view/document~Document#event:blur blur} events observer.
|
|
17
|
+
* Focus observer handle also {@link module:engine/view/rooteditableelement~RootEditableElement#isFocused isFocused} property of the
|
|
18
|
+
* {@link module:engine/view/rooteditableelement~RootEditableElement root elements}.
|
|
19
|
+
*
|
|
20
|
+
* Note that this observer is attached by the {@link module:engine/view/view~View} and is available by default.
|
|
21
|
+
*
|
|
22
|
+
* @extends module:engine/view/observer/domeventobserver~DomEventObserver
|
|
23
|
+
*/
|
|
24
|
+
export default class FocusObserver extends DomEventObserver {
|
|
25
|
+
constructor( view ) {
|
|
26
|
+
super( view );
|
|
27
|
+
|
|
28
|
+
this.domEventType = [ 'focus', 'blur' ];
|
|
29
|
+
this.useCapture = true;
|
|
30
|
+
const document = this.document;
|
|
31
|
+
|
|
32
|
+
document.on( 'focus', () => {
|
|
33
|
+
document.isFocused = true;
|
|
34
|
+
|
|
35
|
+
// Unfortunately native `selectionchange` event is fired asynchronously.
|
|
36
|
+
// We need to wait until `SelectionObserver` handle the event and then render. Otherwise rendering will
|
|
37
|
+
// overwrite new DOM selection with selection from the view.
|
|
38
|
+
// See https://github.com/ckeditor/ckeditor5-engine/issues/795 for more details.
|
|
39
|
+
// Long timeout is needed to solve #676 and https://github.com/ckeditor/ckeditor5-engine/issues/1157 issues.
|
|
40
|
+
//
|
|
41
|
+
// Using `view.change()` instead of `view.forceRender()` to prevent double rendering
|
|
42
|
+
// in a situation where `selectionchange` already caused selection change.
|
|
43
|
+
this._renderTimeoutId = setTimeout( () => view.change( () => {} ), 50 );
|
|
44
|
+
} );
|
|
45
|
+
|
|
46
|
+
document.on( 'blur', ( evt, data ) => {
|
|
47
|
+
const selectedEditable = document.selection.editableElement;
|
|
48
|
+
|
|
49
|
+
if ( selectedEditable === null || selectedEditable === data.target ) {
|
|
50
|
+
document.isFocused = false;
|
|
51
|
+
|
|
52
|
+
// Re-render the document to update view elements
|
|
53
|
+
// (changing document.isFocused already marked view as changed since last rendering).
|
|
54
|
+
view.change( () => {} );
|
|
55
|
+
}
|
|
56
|
+
} );
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Identifier of the timeout currently used by focus listener to delay rendering execution.
|
|
60
|
+
*
|
|
61
|
+
* @private
|
|
62
|
+
* @member {Number} #_renderTimeoutId
|
|
63
|
+
*/
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
onDomEvent( domEvent ) {
|
|
67
|
+
this.fire( domEvent.type, domEvent );
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* @inheritDoc
|
|
72
|
+
*/
|
|
73
|
+
destroy() {
|
|
74
|
+
if ( this._renderTimeoutId ) {
|
|
75
|
+
clearTimeout( this._renderTimeoutId );
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
super.destroy();
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Fired when one of the editables gets focus.
|
|
84
|
+
*
|
|
85
|
+
* Introduced by {@link module:engine/view/observer/focusobserver~FocusObserver}.
|
|
86
|
+
*
|
|
87
|
+
* Note that because {@link module:engine/view/observer/focusobserver~FocusObserver} is attached by the
|
|
88
|
+
* {@link module:engine/view/view~View} this event is available by default.
|
|
89
|
+
*
|
|
90
|
+
* @see module:engine/view/observer/focusobserver~FocusObserver
|
|
91
|
+
* @event module:engine/view/document~Document#event:focus
|
|
92
|
+
* @param {module:engine/view/observer/domeventdata~DomEventData} data Event data.
|
|
93
|
+
*/
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Fired when one of the editables loses focus.
|
|
97
|
+
*
|
|
98
|
+
* Introduced by {@link module:engine/view/observer/focusobserver~FocusObserver}.
|
|
99
|
+
*
|
|
100
|
+
* Note that because {@link module:engine/view/observer/focusobserver~FocusObserver} is attached by the
|
|
101
|
+
* {@link module:engine/view/view~View} this event is available by default.
|
|
102
|
+
*
|
|
103
|
+
* @see module:engine/view/observer/focusobserver~FocusObserver
|
|
104
|
+
* @event module:engine/view/document~Document#event:blur
|
|
105
|
+
* @param {module:engine/view/observer/domeventdata~DomEventData} data Event data.
|
|
106
|
+
*/
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @module engine/view/observer/inputobserver
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import DomEventObserver from './domeventobserver';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Observer for events connected with data input.
|
|
14
|
+
*
|
|
15
|
+
* Note that this observer is attached by the {@link module:engine/view/view~View} and is available by default.
|
|
16
|
+
*
|
|
17
|
+
* @extends module:engine/view/observer/domeventobserver~DomEventObserver
|
|
18
|
+
*/
|
|
19
|
+
export default class InputObserver extends DomEventObserver {
|
|
20
|
+
constructor( view ) {
|
|
21
|
+
super( view );
|
|
22
|
+
|
|
23
|
+
this.domEventType = [ 'beforeinput' ];
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
onDomEvent( domEvent ) {
|
|
27
|
+
this.fire( domEvent.type, domEvent );
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Fired before browser inputs (or deletes) some data.
|
|
33
|
+
*
|
|
34
|
+
* This event is available only on browsers which support DOM `beforeinput` event.
|
|
35
|
+
*
|
|
36
|
+
* Introduced by {@link module:engine/view/observer/inputobserver~InputObserver}.
|
|
37
|
+
*
|
|
38
|
+
* Note that because {@link module:engine/view/observer/inputobserver~InputObserver} is attached by the
|
|
39
|
+
* {@link module:engine/view/view~View} this event is available by default.
|
|
40
|
+
*
|
|
41
|
+
* @see module:engine/view/observer/inputobserver~InputObserver
|
|
42
|
+
* @event module:engine/view/document~Document#event:beforeinput
|
|
43
|
+
* @param {module:engine/view/observer/domeventdata~DomEventData} data Event data.
|
|
44
|
+
*/
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @module engine/view/observer/keyobserver
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import DomEventObserver from './domeventobserver';
|
|
11
|
+
import { getCode } from '@ckeditor/ckeditor5-utils/src/keyboard';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Observer for events connected with pressing keyboard keys.
|
|
15
|
+
*
|
|
16
|
+
* Note that this observer is attached by the {@link module:engine/view/view~View} and is available by default.
|
|
17
|
+
*
|
|
18
|
+
* @extends module:engine/view/observer/domeventobserver~DomEventObserver
|
|
19
|
+
*/
|
|
20
|
+
export default class KeyObserver extends DomEventObserver {
|
|
21
|
+
constructor( view ) {
|
|
22
|
+
super( view );
|
|
23
|
+
|
|
24
|
+
this.domEventType = [ 'keydown', 'keyup' ];
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
onDomEvent( domEvt ) {
|
|
28
|
+
this.fire( domEvt.type, domEvt, {
|
|
29
|
+
keyCode: domEvt.keyCode,
|
|
30
|
+
|
|
31
|
+
altKey: domEvt.altKey,
|
|
32
|
+
ctrlKey: domEvt.ctrlKey,
|
|
33
|
+
shiftKey: domEvt.shiftKey,
|
|
34
|
+
metaKey: domEvt.metaKey,
|
|
35
|
+
|
|
36
|
+
get keystroke() {
|
|
37
|
+
return getCode( this );
|
|
38
|
+
}
|
|
39
|
+
} );
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Fired when a key has been pressed.
|
|
45
|
+
*
|
|
46
|
+
* Introduced by {@link module:engine/view/observer/keyobserver~KeyObserver}.
|
|
47
|
+
*
|
|
48
|
+
* Note that because {@link module:engine/view/observer/keyobserver~KeyObserver} is attached by the
|
|
49
|
+
* {@link module:engine/view/view~View} this event is available by default.
|
|
50
|
+
*
|
|
51
|
+
* @see module:engine/view/observer/keyobserver~KeyObserver
|
|
52
|
+
* @event module:engine/view/document~Document#event:keydown
|
|
53
|
+
* @param {module:engine/view/observer/keyobserver~KeyEventData} keyEventData
|
|
54
|
+
*/
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Fired when a key has been released.
|
|
58
|
+
*
|
|
59
|
+
* Introduced by {@link module:engine/view/observer/keyobserver~KeyObserver}.
|
|
60
|
+
*
|
|
61
|
+
* Note that because {@link module:engine/view/observer/keyobserver~KeyObserver} is attached by the
|
|
62
|
+
* {@link module:engine/view/view~View} this event is available by default.
|
|
63
|
+
*
|
|
64
|
+
* @see module:engine/view/observer/keyobserver~KeyObserver
|
|
65
|
+
* @event module:engine/view/document~Document#event:keyup
|
|
66
|
+
* @param {module:engine/view/observer/keyobserver~KeyEventData} keyEventData
|
|
67
|
+
*/
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* The value of both events - {@link module:engine/view/document~Document#event:keydown} and
|
|
71
|
+
* {@link module:engine/view/document~Document#event:keyup}.
|
|
72
|
+
*
|
|
73
|
+
* @class module:engine/view/observer/keyobserver~KeyEventData
|
|
74
|
+
* @extends module:engine/view/observer/domeventdata~DomEventData
|
|
75
|
+
* @implements module:utils/keyboard~KeystrokeInfo
|
|
76
|
+
*/
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Code of the whole keystroke. See {@link module:utils/keyboard~getCode}.
|
|
80
|
+
*
|
|
81
|
+
* @readonly
|
|
82
|
+
* @member {Number} module:engine/view/observer/keyobserver~KeyEventData#keystroke
|
|
83
|
+
*/
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @module engine/view/observer/mouseobserver
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import DomEventObserver from './domeventobserver';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Mouse events observer.
|
|
14
|
+
*
|
|
15
|
+
* Note that this observer is not available by default. To make it available it needs to be added to
|
|
16
|
+
* {@link module:engine/view/view~View} by {@link module:engine/view/view~View#addObserver} method.
|
|
17
|
+
*
|
|
18
|
+
* @extends module:engine/view/observer/domeventobserver~DomEventObserver
|
|
19
|
+
*/
|
|
20
|
+
export default class MouseObserver extends DomEventObserver {
|
|
21
|
+
constructor( view ) {
|
|
22
|
+
super( view );
|
|
23
|
+
|
|
24
|
+
this.domEventType = [ 'mousedown', 'mouseup', 'mouseover', 'mouseout' ];
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
onDomEvent( domEvent ) {
|
|
28
|
+
this.fire( domEvent.type, domEvent );
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Fired when the mouse button is pressed down on one of the editing roots of the editor.
|
|
34
|
+
*
|
|
35
|
+
* Introduced by {@link module:engine/view/observer/mouseobserver~MouseObserver}.
|
|
36
|
+
*
|
|
37
|
+
* Note that this event is not available by default. To make it available, {@link module:engine/view/observer/mouseobserver~MouseObserver}
|
|
38
|
+
* needs to be added to {@link module:engine/view/view~View} by the {@link module:engine/view/view~View#addObserver} method.
|
|
39
|
+
*
|
|
40
|
+
* @see module:engine/view/observer/mouseobserver~MouseObserver
|
|
41
|
+
* @event module:engine/view/document~Document#event:mousedown
|
|
42
|
+
* @param {module:engine/view/observer/domeventdata~DomEventData} data The event data.
|
|
43
|
+
*/
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Fired when the mouse button is released over one of the editing roots of the editor.
|
|
47
|
+
*
|
|
48
|
+
* Introduced by {@link module:engine/view/observer/mouseobserver~MouseObserver}.
|
|
49
|
+
*
|
|
50
|
+
* Note that this event is not available by default. To make it available, {@link module:engine/view/observer/mouseobserver~MouseObserver}
|
|
51
|
+
* needs to be added to {@link module:engine/view/view~View} by the {@link module:engine/view/view~View#addObserver} method.
|
|
52
|
+
*
|
|
53
|
+
* @see module:engine/view/observer/mouseobserver~MouseObserver
|
|
54
|
+
* @event module:engine/view/document~Document#event:mouseup
|
|
55
|
+
* @param {module:engine/view/observer/domeventdata~DomEventData} data The event data.
|
|
56
|
+
*/
|