/**
* @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
* For licensing, see LICENSE.md.
*/
/**
* @module engine/view/viewelementdefinition
*/
/**
* An object defining view element used in {@link module:engine/conversion/definition-based-converters} as part of
* {@link module:engine/conversion/definition-based-converters~ConverterDefinition}.
*
* It describe a view element that is used
*
* const viewDefinition = {
* name: 'h1',
* class: [ 'foo', 'bar' ]
* };
*
* Above describes a view element:
*
*
...
*
* For elements without attributes you can use shorthand string version:
*
* const viewDefinition = 'p';
*
* which will be treated as:
*
* const viewDefinition = {
* name: 'p'
* };
*
* @typedef {String|Object} module:engine/view/viewelementdefinition~ViewElementDefinition
*
* @property {String} name View element name.
* @property {String|Array.} [class] Class name or array of class names to match. Each name can be
* provided in a form of string.
* @property {Object} [style] Object with key-value pairs representing styles to match. Each object key
* represents style name. Value under that key must be a string.
* @property {Object} [attribute] Object with key-value pairs representing attributes to match. Each object key
* represents attribute name. Value under that key must be a string.
*/