{"version":3,"file":"app-b4b1fd3e.9729664bca28a8e6916d.bundle.js","mappings":";;;;;;;;;;;;;;;AAAA;AACA;AAEA;AAIA;AAAA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AAtBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AAiBA;AAAA;AAdA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAIA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAxIA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AA+DA;AAAA;AA7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAOA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AA3WA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAcA;AAAA;AACA;AAAA;AAEA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAaA;AAAA;AA/BA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAMA;AAEA;AACA;AAEA;AACA;AAEA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAMA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA5VA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;AClBA;AACA;AAEA;AASA;AAAA;AAPA;AACA;AAEA;AACA;AAIA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AArCA;;;;;;;;;;;;;;;;;;;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAOA;AAAA;AALA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAIA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAaA;AAAA;AAXA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAIA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAxEA;;;;;;;;;;;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AA/DA;;;;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACPA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA","sources":["webpack://www.zeusteam.com/./src/members/integrations/_index.js","webpack://www.zeusteam.com/./src/members/integrations/calendar.js","webpack://www.zeusteam.com/./src/members/integrations/dialog/booking-calendar-editor.js","webpack://www.zeusteam.com/./src/members/integrations/dialog/your-calendar-online-editor.js","webpack://www.zeusteam.com/./src/members/integrations/nylas-callback.js","webpack://www.zeusteam.com/./src/members/leaderboards/dialogs/leaderboard-entry-editor.js","webpack://www.zeusteam.com/./src/members/leaderboards/entries.js","webpack://www.zeusteam.com/./src/members/leads/_index.js","webpack://www.zeusteam.com/./src/members/integrations/dialog/booking-calendar-editor.scss","webpack://www.zeusteam.com/./src/members/integrations/dialog/your-calendar-online-editor.scss","webpack://www.zeusteam.com/./src/members/integrations/_index.html","webpack://www.zeusteam.com/./src/members/integrations/calendar.html","webpack://www.zeusteam.com/./src/members/integrations/dialog/booking-calendar-editor.html","webpack://www.zeusteam.com/./src/members/integrations/dialog/your-calendar-online-editor.html","webpack://www.zeusteam.com/./src/members/integrations/nylas-callback.html","webpack://www.zeusteam.com/./src/members/leaderboards/dialogs/leaderboard-entry-editor.html","webpack://www.zeusteam.com/./src/members/leaderboards/entries.html","webpack://www.zeusteam.com/./src/members/leads/_index.html"],"sourcesContent":["import { PLATFORM } from 'aurelia-pal';\r\nimport { I18n } from 'common/i18n';\r\n\r\nexport class Index {\r\n static inject = [I18n];\r\n _i18n;\r\n\r\n constructor(i18n) {\r\n this._i18n = i18n;\r\n }\r\n\r\n configureRouter(config, router){\r\n config.map([\r\n {\r\n route: ['nylas', 'nylas/:from'],\r\n moduleId: PLATFORM.moduleName('members/integrations/nylas-callback'),\r\n nav: false,\r\n membersOnly: true,\r\n adminOnly: false,\r\n settings: { canAddToMobileMenu: false },\r\n },\r\n ]);\r\n\r\n this.router = router;\r\n }\r\n}\r\n","import { PLATFORM } from 'aurelia-pal';\r\nimport { bindable, observable, computedFrom } from 'aurelia-framework';\r\nimport { Security } from 'common/security';\r\nimport { Nylas } from 'services/nylas';\r\nimport { Calendar as CalendarSvc } from 'services/calendar';\r\nimport { Members } from 'services/members';\r\nimport { Notifier } from 'common/ui';\r\nimport { DialogService } from 'aurelia-dialog';\r\nimport { NewInstance } from 'aurelia-dependency-injection';\r\nimport { ValidationRules, ValidationController } from 'aurelia-validation';\r\nimport { BootstrapFormValidationRenderer } from 'validation/bootstrap-form-validation-renderer';\r\nimport { YourCalendarOnlineEditor } from './dialog/your-calendar-online-editor';\r\nimport copy from 'copy-to-clipboard';\r\nPLATFORM.moduleName('./dialog/your-calendar-online-editor');\r\n\r\n\r\nexport class Calendar {\r\n static inject = [Security, Nylas, CalendarSvc, Members, Notifier, DialogService, NewInstance.of(ValidationController)];\r\n\r\n _security;\r\n _nylas;\r\n _calendar;\r\n _members;\r\n _notifier;\r\n _dialogService;\r\n _validationController;\r\n\r\n @bindable memberId;\r\n @observable email;\r\n nylasAuthUrl;\r\n downlineUsesBookingCalendars = false;\r\n forMemberId;\r\n\r\n constructor(security, nylas, calendar, members, notifier, dialogService, validationController) {\r\n this._security = security;\r\n this._nylas = nylas;\r\n this._calendar = calendar;\r\n this._members = members;\r\n this._notifier = notifier;\r\n this._dialogService = dialogService;\r\n\t\tthis._validationController = validationController;\r\n\t\tthis._validationController.addRenderer(new BootstrapFormValidationRenderer());\r\n\r\n\t\tValidationRules\r\n .ensure('email').required().email()\r\n .on(this);\r\n }\r\n\r\n async attached() {\r\n this._isAttached = true;\r\n await this._initialize();\r\n }\r\n\r\n memberIdChanged() {\r\n if (!this._isAttached) return;\r\n this._initialize();\r\n }\r\n\r\n emailChanged() {\r\n if (!this._initialized) return;\r\n if (!this.email) {\r\n this.nylasAuthUrl = undefined;\r\n return;\r\n }\r\n this._loadNylasAuthUrl();\r\n }\r\n\r\n async _initialize() {\r\n if (!this.memberId) return;\r\n try {\r\n if (!this._security.isAuthenticatedMember(this.memberId)) {\r\n // Need to load up the agent and load all calendar details for the agent\r\n const agent = await this._members.getMember(this.memberId);\r\n this.forMemberId = this.memberId;\r\n this.email = agent.email;\r\n this.canSetSchedulingPages = agent.isAgency;\r\n } else {\r\n this.email = this._security.agent.email;\r\n this.canSetSchedulingPages = this._security.isAgency();\r\n }\r\n this.mustReauth = await this._nylas.mustReauth(this.forMemberId);\r\n await this._load();\r\n this.nylasAuthenticated = await this._nylas.isAuthenticated(this.forMemberId);\r\n } catch (err) {\r\n console.log(err);\r\n } finally {\r\n this._initialized = true;\r\n }\r\n }\r\n\r\n async _load() {\r\n try {\r\n this.loading = true;\r\n await Promise.all[this._loadNylasAuthUrl(), this._loadYourCalendarOnline(), this._loadActions()];\r\n } catch (err) {\r\n console.log(err);\r\n } finally {\r\n this.loading = false;\r\n }\r\n }\r\n\r\n async _loadYourCalendarOnline() {\r\n try {\r\n this.yco = await this._calendar.yourCalendarOnline(this.forMemberId);\r\n console.log('YCO', this.yco);\r\n this.ycoPreviewQs = this.yco.isActive ? '' : '?preview=true';\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n\r\n async _loadNylasAuthUrl() {\r\n try {\r\n const v = await this._validationController.validate();\r\n if (!v.valid) return;\r\n this.authorizedEmail = await this._nylas.authorizedEmail(this.forMemberId);\r\n const email = await this._nylas.email(this.email, this.forMemberId);\r\n this.nylasAuthUrl = await this._nylas.redirectToAuthUrl(email, undefined, this.forMemberId);\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n\r\n async _loadActions() {\r\n try {\r\n if (!this.canSetSchedulingPages) return; // only agencies get this option\r\n this.downlineUsesBookingCalendars = this._calendar.downlineUsesBookingCalendars();\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n\r\n async reauthNylas() {\r\n try {\r\n await this._nylas.resetAuth(this.forMemberId);\r\n this.mustReauth = await this._nylas.mustReauth(this.forMemberId);\r\n this._loadNylasAuthUrl();\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n\r\n copyToClipboard(bookingCalendarId) {\r\n let url = this.yco.url;\r\n if (bookingCalendarId) url += `/booking/${encodeURIComponent(bookingCalendarId)}`;\r\n\t copy(url);\r\n this._notifier.success('your-calendar-online-url-copy-success');\r\n }\r\n\r\n async openEdit() {\r\n this._dialogService.open({ viewModel: YourCalendarOnlineEditor, model: { memberId: this.memberId, yourCalendarOnline: this.yco }, ignoreTransitions: true }).whenClosed(response => {\r\n this._initialize();\r\n });\r\n return false;\r\n }\r\n\r\n async setDownlineUseBookingCalendars(checked) {\r\n try {\r\n await this._calendar.setDownlineUseBookingCalendars(checked, this.forMemberId);\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n}","import { Security } from 'common/security';\r\nimport { DialogController } from 'aurelia-dialog';\r\nimport { NewInstance } from 'aurelia-dependency-injection';\r\nimport { ValidationRules, ValidationController } from 'aurelia-validation';\r\nimport { BootstrapFormValidationRenderer } from 'validation/bootstrap-form-validation-renderer';\r\nimport { Calendar } from 'services/calendar';\r\nimport { Nylas } from 'services/nylas';\r\nimport { Notifier } from 'common/ui';\r\nimport { c } from 'common/common';\r\nimport { LpfnUtil } from 'common/utils';\r\nimport { Pipelines } from 'services/pipelines';\r\nimport { I18n } from 'common/i18n';\r\nimport { PERSON_TYPE } from 'common/constants';\r\nimport { Config } from 'services/config';\r\nimport { Content } from 'services/content';\r\n\r\nexport class BookingCalendarEditor {\r\n static inject = [Security, DialogController, NewInstance.of(ValidationController), Calendar, Nylas, Notifier, Pipelines, I18n, Config, Content];\r\n _security;\r\n dialogController;\r\n _calendar;\r\n _nylas;\r\n _notifier;\r\n _pipelines;\r\n _i18n;\r\n _config;\r\n _content;\r\n\r\n tab;\r\n tabs = [\r\n { code: 'event', title: 'booking-calendar-event', icon: 'fa-duotone fa-solid fa-calendar-clock' },\r\n { code: 'availability', title: 'booking-calendar-availability', icon: 'fa-duotone fa-solid fa-calendar-range' },\r\n { code: 'booking-options', title: 'booking-calendar-booking-options', icon: 'fa-duotone fa-solid fa-arrow-progress' },\r\n { code: 'fields', title: 'booking-calendar-fields', icon: 'fa-duotone fa-solid fa-square-list' },\r\n { code: 'emails', title: 'booking-calendar-emails', icon: 'fa-duotone fa-solid fa-envelope-circle-check' },\r\n { code: 'reminders', title: 'booking-calendar-reminders', icon: 'fa-duotone fa-solid fa-alarm-clock' },\r\n { code: 'guest', title: 'booking-calendar-guest', icon: 'fa-duotone fa-solid fa-user-clock' },\r\n { code: 'advanced', title: 'booking-calendar-advanced', icon: 'fa-duotone fa-solid fa-gear-complex' },\r\n ];\r\n availableRules = [];\r\n\r\n personTypes = [];\r\n locationOptions = ['phone', 'online', 'other'];\r\n timezoneOptions = ['America/New_York', 'America/Chicago', 'America/Denver', 'America/Phoenix', 'America/Los_Angeles', 'America/Anchorage', 'Pacific/Honolulu', 'America/Adak'];\r\n durationMinuteOptions = ['15', '30', '45', '60', '90'];\r\n bookDaysInFuture = ['3', '7', '14', '21', '30'];\r\n intervalMinuteOptions = ['0', '15', '30'];\r\n bookingNoticeMinuteOptions = ['15', '30', '60', '90', '120'];\r\n cancellationNoticeMinuteOptions = ['15', '30', '60', '90', '120'];\r\n startEndMinuteOptions = ['00', '15', '30', '45'];\r\n dayOptions = [\r\n { code: 'sunday', selected: false },\r\n { code: 'monday', selected: false },\r\n { code: 'tuesday', selected: false },\r\n { code: 'wednesday', selected: false },\r\n { code: 'thursday', selected: false },\r\n { code: 'friday', selected: false },\r\n { code: 'saturday', selected: false }\r\n ];\r\n reminderRecipients = ['all', 'host', 'guest'];\r\n questions = [];\r\n questionDataTypes = [\r\n { dataType: 'general', type: 'text' },\r\n { dataType: 'general-multi-line', type: 'multi_line_text' },\r\n { dataType: 'email', type: 'email' },\r\n { dataType: 'phone', type: 'phone_number' },\r\n { dataType: 'general-select-dropdown', type: 'dropdown' },\r\n { dataType: 'general-date', type: 'date' },\r\n { dataType: 'general-checkbox', type: 'checkbox' },\r\n { dataType: 'general-select-radio', type: 'radio_button' },\r\n { dataType: 'street-address', type: 'text' },\r\n { dataType: 'city', type: 'text' },\r\n { dataType: 'state', type: 'text' },\r\n { dataType: 'zip', type: 'text' },\r\n { dataType: 'date-of-birth', type: 'date' },\r\n ];\r\n\r\n deleteText = 'delete';\r\n\r\n constructor(security, dialogController, validationController, calendar, nylas, notifier, pipelines, i18n, config, content) {\r\n this._security = security;\r\n this.dialogController = dialogController;\r\n this.dialogController.settings.centerHorizontalOnly = true;\r\n this.validationController = validationController;\r\n this.validationController.addRenderer(new BootstrapFormValidationRenderer());\r\n this._calendar = calendar;\r\n this._nylas = nylas;\r\n this._notifier = notifier;\r\n this._pipelines = pipelines;\r\n this._i18n = i18n;\r\n this._config = config;\r\n this._content = content;\r\n }\r\n\r\n async activate(model) {\r\n this.displayTab(this.tabs[0]);\r\n model.bookingCalendar = model.bookingCalendar ?? {};\r\n this.forMemberId = model.forMemberId;\r\n this.bookingCalendar = JSON.parse(JSON.stringify(model.bookingCalendar));\r\n this.calendars = model.calendars ?? [];\r\n if (!this.bookingCalendar.id) {\r\n this.bookingCalendar.slug = `${this._security.agent.agentID}-${c.Helpers.uniqueId(7)}`;\r\n this.bookingCalendar.durationMinutes = '30';\r\n this.bookingCalendar.bookDaysInFuture = '7';\r\n this.bookingCalendar.minutesBetweenBookings = '15';\r\n this.bookingCalendar.minimumMinutesBeforeBooking = '60';\r\n this.bookingCalendar.minimumMinutesBeforeCancellation = '60';\r\n this.availableRules.push(this._defaultAvailableRule());\r\n this.questions = [];\r\n const defaultReminders = await this._config.get('NylasDefaultBookingCalendarReminders');\r\n this.reminders = defaultReminders ? JSON.parse(defaultReminders) : [];\r\n } else {\r\n // set up the form with the current booking calendar model\r\n // Make the Numbers strings so the default is selected\r\n this.bookingCalendar.durationMinutes += '';\r\n this.bookingCalendar.bookDaysInFuture += '';\r\n this.bookingCalendar.minutesBetweenBookings += '';\r\n this.bookingCalendar.minimumMinutesBeforeBooking += '';\r\n this.bookingCalendar.minimumMinutesBeforeCancellation += '';\r\n this.availableRules = [];\r\n this.bookingCalendar.daysAvailable.forEach(da => {\r\n const ar = this._defaultAvailableRule(false);\r\n da.days.forEach(day => {\r\n const doIndex = ar.dayOptions.findIndex(x => x.code === day);\r\n if (doIndex >= 0) ar.dayOptions[doIndex].selected = true;\r\n });\r\n ar.startAvailableHour = `${da.startHour}`;\r\n ar.startAvailableMinute = `${da.startMinute}`;\r\n ar.endAvailableHour = `${da.endHour}`;\r\n ar.endAvailableMinute = `${da.endMinute}`;\r\n this.availableRules.push(ar);\r\n });\r\n this.questions = [];\r\n this.bookingCalendar.additionalFields.forEach(af => {\r\n this.questions.push({\r\n question: af.name,\r\n type: af.type,\r\n dataType: af.dataType,\r\n isRequired: af.required,\r\n answerOptions: af.options ?? [],\r\n });\r\n });\r\n this.reminders = [];\r\n this.bookingCalendar.reminders.forEach(r => {\r\n this.reminders.push(JSON.parse(JSON.stringify(r)));\r\n });\r\n }\r\n\r\n this._setupValidation();\r\n this._load();\r\n }\r\n\r\n attached() {\r\n this._scrollToTop();\r\n }\r\n\r\n displayTab(tab) {\r\n this.tab = tab;\r\n }\r\n\r\n async _load() {\r\n try {\r\n this.pipelines = [];\r\n const pipelines = await this._pipelines.all(this.forMemberId);\r\n pipelines.forEach(p => {\r\n p.option = `${p.name} (${this._i18n.tr(p.personType)})`;\r\n });\r\n pipelines.unshift({ id: null, option: '' });\r\n this.pipelines = pipelines;\r\n const personTypes = PERSON_TYPE.visible();\r\n personTypes.unshift('');\r\n this.personTypes = personTypes;\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n\r\n _scrollToTop() {\r\n try {\r\n LpfnUtil.scrollToElm(this.containerEl, this.topEl, 600);\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n\r\n _setupValidation() {\r\n ValidationRules\r\n .ensure('title').required()\r\n .ensure('location').required()\r\n .ensure('duration').required()\r\n .ensure('calendarId').required()\r\n .on(this.bookingCalendar);\r\n\r\n this.validationController.reset();\r\n }\r\n\r\n _defaultAvailableRule(defaultSelected = true) {\r\n const ar = {\r\n dayOptions: JSON.parse(JSON.stringify(this.dayOptions)),\r\n startAvailableHour: '8',\r\n startAvailableMinute: '0',\r\n endAvailableHour: '20',\r\n endAvailableMinute: '0',\r\n };\r\n ar.dayOptions[1].selected = defaultSelected;\r\n ar.dayOptions[2].selected = defaultSelected;\r\n ar.dayOptions[3].selected = defaultSelected;\r\n ar.dayOptions[4].selected = defaultSelected;\r\n ar.dayOptions[5].selected = defaultSelected;\r\n return ar;\r\n }\r\n\r\n addAvailabilityRule() {\r\n this.availableRules.push(this._defaultAvailableRule());\r\n }\r\n\r\n removeAvailabilityRule(index) {\r\n this.availableRules.splice(index, 1);\r\n }\r\n\r\n selectDay(day) {\r\n day.selected = !day.selected;\r\n }\r\n\r\n onAddToPipelineChanged(bc) {\r\n try {\r\n if (!bc.addToPipelineId || bc.addToPipelineId === 'null') {\r\n bc.addPersonType = '';\r\n return;\r\n }\r\n const pipeline = this.pipelines.find(x => x.id === bc.addToPipelineId);\r\n bc.addPersonType = pipeline.personType;\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n\r\n async save() {\r\n if (this.saving) return;\r\n try {\r\n const v = await this.validationController.validate();\r\n if (!v.valid) return;\r\n this.saving = true;\r\n\r\n if (this.bookingCalendar.location === 'phone') this.bookingCalendar.locationDetail = '';\r\n\r\n this.bookingCalendar.daysAvailable = [];\r\n this.availableRules.forEach(ar => {\r\n const da = {\r\n days: ar.dayOptions.filter(x => x.selected).map(x => x.code),\r\n startHour: Number(ar.startAvailableHour),\r\n startMinute: Number(ar.startAvailableMinute),\r\n endHour: Number(ar.endAvailableHour),\r\n endMinute: Number(ar.endAvailableMinute),\r\n }\r\n this.bookingCalendar.daysAvailable.push(da);\r\n });\r\n this.bookingCalendar.additionalFields = [];\r\n this.questions.forEach(q => {\r\n this.bookingCalendar.additionalFields.push({\r\n name: q.question,\r\n type: q.type,\r\n dataType: q.dataType,\r\n required: q.isRequired,\r\n options: q.answerOptions,\r\n });\r\n });\r\n this.bookingCalendar.reminders = this.reminders;\r\n\r\n await this._calendar.saveBookingCalendar(this.bookingCalendar, this.forMemberId);\r\n this.dialogController.ok();\r\n } catch (err) {\r\n console.log(err);\r\n this._notifier.generalError(err);\r\n } finally {\r\n this.saving = false;\r\n }\r\n }\r\n\r\n addReminder() {\r\n this.reminders.push({\r\n type: 'email',\r\n minutesBeforeEvent: '15',\r\n recipient: this.reminderRecipients[0],\r\n subject: '',\r\n });\r\n }\r\n\r\n removeReminder(index) {\r\n this.reminders.splice(index, 1);\r\n }\r\n\r\n checkReminderForError(reminder) {\r\n reminder.hasError = !reminder.minutesBeforeEvent ? true : false;\r\n }\r\n\r\n addQuestion(addDataType = undefined) {\r\n const dataType = addDataType\r\n ? this.questionDataTypes.find(x => x.dataType === addDataType) ?? this.questionDataTypes[0]\r\n : this.questionDataTypes[0];\r\n this.questions.push({\r\n question: '',\r\n type: dataType.type,\r\n dataType: dataType.dataType,\r\n isRequired: false,\r\n referenceKey: '',\r\n answerOptions: [],\r\n });\r\n }\r\n\r\n questionDataTypeSelected(q) {\r\n const questionDataType = this.questionDataTypes.find(x => x.dataType === q.dataType);\r\n q.type = questionDataType?.type ?? 'text';\r\n console.log(q.type);\r\n }\r\n\r\n removeQuestion(index) {\r\n this.questions.splice(index, 1);\r\n }\r\n\r\n checkQuestionForError(question) {\r\n question.hasError = !question.question ? true : false;\r\n }\r\n\r\n addAnswerOption(question) {\r\n if (!question.addOption) question.addOption = '';\r\n if (!question.answerOptions.includes(question.addOption)) {\r\n question.answerOptions.push(question.addOption);\r\n }\r\n question.addOption = '';\r\n question.focusAddOption = true;\r\n }\r\n\r\n removeAnswerOption(question, index) {\r\n question.answerOptions.splice(index, 1);\r\n }\r\n\r\n async showEmail(key, bookingCalendarProperty) {\r\n try {\r\n const variables = [];\r\n variables.push({ key: 'booking.customMessage', value: this.bookingCalendar[bookingCalendarProperty] ?? '' });\r\n variables.push({ key: 'additionalHtml', value: '
The details of the booking including the questions asked in the booking will be displayed here
' });\r\n variables.push({ key: 'agent.name', value: this._security.agent.fullName });\r\n this.previewEmail = await this._content.emailTemplate(key, variables);\r\n } catch (err) {\r\n console.log(err);\r\n this.previewEmail = undefined;\r\n }\r\n }\r\n\r\n resetDelete() {\r\n this.showDeleteConfirm = false;\r\n this.deleteText = 'admin:remove-mentor';\r\n }\r\n\r\n async delete() {\r\n if (!this.showDeleteConfirm) {\r\n this.showDeleteConfirm = true;\r\n this.deleteText = 'delete-confirm';\r\n return;\r\n }\r\n\r\n this.showDeleteConfirm = false;\r\n if (this.deleting) return;\r\n try {\r\n this.deleting = true;\r\n await this._calendar.deleteBookingCalendar(this.bookingCalendar.id, this.forMemberId);\r\n this.deleteText = 'delete';\r\n this.dialogController.ok();\r\n } catch(err) {\r\n this.resetDelete();\r\n } finally {\r\n this.deleting = false;\r\n }\r\n }\r\n\r\n close() {\r\n this.dialogController.cancel();\r\n }\r\n}\r\n","import { PLATFORM } from 'aurelia-pal';\r\nimport { observable, computedFrom } from 'aurelia-framework';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { DialogService } from 'aurelia-dialog';\r\nimport { DialogController } from 'aurelia-dialog';\r\nimport { NewInstance } from 'aurelia-dependency-injection';\r\nimport { ValidationRules, ValidationController } from 'aurelia-validation';\r\nimport { BootstrapFormValidationRenderer } from 'validation/bootstrap-form-validation-renderer';\r\nimport { Security } from 'common/security';\r\nimport { Calendar } from 'services/calendar';\r\nimport { Notifier } from 'common/ui';\r\nimport { Nylas } from 'services/nylas';\r\nimport { ConfirmDialog } from 'common/dialogs/confirm/confirm-dialog';\r\nimport { BookingCalendarEditor } from './booking-calendar-editor';\r\nPLATFORM.moduleName('common/dialogs/confirm/confirm-dialog');\r\nPLATFORM.moduleName('./booking-calendar-editor');\r\n\r\nexport class YourCalendarOnlineEditor {\r\n static inject = [EventAggregator, DialogService, DialogController, NewInstance.of(ValidationController), Calendar, Security, Notifier, Nylas];\r\n _ea;\r\n _dialogService;\r\n _calendar;\r\n _security;\r\n _notifier;\r\n _nylas;\r\n\r\n memberId = null;\r\n forMemberId;\r\n isActive = false;\r\n slug = '';\r\n\r\n @observable({ changeHandler: '_updatePreview' }) title;\r\n @observable({ changeHandler: '_updatePreview' }) headerColor;\r\n bioImageUrl;\r\n @observable({ changeHandler: '_updatePreview' }) bioTitle;\r\n @observable({ changeHandler: '_updatePreview' }) bio;\r\n @observable({ changeHandler: '_updatePreview' }) buttonText;\r\n @observable({ changeHandler: '_updatePreview' }) buttonColor;\r\n\r\n deleteKey = 'delete';\r\n\r\n bookingCalendars = [];\r\n selectedBookingCalendars = 0;\r\n\r\n bookingCalendarTypes = ['phone', 'online', 'other'];\r\n bookingDurations = ['10', '15', '30', '60', 'other'];\r\n\r\n previewUrl = 'about:blank';\r\n _handlers = [];\r\n\r\n constructor(ea, dialogService, dialogController, validationController, calendar, security, notifier, nylas) {\r\n this._ea = ea;\r\n this._dialogService = dialogService;\r\n this.dialogController = dialogController;\r\n this.dialogController.settings.centerHorizontalOnly = true;\r\n this.validationController = validationController;\r\n this.validationController.addRenderer(new BootstrapFormValidationRenderer());\r\n this._calendar = calendar;\r\n this._security = security;\r\n this._notifier = notifier;\r\n this._nylas = nylas;\r\n\r\n ValidationRules\r\n .ensure('slug').required()\r\n .ensure('title').required()\r\n .ensure('bioTitle').required()\r\n .ensure('buttonText').required()\r\n .on(this);\r\n }\r\n\r\n activate(model) {\r\n this._handlers.push(this._ea.subscribe('dnd:didEnd', async() => {\r\n window.setTimeout(() => this._bookingCalendarReordered(), 0);\r\n }));\r\n\r\n this.memberId = model.memberId;\r\n this.forMemberId = this._security.isAuthenticatedMember(this.memberId) ? null : this.memberId;\r\n\r\n let uploadProfileImageTo = 'api/your-calendar-online/upload-profile-image';\r\n if (this.forMemberId) uploadProfileImageTo += `?memberId=${encodeURIComponent(this.forMemberId)}`;\r\n this.uploadProfileImageTo = uploadProfileImageTo;\r\n\r\n this.baseUrl = '';\r\n this.isActive = false;\r\n this.slug = '';\r\n this.title = '';\r\n this.bioImageUrl = '';\r\n this.bioTitle = '';\r\n this.bio = '';\r\n this.headerColor = '';\r\n this.buttonText = '';\r\n this.buttonColor = '';\r\n this.bookingCalendars = [];\r\n this.nylasCalendars = [];\r\n\r\n if (model.yourCalendarOnline) {\r\n this.baseUrl = model.yourCalendarOnline.baseUrl;\r\n this.isActive = model.yourCalendarOnline.isActive;\r\n this.slug = model.yourCalendarOnline.slug;\r\n this.title = model.yourCalendarOnline.pageTitle;\r\n this.bioImageUrl = model.yourCalendarOnline.bioImageUrl;\r\n this.bioTitle = model.yourCalendarOnline.bioTitle;\r\n this.bio = model.yourCalendarOnline.bio;\r\n this.headerColor = model.yourCalendarOnline.headerColor;\r\n this.buttonText = model.yourCalendarOnline.buttonText;\r\n this.buttonColor = model.yourCalendarOnline.buttonColor;\r\n this.bookingCalendars = model.yourCalendarOnline.bookingCalendars;\r\n this.bookingCalendars.sort((a, b) => a.order)\r\n this.nylasCalendars = model.yourCalendarOnline.nylasCalendars;\r\n this._initializeBookingCalendars();\r\n }\r\n this.validationController.reset();\r\n this.errorKey = null;\r\n this._savedMetadata = JSON.parse(JSON.stringify(this.siteMetadata()));\r\n this._updatePreview();\r\n\r\n if (!this.bookingCalendars.length) {\r\n this._loadDefaultBookingCalendars();\r\n }\r\n }\r\n\r\n deactivate() {\r\n this._handlers.forEach(h => h.dispose());\r\n this._handlers = [];\r\n }\r\n\r\n async _loadDefaultBookingCalendars() {\r\n try {\r\n this.loading = true;\r\n if (this.bookingCalendars.length) return;\r\n this.bookingCalendars = await this._calendar.defaultBookingCalendars();\r\n } catch (err) {\r\n console.log(err);\r\n } finally {\r\n this.loading = false;\r\n }\r\n }\r\n\r\n @computedFrom('bookingCalendars')\r\n get showFullEditor() {\r\n return this.bookingCalendars && this.bookingCalendars.find(x => x.selected) !== undefined;\r\n }\r\n\r\n async reloadBookingCalendars() {\r\n try {\r\n const yco = await this._calendar.yourCalendarOnline(this.forMemberId);\r\n yco.bookingCalendars.forEach(bc => {\r\n const existing = this.bookingCalendars.find(x => x.id === bc.id);\r\n if (!existing) return;\r\n bc.selected = existing.selected;\r\n });\r\n this.bookingCalendars = yco.bookingCalendars;\r\n this._initializeBookingCalendars();\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n\r\n _initializeBookingCalendars() {\r\n this.bookingCalendars.forEach(bc => {\r\n bc.url = `${this._nylas.schedulePageBase}${bc.slug}`;\r\n const cal = this.nylasCalendars.find(x => x.id === bc.calendarId);\r\n if (cal) bc.calendar = cal.name;\r\n });\r\n this.bookingCalendars.sort((a, b) => a.index - b.index);\r\n this.selectedBookingCalendars = this.bookingCalendars.filter(x => x.selected).length;\r\n }\r\n\r\n bookingCalendarSelected(bookingCalendar) {\r\n if (this.selectedBookingCalendars === 4 && !bookingCalendar.selected) {\r\n this._notifier.info('your-calendar-online-max-pages-selected');\r\n return;\r\n }\r\n bookingCalendar.selected = !bookingCalendar.selected;\r\n this.selectedBookingCalendars = this.bookingCalendars.filter(x => x.selected).length;\r\n this._updatePreview();\r\n return false;\r\n }\r\n\r\n _bookingCalendarReordered() {\r\n this._updatePreview();\r\n }\r\n\r\n onDescriptionChanged() {\r\n this._updatePreview();\r\n }\r\n\r\n async saveBookingCalendars() {\r\n if (this.saving) return;\r\n try {\r\n this.saving = true;\r\n await this._calendar.setBookingCalendars(this.bookingCalendars, this.forMemberId);\r\n const yco = await this._calendar.yourCalendarOnline(this.forMemberId);\r\n console.log('saveBookingCalendars', yco);\r\n this.bookingCalendars = yco.bookingCalendars;\r\n this._initializeBookingCalendars();\r\n } catch (err) {\r\n console.log(err);\r\n } finally {\r\n this.saving = false;\r\n }\r\n }\r\n\r\n _updatePreview() {\r\n this.previewUrl = 'about:blank';\r\n if (!this.baseUrl || !this.slug || this._activating) return;\r\n window.setTimeout(() => {\r\n const previewMetadata = this.siteMetadata();\r\n const url = `${this.baseUrl}#${this.slug}?preview=${encodeURIComponent(JSON.stringify(previewMetadata))}&previewBuster=${new Date().getTime()}`;\r\n this.previewUrl = url;\r\n }, 250);\r\n }\r\n\r\n siteMetadata() {\r\n const bookingCalendars = [];\r\n let index = 1;\r\n this.bookingCalendars.forEach(bc => {\r\n bookingCalendars.push({\r\n description: bc.description,\r\n durationMinutes: bc.durationMinutes,\r\n index: index++,\r\n slug: bc.slug,\r\n title: bc.title,\r\n location: bc.location,\r\n selected: bc.selected,\r\n });\r\n });\r\n return {\r\n bio: this.bio,\r\n bioImageUrl: this.bioImageUrl,\r\n bioTitle: this.bioTitle,\r\n buttonColor: this.buttonColor,\r\n buttonText: this.buttonText,\r\n headerColor: this.headerColor,\r\n pageTitle: this.title,\r\n bookingCalendars: bookingCalendars,\r\n };\r\n }\r\n\r\n async save() {\r\n if (this.saving) return;\r\n try {\r\n const v = await this.validationController.validate();\r\n if (!v.valid) return;\r\n this.errorKey = null;\r\n this.saving = true;\r\n\r\n const selectedPages = this.bookingCalendars.filter(x => x.selected);\r\n if (!selectedPages.length) {\r\n this._notifier.error('your-calendar-online-require-booking-calendar');\r\n return;\r\n }\r\n\r\n const bookingCalendars = [];\r\n let index = 1;\r\n console.log(this.bookingCalendars);\r\n this.bookingCalendars.forEach(bc => {\r\n bookingCalendars.push({\r\n nylasId: bc.id,\r\n slug: bc.slug,\r\n order: index++,\r\n showOnYco: bc.selected,\r\n title: bc.title,\r\n addPersonType: bc.addPersonType,\r\n addToPipelineId: bc.addToPipelineId,\r\n createdCustomMessage: bc.createdCustomMessage,\r\n rescheduledCustomMessage: bc.rescheduledCustomMessage,\r\n cancelledCustomMessage: bc.cancelledCustomMessage,\r\n reminderCustomMessage: bc.reminderCustomMessage,\r\n reminders: bc.reminders,\r\n });\r\n });\r\n\r\n const saveModel = {\r\n isActive: this.isActive,\r\n pageTitle: this.title,\r\n bioTitle: this.bioTitle,\r\n bio: this.bio,\r\n headerColor: this.headerColor,\r\n buttonText: this.buttonText,\r\n buttonColor: this.buttonColor,\r\n bookingCalendars: bookingCalendars,\r\n };\r\n\r\n await this._calendar.saveYourCalendarOnline(this.slug, saveModel, this.forMemberId);\r\n this._notifier.success('your-calendar-online-update-successful');\r\n const metadata = this.siteMetadata();\r\n this._savedMetadata = JSON.parse(JSON.stringify(metadata));\r\n this._updatePreview();\r\n } catch (err) {\r\n this._notifier.error(err);\r\n this.errorKey = err;\r\n } finally {\r\n this.saving = false;\r\n }\r\n }\r\n\r\n async bioImageUploaded() {\r\n try {\r\n const yco = await this._calendar.yourCalendarOnline(this.forMemberId);\r\n this.bioImageUrl = yco.bioImageUrl;\r\n this._updatePreview();\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n\r\n resetDelete() {\r\n this.showDeleteConfirm = false;\r\n this.deleteKey = 'delete';\r\n }\r\n\r\n async delete() {\r\n if (!this.showDeleteConfirm) {\r\n this.showDeleteConfirm = true;\r\n this.deleteKey = 'delete-confirm';\r\n return;\r\n }\r\n\r\n this.showDeleteConfirm = false;\r\n if (this.deleting) return;\r\n try {\r\n this.deleting = true;\r\n const response = await this._calendar.deleteYourCalendarOnline(this.forMemberId);\r\n this.dialogController.ok();\r\n } catch(err) {\r\n this.resetDelete();\r\n this._notifier.generalError();\r\n } finally {\r\n this.deleting = false;\r\n }\r\n }\r\n\r\n openBookingCalendarEditor(bookingCalendar) {\r\n const model = {\r\n forMemberId: this.forMemberId,\r\n bookingCalendar,\r\n calendars: this.nylasCalendars,\r\n };\r\n this._dialogService.open({ viewModel: BookingCalendarEditor, model, ignoreTransitions: true }).whenClosed(async(response) => {\r\n if (response.wasCancelled) return;\r\n await this.reloadBookingCalendars();\r\n this._updatePreview();\r\n });\r\n }\r\n\r\n close() {\r\n try {\r\n const currentMetadata = this.siteMetadata();\r\n if (JSON.stringify(currentMetadata) !== JSON.stringify(this._savedMetadata)) {\r\n const model = { key: 'profile:yco-save-changes', okButtonClass: 'btn-primary' };\r\n this._dialogService.open({ viewModel: ConfirmDialog, model, ignoreTransitions: true }).whenClosed(async(response) => {\r\n if (response.wasCancelled) {\r\n this.dialogController.cancel();\r\n return;\r\n }\r\n await this.save();\r\n this.dialogController.cancel();\r\n });\r\n } else {\r\n this.dialogController.cancel();\r\n }\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n}\r\n","import { Nylas } from 'services/nylas';\r\nimport { Router } from 'aurelia-router';\r\n\r\nexport class NylasCallback {\r\n static inject = [Nylas, Router];\r\n _nylas;\r\n _router;\r\n\r\n _notifyKey;\r\n _notifyType;\r\n _redirectTo;\r\n\r\n constructor(nylas, router) {\r\n this._nylas = nylas;\r\n this._router = router;\r\n }\r\n\r\n async activate(model) {\r\n try {\r\n console.log('nylas-callback', model);\r\n this._from = model.from;\r\n await this._nylas.authenticated(model.code, model.state);\r\n this._notifyKey = 'nylas-authentication-success';\r\n this._notifyType = 'success';\r\n } catch (err) {\r\n console.log(err);\r\n this._notifyKey = 'nylas-authentication-error';\r\n this._notifyType = 'error';\r\n }\r\n }\r\n\r\n attached() {\r\n let redirectTo = `#/members/my-profile?notifyKey=${this._notifyKey}¬ifyType=${this._notifyType}`;\r\n if (this._from === 'task') {\r\n redirectTo = `#/members/tasks?notifyKey=${this._notifyKey}¬ifyType=${this._notifyType}`;\r\n } else if (this._from === 'schedule-editor') {\r\n redirectTo = ``;\r\n }\r\n this._router.navigate(redirectTo);\r\n }\r\n}","import { inject } from 'aurelia-framework';\r\nimport { DialogController } from 'aurelia-dialog';\r\nimport { NewInstance } from 'aurelia-dependency-injection';\r\nimport { ValidationRules, ValidationController } from 'aurelia-validation';\r\nimport { BootstrapFormValidationRenderer } from 'validation/bootstrap-form-validation-renderer';\r\nimport { I18n } from 'common/i18n';\r\nimport { Leaderboards } from 'services/leaderboards';\r\nimport { Notifier } from 'common/ui';\r\nimport moment from 'moment';\r\n\r\n@inject(DialogController, NewInstance.of(ValidationController), I18n, Leaderboards, Notifier)\r\nexport class LeaderboardEntryEditor {\r\n id;\r\n entryDate;\r\n value;\r\n lineOfBusiness;\r\n\r\n constructor(dialogController, validationController, i18n, leaderboards, notifier) {\r\n this.dialogController = dialogController;\r\n this.dialogController.settings.centerHorizontalOnly = true;\r\n this.validationController = validationController;\r\n this.validationController.addRenderer(new BootstrapFormValidationRenderer());\r\n this._i18n = i18n;\r\n this._leaderboards = leaderboards;\r\n this._notifier = notifier;\r\n\r\n this.deleteText = this._i18n.tr('delete');\r\n\r\n ValidationRules\r\n .ensure('entryDate').required()\r\n .ensure('value').required()\r\n .on(this);\r\n }\r\n\r\n activate(model) {\r\n this.id = model.id;\r\n this.entryDate = moment(model.entryDate).format('YYYY-MM-DD');\r\n this.value = model.value;\r\n this.lineOfBusiness = model.lineOfBusiness;\r\n this.validationController.reset();\r\n }\r\n\r\n async save() {\r\n try {\r\n const v = await this.validationController.validate();\r\n if (!v.valid) return;\r\n\r\n const entryDate = moment(this.entryDate, 'YYYY-MM-DD').format('L');\r\n await this._leaderboards.updateEntry(this.id, entryDate, this.value, this.lineOfBusiness);\r\n this._notifier.success(this._i18n.tr('entry-update-success'));\r\n this.dialogController.ok({ deleted: false });\r\n } catch (err) {\r\n this._notifier.generalError(); \r\n }\r\n }\r\n\r\n resetDelete() {\r\n this.showDeleteConfirm = false;\r\n this.deleteText = this._i18n.tr('delete');\r\n }\r\n\r\n async deleteEntry() {\r\n if (!this.showDeleteConfirm) {\r\n this.showDeleteConfirm = true;\r\n this.deleteText = this._i18n.tr('delete-confirm');\r\n return;\r\n }\r\n\r\n this.showDeleteConfirm = false;\r\n\r\n try {\r\n await this._leaderboards.deleteEntry(this.id);\r\n this._notifier.success('entry-update-deleted');\r\n this.dialogController.ok({ deleted: true });\r\n } catch (err) {\r\n this._notifier.generalError();\r\n }\r\n }\r\n}\r\n","import { PLATFORM } from 'aurelia-pal';\r\nimport { Leaderboards } from 'services/leaderboards';\r\nimport { I18n } from 'common/i18n';\r\nimport { LeaderboardEntryEditor } from './dialogs/leaderboard-entry-editor';\r\nimport { DialogService } from 'aurelia-dialog';\r\nimport { c } from 'common/common';\r\nimport { LineOfBusinessValueConverter } from 'resources/value-converters/line-of-business';\r\nPLATFORM.moduleName('./dialogs/leaderboard-entry-editor');\r\n\r\nexport class Entries {\r\n static inject = [Leaderboards, I18n, DialogService, LineOfBusinessValueConverter];\r\n _leaderboards;\r\n _i18n;\r\n _dialogService;\r\n _lobValueConverter;\r\n code;\r\n _memberId;\r\n\r\n columns;\r\n gridData;\r\n emptyGridMessage;\r\n\r\n\tconstructor(leaderboards, i18n, dialogService, lobValueConverter) {\r\n\t\tthis._leaderboards = leaderboards;\r\n this._i18n = i18n;\r\n this._dialogService = dialogService;\r\n this._lobValueConverter = lobValueConverter;\r\n \r\n this._initializeGrid();\r\n\t}\r\n\r\n _initializeGrid() {\r\n this.columns = [];\r\n this.columns.push(c.FlexGrid.column('date', c.FlexGrid.sizes.small, this._i18n.tr('entry-date'), c.FlexGrid.types.date, { formatter: 'L' }));\r\n this.columns.push(c.FlexGrid.column('lineOfBusiness', c.FlexGrid.sizes.small, this._i18n.tr('line-of-business'), c.FlexGrid.types.string, {}));\r\n this.columns.push(c.FlexGrid.column('value', c.FlexGrid.sizes.small, this._i18n.tr('value'), c.FlexGrid.types.money, {}));\r\n }\r\n\r\n\tactivate(params) {\r\n this.code = params.code;\r\n this._memberId = params.memberId;\r\n }\r\n\r\n attached() {\r\n this._load();\r\n }\r\n\r\n async _load() {\r\n try {\r\n this.loadingFlexgrid = true;\r\n this.data = await this._leaderboards.entries(this.code, this._memberId);\r\n let gridData = [];\r\n this.member = {\r\n id: this.data.memberId,\r\n firstName: this.data.firstName,\r\n lastName: this.data.lastName,\r\n };\r\n for (let entry of this.data.entries) {\r\n gridData.push({\r\n highlight: false,\r\n values: [\r\n c.FlexGrid.cellData('id', entry.id),\r\n c.FlexGrid.cellData('date', entry.entryDate),\r\n c.FlexGrid.cellData('lineOfBusiness', this._lobValueConverter.toView(entry.lineOfBusiness)),\r\n c.FlexGrid.cellData('value', entry.value),\r\n ]\r\n });\r\n }\r\n this.gridData = gridData;\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n\r\n openSummary(id) {\r\n const entry = this.data.entries.find(x => x.id === id);\r\n\t this._dialogService.open({ viewModel: LeaderboardEntryEditor, model: entry, ignoreTransitions: true }).then(response => {\r\n\t if (response.wasCancelled) return;\r\n\t this._load();\r\n\t });\r\n }\r\n}\r\n","import { PLATFORM } from 'aurelia-pal';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { Security } from 'common/security';\r\nimport { Menus } from 'services/menus';\r\nimport { RouterConfigBase } from 'resources/base-classes/router-config-base';\r\n\r\nexport class Index extends RouterConfigBase {\r\n\tstatic inject = [EventAggregator, Security, Menus];\r\n\r\n\tconstructor(ea, security, menus) {\r\n super(ea, security, menus, undefined, false);\r\n\t}\r\n\r\n\tconfigureRouter(config, router){\r\n\t\tconfig.map([\r\n {\r\n\t\t\t\troute: ['', '/:leadType'],\r\n\t\t\t\tmoduleId: PLATFORM.moduleName('members/leads/lead-list'),\r\n\t\t\t\tnav: false,\r\n\t\t\t\tmembersOnly: true,\r\n\t\t\t\tadminOnly: false,\r\n\t\t\t\tsettings: {\r\n\t\t\t\t\ttitle: 'agent-leads',\r\n\t\t\t\t\tdescription: 'agent-leads-description',\r\n\t\t\t\t\tcanAddToMobileMenu: true\r\n\t\t\t\t},\r\n\t\t\t},\r\n {\r\n\t\t\t\troute: ['lead/:id', 'lead/:id/:view'],\r\n\t\t\t\tmoduleId: PLATFORM.moduleName('members/leads/lead'),\r\n\t\t\t\tnav: false,\r\n\t\t\t\tmembersOnly: true,\r\n\t\t\t\tadminOnly: false,\r\n\t\t\t\tsettings: {\r\n\t\t\t\t\ttitle: 'agent-lead',\r\n\t\t\t\t\tdescription: 'agent-lead-description',\r\n\t\t\t\t\tcanAddToMobileMenu: false\r\n\t\t\t\t},\r\n\t\t\t},\r\n {\r\n\t\t\t\troute: 'tracking-system',\r\n\t\t\t\tmoduleId: PLATFORM.moduleName('members/leads/tracking-system'),\r\n\t\t\t\tnav: false,\r\n settings: { title: 'lead-tracking-system', description: 'lead-tracking-system-description', canAddToMobileMenu: true },\r\n\t\t\t},\r\n {\r\n\t\t\t\troute: 'activity',\r\n\t\t\t\tmoduleId: PLATFORM.moduleName('members/leads/activity-dashboard'),\r\n\t\t\t\tnav: false,\r\n settings: { title: 'lead-activity-dashboard', description: 'lead-activity-dashboard-description', canAddToMobileMenu: true },\r\n\t\t\t},\r\n {\r\n\t\t\t\troute: 'import',\r\n\t\t\t\tmoduleId: PLATFORM.moduleName('members/leads/import'),\r\n\t\t\t\tnav: false,\r\n settings: { title: 'lead-import', description: 'lead-import-description', canAddToMobileMenu: false },\r\n\t\t\t}\r\n\t\t]);\r\n\r\n\t\tthis.router = router;\r\n\t}\r\n\r\n\tattached() {\r\n\t\tthis._attached();\r\n\t}\r\n\r\n\tdetached() {\r\n\t\tthis._detached();\r\n\t}\r\n}\r\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".zeus-tabs-vertical {\\n display: flex;\\n width: 100%;\\n height: 100%;\\n flex-direction: column;\\n}\\n@media (min-width: 768px) {\\n .zeus-tabs-vertical {\\n flex-direction: row;\\n overflow: hidden;\\n }\\n}\\n.zeus-tabs-vertical .zeus-tabs {\\n display: flex;\\n flex-direction: column;\\n width: 100%;\\n}\\n@media (min-width: 768px) {\\n .zeus-tabs-vertical .zeus-tabs {\\n width: 250px;\\n overflow: auto;\\n }\\n}\\n.zeus-tabs-vertical .zeus-tabs .zeus-tab {\\n padding: var(--zeus-margin-sm);\\n border: 1px solid var(--kt-card-border-color);\\n}\\n.zeus-tabs-vertical .zeus-tabs .zeus-tab.zeus-active {\\n border-left: 3px solid var(--kt-info);\\n font-weight: bold;\\n color: var(--kt-info);\\n}\\n.zeus-tabs-vertical .zeus-tabs .zeus-tab.zeus-active i {\\n color: var(--kt-info);\\n}\\n.zeus-tabs-vertical .zeus-tab-content {\\n display: flex;\\n width: 100%;\\n height: 100%;\\n overflow: auto;\\n padding: 0 var(--zeus-margin-lg);\\n padding-top: var(--zeus-margin);\\n}\\n@media (min-width: 768px) {\\n .zeus-tabs-vertical .zeus-tab-content {\\n padding-top: 0;\\n }\\n}\\n\\n.zeus-availability-rule-container {\\n padding: var(--zeus-margin-xl);\\n border-radius: var(--zeus-margin-sm);\\n margin-bottom: var(--zeus-margin-xl);\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n border: 1px dashed var(--kt-card-border-color);\\n}\\n.zeus-availability-rule-container .fv-row, .zeus-availability-rule-container .row {\\n width: 100%;\\n}\\n.zeus-availability-rule-container .zeus-form-buttons {\\n display: flex;\\n justify-content: flex-start;\\n align-items: center;\\n}\\n.zeus-availability-rule-container .zeus-form-buttons.zeus-right {\\n justify-content: flex-end;\\n}\\n\\n.zeus-form-question-container .card-header draggable-handle {\\n position: absolute;\\n left: 5px;\\n top: 14px;\\n}\\n.zeus-form-question-container .zeus-form-question {\\n flex: 2;\\n display: flex;\\n flex-direction: column;\\n}\\n.zeus-form-question-container .zeus-form-question-row {\\n display: flex;\\n flex-direction: column;\\n}\\n.zeus-form-question-container .zeus-form-question-row > * {\\n width: 100%;\\n}\\n.zeus-form-question-container .zeus-form-question-row .zeus-self-align-center {\\n align-self: center;\\n}\\n@media (min-width: 768px) {\\n .zeus-form-question-container .zeus-form-question-row {\\n flex-direction: row;\\n }\\n .zeus-form-question-container .zeus-form-question-row > * {\\n width: 50%;\\n }\\n}\\n.zeus-form-question-container .zeus-tags .zeus-tag draggable-handle {\\n margin-right: var(--zeus-margin-xs);\\n}\\n.zeus-form-question-container .zeus-form-buttons {\\n display: flex;\\n justify-content: flex-start;\\n align-items: center;\\n}\\n.zeus-form-question-container .zeus-form-buttons.zeus-right {\\n justify-content: flex-end;\\n}\\n\\n.zeus-tags {\\n padding: var(--uas-margin);\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/members/integrations/dialog/booking-calendar-editor.scss\"],\"names\":[],\"mappings\":\"AAEA;EACI,aAAA;EACA,WAAA;EACA,YAAA;EACA,sBAAA;AADJ;AAGI;EANJ;IAOQ,mBAAA;IACA,gBAAA;EAAN;AACF;AAEI;EACI,aAAA;EACA,sBAAA;EACA,WAAA;AAAR;AAEQ;EALJ;IAMQ,YAAA;IACA,cAAA;EACV;AACF;AACQ;EACI,8BAAA;EACA,6CAAA;AACZ;AACY;EACI,qCAAA;EACA,iBAAA;EACA,qBAAA;AAChB;AACgB;EACI,qBAAA;AACpB;AAKI;EACI,aAAA;EACA,WAAA;EACA,YAAA;EACA,cAAA;EACA,gCAAA;EACA,+BAAA;AAHR;AAKQ;EARJ;IASQ,cAAA;EAFV;AACF;;AAMA;EACI,8BAAA;EACA,oCAAA;EACA,oCAAA;EACA,aAAA;EACA,sBAAA;EACA,mBAAA;EACA,8CAAA;AAHJ;AAKI;EACI,WAAA;AAHR;AAMI;EACI,aAAA;EACA,2BAAA;EACA,mBAAA;AAJR;AAMQ;EACI,yBAAA;AAJZ;;AAUI;EACI,kBAAA;EACA,SAAA;EACA,SAAA;AAPR;AAUI;EACI,OAAA;EACA,aAAA;EACA,sBAAA;AARR;AAWI;EACI,aAAA;EACA,sBAAA;AATR;AAWQ;EACI,WAAA;AATZ;AAYQ;EACI,kBAAA;AAVZ;AAaQ;EAZJ;IAaQ,mBAAA;EAVV;EAYU;IACI,UAAA;EAVd;AACF;AAcI;EACI,mCAAA;AAZR;AAeI;EACI,aAAA;EACA,2BAAA;EACA,mBAAA;AAbR;AAeQ;EACI,yBAAA;AAbZ;;AAkBA;EACI,0BAAA;AAfJ\",\"sourcesContent\":[\"@import \\\"./../../../styles/responsive.scss\\\";\\r\\n\\r\\n.zeus-tabs-vertical {\\r\\n display: flex;\\r\\n width: 100%;\\r\\n height: 100%;\\r\\n flex-direction: column;\\r\\n\\r\\n @media (min-width: $zeus-screen-sm-min) {\\r\\n flex-direction: row;\\r\\n overflow: hidden;\\r\\n }\\r\\n\\r\\n .zeus-tabs {\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n width: 100%;\\r\\n\\r\\n @media (min-width: $zeus-screen-sm-min) {\\r\\n width: 250px;\\r\\n overflow: auto;\\r\\n }\\r\\n\\r\\n .zeus-tab {\\r\\n padding: var(--zeus-margin-sm);\\r\\n border: 1px solid var(--kt-card-border-color);\\r\\n\\r\\n &.zeus-active {\\r\\n border-left: 3px solid var(--kt-info);\\r\\n font-weight: bold;\\r\\n color: var(--kt-info);\\r\\n\\r\\n i {\\r\\n color: var(--kt-info);\\r\\n }\\r\\n }\\r\\n }\\r\\n }\\r\\n\\r\\n .zeus-tab-content {\\r\\n display: flex;\\r\\n width: 100%;\\r\\n height: 100%;\\r\\n overflow: auto;\\r\\n padding: 0 var(--zeus-margin-lg);\\r\\n padding-top: var(--zeus-margin);\\r\\n\\r\\n @media (min-width: $zeus-screen-sm-min) {\\r\\n padding-top: 0;\\r\\n }\\r\\n }\\r\\n}\\r\\n\\r\\n.zeus-availability-rule-container {\\r\\n padding: var(--zeus-margin-xl);\\r\\n border-radius: var(--zeus-margin-sm);\\r\\n margin-bottom: var(--zeus-margin-xl);\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n align-items: center;\\r\\n border: 1px dashed var(--kt-card-border-color);\\r\\n\\r\\n .fv-row, .row {\\r\\n width: 100%;\\r\\n }\\r\\n\\r\\n .zeus-form-buttons {\\r\\n display: flex;\\r\\n justify-content: flex-start;\\r\\n align-items: center;\\r\\n\\r\\n &.zeus-right {\\r\\n justify-content: flex-end;\\r\\n }\\r\\n }\\r\\n}\\r\\n\\r\\n.zeus-form-question-container {\\r\\n .card-header draggable-handle {\\r\\n position: absolute;\\r\\n left: 5px;\\r\\n top: 14px;\\r\\n }\\r\\n\\r\\n .zeus-form-question {\\r\\n flex: 2;\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n }\\r\\n\\r\\n .zeus-form-question-row {\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n\\r\\n > * {\\r\\n width: 100%;\\r\\n }\\r\\n\\r\\n .zeus-self-align-center {\\r\\n align-self: center;\\r\\n }\\r\\n\\r\\n @media (min-width: $zeus-screen-sm-min) {\\r\\n flex-direction: row;\\r\\n\\r\\n > * {\\r\\n width: 50%;\\r\\n }\\r\\n }\\r\\n }\\r\\n\\r\\n .zeus-tags .zeus-tag draggable-handle {\\r\\n margin-right: var(--zeus-margin-xs);\\r\\n }\\r\\n\\r\\n .zeus-form-buttons {\\r\\n display: flex;\\r\\n justify-content: flex-start;\\r\\n align-items: center;\\r\\n\\r\\n &.zeus-right {\\r\\n justify-content: flex-end;\\r\\n }\\r\\n }\\r\\n}\\r\\n\\r\\n.zeus-tags {\\r\\n padding: var(--uas-margin);\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".zeus-your-calendar-online-profile-dropzone {\\n border: dashed 2px #ccc;\\n}\\n\\n.zeus-booking-calendar-selector {\\n display: flex;\\n align-items: center;\\n}\\n.zeus-booking-calendar-selector .zeus-booking-calendar-selector-icon {\\n width: 48px;\\n height: 48px;\\n border: 1px dashed var(--kt-text-muted);\\n border-radius: 50%;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n}\\n.zeus-booking-calendar-selector .zeus-booking-calendar-selector-icon > i {\\n font-size: 30px;\\n}\\n.zeus-booking-calendar-selector.active {\\n color: var(--kt-success) !important;\\n}\\n.zeus-booking-calendar-selector.active .zeus-booking-calendar-selector-icon {\\n border-color: var(--kt-success);\\n}\\n.zeus-booking-calendar-selector.active .zeus-booking-calendar-selector-icon > i {\\n color: var(--kt-success) !important;\\n}\\n.zeus-booking-calendar-selector:hover {\\n color: var(--kt-success) !important;\\n}\\n.zeus-booking-calendar-selector:hover .zeus-booking-calendar-selector-icon {\\n color: var(--kt-success) !important;\\n}\\n.zeus-booking-calendar-selector:hover .zeus-booking-calendar-selector-icon i {\\n color: var(--kt-success);\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/members/integrations/dialog/your-calendar-online-editor.scss\"],\"names\":[],\"mappings\":\"AAAA;EACI,uBAAA;AACJ;;AAEA;EACI,aAAA;EACA,mBAAA;AACJ;AACI;EACI,WAAA;EACA,YAAA;EACA,uCAAA;EACA,kBAAA;EACA,aAAA;EACA,uBAAA;EACA,mBAAA;AACR;AACQ;EACI,eAAA;AACZ;AAGI;EACI,mCAAA;AADR;AAGQ;EACI,+BAAA;AADZ;AAGY;EACI,mCAAA;AADhB;AAMI;EACI,mCAAA;AAJR;AAMQ;EACI,mCAAA;AAJZ;AAMY;EACI,wBAAA;AAJhB\",\"sourcesContent\":[\".zeus-your-calendar-online-profile-dropzone {\\r\\n border: dashed 2px #ccc;\\r\\n}\\r\\n\\r\\n.zeus-booking-calendar-selector {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n\\r\\n .zeus-booking-calendar-selector-icon {\\r\\n width: 48px;\\r\\n height: 48px;\\r\\n border: 1px dashed var(--kt-text-muted);\\r\\n border-radius: 50%;\\r\\n display: flex;\\r\\n justify-content: center;\\r\\n align-items: center;\\r\\n\\r\\n > i {\\r\\n font-size: 30px;\\r\\n }\\r\\n }\\r\\n\\r\\n &.active {\\r\\n color: var(--kt-success) !important;\\r\\n\\r\\n .zeus-booking-calendar-selector-icon {\\r\\n border-color: var(--kt-success);\\r\\n\\r\\n > i {\\r\\n color: var(--kt-success) !important;\\r\\n }\\r\\n }\\r\\n }\\r\\n\\r\\n &:hover {\\r\\n color: var(--kt-success) !important;\\r\\n\\r\\n .zeus-booking-calendar-selector-icon {\\r\\n color: var(--kt-success) !important;\\r\\n\\r\\n i {\\r\\n color: var(--kt-success);\\r\\n }\\r\\n }\\r\\n }\\r\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;"],"names":[],"sourceRoot":""}