|
|
@@ -59,7 +59,9 @@ export default class UpcastHelpers extends ConversionHelpers {
|
|
|
* name: 'p',
|
|
|
* classes: 'heading'
|
|
|
* },
|
|
|
- * model: ( viewElement, modelWriter ) => {
|
|
|
+ * model: ( viewElement, conversionApi ) => {
|
|
|
+ * const modelWriter = conversionApi.writer;
|
|
|
+ *
|
|
|
* return modelWriter.createElement( 'heading', { level: viewElement.getAttribute( 'data-level' ) } );
|
|
|
* }
|
|
|
* } );
|
|
|
@@ -71,8 +73,9 @@ export default class UpcastHelpers extends ConversionHelpers {
|
|
|
* @param {Object} config Conversion configuration.
|
|
|
* @param {module:engine/view/matcher~MatcherPattern} [config.view] Pattern matching all view elements which should be converted. If not
|
|
|
* set, the converter will fire for every view element.
|
|
|
- * @param {String|module:engine/model/element~Element|Function} config.model Name of the model element, a model element
|
|
|
- * instance or a function that takes a view element and returns a model element. The model element will be inserted in the model.
|
|
|
+ * @param {String|module:engine/model/element~Element|Function} config.model Name of the model element, a model element instance or a
|
|
|
+ * function that takes a view element and {@link module:engine/conversion/upcastdispatcher~UpcastConversionApi upcast conversion API}
|
|
|
+ * and returns a model element. The model element will be inserted in the model.
|
|
|
* @param {module:utils/priorities~PriorityString} [config.converterPriority='normal'] Converter priority.
|
|
|
* @returns {module:engine/conversion/upcasthelpers~UpcastHelpers}
|
|
|
*/
|
|
|
@@ -135,7 +138,7 @@ export default class UpcastHelpers extends ConversionHelpers {
|
|
|
* },
|
|
|
* model: {
|
|
|
* key: 'fontSize',
|
|
|
- * value: viewElement => {
|
|
|
+ * value: ( viewElement, conversionApi ) => {
|
|
|
* const fontSize = viewElement.getStyle( 'font-size' );
|
|
|
* const value = fontSize.substr( 0, fontSize.length - 2 );
|
|
|
*
|
|
|
@@ -157,7 +160,8 @@ export default class UpcastHelpers extends ConversionHelpers {
|
|
|
* @param {Object} config Conversion configuration.
|
|
|
* @param {module:engine/view/matcher~MatcherPattern} config.view Pattern matching all view elements which should be converted.
|
|
|
* @param {String|Object} config.model Model attribute key or an object with `key` and `value` properties, describing
|
|
|
- * the model attribute. `value` property may be set as a function that takes a view element and returns the value.
|
|
|
+ * the model attribute. `value` property may be set as a function that takes a view element and
|
|
|
+ * {@link module:engine/conversion/upcastdispatcher~UpcastConversionApi upcast conversion API} and returns the value.
|
|
|
* If `String` is given, the model attribute value will be set to `true`.
|
|
|
* @param {module:utils/priorities~PriorityString} [config.converterPriority='low'] Converter priority.
|
|
|
* @returns {module:engine/conversion/upcasthelpers~UpcastHelpers}
|
|
|
@@ -231,7 +235,7 @@ export default class UpcastHelpers extends ConversionHelpers {
|
|
|
* },
|
|
|
* model: {
|
|
|
* key: 'styled'
|
|
|
- * value: viewElement => {
|
|
|
+ * value: ( viewElement, conversionApi ) => {
|
|
|
* const regexp = /styled-([\S]+)/;
|
|
|
* const match = viewElement.getAttribute( 'class' ).match( regexp );
|
|
|
*
|
|
|
@@ -263,7 +267,7 @@ export default class UpcastHelpers extends ConversionHelpers {
|
|
|
* },
|
|
|
* model: {
|
|
|
* key: 'lineHeight',
|
|
|
- * value: viewElement => viewElement.getStyle( 'line-height' )
|
|
|
+ * value: ( viewElement, conversionApi ) => viewElement.getStyle( 'line-height' )
|
|
|
* }
|
|
|
* } );
|
|
|
*
|
|
|
@@ -278,7 +282,8 @@ export default class UpcastHelpers extends ConversionHelpers {
|
|
|
* property specifying a view element name from/on which the attribute should be converted. `value` can be given as a `String`,
|
|
|
* a `RegExp` or a function callback, that takes view attribute value as the only parameter and returns `Boolean`.
|
|
|
* @param {String|Object} config.model Model attribute key or an object with `key` and `value` properties, describing
|
|
|
- * the model attribute. `value` property may be set as a function that takes a view element and returns the value.
|
|
|
+ * the model attribute. `value` property may be set as a function that takes a view element and
|
|
|
+ * {@link module:engine/conversion/upcastdispatcher~UpcastConversionApi upcast conversion API} and returns the value.
|
|
|
* If `String` is given, the model attribute value will be same as view attribute value.
|
|
|
* @param {module:utils/priorities~PriorityString} [config.converterPriority='low'] Converter priority.
|
|
|
* @returns {module:engine/conversion/upcasthelpers~UpcastHelpers}
|
|
|
@@ -310,7 +315,7 @@ export default class UpcastHelpers extends ConversionHelpers {
|
|
|
*
|
|
|
* editor.conversion.for( 'upcast' ).elementToMarker( {
|
|
|
* view: 'marker-search',
|
|
|
- * model: viewElement => 'comment:' + viewElement.getAttribute( 'data-comment-id' )
|
|
|
+ * model: ( viewElement, conversionApi ) => 'comment:' + viewElement.getAttribute( 'data-comment-id' )
|
|
|
* } );
|
|
|
*
|
|
|
* editor.conversion.for( 'upcast' ).elementToMarker( {
|
|
|
@@ -400,13 +405,13 @@ export default class UpcastHelpers extends ConversionHelpers {
|
|
|
* // Using a custom function which is the same as the default conversion:
|
|
|
* editor.conversion.for( 'upcast' ).dataToMarker( {
|
|
|
* view: 'comment',
|
|
|
- * model: name => 'comment:' + name,
|
|
|
+ * model: ( name, conversionApi ) => 'comment:' + name,
|
|
|
* } );
|
|
|
*
|
|
|
* // Using the converter priority:
|
|
|
* editor.conversion.for( 'upcast' ).dataToMarker( {
|
|
|
* view: 'comment',
|
|
|
- * model: name => 'comment:' + name,
|
|
|
+ * model: ( name, conversionApi ) => 'comment:' + name,
|
|
|
* converterPriority: 'high'
|
|
|
* } );
|
|
|
*
|
|
|
@@ -416,8 +421,8 @@ export default class UpcastHelpers extends ConversionHelpers {
|
|
|
* @method #dataToMarker
|
|
|
* @param {Object} config Conversion configuration.
|
|
|
* @param {String} config.view The marker group name to convert.
|
|
|
- * @param {Function} [config.model] A function that takes the `name` part from the view element or attribute and returns the marker
|
|
|
- * name.
|
|
|
+ * @param {Function} [config.model] A function that takes the `name` part from the view element or attribute and
|
|
|
+ * {@link module:engine/conversion/upcastdispatcher~UpcastConversionApi upcast conversion API} and returns the marker name.
|
|
|
* @param {module:utils/priorities~PriorityString} [config.converterPriority='normal'] Converter priority.
|
|
|
* @returns {module:engine/conversion/upcasthelpers~UpcastHelpers}
|
|
|
*/
|
|
|
@@ -754,7 +759,7 @@ function prepareToElementConverter( config ) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- const modelElement = getModelElement( config.model, data.viewItem, conversionApi.writer );
|
|
|
+ const modelElement = getModelElement( config.model, data.viewItem, conversionApi );
|
|
|
|
|
|
if ( !modelElement ) {
|
|
|
return;
|
|
|
@@ -775,12 +780,12 @@ function prepareToElementConverter( config ) {
|
|
|
//
|
|
|
// @param {String|Function|module:engine/model/element~Element} model Model conversion configuration.
|
|
|
// @param {module:engine/view/node~Node} input The converted view node.
|
|
|
-// @param {module:engine/model/writer~Writer} writer A writer instance to use to create the model element.
|
|
|
-function getModelElement( model, input, writer ) {
|
|
|
+// @param {module:engine/conversion/upcastdispatcher~UpcastConversionApi} conversionApi The upcast conversion API.
|
|
|
+function getModelElement( model, input, conversionApi ) {
|
|
|
if ( model instanceof Function ) {
|
|
|
- return model( input, writer );
|
|
|
+ return model( input, conversionApi );
|
|
|
} else {
|
|
|
- return writer.createElement( model );
|
|
|
+ return conversionApi.writer.createElement( model );
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -858,7 +863,8 @@ function prepareToAttributeConverter( config, shallow ) {
|
|
|
}
|
|
|
|
|
|
const modelKey = config.model.key;
|
|
|
- const modelValue = typeof config.model.value == 'function' ? config.model.value( data.viewItem ) : config.model.value;
|
|
|
+ const modelValue = typeof config.model.value == 'function' ?
|
|
|
+ config.model.value( data.viewItem, conversionApi ) : config.model.value;
|
|
|
|
|
|
// Do not convert if attribute building function returned falsy value.
|
|
|
if ( modelValue === null ) {
|
|
|
@@ -939,10 +945,10 @@ function setAttributeOn( modelRange, modelAttribute, shallow, conversionApi ) {
|
|
|
function normalizeElementToMarkerConfig( config ) {
|
|
|
const oldModel = config.model;
|
|
|
|
|
|
- config.model = ( viewElement, modelWriter ) => {
|
|
|
+ config.model = ( viewElement, { writer } ) => {
|
|
|
const markerName = typeof oldModel == 'string' ? oldModel : oldModel( viewElement );
|
|
|
|
|
|
- return modelWriter.createElement( '$marker', { 'data-name': markerName } );
|
|
|
+ return writer.createElement( '$marker', { 'data-name': markerName } );
|
|
|
};
|
|
|
}
|
|
|
|
|
|
@@ -956,11 +962,11 @@ function normalizeDataToMarkerConfig( config, type ) {
|
|
|
// Upcast <markerGroup-start> and <markerGroup-end> elements.
|
|
|
configForElements.view = config.view + '-' + type;
|
|
|
|
|
|
- configForElements.model = ( viewElement, modelWriter ) => {
|
|
|
+ configForElements.model = ( viewElement, { writer } ) => {
|
|
|
const viewName = viewElement.getAttribute( 'name' );
|
|
|
const markerName = config.model( viewName );
|
|
|
|
|
|
- return modelWriter.createElement( '$marker', { 'data-name': markerName } );
|
|
|
+ return writer.createElement( '$marker', { 'data-name': markerName } );
|
|
|
};
|
|
|
|
|
|
return configForElements;
|