Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | 1x 4x 4x 4x 4x 4x 1x 1x 12x 12x 12x 4x 12x 12x 12x 4x 12x 1x 4x 1x 1x 1x | /*!
* VisualEditor UserInterface WhitespacePreservingTextInputWidget class.
*
* @copyright See AUTHORS.txt
*/
/**
* Text input widget which hides but preserves leading and trailing whitespace
*
* @class
* @extends OO.ui.MultilineTextInputWidget
*
* @constructor
* @param {Object} [config] Configuration options
* @param {string} [config.valueAndWhitespace=''] Initial value and whitespace
* @param {number} [config.limit] Maximum number of characters to preserve at each end
*/
ve.ui.WhitespacePreservingTextInputWidget = function VeUiWhitespacePreservingTextInputWidget( config = {} ) {
// Parent constructor
ve.ui.WhitespacePreservingTextInputWidget.super.call( this, config );
this.limit = config.limit;
this.setWhitespace( [ '', '' ] );
this.setValueAndWhitespace( config.valueAndWhitespace || '' );
this.$element.addClass( 've-ui-whitespacePreservingTextInputWidget' );
};
/* Inheritance */
OO.inheritClass( ve.ui.WhitespacePreservingTextInputWidget, OO.ui.MultilineTextInputWidget );
/* Methods */
/**
* Set the value of the widget and extract whitespace.
*
* @param {string} value
*/
ve.ui.WhitespacePreservingTextInputWidget.prototype.setValueAndWhitespace = function ( value ) {
const leftValue = this.limit ? value.slice( 0, this.limit ) : value;
this.whitespace[ 0 ] = leftValue.match( /^\s*/ )[ 0 ];
if ( this.whitespace[ 0 ] ) {
value = value.slice( this.whitespace[ 0 ].length );
}
const rightValue = this.limit ? value.slice( -this.limit ) : value;
this.whitespace[ 1 ] = rightValue.match( /\s*$/ )[ 0 ];
if ( this.whitespace[ 1 ] ) {
value = value.slice( 0, -this.whitespace[ 1 ].length );
}
this.setValue( value );
};
/**
* Set the value of the widget and extract whitespace.
*
* @param {string[]} whitespace Outer whitespace
*/
ve.ui.WhitespacePreservingTextInputWidget.prototype.setWhitespace = function ( whitespace ) {
this.whitespace = whitespace;
};
/**
* Get the value of text widget, including hidden outer whitespace
*
* @return {string} Text widget value including whitespace
*/
ve.ui.WhitespacePreservingTextInputWidget.prototype.getValueAndWhitespace = function () {
Iif ( !this.whitespace ) {
// In case getValue() is called from a parent constructor
return this.value;
}
return this.whitespace[ 0 ] + this.value + this.whitespace[ 1 ];
};
|