@ckeditor/ckeditor5-engine 40.0.0 → 40.2.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/CHANGELOG.md +39 -39
- package/LICENSE.md +3 -3
- package/package.json +2 -2
- package/src/controller/datacontroller.d.ts +334 -334
- package/src/controller/datacontroller.js +481 -481
- package/src/controller/editingcontroller.d.ts +98 -98
- package/src/controller/editingcontroller.js +191 -191
- package/src/conversion/conversion.d.ts +478 -478
- package/src/conversion/conversion.js +601 -601
- package/src/conversion/conversionhelpers.d.ts +26 -26
- package/src/conversion/conversionhelpers.js +32 -32
- package/src/conversion/downcastdispatcher.d.ts +562 -562
- package/src/conversion/downcastdispatcher.js +548 -547
- package/src/conversion/downcasthelpers.d.ts +1226 -1226
- package/src/conversion/downcasthelpers.js +2178 -2183
- package/src/conversion/mapper.d.ts +503 -503
- package/src/conversion/mapper.js +536 -536
- package/src/conversion/modelconsumable.d.ts +201 -201
- package/src/conversion/modelconsumable.js +333 -333
- package/src/conversion/upcastdispatcher.d.ts +492 -492
- package/src/conversion/upcastdispatcher.js +460 -460
- package/src/conversion/upcasthelpers.d.ts +499 -499
- package/src/conversion/upcasthelpers.js +950 -950
- package/src/conversion/viewconsumable.d.ts +369 -369
- package/src/conversion/viewconsumable.js +536 -532
- package/src/dataprocessor/basichtmlwriter.d.ts +18 -18
- package/src/dataprocessor/basichtmlwriter.js +20 -19
- package/src/dataprocessor/dataprocessor.d.ts +61 -61
- package/src/dataprocessor/dataprocessor.js +5 -5
- package/src/dataprocessor/htmldataprocessor.d.ts +76 -76
- package/src/dataprocessor/htmldataprocessor.js +96 -96
- package/src/dataprocessor/htmlwriter.d.ts +16 -16
- package/src/dataprocessor/htmlwriter.js +5 -5
- package/src/dataprocessor/xmldataprocessor.d.ts +90 -90
- package/src/dataprocessor/xmldataprocessor.js +108 -108
- package/src/dev-utils/model.d.ts +124 -124
- package/src/dev-utils/model.js +395 -395
- package/src/dev-utils/operationreplayer.d.ts +51 -51
- package/src/dev-utils/operationreplayer.js +112 -112
- package/src/dev-utils/utils.d.ts +37 -37
- package/src/dev-utils/utils.js +73 -73
- package/src/dev-utils/view.d.ts +319 -319
- package/src/dev-utils/view.js +967 -967
- package/src/index.d.ts +114 -114
- package/src/index.js +78 -78
- package/src/model/batch.d.ts +106 -106
- package/src/model/batch.js +96 -96
- package/src/model/differ.d.ts +387 -387
- package/src/model/differ.js +1149 -1149
- package/src/model/document.d.ts +272 -272
- package/src/model/document.js +360 -361
- package/src/model/documentfragment.d.ts +200 -200
- package/src/model/documentfragment.js +306 -306
- package/src/model/documentselection.d.ts +420 -420
- package/src/model/documentselection.js +993 -993
- package/src/model/element.d.ts +165 -165
- package/src/model/element.js +281 -281
- package/src/model/history.d.ts +114 -114
- package/src/model/history.js +207 -207
- package/src/model/item.d.ts +14 -14
- package/src/model/item.js +5 -5
- package/src/model/liveposition.d.ts +77 -77
- package/src/model/liveposition.js +93 -93
- package/src/model/liverange.d.ts +102 -102
- package/src/model/liverange.js +120 -120
- package/src/model/markercollection.d.ts +335 -335
- package/src/model/markercollection.js +403 -403
- package/src/model/model.d.ts +919 -919
- package/src/model/model.js +842 -842
- package/src/model/node.d.ts +256 -256
- package/src/model/node.js +375 -375
- package/src/model/nodelist.d.ts +91 -91
- package/src/model/nodelist.js +163 -163
- package/src/model/operation/attributeoperation.d.ts +103 -103
- package/src/model/operation/attributeoperation.js +148 -148
- package/src/model/operation/detachoperation.d.ts +60 -60
- package/src/model/operation/detachoperation.js +77 -77
- package/src/model/operation/insertoperation.d.ts +90 -90
- package/src/model/operation/insertoperation.js +135 -135
- package/src/model/operation/markeroperation.d.ts +91 -91
- package/src/model/operation/markeroperation.js +107 -107
- package/src/model/operation/mergeoperation.d.ts +100 -100
- package/src/model/operation/mergeoperation.js +167 -167
- package/src/model/operation/moveoperation.d.ts +96 -96
- package/src/model/operation/moveoperation.js +164 -164
- package/src/model/operation/nooperation.d.ts +38 -38
- package/src/model/operation/nooperation.js +48 -48
- package/src/model/operation/operation.d.ts +96 -96
- package/src/model/operation/operation.js +59 -62
- package/src/model/operation/operationfactory.d.ts +18 -18
- package/src/model/operation/operationfactory.js +44 -44
- package/src/model/operation/renameoperation.d.ts +83 -83
- package/src/model/operation/renameoperation.js +115 -115
- package/src/model/operation/rootattributeoperation.d.ts +98 -98
- package/src/model/operation/rootattributeoperation.js +155 -155
- package/src/model/operation/rootoperation.d.ts +76 -76
- package/src/model/operation/rootoperation.js +90 -90
- package/src/model/operation/splitoperation.d.ts +109 -109
- package/src/model/operation/splitoperation.js +194 -194
- package/src/model/operation/transform.d.ts +100 -100
- package/src/model/operation/transform.js +1985 -1985
- package/src/model/operation/utils.d.ts +71 -71
- package/src/model/operation/utils.js +217 -213
- package/src/model/position.d.ts +539 -539
- package/src/model/position.js +979 -979
- package/src/model/range.d.ts +458 -458
- package/src/model/range.js +875 -875
- package/src/model/rootelement.d.ts +60 -60
- package/src/model/rootelement.js +74 -74
- package/src/model/schema.d.ts +1186 -1186
- package/src/model/schema.js +1242 -1242
- package/src/model/selection.d.ts +482 -482
- package/src/model/selection.js +789 -789
- package/src/model/text.d.ts +66 -66
- package/src/model/text.js +85 -85
- package/src/model/textproxy.d.ts +144 -144
- package/src/model/textproxy.js +189 -189
- package/src/model/treewalker.d.ts +186 -186
- package/src/model/treewalker.js +244 -244
- package/src/model/typecheckable.d.ts +285 -285
- package/src/model/typecheckable.js +16 -16
- package/src/model/utils/autoparagraphing.d.ts +37 -37
- package/src/model/utils/autoparagraphing.js +63 -63
- package/src/model/utils/deletecontent.d.ts +58 -58
- package/src/model/utils/deletecontent.js +488 -488
- package/src/model/utils/findoptimalinsertionrange.d.ts +32 -32
- package/src/model/utils/findoptimalinsertionrange.js +57 -57
- package/src/model/utils/getselectedcontent.d.ts +30 -30
- package/src/model/utils/getselectedcontent.js +125 -125
- package/src/model/utils/insertcontent.d.ts +46 -46
- package/src/model/utils/insertcontent.js +705 -705
- package/src/model/utils/insertobject.d.ts +44 -44
- package/src/model/utils/insertobject.js +139 -139
- package/src/model/utils/modifyselection.d.ts +48 -48
- package/src/model/utils/modifyselection.js +186 -186
- package/src/model/utils/selection-post-fixer.d.ts +74 -74
- package/src/model/utils/selection-post-fixer.js +260 -260
- package/src/model/writer.d.ts +851 -851
- package/src/model/writer.js +1306 -1306
- package/src/view/attributeelement.d.ts +108 -108
- package/src/view/attributeelement.js +184 -184
- package/src/view/containerelement.d.ts +49 -49
- package/src/view/containerelement.js +80 -80
- package/src/view/datatransfer.d.ts +79 -79
- package/src/view/datatransfer.js +98 -98
- package/src/view/document.d.ts +184 -184
- package/src/view/document.js +122 -120
- package/src/view/documentfragment.d.ts +153 -149
- package/src/view/documentfragment.js +234 -228
- package/src/view/documentselection.d.ts +306 -306
- package/src/view/documentselection.js +256 -256
- package/src/view/domconverter.d.ts +652 -640
- package/src/view/domconverter.js +1473 -1450
- package/src/view/downcastwriter.d.ts +996 -996
- package/src/view/downcastwriter.js +1696 -1696
- package/src/view/editableelement.d.ts +62 -62
- package/src/view/editableelement.js +62 -62
- package/src/view/element.d.ts +468 -468
- package/src/view/element.js +724 -724
- package/src/view/elementdefinition.d.ts +87 -87
- package/src/view/elementdefinition.js +5 -5
- package/src/view/emptyelement.d.ts +41 -41
- package/src/view/emptyelement.js +73 -73
- package/src/view/filler.d.ts +111 -111
- package/src/view/filler.js +150 -150
- package/src/view/item.d.ts +14 -14
- package/src/view/item.js +5 -5
- package/src/view/matcher.d.ts +486 -486
- package/src/view/matcher.js +507 -507
- package/src/view/node.d.ts +163 -163
- package/src/view/node.js +228 -228
- package/src/view/observer/arrowkeysobserver.d.ts +45 -45
- package/src/view/observer/arrowkeysobserver.js +40 -40
- package/src/view/observer/bubblingemittermixin.d.ts +166 -166
- package/src/view/observer/bubblingemittermixin.js +172 -172
- package/src/view/observer/bubblingeventinfo.d.ts +47 -47
- package/src/view/observer/bubblingeventinfo.js +37 -37
- package/src/view/observer/clickobserver.d.ts +43 -43
- package/src/view/observer/clickobserver.js +29 -29
- package/src/view/observer/compositionobserver.d.ts +82 -82
- package/src/view/observer/compositionobserver.js +60 -60
- package/src/view/observer/domeventdata.d.ts +50 -50
- package/src/view/observer/domeventdata.js +47 -47
- package/src/view/observer/domeventobserver.d.ts +73 -73
- package/src/view/observer/domeventobserver.js +79 -79
- package/src/view/observer/fakeselectionobserver.d.ts +47 -47
- package/src/view/observer/fakeselectionobserver.js +91 -91
- package/src/view/observer/focusobserver.d.ts +82 -82
- package/src/view/observer/focusobserver.js +86 -86
- package/src/view/observer/inputobserver.d.ts +86 -86
- package/src/view/observer/inputobserver.js +164 -164
- package/src/view/observer/keyobserver.d.ts +66 -66
- package/src/view/observer/keyobserver.js +39 -39
- package/src/view/observer/mouseobserver.d.ts +89 -89
- package/src/view/observer/mouseobserver.js +29 -29
- package/src/view/observer/mutationobserver.d.ts +86 -86
- package/src/view/observer/mutationobserver.js +206 -206
- package/src/view/observer/observer.d.ts +89 -89
- package/src/view/observer/observer.js +84 -84
- package/src/view/observer/selectionobserver.d.ts +148 -148
- package/src/view/observer/selectionobserver.js +202 -202
- package/src/view/observer/tabobserver.d.ts +46 -46
- package/src/view/observer/tabobserver.js +42 -42
- package/src/view/placeholder.d.ts +96 -96
- package/src/view/placeholder.js +267 -267
- package/src/view/position.d.ts +189 -189
- package/src/view/position.js +324 -324
- package/src/view/range.d.ts +279 -279
- package/src/view/range.js +430 -430
- package/src/view/rawelement.d.ts +73 -73
- package/src/view/rawelement.js +105 -105
- package/src/view/renderer.d.ts +265 -265
- package/src/view/renderer.js +1000 -999
- package/src/view/rooteditableelement.d.ts +41 -41
- package/src/view/rooteditableelement.js +69 -69
- package/src/view/selection.d.ts +375 -375
- package/src/view/selection.js +559 -559
- package/src/view/styles/background.d.ts +33 -33
- package/src/view/styles/background.js +74 -74
- package/src/view/styles/border.d.ts +43 -43
- package/src/view/styles/border.js +316 -316
- package/src/view/styles/margin.d.ts +29 -29
- package/src/view/styles/margin.js +34 -34
- package/src/view/styles/padding.d.ts +29 -29
- package/src/view/styles/padding.js +34 -34
- package/src/view/styles/utils.d.ts +93 -93
- package/src/view/styles/utils.js +219 -219
- package/src/view/stylesmap.d.ts +675 -675
- package/src/view/stylesmap.js +765 -766
- package/src/view/text.d.ts +74 -74
- package/src/view/text.js +93 -93
- package/src/view/textproxy.d.ts +97 -97
- package/src/view/textproxy.js +124 -124
- package/src/view/treewalker.d.ts +195 -195
- package/src/view/treewalker.js +327 -327
- package/src/view/typecheckable.d.ts +448 -448
- package/src/view/typecheckable.js +19 -19
- package/src/view/uielement.d.ts +96 -96
- package/src/view/uielement.js +183 -182
- package/src/view/upcastwriter.d.ts +417 -417
- package/src/view/upcastwriter.js +359 -359
- package/src/view/view.d.ts +487 -487
- package/src/view/view.js +546 -546
|
@@ -1,62 +1,62 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
-
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* @module engine/view/editableelement
|
|
7
|
-
*/
|
|
8
|
-
import ContainerElement from './containerelement';
|
|
9
|
-
import type { ElementAttributes } from './element';
|
|
10
|
-
import type Document from './document';
|
|
11
|
-
import type Node from './node';
|
|
12
|
-
declare const EditableElement_base: import("@ckeditor/ckeditor5-utils").Mixed<typeof ContainerElement, import("@ckeditor/ckeditor5-utils").Observable>;
|
|
13
|
-
/**
|
|
14
|
-
* Editable element which can be a {@link module:engine/view/rooteditableelement~RootEditableElement root}
|
|
15
|
-
* or nested editable area in the editor.
|
|
16
|
-
*
|
|
17
|
-
* Editable is automatically read-only when its {@link module:engine/view/document~Document Document} is read-only.
|
|
18
|
-
*
|
|
19
|
-
* The constructor of this class shouldn't be used directly. To create new `EditableElement` use the
|
|
20
|
-
* {@link module:engine/view/downcastwriter~DowncastWriter#createEditableElement `downcastWriter#createEditableElement()`} method.
|
|
21
|
-
*/
|
|
22
|
-
export default class EditableElement extends EditableElement_base {
|
|
23
|
-
/**
|
|
24
|
-
* Whether the editable is in read-write or read-only mode.
|
|
25
|
-
*
|
|
26
|
-
* @observable
|
|
27
|
-
*/
|
|
28
|
-
isReadOnly: boolean;
|
|
29
|
-
/**
|
|
30
|
-
* Whether the editable is focused.
|
|
31
|
-
*
|
|
32
|
-
* This property updates when {@link module:engine/view/document~Document#isFocused document.isFocused} or view
|
|
33
|
-
* selection is changed.
|
|
34
|
-
*
|
|
35
|
-
* @readonly
|
|
36
|
-
* @observable
|
|
37
|
-
*/
|
|
38
|
-
isFocused: boolean;
|
|
39
|
-
/**
|
|
40
|
-
* Placeholder of editable element.
|
|
41
|
-
*
|
|
42
|
-
* ```ts
|
|
43
|
-
* editor.editing.view.document.getRoot( 'main' ).placeholder = 'New placeholder';
|
|
44
|
-
* ```
|
|
45
|
-
*
|
|
46
|
-
* @observable
|
|
47
|
-
*/
|
|
48
|
-
placeholder?: string;
|
|
49
|
-
/**
|
|
50
|
-
* Creates an editable element.
|
|
51
|
-
*
|
|
52
|
-
* @see module:engine/view/downcastwriter~DowncastWriter#createEditableElement
|
|
53
|
-
* @internal
|
|
54
|
-
* @param document The document instance to which this element belongs.
|
|
55
|
-
* @param name Node name.
|
|
56
|
-
* @param attrs Collection of attributes.
|
|
57
|
-
* @param children A list of nodes to be inserted into created element.
|
|
58
|
-
*/
|
|
59
|
-
constructor(document: Document, name: string, attributes?: ElementAttributes, children?: Node | Iterable<Node>);
|
|
60
|
-
destroy(): void;
|
|
61
|
-
}
|
|
62
|
-
export {};
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @module engine/view/editableelement
|
|
7
|
+
*/
|
|
8
|
+
import ContainerElement from './containerelement';
|
|
9
|
+
import type { ElementAttributes } from './element';
|
|
10
|
+
import type Document from './document';
|
|
11
|
+
import type Node from './node';
|
|
12
|
+
declare const EditableElement_base: import("@ckeditor/ckeditor5-utils").Mixed<typeof ContainerElement, import("@ckeditor/ckeditor5-utils").Observable>;
|
|
13
|
+
/**
|
|
14
|
+
* Editable element which can be a {@link module:engine/view/rooteditableelement~RootEditableElement root}
|
|
15
|
+
* or nested editable area in the editor.
|
|
16
|
+
*
|
|
17
|
+
* Editable is automatically read-only when its {@link module:engine/view/document~Document Document} is read-only.
|
|
18
|
+
*
|
|
19
|
+
* The constructor of this class shouldn't be used directly. To create new `EditableElement` use the
|
|
20
|
+
* {@link module:engine/view/downcastwriter~DowncastWriter#createEditableElement `downcastWriter#createEditableElement()`} method.
|
|
21
|
+
*/
|
|
22
|
+
export default class EditableElement extends EditableElement_base {
|
|
23
|
+
/**
|
|
24
|
+
* Whether the editable is in read-write or read-only mode.
|
|
25
|
+
*
|
|
26
|
+
* @observable
|
|
27
|
+
*/
|
|
28
|
+
isReadOnly: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Whether the editable is focused.
|
|
31
|
+
*
|
|
32
|
+
* This property updates when {@link module:engine/view/document~Document#isFocused document.isFocused} or view
|
|
33
|
+
* selection is changed.
|
|
34
|
+
*
|
|
35
|
+
* @readonly
|
|
36
|
+
* @observable
|
|
37
|
+
*/
|
|
38
|
+
isFocused: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Placeholder of editable element.
|
|
41
|
+
*
|
|
42
|
+
* ```ts
|
|
43
|
+
* editor.editing.view.document.getRoot( 'main' ).placeholder = 'New placeholder';
|
|
44
|
+
* ```
|
|
45
|
+
*
|
|
46
|
+
* @observable
|
|
47
|
+
*/
|
|
48
|
+
placeholder?: string;
|
|
49
|
+
/**
|
|
50
|
+
* Creates an editable element.
|
|
51
|
+
*
|
|
52
|
+
* @see module:engine/view/downcastwriter~DowncastWriter#createEditableElement
|
|
53
|
+
* @internal
|
|
54
|
+
* @param document The document instance to which this element belongs.
|
|
55
|
+
* @param name Node name.
|
|
56
|
+
* @param attrs Collection of attributes.
|
|
57
|
+
* @param children A list of nodes to be inserted into created element.
|
|
58
|
+
*/
|
|
59
|
+
constructor(document: Document, name: string, attributes?: ElementAttributes, children?: Node | Iterable<Node>);
|
|
60
|
+
destroy(): void;
|
|
61
|
+
}
|
|
62
|
+
export {};
|
|
@@ -1,62 +1,62 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
-
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* @module engine/view/editableelement
|
|
7
|
-
*/
|
|
8
|
-
import ContainerElement from './containerelement';
|
|
9
|
-
import { ObservableMixin } from '@ckeditor/ckeditor5-utils';
|
|
10
|
-
/**
|
|
11
|
-
* Editable element which can be a {@link module:engine/view/rooteditableelement~RootEditableElement root}
|
|
12
|
-
* or nested editable area in the editor.
|
|
13
|
-
*
|
|
14
|
-
* Editable is automatically read-only when its {@link module:engine/view/document~Document Document} is read-only.
|
|
15
|
-
*
|
|
16
|
-
* The constructor of this class shouldn't be used directly. To create new `EditableElement` use the
|
|
17
|
-
* {@link module:engine/view/downcastwriter~DowncastWriter#createEditableElement `downcastWriter#createEditableElement()`} method.
|
|
18
|
-
*/
|
|
19
|
-
export default class EditableElement extends ObservableMixin(ContainerElement) {
|
|
20
|
-
/**
|
|
21
|
-
* Creates an editable element.
|
|
22
|
-
*
|
|
23
|
-
* @see module:engine/view/downcastwriter~DowncastWriter#createEditableElement
|
|
24
|
-
* @internal
|
|
25
|
-
* @param document The document instance to which this element belongs.
|
|
26
|
-
* @param name Node name.
|
|
27
|
-
* @param attrs Collection of attributes.
|
|
28
|
-
* @param children A list of nodes to be inserted into created element.
|
|
29
|
-
*/
|
|
30
|
-
constructor(document, name, attributes, children) {
|
|
31
|
-
super(document, name, attributes, children);
|
|
32
|
-
this.set('isReadOnly', false);
|
|
33
|
-
this.set('isFocused', false);
|
|
34
|
-
this.set('placeholder', undefined);
|
|
35
|
-
this.bind('isReadOnly').to(document);
|
|
36
|
-
this.bind('isFocused').to(document, 'isFocused', isFocused => isFocused && document.selection.editableElement == this);
|
|
37
|
-
// Update focus state based on selection changes.
|
|
38
|
-
this.listenTo(document.selection, 'change', () => {
|
|
39
|
-
this.isFocused = document.isFocused && document.selection.editableElement == this;
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
destroy() {
|
|
43
|
-
this.stopListening();
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
// The magic of type inference using `is` method is centralized in `TypeCheckable` class.
|
|
47
|
-
// Proper overload would interfere with that.
|
|
48
|
-
EditableElement.prototype.is = function (type, name) {
|
|
49
|
-
if (!name) {
|
|
50
|
-
return type === 'editableElement' || type === 'view:editableElement' ||
|
|
51
|
-
// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
|
|
52
|
-
type === 'containerElement' || type === 'view:containerElement' ||
|
|
53
|
-
type === 'element' || type === 'view:element' ||
|
|
54
|
-
type === 'node' || type === 'view:node';
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
return name === this.name && (type === 'editableElement' || type === 'view:editableElement' ||
|
|
58
|
-
// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
|
|
59
|
-
type === 'containerElement' || type === 'view:containerElement' ||
|
|
60
|
-
type === 'element' || type === 'view:element');
|
|
61
|
-
}
|
|
62
|
-
};
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @module engine/view/editableelement
|
|
7
|
+
*/
|
|
8
|
+
import ContainerElement from './containerelement';
|
|
9
|
+
import { ObservableMixin } from '@ckeditor/ckeditor5-utils';
|
|
10
|
+
/**
|
|
11
|
+
* Editable element which can be a {@link module:engine/view/rooteditableelement~RootEditableElement root}
|
|
12
|
+
* or nested editable area in the editor.
|
|
13
|
+
*
|
|
14
|
+
* Editable is automatically read-only when its {@link module:engine/view/document~Document Document} is read-only.
|
|
15
|
+
*
|
|
16
|
+
* The constructor of this class shouldn't be used directly. To create new `EditableElement` use the
|
|
17
|
+
* {@link module:engine/view/downcastwriter~DowncastWriter#createEditableElement `downcastWriter#createEditableElement()`} method.
|
|
18
|
+
*/
|
|
19
|
+
export default class EditableElement extends ObservableMixin(ContainerElement) {
|
|
20
|
+
/**
|
|
21
|
+
* Creates an editable element.
|
|
22
|
+
*
|
|
23
|
+
* @see module:engine/view/downcastwriter~DowncastWriter#createEditableElement
|
|
24
|
+
* @internal
|
|
25
|
+
* @param document The document instance to which this element belongs.
|
|
26
|
+
* @param name Node name.
|
|
27
|
+
* @param attrs Collection of attributes.
|
|
28
|
+
* @param children A list of nodes to be inserted into created element.
|
|
29
|
+
*/
|
|
30
|
+
constructor(document, name, attributes, children) {
|
|
31
|
+
super(document, name, attributes, children);
|
|
32
|
+
this.set('isReadOnly', false);
|
|
33
|
+
this.set('isFocused', false);
|
|
34
|
+
this.set('placeholder', undefined);
|
|
35
|
+
this.bind('isReadOnly').to(document);
|
|
36
|
+
this.bind('isFocused').to(document, 'isFocused', isFocused => isFocused && document.selection.editableElement == this);
|
|
37
|
+
// Update focus state based on selection changes.
|
|
38
|
+
this.listenTo(document.selection, 'change', () => {
|
|
39
|
+
this.isFocused = document.isFocused && document.selection.editableElement == this;
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
destroy() {
|
|
43
|
+
this.stopListening();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// The magic of type inference using `is` method is centralized in `TypeCheckable` class.
|
|
47
|
+
// Proper overload would interfere with that.
|
|
48
|
+
EditableElement.prototype.is = function (type, name) {
|
|
49
|
+
if (!name) {
|
|
50
|
+
return type === 'editableElement' || type === 'view:editableElement' ||
|
|
51
|
+
// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
|
|
52
|
+
type === 'containerElement' || type === 'view:containerElement' ||
|
|
53
|
+
type === 'element' || type === 'view:element' ||
|
|
54
|
+
type === 'node' || type === 'view:node';
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
return name === this.name && (type === 'editableElement' || type === 'view:editableElement' ||
|
|
58
|
+
// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
|
|
59
|
+
type === 'containerElement' || type === 'view:containerElement' ||
|
|
60
|
+
type === 'element' || type === 'view:element');
|
|
61
|
+
}
|
|
62
|
+
};
|