{"version":3,"sources":["webpack:///./src/components/Reservations/ModalAddExternalLink.vue?ce2b","webpack:///./src/components/Reservations/ModalAddExternalLink.vue","webpack:///src/components/Reservations/ModalAddExternalLink.vue","webpack:///./src/components/Reservations/ModalAddExternalLink.vue?0719","webpack:///./src/components/Reservations/ModalAddExternalLink.vue?cb15"],"names":["render","_vm","this","_c","_self","attrs","$t","isSaving","isSavingError","disableSaveButton","onClickCancel","addExternalLink","showModal","on","scopedSlots","_u","key","fn","newExternalLink","staticClass","_v","_s","directives","name","rawName","value","LinkType","expression","$event","$$selectedVal","Array","prototype","filter","call","target","options","o","selected","map","val","_value","$set","multiple","domProps","Link","type","indexOf","_k","keyCode","apply","arguments","composing","_e","proxy","slot","staticRenderFns","Message","components","props","Boolean","default","Function","required","data","computed","_objectSpread","mapState","urlEmpty","link","replace","trim","linkTypeSelected","isUrlValid","matcher","parsedLink","JSON","parse","stringify","test","includes","created","methods","mapMutations","_this","self","reservation","checkURLforHTTPS","removeXSS","reservationProvider","Key","then","response","status","ExternalLinks","push","setReservation","EventBus","$emit","message","catch","error","finally","url","afterHttps","slice","component"],"mappings":"2IAAA,W,+FCAIA,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,qBAAqB,CAACE,MAAM,CAAC,WAAaJ,EAAIK,GAAG,2DAA2D,SAAWL,EAAIM,SAAS,cAAgBN,EAAIO,cAAc,kBAAoBP,EAAIQ,kBAAkB,kBAAoBR,EAAIO,cAAc,cAAgBP,EAAIS,cAAc,YAAcT,EAAIU,gBAAgB,UAAYV,EAAIW,WAAWC,GAAG,CAAC,WAAaZ,EAAIS,eAAeI,YAAYb,EAAIc,GAAG,CAAC,CAACC,IAAI,UAAUC,GAAG,WAAW,MAAO,CAACd,EAAG,UAAU,CAACE,MAAM,CAAC,QAAUJ,EAAIK,GACjhB,2EACIL,EAAIiB,gBAAiBf,EAAG,QAAQ,CAACgB,YAAY,iCAAiC,CAAChB,EAAG,QAAQ,CAACA,EAAG,KAAK,CAACA,EAAG,KAAK,CAACF,EAAImB,GAAG,IAAInB,EAAIoB,GAAGpB,EAAIK,GAAG,qEAAuE,OAAOH,EAAG,KAAK,CAACA,EAAG,MAAM,CAACgB,YAAY,UAAU,CAAChB,EAAG,SAAS,CAACmB,WAAW,CAAC,CAACC,KAAK,QAAQC,QAAQ,UAAUC,MAAOxB,EAAIiB,gBAAgBQ,SAAUC,WAAW,6BAA6Bd,GAAG,CAAC,OAAS,SAASe,GAAQ,IAAIC,EAAgBC,MAAMC,UAAUC,OAAOC,KAAKL,EAAOM,OAAOC,SAAQ,SAASC,GAAG,OAAOA,EAAEC,YAAWC,KAAI,SAASF,GAAG,IAAIG,EAAM,WAAYH,EAAIA,EAAEI,OAASJ,EAAEX,MAAM,OAAOc,KAAOtC,EAAIwC,KAAKxC,EAAIiB,gBAAiB,WAAYU,EAAOM,OAAOQ,SAAWb,EAAgBA,EAAc,OAAO,CAAC1B,EAAG,SAAS,CAACwC,SAAS,CAAC,MAAQ,OAAO,SAA4C,SAAjC1C,EAAIiB,gBAAgBQ,WAAsB,CAACzB,EAAImB,GAAG,IAAInB,EAAIoB,GAAGpB,EAAIK,GAAG,mEAAqE,OAAOH,EAAG,SAAS,CAACwC,SAAS,CAAC,MAAQ,YAAY,SAA4C,cAAjC1C,EAAIiB,gBAAgBQ,WAA2B,CAACzB,EAAImB,GAAG,IAAInB,EAAIoB,GAAGpB,EAAIK,GAAG,gEAAkE,OAAOH,EAAG,SAAS,CAACwC,SAAS,CAAC,MAAQ,WAAW,SAA4C,aAAjC1C,EAAIiB,gBAAgBQ,WAA0B,CAACzB,EAAImB,GAAG,IAAInB,EAAIoB,GAAGpB,EAAIK,GAAG,+DAAiE,eAAeH,EAAG,KAAK,CAACA,EAAG,KAAK,CAACF,EAAImB,GAAG,IAAInB,EAAIoB,GAAGpB,EAAIK,GAAG,oEAAsE,OAAOH,EAAG,KAAK,CAACA,EAAG,QAAQ,CAACmB,WAAW,CAAC,CAACC,KAAK,QAAQC,QAAQ,UAAUC,MAAOxB,EAAIiB,gBAAgB0B,KAAMjB,WAAW,yBAAyBR,YAAY,QAAQd,MAAM,CAAC,KAAO,QAAQsC,SAAS,CAAC,MAAS1C,EAAIiB,gBAAgB0B,MAAO/B,GAAG,CAAC,MAAQ,SAASe,GAAQ,OAAIA,EAAOiB,KAAKC,QAAQ,QAAQ7C,EAAI8C,GAAGnB,EAAOoB,QAAQ,QAAQ,GAAGpB,EAAOZ,IAAI,SAAgB,KAAYf,EAAIU,gBAAgBsC,MAAM,KAAMC,YAAY,MAAQ,SAAStB,GAAWA,EAAOM,OAAOiB,WAAiBlD,EAAIwC,KAAKxC,EAAIiB,gBAAiB,OAAQU,EAAOM,OAAOT,mBAAmBxB,EAAImD,OAAOC,OAAM,MAAS,CAAClD,EAAG,WAAW,CAACmD,KAAK,gBAAgB,IAEp+DC,EAAkB,G,sLC6FtBC,EAAA,+DAEe,GACfC,WAAA,CACAD,WAGAE,MAAA,CACA9C,UAAA,CACAiC,KAAAc,QACAC,SAAA,GAGAlD,cAAA,CACAmC,KAAAgB,SACAC,UAAA,IAIAC,KAAA,WACA,OACAxD,UAAA,EACAC,eAAA,EACAU,gBAAA,CACA0B,KAAA,WACAlB,SAAA,UAKAsC,SAAAC,8BAAA,GACAC,eAAA,yCAEAC,SAAA,WACA,IAAAC,EAAA,KAAAlD,gBAAA0B,KAAAyB,QAAA,oBAAAC,OACA,WAAAF,GAGAG,iBAAA,WACA,oBAAArD,gBAAAQ,UAGA8C,WAAA,WACA,IAAAC,EAAA,wDACAC,EAAAC,KAAAC,MAAAD,KAAAE,UAAA,KAAA3D,gBAAA0B,OAEA,OAAA6B,EAAAK,KAAAJ,KACAA,EAAAK,SAAA,QACAL,EAAAK,SAAA,MAGAtE,kBAAA,WACA,YAAA0D,WAAA,KAAAI,mBAAA,KAAAC,YAAA,KAAAjE,YAIAyE,QAAA,aAEAC,QAAAhB,8BAAA,GACAiB,eAAA,4CAEAvE,gBAAA,eAAAwE,EAAA,KACA,SAAA1E,kBAAA,CAEA,IAAA2E,EAAA,KACAA,EAAA7E,UAAA,EAEA,IAAA8E,EAAAV,KAAAC,MAAAD,KAAAE,UAAAO,EAAAC,cAGA,GAFAD,EAAAlE,gBAAA0B,KAAAwC,EAAAE,iBAAAC,uBAAAH,EAAAlE,gBAAA0B,QAEAwC,EAAAlE,gBAAA0B,KAGA,OAFAwC,EAAA5E,eAAA,OACA4E,EAAA7E,UAAA,GAGAiF,OAAAP,QACAtE,gBAAAyE,EAAAC,YAAAI,IAAAL,EAAAlE,iBACAwE,MAAA,SAAAC,GACA,MAAAA,EAAAC,SACAP,EAAAQ,cAAAC,KAAAH,EAAA5B,MACAqB,EAAAW,eAAAV,GAEAW,OAAAC,MAAA,aACApD,KAAA,OACAqD,QACAd,EAAAlE,gBAAA0B,KACAuC,EAAA7E,GAAA,qEAKA6E,EAAAzE,oBAGAyF,OAAA,SAAAC,GACAhB,EAAA5E,eAAA,KAEA6F,SAAA,WACAjB,EAAA7E,UAAA,OAIA+E,iBAAA,SAAAgB,GAEA,GADAA,IAAAhC,QACAgC,EAAA,SAEAA,IAAAjC,QAAA,6BAEAiC,IAAAjC,QAAA,qBAEAiC,EAAA,WAAAA,EAEA,IAAAC,EAAAD,EAAAE,MAAA,GACA,qBAAA1B,KAAAyB,GAEAD,EAFA,OClN4W,I,wBCQxWG,EAAY,eACd,EACAzG,EACAuD,GACA,EACA,KACA,WACA,MAIa,aAAAkD,E","file":"js/chunk-7a7b45f4.js?id=9eb0165440e594957b90","sourcesContent":["export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalAddExternalLink.vue?vue&type=style&index=0&id=5f56c1a4&prod&lang=scss&scoped=true\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ui-component-modal',{attrs:{\"modalTitle\":_vm.$t(`Components.Reservation.ModalAddExternalLink.Modal_Title`),\"isSaving\":_vm.isSaving,\"isSavingError\":_vm.isSavingError,\"disableSaveButton\":_vm.disableSaveButton,\"hideFooterButtons\":_vm.isSavingError,\"onClickCancel\":_vm.onClickCancel,\"onClickSave\":_vm.addExternalLink,\"showModal\":_vm.showModal},on:{\"closeModal\":_vm.onClickCancel},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_c('Message',{attrs:{\"message\":_vm.$t(\n          'Components.Reservation.ModalAddExternalLink.Message_ExternalLinkInfo'\n        )}}),(_vm.newExternalLink)?_c('table',{staticClass:\"table is-fullwidth is-striped\"},[_c('tbody',[_c('tr',[_c('td',[_vm._v(\" \"+_vm._s(_vm.$t( `Components.Reservation.ModalAddExternalLink.Label_AddNewLinkType` ))+\" \")]),_c('td',[_c('div',{staticClass:\"select\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newExternalLink.LinkType),expression:\"newExternalLink.LinkType\"}],on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.newExternalLink, \"LinkType\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},[_c('option',{domProps:{\"value\":'None',\"selected\":_vm.newExternalLink.LinkType === 'None'}},[_vm._v(\" \"+_vm._s(_vm.$t( `Components.Reservation.ModalAddExternalLink.Please_select_type` ))+\" \")]),_c('option',{domProps:{\"value\":'VideoCall',\"selected\":_vm.newExternalLink.LinkType === 'VideoCall'}},[_vm._v(\" \"+_vm._s(_vm.$t( `Components.Reservation.ModalAddExternalLink.Label_VideoCall` ))+\" \")]),_c('option',{domProps:{\"value\":'Document',\"selected\":_vm.newExternalLink.LinkType === 'Document'}},[_vm._v(\" \"+_vm._s(_vm.$t( `Components.Reservation.ModalAddExternalLink.Label_Document` ))+\" \")])])])])]),_c('tr',[_c('td',[_vm._v(\" \"+_vm._s(_vm.$t( `Components.Reservation.ModalAddExternalLink.Label_AddNewLinkUrl` ))+\" \")]),_c('td',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newExternalLink.Link),expression:\"newExternalLink.Link\"}],staticClass:\"input\",attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.newExternalLink.Link)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.addExternalLink.apply(null, arguments)},\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.newExternalLink, \"Link\", $event.target.value)}}})])])])]):_vm._e()]},proxy:true}])},[_c('template',{slot:\"modalTitle\"})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <ui-component-modal\n    :modalTitle=\"$t(`Components.Reservation.ModalAddExternalLink.Modal_Title`)\"\n    :isSaving=\"isSaving\"\n    :isSavingError=\"isSavingError\"\n    :disableSaveButton=\"disableSaveButton\"\n    :hideFooterButtons=\"isSavingError\"\n    :onClickCancel=\"onClickCancel\"\n    :onClickSave=\"addExternalLink\"\n    :showModal=\"showModal\"\n    @closeModal=\"onClickCancel\"\n  >\n    <template slot=\"modalTitle\"></template>\n    <template v-slot:content>\n      <Message :message=\"\n          $t(\n            'Components.Reservation.ModalAddExternalLink.Message_ExternalLinkInfo'\n          )\n        \" />\n      <table\n        v-if=\"newExternalLink\"\n        class=\"table is-fullwidth is-striped\"\n      >\n        <tbody>\n          <tr>\n            <td>\n              {{\n                $t(\n                  `Components.Reservation.ModalAddExternalLink.Label_AddNewLinkType`\n                )\n              }}\n            </td>\n            <td>\n              <div class=\"select\">\n                <select v-model=\"newExternalLink.LinkType\">\n                  <option\n                    :value=\"'None'\"\n                    :selected=\"newExternalLink.LinkType === 'None'\"\n                  >\n                    {{\n                    $t(\n                      `Components.Reservation.ModalAddExternalLink.Please_select_type`\n                    )\n                  }}\n                  </option>\n                  <option\n                    :value=\"'VideoCall'\"\n                    :selected=\"newExternalLink.LinkType === 'VideoCall'\"\n                  >\n                    {{\n                    $t(\n                      `Components.Reservation.ModalAddExternalLink.Label_VideoCall`\n                    )\n                  }}\n                  </option>\n                  <option\n                    :value=\"'Document'\"\n                    :selected=\"newExternalLink.LinkType === 'Document'\"\n                  >\n                    {{\n                    $t(\n                      `Components.Reservation.ModalAddExternalLink.Label_Document`\n                    )\n                  }}\n                  </option>\n                </select>\n              </div>\n            </td>\n          </tr>\n          <tr>\n            <td>\n              {{\n                $t(\n                  `Components.Reservation.ModalAddExternalLink.Label_AddNewLinkUrl`\n                )\n              }}\n            </td>\n            <td>\n              <input\n                type=\"text\"\n                class=\"input\"\n                v-model=\"newExternalLink.Link\"\n                @keyup.enter=\"addExternalLink\"\n              />\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </template>\n  </ui-component-modal>\n</template>\n\n<script>\nimport { mapState, mapMutations } from 'vuex'\nimport { EventBus } from '@/eventbus/event-bus'\nimport reservationProvider from '@/providers/reservation'\nimport { removeXSS } from '../../utils/stringHelper'\nconst Message = () => import('@/components/UI/Message')\n\nexport default {\n  components: {\n    Message,\n  },\n\n  props: {\n    showModal: {\n      type: Boolean,\n      default: false,\n    },\n\n    onClickCancel: {\n      type: Function,\n      required: true,\n    },\n  },\n\n  data() {\n    return {\n      isSaving: false,\n      isSavingError: false,\n      newExternalLink: {\n        Link: 'https://',\n        LinkType: 'None',\n      },\n    }\n  },\n\n  computed: {\n    ...mapState('reservationStore', ['reservation']),\n\n    urlEmpty() {\n      const link = this.newExternalLink.Link.replace(/^https?:\\/\\//i, '').trim();\n      return link === '';\n    },\n\n    linkTypeSelected() {\n      return this.newExternalLink.LinkType !== 'None'\n    },\n\n    isUrlValid() {\n      let matcher = /^(?:\\w+:)?\\/\\/([^\\s\\.]+\\.\\S{2}|localhost[\\:?\\d]*)\\S*$/\n      let parsedLink = JSON.parse(JSON.stringify(this.newExternalLink.Link))\n\n      return matcher.test(parsedLink) &&\n        !parsedLink.includes('..') &&\n        !parsedLink.includes(',')\n    },\n\n    disableSaveButton() {\n      return this.urlEmpty || !this.linkTypeSelected || !this.isUrlValid || this.isSaving\n    }\n  },\n\n  created() { },\n\n  methods: {\n    ...mapMutations('reservationStore', ['setReservation']),\n\n    addExternalLink() {\n      if (this.disableSaveButton) { return }\n\n      let self = this\n      self.isSaving = true\n\n      let reservation = JSON.parse(JSON.stringify(self.reservation))\n      self.newExternalLink.Link = self.checkURLforHTTPS(removeXSS(self.newExternalLink.Link))\n\n      if (!self.newExternalLink.Link) {\n        self.isSavingError = true\n        self.isSaving = false\n        return\n      }\n      reservationProvider.methods\n        .addExternalLink(self.reservation.Key, self.newExternalLink)\n        .then((response) => {\n          if (response.status === 200) {\n            reservation.ExternalLinks.push(response.data)\n            self.setReservation(reservation)\n\n            EventBus.$emit('showToast', {\n              type: 'info',\n              message:\n                self.newExternalLink.Link +\n                this.$t(\n                  `Components.Reservation.ModalAddExternalLink.Message_LinkIsAdded`\n                ),\n            })\n\n            this.onClickCancel()\n          }\n        })\n        .catch((error) => {\n          self.isSavingError = true\n        })\n        .finally(() => {\n          self.isSaving = false\n        })\n    },\n\n    checkURLforHTTPS(url) {\n      url = url.trim();\n      if (!url) return \"\";\n\n      url = url.replace(/^(https?:?\\/{0,10})+/gi, \"\");\n\n      url = url.replace(/^[^a-zA-Z0-9]+/, \"\");\n\n      url = \"https://\" + url;\n\n      const afterHttps = url.slice(8);\n      if (!/^[a-zA-Z0-9]/.test(afterHttps)) return \"\";\n\n      return url;\n    },\n  },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.table {\n  tr {\n    td:nth-child(1) {\n      padding-top: 14px;\n    }\n  }\n}\n</style>","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalAddExternalLink.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalAddExternalLink.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ModalAddExternalLink.vue?vue&type=template&id=5f56c1a4&scoped=true\"\nimport script from \"./ModalAddExternalLink.vue?vue&type=script&lang=js\"\nexport * from \"./ModalAddExternalLink.vue?vue&type=script&lang=js\"\nimport style0 from \"./ModalAddExternalLink.vue?vue&type=style&index=0&id=5f56c1a4&prod&lang=scss&scoped=true\"\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  \"5f56c1a4\",\n  null\n  \n)\n\nexport default component.exports"],"sourceRoot":""}