{"version":3,"sources":["webpack:///./node_modules/core-js/modules/es.string.includes.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack:///./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack:///./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack:///./src/providers/availability.js","webpack:///./src/views/Frontend/Book/BookSpaceDirect.vue","webpack:///src/views/Frontend/Book/BookSpaceDirect.vue","webpack:///./src/views/Frontend/Book/BookSpaceDirect.vue?798d","webpack:///./src/views/Frontend/Book/BookSpaceDirect.vue?0e65","webpack:///./node_modules/core-js/internals/not-a-regexp.js","webpack:///./src/providers/schedule.js","webpack:///./node_modules/core-js/internals/correct-is-regexp-logic.js","webpack:///./src/views/Frontend/Book/BookSpaceDirect.vue?667e"],"names":["$","uncurryThis","notARegExp","requireObjectCoercible","toString","correctIsRegExpLogic","stringIndexOf","indexOf","target","proto","forced","includes","searchString","this","arguments","length","undefined","_arrayWithoutHoles","r","Array","isArray","arrayLikeToArray","_iterableToArray","Symbol","iterator","from","_nonIterableSpread","TypeError","_toConsumableArray","arrayWithoutHoles","iterableToArray","unsupportedIterableToArray","nonIterableSpread","getAvailabilityToken","getValidateAvailabilityToken","copyReservationCheckAvailabilityToken","methods","getAvailability","startDate","endDate","channelId","countryId","LocationId","searchTerm","meetingtypeId","seats","startTime","endTime","_arguments","_asyncToGenerator","_regenerator","m","_callee","settingId","spaceId","voucherId","tenderId","widgetId","language","isEmployee","response","w","_context","n","cancel","axios","CancelToken","source","get","concat","process","cancelToken","token","params","q","channel","country","location","meetingtype","setting","space","isBackend","voucher","tender","headers","apiToken","profileToken","store","getters","v","a","checkSpaceTimeAvailability","_callee2","_context2","post","JSON","stringify","copyReservationCheckAvailability","reservationId","_callee3","_context3","selectSpace","searchId","locationId","hash","_arguments2","_callee4","reservationType","criteria","_context4","render","_vm","_c","_self","staticClass","isInitializing","loadingError","attrs","scopedSlots","_u","key","fn","_v","_s","$t","proxy","booking","selectedDateLabel","selectedStartMinutes","selectedEndMinutes","isFinalized","isFinalizing","finalizeError","on","finalizeBooking","resetBooking","minSeats","maxSeats","Name","selectedDate","onDateSelected","model","value","callback","$$v","expression","_e","isLoadingSchedule","schedule","daySchedule","reservedItems","isToday","onTimeSelected","hasTimeSelection","isClosed","isSearching","availableLocation","warnings","_l","warning","index","publicSettings","availableSettingIds","isAvailable","showPrices","availableSpace","bookingError","class","isBooking","canBook","bookSpace","showAuthModal","hideAuthModal","staticRenderFns","name","components","BookingConfirmation","BookingDateField","BookingSeatsField","Message","ModalAuthentication","PriceSummary","SettingPicker","SpaceDetails","TimeSlotPicker","props","data","availability","availabilityTimer","Date","spaceKey","$route","widgetKey","widgetState","computed","_objectSpread","mapGetters","isLoggedIn","$i18n","locale","ChannelId","ShowPrices","Settings","settings","filter","s","IsPublic","Math","min","apply","map","MinSeats","max","MaxSeats","selectedDateIso","format","$options","filters","dateFormat","_this","OpeningHours","find","oh","parseISO","NrOfLocations","MaxMinutes","MinMinutes","_this2","Spaces","spaceSchedule","SpaceId","Id","Items","i","StartDate","Locations","Warnings","_this3","spaces","SpaceAvailable","SettingId","Boolean","IsAvailable","watch","val","delayedAvailabilityCheck","created","initialize","beforeDestroy","clearTimeout","_this4","_yield$Promise$all","_yield$Promise$all2","widgetResponse","spaceResponse","meetingtypeIds","p","Promise","all","widgetProvider","getWidgetState","spaceProvider","getSpaceByKey","_slicedToArray","Meetingtypes","MeetingtypeId","getSchedule","f","_this5","_t2","scheduleProvider","status","isCancel","date","changed","_ref","startMinutes","endMinutes","_this6","setTimeout","checkAvailability","_this7","availabilityProvider","then","ensureSettingSelection","catch","error","_this8","current","firstAvailable","_this9","SearchId","Hash","finally","_this0","_ref2","hasAgreed","Key","reservationProvider","finalizeReservation","TermsAgreement","HasAgreed","component","isRegExp","$TypeError","module","exports","it","getScheduleToken","wellKnownSymbol","MATCH","METHOD_NAME","regexp","error1","error2"],"mappings":"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","file":"js/bookSpaceDirect.js?id=71420e4b75674763f67a","sourcesContent":["'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\nvar stringIndexOf = uncurryThis(''.indexOf);\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n  includes: function includes(searchString /* , position = 0 */) {\n    return !!~stringIndexOf(\n      toString(requireObjectCoercible(this)),\n      toString(notARegExp(searchString)),\n      arguments.length > 1 ? arguments[1] : undefined\n    );\n  }\n});\n","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _arrayWithoutHoles(r) {\n  if (Array.isArray(r)) return arrayLikeToArray(r);\n}\nexport { _arrayWithoutHoles as default };","function _iterableToArray(r) {\n  if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nexport { _iterableToArray as default };","function _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableSpread as default };","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nfunction _toConsumableArray(r) {\n  return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();\n}\nexport { _toConsumableArray as default };","import axios from 'axios'\nimport store from '../store'\n\nlet getAvailabilityToken = null\nlet getValidateAvailabilityToken = null\nlet copyReservationCheckAvailabilityToken = null\n\nexport default {\n  methods: {\n    async getAvailability(\n      startDate,\n      endDate,\n      channelId,\n      countryId,\n      LocationId,\n      searchTerm,\n      meetingtypeId,\n      seats,\n      startTime,\n      endTime,\n      settingId = 0,\n      spaceId = 0,\n      voucherId = 0,\n      tenderId = 0,\n      widgetId = -100,\n      language = 'en',\n      isEmployee = false\n    ) {\n      if (getAvailabilityToken) {\n        getAvailabilityToken.cancel('Canceled by new request.')\n      }\n      getAvailabilityToken = axios.CancelToken.source()\n\n      const response = await axios.get(\n        `${process.env.VUE_APP_API_BASE_URL}/api/v2/availability`,\n        {\n          cancelToken: getAvailabilityToken.token,\n          params: {\n            q: searchTerm,\n            channel: channelId,\n            country: countryId,\n            location: LocationId,\n            meetingtype: meetingtypeId,\n            seats: seats,\n            startDate: startDate,\n            startTime: startTime,\n            endDate: endDate,\n            endTime: endTime,\n            setting: settingId,\n            space: spaceId,\n            isBackend: isEmployee,\n            voucher: voucherId,\n            tender: tenderId,\n            widgetId: widgetId,\n            language: language,\n          },\n          headers: {\n            'Content-type': 'application/json',\n            apiToken: process.env.VUE_APP_API_KEY,\n            profileToken: store.getters['profileStore/getProfileToken'],\n          },\n        }\n      )\n      return response\n    },\n\n    async checkSpaceTimeAvailability(space) {\n      if (getValidateAvailabilityToken) {\n        getValidateAvailabilityToken.cancel()\n      }\n      getValidateAvailabilityToken = axios.CancelToken.source()\n\n      const response = await axios.post(\n        `${process.env.VUE_APP_API_BASE_URL}/api/v1/availability/time/check`,\n        JSON.stringify(space),\n        {\n          cancelToken: getValidateAvailabilityToken.token,\n\n          headers: {\n            'Content-type': 'application/json',\n            apiToken: process.env.VUE_APP_API_KEY,\n            profileToken: store.getters['profileStore/getProfileToken'],\n          },\n        }\n      )\n      return response\n    },\n\n\n    async copyReservationCheckAvailability(reservationId, startDate, endDate) {\n      if (copyReservationCheckAvailabilityToken) {\n        copyReservationCheckAvailabilityToken.cancel('Canceled by new request.')\n      }\n      copyReservationCheckAvailabilityToken = axios.CancelToken.source()\n\n      const response = await axios.get(\n        `${process.env.VUE_APP_API_BASE_URL}/api/v1/availability/copy/check`,\n        {\n          cancelToken: copyReservationCheckAvailabilityToken.token,\n          params: {\n            endDate: endDate,\n            reservationId: reservationId,\n            startDate: startDate,\n          },\n          headers: {\n            'Content-type': 'application/json',\n            apiToken: process.env.VUE_APP_API_KEY,\n            profileToken: store.getters['profileStore/getProfileToken'],\n          },\n        }\n      )\n      return response\n    },\n\n    async selectSpace(searchId, locationId, hash, reservationType = 'Draft') {\n      let criteria = {\n        searchId,\n        locationId,\n        reservationType,\n        hash,\n      }\n\n      const response = await axios.post(\n        `${process.env.VUE_APP_API_RESERVATION_URL}/api/reservation/availability/select`,\n        criteria,\n        {\n          headers: {\n            'Content-type': 'application/json',\n            apiToken: process.env.VUE_APP_API_KEY,\n            profileToken: store.getters['profileStore/getProfileToken'],\n          },\n        }\n      )\n      return response\n    },\n  },\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"section\"},[_c('div',{staticClass:\"container\"},[(_vm.isInitializing)?_c('ui-loader'):(_vm.loadingError)?_c('Message',{attrs:{\"type\":\"is-danger\"},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.$t('Frontend.Views.BookSpaceDirect.Text_LoadingError'))+\" \")]},proxy:true}])}):(_vm.space)?[(_vm.booking)?_c('BookingConfirmation',{attrs:{\"booking\":_vm.booking,\"space\":_vm.space,\"dateLabel\":_vm.selectedDateLabel,\"startMinutes\":_vm.selectedStartMinutes,\"endMinutes\":_vm.selectedEndMinutes,\"seats\":_vm.seats,\"meetingtypeId\":_vm.meetingtypeId,\"isFinalized\":_vm.isFinalized,\"isFinalizing\":_vm.isFinalizing,\"finalizeError\":_vm.finalizeError},on:{\"finalize\":_vm.finalizeBooking,\"book-another\":_vm.resetBooking}}):_c('div',{staticClass:\"columns is-multiline\"},[_c('div',{staticClass:\"column is-two-thirds\"},[_c('SpaceDetails',{attrs:{\"space\":_vm.space,\"minSeats\":_vm.minSeats,\"maxSeats\":_vm.maxSeats}})],1),_c('div',{staticClass:\"column\"},[_c('div',{staticClass:\"box booking-box\"},[_c('h2',{staticClass:\"title is-4\"},[_vm._v(\" \"+_vm._s(_vm.$t('Frontend.Views.BookSpaceDirect.Title_BookSpace', { space: _vm.space.Name, }))+\" \")]),_c('BookingDateField',{attrs:{\"value\":_vm.selectedDate},on:{\"input\":_vm.onDateSelected}}),(_vm.meetingtypeId === 1)?_c('BookingSeatsField',{attrs:{\"minSeats\":_vm.minSeats,\"maxSeats\":_vm.maxSeats},model:{value:(_vm.seats),callback:function ($$v) {_vm.seats=$$v},expression:\"seats\"}}):_vm._e(),(_vm.isLoadingSchedule)?_c('ui-loader'):(_vm.schedule)?_c('TimeSlotPicker',{attrs:{\"daySchedule\":_vm.daySchedule,\"reservedItems\":_vm.reservedItems,\"isToday\":_vm.isToday,\"startMinutes\":_vm.selectedStartMinutes,\"endMinutes\":_vm.selectedEndMinutes},on:{\"select\":_vm.onTimeSelected}}):_vm._e(),(_vm.hasTimeSelection && !_vm.isClosed)?_c('div',[(_vm.isSearching)?_c('ui-loader'):(_vm.availableLocation)?[(_vm.warnings.length)?_c('Message',{attrs:{\"type\":\"is-danger\"},scopedSlots:_vm._u([{key:\"content\",fn:function(){return _vm._l((_vm.warnings),function(warning,index){return _c('div',{key:index},[_vm._v(\" \"+_vm._s(_vm.$t('AvailabilityWarnings.warning_' + warning))+\" \")])})},proxy:true}],null,false,1913357944)}):_vm._e(),(\n                    _vm.meetingtypeId === 1 &&\n                    _vm.publicSettings.length > 1 &&\n                    !_vm.warnings.length\n                  )?_c('SettingPicker',{attrs:{\"settings\":_vm.publicSettings,\"availableSettingIds\":_vm.availableSettingIds},model:{value:(_vm.settingId),callback:function ($$v) {_vm.settingId=$$v},expression:\"settingId\"}}):_vm._e(),(_vm.isAvailable && _vm.showPrices && _vm.availableSpace)?_c('PriceSummary',{attrs:{\"availableSpace\":_vm.availableSpace,\"meetingtypeId\":_vm.meetingtypeId}}):_vm._e(),(!_vm.isAvailable && !_vm.warnings.length)?_c('Message',{attrs:{\"type\":\"is-warning\"},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.$t('Frontend.Views.BookSpaceDirect.Text_NotAvailable'))+\" \")]},proxy:true}],null,false,832853816)}):_vm._e()]:_vm._e()],2):_vm._e(),(_vm.bookingError)?_c('Message',{attrs:{\"type\":\"is-danger\"},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.$t('Frontend.Views.BookSpaceDirect.Text_BookingError'))+\" \")]},proxy:true}],null,false,2191788325)}):_vm._e(),_c('button',{staticClass:\"button is-primary is-medium is-fullwidth\",class:{ 'is-loading': _vm.isBooking },attrs:{\"disabled\":!_vm.canBook},on:{\"click\":_vm.bookSpace}},[_vm._v(\" \"+_vm._s(_vm.$t('Frontend.Views.BookSpaceDirect.Button_Book'))+\" \")])],1)])]),(_vm.showAuthModal)?_c('ModalAuthentication',{attrs:{\"showModal\":_vm.showAuthModal,\"onClickCancel\":_vm.hideAuthModal,\"modalTitle\":_vm.$t('Frontend.Views.BookSpaceDirect.Title_LoginToBook'),\"channelId\":_vm.channelId}}):_vm._e()]:_c('Message',{attrs:{\"type\":\"is-danger\"},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.$t('Frontend.Views.BookSpaceDirect.Text_SpaceNotFound'))+\" \")]},proxy:true}])})],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div class=\"section\">\n    <div class=\"container\">\n      <ui-loader v-if=\"isInitializing\" />\n\n      <Message v-else-if=\"loadingError\" type=\"is-danger\">\n        <template v-slot:content>\n          {{ $t('Frontend.Views.BookSpaceDirect.Text_LoadingError') }}\n        </template>\n      </Message>\n\n      <template v-else-if=\"space\">\n        <BookingConfirmation\n          v-if=\"booking\"\n          :booking=\"booking\"\n          :space=\"space\"\n          :dateLabel=\"selectedDateLabel\"\n          :startMinutes=\"selectedStartMinutes\"\n          :endMinutes=\"selectedEndMinutes\"\n          :seats=\"seats\"\n          :meetingtypeId=\"meetingtypeId\"\n          :isFinalized=\"isFinalized\"\n          :isFinalizing=\"isFinalizing\"\n          :finalizeError=\"finalizeError\"\n          @finalize=\"finalizeBooking\"\n          @book-another=\"resetBooking\"\n        />\n\n        <div v-else class=\"columns is-multiline\">\n          <!-- LEFT COLUMN: SPACE PRESENTATION -->\n          <div class=\"column is-two-thirds\">\n            <SpaceDetails\n              :space=\"space\"\n              :minSeats=\"minSeats\"\n              :maxSeats=\"maxSeats\"\n            />\n          </div>\n\n          <!-- RIGHT COLUMN: BOOKING PANEL -->\n          <div class=\"column\">\n            <div class=\"box booking-box\">\n              <h2 class=\"title is-4\">\n                {{\n                  $t('Frontend.Views.BookSpaceDirect.Title_BookSpace', {\n                    space: space.Name,\n                  })\n                }}\n              </h2>\n\n              <BookingDateField\n                :value=\"selectedDate\"\n                @input=\"onDateSelected\"\n              />\n\n              <BookingSeatsField\n                v-if=\"meetingtypeId === 1\"\n                v-model=\"seats\"\n                :minSeats=\"minSeats\"\n                :maxSeats=\"maxSeats\"\n              />\n\n              <!-- TIME SLOTS -->\n              <ui-loader v-if=\"isLoadingSchedule\" />\n              <TimeSlotPicker\n                v-else-if=\"schedule\"\n                :daySchedule=\"daySchedule\"\n                :reservedItems=\"reservedItems\"\n                :isToday=\"isToday\"\n                :startMinutes=\"selectedStartMinutes\"\n                :endMinutes=\"selectedEndMinutes\"\n                @select=\"onTimeSelected\"\n              />\n\n              <!-- AVAILABILITY RESULT -->\n              <div v-if=\"hasTimeSelection && !isClosed\">\n                <ui-loader v-if=\"isSearching\" />\n                <template v-else-if=\"availableLocation\">\n                  <Message v-if=\"warnings.length\" type=\"is-danger\">\n                    <template v-slot:content>\n                      <div v-for=\"(warning, index) in warnings\" :key=\"index\">\n                        {{ $t('AvailabilityWarnings.warning_' + warning) }}\n                      </div>\n                    </template>\n                  </Message>\n\n                  <SettingPicker\n                    v-if=\"\n                      meetingtypeId === 1 &&\n                      publicSettings.length > 1 &&\n                      !warnings.length\n                    \"\n                    v-model=\"settingId\"\n                    :settings=\"publicSettings\"\n                    :availableSettingIds=\"availableSettingIds\"\n                  />\n\n                  <PriceSummary\n                    v-if=\"isAvailable && showPrices && availableSpace\"\n                    :availableSpace=\"availableSpace\"\n                    :meetingtypeId=\"meetingtypeId\"\n                  />\n\n                  <Message\n                    v-if=\"!isAvailable && !warnings.length\"\n                    type=\"is-warning\"\n                  >\n                    <template v-slot:content>\n                      {{\n                        $t('Frontend.Views.BookSpaceDirect.Text_NotAvailable')\n                      }}\n                    </template>\n                  </Message>\n                </template>\n              </div>\n\n              <Message v-if=\"bookingError\" type=\"is-danger\">\n                <template v-slot:content>\n                  {{ $t('Frontend.Views.BookSpaceDirect.Text_BookingError') }}\n                </template>\n              </Message>\n\n              <button\n                class=\"button is-primary is-medium is-fullwidth\"\n                :class=\"{ 'is-loading': isBooking }\"\n                :disabled=\"!canBook\"\n                @click=\"bookSpace\"\n              >\n                {{ $t('Frontend.Views.BookSpaceDirect.Button_Book') }}\n              </button>\n            </div>\n          </div>\n        </div>\n\n        <ModalAuthentication\n          v-if=\"showAuthModal\"\n          :showModal=\"showAuthModal\"\n          :onClickCancel=\"hideAuthModal\"\n          :modalTitle=\"$t('Frontend.Views.BookSpaceDirect.Title_LoginToBook')\"\n          :channelId=\"channelId\"\n        />\n      </template>\n\n      <Message v-else type=\"is-danger\">\n        <template v-slot:content>\n          {{ $t('Frontend.Views.BookSpaceDirect.Text_SpaceNotFound') }}\n        </template>\n      </Message>\n    </div>\n  </div>\n</template>\n\n<script>\nimport axios from 'axios'\nimport { mapGetters } from 'vuex'\nimport availabilityProvider from '@/providers/availability'\nimport reservationProvider from '@/providers/reservation'\nimport scheduleProvider from '@/providers/schedule'\nimport spaceProvider from '@/providers/space'\nimport widgetProvider from '@/providers/widget'\nimport { format, parseISO } from 'date-fns'\n\nexport default {\n  name: 'Book-Space',\n\n  components: {\n    BookingConfirmation: () =>\n      import('@/components/FrontEnd/BookSpaceDirect/BookingConfirmation'),\n    BookingDateField: () =>\n      import('@/components/FrontEnd/BookSpaceDirect/BookingDateField'),\n    BookingSeatsField: () =>\n      import('@/components/FrontEnd/BookSpaceDirect/BookingSeatsField'),\n    Message: () => import('@/components/UI/Message'),\n    ModalAuthentication: () =>\n      import('@/components/AccountControls/ModalAuthentication'),\n    PriceSummary: () =>\n      import('@/components/FrontEnd/BookSpaceDirect/PriceSummary'),\n    SettingPicker: () =>\n      import('@/components/FrontEnd/BookSpaceDirect/SettingPicker'),\n    SpaceDetails: () =>\n      import('@/components/FrontEnd/BookSpaceDirect/SpaceDetails'),\n    TimeSlotPicker: () =>\n      import('@/components/FrontEnd/BookSpaceDirect/TimeSlotPicker'),\n  },\n\n  props: {},\n\n  data() {\n    return {\n      availability: null,\n      availabilityTimer: null,\n      booking: null,\n      bookingError: false,\n      finalizeError: false,\n      isBooking: false,\n      isFinalized: false,\n      isFinalizing: false,\n      isInitializing: true,\n      isLoadingSchedule: false,\n      isSearching: false,\n      loadingError: false,\n      meetingtypeId: 1,\n      schedule: null,\n      seats: 1,\n      selectedDate: new Date(),\n      selectedEndMinutes: null,\n      selectedStartMinutes: null,\n      settingId: 0,\n      showAuthModal: false,\n      space: null,\n      spaceKey: this.$route.params.spaceKey,\n      widgetKey: this.$route.params.widgetKey,\n      widgetState: null,\n    }\n  },\n\n  computed: {\n    ...mapGetters({\n      isLoggedIn: 'profileStore/getIsLoggedIn',\n    }),\n\n    language() {\n      return this.$i18n.locale\n    },\n\n    locationId() {\n      return this.space ? this.space.LocationId : 0\n    },\n\n    channelId() {\n      return this.widgetState ? this.widgetState.ChannelId : 0\n    },\n\n    showPrices() {\n      return this.widgetState ? this.widgetState.ShowPrices !== false : true\n    },\n\n    publicSettings() {\n      if (!this.space || !this.space.Settings) return []\n\n      let settings = this.space.Settings.filter((s) => s.IsPublic)\n      return settings.length ? settings : this.space.Settings\n    },\n\n    minSeats() {\n      if (!this.publicSettings.length) return 1\n\n      return Math.min(...this.publicSettings.map((s) => s.MinSeats))\n    },\n\n    maxSeats() {\n      if (!this.publicSettings.length) return 0\n\n      return Math.max(...this.publicSettings.map((s) => s.MaxSeats))\n    },\n\n    selectedDateIso() {\n      return format(this.selectedDate, 'yyyy-MM-dd')\n    },\n\n    selectedDateLabel() {\n      return this.$options.filters.dateFormat(\n        this.selectedDate,\n        this.language,\n        'longDateFormat'\n      )\n    },\n\n    isToday() {\n      return this.selectedDateIso === format(new Date(), 'yyyy-MM-dd')\n    },\n\n    daySchedule() {\n      if (!this.schedule || !this.schedule.OpeningHours) return null\n\n      return (\n        this.schedule.OpeningHours.find(\n          (oh) =>\n            format(parseISO(oh.Date), 'yyyy-MM-dd') === this.selectedDateIso\n        ) ||\n        this.schedule.OpeningHours[0] ||\n        null\n      )\n    },\n\n    isClosed() {\n      return (\n        !this.daySchedule ||\n        this.daySchedule.NrOfLocations === 0 ||\n        this.daySchedule.MaxMinutes <= this.daySchedule.MinMinutes\n      )\n    },\n\n    /**\n     * Reservations already made for this space on the selected date\n     */\n    reservedItems() {\n      if (!this.schedule || !this.schedule.Spaces || !this.space) return []\n\n      let spaceSchedule = this.schedule.Spaces.find(\n        (s) => s.SpaceId === this.space.Id\n      )\n      if (!spaceSchedule || !spaceSchedule.Items) return []\n\n      return spaceSchedule.Items.filter(\n        (i) =>\n          format(parseISO(i.StartDate), 'yyyy-MM-dd') === this.selectedDateIso\n      )\n    },\n\n    hasTimeSelection() {\n      return (\n        this.selectedStartMinutes !== null &&\n        this.selectedEndMinutes !== null &&\n        this.selectedEndMinutes > this.selectedStartMinutes\n      )\n    },\n\n    availableLocation() {\n      return this.availability &&\n        this.availability.Locations &&\n        this.availability.Locations.length\n        ? this.availability.Locations[0]\n        : null\n    },\n\n    warnings() {\n      return this.availableLocation ? this.availableLocation.Warnings || [] : []\n    },\n\n    availableSpace() {\n      if (!this.availableLocation || !this.availableLocation.Spaces) return null\n\n      let spaces = this.availableLocation.Spaces.filter((s) => s.SpaceAvailable)\n      if (!spaces.length) return null\n\n      if (this.meetingtypeId === 1 && this.settingId > 0) {\n        return spaces.find((s) => s.SettingId === this.settingId) || null\n      }\n\n      return spaces[0]\n    },\n\n    availableSettingIds() {\n      if (!this.availableLocation || !this.availableLocation.Spaces) return []\n\n      return this.availableLocation.Spaces.filter(\n        (s) => s.SpaceAvailable\n      ).map((s) => s.SettingId)\n    },\n\n    isAvailable() {\n      return Boolean(\n        this.availableLocation &&\n          this.availableLocation.IsAvailable &&\n          this.availableSpace\n      )\n    },\n\n    canBook() {\n      return (\n        !this.isBooking &&\n        !this.isSearching &&\n        this.hasTimeSelection &&\n        this.isAvailable\n      )\n    },\n  },\n\n  watch: {\n    seats(val) {\n      if (typeof val !== 'number' || val < 1) return\n      this.delayedAvailabilityCheck()\n    },\n\n    selectedStartMinutes() {\n      this.delayedAvailabilityCheck()\n    },\n\n    selectedEndMinutes() {\n      this.delayedAvailabilityCheck()\n    },\n\n    /**\n     * Continue the booking as soon as the booker has logged in\n     * through the authentication modal\n     */\n    isLoggedIn(val) {\n      if (val && this.showAuthModal) {\n        this.showAuthModal = false\n        this.bookSpace()\n      }\n    },\n  },\n\n  created() {\n    this.initialize()\n  },\n\n  beforeDestroy() {\n    if (this.availabilityTimer) {\n      clearTimeout(this.availabilityTimer)\n    }\n  },\n\n  methods: {\n    async initialize() {\n      try {\n        const [widgetResponse, spaceResponse] = await Promise.all([\n          widgetProvider.methods.getWidgetState(this.widgetKey),\n          spaceProvider.methods.getSpaceByKey(this.spaceKey),\n        ])\n\n        this.widgetState = widgetResponse.data\n        this.space = spaceResponse.data\n\n        if (this.space.Meetingtypes && this.space.Meetingtypes.length) {\n          let meetingtypeIds = this.space.Meetingtypes.map(\n            (m) => m.MeetingtypeId\n          )\n          this.meetingtypeId = meetingtypeIds.includes(1)\n            ? 1\n            : meetingtypeIds[0]\n        }\n\n        this.seats = this.meetingtypeId === 1 ? this.minSeats : 1\n\n        await this.getSchedule()\n      } catch (error) {\n        this.loadingError = true\n      } finally {\n        this.isInitializing = false\n      }\n    },\n\n    async getSchedule() {\n      this.isLoadingSchedule = true\n      this.schedule = null\n      this.availability = null\n      this.selectedStartMinutes = null\n      this.selectedEndMinutes = null\n\n      try {\n        const response = await scheduleProvider.methods.getSchedule(\n          this.locationId,\n          this.selectedDateIso,\n          this.selectedDateIso,\n          this.meetingtypeId,\n          this.space.Id\n        )\n        if (response.status === 200) {\n          this.schedule = response.data\n        }\n      } catch (error) {\n        if (!axios.isCancel(error)) {\n          this.loadingError = true\n        }\n      } finally {\n        this.isLoadingSchedule = false\n      }\n    },\n\n    onDateSelected(date) {\n      if (!date) return\n\n      let changed = format(date, 'yyyy-MM-dd') !== this.selectedDateIso\n      this.selectedDate = date\n\n      if (changed) {\n        this.getSchedule()\n      }\n    },\n\n    onTimeSelected({ startMinutes, endMinutes }) {\n      this.selectedStartMinutes = startMinutes\n      this.selectedEndMinutes = endMinutes\n    },\n\n    delayedAvailabilityCheck() {\n      if (this.availabilityTimer) {\n        clearTimeout(this.availabilityTimer)\n      }\n      this.availabilityTimer = setTimeout(() => {\n        this.checkAvailability()\n      }, 300)\n    },\n\n    checkAvailability() {\n      if (!this.hasTimeSelection || this.isClosed) {\n        this.availability = null\n        return\n      }\n\n      this.bookingError = false\n      this.isSearching = true\n\n      availabilityProvider.methods\n        .getAvailability(\n          this.selectedDateIso,\n          this.selectedDateIso,\n          this.channelId,\n          0,\n          this.locationId,\n          '',\n          this.meetingtypeId,\n          this.meetingtypeId === 2 ? 1 : this.seats,\n          this.selectedStartMinutes,\n          this.selectedEndMinutes,\n          0,\n          this.space.Id,\n          0,\n          0,\n          this.widgetState && this.widgetState.Id ? this.widgetState.Id : -100,\n          this.language\n        )\n        .then((response) => {\n          this.availability = response.data\n          this.ensureSettingSelection()\n          this.isSearching = false\n        })\n        .catch((error) => {\n          if (!axios.isCancel(error)) {\n            this.availability = null\n            this.isSearching = false\n          }\n        })\n    },\n\n    /**\n     * Keep a valid configuration selected when the availability changes\n     */\n    ensureSettingSelection() {\n      if (this.meetingtypeId !== 1 || !this.availableLocation) return\n\n      let spaces = this.availableLocation.Spaces || []\n      let current = spaces.find(\n        (s) => s.SettingId === this.settingId && s.SpaceAvailable\n      )\n      if (!current) {\n        let firstAvailable = spaces.find((s) => s.SpaceAvailable)\n        this.settingId = firstAvailable ? firstAvailable.SettingId : 0\n      }\n    },\n\n    /**\n     * Create the reservation. The booker has to be logged in first:\n     * the reservation is created as a draft that expires unless it is\n     * finalized, and finalizing requires a profile and agreement to\n     * the booking terms.\n     */\n    bookSpace() {\n      if (!this.canBook || !this.availableSpace) return\n\n      if (!this.isLoggedIn) {\n        this.showAuthModal = true\n        return\n      }\n\n      this.bookingError = false\n      this.isBooking = true\n\n      availabilityProvider.methods\n        .selectSpace(\n          this.availableLocation.SearchId,\n          this.availableLocation.LocationId,\n          this.availableSpace.Hash\n        )\n        .then((response) => {\n          if (response.status === 200) {\n            this.booking = response.data\n          } else {\n            this.bookingError = true\n          }\n        })\n        .catch(() => {\n          this.bookingError = true\n        })\n        .finally(() => {\n          this.isBooking = false\n        })\n    },\n\n    /**\n     * Finalize the draft reservation so it no longer expires. Called\n     * from the confirmation screen once the booker has agreed to the\n     * booking terms.\n     */\n    finalizeBooking({ hasAgreed } = {}) {\n      if (!this.booking || !this.booking.Key || this.isFinalizing) return\n\n      this.finalizeError = false\n      this.isFinalizing = true\n\n      reservationProvider.methods\n        .finalizeReservation(this.booking.Key, {\n          TermsAgreement: { HasAgreed: hasAgreed === true },\n        })\n        .then((response) => {\n          if (response.status === 200) {\n            if (response.data) {\n              this.booking = response.data\n            }\n            this.isFinalized = true\n          } else {\n            this.finalizeError = true\n          }\n        })\n        .catch(() => {\n          this.finalizeError = true\n        })\n        .finally(() => {\n          this.isFinalizing = false\n        })\n    },\n\n    hideAuthModal() {\n      this.showAuthModal = false\n    },\n\n    /**\n     * Back to a fresh booking form. Reload the schedule so the slot\n     * that was just booked shows up as reserved.\n     */\n    resetBooking() {\n      this.booking = null\n      this.availability = null\n      this.finalizeError = false\n      this.isFinalized = false\n      this.getSchedule()\n    },\n  },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.booking-box {\n  position: sticky;\n  top: 1rem;\n}\n</style>\n","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!./BookSpaceDirect.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!./BookSpaceDirect.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./BookSpaceDirect.vue?vue&type=template&id=48e6eddf&scoped=true\"\nimport script from \"./BookSpaceDirect.vue?vue&type=script&lang=js\"\nexport * from \"./BookSpaceDirect.vue?vue&type=script&lang=js\"\nimport style0 from \"./BookSpaceDirect.vue?vue&type=style&index=0&id=48e6eddf&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  \"48e6eddf\",\n  null\n  \n)\n\nexport default component.exports","'use strict';\nvar isRegExp = require('../internals/is-regexp');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it) {\n  if (isRegExp(it)) {\n    throw new $TypeError(\"The method doesn't accept regular expressions\");\n  } return it;\n};\n","import axios from \"axios\";\nimport store from \"../store\";\n\nlet getScheduleToken = null;\n\nexport default {\n  methods: {\n    async getSchedule(locationId, startDate, endDate, meetingtypeId, spaceId = 0) {\n      if (spaceId == 0) {\n        if (getScheduleToken) {\n          getScheduleToken.cancel();\n        }\n      }\n      getScheduleToken = axios.CancelToken.source();\n\n      const response = await axios.get(\n        `${process.env.VUE_APP_API_BASE_URL}/api/v1/schedule`,\n        {\n          cancelToken: getScheduleToken.token,\n\n          params: {\n            locationId,\n            startDate,\n            endDate,\n            meetingtypeId,\n            spaceId\n          },\n          headers: {\n            \"Content-type\": \"application/json\",\n            apiToken: process.env.VUE_APP_API_KEY,\n            profileToken: store.getters['profileStore/getProfileToken']\n          }\n        }\n      );\n      return response;\n    }\n  }\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n  var regexp = /./;\n  try {\n    '/./'[METHOD_NAME](regexp);\n  } catch (error1) {\n    try {\n      regexp[MATCH] = false;\n      return '/./'[METHOD_NAME](regexp);\n    } catch (error2) { /* empty */ }\n  } return false;\n};\n","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!./BookSpaceDirect.vue?vue&type=style&index=0&id=48e6eddf&prod&lang=scss&scoped=true\""],"sourceRoot":""}