/*!
* VisualEditor ContentEditable MWResizableNode class.
*
* @copyright See AUTHORS.txt
* @license The MIT License (MIT); see LICENSE.txt
*/
/**
* ContentEditable MediaWiki resizable node.
*
* @class
* @abstract
* @extends ve.ce.ResizableNode
*
* @constructor
* @param {jQuery} [$resizable=this.$element] Resizable DOM element
* @param {Object} [config] Configuration options
*/
ve.ce.MWResizableNode = function VeCeMWResizableNode( $resizable, config ) {
ve.ce.ResizableNode.call( this, $resizable, config );
};
/* Inheritance */
OO.inheritClass( ve.ce.MWResizableNode, ve.ce.ResizableNode );
/**
* Generate an object of attributes changes from the new width and height.
*
* If either property changes, clear the defaultSize flag.
*
* @param {number} width New image width
* @param {number} height New image height
* @return {Object} Attribute changes
*/
ve.ce.MWResizableNode.prototype.getAttributeChanges = function ( width, height ) {
const attrChanges = ve.ce.ResizableNode.prototype.getAttributeChanges.call( this, width, height );
if ( !ve.isEmptyObject( attrChanges ) ) {
attrChanges.defaultSize = false;
}
// type=frame is not resizeable, so change it to type=thumb
if ( this.getModel().getAttribute( 'type' ) === 'frame' ) {
attrChanges.type = 'thumb';
}
return attrChanges;
};