| var util = require('../../util'); | |
| 
 | |
| /** | |
|  * Prototype for visual components | |
|  * @param {{dom: Object, domProps: Object, emitter: Emitter, range: Range}} [body] | |
|  * @param {Object} [options] | |
|  */ | |
| function Component (body, options) {  // eslint-disable-line no-unused-vars | |
|   this.options = null; | |
|   this.props = null; | |
| } | |
| 
 | |
| /** | |
|  * Set options for the component. The new options will be merged into the | |
|  * current options. | |
|  * @param {Object} options | |
|  */ | |
| Component.prototype.setOptions = function(options) { | |
|   if (options) { | |
|     util.extend(this.options, options); | |
|   } | |
| }; | |
| 
 | |
| /** | |
|  * Repaint the component | |
|  * @return {boolean} Returns true if the component is resized | |
|  */ | |
| Component.prototype.redraw = function() { | |
|   // should be implemented by the component | |
|   return false; | |
| }; | |
| 
 | |
| /** | |
|  * Destroy the component. Cleanup DOM and event listeners | |
|  */ | |
| Component.prototype.destroy = function() { | |
|   // should be implemented by the component | |
| }; | |
| 
 | |
| /** | |
|  * Test whether the component is resized since the last time _isResized() was | |
|  * called. | |
|  * @return {Boolean} Returns true if the component is resized | |
|  * @protected | |
|  */ | |
| Component.prototype._isResized = function() { | |
|   var resized = (this.props._previousWidth !== this.props.width || | |
|       this.props._previousHeight !== this.props.height); | |
| 
 | |
|   this.props._previousWidth = this.props.width; | |
|   this.props._previousHeight = this.props.height; | |
| 
 | |
|   return resized; | |
| }; | |
| 
 | |
| module.exports = Component;
 |