| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
- */
- /**
- * @module indent/indentcommandbehavior/indentusingoffset
- */
- /**
- * @implements module:indent/indentblockcommand~IndentBehavior
- */
- export default class IndentUsingOffset {
- /**
- * Creates an instance of the behavior.
- *
- * @param {Object} config
- * @param {String} config.direction The direction of indentation.
- * @param {Number} config.offset Offset of next indentation step.
- * @param {String} config.unit Indentation unit.
- */
- constructor( config ) {
- /**
- * The direction of indentation.
- *
- * @type {Boolean}
- */
- this.isForward = config.direction === 'forward';
- /**
- * Offset of next indentation step.
- *
- * @type {Number}
- */
- this.offset = config.offset;
- /**
- * Indentation unit.
- *
- * @type {String}
- */
- this.unit = config.unit;
- }
- /**
- * @inheritDoc
- */
- checkEnabled( indentAttributeValue ) {
- const currentOffset = parseFloat( indentAttributeValue || 0 );
- // The command is always enabled for forward indentation.
- return this.isForward || currentOffset > 0;
- }
- /**
- * @inheritDoc
- */
- getNextIndent( indentAttributeValue ) {
- const currentOffset = parseFloat( indentAttributeValue || 0 );
- const isSameUnit = !indentAttributeValue || indentAttributeValue.endsWith( this.unit );
- if ( !isSameUnit ) {
- return this.isForward ? this.offset + this.unit : undefined;
- }
- const nextOffset = this.isForward ? this.offset : -this.offset;
- const offsetToSet = currentOffset + nextOffset;
- return offsetToSet > 0 ? offsetToSet + this.unit : undefined;
- }
- }
|