{"version":3,"sources":["jsdelivr-header.js","/npm/expanding-textareas@1.0.2/dist/expanding.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,CCCC,SAAU,EAAQ,GACE,iBAAZ,SAA0C,oBAAX,OAAyB,OAAO,QAAU,IAC9D,mBAAX,QAAyB,OAAO,IAAM,OAAO,GACnD,EAAO,UAAY,GACtB,CAJA,CAIE,MAAM,WAAe,aAEvB,IAAI,EAAY,OAAO,UAAU,UAK7B,EAAY,WACd,IAAI,GAAW,EACkB,gCAA7B,OAAO,UAAU,UAEY,OADlB,IAAI,OAAO,gCACb,KAAK,KAAqB,EAAU,WAAW,OAAO,MAEnE,OAAO,CACR,CAPe,GAmBZ,EAHF,YAAa,SAAS,cAAc,UAA0B,IAAd,EAGX,QAAU,QAE7C,EAAc,mBAAmB,KAAK,KAAe,OAAO,SAOhE,SAAS,EAAO,EAAS,GACvB,IAAK,IAAI,KAAY,EAAQ,EAAQ,MAAM,GAAY,EAAO,EAChE,CAWA,SAAS,EAAU,GACjB,KAAK,QAAU,EACf,KAAK,gBAAkB,CAAC,CAC1B,CAEA,EAAS,UAAY,CACnB,MAAO,SAAU,GACf,EAAM,KAAK,QAAS,EACtB,EAEA,OAAQ,WACN,MAAO,CACL,SAAU,WACV,IAAK,EACL,KAAM,EACN,OAAQ,OACR,OAAQ,OACR,SAAU,OAEd,EAEA,MAAO,SAAU,GACf,GAAyB,IAArB,UAAU,OACZ,OAAO,KAAK,QAAQ,MAAM,QAAQ,QAAS,MAE3C,KAAK,QAAQ,MAAQ,CAEzB,EAEA,GAAI,SAAU,EAAW,GACvB,KAAK,QAAQ,iBAAiB,EAAW,GACzC,KAAK,gBAAgB,GAAa,CACpC,EAEA,IAAK,SAAU,GACb,GAAyB,IAArB,UAAU,OACZ,IAAK,IAAI,KAAS,KAAK,gBAAmB,KAAK,IAAI,QAEnD,KAAK,QAAQ,oBACX,EACA,KAAK,gBAAgB,WAEhB,KAAK,gBAAgB,EAEhC,EAEA,QAAS,WACP,KAAK,QAAQ,aAAa,QAAS,KAAK,mBAAqB,IAC7D,KAAK,KACP,GAGF,IAAI,EAAkB,CACpB,kBAAmB,KACnB,gBAAiB,KACjB,iBAAkB,KAClB,eAAgB,KAChB,UAAW,KACX,WAAY,KACZ,SAAU,KACV,eAAgB,KAChB,UAAW,KACX,WAAY,KACZ,cAAe,KACf,WAAY,KACZ,UAAW,KACX,cAAe,KACf,YAAa,EACb,aAAc,EACd,WAAY,KACZ,UAAW,KACX,eAAgB,KAChB,cAAe,KACf,UAAW,KACX,YAAa,KACb,SAAU,MAGZ,SAAS,EAAmB,GAC1B,OAAO,EAAe,WAAW,GAAiB,EAAK,KAAO,CAChE,CAEA,SAAS,IACP,KAAK,QAAU,SAAS,cAAc,OACtC,KAAK,QAAQ,UAAY,kBACzB,KAAK,aAAe,SAAS,cAAc,QAC3C,KAAK,QAAQ,YAAY,KAAK,cAC9B,KAAK,QAAQ,YAAY,SAAS,cAAc,MAClD,CAoCA,SAAS,EAAW,GAoCpB,IACM,EApCJ,KAAK,UAoCD,EAAU,SAAS,cAAc,QAC7B,UAAY,oBACpB,EAAQ,MAAM,SAAW,WAClB,GAtCP,KAAK,SAAW,IAAI,EAAS,GAC7B,KAAK,cAAgB,IAAI,EACzB,KAAK,SAAS,kBAAoB,EAAS,aAAa,SACxD,EAAY,KAAK,MACjB,EAAU,KAAK,MApJjB,SAAe,EAAS,GACtB,EAAQ,WAAW,aAAa,EAAS,GACzC,EAAQ,YAAY,EACtB,CAmJE,CAAK,EAAU,KAAK,SACpB,KAAK,QAAQ,YAAY,KAAK,cAAc,SAE5C,IAAI,EAAe,KAAK,OAAO,KAAK,MACpC,KAAK,SAAS,GAAG,EAAY,GAC7B,KAAK,SAAS,GAAG,SAAU,GAE3B,KAAK,QACP,CA2BA,SAAS,IACP,IAAI,EAAS,CACX,OAAQ,EACR,gBAAiB,aACjB,aAAc,aACd,UAAW,aACX,MAAO,QAGT,KAAK,cAAc,MAAM,CACvB,UAAW,KAAK,SAAS,QAAQ,aAAe,OAElD,KAAK,cAAc,MAAM,GACzB,KAAK,SAAS,MAAM,EACtB,CAEA,SAAS,IACP,KAAK,cAAc,MAAM,KAAK,cAAc,OAAO,KAAK,SAAS,UACjE,KAAK,SAAS,MAAM,KAAK,SAAS,SACpC,CAEA,OAlGA,EAAc,UAAY,CACxB,MAAO,SAAU,GACf,GAAyB,IAArB,UAAU,OAAc,OAAO,KAAK,aAAa,YAChD,KAAK,aAAa,YAAc,CACvC,EAEA,MAAO,SAAU,GACf,EAAM,KAAK,QAAS,EACtB,EAEA,OAAQ,SAAU,GAChB,IAAI,EAAO,EAAS,aAAa,QAC7B,EAAS,CACX,QAAS,QACT,OAAQ,UACR,WAAY,SACZ,UAAoB,QAAT,EAAiB,SAAW,SACvC,WAAqB,QAAT,EAAiB,MAAQ,YAGnC,EAAiB,OAAO,iBAAiB,GAE7C,IAAK,IAAI,KAAY,EAAiB,CACpC,IAAI,EAAgB,EAAgB,GAChC,EAAgB,EAAe,GACnC,EAAO,GACL,EAAgB,EAAc,GAAiB,CAEnD,CAEA,OAAO,CACT,GAqBF,EAAU,UAAY,CACpB,OAAQ,WACN,KAAK,cAAc,MAAM,KAAK,SAAS,SAzJ3C,SAAmB,EAAW,GAC5B,EAAU,GAAW,CAAC,EACtB,IAAI,EAAQ,SAAS,YAAY,SACjC,EAAM,UAAU,GAAW,GAA6B,IAAvB,EAAQ,YACzC,EAAM,KAAuB,MAAhB,EAAQ,KAAe,EAAQ,KAAO,CAAC,GACrB,MAAlB,EAAQ,OAAiB,EAAQ,OAAS,UAChD,cAAc,EACvB,CAmJI,CAAS,mBAAoB,CAAE,OAAQ,KAAK,SAAS,SACvD,EAEA,QAAS,WACP,EAAU,KAAK,KACjB,EAEA,QAAS,WACP,KAAK,QAAQ,YAAY,KAAK,cAAc,SAC5C,KAAK,QAAQ,WAAW,aAAa,KAAK,SAAS,QAAS,KAAK,SACjE,KAAK,QAAQ,WAAW,YAAY,KAAK,SACzC,KAAK,SAAS,SAChB,GA+BK,CAEN","file":"/npm/expanding-textareas@1.0.2/dist/expanding.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.37.0.\n * Original file: /npm/expanding-textareas@1.0.2/dist/expanding.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/*\n * expanding-textareas 1.0.2\n * Copyright © 2011+ Brian Grinstead\n * Released under the MIT license\n * http://bgrins.github.com/ExpandingTextareas/\n */\n\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global.Expanding = factory());\n}(this, (function () { 'use strict';\n\nvar userAgent = window.navigator.userAgent\n\n// Returns the version of Internet Explorer or -1\n// (indicating the use of another browser).\n// From: http://msdn.microsoft.com/en-us/library/ms537509(v=vs.85).aspx#ParsingUA\nvar ieVersion = (function () {\n  var version = -1\n  if (window.navigator.appName === 'Microsoft Internet Explorer') {\n    var regExp = new RegExp('MSIE ([0-9]{1,}[\\\\.0-9]{0,})')\n    if (regExp.exec(userAgent) !== null) version = parseFloat(RegExp.$1)\n  }\n  return version\n})()\n\n// Check for oninput support\n// IE9 supports oninput, but not when deleting text, so keyup is used.\n// onpropertychange _is_ supported by IE8/9, but may not be fired unless\n// attached with `attachEvent`\n// (see: http://stackoverflow.com/questions/18436424/ie-onpropertychange-event-doesnt-fire),\n// and so is avoided altogether.\nvar inputEventSupported = (\n  'oninput' in document.createElement('input') && ieVersion !== 9\n)\n\nvar inputEvent = inputEventSupported ? 'input' : 'keyup'\n\nvar isIosDevice = /iPad|iPhone|iPod/.test(userAgent) && !window.MSStream\n\nfunction wrap (element, wrapper) {\n  element.parentNode.insertBefore(wrapper, element)\n  wrapper.appendChild(element)\n}\n\nfunction style (element, styles) {\n  for (var property in styles) element.style[property] = styles[property]\n}\n\nfunction dispatch (eventName, options) {\n  options = options || {}\n  var event = document.createEvent('Event')\n  event.initEvent(eventName, true, options.cancelable === true)\n  event.data = options.data != null ? options.data : {}\n  var target = options.target != null ? options.target : document\n  target.dispatchEvent(event)\n}\n\nfunction Textarea (element) {\n  this.element = element\n  this._eventListeners = {}\n}\n\nTextarea.prototype = {\n  style: function (styles) {\n    style(this.element, styles)\n  },\n\n  styles: function () {\n    return {\n      position: 'absolute',\n      top: 0,\n      left: 0,\n      height: '100%',\n      resize: 'none',\n      overflow: 'auto'\n    }\n  },\n\n  value: function (value) {\n    if (arguments.length === 0) {\n      return this.element.value.replace(/\\r\\n/g, '\\n')\n    } else {\n      this.element.value = value\n    }\n  },\n\n  on: function (eventName, handler) {\n    this.element.addEventListener(eventName, handler)\n    this._eventListeners[eventName] = handler\n  },\n\n  off: function (eventName) {\n    if (arguments.length === 0) {\n      for (var event in this._eventListeners) { this.off(event) }\n    } else {\n      this.element.removeEventListener(\n        eventName,\n        this._eventListeners[eventName]\n      )\n      delete this._eventListeners[eventName]\n    }\n  },\n\n  destroy: function () {\n    this.element.setAttribute('style', this.oldStyleAttribute || '')\n    this.off()\n  }\n}\n\nvar styleProperties = {\n  borderBottomWidth: null,\n  borderLeftWidth: null,\n  borderRightWidth: null,\n  borderTopWidth: null,\n  direction: null,\n  fontFamily: null,\n  fontSize: null,\n  fontSizeAdjust: null,\n  fontStyle: null,\n  fontWeight: null,\n  letterSpacing: null,\n  lineHeight: null,\n  maxHeight: null,\n  paddingBottom: null,\n  paddingLeft: paddingHorizontal,\n  paddingRight: paddingHorizontal,\n  paddingTop: null,\n  textAlign: null,\n  textDecoration: null,\n  textTransform: null,\n  wordBreak: null,\n  wordSpacing: null,\n  wordWrap: null\n}\n\nfunction paddingHorizontal (computedStyle) {\n  return isIosDevice ? (parseFloat(computedStyle) + 3) + 'px' : computedStyle\n}\n\nfunction TextareaClone () {\n  this.element = document.createElement('pre')\n  this.element.className = 'expanding-clone'\n  this.innerElement = document.createElement('span')\n  this.element.appendChild(this.innerElement)\n  this.element.appendChild(document.createElement('br'))\n}\n\nTextareaClone.prototype = {\n  value: function (value) {\n    if (arguments.length === 0) return this.innerElement.textContent\n    else this.innerElement.textContent = value\n  },\n\n  style: function (styles) {\n    style(this.element, styles)\n  },\n\n  styles: function (textarea) {\n    var wrap = textarea.getAttribute('wrap')\n    var styles = {\n      display: 'block',\n      border: '0 solid',\n      visibility: 'hidden',\n      overflowX: wrap === 'off' ? 'scroll' : 'hidden',\n      whiteSpace: wrap === 'off' ? 'pre' : 'pre-wrap'\n    }\n\n    var computedStyles = window.getComputedStyle(textarea)\n\n    for (var property in styleProperties) {\n      var valueFunction = styleProperties[property]\n      var computedStyle = computedStyles[property]\n      styles[property] = (\n        valueFunction ? valueFunction(computedStyle) : computedStyle\n      )\n    }\n\n    return styles\n  }\n}\n\nfunction Expanding (textarea) {\n  this.element = createElement()\n  this.textarea = new Textarea(textarea)\n  this.textareaClone = new TextareaClone()\n  this.textarea.oldStyleAttribute = textarea.getAttribute('style')\n  resetStyles.call(this)\n  setStyles.call(this)\n\n  wrap(textarea, this.element)\n  this.element.appendChild(this.textareaClone.element)\n\n  var inputHandler = this.update.bind(this)\n  this.textarea.on(inputEvent, inputHandler)\n  this.textarea.on('change', inputHandler)\n\n  this.update()\n}\n\nExpanding.prototype = {\n  update: function () {\n    this.textareaClone.value(this.textarea.value())\n    dispatch('expanding:update', { target: this.textarea.element })\n  },\n\n  refresh: function () {\n    setStyles.call(this)\n  },\n\n  destroy: function () {\n    this.element.removeChild(this.textareaClone.element)\n    this.element.parentNode.insertBefore(this.textarea.element, this.element)\n    this.element.parentNode.removeChild(this.element)\n    this.textarea.destroy()\n  }\n}\n\nfunction createElement () {\n  var element = document.createElement('div')\n  element.className = 'expanding-wrapper'\n  element.style.position = 'relative'\n  return element\n}\n\nfunction resetStyles () {\n  var styles = {\n    margin: 0,\n    webkitBoxSizing: 'border-box',\n    mozBoxSizing: 'border-box',\n    boxSizing: 'border-box',\n    width: '100%'\n  }\n  // Should only be called once i.e. on initialization\n  this.textareaClone.style({\n    minHeight: this.textarea.element.offsetHeight + 'px'\n  })\n  this.textareaClone.style(styles)\n  this.textarea.style(styles)\n}\n\nfunction setStyles () {\n  this.textareaClone.style(this.textareaClone.styles(this.textarea.element))\n  this.textarea.style(this.textarea.styles())\n}\n\nreturn Expanding;\n\n})));"]}