|  | @@ -1,214 +1,274 @@
 | 
	
		
			
				|  |  | -/*!
 | 
	
		
			
				|  |  | -  Autosize 3.0.8
 | 
	
		
			
				|  |  | -  license: MIT
 | 
	
		
			
				|  |  | -  http://www.jacklmoore.com/autosize
 | 
	
		
			
				|  |  | -*/
 | 
	
		
			
				|  |  |  (function (global, factory) {
 | 
	
		
			
				|  |  | -  if (typeof define === 'function' && define.amd) {
 | 
	
		
			
				|  |  | -    define(['exports', 'module'], factory);
 | 
	
		
			
				|  |  | -  } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') {
 | 
	
		
			
				|  |  | -    factory(exports, module);
 | 
	
		
			
				|  |  | -  } else {
 | 
	
		
			
				|  |  | -    var mod = {
 | 
	
		
			
				|  |  | -      exports: {}
 | 
	
		
			
				|  |  | -    };
 | 
	
		
			
				|  |  | -    factory(mod.exports, mod);
 | 
	
		
			
				|  |  | -    global.autosize = mod.exports;
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -})(this, function (exports, module) {
 | 
	
		
			
				|  |  | -  'use strict';
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  function assign(ta) {
 | 
	
		
			
				|  |  | -    var _ref = arguments[1] === undefined ? {} : arguments[1];
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    var _ref$setOverflowX = _ref.setOverflowX;
 | 
	
		
			
				|  |  | -    var setOverflowX = _ref$setOverflowX === undefined ? true : _ref$setOverflowX;
 | 
	
		
			
				|  |  | -    var _ref$setOverflowY = _ref.setOverflowY;
 | 
	
		
			
				|  |  | -    var setOverflowY = _ref$setOverflowY === undefined ? true : _ref$setOverflowY;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    if (!ta || !ta.nodeName || ta.nodeName !== 'TEXTAREA' || ta.hasAttribute('data-autosize-on')) return;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    var heightOffset = null;
 | 
	
		
			
				|  |  | -    var overflowY = 'hidden';
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    function init() {
 | 
	
		
			
				|  |  | -      var style = window.getComputedStyle(ta, null);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      if (style.resize === 'vertical') {
 | 
	
		
			
				|  |  | -        ta.style.resize = 'none';
 | 
	
		
			
				|  |  | -      } else if (style.resize === 'both') {
 | 
	
		
			
				|  |  | -        ta.style.resize = 'horizontal';
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      if (style.boxSizing === 'content-box') {
 | 
	
		
			
				|  |  | -        heightOffset = -(parseFloat(style.paddingTop) + parseFloat(style.paddingBottom));
 | 
	
		
			
				|  |  | -      } else {
 | 
	
		
			
				|  |  | -        heightOffset = parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      update();
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    function changeOverflow(value) {
 | 
	
		
			
				|  |  | -      {
 | 
	
		
			
				|  |  | -        // Chrome/Safari-specific fix:
 | 
	
		
			
				|  |  | -        // When the textarea y-overflow is hidden, Chrome/Safari do not reflow the text to account for the space
 | 
	
		
			
				|  |  | -        // made available by removing the scrollbar. The following forces the necessary text reflow.
 | 
	
		
			
				|  |  | -        var width = ta.style.width;
 | 
	
		
			
				|  |  | -        ta.style.width = '0px';
 | 
	
		
			
				|  |  | -        // Force reflow:
 | 
	
		
			
				|  |  | -        /* jshint ignore:start */
 | 
	
		
			
				|  |  | -        ta.offsetWidth;
 | 
	
		
			
				|  |  | -        /* jshint ignore:end */
 | 
	
		
			
				|  |  | -        ta.style.width = width;
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      overflowY = value;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      if (setOverflowY) {
 | 
	
		
			
				|  |  | -        ta.style.overflowY = value;
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      resize();
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    function resize() {
 | 
	
		
			
				|  |  | -      var htmlTop = window.pageYOffset;
 | 
	
		
			
				|  |  | -      var bodyTop = document.body.scrollTop;
 | 
	
		
			
				|  |  | -      var originalHeight = ta.style.height;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      ta.style.height = 'auto';
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      var endHeight = ta.scrollHeight + heightOffset;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      if (ta.scrollHeight === 0) {
 | 
	
		
			
				|  |  | -        // If the scrollHeight is 0, then the element probably has display:none or is detached from the DOM.
 | 
	
		
			
				|  |  | -        ta.style.height = originalHeight;
 | 
	
		
			
				|  |  | -        return;
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      ta.style.height = endHeight + 'px';
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      // prevents scroll-position jumping
 | 
	
		
			
				|  |  | -      document.documentElement.scrollTop = htmlTop;
 | 
	
		
			
				|  |  | -      document.body.scrollTop = bodyTop;
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    function update() {
 | 
	
		
			
				|  |  | -      var startHeight = ta.style.height;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      resize();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      var style = window.getComputedStyle(ta, null);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      if (style.height !== ta.style.height) {
 | 
	
		
			
				|  |  | -        if (overflowY !== 'visible') {
 | 
	
		
			
				|  |  | -          changeOverflow('visible');
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -      } else {
 | 
	
		
			
				|  |  | -        if (overflowY !== 'hidden') {
 | 
	
		
			
				|  |  | -          changeOverflow('hidden');
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      if (startHeight !== ta.style.height) {
 | 
	
		
			
				|  |  | -        var evt = document.createEvent('Event');
 | 
	
		
			
				|  |  | -        evt.initEvent('autosize:resized', true, false);
 | 
	
		
			
				|  |  | -        ta.dispatchEvent(evt);
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    var destroy = (function (style) {
 | 
	
		
			
				|  |  | -      window.removeEventListener('resize', update);
 | 
	
		
			
				|  |  | -      ta.removeEventListener('input', update);
 | 
	
		
			
				|  |  | -      ta.removeEventListener('keyup', update);
 | 
	
		
			
				|  |  | -      ta.removeAttribute('data-autosize-on');
 | 
	
		
			
				|  |  | -      ta.removeEventListener('autosize:destroy', destroy);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      Object.keys(style).forEach(function (key) {
 | 
	
		
			
				|  |  | -        ta.style[key] = style[key];
 | 
	
		
			
				|  |  | -      });
 | 
	
		
			
				|  |  | -    }).bind(ta, {
 | 
	
		
			
				|  |  | -      height: ta.style.height,
 | 
	
		
			
				|  |  | -      resize: ta.style.resize,
 | 
	
		
			
				|  |  | -      overflowY: ta.style.overflowY,
 | 
	
		
			
				|  |  | -      overflowX: ta.style.overflowX,
 | 
	
		
			
				|  |  | -      wordWrap: ta.style.wordWrap });
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    ta.addEventListener('autosize:destroy', destroy);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    // IE9 does not fire onpropertychange or oninput for deletions,
 | 
	
		
			
				|  |  | -    // so binding to onkeyup to catch most of those events.
 | 
	
		
			
				|  |  | -    // There is no way that I know of to detect something like 'cut' in IE9.
 | 
	
		
			
				|  |  | -    if ('onpropertychange' in ta && 'oninput' in ta) {
 | 
	
		
			
				|  |  | -      ta.addEventListener('keyup', update);
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    window.addEventListener('resize', update);
 | 
	
		
			
				|  |  | -    ta.addEventListener('input', update);
 | 
	
		
			
				|  |  | -    ta.addEventListener('autosize:update', update);
 | 
	
		
			
				|  |  | -    ta.setAttribute('data-autosize-on', true);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    if (setOverflowY) {
 | 
	
		
			
				|  |  | -      ta.style.overflowY = 'hidden';
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -    if (setOverflowX) {
 | 
	
		
			
				|  |  | -      ta.style.overflowX = 'hidden';
 | 
	
		
			
				|  |  | -      ta.style.wordWrap = 'break-word';
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    init();
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  function destroy(ta) {
 | 
	
		
			
				|  |  | -    if (!(ta && ta.nodeName && ta.nodeName === 'TEXTAREA')) return;
 | 
	
		
			
				|  |  | -    var evt = document.createEvent('Event');
 | 
	
		
			
				|  |  | -    evt.initEvent('autosize:destroy', true, false);
 | 
	
		
			
				|  |  | -    ta.dispatchEvent(evt);
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  function update(ta) {
 | 
	
		
			
				|  |  | -    if (!(ta && ta.nodeName && ta.nodeName === 'TEXTAREA')) return;
 | 
	
		
			
				|  |  | -    var evt = document.createEvent('Event');
 | 
	
		
			
				|  |  | -    evt.initEvent('autosize:update', true, false);
 | 
	
		
			
				|  |  | -    ta.dispatchEvent(evt);
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  var autosize = null;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  // Do nothing in Node.js environment and IE8 (or lower)
 | 
	
		
			
				|  |  | -  if (typeof window === 'undefined' || typeof window.getComputedStyle !== 'function') {
 | 
	
		
			
				|  |  | -    autosize = function (el) {
 | 
	
		
			
				|  |  | -      return el;
 | 
	
		
			
				|  |  | -    };
 | 
	
		
			
				|  |  | -    autosize.destroy = function (el) {
 | 
	
		
			
				|  |  | -      return el;
 | 
	
		
			
				|  |  | -    };
 | 
	
		
			
				|  |  | -    autosize.update = function (el) {
 | 
	
		
			
				|  |  | -      return el;
 | 
	
		
			
				|  |  | -    };
 | 
	
		
			
				|  |  | -  } else {
 | 
	
		
			
				|  |  | -    autosize = function (el, options) {
 | 
	
		
			
				|  |  | -      if (el) {
 | 
	
		
			
				|  |  | -        Array.prototype.forEach.call(el.length ? el : [el], function (x) {
 | 
	
		
			
				|  |  | -          return assign(x, options);
 | 
	
		
			
				|  |  | -        });
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -      return el;
 | 
	
		
			
				|  |  | -    };
 | 
	
		
			
				|  |  | -    autosize.destroy = function (el) {
 | 
	
		
			
				|  |  | -      if (el) {
 | 
	
		
			
				|  |  | -        Array.prototype.forEach.call(el.length ? el : [el], destroy);
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -      return el;
 | 
	
		
			
				|  |  | -    };
 | 
	
		
			
				|  |  | -    autosize.update = function (el) {
 | 
	
		
			
				|  |  | -      if (el) {
 | 
	
		
			
				|  |  | -        Array.prototype.forEach.call(el.length ? el : [el], update);
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -      return el;
 | 
	
		
			
				|  |  | -    };
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  module.exports = autosize;
 | 
	
		
			
				|  |  | -});
 | 
	
		
			
				|  |  | +	typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
 | 
	
		
			
				|  |  | +	typeof define === 'function' && define.amd ? define(factory) :
 | 
	
		
			
				|  |  | +	(global = global || self, global.autosize = factory());
 | 
	
		
			
				|  |  | +}(this, (function () {
 | 
	
		
			
				|  |  | +	var map = typeof Map === "function" ? new Map() : function () {
 | 
	
		
			
				|  |  | +	  var keys = [];
 | 
	
		
			
				|  |  | +	  var values = [];
 | 
	
		
			
				|  |  | +	  return {
 | 
	
		
			
				|  |  | +	    has: function has(key) {
 | 
	
		
			
				|  |  | +	      return keys.indexOf(key) > -1;
 | 
	
		
			
				|  |  | +	    },
 | 
	
		
			
				|  |  | +	    get: function get(key) {
 | 
	
		
			
				|  |  | +	      return values[keys.indexOf(key)];
 | 
	
		
			
				|  |  | +	    },
 | 
	
		
			
				|  |  | +	    set: function set(key, value) {
 | 
	
		
			
				|  |  | +	      if (keys.indexOf(key) === -1) {
 | 
	
		
			
				|  |  | +	        keys.push(key);
 | 
	
		
			
				|  |  | +	        values.push(value);
 | 
	
		
			
				|  |  | +	      }
 | 
	
		
			
				|  |  | +	    },
 | 
	
		
			
				|  |  | +	    "delete": function _delete(key) {
 | 
	
		
			
				|  |  | +	      var index = keys.indexOf(key);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	      if (index > -1) {
 | 
	
		
			
				|  |  | +	        keys.splice(index, 1);
 | 
	
		
			
				|  |  | +	        values.splice(index, 1);
 | 
	
		
			
				|  |  | +	      }
 | 
	
		
			
				|  |  | +	    }
 | 
	
		
			
				|  |  | +	  };
 | 
	
		
			
				|  |  | +	}();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	var createEvent = function createEvent(name) {
 | 
	
		
			
				|  |  | +	  return new Event(name, {
 | 
	
		
			
				|  |  | +	    bubbles: true
 | 
	
		
			
				|  |  | +	  });
 | 
	
		
			
				|  |  | +	};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	try {
 | 
	
		
			
				|  |  | +	  new Event('test');
 | 
	
		
			
				|  |  | +	} catch (e) {
 | 
	
		
			
				|  |  | +	  // IE does not support `new Event()`
 | 
	
		
			
				|  |  | +	  createEvent = function createEvent(name) {
 | 
	
		
			
				|  |  | +	    var evt = document.createEvent('Event');
 | 
	
		
			
				|  |  | +	    evt.initEvent(name, true, false);
 | 
	
		
			
				|  |  | +	    return evt;
 | 
	
		
			
				|  |  | +	  };
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	function assign(ta) {
 | 
	
		
			
				|  |  | +	  if (!ta || !ta.nodeName || ta.nodeName !== 'TEXTAREA' || map.has(ta)) return;
 | 
	
		
			
				|  |  | +	  var heightOffset = null;
 | 
	
		
			
				|  |  | +	  var clientWidth = null;
 | 
	
		
			
				|  |  | +	  var cachedHeight = null;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	  function init() {
 | 
	
		
			
				|  |  | +	    var style = window.getComputedStyle(ta, null);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	    if (style.resize === 'vertical') {
 | 
	
		
			
				|  |  | +	      ta.style.resize = 'none';
 | 
	
		
			
				|  |  | +	    } else if (style.resize === 'both') {
 | 
	
		
			
				|  |  | +	      ta.style.resize = 'horizontal';
 | 
	
		
			
				|  |  | +	    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	    if (style.boxSizing === 'content-box') {
 | 
	
		
			
				|  |  | +	      heightOffset = -(parseFloat(style.paddingTop) + parseFloat(style.paddingBottom));
 | 
	
		
			
				|  |  | +	    } else {
 | 
	
		
			
				|  |  | +	      heightOffset = parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);
 | 
	
		
			
				|  |  | +	    } // Fix when a textarea is not on document body and heightOffset is Not a Number
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	    if (isNaN(heightOffset)) {
 | 
	
		
			
				|  |  | +	      heightOffset = 0;
 | 
	
		
			
				|  |  | +	    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	    update();
 | 
	
		
			
				|  |  | +	  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	  function changeOverflow(value) {
 | 
	
		
			
				|  |  | +	    {
 | 
	
		
			
				|  |  | +	      // Chrome/Safari-specific fix:
 | 
	
		
			
				|  |  | +	      // When the textarea y-overflow is hidden, Chrome/Safari do not reflow the text to account for the space
 | 
	
		
			
				|  |  | +	      // made available by removing the scrollbar. The following forces the necessary text reflow.
 | 
	
		
			
				|  |  | +	      var width = ta.style.width;
 | 
	
		
			
				|  |  | +	      ta.style.width = '0px'; // Force reflow:
 | 
	
		
			
				|  |  | +	      /* jshint ignore:end */
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	      ta.style.width = width;
 | 
	
		
			
				|  |  | +	    }
 | 
	
		
			
				|  |  | +	    ta.style.overflowY = value;
 | 
	
		
			
				|  |  | +	  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	  function getParentOverflows(el) {
 | 
	
		
			
				|  |  | +	    var arr = [];
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	    while (el && el.parentNode && el.parentNode instanceof Element) {
 | 
	
		
			
				|  |  | +	      if (el.parentNode.scrollTop) {
 | 
	
		
			
				|  |  | +	        arr.push({
 | 
	
		
			
				|  |  | +	          node: el.parentNode,
 | 
	
		
			
				|  |  | +	          scrollTop: el.parentNode.scrollTop
 | 
	
		
			
				|  |  | +	        });
 | 
	
		
			
				|  |  | +	      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	      el = el.parentNode;
 | 
	
		
			
				|  |  | +	    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	    return arr;
 | 
	
		
			
				|  |  | +	  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	  function resize() {
 | 
	
		
			
				|  |  | +	    if (ta.scrollHeight === 0) {
 | 
	
		
			
				|  |  | +	      // If the scrollHeight is 0, then the element probably has display:none or is detached from the DOM.
 | 
	
		
			
				|  |  | +	      return;
 | 
	
		
			
				|  |  | +	    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	    var overflows = getParentOverflows(ta);
 | 
	
		
			
				|  |  | +	    var docTop = document.documentElement && document.documentElement.scrollTop; // Needed for Mobile IE (ticket #240)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	    ta.style.height = '';
 | 
	
		
			
				|  |  | +	    ta.style.height = ta.scrollHeight + heightOffset + 'px'; // used to check if an update is actually necessary on window.resize
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	    clientWidth = ta.clientWidth; // prevents scroll-position jumping
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	    overflows.forEach(function (el) {
 | 
	
		
			
				|  |  | +	      el.node.scrollTop = el.scrollTop;
 | 
	
		
			
				|  |  | +	    });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	    if (docTop) {
 | 
	
		
			
				|  |  | +	      document.documentElement.scrollTop = docTop;
 | 
	
		
			
				|  |  | +	    }
 | 
	
		
			
				|  |  | +	  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	  function update() {
 | 
	
		
			
				|  |  | +	    resize();
 | 
	
		
			
				|  |  | +	    var styleHeight = Math.round(parseFloat(ta.style.height));
 | 
	
		
			
				|  |  | +	    var computed = window.getComputedStyle(ta, null); // Using offsetHeight as a replacement for computed.height in IE, because IE does not account use of border-box
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	    var actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(computed.height)) : ta.offsetHeight; // The actual height not matching the style height (set via the resize method) indicates that 
 | 
	
		
			
				|  |  | +	    // the max-height has been exceeded, in which case the overflow should be allowed.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	    if (actualHeight < styleHeight) {
 | 
	
		
			
				|  |  | +	      if (computed.overflowY === 'hidden') {
 | 
	
		
			
				|  |  | +	        changeOverflow('scroll');
 | 
	
		
			
				|  |  | +	        resize();
 | 
	
		
			
				|  |  | +	        actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(window.getComputedStyle(ta, null).height)) : ta.offsetHeight;
 | 
	
		
			
				|  |  | +	      }
 | 
	
		
			
				|  |  | +	    } else {
 | 
	
		
			
				|  |  | +	      // Normally keep overflow set to hidden, to avoid flash of scrollbar as the textarea expands.
 | 
	
		
			
				|  |  | +	      if (computed.overflowY !== 'hidden') {
 | 
	
		
			
				|  |  | +	        changeOverflow('hidden');
 | 
	
		
			
				|  |  | +	        resize();
 | 
	
		
			
				|  |  | +	        actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(window.getComputedStyle(ta, null).height)) : ta.offsetHeight;
 | 
	
		
			
				|  |  | +	      }
 | 
	
		
			
				|  |  | +	    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	    if (cachedHeight !== actualHeight) {
 | 
	
		
			
				|  |  | +	      cachedHeight = actualHeight;
 | 
	
		
			
				|  |  | +	      var evt = createEvent('autosize:resized');
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	      try {
 | 
	
		
			
				|  |  | +	        ta.dispatchEvent(evt);
 | 
	
		
			
				|  |  | +	      } catch (err) {// Firefox will throw an error on dispatchEvent for a detached element
 | 
	
		
			
				|  |  | +	        // https://bugzilla.mozilla.org/show_bug.cgi?id=889376
 | 
	
		
			
				|  |  | +	      }
 | 
	
		
			
				|  |  | +	    }
 | 
	
		
			
				|  |  | +	  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	  var pageResize = function pageResize() {
 | 
	
		
			
				|  |  | +	    if (ta.clientWidth !== clientWidth) {
 | 
	
		
			
				|  |  | +	      update();
 | 
	
		
			
				|  |  | +	    }
 | 
	
		
			
				|  |  | +	  };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	  var destroy = function (style) {
 | 
	
		
			
				|  |  | +	    window.removeEventListener('resize', pageResize, false);
 | 
	
		
			
				|  |  | +	    ta.removeEventListener('input', update, false);
 | 
	
		
			
				|  |  | +	    ta.removeEventListener('keyup', update, false);
 | 
	
		
			
				|  |  | +	    ta.removeEventListener('autosize:destroy', destroy, false);
 | 
	
		
			
				|  |  | +	    ta.removeEventListener('autosize:update', update, false);
 | 
	
		
			
				|  |  | +	    Object.keys(style).forEach(function (key) {
 | 
	
		
			
				|  |  | +	      ta.style[key] = style[key];
 | 
	
		
			
				|  |  | +	    });
 | 
	
		
			
				|  |  | +	    map["delete"](ta);
 | 
	
		
			
				|  |  | +	  }.bind(ta, {
 | 
	
		
			
				|  |  | +	    height: ta.style.height,
 | 
	
		
			
				|  |  | +	    resize: ta.style.resize,
 | 
	
		
			
				|  |  | +	    overflowY: ta.style.overflowY,
 | 
	
		
			
				|  |  | +	    overflowX: ta.style.overflowX,
 | 
	
		
			
				|  |  | +	    wordWrap: ta.style.wordWrap
 | 
	
		
			
				|  |  | +	  });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	  ta.addEventListener('autosize:destroy', destroy, false); // IE9 does not fire onpropertychange or oninput for deletions,
 | 
	
		
			
				|  |  | +	  // so binding to onkeyup to catch most of those events.
 | 
	
		
			
				|  |  | +	  // There is no way that I know of to detect something like 'cut' in IE9.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	  if ('onpropertychange' in ta && 'oninput' in ta) {
 | 
	
		
			
				|  |  | +	    ta.addEventListener('keyup', update, false);
 | 
	
		
			
				|  |  | +	  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	  window.addEventListener('resize', pageResize, false);
 | 
	
		
			
				|  |  | +	  ta.addEventListener('input', update, false);
 | 
	
		
			
				|  |  | +	  ta.addEventListener('autosize:update', update, false);
 | 
	
		
			
				|  |  | +	  ta.style.overflowX = 'hidden';
 | 
	
		
			
				|  |  | +	  ta.style.wordWrap = 'break-word';
 | 
	
		
			
				|  |  | +	  map.set(ta, {
 | 
	
		
			
				|  |  | +	    destroy: destroy,
 | 
	
		
			
				|  |  | +	    update: update
 | 
	
		
			
				|  |  | +	  });
 | 
	
		
			
				|  |  | +	  init();
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	function destroy(ta) {
 | 
	
		
			
				|  |  | +	  var methods = map.get(ta);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	  if (methods) {
 | 
	
		
			
				|  |  | +	    methods.destroy();
 | 
	
		
			
				|  |  | +	  }
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	function update(ta) {
 | 
	
		
			
				|  |  | +	  var methods = map.get(ta);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	  if (methods) {
 | 
	
		
			
				|  |  | +	    methods.update();
 | 
	
		
			
				|  |  | +	  }
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	var autosize = null; // Do nothing in Node.js environment and IE8 (or lower)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	if (typeof window === 'undefined' || typeof window.getComputedStyle !== 'function') {
 | 
	
		
			
				|  |  | +	  autosize = function autosize(el) {
 | 
	
		
			
				|  |  | +	    return el;
 | 
	
		
			
				|  |  | +	  };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	  autosize.destroy = function (el) {
 | 
	
		
			
				|  |  | +	    return el;
 | 
	
		
			
				|  |  | +	  };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	  autosize.update = function (el) {
 | 
	
		
			
				|  |  | +	    return el;
 | 
	
		
			
				|  |  | +	  };
 | 
	
		
			
				|  |  | +	} else {
 | 
	
		
			
				|  |  | +	  autosize = function autosize(el, options) {
 | 
	
		
			
				|  |  | +	    if (el) {
 | 
	
		
			
				|  |  | +	      Array.prototype.forEach.call(el.length ? el : [el], function (x) {
 | 
	
		
			
				|  |  | +	        return assign(x);
 | 
	
		
			
				|  |  | +	      });
 | 
	
		
			
				|  |  | +	    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	    return el;
 | 
	
		
			
				|  |  | +	  };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	  autosize.destroy = function (el) {
 | 
	
		
			
				|  |  | +	    if (el) {
 | 
	
		
			
				|  |  | +	      Array.prototype.forEach.call(el.length ? el : [el], destroy);
 | 
	
		
			
				|  |  | +	    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	    return el;
 | 
	
		
			
				|  |  | +	  };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	  autosize.update = function (el) {
 | 
	
		
			
				|  |  | +	    if (el) {
 | 
	
		
			
				|  |  | +	      Array.prototype.forEach.call(el.length ? el : [el], update);
 | 
	
		
			
				|  |  | +	    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	    return el;
 | 
	
		
			
				|  |  | +	  };
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	var autosize$1 = autosize;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	return autosize$1;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +})));
 |