@ckeditor/ckeditor5-engine 36.0.1 → 37.0.0-alpha.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/README.md +1 -1
- package/package.json +24 -23
- package/src/controller/datacontroller.d.ts +331 -0
- package/src/controller/datacontroller.js +62 -109
- package/src/controller/editingcontroller.d.ts +98 -0
- package/src/controller/editingcontroller.js +22 -46
- package/src/conversion/conversion.d.ts +476 -0
- package/src/conversion/conversion.js +328 -347
- package/src/conversion/conversionhelpers.d.ts +26 -0
- package/src/conversion/conversionhelpers.js +1 -5
- package/src/conversion/downcastdispatcher.d.ts +547 -0
- package/src/conversion/downcastdispatcher.js +74 -152
- package/src/conversion/downcasthelpers.d.ts +1226 -0
- package/src/conversion/downcasthelpers.js +843 -762
- package/src/conversion/mapper.d.ts +499 -0
- package/src/conversion/mapper.js +84 -99
- package/src/conversion/modelconsumable.d.ts +201 -0
- package/src/conversion/modelconsumable.js +96 -99
- package/src/conversion/upcastdispatcher.d.ts +492 -0
- package/src/conversion/upcastdispatcher.js +73 -100
- package/src/conversion/upcasthelpers.d.ts +499 -0
- package/src/conversion/upcasthelpers.js +406 -373
- package/src/conversion/viewconsumable.d.ts +177 -0
- package/src/conversion/viewconsumable.js +157 -162
- package/src/dataprocessor/basichtmlwriter.d.ts +18 -0
- package/src/dataprocessor/basichtmlwriter.js +0 -9
- package/src/dataprocessor/dataprocessor.d.ts +61 -0
- package/src/dataprocessor/htmldataprocessor.d.ts +76 -0
- package/src/dataprocessor/htmldataprocessor.js +6 -28
- package/src/dataprocessor/htmlwriter.d.ts +16 -0
- package/src/dataprocessor/xmldataprocessor.d.ts +90 -0
- package/src/dataprocessor/xmldataprocessor.js +8 -40
- package/src/dev-utils/model.d.ts +124 -0
- package/src/dev-utils/model.js +41 -38
- package/src/dev-utils/operationreplayer.d.ts +51 -0
- package/src/dev-utils/operationreplayer.js +6 -14
- package/src/dev-utils/utils.d.ts +37 -0
- package/src/dev-utils/utils.js +5 -18
- package/src/dev-utils/view.d.ts +319 -0
- package/src/dev-utils/view.js +205 -226
- package/src/index.d.ts +105 -0
- package/src/index.js +1 -0
- package/src/model/batch.d.ts +106 -0
- package/src/model/differ.d.ts +329 -0
- package/src/model/document.d.ts +245 -0
- package/src/model/document.js +1 -1
- package/src/model/documentfragment.d.ts +196 -0
- package/src/model/documentfragment.js +2 -2
- package/src/model/documentselection.d.ts +420 -0
- package/src/model/element.d.ts +165 -0
- package/src/model/history.d.ts +114 -0
- package/src/model/item.d.ts +14 -0
- package/src/model/liveposition.d.ts +77 -0
- package/src/model/liverange.d.ts +102 -0
- package/src/model/markercollection.d.ts +335 -0
- package/src/model/model.d.ts +812 -0
- package/src/model/model.js +59 -30
- package/src/model/node.d.ts +256 -0
- package/src/model/nodelist.d.ts +91 -0
- package/src/model/operation/attributeoperation.d.ts +98 -0
- package/src/model/operation/detachoperation.d.ts +55 -0
- package/src/model/operation/insertoperation.d.ts +85 -0
- package/src/model/operation/markeroperation.d.ts +86 -0
- package/src/model/operation/mergeoperation.d.ts +95 -0
- package/src/model/operation/moveoperation.d.ts +91 -0
- package/src/model/operation/nooperation.d.ts +33 -0
- package/src/model/operation/operation.d.ts +89 -0
- package/src/model/operation/operationfactory.d.ts +18 -0
- package/src/model/operation/renameoperation.d.ts +78 -0
- package/src/model/operation/rootattributeoperation.d.ts +97 -0
- package/src/model/operation/rootattributeoperation.js +1 -1
- package/src/model/operation/splitoperation.d.ts +104 -0
- package/src/model/operation/transform.d.ts +100 -0
- package/src/model/operation/utils.d.ts +71 -0
- package/src/model/position.d.ts +539 -0
- package/src/model/position.js +1 -1
- package/src/model/range.d.ts +458 -0
- package/src/model/range.js +1 -1
- package/src/model/rootelement.d.ts +40 -0
- package/src/model/schema.d.ts +1176 -0
- package/src/model/schema.js +15 -15
- package/src/model/selection.d.ts +472 -0
- package/src/model/text.d.ts +66 -0
- package/src/model/text.js +0 -2
- package/src/model/textproxy.d.ts +144 -0
- package/src/model/treewalker.d.ts +186 -0
- package/src/model/treewalker.js +19 -10
- package/src/model/typecheckable.d.ts +255 -0
- package/src/model/utils/autoparagraphing.d.ts +37 -0
- package/src/model/utils/deletecontent.d.ts +58 -0
- package/src/model/utils/findoptimalinsertionrange.d.ts +32 -0
- package/src/model/utils/getselectedcontent.d.ts +30 -0
- package/src/model/utils/insertcontent.d.ts +46 -0
- package/src/model/utils/insertcontent.js +2 -12
- package/src/model/utils/insertobject.d.ts +44 -0
- package/src/model/utils/insertobject.js +3 -14
- package/src/model/utils/modifyselection.d.ts +48 -0
- package/src/model/utils/selection-post-fixer.d.ts +65 -0
- package/src/model/writer.d.ts +726 -0
- package/src/model/writer.js +6 -4
- package/src/view/attributeelement.d.ts +108 -0
- package/src/view/attributeelement.js +25 -69
- package/src/view/containerelement.d.ts +49 -0
- package/src/view/containerelement.js +10 -43
- package/src/view/datatransfer.d.ts +75 -0
- package/src/view/document.d.ts +184 -0
- package/src/view/document.js +15 -84
- package/src/view/documentfragment.d.ts +150 -0
- package/src/view/documentfragment.js +40 -81
- package/src/view/documentselection.d.ts +219 -0
- package/src/view/documentselection.js +75 -121
- package/src/view/domconverter.d.ts +620 -0
- package/src/view/domconverter.js +159 -276
- package/src/view/downcastwriter.d.ts +804 -0
- package/src/view/downcastwriter.js +336 -380
- package/src/view/editableelement.d.ts +52 -0
- package/src/view/editableelement.js +9 -49
- package/src/view/element.d.ts +466 -0
- package/src/view/element.js +150 -222
- package/src/view/elementdefinition.d.ts +87 -0
- package/src/view/emptyelement.d.ts +41 -0
- package/src/view/emptyelement.js +11 -44
- package/src/view/filler.d.ts +111 -0
- package/src/view/filler.js +24 -21
- package/src/view/item.d.ts +14 -0
- package/src/view/matcher.d.ts +486 -0
- package/src/view/matcher.js +247 -218
- package/src/view/node.d.ts +160 -0
- package/src/view/node.js +26 -100
- package/src/view/observer/arrowkeysobserver.d.ts +41 -0
- package/src/view/observer/arrowkeysobserver.js +0 -13
- package/src/view/observer/bubblingemittermixin.d.ts +166 -0
- package/src/view/observer/bubblingemittermixin.js +36 -25
- package/src/view/observer/bubblingeventinfo.d.ts +47 -0
- package/src/view/observer/bubblingeventinfo.js +3 -29
- package/src/view/observer/clickobserver.d.ts +43 -0
- package/src/view/observer/clickobserver.js +9 -19
- package/src/view/observer/compositionobserver.d.ts +82 -0
- package/src/view/observer/compositionobserver.js +13 -42
- package/src/view/observer/domeventdata.d.ts +50 -0
- package/src/view/observer/domeventdata.js +5 -30
- package/src/view/observer/domeventobserver.d.ts +69 -0
- package/src/view/observer/domeventobserver.js +19 -21
- package/src/view/observer/fakeselectionobserver.d.ts +46 -0
- package/src/view/observer/fakeselectionobserver.js +2 -15
- package/src/view/observer/focusobserver.d.ts +82 -0
- package/src/view/observer/focusobserver.js +14 -40
- package/src/view/observer/inputobserver.d.ts +86 -0
- package/src/view/observer/inputobserver.js +18 -64
- package/src/view/observer/keyobserver.d.ts +67 -0
- package/src/view/observer/keyobserver.js +8 -42
- package/src/view/observer/mouseobserver.d.ts +89 -0
- package/src/view/observer/mouseobserver.js +8 -28
- package/src/view/observer/mutationobserver.d.ts +82 -0
- package/src/view/observer/mutationobserver.js +7 -37
- package/src/view/observer/observer.d.ts +84 -0
- package/src/view/observer/observer.js +12 -25
- package/src/view/observer/selectionobserver.d.ts +143 -0
- package/src/view/observer/selectionobserver.js +9 -99
- package/src/view/observer/tabobserver.d.ts +42 -0
- package/src/view/observer/tabobserver.js +0 -14
- package/src/view/placeholder.d.ts +85 -0
- package/src/view/placeholder.js +26 -43
- package/src/view/position.d.ts +189 -0
- package/src/view/position.js +36 -83
- package/src/view/range.d.ts +279 -0
- package/src/view/range.js +79 -122
- package/src/view/rawelement.d.ts +73 -0
- package/src/view/rawelement.js +34 -48
- package/src/view/renderer.d.ts +265 -0
- package/src/view/renderer.js +105 -193
- package/src/view/rooteditableelement.d.ts +41 -0
- package/src/view/rooteditableelement.js +12 -40
- package/src/view/selection.d.ts +375 -0
- package/src/view/selection.js +79 -153
- package/src/view/styles/background.d.ts +33 -0
- package/src/view/styles/background.js +14 -12
- package/src/view/styles/border.d.ts +43 -0
- package/src/view/styles/border.js +58 -48
- package/src/view/styles/margin.d.ts +29 -0
- package/src/view/styles/margin.js +13 -11
- package/src/view/styles/padding.d.ts +29 -0
- package/src/view/styles/padding.js +13 -11
- package/src/view/styles/utils.d.ts +93 -0
- package/src/view/styles/utils.js +22 -48
- package/src/view/stylesmap.d.ts +675 -0
- package/src/view/stylesmap.js +249 -244
- package/src/view/text.d.ts +74 -0
- package/src/view/text.js +16 -46
- package/src/view/textproxy.d.ts +97 -0
- package/src/view/textproxy.js +10 -59
- package/src/view/treewalker.d.ts +195 -0
- package/src/view/treewalker.js +43 -106
- package/src/view/typecheckable.d.ts +401 -0
- package/src/view/uielement.d.ts +96 -0
- package/src/view/uielement.js +28 -62
- package/src/view/upcastwriter.d.ts +328 -0
- package/src/view/upcastwriter.js +124 -134
- package/src/view/view.d.ts +327 -0
- package/src/view/view.js +79 -150
package/src/view/view.js
CHANGED
|
@@ -32,9 +32,11 @@ import { injectQuirksHandling } from './filler';
|
|
|
32
32
|
* all changes need to be done using the {@link module:engine/view/view~View#change} method, using
|
|
33
33
|
* {@link module:engine/view/downcastwriter~DowncastWriter}:
|
|
34
34
|
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
35
|
+
* ```ts
|
|
36
|
+
* view.change( writer => {
|
|
37
|
+
* writer.insert( position, writer.createText( 'foo' ) );
|
|
38
|
+
* } );
|
|
39
|
+
* ```
|
|
38
40
|
*
|
|
39
41
|
* View controller also register {@link module:engine/view/observer/observer~Observer observers} which observes changes
|
|
40
42
|
* on DOM and fire events on the {@link module:engine/view/document~Document Document}.
|
|
@@ -53,113 +55,52 @@ import { injectQuirksHandling } from './filler';
|
|
|
53
55
|
*
|
|
54
56
|
* If you do not need full a DOM - view management, and only want to transform a tree of view elements to a tree of DOM
|
|
55
57
|
* elements you do not need this controller. You can use the {@link module:engine/view/domconverter~DomConverter DomConverter} instead.
|
|
56
|
-
*
|
|
57
|
-
* @mixes module:utils/observablemixin~ObservableMixin
|
|
58
58
|
*/
|
|
59
59
|
export default class View extends ObservableMixin() {
|
|
60
60
|
/**
|
|
61
|
-
* @param
|
|
61
|
+
* @param stylesProcessor The styles processor instance.
|
|
62
62
|
*/
|
|
63
63
|
constructor(stylesProcessor) {
|
|
64
64
|
super();
|
|
65
|
-
/**
|
|
66
|
-
* Instance of the {@link module:engine/view/document~Document} associated with this view controller.
|
|
67
|
-
*
|
|
68
|
-
* @readonly
|
|
69
|
-
* @type {module:engine/view/document~Document}
|
|
70
|
-
*/
|
|
71
|
-
this.document = new Document(stylesProcessor);
|
|
72
|
-
/**
|
|
73
|
-
* Instance of the {@link module:engine/view/domconverter~DomConverter domConverter} used by
|
|
74
|
-
* {@link module:engine/view/view~View#_renderer renderer}
|
|
75
|
-
* and {@link module:engine/view/observer/observer~Observer observers}.
|
|
76
|
-
*
|
|
77
|
-
* @readonly
|
|
78
|
-
* @type {module:engine/view/domconverter~DomConverter}
|
|
79
|
-
*/
|
|
80
|
-
this.domConverter = new DomConverter(this.document);
|
|
81
65
|
/**
|
|
82
66
|
* Roots of the DOM tree. Map on the `HTMLElement`s with roots names as keys.
|
|
83
|
-
*
|
|
84
|
-
* @readonly
|
|
85
|
-
* @type {Map.<String, HTMLElement>}
|
|
86
67
|
*/
|
|
87
68
|
this.domRoots = new Map();
|
|
88
|
-
/**
|
|
89
|
-
* Used to prevent calling {@link #forceRender} and {@link #change} during rendering view to the DOM.
|
|
90
|
-
*
|
|
91
|
-
* @readonly
|
|
92
|
-
* @member {Boolean} #isRenderingInProgress
|
|
93
|
-
*/
|
|
94
|
-
this.set('isRenderingInProgress', false);
|
|
95
|
-
/**
|
|
96
|
-
* Informs whether the DOM selection is inside any of the DOM roots managed by the view.
|
|
97
|
-
*
|
|
98
|
-
* @readonly
|
|
99
|
-
* @member {Boolean} #hasDomSelection
|
|
100
|
-
*/
|
|
101
|
-
this.set('hasDomSelection', false);
|
|
102
|
-
/**
|
|
103
|
-
* Instance of the {@link module:engine/view/renderer~Renderer renderer}.
|
|
104
|
-
*
|
|
105
|
-
* @protected
|
|
106
|
-
* @type {module:engine/view/renderer~Renderer}
|
|
107
|
-
*/
|
|
108
|
-
this._renderer = new Renderer(this.domConverter, this.document.selection);
|
|
109
|
-
this._renderer.bind('isFocused', 'isSelecting', 'isComposing')
|
|
110
|
-
.to(this.document, 'isFocused', 'isSelecting', 'isComposing');
|
|
111
69
|
/**
|
|
112
70
|
* A DOM root attributes cache. It saves the initial values of DOM root attributes before the DOM element
|
|
113
71
|
* is {@link module:engine/view/view~View#attachDomRoot attached} to the view so later on, when
|
|
114
72
|
* the view is destroyed ({@link module:engine/view/view~View#detachDomRoot}), they can be easily restored.
|
|
115
73
|
* This way, the DOM element can go back to the (clean) state as if the editing view never used it.
|
|
116
|
-
*
|
|
117
|
-
* @private
|
|
118
|
-
* @member {WeakMap.<HTMLElement,Object>}
|
|
119
74
|
*/
|
|
120
75
|
this._initialDomRootAttributes = new WeakMap();
|
|
121
76
|
/**
|
|
122
77
|
* Map of registered {@link module:engine/view/observer/observer~Observer observers}.
|
|
123
|
-
*
|
|
124
|
-
* @private
|
|
125
|
-
* @type {Map.<Function, module:engine/view/observer/observer~Observer>}
|
|
126
78
|
*/
|
|
127
79
|
this._observers = new Map();
|
|
128
80
|
/**
|
|
129
81
|
* Is set to `true` when {@link #change view changes} are currently in progress.
|
|
130
|
-
*
|
|
131
|
-
* @private
|
|
132
|
-
* @type {Boolean}
|
|
133
82
|
*/
|
|
134
83
|
this._ongoingChange = false;
|
|
135
84
|
/**
|
|
136
85
|
* Used to prevent calling {@link #forceRender} and {@link #change} during rendering view to the DOM.
|
|
137
|
-
*
|
|
138
|
-
* @private
|
|
139
|
-
* @type {Boolean}
|
|
140
86
|
*/
|
|
141
87
|
this._postFixersInProgress = false;
|
|
142
88
|
/**
|
|
143
89
|
* Internal flag to temporary disable rendering. See the usage in the {@link #_disableRendering}.
|
|
144
|
-
*
|
|
145
|
-
* @private
|
|
146
|
-
* @type {Boolean}
|
|
147
90
|
*/
|
|
148
91
|
this._renderingDisabled = false;
|
|
149
92
|
/**
|
|
150
93
|
* Internal flag that disables rendering when there are no changes since the last rendering.
|
|
151
94
|
* It stores information about changed selection and changed elements from attached document roots.
|
|
152
|
-
*
|
|
153
|
-
* @private
|
|
154
|
-
* @type {Boolean}
|
|
155
95
|
*/
|
|
156
96
|
this._hasChangedSinceTheLastRendering = false;
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
97
|
+
this.document = new Document(stylesProcessor);
|
|
98
|
+
this.domConverter = new DomConverter(this.document);
|
|
99
|
+
this.set('isRenderingInProgress', false);
|
|
100
|
+
this.set('hasDomSelection', false);
|
|
101
|
+
this._renderer = new Renderer(this.domConverter, this.document.selection);
|
|
102
|
+
this._renderer.bind('isFocused', 'isSelecting', 'isComposing')
|
|
103
|
+
.to(this.document, 'isFocused', 'isSelecting', 'isComposing');
|
|
163
104
|
this._writer = new DowncastWriter(this.document);
|
|
164
105
|
// Add default observers.
|
|
165
106
|
this.addObserver(MutationObserver);
|
|
@@ -201,8 +142,8 @@ export default class View extends ObservableMixin() {
|
|
|
201
142
|
*
|
|
202
143
|
* **Note:** Use {@link #detachDomRoot `detachDomRoot()`} to revert this action.
|
|
203
144
|
*
|
|
204
|
-
* @param
|
|
205
|
-
* @param
|
|
145
|
+
* @param domRoot DOM root element.
|
|
146
|
+
* @param name Name of the root.
|
|
206
147
|
*/
|
|
207
148
|
attachDomRoot(domRoot, name = 'main') {
|
|
208
149
|
const viewRoot = this.document.getRoot(name);
|
|
@@ -261,7 +202,7 @@ export default class View extends ObservableMixin() {
|
|
|
261
202
|
* Detaches a DOM root element from the view element and restores its attributes to the state before
|
|
262
203
|
* {@link #attachDomRoot `attachDomRoot()`}.
|
|
263
204
|
*
|
|
264
|
-
* @param
|
|
205
|
+
* @param name Name of the root to detach.
|
|
265
206
|
*/
|
|
266
207
|
detachDomRoot(name) {
|
|
267
208
|
const domRoot = this.domRoots.get(name);
|
|
@@ -278,8 +219,8 @@ export default class View extends ObservableMixin() {
|
|
|
278
219
|
/**
|
|
279
220
|
* Gets DOM root element.
|
|
280
221
|
*
|
|
281
|
-
* @param
|
|
282
|
-
* @returns
|
|
222
|
+
* @param name Name of the root.
|
|
223
|
+
* @returns DOM root element instance.
|
|
283
224
|
*/
|
|
284
225
|
getDomRoot(name = 'main') {
|
|
285
226
|
return this.domRoots.get(name);
|
|
@@ -293,9 +234,9 @@ export default class View extends ObservableMixin() {
|
|
|
293
234
|
* when registered for the first time. This means that features and other components can register a single observer
|
|
294
235
|
* multiple times without caring whether it has been already added or not.
|
|
295
236
|
*
|
|
296
|
-
* @param
|
|
237
|
+
* @param ObserverConstructor The constructor of an observer to add.
|
|
297
238
|
* Should create an instance inheriting from {@link module:engine/view/observer/observer~Observer}.
|
|
298
|
-
* @returns
|
|
239
|
+
* @returns Added observer instance.
|
|
299
240
|
*/
|
|
300
241
|
addObserver(ObserverConstructor) {
|
|
301
242
|
let observer = this._observers.get(ObserverConstructor);
|
|
@@ -313,8 +254,8 @@ export default class View extends ObservableMixin() {
|
|
|
313
254
|
/**
|
|
314
255
|
* Returns observer of the given type or `undefined` if such observer has not been added yet.
|
|
315
256
|
*
|
|
316
|
-
* @param
|
|
317
|
-
* @returns
|
|
257
|
+
* @param ObserverConstructor The constructor of an observer to get.
|
|
258
|
+
* @returns Observer instance or undefined.
|
|
318
259
|
*/
|
|
319
260
|
getObserver(ObserverConstructor) {
|
|
320
261
|
return this._observers.get(ObserverConstructor);
|
|
@@ -375,18 +316,20 @@ export default class View extends ObservableMixin() {
|
|
|
375
316
|
* to nest calls one inside another and still performs a single rendering after all those changes are made.
|
|
376
317
|
* It also returns the return value of its callback.
|
|
377
318
|
*
|
|
378
|
-
*
|
|
379
|
-
*
|
|
380
|
-
*
|
|
319
|
+
* ```ts
|
|
320
|
+
* const text = view.change( writer => {
|
|
321
|
+
* const newText = writer.createText( 'foo' );
|
|
322
|
+
* writer.insert( position1, newText );
|
|
381
323
|
*
|
|
382
|
-
*
|
|
383
|
-
*
|
|
384
|
-
*
|
|
324
|
+
* view.change( writer => {
|
|
325
|
+
* writer.insert( position2, writer.createText( 'bar' ) );
|
|
326
|
+
* } );
|
|
385
327
|
*
|
|
386
|
-
*
|
|
328
|
+
* writer.remove( range );
|
|
387
329
|
*
|
|
388
|
-
*
|
|
389
|
-
*
|
|
330
|
+
* return newText;
|
|
331
|
+
* } );
|
|
332
|
+
* ```
|
|
390
333
|
*
|
|
391
334
|
* When the outermost change block is done and rendering to the DOM is over the
|
|
392
335
|
* {@link module:engine/view/view~View#event:render `View#render`} event is fired.
|
|
@@ -394,8 +337,8 @@ export default class View extends ObservableMixin() {
|
|
|
394
337
|
* This method throws a `applying-view-changes-on-rendering` error when
|
|
395
338
|
* the change block is used after rendering to the DOM has started.
|
|
396
339
|
*
|
|
397
|
-
* @param
|
|
398
|
-
* @returns
|
|
340
|
+
* @param callback Callback function which may modify the view.
|
|
341
|
+
* @returns Value returned by the callback.
|
|
399
342
|
*/
|
|
400
343
|
change(callback) {
|
|
401
344
|
if (this.isRenderingInProgress || this._postFixersInProgress) {
|
|
@@ -477,9 +420,7 @@ export default class View extends ObservableMixin() {
|
|
|
477
420
|
* * {@link #createPositionBefore},
|
|
478
421
|
* * {@link #createPositionAfter},
|
|
479
422
|
*
|
|
480
|
-
* @param {module:engine/view/item~Item
|
|
481
|
-
* @param {Number|'end'|'before'|'after'} [offset] Offset or one of the flags. Used only when
|
|
482
|
-
* first parameter is a {@link module:engine/view/item~Item view item}.
|
|
423
|
+
* @param offset Offset or one of the flags. Used only when first parameter is a {@link module:engine/view/item~Item view item}.
|
|
483
424
|
*/
|
|
484
425
|
createPositionAt(itemOrPosition, offset) {
|
|
485
426
|
return Position._createAt(itemOrPosition, offset);
|
|
@@ -487,8 +428,7 @@ export default class View extends ObservableMixin() {
|
|
|
487
428
|
/**
|
|
488
429
|
* Creates a new position after given view item.
|
|
489
430
|
*
|
|
490
|
-
* @param
|
|
491
|
-
* @returns {module:engine/view/position~Position}
|
|
431
|
+
* @param item View item after which the position should be located.
|
|
492
432
|
*/
|
|
493
433
|
createPositionAfter(item) {
|
|
494
434
|
return Position._createAfter(item);
|
|
@@ -496,8 +436,7 @@ export default class View extends ObservableMixin() {
|
|
|
496
436
|
/**
|
|
497
437
|
* Creates a new position before given view item.
|
|
498
438
|
*
|
|
499
|
-
* @param
|
|
500
|
-
* @returns {module:engine/view/position~Position}
|
|
439
|
+
* @param item View item before which the position should be located.
|
|
501
440
|
*/
|
|
502
441
|
createPositionBefore(item) {
|
|
503
442
|
return Position._createBefore(item);
|
|
@@ -507,18 +446,14 @@ export default class View extends ObservableMixin() {
|
|
|
507
446
|
*
|
|
508
447
|
* **Note:** This factory method creates it's own {@link module:engine/view/position~Position} instances basing on passed values.
|
|
509
448
|
*
|
|
510
|
-
* @param
|
|
511
|
-
* @param
|
|
512
|
-
* @returns {module:engine/view/range~Range}
|
|
449
|
+
* @param start Start position.
|
|
450
|
+
* @param end End position. If not set, range will be collapsed at `start` position.
|
|
513
451
|
*/
|
|
514
|
-
createRange(
|
|
515
|
-
return new Range(
|
|
452
|
+
createRange(start, end) {
|
|
453
|
+
return new Range(start, end);
|
|
516
454
|
}
|
|
517
455
|
/**
|
|
518
456
|
* Creates a range that starts before given {@link module:engine/view/item~Item view item} and ends after it.
|
|
519
|
-
*
|
|
520
|
-
* @param {module:engine/view/item~Item} item
|
|
521
|
-
* @returns {module:engine/view/range~Range}
|
|
522
457
|
*/
|
|
523
458
|
createRangeOn(item) {
|
|
524
459
|
return Range._createOn(item);
|
|
@@ -527,8 +462,7 @@ export default class View extends ObservableMixin() {
|
|
|
527
462
|
* Creates a range inside an {@link module:engine/view/element~Element element} which starts before the first child of
|
|
528
463
|
* that element and ends after the last child of that element.
|
|
529
464
|
*
|
|
530
|
-
* @param
|
|
531
|
-
* @returns {module:engine/view/range~Range}
|
|
465
|
+
* @param element Element which is a parent for the range.
|
|
532
466
|
*/
|
|
533
467
|
createRangeIn(element) {
|
|
534
468
|
return Range._createIn(element);
|
|
@@ -536,44 +470,48 @@ export default class View extends ObservableMixin() {
|
|
|
536
470
|
/**
|
|
537
471
|
Creates new {@link module:engine/view/selection~Selection} instance.
|
|
538
472
|
*
|
|
539
|
-
*
|
|
540
|
-
*
|
|
473
|
+
* ```ts
|
|
474
|
+
* // Creates empty selection without ranges.
|
|
475
|
+
* const selection = view.createSelection();
|
|
541
476
|
*
|
|
542
|
-
*
|
|
543
|
-
*
|
|
544
|
-
*
|
|
477
|
+
* // Creates selection at the given range.
|
|
478
|
+
* const range = view.createRange( start, end );
|
|
479
|
+
* const selection = view.createSelection( range );
|
|
545
480
|
*
|
|
546
|
-
*
|
|
547
|
-
*
|
|
548
|
-
*
|
|
481
|
+
* // Creates selection at the given ranges
|
|
482
|
+
* const ranges = [ view.createRange( start1, end2 ), view.createRange( star2, end2 ) ];
|
|
483
|
+
* const selection = view.createSelection( ranges );
|
|
549
484
|
*
|
|
550
|
-
*
|
|
551
|
-
*
|
|
552
|
-
*
|
|
485
|
+
* // Creates selection from the other selection.
|
|
486
|
+
* const otherSelection = view.createSelection();
|
|
487
|
+
* const selection = view.createSelection( otherSelection );
|
|
553
488
|
*
|
|
554
|
-
*
|
|
555
|
-
*
|
|
489
|
+
* // Creates selection from the document selection.
|
|
490
|
+
* const selection = view.createSelection( editor.editing.view.document.selection );
|
|
556
491
|
*
|
|
557
|
-
*
|
|
558
|
-
*
|
|
559
|
-
*
|
|
492
|
+
* // Creates selection at the given position.
|
|
493
|
+
* const position = view.createPositionFromPath( root, path );
|
|
494
|
+
* const selection = view.createSelection( position );
|
|
560
495
|
*
|
|
561
|
-
*
|
|
562
|
-
*
|
|
563
|
-
*
|
|
496
|
+
* // Creates collapsed selection at the position of given item and offset.
|
|
497
|
+
* const paragraph = view.createContainerElement( 'paragraph' );
|
|
498
|
+
* const selection = view.createSelection( paragraph, offset );
|
|
564
499
|
*
|
|
565
|
-
*
|
|
566
|
-
*
|
|
567
|
-
*
|
|
500
|
+
* // Creates a range inside an {@link module:engine/view/element~Element element} which starts before the
|
|
501
|
+
* // first child of that element and ends after the last child of that element.
|
|
502
|
+
* const selection = view.createSelection( paragraph, 'in' );
|
|
568
503
|
*
|
|
569
|
-
*
|
|
570
|
-
*
|
|
571
|
-
*
|
|
504
|
+
* // Creates a range on an {@link module:engine/view/item~Item item} which starts before the item and ends
|
|
505
|
+
* // just after the item.
|
|
506
|
+
* const selection = view.createSelection( paragraph, 'on' );
|
|
507
|
+
* ```
|
|
572
508
|
*
|
|
573
509
|
* `Selection`'s factory method allow passing additional options (`backward`, `fake` and `label`) as the last argument.
|
|
574
510
|
*
|
|
575
|
-
*
|
|
576
|
-
*
|
|
511
|
+
* ```ts
|
|
512
|
+
* // Creates backward selection.
|
|
513
|
+
* const selection = view.createSelection( range, { backward: true } );
|
|
514
|
+
* ```
|
|
577
515
|
*
|
|
578
516
|
* Fake selection does not render as browser native selection over selected elements and is hidden to the user.
|
|
579
517
|
* This way, no native selection UI artifacts are displayed to the user and selection over elements can be
|
|
@@ -582,16 +520,10 @@ export default class View extends ObservableMixin() {
|
|
|
582
520
|
* Additionally fake's selection label can be provided. It will be used to describe fake selection in DOM
|
|
583
521
|
* (and be properly handled by screen readers).
|
|
584
522
|
*
|
|
585
|
-
*
|
|
586
|
-
*
|
|
587
|
-
*
|
|
588
|
-
*
|
|
589
|
-
* @param {Number|'before'|'end'|'after'|'on'|'in'} [placeOrOffset] Offset or place when selectable is an `Item`.
|
|
590
|
-
* @param {Object} [options]
|
|
591
|
-
* @param {Boolean} [options.backward] Sets this selection instance to be backward.
|
|
592
|
-
* @param {Boolean} [options.fake] Sets this selection instance to be marked as `fake`.
|
|
593
|
-
* @param {String} [options.label] Label for the fake selection.
|
|
594
|
-
* @returns {module:engine/view/selection~Selection}
|
|
523
|
+
* ```ts
|
|
524
|
+
* // Creates fake selection with label.
|
|
525
|
+
* const selection = view.createSelection( range, { fake: true, label: 'foo' } );
|
|
526
|
+
* ```
|
|
595
527
|
*/
|
|
596
528
|
createSelection(...args) {
|
|
597
529
|
return new Selection(...args);
|
|
@@ -600,9 +532,8 @@ export default class View extends ObservableMixin() {
|
|
|
600
532
|
* Disables or enables rendering. If the flag is set to `true` then the rendering will be disabled.
|
|
601
533
|
* If the flag is set to `false` and if there was some change in the meantime, then the rendering action will be performed.
|
|
602
534
|
*
|
|
603
|
-
* @protected
|
|
604
535
|
* @internal
|
|
605
|
-
* @param
|
|
536
|
+
* @param flag A flag indicates whether the rendering should be disabled.
|
|
606
537
|
*/
|
|
607
538
|
_disableRendering(flag) {
|
|
608
539
|
this._renderingDisabled = flag;
|
|
@@ -614,8 +545,6 @@ export default class View extends ObservableMixin() {
|
|
|
614
545
|
/**
|
|
615
546
|
* Renders all changes. In order to avoid triggering the observers (e.g. selection) all observers are disabled
|
|
616
547
|
* before rendering and re-enabled after that.
|
|
617
|
-
*
|
|
618
|
-
* @private
|
|
619
548
|
*/
|
|
620
549
|
_render() {
|
|
621
550
|
this.isRenderingInProgress = true;
|