| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- /**
- * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
- */
- /**
- * @module engine/view/styles/background
- */
- import { isAttachment, isColor, isPosition, isRepeat, isURL } from './utils';
- /**
- * Adds a background CSS styles processing rules.
- *
- * editor.editing.view.document.addStyleProcessorRules( addBackgroundRules );
- *
- * The normalized value is stored as:
- *
- * const styles = {
- * background: {
- * color,
- * repeat,
- * position,
- * attachment,
- * image
- * }
- * };
- *
- * **Note**: Currently only `'background-color'` longhand value is parsed besides `'background'` shorthand. The reducer also supports only
- * `'background-color'` value.
- *
- * @param {module:engine/view/stylesmap~StylesProcessor} stylesProcessor
- */
- export function addBackgroundRules( stylesProcessor ) {
- stylesProcessor.setNormalizer( 'background', normalizeBackground );
- stylesProcessor.setNormalizer( 'background-color', value => ( { path: 'background.color', value } ) );
- stylesProcessor.setReducer( 'background', value => {
- const ret = [];
- ret.push( [ 'background-color', value.color ] );
- return ret;
- } );
- }
- function normalizeBackground( value ) {
- const background = {};
- const parts = value.split( ' ' );
- for ( const part of parts ) {
- if ( isRepeat( part ) ) {
- background.repeat = background.repeat || [];
- background.repeat.push( part );
- } else if ( isPosition( part ) ) {
- background.position = background.position || [];
- background.position.push( part );
- } else if ( isAttachment( part ) ) {
- background.attachment = part;
- } else if ( isColor( part ) ) {
- background.color = part;
- } else if ( isURL( part ) ) {
- background.image = part;
- }
- }
- return {
- path: 'background',
- value: background
- };
- }
|