@@ -45,25 +45,27 @@ export function isWidget( element ) {
45
45
* * implements `addHighlight` and `removeHighlight` custom properties to handle view highlight on widgets.
46
46
*
47
47
* @param {module:engine/view/element~Element } element
48
+ * @param {module:engine/view/writer~Writer } writer
48
49
* @param {Object } [options={}]
49
50
* @param {String|Function } [options.label] Element's label provided to {@link ~setLabel} function. It can be passed as
50
51
* a plain string or a function returning a string.
51
52
* @returns {module:engine/view/element~Element } Returns same element.
52
53
*/
53
- export function toWidget ( element , options = { } ) {
54
- element . setAttribute ( 'contenteditable' , 'false' ) ;
54
+ export function toWidget ( element , writer , options = { } ) {
55
+ writer . setAttribute ( 'contenteditable' , 'false' , element ) ;
56
+ writer . addClass ( WIDGET_CLASS_NAME , element ) ;
57
+ writer . setCustomProperty ( widgetSymbol , true , element ) ;
55
58
element . getFillerOffset = getFillerOffset ;
56
- element . addClass ( WIDGET_CLASS_NAME ) ;
57
- element . setCustomProperty ( widgetSymbol , true ) ;
58
59
59
60
if ( options . label ) {
60
- setLabel ( element , options . label ) ;
61
+ setLabel ( element , options . label , writer ) ;
61
62
}
62
63
63
64
setHighlightHandling (
64
65
element ,
65
- ( element , descriptor ) => element . addClass ( ...normalizeToArray ( descriptor . class ) ) ,
66
- ( element , descriptor ) => element . removeClass ( ...normalizeToArray ( descriptor . class ) )
66
+ writer ,
67
+ ( element , descriptor , writer ) => writer . addClass ( normalizeToArray ( descriptor . class ) , element ) ,
68
+ ( element , descriptor , writer ) => writer . removeClass ( normalizeToArray ( descriptor . class ) , element )
67
69
) ;
68
70
69
71
return element ;
@@ -79,24 +81,25 @@ export function toWidget( element, options = {} ) {
79
81
* properly determine which highlight descriptor should be used at given time.
80
82
*
81
83
* @param {module:engine/view/element~Element } element
84
+ * @param {module:engine/view/writer~Writer } writer
82
85
* @param {Function } add
83
86
* @param {Function } remove
84
87
*/
85
- export function setHighlightHandling ( element , add , remove ) {
88
+ export function setHighlightHandling ( element , writer , add , remove ) {
86
89
const stack = new HighlightStack ( ) ;
87
90
88
91
stack . on ( 'change:top' , ( evt , data ) => {
89
92
if ( data . oldDescriptor ) {
90
- remove ( element , data . oldDescriptor ) ;
93
+ remove ( element , data . oldDescriptor , data . writer ) ;
91
94
}
92
95
93
96
if ( data . newDescriptor ) {
94
- add ( element , data . newDescriptor ) ;
97
+ add ( element , data . newDescriptor , data . writer ) ;
95
98
}
96
99
} ) ;
97
100
98
- element . setCustomProperty ( 'addHighlight' , ( element , descriptor ) => stack . add ( descriptor ) ) ;
99
- element . setCustomProperty ( 'removeHighlight' , ( element , id ) => stack . remove ( id ) ) ;
101
+ writer . setCustomProperty ( 'addHighlight' , ( element , descriptor , writer ) => stack . add ( descriptor , writer ) , element ) ;
102
+ writer . setCustomProperty ( 'removeHighlight' , ( element , id , writer ) => stack . remove ( id , writer ) , element ) ;
100
103
}
101
104
102
105
/**
@@ -106,9 +109,10 @@ export function setHighlightHandling( element, add, remove ) {
106
109
*
107
110
* @param {module:engine/view/element~Element } element
108
111
* @param {String|Function } labelOrCreator
112
+ * * @param {module:engine/view/writer~Writer } writer
109
113
*/
110
- export function setLabel ( element , labelOrCreator ) {
111
- element . setCustomProperty ( labelSymbol , labelOrCreator ) ;
114
+ export function setLabel ( element , labelOrCreator , writer ) {
115
+ writer . setCustomProperty ( labelSymbol , labelOrCreator , element ) ;
112
116
}
113
117
114
118
/**
@@ -137,22 +141,22 @@ export function getLabel( element ) {
137
141
* @param {module:engine/view/editableelement~EditableElement } editable
138
142
* @returns {module:engine/view/editableelement~EditableElement } Returns same element that was provided in `editable` param.
139
143
*/
140
- export function toWidgetEditable ( editable ) {
141
- editable . addClass ( 'ck-editable' ) ;
144
+ export function toWidgetEditable ( editable , writer ) {
145
+ writer . addClass ( 'ck-editable' , editable ) ;
142
146
143
147
// Set initial contenteditable value.
144
- editable . setAttribute ( 'contenteditable' , editable . isReadOnly ? 'false' : 'true' ) ;
148
+ writer . setAttribute ( 'contenteditable' , editable . isReadOnly ? 'false' : 'true' , editable ) ;
145
149
146
150
// Bind contenteditable property to element#isReadOnly.
147
151
editable . on ( 'change:isReadOnly' , ( evt , property , is ) => {
148
- editable . setAttribute ( 'contenteditable' , is ? 'false' : 'true' ) ;
152
+ writer . setAttribute ( 'contenteditable' , is ? 'false' : 'true' , editable ) ;
149
153
} ) ;
150
154
151
155
editable . on ( 'change:isFocused' , ( evt , property , is ) => {
152
156
if ( is ) {
153
- editable . addClass ( 'ck-editable_focused' ) ;
157
+ writer . addClass ( 'ck-editable_focused' , editable ) ;
154
158
} else {
155
- editable . removeClass ( 'ck-editable_focused' ) ;
159
+ writer . removeClass ( 'ck-editable_focused' , editable ) ;
156
160
}
157
161
} ) ;
158
162
0 commit comments