{"version":3,"sources":["webpack:///./src/pages/Shared/amenities/ReservationChooser/index.vue?6bbc","webpack:///./src/assets/images/text.png","webpack:///./src/components/icons/Info.vue?a769","webpack:///src/components/icons/Info.vue","webpack:///./src/components/icons/Info.vue?041f","webpack:///./src/components/icons/Info.vue","webpack:///./src/assets/images/radiobuttons.png","webpack:///./node_modules/core-js/modules/es.array.reduce.js","webpack:///./src/components/inputs/TimePickerFifteen/index.vue?0a21","webpack:///./src/components/inputs/DateMonthYearPicker.vue?1b21","webpack:///./src/pages/Shared/amenities/Details/index.vue?189a","webpack:///./src/pages/Management/amenities/ReservabilityAdder/index.vue?c638","webpack:///./src/pages/Management/amenities/ReservabilityAdder/keys/methods.js","webpack:///src/pages/Management/amenities/ReservabilityAdder/index.vue","webpack:///./src/pages/Management/amenities/ReservabilityAdder/index.vue?a708","webpack:///./src/pages/Management/amenities/ReservabilityAdder/index.vue","webpack:///./src/pages/Shared/amenities/ReservationChooser/index.vue?ec5d","webpack:///./src/pages/Shared/amenities/ReservationChooser/keys/data.js","webpack:///./src/services/Amenities/AmenityReservation/Post.js","webpack:///./src/services/Amenities/AmenityReservableTime/Delete.js","webpack:///./src/services/Amenities/AmenityReservation/Get.js","webpack:///./src/services/Amenities/AmenityReservation/sequences/findMultipleReservations.js","webpack:///./src/services/Amenities/AmenityReservation/sequences/deleteMultiple.js","webpack:///./src/services/Amenities/Amenity/store.js","webpack:///./src/services/Amenities/AmenityFee/store.js","webpack:///./src/utilities/time/compare.js","webpack:///./src/utilities/time/getSpans.js","webpack:///./src/utilities/time/isAvailable.js","webpack:///./src/utilities/amenities/findReliantReservations.js","webpack:///./src/utilities/time/getDuration.js","webpack:///./src/services/Payments/HomeOwner/OutstandingPayment/store.js","webpack:///./src/services/EpicGateway/store.js","webpack:///./src/pages/Shared/amenities/ReservationChooser/keys/methods.js","webpack:///./src/pages/Shared/amenities/ReservationChooser/keys/computed.js","webpack:///src/pages/Shared/amenities/ReservationChooser/index.vue","webpack:///./src/pages/Shared/amenities/ReservationChooser/index.vue?4876","webpack:///./src/pages/Shared/amenities/ReservationChooser/index.vue","webpack:///./src/pages/Shared/amenities/Details/keys/beforeDestroy.js","webpack:///./src/pages/Shared/amenities/Details/keys/computed.js","webpack:///./src/pages/Shared/amenities/Details/keys/data.js","webpack:///./src/services/Amenities/Amenity/Get.js","webpack:///./src/utilities/amenities/filterReservableTimes.js","webpack:///./src/pages/Shared/amenities/Details/keys/methods.js","webpack:///./src/pages/Shared/amenities/Details/keys/mounted.js","webpack:///./src/pages/Shared/amenities/Details/keys/props.js","webpack:///./src/pages/Shared/amenities/Details/keys/watch.js","webpack:///src/pages/Shared/amenities/Details/index.vue","webpack:///./src/pages/Shared/amenities/Details/index.vue?a8d6","webpack:///./src/pages/Shared/amenities/Details/index.vue","webpack:///./src/pages/Shared/amenities/Details/index.vue?02cf","webpack:///./src/assets/images/attachments.png","webpack:///./node_modules/core-js/internals/number-parse-float.js","webpack:///./src/utilities/Date/addSuffix.js","webpack:///./src/utilities/moment/parse.js","webpack:///./node_modules/cleave.js/dist/cleave-esm.js","webpack:///./src/utilities/time/toMeridian.js","webpack:///./src/assets/images/checkboxes.png","webpack:///./src/assets/images/recipients.png","webpack:///./node_modules/core-js/modules/es.number.parse-float.js","webpack:///./src/assets/images/markdown.png","webpack:///./node_modules/core-js/internals/array-reduce.js","webpack:///./node_modules/luhn/src/luhn-min.js","webpack:///./src/assets/images/scale.png","webpack:///./src/components/inputs/TimePickerFifteen/index.vue?5dfd","webpack:///src/components/inputs/TimePickerFifteen/index.vue","webpack:///./src/components/inputs/TimePickerFifteen/index.vue?0ed0","webpack:///./src/components/inputs/TimePickerFifteen/index.vue","webpack:///./src/components/inputs/DateMonthYearPicker.vue?f1f9","webpack:///src/components/inputs/DateMonthYearPicker.vue","webpack:///./src/components/inputs/DateMonthYearPicker.vue?6466","webpack:///./src/components/inputs/DateMonthYearPicker.vue","webpack:///./src/utilities/Date/allDatesInMonth.js"],"names":["module","exports","render","_vm","this","_h","$createElement","_c","_self","staticClass","staticStyle","attrs","on","$event","preventDefault","isActive","model","value","callback","$$v","expression","_v","_s","information","imageOnePath","_e","titleOne","infoOne","imageTwoPath","titleTwo","infoTwo","imageThreePath","titleThree","infoThree","titleFour","infoFour","staticRenderFns","props","title","type","String","default","imageFourPath","data","component","$","$reduce","left","arrayMethodIsStrict","arrayMethodUsesToLength","STRICT_METHOD","USES_TO_LENGTH","1","target","proto","forced","reduce","callbackfn","arguments","length","undefined","style","paddingBottom","position","display","justifyContent","alignItems","name","reservationDurationLimitInMinutes","borderLeft","Math","round","marginLeft","found","loading","padding","textAlign","opacity","transition","Object","assign","marginBottom","breakpoint","flexDirection","portal","openAddModal","margin","showing","_l","option","key","domProps","text","ref","calendarUpdate","dayTapped","events","refreshParent","isOpen","scopedSlots","_u","fn","proxy","add","formData","$set","day","index","methods","open","amenityID","console","debug","startTime","$refs","fromTime","getValue","endTime","toTime","cleanupDurationInMinutes","dayOfWeek","amenityStore","dispatch","json","successful","message","notifyProblem","callRefresh","components","Modal","TimePicker","_testAmenityID","Number","Function","weekDays","watch","_modal","maxWidth","checkBeforeClose","authUserType","show","cancelReservation","updateReservableTime","back","allowUpdate","confirmUpdateReservableTime","closeModal","deleteReservableTime","_get","amenityData","reserve","amenityFeeTotal","requestReservation","flexGrow","fee","cancelRefundable","_f","amount","description","convenienceFee","handleSubmit","onFormSubmit","amenityPaymentMethodType","label","ownerPaymentMethodID","creditCardNumber","cardHolderName","cvc","zipCode","directives","rawName","addCreditCardPaymentMethod","accountAliasCreditCard","errors","mDate","monthStr","dayOfMonth","year","opening","toMeridian","openings","marginTop","reservableTime","confirmEditReservableTime","confirmDeleteReservableTime","reservableTimes","reservation","paddingLeft","reservationIsApproved","approveReservationRequest","ownerID","confirmCancelReservation","reservations","toDelete","reliantReservations","rr","i","reservableTimeDayOfWeek","deleted","successes","problems","toUpdate","updaterOnUpdate","proposal","border","theme","color","affectedReservations","overflowY","height","r","width","marginRight","reservationToCancel","chargeAmount","nonRefundableAmount","amenityPaymentMethodTypes","amenityFees","amenityPaymentMethod","newAmenityReservation","paymentMethods","spans","requestJwtToken","month","affectedReservationsDetails","masks","creditCard","addAmenityReservation","kms","post","result","error","deleteAmenityReservableTime","amenityReservableTimeID","delete","getAmenityReservation","amenityReservationID","get","findMultipleReservations","a","reservationIDs","Promise","all","map","results","retrievals","push","deleteMultipleReservations","deleteAmenityReservation","actions","updateAmenity","payload","done","put","isDebug","JSON","stringify","notifyMessage","detail","notifyError","getAmenityFeePaymentMethodTypes","amenityFeePaymentMethodTypes","list","Vue","use","Vuex","Store","state","mutations","getters","getAmenityFeeList","params","amenityFeeStore","compareTimes","b","aInvalid","timeIsInvalid","bInvalid","p","split","e","parseInt","filter","t","includes","c","x","determineSpans","availabilities","issues","l","b1","b2","b1Invalid","invalid","b2Invalid","l2","a1","a2","comparisons","2","3","4","a1b1","a1b2","a2b1","a2b2","getTimeSpans","sIssues","oIssues","cloneDeep","f1","r1","r2","resolutionFound","f2","o1","o2","o1r1","o1r2","o2r1","o2r2","splice","timeIsAvailable","check","c1","c2","f","available","findReliantReservations","blocks","id","Array","isArray","reservationDayOfWeek","wkDaysNums","moment","reservableTimesOnDay","getDuration","t1","t2","t1Parsed","t2Parsed","parsed","h","m","s","inBetween","getOneTimeFortisJwtToken","hoaID","path","jwt","registerOneTimeToken","baseUrl","postthirdpartyjwt","method","account_number","routing_number","bank_account_type","status","token","reason_text","getPaymentMethodList","dropDownList","paymentMethodType","lastFourDigits","accountAlias","unshift","getOverallBalance","survey","getServiceFees","addSendPayment","paymentAmount","isApprovalPending","reasonCode","invalidMessage","addOneTimeCreditCardPayment","details","addOneTimeBankAccountPayment","outstandingPayment","addOwnerPaymentMethodCreditCard","expMonth","expYear","ownerUserID","tokenType","addDeferredOwnerPaymentMethodCreditCard","addOwnerPaymentMethodBankAccount","accountType","accountHolderName","registerTokenExtCreditCardMethod","cardNumber","cvv","registerTokenExtBankAccountMethod","routingNumber","accountNumber","bankAccount","getMakePaymentTypeList","makePaymentTypes","epicGateway","num","$forceUpdate","amenityReservableTimes","amenityReservations","approveAmenityReservation","chargedAmount","convenienceFeeFromPercent","convenienceFeeAmount","parseReservableTimes","parseReservations","determineAvailability","filtered","entry","filteredReservableTimes","date","startDate","format","endDate","filteredReservations","monthNums","authUser","ownerId","getArray","loadAmenityFees","percent","percentage","percentAmount","isOrphan","commit","resolve","setTimeout","then","amenityReservationStore","formatter","Intl","NumberFormat","minimumFractionDigits","notifymessage","ensureIsAvailable","comparison","proposedDurationSeconds","reservationDurationLimitInSeconds","isAvailable","reservationOwnerID","toString","reservationIdentityID","notes","amenityReservation","validationMessages","isValid","luhn","validate","expMonthYear","cardExpirationDateComponent","loadingComponent","$buefy","container","close","getFortisJwtOneTimeToken","tokenNumber","resetFormValues","totalWithConvenienceFee","slice","registerParams","token_number","token_type","savePaymentMethod","postalCode","savePaymentToken","requiresApproval","hoaId","loadServiceFees","parseFloat","creditCardPercentageServiceFee","creditCardPercentage","continueToFees","$store","reservationFees","loadPaymentMethodTypes","acc","item","loadPaymentMethods","selectedOwnerUser","ownerUsers","indexOf","allReservations","reliantReservation","editFromTime","editToTime","idToRemove","_cloneDeep","ids","reservableTimeProposal","addReservableTime","addedSuccessfully","addMessage","computed","mapState","win","user","selectedHoaId","homeownerSelectedUnit","mapGetters","bind","input","_vCleave","unbind","destroy","StatusTile","ValidSelect","ValidInput","Info","DateMonthPicker","ValidationObserver","ValidationProvider","beforeDestroy","unsubWindowStore","unsubAmenityStore","homeOwnerDisplays","total","allReservationsText","yourReservationsText","options","yourFutureReservations","yourPastReservations","join","yourFutureReservationRequests","yourPastReservationRequests","futureReservations","pastReservations","futureReservationRequests","pastReservationRequests","managementDisplays","dayTappedDay","dayTappedMonth","dayTappedYear","attributes","months","shown","getAmenity","filterReservableTimes","wkDays","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","wkDay","calendar","getInfo","reservationChooser","calculateYourReservationCounts","currentOwnerId","calcOwnerEventTotals","your","totals","future","requests","count","past","calculateTotals","now","dates","thisDate","isPast","isBefore","isApproved","from","refresh","initDatePickers","move","monthStrs","$route","reservabilityAdder","showYourReservations","allDatesInMonth","datesInMonth","last","_date","to","showReservations","showReservableTimes","showOpenings","sDate","eDate","showPendingReservationRequests","mounted","subscribe","mutation","mType","PageContent","PleasantCalendar","ReservabilityAdder","ReservationChooser","global","trim","whitespaces","$parseFloat","FORCED","Infinity","string","trimmedString","charAt","addSuffix","strDate","len","secondToLast","parseMoment","_m","substring","utcOffset","orbit","hour","minute","time","NumeralFormatter","numeralDecimalMark","numeralIntegerScale","numeralDecimalScale","numeralThousandsGroupStyle","numeralPositiveOnly","stripLeadingZeroes","prefix","signBeforePrefix","tailPrefix","delimiter","owner","groupStyle","thousand","delimiterRE","RegExp","lakh","wan","none","prototype","getRawValue","replace","parts","partSign","partSignAndPrefix","partInteger","partDecimal","NumeralFormatter_1","DateFormatter","datePattern","dateMin","dateMax","reverse","initBlocks","forEach","getISOFormatDate","addLeadingZero","getBlocks","getValidatedDate","sub","sub0","rest","getFixedDateString","dayIndex","monthIndex","yearIndex","dayStartIndex","monthStartIndex","yearStartIndex","fullYearDone","toLowerCase","getFixedDate","getRangeFixedDate","previous","current","addLeadingZeroForYear","find","min","isLeapYear","number","fullYearMode","DateFormatter_1","TimeFormatter","timePattern","timeFormat","getISOFormatTime","getTimeFormatOptions","maxHourFirstDigit","maxHours","maxMinutesFirstDigit","maxMinutes","getValidatedTime","timeFormatOptions","getFixedTimeString","second","secondIndex","minuteIndex","hourIndex","secondStartIndex","minuteStartIndex","hourStartIndex","getFixedTime","TimeFormatter_1","PhoneFormatter","setFormatter","phoneNumber","clear","validated","iMax","inputDigit","test","PhoneFormatter_1","CreditCardDetector","uatp","amex","diners","discover","mastercard","dankort","instapayment","jcb15","jcb","maestro","visa","mir","unionPay","general","re","getStrictBlocks","block","prev","concat","strictMode","matchedBlocks","CreditCardDetector_1","Util","noop","strip","getPostDelimiter","delimiters","matchedDelimiter","getDelimiterREByDelimiter","getNextCursorPosition","prevPos","oldValue","newValue","getPositionOffset","oldRawValue","newRawValue","lengthOffset","stripDelimiters","abs","letter","headStr","str","getMaxLength","getPrefixStrippedValue","prefixLength","prevResult","noImmediatePrefix","prevValue","getFirstDiffIndex","getFormattedValue","blocksLength","delimiterLazyShow","multipleDelimiters","currentDelimiter","fixPrefixCursor","el","val","appendix","setSelectionRange","checkFullSelection","selection","window","getSelection","document","ex","setSelection","element","doc","getActiveElement","createTextRange","range","select","warn","parent","activeElement","shadowRoot","isAndroid","navigator","userAgent","isAndroidBackspaceKeydown","lastInputValue","currentInputValue","Util_1","DefaultProperties","opts","creditCardStrictMode","creditCardType","onCreditCardTypeChanged","phone","phoneRegionCode","phoneFormatter","timeFormatter","dateFormatter","numeral","swapHiddenInput","numericOnly","uppercase","lowercase","rawValueTrimPrefix","copyDelimiter","initValue","delimiterLength","root","commonjsGlobal","maxLength","backspace","onValueChanged","DefaultProperties_1","Cleave","hasMultipleElements","querySelector","querySelectorAll","Error","properties","init","pps","isBackward","onChangeListener","onChange","onKeyDownListener","onKeyDown","onFocusListener","onFocus","onCutListener","onCut","onCopyListener","onCopy","initSwapHiddenInput","addEventListener","initPhoneFormatter","initDateFormatter","initTimeFormatter","initNumeralFormatter","onInput","inputFormatter","cloneNode","parentNode","insertBefore","elementSwapHidden","numeralFormatter","AsYouTypeFormatter","event","charCode","which","keyCode","inputType","postDelimiter","postDelimiterBackspace","copyClipboardData","inputValue","textToCopy","clipboardData","setData","postDelimiterAfter","updateValueState","toUpperCase","updateCreditCardPropsByValue","creditCardInfo","call","endPos","selectionEnd","callOnValueChanged","rawValue","setPhoneRegionCode","setRawValue","removeEventListener","Cleave_1","includeBreakdown","meridian","final","stat","aFunction","toObject","IndexedObject","toLength","createMethod","IS_RIGHT","that","argumentsLength","memo","O","self","TypeError","right","calc","calc2","trimmed","odd","hours","minutes","parse24","onUpdate","meridians","setValue","24","ariaLabel","styles","ariaPrefix","field","paddingRight","monthField","yearField","suffix","totalDays","daysInMonth","Date","getDay"],"mappings":"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","file":"js/chunk-9aea9fec.26c4650a.js","sourcesContent":["import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&lang=scss&scope=true&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&lang=scss&scope=true&\"","module.exports = __webpack_public_path__ + \"img/text.85c266be.png\";","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"pl-2\"},[_c('button',{staticClass:\"pt-2\",staticStyle:{\"vertical-align\":\"sub\"},attrs:{\"tabindex\":\"-1\"},on:{\"click\":function($event){$event.preventDefault();_vm.isActive = !_vm.isActive}}},[_c('svg',{staticStyle:{\"width\":\"24px\",\"height\":\"24px\"},attrs:{\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"fill\":\"currentColor\",\"d\":\"M13,9H11V7H13M13,17H11V11H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\"}})])]),_c('b-message',{attrs:{\"type\":\"is-info\",\"aria-close-label\":\"Close message\"},model:{value:(_vm.isActive),callback:function ($$v) {_vm.isActive=$$v},expression:\"isActive\"}},[_c('div',{staticClass:\"subtitle\"},[_vm._v(_vm._s(_vm.information || ''))]),(_vm.imageOnePath)?_c('article',{staticClass:\"media\"},[_c('figure',{staticClass:\"media-left\"},[(_vm.imageOnePath === 'imageOnePath')?_c('p',{staticClass:\"image is-164x164\"},[_c('img',{staticStyle:{\"width\":\"164px\"},attrs:{\"src\":require('@/assets/images/checkboxes.png')}})]):(_vm.imageOnePath === 'markdown')?_c('p',{staticClass:\"image is-164x164\"},[_c('img',{staticStyle:{\"width\":\"164px\"},attrs:{\"src\":require('@/assets/images/markdown.png')}})]):_vm._e()]),_c('div',{staticClass:\"media-content\"},[_c('div',{staticClass:\"content\"},[_c('p',[_c('strong',{staticClass:\"subtitle\"},[_vm._v(_vm._s(_vm.titleOne))]),_c('br'),_c('span',[_vm._v(_vm._s(_vm.infoOne))])])]),_c('nav',{staticClass:\"level is-mobile\"},[_c('div',{staticClass:\"level-left\"},[_c('a',{staticClass:\"level-item\"},[_c('span',{staticClass:\"icon is-small\"},[_c('i',{staticClass:\"fas fa-reply\"})])]),_c('a',{staticClass:\"level-item\"},[_c('span',{staticClass:\"icon is-small\"},[_c('i',{staticClass:\"fas fa-retweet\"})])]),_c('a',{staticClass:\"level-item\"},[_c('span',{staticClass:\"icon is-small\"},[_c('i',{staticClass:\"fas fa-heart\"})])])])])])]):_vm._e(),(_vm.imageTwoPath)?_c('article',{staticClass:\"media\"},[_c('figure',{staticClass:\"media-left\"},[(_vm.imageTwoPath === 'imageTwoPath')?_c('p',{staticClass:\"image is-164x164\"},[_c('img',{staticStyle:{\"width\":\"164px\"},attrs:{\"src\":require('@/assets/images/radiobuttons.png')}})]):(_vm.imageTwoPath === 'recipients')?_c('p',{staticClass:\"image is-164x164\"},[_c('img',{staticStyle:{\"width\":\"164px\"},attrs:{\"src\":require('@/assets/images/recipients.png')}})]):_vm._e()]),_c('div',{staticClass:\"media-content\"},[_c('div',{staticClass:\"content\"},[_c('p',[_c('strong',{staticClass:\"subtitle\"},[_vm._v(_vm._s(_vm.titleTwo))]),_c('br'),_vm._v(\" \"+_vm._s(_vm.infoTwo)+\" \")])]),_c('nav',{staticClass:\"level is-mobile\"},[_c('div',{staticClass:\"level-left\"},[_c('a',{staticClass:\"level-item\"},[_c('span',{staticClass:\"icon is-small\"},[_c('i',{staticClass:\"fas fa-reply\"})])]),_c('a',{staticClass:\"level-item\"},[_c('span',{staticClass:\"icon is-small\"},[_c('i',{staticClass:\"fas fa-retweet\"})])]),_c('a',{staticClass:\"level-item\"},[_c('span',{staticClass:\"icon is-small\"},[_c('i',{staticClass:\"fas fa-heart\"})])])])])])]):_vm._e(),(_vm.imageThreePath)?_c('article',{staticClass:\"media\"},[_c('figure',{staticClass:\"media-left\"},[(_vm.imageThreePath === 'imageThreePath')?_c('p',{staticClass:\"image is-164x164\"},[_c('img',{staticStyle:{\"width\":\"164px\"},attrs:{\"src\":require('@/assets/images/text.png')}})]):(_vm.imageThreePath === 'attachments')?_c('p',{staticClass:\"image is-164x164\"},[_c('img',{staticStyle:{\"width\":\"164px\"},attrs:{\"src\":require('@/assets/images/attachments.png')}})]):_vm._e()]),_c('div',{staticClass:\"media-content\"},[_c('div',{staticClass:\"content\"},[_c('p',[_c('strong',{staticClass:\"subtitle\"},[_vm._v(_vm._s(_vm.titleThree))]),_c('br'),_vm._v(\" \"+_vm._s(_vm.infoThree)+\" \")])]),_c('nav',{staticClass:\"level is-mobile\"},[_c('div',{staticClass:\"level-left\"},[_c('a',{staticClass:\"level-item\"},[_c('span',{staticClass:\"icon is-small\"},[_c('i',{staticClass:\"fas fa-reply\"})])]),_c('a',{staticClass:\"level-item\"},[_c('span',{staticClass:\"icon is-small\"},[_c('i',{staticClass:\"fas fa-retweet\"})])]),_c('a',{staticClass:\"level-item\"},[_c('span',{staticClass:\"icon is-small\"},[_c('i',{staticClass:\"fas fa-heart\"})])])])])])]):_vm._e(),(_vm.imageFourPath)?_c('article',{staticClass:\"media\"},[_c('figure',{staticClass:\"media-left\"},[_c('p',{staticClass:\"image is-164x164\"},[_c('img',{staticStyle:{\"width\":\"164px\"},attrs:{\"src\":require('@/assets/images/scale.png')}})])]),_c('div',{staticClass:\"media-content\"},[_c('div',{staticClass:\"content\"},[_c('p',[_c('strong',{staticClass:\"subtitle\"},[_vm._v(_vm._s(_vm.titleFour))]),_c('br'),_vm._v(\" \"+_vm._s(_vm.infoFour)+\" \")])]),_c('nav',{staticClass:\"level is-mobile\"},[_c('div',{staticClass:\"level-left\"},[_c('a',{staticClass:\"level-item\"},[_c('span',{staticClass:\"icon is-small\"},[_c('i',{staticClass:\"fas fa-reply\"})])]),_c('a',{staticClass:\"level-item\"},[_c('span',{staticClass:\"icon is-small\"},[_c('i',{staticClass:\"fas fa-retweet\"})])]),_c('a',{staticClass:\"level-item\"},[_c('span',{staticClass:\"icon is-small\"},[_c('i',{staticClass:\"fas fa-heart\"})])])])])])]):_vm._e()])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Info.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Info.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Info.vue?vue&type=template&id=04971870&\"\nimport script from \"./Info.vue?vue&type=script&lang=js&\"\nexport * from \"./Info.vue?vue&type=script&lang=js&\"\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 null,\n null\n \n)\n\nexport default component.exports","module.exports = \"data:image/png;base64,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\"","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar STRICT_METHOD = arrayMethodIsStrict('reduce');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('reduce', { 1: 0 });\n\n// `Array.prototype.reduce` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&lang=scss&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DateMonthYearPicker.vue?vue&type=style&index=0&id=1a78596a&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DateMonthYearPicker.vue?vue&type=style&index=0&id=1a78596a&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('PageContent',{style:({ paddingBottom: '300px', position: 'relative' }),attrs:{\"id\":\"amenities-details\",\"amenities-details-page\":\"\"}},[_c('div',{style:({ display: 'flex', justifyContent: 'space-between', alignItems: 'baseline' })},[_c('h3',[_vm._v(_vm._s(_vm.name))]),_c('div',{style:({ display: 'flex', justifyContent: 'space-between', alignItems: 'baseline' })},[(\n typeof _vm.reservationDurationLimitInMinutes === 'number' &&\n _vm.reservationDurationLimitInMinutes > 0\n )?_c('b-taglist',{attrs:{\"attached\":\"\"}},[_c('b-tag',{attrs:{\"type\":\"is-light\"}},[_vm._v(\"Reservation Time Limit\")]),_c('b-tag',{style:({ borderLeft: '1px solid #DDD' }),attrs:{\"type\":\"is-light\"}},[_vm._v(_vm._s(Math.round(_vm.reservationDurationLimitInMinutes / 60) + ' hour(s)'))])],1):_vm._e(),(_vm.requiresApproval)?_c('b-taglist',{style:({ marginLeft: '12px' }),attrs:{\"attached\":\"\"}},[_c('b-tag',{attrs:{\"type\":\"is-light\"}},[_vm._v(\"Reservations Require Approval\")])],1):_vm._e()],1)]),_c('div',{style:({\n display: !_vm.found && !_vm.loading ? 'block' : 'none',\n padding: '100px',\n textAlign: 'center'\n })},[_vm._v(\" The amenity could not be found. It may have been deleted. \")]),_c('div',{style:({ opacity: _vm.found ? 1 : 0, transition: 'opacity 1.4s' })},[_c('div',{style:(Object.assign({}, {display: 'flex',\n justifyContent: 'space-between',\n marginBottom: '30px'},\n (_vm.breakpoint === 'desktop'\n ? {\n alignItems: 'end'\n }\n : {\n alignItems: 'unset',\n flexDirection: 'column'\n })))},[(_vm.portal === 2)?_c('b-button',{attrs:{\"add-reservable-time-button\":\"\",\"type\":\"is-primary\",\"rounded\":\"\"},on:{\"click\":_vm.openAddModal}},[_vm._v(\"Add Reservable Time\")]):_vm._e(),_c('div',{style:(Object.assign({}, {display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center'},\n (_vm.breakpoint === 'desktop'\n ? {}\n : {\n margin: '20px 0 0'\n })))},[(_vm.portal === 1)?_c('b-field',{attrs:{\"label\":\"Show\"}},[_c('b-select',{model:{value:(_vm.showing),callback:function ($$v) {_vm.showing=$$v},expression:\"showing\"}},_vm._l((_vm.homeOwnerDisplays),function(option){return _c('option',{key:option.value,domProps:{\"value\":option.value}},[_vm._v(\" \"+_vm._s(option.text)+\" \")])}),0)],1):_vm._e(),(_vm.portal === 2)?_c('b-field',{attrs:{\"label\":\"Show\"}},[_c('b-select',{model:{value:(_vm.showing),callback:function ($$v) {_vm.showing=$$v},expression:\"showing\"}},_vm._l((_vm.managementDisplays),function(option){return _c('option',{key:option.value,domProps:{\"value\":option.value}},[_vm._v(\" \"+_vm._s(option.text)+\" \")])}),0)],1):_vm._e()],1)],1),_c('PleasantCalendar',{ref:\"calendar\",attrs:{\"pageChange\":_vm.calendarUpdate,\"dayTapped\":_vm.dayTapped,\"events\":_vm.events,\"breakpoint\":_vm.breakpoint}})],1),_c('ReservabilityAdder',{ref:\"reservabilityAdder\",attrs:{\"refreshParent\":_vm.refreshParent}}),_c('ReservationChooser',{ref:\"reservationChooser\",attrs:{\"refreshParent\":_vm.refreshParent}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Modal',{attrs:{\"amenities-reservability-adder\":\"\",\"toggle\":_vm.isOpen,\"loading\":_vm.loading},on:{\"update:toggle\":function($event){_vm.isOpen=$event}},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_vm._v(\"Amenity Reservable Times\")]},proxy:true},{key:\"footer\",fn:function(){return [_c('div',{style:({ display: 'flex', justifyContent: 'end' })},[_c('b-button',{attrs:{\"type\":\"is-primary\",\"add-button\":\"\"},on:{\"click\":_vm.add}},[_vm._v(\"Add\")])],1)]},proxy:true}])},[_c('b-field',{attrs:{\"label\":\"Every\"}}),_c('b-select',{attrs:{\"day-select\":\"\",\"placeholder\":\"Day of Week\"},model:{value:(_vm.formData.dayOfWeek),callback:function ($$v) {_vm.$set(_vm.formData, \"dayOfWeek\", $$v)},expression:\"formData.dayOfWeek\"}},_vm._l((_vm.weekDays),function(day,index){return _c('option',{key:index,domProps:{\"value\":day}},[_vm._v(\" \"+_vm._s(day)+\" \")])}),0),_c('br'),_c('b-field',{attrs:{\"label\":\"From\"}}),_c('TimePicker',{ref:\"fromTime\",attrs:{\"from-time\":\"\"}}),_c('br'),_c('b-field',{attrs:{\"label\":\"To\"}}),_c('TimePicker',{ref:\"toTime\",attrs:{\"to-time\":\"\"}}),_c('br')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { amenityStore } from '@/services/Amenities/store'\r\nimport { notifyProblem } from '@/services/notify'\r\n\r\nexport const methods = {\r\n open({ amenityID }) {\r\n this.isOpen = true\r\n this.loading = false\r\n\r\n this.amenityID = amenityID\r\n },\r\n async add() {\r\n console.debug('in ReservabilityAdder add...')\r\n this.loading = true\r\n\r\n const startTime = this.$refs.fromTime.getValue()[24]\r\n const endTime = this.$refs.toTime.getValue()[24]\r\n const cleanupDurationInMinutes = this.formData.cleanupDurationInMinutes\r\n const dayOfWeek = this.formData.dayOfWeek\r\n const amenityID = this.amenityID\r\n\r\n const { successful, message } = await amenityStore.dispatch('addReservableTime', {\r\n json: {\r\n amenityID,\r\n dayOfWeek,\r\n startTime,\r\n endTime,\r\n cleanupDurationInMinutes\r\n }\r\n })\r\n if (!successful) {\r\n notifyProblem(message)\r\n this.loading = false\r\n return\r\n }\r\n\r\n this.callRefresh = true\r\n console.debug('calling refreshParent...')\r\n this.refreshParent()\r\n this.isOpen = false\r\n }\r\n}\r\n","\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=2f38257a&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Modal',{attrs:{\"amenities-reservation-chooser\":\"\",\"toggle\":_vm.isOpen,\"loading\":_vm.loading,\"styles\":{ _modal: { maxWidth: '1400px' } },\"checkBeforeClose\":_vm.checkBeforeClose},on:{\"update:toggle\":function($event){_vm.isOpen=$event}},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_c('div',[(_vm.authUserType === 'HomeOwner' && _vm.showing !== 8)?_c('div',[_vm._v(\"Reservation Chooser\")]):_vm._e(),(_vm.authUserType === 'HomeOwner' && _vm.showing === 8)?_c('div',[_vm._v(\" Amenity Fees - Due at Time of Reservation or Approval \")]):_vm._e(),(_vm.authUserType === 'Account')?_c('div',[_vm._v(\"Details\")]):_vm._e()])]},proxy:true},{key:\"footer\",fn:function(){return [_c('div',{staticStyle:{}},[(_vm.showing === 6)?_c('div',{style:({ display: 'flex', justifyContent: 'space-between' })},[_c('b-button',{on:{\"click\":function($event){return _vm.show(4)}}},[_vm._v(\"Back\")]),(_vm.authUserType === 'HomeOwner')?_c('b-button',{attrs:{\"type\":\"is-danger\",\"rounded\":\"\"},on:{\"click\":function($event){return _vm.cancelReservation()}}},[_vm._v(\"Cancel Reservation\")]):_vm._e()],1):_vm._e(),(_vm.showing === 5)?_c('div',{style:({ display: 'flex', justifyContent: 'space-between' })},[_c('b-button',{on:{\"click\":function($event){return _vm.show(4)}}},[_vm._v(\"Back\")]),_c('b-button',{staticClass:\"button is-primary is-small\",on:{\"click\":_vm.updateReservableTime}},[_vm._v(\"Update\")])],1):_vm._e(),(_vm.showing === 4)?_c('div',{style:({ display: 'flex', justifyContent: 'space-between' })},[_c('b-button',{on:{\"click\":_vm.back}},[_vm._v(\"Back\")]),(_vm.allowUpdate === 0)?_c('b-tooltip',{attrs:{\"label\":\"Please select the new time span.\",\"position\":\"is-left\"}},[_c('b-button',{staticClass:\"button is-primary is-small\",attrs:{\"disabled\":\"\"}},[_vm._v(\"Update\")])],1):_vm._e(),(_vm.allowUpdate === 2)?_c('b-tooltip',{attrs:{\"label\":\"The end time needs to be after the start time.\",\"position\":\"is-left\"}},[_c('b-button',{staticClass:\"button is-primary is-small\",attrs:{\"disabled\":\"\"}},[_vm._v(\"Update\")])],1):_vm._e(),(_vm.allowUpdate === 1)?_c('b-button',{staticClass:\"button is-primary is-small\",on:{\"click\":_vm.confirmUpdateReservableTime}},[_vm._v(\"Update\")]):_vm._e()],1):_vm._e(),(_vm.showing === 3)?_c('div',{style:({ display: 'flex', justifyContent: 'end' })},[_c('b-button',{on:{\"click\":_vm.closeModal}},[_vm._v(\"Close\")])],1):_vm._e(),(_vm.showing === 2)?_c('div',{style:({ display: 'flex', justifyContent: 'space-between' })},[_c('b-button',{on:{\"click\":_vm.back}},[_vm._v(\"Back\")]),_c('b-button',{attrs:{\"type\":\"is-danger\"},on:{\"click\":_vm.deleteReservableTime}},[_vm._v(\"Delete\")])],1):_vm._e(),(_vm.showing === 1 && _vm.authUserType === 'HomeOwner')?_c('div',{style:({ display: 'flex', justifyContent: 'end' })},[(\n _vm.authUserType === 'HomeOwner' && _vm._get(_vm.amenityData, 'requiresApproval', null) !== true\n )?_c('b-button',{attrs:{\"type\":\"is-primary\"},on:{\"click\":_vm.reserve}},[_vm._v(\"Reserve\")]):_vm._e(),(\n _vm.authUserType === 'HomeOwner' &&\n _vm._get(_vm.amenityData, 'requiresApproval', null) === true &&\n _vm.amenityFeeTotal <= 0\n )?_c('b-button',{attrs:{\"type\":\"is-primary\"},on:{\"click\":_vm.requestReservation}},[_vm._v(\"Request to Reserve\")]):_vm._e(),(_vm.authUserType === 'HomeOwner')?_c('span',{staticClass:\"pl-3\"},[_vm._v(\" \")]):_vm._e(),(_vm.authUserType === 'HomeOwner' && _vm.amenityFeeTotal > 0)?_c('b-button',{attrs:{\"type\":\"is-primary\"},on:{\"click\":function($event){return _vm.requestReservation(true)}}},[_vm._v(\"Continue to Fees\")]):_vm._e(),(_vm.authUserType === 'Account')?_c('b-tooltip',{attrs:{\"label\":\"Only home owners may reserve amenities.\",\"position\":\"is-left\"}},[_c('b-button',{attrs:{\"type\":\"is-primary\",\"disabled\":\"\"}},[_vm._v(\"Reserve\")])],1):_vm._e()],1):_vm._e(),(_vm.showing === 8 && _vm.authUserType === 'HomeOwner')?_c('div',{staticClass:\"scrollbar\",staticStyle:{\"max-height\":\"615px !important\"}},[_c('div',{style:(Object.assign({}, {display: 'flex',\n marginBottom: '12px'},\n (_vm.breakpoint === 'desktop'\n ? {}\n : {\n flexDirection: 'column'\n })))},[_c('div',{staticClass:\"card\",style:({ padding: '12px', flexGrow: 2 })},[_vm._l((_vm.amenityFees),function(fee,index){return _c('div',{key:index},[_c('div',{staticClass:\"columns\",staticStyle:{\"color\":\"black\"}},[_c('div',{staticClass:\"column is-10 font-bold\"},[_vm._v(\" \"+_vm._s(fee.name || '')+\" \"+_vm._s((\"\" + (fee.cancelRefundable === true ? ' (Refundable)' : ' (Non-Refundable)')))+\" \")]),_c('div',{staticClass:\"column is-2 text-right\"},[_vm._v(_vm._s(_vm._f(\"currency\")(fee.amount)))])]),_c('div',{staticClass:\"columns pl-5\",staticStyle:{\"color\":\"black\"}},[_c('div',{staticClass:\"column is-12\"},[_vm._v(_vm._s(fee.description || ''))])])])}),_c('div',{staticClass:\"columns\",staticStyle:{\"color\":\"black\"}},[_c('div',{staticClass:\"column is-10 font-bold\"},[_vm._v(\" Convenience Fee (Non-Refundable) \")]),_c('div',{staticClass:\"column is-2 text-right font-larger2\"},[_vm._v(\" \"+_vm._s(_vm._f(\"currency\")(_vm.convenienceFee))+\" \")])]),_c('div',{staticClass:\"columns\",staticStyle:{\"color\":\"black\"}},[_c('div',{staticClass:\"column is-10 font-bold text-right\"},[_vm._v(\"Total Due Today:\")]),_c('div',{staticClass:\"column is-2 font-bold text-right\"},[_vm._v(\" \"+_vm._s(_vm._f(\"currency\")((_vm.amenityFeeTotal + _vm.convenienceFee)))+\" \")])])],2)]),_c('div',[_c('ValidationObserver',{ref:\"form\",scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var handleSubmit = ref.handleSubmit;\nreturn [_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\",\"appear\":\"\"}},[_c('form',{staticClass:\"form\",on:{\"submit\":function($event){$event.preventDefault();return handleSubmit(_vm.onFormSubmit)}}},[_c('div',{staticClass:\"columns\",staticStyle:{\"color\":\"black\"}},[_c('div',{staticClass:\"column is-12 font-bold\"},[_vm._v(\"Payment Method Type\")])]),_c('div',{staticStyle:{\"width\":\"500px\"}},[_c('valid-select',{attrs:{\"placeholder\":\"Payment Method Type\",\"vid\":\"amenityPaymentMethodType\",\"aria-required\":\"The payment method type is required\",\"rules\":\"required\"},model:{value:(_vm.amenityPaymentMethodType),callback:function ($$v) {_vm.amenityPaymentMethodType=$$v},expression:\"amenityPaymentMethodType\"}},_vm._l((_vm.amenityPaymentMethodTypes),function(option){return _c('option',{key:option.value,domProps:{\"value\":option.value}},[_vm._v(_vm._s(option.label))])}),0)],1),(_vm.amenityPaymentMethodType && _vm.amenityPaymentMethodType == 'stored')?_c('div',{staticClass:\"pt-5\",staticStyle:{\"width\":\"500px\"}},[_c('label',{staticClass:\"label\"},[_vm._v(\"Payment Method\"),_c('Info',{attrs:{\"title\":\"Name\",\"information\":\"Select the stored payment that you want to use to make this payment.\"}})],1),_c('valid-select',{attrs:{\"placeholder\":\"Payment Method\",\"vid\":\"ownerPaymentMethodID\",\"aria-required\":\"The payment method is required\",\"rules\":\"required\"},model:{value:(_vm.ownerPaymentMethodID),callback:function ($$v) {_vm.ownerPaymentMethodID=$$v},expression:\"ownerPaymentMethodID\"}},_vm._l((_vm.paymentMethods),function(option){return _c('option',{key:option.value,domProps:{\"value\":option.value}},[_vm._v(_vm._s(option.label))])}),0)],1):_vm._e(),(_vm.amenityPaymentMethodType && _vm.amenityPaymentMethodType == 'creditcard')?_c('div',{staticClass:\"pt-1\"},[_c('div',{staticClass:\"columns\"},[_c('div',{staticClass:\"column is-5\"},[_c('label',{staticClass:\"label\"},[_vm._v(\"Credit Card Number\"),_c('Info',{attrs:{\"title\":\"Name\",\"information\":\"The credit card number.\"}})],1),_c('b-input',{attrs:{\"id\":\"cardnumber\",\"name\":\"creditCardNumber\",\"type\":\"text\",\"vid\":\"creditCardNumber\",\"placeholder\":\"Credit Card Number\",\"rules\":\"required|max:100\"},model:{value:(_vm.creditCardNumber),callback:function ($$v) {_vm.creditCardNumber=$$v},expression:\"creditCardNumber\"}})],1),_c('div',{staticClass:\"column is-5\"},[_c('label',{staticClass:\"label\"},[_vm._v(\"Card Holder Name\"),_c('Info',{attrs:{\"title\":\"Name\",\"information\":\"The card holder name.\"}})],1),_c('valid-input',{attrs:{\"name\":\"cardHolderName\",\"type\":\"text\",\"vid\":\"cardHolderName\",\"placeholder\":\"Card Holder Name\",\"rules\":\"required|max:255\"},model:{value:(_vm.cardHolderName),callback:function ($$v) {_vm.cardHolderName=$$v},expression:\"cardHolderName\"}})],1)]),_c('div',{staticClass:\"columns\"},[_c('div',{staticClass:\"column is-5 pt-1\"},[_c('label',{staticClass:\"label\"},[_vm._v(\"Expiration Date\"),_c('Info',{attrs:{\"title\":\"Expiration Date\",\"information\":\"The date that the credit card expires.\"}})],1),_c('b-field',[_c('DateMonthPicker',{ref:\"cardExpirationDateComponent\",attrs:{\"required\":\"\"}})],1)],1),_c('div',{staticClass:\"column is-5 pt-1\"},[_c('label',{staticClass:\"label\"},[_vm._v(\"CVC\"),_c('Info',{attrs:{\"title\":\"CVC\",\"information\":\"The credit card verification code. This code is the final three digits of the number printed on the signature strip on the reverse side of your card.\"}})],1),_c('valid-input',{attrs:{\"name\":\"cvc\",\"type\":\"text\",\"vid\":\"cvc\",\"placeholder\":\"Card Verification Code\",\"rules\":\"required|max:5\"},model:{value:(_vm.cvc),callback:function ($$v) {_vm.cvc=$$v},expression:\"cvc\"}})],1)]),_c('div',{staticClass:\"columns\"},[_c('div',{staticClass:\"column is-5 pt-1\"},[_c('div',{staticClass:\"column is-12 pt-2\"},[_c('label',{staticClass:\"label\"},[_vm._v(\"Postal Code\"),_c('Info',{attrs:{\"title\":\"Postal Code\",\"information\":\"The postal code of the credit card holder's mailing address.\"}})],1)]),_c('valid-input',{attrs:{\"name\":\"zipCode\",\"type\":\"text\",\"vid\":\"zipCode\",\"placeholder\":\"Zip Code\",\"maxlength\":\"5\",\"rules\":\"required|max:5\"},model:{value:(_vm.zipCode),callback:function ($$v) {_vm.zipCode=$$v},expression:\"zipCode\"}})],1)]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(false),expression:\"false\"}],staticClass:\"columns\"},[_c('div',{staticClass:\"column is-5 pl-3 pt-5\"},[_c('b-checkbox',{staticClass:\"has-left-text\",model:{value:(_vm.addCreditCardPaymentMethod),callback:function ($$v) {_vm.addCreditCardPaymentMethod=$$v},expression:\"addCreditCardPaymentMethod\"}},[_vm._v(\"Save this Payment Method?\")])],1),(_vm.addCreditCardPaymentMethod === true)?_c('div',{staticClass:\"column is-5\"},[_c('label',{staticClass:\"label\"},[_vm._v(\"Account Alias\"),_c('Info',{attrs:{\"title\":\"Name\",\"information\":\"Assign a name to your account. This can be any name that you want to assign.\"}})],1),_c('valid-input',{attrs:{\"name\":\"accountAliasCreditCard\",\"type\":\"text\",\"vid\":\"accountAliasCreditCard\",\"placeholder\":\"Account Alias\",\"rules\":\"max:255\"},model:{value:(_vm.accountAliasCreditCard),callback:function ($$v) {_vm.accountAliasCreditCard=$$v},expression:\"accountAliasCreditCard\"}})],1):_vm._e()])]):_vm._e(),_c('div',{staticClass:\"pb-5 pt-5 primary\"},[_c('span',{staticClass:\"is-left pr-3\"},[_c('b-button',{on:{\"click\":_vm.back}},[_vm._v(\"Back\")])],1),_c('button',{staticClass:\"button is-primary pl-3\",attrs:{\"type\":\"submit\",\"disabled\":_vm.loading}},[_vm._v(\" Send Payment \")])]),_c('fieldset',[_c('ValidationProvider',{attrs:{\"vid\":\"providerErrors\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var errors = ref.errors;\nreturn [_c('div',{staticClass:\"field\"},[_c('span',[_vm._v(_vm._s(errors[0]))])])]}}],null,true)})],1)])])]}}],null,false,1578327875)})],1)]):_vm._e()])]},proxy:true}])},[(_vm.showing === 1)?_c('div',[_c('h4',[_vm._v(_vm._s(_vm.mDate.monthStr)+\" \"+_vm._s(_vm.mDate.dayOfMonth)+\", \"+_vm._s(_vm.mDate.year))]),_c('div',{style:(Object.assign({}, {display: 'flex',\n marginBottom: '12px'},\n (_vm.breakpoint === 'desktop'\n ? {}\n : {\n flexDirection: 'column'\n })))},[_c('div',{staticClass:\"card\",style:({ padding: '12px', flexGrow: 3 })},[_c('h5',{style:({ margin: 0, padding: 0 })},[_vm._v(\"Current Availability\")]),_vm._l((_vm.openings),function(opening,index){return _c('div',{key:index},[_vm._v(\" \"+_vm._s(_vm.toMeridian(opening[0]))+\" to \"+_vm._s(_vm.toMeridian(opening[1]))+\" \")])}),(_vm.openings.length === 0)?_c('div',[_vm._v(\"None\")]):_vm._e()],2),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(false),expression:\"false\"}],staticClass:\"card\",style:(Object.assign({}, {padding: '12px',\n flexGrow: 2},\n (_vm.breakpoint === 'desktop'\n ? {\n marginLeft: '12px'\n }\n : {\n marginTop: '12px'\n })))},[_c('h5',{style:({ margin: 0, padding: 0 })},[_vm._v(\"Original Reservable Times\")]),_vm._l((_vm.reservableTimes),function(reservableTime,index){return _c('div',{key:index,staticClass:\"card\",style:({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: '8px',\n margin: '4px 0'\n })},[_c('div',[_vm._v(_vm._s(_vm.toMeridian(reservableTime[0]))+\" to \"+_vm._s(_vm.toMeridian(reservableTime[1])))]),(_vm.authUserType === 'Account')?_c('div',[_c('b-button',{staticClass:\"button is-info is-light is-small is-outline is-rounded\",on:{\"click\":function($event){return _vm.confirmEditReservableTime({ reservableTime: reservableTime })}}},[_vm._v(\"Edit\")]),_c('b-button',{staticClass:\"button is-info is-light is-small is-outline is-rounded\",style:({ marginLeft: '8px' }),on:{\"click\":function($event){return _vm.confirmDeleteReservableTime({ reservableTime: reservableTime })}}},[_vm._v(\"Delete\")])],1):_vm._e()])}),(_vm.reservableTimes.length === 0)?_c('div',[_vm._v(\"None\")]):_vm._e()],2)]),_c('div',{style:({ display: 'flex' })},[_c('div',{staticClass:\"card\",style:({ padding: '12px', flexGrow: 2 })},[_c('h5',{style:({ margin: 0, padding: 0 })},[_vm._v(\"Other Reservations\")]),_vm._l((_vm.reservations),function(reservation,index){return _c('div',{key:index,staticClass:\"card\",style:({\n display: 'flex',\n justifyContent: 'space-between',\n\n marginTop: '6px',\n padding: '8px',\n alignItems: 'center'\n })},[_c('div',{style:({ display: 'flex', alignItems: 'center' })},[_c('b-tag',{attrs:{\"size\":\"is-medium\"}},[_vm._v(_vm._s(_vm.toMeridian(reservation[0]))+\" to \"+_vm._s(_vm.toMeridian(reservation[1])))]),_c('span',{style:({ padding: '0 10px' })},[_vm._v(\"for\")]),_c('b-tag',{style:({ paddingLeft: '10px' }),attrs:{\"size\":\"is-medium\"}},[_vm._v(_vm._s(reservation[2]))]),(\n _vm._get(_vm.amenityData, ['requiresApproval'], false) &&\n !_vm.reservationIsApproved({ reservation: _vm._get(reservation, [3], null) })\n )?_c('StatusTile',{style:({ marginLeft: '12px' }),attrs:{\"text\":\"Pending Approval\",\"background\":1}}):_vm._e(),(\n _vm._get(_vm.amenityData, ['requiresApproval'], false) &&\n _vm.reservationIsApproved({ reservation: _vm._get(reservation, [3], null) })\n )?_c('StatusTile',{style:({ marginLeft: '12px' }),attrs:{\"text\":\"Approved\",\"background\":2}}):_vm._e()],1),(\n _vm.authUserType === 'Account' &&\n _vm._get(_vm.amenityData, 'requiresApproval', null) === true &&\n !_vm.reservationIsApproved({ reservation: _vm._get(reservation, 3, null) })\n )?_c('b-button',{attrs:{\"type\":\"is-primary\",\"rounded\":\"\"},on:{\"click\":function($event){return _vm.approveReservationRequest({ reservation: reservation })}}},[_vm._v(\"Approve Request\")]):_vm._e(),(\n _vm.authUserType === 'HomeOwner' &&\n typeof _vm.ownerID === 'number' &&\n _vm.ownerID === _vm._get(reservation, [3, 'reservationOwnerID'], null)\n )?_c('b-button',{attrs:{\"type\":\"is-danger\",\"rounded\":\"\"},on:{\"click\":function($event){return _vm.confirmCancelReservation({ reservation: reservation })}}},[_vm._v(\"Cancel Reservation\")]):_vm._e()],1)}),(_vm.reservations.length === 0)?_c('div',[_vm._v(\"None\")]):_vm._e()],2)]),(_vm.authUserType === 'HomeOwner')?_c('div',{staticClass:\"card\",style:({ padding: '12px', marginTop: '12px' })},[(_vm._get(_vm.amenityData, 'requiresApproval', null) === true)?_c('h4',[_vm._v(\"New Reservation Request\")]):_c('h4',[_vm._v(\"New Reservation\")]),_c('b-field',{attrs:{\"label\":\"From\"}}),_c('TimePicker',{ref:\"fromTime\"}),_c('br'),_c('b-field',{attrs:{\"label\":\"To\"}}),_c('TimePicker',{ref:\"toTime\"})],1):_vm._e()]):_vm._e(),(_vm.showing === 2)?_c('div',[_c('div',[_c('div',[_vm._v(\" There are \"),_c('b',[_vm._v(_vm._s(_vm.toDelete.reliantReservations.length))]),_vm._v(\" reservation\"+_vm._s(_vm.toDelete.reliantReservations.length === 1 ? '' : 's')+\" or reservation request\"+_vm._s(_vm.toDelete.reliantReservations.length === 1 ? '' : 's')+\" that will be cancelled if this reservable time is deleted. \")]),_vm._l((_vm.toDelete.reliantReservations),function(rr,i){return _c('div',{key:i,style:({ margin: '4px 0' })},[_c('b-tag',[_vm._v(_vm._s(rr[0]))]),_vm._v(\" to \"),_c('b-tag',[_vm._v(_vm._s(rr[1]))]),_vm._v(\" for \"),_c('b-tag',[_vm._v(_vm._s(rr[2]))])],1)})],2),_c('br'),_c('div',[_vm._v(\"Are you sure you want to delete this reservable time block?\")]),_c('div',[_c('span',[_vm._v(\"Every \"),_c('b',[_vm._v(_vm._s(_vm.toDelete.reservableTimeDayOfWeek))]),_vm._v(\" from \"),_c('b',[_vm._v(_vm._s(_vm.toDelete.startTime))]),_vm._v(\" to \"),_c('b',[_vm._v(_vm._s(_vm.toDelete.endTime))])])])]):_vm._e(),(_vm.showing === 3)?_c('div',[_c('p',[_vm._v(\"This reservable time slot has been deleted.\")]),_c('p',[_vm._v(\" Every \"),_c('b',[_vm._v(_vm._s(_vm.toDelete.reservableTimeDayOfWeek))]),_vm._v(\" from \"),_c('b',[_vm._v(_vm._s(_vm.toDelete.startTime))]),_vm._v(\" to \"),_c('b',[_vm._v(_vm._s(_vm.toDelete.endTime))])]),_c('br'),(_vm.deleted.successes >= 1)?_c('p',[_c('b',[_vm._v(_vm._s(_vm.deleted.successes))]),_vm._v(\" reservations have been cancelled. \")]):_vm._e(),(_vm.deleted.problems.length >= 1)?_c('p',[_c('b',[_vm._v(_vm._s(_vm.deleted.problems.length))]),_vm._v(\" reservations may not have been cancelled successfully. \")]):_vm._e()]):_vm._e(),(_vm.showing === 4)?_c('div',[_c('h4',[_vm._v(\"Reservable Time Update\")]),_c('div',{staticClass:\"card\",style:({ padding: '16px' })},[_c('h5',{style:({ margin: 0 })},[_vm._v(\"Currently\")]),_c('span',[_vm._v(\"Every \"),_c('b',[_vm._v(_vm._s(_vm.toUpdate.dayOfWeek))]),_vm._v(\" from \"),_c('b',[_vm._v(_vm._s(_vm.toMeridian(_vm.toUpdate.startTime)))]),_vm._v(\" to \"),_c('b',[_vm._v(_vm._s(_vm.toMeridian(_vm.toUpdate.endTime)))])])]),_c('br'),_c('div',{style:(Object.assign({}, {display: 'flex'},\n (_vm.breakpoint === 'desktop'\n ? {}\n : {\n flexDirection: 'column'\n })))},[_c('div',{staticClass:\"card\",style:({ padding: '16px' })},[_c('h5',{style:({ margin: 0 })},[_vm._v(\"Update To\")]),_c('b-field',{attrs:{\"label\":\"From\"}}),_c('TimePicker',{ref:\"editFromTime\",attrs:{\"onUpdate\":_vm.updaterOnUpdate},model:{value:(_vm.toUpdate.proposal.startTime),callback:function ($$v) {_vm.$set(_vm.toUpdate.proposal, \"startTime\", $$v)},expression:\"toUpdate.proposal.startTime\"}}),_c('br'),_c('b-field',{attrs:{\"label\":\"To\"}}),_c('TimePicker',{ref:\"editToTime\",attrs:{\"onUpdate\":_vm.updaterOnUpdate},model:{value:(_vm.toUpdate.proposal.endTime),callback:function ($$v) {_vm.$set(_vm.toUpdate.proposal, \"endTime\", $$v)},expression:\"toUpdate.proposal.endTime\"}})],1),_c('div',{staticClass:\"card\",style:(Object.assign({}, {padding: '16px',\n border: \"3px solid\" + _vm.theme.color[4]},\n (_vm.breakpoint === 'desktop'\n ? {}\n : {\n marginTop: '12px'\n })))},[_c('h5',{style:({ margin: 0 })},[_vm._v(\"Affected Reservations\")]),_c('p',[_c('b',[_vm._v(_vm._s(_vm.affectedReservations.length))]),_vm._v(\" reservation\"+_vm._s(_vm.affectedReservations.length === 1 ? '' : 's')+\" or or reservation request\"+_vm._s(_vm.affectedReservations.length === 1 ? '' : 's')+\" will be cancelled if the reservable time is updated to the selected span. \")]),_c('div',{style:({ overflowY: 'scroll', height: '74%' })},_vm._l((_vm.affectedReservations),function(r,i){return _c('div',{key:i,style:({ margin: '6px 0' })},[_c('p',[_c('b-tag',[_vm._v(_vm._s(r[0]))]),_vm._v(\" to \"),_c('b-tag',[_vm._v(_vm._s(r[1]))]),_vm._v(\" for \"),_c('b-tag',[_vm._v(_vm._s(r[2]))])],1)])}),0)])])]):_vm._e(),(_vm.showing === 5)?_c('div',[_c('h4',[_vm._v(\"Reservable Time Update Confirmation\")]),_c('p',[_vm._v(\"Please confirm that you would like to update the reservable time\")]),_c('div',[_c('b-tag',{style:({ width: '50px', marginRight: '8px' })},[_vm._v(\"From\")]),_c('span',[_vm._v(\"Every \"),_c('b',[_vm._v(_vm._s(_vm.toUpdate.dayOfWeek))]),_vm._v(\" from \"),_c('b',[_vm._v(_vm._s(_vm.toMeridian(_vm.toUpdate.startTime)))]),_vm._v(\" to \"),_c('b',[_vm._v(_vm._s(_vm.toMeridian(_vm.toUpdate.endTime)))])])],1),_c('div',{style:({ marginTop: '8px' })},[_c('b-tag',{style:({ width: '50px', marginRight: '8px' })},[_vm._v(\"To\")]),_c('span',[_vm._v(\"Every \"),_c('b',[_vm._v(_vm._s(_vm.toUpdate.proposal.dayOfWeek))]),_vm._v(\" from \"),_c('b',[_vm._v(_vm._s(_vm.toMeridian(_vm.toUpdate.proposal.startTime)))]),_vm._v(\" to \"),_c('b',[_vm._v(_vm._s(_vm.toMeridian(_vm.toUpdate.proposal.endTime)))])])],1),_c('br'),_c('p',[_c('b',[_vm._v(_vm._s(_vm.affectedReservations.length))]),_vm._v(\" reservation\"+_vm._s(_vm.affectedReservations.length === 1 ? '' : 's')+\" or reservation request\"+_vm._s(_vm.affectedReservations.length === 1 ? '' : 's')+\" will be cancelled if the reservable time is updated. \")]),_vm._l((_vm.affectedReservations),function(r,i){return _c('div',{key:i,style:({ margin: '6px 0' })},[_c('p',[_c('b-tag',[_vm._v(_vm._s(r[0]))]),_vm._v(\" to \"),_c('b-tag',[_vm._v(_vm._s(r[1]))]),_vm._v(\" for \"),_c('b-tag',[_vm._v(_vm._s(r[2]))])],1)])})],2):_vm._e(),(_vm.showing === 6)?_c('div',[_c('h4',[_vm._v(\"Reservable Cancellation Confirmation\")]),_c('p',[_vm._v(\" To confirm that you would like to cancel the reservation, please press the cancel button. \")]),(\n _vm.reservationToCancel !== undefined &&\n _vm.reservationToCancel &&\n _vm.reservationIsApproved({ reservation: _vm.reservationToCancel })\n )?_c('div',[_c('p',[_vm._v(\"Refundable Amount: \"+_vm._s(_vm._f(\"currency\")((\"\" + (_vm.reservationToCancel.chargeAmount || 0)))))]),_c('p',[_vm._v(\" Service Fee Amount (Non-Refundable): \"+_vm._s(_vm._f(\"currency\")((\"\" + (_vm.reservationToCancel.nonRefundableAmount || 0))))+\" \")]),_c('p',[_vm._v(\" Convenience Fee Amount (Non-Refundable): \"+_vm._s(_vm._f(\"currency\")((\"\" + (_vm.convenienceFee || 0))))+\" \")])]):_vm._e()]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import _get from 'lodash/get'\r\n\r\nexport function data() {\r\n const authUserType = _get(this, ['$store', 'getters', 'user/authUserType'], null)\r\n const theme = _get(this, ['$store', 'state', 'theme'], {})\r\n\r\n return {\r\n theme,\r\n\r\n // this is set via the\r\n // this.$refs.reservationChooser.open ()\r\n amenityData: null,\r\n ownerID: null,\r\n amenityPaymentMethodTypes: [],\r\n amenityFees: [],\r\n amenityFeeTotal: 0,\r\n convenienceFee: 0,\r\n amenityPaymentMethod: null,\r\n amenityPaymentMethodType: null,\r\n ownerPaymentMethodID: null,\r\n newAmenityReservation: null,\r\n paymentMethods: [],\r\n authUserType,\r\n isOpen: false,\r\n loading: true,\r\n reservableTimes: [],\r\n spans: [],\r\n openings: [],\r\n reservations: [],\r\n creditCardNumber: '',\r\n cardHolderName: '',\r\n cvc: '',\r\n zipCode: '',\r\n addCreditCardPaymentMethod: false,\r\n accountAliasCreditCard: '',\r\n requestJwtToken: '',\r\n mDate: {\r\n year: null,\r\n month: null,\r\n dayOfMonth: null\r\n },\r\n\r\n /*\r\n\t\t\t1 -> main\r\n\t\t\t2 -> confirm delete panel\r\n\t\t*/\r\n showing: 1,\r\n toDelete: {},\r\n toUpdate: {\r\n proposal: {\r\n startTime: null,\r\n endTime: null\r\n }\r\n },\r\n reservationToCancel: null,\r\n allowUpdate: 0,\r\n affectedReservations: [],\r\n affectedReservationsDetails: [],\r\n\r\n masks: {\r\n creditCard: { creditCard: true }\r\n }\r\n }\r\n}\r\n","/*\r\n\timport { addAmenityReservation } from '@/services/Amenities/AmenityReservation/Post';\r\n\r\n const { successful, message } = await addAmenityReservation ({\r\n json: {\r\n amenityID: 14,\r\n reservationOwnerID: 3045,\r\n\t\t\t//\r\n\t\t\tstartDate:\r\n\t\t\tendDate:\r\n\t\t\t//\r\n reservationIdentityID: '_',\r\n //\r\n notes: \"notes about the reservation\",\r\n amenityReservation: \"?\"\r\n }\r\n });\r\n if (!successful) {\r\n console.error (message);\r\n return;\r\n }\r\n*/\r\n\r\nimport kms from '@/services/kms'\r\n\r\nexport async function addAmenityReservation({ json }) {\r\n let message = 'The amenity could not be reserved.'\r\n\r\n try {\r\n const result = await kms.post(`/Amenities/AmenityReservation`, json)\r\n\r\n return {\r\n successful: true,\r\n message,\r\n result\r\n }\r\n } catch (exception) {\r\n console.error(exception)\r\n }\r\n\r\n return {\r\n successful: false,\r\n message,\r\n result: null\r\n }\r\n}\r\n","/*\r\n\timport { deleteAmenityReservableTime } from '@/services/Amenities/AmenityReservableTime/Delete';\r\n\r\n const { successful, message } = await deleteAmenityReservableTime ({\r\n amenityReservableTimeID\r\n });\r\n if (!successful) {\r\n console.error (message);\r\n return;\r\n }\r\n*/\r\n\r\nimport kms from '@/services/kms'\r\n\r\nexport async function deleteAmenityReservableTime({ amenityReservableTimeID }) {\r\n let message = 'The amenity reservable time could not be deleted.'\r\n\r\n try {\r\n await kms.delete(`/Amenities/AmenityReservableTime/${amenityReservableTimeID}?forceDelete=true`)\r\n\r\n return {\r\n successful: true,\r\n message\r\n }\r\n } catch (exception) {\r\n console.error(exception)\r\n }\r\n\r\n return {\r\n successful: false,\r\n message\r\n }\r\n}\r\n","/*\r\n\timport { getAmenityReservation } from '@/services/Amenities/AmenityReservation/Get';\r\n\r\n const { successful, message, reservation } = await getAmenityReservation ({\r\n amenityReservationID: 56\r\n });\r\n if (!successful) {\r\n console.error (message);\r\n return;\r\n }\r\n*/\r\n\r\nimport kms from '@/services/kms'\r\n\r\nexport async function getAmenityReservation({ amenityReservationID }) {\r\n let message = 'The amenity reservation details could not be retrieved.'\r\n\r\n try {\r\n const result = await kms.get(`/Amenities/AmenityReservation/${amenityReservationID}`)\r\n\r\n return {\r\n reservation: result,\r\n successful: true,\r\n message: ''\r\n }\r\n } catch (exception) {\r\n console.error(exception)\r\n }\r\n\r\n return {\r\n reservation: null,\r\n successful: false,\r\n message\r\n }\r\n}\r\n","/*\r\n import { findMultipleReservations } from '@/services/Amenities/AmenityReservation/sequences/findMultipleReservations';\r\n\r\n const { reservations, problems } = await findMultipleReservations ({\r\n reservationIDs: [\r\n amenityReservationID,\r\n amenityReservationID,\r\n amenityReservationID\r\n ]\r\n });\r\n if (problems.length >= 1) {\r\n\r\n }\r\n*/\r\n\r\nimport { getAmenityReservation } from '../Get'\r\n\r\nexport async function findMultipleReservations({ reservationIDs }) {\r\n const results = await Promise.all(\r\n reservationIDs.map(amenityReservationID => {\r\n return getAmenityReservation({\r\n amenityReservationID\r\n })\r\n })\r\n )\r\n\r\n const problems = []\r\n const retrievals = []\r\n\r\n for (let a = 0; a < results.length; a++) {\r\n const result = results[a]\r\n const { successful } = result\r\n\r\n if (successful === true) {\r\n retrievals.push(result.reservation)\r\n } else {\r\n problems.push(result)\r\n }\r\n }\r\n\r\n return {\r\n reservations: retrievals,\r\n problems\r\n }\r\n}\r\n","/*\r\n import { deleteMultipleReservations } from '@/services/Amenities/AmenityReservation/sequences/deleteMultiple';\r\n\r\n const { successes, problems } = await deleteMultipleReservations ({\r\n reservationIDs: [\r\n amenityReservationID,\r\n amenityReservationID,\r\n amenityReservationID\r\n ]\r\n });\r\n if (problems.length >= 1) {\r\n\r\n }\r\n*/\r\n\r\nimport { deleteAmenityReservation } from '@/services/Amenities/AmenityReservation/Delete'\r\n\r\nexport async function deleteMultipleReservations({ reservationIDs }) {\r\n const results = await Promise.all(\r\n reservationIDs.map(amenityReservationID => {\r\n return deleteAmenityReservation({\r\n amenityReservationID\r\n })\r\n })\r\n )\r\n\r\n const problems = []\r\n const successes = []\r\n\r\n for (let a = 0; a < results.length; a++) {\r\n const result = results[a]\r\n const { successful } = result\r\n\r\n if (successful === true) {\r\n successes.push(result)\r\n } else {\r\n problems.push(result)\r\n }\r\n }\r\n\r\n return {\r\n successes,\r\n problems\r\n }\r\n}\r\n","// /*\r\n// import { amenityStore } from '@/services/Amenities/Amenity/store'\r\n//})\r\n// */\r\n\r\nimport Vue from 'vue'\r\nimport Vuex from 'vuex'\r\nimport { notifyProblem, notifyError, notifyMessage } from '@/services/notify'\r\nimport kms from '@/services/kms'\r\n\r\n/* eslint-disable no-empty-pattern */\r\nconst actions = {\r\n // Update Amenity\r\n async updateAmenity({ dispatch }, { payload = {}, done }) {\r\n try {\r\n const results = await kms.put(`/Amenities/Amenity/UpdateMinimal`, payload)\r\n\r\n if (this.isDebug == true) console.debug('results=' + JSON.stringify(results))\r\n\r\n if (dispatch && dispatch != undefined) console.debug(dispatch)\r\n\r\n if (results.amenityID > 0) {\r\n notifyMessage(`Successfully updated this amenity.`)\r\n done({ detail: results })\r\n } else {\r\n notifyError('There was a problem updating this amenity.')\r\n }\r\n } catch (exception) {\r\n notifyProblem(`There was a problem processing the update for this amenity.`)\r\n console.error(exception)\r\n }\r\n },\r\n\r\n //Make Payment Type List\r\n async getAmenityFeePaymentMethodTypes({}) {\r\n try {\r\n let amenityFeePaymentMethodTypes = [\r\n { value: 'creditcard', label: 'Credit Card (New)' },\r\n { value: 'stored', label: 'Credit Card (Saved)' }\r\n ]\r\n\r\n console.debug('amenityFeePaymentMethodTypes=' + JSON.stringify(amenityFeePaymentMethodTypes))\r\n\r\n return {\r\n list: amenityFeePaymentMethodTypes\r\n }\r\n } catch (exception) {\r\n notifyProblem(`There was a problem retrieving the amenity fee payment type list.`)\r\n console.error(exception)\r\n }\r\n\r\n return {\r\n list: []\r\n }\r\n }\r\n}\r\n/* eslint-enable no-empty-pattern */\r\n\r\nVue.use(Vuex)\r\nexport const amenityStore = new Vuex.Store({\r\n state: {},\r\n mutations: {},\r\n getters: {},\r\n actions\r\n})\r\n","// /*\r\n// import { amenityFeeStore } from '@/services/Amenities/AmenityFee/store'\r\n//})\r\n// */\r\n\r\nimport Vue from 'vue'\r\nimport Vuex from 'vuex'\r\nimport { notifyProblem } from '@/services/notify'\r\nimport kms from '@/services/kms'\r\n\r\n/* eslint-disable no-empty-pattern */\r\nconst actions = {\r\n //List\r\n async getAmenityFeeList({}, { amenityID }) {\r\n try {\r\n const params = {\r\n amenityID\r\n }\r\n\r\n const results = await kms.get('/Amenities/AmenityFee/List', { params })\r\n\r\n console.debug('getAmenityFeeList=' + JSON.stringify(results))\r\n\r\n return {\r\n list: results.results\r\n }\r\n } catch (exception) {\r\n notifyProblem(`The Amenity Fee list could not be retrieved.`)\r\n console.error(exception)\r\n }\r\n\r\n return {\r\n list: []\r\n }\r\n }\r\n}\r\n/* eslint-enable no-empty-pattern */\r\n\r\nVue.use(Vuex)\r\nexport const amenityFeeStore = new Vuex.Store({\r\n state: {},\r\n mutations: {},\r\n getters: {},\r\n actions\r\n})\r\n","/*\r\n\timport { compareTimes } from \"@/utilities/time/compare\"\r\n\r\n\tconst a = \"22:00:00\";\r\n\tconst b = \"09:00:00\";\r\n\r\n\tconst comparison = compareTimes (a, b);\r\n\r\n\t// results:\r\n\t// 0 -> same\r\n\t// 1 -> a (1st param) is later\r\n\t// 2 -> b (2nd param) is later\r\n\t//\r\n\t// 3 -> indeterminable\r\n\t// 4 -> indeterminable\r\n\t// 5 -> indeterminable\r\n\t// 6 -> indeterminable\r\n*/\r\n\r\n/*\r\n\t// a >= b\r\n\tif ([ 0, 1 ].includes (compareTimes (a, b))) {\r\n\t\t\r\n\t}\r\n\r\n\t// a > b\r\n\tif ([ 1 ].includes (compareTimes (a, b))) {\r\n\t\t\r\n\t}\r\n\r\n\t// b >= a\r\n\tif ([ 0, 2 ].includes (compareTimes (a, b))) {\r\n\t\r\n\t}\r\n\r\n\t// b > a\r\n\tif ([ 2 ].includes (compareTimes (a, b))) {\r\n\t\r\n\t}\r\n*/\r\n\r\n/*\r\n\t00:00:00 to 24:00:00\r\n*/\r\n\r\nimport { timeIsInvalid } from '@/utilities/time/isInvalid'\r\n\r\nexport function compareTimes(a, b) {\r\n try {\r\n const aInvalid = timeIsInvalid(a)\r\n if (aInvalid) {\r\n console.error(aInvalid)\r\n return 3\r\n }\r\n\r\n const bInvalid = timeIsInvalid(b)\r\n if (bInvalid) {\r\n console.error(bInvalid)\r\n return 4\r\n }\r\n\r\n // p -> parsed\r\n const p = {\r\n a: a.split(':').map(e => parseInt(e)),\r\n b: b.split(':').map(e => parseInt(e))\r\n }\r\n\r\n // if a and b are both either 24:00:00 or 00:00:00\r\n if ([a, b].filter(t => ['24:00:00', '00:00:00'].includes(t)).length === 2) {\r\n return 0\r\n }\r\n\r\n for (let c = 0; c <= 2; c++) {\r\n if (p.a[c] > p.b[c]) {\r\n return 1\r\n }\r\n if (p.b[c] > p.a[c]) {\r\n return 2\r\n }\r\n }\r\n\r\n if (a === b) {\r\n return 0\r\n }\r\n\r\n return 5\r\n } catch (x) {\r\n // x -> exception\r\n console.error(x)\r\n }\r\n\r\n return 6\r\n}\r\n","/*\r\n import { getTimeSpans } from '@/utilities/time/getSpans'\r\n\r\n\tconst { spans, openings } = getTimeSpans ({\r\n\t\tavailabilities: [\r\n\t\t\t[ from, to ],\r\n\t\t\t[ from, to ],\r\n\t\t\t[ from, to ],\r\n\t\t\t[ from, to ]\r\n\t\t],\r\n\t\treservations: [\r\n\t\t\t[ from, to ]\r\n\t\t]\r\n\t})\r\n*/\r\n\r\n/*\r\n\tspans -> condensed availabilities\r\n\t\tfor example:\r\n\t\t\tavailabilities:\r\n\t\t\t\t00:00:00 to 04:00:00\r\n\t\t\t\t00:00:00 to 05:00:00\r\n\r\n\t\t\tspans -> [ 00:00:00, 05:00:00 ]\r\n\r\n\topenings -> spans without reservations\r\n\t\t\tavailabilities:\r\n\t\t\t\t00:00:00 to 04:00:00\r\n\t\t\t\t00:00:00 to 05:00:00\r\n\r\n\t\t\treservations:\r\n\t\t\t\t02:00:00 to 03:00:00\r\n\r\n\t\t\topenings -> [\r\n\t\t\t\t[ 00:00:00, 02:00:00 ],\r\n\t\t\t\t[ 03:00:00, 05:00:00 ]\r\n\t\t\t]\r\n*/\r\n\r\n/*\r\n\te.g.\r\n\t\t\"08:00:00\", \"10:00:00\"\r\n\t\t\"07:00:00\", \"09:00:00\"\r\n\r\n\t\t-> [ \r\n\t\t\t\t[ \"07:00:00\", \"10:00:00\" ]\r\n\t\t\t]\r\n*/\r\n\r\nimport cloneDeep from 'lodash/cloneDeep'\r\n\r\nimport { timeIsInvalid } from '@/utilities/time/isInvalid'\r\nimport { compareTimes } from '@/utilities/time/compare'\r\n\r\nfunction determineSpans({ availabilities }) {\r\n try {\r\n const issues = []\r\n const spans = []\r\n\r\n // l -> location\r\n for (let l = 0; l < availabilities.length; l++) {\r\n const [b1, b2] = availabilities[l]\r\n const b = availabilities[l]\r\n\r\n const b1Invalid = timeIsInvalid(b1)\r\n if (b1Invalid) {\r\n issues.push({\r\n invalid: l,\r\n b1Invalid\r\n })\r\n console.debug(b1Invalid)\r\n continue\r\n }\r\n const b2Invalid = timeIsInvalid(b2)\r\n if (b2Invalid) {\r\n issues.push({\r\n invalid: l,\r\n b2Invalid\r\n })\r\n console.debug({\r\n b,\r\n invalid: l,\r\n b2Invalid\r\n })\r\n continue\r\n }\r\n\r\n if (spans.length === 0) {\r\n spans.push(b)\r\n continue\r\n }\r\n\r\n /*\r\n\t\t\t\tlooking for overlaps\r\n\r\n\t\t\t\t\tpossibilities:\r\n\t\t\t\t\t\tno overlaps -> add new span\r\n\t\t\t\t\t\tone overlap -> join spans\r\n\t\t\t\t\t\t2+ overlaps -> join all spans\r\n\r\n\t\t\t\texample:\r\n\t\t\t\t\tnew: 5 to 9\r\n\r\n\t\t\t\t\tspans:\r\n\t\t\t\t\t\t4 to 6 -> [ 4 to 9, 8 to 10 ] after first iteration\r\n\t\t\t\t\t\t8 to 10 -> [ 4 to 10 ] after second iteration\r\n\t\t\t*/\r\n let add = true\r\n for (let l2 = 0; l2 < spans.length; l2++) {\r\n const a = spans[l2]\r\n const [a1, a2] = a\r\n\r\n const comparisons = {\r\n 1: compareTimes(a1, b1),\r\n 2: compareTimes(a1, b2),\r\n 3: compareTimes(a2, b1),\r\n 4: compareTimes(a2, b2)\r\n }\r\n\r\n const a1b1 = comparisons[1]\r\n const a1b2 = comparisons[2]\r\n const a2b1 = comparisons[3]\r\n const a2b2 = comparisons[4]\r\n\r\n /*\r\n\t\t\t\t\tTODO:\r\n\t\t\t\t\t\tcheck if comparison is indeterminable,\r\n\t\t\t\t\t\tif any are indeterminable \r\n\t\t\t\t\t\t(that is the times are invalid..., etc.?)\r\n\t\t\t\t\t\tthen.....\r\n\r\n\t\t\t\t\t\t\tskip... and add the issue\r\n\r\n\t\t\t\t\t\tinvalid times should have been noticed earlier\r\n\t\t\t\t\t\tin the l1 (outer) loop though.\r\n\t\t\t\t*/\r\n\r\n /*\r\n\t\t\t\t\ta1 === b1\r\n\t\t\t\t*/\r\n if (a1b1 === 0) {\r\n const a2b2 = comparisons[4]\r\n\r\n //\r\n /*\r\n\t\t\t\t\t\ta2 === b2 -> ignore b\r\n\t\t\t\t\t\t\ta: |\r\n\t\t\t\t\t\t\tb: |\r\n\r\n\t\t\t\t\t\t\ta: [ ]\r\n\t\t\t\t\t\t\tb: [ ]\r\n\t\t\t\t\t*/\r\n if (a2b2 === 0) {\r\n add = false\r\n break\r\n }\r\n\r\n /*\r\n\t\t\t\t\t\ta2 > b2 -> ignore b\r\n\t\t\t\t\t\t\ta: [ ]\r\n\t\t\t\t\t\t\tb: [ ]\r\n\t\t\t\t\t*/\r\n if (a2b2 === 1) {\r\n add = false\r\n continue\r\n }\r\n\r\n /*\r\n\t\t\t\t\t\ta2 < b2 -> overwrite a\r\n\t\t\t\t\t\ta: [ ]\r\n\t\t\t\t\t\tb: [ ]\r\n\t\t\t\t\t*/\r\n if (a2b2 === 2) {\r\n spans[l2] = b\r\n add = false\r\n break\r\n }\r\n }\r\n\r\n /*\r\n\t\t\t\t\ta1 > b1\r\n\t\t\t\t*/\r\n if (a1b1 === 1) {\r\n /*\r\n\t\t\t\t\t\ta2 === b2 -> overwrite a\r\n\t\t\t\t\t\t\ta: [ ]\r\n\t\t\t\t\t\t b: [ ]\r\n\r\n\t\t\t\t\t\t a: |\r\n\t\t\t\t\t\t b: [ ]\r\n\t\t\t\t\t*/\r\n if (a2b2 === 0) {\r\n spans[l2] = b\r\n add = false\r\n break\r\n }\r\n\r\n /*\r\n\t\t\t\t\t\ta2 > b2\r\n\t\t\t\t\t*/\r\n if (a2b2 === 1) {\r\n /*\r\n\t\t\t\t\t\t\ta1 === b2 -> combine\r\n\t\t\t\t\t\t\t\ta: [ ]\r\n\t\t\t\t\t\t\t\tb: [ ]\r\n\r\n\t\t\t\t\t\t\ta1 < b2 -> combine\r\n\t\t\t\t\t\t\t\ta: [ ]\r\n\t\t\t\t\t\t\t b: [ ]\r\n\t\t\t\t\t\t*/\r\n if ([0, 2].includes(a1b2)) {\r\n spans[l2] = [b1, a2]\r\n add = false\r\n continue\r\n }\r\n\r\n /*\r\n\t\t\t\t\t\t a1 > b2:\r\n\t\t\t\t\t\t\t a: [ ]\r\n\t\t\t\t\t\t\t b: [ ]\r\n\r\n\t\t\t\t\t\t\tif \"add\" is never set to false,\r\n\t\t\t\t\t\t\tthis \"b\" span will be added\r\n\t\t\t\t\t\t\tto the span array \r\n\t\t\t\t\t\t*/\r\n if (a1b2 === 1) {\r\n continue\r\n }\r\n }\r\n\r\n /*\r\n\t\t\t\t\t\ta2 < b2 -> overwrite a\r\n\t\t\t\t\t*/\r\n if (a2b2 === 2) {\r\n spans[l2] = b\r\n add = false\r\n continue\r\n }\r\n }\r\n\r\n /*\r\n\t\t\t\t\ta1 < b1\r\n\t\t\t\t*/\r\n if (a1b1 === 2) {\r\n /*\r\n\t\t\t\t\t\ta2 === b2 -> ignore b\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\ta: [ ]\r\n\t\t\t\t\t\tb: [ ]\r\n\r\n\t\t\t\t\t\ta: [ |\r\n\t\t\t\t\t\tb: |\r\n\t\t\t\t\t*/\r\n if (a2b2 === 0) {\r\n add = false\r\n break\r\n }\r\n\r\n /*\r\n\t\t\t\t\t\t\ta2 > b2 -> ignore b\r\n\t\t\t\t\t\t\t\ta: [ ]\r\n\t\t\t\t\t\t\t\tb: [ ]\r\n\t\t\t\t\t*/\r\n if (a2b2 === 1) {\r\n add = false\r\n continue\r\n }\r\n\r\n // a2 < b2\r\n if (a2b2 === 2) {\r\n /*\r\n\t\t\t\t\t\t\ta2 === b1 -> combine\r\n\t\t\t\t\t\t\t\ta: [ ]\r\n\t\t\t\t\t\t\t\tb: [ ]\r\n\r\n\t\t\t\t\t\t\ta2 > b1 -> combine\r\n\t\t\t\t\t\t\t\ta: [ ]\r\n\t\t\t\t\t\t\t\tb: [ ]\r\n\t\t\t\t\t\t*/\r\n if ([0, 1].includes(a2b1)) {\r\n spans[l2] = [a1, b2]\r\n add = false\r\n break\r\n }\r\n\r\n /*\r\n\t\t\t\t\t\t\ta2 < b1 \r\n\t\t\t\t\t\t\t\ta: [ ]\r\n\t\t\t\t\t\t\t\tb: [ ]\r\n\r\n\t\t\t\t\t\t\t\tif \"add\" is never set to false,\r\n\t\t\t\t\t\t\t\tthis \"b\" span will be added\r\n\t\t\t\t\t\t\t\tto the span array \r\n\t\t\t\t\t\t*/\r\n if (a2b1 === 2) {\r\n continue\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (add) {\r\n spans.push(b)\r\n continue\r\n }\r\n }\r\n\r\n return {\r\n spans,\r\n issues\r\n }\r\n } catch (x) {\r\n console.debug(x)\r\n }\r\n\r\n return {\r\n spans: [],\r\n issues: []\r\n }\r\n}\r\n\r\nexport function getTimeSpans({ availabilities, reservations = [] }) {\r\n try {\r\n const { spans, issues: sIssues } = determineSpans({ availabilities })\r\n\r\n /*\r\n\t\t\tassuming that all spans are sequential with no overlap...\r\n\t\t*/\r\n\r\n /*\r\n\t\t\tpossible that reservation is outside of a span...\r\n\r\n\t\t\t\te.g.\r\n\r\n\t\t\t\t\ts: [||||||] [||||||||]\r\n\t\t\t\t\tr: [|||||]\r\n\t\t*/\r\n\r\n // f -> focus\r\n let oIssues = []\r\n const openings = cloneDeep(spans)\r\n for (let f1 = 0; f1 < reservations.length; f1++) {\r\n const reservation = reservations[f1]\r\n const [r1, r2] = reservation\r\n\r\n //\r\n // resolutionFound ->\r\n // \tbroken or good\r\n // before the completion of the loop\r\n //\r\n let resolutionFound = false\r\n for (let f2 = 0; f2 < openings.length; f2++) {\r\n const opening = openings[f2]\r\n const [o1, o2] = opening\r\n\r\n /*\r\n\t\t\t\t\tif r1 >= s1 and r2 <= s2 -> divide up the span\r\n\r\n\t\t\t\t\t\texample:\r\n\t\t\t\t\t\t\tspan: \t\t\t\t[ \"00:00:00\", \"24:00:00\" ] \r\n\t\t\t\t\t\t\treservation: \t[ \"04:00:00\", \"08:00:00\" ]\r\n\r\n\t\t\t\t\t\topenings [\r\n\t\t\t\t\t\t\t[ \"00:00:00\", \"04:00:00\" ],\r\n\t\t\t\t\t\t\t[ \"08:00:00\", \"24:00:00\" ],\r\n\t\t\t\t\t\t]\r\n\t\t\t\t*/\r\n\r\n const o1r1 = compareTimes(o1, r1)\r\n const o1r2 = compareTimes(o1, r2)\r\n const o2r1 = compareTimes(o2, r1)\r\n const o2r2 = compareTimes(o2, r2)\r\n\r\n if (o1r1 === 0) {\r\n if (o2r2 === 0) {\r\n // ⚠ ⚠ ⚠\r\n // reservations and openings should both\r\n // be spans of time, not points\r\n //\r\n // o: |\r\n // r: |\r\n //\r\n resolutionFound = true\r\n break\r\n }\r\n if (o2r2 === 1) {\r\n if (compareTimes(r1, r2) === 0) {\r\n // ⚠ ⚠ ⚠\r\n // reservations should both\r\n // be spans of time, not points\r\n // o: [ ]\r\n // r: |\r\n //\r\n oIssues.push({\r\n reservation\r\n })\r\n }\r\n\r\n //\r\n // o: [ ]\r\n // r: [ ]\r\n //\r\n\r\n openings[f2] = [r2, o2]\r\n resolutionFound = true\r\n break\r\n }\r\n\r\n if (o2r2 === 2) {\r\n // ⚠ ⚠ ⚠\r\n // reservation should either be fully encapsulated\r\n // by openings or not bordering on an opening\r\n //\r\n // o: [ ]\r\n // r: [ ]\r\n //\r\n openings.splice(f2, 1)\r\n oIssues.push({\r\n reservation\r\n })\r\n resolutionFound = true\r\n break\r\n }\r\n }\r\n\r\n // o1 > r1\r\n if (o1r1 === 1) {\r\n /*\r\n\t\t\t\t\t\to1 === r2\r\n\t\t\t\t\t\t\to: [ ]\r\n\t\t\t\t\t\t\tr: [ ]\r\n\t\t\t\t\t*/\r\n\r\n if (o2r2 === 0) {\r\n // ⚠ ⚠ ⚠\r\n // reservation should either be fully encapsulated\r\n // by openings or not bordering on an opening\r\n\r\n openings.splice(f2, 1)\r\n oIssues.push({\r\n reservation\r\n })\r\n resolutionFound = true\r\n break\r\n }\r\n\r\n // o2 > r2\r\n if (o2r2 === 1) {\r\n /*\r\n\t\t\t\t\t\t\to1 === r2\r\n\t\t\t\t\t\t\t\to: [ ]\r\n\t\t\t\t\t\t\t\tr: [ ]\r\n\t\t\t\t\t\t*/\r\n if (o1r2 === 0) {\r\n // ⚠ ⚠ ⚠\r\n // reservation should either be fully encapsulated\r\n // by openings or not bordering on an opening\r\n continue\r\n }\r\n\r\n /*\r\n\t\t\t\t\t\t\to1 > r2\r\n\t\t\t\t\t\t\t\to: [ ]\r\n\t\t\t\t\t\t\t\tr: [ ]\r\n\t\t\t\t\t\t*/\r\n\r\n if (o1r2 === 1) {\r\n // potentially problematic\r\n // reservation availability match not yet found\r\n continue\r\n }\r\n\r\n /*\r\n\t\t\t\t\t\t\to1 < r2\r\n\t\t\t\t\t\t\t\to: [ ]\r\n\t\t\t\t\t\t\t\tr: [ ]\r\n\t\t\t\t\t\t*/\r\n if (o1r2 === 2) {\r\n openings[f2] = [r2, o2]\r\n oIssues.push({\r\n reservation\r\n })\r\n resolutionFound = true\r\n break\r\n }\r\n }\r\n\r\n /*\r\n\t\t\t\t\t\to2 < r2\r\n\t\t\t\t\t\t\to: [ ]\r\n\t\t\t\t\t\t\tr: [ ]\r\n\t\t\t\t\t*/\r\n if (o2r2 === 2) {\r\n openings.splice(f2, 1)\r\n oIssues.push({\r\n reservation\r\n })\r\n resolutionFound = true\r\n break\r\n }\r\n }\r\n\r\n // o1 < r1\r\n if (o1r1 === 2) {\r\n if (o2r2 === 0) {\r\n openings[f2] = [o1, r1]\r\n resolutionFound = true\r\n break\r\n }\r\n\r\n /*\r\n\t\t\t\t\t\to2 > r2\r\n\t\t\t\t\t\t\to: [ ] \r\n\t\t\t\t\t\t\tr: [ ]\r\n\t\t\t\t\t*/\r\n if (o2r2 === 1) {\r\n openings[f2] = [o1, r1]\r\n openings.splice(f2 + 1, 0, [r2, o2])\r\n resolutionFound = true\r\n break\r\n }\r\n\r\n /*\r\n\t\t\t\t\t\to2 < r2\r\n\t\t\t\t\t\t\to: [ ]\r\n\t\t\t\t\t\t\tr: [ ]\r\n\t\t\t\t\t*/\r\n if (o2r2 === 2) {\r\n if (o2r1 === 0) {\r\n oIssues.push({\r\n reservation\r\n })\r\n resolutionFound = true\r\n break\r\n }\r\n\r\n if (o2r1 === 1) {\r\n openings[f2] = [o1, r1]\r\n oIssues.push({\r\n reservation\r\n })\r\n resolutionFound = true\r\n break\r\n }\r\n\r\n if (o2r2 === 2) {\r\n continue\r\n }\r\n }\r\n }\r\n\r\n //\r\n // possiby from:\r\n //\t\tinvalid time -> indeterminable comparison\r\n //\r\n\r\n oIssues.push({\r\n reservation\r\n })\r\n resolutionFound = true\r\n continue\r\n }\r\n\r\n if (!resolutionFound) {\r\n oIssues.push({\r\n reservation\r\n })\r\n }\r\n }\r\n\r\n return { spans, openings, oIssues, sIssues }\r\n } catch (x) {\r\n console.error(x)\r\n }\r\n\r\n return {\r\n spans: [],\r\n openings: []\r\n }\r\n}\r\n\r\n////////////////////\r\n","/*\r\n\timport { timeIsAvailable } from \"@/utilities/time/isAvailable\"\r\n\r\n\tconst { \r\n\t\tavailable // boolean \r\n\t} = timeIsAvailable ({\r\n\t\tcheck: [ from, to ],\r\n\t\tavailabilities: [\r\n\t\t\t[ from, to ],\r\n\t\t\t[ from, to ],\r\n\t\t\t[ from, to ],\r\n\t\t\t[ from, to ]\r\n\t\t],\r\n\t\treservations: [\r\n\t\t\t[ from, to ]\r\n\t\t]\r\n\t})\r\n*/\r\nimport { getTimeSpans } from '@/utilities/time/getSpans'\r\nimport { compareTimes } from '@/utilities/time/compare'\r\n\r\nexport function timeIsAvailable({ check, availabilities, reservations }) {\r\n const [c1, c2] = check\r\n\r\n const { openings } = getTimeSpans({\r\n availabilities,\r\n reservations\r\n })\r\n\r\n for (let f = 0; f < openings.length; f++) {\r\n const [o1, o2] = openings[f]\r\n\r\n /*\r\n\t\t\tavail if:\r\n\t\t\t\to: [ ]\r\n\t\t\t\tc:\t [ ]\r\n\t\t*/\r\n // c1 >= o1\r\n // c2 <= o2\r\n if ([0, 1].includes(compareTimes(c1, o1)) && [0, 2].includes(compareTimes(c2, o2))) {\r\n return {\r\n available: true\r\n }\r\n }\r\n }\r\n\r\n return {\r\n available: false\r\n }\r\n}\r\n","/*\r\n\timport { findReliantReservations } from '@/utilities/amenities/findReliantReservations'\r\n\r\n\tconst { reliantReservations } = findReliantReservations ({\r\n\t\t// the reservable time that is slated for removal\r\n\t\tamenityReservableTimeID,\r\n\r\n\t\treservableTimes: [],\r\n\t\treservations: []\r\n\t})\r\n*/\r\n\r\n/*\t\r\n\tspliced reservable times\r\n\treservation times\r\n\r\n\tchecking for reservations that would be invalidated\r\n*/\r\n\r\nimport { timeIsAvailable } from '@/utilities/time/isAvailable'\r\nimport { wkDaysNums } from '@/utilities/Date/constants'\r\n\r\nimport _get from 'lodash/get'\r\nimport moment from 'moment'\r\n\r\nexport function findReliantReservations({\r\n amenityReservableTimeID,\r\n reservableTimes,\r\n reservations\r\n}) {\r\n /*\r\n filters the reservable time with the ID specified\r\n */\r\n const blocks = {}\r\n reservableTimes.filter(r => {\r\n const id = _get(r, 'amenityReservableTimeID', '')\r\n if (typeof id === 'number' && id === amenityReservableTimeID) {\r\n return false\r\n }\r\n\r\n if (!Array.isArray(blocks[r.dayOfWeek])) {\r\n blocks[r.dayOfWeek] = []\r\n }\r\n blocks[r.dayOfWeek].push([r.startTime, r.endTime])\r\n\r\n return true\r\n })\r\n\r\n /*\r\n\t\tcheck for events that are on days that\r\n\t\tmight no longer have a reservable time.\r\n\r\n\t\tFor example:\r\n\t\t\tevents: \r\n\t\t\t\tTuesday, 5am to 6am\r\n\t\t\t\tTuesday, 5am to 11am\r\n\t\t\t\tFriday, 6am to 9am\r\n\t\t\t\tFriday, 4am to 7am\r\n\r\n\t\t\tblocks:\r\n\t\t\t\tTuesday, 3am to 11am\r\n\t\t\t\t[Friday, 4am to 10pm] -> up for removal\r\n\t*/\r\n\r\n const reliantReservations = []\r\n for (let a = 0; a < reservations.length; a++) {\r\n const reservation = reservations[a]\r\n\r\n const reservationDayOfWeek = wkDaysNums[moment(_get(reservation, 'startDate', '')).day() + 1]\r\n const reservableTimesOnDay = blocks[reservationDayOfWeek]\r\n\r\n if (!Array.isArray(reservableTimesOnDay) || reservableTimesOnDay.length === 0) {\r\n reliantReservations.push(reservation)\r\n continue\r\n }\r\n\r\n const check = [\r\n _get(reservation, 'startDate', '').split('T')[1],\r\n _get(reservation, 'endDate', '').split('T')[1]\r\n ]\r\n const availabilities = reservableTimesOnDay\r\n\r\n const {\r\n available // boolean\r\n } = timeIsAvailable({\r\n check,\r\n availabilities,\r\n reservations: []\r\n })\r\n if (!available) {\r\n reliantReservations.push(reservation)\r\n }\r\n }\r\n\r\n return {\r\n reliantReservations\r\n }\r\n}\r\n","/*\r\n\timport { getDuration } from '@/utilities/time/getDuration'\r\n\r\n\t// in seconds\r\n\tconst seconds = getDuration ([ \"00:00:00\", \"05:00:00\" ]);\r\n*/\r\n\r\nimport { timeIsInvalid } from '@/utilities/time/isInvalid'\r\n\r\nexport function getDuration([t1, t2]) {\r\n if (timeIsInvalid(t1)) {\r\n return null\r\n }\r\n\r\n if (timeIsInvalid(t2)) {\r\n return null\r\n }\r\n\r\n const t1Parsed = t1.split(':')\r\n const t2Parsed = t2.split(':')\r\n\r\n const parsed = {\r\n t1: {\r\n h: parseInt(t1Parsed[0]),\r\n m: parseInt(t1Parsed[1]),\r\n s: parseInt(t1Parsed[2])\r\n },\r\n t2: {\r\n h: parseInt(t2Parsed[0]),\r\n m: parseInt(t2Parsed[1]),\r\n s: parseInt(t2Parsed[2])\r\n }\r\n }\r\n\r\n const inBetween =\r\n parsed.t2.h * 3600 +\r\n parsed.t2.m * 60 +\r\n parsed.t2.s -\r\n (parsed.t1.h * 3600 + parsed.t1.m * 60 + parsed.t1.s)\r\n\r\n return inBetween\r\n}\r\n","/*\r\n import { outstandingPayment } from '@/services/Payments/HomeOwner/OutstandingPayment/store'\r\n*/\r\n\r\nimport Vue from 'vue'\r\nimport Vuex from 'vuex'\r\nimport kms from '@/services/kms'\r\nimport { notifyProblem, notifyError, notifyMessage } from '@/services/notify'\r\nconst isDebug = true\r\n\r\n/* eslint-disable no-empty-pattern */\r\nconst actions = {\r\n /*\r\n const { list } = await outstandingPayment.dispatch ('getOverallBalance', {\r\n params\r\n });\r\n */\r\n\r\n async getOneTimeFortisJwtToken({}, { hoaID }) {\r\n try {\r\n //Get the client's ip address first\r\n let path = `/FortisEpicGateway/EpicGateway/GetJwtTokenForClient?hoaID=${hoaID}`\r\n let { result } = await kms.get(path)\r\n if (result) {\r\n if (isDebug == true) console.debug('getOneTimeFortisJwtToken jwt=' + JSON.stringify(result))\r\n\r\n return {\r\n result: result.jwt\r\n }\r\n }\r\n } catch (exception) {\r\n notifyProblem(`There was a problem retrieving a security token.`)\r\n console.error(exception)\r\n }\r\n\r\n return {\r\n result: null\r\n }\r\n },\r\n\r\n async registerOneTimeToken({}, { params, jwt }) {\r\n try {\r\n if (isDebug === true)\r\n console.debug(\r\n 'in registerOneTimeToken... params=' + JSON.stringify(params) + ', jwt=' + jwt\r\n )\r\n\r\n //Get the the base url from our server\r\n const baseUrl = await kms.get('/FortisEpicGateway/EpicGateway/GetFortisBaseUrlForClient')\r\n if (isDebug === true) console.debug('baseUrl=' + baseUrl)\r\n\r\n if (baseUrl) {\r\n const path = `${baseUrl}registeronetimetoken`\r\n\r\n if (isDebug === true) console.debug('path=' + path)\r\n\r\n //Custom jwt header to fortis. This does not touch our server\r\n const { result, status } = await kms.postthirdpartyjwt(\r\n path,\r\n {\r\n method: params.method,\r\n account_number: params.account_number,\r\n routing_number: params.method === 'echeck' ? params.routing_number : null,\r\n bank_account_type: params.method === 'echeck' ? params.bank_account_type : null\r\n },\r\n jwt\r\n )\r\n\r\n if (isDebug == true) console.debug('registerOneTimeToken jwt=' + JSON.stringify(result))\r\n\r\n if (result) {\r\n return {\r\n result: result.token\r\n }\r\n } else {\r\n return {\r\n result: {\r\n status: `${status.reason_text ||\r\n 'There was a problem registering the one-time token.'}`\r\n }\r\n }\r\n }\r\n }\r\n } catch (exception) {\r\n notifyProblem(`There was a problem registering the one-time token.`)\r\n console.error(exception)\r\n }\r\n\r\n return {\r\n result: null\r\n }\r\n },\r\n\r\n async getPaymentMethodList({}, { params }) {\r\n try {\r\n let { results: paymentMethods } = await kms.get('/Roster/OwnerPaymentMethod/List', { params })\r\n\r\n if (isDebug == true) console.debug('getPaymentMethodList=' + JSON.stringify(paymentMethods))\r\n\r\n const dropDownList = paymentMethods\r\n .map(a => ({\r\n value: a.ownerPaymentMethodID != null ? a.ownerPaymentMethodID : 0,\r\n label:\r\n a.paymentMethodType != null && a.paymentMethodType.length > 0\r\n ? `${a.paymentMethodType} - ${a.lastFourDigits} ${\r\n a.accountAlias ? ' (' + a.accountAlias + ')' : ''\r\n }`\r\n : ''\r\n }))\r\n .filter(f => f.label.length > 0 && f.value > 0)\r\n\r\n dropDownList.unshift({ value: '', label: '<-Select Payment Method->' })\r\n\r\n if (isDebug == true) console.debug('...dropDownList=' + JSON.stringify(dropDownList))\r\n\r\n return {\r\n list: dropDownList\r\n }\r\n } catch (exception) {\r\n notifyProblem(`There was a problem retrieving the payment methods.`)\r\n console.error(exception)\r\n }\r\n\r\n return {\r\n list: []\r\n }\r\n },\r\n\r\n //Bank Balance Summaries\r\n async getOverallBalance({}, { params }) {\r\n try {\r\n console.debug('in getOverallBalance...' + params)\r\n const result = await kms.get(`/AccountsReceivable/LedgerQueries/GetOverallBalance`, {\r\n params\r\n })\r\n\r\n if (isDebug == true) console.debug('getOverallBalance=' + JSON.stringify(result))\r\n\r\n return {\r\n result: result\r\n }\r\n } catch (exception) {\r\n notifyProblem(`There was a problem retrieving the current balance.`)\r\n console.error(exception)\r\n }\r\n\r\n return {\r\n survey: {}\r\n }\r\n },\r\n\r\n //Service Fees\r\n async getServiceFees({}, { params }) {\r\n try {\r\n console.debug('in getServiceFees...' + params)\r\n const result = await kms.get(`/Roster/OwnerElectronicPayment/GetServiceFees`, {\r\n params\r\n })\r\n\r\n if (isDebug == true) console.debug('getServiceFees=' + JSON.stringify(result))\r\n\r\n return {\r\n result: result\r\n }\r\n } catch (exception) {\r\n notifyProblem(`There was a problem retrieving the service fees.`)\r\n console.error(exception)\r\n }\r\n\r\n return {\r\n survey: {}\r\n }\r\n },\r\n\r\n async addSendPayment({ dispatch }, { payload = {}, done }) {\r\n if (isDebug == true) console.debug('addSendPayment...' + JSON.stringify(payload.ownerID))\r\n try {\r\n let path = `?ownerID=${payload.ownerID}&ownerPaymentMethodID=${payload.ownerPaymentMethodID}&paymentAmount=${payload.paymentAmount}`\r\n\r\n if (payload.isApprovalPending !== undefined && payload.isApprovalPending === true) {\r\n let path = path + '&isApprovalPending=true'\r\n }\r\n\r\n const results = await kms.post(`/Roster/Owner/SendBillingPaymentWithWallet${path}`)\r\n\r\n if (this.isDebug == true) console.debug('results=' + JSON.stringify(results))\r\n\r\n if (dispatch && dispatch != undefined) console.debug(dispatch)\r\n\r\n if (\r\n (results &&\r\n results.status &&\r\n results.status != undefined &&\r\n results.status.reasonCode &&\r\n results.status.reasonCode != undefined &&\r\n results.status.reasonCode == '000') ||\r\n results.status.reasonCode == '001'\r\n ) {\r\n notifyMessage(`Successfully sent your outstanding payment.`)\r\n done({ invalidMessage: '' })\r\n } else {\r\n notifyError('There was a problem sending your outstanding payment.')\r\n done({ invalidMessage: '' })\r\n }\r\n } catch (exception) {\r\n if (exception && exception.message) {\r\n done({ invalidMessage: exception.message })\r\n }\r\n console.debug(`There was a problem sending your outstanding payment.`)\r\n console.error(exception)\r\n }\r\n },\r\n\r\n async addOneTimeCreditCardPayment({ dispatch }, { payload = {}, done }) {\r\n if (isDebug == true) console.debug('addOneTimeCreditCardPayment...' + JSON.stringify(payload))\r\n\r\n try {\r\n const results = await kms.post(`/Roster/Owner/MakeOneTimePaymentCreditCard`, payload)\r\n\r\n if (this.isDebug == true) console.debug('results=' + JSON.stringify(results))\r\n\r\n if (dispatch && dispatch != undefined) console.debug(dispatch)\r\n\r\n if (\r\n results &&\r\n results.status &&\r\n results.status != undefined &&\r\n results.status.reasonCode &&\r\n results.status.reasonCode != undefined &&\r\n results.status.reasonCode == '000'\r\n ) {\r\n notifyMessage('Successfully sent your one-time credit card payment.')\r\n done({ invalidMessage: '' })\r\n } else {\r\n notifyError('There was a problem sending your one-time credit card payment.')\r\n done({ invalidMessage: '', details: results })\r\n }\r\n } catch (exception) {\r\n if (exception && exception.message) {\r\n done({ invalidMessage: exception.message })\r\n }\r\n console.debug(\r\n `There was a problem sending your one-time credit card payment.` + exception.message\r\n )\r\n console.error(exception)\r\n }\r\n },\r\n\r\n async addOneTimeBankAccountPayment({ dispatch }, { payload = {}, done }) {\r\n if (isDebug == true) console.debug('addOneTimeBankAccountPayment...' + JSON.stringify(payload))\r\n try {\r\n const results = await kms.post(`/Roster/Owner/MakeOneTimePaymentBankAccount`, payload)\r\n\r\n if (this.isDebug == true) console.debug('results=' + JSON.stringify(results))\r\n\r\n if (dispatch && dispatch != undefined) console.debug(dispatch)\r\n\r\n if (\r\n results &&\r\n results.status &&\r\n results.status != undefined &&\r\n results.status.reasonCode &&\r\n results.status.reasonCode != undefined &&\r\n results.status.reasonCode == '001'\r\n ) {\r\n notifyMessage('Successfully sent your one-time e-check payment.')\r\n done({ invalidMessage: '' })\r\n } else {\r\n notifyError('There was a problem sending your one-time e-check payment.')\r\n done({ invalidMessage: '' })\r\n }\r\n } catch (exception) {\r\n if (exception && exception.message) {\r\n done({ invalidMessage: exception.message })\r\n }\r\n console.debug(`There was a problem sending your one-time e-check payment.`)\r\n console.error(exception)\r\n }\r\n }\r\n}\r\n/* eslint-enable no-empty-pattern */\r\n\r\nVue.use(Vuex)\r\nexport const outstandingPayment = new Vuex.Store({\r\n state: {},\r\n mutations: {},\r\n getters: {},\r\n actions\r\n})\r\n","/*\r\n\timport { epicGateway } from '@/services/EpicGateway/store';\r\n*/\r\n\r\nimport Vue from 'vue'\r\nimport Vuex from 'vuex'\r\nimport kms from '@/services/kms'\r\nimport { notifyProblem, notifyError } from '@/services/notify'\r\n\r\nconst isDebug = true\r\n\r\n/* eslint-disable no-empty-pattern */\r\nconst actions = {\r\n // Register Token for a credit card\r\n async addOwnerPaymentMethodCreditCard(\r\n { dispatch },\r\n {\r\n cardHolderName,\r\n expMonth,\r\n expYear,\r\n ownerUserID,\r\n paymentMethodType,\r\n lastFourDigits,\r\n token,\r\n tokenType,\r\n accountAlias,\r\n done\r\n }\r\n ) {\r\n if (isDebug == true) console.debug('...in addOwnerPaymentMethodCreditCard')\r\n try {\r\n let params = null\r\n\r\n if (paymentMethodType == 'Credit Card') {\r\n params = {\r\n method: 'credit_card',\r\n cardHolderName: cardHolderName,\r\n expMonth: expMonth,\r\n expYear: expYear,\r\n ownerUserID: ownerUserID,\r\n paymentMethodType: paymentMethodType,\r\n lastFourDigits: lastFourDigits,\r\n token,\r\n tokenType,\r\n accountAlias\r\n }\r\n }\r\n\r\n console.debug('AddOwnerPaymentMethodCreditCard params=' + JSON.stringify(params))\r\n\r\n const results = await kms.post(`/Roster/Owner/AddOwnerPaymentMethodCreditCard`, params)\r\n\r\n if (isDebug == true) console.debug('results=' + JSON.stringify(results))\r\n\r\n if (dispatch && dispatch != undefined) console.debug(dispatch)\r\n\r\n if (results) {\r\n done({ details: results })\r\n } else {\r\n notifyError('There was a problem adding the credit card payment method.')\r\n }\r\n } catch (exception) {\r\n notifyProblem(`There was a problem adding this credit card payment method.`)\r\n console.error(exception)\r\n }\r\n },\r\n\r\n async addDeferredOwnerPaymentMethodCreditCard({ dispatch }, { params, done }) {\r\n if (isDebug == true) console.debug('...in addDeferredOwnerPaymentMethodCreditCard')\r\n try {\r\n console.debug('addDeferredOwnerPaymentMethodCreditCard params=' + JSON.stringify(params))\r\n\r\n const results = await kms.post(`/Roster/Owner/AddOwnerPaymentMethodCreditCard`, params)\r\n\r\n if (isDebug == true) console.debug('results=' + JSON.stringify(results))\r\n\r\n if (dispatch && dispatch != undefined) console.debug(dispatch)\r\n\r\n if (results) {\r\n done({ details: results })\r\n } else {\r\n notifyError('There was a problem adding the deferred credit card payment method.')\r\n }\r\n } catch (exception) {\r\n notifyProblem(`There was a problem adding this deferred credit card payment method.`)\r\n console.error(exception)\r\n }\r\n },\r\n\r\n async addOwnerPaymentMethodBankAccount(\r\n { dispatch },\r\n {\r\n accountType,\r\n accountHolderName,\r\n ownerUserID,\r\n paymentMethodType,\r\n lastFourDigits,\r\n token,\r\n tokenType,\r\n accountAlias,\r\n done\r\n }\r\n ) {\r\n if (isDebug == true) console.debug('...in addOwnerPaymentMethodBankAccount')\r\n try {\r\n let params = {\r\n method: 'echeck',\r\n accountType: accountType,\r\n accountHolderName: accountHolderName,\r\n ownerUserID: ownerUserID,\r\n paymentMethodType: paymentMethodType,\r\n lastFourDigits: lastFourDigits,\r\n token: token,\r\n tokenType: tokenType,\r\n accountAlias\r\n }\r\n\r\n const results = await kms.post(`/Roster/Owner/AddOwnerPaymentMethodBankAccount`, params)\r\n\r\n if (isDebug == true) console.debug('results=' + JSON.stringify(results))\r\n\r\n if (dispatch && dispatch != undefined) console.debug(dispatch)\r\n\r\n if (results) {\r\n done({ details: results })\r\n } else {\r\n notifyError('There was a problem adding the bank account payment method.')\r\n }\r\n } catch (exception) {\r\n notifyProblem(`There was a problem adding this bank account payment method.`)\r\n console.error(exception)\r\n }\r\n },\r\n\r\n // Register Token for a credit card\r\n async registerTokenExtCreditCardMethod(\r\n { dispatch },\r\n { cardNumber, cardHolderName, expMonth, expYear, cvc, done }\r\n ) {\r\n if (isDebug == true) console.debug('...in registerTokenExtCreditCardMethod')\r\n try {\r\n const params = {\r\n method: 'credit_card',\r\n creditCard: {\r\n cardNumber: cardNumber,\r\n cardHolderName: cardHolderName,\r\n expMonth: expMonth,\r\n expYear: expYear,\r\n cvv: cvc\r\n }\r\n }\r\n const results = await kms.post(`/FortisEpicGateway/EpicGateway/RegisterTokenExt`, params)\r\n\r\n if (isDebug == true) console.debug('results=' + JSON.stringify(results))\r\n\r\n if (dispatch && dispatch != undefined) console.debug(dispatch)\r\n\r\n if (results) {\r\n done({ details: results })\r\n } else {\r\n notifyError('There was a problem adding the credit card.')\r\n }\r\n } catch (exception) {\r\n notifyProblem(`There was a problem adding this credit card.`)\r\n console.error(exception)\r\n }\r\n },\r\n\r\n // Register Token for a bank account\r\n async registerTokenExtBankAccountMethod(\r\n { dispatch },\r\n { accountType, routingNumber, accountNumber, accountHolderName, done }\r\n ) {\r\n if (isDebug == true) console.debug('...in registerTokenExtBankAccountMethod')\r\n\r\n const params = {\r\n method: 'echeck',\r\n bankAccount: {\r\n accountType: accountType,\r\n routingNumber: routingNumber,\r\n accountNumber: accountNumber,\r\n accountHolderName: accountHolderName\r\n }\r\n }\r\n\r\n try {\r\n const results = await kms.post(`/Roster/Owner/AddOwnerPaymentMethodBankAccount`, params)\r\n\r\n if (isDebug == true) console.debug('results=' + JSON.stringify(results))\r\n\r\n if (dispatch && dispatch != undefined) console.debug(dispatch)\r\n\r\n if (results) {\r\n done({ details: results })\r\n } else {\r\n notifyError('There was a problem adding the bank account.')\r\n }\r\n } catch (exception) {\r\n notifyProblem(`There was a problem adding this bank account.`)\r\n console.error(exception)\r\n }\r\n },\r\n\r\n //Make Payment Type List\r\n async getMakePaymentTypeList({}) {\r\n try {\r\n let makePaymentTypes = [\r\n { value: 'creditcard', label: 'One-time Credit Card payment' },\r\n { value: 'bankaccount', label: 'One-time Bank Account payment' },\r\n { value: 'stored', label: 'From your stored payment methods' }\r\n ]\r\n\r\n if (isDebug == true) console.debug('makePaymentTypes=' + JSON.stringify(makePaymentTypes))\r\n\r\n makePaymentTypes.unshift({ value: '', label: '<-Select Make Payment Type->' })\r\n\r\n return {\r\n list: makePaymentTypes\r\n }\r\n } catch (exception) {\r\n notifyProblem(`There was a problem retrieving the make payment type list.`)\r\n console.error(exception)\r\n }\r\n\r\n return {\r\n list: []\r\n }\r\n }\r\n}\r\n/* eslint-enable no-empty-pattern */\r\n\r\nVue.use(Vuex)\r\nexport const epicGateway = new Vuex.Store({\r\n state: {},\r\n mutations: {},\r\n getters: {},\r\n actions\r\n})\r\n","import _get from 'lodash/get'\r\nimport _cloneDeep from 'lodash/cloneDeep'\r\nimport moment from 'moment'\r\nimport { notifyMessage, notifyProblem, notifyError } from '@/services/notify'\r\nimport { addAmenityReservation } from '@/services/Amenities/AmenityReservation/Post'\r\nimport { deleteAmenityReservableTime } from '@/services/Amenities/AmenityReservableTime/Delete'\r\nimport { deleteAmenityReservation } from '@/services/Amenities/AmenityReservation/Delete'\r\nimport { findMultipleReservations } from '@/services/Amenities/AmenityReservation/sequences/findMultipleReservations'\r\nimport { deleteMultipleReservations } from '@/services/Amenities/AmenityReservation/sequences/deleteMultiple'\r\nimport { addReservableTime } from '@/services/Amenities/AmenityReservableTime/Post'\r\nimport { approveAmenityReservation } from '@/services/Amenities/AmenityReservation/ApproveReservation'\r\nimport { amenityStore } from '@/services/Amenities/Amenity/store'\r\nimport { amenityFeeStore } from '@/services/Amenities/AmenityFee/store'\r\nimport { getTimeSpans } from '@/utilities/time/getSpans'\r\nimport { compareTimes } from '@/utilities/time/compare'\r\nimport { timeIsAvailable } from '@/utilities/time/isAvailable'\r\nimport { monthNums } from '@/utilities/Date/constants'\r\nimport { toMeridian } from '@/utilities/time/toMeridian'\r\nimport { findReliantReservations } from '@/utilities/amenities/findReliantReservations'\r\nimport { getDuration } from '@/utilities/time/getDuration'\r\nimport { reservationIsApproved } from '@/utilities/amenities/reservationIsApproved'\r\nimport { getArray } from '@/utilities/get/Array'\r\nimport { outstandingPayment } from '@/services/Payments/HomeOwner/OutstandingPayment/store'\r\nimport { amenityReservationStore } from '@/services/Amenities/AmenityReservation/store'\r\nimport { epicGateway } from '@/services/EpicGateway/store'\r\nimport luhn from 'luhn'\r\n\r\nexport const methods = {\r\n _get,\r\n toMeridian,\r\n reservationIsApproved,\r\n\r\n back() {\r\n this.showing = 1\r\n },\r\n show(num) {\r\n this.showing = num\r\n this.$forceUpdate()\r\n },\r\n async closeModal() {\r\n this.isOpen = false\r\n },\r\n\r\n async approveReservationRequest({ reservation }) {\r\n this.loading = true\r\n\r\n const amenityData = this.amenityData\r\n\r\n const amenityReservationID = _get(reservation, [3, 'amenityReservationID'], null)\r\n const amenityReservableTimes = _get(amenityData, ['amenityReservableTimes'], null)\r\n const amenityReservations = _get(amenityData, ['amenityReservations'], null)\r\n\r\n const { successful, message } = await approveAmenityReservation({\r\n amenityReservationID\r\n })\r\n if (!successful) {\r\n notifyProblem(message)\r\n return\r\n } else {\r\n console.debug('reservation=' + JSON.stringify(reservation))\r\n if (reservation[3] !== undefined && reservation[3].chargeAmount !== undefined) {\r\n let chargedAmount =\r\n reservation[3].chargeAmount +\r\n reservation[3].nonRefundableAmount +\r\n this.convenienceFeeFromPercent(\r\n reservation[3].chargeAmount + reservation[3].nonRefundableAmount,\r\n reservation[3].convenienceFeeAmount\r\n )\r\n\r\n notifyMessage(\r\n `The home owner's card was charged, $` +\r\n `${chargedAmount ||\r\n 0}. The home owner 'Billing Account Activity' section will show when the payment is processed.`\r\n )\r\n }\r\n }\r\n\r\n this.parseReservableTimes({\r\n list: amenityReservableTimes\r\n })\r\n\r\n await this.parseReservations({\r\n list: amenityReservations\r\n })\r\n\r\n this.determineAvailability()\r\n\r\n this.loading = false\r\n },\r\n\r\n //\tWhen modal is opened\r\n parseReservableTimes({ list }) {\r\n const dayOfWeek = this.dayOfWeek\r\n\r\n const filtered = list.filter(entry => {\r\n return _get(entry, 'dayOfWeek', '') === dayOfWeek\r\n })\r\n\r\n const parsed = filtered.map(entry => {\r\n return [_get(entry, 'startTime', ''), _get(entry, 'endTime', ''), entry]\r\n })\r\n\r\n const { spans } = getTimeSpans({\r\n availabilities: filtered.map(entry => {\r\n return [_get(entry, 'startTime', ''), _get(entry, 'endTime', ''), entry]\r\n })\r\n })\r\n\r\n // this is the calculated availability\r\n this.spans = spans\r\n\r\n this.reservableTimes = parsed\r\n this.filteredReservableTimes = filtered\r\n },\r\n\r\n async parseReservations({ list }) {\r\n const mDate = this.mDate\r\n\r\n const filtered = list.filter(entry => {\r\n const date = moment(entry.startDate)\r\n const year = date.year()\r\n const month = date.month() + 1\r\n const dayOfMonth = date.date()\r\n\r\n if (year == mDate.year && month == mDate.month && dayOfMonth == mDate.dayOfMonth) {\r\n return true\r\n }\r\n\r\n return false\r\n })\r\n\r\n const reservationIDs = []\r\n for (let a = 0; a < filtered.length; a++) {\r\n reservationIDs.push(_get(filtered, [a, 'amenityReservationID'], null))\r\n }\r\n\r\n const { reservations, problems } = await findMultipleReservations({\r\n reservationIDs\r\n })\r\n if (problems.length >= 1) {\r\n notifyProblem(`The details about ${problems.length} could not be retrieved successfully.`)\r\n }\r\n\r\n this.reservations = reservations.map(entry => {\r\n return [\r\n moment(entry.startDate).format('HH:mm:ss'),\r\n moment(entry.endDate).format('HH:mm:ss'),\r\n _get(entry, ['identityInformation', 'name'], ''),\r\n entry\r\n ]\r\n })\r\n\r\n this.filteredReservations = filtered\r\n },\r\n determineAvailability() {\r\n const { openings } = getTimeSpans({\r\n availabilities: this.spans,\r\n reservations: this.reservations\r\n })\r\n\r\n this.openings = openings\r\n },\r\n async open({ amenityData, dayOfMonth, month, year }) {\r\n this.loading = true\r\n\r\n this.mDate = {\r\n year,\r\n month,\r\n monthStr: monthNums[month],\r\n dayOfMonth\r\n }\r\n\r\n const authUser = _get(this, ['$store', 'getters', 'user/authUser'], null)\r\n\r\n this.ownerID = this.ownerId ? this.ownerId : _get(authUser, ['ownerID'], null)\r\n\r\n this.showing = 1\r\n this.toDelete = {}\r\n this.reservableTimes = []\r\n this.spans = []\r\n this.openings = []\r\n this.reservations = []\r\n this.allowUpdate = 0\r\n this.affectedReservations = []\r\n\r\n this.date = moment(`${year}-${month}-${dayOfMonth}`, 'YYYY-MM-DD')\r\n this.dayOfWeek = this.date.format('dddd')\r\n this.amenityData = amenityData\r\n\r\n this.parseReservableTimes({\r\n list: getArray(amenityData, 'amenityReservableTimes', [])\r\n })\r\n\r\n await this.parseReservations({\r\n list: getArray(amenityData, 'amenityReservations', [])\r\n })\r\n\r\n this.determineAvailability()\r\n\r\n console.debug('in open amenityData=' + JSON.stringify(this.amenityData.amenityID))\r\n\r\n await this.loadAmenityFees(this.amenityData.amenityID)\r\n\r\n this.isOpen = true\r\n this.loading = false\r\n },\r\n\r\n //\tCancelling Reservations\r\n async confirmCancelReservation({ reservation }) {\r\n this.showing = 6\r\n this.reservationToCancel = reservation[3]\r\n\r\n if (\r\n this.reservationToCancel.convenienceFeeAmount !== undefined &&\r\n this.reservationToCancel.convenienceFeeAmount\r\n ) {\r\n this.convenienceFee = this.convenienceFeeFromPercent(\r\n this.reservationToCancel.chargeAmount + this.reservationToCancel.nonRefundableAmount,\r\n this.reservationToCancel.convenienceFeeAmount || 0\r\n )\r\n console.debug('this.convenienceFee=' + this.convenienceFee)\r\n }\r\n },\r\n\r\n convenienceFeeFromPercent(amount, percent) {\r\n if (amount && percent) {\r\n try {\r\n const percentage = percent * 0.01\r\n const percentAmount = amount * percentage\r\n return percentAmount\r\n } catch (error) {\r\n console.debug('error in convenienceFeeFromPercent=' + error)\r\n return 0\r\n }\r\n }\r\n },\r\n\r\n async cancelReservation(isOrphan) {\r\n this.loading = true\r\n\r\n const { successful, message } = await deleteAmenityReservation({\r\n amenityReservationID: this.reservationToCancel.amenityReservationID\r\n })\r\n\r\n if (!successful) {\r\n notifyProblem(message)\r\n this.loading = false\r\n return\r\n }\r\n\r\n amenityStore.commit('amenityReservationCancelled')\r\n await new Promise(resolve => {\r\n setTimeout(() => {\r\n resolve()\r\n }, 300)\r\n }).then(() => {\r\n if (this.reservationIsApproved({ reservation: this.reservationToCancel })) {\r\n console.debug('cancelWithRefund in chooser...')\r\n const payload = {\r\n amenityReservationID: this.reservationToCancel.amenityReservationID\r\n }\r\n\r\n let chargeAmount = 0\r\n let nonRefundableAmount = 0\r\n\r\n if (\r\n this.reservationToCancel !== undefined &&\r\n this.reservationToCancel &&\r\n this.reservationToCancel.chargeAmount\r\n ) {\r\n chargeAmount = this.reservationToCancel.chargeAmount\r\n }\r\n\r\n if (\r\n this.reservationToCancel.nonRefundableAmount !== undefined &&\r\n this.reservationToCancel.nonRefundableAmount\r\n ) {\r\n nonRefundableAmount = this.reservationToCancel.nonRefundableAmount\r\n\r\n if (\r\n this.reservationToCancel.convenienceFeeAmount !== undefined &&\r\n this.reservationToCancel.convenienceFeeAmount\r\n ) {\r\n nonRefundableAmount = nonRefundableAmount + this.convenienceFee\r\n }\r\n }\r\n\r\n amenityReservationStore.dispatch('cancelWithRefund', {\r\n payload,\r\n done: detail => {\r\n if (detail) {\r\n console.debug('refunded cancellation= ' + JSON.stringify(detail))\r\n\r\n if (chargeAmount > 0) {\r\n var formatter = new Intl.NumberFormat('en-US', {\r\n style: 'decimal',\r\n minimumFractionDigits: 2\r\n })\r\n\r\n let notifymessage =\r\n `This reservation was successfully cancelled with a refund of, $` +\r\n formatter.format(chargeAmount) +\r\n `. `\r\n if (nonRefundableAmount > 0) {\r\n notifymessage =\r\n notifymessage +\r\n `There is a non-refundable amount for, $` +\r\n formatter.format(nonRefundableAmount) +\r\n `.`\r\n }\r\n\r\n notifyMessage(notifymessage)\r\n } else {\r\n notifyMessage('This reservation has been successfully cancelled with a refund.')\r\n }\r\n }\r\n }\r\n })\r\n } else {\r\n if (isOrphan === undefined || !isOrphan) {\r\n notifyMessage('This reservation has been successfully cancelled.')\r\n }\r\n }\r\n })\r\n\r\n this.loading = false\r\n this.reservationToCancel = null\r\n this.refreshParent('cancelandrefund')\r\n this.isOpen = false\r\n },\r\n\r\n //\tMaking Reservations or Reservation Requests\r\n async ensureIsAvailable({ t1, t2 }) {\r\n const comparison = compareTimes(t2, t1)\r\n\r\n if (comparison === 0) {\r\n notifyProblem(\"The reservation can't start and end at the same time.\")\r\n this.loading = false\r\n return\r\n }\r\n if (comparison === 2) {\r\n notifyProblem(\"The reservation can't end before it starts.\")\r\n this.loading = false\r\n return\r\n }\r\n if (comparison >= 3) {\r\n notifyProblem('Please enter proper times for the start and end times.')\r\n console.error({ t1, t2, comparison })\r\n this.loading = false\r\n return\r\n }\r\n\r\n // const [sHour, sMinute, sSecond] = t1.split(':')\r\n // const [eHour, eMinute, eSecond] = t2.split(':')\r\n\r\n const amenityData = this.amenityData\r\n const reservationDurationLimitInMinutes = _get(\r\n amenityData,\r\n 'reservationDurationLimitInMinutes',\r\n 0\r\n )\r\n\r\n if (\r\n typeof reservationDurationLimitInMinutes === 'number' &&\r\n reservationDurationLimitInMinutes > 0\r\n ) {\r\n const proposedDurationSeconds = getDuration([t1, t2])\r\n if (typeof proposedDurationSeconds !== 'number' || proposedDurationSeconds <= 0) {\r\n notifyProblem(\r\n `A problem occurred and the duration of the reservation could not be determined.`\r\n )\r\n this.loading = false\r\n return\r\n }\r\n\r\n const reservationDurationLimitInSeconds = reservationDurationLimitInMinutes * 60\r\n if (reservationDurationLimitInSeconds < proposedDurationSeconds) {\r\n notifyProblem(\r\n `Reservations for this amenity cannot exceed ${reservationDurationLimitInMinutes} minutes.`\r\n )\r\n this.loading = false\r\n return\r\n }\r\n }\r\n\r\n const {\r\n available // boolean\r\n } = timeIsAvailable({\r\n check: [t1, t2],\r\n availabilities: this.openings,\r\n reservations: []\r\n })\r\n if (!available) {\r\n notifyProblem(\"That time slot doesn't seem to be available.\")\r\n this.loading = false\r\n return\r\n }\r\n\r\n return true\r\n },\r\n async reserve() {\r\n this.loading = true\r\n\r\n const t1 = this.$refs.fromTime.getValue()[24]\r\n const t2 = this.$refs.toTime.getValue()[24]\r\n\r\n const isAvailable = await this.ensureIsAvailable({ t1, t2 })\r\n if (isAvailable !== true) {\r\n return\r\n }\r\n\r\n const reservationOwnerID = this.ownerId\r\n ? this.ownerId\r\n : _get(this, ['$store', 'getters', 'user/authUser', 'ownerID'], null)\r\n let { year, month, dayOfMonth } = this.mDate\r\n\r\n month = month.toString()\r\n if (month.length === 1) {\r\n month = '0' + month\r\n }\r\n\r\n dayOfMonth = dayOfMonth.toString()\r\n if (dayOfMonth.length === 1) {\r\n dayOfMonth = '0' + dayOfMonth\r\n }\r\n\r\n const startDate = `${year}-${month}-${dayOfMonth}T${t1}`\r\n const endDate = `${year}-${month}-${dayOfMonth}T${t2}`\r\n\r\n const { successful, message } = await addAmenityReservation({\r\n json: {\r\n amenityID: _get(this, ['amenityData', 'amenityID'], null),\r\n reservationOwnerID,\r\n startDate,\r\n endDate,\r\n reservationIdentityID: '_',\r\n notes: 'notes about the reservation',\r\n amenityReservation: '?'\r\n }\r\n })\r\n if (!successful) {\r\n notifyProblem(message)\r\n this.loading = false\r\n return\r\n }\r\n\r\n amenityStore.commit('amenityReservationAdded')\r\n\r\n this.loading = false\r\n this.isOpen = false\r\n this.refreshParent()\r\n notifyMessage('The reservation request has been sent.')\r\n },\r\n\r\n async onFormSubmit() {\r\n let validationMessages = ''\r\n\r\n console.debug('in onFormSubmit...' + this.amenityPaymentMethodType)\r\n\r\n if (!this.amenityID || !this.reservationOwnerID || !this.startDate || !this.endDate) {\r\n validationMessages = `Please press 'Back' and select a start and end time for your amenity.`\r\n }\r\n\r\n //validation\r\n if (this.amenityPaymentMethodType) {\r\n if (this.amenityPaymentMethodType === 'stored') {\r\n if (!this.ownerPaymentMethodID) {\r\n validationMessages =\r\n validationMessages +\r\n 'Selecting a stored credit card is required to proceed with this transaction.'\r\n }\r\n } else if (this.amenityPaymentMethodType === 'creditcard') {\r\n //Validate credit card number with luhn\r\n var isValid = luhn.validate(this.creditCardNumber)\r\n\r\n if (isValid == false) {\r\n notifyError('Please enter a valid credit card number.')\r\n return\r\n }\r\n\r\n if (!this.creditCardNumber) {\r\n validationMessages = validationMessages + 'The credit card number is required.'\r\n }\r\n\r\n if (!this.cardHolderName) {\r\n validationMessages = validationMessages + ' The credit card holder name is required.'\r\n }\r\n\r\n const expMonthYear = this.$refs.cardExpirationDateComponent.getValue()\r\n if (!expMonthYear.month) {\r\n validationMessages = validationMessages + ' The expiration month is required.'\r\n }\r\n\r\n if (!expMonthYear.year) {\r\n validationMessages = validationMessages + ' The expiration year is required.'\r\n }\r\n\r\n if (!this.cvc) {\r\n validationMessages = validationMessages + ' The credit card security code is required.'\r\n }\r\n }\r\n\r\n if (this.amenityFeeTotal === 0) {\r\n validationMessages =\r\n validationMessages +\r\n ' The total fee must be a non-zero value for a transaction to take place.'\r\n }\r\n\r\n if (validationMessages !== '') {\r\n notifyProblem(validationMessages)\r\n return\r\n }\r\n\r\n const loadingComponent = this.$buefy.loading.open({\r\n container: null\r\n })\r\n try {\r\n //Add the Amenity Reservation\r\n const { successful, message, result } = await addAmenityReservation({\r\n json: {\r\n amenityID: this.amenityID,\r\n reservationOwnerID: this.reservationOwnerID,\r\n startDate: this.startDate,\r\n endDate: this.endDate,\r\n reservationIdentityID: '_',\r\n notes: '_',\r\n amenityReservation: '_'\r\n }\r\n })\r\n if (!successful) {\r\n notifyProblem(message)\r\n this.loading = false\r\n loadingComponent.close()\r\n return\r\n } else {\r\n this.newAmenityReservation = result\r\n }\r\n\r\n await this.getFortisJwtOneTimeToken()\r\n\r\n if (this.amenityPaymentMethodType && this.amenityPaymentMethodType == 'stored') {\r\n let payload = {\r\n ownerID: this.ownerId ? this.ownerId : this.authUser ? this.authUser.ownerID : 0,\r\n paymentAmount: this.amenityFeeTotal || 0,\r\n ownerPaymentMethodID: this.ownerPaymentMethodID || 0,\r\n isApprovalPending: false\r\n }\r\n\r\n if (this.isApprovalPending()) {\r\n payload.isApprovalPending = true\r\n\r\n const params = {\r\n ownerPaymentMethodID: this.ownerPaymentMethodID,\r\n tokenNumber: '',\r\n amenityReservationID: this.newAmenityReservation.amenityReservationID,\r\n isApprovalPending: true\r\n }\r\n\r\n await amenityReservationStore.dispatch('updateAmenityReservationForPaymentOnApproval', {\r\n params,\r\n done: ({ detail }) => {\r\n if (detail !== undefined && detail) {\r\n this.loading = false\r\n this.resetFormValues()\r\n loadingComponent.close()\r\n\r\n const totalWithConvenienceFee =\r\n (this.amenityFeeTotal || 0) + (this.convenienceFee || 0)\r\n\r\n var formatter = new Intl.NumberFormat('en-US', {\r\n style: 'decimal',\r\n minimumFractionDigits: 2\r\n })\r\n\r\n notifyMessage(\r\n `Your credit card will be charged, $` +\r\n `${formatter.format(\r\n totalWithConvenienceFee\r\n )}, when a board manager approves this reservation.`\r\n )\r\n this.resetFormValues()\r\n this.isOpen = false\r\n loadingComponent.close()\r\n }\r\n }\r\n })\r\n } else {\r\n console.debug('addSendPayment payload=' + JSON.stringify(payload))\r\n\r\n await outstandingPayment.dispatch('addSendPayment', {\r\n payload,\r\n done: ({ invalidMessage }) => {\r\n if (invalidMessage !== undefined && invalidMessage && invalidMessage.length > 0) {\r\n notifyError(invalidMessage)\r\n return\r\n } else {\r\n this.resetFormValues()\r\n loadingComponent.close()\r\n\r\n const totalWithConvenienceFee =\r\n (this.amenityFeeTotal || 0) + (this.convenienceFee || 0)\r\n\r\n var formatter = new Intl.NumberFormat('en-US', {\r\n style: 'decimal',\r\n minimumFractionDigits: 2\r\n })\r\n\r\n notifyMessage(\r\n `Your credit card will be charged, $` +\r\n `${formatter.format(totalWithConvenienceFee)} on the selected credit card.`\r\n )\r\n this.resetFormValues()\r\n this.isOpen = false\r\n loadingComponent.close()\r\n }\r\n }\r\n })\r\n }\r\n } else if (this.amenityPaymentMethodType && this.amenityPaymentMethodType == 'creditcard') {\r\n const lastFourDigits = this.creditCardNumber\r\n .toString()\r\n .slice(\r\n this.creditCardNumber.toString().length - 4,\r\n this.creditCardNumber.toString().length\r\n )\r\n\r\n const expMonthYear = this.$refs.cardExpirationDateComponent.getValue()\r\n\r\n const registerParams = {\r\n account_number: this.creditCardNumber || '',\r\n method: 'credit_card'\r\n }\r\n\r\n await outstandingPayment\r\n .dispatch('registerOneTimeToken', {\r\n params: registerParams,\r\n jwt: this.requestJwtToken,\r\n amount: this.amenityFeeTotal || 0,\r\n name: this.cardHolderName || '',\r\n expMonth: expMonthYear.month || '',\r\n expYear: expMonthYear.year || '',\r\n cvv: this.cvc || ''\r\n })\r\n .then(async ({ result }) => {\r\n if (result && result.status !== undefined && result.status) {\r\n notifyError(result.status)\r\n return\r\n } else if (result) {\r\n const params = {\r\n method: 'card_token',\r\n ownerUserID: this.authUser.ownerUserID,\r\n paymentMethodType: 'Credit Card',\r\n lastFourDigits: lastFourDigits,\r\n paymentAmount: this.amenityFeeTotal || 0,\r\n token: result.token_number || '',\r\n tokenType: result.token_type || '',\r\n cardHolderName: this.cardHolderName || '',\r\n expMonth: expMonthYear.month || '',\r\n expYear: expMonthYear.year || '',\r\n savePaymentMethod: this.addCreditCardPaymentMethod || false,\r\n accountAlias: this.accountAliasCreditCard || '',\r\n postalCode: this.zipCode || ''\r\n }\r\n\r\n //Register a second one-time token for saving this payment method\r\n await outstandingPayment\r\n .dispatch('registerOneTimeToken', {\r\n params: registerParams,\r\n jwt: this.requestJwtToken,\r\n amount: this.amenityFeeTotal || 0,\r\n name: this.cardHolderName || '',\r\n expMonth: expMonthYear.month || '',\r\n expYear: expMonthYear.year || '',\r\n cvv: this.cvc || ''\r\n })\r\n .then(async ({ result }) => {\r\n if (result && result.status !== undefined && result.status) {\r\n notifyError(result.status)\r\n return\r\n } else if (result) {\r\n params.savePaymentToken = result.token_number\r\n\r\n if (this.isApprovalPending()) {\r\n params.isApprovalPending = true\r\n params.amenityReservationID = this.newAmenityReservation.amenityReservationID\r\n params.savePaymentMethod = true\r\n\r\n await epicGateway.dispatch('addDeferredOwnerPaymentMethodCreditCard', {\r\n params,\r\n done: async ({ details }) => {\r\n //auto-close modal\r\n if (details) {\r\n this.loading = false\r\n this.resetFormValues()\r\n loadingComponent.close()\r\n totalWithConvenienceFee\r\n\r\n const totalWithConvenienceFee =\r\n (this.amenityFeeTotal || 0) + (this.convenienceFee || 0)\r\n\r\n var formatter = new Intl.NumberFormat('en-US', {\r\n style: 'decimal',\r\n minimumFractionDigits: 2\r\n })\r\n\r\n notifyMessage(\r\n `Your credit card will be charged, $` +\r\n `${formatter.format(\r\n totalWithConvenienceFee\r\n )}, when a board manager approves this reservation.`\r\n )\r\n this.resetFormValues()\r\n this.isOpen = false\r\n loadingComponent.close()\r\n }\r\n }\r\n })\r\n } else {\r\n await outstandingPayment.dispatch('addOneTimeCreditCardPayment', {\r\n payload: params,\r\n done: ({ invalidMessage }) => {\r\n if (\r\n invalidMessage !== undefined &&\r\n invalidMessage &&\r\n invalidMessage.length > 0\r\n ) {\r\n notifyError(invalidMessage)\r\n return\r\n } else {\r\n this.loading = false\r\n this.resetFormValues()\r\n loadingComponent.close()\r\n const totalWithConvenienceFee =\r\n (this.amenityFeeTotal || 0) + (this.convenienceFee || 0)\r\n\r\n notifyMessage(\r\n `Your credit card was charged, $` +\r\n `${totalWithConvenienceFee}. Check your 'Billing Account Activity' section to see when the payment is processed.`\r\n )\r\n this.resetFormValues()\r\n this.isOpen = false\r\n loadingComponent.close()\r\n }\r\n }\r\n })\r\n }\r\n }\r\n })\r\n }\r\n })\r\n }\r\n } catch (e) {\r\n notifyError('There was a problem adding your payment method for a credit card.' + e)\r\n loadingComponent.close()\r\n }\r\n\r\n loadingComponent.close()\r\n this.refreshParent('chooser')\r\n }\r\n },\r\n\r\n isApprovalPending() {\r\n const requiresApproval =\r\n _get(this.amenityData, ['requiresApproval'], false) &&\r\n !reservationIsApproved({ reservation: _get(this.reservation, [3], null) })\r\n\r\n console.debug('requires approval=' + requiresApproval)\r\n\r\n return requiresApproval\r\n },\r\n\r\n async getFortisJwtOneTimeToken() {\r\n await outstandingPayment\r\n .dispatch('getOneTimeFortisJwtToken', {\r\n hoaID: this.hoaId\r\n })\r\n .then(({ result }) => {\r\n if (result) {\r\n if (this.isDebug === true)\r\n console.debug('getOneTimeFortisJwtToken' + JSON.stringify(result))\r\n\r\n if (result) {\r\n this.requestJwtToken = result\r\n }\r\n }\r\n })\r\n },\r\n\r\n async loadServiceFees() {\r\n console.debug('in loadServices...')\r\n\r\n const params = {\r\n hoaID: this.hoaId\r\n }\r\n\r\n await outstandingPayment\r\n .dispatch('getServiceFees', {\r\n params: params\r\n })\r\n .then(({ result }) => {\r\n if (result) {\r\n const percentage = Number.parseFloat(result.creditCardPercentageServiceFee) * 0.01\r\n console.debug('percentage=' + percentage)\r\n const creditCardPercentage = percentage * this.amenityFeeTotal || 0\r\n console.debug('creditCardPercentage=' + creditCardPercentage)\r\n console.debug('amenityPaymentMethodType=' + this.amenityPaymentMethodType)\r\n this.convenienceFee = creditCardPercentage\r\n console.debug('creditCardPercentage...' + creditCardPercentage)\r\n }\r\n })\r\n },\r\n\r\n async requestReservation(continueToFees) {\r\n this.loading = true\r\n\r\n console.debug('mDate=' + JSON.stringify(this.mDate))\r\n\r\n const t1 = this.$refs.fromTime.getValue()[24]\r\n const t2 = this.$refs.toTime.getValue()[24]\r\n\r\n const isAvailable = await this.ensureIsAvailable({ t1, t2 })\r\n if (isAvailable !== true) {\r\n this.loading = false\r\n return\r\n }\r\n\r\n const reservationOwnerID = this.ownerId\r\n ? this.ownerId\r\n : _get(this, ['$store', 'getters', 'user/authUser', 'ownerID'], null)\r\n let { year, month, dayOfMonth } = this.mDate\r\n\r\n month = month.toString()\r\n if (month.length === 1) {\r\n month = '0' + month\r\n }\r\n\r\n dayOfMonth = dayOfMonth.toString()\r\n if (dayOfMonth.length === 1) {\r\n dayOfMonth = '0' + dayOfMonth\r\n }\r\n\r\n const startDate = `${year}-${month}-${dayOfMonth}T${t1}`\r\n const endDate = `${year}-${month}-${dayOfMonth}T${t2}`\r\n\r\n if (month === '' || year === '') {\r\n notifyProblem('Please enter a start and end dates for the new reservation request.')\r\n return\r\n }\r\n\r\n //Instead of Adding this, store in session\r\n if (continueToFees !== undefined && continueToFees === true) {\r\n //Store an amenity reservation in session\r\n this.$store.dispatch('amenity/saveAmenityID', {\r\n amenityID: _get(this, ['amenityData', 'amenityID'], null)\r\n })\r\n this.$store.dispatch('amenity/saveReservationOwnerID', {\r\n reservationOwnerID\r\n })\r\n this.$store.dispatch('amenity/saveStartDate', {\r\n startDate\r\n })\r\n this.$store.dispatch('amenity/saveEndDate', {\r\n endDate\r\n })\r\n\r\n console.debug('session state=' + this.amenityID)\r\n\r\n this.reservationFees()\r\n } else {\r\n const { successful, message } = await addAmenityReservation({\r\n json: {\r\n amenityID: _get(this, ['amenityData', 'amenityID'], null),\r\n reservationOwnerID,\r\n startDate,\r\n endDate,\r\n reservationIdentityID: '_',\r\n notes: '_',\r\n amenityReservation: '_'\r\n }\r\n })\r\n if (!successful) {\r\n notifyProblem(message)\r\n this.loading = false\r\n return\r\n }\r\n\r\n amenityStore.commit('amenityReservationAdded')\r\n this.refreshParent()\r\n notifyMessage('The reservation request has been sent.')\r\n\r\n this.loading = false\r\n this.isOpen = false\r\n }\r\n\r\n await this.loadServiceFees()\r\n },\r\n\r\n async checkBeforeClose() {\r\n console.debug('checkBeforeClose()...')\r\n\r\n if (\r\n this.newAmenityReservation !== undefined &&\r\n this.newAmenityReservation &&\r\n !this.newAmenityReservation.ownerPaymentMethodID\r\n ) {\r\n //Remove the orphan\r\n this.reservationToCancel = this.newAmenityReservation\r\n this.cancelReservation(true)\r\n }\r\n },\r\n\r\n resetFormValues() {\r\n this.creditCardNumber = ''\r\n this.cardHolderName = ''\r\n this.cvc = ''\r\n this.zipCode = ''\r\n this.accountAliasCreditCard = ''\r\n this.ownerPaymentMethodID = 0\r\n this.newAmenityReservation = null\r\n this.amenityPaymentMethodType = ''\r\n this.$store.dispatch('amenity/initStates')\r\n },\r\n\r\n async reservationFees() {\r\n this.loading = true\r\n\r\n console.debug('reservationFees...' + this.isApprovalPending())\r\n this.showing = 8\r\n\r\n this.loadAmenityFees()\r\n\r\n this.loading = false\r\n },\r\n\r\n async loadPaymentMethodTypes() {\r\n this.loading = true\r\n await amenityStore.dispatch('getAmenityFeePaymentMethodTypes').then(t => {\r\n if (t && t.list && t.list != undefined) {\r\n this.amenityPaymentMethodTypes = t.list\r\n }\r\n })\r\n this.loading = false\r\n },\r\n\r\n async loadAmenityFees(amenityID) {\r\n this.loading = true\r\n\r\n console.debug('amenityData=' + JSON.stringify(this.amenityData))\r\n\r\n if (amenityID <= 0) {\r\n amenityID = _get(this, ['amenityData', 'amenityID'], null)\r\n }\r\n\r\n if (amenityID > 0) {\r\n try {\r\n await amenityFeeStore\r\n .dispatch('getAmenityFeeList', {\r\n amenityID\r\n })\r\n .then(t => {\r\n console.debug('amenity fees=' + JSON.stringify(t))\r\n\r\n if (t && t.list && t.list != undefined) {\r\n this.amenityFees = t.list\r\n }\r\n\r\n this.amenityFeeTotal = this.amenityFees.reduce((acc, item) => acc + item.amount, 0)\r\n })\r\n } catch (error) {\r\n console.debug(error.message)\r\n }\r\n }\r\n this.loading = false\r\n },\r\n\r\n async loadPaymentMethods() {\r\n const selectedOwnerUser = this.authUser.ownerUsers.filter(f => f.ownerID === this.ownerId)\r\n const ownerUserID =\r\n selectedOwnerUser[0] !== undefined && selectedOwnerUser[0]\r\n ? selectedOwnerUser[0].ownerUserID\r\n : this.authUser\r\n ? this.authUser.ownerUserID\r\n : 0\r\n\r\n if (ownerUserID !== undefined && ownerUserID > 0) {\r\n const params = {\r\n ownerUserID: ownerUserID\r\n }\r\n\r\n await outstandingPayment\r\n .dispatch('getPaymentMethodList', {\r\n params: params\r\n })\r\n .then(({ list }) => {\r\n if (list) {\r\n this.paymentMethods = list.filter(\r\n f => f !== undefined && f && f.label.indexOf('Credit Card') > -1\r\n )\r\n }\r\n })\r\n }\r\n },\r\n\r\n //\tDeleting Reservable Times\r\n confirmDeleteReservableTime({ reservableTime }) {\r\n const reservableTimeDayOfWeek = _get(reservableTime, [2, 'dayOfWeek'], null)\r\n\r\n const amenityReservableTimeID = _get(reservableTime, [2, 'amenityReservableTimeID'], null)\r\n const allReservations = this.amenityData.amenityReservations\r\n const reservableTimes = this.amenityData.amenityReservableTimes.filter(r => {\r\n const id = _get(r, 'amenityReservableTimeID', '')\r\n if (typeof id === 'number' && id === amenityReservableTimeID) {\r\n return false\r\n }\r\n\r\n return true\r\n })\r\n\r\n const { reliantReservations } = findReliantReservations({\r\n amenityReservableTimeID,\r\n reservableTimes,\r\n reservations: allReservations\r\n })\r\n\r\n this.toDelete = {\r\n reservableTimeDayOfWeek,\r\n startTime: toMeridian(_get(reservableTime, [2, 'startTime'], null)),\r\n endTime: toMeridian(_get(reservableTime, [2, 'endTime'], null)),\r\n amenityReservableTimeID,\r\n reliantReservations: reliantReservations.map(rr => {\r\n return [\r\n moment(rr.startDate).format('LLLL'),\r\n moment(rr.endDate).format('LLLL'),\r\n _get(rr, ['identityInformation', 'name'], '__'),\r\n rr\r\n ]\r\n })\r\n }\r\n this.showing = 2\r\n },\r\n\r\n async deleteReservableTime() {\r\n this.loading = true\r\n\r\n const toDelete = this.toDelete\r\n const reliantReservations = toDelete.reliantReservations\r\n\r\n const problems = []\r\n let successes = 0\r\n for (let a = 0; a < reliantReservations.length; a++) {\r\n const reliantReservation = reliantReservations[a]\r\n const amenityReservationID = _get(reliantReservations, [a, 3, 'amenityReservationID'], null)\r\n\r\n if (typeof amenityReservationID !== 'number') {\r\n problems.push(reliantReservation)\r\n continue\r\n }\r\n\r\n const { successful, message } = await deleteAmenityReservation({\r\n amenityReservationID\r\n })\r\n if (!successful) {\r\n problems.push(reliantReservation, message)\r\n continue\r\n }\r\n\r\n successes++\r\n }\r\n\r\n const { amenityReservableTimeID } = toDelete\r\n const { successful, message } = await deleteAmenityReservableTime({\r\n amenityReservableTimeID\r\n })\r\n if (!successful) {\r\n notifyProblem(message)\r\n return\r\n }\r\n\r\n amenityStore.commit('amenityReservableTimeRemoved')\r\n\r\n this.deleted = {\r\n problems,\r\n successes\r\n }\r\n\r\n this.loading = false\r\n this.showing = 3\r\n },\r\n\r\n //\tEditing Reservable Times\r\n //\r\n // edit button -> confirmEditReservableTime\r\n //\r\n // updaterOnUpdate\r\n // called every time a time input is changed\r\n confirmEditReservableTime({ reservableTime }) {\r\n this.toUpdate = {\r\n startTime: reservableTime[0],\r\n endTime: reservableTime[1],\r\n dayOfWeek: reservableTime[2].dayOfWeek,\r\n reservableTime,\r\n proposal: {\r\n startTime: null,\r\n endTime: null\r\n }\r\n }\r\n\r\n this.showing = 4\r\n },\r\n\r\n /*\r\n\t\tremove the reservable time in question,\r\n\t\tadd the new reservable time,\r\n\r\n\t\t\tdetermine if all reservations are still available or not\r\n\t*/\r\n updaterOnUpdate() {\r\n this.affectedReservations = []\r\n this.affectedReservationsDetails = []\r\n\r\n const editFromTime = this.$refs.editFromTime.getValue()\r\n const editToTime = this.$refs.editToTime.getValue()\r\n\r\n if (!editFromTime.isValid || !editToTime.isValid) {\r\n console.debug('time is not valid')\r\n return\r\n }\r\n\r\n // is start time before end time?\r\n const comparison = compareTimes(editFromTime[24], editToTime[24])\r\n if (comparison !== 2) {\r\n this.allowUpdate = 2\r\n return\r\n }\r\n\r\n const reservableTime = _get(this, ['toUpdate', 'reservableTime', 2], null)\r\n const idToRemove = _get(reservableTime, ['amenityReservableTimeID'], null)\r\n const reservableTimes = this.amenityData.amenityReservableTimes.filter(r => {\r\n const id = _get(r, 'amenityReservableTimeID', '')\r\n if (typeof id === 'number' && id === idToRemove) {\r\n return false\r\n }\r\n\r\n return true\r\n })\r\n\r\n reservableTimes.push({\r\n amenityReservableTimeID: null,\r\n dayOfWeek: this.toUpdate.dayOfWeek,\r\n startTime: editFromTime[24],\r\n endTime: editToTime[24]\r\n })\r\n\r\n const { reliantReservations } = findReliantReservations({\r\n amenityReservableTimeID: 0,\r\n reservableTimes,\r\n reservations: this.amenityData.amenityReservations\r\n })\r\n\r\n this.toUpdate.proposal = {\r\n dayOfWeek: this.toUpdate.dayOfWeek,\r\n startTime: editFromTime[24],\r\n endTime: editToTime[24]\r\n }\r\n\r\n /*\r\n\t\t determines if any of the reservations would be cancelled\r\n\t\t\t because of the edit\r\n\t\t*/\r\n this.affectedReservations = _cloneDeep(reliantReservations).map(rr => {\r\n return [\r\n moment(rr.startDate).format('LLLL'),\r\n moment(rr.endDate).format('LLLL'),\r\n _get(rr, ['identityInformation', 'name'], '__'),\r\n rr\r\n ]\r\n })\r\n\r\n this.allowUpdate = 1\r\n },\r\n confirmUpdateReservableTime() {\r\n this.showing = 5\r\n },\r\n async updateReservableTime() {\r\n this.loading = true\r\n\r\n /*\r\n\t\t\tDelete affected reservations\r\n\t\t*/\r\n const ids = []\r\n const affectedReservations = this.affectedReservations\r\n for (let a = 0; a < affectedReservations.length; a++) {\r\n ids.push(affectedReservations[a][3].amenityReservationID)\r\n }\r\n\r\n const { problems } = await deleteMultipleReservations({\r\n reservationIDs: ids\r\n })\r\n if (problems.length >= 1) {\r\n notifyProblem(`${problems.length} of the reservations were not cancelled.`)\r\n return\r\n }\r\n\r\n const reservableTime = _get(this, ['toUpdate', 'reservableTime', 2], null)\r\n const amenityReservableTimeID = _get(reservableTime, ['amenityReservableTimeID'], null)\r\n\r\n const reservableTimeProposal = _get(this, ['toUpdate', 'proposal'], null)\r\n const dayOfWeek = _get(reservableTimeProposal, ['dayOfWeek'], null)\r\n const startTime = _get(reservableTimeProposal, ['startTime'], null)\r\n const endTime = _get(reservableTimeProposal, ['endTime'], null)\r\n\r\n /*\r\n\t\t\tUpdate reservable time\r\n\t\t*/\r\n const { successful, message } = await deleteAmenityReservableTime({\r\n amenityReservableTimeID\r\n })\r\n if (!successful) {\r\n notifyProblem(message)\r\n }\r\n\r\n const { successful: addedSuccessfully, message: addMessage } = await addReservableTime({\r\n json: {\r\n // amenityReservableTimeID,\r\n amenityID: _get(this, ['amenityData', 'amenityID'], null),\r\n dayOfWeek,\r\n startTime,\r\n endTime,\r\n cleanupDurationInMinutes: 0\r\n }\r\n })\r\n if (!addedSuccessfully) {\r\n notifyProblem(addMessage)\r\n }\r\n\r\n notifyMessage(\r\n `The reservable time has been updated. ${ids.length} reservation${\r\n ids.length === 1 ? '' : 's'\r\n } or reservation request${ids.length === 1 ? '' : 's'} have been cancelled.`\r\n )\r\n\r\n amenityStore.commit('amenityReservationAdded')\r\n\r\n this.isOpen = false\r\n this.loading = false\r\n }\r\n}\r\n","import { mapState, mapGetters } from 'vuex'\r\n\r\nexport const computed = {\r\n ...mapState({\r\n breakpoint: state => state.win.breakpoint,\r\n hoaId: state => state.user.selectedHoaId,\r\n ownerId: state => state.user.homeownerSelectedUnit.ownerId,\r\n ...mapGetters('user', ['authUser']),\r\n ...mapGetters('amenity', ['amenityID', 'reservationOwnerID', 'startDate', 'endDate'])\r\n })\r\n}\r\n","\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=64cad916&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&lang=scss&scope=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 null,\n null\n \n)\n\nexport default component.exports","export function beforeDestroy() {\r\n this.unsubAmenityStore()\r\n}\r\n","/*\r\n\tBoth:\r\n\t\tReservable Times\r\n\t\tAvailability\r\n\r\n\r\n\tApproval Required:\r\n\t\tHome Owner:\r\n\t\t\tYour Reservations\r\n\t\t\tYour Reservation Requests\r\n\r\n\t\tManager:\r\n\t\t\tAll Reservations\r\n\t\t\tAll Reservation Requests\r\n\t\t\r\n\r\n\tApproval Not Required:\r\n\t\tHome Owner:\r\n\t\t\tYour Reservations\r\n\r\n\t\tManager:\r\n\t\t\tAll Reservations\r\n*/\r\n\r\nimport { mapState, mapGetters } from 'vuex'\r\n\r\nexport const computed = {\r\n ...mapGetters('user', ['authUser', 'currentHoaId', 'currentOwnerId']),\r\n ...mapState({\r\n breakpoint: state => state.win.breakpoint\r\n }),\r\n portal() {\r\n if (this.authUserType === 'HomeOwner') {\r\n return 1\r\n }\r\n if (this.authUserType === 'Account') {\r\n return 2\r\n }\r\n\r\n return null\r\n },\r\n homeOwnerDisplays() {\r\n //\r\n // these values are mapped to 'showing'\r\n // same as managementDisplays\r\n //\r\n\r\n const total = this.total\r\n const requiresApproval = this.requiresApproval\r\n\r\n const allReservationsText = requiresApproval ? 'All Approved Reservations' : 'All Reservations'\r\n\r\n const yourReservationsText = requiresApproval\r\n ? 'Your Approved Reservations'\r\n : 'Your Reservations'\r\n\r\n const options = [\r\n {\r\n text: 'Availability',\r\n value: 2\r\n },\r\n {\r\n text: `Reservable Times (${total.reservableTimes} total)`,\r\n value: 1\r\n },\r\n {\r\n text: [\r\n yourReservationsText,\r\n `(${total.yourFutureReservations} current/future)`,\r\n `(${total.yourPastReservations} past)`\r\n ].join(' '),\r\n value: 3\r\n },\r\n ...(requiresApproval === true\r\n ? [\r\n {\r\n text: [\r\n `Your Pending Reservation Requests`,\r\n `(${total.yourFutureReservationRequests} current/future)`,\r\n `(${total.yourPastReservationRequests} past)`\r\n ].join(' '),\r\n value: 4\r\n }\r\n ]\r\n : []),\r\n {\r\n text: [\r\n allReservationsText,\r\n `(${total.futureReservations} current/future)`,\r\n `(${total.pastReservations} past)`\r\n ].join(' '),\r\n value: 5\r\n },\r\n ...(requiresApproval === true\r\n ? [\r\n {\r\n text: [\r\n 'All Pending Reservation Requests',\r\n `(${total.futureReservationRequests} current/future)`,\r\n `(${total.pastReservationRequests} past)`\r\n ].join(' '),\r\n value: 6\r\n }\r\n ]\r\n : [])\r\n ]\r\n\r\n return options\r\n },\r\n managementDisplays() {\r\n //\r\n // these values are mapped to 'showing'\r\n // same as homeOwnerDisplays\r\n //\r\n\r\n const total = this.total\r\n const requiresApproval = this.requiresApproval\r\n\r\n const allReservationsText = requiresApproval ? 'All Approved Reservations' : 'All Reservations'\r\n\r\n const options = [\r\n {\r\n text: 'Availability',\r\n value: 2\r\n },\r\n\r\n {\r\n text: `Reservable Times (pre-reservations) (${total.reservableTimes} total)`,\r\n value: 1\r\n },\r\n\r\n {\r\n text: [\r\n allReservationsText,\r\n `(${total.futureReservations} current/future)`,\r\n `(${total.pastReservations} past)`\r\n ].join(' '),\r\n value: 5\r\n },\r\n\r\n ...(requiresApproval === true\r\n ? [\r\n {\r\n text: [\r\n 'All Pending Reservation Requests',\r\n `(${total.futureReservationRequests} current/future)`,\r\n `(${total.pastReservationRequests} past)`\r\n ].join(' '),\r\n value: 6\r\n }\r\n ]\r\n : [])\r\n ]\r\n\r\n return options\r\n }\r\n}\r\n","import _get from 'lodash/get'\r\n\r\nexport function data() {\r\n const authUserType = _get(this, ['$store', 'getters', 'user/authUserType'], null)\r\n\r\n return {\r\n authUserType,\r\n showing: 2,\r\n reservationDurationLimitInMinutes: null,\r\n requiresApproval: null,\r\n name: '',\r\n loading: false,\r\n dayTappedDay: null,\r\n dayTappedMonth: null,\r\n dayTappedYear: null,\r\n attributes: [],\r\n events: [],\r\n months: [\r\n 'January',\r\n 'February',\r\n 'March',\r\n 'April',\r\n 'May',\r\n 'June',\r\n 'July',\r\n 'August',\r\n 'September',\r\n 'October',\r\n 'November',\r\n 'December'\r\n ],\r\n shown: {\r\n year: null,\r\n month: null\r\n },\r\n reservableTimes: [],\r\n\r\n /*\r\n\t\t\tmanagement\r\n\t\t\t\tall reservations\r\n\t\t\t\tall reservation requests\r\n\t\t\t\t\r\n\t\t\t\treservable times\r\n\r\n\t\t\towner specific\r\n\t\t\t\tyour future reservations\r\n\t\t\t\tyour past reservations\r\n\r\n\t\t\t\tyour future reservation requests\r\n\t\t\t\tyour past reservation requests\r\n\r\n\t\t\tboth\r\n\t\t\t\tavailibility\r\n\t\r\n\t\t*/\r\n total: {\r\n // reservations: '__',\r\n // yourReservations: '__',\r\n reservableTimes: '__',\r\n //\r\n // allFutureReservationRequests: '__',\r\n // futurePendingReservations: '__',\r\n yourFutureReservations: '__',\r\n yourPastReservations: '__',\r\n yourFutureReservationRequests: '__',\r\n yourPastReservationRequests: '__',\r\n futureReservations: '__',\r\n pastReservations: '__',\r\n futureReservationRequests: '__',\r\n pastReservationRequests: '__'\r\n },\r\n //\r\n found: false\r\n }\r\n}\r\n","/*\r\n\timport { getAmenity } from '@/services/Amenities/Amenity/Get';\r\n\r\n const { successful, message, data } = await getAmenity ({\r\n amenityID\r\n });\r\n if (!successful) {\r\n console.error (message);\r\n return;\r\n }\r\n*/\r\n\r\nimport kms from '@/services/kms'\r\n\r\nexport async function getAmenity({ amenityID }) {\r\n let message = 'The amenity could not be retrieved.'\r\n\r\n try {\r\n const data = await kms.get(`/Amenities/Amenity/${amenityID}`)\r\n\r\n return {\r\n successful: true,\r\n message: '',\r\n data\r\n }\r\n } catch (exception) {\r\n console.error(exception)\r\n }\r\n\r\n return {\r\n successful: false,\r\n message,\r\n data: null\r\n }\r\n}\r\n","/*\r\n\tplan:\r\n\t\tget the reservable times for a particular\r\n\t\tday of the week?\r\n\r\n\timport { filterReservableTimes } from \"@/utilities/amenities/filterReservableTimes\"\r\n\r\n\tconst { reservableTimes } = filterReservableTimes ({\r\n\t\tamenityReservableTimes: [{\r\n\t\t\tstartTime: \"\",\r\n\t\t\tendTime: \"\"\r\n\t\t},{\r\n\t\t\tstartTime: \"\",\r\n\t\t\tendTime: \"\"\r\n\t\t}]\r\n\t})\r\n\r\n\t\r\n\t// returns\r\n\t// const reservableTimes = {\r\n\t// \t\"Sunday\": [],\r\n\t// \t\"Monday\": [],\r\n\t// \t\"Tuesday\": [],\r\n\t// \t\"Wednesday\": [],\r\n\t// \t\"Thursday\": [],\r\n\t// \t\"Friday\": [],\r\n\t// \t\"Saturday\": [],\r\n\t// };\r\n*/\r\n\r\nimport _get from 'lodash/get'\r\n\r\nexport function filterReservableTimes({ amenityReservableTimes }) {\r\n const list = amenityReservableTimes\r\n\r\n const wkDays = {\r\n Sunday: [],\r\n Monday: [],\r\n Tuesday: [],\r\n Wednesday: [],\r\n Thursday: [],\r\n Friday: [],\r\n Saturday: []\r\n }\r\n\r\n for (let a = 0; a < list.length; a++) {\r\n const entry = list[a]\r\n\r\n const startTime = _get(entry, 'startTime', '')\r\n const endTime = _get(entry, 'endTime', '')\r\n const wkDay = _get(entry, 'dayOfWeek', '')\r\n\r\n wkDays[wkDay].push({\r\n startTime,\r\n endTime\r\n })\r\n }\r\n\r\n return { reservableTimes: wkDays }\r\n}\r\n","import _get from 'lodash/get'\r\nimport moment from 'moment'\r\nimport { getAmenity } from '@/services/Amenities/Amenity/Get'\r\nimport { notifyProblem } from '@/services/notify'\r\nimport { allDatesInMonth } from '@/utilities/Date/allDatesInMonth'\r\nimport { wkDaysNums, monthNums, monthStrs } from '@/utilities/Date/constants'\r\nimport { timeIsInvalid } from '@/utilities/time/isInvalid'\r\nimport { getTimeSpans } from '@/utilities/time/getSpans'\r\nimport { toMeridian } from '@/utilities/time/toMeridian'\r\nimport { filterReservableTimes } from '@/utilities/amenities/filterReservableTimes'\r\nimport { parseReservations } from '@/utilities/amenities/parseReservations'\r\nimport { reservationIsApproved } from '@/utilities/amenities/reservationIsApproved'\r\nimport { calcOwnerEventTotals } from '@/utilities/amenities/calculate/ownerEventTotals'\r\n\r\nexport const methods = {\r\n async calendarUpdate() {\r\n const { year, month } = this.$refs.calendar.getInfo()\r\n this.shown.year = year\r\n this.shown.month = monthNums[month]\r\n\r\n await this.show()\r\n },\r\n\r\n dayTapped({ dayOfMonth, month, year }) {\r\n this.dayTappedDay = dayOfMonth\r\n this.dayTappedMonth = month\r\n this.dayTappedYear = year\r\n\r\n this.$refs.reservationChooser.open({\r\n amenityData: this.amenityData,\r\n dayOfMonth,\r\n month,\r\n year\r\n })\r\n },\r\n\r\n calculateYourReservationCounts() {\r\n const amenityData = _get(this, ['amenityData'], [])\r\n const ownerID = this.currentOwnerId\r\n\r\n const { totals: your } = calcOwnerEventTotals({\r\n amenityData,\r\n ownerID\r\n })\r\n\r\n this.total.yourFutureReservationRequests = your.future.requests.count\r\n this.total.yourPastReservationRequests = your.past.requests.count\r\n\r\n this.total.yourFutureReservations = your.future.reservations.count\r\n this.total.yourPastReservations = your.past.reservations.count\r\n },\r\n calculateTotals() {\r\n const amenityReservations = _get(this, ['amenityData', 'amenityReservations'], [])\r\n const requiresApproval = _get(this, ['amenityData', 'requiresApproval'], null)\r\n\r\n const now = moment()\r\n\r\n // const { year, month } = this.$refs.calendar.getInfo ();\r\n // const { dates: datesInMonth } = allDatesInMonth ({\r\n // \tyear,\r\n // \tmonth\r\n // })\r\n\r\n const { reservations: dates } = parseReservations({\r\n amenityReservations\r\n })\r\n\r\n const total = {\r\n future: {\r\n reservations: {\r\n count: 0,\r\n list: []\r\n },\r\n requests: {\r\n count: 0,\r\n list: []\r\n }\r\n },\r\n past: {\r\n reservations: {\r\n count: 0,\r\n list: {}\r\n },\r\n requests: {\r\n count: 0,\r\n list: {}\r\n }\r\n }\r\n }\r\n\r\n for (let key in dates) {\r\n const thisDate = moment(key)\r\n const isPast = thisDate.isBefore(now)\r\n const reservations = dates[key]\r\n\r\n for (let a = 0; a < reservations.length; a++) {\r\n const reservation = _get(reservations, [a, 2], null)\r\n const isApproved = reservationIsApproved({\r\n reservation\r\n })\r\n\r\n if (isPast) {\r\n if (requiresApproval === true) {\r\n if (isApproved) {\r\n total.past.reservations.count += 1\r\n } else {\r\n total.past.requests.count += 1\r\n }\r\n } else {\r\n total.past.reservations.count += 1\r\n }\r\n } else {\r\n if (requiresApproval === true) {\r\n if (isApproved) {\r\n total.future.reservations.count += 1\r\n } else {\r\n total.future.requests.count += 1\r\n }\r\n } else {\r\n total.future.reservations.count += 1\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.total.futureReservations = total.future.reservations.count\r\n this.total.pastReservations = total.past.reservations.count\r\n\r\n this.total.futureReservationRequests = total.future.requests.count\r\n this.total.pastReservationRequests = total.past.requests.count\r\n },\r\n\r\n refreshParent(from) {\r\n console.debug('refreshing parent....')\r\n this.refresh().then(() => {\r\n if (from !== undefined && from && from === 'chooser') {\r\n this.$refs.reservationChooser.open({\r\n amenityData: this.amenityData,\r\n dayOfMonth: this.dayTappedDay,\r\n month: this.dayTappedMonth,\r\n year: this.dayTappedYear\r\n })\r\n }\r\n //else if(from !== undefined && from && from === 'cancelandrefund')\r\n //{\r\n //\r\n //}\r\n else {\r\n this.dayTappedDay = null\r\n this.dayTappedMonth = null\r\n this.dayTappedYear = null\r\n }\r\n })\r\n },\r\n\r\n initDatePickers() {\r\n const { year, month } = this.$refs.calendar.getInfo()\r\n\r\n this.shown.month = monthNums[month]\r\n this.shown.year = year\r\n },\r\n async move() {\r\n this.$refs.calendar.move({\r\n month: parseInt(monthStrs[this.shown.month]),\r\n year: parseInt(this.shown.year)\r\n })\r\n },\r\n async openAddModal() {\r\n const amenityID = this._testAmenityID || this.$route.params.id\r\n\r\n this.$refs.reservabilityAdder.open({\r\n amenityID\r\n })\r\n },\r\n\r\n async refresh() {\r\n console.debug('refresh..............................')\r\n this.loading = true\r\n\r\n this.initDatePickers()\r\n\r\n const amenityID = this._testAmenityID || this.$route.params.id\r\n const { successful, message, data } = await getAmenity({\r\n amenityID\r\n })\r\n if (!successful) {\r\n this.loading = false\r\n notifyProblem(message)\r\n return\r\n }\r\n\r\n this.amenityData = data\r\n this.reservationDurationLimitInMinutes = _get(data, 'reservationDurationLimitInMinutes', '')\r\n this.requiresApproval = _get(data, 'requiresApproval', null)\r\n this.amenityReservableTimes = _get(data, 'amenityReservableTimes', [])\r\n\r\n this.name = _get(data, 'name', '')\r\n this.show()\r\n\r\n const { reservableTimes } = filterReservableTimes({\r\n amenityReservableTimes: this.amenityReservableTimes\r\n })\r\n\r\n this.reservableTimes = reservableTimes\r\n\r\n if (Array.isArray(this.amenityReservableTimes)) {\r\n this.total.reservableTimes = this.amenityReservableTimes.length\r\n } else {\r\n this.total.reservableTimes = 0\r\n }\r\n\r\n const amenityReservations = _get(this, ['amenityData', 'amenityReservations'], [])\r\n this.total.reservations = amenityReservations.length\r\n\r\n this.calculateYourReservationCounts()\r\n this.calculateTotals()\r\n\r\n this.found = true\r\n this.loading = false\r\n },\r\n\r\n ////////////////////////////////////////////////////////////////////\r\n ////\r\n ////\tThe events that are displayed on the calendar\r\n ////\r\n ////\r\n async showYourReservations() {\r\n // const { dates, datesInMonth } = this.calculateYourReservationCounts ();\r\n\r\n const amenityReservations = _get(this, ['amenityData', 'amenityReservations'], [])\r\n const ownerID = this.currentOwnerId\r\n const requiresApproval = _get(this, ['amenityData', 'requiresApproval'], null)\r\n const { year, month } = this.$refs.calendar.getInfo()\r\n\r\n const { dates: datesInMonth } = allDatesInMonth({\r\n year,\r\n month\r\n })\r\n\r\n // filters by ownerID\r\n const { reservations: dates } = parseReservations({\r\n amenityReservations,\r\n ownerID\r\n })\r\n\r\n const now = moment()\r\n\r\n const events = []\r\n const last = datesInMonth.length\r\n for (let a = 0; a < last; a++) {\r\n const date = datesInMonth[a]\r\n const m = moment(date)\r\n // const dayOfWeek = m.day() + 1\r\n\r\n const isPast = m.isBefore(now)\r\n\r\n const _date = moment(date).format('YYYY-MM-DD')\r\n let reservations = dates[_date]\r\n\r\n if (!isPast) {\r\n if (Array.isArray(reservations) && reservations.length >= 1) {\r\n for (let a = 0; a < reservations.length; a++) {\r\n const reservation = _get(reservations, [a, 2], null)\r\n const isApproved = reservationIsApproved({\r\n reservation\r\n })\r\n\r\n const from = toMeridian(_get(reservations, [a, 0], ''))\r\n const to = toMeridian(_get(reservations, [a, 1], ''))\r\n\r\n if (requiresApproval) {\r\n if (isApproved) {\r\n events.push({\r\n name: [from, 'to', to].join(' '),\r\n date\r\n })\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.events = events\r\n },\r\n\r\n //\r\n // Called after selecting either:\r\n // All Approved Reservations\r\n // All Reservations\r\n //\r\n async showReservations() {\r\n const amenityReservations = _get(this, ['amenityData', 'amenityReservations'], [])\r\n const requiresApproval = _get(this, ['amenityData', 'requiresApproval'], null)\r\n\r\n const { year, month } = this.$refs.calendar.getInfo()\r\n const { dates: datesInMonth } = allDatesInMonth({\r\n year,\r\n month\r\n })\r\n\r\n const { reservations: dates } = parseReservations({\r\n amenityReservations\r\n })\r\n\r\n const events = []\r\n const last = datesInMonth.length\r\n for (let a = 0; a < last; a++) {\r\n const date = datesInMonth[a]\r\n\r\n const _date = moment(date).format('YYYY-MM-DD')\r\n let reservations = dates[_date]\r\n if (Array.isArray(reservations) && reservations.length >= 1) {\r\n events.push({\r\n name: reservations\r\n .filter(reservation => {\r\n if (requiresApproval === false) {\r\n return true\r\n }\r\n\r\n const r = reservation[2]\r\n if (reservationIsApproved({ reservation: r })) {\r\n return true\r\n }\r\n\r\n // the reservation isn't approved\r\n return false\r\n })\r\n .map(reservation => {\r\n return `${toMeridian(reservation[0])} to ${toMeridian(reservation[1])}`\r\n })\r\n .join('\\n'),\r\n date\r\n })\r\n }\r\n }\r\n\r\n this.events = events\r\n },\r\n async showReservableTimes() {\r\n const { reservableTimes: wkDays } = filterReservableTimes({\r\n amenityReservableTimes: this.amenityReservableTimes\r\n })\r\n const { year, month } = this.$refs.calendar.getInfo()\r\n const { dates: datesInMonth } = allDatesInMonth({\r\n year,\r\n month\r\n })\r\n\r\n const events = []\r\n const last = datesInMonth.length\r\n for (let a = 0; a < last; a++) {\r\n const date = datesInMonth[a]\r\n const m = moment(date)\r\n const dayOfWeek = m.day() + 1\r\n\r\n const reservableTimes = wkDays[wkDaysNums[dayOfWeek]]\r\n if (Array.isArray(reservableTimes) && reservableTimes.length >= 1) {\r\n events.push({\r\n name: reservableTimes\r\n .map(reservableTime => {\r\n return `${toMeridian(reservableTime.startTime)} to ${toMeridian(\r\n reservableTime.endTime\r\n )}`\r\n })\r\n .join('\\n'),\r\n date\r\n })\r\n }\r\n }\r\n\r\n this.events = events\r\n },\r\n async showOpenings() {\r\n const amenityData = this.amenityData\r\n const { amenityReservations } = amenityData\r\n\r\n const dates = {\r\n /* 2021-11-04 */\r\n }\r\n\r\n const { reservableTimes: wkDays } = filterReservableTimes({\r\n amenityReservableTimes: this.amenityReservableTimes\r\n })\r\n this.reservableTimes = wkDays\r\n\r\n for (let a = 0; a < amenityReservations.length; a++) {\r\n const sDate = amenityReservations[a].startDate.split('T')\r\n const eDate = amenityReservations[a].endDate.split('T')\r\n\r\n if (timeIsInvalid(sDate[1])) {\r\n console.error('invalid date', { sDate })\r\n continue\r\n }\r\n if (timeIsInvalid(eDate[1])) {\r\n console.error('invalid date', { eDate })\r\n continue\r\n }\r\n\r\n if (!Array.isArray(dates[sDate[0]])) {\r\n dates[sDate[0]] = []\r\n }\r\n dates[sDate[0]].push([sDate[1], eDate[1]])\r\n }\r\n\r\n const { year, month } = this.$refs.calendar.getInfo()\r\n const { dates: datesInMonth } = allDatesInMonth({\r\n year,\r\n month\r\n })\r\n\r\n const events = []\r\n const last = datesInMonth.length\r\n for (let a = 0; a < last; a++) {\r\n const date = datesInMonth[a]\r\n\r\n const m = moment(date)\r\n // const y = m.year()\r\n // const mon = m.month() + 1\r\n // const dayOfMonth = m.date()\r\n const dayOfWeek = m.day() + 1\r\n\r\n const _date = moment(date).format('YYYY-MM-DD')\r\n let reservations = dates[_date]\r\n if (!Array.isArray(reservations)) {\r\n reservations = []\r\n }\r\n\r\n // availability for the particular day\r\n // of the week\r\n const availabilities = wkDays[wkDaysNums[dayOfWeek]]\r\n\r\n const { openings } = getTimeSpans({\r\n availabilities: availabilities.map(a => {\r\n return [a.startTime, a.endTime]\r\n }),\r\n reservations\r\n })\r\n\r\n if (Array.isArray(openings) && openings.length >= 1) {\r\n events.push({\r\n name: openings\r\n .map(opening => {\r\n return `${toMeridian(opening[0])} to ${toMeridian(opening[1])}`\r\n })\r\n .join('\\n'),\r\n date\r\n })\r\n }\r\n }\r\n\r\n this.events = events\r\n },\r\n async showPendingReservationRequests({ ownerID } = {}) {\r\n const amenityReservations = _get(this, ['amenityData', 'amenityReservations'], [])\r\n\r\n const { year, month } = this.$refs.calendar.getInfo()\r\n const { dates: datesInMonth } = allDatesInMonth({\r\n year,\r\n month\r\n })\r\n\r\n const { reservations: dates } = parseReservations({\r\n amenityReservations,\r\n ...(typeof ownerID === 'number' && { ownerID })\r\n })\r\n\r\n const events = []\r\n const last = datesInMonth.length\r\n for (let a = 0; a < last; a++) {\r\n const date = datesInMonth[a]\r\n // const m = moment(date)\r\n // const dayOfWeek = m.day() + 1\r\n\r\n const _date = moment(date).format('YYYY-MM-DD')\r\n let reservations = dates[_date]\r\n if (Array.isArray(reservations) && reservations.length >= 1) {\r\n events.push({\r\n name: reservations\r\n .filter(reservation => {\r\n const r = reservation[2]\r\n\r\n if (reservationIsApproved({ reservation: r })) {\r\n return false\r\n }\r\n\r\n // the reservation isn't approved\r\n return true\r\n })\r\n .map(reservation => {\r\n return `${toMeridian(reservation[0])} to ${toMeridian(reservation[1])}`\r\n })\r\n .join('\\n'),\r\n date\r\n })\r\n }\r\n }\r\n\r\n this.events = events\r\n },\r\n async show() {\r\n const showing = this.showing\r\n this.loading = true\r\n\r\n /*\r\n\t\t\t6 ->\r\n\t\t\t5 -> \r\n\t\t\t4 ->\r\n\t\t\t3 ->\r\n\t\t\t2 ->\r\n\t\t\t1 ->\r\n\t\t*/\r\n if (showing === 6) {\r\n this.events = []\r\n await this.showPendingReservationRequests()\r\n this.loading = false\r\n return\r\n }\r\n if (showing === 5) {\r\n this.events = []\r\n await this.showReservations()\r\n this.loading = false\r\n return\r\n }\r\n if (showing === 4) {\r\n this.events = []\r\n await this.showPendingReservationRequests({\r\n ownerID: this.currentOwnerId\r\n })\r\n this.loading = false\r\n return\r\n }\r\n if (showing === 3) {\r\n this.events = []\r\n await this.showYourReservations()\r\n this.loading = false\r\n return\r\n }\r\n if (showing === 2) {\r\n this.events = []\r\n await this.showOpenings()\r\n this.loading = false\r\n return\r\n }\r\n if (showing === 1) {\r\n this.events = []\r\n await this.showReservableTimes()\r\n this.loading = false\r\n return\r\n }\r\n\r\n this.loading = false\r\n this.events = []\r\n }\r\n //|\\_______________________________________________________________\r\n //|\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\r\n}\r\n","import { amenityStore } from '@/services/Amenities/store'\r\n\r\nexport function mounted() {\r\n this.refresh()\r\n\r\n this.unsubAmenityStore = amenityStore.subscribe(mutation => {\r\n const mType = mutation.type\r\n if (\r\n [\r\n 'amenityReservableTimeAdded',\r\n 'amenityReservableTimeRemoved',\r\n 'amenityReservationAdded',\r\n 'amenityReservationCancelled'\r\n ].includes(mType)\r\n ) {\r\n this.refresh()\r\n }\r\n })\r\n}\r\n","export const props = {\r\n /*\r\n\t\troute path for testing purposes\r\n\t*/\r\n _testAmenityID: {\r\n type: Number,\r\n default: undefined\r\n }\r\n}\r\n","export const watch = {\r\n showing() {\r\n this.show()\r\n }\r\n}\r\n","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=5b95a7b4&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&lang=scss&\"\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 null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&lang=scss&\"","module.exports = __webpack_public_path__ + \"img/attachments.b796a6c6.png\";","var global = require('../internals/global');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar $parseFloat = global.parseFloat;\nvar FORCED = 1 / $parseFloat(whitespaces + '-0') !== -Infinity;\n\n// `parseFloat` method\n// https://tc39.github.io/ecma262/#sec-parsefloat-string\nmodule.exports = FORCED ? function parseFloat(string) {\n var trimmedString = trim(String(string));\n var result = $parseFloat(trimmedString);\n return result === 0 && trimmedString.charAt(0) == '-' ? -0 : result;\n} : $parseFloat;\n","/*\r\n\timport { addSuffix } from '@/utilities/Date/addSuffix'\r\n\taddSuffix (date);\r\n*/\r\n\r\n/*\r\n\t1st\r\n\t2nd\r\n\t3rd\r\n\t\r\n\tif two digits & second to last digit is 1 then all \"th\"\r\n*/\r\n\r\nexport function addSuffix(date) {\r\n try {\r\n const strDate = parseInt(date).toString()\r\n const len = strDate.length\r\n\r\n if (strDate.length === 1) {\r\n if (strDate === '1') {\r\n return strDate + 'st'\r\n }\r\n if (strDate === '2') {\r\n return strDate + 'nd'\r\n }\r\n if (strDate === '3') {\r\n return strDate + 'rd'\r\n }\r\n }\r\n\r\n if (len >= 2) {\r\n const secondToLast = strDate[len - 2]\r\n\r\n if (secondToLast !== '1') {\r\n const last = strDate[len - 1]\r\n\r\n if (last === '1') {\r\n return strDate + 'st'\r\n }\r\n if (last === '2') {\r\n return strDate + 'nd'\r\n }\r\n if (last === '3') {\r\n return strDate + 'rd'\r\n }\r\n }\r\n }\r\n\r\n return strDate + 'th'\r\n } catch (x) {\r\n console.error(x)\r\n }\r\n\r\n return date\r\n}\r\n","/*\r\n\timport { parseMoment } from '@/utilities/moment/parse'\r\n\r\n\tconst parsed = parseMoment ({ m });\r\n*/\r\n\r\n/*\r\n relevant:\r\n moment ().add('7','days').utcOffset(0, true).toISOString ()\r\n*/\r\n\r\nimport moment from 'moment'\r\n\r\nexport function parseMoment({ m: _m }) {\r\n try {\r\n let m\r\n if (typeof _m === 'string') {\r\n if (_m.slice(-1) === 'Z') {\r\n _m = _m.substring(0, _m.length - 1)\r\n m = moment(_m)\r\n } else {\r\n m = moment(_m)\r\n }\r\n } else {\r\n m = _m.utcOffset(0, true)\r\n }\r\n\r\n return {\r\n orbit: m.year(),\r\n //\r\n month: m.month() + 1,\r\n dayOfMonth: m.date(),\r\n //\r\n hour: m.hour(),\r\n minute: m.minute(),\r\n //\r\n time: m.format('HH:mm:ss'),\r\n m\r\n }\r\n } catch (x) {\r\n console.error(x)\r\n }\r\n\r\n return {\r\n orbit: null,\r\n month: null,\r\n dayOfMonth: null,\r\n hour: null,\r\n minute: null,\r\n time: null,\r\n m: null\r\n }\r\n}\r\n","var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nvar NumeralFormatter = function (numeralDecimalMark,\n numeralIntegerScale,\n numeralDecimalScale,\n numeralThousandsGroupStyle,\n numeralPositiveOnly,\n stripLeadingZeroes,\n prefix,\n signBeforePrefix,\n tailPrefix,\n delimiter) {\n var owner = this;\n\n owner.numeralDecimalMark = numeralDecimalMark || '.';\n owner.numeralIntegerScale = numeralIntegerScale > 0 ? numeralIntegerScale : 0;\n owner.numeralDecimalScale = numeralDecimalScale >= 0 ? numeralDecimalScale : 2;\n owner.numeralThousandsGroupStyle = numeralThousandsGroupStyle || NumeralFormatter.groupStyle.thousand;\n owner.numeralPositiveOnly = !!numeralPositiveOnly;\n owner.stripLeadingZeroes = stripLeadingZeroes !== false;\n owner.prefix = (prefix || prefix === '') ? prefix : '';\n owner.signBeforePrefix = !!signBeforePrefix;\n owner.tailPrefix = !!tailPrefix;\n owner.delimiter = (delimiter || delimiter === '') ? delimiter : ',';\n owner.delimiterRE = delimiter ? new RegExp('\\\\' + delimiter, 'g') : '';\n};\n\nNumeralFormatter.groupStyle = {\n thousand: 'thousand',\n lakh: 'lakh',\n wan: 'wan',\n none: 'none' \n};\n\nNumeralFormatter.prototype = {\n getRawValue: function (value) {\n return value.replace(this.delimiterRE, '').replace(this.numeralDecimalMark, '.');\n },\n\n format: function (value) {\n var owner = this, parts, partSign, partSignAndPrefix, partInteger, partDecimal = '';\n\n // strip alphabet letters\n value = value.replace(/[A-Za-z]/g, '')\n // replace the first decimal mark with reserved placeholder\n .replace(owner.numeralDecimalMark, 'M')\n\n // strip non numeric letters except minus and \"M\"\n // this is to ensure prefix has been stripped\n .replace(/[^\\dM-]/g, '')\n\n // replace the leading minus with reserved placeholder\n .replace(/^\\-/, 'N')\n\n // strip the other minus sign (if present)\n .replace(/\\-/g, '')\n\n // replace the minus sign (if present)\n .replace('N', owner.numeralPositiveOnly ? '' : '-')\n\n // replace decimal mark\n .replace('M', owner.numeralDecimalMark);\n\n // strip any leading zeros\n if (owner.stripLeadingZeroes) {\n value = value.replace(/^(-)?0+(?=\\d)/, '$1');\n }\n\n partSign = value.slice(0, 1) === '-' ? '-' : '';\n if (typeof owner.prefix != 'undefined') {\n if (owner.signBeforePrefix) {\n partSignAndPrefix = partSign + owner.prefix;\n } else {\n partSignAndPrefix = owner.prefix + partSign;\n }\n } else {\n partSignAndPrefix = partSign;\n }\n \n partInteger = value;\n\n if (value.indexOf(owner.numeralDecimalMark) >= 0) {\n parts = value.split(owner.numeralDecimalMark);\n partInteger = parts[0];\n partDecimal = owner.numeralDecimalMark + parts[1].slice(0, owner.numeralDecimalScale);\n }\n\n if(partSign === '-') {\n partInteger = partInteger.slice(1);\n }\n\n if (owner.numeralIntegerScale > 0) {\n partInteger = partInteger.slice(0, owner.numeralIntegerScale);\n }\n\n switch (owner.numeralThousandsGroupStyle) {\n case NumeralFormatter.groupStyle.lakh:\n partInteger = partInteger.replace(/(\\d)(?=(\\d\\d)+\\d$)/g, '$1' + owner.delimiter);\n\n break;\n\n case NumeralFormatter.groupStyle.wan:\n partInteger = partInteger.replace(/(\\d)(?=(\\d{4})+$)/g, '$1' + owner.delimiter);\n\n break;\n\n case NumeralFormatter.groupStyle.thousand:\n partInteger = partInteger.replace(/(\\d)(?=(\\d{3})+$)/g, '$1' + owner.delimiter);\n\n break;\n }\n\n if (owner.tailPrefix) {\n return partSign + partInteger.toString() + (owner.numeralDecimalScale > 0 ? partDecimal.toString() : '') + owner.prefix;\n }\n\n return partSignAndPrefix + partInteger.toString() + (owner.numeralDecimalScale > 0 ? partDecimal.toString() : '');\n }\n};\n\nvar NumeralFormatter_1 = NumeralFormatter;\n\nvar DateFormatter = function (datePattern, dateMin, dateMax) {\n var owner = this;\n\n owner.date = [];\n owner.blocks = [];\n owner.datePattern = datePattern;\n owner.dateMin = dateMin\n .split('-')\n .reverse()\n .map(function(x) {\n return parseInt(x, 10);\n });\n if (owner.dateMin.length === 2) owner.dateMin.unshift(0);\n\n owner.dateMax = dateMax\n .split('-')\n .reverse()\n .map(function(x) {\n return parseInt(x, 10);\n });\n if (owner.dateMax.length === 2) owner.dateMax.unshift(0);\n \n owner.initBlocks();\n};\n\nDateFormatter.prototype = {\n initBlocks: function () {\n var owner = this;\n owner.datePattern.forEach(function (value) {\n if (value === 'Y') {\n owner.blocks.push(4);\n } else {\n owner.blocks.push(2);\n }\n });\n },\n\n getISOFormatDate: function () {\n var owner = this,\n date = owner.date;\n\n return date[2] ? (\n date[2] + '-' + owner.addLeadingZero(date[1]) + '-' + owner.addLeadingZero(date[0])\n ) : '';\n },\n\n getBlocks: function () {\n return this.blocks;\n },\n\n getValidatedDate: function (value) {\n var owner = this, result = '';\n\n value = value.replace(/[^\\d]/g, '');\n\n owner.blocks.forEach(function (length, index) {\n if (value.length > 0) {\n var sub = value.slice(0, length),\n sub0 = sub.slice(0, 1),\n rest = value.slice(length);\n\n switch (owner.datePattern[index]) {\n case 'd':\n if (sub === '00') {\n sub = '01';\n } else if (parseInt(sub0, 10) > 3) {\n sub = '0' + sub0;\n } else if (parseInt(sub, 10) > 31) {\n sub = '31';\n }\n\n break;\n\n case 'm':\n if (sub === '00') {\n sub = '01';\n } else if (parseInt(sub0, 10) > 1) {\n sub = '0' + sub0;\n } else if (parseInt(sub, 10) > 12) {\n sub = '12';\n }\n\n break;\n }\n\n result += sub;\n\n // update remaining string\n value = rest;\n }\n });\n\n return this.getFixedDateString(result);\n },\n\n getFixedDateString: function (value) {\n var owner = this, datePattern = owner.datePattern, date = [],\n dayIndex = 0, monthIndex = 0, yearIndex = 0,\n dayStartIndex = 0, monthStartIndex = 0, yearStartIndex = 0,\n day, month, year, fullYearDone = false;\n\n // mm-dd || dd-mm\n if (value.length === 4 && datePattern[0].toLowerCase() !== 'y' && datePattern[1].toLowerCase() !== 'y') {\n dayStartIndex = datePattern[0] === 'd' ? 0 : 2;\n monthStartIndex = 2 - dayStartIndex;\n day = parseInt(value.slice(dayStartIndex, dayStartIndex + 2), 10);\n month = parseInt(value.slice(monthStartIndex, monthStartIndex + 2), 10);\n\n date = this.getFixedDate(day, month, 0);\n }\n\n // yyyy-mm-dd || yyyy-dd-mm || mm-dd-yyyy || dd-mm-yyyy || dd-yyyy-mm || mm-yyyy-dd\n if (value.length === 8) {\n datePattern.forEach(function (type, index) {\n switch (type) {\n case 'd':\n dayIndex = index;\n break;\n case 'm':\n monthIndex = index;\n break;\n default:\n yearIndex = index;\n break;\n }\n });\n\n yearStartIndex = yearIndex * 2;\n dayStartIndex = (dayIndex <= yearIndex) ? dayIndex * 2 : (dayIndex * 2 + 2);\n monthStartIndex = (monthIndex <= yearIndex) ? monthIndex * 2 : (monthIndex * 2 + 2);\n\n day = parseInt(value.slice(dayStartIndex, dayStartIndex + 2), 10);\n month = parseInt(value.slice(monthStartIndex, monthStartIndex + 2), 10);\n year = parseInt(value.slice(yearStartIndex, yearStartIndex + 4), 10);\n\n fullYearDone = value.slice(yearStartIndex, yearStartIndex + 4).length === 4;\n\n date = this.getFixedDate(day, month, year);\n }\n\n // mm-yy || yy-mm\n if (value.length === 4 && (datePattern[0] === 'y' || datePattern[1] === 'y')) {\n monthStartIndex = datePattern[0] === 'm' ? 0 : 2;\n yearStartIndex = 2 - monthStartIndex;\n month = parseInt(value.slice(monthStartIndex, monthStartIndex + 2), 10);\n year = parseInt(value.slice(yearStartIndex, yearStartIndex + 2), 10);\n\n fullYearDone = value.slice(yearStartIndex, yearStartIndex + 2).length === 2;\n\n date = [0, month, year];\n }\n\n // mm-yyyy || yyyy-mm\n if (value.length === 6 && (datePattern[0] === 'Y' || datePattern[1] === 'Y')) {\n monthStartIndex = datePattern[0] === 'm' ? 0 : 4;\n yearStartIndex = 2 - 0.5 * monthStartIndex;\n month = parseInt(value.slice(monthStartIndex, monthStartIndex + 2), 10);\n year = parseInt(value.slice(yearStartIndex, yearStartIndex + 4), 10);\n\n fullYearDone = value.slice(yearStartIndex, yearStartIndex + 4).length === 4;\n\n date = [0, month, year];\n }\n\n date = owner.getRangeFixedDate(date);\n owner.date = date;\n\n var result = date.length === 0 ? value : datePattern.reduce(function (previous, current) {\n switch (current) {\n case 'd':\n return previous + (date[0] === 0 ? '' : owner.addLeadingZero(date[0]));\n case 'm':\n return previous + (date[1] === 0 ? '' : owner.addLeadingZero(date[1]));\n case 'y':\n return previous + (fullYearDone ? owner.addLeadingZeroForYear(date[2], false) : '');\n case 'Y':\n return previous + (fullYearDone ? owner.addLeadingZeroForYear(date[2], true) : '');\n }\n }, '');\n\n return result;\n },\n\n getRangeFixedDate: function (date) {\n var owner = this,\n datePattern = owner.datePattern,\n dateMin = owner.dateMin || [],\n dateMax = owner.dateMax || [];\n\n if (!date.length || (dateMin.length < 3 && dateMax.length < 3)) return date;\n\n if (\n datePattern.find(function(x) {\n return x.toLowerCase() === 'y';\n }) &&\n date[2] === 0\n ) return date;\n\n if (dateMax.length && (dateMax[2] < date[2] || (\n dateMax[2] === date[2] && (dateMax[1] < date[1] || (\n dateMax[1] === date[1] && dateMax[0] < date[0]\n ))\n ))) return dateMax;\n\n if (dateMin.length && (dateMin[2] > date[2] || (\n dateMin[2] === date[2] && (dateMin[1] > date[1] || (\n dateMin[1] === date[1] && dateMin[0] > date[0]\n ))\n ))) return dateMin;\n\n return date;\n },\n\n getFixedDate: function (day, month, year) {\n day = Math.min(day, 31);\n month = Math.min(month, 12);\n year = parseInt((year || 0), 10);\n\n if ((month < 7 && month % 2 === 0) || (month > 8 && month % 2 === 1)) {\n day = Math.min(day, month === 2 ? (this.isLeapYear(year) ? 29 : 28) : 30);\n }\n\n return [day, month, year];\n },\n\n isLeapYear: function (year) {\n return ((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0);\n },\n\n addLeadingZero: function (number) {\n return (number < 10 ? '0' : '') + number;\n },\n\n addLeadingZeroForYear: function (number, fullYearMode) {\n if (fullYearMode) {\n return (number < 10 ? '000' : (number < 100 ? '00' : (number < 1000 ? '0' : ''))) + number;\n }\n\n return (number < 10 ? '0' : '') + number;\n }\n};\n\nvar DateFormatter_1 = DateFormatter;\n\nvar TimeFormatter = function (timePattern, timeFormat) {\n var owner = this;\n\n owner.time = [];\n owner.blocks = [];\n owner.timePattern = timePattern;\n owner.timeFormat = timeFormat;\n owner.initBlocks();\n};\n\nTimeFormatter.prototype = {\n initBlocks: function () {\n var owner = this;\n owner.timePattern.forEach(function () {\n owner.blocks.push(2);\n });\n },\n\n getISOFormatTime: function () {\n var owner = this,\n time = owner.time;\n\n return time[2] ? (\n owner.addLeadingZero(time[0]) + ':' + owner.addLeadingZero(time[1]) + ':' + owner.addLeadingZero(time[2])\n ) : '';\n },\n\n getBlocks: function () {\n return this.blocks;\n },\n\n getTimeFormatOptions: function () {\n var owner = this;\n if (String(owner.timeFormat) === '12') {\n return {\n maxHourFirstDigit: 1,\n maxHours: 12,\n maxMinutesFirstDigit: 5,\n maxMinutes: 60\n };\n }\n\n return {\n maxHourFirstDigit: 2,\n maxHours: 23,\n maxMinutesFirstDigit: 5,\n maxMinutes: 60\n };\n },\n\n getValidatedTime: function (value) {\n var owner = this, result = '';\n\n value = value.replace(/[^\\d]/g, '');\n\n var timeFormatOptions = owner.getTimeFormatOptions();\n\n owner.blocks.forEach(function (length, index) {\n if (value.length > 0) {\n var sub = value.slice(0, length),\n sub0 = sub.slice(0, 1),\n rest = value.slice(length);\n\n switch (owner.timePattern[index]) {\n\n case 'h':\n if (parseInt(sub0, 10) > timeFormatOptions.maxHourFirstDigit) {\n sub = '0' + sub0;\n } else if (parseInt(sub, 10) > timeFormatOptions.maxHours) {\n sub = timeFormatOptions.maxHours + '';\n }\n\n break;\n\n case 'm':\n case 's':\n if (parseInt(sub0, 10) > timeFormatOptions.maxMinutesFirstDigit) {\n sub = '0' + sub0;\n } else if (parseInt(sub, 10) > timeFormatOptions.maxMinutes) {\n sub = timeFormatOptions.maxMinutes + '';\n }\n break;\n }\n\n result += sub;\n\n // update remaining string\n value = rest;\n }\n });\n\n return this.getFixedTimeString(result);\n },\n\n getFixedTimeString: function (value) {\n var owner = this, timePattern = owner.timePattern, time = [],\n secondIndex = 0, minuteIndex = 0, hourIndex = 0,\n secondStartIndex = 0, minuteStartIndex = 0, hourStartIndex = 0,\n second, minute, hour;\n\n if (value.length === 6) {\n timePattern.forEach(function (type, index) {\n switch (type) {\n case 's':\n secondIndex = index * 2;\n break;\n case 'm':\n minuteIndex = index * 2;\n break;\n case 'h':\n hourIndex = index * 2;\n break;\n }\n });\n\n hourStartIndex = hourIndex;\n minuteStartIndex = minuteIndex;\n secondStartIndex = secondIndex;\n\n second = parseInt(value.slice(secondStartIndex, secondStartIndex + 2), 10);\n minute = parseInt(value.slice(minuteStartIndex, minuteStartIndex + 2), 10);\n hour = parseInt(value.slice(hourStartIndex, hourStartIndex + 2), 10);\n\n time = this.getFixedTime(hour, minute, second);\n }\n\n if (value.length === 4 && owner.timePattern.indexOf('s') < 0) {\n timePattern.forEach(function (type, index) {\n switch (type) {\n case 'm':\n minuteIndex = index * 2;\n break;\n case 'h':\n hourIndex = index * 2;\n break;\n }\n });\n\n hourStartIndex = hourIndex;\n minuteStartIndex = minuteIndex;\n\n second = 0;\n minute = parseInt(value.slice(minuteStartIndex, minuteStartIndex + 2), 10);\n hour = parseInt(value.slice(hourStartIndex, hourStartIndex + 2), 10);\n\n time = this.getFixedTime(hour, minute, second);\n }\n\n owner.time = time;\n\n return time.length === 0 ? value : timePattern.reduce(function (previous, current) {\n switch (current) {\n case 's':\n return previous + owner.addLeadingZero(time[2]);\n case 'm':\n return previous + owner.addLeadingZero(time[1]);\n case 'h':\n return previous + owner.addLeadingZero(time[0]);\n }\n }, '');\n },\n\n getFixedTime: function (hour, minute, second) {\n second = Math.min(parseInt(second || 0, 10), 60);\n minute = Math.min(minute, 60);\n hour = Math.min(hour, 60);\n\n return [hour, minute, second];\n },\n\n addLeadingZero: function (number) {\n return (number < 10 ? '0' : '') + number;\n }\n};\n\nvar TimeFormatter_1 = TimeFormatter;\n\nvar PhoneFormatter = function (formatter, delimiter) {\n var owner = this;\n\n owner.delimiter = (delimiter || delimiter === '') ? delimiter : ' ';\n owner.delimiterRE = delimiter ? new RegExp('\\\\' + delimiter, 'g') : '';\n\n owner.formatter = formatter;\n};\n\nPhoneFormatter.prototype = {\n setFormatter: function (formatter) {\n this.formatter = formatter;\n },\n\n format: function (phoneNumber) {\n var owner = this;\n\n owner.formatter.clear();\n\n // only keep number and +\n phoneNumber = phoneNumber.replace(/[^\\d+]/g, '');\n\n // strip non-leading +\n phoneNumber = phoneNumber.replace(/^\\+/, 'B').replace(/\\+/g, '').replace('B', '+');\n\n // strip delimiter\n phoneNumber = phoneNumber.replace(owner.delimiterRE, '');\n\n var result = '', current, validated = false;\n\n for (var i = 0, iMax = phoneNumber.length; i < iMax; i++) {\n current = owner.formatter.inputDigit(phoneNumber.charAt(i));\n\n // has ()- or space inside\n if (/[\\s()-]/g.test(current)) {\n result = current;\n\n validated = true;\n } else {\n if (!validated) {\n result = current;\n }\n // else: over length input\n // it turns to invalid number again\n }\n }\n\n // strip ()\n // e.g. US: 7161234567 returns (716) 123-4567\n result = result.replace(/[()]/g, '');\n // replace library delimiter with user customized delimiter\n result = result.replace(/[\\s-]/g, owner.delimiter);\n\n return result;\n }\n};\n\nvar PhoneFormatter_1 = PhoneFormatter;\n\nvar CreditCardDetector = {\n blocks: {\n uatp: [4, 5, 6],\n amex: [4, 6, 5],\n diners: [4, 6, 4],\n discover: [4, 4, 4, 4],\n mastercard: [4, 4, 4, 4],\n dankort: [4, 4, 4, 4],\n instapayment: [4, 4, 4, 4],\n jcb15: [4, 6, 5],\n jcb: [4, 4, 4, 4],\n maestro: [4, 4, 4, 4],\n visa: [4, 4, 4, 4],\n mir: [4, 4, 4, 4],\n unionPay: [4, 4, 4, 4],\n general: [4, 4, 4, 4]\n },\n\n re: {\n // starts with 1; 15 digits, not starts with 1800 (jcb card)\n uatp: /^(?!1800)1\\d{0,14}/,\n\n // starts with 34/37; 15 digits\n amex: /^3[47]\\d{0,13}/,\n\n // starts with 6011/65/644-649; 16 digits\n discover: /^(?:6011|65\\d{0,2}|64[4-9]\\d?)\\d{0,12}/,\n\n // starts with 300-305/309 or 36/38/39; 14 digits\n diners: /^3(?:0([0-5]|9)|[689]\\d?)\\d{0,11}/,\n\n // starts with 51-55/2221–2720; 16 digits\n mastercard: /^(5[1-5]\\d{0,2}|22[2-9]\\d{0,1}|2[3-7]\\d{0,2})\\d{0,12}/,\n\n // starts with 5019/4175/4571; 16 digits\n dankort: /^(5019|4175|4571)\\d{0,12}/,\n\n // starts with 637-639; 16 digits\n instapayment: /^63[7-9]\\d{0,13}/,\n\n // starts with 2131/1800; 15 digits\n jcb15: /^(?:2131|1800)\\d{0,11}/,\n\n // starts with 2131/1800/35; 16 digits\n jcb: /^(?:35\\d{0,2})\\d{0,12}/,\n\n // starts with 50/56-58/6304/67; 16 digits\n maestro: /^(?:5[0678]\\d{0,2}|6304|67\\d{0,2})\\d{0,12}/,\n\n // starts with 22; 16 digits\n mir: /^220[0-4]\\d{0,12}/,\n\n // starts with 4; 16 digits\n visa: /^4\\d{0,15}/,\n\n // starts with 62/81; 16 digits\n unionPay: /^(62|81)\\d{0,14}/\n },\n\n getStrictBlocks: function (block) {\n var total = block.reduce(function (prev, current) {\n return prev + current;\n }, 0);\n\n return block.concat(19 - total);\n },\n\n getInfo: function (value, strictMode) {\n var blocks = CreditCardDetector.blocks,\n re = CreditCardDetector.re;\n\n // Some credit card can have up to 19 digits number.\n // Set strictMode to true will remove the 16 max-length restrain,\n // however, I never found any website validate card number like\n // this, hence probably you don't want to enable this option.\n strictMode = !!strictMode;\n\n for (var key in re) {\n if (re[key].test(value)) {\n var matchedBlocks = blocks[key];\n return {\n type: key,\n blocks: strictMode ? this.getStrictBlocks(matchedBlocks) : matchedBlocks\n };\n }\n }\n\n return {\n type: 'unknown',\n blocks: strictMode ? this.getStrictBlocks(blocks.general) : blocks.general\n };\n }\n};\n\nvar CreditCardDetector_1 = CreditCardDetector;\n\nvar Util = {\n noop: function () {\n },\n\n strip: function (value, re) {\n return value.replace(re, '');\n },\n\n getPostDelimiter: function (value, delimiter, delimiters) {\n // single delimiter\n if (delimiters.length === 0) {\n return value.slice(-delimiter.length) === delimiter ? delimiter : '';\n }\n\n // multiple delimiters\n var matchedDelimiter = '';\n delimiters.forEach(function (current) {\n if (value.slice(-current.length) === current) {\n matchedDelimiter = current;\n }\n });\n\n return matchedDelimiter;\n },\n\n getDelimiterREByDelimiter: function (delimiter) {\n return new RegExp(delimiter.replace(/([.?*+^$[\\]\\\\(){}|-])/g, '\\\\$1'), 'g');\n },\n\n getNextCursorPosition: function (prevPos, oldValue, newValue, delimiter, delimiters) {\n // If cursor was at the end of value, just place it back.\n // Because new value could contain additional chars.\n if (oldValue.length === prevPos) {\n return newValue.length;\n }\n\n return prevPos + this.getPositionOffset(prevPos, oldValue, newValue, delimiter ,delimiters);\n },\n\n getPositionOffset: function (prevPos, oldValue, newValue, delimiter, delimiters) {\n var oldRawValue, newRawValue, lengthOffset;\n\n oldRawValue = this.stripDelimiters(oldValue.slice(0, prevPos), delimiter, delimiters);\n newRawValue = this.stripDelimiters(newValue.slice(0, prevPos), delimiter, delimiters);\n lengthOffset = oldRawValue.length - newRawValue.length;\n\n return (lengthOffset !== 0) ? (lengthOffset / Math.abs(lengthOffset)) : 0;\n },\n\n stripDelimiters: function (value, delimiter, delimiters) {\n var owner = this;\n\n // single delimiter\n if (delimiters.length === 0) {\n var delimiterRE = delimiter ? owner.getDelimiterREByDelimiter(delimiter) : '';\n\n return value.replace(delimiterRE, '');\n }\n\n // multiple delimiters\n delimiters.forEach(function (current) {\n current.split('').forEach(function (letter) {\n value = value.replace(owner.getDelimiterREByDelimiter(letter), '');\n });\n });\n\n return value;\n },\n\n headStr: function (str, length) {\n return str.slice(0, length);\n },\n\n getMaxLength: function (blocks) {\n return blocks.reduce(function (previous, current) {\n return previous + current;\n }, 0);\n },\n\n // strip prefix\n // Before type | After type | Return value\n // PEFIX-... | PEFIX-... | ''\n // PREFIX-123 | PEFIX-123 | 123\n // PREFIX-123 | PREFIX-23 | 23\n // PREFIX-123 | PREFIX-1234 | 1234\n getPrefixStrippedValue: function (value, prefix, prefixLength, prevResult, delimiter, delimiters, noImmediatePrefix, tailPrefix, signBeforePrefix) {\n // No prefix\n if (prefixLength === 0) {\n return value;\n }\n\n // Value is prefix\n if (value === prefix && value !== '') {\n return '';\n }\n\n if (signBeforePrefix && (value.slice(0, 1) == '-')) {\n var prev = (prevResult.slice(0, 1) == '-') ? prevResult.slice(1) : prevResult;\n return '-' + this.getPrefixStrippedValue(value.slice(1), prefix, prefixLength, prev, delimiter, delimiters, noImmediatePrefix, tailPrefix, signBeforePrefix);\n }\n\n // Pre result prefix string does not match pre-defined prefix\n if (prevResult.slice(0, prefixLength) !== prefix && !tailPrefix) {\n // Check if the first time user entered something\n if (noImmediatePrefix && !prevResult && value) return value;\n return '';\n } else if (prevResult.slice(-prefixLength) !== prefix && tailPrefix) {\n // Check if the first time user entered something\n if (noImmediatePrefix && !prevResult && value) return value;\n return '';\n }\n\n var prevValue = this.stripDelimiters(prevResult, delimiter, delimiters);\n\n // New value has issue, someone typed in between prefix letters\n // Revert to pre value\n if (value.slice(0, prefixLength) !== prefix && !tailPrefix) {\n return prevValue.slice(prefixLength);\n } else if (value.slice(-prefixLength) !== prefix && tailPrefix) {\n return prevValue.slice(0, -prefixLength - 1);\n }\n\n // No issue, strip prefix for new value\n return tailPrefix ? value.slice(0, -prefixLength) : value.slice(prefixLength);\n },\n\n getFirstDiffIndex: function (prev, current) {\n var index = 0;\n\n while (prev.charAt(index) === current.charAt(index)) {\n if (prev.charAt(index++) === '') {\n return -1;\n }\n }\n\n return index;\n },\n\n getFormattedValue: function (value, blocks, blocksLength, delimiter, delimiters, delimiterLazyShow) {\n var result = '',\n multipleDelimiters = delimiters.length > 0,\n currentDelimiter = '';\n\n // no options, normal input\n if (blocksLength === 0) {\n return value;\n }\n\n blocks.forEach(function (length, index) {\n if (value.length > 0) {\n var sub = value.slice(0, length),\n rest = value.slice(length);\n\n if (multipleDelimiters) {\n currentDelimiter = delimiters[delimiterLazyShow ? (index - 1) : index] || currentDelimiter;\n } else {\n currentDelimiter = delimiter;\n }\n\n if (delimiterLazyShow) {\n if (index > 0) {\n result += currentDelimiter;\n }\n\n result += sub;\n } else {\n result += sub;\n\n if (sub.length === length && index < blocksLength - 1) {\n result += currentDelimiter;\n }\n }\n\n // update remaining string\n value = rest;\n }\n });\n\n return result;\n },\n\n // move cursor to the end\n // the first time user focuses on an input with prefix\n fixPrefixCursor: function (el, prefix, delimiter, delimiters) {\n if (!el) {\n return;\n }\n\n var val = el.value,\n appendix = delimiter || (delimiters[0] || ' ');\n\n if (!el.setSelectionRange || !prefix || (prefix.length + appendix.length) <= val.length) {\n return;\n }\n\n var len = val.length * 2;\n\n // set timeout to avoid blink\n setTimeout(function () {\n el.setSelectionRange(len, len);\n }, 1);\n },\n\n // Check if input field is fully selected\n checkFullSelection: function(value) {\n try {\n var selection = window.getSelection() || document.getSelection() || {};\n return selection.toString().length === value.length;\n } catch (ex) {\n // Ignore\n }\n\n return false;\n },\n\n setSelection: function (element, position, doc) {\n if (element !== this.getActiveElement(doc)) {\n return;\n }\n\n // cursor is already in the end\n if (element && element.value.length <= position) {\n return;\n }\n\n if (element.createTextRange) {\n var range = element.createTextRange();\n\n range.move('character', position);\n range.select();\n } else {\n try {\n element.setSelectionRange(position, position);\n } catch (e) {\n // eslint-disable-next-line\n console.warn('The input element type does not support selection');\n }\n }\n },\n\n getActiveElement: function(parent) {\n var activeElement = parent.activeElement;\n if (activeElement && activeElement.shadowRoot) {\n return this.getActiveElement(activeElement.shadowRoot);\n }\n return activeElement;\n },\n\n isAndroid: function () {\n return navigator && /android/i.test(navigator.userAgent);\n },\n\n // On Android chrome, the keyup and keydown events\n // always return key code 229 as a composition that\n // buffers the user’s keystrokes\n // see https://github.com/nosir/cleave.js/issues/147\n isAndroidBackspaceKeydown: function (lastInputValue, currentInputValue) {\n if (!this.isAndroid() || !lastInputValue || !currentInputValue) {\n return false;\n }\n\n return currentInputValue === lastInputValue.slice(0, -1);\n }\n};\n\nvar Util_1 = Util;\n\n/**\n * Props Assignment\n *\n * Separate this, so react module can share the usage\n */\nvar DefaultProperties = {\n // Maybe change to object-assign\n // for now just keep it as simple\n assign: function (target, opts) {\n target = target || {};\n opts = opts || {};\n\n // credit card\n target.creditCard = !!opts.creditCard;\n target.creditCardStrictMode = !!opts.creditCardStrictMode;\n target.creditCardType = '';\n target.onCreditCardTypeChanged = opts.onCreditCardTypeChanged || (function () {});\n\n // phone\n target.phone = !!opts.phone;\n target.phoneRegionCode = opts.phoneRegionCode || 'AU';\n target.phoneFormatter = {};\n\n // time\n target.time = !!opts.time;\n target.timePattern = opts.timePattern || ['h', 'm', 's'];\n target.timeFormat = opts.timeFormat || '24';\n target.timeFormatter = {};\n\n // date\n target.date = !!opts.date;\n target.datePattern = opts.datePattern || ['d', 'm', 'Y'];\n target.dateMin = opts.dateMin || '';\n target.dateMax = opts.dateMax || '';\n target.dateFormatter = {};\n\n // numeral\n target.numeral = !!opts.numeral;\n target.numeralIntegerScale = opts.numeralIntegerScale > 0 ? opts.numeralIntegerScale : 0;\n target.numeralDecimalScale = opts.numeralDecimalScale >= 0 ? opts.numeralDecimalScale : 2;\n target.numeralDecimalMark = opts.numeralDecimalMark || '.';\n target.numeralThousandsGroupStyle = opts.numeralThousandsGroupStyle || 'thousand';\n target.numeralPositiveOnly = !!opts.numeralPositiveOnly;\n target.stripLeadingZeroes = opts.stripLeadingZeroes !== false;\n target.signBeforePrefix = !!opts.signBeforePrefix;\n target.tailPrefix = !!opts.tailPrefix;\n\n // others\n target.swapHiddenInput = !!opts.swapHiddenInput;\n \n target.numericOnly = target.creditCard || target.date || !!opts.numericOnly;\n\n target.uppercase = !!opts.uppercase;\n target.lowercase = !!opts.lowercase;\n\n target.prefix = (target.creditCard || target.date) ? '' : (opts.prefix || '');\n target.noImmediatePrefix = !!opts.noImmediatePrefix;\n target.prefixLength = target.prefix.length;\n target.rawValueTrimPrefix = !!opts.rawValueTrimPrefix;\n target.copyDelimiter = !!opts.copyDelimiter;\n\n target.initValue = (opts.initValue !== undefined && opts.initValue !== null) ? opts.initValue.toString() : '';\n\n target.delimiter =\n (opts.delimiter || opts.delimiter === '') ? opts.delimiter :\n (opts.date ? '/' :\n (opts.time ? ':' :\n (opts.numeral ? ',' :\n (opts.phone ? ' ' :\n ' '))));\n target.delimiterLength = target.delimiter.length;\n target.delimiterLazyShow = !!opts.delimiterLazyShow;\n target.delimiters = opts.delimiters || [];\n\n target.blocks = opts.blocks || [];\n target.blocksLength = target.blocks.length;\n\n target.root = (typeof commonjsGlobal === 'object' && commonjsGlobal) ? commonjsGlobal : window;\n target.document = opts.document || target.root.document;\n\n target.maxLength = 0;\n\n target.backspace = false;\n target.result = '';\n\n target.onValueChanged = opts.onValueChanged || (function () {});\n\n return target;\n }\n};\n\nvar DefaultProperties_1 = DefaultProperties;\n\n/**\n * Construct a new Cleave instance by passing the configuration object\n *\n * @param {String | HTMLElement} element\n * @param {Object} opts\n */\nvar Cleave = function (element, opts) {\n var owner = this;\n var hasMultipleElements = false;\n\n if (typeof element === 'string') {\n owner.element = document.querySelector(element);\n hasMultipleElements = document.querySelectorAll(element).length > 1;\n } else {\n if (typeof element.length !== 'undefined' && element.length > 0) {\n owner.element = element[0];\n hasMultipleElements = element.length > 1;\n } else {\n owner.element = element;\n }\n }\n\n if (!owner.element) {\n throw new Error('[cleave.js] Please check the element');\n }\n\n if (hasMultipleElements) {\n try {\n // eslint-disable-next-line\n console.warn('[cleave.js] Multiple input fields matched, cleave.js will only take the first one.');\n } catch (e) {\n // Old IE\n }\n }\n\n opts.initValue = owner.element.value;\n\n owner.properties = Cleave.DefaultProperties.assign({}, opts);\n\n owner.init();\n};\n\nCleave.prototype = {\n init: function () {\n var owner = this, pps = owner.properties;\n\n // no need to use this lib\n if (!pps.numeral && !pps.phone && !pps.creditCard && !pps.time && !pps.date && (pps.blocksLength === 0 && !pps.prefix)) {\n owner.onInput(pps.initValue);\n\n return;\n }\n\n pps.maxLength = Cleave.Util.getMaxLength(pps.blocks);\n\n owner.isAndroid = Cleave.Util.isAndroid();\n owner.lastInputValue = '';\n owner.isBackward = '';\n\n owner.onChangeListener = owner.onChange.bind(owner);\n owner.onKeyDownListener = owner.onKeyDown.bind(owner);\n owner.onFocusListener = owner.onFocus.bind(owner);\n owner.onCutListener = owner.onCut.bind(owner);\n owner.onCopyListener = owner.onCopy.bind(owner);\n\n owner.initSwapHiddenInput();\n\n owner.element.addEventListener('input', owner.onChangeListener);\n owner.element.addEventListener('keydown', owner.onKeyDownListener);\n owner.element.addEventListener('focus', owner.onFocusListener);\n owner.element.addEventListener('cut', owner.onCutListener);\n owner.element.addEventListener('copy', owner.onCopyListener);\n\n\n owner.initPhoneFormatter();\n owner.initDateFormatter();\n owner.initTimeFormatter();\n owner.initNumeralFormatter();\n\n // avoid touch input field if value is null\n // otherwise Firefox will add red box-shadow for \n if (pps.initValue || (pps.prefix && !pps.noImmediatePrefix)) {\n owner.onInput(pps.initValue);\n }\n },\n\n initSwapHiddenInput: function () {\n var owner = this, pps = owner.properties;\n if (!pps.swapHiddenInput) return;\n\n var inputFormatter = owner.element.cloneNode(true);\n owner.element.parentNode.insertBefore(inputFormatter, owner.element);\n\n owner.elementSwapHidden = owner.element;\n owner.elementSwapHidden.type = 'hidden';\n\n owner.element = inputFormatter;\n owner.element.id = '';\n },\n\n initNumeralFormatter: function () {\n var owner = this, pps = owner.properties;\n\n if (!pps.numeral) {\n return;\n }\n\n pps.numeralFormatter = new Cleave.NumeralFormatter(\n pps.numeralDecimalMark,\n pps.numeralIntegerScale,\n pps.numeralDecimalScale,\n pps.numeralThousandsGroupStyle,\n pps.numeralPositiveOnly,\n pps.stripLeadingZeroes,\n pps.prefix,\n pps.signBeforePrefix,\n pps.tailPrefix,\n pps.delimiter\n );\n },\n\n initTimeFormatter: function() {\n var owner = this, pps = owner.properties;\n\n if (!pps.time) {\n return;\n }\n\n pps.timeFormatter = new Cleave.TimeFormatter(pps.timePattern, pps.timeFormat);\n pps.blocks = pps.timeFormatter.getBlocks();\n pps.blocksLength = pps.blocks.length;\n pps.maxLength = Cleave.Util.getMaxLength(pps.blocks);\n },\n\n initDateFormatter: function () {\n var owner = this, pps = owner.properties;\n\n if (!pps.date) {\n return;\n }\n\n pps.dateFormatter = new Cleave.DateFormatter(pps.datePattern, pps.dateMin, pps.dateMax);\n pps.blocks = pps.dateFormatter.getBlocks();\n pps.blocksLength = pps.blocks.length;\n pps.maxLength = Cleave.Util.getMaxLength(pps.blocks);\n },\n\n initPhoneFormatter: function () {\n var owner = this, pps = owner.properties;\n\n if (!pps.phone) {\n return;\n }\n\n // Cleave.AsYouTypeFormatter should be provided by\n // external google closure lib\n try {\n pps.phoneFormatter = new Cleave.PhoneFormatter(\n new pps.root.Cleave.AsYouTypeFormatter(pps.phoneRegionCode),\n pps.delimiter\n );\n } catch (ex) {\n throw new Error('[cleave.js] Please include phone-type-formatter.{country}.js lib');\n }\n },\n\n onKeyDown: function (event) {\n var owner = this,\n charCode = event.which || event.keyCode;\n\n owner.lastInputValue = owner.element.value;\n owner.isBackward = charCode === 8;\n },\n\n onChange: function (event) {\n var owner = this, pps = owner.properties,\n Util = Cleave.Util;\n\n owner.isBackward = owner.isBackward || event.inputType === 'deleteContentBackward';\n\n var postDelimiter = Util.getPostDelimiter(owner.lastInputValue, pps.delimiter, pps.delimiters);\n\n if (owner.isBackward && postDelimiter) {\n pps.postDelimiterBackspace = postDelimiter;\n } else {\n pps.postDelimiterBackspace = false;\n }\n\n this.onInput(this.element.value);\n },\n\n onFocus: function () {\n var owner = this,\n pps = owner.properties;\n owner.lastInputValue = owner.element.value;\n\n if (pps.prefix && pps.noImmediatePrefix && !owner.element.value) {\n this.onInput(pps.prefix);\n }\n\n Cleave.Util.fixPrefixCursor(owner.element, pps.prefix, pps.delimiter, pps.delimiters);\n },\n\n onCut: function (e) {\n if (!Cleave.Util.checkFullSelection(this.element.value)) return;\n this.copyClipboardData(e);\n this.onInput('');\n },\n\n onCopy: function (e) {\n if (!Cleave.Util.checkFullSelection(this.element.value)) return;\n this.copyClipboardData(e);\n },\n\n copyClipboardData: function (e) {\n var owner = this,\n pps = owner.properties,\n Util = Cleave.Util,\n inputValue = owner.element.value,\n textToCopy = '';\n\n if (!pps.copyDelimiter) {\n textToCopy = Util.stripDelimiters(inputValue, pps.delimiter, pps.delimiters);\n } else {\n textToCopy = inputValue;\n }\n\n try {\n if (e.clipboardData) {\n e.clipboardData.setData('Text', textToCopy);\n } else {\n window.clipboardData.setData('Text', textToCopy);\n }\n\n e.preventDefault();\n } catch (ex) {\n // empty\n }\n },\n\n onInput: function (value) {\n var owner = this, pps = owner.properties,\n Util = Cleave.Util;\n\n // case 1: delete one more character \"4\"\n // 1234*| -> hit backspace -> 123|\n // case 2: last character is not delimiter which is:\n // 12|34* -> hit backspace -> 1|34*\n // note: no need to apply this for numeral mode\n var postDelimiterAfter = Util.getPostDelimiter(value, pps.delimiter, pps.delimiters);\n if (!pps.numeral && pps.postDelimiterBackspace && !postDelimiterAfter) {\n value = Util.headStr(value, value.length - pps.postDelimiterBackspace.length);\n }\n\n // phone formatter\n if (pps.phone) {\n if (pps.prefix && (!pps.noImmediatePrefix || value.length)) {\n pps.result = pps.prefix + pps.phoneFormatter.format(value).slice(pps.prefix.length);\n } else {\n pps.result = pps.phoneFormatter.format(value);\n }\n owner.updateValueState();\n\n return;\n }\n\n // numeral formatter\n if (pps.numeral) {\n // Do not show prefix when noImmediatePrefix is specified\n // This mostly because we need to show user the native input placeholder\n if (pps.prefix && pps.noImmediatePrefix && value.length === 0) {\n pps.result = '';\n } else {\n pps.result = pps.numeralFormatter.format(value);\n }\n owner.updateValueState();\n\n return;\n }\n\n // date\n if (pps.date) {\n value = pps.dateFormatter.getValidatedDate(value);\n }\n\n // time\n if (pps.time) {\n value = pps.timeFormatter.getValidatedTime(value);\n }\n\n // strip delimiters\n value = Util.stripDelimiters(value, pps.delimiter, pps.delimiters);\n\n // strip prefix\n value = Util.getPrefixStrippedValue(value, pps.prefix, pps.prefixLength, pps.result, pps.delimiter, pps.delimiters, pps.noImmediatePrefix, pps.tailPrefix, pps.signBeforePrefix);\n\n // strip non-numeric characters\n value = pps.numericOnly ? Util.strip(value, /[^\\d]/g) : value;\n\n // convert case\n value = pps.uppercase ? value.toUpperCase() : value;\n value = pps.lowercase ? value.toLowerCase() : value;\n\n // prevent from showing prefix when no immediate option enabled with empty input value\n if (pps.prefix) {\n if (pps.tailPrefix) {\n value = value + pps.prefix;\n } else {\n value = pps.prefix + value;\n }\n\n\n // no blocks specified, no need to do formatting\n if (pps.blocksLength === 0) {\n pps.result = value;\n owner.updateValueState();\n\n return;\n }\n }\n\n // update credit card props\n if (pps.creditCard) {\n owner.updateCreditCardPropsByValue(value);\n }\n\n // strip over length characters\n value = Util.headStr(value, pps.maxLength);\n\n // apply blocks\n pps.result = Util.getFormattedValue(\n value,\n pps.blocks, pps.blocksLength,\n pps.delimiter, pps.delimiters, pps.delimiterLazyShow\n );\n\n owner.updateValueState();\n },\n\n updateCreditCardPropsByValue: function (value) {\n var owner = this, pps = owner.properties,\n Util = Cleave.Util,\n creditCardInfo;\n\n // At least one of the first 4 characters has changed\n if (Util.headStr(pps.result, 4) === Util.headStr(value, 4)) {\n return;\n }\n\n creditCardInfo = Cleave.CreditCardDetector.getInfo(value, pps.creditCardStrictMode);\n\n pps.blocks = creditCardInfo.blocks;\n pps.blocksLength = pps.blocks.length;\n pps.maxLength = Util.getMaxLength(pps.blocks);\n\n // credit card type changed\n if (pps.creditCardType !== creditCardInfo.type) {\n pps.creditCardType = creditCardInfo.type;\n\n pps.onCreditCardTypeChanged.call(owner, pps.creditCardType);\n }\n },\n\n updateValueState: function () {\n var owner = this,\n Util = Cleave.Util,\n pps = owner.properties;\n\n if (!owner.element) {\n return;\n }\n\n var endPos = owner.element.selectionEnd;\n var oldValue = owner.element.value;\n var newValue = pps.result;\n\n endPos = Util.getNextCursorPosition(endPos, oldValue, newValue, pps.delimiter, pps.delimiters);\n\n // fix Android browser type=\"text\" input field\n // cursor not jumping issue\n if (owner.isAndroid) {\n window.setTimeout(function () {\n owner.element.value = newValue;\n Util.setSelection(owner.element, endPos, pps.document, false);\n owner.callOnValueChanged();\n }, 1);\n\n return;\n }\n\n owner.element.value = newValue;\n if (pps.swapHiddenInput) owner.elementSwapHidden.value = owner.getRawValue();\n\n Util.setSelection(owner.element, endPos, pps.document, false);\n owner.callOnValueChanged();\n },\n\n callOnValueChanged: function () {\n var owner = this,\n pps = owner.properties;\n\n pps.onValueChanged.call(owner, {\n target: {\n name: owner.element.name,\n value: pps.result,\n rawValue: owner.getRawValue()\n }\n });\n },\n\n setPhoneRegionCode: function (phoneRegionCode) {\n var owner = this, pps = owner.properties;\n\n pps.phoneRegionCode = phoneRegionCode;\n owner.initPhoneFormatter();\n owner.onChange();\n },\n\n setRawValue: function (value) {\n var owner = this, pps = owner.properties;\n\n value = value !== undefined && value !== null ? value.toString() : '';\n\n if (pps.numeral) {\n value = value.replace('.', pps.numeralDecimalMark);\n }\n\n pps.postDelimiterBackspace = false;\n\n owner.element.value = value;\n owner.onInput(value);\n },\n\n getRawValue: function () {\n var owner = this,\n pps = owner.properties,\n Util = Cleave.Util,\n rawValue = owner.element.value;\n\n if (pps.rawValueTrimPrefix) {\n rawValue = Util.getPrefixStrippedValue(rawValue, pps.prefix, pps.prefixLength, pps.result, pps.delimiter, pps.delimiters, pps.noImmediatePrefix, pps.tailPrefix, pps.signBeforePrefix);\n }\n\n if (pps.numeral) {\n rawValue = pps.numeralFormatter.getRawValue(rawValue);\n } else {\n rawValue = Util.stripDelimiters(rawValue, pps.delimiter, pps.delimiters);\n }\n\n return rawValue;\n },\n\n getISOFormatDate: function () {\n var owner = this,\n pps = owner.properties;\n\n return pps.date ? pps.dateFormatter.getISOFormatDate() : '';\n },\n\n getISOFormatTime: function () {\n var owner = this,\n pps = owner.properties;\n\n return pps.time ? pps.timeFormatter.getISOFormatTime() : '';\n },\n\n getFormattedValue: function () {\n return this.element.value;\n },\n\n destroy: function () {\n var owner = this;\n\n owner.element.removeEventListener('input', owner.onChangeListener);\n owner.element.removeEventListener('keydown', owner.onKeyDownListener);\n owner.element.removeEventListener('focus', owner.onFocusListener);\n owner.element.removeEventListener('cut', owner.onCutListener);\n owner.element.removeEventListener('copy', owner.onCopyListener);\n },\n\n toString: function () {\n return '[Cleave Object]';\n }\n};\n\nCleave.NumeralFormatter = NumeralFormatter_1;\nCleave.DateFormatter = DateFormatter_1;\nCleave.TimeFormatter = TimeFormatter_1;\nCleave.PhoneFormatter = PhoneFormatter_1;\nCleave.CreditCardDetector = CreditCardDetector_1;\nCleave.Util = Util_1;\nCleave.DefaultProperties = DefaultProperties_1;\n\n// for angular directive\n((typeof commonjsGlobal === 'object' && commonjsGlobal) ? commonjsGlobal : window)['Cleave'] = Cleave;\n\n// CommonJS\nvar Cleave_1 = Cleave;\n\nexport default Cleave_1;\n","/*\r\n\timport { toMeridian } from \"@/utilities/time/toMeridian\"\r\n\r\n\tconst meridianTime = toMeridian (\"00:00:00\");\r\n\r\n\tplan:\r\n\t\t00:00:00 -> 12 am\r\n\t\t01:00:00 -> 1 am\r\n\t\t03:17:00 -> 3:17 am\r\n\r\n\r\n\t\t00 -> 12 am\r\n\t\t12 -> 12 pm\r\n\t\t13 -> 1 pm\r\n\t\t23 -> 11 pm\r\n\t\t24 -> 12 am\r\n\r\n*/\r\n\r\nimport { timeIsInvalid } from '@/utilities/time/isInvalid'\r\n\r\nexport function toMeridian(t, { includeBreakdown = false } = {}) {\r\n if (timeIsInvalid(t)) {\r\n return t\r\n }\r\n\r\n const split = t.split(':')\r\n\r\n let result = {\r\n hour: '',\r\n minute: split[1],\r\n second: split[2],\r\n meridian: 'am'\r\n }\r\n\r\n const hour = parseInt(split[0])\r\n\r\n if ([0, 24].includes(hour)) {\r\n result.hour += '12'\r\n result.meridian = 'am'\r\n } else if (hour === 12) {\r\n result.hour += '12'\r\n result.meridian = 'pm'\r\n } else if (hour >= 13) {\r\n result.hour = hour - 12\r\n result.meridian = 'pm'\r\n } else if (hour >= 1 && hour <= 11) {\r\n result.hour = hour\r\n result.meridian = 'am'\r\n } else {\r\n console.error({ hour })\r\n throw new Error(t)\r\n }\r\n\r\n let final = result.hour\r\n\r\n if (split[1] !== '00') {\r\n final += ':' + split[1]\r\n }\r\n\r\n final += ' ' + result.meridian\r\n\r\n if (includeBreakdown) {\r\n if (typeof result.minute === 'number') {\r\n result.minute = result.minute.toString()\r\n }\r\n if (result.minute.length === 1) {\r\n result.minute = '0' + result.minute\r\n }\r\n\r\n if (typeof result.hour === 'number') {\r\n result.hour = result.hour.toString()\r\n }\r\n if (result.hour.length === 1) {\r\n result.hour = '0' + result.hour\r\n }\r\n\r\n return {\r\n final,\r\n result\r\n }\r\n }\r\n\r\n return final\r\n}\r\n","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"img/recipients.7cc6df81.png\";","var $ = require('../internals/export');\nvar parseFloat = require('../internals/number-parse-float');\n\n// `Number.parseFloat` method\n// https://tc39.github.io/ecma262/#sec-number.parseFloat\n$({ target: 'Number', stat: true, forced: Number.parseFloat != parseFloat }, {\n parseFloat: parseFloat\n});\n","module.exports = \"data:image/png;base64,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\"","var aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = toLength(O.length);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","\"use strict\";module.exports={validate:function(cardNumber){var calc,calc2,trimmed=String(cardNumber).replace(/[\\s]/g,\"\"),length=trimmed.length,odd=!1,total=0;if(0===length)return!0;if(!/^[0-9]+$/.test(trimmed))return!1;for(var i=length;0\r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=41b8e565&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&lang=scss&\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-field',{staticStyle:{\"display\":\"inline-table\",\"text-align\":\"left\"},attrs:{\"tabindex\":\"0\",\"aria-label\":_vm.ariaLabel,\"label\":_vm.label}},[_c('b-field',{style:(_vm.styles.monthField)},[_c('b-select',{ref:\"month\",attrs:{\"placeholder\":\"Month\",\"aria-label\":_vm.ariaPrefix + ' month'},model:{value:(_vm.month),callback:function ($$v) {_vm.month=$$v},expression:\"month\"}},[_c('option',{attrs:{\"value\":\"01\"}},[_vm._v(\"January\")]),_c('option',{attrs:{\"value\":\"02\"}},[_vm._v(\"February\")]),_c('option',{attrs:{\"value\":\"03\"}},[_vm._v(\"March\")]),_c('option',{attrs:{\"value\":\"04\"}},[_vm._v(\"April\")]),_c('option',{attrs:{\"value\":\"05\"}},[_vm._v(\"May\")]),_c('option',{attrs:{\"value\":\"06\"}},[_vm._v(\"June\")]),_c('option',{attrs:{\"value\":\"07\"}},[_vm._v(\"July\")]),_c('option',{attrs:{\"value\":\"08\"}},[_vm._v(\"August\")]),_c('option',{attrs:{\"value\":\"09\"}},[_vm._v(\"September\")]),_c('option',{attrs:{\"value\":\"10\"}},[_vm._v(\"October\")]),_c('option',{attrs:{\"value\":\"11\"}},[_vm._v(\"November\")]),_c('option',{attrs:{\"value\":\"12\"}},[_vm._v(\"December\")])])],1),_c('b-field',{style:(_vm.styles.yearField)},[_c('b-input',{ref:\"year\",attrs:{\"placeholder\":\"Year\",\"aria-label\":_vm.ariaPrefix + ' year'},model:{value:(_vm.year),callback:function ($$v) {_vm.year=$$v},expression:\"year\"}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DateMonthYearPicker.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DateMonthYearPicker.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DateMonthYearPicker.vue?vue&type=template&id=1a78596a&scoped=true&\"\nimport script from \"./DateMonthYearPicker.vue?vue&type=script&lang=js&\"\nexport * from \"./DateMonthYearPicker.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DateMonthYearPicker.vue?vue&type=style&index=0&id=1a78596a&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 \"1a78596a\",\n null\n \n)\n\nexport default component.exports","/*\r\n\tGet days in month\r\n\t\tfor example: \r\n\t\t\tall saturdays in the november 5932?\r\n*/\r\n\r\n/*\r\n\timport { allDatesInMonth } from '@/utilities/Date/allDatesInMonth'\r\n\r\n allDatesInMonth ({\r\n year: 2022,\r\n month: 1\r\n }) \r\n*/\r\n\r\nimport { addSuffix } from '@/utilities/Date/addSuffix'\r\n\r\nimport moment from 'moment'\r\n\r\n/*\r\n\tyear: 2022 (UTC)\r\n\tmonth: 1 to 12\r\n\tdayOfWeek: 1 to 7\r\n*/\r\nexport function allDatesInMonth({ year, month, dayOfWeek = null, suffix = false }) {\r\n const totalDays = moment(`${year}-${month}`, 'YYYY-MM').daysInMonth()\r\n\r\n month = month - 1\r\n\r\n if (typeof dayOfWeek === 'number') {\r\n dayOfWeek = dayOfWeek - 1\r\n }\r\n\r\n const dates = []\r\n for (let a = 1; a <= totalDays; a++) {\r\n const date = new Date(year, month, a)\r\n const day = date.getDay()\r\n\r\n if (typeof dayOfWeek === 'number') {\r\n if (day === dayOfWeek) {\r\n dates.push(date)\r\n }\r\n } else {\r\n dates.push(date)\r\n }\r\n }\r\n\r\n if (suffix) {\r\n return {\r\n dates: dates.map(date => {\r\n const number = moment(date).date()\r\n\r\n return addSuffix(number)\r\n })\r\n }\r\n }\r\n\r\n return {\r\n dates\r\n }\r\n}\r\n"],"sourceRoot":""}