@ckeditor/ckeditor5-engine 45.2.1 → 46.0.0-alpha.1
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/dist/index.js +2563 -2257
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
- package/src/controller/datacontroller.d.ts +33 -32
- package/src/controller/datacontroller.js +29 -28
- package/src/controller/editingcontroller.d.ts +8 -8
- package/src/controller/editingcontroller.js +10 -10
- package/src/conversion/conversion.d.ts +18 -19
- package/src/conversion/conversion.js +4 -4
- package/src/conversion/conversionhelpers.d.ts +1 -1
- package/src/conversion/conversionhelpers.js +1 -1
- package/src/conversion/downcastdispatcher.d.ts +63 -69
- package/src/conversion/downcastdispatcher.js +16 -16
- package/src/conversion/downcasthelpers.d.ts +94 -83
- package/src/conversion/downcasthelpers.js +63 -53
- package/src/conversion/mapper.d.ts +27 -27
- package/src/conversion/mapper.js +15 -15
- package/src/conversion/modelconsumable.d.ts +26 -26
- package/src/conversion/modelconsumable.js +23 -23
- package/src/conversion/upcastdispatcher.d.ts +33 -32
- package/src/conversion/upcastdispatcher.js +19 -19
- package/src/conversion/upcasthelpers.d.ts +46 -38
- package/src/conversion/upcasthelpers.js +33 -24
- package/src/conversion/viewconsumable.d.ts +50 -45
- package/src/conversion/viewconsumable.js +32 -27
- package/src/dataprocessor/basichtmlwriter.d.ts +4 -2
- package/src/dataprocessor/basichtmlwriter.js +3 -1
- package/src/dataprocessor/dataprocessor.d.ts +7 -6
- package/src/dataprocessor/htmldataprocessor.d.ts +10 -10
- package/src/dataprocessor/htmldataprocessor.js +6 -6
- package/src/dataprocessor/htmlwriter.d.ts +1 -1
- package/src/dataprocessor/xmldataprocessor.d.ts +10 -10
- package/src/dataprocessor/xmldataprocessor.js +6 -6
- package/src/dev-utils/model.d.ts +25 -26
- package/src/dev-utils/model.js +35 -36
- package/src/dev-utils/operationreplayer.d.ts +5 -3
- package/src/dev-utils/operationreplayer.js +4 -2
- package/src/dev-utils/utils.d.ts +8 -0
- package/src/dev-utils/utils.js +8 -0
- package/src/dev-utils/view.d.ts +66 -63
- package/src/dev-utils/view.js +144 -134
- package/src/index.d.ts +135 -106
- package/src/index.js +120 -71
- package/src/legacyerrors.d.ts +5 -0
- package/src/legacyerrors.js +17 -0
- package/src/model/batch.d.ts +2 -15
- package/src/model/batch.js +1 -23
- package/src/model/differ.d.ts +54 -31
- package/src/model/differ.js +15 -15
- package/src/model/document.d.ts +31 -31
- package/src/model/document.js +13 -13
- package/src/model/documentfragment.d.ts +45 -45
- package/src/model/documentfragment.js +40 -40
- package/src/model/documentselection.d.ts +92 -92
- package/src/model/documentselection.js +71 -70
- package/src/model/element.d.ts +31 -31
- package/src/model/element.js +29 -29
- package/src/model/history.d.ts +3 -3
- package/src/model/history.js +2 -2
- package/src/model/item.d.ts +4 -5
- package/src/model/liveposition.d.ts +31 -31
- package/src/model/liveposition.js +18 -18
- package/src/model/liverange.d.ts +42 -38
- package/src/model/liverange.js +17 -16
- package/src/model/markercollection.d.ts +41 -40
- package/src/model/markercollection.js +22 -20
- package/src/model/model.d.ts +82 -81
- package/src/model/model.js +54 -54
- package/src/model/node.d.ts +48 -48
- package/src/model/node.js +31 -31
- package/src/model/nodelist.d.ts +17 -17
- package/src/model/nodelist.js +11 -11
- package/src/model/operation/attributeoperation.d.ts +10 -10
- package/src/model/operation/attributeoperation.js +7 -7
- package/src/model/operation/detachoperation.d.ts +11 -9
- package/src/model/operation/detachoperation.js +8 -6
- package/src/model/operation/insertoperation.d.ts +13 -13
- package/src/model/operation/insertoperation.js +15 -15
- package/src/model/operation/markeroperation.d.ts +12 -12
- package/src/model/operation/markeroperation.js +5 -5
- package/src/model/operation/mergeoperation.d.ts +16 -16
- package/src/model/operation/mergeoperation.js +18 -18
- package/src/model/operation/moveoperation.d.ts +16 -16
- package/src/model/operation/moveoperation.js +18 -15
- package/src/model/operation/nooperation.d.ts +4 -4
- package/src/model/operation/nooperation.js +2 -2
- package/src/model/operation/operation.d.ts +10 -10
- package/src/model/operation/operation.js +5 -5
- package/src/model/operation/operationfactory.d.ts +4 -4
- package/src/model/operation/operationfactory.js +12 -12
- package/src/model/operation/renameoperation.d.ts +10 -10
- package/src/model/operation/renameoperation.js +7 -7
- package/src/model/operation/rootattributeoperation.d.ts +12 -12
- package/src/model/operation/rootattributeoperation.js +8 -8
- package/src/model/operation/rootoperation.d.ts +8 -8
- package/src/model/operation/rootoperation.js +3 -3
- package/src/model/operation/splitoperation.d.ts +17 -17
- package/src/model/operation/splitoperation.js +19 -19
- package/src/model/operation/transform.d.ts +11 -8
- package/src/model/operation/transform.js +66 -49
- package/src/model/operation/utils.d.ts +24 -23
- package/src/model/operation/utils.js +20 -20
- package/src/model/position.d.ts +101 -97
- package/src/model/position.js +69 -64
- package/src/model/range.d.ts +90 -90
- package/src/model/range.js +87 -87
- package/src/model/rootelement.d.ts +11 -11
- package/src/model/rootelement.js +9 -9
- package/src/model/schema.d.ts +158 -154
- package/src/model/schema.js +93 -90
- package/src/model/selection.d.ts +73 -73
- package/src/model/selection.js +62 -62
- package/src/model/text.d.ts +11 -10
- package/src/model/text.js +11 -10
- package/src/model/textproxy.d.ts +39 -38
- package/src/model/textproxy.js +31 -30
- package/src/model/treewalker.d.ts +37 -37
- package/src/model/treewalker.js +14 -14
- package/src/model/typecheckable.d.ts +45 -45
- package/src/model/typecheckable.js +1 -1
- package/src/model/utils/autoparagraphing.d.ts +7 -7
- package/src/model/utils/deletecontent.d.ts +7 -5
- package/src/model/utils/deletecontent.js +13 -11
- package/src/model/utils/getselectedcontent.d.ts +6 -5
- package/src/model/utils/getselectedcontent.js +2 -1
- package/src/model/utils/insertcontent.d.ts +9 -8
- package/src/model/utils/insertcontent.js +41 -40
- package/src/model/utils/insertobject.d.ts +9 -9
- package/src/model/utils/insertobject.js +4 -4
- package/src/model/utils/modifyselection.d.ts +5 -4
- package/src/model/utils/modifyselection.js +12 -11
- package/src/model/utils/selection-post-fixer.d.ts +12 -8
- package/src/model/utils/selection-post-fixer.js +15 -11
- package/src/model/writer.d.ts +102 -101
- package/src/model/writer.js +99 -98
- package/src/view/attributeelement.d.ts +29 -29
- package/src/view/attributeelement.js +25 -25
- package/src/view/containerelement.d.ts +16 -15
- package/src/view/containerelement.js +15 -14
- package/src/view/datatransfer.d.ts +7 -7
- package/src/view/datatransfer.js +1 -1
- package/src/view/document.d.ts +25 -25
- package/src/view/document.js +15 -15
- package/src/view/documentfragment.d.ts +21 -21
- package/src/view/documentfragment.js +14 -14
- package/src/view/documentselection.d.ts +65 -63
- package/src/view/documentselection.js +27 -25
- package/src/view/domconverter.d.ts +96 -91
- package/src/view/domconverter.js +78 -73
- package/src/view/downcastwriter.d.ts +185 -181
- package/src/view/downcastwriter.js +222 -210
- package/src/view/editableelement.d.ts +13 -13
- package/src/view/editableelement.js +8 -8
- package/src/view/element.d.ts +75 -74
- package/src/view/element.js +58 -58
- package/src/view/elementdefinition.d.ts +3 -4
- package/src/view/emptyelement.d.ts +13 -13
- package/src/view/emptyelement.js +13 -13
- package/src/view/filler.d.ts +14 -3
- package/src/view/filler.js +12 -1
- package/src/view/item.d.ts +4 -5
- package/src/view/matcher.d.ts +22 -19
- package/src/view/matcher.js +6 -6
- package/src/view/node.d.ts +33 -33
- package/src/view/node.js +9 -9
- package/src/view/observer/arrowkeysobserver.d.ts +10 -10
- package/src/view/observer/arrowkeysobserver.js +5 -5
- package/src/view/observer/bubblingemittermixin.d.ts +5 -5
- package/src/view/observer/bubblingemittermixin.js +2 -9
- package/src/view/observer/bubblingeventinfo.d.ts +9 -9
- package/src/view/observer/bubblingeventinfo.js +1 -1
- package/src/view/observer/clickobserver.d.ts +8 -8
- package/src/view/observer/clickobserver.js +4 -4
- package/src/view/observer/compositionobserver.d.ts +19 -19
- package/src/view/observer/compositionobserver.js +6 -6
- package/src/view/observer/domeventdata.d.ts +9 -9
- package/src/view/observer/domeventdata.js +2 -2
- package/src/view/observer/domeventobserver.d.ts +3 -3
- package/src/view/observer/domeventobserver.js +5 -5
- package/src/view/observer/fakeselectionobserver.d.ts +9 -9
- package/src/view/observer/fakeselectionobserver.js +8 -8
- package/src/view/observer/focusobserver.d.ts +16 -16
- package/src/view/observer/focusobserver.js +7 -7
- package/src/view/observer/inputobserver.d.ts +18 -18
- package/src/view/observer/inputobserver.js +5 -5
- package/src/view/observer/keyobserver.d.ts +11 -11
- package/src/view/observer/keyobserver.js +3 -3
- package/src/view/observer/mouseobserver.d.ts +16 -16
- package/src/view/observer/mouseobserver.js +3 -3
- package/src/view/observer/mutationobserver.d.ts +21 -21
- package/src/view/observer/mutationobserver.js +7 -7
- package/src/view/observer/observer.d.ts +12 -12
- package/src/view/observer/observer.js +6 -6
- package/src/view/observer/selectionobserver.d.ts +33 -33
- package/src/view/observer/selectionobserver.js +14 -14
- package/src/view/observer/tabobserver.d.ts +10 -10
- package/src/view/observer/tabobserver.js +5 -5
- package/src/view/observer/touchobserver.d.ts +13 -13
- package/src/view/observer/touchobserver.js +3 -3
- package/src/view/placeholder.d.ts +21 -21
- package/src/view/placeholder.js +23 -23
- package/src/view/position.d.ts +49 -49
- package/src/view/position.js +42 -42
- package/src/view/range.d.ts +76 -74
- package/src/view/range.js +67 -65
- package/src/view/rawelement.d.ts +19 -19
- package/src/view/rawelement.js +16 -16
- package/src/view/renderer.d.ts +14 -14
- package/src/view/renderer.js +7 -7
- package/src/view/rooteditableelement.d.ts +8 -7
- package/src/view/rooteditableelement.js +7 -6
- package/src/view/selection.d.ts +66 -64
- package/src/view/selection.js +50 -48
- package/src/view/styles/background.d.ts +2 -2
- package/src/view/styles/background.js +9 -9
- package/src/view/styles/border.d.ts +2 -2
- package/src/view/styles/border.js +13 -13
- package/src/view/styles/margin.d.ts +2 -2
- package/src/view/styles/margin.js +5 -5
- package/src/view/styles/padding.d.ts +2 -2
- package/src/view/styles/padding.js +5 -5
- package/src/view/styles/utils.d.ts +24 -24
- package/src/view/styles/utils.js +25 -25
- package/src/view/stylesmap.d.ts +28 -32
- package/src/view/stylesmap.js +52 -39
- package/src/view/text.d.ts +11 -11
- package/src/view/text.js +10 -10
- package/src/view/textproxy.d.ts +33 -32
- package/src/view/textproxy.js +23 -22
- package/src/view/tokenlist.d.ts +14 -14
- package/src/view/tokenlist.js +10 -10
- package/src/view/treewalker.d.ts +42 -40
- package/src/view/treewalker.js +36 -35
- package/src/view/typecheckable.d.ts +76 -75
- package/src/view/typecheckable.js +1 -1
- package/src/view/uielement.d.ts +22 -21
- package/src/view/uielement.js +17 -16
- package/src/view/upcastwriter.d.ts +70 -70
- package/src/view/upcastwriter.js +42 -42
- package/src/view/view.d.ts +70 -69
- package/src/view/view.js +56 -55
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
/**
|
|
6
6
|
* @module engine/model/markercollection
|
|
7
7
|
*/
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import type
|
|
11
|
-
import type
|
|
8
|
+
import { ModelTypeCheckable } from './typecheckable.js';
|
|
9
|
+
import { ModelLiveRange, type ModelLiveRangeChangeContentEvent, type ModelLiveRangeChangeRangeEvent, type ModelLiveRangeChangeEvent } from './liverange.js';
|
|
10
|
+
import { type ModelPosition } from './position.js';
|
|
11
|
+
import { type ModelRange } from './range.js';
|
|
12
12
|
declare const MarkerCollection_base: {
|
|
13
13
|
new (): import("@ckeditor/ckeditor5-utils").Emitter;
|
|
14
14
|
prototype: import("@ckeditor/ckeditor5-utils").Emitter;
|
|
@@ -18,8 +18,8 @@ declare const MarkerCollection_base: {
|
|
|
18
18
|
* It lets you {@link module:engine/model/markercollection~MarkerCollection#get get} markers or track them using
|
|
19
19
|
* {@link module:engine/model/markercollection~MarkerCollection#event:update} event.
|
|
20
20
|
*
|
|
21
|
-
* To create, change or remove makers use {@link module:engine/model/writer~
|
|
22
|
-
* {@link module:engine/model/writer~
|
|
21
|
+
* To create, change or remove makers use {@link module:engine/model/writer~ModelWriter model writers'} methods:
|
|
22
|
+
* {@link module:engine/model/writer~ModelWriter#addMarker} or {@link module:engine/model/writer~ModelWriter#removeMarker}. Since
|
|
23
23
|
* the writer is the only proper way to change the data model it is not possible to change markers directly using this
|
|
24
24
|
* collection. All markers created by the writer will be automatically added to this collection.
|
|
25
25
|
*
|
|
@@ -27,7 +27,7 @@ declare const MarkerCollection_base: {
|
|
|
27
27
|
*
|
|
28
28
|
* @see module:engine/model/markercollection~Marker
|
|
29
29
|
*/
|
|
30
|
-
export
|
|
30
|
+
export declare class MarkerCollection extends /* #__PURE__ */ MarkerCollection_base implements Iterable<Marker> {
|
|
31
31
|
/**
|
|
32
32
|
* Stores {@link ~Marker markers} added to the collection.
|
|
33
33
|
*/
|
|
@@ -55,7 +55,7 @@ export default class MarkerCollection extends /* #__PURE__ */ MarkerCollection_b
|
|
|
55
55
|
get(markerName: string): Marker | null;
|
|
56
56
|
/**
|
|
57
57
|
* Creates and adds a {@link ~Marker marker} to the `MarkerCollection` with given name on given
|
|
58
|
-
* {@link module:engine/model/range~
|
|
58
|
+
* {@link module:engine/model/range~ModelRange range}.
|
|
59
59
|
*
|
|
60
60
|
* If `MarkerCollection` already had a marker with given name (or {@link ~Marker marker} was passed), the marker in
|
|
61
61
|
* collection is updated and {@link module:engine/model/markercollection~MarkerCollection#event:update} event is fired
|
|
@@ -71,7 +71,7 @@ export default class MarkerCollection extends /* #__PURE__ */ MarkerCollection_b
|
|
|
71
71
|
* (is persisted in the editor's data).
|
|
72
72
|
* @returns `Marker` instance which was added or updated.
|
|
73
73
|
*/
|
|
74
|
-
_set(markerOrName: string | Marker, range:
|
|
74
|
+
_set(markerOrName: string | Marker, range: ModelRange, managedUsingOperations?: boolean, affectsData?: boolean): Marker;
|
|
75
75
|
/**
|
|
76
76
|
* Removes given {@link ~Marker marker} or a marker with given name from the `MarkerCollection`.
|
|
77
77
|
*
|
|
@@ -92,13 +92,14 @@ export default class MarkerCollection extends /* #__PURE__ */ MarkerCollection_b
|
|
|
92
92
|
*/
|
|
93
93
|
_refresh(markerOrName: string | Marker): void;
|
|
94
94
|
/**
|
|
95
|
-
* Returns iterator that iterates over all markers, which ranges
|
|
95
|
+
* Returns iterator that iterates over all markers, which ranges
|
|
96
|
+
* contain given {@link module:engine/model/position~ModelPosition position}.
|
|
96
97
|
*/
|
|
97
|
-
getMarkersAtPosition(position:
|
|
98
|
+
getMarkersAtPosition(position: ModelPosition): IterableIterator<Marker>;
|
|
98
99
|
/**
|
|
99
|
-
* Returns iterator that iterates over all markers, which intersects with given {@link module:engine/model/range~
|
|
100
|
+
* Returns iterator that iterates over all markers, which intersects with given {@link module:engine/model/range~ModelRange range}.
|
|
100
101
|
*/
|
|
101
|
-
getMarkersIntersectingRange(range:
|
|
102
|
+
getMarkersIntersectingRange(range: ModelRange): Iterable<Marker>;
|
|
102
103
|
/**
|
|
103
104
|
* Destroys marker collection and all markers inside it.
|
|
104
105
|
*/
|
|
@@ -125,7 +126,7 @@ export interface MarkerData {
|
|
|
125
126
|
/**
|
|
126
127
|
* Marker range. `null` if the marker was removed.
|
|
127
128
|
*/
|
|
128
|
-
range:
|
|
129
|
+
range: ModelRange | null;
|
|
129
130
|
/**
|
|
130
131
|
* A property defining if the marker affects data.
|
|
131
132
|
*/
|
|
@@ -135,10 +136,10 @@ export interface MarkerData {
|
|
|
135
136
|
*/
|
|
136
137
|
managedUsingOperations: boolean;
|
|
137
138
|
}
|
|
138
|
-
declare const Marker_base: import("@ckeditor/ckeditor5-utils").Mixed<typeof
|
|
139
|
+
declare const Marker_base: import("@ckeditor/ckeditor5-utils").Mixed<typeof ModelTypeCheckable, import("@ckeditor/ckeditor5-utils").Emitter>;
|
|
139
140
|
/**
|
|
140
141
|
* `Marker` is a continuous part of the model (like a range), is named and represents some kind of information about the
|
|
141
|
-
* marked part of the model document. In contrary to {@link module:engine/model/node~
|
|
142
|
+
* marked part of the model document. In contrary to {@link module:engine/model/node~ModelNode nodes}, which are building blocks of
|
|
142
143
|
* the model document tree, markers are not stored directly in the document tree but in the
|
|
143
144
|
* {@link module:engine/model/model~Model#markers model markers' collection}. Still, they are document data, by giving
|
|
144
145
|
* additional meaning to the part of a model document between marker start and marker end.
|
|
@@ -157,7 +158,7 @@ declare const Marker_base: import("@ckeditor/ckeditor5-utils").Mixed<typeof Type
|
|
|
157
158
|
* Markers are built from a name and a range.
|
|
158
159
|
*
|
|
159
160
|
* Range of the marker is updated automatically when document changes, using
|
|
160
|
-
* {@link module:engine/model/liverange~
|
|
161
|
+
* {@link module:engine/model/liverange~ModelLiveRange live range} mechanism.
|
|
161
162
|
*
|
|
162
163
|
* Name is used to group and identify markers. Names have to be unique, but markers can be grouped by
|
|
163
164
|
* using common prefixes, separated with `:`, for example: `user:john` or `search:3`. That's useful in term of creating
|
|
@@ -167,7 +168,7 @@ declare const Marker_base: import("@ckeditor/ckeditor5-utils").Mixed<typeof Type
|
|
|
167
168
|
*
|
|
168
169
|
* There are two types of markers.
|
|
169
170
|
*
|
|
170
|
-
* 1. Markers managed directly, without using operations. They are added directly by {@link module:engine/model/writer~
|
|
171
|
+
* 1. Markers managed directly, without using operations. They are added directly by {@link module:engine/model/writer~ModelWriter}
|
|
171
172
|
* to the {@link module:engine/model/markercollection~MarkerCollection} without any additional mechanism. They can be used
|
|
172
173
|
* as bookmarks or visual markers. They are great for showing results of the find, or select link when the focus is in the input.
|
|
173
174
|
*
|
|
@@ -176,8 +177,8 @@ declare const Marker_base: import("@ckeditor/ckeditor5-utils").Mixed<typeof Type
|
|
|
176
177
|
* Therefore, they are handled in the undo stack and synchronized between clients if the collaboration plugin is enabled.
|
|
177
178
|
* This type of markers is useful for solutions like spell checking or comments.
|
|
178
179
|
*
|
|
179
|
-
* Both type of them should be added / updated by {@link module:engine/model/writer~
|
|
180
|
-
* and removed by {@link module:engine/model/writer~
|
|
180
|
+
* Both type of them should be added / updated by {@link module:engine/model/writer~ModelWriter#addMarker}
|
|
181
|
+
* and removed by {@link module:engine/model/writer~ModelWriter#removeMarker} methods.
|
|
181
182
|
*
|
|
182
183
|
* ```ts
|
|
183
184
|
* model.change( ( writer ) => {
|
|
@@ -189,7 +190,7 @@ declare const Marker_base: import("@ckeditor/ckeditor5-utils").Mixed<typeof Type
|
|
|
189
190
|
* } );
|
|
190
191
|
* ```
|
|
191
192
|
*
|
|
192
|
-
* See {@link module:engine/model/writer~
|
|
193
|
+
* See {@link module:engine/model/writer~ModelWriter} to find more examples.
|
|
193
194
|
*
|
|
194
195
|
* Since markers need to track change in the document, for efficiency reasons, it is best to create and keep as little
|
|
195
196
|
* markers as possible and remove them as soon as they are not needed anymore.
|
|
@@ -235,11 +236,11 @@ declare class Marker extends /* #__PURE__ */ Marker_base {
|
|
|
235
236
|
* @param managedUsingOperations Specifies whether the marker is managed using operations.
|
|
236
237
|
* @param affectsData Specifies whether the marker affects the data produced by the data pipeline (is persisted in the editor's data).
|
|
237
238
|
*/
|
|
238
|
-
constructor(name: string, liveRange:
|
|
239
|
+
constructor(name: string, liveRange: ModelLiveRange, managedUsingOperations: boolean, affectsData: boolean);
|
|
239
240
|
/**
|
|
240
241
|
* A value indicating if the marker is managed using operations.
|
|
241
242
|
* See {@link ~Marker marker class description} to learn more about marker types.
|
|
242
|
-
* See {@link module:engine/model/writer~
|
|
243
|
+
* See {@link module:engine/model/writer~ModelWriter#addMarker}.
|
|
243
244
|
*/
|
|
244
245
|
get managedUsingOperations(): boolean;
|
|
245
246
|
/**
|
|
@@ -253,22 +254,22 @@ declare class Marker extends /* #__PURE__ */ Marker_base {
|
|
|
253
254
|
/**
|
|
254
255
|
* Returns current marker start position.
|
|
255
256
|
*/
|
|
256
|
-
getStart():
|
|
257
|
+
getStart(): ModelPosition;
|
|
257
258
|
/**
|
|
258
259
|
* Returns current marker end position.
|
|
259
260
|
*/
|
|
260
|
-
getEnd():
|
|
261
|
+
getEnd(): ModelPosition;
|
|
261
262
|
/**
|
|
262
263
|
* Returns a range that represents the current state of the marker.
|
|
263
264
|
*
|
|
264
|
-
* Keep in mind that returned value is a {@link module:engine/model/range~
|
|
265
|
-
* {@link module:engine/model/liverange~
|
|
265
|
+
* Keep in mind that returned value is a {@link module:engine/model/range~ModelRange Range}, not a
|
|
266
|
+
* {@link module:engine/model/liverange~ModelLiveRange ModelLiveRange}. This means that it is up-to-date and relevant only
|
|
266
267
|
* until next model document change. Do not store values returned by this method. Instead, store {@link ~Marker#name}
|
|
267
268
|
* and get `Marker` instance from {@link module:engine/model/markercollection~MarkerCollection MarkerCollection} every
|
|
268
269
|
* time there is a need to read marker properties. This will guarantee that the marker has not been removed and
|
|
269
270
|
* that it's data is up-to-date.
|
|
270
271
|
*/
|
|
271
|
-
getRange():
|
|
272
|
+
getRange(): ModelRange;
|
|
272
273
|
/**
|
|
273
274
|
* Binds new live range to the marker and detach the old one if is attached.
|
|
274
275
|
*
|
|
@@ -276,7 +277,7 @@ declare class Marker extends /* #__PURE__ */ Marker_base {
|
|
|
276
277
|
* @param liveRange Live range to attach
|
|
277
278
|
* @returns Attached live range.
|
|
278
279
|
*/
|
|
279
|
-
_attachLiveRange(liveRange:
|
|
280
|
+
_attachLiveRange(liveRange: ModelLiveRange): ModelLiveRange;
|
|
280
281
|
/**
|
|
281
282
|
* Unbinds and destroys currently attached live range.
|
|
282
283
|
*
|
|
@@ -284,35 +285,35 @@ declare class Marker extends /* #__PURE__ */ Marker_base {
|
|
|
284
285
|
*/
|
|
285
286
|
_detachLiveRange(): void;
|
|
286
287
|
}
|
|
287
|
-
export
|
|
288
|
+
export { Marker };
|
|
288
289
|
/**
|
|
289
|
-
* Fired whenever {@link ~Marker#_liveRange marker range} is changed due to changes on {@link module:engine/model/document~
|
|
290
|
-
* This is a delegated {@link module:engine/model/liverange~
|
|
290
|
+
* Fired whenever {@link ~Marker#_liveRange marker range} is changed due to changes on {@link module:engine/model/document~ModelDocument}.
|
|
291
|
+
* This is a delegated {@link module:engine/model/liverange~ModelLiveRange#event:change:range ModelLiveRange change:range event}.
|
|
291
292
|
*
|
|
292
293
|
* When marker is removed from {@link module:engine/model/markercollection~MarkerCollection MarkerCollection},
|
|
293
294
|
* all event listeners listening to it should be removed. It is best to do it on
|
|
294
295
|
* {@link module:engine/model/markercollection~MarkerCollection#event:update MarkerCollection update event}.
|
|
295
296
|
*
|
|
296
|
-
* @see module:engine/model/liverange~
|
|
297
|
+
* @see module:engine/model/liverange~ModelLiveRange#event:change:range
|
|
297
298
|
* @eventName ~Marker#change:range
|
|
298
299
|
*/
|
|
299
|
-
export type MarkerChangeRangeEvent =
|
|
300
|
+
export type MarkerChangeRangeEvent = ModelLiveRangeChangeRangeEvent;
|
|
300
301
|
/**
|
|
301
|
-
* Fired whenever change on {@link module:engine/model/document~
|
|
302
|
-
* This is a delegated {@link module:engine/model/liverange~
|
|
302
|
+
* Fired whenever change on {@link module:engine/model/document~ModelDocument} is done inside {@link ~Marker#_liveRange marker range}.
|
|
303
|
+
* This is a delegated {@link module:engine/model/liverange~ModelLiveRange#event:change:content ModelLiveRange change:content event}.
|
|
303
304
|
*
|
|
304
305
|
* When marker is removed from {@link module:engine/model/markercollection~MarkerCollection MarkerCollection},
|
|
305
306
|
* all event listeners listening to it should be removed. It is best to do it on
|
|
306
307
|
* {@link module:engine/model/markercollection~MarkerCollection#event:update MarkerCollection update event}.
|
|
307
308
|
*
|
|
308
|
-
* @see module:engine/model/liverange~
|
|
309
|
+
* @see module:engine/model/liverange~ModelLiveRange#event:change:content
|
|
309
310
|
* @eventName ~Marker#change:content
|
|
310
311
|
*/
|
|
311
|
-
export type MarkerCollectionChangeContentEvent =
|
|
312
|
+
export type MarkerCollectionChangeContentEvent = ModelLiveRangeChangeContentEvent;
|
|
312
313
|
/**
|
|
313
314
|
* Describes `change:range` or `change:content` event.
|
|
314
315
|
*/
|
|
315
|
-
export type MarkerChangeEvent =
|
|
316
|
+
export type MarkerChangeEvent = ModelLiveRangeChangeEvent;
|
|
316
317
|
/**
|
|
317
318
|
* Fired whenever marker is added, updated or removed from `MarkerCollection`.
|
|
318
319
|
*
|
|
@@ -326,7 +327,7 @@ export type MarkerChangeEvent = LiveRangeChangeEvent;
|
|
|
326
327
|
*/
|
|
327
328
|
export type MarkerCollectionUpdateEvent = {
|
|
328
329
|
name: 'update' | `update:${string}`;
|
|
329
|
-
args: [marker: Marker, oldRange:
|
|
330
|
+
args: [marker: Marker, oldRange: ModelRange | null, newRange: ModelRange | null, oldMarkerData: MarkerData];
|
|
330
331
|
};
|
|
331
332
|
/**
|
|
332
333
|
* Cannot use a {@link module:engine/model/markercollection~MarkerCollection#destroy destroyed marker} instance.
|
|
@@ -5,16 +5,16 @@
|
|
|
5
5
|
/**
|
|
6
6
|
* @module engine/model/markercollection
|
|
7
7
|
*/
|
|
8
|
-
import
|
|
9
|
-
import
|
|
8
|
+
import { ModelTypeCheckable } from './typecheckable.js';
|
|
9
|
+
import { ModelLiveRange } from './liverange.js';
|
|
10
10
|
import { CKEditorError, EmitterMixin } from '@ckeditor/ckeditor5-utils';
|
|
11
11
|
/**
|
|
12
12
|
* The collection of all {@link module:engine/model/markercollection~Marker markers} attached to the document.
|
|
13
13
|
* It lets you {@link module:engine/model/markercollection~MarkerCollection#get get} markers or track them using
|
|
14
14
|
* {@link module:engine/model/markercollection~MarkerCollection#event:update} event.
|
|
15
15
|
*
|
|
16
|
-
* To create, change or remove makers use {@link module:engine/model/writer~
|
|
17
|
-
* {@link module:engine/model/writer~
|
|
16
|
+
* To create, change or remove makers use {@link module:engine/model/writer~ModelWriter model writers'} methods:
|
|
17
|
+
* {@link module:engine/model/writer~ModelWriter#addMarker} or {@link module:engine/model/writer~ModelWriter#removeMarker}. Since
|
|
18
18
|
* the writer is the only proper way to change the data model it is not possible to change markers directly using this
|
|
19
19
|
* collection. All markers created by the writer will be automatically added to this collection.
|
|
20
20
|
*
|
|
@@ -22,7 +22,7 @@ import { CKEditorError, EmitterMixin } from '@ckeditor/ckeditor5-utils';
|
|
|
22
22
|
*
|
|
23
23
|
* @see module:engine/model/markercollection~Marker
|
|
24
24
|
*/
|
|
25
|
-
export
|
|
25
|
+
export class MarkerCollection extends /* #__PURE__ */ EmitterMixin() {
|
|
26
26
|
/**
|
|
27
27
|
* Stores {@link ~Marker markers} added to the collection.
|
|
28
28
|
*/
|
|
@@ -57,7 +57,7 @@ export default class MarkerCollection extends /* #__PURE__ */ EmitterMixin() {
|
|
|
57
57
|
}
|
|
58
58
|
/**
|
|
59
59
|
* Creates and adds a {@link ~Marker marker} to the `MarkerCollection` with given name on given
|
|
60
|
-
* {@link module:engine/model/range~
|
|
60
|
+
* {@link module:engine/model/range~ModelRange range}.
|
|
61
61
|
*
|
|
62
62
|
* If `MarkerCollection` already had a marker with given name (or {@link ~Marker marker} was passed), the marker in
|
|
63
63
|
* collection is updated and {@link module:engine/model/markercollection~MarkerCollection#event:update} event is fired
|
|
@@ -89,7 +89,7 @@ export default class MarkerCollection extends /* #__PURE__ */ EmitterMixin() {
|
|
|
89
89
|
const oldRange = oldMarker.getRange();
|
|
90
90
|
let hasChanged = false;
|
|
91
91
|
if (!oldRange.isEqual(range)) {
|
|
92
|
-
oldMarker._attachLiveRange(
|
|
92
|
+
oldMarker._attachLiveRange(ModelLiveRange.fromRange(range));
|
|
93
93
|
hasChanged = true;
|
|
94
94
|
}
|
|
95
95
|
if (managedUsingOperations != oldMarker.managedUsingOperations) {
|
|
@@ -105,7 +105,7 @@ export default class MarkerCollection extends /* #__PURE__ */ EmitterMixin() {
|
|
|
105
105
|
}
|
|
106
106
|
return oldMarker;
|
|
107
107
|
}
|
|
108
|
-
const liveRange =
|
|
108
|
+
const liveRange = ModelLiveRange.fromRange(range);
|
|
109
109
|
const marker = new Marker(markerName, liveRange, managedUsingOperations, affectsData);
|
|
110
110
|
this._markers.set(markerName, marker);
|
|
111
111
|
this.fire(`update:${markerName}`, marker, null, range, { ...marker.getData(), range: null });
|
|
@@ -154,7 +154,8 @@ export default class MarkerCollection extends /* #__PURE__ */ EmitterMixin() {
|
|
|
154
154
|
this.fire(`update:${markerName}`, marker, range, range, marker.getData());
|
|
155
155
|
}
|
|
156
156
|
/**
|
|
157
|
-
* Returns iterator that iterates over all markers, which ranges
|
|
157
|
+
* Returns iterator that iterates over all markers, which ranges
|
|
158
|
+
* contain given {@link module:engine/model/position~ModelPosition position}.
|
|
158
159
|
*/
|
|
159
160
|
*getMarkersAtPosition(position) {
|
|
160
161
|
for (const marker of this) {
|
|
@@ -164,7 +165,7 @@ export default class MarkerCollection extends /* #__PURE__ */ EmitterMixin() {
|
|
|
164
165
|
}
|
|
165
166
|
}
|
|
166
167
|
/**
|
|
167
|
-
* Returns iterator that iterates over all markers, which intersects with given {@link module:engine/model/range~
|
|
168
|
+
* Returns iterator that iterates over all markers, which intersects with given {@link module:engine/model/range~ModelRange range}.
|
|
168
169
|
*/
|
|
169
170
|
*getMarkersIntersectingRange(range) {
|
|
170
171
|
for (const marker of this) {
|
|
@@ -212,7 +213,7 @@ export default class MarkerCollection extends /* #__PURE__ */ EmitterMixin() {
|
|
|
212
213
|
}
|
|
213
214
|
/**
|
|
214
215
|
* `Marker` is a continuous part of the model (like a range), is named and represents some kind of information about the
|
|
215
|
-
* marked part of the model document. In contrary to {@link module:engine/model/node~
|
|
216
|
+
* marked part of the model document. In contrary to {@link module:engine/model/node~ModelNode nodes}, which are building blocks of
|
|
216
217
|
* the model document tree, markers are not stored directly in the document tree but in the
|
|
217
218
|
* {@link module:engine/model/model~Model#markers model markers' collection}. Still, they are document data, by giving
|
|
218
219
|
* additional meaning to the part of a model document between marker start and marker end.
|
|
@@ -231,7 +232,7 @@ export default class MarkerCollection extends /* #__PURE__ */ EmitterMixin() {
|
|
|
231
232
|
* Markers are built from a name and a range.
|
|
232
233
|
*
|
|
233
234
|
* Range of the marker is updated automatically when document changes, using
|
|
234
|
-
* {@link module:engine/model/liverange~
|
|
235
|
+
* {@link module:engine/model/liverange~ModelLiveRange live range} mechanism.
|
|
235
236
|
*
|
|
236
237
|
* Name is used to group and identify markers. Names have to be unique, but markers can be grouped by
|
|
237
238
|
* using common prefixes, separated with `:`, for example: `user:john` or `search:3`. That's useful in term of creating
|
|
@@ -241,7 +242,7 @@ export default class MarkerCollection extends /* #__PURE__ */ EmitterMixin() {
|
|
|
241
242
|
*
|
|
242
243
|
* There are two types of markers.
|
|
243
244
|
*
|
|
244
|
-
* 1. Markers managed directly, without using operations. They are added directly by {@link module:engine/model/writer~
|
|
245
|
+
* 1. Markers managed directly, without using operations. They are added directly by {@link module:engine/model/writer~ModelWriter}
|
|
245
246
|
* to the {@link module:engine/model/markercollection~MarkerCollection} without any additional mechanism. They can be used
|
|
246
247
|
* as bookmarks or visual markers. They are great for showing results of the find, or select link when the focus is in the input.
|
|
247
248
|
*
|
|
@@ -250,8 +251,8 @@ export default class MarkerCollection extends /* #__PURE__ */ EmitterMixin() {
|
|
|
250
251
|
* Therefore, they are handled in the undo stack and synchronized between clients if the collaboration plugin is enabled.
|
|
251
252
|
* This type of markers is useful for solutions like spell checking or comments.
|
|
252
253
|
*
|
|
253
|
-
* Both type of them should be added / updated by {@link module:engine/model/writer~
|
|
254
|
-
* and removed by {@link module:engine/model/writer~
|
|
254
|
+
* Both type of them should be added / updated by {@link module:engine/model/writer~ModelWriter#addMarker}
|
|
255
|
+
* and removed by {@link module:engine/model/writer~ModelWriter#removeMarker} methods.
|
|
255
256
|
*
|
|
256
257
|
* ```ts
|
|
257
258
|
* model.change( ( writer ) => {
|
|
@@ -263,7 +264,7 @@ export default class MarkerCollection extends /* #__PURE__ */ EmitterMixin() {
|
|
|
263
264
|
* } );
|
|
264
265
|
* ```
|
|
265
266
|
*
|
|
266
|
-
* See {@link module:engine/model/writer~
|
|
267
|
+
* See {@link module:engine/model/writer~ModelWriter} to find more examples.
|
|
267
268
|
*
|
|
268
269
|
* Since markers need to track change in the document, for efficiency reasons, it is best to create and keep as little
|
|
269
270
|
* markers as possible and remove them as soon as they are not needed anymore.
|
|
@@ -279,7 +280,7 @@ export default class MarkerCollection extends /* #__PURE__ */ EmitterMixin() {
|
|
|
279
280
|
*
|
|
280
281
|
* `Marker` instances are created and destroyed only by {@link ~MarkerCollection MarkerCollection}.
|
|
281
282
|
*/
|
|
282
|
-
class Marker extends /* #__PURE__ */ EmitterMixin(
|
|
283
|
+
class Marker extends /* #__PURE__ */ EmitterMixin(ModelTypeCheckable) {
|
|
283
284
|
/**
|
|
284
285
|
* Marker's name.
|
|
285
286
|
*/
|
|
@@ -319,7 +320,7 @@ class Marker extends /* #__PURE__ */ EmitterMixin(TypeCheckable) {
|
|
|
319
320
|
/**
|
|
320
321
|
* A value indicating if the marker is managed using operations.
|
|
321
322
|
* See {@link ~Marker marker class description} to learn more about marker types.
|
|
322
|
-
* See {@link module:engine/model/writer~
|
|
323
|
+
* See {@link module:engine/model/writer~ModelWriter#addMarker}.
|
|
323
324
|
*/
|
|
324
325
|
get managedUsingOperations() {
|
|
325
326
|
if (!this._liveRange) {
|
|
@@ -367,8 +368,8 @@ class Marker extends /* #__PURE__ */ EmitterMixin(TypeCheckable) {
|
|
|
367
368
|
/**
|
|
368
369
|
* Returns a range that represents the current state of the marker.
|
|
369
370
|
*
|
|
370
|
-
* Keep in mind that returned value is a {@link module:engine/model/range~
|
|
371
|
-
* {@link module:engine/model/liverange~
|
|
371
|
+
* Keep in mind that returned value is a {@link module:engine/model/range~ModelRange Range}, not a
|
|
372
|
+
* {@link module:engine/model/liverange~ModelLiveRange ModelLiveRange}. This means that it is up-to-date and relevant only
|
|
372
373
|
* until next model document change. Do not store values returned by this method. Instead, store {@link ~Marker#name}
|
|
373
374
|
* and get `Marker` instance from {@link module:engine/model/markercollection~MarkerCollection MarkerCollection} every
|
|
374
375
|
* time there is a need to read marker properties. This will guarantee that the marker has not been removed and
|
|
@@ -414,6 +415,7 @@ class Marker extends /* #__PURE__ */ EmitterMixin(TypeCheckable) {
|
|
|
414
415
|
Marker.prototype.is = function (type) {
|
|
415
416
|
return type === 'marker' || type === 'model:marker';
|
|
416
417
|
};
|
|
418
|
+
export { Marker };
|
|
417
419
|
/**
|
|
418
420
|
* Cannot use a {@link module:engine/model/markercollection~MarkerCollection#destroy destroyed marker} instance.
|
|
419
421
|
*
|