{"version":3,"sources":["webpack:///./app/javascript/application/javascript/Collapsible.vue?f4c6","webpack:///./app/javascript/application/javascript/Collapsible.vue?3f5a","webpack:///app/javascript/application/javascript/Collapsible.vue","webpack:///./app/javascript/application/javascript/Collapsible.vue","webpack:///./app/javascript/application/javascript/Collapsible.vue?710e"],"names":["name","data","open","isOpen","height","closeOnNextTick","transitioning","props","openLabel","type","String","closedLabel","transitionDuration","transitionTimingFunction","transitionDelay","Boolean","onCollapse","Function","methods","handleClick","handleEnd","watch","newVal","oldVal","$refs","inner","scrollHeight","updated","_this","$nextTick","window","setTimeout","component","_vm","this","_h","$createElement","_c","_self","staticClass","class","Collapsible__trigger","attrs","on","$event","preventDefault","apply","arguments","_t","_e","_v","Collapsible__content","style","transitionProperty","ref"],"mappings":"kGAAA,ICAiN,ECoDnM,CACdA,KAAA,cACAC,KAAA,WACA,OACAC,KAAA,KAAAC,OACAC,OAAA,KAAAD,OAAA,aACAE,iBAAA,EACAC,eAAA,EAEA,EACAC,MAAA,CACAC,UAAA,CACAC,KAAAC,OACA,oBAEAC,YAAA,CACAF,KAAAC,OACA,mBAEAE,mBAAA,CACAH,KAAAC,OACA,iBAEAG,yBAAA,CACAJ,KAAAC,OACA,gBAEAI,gBAAA,CACAL,KAAAC,OACA,cAEAP,OAAA,CACA,WACAM,KAAAM,SAEAC,WAAA,CACA,qBACAP,KAAAQ,WAGAC,QAAA,CACAC,YAAA,WACA,KAAAH,YAAA,KAAAb,QACA,KAAAD,MAAA,KAAAA,IACA,EACAkB,UAAA,WACA,aAAAhB,SACA,KAAAA,OAAA,QAEA,KAAAE,eAAA,CACA,GAEAe,MAAA,CACAnB,KAAA,SAAAoB,EAAAC,GACA,KAAAjB,eAAA,EACA,KAAAF,OAAA,KAAAoB,MAAAC,MAAAC,aAAA,MACA,IAAAH,IACA,KAAAlB,iBAAA,EAEA,EACAF,OAAA,SAAAmB,GACA,KAAApB,KAAAoB,CACA,GAEAK,QAAA,eAAAC,EAAA,KACA,KAAAC,WAAA,WACAC,OAAAC,YAAA,WACAH,EAAAvB,kBACAuB,EAAAxB,OAAA,MACAwB,EAAAvB,iBAAA,EAEA,GACA,GACA,G,gBCrHI2B,EAAY,YACd,GHTW,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACE,YAAY,eAAe,CAACF,EAAG,SAAS,CAACE,YAAY,qBAAqBC,MAAM,CACpLC,sBAAsB,EACtB,8BAA+BR,EAAI3B,eAAiB2B,EAAI/B,KACxD,gCAAiC+B,EAAI3B,gBAAkB2B,EAAI/B,KAC3D,sCAAuC+B,EAAI3B,eAC3CoC,MAAM,CAAC,KAAO,UAAUC,GAAG,CAAC,MAAQ,SAASC,GAAgC,OAAxBA,EAAOC,iBAAwBZ,EAAId,YAAY2B,MAAM,KAAMC,UAAU,IAAI,CAAEd,EAAQ,KAAEA,EAAIe,GAAG,WAAU,WAAW,MAAO,CAACX,EAAG,OAAO,CAACE,YAAY,6BAA6B,CAACN,EAAIe,GAAG,UAAU,GAAG,IAAGf,EAAIgB,KAAKhB,EAAIiB,GAAG,KAAOjB,EAAI/B,KAAyK+B,EAAIgB,KAAvKhB,EAAIe,GAAG,iBAAgB,WAAW,MAAO,CAACf,EAAIe,GAAG,WAAU,WAAW,MAAO,CAACX,EAAG,OAAO,CAACE,YAAY,6BAA6B,CAACN,EAAIe,GAAG,gBAAgB,GAAG,IAAG,KAAa,GAAGf,EAAIiB,GAAG,KAAKb,EAAG,MAAM,CAACG,MAAM,CACveW,sBAAsB,EACtB,8BAA+BlB,EAAI3B,eAAiB2B,EAAI/B,KACxD,gCAAiC+B,EAAI3B,gBAAkB2B,EAAI/B,KAC3D,sCAAuC+B,EAAI3B,eAC3C8C,MAAM,CACNhD,OAAQ6B,EAAI7B,OACZiD,mBAAoB,SACpBzC,mBAAoBqB,EAAIrB,mBACxBC,yBAA0BoB,EAAIpB,yBAC9BC,gBAAiBmB,EAAInB,iBACpB6B,GAAG,CAAC,cAAgBV,EAAIb,YAAY,CAACiB,EAAG,MAAM,CAACiB,IAAI,QAAQf,YAAY,6BAA6B,CAACN,EAAIe,GAAG,SAAS,MAAM,GAC5G,IGLpB,EACA,KACA,WACA,MAIa,UAAAhB,E,gECnBf,M","file":"js/5-93436e64d0b4eb31e36f.chunk.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"Collapsible\"},[_c('button',{staticClass:\"focus:outline-none\",class:{\n      Collapsible__trigger: true,\n      'Collapsible__trigger--open': !_vm.transitioning && _vm.open,\n      'Collapsible__trigger--closed': !_vm.transitioning && !_vm.open,\n      'Collapsible__trigger--transitioning': _vm.transitioning\n    },attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();return _vm.handleClick.apply(null, arguments)}}},[(_vm.open)?_vm._t(\"trigger\",function(){return [_c('span',{staticClass:\"Collapsible__triggerLabel\"},[_vm._t(\"title\")],2)]}):_vm._e(),_vm._v(\" \"),(!_vm.open)?_vm._t(\"closedTrigger\",function(){return [_vm._t(\"trigger\",function(){return [_c('span',{staticClass:\"Collapsible__triggerLabel\"},[_vm._t(\"close-title\")],2)]})]}):_vm._e()],2),_vm._v(\" \"),_c('div',{class:{\n      Collapsible__content: true,\n      'Collapsible__content--open': !_vm.transitioning && _vm.open,\n      'Collapsible__content--closed': !_vm.transitioning && !_vm.open,\n      'Collapsible__content--transitioning': _vm.transitioning\n    },style:({\n      height: _vm.height,\n      transitionProperty: 'height',\n      transitionDuration: _vm.transitionDuration,\n      transitionTimingFunction: _vm.transitionTimingFunction,\n      transitionDelay: _vm.transitionDelay\n    }),on:{\"transitionend\":_vm.handleEnd}},[_c('div',{ref:\"inner\",staticClass:\"Collapsible__contentInner\"},[_vm._t(\"body\")],2)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--7-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Collapsible.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js??ref--7-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Collapsible.vue?vue&type=script&lang=js&\"","<template>\n  <div class=\"Collapsible\">\n    <button\n      @click.prevent=\"handleClick\"\n      type=\"button\"\n      class=\"focus:outline-none\"\n      :class=\"{\n        Collapsible__trigger: true,\n        'Collapsible__trigger--open': !transitioning && open,\n        'Collapsible__trigger--closed': !transitioning && !open,\n        'Collapsible__trigger--transitioning': transitioning\n      }\"\n    >\n      <slot name=\"trigger\" v-if=\"open\">\n        <span class=\"Collapsible__triggerLabel\">\n          <slot name=\"title\" />\n        </span>\n      </slot>\n\n      <slot name=\"closedTrigger\" v-if=\"!open\">\n        <slot name=\"trigger\">\n          <span class=\"Collapsible__triggerLabel\">\n            <slot name=\"close-title\" />\n          </span>\n        </slot>\n      </slot>\n    </button>\n\n    <div\n      :class=\"{\n        Collapsible__content: true,\n        'Collapsible__content--open': !transitioning && open,\n        'Collapsible__content--closed': !transitioning && !open,\n        'Collapsible__content--transitioning': transitioning\n      }\"\n      :style=\"{\n        height,\n        transitionProperty: 'height',\n        transitionDuration,\n        transitionTimingFunction,\n        transitionDelay\n      }\"\n      @transitionend=\"handleEnd\"\n    >\n      <div class=\"Collapsible__contentInner\" ref=\"inner\">\n        <slot name=\"body\" />\n      </div>\n    </div>\n  </div>\n</template>\n\n<script>\nexport default {\n  name: 'Collapsible',\n  data() {\n    return {\n      open: this.isOpen,\n      height: this.isOpen ? 'auto' : '0px',\n      closeOnNextTick: false,\n      transitioning: false\n    };\n  },\n  props: {\n    openLabel: {\n      type: String,\n      default: 'Close me'\n    },\n    closedLabel: {\n      type: String,\n      default: 'Open me'\n    },\n    transitionDuration: {\n      type: String,\n      default: '400ms'\n    },\n    transitionTimingFunction: {\n      type: String,\n      default: 'ease'\n    },\n    transitionDelay: {\n      type: String,\n      default: '0s'\n    },\n    isOpen: {\n      default: false,\n      type: Boolean\n    },\n    onCollapse: {\n      default: () => {},\n      type: Function\n    }\n  },\n  methods: {\n    handleClick() {\n      this.onCollapse(!this.isOpen);\n      this.open = !this.open;\n    },\n    handleEnd() {\n      if (this.height !== '0px') {\n        this.height = 'auto';\n      }\n      this.transitioning = false;\n    }\n  },\n  watch: {\n    open(newVal, oldVal) {\n      this.transitioning = true;\n      this.height = this.$refs.inner.scrollHeight + 'px';\n      if (oldVal === true) {\n        this.closeOnNextTick = true;\n      }\n    },\n    isOpen(newVal) {\n      this.open = newVal;\n    }\n  },\n  updated() {\n    this.$nextTick(() => {\n      window.setTimeout(() => {\n        if (this.closeOnNextTick) {\n          this.height = '0px';\n          this.closeOnNextTick = false;\n        }\n      });\n    });\n  }\n};\n</script>\n\n<style scoped>\n.Collapsible__content {\n  overflow: hidden;\n}\n.Collapsible__contentInner {\n  height: auto;\n}\n.Collapsible__trigger {\n  appearance: none;\n  border: 0;\n  background: transparent;\n  border-radius: 0;\n  font-family: inherit;\n  font-size: inherit;\n  font-style: inherit;\n  text-align: inherit;\n  color: inherit;\n  padding: 0;\n  margin: 0;\n  display: block;\n  width: 100%;\n  cursor: pointer;\n}\n</style>\n","import { render, staticRenderFns } from \"./Collapsible.vue?vue&type=template&id=368bcdc6&scoped=true&\"\nimport script from \"./Collapsible.vue?vue&type=script&lang=js&\"\nexport * from \"./Collapsible.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Collapsible.vue?vue&type=style&index=0&id=368bcdc6&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"368bcdc6\",\n  null\n  \n)\n\nexport default component.exports","export * from \"-!../../../../node_modules/@rails/webpacker/node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/dist/cjs.js??ref--2-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--2-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Collapsible.vue?vue&type=style&index=0&id=368bcdc6&scoped=true&lang=css&\""],"sourceRoot":""}