@nylas/web-elements 2.3.1-canary-20260108155609 → 2.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/dist/cdn/nylas-scheduler-editor/nylas-scheduler-editor.es.js +228 -228
  2. package/dist/cdn/nylas-scheduling/nylas-scheduling.es.js +4069 -4071
  3. package/dist/cjs/google-logo-icon.microsoft-logo-icon.nylas-editor-tabs.nylas-editor-tabs-group.nylas-list-configurations.nylas-select-event-type.entry.cjs.js.map +1 -1
  4. package/dist/cjs/google-logo-icon_6.cjs.entry.js +7 -7
  5. package/dist/cjs/google-logo-icon_6.cjs.entry.js.map +1 -1
  6. package/dist/cjs/nylas-booked-event-card_11.cjs.entry.js +10 -2
  7. package/dist/cjs/nylas-booked-event-card_11.cjs.entry.js.map +1 -1
  8. package/dist/cjs/nylas-scheduler-editor.cjs.entry.js +1 -1
  9. package/dist/cjs/nylas-scheduling.cjs.entry.js +3 -16
  10. package/dist/cjs/nylas-scheduling.cjs.entry.js.map +1 -1
  11. package/dist/cjs/nylas-scheduling.entry.cjs.js.map +1 -1
  12. package/dist/cjs/{version-7tiQyQzm.js → version-TA6fPT8q.js} +3 -3
  13. package/dist/{esm/version-CJAr1BgW.js.map → cjs/version-TA6fPT8q.js.map} +1 -1
  14. package/dist/collection/components/scheduler/nylas-date-picker/nylas-date-picker.js +10 -2
  15. package/dist/collection/components/scheduler/nylas-date-picker/nylas-date-picker.js.map +1 -1
  16. package/dist/collection/components/scheduler-editor/nylas-editor-tabs-group/nylas-editor-tabs-group.js +6 -6
  17. package/dist/collection/components/scheduler-editor/nylas-editor-tabs-group/nylas-editor-tabs-group.js.map +1 -1
  18. package/dist/collection/connector/shared/api/scheduler.js +2 -18
  19. package/dist/collection/connector/shared/api/scheduler.js.map +1 -1
  20. package/dist/collection/version.js +1 -1
  21. package/dist/collection/version.js.map +1 -1
  22. package/dist/components/nylas-date-picker.js +1 -1
  23. package/dist/components/nylas-editor-tabs-group.js +1 -1
  24. package/dist/components/nylas-editor-tabs.js +1 -1
  25. package/dist/components/nylas-scheduler-editor.js +3 -3
  26. package/dist/components/nylas-scheduling.js +5 -18
  27. package/dist/components/nylas-scheduling.js.map +1 -1
  28. package/dist/components/{p-jdTk8JQH.js → p-BOnzTQbE.js} +3 -3
  29. package/dist/components/{p-jdTk8JQH.js.map → p-BOnzTQbE.js.map} +1 -1
  30. package/dist/components/{p-B_1k1rpl.js → p-BtSPSFdA.js} +3 -3
  31. package/dist/components/{p-B_1k1rpl.js.map → p-BtSPSFdA.js.map} +1 -1
  32. package/dist/components/{p-CfFKgyg4.js → p-CMouzL9_.js} +9 -9
  33. package/dist/components/{p-CfFKgyg4.js.map → p-CMouzL9_.js.map} +1 -1
  34. package/dist/components/{p-CrkAtQ72.js → p-D9LfvAE5.js} +12 -4
  35. package/dist/components/p-D9LfvAE5.js.map +1 -0
  36. package/dist/esm/google-logo-icon.microsoft-logo-icon.nylas-editor-tabs.nylas-editor-tabs-group.nylas-list-configurations.nylas-select-event-type.entry.js.map +1 -1
  37. package/dist/esm/google-logo-icon_6.entry.js +7 -7
  38. package/dist/esm/google-logo-icon_6.entry.js.map +1 -1
  39. package/dist/esm/nylas-booked-event-card_11.entry.js +10 -2
  40. package/dist/esm/nylas-booked-event-card_11.entry.js.map +1 -1
  41. package/dist/esm/nylas-scheduler-editor.entry.js +1 -1
  42. package/dist/esm/nylas-scheduling.entry.js +4 -17
  43. package/dist/esm/nylas-scheduling.entry.js.map +1 -1
  44. package/dist/esm/{version-CJAr1BgW.js → version-CIhCCVPS.js} +3 -3
  45. package/dist/{cjs/version-7tiQyQzm.js.map → esm/version-CIhCCVPS.js.map} +1 -1
  46. package/dist/nylas-web-elements/google-logo-icon.microsoft-logo-icon.nylas-editor-tabs.nylas-editor-tabs-group.nylas-list-configurations.nylas-select-event-type.entry.esm.js.map +1 -1
  47. package/dist/nylas-web-elements/nylas-scheduling.entry.esm.js.map +1 -1
  48. package/dist/nylas-web-elements/nylas-web-elements.esm.js +1 -1
  49. package/dist/nylas-web-elements/{p-a80bea66.entry.js → p-10b9c8eb.entry.js} +2 -2
  50. package/dist/nylas-web-elements/p-197e9602.entry.js +2 -0
  51. package/dist/nylas-web-elements/p-197e9602.entry.js.map +1 -0
  52. package/dist/nylas-web-elements/{p-9a4d5f1b.entry.js → p-6ed560fe.entry.js} +2 -2
  53. package/dist/nylas-web-elements/{p-9a4d5f1b.entry.js.map → p-6ed560fe.entry.js.map} +1 -1
  54. package/dist/nylas-web-elements/p-CIhCCVPS.js +2 -0
  55. package/dist/nylas-web-elements/{p-CJAr1BgW.js.map → p-CIhCCVPS.js.map} +1 -1
  56. package/dist/nylas-web-elements/{p-544c4297.entry.js → p-ab80b127.entry.js} +2 -2
  57. package/dist/nylas-web-elements/p-ab80b127.entry.js.map +1 -0
  58. package/dist/types/connector/shared/api/scheduler.d.ts +1 -1
  59. package/dist/types/version.d.ts +1 -1
  60. package/package.json +1 -1
  61. package/dist/components/p-CrkAtQ72.js.map +0 -1
  62. package/dist/nylas-web-elements/p-544c4297.entry.js.map +0 -1
  63. package/dist/nylas-web-elements/p-CJAr1BgW.js +0 -2
  64. package/dist/nylas-web-elements/p-c3b1d596.entry.js +0 -2
  65. package/dist/nylas-web-elements/p-c3b1d596.entry.js.map +0 -1
  66. /package/dist/nylas-web-elements/{p-a80bea66.entry.js.map → p-10b9c8eb.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"google-logo-icon.microsoft-logo-icon.nylas-editor-tabs.nylas-editor-tabs-group.nylas-list-configurations.nylas-select-event-type.entry.cjs.js","sources":["src/common/icons/icon.css?tag=google-logo-icon&encapsulation=scoped","src/common/icons/google-logo.tsx","src/common/icons/icon.css?tag=microsoft-logo-icon&encapsulation=scoped","src/common/icons/microsoft-logo.tsx","src/components/scheduler-editor/nylas-editor-tabs/tab-contents.tsx","src/components/scheduler-editor/nylas-editor-tabs/nylas-editor-tabs.scss?tag=nylas-editor-tabs&encapsulation=scoped","src/components/scheduler-editor/nylas-editor-tabs/nylas-editor-tabs.tsx","src/components/scheduler-editor/nylas-editor-tabs-group/tab-contents-group.tsx","src/components/scheduler-editor/nylas-editor-tabs-group/nylas-editor-tabs-group.scss?tag=nylas-editor-tabs-group&encapsulation=scoped","src/components/scheduler-editor/nylas-editor-tabs-group/nylas-editor-tabs-group.tsx","src/components/scheduler-editor/nylas-list-configurations/nylas-list-configurations.scss?tag=nylas-list-configurations&encapsulation=shadow","src/components/scheduler-editor/nylas-list-configurations/nylas-list-configurations.tsx","src/components/scheduler-editor/nylas-select-event-type/nylas-select-event-type.scss?tag=nylas-select-event-type&encapsulation=shadow","src/components/scheduler-editor/nylas-select-event-type/nylas-select-event-type.tsx"],"sourcesContent":[":host {\n display: flex;\n}\n","import { Component, Prop, h } from '@stencil/core';\n\n@Component({\n tag: 'google-logo-icon',\n styleUrl: 'icon.css',\n scoped: true,\n})\nexport class GoogleLogoIcon {\n @Prop() width: string = '24';\n @Prop() height: string = '24';\n\n render() {\n // Spam icon svg\n return (\n <svg width={this.width} height={this.height} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_959_12452)\">\n <path\n d=\"M23.745 12.27C23.745 11.48 23.675 10.73 23.555 10H12.255V14.51H18.725C18.435 15.99 17.585 17.24 16.325 18.09V21.09H20.185C22.445 19 23.745 15.92 23.745 12.27Z\"\n fill=\"#4285F4\"\n />\n <path\n d=\"M12.255 24C15.495 24 18.205 22.92 20.185 21.09L16.325 18.09C15.245 18.81 13.875 19.25 12.255 19.25C9.12504 19.25 6.47505 17.14 5.52505 14.29H1.54504V17.38C3.51504 21.3 7.56504 24 12.255 24Z\"\n fill=\"#34A853\"\n />\n <path\n d=\"M5.52501 14.2901C5.27501 13.5701 5.145 12.8001 5.145 12.0001C5.145 11.2001 5.28501 10.4301 5.52501 9.71012V6.62012H1.545C0.725004 8.24012 0.255005 10.0601 0.255005 12.0001C0.255005 13.9401 0.725004 15.7601 1.545 17.3801L5.52501 14.2901Z\"\n fill=\"#FBBC05\"\n />\n <path\n d=\"M12.255 4.75C14.025 4.75 15.605 5.36 16.855 6.55L20.275 3.13C18.205 1.19 15.495 0 12.255 0C7.56504 0 3.51504 2.7 1.54504 6.62L5.52505 9.71C6.47505 6.86 9.12504 4.75 12.255 4.75Z\"\n fill=\"#EA4335\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_959_12452\">\n <rect width={24} height={24} fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n );\n }\n}\n",":host {\n display: flex;\n}\n","import { Component, Prop, h } from '@stencil/core';\n\n@Component({\n tag: 'microsoft-logo-icon',\n styleUrl: 'icon.css',\n scoped: true,\n})\nexport class MicrosoftLogoIcon {\n @Prop() width: string = '22';\n @Prop() height: string = '22';\n\n render() {\n // Spam icon svg\n return (\n <svg width={this.width} height={this.height} viewBox=\"0 0 22 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M0.043457 0.043457H10.4782V10.4782H0.043457V0.043457Z\" fill=\"#F35325\" />\n <path d=\"M11.5217 0.043457H21.9565V10.4782H11.5217V0.043457Z\" fill=\"#81BC06\" />\n <path d=\"M0.043457 11.5217H10.4782V21.9565H0.043457V11.5217Z\" fill=\"#05A6F0\" />\n <path d=\"M11.5217 11.5217H21.9565V21.9565H11.5217V11.5217Z\" fill=\"#FFBA08\" />\n </svg>\n );\n }\n}\n","import { Fragment, h } from '@stencil/core';\nimport { SchedulerEditorFormState } from './nylas-editor-tabs';\nimport { ThemeConfig } from '@nylas/core';\n\nexport enum Tab {\n EventInfo = 'eventInfo',\n Availability = 'availability',\n BookingOptions = 'bookingOptions',\n Communications = 'communications',\n Participants = 'participants',\n BookingForm = 'bookingForm',\n PageStyles = 'pageStyles',\n}\n\nexport type TabContentsProps = {\n id: string;\n formState: SchedulerEditorFormState;\n activeTab: Tab;\n calendars?: any[];\n currentUser?: any;\n i18next: any;\n enableNotetaker?: boolean;\n themeConfig?: ThemeConfig;\n};\n\nexport default function TabContents({ id, formState, activeTab, enableNotetaker, themeConfig }: TabContentsProps, children: any) {\n return (\n <Fragment>\n <div key={`event-info-${id}`} class={{ hide: activeTab !== Tab.EventInfo }}>\n <nylas-event-info>\n <div slot=\"inputs\">\n <nylas-event-title name=\"title\" themeConfig={themeConfig} exportparts=\"net, net__title, net__dropdown-content\" />\n <nylas-event-duration\n name=\"duration\"\n themeConfig={themeConfig}\n exportparts=\"ned, ned__error, ned__dropdown, ned__dropdown-button, ned__dropdown-content, ned__input_dropdown, ned__input_dropdown-input, ned__input_dropdown-content\"\n />\n <nylas-event-location name=\"location\" themeConfig={themeConfig} exportparts=\"nel, nel__location, nel__dropdown, nel__dropdown-button, nel__dropdown-content\" />\n <nylas-event-description name=\"description\" themeConfig={themeConfig} exportparts=\"nedesc, nedesc__textarea\" />\n </div>\n </nylas-event-info>\n {enableNotetaker && (\n <nylas-notetaker-config\n name=\"notetaker\"\n conferencing={formState.conferencing}\n themeConfig={themeConfig}\n exportparts=\"nntc, nntc__header, nntc__section, nntc__section-title, nntc__content, nntc__input, nntc__textarea, nntc__checkbox\"\n />\n )}\n </div>\n <div key={`availability-${id}`} class={{ hide: activeTab !== Tab.Availability }}>\n <nylas-participant-booking-calendars\n participants={formState.participants}\n name=\"participant-booking-calendars\"\n exportparts={'npbc, npbc__header, npbc__content, npbc__participant-container, npbc__participant-title'}\n />\n <nylas-connected-calendars\n participants={formState.participants}\n name=\"connected-calendars\"\n exportparts={'nccals, nccals__header, nccals__content, nccals__container, nccals__title, nccals__toggle-container, npbc__participant-toggle-container'}\n />\n <nylas-only-specific-time-availability\n onlySpecificTimeAvailability={formState.onlySpecificTimeAvailability}\n name=\"only-specific-time-availability\"\n exportparts={'osta, osta__header, osta__header-content, osta__header-title, osta__header-description, osta__toggle'}\n ></nylas-only-specific-time-availability>\n {formState.onlySpecificTimeAvailability ? null : (\n <nylas-availability-picker\n openHours={formState.availability?.openHours}\n name=\"availability\"\n themeConfig={themeConfig}\n exportparts={\n 'nap, nap__header, nap__select-timezone, nap__select-timezone-button, nap__select-timezone-dropdown-content, nap__availability, nap__day, nap__time-ranges, nap__time-range, nap__add-time-range, nap__time-picker-container, nap__time-picker-input, nap__time-picker-times'\n }\n />\n )}\n <nylas-specific-time-availability-picker\n specificTimesAvailability={formState.specificTimeAvailability}\n name=\"specific-time-availability\"\n themeConfig={themeConfig}\n exportparts={\n 'nstap, nstap__header, nstap__content, nstap__availability, nstap__day, nstap__time-ranges, nstap__time-range, nstap__add-time-range, nstap__time-picker-container, nstap__time-picker-input, nstap__time-picker-times'\n }\n />\n </div>\n <div key={`booking-options-${id}`} class={{ hide: activeTab !== Tab.BookingOptions }}>\n <nylas-scheduling-method\n name=\"availability-method\"\n readOnly={true}\n themeConfig={themeConfig}\n exportparts=\"nsm, nsm__header, nsm__input-label, nsm__dropdown, nsm__dropdown-button, nsm__dropdown-content\"\n />\n <nylas-custom-booking-flow exportparts={'ncbflow, ncbflow__header, ncbflow__title, ncbflow__content'}>\n <div slot=\"inputs\">\n <nylas-booking-confirmation-type\n name=\"confirmation-type\"\n themeConfig={themeConfig}\n exportparts={'nbct, nbct__header, nbct__dropdown, nbct__dropdown-button, nbct__dropdown-content'}\n />\n <nylas-booking-confirmation-redirect\n name=\"confirmation-redirect\"\n themeConfig={themeConfig}\n exportparts={'nbcr, nbcr__header, nbcr__dropdown, nbcr__dropdown-button, nbcr__dropdown-content, nbcr__input-textfield'}\n />\n </div>\n </nylas-custom-booking-flow>\n <nylas-buffer-time\n name=\"buffer-time\"\n themeConfig={themeConfig}\n exportparts={\n 'nbt, nbt__header, nbt__body, nbt__dropdown-before, nbt__dropdown-button-before, nbt__dropdown-content-before, nbt__dropdown-after, nbt__dropdown-button-after, nbt__dropdown-content-after, nbt__preview'\n }\n />\n <nylas-event-limits>\n <div slot=\"inputs\">\n <nylas-min-booking-notice\n name=\"min-booking-notice\"\n themeConfig={themeConfig}\n exportparts=\"nmbn, nmbn__number-dropdown, nmbn__number-dropdown-button, nmbn__number-dropdown-content, nmbn__period-dropdown, nmbn__period-dropdown-button, nmbn__period-dropdown-content\"\n />\n <nylas-limit-future-bookings\n name=\"limit-future-bookings\"\n themeConfig={themeConfig}\n exportparts=\"nlfb, nlfb__number-dropdown, nlfb__number-dropdown-button, nlfb__number-dropdown-content, nlfb__period-dropdown, nlfb__period-dropdown-button, nlfb__period-dropdown-content\"\n />\n <nylas-min-cancellation-notice\n name=\"min-cancellation-notice\"\n themeConfig={themeConfig}\n exportparts=\"nmcn, nmcn__number-dropdown, nmcn__number-dropdown-button, nmcn__number-dropdown-content, nmcn__period-dropdown, nmcn__period-dropdown-button, nmcn__period-dropdown-content\"\n />\n <nylas-cancellation-policy name=\"cancellation-policy\" exportparts=\"ncpolicy, ncpolicy__textarea\" />\n </div>\n </nylas-event-limits>\n <nylas-timeslot-interval\n name=\"timeslot-interval\"\n themeConfig={themeConfig}\n exportparts=\"nti, nti__header, nti__input-label, nti__dropdown, nti__dropdown-button, nti__dropdown-content\"\n />\n <nylas-customize-booking-settings\n name=\"customize-booking-settings\"\n themeConfig={themeConfig}\n exportparts=\"ncbs, ncbs__header, ncbs__settings, ncbs__settings-div, ncbs__additional_guests, ncbs__cancellation_options, ncbs__rescheduling_options\"\n />\n </div>\n <div key={`communications-${id}`} class={{ hide: activeTab !== Tab.Communications }}>\n <nylas-disable-emails name=\"disable-emails\" themeConfig={themeConfig} exportparts=\"nde, nde__toggle-label, nde_toggle-input, nde_toggle-slider\" />\n {!formState?.disableEmails && (\n <Fragment>\n <nylas-confirmation-email\n name=\"confirmation-email-template\"\n themeConfig={themeConfig}\n exportparts={\n 'nce, nce__tab-heading, nce__header, nce__body, nce__confirmation-email-toggle--container, nce__summary, nce__reminder-input_dropdown, nce__reminder-input_dropdown-input, nce__reminder-input_dropdown-content'\n }\n />\n <nylas-reminder-emails\n name=\"reminder-overrides\"\n themeConfig={themeConfig}\n exportparts={\n 'nre, nre__tab-heading, nre__header, nre__body, nre__confirmation-email-toggle--container, nre__summary, nrt, nrt__number-dropdown, nrt__number-dropdown-button, nrt__number-dropdown-content, nrt__period-dropdown, nrt__period-dropdown-button, nrt__period-dropdown-content, nrt__time-period-selector'\n }\n />\n </Fragment>\n )}\n </div>\n <div key={`participants-${id}`} class={{ hide: activeTab !== Tab.Participants }}>\n <nylas-additional-participants\n name=\"participants\"\n themeConfig={themeConfig}\n exportparts=\"nadtnlpart, nadtnlpart__title, nadtnlpart__subtitle, nadtnlpart__content, nadtnlpart__input_group, nadtnlpart__input_wrapper, nadtnlpart__input, nadtnlpart__remove-participant\"\n />\n <nylas-participants-custom-availability\n participants={formState.participants}\n name=\"participant-custom-availability\"\n themeConfig={themeConfig}\n exportparts=\"npca, npca__header, npca__content, npca__participant-container, npca__participant-title, npca__participant-toggle--container, npca__toggle-label, npca__toggle-input, npca__toggle-slider\"\n />\n </div>\n <div key={`page-styles-${id}`} class={{ hide: activeTab !== Tab.PageStyles }}>\n <nylas-custom-event-slug\n name=\"custom-event-slug\"\n themeConfig={themeConfig}\n exportparts=\"nces, nces__body, nces__header, nces__drawer-toggle--container, nces__input-textfield\"\n />\n <nylas-page-name name=\"page-name\" themeConfig={themeConfig} exportparts=\"npn, npn__body, npn__header, npn__drawer-toggle--container, npn__input-textfield\" />\n <nylas-page-styling\n name=\"page-styling\"\n themeConfig={themeConfig}\n exportparts=\"nps, nps__header, nps__drawer-toggle--container, nps__body, nps__title-input-textfield, nps__company-logo-input-textfield, nps__color-picker, nps__color-picker-button, nps__color-picker-button-label, nps__color-picker-selected-label, nps__submit-button-label-input-textfield, nps__message-textarea\"\n >\n {children}\n </nylas-page-styling>\n </div>\n <div key={`booking-form-${id}`} class={{ hide: activeTab !== Tab.BookingForm }}>\n <nylas-booking-form-config\n name=\"additional-fields\"\n themeConfig={themeConfig}\n exportparts=\"nbfc, nbfc__header, nbfc__add_field, nbfc__add_field-button, nbfc__add_field-content, nbfc__static_fields, nbfc__additional_fields, nbfc__form-field, nbfc__form-field-header, nbfc__form-field-content\"\n />\n </div>\n </Fragment>\n );\n}\n","@use '../../../common/styles/variables' as *;\n@use '../../../common/mixins/buttons' as *;\n\n:host {\n display: block;\n @include default-css-variables;\n}\n\n.scheduler-editor {\n display: flex;\n flex-direction: column;\n height: inherit;\n\n .form-contents {\n height: calc(100% - 80px);\n display: grid;\n grid-template-columns: minmax(224px, 25%) 1fr;\n\n @media #{$mobile} {\n display: table-column-group;\n height: auto;\n }\n\n .tabs {\n display: flex;\n flex-direction: column;\n border-right: 1px solid var(--nylas-base-200);\n background-color: var(--nylas-base-25);\n\n @media #{$mobile} {\n border-right: none;\n }\n\n .tab {\n display: flex;\n align-items: center;\n text-align: left;\n gap: 0.5rem;\n padding: 0.5rem 1rem;\n color: var(--nylas-base-900);\n background: var(--nylas-base-0);\n border: none;\n height: 56px;\n font-family: var(--nylas-font-family);\n font-size: 16px;\n font-weight: 500;\n line-height: 24px;\n cursor: pointer;\n\n &:not(:first-of-type) {\n margin-top: 0.25rem;\n }\n\n &:last-of-type {\n margin-bottom: 0.25rem;\n }\n\n &.active {\n font-weight: 600;\n background: var(--nylas-base-0);\n color: var(--nylas-primary);\n border-left: 4px solid var(--nylas-primary);\n box-shadow: 0px 1px 2px 0px #0000000f;\n box-shadow: 0px 1px 3px 0px #0000001a;\n }\n\n &.hide {\n display: none;\n }\n }\n }\n\n .tab-content {\n max-width: 692px;\n overflow-y: auto;\n overflow-x: hidden;\n transition: opacity 0.05s ease-in;\n opacity: 0; // This in conjunction with the fadeIn class is used to fade in the tab contents when the editor is loaded.\n &.fadeIn {\n opacity: 1;\n }\n .hide {\n display: none;\n }\n\n nylas-event-info,\n nylas-event-limits {\n width: inherit;\n\n div[slot='inputs'] {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n }\n }\n\n .tab-header {\n display: flex;\n flex-direction: column;\n margin: 1rem 1rem 0.5rem;\n row-gap: 4px;\n\n h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n line-height: 20px;\n color: var(--nylas-base-900);\n text-align: left;\n }\n\n p {\n margin: 0;\n font-size: 0.875rem;\n font-weight: 400;\n line-height: 20px;\n color: var(--nylas-base-600);\n text-align: left;\n }\n }\n }\n }\n}\n\n.footer {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 1rem;\n min-height: 80px;\n padding: 0 1rem;\n border-top: 1px solid var(--nylas-base-200);\n\n @media #{$mobile} {\n flex-direction: column;\n height: auto;\n }\n\n .preview {\n @media #{$mobile} {\n margin-top: 1rem;\n width: 100%;\n }\n }\n\n .buttons {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n justify-self: flex-end;\n gap: 1rem;\n\n @media #{$mobile} {\n flex-direction: column-reverse;\n width: 100%;\n }\n\n p {\n max-width: 524px;\n\n &.unsaved-changes {\n color: var(--nylas-base-600);\n }\n\n &.saved-changes {\n color: var(--nylas-success);\n }\n\n &.error {\n color: var(--nylas-error);\n }\n\n &.error-full-width {\n max-width: 660px;\n }\n }\n\n button-component {\n @media #{$mobile} {\n width: 100%;\n }\n }\n\n button {\n @include primary-button;\n width: 148px;\n\n span {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n }\n }\n\n button-component.save-changes {\n min-width: 140px;\n }\n }\n}\n\nbutton-component#report-issue {\n width: auto;\n}\n\nnylas-feedback-form {\n position: absolute;\n top: 0;\n height: 100%;\n width: 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n background: rgba(0, 0, 0, 0.6);\n z-index: 2;\n border-radius: inherit;\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { debug, mergeDeep, parsePreviewLink } from '@/utils/utils';\nimport {\n AdditionalFields,\n Appearance,\n AvailabilityMethod,\n BookingType,\n Calendar,\n Conference,\n Configuration,\n EmailTemplate,\n EventReminder,\n NotificationType,\n Notetaker,\n OpenHours,\n Participant,\n SpecificTimeAvailability,\n ThemeConfig,\n} from '@nylas/core';\nimport { Component, Element, Event, EventEmitter, Host, Listen, Method, Prop, State, Watch, h } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\nimport TabContents, { Tab } from './tab-contents';\nimport { User } from '@/common/nylas-api-request';\nimport { CONFIGURATION_EVENT_TYPE, DEFAULT_OPEN_HOURS, editorTabComponentNames } from '@/common/constants';\nimport { DataResponseReturnType } from '@/common/types';\nimport * as Sentry from '@sentry/browser';\nimport i18next from '@/utils/i18n';\nimport { LANGUAGE_CODE } from '@/common/constants';\nimport { ErrorCategory, Notification } from '@/types/index';\nimport { version } from '@/version';\n\nexport type SchedulerEventDetail = {\n config: Partial<Configuration>;\n action: 'create' | 'edit';\n host: HTMLNylasEditorTabsElement;\n resetLoadingState?: (e: CustomEvent) => void;\n};\n\nexport type SchedulerEditorFormState = Partial<{\n title: string;\n description: string;\n duration: string;\n availability?: {\n timezone: string;\n openHours?: OpenHours[];\n };\n specificTimeAvailability?: SpecificTimeAvailability[];\n onlySpecificTimeAvailability?: boolean;\n additionalFields?: Record<string, AdditionalFields>;\n calendarIds: string[];\n participantCalendars?: { [key: string]: string[] };\n participants?: Participant[];\n participantOpenHours?: { [key: string]: OpenHours[] };\n participantSpecificTimeAvailability?: { [key: string]: SpecificTimeAvailability[] };\n participantOnlySpecificTimeAvailability?: { [key: string]: boolean };\n participantBookingCalendars?: { [key: string]: string };\n bookingCalendar?: string;\n location?: string;\n conferencing?: Conference;\n bookingType?: string;\n buffer?: { before: number; after: number };\n cancellationPolicy?: string;\n availableDaysInFuture?: number;\n minCancellationNotice?: number;\n minBookingNotice?: number;\n timeslotInterval?: {\n interval?: number;\n roundTo?: number;\n };\n additionalGuestsHidden?: boolean;\n hideCancellationOptions?: boolean;\n hideReschedulingOptions?: boolean;\n reminders?: EventReminder[];\n emailTemplate?: EmailTemplate;\n redirectUrl?: string;\n availabilityMethod?: AvailabilityMethod;\n slug: string;\n appearance: Appearance;\n name: string;\n disableEmails?: boolean;\n organizerLocale?: string;\n notetaker?: Notetaker;\n}>;\n\n/**\n * The nylas-editor-tabs component provides the user interface for managing editor tabs within the scheduler editor.\n * It is primarily used to control the edit mode of the scheduler editor, and it is rendered automatically by the\n * parent component, nylas-scheduler-editor, during editing. There is no need to interact with this component directly\n * or set any props manually, as its behavior is fully managed by the parent component.\n *\n * @part nap__title - [nylas-additional-participants] The title of the component.\n * @part nap__subtitle - [nylas-additional-participants] The subtitle of the component.\n * @part nap__content - [nylas-additional-participants] The content of the component.\n * @part nap__input - [nylas-additional-participants] The input of the component.\n * @part nap__remove-participant - [nylas-additional-participants] The remove participant button of the component.\n * @part nap__add-participant - [nylas-additional-participants] The add participant button of the component.\n * @part nap__header - [nylas-availability-picker] The header of the availability picker\n * @part nap__select-timezone - [nylas-availability-picker] The timezone selection container\n * @part nap__select-timezone-button -[nylas-availability-picker] The timezone selection button\n * @part nap__select-timezone-dropdown-content -[nylas-availability-picker] The timezone selection dropdown content\n * @part nap__availability - [nylas-availability-picker] The availability container\n * @part nap__day - [nylas-availability-picker] The day container\n * @part nap__time-ranges - [nylas-availability-picker] The time ranges container\n * @part nap__time-range - [nylas-availability-picker] The time range container\n * @part nap__add-time-range - [nylas-availability-picker] The add time range button\n * @part nap__time-picker-container -[nylas-availability-picker] The time picker container\n * @part nap__time-picker-input - [nylas-availability-picker] The time picker input\n * @part nap__time-picker-times - [nylas-availability-picker] The time picker times\n * @part nbcp - [nylas-booking-calendar-picker] The booking calendar picker container\n * @part nbcp__header - [nylas-booking-calendar-picker] The header of the booking calendar picker\n * @part nbcp__input-label - [nylas-booking-calendar-picker] The input label of the booking calendar picker\n * @part nbcp__dropdown - [nylas-booking-calendar-picker] The dropdown container\n * @part nbcp__dropdown-button - [nylas-booking-calendar-picker] The dropdown button\n * @part nbcp__dropdown-content - [nylas-booking-calendar-picker] The dropdown content\n * @part nbt - [nylas-buffer-time] The buffer time container\n * @part nbt__header - [nylas-buffer-time] The header of the buffer time\n * @part nbt__body - [nylas-buffer-time] The body of the buffer time\n * @part nbt__dropdown-before - [nylas-buffer-time] The before buffer dropdown container\n * @part nbt__dropdown-button-before - [nylas-buffer-time] The before buffer dropdown button\n * @part nbt__dropdown-content-before - [nylas-buffer-time] The before buffer dropdown content\n * @part nbt__dropdown-after - [nylas-buffer-time] The after buffer dropdown container\n * @part nbt__dropdown-button-after - [nylas-buffer-time] The after buffer dropdown button\n * @part nbt__dropdown-content-after - [nylas-buffer-time] The after buffer dropdown content\n * @part nbt__preview - [nylas-buffer-time] The buffer time preview\n * @part ncp - [nylas-calendar-picker] The calendar picker container\n * @part ncp__header - [nylas-calendar-picker] The header of the calendar picker\n * @part ncp__dropdown - [nylas-calendar-picker] The dropdown container\n * @part ncp__dropdown-button - [nylas-calendar-picker] The dropdown button\n * @part ncp__dropdown-content - [nylas-calendar-picker] The dropdown content\n * @part ncbf - [nylas-custom-booking-flow] The custom booking flow container\n * @part ncbf__header - [nylas-custom-booking-flow] The header of the custom booking flow\n * @part ncbf__dropdown - [nylas-custom-booking-flow] The dropdown container\n * @part ncbf__dropdown-button - [nylas-custom-booking-flow] The dropdown button\n * @part ncbf__dropdown-content - [nylas-custom-booking-flow] The dropdown content\n * @part nedesc - [nylas-event-description] The event description container\n * @part nedesc__textarea - [nylas-event-description] The event description textarea\n * @part ned - [nylas-event-duration] The event duration container\n * @part ned__dropdown - [nylas-event-duration] The dropdown container for the duration increment\n * @part ned__dropdown-button - [nylas-event-duration] The dropdown button for the duration increment\n * @part ned__dropdown-content - [nylas-event-duration] The dropdown content for the duration increment\n * @part ned__input_dropdown - [nylas-event-duration] The input dropdown container for the duration minutes\n * @part ned__input_dropdown-input - [nylas-event-duration] The input for the duration minutes\n * @part ned__input_dropdown-content - [nylas-event-duration] The dropdown content for the input duration minutes\n * @part net - [nylas-event-title] The event title container\n * @part net__title - [nylas-event-title] The event title input\n * @part net__dropdown-content - [nylas-event-title] The token options container\n * @part nlfb - [nylas-limit-future-bookings] The limit future bookings container\n * @part nlfb__number-dropdown - [nylas-limit-future-bookings] The number dropdown container\n * @part nlfb__number-dropdown-button - [nylas-limit-future-bookings] The number dropdown button\n * @part nlfb__number-dropdown-content - [nylas-limit-future-bookings] The number dropdown content\n * @part nlfb__period-dropdown - [nylas-limit-future-bookings] The period dropdown container\n * @part nlfb__period-dropdown-button - [nylas-limit-future-bookings] The period dropdown button\n * @part nlfb__period-dropdown-content - [nylas-limit-future-bookings] The period dropdown content\n * @part nel - [nylas-event-location] The event location container\n * @part nel__location - [nylas-event-location] The event location input\n * @part nel__dropdown - [nylas-event-location] The dropdown container\n * @part nel__dropdown-button - [nylas-event-location] The dropdown button\n * @part nel__dropdown-content - [nylas-event-location] The dropdown content\n * @part nmbn - [nylas-min-booking-notice] The minimum booking notice container\n * @part nmbn__number-dropdown - [nylas-min-booking-notice] The number dropdown container\n * @part nmbn__number-dropdown-button - [nylas-min-booking-notice] The number dropdown button\n * @part nmbn__number-dropdown-content -[nylas-min-booking-notice] The number dropdown content\n * @part nmbn__period-dropdown - [nylas-min-booking-notice] The period dropdown container\n * @part nmbn__period-dropdown-button - [nylas-min-booking-notice] The period dropdown button\n * @part nmbn__period-dropdown-content - [nylas-min-booking-notice] The period dropdown content\n * @part nmcn - [nylas-min-cancellation-notice] The minimum cancellation notice container\n * @part nmcn__number-dropdown - [nylas-min-cancellation-notice] The number dropdown container\n * @part nmcn__number-dropdown-button - [nylas-min-cancellation-notice] The number dropdown button\n * @part nmcn__number-dropdown-content - [nylas-min-cancellation-notice] The number dropdown content\n * @part nmcn__period-dropdown - [nylas-min-cancellation-notice] The period dropdown container\n * @part nmcn__period-dropdown-button - [nylas-min-cancellation-notice] The period dropdown button\n * @part nmcn__period-dropdown-content - [nylas-min-cancellation-notice] The period dropdown content\n * @part ncpolicy - [nylas-cancellation-policy] The cancellation policy container\n * @part ncpolicy__textarea - [nylas-cancellation-policy] The cancellation policy textarea\n * @part nti - [nylas-timeslot-interval] The timeslot interval container\n * @part nti__header - [nylas-timeslot-interval] The header of the timeslot interval picker\n * @part nti__input-label - [nylas-timeslot-interval] The input label of the timeslot interval picker\n * @part nti__dropdown - [nylas-timeslot-interval] The dropdown container\n * @part nti__dropdown-button - [nylas-timeslot-interval] The dropdown button\n * @part nti__dropdown-content - [nylas-timeslot-interval] The dropdown content\n * @part npca - [nylas-participants-custom-availability] The participants custom availability container\n * @part npca__header - [nylas-participants-custom-availability] The header of the participants custom availability\n * @part npca__content - [nylas-participants-custom-availability] The content of the participants custom availability\n * @part npca__participant-container - [nylas-participants-custom-availability] The participant container\n * @part npca__participant-title - [nylas-participants-custom-availability] The participant title\n * @part npca__participant-toggle--container - [nylas-participants-custom-availability] The participant toggle container\n * @part npca__toggle-label - [nylas-participants-custom-availability] The toggle label\n * @part npca__toggle-input - [nylas-participants-custom-availability] The toggle input\n * @part npca__toggle-slider - [nylas-participants-custom-availability] The toggle slider\n * @part ncbs - [nylas-customize-booking-settings] The booking calendar picker container\n * @part ncbs__header - [nylas-customize-booking-settings] The header of the booking calendar picker\n * @part ncbs__settings - [nylas-customize-booking-settings] The settings container\n * @part ncbs__settings-div - [nylas-customize-booking-settings] The div inside the settings container that contains the checkbox and tooltip for each setting\n * @part ncbs__additional_guests - [nylas-customize-booking-settings] The additional guests setting\n * @part ncbs__cancellation_options - [nylas-customize-booking-settings] The cancellation options setting\n * @part ncbs__rescheduling_options - [nylas-customize-booking-settings] The rescheduling options setting\n * @part nsm - [nylas-scheduling-method] The booking calendar picker container\n * @part nsm__header - [nylas-scheduling-method] The header of the booking calendar picker\n * @part nsm__input-label - [nylas-scheduling-method] The input label of the booking calendar picker\n * @part nsm__dropdown - [nylas-scheduling-method] The dropdown container\n * @part nsm__dropdown-button - [nylas-scheduling-method] The dropdown button\n * @part nsm__dropdown-content - [nylas-scheduling-method] The dropdown content\n * @part npn - The nylas-page-name container\n * @part npn__body - The body of the event communication section\n * @part npn__header - The header of the event communication section\n * @part npn__drawer-toggle--container - The card's drawer toggle container\n * @part npn__input-textfield - The page name textfield\n * @part editor__form-contents - The form contents container\n * @part editor__tab - The tabs container\n * @part editor__tab-content - The tab content container\n * @part editor__footer - The footer container\n * @part editor__footer-preview - The preview button container\n * @part editor__footer-buttons - The buttons container\n */\n@Component({\n tag: 'nylas-editor-tabs',\n styleUrl: 'nylas-editor-tabs.scss',\n scoped: true,\n})\nexport class NylasEditorTabs {\n /**\n * The form reference to access the form data.\n */\n private formRef!: HTMLFormElement;\n /**\n * The host element.\n */\n @Element() host!: HTMLNylasEditorTabsElement;\n /**\n * @standalone\n * The list of calendars to use in the editor when configuring availability.\n */\n @Prop() calendars?: Calendar[];\n /**\n * @standalone\n * The selected configuration to use in the editor when editing an existing configuration or creating a new one.\n */\n @Prop() selectedConfiguration?: Configuration;\n\n /**\n * @standalone\n * The list of configurations\n */\n @Prop() configurations?: Configuration[];\n\n /**\n * @standalone\n * The current logged in user.\n */\n @Prop() currentUser?: User;\n /**\n * @standalone\n * The scheduler preview link to use when the user clicks on the preview button.\n * You can use a placeholder `{config.id}` to replace the configuration id anywhere in the link.\n */\n @Prop({ attribute: 'scheduler-preview-link' }) schedulerPreviewLink: string = '';\n /**\n * @standalone\n * The mode of the editor.\n * - `app`: The editor is used as a standalone app.\n * - `composable`: The editor is used as a composable component.\n */\n @Prop() mode?: 'app' | 'composable' = 'app';\n /**\n * @standalone\n * This prop is passed down by the parent component.\n * It is an optional prop is used to hide tabs in the editor. Available tabs are:\n * eventInfo, availability, participants, bookingOptions, bookingForm\n */\n @Prop() hideEditorTabs?: Tab[] = [];\n /**\n * @standalone\n * This prop is passed down by the parent component to enable or disable user feedback.\n */\n @Prop() enableUserFeedback?: boolean = true;\n\n /**\n * @standalone\n * This prop is passed down by the parent component to enable or disable Notetaker configuration.\n */\n @Prop({ attribute: 'enable-notetaker' }) enableNotetaker?: boolean = false;\n\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: LANGUAGE_CODE;\n\n /**\n * The selected event type.\n */\n @Prop() selectedEventType?: CONFIGURATION_EVENT_TYPE;\n /**\n * @standalone\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: ThemeConfig;\n\n /**\n * The action to perform in the editor.\n * - `create`: Create a new configuration.\n * - `edit`: Edit an existing configuration.\n */\n @State() action: 'create' | 'edit' = 'create';\n /**\n * The state for showing the feedback modal.\n */\n @State() showFeedbackModal: boolean = false;\n /**\n * The active tab in the editor.\n */\n @State() activeTab: Tab = Tab.EventInfo;\n /**\n * The loading state of the editor.\n */\n @State() isLoading: boolean = false;\n /**\n * The unsaved changes state of the editor.\n */\n @State() hasUnsavedChanges: boolean = false;\n /**\n * The changes saved state of the editor.\n */\n @State() changesSaved: boolean = false;\n /**\n * The loaded state of the editor. This is used to fade in the tab contents when the editor is loaded.\n * This is used to prevent the tab contents (background-color) from flickering when the editor is loaded.\n */\n @State() loaded: boolean = false;\n /**\n * The form state of the editor.\n */\n @State() formState: SchedulerEditorFormState = {};\n /**\n * The error state of the editor.\n */\n @State() error?: {\n message: string;\n type: NotificationType | undefined;\n category: ErrorCategory | undefined;\n title: string;\n } = {\n message: '',\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: '',\n };\n\n /**\n * Event emitted when the scheduler configuration form is submitted and ready to be processed (before the API request is made). This fires for both create and edit actions after client-side validation passes.\n */\n @Event() schedulerConfigChanged!: EventEmitter<SchedulerEventDetail>;\n /**\n * Event emitted when a scheduler configuration is successfully created via the API. This fires only for create actions after the API request completes successfully.\n */\n @Event() schedulerConfigCreated!: EventEmitter<SchedulerEventDetail>;\n /**\n * Event emitted when the user clicks the cancel button to exit the scheduler editor.\n */\n @Event() cancelButtonClick!: EventEmitter<void>;\n /**\n * Event emitted at the very beginning of form submission, before any validation occurs. This event is cancelable and can prevent the submission process if preventDefault() is called.\n */\n @Event({ bubbles: true, cancelable: true }) formSubmitted!: EventEmitter<void>;\n /**\n * Event emitted when the user clicks the preview button. This fires before the preview link is opened and can be used to override the default preview behavior.\n */\n @Event() previewButtonClicked!: EventEmitter<HTMLNylasEditorTabsElement>;\n /**\n * Event emitted whenever any form field value changes within the scheduler editor. This provides real-time updates as users modify form inputs.\n */\n @Event() schedulerEditorFormUpdated!: EventEmitter<{ value: string; name: string }>;\n\n /**\n * Event emitted when the component needs to display an error notification to the user. This includes validation errors, API errors, and other component-level errors.\n */\n @Event({ cancelable: false }) readonly nylasSchedulerError!: EventEmitter<{ notification: Notification; host: HTMLElement }>;\n /**\n * Event emitted when the user dismisses an error notification, allowing parent components to handle cleanup or additional actions.\n */\n @Event() dismissNotification!: EventEmitter<{ id: string; host: HTMLNylasEditorTabsElement }>;\n\n @Watch('selectedConfiguration')\n configChangedHandler(newConfig: Configuration) {\n debug('[nylas-editor-tabs]', 'configChangedHandler', newConfig, this.selectedConfiguration);\n this.formState = {\n ...this.getFormStateFromConfig(newConfig),\n };\n if (newConfig?.id) {\n this.action = 'edit';\n } else {\n this.action = 'create';\n }\n }\n\n @Watch('currentUser')\n userChangedHandler(newUser: User) {\n // Actively watch for changes in the current user to update the form state.\n debug('[nylas-editor-tabs]', 'userChangedHandler', newUser);\n if (newUser) {\n this.formState = {\n ...this.getFormStateFromConfig(this.selectedConfiguration),\n };\n }\n }\n\n @Watch('selectedLanguage')\n selectedLanguageChangedHandler(newVal: LANGUAGE_CODE, oldVal: LANGUAGE_CODE) {\n if (newVal === oldVal) return;\n i18next.changeLanguage(newVal);\n if (this.error && this.error.message) {\n this.error = {\n ...this.error,\n message: i18next.t('fixFormErrors'),\n };\n this.showErrorNotification(this.error);\n }\n }\n\n @Watch('themeConfig')\n themeConfigChangedHandler(newVal: ThemeConfig, oldVal: ThemeConfig) {\n if (newVal === oldVal) return;\n this.applyThemeConfig(newVal);\n }\n\n applyThemeConfig(themeConfig?: ThemeConfig) {\n if (themeConfig) {\n for (const [key, value] of Object.entries(themeConfig)) {\n this.host.style.setProperty(`${key}`, value);\n }\n }\n }\n\n @Method()\n async schedulerConfigCreatedEventHandler(data: SchedulerEventDetail) {\n const event = this.schedulerConfigCreated.emit(data);\n return event;\n }\n\n @Method()\n async setError(error: { message: string; type: NotificationType; category: ErrorCategory; title: string }) {\n this.error = {\n message: error.message,\n type: error.type,\n category: error.category,\n title: error.title || i18next.t('genericErrorTitle'),\n };\n if (this.error?.message) {\n this.showErrorNotification(this.error);\n }\n }\n\n @Method()\n async resetError() {\n if (this.error?.message) {\n this.dismissNotification.emit({ id: this.error?.message.split(' ').join('-'), host: this.host });\n }\n this.error = {\n message: '',\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: '',\n };\n }\n\n connectedCallback() {\n debug('[nylas-editor-tabs]', 'connectedCallback');\n // Use queueMicrotask to defer theme application until after React has set props.\n // This fixes the timing issue where connectedCallback fires before React sets themeConfig.\n queueMicrotask(() => {\n if (this.themeConfig) {\n this.applyThemeConfig(this.themeConfig);\n this.host.setAttribute('data-themed', '');\n }\n });\n }\n\n componentWillLoad() {\n debug('[nylas-editor-tabs]', 'componentWillLoad');\n this.formState = this.getFormStateFromConfig(this.selectedConfiguration);\n // Theme already applied in connectedCallback via queueMicrotask\n }\n\n componentDidLoad() {\n debug('[nylas-editor-tabs]', 'componentDidLoad');\n if (this.enableUserFeedback && !Sentry.isInitialized()) {\n Sentry.init({\n dsn: 'https://9d5731f1c77ca84c9ed3fb9b3ccf7ee1@o74852.ingest.us.sentry.io/4507889638178816',\n release: version,\n integrations: integrations => [\n ...integrations.filter(_integration => false), // Removes default integrations (including Breadcrumbs)\n Sentry.feedbackIntegration({\n colorScheme: 'system',\n autoInject: false,\n }),\n ],\n // Disable all other event capture\n autoSessionTracking: false, // Disable session tracking\n beforeSend: () => null, // Prevents error events from being sent\n });\n }\n if (this.selectedConfiguration?.id) {\n this.configChangedHandler(this.selectedConfiguration);\n }\n const firstVisibleTab = (this.host.querySelector('button.tab:not(.hide)') as HTMLButtonElement)?.name as Tab;\n\n if (firstVisibleTab) {\n this.activeTab = firstVisibleTab;\n }\n this.loaded = true;\n }\n\n disconnectedCallback() {\n debug('[nylas-editor-tabs]', 'disconnectedCallback');\n }\n\n @Listen('valueChanged')\n handleValueChanged(event: CustomEvent) {\n debug('[nylas-editor-tabs]', 'handleValueChanged', event);\n const { name, value } = event.detail;\n debug('name', name, 'value', value);\n this.setFormState(value, name);\n this.formState = { ...this.formState };\n this.resetError();\n if (editorTabComponentNames.includes(name)) {\n this.hasUnsavedChanges = true;\n }\n this.schedulerEditorFormUpdated.emit({\n value: event.detail.value,\n name: event.detail.name,\n });\n }\n\n @Listen('feedbackModalClosed')\n feedbackModalClosedHandler() {\n this.showFeedbackModal = false;\n }\n\n @Listen('feedbackSubmitted')\n feedbackSubmittedHandler(event: CustomEvent<{ feedback: string }>) {\n const eventId = Sentry.captureMessage('Scheduler Editor User Feedback', {\n extra: {\n configId: this.selectedConfiguration?.id,\n slug: this.selectedConfiguration?.slug,\n },\n });\n const feedback = {\n eventId: eventId,\n message: event.detail.feedback,\n };\n\n Sentry.captureFeedback(feedback, {\n includeReplay: true,\n captureContext: {\n tags: {\n 'nylas-web-element': 'nylas-scheduler-editor',\n 'nylas-web-element-version': version,\n 'nylas-config-id': this.selectedConfiguration?.id,\n 'nylas-slug': this.selectedConfiguration?.slug,\n 'host-url': window.location.href,\n },\n extra: {\n configId: this.selectedConfiguration?.id,\n slug: this.selectedConfiguration?.slug,\n },\n },\n });\n this.showFeedbackModal = false;\n }\n\n showErrorNotification(error: { message: string; type: NotificationType | undefined; category: ErrorCategory | undefined; title: string }) {\n if (error.message) {\n this.nylasSchedulerError.emit({\n notification: {\n title: error.title,\n category: error.category || ErrorCategory.Component,\n type: error.type || NotificationType.Error,\n description: error.message,\n id: error.message.split(' ').join('-'),\n ttl: 'none',\n },\n host: this.host,\n });\n }\n }\n\n getFormStateFromConfig(config?: Configuration): SchedulerEditorFormState {\n let organizerParticipant = config?.participants?.find(p => p.is_organizer);\n // If the config is round robin, there is no organizer set in the config, in that case flag the current user as the organizer.\n if (!organizerParticipant && config?.availability?.availability_rules?.availability_method !== 'collective') {\n organizerParticipant = config?.participants?.find(p => p.email === this.currentUser?.email);\n if (organizerParticipant) {\n organizerParticipant.is_organizer = true;\n }\n }\n if (config?.appearance) {\n debug(\n '[nylas-editor-tabs]',\n 'getFormStateFromConfig',\n 'Appearance settings have been returned from the given configuration; please remember to grab them from the configSettingsLoaded event and apply them as desired.',\n );\n }\n\n return {\n title: config?.event_booking?.title ?? '',\n description: config?.event_booking?.description ?? '',\n duration: config?.availability?.duration_minutes?.toString() ?? '30',\n availability: {\n timezone: config?.event_booking?.timezone ?? Intl.DateTimeFormat().resolvedOptions().timeZone,\n openHours: config?.availability?.availability_rules?.default_open_hours ?? DEFAULT_OPEN_HOURS,\n },\n specificTimeAvailability: config?.availability?.availability_rules?.default_specific_time_availability ?? [],\n onlySpecificTimeAvailability: config?.availability?.availability_rules?.only_specific_time_availability ?? false,\n additionalFields: config?.scheduler?.additional_fields ?? {},\n conferencing: config?.event_booking?.conferencing ?? {},\n calendarIds: organizerParticipant?.availability?.calendar_ids ?? [],\n participants: config?.participants ?? [],\n bookingCalendar: organizerParticipant?.booking?.calendar_id ?? organizerParticipant?.email ?? '',\n location: config?.event_booking?.location ?? '',\n bookingType: config?.event_booking?.booking_type ?? 'booking',\n buffer: config?.availability?.availability_rules?.buffer ?? { before: 0, after: 0 },\n cancellationPolicy: config?.scheduler?.cancellation_policy ?? '',\n availableDaysInFuture: config?.scheduler?.available_days_in_future ?? 30,\n minCancellationNotice: config?.scheduler?.min_cancellation_notice ?? 0,\n minBookingNotice: config?.scheduler?.min_booking_notice ?? 60,\n timeslotInterval: {\n interval: config?.availability?.interval_minutes ?? config?.availability?.duration_minutes,\n roundTo: config?.availability?.round_to,\n },\n additionalGuestsHidden: config?.scheduler?.hide_additional_guests ?? false,\n hideCancellationOptions: config?.scheduler?.hide_cancellation_options ?? false,\n hideReschedulingOptions: config?.scheduler?.hide_rescheduling_options ?? false,\n participantBookingCalendars: (config?.participants ?? []).reduce<{ [key: string]: string }>((acc, p) => {\n if (p.booking?.calendar_id) {\n acc[p.email] = p.booking.calendar_id;\n }\n return acc;\n }, {}),\n participantCalendars:\n config?.participants?.reduce((acc, p) => {\n acc[p.email] = p.availability?.calendar_ids;\n return acc;\n }, {}) ?? {},\n reminders: config?.event_booking?.reminders,\n emailTemplate: config?.scheduler?.email_template,\n redirectUrl: config?.scheduler?.confirmation_redirect_url,\n slug: config?.slug,\n appearance: config?.appearance,\n name: config?.name,\n disableEmails: config?.event_booking?.disable_emails,\n organizerLocale: config?.scheduler?.email_template?.organizer_locale,\n // If conferencing is not configured (no provider), set notetaker enabled to false\n // Otherwise, use the notetaker settings from config\n notetaker: config?.scheduler?.notetaker_settings\n ? config.event_booking?.conferencing?.provider\n ? config.scheduler.notetaker_settings\n : { ...config.scheduler.notetaker_settings, enabled: false }\n : undefined,\n };\n }\n\n setFormState(value, key) {\n switch (key) {\n case 'title':\n this.formState.title = value.toString();\n break;\n case 'description':\n this.formState.description = value.toString();\n break;\n case 'duration':\n this.formState.duration = value.toString();\n break;\n case 'availability':\n this.formState.availability = JSON.parse(value.toString());\n break;\n case 'specific-time-availability':\n this.formState.specificTimeAvailability = JSON.parse(value.toString());\n break;\n case 'only-specific-time-availability': {\n const { enableSpecificTimeAvailability } = JSON.parse(value.toString());\n this.formState.onlySpecificTimeAvailability = enableSpecificTimeAvailability;\n break;\n }\n case 'participants':\n this.formState.participants = JSON.parse(value.toString());\n break;\n case 'booking-calendar':\n this.formState.bookingCalendar = value.toString();\n break;\n case 'participant-booking-calendars':\n this.formState.participantBookingCalendars = JSON.parse(value.toString());\n break;\n case 'location':\n this.formState.location = value.toString();\n break;\n case 'conference': {\n const parsedConferencing = JSON.parse(value.toString());\n this.formState.conferencing = parsedConferencing;\n // If conferencing is removed (null or no provider), automatically disable notetaker\n if (!parsedConferencing || !parsedConferencing.provider) {\n // Set enabled to false, preserving any existing notetaker settings\n const updatedNotetaker = this.formState.notetaker ? { ...this.formState.notetaker, enabled: false } : { enabled: false };\n this.formState.notetaker = updatedNotetaker;\n // Update formState reference to trigger reactivity\n this.formState = { ...this.formState };\n // Emit a valueChanged event to update the notetaker component\n this.schedulerEditorFormUpdated.emit({\n value: JSON.stringify(updatedNotetaker),\n name: 'notetaker',\n });\n }\n break;\n }\n case 'confirmation-type':\n this.formState.bookingType = value.toString();\n break;\n case 'buffer-time':\n this.formState.buffer = JSON.parse(value.toString());\n break;\n case 'limit-future-bookings':\n this.formState.availableDaysInFuture = parseInt(value.toString());\n break;\n case 'min-cancellation-notice':\n this.formState.minCancellationNotice = parseInt(value.toString());\n break;\n case 'min-booking-notice':\n this.formState.minBookingNotice = parseInt(value.toString());\n break;\n case 'cancellation-policy':\n this.formState.cancellationPolicy = value.toString();\n break;\n case 'timeslot-interval':\n this.formState.timeslotInterval = JSON.parse(value.toString());\n break;\n case 'customize-booking-settings': {\n const settings = JSON.parse(value.toString());\n this.formState.additionalGuestsHidden = settings.additionalGuestsHidden;\n this.formState.hideCancellationOptions = settings.hideCancellationOptions;\n this.formState.hideReschedulingOptions = settings.hideReschedulingOptions;\n break;\n }\n case 'participant-custom-availability': {\n const participantOpenHours = JSON.parse(value.toString());\n this.formState.participantOpenHours = participantOpenHours;\n break;\n }\n case 'participant-custom-availability-specific-time': {\n const participantSpecificTimeAvailability = JSON.parse(value.toString());\n this.formState.participantSpecificTimeAvailability = participantSpecificTimeAvailability;\n break;\n }\n case 'participant-custom-availability-only-specific-time': {\n const participantOnlySpecificTimeAvailability = JSON.parse(value.toString());\n this.formState.participantOnlySpecificTimeAvailability = participantOnlySpecificTimeAvailability;\n break;\n }\n case 'additional-fields':\n this.formState.additionalFields = JSON.parse(value.toString());\n break;\n case 'connected-calendars':\n this.formState.participantCalendars = JSON.parse(value.toString());\n break;\n case 'confirmation-email-template':\n this.formState.emailTemplate = JSON.parse(value.toString());\n break;\n case 'disable-emails': {\n const { disableEmails, organizerLocale } = JSON.parse(value.toString());\n this.formState.disableEmails = disableEmails;\n this.formState.organizerLocale = organizerLocale;\n break;\n }\n case 'reminder-overrides':\n this.formState.reminders = JSON.parse(value.toString());\n break;\n case 'confirmation-redirect':\n this.formState.redirectUrl = value.toString();\n break;\n case 'availability-method':\n this.formState.availabilityMethod = value.toString();\n break;\n case 'custom-event-slug':\n this.formState.slug = JSON.parse(value.toString());\n break;\n case 'page-styling':\n this.formState.appearance = JSON.parse(value.toString());\n break;\n case 'page-name':\n this.formState.name = JSON.parse(value.toString());\n break;\n case 'notetaker': {\n const notetakerValue = value.toString();\n if (notetakerValue === 'null' || notetakerValue === '') {\n this.formState.notetaker = undefined;\n } else {\n this.formState.notetaker = JSON.parse(notetakerValue);\n }\n break;\n }\n }\n this.schedulerEditorFormUpdated.emit({\n value,\n name: key,\n });\n }\n\n updateFormState() {\n const formData = new FormData(this.formRef);\n formData.forEach((value, key) => {\n this.setFormState(value, key);\n });\n\n this.formState = { ...this.formState };\n return this.formState;\n }\n\n setActiveTab(e: Event, tabName: Tab) {\n e.preventDefault();\n this.updateFormState();\n this.activeTab = tabName;\n }\n\n formSubmissionHandler = async (event: Event) => {\n event.preventDefault();\n const formEvent = await this.formSubmitted.emit();\n debug('[nylas-editor-tabs]', 'formSubmissionHandler', formEvent);\n const valid = this.formRef.checkValidity();\n if (!valid || formEvent.defaultPrevented) {\n this.setError({\n message: this.formRef.validationMessage || i18next.t('fixFormErrors'),\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: i18next.t('nylasEditorTabs.formErrorTitle'),\n });\n return;\n }\n this.isLoading = true;\n this.hasUnsavedChanges = false;\n const formState = this.updateFormState();\n debug('[nylas-editor-tabs]', 'formState', formState);\n const {\n title,\n description,\n duration,\n availability,\n specificTimeAvailability,\n onlySpecificTimeAvailability,\n bookingCalendar,\n location,\n bookingType,\n buffer,\n availableDaysInFuture,\n minCancellationNotice,\n minBookingNotice,\n cancellationPolicy,\n timeslotInterval,\n additionalGuestsHidden,\n hideCancellationOptions,\n hideReschedulingOptions,\n participants,\n participantOpenHours,\n participantSpecificTimeAvailability,\n participantOnlySpecificTimeAvailability,\n additionalFields,\n participantCalendars,\n conferencing,\n participantBookingCalendars,\n reminders,\n emailTemplate,\n redirectUrl,\n availabilityMethod,\n slug,\n appearance,\n name,\n disableEmails,\n organizerLocale,\n notetaker,\n } = formState;\n const organizer = this.selectedConfiguration?.participants?.find(p => p.is_organizer) || participants?.find(p => p.is_organizer);\n const organizerCalendars = participantCalendars && organizer?.email ? participantCalendars[organizer?.email] : [];\n const organizerBookingCalendar = organizer?.booking?.calendar_id || bookingCalendar;\n const durationMinutes = duration ? parseInt(duration) : 30;\n\n const participantsList =\n participants && participants?.length > 0\n ? participants\n : [\n {\n name: organizer?.name ?? this.currentUser?.name ?? '',\n email: organizer?.email ?? this.currentUser?.email ?? '',\n is_organizer: true,\n timezone: availability?.timezone ?? Intl.DateTimeFormat().resolvedOptions().timeZone,\n availability: {\n calendar_ids: bookingCalendar && bookingCalendar !== '' ? [bookingCalendar] : ['primary'],\n open_hours: [],\n },\n booking: {\n calendar_id: bookingCalendar && bookingCalendar !== '' ? bookingCalendar : 'primary',\n },\n },\n ];\n\n let availabilityMethodSelected = availabilityMethod ? availabilityMethod : this.selectedConfiguration?.availability?.availability_rules?.availability_method ?? 'collective';\n if (this.selectedEventType && this.selectedEventType !== CONFIGURATION_EVENT_TYPE.group) {\n availabilityMethodSelected = this.selectedEventType === CONFIGURATION_EVENT_TYPE.one_on_one ? CONFIGURATION_EVENT_TYPE.collective : this.selectedEventType;\n }\n\n const configObject: Partial<Configuration> = {\n ...(this.selectedConfiguration?.id && { id: this.selectedConfiguration.id }),\n version: this.selectedConfiguration?.version ?? '1.0.0',\n slug: slug,\n name: name,\n availability: {\n duration_minutes: durationMinutes,\n interval_minutes: timeslotInterval?.interval ?? durationMinutes,\n round_to: timeslotInterval?.roundTo,\n availability_rules: {\n default_specific_time_availability: specificTimeAvailability ?? [],\n only_specific_time_availability: onlySpecificTimeAvailability ?? false,\n availability_method: availabilityMethodSelected,\n buffer: buffer || { before: 0, after: 0 },\n default_open_hours: availability?.openHours ?? this.selectedConfiguration?.availability?.availability_rules?.default_open_hours ?? DEFAULT_OPEN_HOURS,\n round_robin_group_id: this.selectedConfiguration?.availability?.availability_rules?.round_robin_group_id ?? '',\n },\n },\n participants: [\n ...(participantsList\n ? participantsList.map(p => {\n const specificAvailabilityRaw = participantSpecificTimeAvailability?.[p.email] ?? p.specific_time_availability ?? [];\n\n // The participant's timezone should be the default timezone set by the selected configuration's availability rules\n // if open hours are not set for the participant\n let timezone = availability?.timezone ?? Intl.DateTimeFormat().resolvedOptions().timeZone;\n if (participantOpenHours?.[p.email]?.length) {\n timezone = participantOpenHours?.[p.email]?.[0]?.timezone;\n } else if (specificAvailabilityRaw.length > 0) {\n const saTz = specificAvailabilityRaw.find(sa => sa.timezone)?.timezone;\n if (saTz) {\n timezone = saTz;\n }\n }\n\n const specificAvailability = specificAvailabilityRaw.map(sa => ({\n ...sa,\n timezone,\n }));\n\n if (p.is_organizer) {\n const orgPartBookingCalendar = participantBookingCalendars?.[p.email]\n ? participantBookingCalendars?.[p.email]\n : organizerBookingCalendar\n ? organizerBookingCalendar\n : 'primary';\n const orgpartAvailabilityCalendars = participantCalendars?.[p.email]\n ? participantCalendars?.[p.email]\n : organizerCalendars?.length\n ? organizerCalendars\n : ['primary'];\n const isPartAvailabilityCalendarsPrimaryOnly = orgpartAvailabilityCalendars.length === 1 && orgpartAvailabilityCalendars[0] === 'primary';\n\n return {\n name: p.name ?? '',\n email: p.email,\n is_organizer: true,\n timezone,\n availability: {\n calendar_ids: isPartAvailabilityCalendarsPrimaryOnly ? [orgPartBookingCalendar] : orgpartAvailabilityCalendars,\n open_hours: participantOpenHours?.[p.email] ?? p.availability?.open_hours ?? [],\n },\n specific_time_availability: specificAvailability,\n only_specific_time_availability: participantOnlySpecificTimeAvailability?.[p.email] ?? p.only_specific_time_availability ?? false,\n booking: {\n calendar_id: orgPartBookingCalendar,\n },\n };\n }\n const partBooking = participantBookingCalendars?.[p.email] ? { calendar_id: participantBookingCalendars?.[p.email] } : p?.booking ?? undefined;\n const partAvailabilityCalendars = participantCalendars?.[p.email] ?? p.availability?.calendar_ids ?? ['primary'];\n const isPartAvailabilityCalendarsPrimaryOnly = partAvailabilityCalendars.length === 1 && partAvailabilityCalendars[0] === 'primary';\n return {\n ...p,\n timezone,\n availability: p.availability\n ? {\n calendar_ids: isPartAvailabilityCalendarsPrimaryOnly && typeof partBooking !== 'undefined' ? [partBooking?.calendar_id] : partAvailabilityCalendars,\n open_hours: participantOpenHours?.[p.email] ?? p.availability?.open_hours ?? [],\n }\n : undefined,\n booking: partBooking,\n specific_time_availability: specificAvailability,\n only_specific_time_availability: participantOnlySpecificTimeAvailability?.[p.email] ?? p.only_specific_time_availability ?? false,\n };\n })\n : []),\n ],\n event_booking: {\n title: title?.toString() ?? '',\n description: description?.toString() ?? '',\n location: location?.toString() ?? '',\n booking_type: (bookingType?.toString() as BookingType) ?? 'booking',\n timezone: availability?.timezone ?? Intl.DateTimeFormat().resolvedOptions().timeZone,\n conferencing: conferencing,\n reminders: reminders,\n disable_emails: typeof disableEmails === 'boolean' ? disableEmails : false,\n },\n scheduler: {\n cancellation_policy: cancellationPolicy ?? '',\n available_days_in_future: availableDaysInFuture ?? 30,\n min_cancellation_notice: minCancellationNotice ?? 0,\n min_booking_notice: minBookingNotice ?? 60,\n hide_additional_guests: additionalGuestsHidden ?? false,\n hide_cancellation_options: hideCancellationOptions ?? false,\n hide_rescheduling_options: hideReschedulingOptions ?? false,\n additional_fields: additionalFields,\n email_template: emailTemplate\n ? {\n ...emailTemplate,\n organizer_locale: organizerLocale || 'en',\n logo: emailTemplate.logo || '',\n }\n : undefined,\n confirmation_redirect_url: redirectUrl,\n notetaker_settings: notetaker,\n },\n appearance: appearance,\n };\n\n const configObjectWithDeveloperSettings = mergeDeep(this.selectedConfiguration, configObject || {});\n\n const finalConfig = this.action === 'create' ? configObjectWithDeveloperSettings : configObject;\n\n if (this.isConfigRoundRobin(finalConfig)) {\n // If the config is round robin, no participant should be flagged as the organizer\n finalConfig.participants = finalConfig.participants.map(p => ({ ...p, is_organizer: undefined }));\n }\n const resetLoadingState = (_e: CustomEvent) => {\n this.isLoading = false;\n this.changesSaved = true;\n setTimeout(() => {\n this.changesSaved = false;\n }, 5000);\n };\n\n const hasBookingError = this.checkForBookingFormErrors(finalConfig);\n\n // Check for client side errors using the selected config from the list configs (stored in API)\n const currentConfig = this.configurations?.find(c => c.id === this.selectedConfiguration?.id) || {};\n const hasOrganizerConfirmationError = this.checkForOrganizerConfirmationError(mergeDeep(finalConfig, currentConfig));\n\n if (hasBookingError || hasOrganizerConfirmationError) {\n return;\n }\n this.schedulerConfigChanged.emit({ config: finalConfig, resetLoadingState, action: this.action, host: this.host });\n };\n\n isConfigRoundRobin = (config: Configuration) => {\n return config?.availability?.availability_rules?.availability_method === 'max-availability' || config.availability?.availability_rules?.availability_method === 'max-fairness';\n };\n\n checkForOrganizerConfirmationError = config => {\n // Check additional Fields in config\n let hasError = false;\n let errorMessage = '';\n const isOrganizerConfirmationType = config.event_booking?.booking_type === 'organizer-confirmation';\n const organizerConfirmationUrl = config.scheduler?.organizer_confirmation_url;\n\n if (isOrganizerConfirmationType && !organizerConfirmationUrl) {\n errorMessage += 'Organizer confirmation URL is required when using organizer confirmation booking type.';\n hasError = true;\n }\n if (hasError) {\n this.isLoading = false;\n this.host.setError({\n message: errorMessage,\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: 'Error:',\n });\n }\n return hasError;\n };\n\n checkForBookingFormErrors = config => {\n // Check additional Fields in config\n let hasError = false;\n let errorMessage = '';\n const additionalFields = config.scheduler?.additional_fields;\n if (additionalFields) {\n errorMessage = '';\n Object.entries(additionalFields).forEach(entry => {\n const field = entry[1] as AdditionalFields;\n if (field.label === '') {\n errorMessage += i18next.t('nylasEditorTabs.bookingFormError_label', { type: field.type });\n hasError = true;\n return;\n }\n if (field.options) {\n for (const option of field.options) {\n if (option.trim() === '') {\n errorMessage += i18next.t('nylasEditorTabs.bookingFormError_option', { label: field.label, type: field.type });\n hasError = true;\n break;\n }\n }\n }\n });\n }\n if (hasError) {\n this.isLoading = false;\n this.host.setError({\n message: errorMessage,\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: i18next.t('nylasEditorTabs.bookingFormError'),\n });\n }\n return hasError;\n };\n\n hideTab(tab: Tab) {\n return this.hideEditorTabs?.includes(tab) || false;\n }\n\n onFeedbackClick(e: Event) {\n e.preventDefault();\n this.showFeedbackModal = true;\n }\n\n @RegisterComponent<NylasEditorTabs, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-editor-tabs',\n stateToProps: new Map([\n ['schedulerConfig.calendars', 'calendars'],\n ['schedulerConfig.selectedConfiguration', 'selectedConfiguration'],\n ['schedulerConfig.currentUser', 'currentUser'],\n ['schedulerConfig.configurations', 'configurations'],\n ['schedulerConfig.selectedLanguage', 'selectedLanguage'],\n ['schedulerConfig.selectedEventType', 'selectedEventType'],\n ['schedulerConfig.themeConfig', 'themeConfig'],\n ]),\n eventToProps: {\n schedulerConfigChanged: async (event: CustomEvent<SchedulerEventDetail>, nylasSchedulerConfigConnector: NylasSchedulerConfigConnector) => {\n const { resetLoadingState, host, action, config } = event.detail;\n const checkForErrors = (response: DataResponseReturnType, errorTitle: string) => {\n const [data, error] = response;\n if (!data && error) {\n host.setError({\n message: error.message || i18next.t('genericErrorTitle'),\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: errorTitle,\n });\n } else if (data && !error && action === 'create') {\n host.schedulerConfigCreatedEventHandler({ config: data, action, host });\n nylasSchedulerConfigConnector.schedulerConfigStore.set('selectedEventType', undefined);\n }\n if (resetLoadingState) {\n resetLoadingState(event);\n }\n };\n\n // If we have an ID, we are updating an existing configuration\n if (action === 'edit') {\n const response = await nylasSchedulerConfigConnector.schedulerConfig.updateConfiguration(config);\n checkForErrors(response, i18next.t('nylasEditorTabs.updateConfigError'));\n } else {\n const response = await nylasSchedulerConfigConnector.schedulerConfig.createConfiguration(config);\n checkForErrors(response, i18next.t('nylasEditorTabs.createConfigError'));\n }\n },\n cancelButtonClick: async (_, nylasSchedulerConfigConnector) => {\n nylasSchedulerConfigConnector.schedulerConfigStore.state.action = null;\n nylasSchedulerConfigConnector.schedulerConfigStore.set('selectedEventType', undefined);\n },\n previewButtonClicked: async (_, nylasSchedulerConfigConnector) => {\n debug('[nylas-editor-tabs]', 'previewButtonClicked', nylasSchedulerConfigConnector);\n },\n formSubmitted: async (_, nylasSchedulerConfigConnector) => {\n debug('[nylas-editor-tabs]', 'formSubmitted', nylasSchedulerConfigConnector);\n },\n schedulerEditorFormUpdated: async (event: CustomEvent<{ value: string; name: string }>, _nylasSchedulerConfigConnector) => {\n debug('[nylas-editor-tabs]', 'schedulerEditorFormUpdated', event);\n },\n schedulerConfigCreated: async (event: CustomEvent<SchedulerEventDetail>, _nylasSchedulerConfigConnector: NylasSchedulerConfigConnector) => {\n debug('[nylas-editor-tabs]', 'schedulerConfigCreated', event);\n },\n },\n localPropsToProp: new Map([\n ['schedulerPreviewLink', 'schedulerPreviewLink'],\n ['enableUserFeedback', 'enableUserFeedback'],\n ['hideEditorTabs', 'hideEditorTabs'],\n ['enableNotetaker', 'enableNotetaker'],\n ]),\n fireRegisterEvent: true,\n })\n render() {\n debug('[nylas-editor-tabs]', 'render', this.formState);\n\n return (\n <Host>\n <nylas-notification></nylas-notification>\n <form onSubmit={this.formSubmissionHandler} class=\"scheduler-editor\" ref={el => (this.formRef = el as HTMLFormElement)} noValidate>\n {this.mode === 'app' ? (\n <div class=\"form-contents\" part=\"editor__form-contents net__form-contents\">\n <div class=\"tabs\" part=\"editor__tabs net__tabs\">\n <button\n name={Tab.EventInfo}\n class={{ tab: true, active: this.activeTab == Tab.EventInfo, hide: this.hideTab(Tab.EventInfo) }}\n part=\"editortab__event-info net__tab-event-info\"\n onClick={e => this.setActiveTab(e, Tab.EventInfo)}\n >\n <calendar-info-icon width=\"16\" height=\"16\" />\n {i18next.t('eventInfoTab')}\n </button>\n <button\n name={Tab.Availability}\n class={{ tab: true, active: this.activeTab == Tab.Availability, hide: this.hideTab(Tab.Availability) }}\n part=\"editortab__availability net__tab-availability\"\n onClick={e => this.setActiveTab(e, Tab.Availability)}\n >\n <calendar-patterns-icon width=\"16\" height=\"16\" />\n {i18next.t('availabilityTab')}\n </button>\n <button\n name={Tab.Participants}\n class={{ tab: true, active: this.activeTab == Tab.Participants, hide: this.hideTab(Tab.Participants) }}\n part=\"editortab__participants net__tab-participants\"\n onClick={e => this.setActiveTab(e, Tab.Participants)}\n >\n <people-icon width=\"16\" height=\"16\" />\n {i18next.t('participantsTab')}\n </button>\n <button\n name={Tab.BookingOptions}\n class={{ tab: true, active: this.activeTab == Tab.BookingOptions, hide: this.hideTab(Tab.BookingOptions) }}\n part=\"editortab__booking-options net__tab-booking-options\"\n onClick={e => this.setActiveTab(e, Tab.BookingOptions)}\n >\n <flow-icon width=\"16\" height=\"16\" />\n {i18next.t('bookingOptionsTab')}\n </button>\n <button\n name={Tab.BookingForm}\n class={{ tab: true, active: this.activeTab == 'bookingForm', hide: this.hideTab(Tab.BookingForm) }}\n part=\"editortab__booking-form net__tab-booking-form\"\n onClick={e => this.setActiveTab(e, Tab.BookingForm)}\n >\n {this.activeTab == Tab.BookingForm ? <calendar-agenda-fill-icon width=\"16\" height=\"16\" /> : <calendar-agenda-icon width=\"16\" height=\"16\" />}\n {i18next.t('bookingFormTab')}\n </button>\n <button\n name={Tab.Communications}\n class={{ tab: true, active: this.activeTab == 'communications', hide: this.hideTab(Tab.Communications) }}\n onClick={e => this.setActiveTab(e, Tab.Communications)}\n part=\"editortab__communications net__tab-communications\"\n >\n {this.activeTab == Tab.Communications ? <envelope-fill-icon width=\"16\" height=\"16\" /> : <envelope-icon width=\"16\" height=\"16\" />}\n {i18next.t('communicationsTab')}\n </button>\n <button\n name={Tab.PageStyles}\n class={{ tab: true, active: this.activeTab == 'pageStyles', hide: this.hideTab(Tab.PageStyles) }}\n onClick={e => this.setActiveTab(e, Tab.PageStyles)}\n part=\"editortab__page-styles net__tab-page-styles\"\n >\n {this.activeTab == Tab.PageStyles ? <paintbrush-fill-icon width=\"16\" height=\"16\" /> : <paintbrush-icon width=\"16\" height=\"16\" />}\n {i18next.t('pageStylesTab')}\n </button>\n </div>\n <div\n class={{\n 'tab-content': true,\n 'fadeIn': this.loaded,\n }}\n part=\"editor__tab-content net__tab-content\"\n >\n <TabContents\n formState={this.formState}\n activeTab={this.activeTab}\n currentUser={this.currentUser}\n calendars={this.calendars}\n id={this.selectedConfiguration?.id ?? 'new'}\n i18next={i18next}\n enableNotetaker={this.enableNotetaker}\n themeConfig={this.themeConfig}\n />\n </div>\n </div>\n ) : (\n <div class=\"composable\" key={this.selectedConfiguration?.id}>\n <slot></slot>\n </div>\n )}\n\n <div class=\"footer\" part=\"editor__footer net__footer\">\n <div class=\"preview\" part=\"editor__footer-preview net__footer-preview\">\n {this.enableUserFeedback && (\n <button-component title=\"Share your feedback\" id=\"report-issue\" variant={'basic'} onClick={e => this.onFeedbackClick(e)}>\n <feedback-icon />\n </button-component>\n )}\n </div>\n <div class=\"buttons\" part=\"editor__footer-buttons net__footer-buttons\">\n <p\n class={{\n 'unsaved-changes': this.hasUnsavedChanges && !this.changesSaved,\n 'saved-changes': this.changesSaved,\n 'error': this.error?.message !== '',\n 'error-full-width': this.error?.message !== '' && this.action === 'create',\n }}\n >\n {this.error?.message == '' && this.hasUnsavedChanges && !this.changesSaved\n ? i18next.t('unsavedChangesLabel')\n : this.error?.message == '' && this.changesSaved\n ? `${i18next.t('changesSavedLabel')}!`\n : ''}\n </p>\n {this.schedulerPreviewLink !== '' && this.action === 'edit' && (\n <button-component\n title=\"Preview\"\n type=\"button\"\n disabled={this.isLoading}\n clickHandler={event => {\n event.preventDefault();\n const previewEvent = this.previewButtonClicked.emit(this.host);\n if (!previewEvent.defaultPrevented) {\n window.open(parsePreviewLink(this.schedulerPreviewLink, this.selectedConfiguration), '_blank');\n }\n }}\n variant={'basic'}\n >\n <eye-icon />\n </button-component>\n )}\n <button-component\n type=\"button\"\n disabled={this.isLoading}\n clickHandler={event => {\n event.preventDefault();\n this.cancelButtonClick.emit();\n this.host.resetError();\n }}\n variant={'basic'}\n part=\"editor__footer-cancel net__footer-cancel\"\n >\n {i18next.t('cancelButton')}\n </button-component>\n <button-component class={{ 'save-changes': this.action === 'edit' }} type=\"submit\" disabled={this.isLoading} part=\"editor__footer-cta, net__footer-cta\">\n {this.isLoading ? (\n <span>\n {i18next.t('savingButtonText')}\n <loading-icon />{' '}\n </span>\n ) : this.action === 'create' ? (\n `${i18next.t('createButtonText')}`\n ) : (\n `${i18next.t('saveChangesButtonText')}`\n )}\n </button-component>\n </div>\n </div>\n </form>\n {this.showFeedbackModal && <nylas-feedback-form></nylas-feedback-form>}\n </Host>\n );\n }\n}\n","import { Fragment, h } from '@stencil/core';\n\nexport enum TabGroup {\n BookingOptions = 'bookingOptions',\n Communications = 'communications',\n BookingForm = 'bookingForm',\n PageStyles = 'pageStyles',\n CalendarView = 'calendarView',\n}\n\nexport type TabGroupContentsProps = {\n id: string;\n formState: any;\n activeTab: TabGroup;\n calendars?: any[];\n currentUser?: any;\n i18next: any;\n};\n\nexport default function TabContentsGroup({ id, formState, activeTab }: TabGroupContentsProps, children: any) {\n return (\n <Fragment>\n {activeTab === TabGroup.CalendarView && (\n <div key={`calendar-view-${id}`} class={{ 'hide': activeTab !== TabGroup.CalendarView, 'calendar-view': true }}>\n <nylas-event-calendar />\n </div>\n )}\n <div key={`booking-options-${id}`} class={{ hide: activeTab !== TabGroup.BookingOptions }}>\n <nylas-scheduling-method\n name=\"availability-method\"\n readOnly={true}\n exportparts=\"nsm, nsm__header, nsm__input-label, nsm__dropdown, nsm__dropdown-button, nsm__dropdown-content\"\n />\n <nylas-custom-booking-flow exportparts={'ncbflow, ncbflow__header, ncbflow__title, ncbflow__content'}>\n <div slot=\"inputs\">\n <nylas-booking-confirmation-type\n name=\"confirmation-type\"\n showComponent={false}\n exportparts={'nbct, nbct__header, nbct__dropdown, nbct__dropdown-button, nbct__dropdown-content'}\n />\n <nylas-booking-confirmation-redirect\n name=\"confirmation-redirect\"\n exportparts={'nbcr, nbcr__header, nbcr__dropdown, nbcr__dropdown-button, nbcr__dropdown-content, nbcr__input-textfield'}\n />\n </div>\n </nylas-custom-booking-flow>\n <nylas-event-limits>\n <div slot=\"inputs\">\n <nylas-min-booking-notice\n name=\"min-booking-notice\"\n exportparts=\"nmbn, nmbn__number-dropdown, nmbn__number-dropdown-button, nmbn__number-dropdown-content, nmbn__period-dropdown, nmbn__period-dropdown-button, nmbn__period-dropdown-content\"\n />\n <nylas-min-cancellation-notice\n name=\"min-cancellation-notice\"\n exportparts=\"nmcn, nmcn__number-dropdown, nmcn__number-dropdown-button, nmcn__number-dropdown-content, nmcn__period-dropdown, nmcn__period-dropdown-button, nmcn__period-dropdown-content\"\n />\n <nylas-cancellation-policy name=\"cancellation-policy\" exportparts=\"ncpolicy, ncpolicy__textarea\" />\n </div>\n </nylas-event-limits>\n <nylas-customize-booking-settings\n showSettings={['hideCancellationOptions', 'hideReschedulingOptions']}\n name=\"customize-booking-settings\"\n exportparts=\"ncbs, ncbs__header, ncbs__settings, ncbs__settings-div, ncbs__additional_guests, ncbs__cancellation_options, ncbs__rescheduling_options\"\n />\n </div>\n <div key={`communications-${id}`} class={{ hide: activeTab !== TabGroup.Communications }}>\n <nylas-disable-emails name=\"disable-emails\" exportparts=\"nde, nde__toggle-label, nde_toggle-input, nde_toggle-slider\" />\n {!formState?.disableEmails && (\n <Fragment>\n <nylas-confirmation-email\n name=\"confirmation-email-template\"\n exportparts={\n 'nce, nce__tab-heading, nce__header, nce__body, nce__confirmation-email-toggle--container, nce__summary, nce__reminder-input_dropdown, nce__reminder-input_dropdown-input, nce__reminder-input_dropdown-content'\n }\n />\n <nylas-reminder-emails\n name=\"reminder-overrides\"\n exportparts={\n 'nre, nre__tab-heading, nre__header, nre__body, nre__confirmation-email-toggle--container, nre__summary, nrt, nrt__number-dropdown, nrt__number-dropdown-button, nrt__number-dropdown-content, nrt__period-dropdown, nrt__period-dropdown-button, nrt__period-dropdown-content, nrt__time-period-selector'\n }\n />\n </Fragment>\n )}\n </div>\n <div key={`page-styles-${id}`} class={{ hide: activeTab !== TabGroup.PageStyles }}>\n <nylas-custom-event-slug name=\"custom-event-slug\" exportparts=\"nces, nces__body, nces__header, nces__drawer-toggle--container, nces__input-textfield\" />\n <nylas-page-name name=\"page-name\" requirePageName={true} exportparts=\"npn, npn__body, npn__header, npn__drawer-toggle--container, npn__input-textfield\" />\n <nylas-page-styling\n name=\"page-styling\"\n exportparts=\"nps, nps__header, nps__drawer-toggle--container, nps__body, nps__title-input-textfield, nps__company-logo-input-textfield, nps__color-picker, nps__color-picker-button, nps__color-picker-button-label, nps__color-picker-selected-label, nps__submit-button-label-input-textfield, nps__message-textarea\"\n >\n {children}\n </nylas-page-styling>\n </div>\n <div key={`booking-form-${id}`} class={{ hide: activeTab !== TabGroup.BookingForm }}>\n <nylas-booking-form-config\n name=\"additional-fields\"\n exportparts=\"nbfc, nbfc__header, nbfc__add_field, nbfc__add_field-button, nbfc__add_field-content, nbfc__static_fields, nbfc__additional_fields, nbfc__form-field, nbfc__form-field-header, nbfc__form-field-content\"\n />\n </div>\n </Fragment>\n );\n}\n","@use '../../../common/styles/variables' as *;\n@use '../../../common/mixins/buttons' as *;\n\n:host {\n display: block;\n @include default-css-variables;\n}\n\n.scheduler-editor {\n display: flex;\n flex-direction: column;\n height: inherit;\n position: relative;\n\n div.return-to-calendar-view {\n display: flex;\n border-bottom: 1px solid var(--nylas-base-200);\n }\n\n .form-contents {\n display: grid;\n grid-template-columns: minmax(224px, 25%) 1fr;\n height: auto;\n overflow-y: auto;\n min-height: calc(100% - 80px - 48px); // 80px is the height of the footer, 48px is the height of the return-to-calendar-view button\n\n @media #{$mobile} {\n display: table-column-group;\n height: auto;\n min-height: calc(100% - 80px - 196px - 48px);\n }\n\n .tabs {\n display: flex;\n flex-direction: column;\n border-right: 1px solid var(--nylas-base-200);\n\n background-color: var(--nylas-base-25);\n\n .tab {\n display: flex;\n align-items: center;\n text-align: left;\n gap: 0.5rem;\n padding: 0.5rem 1rem;\n color: var(--nylas-base-900);\n background: var(--nylas-base-0);\n border: none;\n height: 56px;\n font-family: var(--nylas-font-family);\n font-size: 16px;\n font-weight: 500;\n line-height: 24px;\n cursor: pointer;\n\n &:not(:first-of-type) {\n margin-top: 0.25rem;\n }\n\n &:last-of-type {\n margin-bottom: 0.25rem;\n }\n\n &.active {\n font-weight: 600;\n background: var(--nylas-base-0);\n color: var(--nylas-primary);\n border-left: 4px solid var(--nylas-primary);\n box-shadow: 0px 1px 2px 0px #0000000f;\n box-shadow: 0px 1px 3px 0px #0000001a;\n }\n\n &.hide {\n display: none;\n }\n }\n\n @media #{$mobile} {\n border-right: none;\n }\n }\n\n .tab-content {\n max-width: 692px;\n overflow-y: auto;\n overflow-x: hidden;\n\n .hide {\n display: none;\n }\n\n .calendar-view {\n position: absolute;\n top: 0;\n left: 0;\n height: calc(100% - 80px);\n width: -webkit-fill-available;\n background: var(--nylas-base-0);\n }\n\n nylas-event-info,\n nylas-event-limits {\n width: inherit;\n\n div[slot='inputs'] {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n }\n }\n\n .tab-header {\n display: flex;\n flex-direction: column;\n margin: 1rem 1rem 0.5rem;\n row-gap: 4px;\n\n h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n line-height: 20px;\n color: var(--nylas-base-900);\n text-align: left;\n }\n\n p {\n margin: 0;\n font-size: 0.875rem;\n font-weight: 400;\n line-height: 20px;\n color: var(--nylas-base-600);\n text-align: left;\n }\n }\n }\n }\n}\n\n.footer {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 1rem;\n min-height: 80px;\n padding: 0 1rem;\n border-top: 1px solid var(--nylas-base-200);\n\n @media #{$mobile} {\n flex-direction: column;\n height: auto;\n z-index: 2;\n }\n\n .preview {\n display: flex;\n gap: 16px;\n\n @media #{$mobile} {\n margin-top: 1rem;\n width: 100%;\n }\n\n button-component.page-settings-button {\n min-width: 140px;\n }\n }\n\n .buttons {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n justify-self: flex-end;\n gap: 1rem;\n\n @media #{$mobile} {\n flex-direction: column-reverse;\n width: 100%;\n }\n\n .footer-buttons__row {\n display: flex;\n gap: 16px;\n\n @media #{$mobile} {\n width: 100%;\n\n button-component[title='Preview'] {\n width: 48px;\n }\n }\n }\n\n p {\n max-width: 524px;\n\n &.unsaved-changes {\n color: var(--nylas-base-600);\n }\n\n &.saved-changes {\n color: var(--nylas-success);\n }\n\n &.error {\n color: var(--nylas-error);\n }\n\n &.error-full-width {\n max-width: 660px;\n }\n }\n\n button-component {\n @media #{$mobile} {\n width: 100%;\n }\n }\n\n button {\n @include primary-button;\n width: 148px;\n\n span {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n }\n }\n\n button-component.save-changes {\n min-width: 140px;\n }\n }\n}\n\nbutton-component#report-issue {\n width: auto;\n}\n\nnylas-feedback-form {\n position: absolute;\n top: 0;\n height: 100%;\n width: 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n background: rgba(0, 0, 0, 0.6);\n z-index: 2;\n border-radius: inherit;\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { debug, mergeDeep, parsePreviewLink } from '@/utils/utils';\nimport {\n AdditionalFields,\n Appearance,\n BookingType,\n Calendar,\n Conference,\n Configuration,\n EmailTemplate,\n EventReminder,\n GroupConfiguration,\n GroupEvent,\n GroupEventAPIData,\n ImportGroupEventDetails,\n NotificationType,\n RecurrenceDeleteOption,\n RecurrenceUpdateOption,\n ThemeConfig,\n} from '@nylas/core';\nimport { Component, Element, Event, EventEmitter, Host, Listen, Method, Prop, State, Watch, h } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\nimport TabContentsGroup, { TabGroup } from './tab-contents-group';\nimport { User } from '@/common/nylas-api-request';\nimport { CONFIGURATION_EVENT_TYPE, editorGroupTabComponentNames } from '@/common/constants';\nimport { DataResponseReturnType } from '@/common/types';\nimport * as Sentry from '@sentry/browser';\nimport i18next from '@/utils/i18n';\nimport { LANGUAGE_CODE } from '@/common/constants';\nimport { CreateGroupEventFormState } from '../../..';\nimport { SchedulerGroupEventDetail } from '@nylas/core';\nimport { ErrorCategory, Notification } from '@/types/index';\nimport { version } from '@/version';\n\n/**\n * The nylas-editor-tabs-group component provides the user interface for managing editor tabs within the scheduler editor.\n * It is primarily used to control the edit mode of the scheduler editor, and it is rendered automatically by the\n * parent component, nylas-scheduler-editor, during editing. There is no need to interact with this component directly\n * or set any props manually, as its behavior is fully managed by the parent component.\n *\n * @part nap__title - [nylas-additional-participants] The title of the component.\n * @part nap__subtitle - [nylas-additional-participants] The subtitle of the component.\n * @part nap__content - [nylas-additional-participants] The content of the component.\n * @part nap__input - [nylas-additional-participants] The input of the component.\n * @part nap__remove-participant - [nylas-additional-participants] The remove participant button of the component.\n * @part nap__add-participant - [nylas-additional-participants] The add participant button of the component.\n * @part nap__header - [nylas-availability-picker] The header of the availability picker\n * @part nap__select-timezone - [nylas-availability-picker] The timezone selection container\n * @part nap__select-timezone-button -[nylas-availability-picker] The timezone selection button\n * @part nap__select-timezone-dropdown-content -[nylas-availability-picker] The timezone selection dropdown content\n * @part nap__availability - [nylas-availability-picker] The availability container\n * @part nap__day - [nylas-availability-picker] The day container\n * @part nap__time-ranges - [nylas-availability-picker] The time ranges container\n * @part nap__time-range - [nylas-availability-picker] The time range container\n * @part nap__add-time-range - [nylas-availability-picker] The add time range button\n * @part nap__time-picker-container -[nylas-availability-picker] The time picker container\n * @part nap__time-picker-input - [nylas-availability-picker] The time picker input\n * @part nap__time-picker-times - [nylas-availability-picker] The time picker times\n * @part nbcp - [nylas-booking-calendar-picker] The booking calendar picker container\n * @part nbcp__header - [nylas-booking-calendar-picker] The header of the booking calendar picker\n * @part nbcp__input-label - [nylas-booking-calendar-picker] The input label of the booking calendar picker\n * @part nbcp__dropdown - [nylas-booking-calendar-picker] The dropdown container\n * @part nbcp__dropdown-button - [nylas-booking-calendar-picker] The dropdown button\n * @part nbcp__dropdown-content - [nylas-booking-calendar-picker] The dropdown content\n * @part nbt - [nylas-buffer-time] The buffer time container\n * @part nbt__header - [nylas-buffer-time] The header of the buffer time\n * @part nbt__body - [nylas-buffer-time] The body of the buffer time\n * @part nbt__dropdown-before - [nylas-buffer-time] The before buffer dropdown container\n * @part nbt__dropdown-button-before - [nylas-buffer-time] The before buffer dropdown button\n * @part nbt__dropdown-content-before - [nylas-buffer-time] The before buffer dropdown content\n * @part nbt__dropdown-after - [nylas-buffer-time] The after buffer dropdown container\n * @part nbt__dropdown-button-after - [nylas-buffer-time] The after buffer dropdown button\n * @part nbt__dropdown-content-after - [nylas-buffer-time] The after buffer dropdown content\n * @part nbt__preview - [nylas-buffer-time] The buffer time preview\n * @part ncp - [nylas-calendar-picker] The calendar picker container\n * @part ncp__header - [nylas-calendar-picker] The header of the calendar picker\n * @part ncp__dropdown - [nylas-calendar-picker] The dropdown container\n * @part ncp__dropdown-button - [nylas-calendar-picker] The dropdown button\n * @part ncp__dropdown-content - [nylas-calendar-picker] The dropdown content\n * @part ncbf - [nylas-custom-booking-flow] The custom booking flow container\n * @part ncbf__header - [nylas-custom-booking-flow] The header of the custom booking flow\n * @part ncbf__dropdown - [nylas-custom-booking-flow] The dropdown container\n * @part ncbf__dropdown-button - [nylas-custom-booking-flow] The dropdown button\n * @part ncbf__dropdown-content - [nylas-custom-booking-flow] The dropdown content\n * @part nedesc - [nylas-event-description] The event description container\n * @part nedesc__textarea - [nylas-event-description] The event description textarea\n * @part ned - [nylas-event-duration] The event duration container\n * @part ned__dropdown - [nylas-event-duration] The dropdown container for the duration increment\n * @part ned__dropdown-button - [nylas-event-duration] The dropdown button for the duration increment\n * @part ned__dropdown-content - [nylas-event-duration] The dropdown content for the duration increment\n * @part ned__input_dropdown - [nylas-event-duration] The input dropdown container for the duration minutes\n * @part ned__input_dropdown-input - [nylas-event-duration] The input for the duration minutes\n * @part ned__input_dropdown-content - [nylas-event-duration] The dropdown content for the input duration minutes\n * @part net - [nylas-event-title] The event title container\n * @part net__title - [nylas-event-title] The event title input\n * @part net__dropdown-content - [nylas-event-title] The token options container\n * @part nlfb - [nylas-limit-future-bookings] The limit future bookings container\n * @part nlfb__number-dropdown - [nylas-limit-future-bookings] The number dropdown container\n * @part nlfb__number-dropdown-button - [nylas-limit-future-bookings] The number dropdown button\n * @part nlfb__number-dropdown-content - [nylas-limit-future-bookings] The number dropdown content\n * @part nlfb__period-dropdown - [nylas-limit-future-bookings] The period dropdown container\n * @part nlfb__period-dropdown-button - [nylas-limit-future-bookings] The period dropdown button\n * @part nlfb__period-dropdown-content - [nylas-limit-future-bookings] The period dropdown content\n * @part nel - [nylas-event-location] The event location container\n * @part nel__location - [nylas-event-location] The event location input\n * @part nel__dropdown - [nylas-event-location] The dropdown container\n * @part nel__dropdown-button - [nylas-event-location] The dropdown button\n * @part nel__dropdown-content - [nylas-event-location] The dropdown content\n * @part nmbn - [nylas-min-booking-notice] The minimum booking notice container\n * @part nmbn__number-dropdown - [nylas-min-booking-notice] The number dropdown container\n * @part nmbn__number-dropdown-button - [nylas-min-booking-notice] The number dropdown button\n * @part nmbn__number-dropdown-content -[nylas-min-booking-notice] The number dropdown content\n * @part nmbn__period-dropdown - [nylas-min-booking-notice] The period dropdown container\n * @part nmbn__period-dropdown-button - [nylas-min-booking-notice] The period dropdown button\n * @part nmbn__period-dropdown-content - [nylas-min-booking-notice] The period dropdown content\n * @part nmcn - [nylas-min-cancellation-notice] The minimum cancellation notice container\n * @part nmcn__number-dropdown - [nylas-min-cancellation-notice] The number dropdown container\n * @part nmcn__number-dropdown-button - [nylas-min-cancellation-notice] The number dropdown button\n * @part nmcn__number-dropdown-content - [nylas-min-cancellation-notice] The number dropdown content\n * @part nmcn__period-dropdown - [nylas-min-cancellation-notice] The period dropdown container\n * @part nmcn__period-dropdown-button - [nylas-min-cancellation-notice] The period dropdown button\n * @part nmcn__period-dropdown-content - [nylas-min-cancellation-notice] The period dropdown content\n * @part ncpolicy - [nylas-cancellation-policy] The cancellation policy container\n * @part ncpolicy__textarea - [nylas-cancellation-policy] The cancellation policy textarea\n * @part nti - [nylas-timeslot-interval] The timeslot interval container\n * @part nti__header - [nylas-timeslot-interval] The header of the timeslot interval picker\n * @part nti__input-label - [nylas-timeslot-interval] The input label of the timeslot interval picker\n * @part nti__dropdown - [nylas-timeslot-interval] The dropdown container\n * @part nti__dropdown-button - [nylas-timeslot-interval] The dropdown button\n * @part nti__dropdown-content - [nylas-timeslot-interval] The dropdown content\n * @part npca - [nylas-participants-custom-availability] The participants custom availability container\n * @part npca__header - [nylas-participants-custom-availability] The header of the participants custom availability\n * @part npca__content - [nylas-participants-custom-availability] The content of the participants custom availability\n * @part npca__participant-container - [nylas-participants-custom-availability] The participant container\n * @part npca__participant-title - [nylas-participants-custom-availability] The participant title\n * @part npca__participant-toggle--container - [nylas-participants-custom-availability] The participant toggle container\n * @part npca__toggle-label - [nylas-participants-custom-availability] The toggle label\n * @part npca__toggle-input - [nylas-participants-custom-availability] The toggle input\n * @part npca__toggle-slider - [nylas-participants-custom-availability] The toggle slider\n * @part ncbs - [nylas-customize-booking-settings] The booking calendar picker container\n * @part ncbs__header - [nylas-customize-booking-settings] The header of the booking calendar picker\n * @part ncbs__settings - [nylas-customize-booking-settings] The settings container\n * @part ncbs__settings-div - [nylas-customize-booking-settings] The div inside the settings container that contains the checkbox and tooltip for each setting\n * @part ncbs__additional_guests - [nylas-customize-booking-settings] The additional guests setting\n * @part ncbs__cancellation_options - [nylas-customize-booking-settings] The cancellation options setting\n * @part ncbs__rescheduling_options - [nylas-customize-booking-settings] The rescheduling options setting\n * @part nsm - [nylas-scheduling-method] The booking calendar picker container\n * @part nsm__header - [nylas-scheduling-method] The header of the booking calendar picker\n * @part nsm__input-label - [nylas-scheduling-method] The input label of the booking calendar picker\n * @part nsm__dropdown - [nylas-scheduling-method] The dropdown container\n * @part nsm__dropdown-button - [nylas-scheduling-method] The dropdown button\n * @part nsm__dropdown-content - [nylas-scheduling-method] The dropdown content\n * @part npn - The nylas-page-name container\n * @part npn__body - The body of the event communication section\n * @part npn__header - The header of the event communication section\n * @part npn__drawer-toggle--container - The card's drawer toggle container\n * @part npn__input-textfield - The page name textfield\n * @part editor__form-contents - The form contents container\n * @part editor__tab - The tabs container\n * @part editor__tab-content - The tab content container\n * @part editor__footer - The footer container\n * @part editor__footer-preview - The preview button container\n * @part editor__footer-buttons - The buttons container\n */\n@Component({\n tag: 'nylas-editor-tabs-group',\n styleUrl: 'nylas-editor-tabs-group.scss',\n scoped: true,\n})\nexport class NylasEditorTabsGroup {\n /**\n * The form reference to access the form data.\n */\n private formRef!: HTMLFormElement;\n /**\n * The host element.\n */\n @Element() host!: HTMLNylasEditorTabsGroupElement;\n // Props\n /**\n * @standalone\n * The list of calendars to use in the editor when configuring availability.\n */\n @Prop() calendars?: Calendar[];\n /**\n * @standalone\n * The selected configuration to use in the editor when editing an existing configuration or creating a new one.\n */\n @Prop() selectedConfiguration?: GroupConfiguration;\n\n /**\n * @standalone\n * The list of configurations\n */\n @Prop() configurations?: (Configuration | GroupConfiguration)[];\n\n /**\n * @standalone\n * The current logged in user.\n */\n @Prop() currentUser?: User;\n /**\n * @standalone\n * The scheduler preview link to use when the user clicks on the preview button.\n * You can use a placeholder `{config.id}` to replace the configuration id anywhere in the link.\n */\n @Prop({ attribute: 'scheduler-preview-link' }) schedulerPreviewLink: string = '';\n /**\n * @standalone\n * The mode of the editor.\n * - `app`: The editor is used as a standalone app.\n * - `composable`: The editor is used as a composable component.\n */\n @Prop() mode?: 'app' | 'composable' = 'app';\n /**\n * @standalone\n * This prop is passed down by the parent component.\n * It is an optional prop is used to hide tabs in the editor. Available tabs are:\n * eventInfo, availability, participants, bookingOptions, bookingForm\n */\n @Prop() hideEditorTabs?: TabGroup[] = [];\n /**\n * @standalone\n * This prop is passed down by the parent component to enable or disable user feedback.\n */\n @Prop() enableUserFeedback?: boolean = true;\n\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: LANGUAGE_CODE;\n\n /**\n * The selected event type.\n */\n @Prop() selectedEventType?: CONFIGURATION_EVENT_TYPE;\n\n /**\n * The selected group event.\n */\n @Prop() selectedGroupEvent?: GroupEventAPIData;\n\n /**\n * @standalone\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: ThemeConfig;\n\n // State\n /**\n * The action to perform in the editor.\n * - `create`: Create a new configuration.\n * - `edit`: Edit an existing configuration.\n */\n @State() action: 'create' | 'edit' = 'create';\n /**\n * The state for showing the feedback modal.\n */\n @State() showFeedbackModal: boolean = false;\n /**\n * The active tab in the editor.\n */\n @State() activeTab: TabGroup = TabGroup.CalendarView;\n /**\n * The loading state of the editor.\n */\n @State() isLoading: boolean = false;\n /**\n * The component loaded state of the editor.\n */\n @State() componentLoaded: boolean = false;\n /**\n * The unsaved changes state of the editor.\n */\n @State() hasUnsavedChanges: boolean = false;\n /**\n * The changes saved state of the editor.\n */\n @State() changesSaved: boolean = false;\n /**\n * The form state of the editor.\n */\n @State() formState: Partial<{\n title: string;\n description: string;\n participants: {\n name: string;\n email: string;\n is_organizer?: boolean;\n }[];\n additionalFields?: Record<string, AdditionalFields>;\n bookingCalendar?: string;\n location?: string;\n conferencing?: Conference;\n bookingType?: string;\n cancellationPolicy?: string;\n minCancellationNotice?: number;\n minBookingNotice?: number;\n hideCancellationOptions?: boolean;\n hideReschedulingOptions?: boolean;\n reminders?: EventReminder[];\n emailTemplate?: EmailTemplate;\n redirectUrl?: string;\n slug: string;\n appearance: Appearance;\n name: string;\n eventCapacity: number;\n eventTimeslot: {\n when: {\n start_time: number;\n end_time: number;\n start_timezone: string;\n end_timezone: string;\n };\n recurrence: string[];\n };\n disableEmails?: boolean;\n organizerLocale?: string;\n }> = {};\n /**\n * The error state of the editor.\n */\n @State() error?: {\n message: string;\n type: NotificationType | undefined;\n category: ErrorCategory | undefined;\n title: string;\n } = {\n message: '',\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: '',\n };\n\n // Events\n /**\n * Event emitted when the group scheduler configuration form is submitted and ready to be processed (before the API request is made). This fires for both create and edit actions after client-side validation passes.\n */\n @Event() schedulerConfigChanged!: EventEmitter<SchedulerGroupEventDetail & { host: HTMLNylasEditorTabsGroupElement }>;\n /**\n * Event emitted when a group scheduler configuration is successfully created via the API. This fires only for create actions after the API request completes successfully.\n */\n @Event() schedulerConfigCreated!: EventEmitter<SchedulerGroupEventDetail & { host: HTMLNylasEditorTabsGroupElement }>;\n /**\n * Event emitted when the user clicks the cancel button to exit the group scheduler editor.\n */\n @Event() cancelButtonClick!: EventEmitter<void>;\n /**\n * Event emitted at the very beginning of form submission, before any validation occurs. This event is cancelable and can prevent the submission process if preventDefault() is called.\n */\n @Event({ bubbles: true, cancelable: true }) formSubmitted!: EventEmitter<void>;\n /**\n * Event emitted when the user clicks the preview button. This fires before the preview link is opened and can be used to override the default preview behavior.\n */\n @Event() previewButtonClicked!: EventEmitter<HTMLNylasEditorTabsGroupElement>;\n /**\n * Event emitted whenever any form field value changes within the group scheduler editor. This provides real-time updates as users modify form inputs.\n */\n @Event() schedulerEditorFormUpdated!: EventEmitter<{ value: string; name: string }>;\n\n /**\n * Event emitted when the user requests to create a new group event in the calendar view. This fires when the create button is clicked and validation passes.\n */\n @Event() groupEventCreateTriggered!: EventEmitter<{ groupEvent: Partial<GroupEvent>; configId: string; host: HTMLNylasEditorTabsGroupElement }>;\n\n /**\n * Event emitted when the user requests to save changes to an existing group event. This fires after validation passes and includes the recurrence update option chosen by the user.\n */\n @Event() groupEventUpdateTriggered!: EventEmitter<{\n groupEvent: GroupEvent;\n chosenOption: RecurrenceUpdateOption;\n configId: string;\n host: HTMLNylasEditorTabsGroupElement;\n }>;\n\n /**\n * Event emitted when the user requests to delete a group event. This fires when the delete button is clicked and includes the recurrence delete option chosen by the user.\n */\n @Event() groupEventDeleteTriggered!: EventEmitter<{\n groupEvent: GroupEvent;\n chosenOption: RecurrenceDeleteOption;\n configId: string;\n host: HTMLNylasEditorTabsGroupElement;\n }>;\n\n /**\n * Event emitted when the user requests to import group events from an external source. This fires when the import action is triggered in the calendar view.\n */\n @Event() groupEventImportTriggered!: EventEmitter<{\n groupEvent: ImportGroupEventDetails;\n configId: string;\n host: HTMLNylasEditorTabsGroupElement;\n }>;\n\n /**\n * Event emitted when validation errors prevent saving changes to a group event. This provides error details for handling failed save attempts.\n */\n @Event() saveGroupEventChangesError!: EventEmitter<{\n error: string;\n configId: string;\n host: HTMLNylasEditorTabsGroupElement;\n }>;\n\n /**\n * Event emitted when the component needs to display an error notification to the user. This includes validation errors, API errors, and other component-level errors.\n */\n @Event({ cancelable: false }) readonly nylasSchedulerError!: EventEmitter<{ notification: Notification; host: HTMLElement }>;\n\n /**\n * Event emitted when the user dismisses an error notification, allowing parent components to handle cleanup or additional actions.\n */\n @Event({ cancelable: false }) dismissNotification!: EventEmitter<{ id: string; host: HTMLNylasEditorTabsGroupElement }>;\n\n // Watchers\n /**\n * Watches for changes in the selected configuration and updates the form state.\n */\n @Watch('selectedConfiguration')\n configChangedHandler(newConfig: GroupConfiguration) {\n debug('[nylas-editor-tabs-group]', 'configChangedHandler', newConfig, this.selectedConfiguration);\n this.formState = {\n ...this.getFormStateFromConfig(newConfig),\n };\n if (newConfig?.id) {\n this.action = 'edit';\n } else {\n this.action = 'create';\n }\n }\n\n /**\n * Watches for changes in the selected group event and updates the form state.\n */\n @Watch('selectedGroupEvent')\n selectedGroupEventChangedHandler(newConfig: GroupEventAPIData) {\n debug('[nylas-editor-tabs-group]', 'selectedGroupEventChangedHandler', newConfig, this.selectedConfiguration);\n this.formState = {\n ...this.formState,\n title: this.selectedGroupEvent?.event?.title,\n description: this.selectedGroupEvent?.event?.description,\n location: this.selectedGroupEvent?.event?.location,\n conferencing: this.selectedGroupEvent?.event?.conferencing,\n eventCapacity: this.selectedGroupEvent?.group_event_info?.capacity,\n participants: this.selectedGroupEvent?.group_event_info?.participants?.map(participant => ({\n name: participant.name,\n email: participant.email,\n is_organizer: !!participant.is_organizer,\n })),\n eventTimeslot: this.selectedGroupEvent?.event?.when\n ? {\n when: {\n start_time: this.selectedGroupEvent?.event?.when?.start_time as number,\n end_time: this.selectedGroupEvent?.event?.when?.end_time as number,\n start_timezone: this.selectedGroupEvent?.event?.when?.start_timezone as string,\n end_timezone: this.selectedGroupEvent?.event?.when?.end_timezone as string,\n },\n recurrence: this.selectedGroupEvent?.group_event_info?.rrule ? this.selectedGroupEvent?.group_event_info?.rrule : [],\n }\n : undefined,\n };\n }\n\n /**\n * Watches for changes in the current user and updates the form state.\n */\n @Watch('currentUser')\n userChangedHandler(newUser: User) {\n // Actively watch for changes in the current user to update the form state.\n debug('[nylas-editor-tabs-group]', 'userChangedHandler', newUser);\n if (newUser) {\n this.formState = {\n ...this.getFormStateFromConfig(this.selectedConfiguration),\n };\n }\n }\n\n /**\n * Watches for changes in the selected language and updates the form state.\n */\n @Watch('selectedLanguage')\n selectedLanguageChangedHandler(newVal: LANGUAGE_CODE, oldVal: LANGUAGE_CODE) {\n if (newVal === oldVal) return;\n i18next.changeLanguage(newVal);\n if (this.error && this.error.message) {\n this.error = {\n ...this.error,\n message: i18next.t('fixFormErrors'),\n };\n this.showErrorNotification(this.error);\n }\n }\n\n @Watch('themeConfig')\n themeConfigChangedHandler(newVal: ThemeConfig, oldVal: ThemeConfig) {\n if (newVal === oldVal) return;\n this.applyThemeConfig(newVal);\n }\n\n applyThemeConfig(themeConfig?: ThemeConfig) {\n if (themeConfig) {\n for (const [key, value] of Object.entries(themeConfig)) {\n this.host.style.setProperty(`${key}`, value);\n }\n }\n }\n\n // Methods\n /**\n * Event handler for the scheduler config created event.\n */\n @Method()\n async schedulerConfigCreatedEventHandler(data: SchedulerGroupEventDetail & { host: HTMLNylasEditorTabsGroupElement }) {\n const event = this.schedulerConfigCreated.emit(data);\n return event;\n }\n\n /**\n * Sets the error state of the editor.\n */\n @Method()\n async setError(error: { message: string; type: NotificationType; category: ErrorCategory; title: string }) {\n this.error = {\n message: error.message,\n type: error.type,\n category: error.category,\n title: error.title || i18next.t('genericErrorTitle'),\n };\n if (this.error?.message) {\n this.showErrorNotification(this.error);\n }\n }\n\n /**\n * Resets the error state of the editor.\n */\n @Method()\n async resetError() {\n if (this.error?.message) {\n this.dismissNotification.emit({ id: this.error?.message.split(' ').join('-'), host: this.host });\n }\n this.error = {\n message: '',\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: '',\n };\n }\n\n // Lifecycle methods\n connectedCallback() {\n debug('[nylas-editor-tabs-group]', 'connectedCallback');\n // Use queueMicrotask to defer theme application until after React has set props.\n // This fixes the timing issue where connectedCallback fires before React sets themeConfig.\n queueMicrotask(() => {\n if (this.themeConfig) {\n this.applyThemeConfig(this.themeConfig);\n this.host.setAttribute('data-themed', '');\n }\n });\n }\n\n componentWillLoad() {\n debug('[nylas-editor-tabs-group]', 'componentWillLoad');\n this.formState = this.getFormStateFromConfig(this.selectedConfiguration);\n }\n\n componentDidLoad() {\n debug('[nylas-editor-tabs-group]', 'componentDidLoad');\n if (this.enableUserFeedback && !Sentry.isInitialized()) {\n Sentry.init({\n dsn: 'https://9d5731f1c77ca84c9ed3fb9b3ccf7ee1@o74852.ingest.us.sentry.io/4507889638178816',\n release: version,\n integrations: integrations => [\n ...integrations.filter(_integration => false), // Removes default integrations (including Breadcrumbs)\n Sentry.feedbackIntegration({\n colorScheme: 'system',\n autoInject: false,\n }),\n ],\n // Disable all other event capture\n autoSessionTracking: false, // Disable session tracking\n beforeSend: () => null, // Prevents error events from being sent\n });\n }\n if (this.selectedConfiguration?.id) {\n this.configChangedHandler(this.selectedConfiguration);\n }\n const firstVisibleTab = (this.host.querySelector('button.tab:not(.hide)') as HTMLButtonElement)?.name as TabGroup;\n if (firstVisibleTab && this.hideEditorTabs?.includes(this.activeTab)) {\n this.activeTab = firstVisibleTab;\n }\n this.updateFormState();\n this.componentLoaded = true;\n }\n\n disconnectedCallback() {\n debug('[nylas-editor-tabs-group]', 'disconnectedCallback');\n }\n\n // Event listeners\n /**\n * Event listener for the value changed event.\n */\n @Listen('valueChanged')\n handleValueChanged(event: CustomEvent) {\n debug('[nylas-editor-tabs-group]', 'handleValueChanged', event);\n const { name, value } = event.detail;\n debug('name', name, 'value', value);\n this.setFormState(value, name);\n this.formState = { ...this.formState };\n if (editorGroupTabComponentNames.includes(name)) {\n this.hasUnsavedChanges = true;\n }\n this.host.resetError();\n this.schedulerEditorFormUpdated.emit({\n value: event.detail.value,\n name: event.detail.name,\n });\n }\n\n /**\n * Event listener for the feedback modal closed event.\n */\n @Listen('feedbackModalClosed')\n feedbackModalClosedHandler() {\n this.showFeedbackModal = false;\n }\n\n /**\n * Event listener for the feedback submitted event.\n */\n @Listen('feedbackSubmitted')\n feedbackSubmittedHandler(event: CustomEvent<{ feedback: string }>) {\n const eventId = Sentry.captureMessage('Scheduler Editor User Feedback');\n const feedback = {\n eventId: eventId,\n message: event.detail.feedback,\n };\n\n Sentry.captureFeedback(feedback, {\n includeReplay: true,\n captureContext: {\n tags: {\n 'nylas-web-element': 'nylas-scheduler-editor',\n 'nylas-web-element-version': version,\n },\n extra: {\n configId: this.selectedConfiguration?.id,\n slug: this.selectedConfiguration?.slug,\n },\n },\n });\n this.showFeedbackModal = false;\n }\n\n /**\n * Event listener for the import group event event.\n */\n @Listen('importGroupEvent')\n importGroupEventHandler(event: CustomEvent<ImportGroupEventDetails>) {\n this.groupEventImportTriggered.emit({ groupEvent: event.detail, configId: this.selectedConfiguration?.id ?? '', host: this.host });\n }\n\n /**\n * Event listener for the save group event changes event.\n */\n @Listen('saveGroupEventChanges')\n saveGroupEventChangesHandler(event: CustomEvent<{ data: GroupEventAPIData; action: RecurrenceUpdateOption }>) {\n debug('saveGroupEventChangesHandler', event.detail, this.selectedGroupEvent);\n const valid = this.formRef.checkValidity();\n const groupEvent = this.getGroupEventDetailsFromFormState();\n this.resetError();\n if (!groupEvent.title) {\n this.setError({\n message: i18next.t('nylasEditorTabsGroup.eventTitleRequired'),\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: i18next.t('nylasEditorTabs.formErrorTitle'),\n });\n }\n if (!groupEvent.when?.start_time || !groupEvent.when?.end_time) {\n this.setError({\n message: i18next.t('nylasEditorTabsGroup.eventTimeRequired'),\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: i18next.t('nylasEditorTabs.formErrorTitle'),\n });\n }\n if (!groupEvent.participants?.length) {\n this.setError({\n message: i18next.t('nylasEditorTabsGroup.participantsRequired'),\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: i18next.t('nylasEditorTabs.formErrorTitle'),\n });\n }\n if (groupEvent.participants?.length && groupEvent.participants?.some(p => !p.email)) {\n this.setError({\n message: i18next.t('nylasEditorTabsGroup.participantEmailRequired'),\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: i18next.t('nylasEditorTabs.formErrorTitle'),\n });\n }\n if (this.error?.message !== '' || !valid) {\n this.saveGroupEventChangesError.emit({\n error: this.error?.message ?? i18next.t('nylasEditorTabsGroup.errorOccured'),\n configId: this.selectedConfiguration?.id ?? '',\n host: this.host,\n });\n return;\n }\n\n this.groupEventUpdateTriggered.emit({\n groupEvent: groupEvent,\n chosenOption: event.detail.action,\n configId: this.selectedConfiguration?.id ?? '',\n host: this.host,\n });\n }\n\n /**\n * Event listener for the delete group event event.\n */\n @Listen('deleteGroupEvent')\n deleteGroupEventHandler(event: CustomEvent<{ data: GroupEventAPIData; action: RecurrenceDeleteOption }>) {\n debug('deleteGroupEventHandler', event.detail);\n const groupEvent = this.getGroupEventDetailsFromFormState();\n this.groupEventDeleteTriggered.emit({\n groupEvent: groupEvent,\n chosenOption: event.detail.action,\n configId: this.selectedConfiguration?.id ?? '',\n host: this.host,\n });\n }\n\n /**\n * Event listener for the create group event event.\n */\n @Listen('createGroupEvent')\n createGroupEventHandler(event: CustomEvent<CreateGroupEventFormState>) {\n const formState = event.detail;\n const organizer = {\n name: this.currentUser?.name ?? this.currentUser?.email ?? '',\n email: this.currentUser?.email ?? '',\n };\n const organizerDefaultCal = this.calendars?.find(c => c.is_primary) ?? this.calendars?.[0];\n const conferencing = this.formState?.conferencing || formState.conferencing;\n const groupEvent = {\n title: formState.title,\n description: formState.description,\n location: !conferencing ? formState.location : undefined,\n participants: formState.participants,\n organizer: organizer,\n conferencing: !formState.location ? conferencing : {},\n when: formState.eventTimeslot.when,\n recurrence: formState.eventTimeslot.recurrence,\n calendar_id: organizerDefaultCal?.id || 'primary',\n capacity: formState.eventCapacity,\n };\n this.groupEventCreateTriggered.emit({ groupEvent, configId: this.selectedConfiguration?.id ?? '', host: this.host });\n }\n\n showErrorNotification(error: { message: string; type: NotificationType | undefined; category: ErrorCategory | undefined; title: string }) {\n this.nylasSchedulerError.emit({\n notification: {\n title: error.title,\n category: error.category || ErrorCategory.Component,\n type: error.type || NotificationType.Error,\n description: error.message,\n id: error.message.split(' ').join('-'),\n ttl: 'none',\n },\n host: this.host,\n });\n }\n\n /**\n * Gets the group event details from the form state.\n */\n getGroupEventDetailsFromFormState() {\n const organizerDefaultCal = this.calendars?.find(c => c.is_primary) ?? this.calendars?.[0];\n const organizer = {\n name: this.currentUser?.name ?? this.currentUser?.email ?? '',\n email: this.currentUser?.email ?? '',\n };\n const participantOrganizer = [{ ...organizer, is_organizer: true }];\n const { title, description, bookingCalendar, location, conferencing, eventCapacity, eventTimeslot, participants } = this.formState;\n\n return {\n title: title,\n description: description,\n location: !conferencing ? location : undefined,\n conferencing: !location ? conferencing : undefined,\n when: {\n start_time: eventTimeslot?.when?.start_time ?? 0,\n end_time: eventTimeslot?.when?.end_time ?? 0,\n start_timezone: eventTimeslot?.when?.start_timezone ?? '',\n end_timezone: eventTimeslot?.when?.end_timezone ?? '',\n },\n recurrence: eventTimeslot?.recurrence ?? [],\n calendar_id: bookingCalendar || organizerDefaultCal?.id || 'primary',\n participants: participants?.length ? participants : participantOrganizer,\n organizer: organizer,\n capacity: eventCapacity || 10,\n } as any;\n }\n\n /**\n * Gets the form state from the selected configuration.\n */\n getFormStateFromConfig(config?: GroupConfiguration) {\n if (config?.appearance) {\n debug('Appearance settings have been returned from the given configuration; please remember to grab them from the configSettingsLoaded event and apply them as desired.');\n }\n return {\n additionalFields: config?.scheduler?.additional_fields ?? {},\n bookingType: config?.group_booking?.booking_type ?? 'booking',\n cancellationPolicy: config?.scheduler?.cancellation_policy ?? '',\n minCancellationNotice: config?.scheduler?.min_cancellation_notice ?? 0,\n minBookingNotice: config?.scheduler?.min_booking_notice ?? 60,\n hideCancellationOptions: config?.scheduler?.hide_cancellation_options ?? false,\n hideReschedulingOptions: config?.scheduler?.hide_rescheduling_options ?? false,\n reminders: config?.group_booking?.reminders,\n emailTemplate: config?.scheduler?.email_template,\n redirectUrl: config?.scheduler?.confirmation_redirect_url,\n slug: config?.slug,\n appearance: config?.appearance,\n name: config?.name,\n bookingCalendar: config?.group_booking?.calendar_id,\n disableEmails: config?.group_booking?.disable_emails,\n organizerLocale: config?.scheduler?.email_template?.organizer_locale,\n };\n }\n\n /**\n * Sets the form state from the form data.\n */\n setFormState(value, key) {\n switch (key) {\n case 'title':\n this.formState.title = value.toString();\n break;\n case 'description':\n this.formState.description = value.toString();\n break;\n case 'location':\n this.formState.location = value.toString();\n break;\n case 'conference':\n this.formState.conferencing = JSON.parse(value.toString());\n break;\n case 'confirmation-type':\n this.formState.bookingType = value.toString();\n break;\n case 'min-cancellation-notice':\n this.formState.minCancellationNotice = parseInt(value.toString());\n break;\n case 'min-booking-notice':\n this.formState.minBookingNotice = parseInt(value.toString());\n break;\n case 'cancellation-policy':\n this.formState.cancellationPolicy = value.toString();\n break;\n case 'customize-booking-settings': {\n const settings = JSON.parse(value.toString());\n this.formState.hideCancellationOptions = settings.hideCancellationOptions;\n this.formState.hideReschedulingOptions = settings.hideReschedulingOptions;\n break;\n }\n case 'booking-calendar':\n this.formState.bookingCalendar = value.toString();\n break;\n case 'event-capacity':\n this.formState.eventCapacity = parseInt(String(value));\n break;\n case 'additional-fields':\n this.formState.additionalFields = JSON.parse(value.toString());\n break;\n case 'confirmation-email-template':\n this.formState.emailTemplate = JSON.parse(value.toString());\n break;\n case 'reminder-overrides':\n this.formState.reminders = JSON.parse(value.toString());\n break;\n case 'confirmation-redirect':\n this.formState.redirectUrl = value.toString();\n break;\n case 'custom-event-slug':\n debug('custom-event-slug', value);\n this.formState.slug = JSON.parse(value.toString());\n break;\n case 'page-styling':\n this.formState.appearance = JSON.parse(value.toString());\n break;\n case 'page-name':\n this.formState.name = JSON.parse(value.toString());\n break;\n case 'participants': {\n const participants = JSON.parse(value.toString());\n this.formState.participants = participants.map(participant => ({\n name: participant.name,\n email: participant.email,\n is_organizer: participant.is_organizer,\n }));\n break;\n }\n case 'event-timeslot':\n this.formState.eventTimeslot = JSON.parse(value.toString());\n break;\n case 'disable-emails': {\n const { disableEmails, organizerLocale } = JSON.parse(value.toString());\n this.formState.disableEmails = disableEmails;\n this.formState.organizerLocale = organizerLocale;\n break;\n }\n }\n this.schedulerEditorFormUpdated.emit({\n value,\n name: key,\n });\n }\n\n /**\n * Updates the form state from the form data.\n */\n updateFormState() {\n const formData = new FormData(this.formRef);\n formData.forEach((value, key) => {\n this.setFormState(value, key);\n });\n\n this.formState = { ...this.formState };\n return this.formState;\n }\n\n /**\n * Sets the active tab.\n */\n setActiveTab(e: Event, tabName: TabGroup) {\n e.preventDefault();\n this.updateFormState();\n this.activeTab = tabName;\n }\n\n /**\n * Handles the form submission.\n */\n formSubmissionHandler = async (event: Event) => {\n event.preventDefault();\n const formEvent = await this.formSubmitted.emit();\n debug('[nylas-editor-tabs-group]', 'formSubmissionHandler', formEvent);\n const valid = this.formRef.checkValidity();\n if (!valid || formEvent.defaultPrevented) {\n await this.host.setError({\n message: this.formRef.validationMessage || i18next.t('fixFormErrors'),\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: i18next.t('nylasEditorTabs.formErrorTitle'),\n });\n return;\n }\n this.isLoading = true;\n this.hasUnsavedChanges = false;\n const formState = this.updateFormState();\n debug('[nylas-editor-tabs-group]', 'formState', formState);\n const {\n title,\n description,\n bookingCalendar,\n location,\n bookingType,\n minCancellationNotice,\n minBookingNotice,\n cancellationPolicy,\n hideCancellationOptions,\n hideReschedulingOptions,\n additionalFields,\n conferencing,\n reminders,\n emailTemplate,\n redirectUrl,\n slug,\n appearance,\n name,\n eventCapacity,\n eventTimeslot,\n participants,\n disableEmails,\n organizerLocale,\n } = formState;\n\n const configObject: Partial<GroupConfiguration> = {\n ...(this.selectedConfiguration?.id && { id: this.selectedConfiguration.id }),\n slug: slug,\n name: name,\n type: this.selectedEventType === CONFIGURATION_EVENT_TYPE.group ? CONFIGURATION_EVENT_TYPE.group : undefined,\n scheduler: {\n cancellation_policy: cancellationPolicy ?? '',\n min_cancellation_notice: minCancellationNotice ?? 0,\n min_booking_notice: minBookingNotice ?? 60,\n hide_cancellation_options: hideCancellationOptions ?? false,\n hide_rescheduling_options: hideReschedulingOptions ?? false,\n additional_fields: additionalFields,\n email_template: emailTemplate\n ? {\n ...emailTemplate,\n organizer_locale: organizerLocale || 'en',\n logo: emailTemplate.logo || '',\n }\n : undefined,\n confirmation_redirect_url: redirectUrl,\n },\n appearance: appearance,\n group_booking: {\n booking_type: bookingType ? (bookingType as BookingType) : 'booking',\n disable_emails: typeof disableEmails === 'boolean' ? disableEmails : false,\n reminders: reminders,\n conferencing: conferencing,\n calendar_id: bookingCalendar || 'primary',\n default_capacity: eventCapacity || 10,\n },\n };\n\n const configObjectWithDeveloperSettings = mergeDeep(this.selectedConfiguration, configObject || {});\n\n const finalConfig = this.action === 'create' ? configObjectWithDeveloperSettings : configObject;\n // Ensure the following properties are not included in the final config for group events\n delete finalConfig.availability;\n delete finalConfig.participants;\n delete finalConfig.event_booking;\n const resetLoadingState = (_e: CustomEvent) => {\n this.isLoading = false;\n this.changesSaved = true;\n setTimeout(() => {\n this.changesSaved = false;\n }, 3000);\n };\n\n const hasBookingError = this.checkForBookingFormErrors(finalConfig);\n\n if (hasBookingError) {\n return;\n }\n const organizer = {\n name: this.currentUser?.name ?? this.currentUser?.email ?? '',\n email: this.currentUser?.email ?? '',\n };\n const organizerDefaultCal = this.calendars?.find(c => c.is_primary) ?? this.calendars?.[0];\n const organizerParticipant = [{ ...organizer, is_organizer: true }];\n const groupEvent = !this.selectedConfiguration?.id\n ? {\n title: title,\n description: description,\n location: !conferencing ? location : undefined,\n conferencing: !location ? conferencing : undefined,\n when: {\n start_time: eventTimeslot?.when?.start_time ?? 0,\n end_time: eventTimeslot?.when?.end_time ?? 0,\n start_timezone: eventTimeslot?.when?.start_timezone ?? '',\n end_timezone: eventTimeslot?.when?.end_timezone ?? '',\n },\n recurrence: eventTimeslot?.recurrence ?? [],\n calendar_id: bookingCalendar || organizerDefaultCal?.id || 'primary',\n participants: participants?.length ? participants : organizerParticipant,\n organizer: organizer,\n capacity: eventCapacity || 10,\n }\n : undefined;\n this.schedulerConfigChanged.emit({ groupEvent: groupEvent || undefined, config: finalConfig, resetLoadingState: resetLoadingState, action: this.action, host: this.host });\n };\n\n /**\n * Checks for booking form errors.\n */\n checkForBookingFormErrors = config => {\n // Check additional Fields in config\n let hasError = false;\n let errorMessage = '';\n const additionalFields = config.scheduler?.additional_fields;\n if (additionalFields) {\n errorMessage = '';\n Object.entries(additionalFields).forEach(entry => {\n const field = entry[1] as AdditionalFields;\n if (field.label === '') {\n errorMessage += i18next.t('nylasEditorTabs.bookingFormError_label', { type: field.type });\n hasError = true;\n return;\n }\n if (field.options) {\n for (const option of field.options) {\n if (option.trim() === '') {\n errorMessage += i18next.t('nylasEditorTabs.bookingFormError_option', { label: field.label, type: field.type });\n hasError = true;\n break;\n }\n }\n }\n });\n }\n if (hasError) {\n this.isLoading = false;\n this.host.setError({\n message: errorMessage,\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: i18next.t('nylasEditorTabs.bookingFormError'),\n });\n }\n return hasError;\n };\n\n /**\n * Hides the tab.\n */\n hideTab(tab: TabGroup) {\n return this.hideEditorTabs?.includes(tab) || false;\n }\n\n /**\n * Handles the feedback click event.\n */\n onFeedbackClick(e: Event) {\n e.preventDefault();\n this.showFeedbackModal = true;\n }\n\n @RegisterComponent<NylasEditorTabsGroup, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-editor-tabs-group',\n stateToProps: new Map([\n ['schedulerConfig.calendars', 'calendars'],\n ['schedulerConfig.selectedConfiguration', 'selectedConfiguration'],\n ['schedulerConfig.currentUser', 'currentUser'],\n ['schedulerConfig.configurations', 'configurations'],\n ['schedulerConfig.selectedLanguage', 'selectedLanguage'],\n ['schedulerConfig.selectedEventType', 'selectedEventType'],\n ['schedulerConfig.selectedGroupEvent', 'selectedGroupEvent'],\n ['schedulerConfig.themeConfig', 'themeConfig'],\n ]),\n eventToProps: {\n schedulerConfigChanged: async (\n event: CustomEvent<SchedulerGroupEventDetail & { host: HTMLNylasEditorTabsGroupElement }>,\n nylasSchedulerConfigConnector: NylasSchedulerConfigConnector,\n ) => {\n const { resetLoadingState, host, action, config, groupEvent } = event.detail;\n const checkForErrors = (response: DataResponseReturnType, errorTitle: string) => {\n const [data, error] = response;\n if (!data && error) {\n host.setError({\n message: error.message || i18next.t('genericErrorTitle'),\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: errorTitle,\n });\n } else if (data && !error && action === 'create') {\n host.schedulerConfigCreatedEventHandler({ config: data, action, host });\n }\n };\n\n // If we have an ID, we are updating an existing configuration\n if (action === 'edit') {\n const response = await nylasSchedulerConfigConnector.schedulerConfig.updateConfiguration(config);\n checkForErrors(response, i18next.t('nylasEditorTabs.updateConfigError'));\n\n if (resetLoadingState) {\n resetLoadingState(event);\n }\n } else {\n const response = await nylasSchedulerConfigConnector.schedulerConfig.createConfiguration(config);\n checkForErrors(response, i18next.t('nylasEditorTabs.createConfigError'));\n const [data, _error] = response;\n const configId = data?.id;\n\n if (configId && groupEvent) {\n const eventResponse = await nylasSchedulerConfigConnector.schedulerConfig.createGroupEvent(groupEvent, configId);\n checkForErrors(eventResponse, i18next.t('nylasEditorTabsGroup.createGroupEventError'));\n // nylasSchedulerConfigConnector.schedulerConfigStore.set('selectedEventType', undefined);\n }\n if (resetLoadingState) {\n resetLoadingState(event);\n }\n }\n },\n cancelButtonClick: async (_, nylasSchedulerConfigConnector) => {\n nylasSchedulerConfigConnector.schedulerConfigStore.state.action = null;\n nylasSchedulerConfigConnector.schedulerConfigStore.set('selectedEventType', undefined);\n nylasSchedulerConfigConnector.schedulerConfigStore.set('selectedGroupEvent', undefined);\n nylasSchedulerConfigConnector.schedulerConfigStore.set('groupEvents', []);\n },\n previewButtonClicked: async (_, nylasSchedulerConfigConnector) => {\n debug('[nylas-editor-tabs-group]', 'previewButtonClicked', nylasSchedulerConfigConnector);\n },\n formSubmitted: async (_, nylasSchedulerConfigConnector) => {\n debug('[nylas-editor-tabs-group]', 'formSubmitted', nylasSchedulerConfigConnector);\n },\n schedulerEditorFormUpdated: async (event: CustomEvent<{ value: string; name: string }>, _nylasSchedulerConfigConnector) => {\n debug('[nylas-editor-tabs-group]', 'schedulerEditorFormUpdated', event);\n },\n schedulerConfigCreated: async (event: CustomEvent<SchedulerGroupEventDetail>, _nylasSchedulerConfigConnector: NylasSchedulerConfigConnector) => {\n debug('[nylas-editor-tabs-group]', 'schedulerConfigCreated', event);\n },\n groupEventUpdateTriggered: async (\n event: CustomEvent<{\n groupEvent: GroupEvent;\n host: HTMLNylasEditorTabsGroupElement;\n chosenOption: RecurrenceUpdateOption;\n configId: string;\n }>,\n nylasSchedulerConfigConnector: NylasSchedulerConfigConnector,\n ) => {\n const { groupEvent, host, chosenOption, configId } = event.detail;\n\n const response = await nylasSchedulerConfigConnector.schedulerConfig.updateGroupEvent(groupEvent, chosenOption, configId);\n const [data, error] = response;\n if (!data && error) {\n host.setError({\n message: error.message || i18next.t('genericErrorTitle'),\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: i18next.t('nylasEditorTabsGroup.updateGroupEventError'),\n });\n }\n },\n groupEventDeleteTriggered: async (\n event: CustomEvent<{ groupEvent: GroupEvent; chosenOption: RecurrenceDeleteOption; configId: string; host: HTMLNylasEditorTabsGroupElement }>,\n nylasSchedulerConfigConnector: NylasSchedulerConfigConnector,\n ) => {\n const { groupEvent, chosenOption, configId, host } = event.detail;\n const response = await nylasSchedulerConfigConnector.schedulerConfig.deleteGroupEvent(groupEvent, chosenOption, configId);\n const [data, error] = response;\n if (!data && error) {\n host.setError({\n message: error.message || i18next.t('genericErrorTitle'),\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: i18next.t('nylasEditorTabsGroup.deleteGroupEventError'),\n });\n }\n },\n groupEventCreateTriggered: async (\n event: CustomEvent<{ groupEvent: Partial<GroupEvent>; configId: string; host: HTMLNylasEditorTabsGroupElement }>,\n nylasSchedulerConfigConnector: NylasSchedulerConfigConnector,\n ) => {\n const { groupEvent, configId, host } = event.detail;\n const response = await nylasSchedulerConfigConnector.schedulerConfig.createGroupEvent(groupEvent, configId);\n const [data, error] = response;\n if (!data && error) {\n host.setError({\n message: error.message || i18next.t('genericErrorTitle'),\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: i18next.t('nylasEditorTabsGroup.createGroupEventError'),\n });\n }\n },\n groupEventImportTriggered: async (\n event: CustomEvent<{\n groupEvent: ImportGroupEventDetails;\n configId: string;\n host: HTMLNylasEditorTabsGroupElement;\n }>,\n nylasSchedulerConfigConnector: NylasSchedulerConfigConnector,\n ) => {\n const { groupEvent, configId, host } = event.detail;\n const response = await nylasSchedulerConfigConnector.schedulerConfig.importGroupEvent([groupEvent], configId);\n const [data, error] = response;\n if (!data && error) {\n host.setError({\n message: error.message || i18next.t('genericErrorTitle'),\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: i18next.t('nylasEditorTabsGroup.importGroupEventError'),\n });\n }\n if (data && data.import_failed && data.import_failed.length > 0) {\n const errorMessage = data.import_failed.map(failedEvent => failedEvent.reason).join('\\n');\n host.setError({\n message: errorMessage,\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: i18next.t('nylasEditorTabsGroup.importGroupEventError'),\n });\n setTimeout(() => {\n host.resetError();\n }, 5000);\n }\n },\n saveGroupEventChangesError: async (\n event: CustomEvent<{\n error: string;\n configId: string;\n host: HTMLNylasEditorTabsGroupElement;\n }>,\n _nylasSchedulerConfigConnector: NylasSchedulerConfigConnector,\n ) => {\n const { error, host } = event.detail;\n debug('[nylas-editor-tabs-group]', 'saveGroupEventChangesError', error, host);\n },\n },\n localPropsToProp: new Map([\n ['schedulerPreviewLink', 'schedulerPreviewLink'],\n ['enableUserFeedback', 'enableUserFeedback'],\n ['hideEditorTabs', 'hideEditorTabs'],\n ]),\n fireRegisterEvent: true,\n })\n render() {\n debug('[nylas-editor-tabs-group]', 'render', this.formState);\n // TODO: Remove this check when the feature is ready to be released\n // const showInDevelopmentTabs = localStorage.getItem('nylas') === 'Nylas Developer';\n\n return (\n <Host>\n <nylas-notification></nylas-notification>\n <form onSubmit={this.formSubmissionHandler} class=\"scheduler-editor\" ref={el => (this.formRef = el as HTMLFormElement)} noValidate>\n {this.mode === 'app' ? (\n <div class=\"return-to-calendar-view\" part=\"editor__return-to-calendar-view net__return-to-calendar-view\">\n <button-component\n id=\"return-to-calendar-view-button\"\n variant=\"invisible\"\n part=\"nset__header__back-button\"\n type=\"button\"\n onClick={e => {\n this.setActiveTab(e, TabGroup.CalendarView);\n }}\n >\n <chevron-icon width=\"16\" height=\"16\" />\n <span>{i18next.t('returnToCalendarView')}</span>\n </button-component>\n </div>\n ) : null}\n {this.mode === 'app' ? (\n <div class=\"form-contents\" part=\"editor__form-contents net__form-contents\">\n <div class=\"tabs\" part=\"editor__tabs net__tabs\">\n <button\n name={TabGroup.BookingOptions}\n class={{ tab: true, active: this.activeTab == TabGroup.BookingOptions, hide: this.hideTab(TabGroup.BookingOptions) }}\n part=\"editortab__booking-options net__tab-booking-options\"\n onClick={e => this.setActiveTab(e, TabGroup.BookingOptions)}\n >\n <flow-icon width=\"16\" height=\"16\" />\n {i18next.t('bookingOptionsTab')}\n </button>\n <button\n name={TabGroup.BookingForm}\n class={{ tab: true, active: this.activeTab == TabGroup.BookingForm, hide: this.hideTab(TabGroup.BookingForm) }}\n part=\"editortab__booking-form net__tab-booking-form\"\n onClick={e => this.setActiveTab(e, TabGroup.BookingForm)}\n >\n {this.activeTab == TabGroup.BookingForm ? <calendar-agenda-fill-icon width=\"16\" height=\"16\" /> : <calendar-agenda-icon width=\"16\" height=\"16\" />}\n {i18next.t('bookingFormTab')}\n </button>\n <button\n name={TabGroup.Communications}\n class={{ tab: true, active: this.activeTab == TabGroup.Communications, hide: this.hideTab(TabGroup.Communications) }}\n onClick={e => this.setActiveTab(e, TabGroup.Communications)}\n part=\"editortab__communications net__tab-communications\"\n >\n {this.activeTab == TabGroup.Communications ? <envelope-fill-icon width=\"16\" height=\"16\" /> : <envelope-icon width=\"16\" height=\"16\" />}\n {i18next.t('communicationsTab')}\n </button>\n <button\n name={TabGroup.PageStyles}\n class={{ tab: true, active: this.activeTab == TabGroup.PageStyles, hide: this.hideTab(TabGroup.PageStyles) }}\n onClick={e => this.setActiveTab(e, TabGroup.PageStyles)}\n part=\"editortab__page-styles net__tab-page-styles\"\n >\n {this.activeTab == TabGroup.PageStyles ? <paintbrush-fill-icon width=\"16\" height=\"16\" /> : <paintbrush-icon width=\"16\" height=\"16\" />}\n {i18next.t('pageStylesTab')}\n </button>\n </div>\n <div class=\"tab-content\" part=\"editor__tab-content net__tab-content\">\n <TabContentsGroup\n formState={this.formState}\n activeTab={this.activeTab}\n currentUser={this.currentUser}\n calendars={this.calendars}\n id={this.selectedConfiguration?.id ?? 'new'}\n i18next={i18next}\n />\n </div>\n </div>\n ) : (\n <div class=\"composable\" key={this.selectedConfiguration?.id}>\n <slot></slot>\n </div>\n )}\n\n <div class=\"footer\" part=\"editor__footer net__footer\">\n <div class=\"preview\" part=\"editor__footer-preview net__footer-preview\">\n {this.enableUserFeedback && (\n <button-component title=\"Share your feedback\" id=\"report-issue\" variant={'basic'} onClick={e => this.onFeedbackClick(e)}>\n <feedback-icon />\n </button-component>\n )}\n {this.activeTab === TabGroup.CalendarView && (\n <button-component\n class=\"page-settings-button\"\n title=\"Go to page settings\"\n id=\"page-settings\"\n variant={'basic'}\n onClick={e => this.setActiveTab(e, TabGroup.BookingOptions)}\n >\n {i18next.t('pageSettingsButton')}\n </button-component>\n )}\n </div>\n <div class=\"buttons\" part=\"editor__footer-buttons net__footer-buttons\">\n <p\n class={{\n 'unsaved-changes': this.hasUnsavedChanges && !this.changesSaved,\n 'saved-changes': this.changesSaved,\n 'error': this.error?.message !== '',\n 'error-full-width': this.error?.message !== '' && this.action === 'create',\n }}\n >\n {this.error?.message == '' && this.hasUnsavedChanges && !this.changesSaved && this.activeTab !== TabGroup.CalendarView\n ? i18next.t('unsavedChangesLabel')\n : this.error?.message == '' && this.changesSaved\n ? `${i18next.t('changesSavedLabel')}!`\n : ''}\n </p>\n <div class=\"footer-buttons__row\">\n {this.schedulerPreviewLink !== '' && this.action === 'edit' && (\n <button-component\n title=\"Preview\"\n type=\"button\"\n disabled={this.isLoading}\n clickHandler={event => {\n event.preventDefault();\n const previewEvent = this.previewButtonClicked.emit(this.host);\n if (!previewEvent.defaultPrevented) {\n window.open(parsePreviewLink(this.schedulerPreviewLink, this.selectedConfiguration), '_blank');\n }\n }}\n variant={'basic'}\n >\n <eye-icon />\n </button-component>\n )}\n <button-component\n type=\"button\"\n disabled={this.isLoading}\n clickHandler={event => {\n event.preventDefault();\n this.cancelButtonClick.emit();\n this.host.resetError();\n }}\n variant={'basic'}\n part=\"editor__footer-cancel net__footer-cancel\"\n >\n {i18next.t('cancelButton')}\n </button-component>\n <button-component class={{ 'save-changes': this.action === 'edit' }} type=\"submit\" disabled={this.isLoading} part=\"editor__footer-cta, net__footer-cta\">\n {!this.componentLoaded ? (\n <span>\n <loading-icon />{' '}\n </span>\n ) : this.isLoading ? (\n <span>\n {i18next.t('savingButtonText')}\n <loading-icon />{' '}\n </span>\n ) : this.action === 'create' ? (\n `${i18next.t('createButtonText')}`\n ) : (\n `${i18next.t('saveChangesButtonText')}`\n )}\n </button-component>\n </div>\n </div>\n </div>\n </form>\n {this.showFeedbackModal && <nylas-feedback-form></nylas-feedback-form>}\n </Host>\n );\n }\n}\n","@use '../../../common/styles/variables' as *;\n@use '../../../common/mixins/buttons' as *;\n\n:host {\n display: grid;\n grid-auto-flow: row;\n width: 100%;\n font-family: inherit;\n font-optical-sizing: auto;\n @include default-css-variables;\n}\n\n.header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 1rem;\n gap: 1rem;\n\n @media #{$mobile} {\n flex-direction: column;\n gap: 0.5rem;\n align-items: unset;\n }\n\n h2 {\n margin: 0;\n font-size: 1.25rem;\n color: var(--nylas-base-900);\n font-weight: 600;\n }\n\n p {\n margin: 0;\n font-size: 16px;\n color: var(--nylas-base-700);\n }\n\n .actions {\n justify-self: end;\n\n @media #{$mobile} {\n width: 100%;\n }\n }\n}\n\n.configurations {\n border: 1px solid var(--nylas-base-200);\n border-radius: var(--nylas-border-radius-2x);\n background: var(--nylas-base-0);\n height: 100%;\n display: flex;\n flex-direction: column;\n position: relative;\n overflow-y: hidden;\n\n .table-container {\n overflow-y: auto;\n flex: 1;\n\n @media #{$mobile} {\n min-height: 624px; // This is to ensure the dropdowns are not cut off\n }\n\n table {\n width: 100%;\n border-spacing: 0;\n border-collapse: collapse;\n font-family: inherit;\n height: max-content;\n\n &.no-configurations {\n height: 100%;\n }\n\n tr {\n color: var(--nylas-base-800);\n border-bottom: 1px solid var(--nylas-base-200);\n font-family: inherit;\n\n &.hide {\n display: none;\n }\n }\n\n th {\n font-weight: 600;\n text-transform: uppercase;\n font-size: 14px;\n line-height: 20px;\n }\n\n tr.no-configurations {\n td {\n > div {\n display: flex;\n height: 100%;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n\n padding: var(--nylas-border-radius-3x);\n\n h3 {\n margin: 0 0 1rem 0;\n color: var(--nylas-base-700);\n }\n\n p {\n margin: 0 0 1rem 0;\n color: var(--nylas-base-600);\n }\n\n calendar-icon {\n margin-bottom: 1rem;\n color: var(--nylas-base-200);\n }\n }\n }\n }\n\n th,\n td {\n text-align: left;\n padding: 1rem;\n font-family: inherit;\n }\n\n .actions {\n display: flex;\n justify-content: flex-end;\n gap: 1rem;\n text-align: right;\n button-component.edit-button {\n min-width: 98px;\n }\n @media #{$mobile} {\n flex-direction: column;\n gap: 0.5rem;\n }\n\n select-dropdown.last {\n &::part(sd_dropdown-content) {\n bottom: 54px;\n }\n }\n }\n\n .title {\n width: 100%;\n max-width: 300px;\n\n @media #{$mobile} {\n max-width: 96px;\n }\n\n div {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n\n &.config-event-title {\n font-weight: 600;\n }\n\n &.config-event-description {\n font-size: 0.75rem;\n }\n }\n }\n }\n }\n\n .pagination {\n padding: 1rem;\n position: sticky;\n top: 100%;\n display: flex;\n justify-content: flex-end;\n gap: 0.5rem;\n background: var(--nylas-base-0);\n width: calc(100% - 2rem);\n z-index: 2;\n\n td.arrows {\n display: flex;\n justify-content: flex-end;\n gap: 0.5rem;\n }\n\n button {\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n height: 3vh;\n width: 3vh;\n min-width: 3em;\n min-height: 3em;\n cursor: pointer;\n border-radius: var(--nylas-border-radius-2x);\n border: 1px solid var(--nylas-base-300);\n\n background-color: transparent;\n color: var(--nylas-base-800);\n cursor: pointer;\n\n &:hover:not(:disabled) {\n border: 1px solid var(--nylas-primary);\n }\n\n &:active {\n border: 1px solid var(--nylas-base-800);\n }\n\n &:disabled {\n border: 1px solid var(--nylas-base-100);\n background-color: transparent;\n color: var(--nylas-base-300);\n cursor: not-allowed;\n }\n\n &.right {\n transform: rotate(180deg);\n }\n }\n }\n}\n\n.error-container {\n margin-top: 1.5rem;\n\n .error {\n color: var(--nylas-error);\n padding: 0.5rem 0;\n margin: 1rem 0 0;\n }\n}\n\nbutton-component#copy {\n button {\n width: 108px;\n }\n}\n\nselect-dropdown {\n width: auto;\n color: inherit;\n}\n\nselect-dropdown::part(sd_dropdown-button) {\n display: block;\n height: 48px;\n padding: 0px 16px 8px;\n\n @media #{$mobile} {\n width: 92px;\n }\n}\n\nselect-dropdown::part(sd_dropdown-content) {\n width: 120px;\n right: 0;\n}\n\nselect-dropdown::part(sd_dropdown-labelhtml) {\n display: flex;\n gap: 0.5rem;\n align-items: center;\n color: var(--nylas-base-900);\n\n &:hover {\n color: var(--nylas-primary);\n }\n}\n\n.card-wrapper {\n position: absolute;\n top: 0;\n left: 0;\n height: calc(100% + 4rem);\n width: -webkit-fill-available;\n width: -moz-available;\n width: fill-available;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n background: rgba(0, 0, 0, 0.6);\n z-index: 2;\n\n border-radius: var(--nylas-border-radius-2x);\n\n @media #{$mobile} {\n justify-content: start;\n height: 100%;\n }\n}\n\n.card-modal {\n background: var(--nylas-base-0);\n display: flex;\n flex-direction: column;\n font-family: var(--nylas-font-family);\n background-color: var(--nylas-base-0);\n color: var(--nylas-base-900);\n border-radius: var(--nylas-border-radius-3x);\n padding: 32px;\n width: 562px;\n\n box-shadow:\n 0px 1px 4px rgba(0, 0, 0, 0.1),\n 0px 3px 6px rgba(0, 0, 0, 0.06);\n\n @media #{$mobile} {\n width: auto;\n border-radius: 0px;\n }\n}\n\n.description {\n &.title-desc {\n margin-bottom: 2rem;\n }\n\n p {\n margin: 0;\n font-size: 18px;\n color: var(--nylas-base-600);\n }\n}\n\n.footer {\n margin-top: 1rem;\n padding-top: 1rem;\n display: flex;\n justify-content: flex-end;\n gap: 0.5rem;\n box-sizing: border-box;\n background-color: var(--nylas-base-25);\n width: 100%;\n border-radius: 0 0 var(--nylas-border-radius-2x) var(--nylas-border-radius-2x);\n}\n\n.close-button {\n width: 100%;\n display: flex;\n justify-content: flex-end;\n\n button-component {\n button {\n padding: 0;\n height: auto;\n\n &:hover {\n background-color: transparent !important;\n }\n }\n }\n}\n\nbutton-component {\n --dot-color: var(--nylas-base-700);\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { debug, getCalendarRange, parsePreviewLink } from '@/utils/utils';\nimport { Component, Element, Event, EventEmitter, Host, Listen, Method, Prop, State, Watch, h } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\nimport { Configuration, GroupConfiguration, Notification, NotificationType, ThemeConfig } from '@nylas/core';\nimport i18next from '@/utils/i18n';\nimport { CONFIGURATION_EVENT_TYPE, LANGUAGE_CODE } from '@/common/constants';\nimport { ErrorCategory } from '@/types/index';\n\n/**\n * The `nylas-list-configurations` component displays a list of scheduling pages.\n *\n * @part nlc__create-new-cta - The create new configuration CTA.\n */\n@Component({\n tag: 'nylas-list-configurations',\n styleUrl: 'nylas-list-configurations.scss',\n shadow: true,\n})\nexport class NylasListConfigurations {\n /**\n * The host element.\n */\n @Element() host!: HTMLNylasListConfigurationsElement;\n\n /**\n * The list of configurations to display.\n */\n @Prop() configurations: (Configuration | GroupConfiguration)[] = [];\n\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: LANGUAGE_CODE;\n\n /**\n * The scheduler preview link to use when the user clicks on the preview button.\n * You can use a placeholder `{config.id}` to replace the configuration id anywhere in the link.\n */\n @Prop({ attribute: 'scheduler-preview-link' }) schedulerPreviewLink: string = '';\n\n /**\n * The next cursor for list configurations, if any.\n */\n @Prop() listConfigurationsNextCursor?: string | null;\n\n /**\n * @standalone\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: ThemeConfig;\n\n /**\n * Event emitted when the component is initialized.\n */\n @Event() initListConfigurations!: EventEmitter<{\n host: HTMLNylasListConfigurationsElement;\n cursor?: string;\n }>;\n\n /**\n * Event emitted when the user clicks the create event button.\n */\n @Event() createButtonClick!: EventEmitter<HTMLNylasListConfigurationsElement>;\n\n /**\n * Event emitted when the user clicks the edit event button.\n */\n @Event() editButtonClick!: EventEmitter<{\n host: HTMLNylasListConfigurationsElement;\n configuration: Configuration | GroupConfiguration;\n }>;\n\n /**\n * Event emitted when the user clicks the delete event button.\n */\n @Event() deleteButtonClick!: EventEmitter<{\n host: HTMLNylasListConfigurationsElement;\n configuration: Configuration | GroupConfiguration;\n }>;\n\n /**\n * This event is fired when there is an error in the component.\n */\n @Event({ cancelable: false }) readonly nylasSchedulerError!: EventEmitter<{ notification: Notification; host: HTMLElement }>;\n\n /**\n * Event emitted when the user dismisses the error notification.\n */\n @Event({ cancelable: false }) dismissNotification!: EventEmitter<{ id: string; host: HTMLNylasListConfigurationsElement }>;\n\n /**\n * The current state of the component.\n */\n @State() private state: 'loading' | 'loaded' | 'error' = 'loading';\n\n /**\n * The error message to display.\n */\n @State() error?: {\n message: string;\n type: NotificationType | undefined;\n category: ErrorCategory | undefined;\n title: string;\n } = {\n message: '',\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: '',\n };\n\n /**\n * Current cursor for list configurations\n */\n @State() currentCursor: string | null = null;\n\n /**\n * The list of previous cursors for list configurations\n */\n @State() previousCursors: string[] = [];\n\n /**\n * State to identiy if the next button should be disabled\n */\n @State() disableNextPageButton: boolean = false;\n\n /**\n * State to store the configuration id to delete and to show the delete confirmation modal\n */\n @State() deleteConfigurationId: string = '';\n\n /**\n * State to show Delete button loading state\n */\n @State() showDeleteButtonLoading: boolean = false;\n\n /**\n * State to show Edit button loading state\n */\n @State() editButtonLoadingId: string = '';\n\n @Watch('listConfigurationsNextCursor')\n listConfigurationsNextCursorChangedHandler(newVal: string | null, oldVal: string | null) {\n if (!newVal || newVal === oldVal) {\n if (newVal === null) {\n this.disableNextPageButton = true;\n }\n return;\n }\n this.disableNextPageButton = false;\n this.currentCursor = newVal;\n }\n\n @Watch('selectedLanguage')\n selectedLanguageChangedHandler(newVal: LANGUAGE_CODE, oldVal: LANGUAGE_CODE) {\n if (newVal === oldVal) return;\n i18next.changeLanguage(newVal);\n }\n\n @Watch('themeConfig')\n themeConfigChangedHandler(newVal: ThemeConfig, oldVal: ThemeConfig) {\n if (newVal === oldVal) return;\n this.applyThemeConfig(newVal);\n }\n\n connectedCallback() {\n debug('[nylas-list-configurations]', 'connectedCallback');\n // Use queueMicrotask to defer theme application until after React has set props.\n // This fixes the timing issue where connectedCallback fires before React sets themeConfig.\n queueMicrotask(() => {\n if (this.themeConfig) {\n this.applyThemeConfig(this.themeConfig);\n this.host.setAttribute('data-themed', '');\n }\n });\n }\n\n componentWillLoad() {\n debug('[nylas-list-configurations]', 'componentWillLoad');\n\n // If we have configurations, we will set the state to loaded.\n if (this.configurations && this.configurations.length > 0) {\n this.state = 'loaded';\n }\n }\n\n componentDidLoad() {\n debug('[nylas-list-configurations]', 'componentDidLoad');\n\n // Fire the init event. By default, we will fetch the configurations.\n // This is defined in the eventToProps object in the RegisterComponent decorator.\n this.initListConfigurations.emit({\n host: this.host,\n });\n }\n\n disconnectedCallback() {\n debug('[nylas-list-configurations]', 'disconnectedCallback');\n }\n\n applyThemeConfig(themeConfig?: ThemeConfig) {\n if (themeConfig) {\n for (const [key, value] of Object.entries(themeConfig)) {\n this.host.style.setProperty(`${key}`, value);\n }\n }\n }\n\n @Listen('nylasFormDropdownChanged')\n async handleNylasFormDropdownChanged(event: CustomEvent) {\n debug('[nylas-list-configurations]', 'handleNylasFormDropdownChanged', event.detail);\n const { value } = event.detail;\n const [action, index] = value.split('-');\n event.preventDefault();\n switch (action) {\n case 'delete':\n this.deleteConfigurationId = this.configurations[index]?.id;\n break;\n case 'preview':\n window.open(parsePreviewLink(this.schedulerPreviewLink, this.configurations[index]), '_blank');\n break;\n case 'copy':\n await navigator.clipboard.writeText(parsePreviewLink(this.schedulerPreviewLink, this.configurations[index]));\n break;\n default:\n break;\n }\n }\n\n @Method()\n async registerCallback() {\n // Fire the init event. By default, we will fetch the configurations.\n // This is defined in the eventToProps object in the RegisterComponent decorator.\n this.initListConfigurations.emit({\n host: this.host,\n });\n }\n\n @Method()\n async getState() {\n return this.state;\n }\n\n @Method()\n async setState(state: 'loading' | 'loaded' | 'error') {\n this.state = state;\n }\n\n @Method()\n async setError(error: { message: string; type: NotificationType; category: ErrorCategory; title: string }) {\n this.error = {\n message: error.message,\n type: error.type,\n category: error.category,\n title: error.title || i18next.t('genericErrorTitle'),\n };\n if (this.error?.message) {\n this.showErrorNotification(this.error);\n }\n }\n\n @Method()\n async hideDeleteConfirmation() {\n this.deleteConfigurationId = '';\n this.showDeleteButtonLoading = false;\n }\n\n @Method()\n async hideEditButtonLoading() {\n this.editButtonLoadingId = '';\n }\n\n showErrorNotification(error: { message: string; type: NotificationType | undefined; category: ErrorCategory | undefined; title: string }) {\n this.nylasSchedulerError.emit({\n notification: {\n id: error.message.split(' ').join('-'),\n type: error.type || NotificationType.Error,\n title: error.title,\n category: error.category || ErrorCategory.Component,\n description: error.message,\n ttl: 'none',\n } as Notification,\n host: this.host,\n });\n }\n\n closeModal(e: Event) {\n e.preventDefault();\n this.deleteConfigurationId = '';\n }\n\n handleConfirmDeleteButtonClicked(e: Event) {\n e.preventDefault();\n this.showDeleteButtonLoading = true;\n const config = this.configurations.find(config => config.id === this.deleteConfigurationId);\n if (config && config?.id) {\n this.deleteButtonClick.emit({ host: this.host, configuration: config });\n }\n }\n\n private getDurationString(duration: number) {\n if (!duration) return '—';\n const hours = Math.floor(duration / 60);\n const minutes = duration % 60;\n return `${hours ? hours : ''} ${hours ? `${hours > 1 ? 'hours' : 'hour'}` : ''} ${minutes ? minutes : ''} ${minutes ? `${minutes > 1 ? 'mins' : 'min'}` : ''}`;\n }\n\n getActionLabelHTML(action: string) {\n const actionStyle = {\n display: 'inline-flex',\n alignItems: 'center',\n gap: '0.5rem',\n };\n const dangerStyle = {\n color: 'var(--nylas-error)',\n };\n switch (action) {\n case 'preview':\n return (\n <span style={actionStyle}>\n <eye-icon width=\"16\" height=\"16\"></eye-icon>\n {i18next.t('nylasListConfigurations.previewButtonText')}\n </span>\n );\n case 'copy':\n return (\n <span style={actionStyle}>\n <copy-icon width=\"16\" height=\"16\" />\n {i18next.t('nylasListConfigurations.copyLinkButtonText')}\n </span>\n );\n case 'delete':\n return (\n <span style={{ ...actionStyle, ...dangerStyle }}>\n <delete-icon width=\"15\" height=\"17\"></delete-icon>\n {i18next.t('nylasListConfigurations.deleteButtonText')}\n </span>\n );\n default:\n return '';\n }\n }\n\n previousPageClickedHandler() {\n if (this.previousCursors.length === 0) return;\n\n this.currentCursor = this.previousCursors.pop() || null;\n const prevCursor = this.previousCursors[this.previousCursors.length - 1] || undefined;\n this.initListConfigurations.emit({\n host: this.host,\n cursor: prevCursor,\n });\n }\n\n nextPageClickedHandler() {\n if (!this.currentCursor) return;\n\n this.previousCursors = [...this.previousCursors, this.currentCursor];\n this.initListConfigurations.emit({\n host: this.host,\n cursor: this.currentCursor,\n });\n }\n\n @RegisterComponent<NylasListConfigurations, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-list-configurations',\n stateToProps: new Map([\n ['schedulerConfig.configurations', 'configurations'],\n ['schedulerConfig.listConfigurationsNextCursor', 'listConfigurationsNextCursor'],\n ['schedulerConfig.selectedLanguage', 'selectedLanguage'],\n ['schedulerConfig.themeConfig', 'themeConfig'],\n ]),\n localPropsToProp: new Map([['schedulerPreviewLink', 'schedulerPreviewLink']]),\n eventToProps: {\n initListConfigurations: async (event, connector) => {\n const { host, cursor } = event.detail;\n await host.setState('loading');\n const [data, error] = await connector.schedulerConfig.getConfigurations(cursor);\n if (!data && error && error.message) {\n await host.setState('error');\n await host.setError({\n message: error.message,\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: i18next.t('nylasEditorTabs.getConfigsError'),\n });\n return;\n }\n await host.setState('loaded');\n // setCursor here\n },\n createButtonClick: async (_, connector) => {\n connector.schedulerConfigStore.resetSelectedConfiguration();\n const enabledEventTypes = Object.entries(connector.schedulerConfigStore.state.enableEventTypes || {}).filter(([_key, value]) => value);\n if (enabledEventTypes.length === 1) {\n connector.schedulerConfigStore.state.action = 'create';\n connector.schedulerConfigStore.state.selectedEventType = CONFIGURATION_EVENT_TYPE[enabledEventTypes[0][0]];\n } else {\n connector.schedulerConfigStore.state.action = 'create-select';\n }\n },\n deleteButtonClick: async (event, connector) => {\n const { host, configuration } = event.detail;\n const [data, error] = await connector.schedulerConfig.deleteConfiguration(configuration.id);\n if (!data && error && error.message) {\n await host.setState('error');\n await host.setError({\n message: error.message,\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: i18next.t('nylasEditorTabs.deleteConfigError'),\n });\n }\n await host.hideDeleteConfirmation();\n },\n editButtonClick: async (event, connector) => {\n const { host, configuration } = event.detail;\n if (configuration.type === 'group') {\n const { startTime, endTime } = getCalendarRange(new Date().toISOString(), 'week');\n connector.schedulerConfigStore.state.calendarViewDateRange = {\n start_time: startTime.toString(),\n end_time: endTime.toString(),\n };\n const [data, error] = await connector.schedulerConfig.getGroupEvents(configuration.id, configuration);\n if (!data && error && error.message) {\n // handle error\n await host.setError({\n message: error.message,\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: i18next.t('nylasEditorTabsGroup.getGroupEventsError'),\n });\n host.hideEditButtonLoading();\n return;\n }\n }\n connector.schedulerConfigStore.state.action = 'edit';\n connector.schedulerConfigStore.state.selectedConfiguration = configuration;\n host.hideEditButtonLoading();\n },\n },\n fireRegisterEvent: true,\n })\n render() {\n return (\n <Host>\n <nylas-notification></nylas-notification>\n <div class=\"header\">\n <div class=\"description\">\n <h2>{i18next.t('allSchedulingPages')}</h2>\n <p>{i18next.t('createAndManageSchedulingPages')}</p>\n </div>\n {this.configurations && this.configurations.length > 0 && (\n <div class=\"actions\">\n <button-component\n part=\"nlc__create-new-cta\"\n clickHandler={() => {\n this.createButtonClick.emit(this.host);\n }}\n >\n {i18next.t('createNewSchedulingPageButtonText')}\n </button-component>\n </div>\n )}\n </div>\n <div class=\"configurations\">\n <div class=\"table-container\">\n <table\n class={{\n 'no-configurations': this.state !== 'loading' && (!this.configurations || this.configurations.length === 0),\n }}\n >\n <tr\n class={{\n hide: this.state === 'loading' || (this.configurations && this.configurations.length === 0),\n }}\n >\n <th>{i18next.t('pageTitle')}</th>\n <th>{i18next.t('durationTitle')}</th>\n <th></th>\n </tr>\n {this.state === 'loading' && (\n <tr class=\"no-configurations\">\n <td colSpan={3}>\n <div>\n <h3>{i18next.t('loading')}...</h3>\n <p>{i18next.t('loadingPagesDescription')}</p>\n </div>\n </td>\n </tr>\n )}\n {this.state !== 'loading' && (!this.configurations || this.configurations.length === 0) && (\n <tr class=\"no-configurations\">\n <td colSpan={3}>\n <div>\n <calendar-icon width=\"48\" height=\"48\"></calendar-icon>\n <h3>{i18next.t('noSchedulingPages')}</h3>\n <p>{i18next.t('createFirstSchedulingPage')}</p>\n <button-component\n part=\"nlc__create-new-cta\"\n clickHandler={() => {\n this.createButtonClick.emit(this.host);\n }}\n >\n {i18next.t('createNewSchedulingPageButtonText')}\n </button-component>\n </div>\n </td>\n </tr>\n )}\n {this.state !== 'loading' &&\n this.configurations?.map((config, i) => {\n const lastTwo = (i === this.configurations.length - 1 || i === this.configurations.length - 2) && this.configurations.length > 3;\n const groupConfig = config as GroupConfiguration;\n const regularConfig = config as Configuration;\n return (\n <tr key={config?.id}>\n <td>\n <div class=\"title\">\n <div class=\"config-event-title\" title={regularConfig?.event_booking?.title}>\n {regularConfig?.event_booking?.title || groupConfig?.name}\n </div>\n <div class={'config-event-description'}>{regularConfig?.event_booking?.description}</div>\n </div>\n </td>\n <td>\n <div class=\"duration\">{this.getDurationString(regularConfig?.availability?.duration_minutes)}</div>\n </td>\n <td>\n <div class=\"actions\">\n <button-component\n class=\"edit-button\"\n variant={'basic'}\n key={`edit-${i}`}\n disabled={this.editButtonLoadingId === `edit-${i}`}\n isLoading={this.editButtonLoadingId === `edit-${i}`}\n clickHandler={event => {\n event.preventDefault();\n this.editButtonLoadingId = `edit-${i}`;\n this.editButtonClick.emit({ host: this.host, configuration: config });\n }}\n >\n {this.editButtonLoadingId === `edit-${i}` ? null : <edit-icon width=\"16\" height=\"16\"></edit-icon>}\n {i18next.t('editSchedulingPageButtonText')}\n </button-component>\n <select-dropdown\n class={{\n last: lastTwo,\n }}\n name=\"actions\"\n options={[\n { value: `preview-${i}`, label: 'Preview', labelHTML: this.getActionLabelHTML('preview') },\n { value: `copy-${i}`, label: 'Copy link', labelHTML: this.getActionLabelHTML('copy') },\n { value: `delete-${i}`, label: 'Delete', labelHTML: this.getActionLabelHTML('delete') },\n ]}\n defaultSelectedOption={{ value: '', label: '' }}\n dropdownButtonText=\"...\"\n withSearch={false}\n withChevron={false}\n themeConfig={this.themeConfig}\n exportparts=\"sd_dropdown: actions__dropdown, sd_dropdown-button: actions__dropdown-button, sd_dropdown-content: actions__dropdown-content, actions-Copy, actions-Preview, actions-Delete\"\n ></select-dropdown>\n </div>\n </td>\n </tr>\n );\n })}\n </table>\n </div>\n <div class=\"pagination\">\n <button class=\"arrow left\" onClick={() => this.previousPageClickedHandler()} disabled={this.previousCursors.length <= 0}>\n <chevron-icon />\n </button>\n <button class=\"arrow right\" onClick={() => this.nextPageClickedHandler()} disabled={this.disableNextPageButton}>\n <chevron-icon />\n </button>\n </div>\n </div>\n {!!this.deleteConfigurationId && (\n <div class=\"card-wrapper\">\n <div class=\"card-modal\">\n <div class=\"close-button\">\n <button-component tooltip=\"Close\" id=\"close\" variant={'invisible'} onClick={e => this.closeModal(e)} part=\"nfbf__close-button\">\n <close-icon />\n </button-component>\n </div>\n <div class=\"header\">\n <h2 slot=\"card-title\" part=\"nfbf__title\">\n {i18next.t('deleteSchedulingPageTitle')}\n </h2>\n </div>\n <div class=\"description title-desc\">\n <p>{i18next.t('deleteSchedulingPageDescription')}</p>\n </div>\n <div\n class={{\n footer: true,\n }}\n >\n <button-component variant={'basic'} onClick={e => this.closeModal(e)} part=\"nfbf__button-outline nfbf__cancel-cta\">\n {`${i18next.t('deleteSchedulingPageCancelButton')}`}\n </button-component>\n <button-component\n variant={'destructive'}\n onClick={e => this.handleConfirmDeleteButtonClicked(e)}\n disabled={this.showDeleteButtonLoading}\n isLoading={this.showDeleteButtonLoading}\n part=\"nfbf__button-outline nfbf__reschedule-cta\"\n >\n {`${i18next.t('deleteSchedulingPageConfirmButton')}`}\n </button-component>\n </div>\n </div>\n </div>\n )}\n </Host>\n );\n }\n}\n","@use '../../../common/styles/variables' as *;\n@use '../../../common/mixins/buttons' as *;\n\n:host {\n display: block;\n @include default-css-variables;\n width: inherit;\n}\n\n.nylas-select-event-type {\n height: inherit;\n overflow-y: auto;\n\n div.header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n border-bottom: 1px solid var(--nylas-base-200);\n\n h2 {\n font-size: 18px;\n padding: 0 24px;\n line-height: 24px;\n margin: 0;\n font-weight: 600;\n color: var(--nylas-base-800);\n }\n\n button-component {\n button {\n @include invisible-button;\n }\n }\n }\n\n div.content {\n padding: 40px;\n\n h3 {\n margin: 0 0 32px 0;\n font-size: 18px;\n line-height: 24px;\n font-weight: 600;\n }\n\n div.event-type {\n display: flex;\n flex-direction: column;\n gap: 8px;\n\n div.event-type-option {\n padding: 16px;\n border: 1px solid var(--nylas-base-200);\n border-radius: var(--nylas-border-radius-3x);\n width: inherit;\n cursor: pointer;\n display: flex;\n flex-direction: column;\n gap: 8px;\n\n h4 {\n margin: 0;\n font-size: 16px;\n line-height: 24px;\n font-weight: 600;\n color: var(--nylas-base-900);\n }\n\n p {\n margin: 0;\n font-size: 14px;\n line-height: 21px;\n font-weight: 400;\n color: var(--nylas-base-800);\n }\n }\n }\n }\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { debug } from '@/utils/utils';\nimport { Component, Element, Event, EventEmitter, Host, Prop, Watch, h } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\nimport i18next from '@/utils/i18n';\nimport { CONFIGURATION_EVENT_TYPE, LANGUAGE_CODE } from '@/common/constants';\nimport { AdditionalParticipant, EnableEventTypes, ThemeConfig } from '@nylas/core';\n\n/**\n * The `nylas-select-event-type` component is a UI component that allows users to select the event type for the scheduler configuration.\n */\n@Component({\n tag: 'nylas-select-event-type',\n styleUrl: 'nylas-select-event-type.scss',\n shadow: true,\n})\nexport class NylasSelectEventType {\n @Element() host!: HTMLNylasSelectEventTypeElement;\n\n /**\n * @standalone\n * The participant options passed in the additionalParticipants prop\n * from the nylas-scheduler-editor component.\n */\n @Prop() participantOptions?: AdditionalParticipant[];\n\n /**\n * @standalone\n * The name of the component\n */\n @Prop() name: string = 'select-event-type';\n\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: LANGUAGE_CODE;\n\n /**\n * The enable event types.\n */\n @Prop() enableEventTypes?: EnableEventTypes = {\n one_on_one: true,\n collective: true,\n max_fairness: true,\n max_availability: true,\n group: true,\n };\n /**\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: ThemeConfig;\n\n /**\n * This event is fired when the return to all scheduling pages button is clicked.\n */\n @Event() returnToAllSchedulingPagesEvent!: EventEmitter<void>;\n\n /**\n * This event is fired when the event type is selected.\n */\n @Event() createEventTypeSelected!: EventEmitter<{ eventType: CONFIGURATION_EVENT_TYPE }>;\n\n // Lifecycle methods\n connectedCallback() {\n debug('nylas-select-event-type', 'connectedCallback');\n // Use queueMicrotask to defer theme application until after React has set props.\n // This fixes the timing issue where connectedCallback fires before React sets themeConfig.\n queueMicrotask(() => {\n if (this.themeConfig) {\n this.applyThemeConfig(this.themeConfig);\n this.host.setAttribute('data-themed', '');\n }\n });\n }\n\n disconnectedCallback() {\n debug('nylas-select-event-type', 'disconnectedCallback');\n }\n\n componentWillLoad() {\n debug('nylas-select-event-type', 'componentWillLoad');\n // See comment in the @Watch('name') decorator for more information.\n this.host.setAttribute('name', this.name);\n }\n\n componentDidLoad() {\n debug('nylas-select-event-type', 'componentDidLoad');\n }\n\n /**\n * When a name prop is passed, stencil does not automatically set the name attribute on the host element.\n * Since this component is form-associated, the name attribute is required for form submission.\n * This is a workaround to ensure that the name attribute is set on the host element.\n */\n @Watch('name')\n elementNameChangedHandler(newValue: string) {\n debug('nylas-select-event-type', 'elementNameChangedHandler', newValue);\n this.host.setAttribute('name', newValue);\n }\n\n @Watch('selectedLanguage')\n selectedLanguageChangedHandler(newVal: LANGUAGE_CODE, oldVal: LANGUAGE_CODE) {\n if (newVal === oldVal) return;\n i18next.changeLanguage(newVal);\n }\n\n @Watch('themeConfig')\n themeConfigChangedHandler(newVal: ThemeConfig, oldVal: ThemeConfig) {\n if (newVal === oldVal) return;\n this.applyThemeConfig(newVal);\n }\n\n applyThemeConfig(themeConfig?: ThemeConfig) {\n if (themeConfig) {\n for (const [key, value] of Object.entries(themeConfig)) {\n this.host.style.setProperty(`${key}`, value);\n }\n }\n }\n\n @RegisterComponent<NylasSelectEventType, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-select-event-type',\n stateToProps: new Map([\n ['schedulerConfig.selectedLanguage', 'selectedLanguage'],\n ['schedulerConfig.additionalParticipants', 'participantOptions'],\n ['schedulerConfig.enableEventTypes', 'enableEventTypes'],\n ['schedulerConfig.themeConfig', 'themeConfig'],\n ]),\n eventToProps: {\n returnToAllSchedulingPagesEvent: async (_event: CustomEvent<void>, connector: NylasSchedulerConfigConnector) => {\n connector.schedulerConfigStore.state.action = null;\n connector.schedulerConfigStore.set('selectedEventType', undefined);\n },\n createEventTypeSelected: async (event: CustomEvent<{ eventType: CONFIGURATION_EVENT_TYPE }>, connector: NylasSchedulerConfigConnector) => {\n const { eventType } = event.detail;\n connector.schedulerConfigStore.state.action = 'create';\n connector.schedulerConfigStore.state.selectedEventType = eventType;\n },\n },\n fireRegisterEvent: true,\n })\n render() {\n interface EventTypeOption {\n label: string;\n value: CONFIGURATION_EVENT_TYPE;\n description: string;\n }\n\n const eventTypeKey = {\n 'one-on-one': 'one_on_one',\n 'collective': 'collective',\n 'max-fairness': 'max_fairness',\n 'max-availability': 'max_availability',\n 'group': 'group',\n };\n\n const allEventTypes: EventTypeOption[] = [\n {\n label: i18next.t('nylasSelectEventType.eventTypeOptions.oneOnOne.label'),\n value: CONFIGURATION_EVENT_TYPE.one_on_one,\n description: i18next.t('nylasSelectEventType.eventTypeOptions.oneOnOne.desc'),\n },\n {\n label: i18next.t('nylasSelectEventType.eventTypeOptions.collective.label'),\n value: CONFIGURATION_EVENT_TYPE.collective,\n description: i18next.t('nylasSelectEventType.eventTypeOptions.collective.desc'),\n },\n {\n label: i18next.t('nylasSelectEventType.eventTypeOptions.maxFairness.label'),\n value: CONFIGURATION_EVENT_TYPE.max_fairness,\n description: i18next.t('nylasSelectEventType.eventTypeOptions.maxFairness.desc'),\n },\n {\n label: i18next.t('nylasSelectEventType.eventTypeOptions.maxAvailability.label'),\n value: CONFIGURATION_EVENT_TYPE.max_availability,\n description: i18next.t('nylasSelectEventType.eventTypeOptions.maxAvailability.desc'),\n },\n {\n label: i18next.t('nylasSelectEventType.eventTypeOptions.group.label'),\n value: CONFIGURATION_EVENT_TYPE.group,\n description: i18next.t('nylasSelectEventType.eventTypeOptions.group.desc'),\n },\n ];\n const conditionalEventTypes = [CONFIGURATION_EVENT_TYPE.collective, CONFIGURATION_EVENT_TYPE.max_availability, CONFIGURATION_EVENT_TYPE.max_fairness];\n const hasAdditionalParticipants =\n this.participantOptions &&\n this.participantOptions?.length > 0 &&\n !!this.participantOptions[0].email &&\n !!this.participantOptions[0].name &&\n !!this.participantOptions[0].calendars &&\n this.participantOptions[0].calendars.length > 0;\n\n const eventTypes = this.enableEventTypes\n ? allEventTypes.filter(eventType => {\n const key = eventType.value;\n const keyType = eventTypeKey[key];\n debug('key', key, this.enableEventTypes ? this.enableEventTypes[keyType] : 'no enableEventTypes');\n if (conditionalEventTypes.includes(key) && !hasAdditionalParticipants) {\n return false;\n }\n return this.enableEventTypes && this.enableEventTypes[keyType];\n })\n : allEventTypes;\n return (\n <Host>\n <div class=\"nylas-select-event-type\" part=\"nset\">\n <div class=\"header\" part=\"nset__header\">\n <h2>{i18next.t('nylasSelectEventType.createEventHeaderTitle')}</h2>\n <button-component\n variant=\"invisible\"\n part=\"nset__header__back-button\"\n onClick={_event => {\n this.returnToAllSchedulingPagesEvent.emit();\n }}\n >\n <chevron-icon width=\"16\" height=\"16\" />\n <span>{i18next.t('nylasSelectEventType.returnToAllSchedulingPages')}</span>\n </button-component>\n </div>\n <div class=\"content\" part=\"nset__content\">\n <h3>{i18next.t('nylasSelectEventType.eventTypeHeaderTitle')}</h3>\n <div class=\"event-type\" part=\"nset__content__event-type\">\n {eventTypes.length === 0 && <p>{i18next.t('nylasSelectEventType.noEventTypesEnabled')}</p>}\n {eventTypes.map(eventType => (\n <div\n class=\"event-type-option\"\n onClick={_event => {\n this.createEventTypeSelected.emit({ eventType: eventType.value });\n }}\n part={`nset__content__event-type-option-${eventType.value}`}\n >\n <h4>{eventType.label}</h4>\n <p>{eventType.description}</p>\n </div>\n ))}\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"names":["iconCss","h","Fragment","NotificationType","ErrorCategory","debug","i18next","CONFIGURATION_EVENT_TYPE","DEFAULT_OPEN_HOURS","mergeDeep","Sentry.isInitialized","Sentry.init","version","Sentry.feedbackIntegration","editorTabComponentNames","Sentry.captureMessage","Sentry.captureFeedback","Host","parsePreviewLink","__decorate","RegisterComponent","editorGroupTabComponentNames","getCalendarRange"],"mappings":"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"}
1
+ {"version":3,"file":"google-logo-icon.microsoft-logo-icon.nylas-editor-tabs.nylas-editor-tabs-group.nylas-list-configurations.nylas-select-event-type.entry.cjs.js","sources":["src/common/icons/icon.css?tag=google-logo-icon&encapsulation=scoped","src/common/icons/google-logo.tsx","src/common/icons/icon.css?tag=microsoft-logo-icon&encapsulation=scoped","src/common/icons/microsoft-logo.tsx","src/components/scheduler-editor/nylas-editor-tabs/tab-contents.tsx","src/components/scheduler-editor/nylas-editor-tabs/nylas-editor-tabs.scss?tag=nylas-editor-tabs&encapsulation=scoped","src/components/scheduler-editor/nylas-editor-tabs/nylas-editor-tabs.tsx","src/components/scheduler-editor/nylas-editor-tabs-group/tab-contents-group.tsx","src/components/scheduler-editor/nylas-editor-tabs-group/nylas-editor-tabs-group.scss?tag=nylas-editor-tabs-group&encapsulation=scoped","src/components/scheduler-editor/nylas-editor-tabs-group/nylas-editor-tabs-group.tsx","src/components/scheduler-editor/nylas-list-configurations/nylas-list-configurations.scss?tag=nylas-list-configurations&encapsulation=shadow","src/components/scheduler-editor/nylas-list-configurations/nylas-list-configurations.tsx","src/components/scheduler-editor/nylas-select-event-type/nylas-select-event-type.scss?tag=nylas-select-event-type&encapsulation=shadow","src/components/scheduler-editor/nylas-select-event-type/nylas-select-event-type.tsx"],"sourcesContent":[":host {\n display: flex;\n}\n","import { Component, Prop, h } from '@stencil/core';\n\n@Component({\n tag: 'google-logo-icon',\n styleUrl: 'icon.css',\n scoped: true,\n})\nexport class GoogleLogoIcon {\n @Prop() width: string = '24';\n @Prop() height: string = '24';\n\n render() {\n // Spam icon svg\n return (\n <svg width={this.width} height={this.height} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_959_12452)\">\n <path\n d=\"M23.745 12.27C23.745 11.48 23.675 10.73 23.555 10H12.255V14.51H18.725C18.435 15.99 17.585 17.24 16.325 18.09V21.09H20.185C22.445 19 23.745 15.92 23.745 12.27Z\"\n fill=\"#4285F4\"\n />\n <path\n d=\"M12.255 24C15.495 24 18.205 22.92 20.185 21.09L16.325 18.09C15.245 18.81 13.875 19.25 12.255 19.25C9.12504 19.25 6.47505 17.14 5.52505 14.29H1.54504V17.38C3.51504 21.3 7.56504 24 12.255 24Z\"\n fill=\"#34A853\"\n />\n <path\n d=\"M5.52501 14.2901C5.27501 13.5701 5.145 12.8001 5.145 12.0001C5.145 11.2001 5.28501 10.4301 5.52501 9.71012V6.62012H1.545C0.725004 8.24012 0.255005 10.0601 0.255005 12.0001C0.255005 13.9401 0.725004 15.7601 1.545 17.3801L5.52501 14.2901Z\"\n fill=\"#FBBC05\"\n />\n <path\n d=\"M12.255 4.75C14.025 4.75 15.605 5.36 16.855 6.55L20.275 3.13C18.205 1.19 15.495 0 12.255 0C7.56504 0 3.51504 2.7 1.54504 6.62L5.52505 9.71C6.47505 6.86 9.12504 4.75 12.255 4.75Z\"\n fill=\"#EA4335\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_959_12452\">\n <rect width={24} height={24} fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n );\n }\n}\n",":host {\n display: flex;\n}\n","import { Component, Prop, h } from '@stencil/core';\n\n@Component({\n tag: 'microsoft-logo-icon',\n styleUrl: 'icon.css',\n scoped: true,\n})\nexport class MicrosoftLogoIcon {\n @Prop() width: string = '22';\n @Prop() height: string = '22';\n\n render() {\n // Spam icon svg\n return (\n <svg width={this.width} height={this.height} viewBox=\"0 0 22 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M0.043457 0.043457H10.4782V10.4782H0.043457V0.043457Z\" fill=\"#F35325\" />\n <path d=\"M11.5217 0.043457H21.9565V10.4782H11.5217V0.043457Z\" fill=\"#81BC06\" />\n <path d=\"M0.043457 11.5217H10.4782V21.9565H0.043457V11.5217Z\" fill=\"#05A6F0\" />\n <path d=\"M11.5217 11.5217H21.9565V21.9565H11.5217V11.5217Z\" fill=\"#FFBA08\" />\n </svg>\n );\n }\n}\n","import { Fragment, h } from '@stencil/core';\nimport { SchedulerEditorFormState } from './nylas-editor-tabs';\nimport { ThemeConfig } from '@nylas/core';\n\nexport enum Tab {\n EventInfo = 'eventInfo',\n Availability = 'availability',\n BookingOptions = 'bookingOptions',\n Communications = 'communications',\n Participants = 'participants',\n BookingForm = 'bookingForm',\n PageStyles = 'pageStyles',\n}\n\nexport type TabContentsProps = {\n id: string;\n formState: SchedulerEditorFormState;\n activeTab: Tab;\n calendars?: any[];\n currentUser?: any;\n i18next: any;\n enableNotetaker?: boolean;\n themeConfig?: ThemeConfig;\n};\n\nexport default function TabContents({ id, formState, activeTab, enableNotetaker, themeConfig }: TabContentsProps, children: any) {\n return (\n <Fragment>\n <div key={`event-info-${id}`} class={{ hide: activeTab !== Tab.EventInfo }}>\n <nylas-event-info>\n <div slot=\"inputs\">\n <nylas-event-title name=\"title\" themeConfig={themeConfig} exportparts=\"net, net__title, net__dropdown-content\" />\n <nylas-event-duration\n name=\"duration\"\n themeConfig={themeConfig}\n exportparts=\"ned, ned__error, ned__dropdown, ned__dropdown-button, ned__dropdown-content, ned__input_dropdown, ned__input_dropdown-input, ned__input_dropdown-content\"\n />\n <nylas-event-location name=\"location\" themeConfig={themeConfig} exportparts=\"nel, nel__location, nel__dropdown, nel__dropdown-button, nel__dropdown-content\" />\n <nylas-event-description name=\"description\" themeConfig={themeConfig} exportparts=\"nedesc, nedesc__textarea\" />\n </div>\n </nylas-event-info>\n {enableNotetaker && (\n <nylas-notetaker-config\n name=\"notetaker\"\n conferencing={formState.conferencing}\n themeConfig={themeConfig}\n exportparts=\"nntc, nntc__header, nntc__section, nntc__section-title, nntc__content, nntc__input, nntc__textarea, nntc__checkbox\"\n />\n )}\n </div>\n <div key={`availability-${id}`} class={{ hide: activeTab !== Tab.Availability }}>\n <nylas-participant-booking-calendars\n participants={formState.participants}\n name=\"participant-booking-calendars\"\n exportparts={'npbc, npbc__header, npbc__content, npbc__participant-container, npbc__participant-title'}\n />\n <nylas-connected-calendars\n participants={formState.participants}\n name=\"connected-calendars\"\n exportparts={'nccals, nccals__header, nccals__content, nccals__container, nccals__title, nccals__toggle-container, npbc__participant-toggle-container'}\n />\n <nylas-only-specific-time-availability\n onlySpecificTimeAvailability={formState.onlySpecificTimeAvailability}\n name=\"only-specific-time-availability\"\n exportparts={'osta, osta__header, osta__header-content, osta__header-title, osta__header-description, osta__toggle'}\n ></nylas-only-specific-time-availability>\n {formState.onlySpecificTimeAvailability ? null : (\n <nylas-availability-picker\n openHours={formState.availability?.openHours}\n name=\"availability\"\n themeConfig={themeConfig}\n exportparts={\n 'nap, nap__header, nap__select-timezone, nap__select-timezone-button, nap__select-timezone-dropdown-content, nap__availability, nap__day, nap__time-ranges, nap__time-range, nap__add-time-range, nap__time-picker-container, nap__time-picker-input, nap__time-picker-times'\n }\n />\n )}\n <nylas-specific-time-availability-picker\n specificTimesAvailability={formState.specificTimeAvailability}\n name=\"specific-time-availability\"\n themeConfig={themeConfig}\n exportparts={\n 'nstap, nstap__header, nstap__content, nstap__availability, nstap__day, nstap__time-ranges, nstap__time-range, nstap__add-time-range, nstap__time-picker-container, nstap__time-picker-input, nstap__time-picker-times'\n }\n />\n </div>\n <div key={`booking-options-${id}`} class={{ hide: activeTab !== Tab.BookingOptions }}>\n <nylas-scheduling-method\n name=\"availability-method\"\n readOnly={true}\n themeConfig={themeConfig}\n exportparts=\"nsm, nsm__header, nsm__input-label, nsm__dropdown, nsm__dropdown-button, nsm__dropdown-content\"\n />\n <nylas-custom-booking-flow exportparts={'ncbflow, ncbflow__header, ncbflow__title, ncbflow__content'}>\n <div slot=\"inputs\">\n <nylas-booking-confirmation-type\n name=\"confirmation-type\"\n themeConfig={themeConfig}\n exportparts={'nbct, nbct__header, nbct__dropdown, nbct__dropdown-button, nbct__dropdown-content'}\n />\n <nylas-booking-confirmation-redirect\n name=\"confirmation-redirect\"\n themeConfig={themeConfig}\n exportparts={'nbcr, nbcr__header, nbcr__dropdown, nbcr__dropdown-button, nbcr__dropdown-content, nbcr__input-textfield'}\n />\n </div>\n </nylas-custom-booking-flow>\n <nylas-buffer-time\n name=\"buffer-time\"\n themeConfig={themeConfig}\n exportparts={\n 'nbt, nbt__header, nbt__body, nbt__dropdown-before, nbt__dropdown-button-before, nbt__dropdown-content-before, nbt__dropdown-after, nbt__dropdown-button-after, nbt__dropdown-content-after, nbt__preview'\n }\n />\n <nylas-event-limits>\n <div slot=\"inputs\">\n <nylas-min-booking-notice\n name=\"min-booking-notice\"\n themeConfig={themeConfig}\n exportparts=\"nmbn, nmbn__number-dropdown, nmbn__number-dropdown-button, nmbn__number-dropdown-content, nmbn__period-dropdown, nmbn__period-dropdown-button, nmbn__period-dropdown-content\"\n />\n <nylas-limit-future-bookings\n name=\"limit-future-bookings\"\n themeConfig={themeConfig}\n exportparts=\"nlfb, nlfb__number-dropdown, nlfb__number-dropdown-button, nlfb__number-dropdown-content, nlfb__period-dropdown, nlfb__period-dropdown-button, nlfb__period-dropdown-content\"\n />\n <nylas-min-cancellation-notice\n name=\"min-cancellation-notice\"\n themeConfig={themeConfig}\n exportparts=\"nmcn, nmcn__number-dropdown, nmcn__number-dropdown-button, nmcn__number-dropdown-content, nmcn__period-dropdown, nmcn__period-dropdown-button, nmcn__period-dropdown-content\"\n />\n <nylas-cancellation-policy name=\"cancellation-policy\" exportparts=\"ncpolicy, ncpolicy__textarea\" />\n </div>\n </nylas-event-limits>\n <nylas-timeslot-interval\n name=\"timeslot-interval\"\n themeConfig={themeConfig}\n exportparts=\"nti, nti__header, nti__input-label, nti__dropdown, nti__dropdown-button, nti__dropdown-content\"\n />\n <nylas-customize-booking-settings\n name=\"customize-booking-settings\"\n themeConfig={themeConfig}\n exportparts=\"ncbs, ncbs__header, ncbs__settings, ncbs__settings-div, ncbs__additional_guests, ncbs__cancellation_options, ncbs__rescheduling_options\"\n />\n </div>\n <div key={`communications-${id}`} class={{ hide: activeTab !== Tab.Communications }}>\n <nylas-disable-emails name=\"disable-emails\" themeConfig={themeConfig} exportparts=\"nde, nde__toggle-label, nde_toggle-input, nde_toggle-slider\" />\n {!formState?.disableEmails && (\n <Fragment>\n <nylas-confirmation-email\n name=\"confirmation-email-template\"\n themeConfig={themeConfig}\n exportparts={\n 'nce, nce__tab-heading, nce__header, nce__body, nce__confirmation-email-toggle--container, nce__summary, nce__reminder-input_dropdown, nce__reminder-input_dropdown-input, nce__reminder-input_dropdown-content'\n }\n />\n <nylas-reminder-emails\n name=\"reminder-overrides\"\n themeConfig={themeConfig}\n exportparts={\n 'nre, nre__tab-heading, nre__header, nre__body, nre__confirmation-email-toggle--container, nre__summary, nrt, nrt__number-dropdown, nrt__number-dropdown-button, nrt__number-dropdown-content, nrt__period-dropdown, nrt__period-dropdown-button, nrt__period-dropdown-content, nrt__time-period-selector'\n }\n />\n </Fragment>\n )}\n </div>\n <div key={`participants-${id}`} class={{ hide: activeTab !== Tab.Participants }}>\n <nylas-additional-participants\n name=\"participants\"\n themeConfig={themeConfig}\n exportparts=\"nadtnlpart, nadtnlpart__title, nadtnlpart__subtitle, nadtnlpart__content, nadtnlpart__input_group, nadtnlpart__input_wrapper, nadtnlpart__input, nadtnlpart__remove-participant\"\n />\n <nylas-participants-custom-availability\n participants={formState.participants}\n name=\"participant-custom-availability\"\n themeConfig={themeConfig}\n exportparts=\"npca, npca__header, npca__content, npca__participant-container, npca__participant-title, npca__participant-toggle--container, npca__toggle-label, npca__toggle-input, npca__toggle-slider\"\n />\n </div>\n <div key={`page-styles-${id}`} class={{ hide: activeTab !== Tab.PageStyles }}>\n <nylas-custom-event-slug\n name=\"custom-event-slug\"\n themeConfig={themeConfig}\n exportparts=\"nces, nces__body, nces__header, nces__drawer-toggle--container, nces__input-textfield\"\n />\n <nylas-page-name name=\"page-name\" themeConfig={themeConfig} exportparts=\"npn, npn__body, npn__header, npn__drawer-toggle--container, npn__input-textfield\" />\n <nylas-page-styling\n name=\"page-styling\"\n themeConfig={themeConfig}\n exportparts=\"nps, nps__header, nps__drawer-toggle--container, nps__body, nps__title-input-textfield, nps__company-logo-input-textfield, nps__color-picker, nps__color-picker-button, nps__color-picker-button-label, nps__color-picker-selected-label, nps__submit-button-label-input-textfield, nps__message-textarea\"\n >\n {children}\n </nylas-page-styling>\n </div>\n <div key={`booking-form-${id}`} class={{ hide: activeTab !== Tab.BookingForm }}>\n <nylas-booking-form-config\n name=\"additional-fields\"\n themeConfig={themeConfig}\n exportparts=\"nbfc, nbfc__header, nbfc__add_field, nbfc__add_field-button, nbfc__add_field-content, nbfc__static_fields, nbfc__additional_fields, nbfc__form-field, nbfc__form-field-header, nbfc__form-field-content\"\n />\n </div>\n </Fragment>\n );\n}\n","@use '../../../common/styles/variables' as *;\n@use '../../../common/mixins/buttons' as *;\n\n:host {\n display: block;\n @include default-css-variables;\n}\n\n.scheduler-editor {\n display: flex;\n flex-direction: column;\n height: inherit;\n\n .form-contents {\n height: calc(100% - 80px);\n display: grid;\n grid-template-columns: minmax(224px, 25%) 1fr;\n\n @media #{$mobile} {\n display: table-column-group;\n height: auto;\n }\n\n .tabs {\n display: flex;\n flex-direction: column;\n border-right: 1px solid var(--nylas-base-200);\n background-color: var(--nylas-base-25);\n\n @media #{$mobile} {\n border-right: none;\n }\n\n .tab {\n display: flex;\n align-items: center;\n text-align: left;\n gap: 0.5rem;\n padding: 0.5rem 1rem;\n color: var(--nylas-base-900);\n background: var(--nylas-base-0);\n border: none;\n height: 56px;\n font-family: var(--nylas-font-family);\n font-size: 16px;\n font-weight: 500;\n line-height: 24px;\n cursor: pointer;\n\n &:not(:first-of-type) {\n margin-top: 0.25rem;\n }\n\n &:last-of-type {\n margin-bottom: 0.25rem;\n }\n\n &.active {\n font-weight: 600;\n background: var(--nylas-base-0);\n color: var(--nylas-primary);\n border-left: 4px solid var(--nylas-primary);\n box-shadow: 0px 1px 2px 0px #0000000f;\n box-shadow: 0px 1px 3px 0px #0000001a;\n }\n\n &.hide {\n display: none;\n }\n }\n }\n\n .tab-content {\n max-width: 692px;\n overflow-y: auto;\n overflow-x: hidden;\n transition: opacity 0.05s ease-in;\n opacity: 0; // This in conjunction with the fadeIn class is used to fade in the tab contents when the editor is loaded.\n &.fadeIn {\n opacity: 1;\n }\n .hide {\n display: none;\n }\n\n nylas-event-info,\n nylas-event-limits {\n width: inherit;\n\n div[slot='inputs'] {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n }\n }\n\n .tab-header {\n display: flex;\n flex-direction: column;\n margin: 1rem 1rem 0.5rem;\n row-gap: 4px;\n\n h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n line-height: 20px;\n color: var(--nylas-base-900);\n text-align: left;\n }\n\n p {\n margin: 0;\n font-size: 0.875rem;\n font-weight: 400;\n line-height: 20px;\n color: var(--nylas-base-600);\n text-align: left;\n }\n }\n }\n }\n}\n\n.footer {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 1rem;\n min-height: 80px;\n padding: 0 1rem;\n border-top: 1px solid var(--nylas-base-200);\n\n @media #{$mobile} {\n flex-direction: column;\n height: auto;\n }\n\n .preview {\n @media #{$mobile} {\n margin-top: 1rem;\n width: 100%;\n }\n }\n\n .buttons {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n justify-self: flex-end;\n gap: 1rem;\n\n @media #{$mobile} {\n flex-direction: column-reverse;\n width: 100%;\n }\n\n p {\n max-width: 524px;\n\n &.unsaved-changes {\n color: var(--nylas-base-600);\n }\n\n &.saved-changes {\n color: var(--nylas-success);\n }\n\n &.error {\n color: var(--nylas-error);\n }\n\n &.error-full-width {\n max-width: 660px;\n }\n }\n\n button-component {\n @media #{$mobile} {\n width: 100%;\n }\n }\n\n button {\n @include primary-button;\n width: 148px;\n\n span {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n }\n }\n\n button-component.save-changes {\n min-width: 140px;\n }\n }\n}\n\nbutton-component#report-issue {\n width: auto;\n}\n\nnylas-feedback-form {\n position: absolute;\n top: 0;\n height: 100%;\n width: 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n background: rgba(0, 0, 0, 0.6);\n z-index: 2;\n border-radius: inherit;\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { debug, mergeDeep, parsePreviewLink } from '@/utils/utils';\nimport {\n AdditionalFields,\n Appearance,\n AvailabilityMethod,\n BookingType,\n Calendar,\n Conference,\n Configuration,\n EmailTemplate,\n EventReminder,\n NotificationType,\n Notetaker,\n OpenHours,\n Participant,\n SpecificTimeAvailability,\n ThemeConfig,\n} from '@nylas/core';\nimport { Component, Element, Event, EventEmitter, Host, Listen, Method, Prop, State, Watch, h } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\nimport TabContents, { Tab } from './tab-contents';\nimport { User } from '@/common/nylas-api-request';\nimport { CONFIGURATION_EVENT_TYPE, DEFAULT_OPEN_HOURS, editorTabComponentNames } from '@/common/constants';\nimport { DataResponseReturnType } from '@/common/types';\nimport * as Sentry from '@sentry/browser';\nimport i18next from '@/utils/i18n';\nimport { LANGUAGE_CODE } from '@/common/constants';\nimport { ErrorCategory, Notification } from '@/types/index';\nimport { version } from '@/version';\n\nexport type SchedulerEventDetail = {\n config: Partial<Configuration>;\n action: 'create' | 'edit';\n host: HTMLNylasEditorTabsElement;\n resetLoadingState?: (e: CustomEvent) => void;\n};\n\nexport type SchedulerEditorFormState = Partial<{\n title: string;\n description: string;\n duration: string;\n availability?: {\n timezone: string;\n openHours?: OpenHours[];\n };\n specificTimeAvailability?: SpecificTimeAvailability[];\n onlySpecificTimeAvailability?: boolean;\n additionalFields?: Record<string, AdditionalFields>;\n calendarIds: string[];\n participantCalendars?: { [key: string]: string[] };\n participants?: Participant[];\n participantOpenHours?: { [key: string]: OpenHours[] };\n participantSpecificTimeAvailability?: { [key: string]: SpecificTimeAvailability[] };\n participantOnlySpecificTimeAvailability?: { [key: string]: boolean };\n participantBookingCalendars?: { [key: string]: string };\n bookingCalendar?: string;\n location?: string;\n conferencing?: Conference;\n bookingType?: string;\n buffer?: { before: number; after: number };\n cancellationPolicy?: string;\n availableDaysInFuture?: number;\n minCancellationNotice?: number;\n minBookingNotice?: number;\n timeslotInterval?: {\n interval?: number;\n roundTo?: number;\n };\n additionalGuestsHidden?: boolean;\n hideCancellationOptions?: boolean;\n hideReschedulingOptions?: boolean;\n reminders?: EventReminder[];\n emailTemplate?: EmailTemplate;\n redirectUrl?: string;\n availabilityMethod?: AvailabilityMethod;\n slug: string;\n appearance: Appearance;\n name: string;\n disableEmails?: boolean;\n organizerLocale?: string;\n notetaker?: Notetaker;\n}>;\n\n/**\n * The nylas-editor-tabs component provides the user interface for managing editor tabs within the scheduler editor.\n * It is primarily used to control the edit mode of the scheduler editor, and it is rendered automatically by the\n * parent component, nylas-scheduler-editor, during editing. There is no need to interact with this component directly\n * or set any props manually, as its behavior is fully managed by the parent component.\n *\n * @part nap__title - [nylas-additional-participants] The title of the component.\n * @part nap__subtitle - [nylas-additional-participants] The subtitle of the component.\n * @part nap__content - [nylas-additional-participants] The content of the component.\n * @part nap__input - [nylas-additional-participants] The input of the component.\n * @part nap__remove-participant - [nylas-additional-participants] The remove participant button of the component.\n * @part nap__add-participant - [nylas-additional-participants] The add participant button of the component.\n * @part nap__header - [nylas-availability-picker] The header of the availability picker\n * @part nap__select-timezone - [nylas-availability-picker] The timezone selection container\n * @part nap__select-timezone-button -[nylas-availability-picker] The timezone selection button\n * @part nap__select-timezone-dropdown-content -[nylas-availability-picker] The timezone selection dropdown content\n * @part nap__availability - [nylas-availability-picker] The availability container\n * @part nap__day - [nylas-availability-picker] The day container\n * @part nap__time-ranges - [nylas-availability-picker] The time ranges container\n * @part nap__time-range - [nylas-availability-picker] The time range container\n * @part nap__add-time-range - [nylas-availability-picker] The add time range button\n * @part nap__time-picker-container -[nylas-availability-picker] The time picker container\n * @part nap__time-picker-input - [nylas-availability-picker] The time picker input\n * @part nap__time-picker-times - [nylas-availability-picker] The time picker times\n * @part nbcp - [nylas-booking-calendar-picker] The booking calendar picker container\n * @part nbcp__header - [nylas-booking-calendar-picker] The header of the booking calendar picker\n * @part nbcp__input-label - [nylas-booking-calendar-picker] The input label of the booking calendar picker\n * @part nbcp__dropdown - [nylas-booking-calendar-picker] The dropdown container\n * @part nbcp__dropdown-button - [nylas-booking-calendar-picker] The dropdown button\n * @part nbcp__dropdown-content - [nylas-booking-calendar-picker] The dropdown content\n * @part nbt - [nylas-buffer-time] The buffer time container\n * @part nbt__header - [nylas-buffer-time] The header of the buffer time\n * @part nbt__body - [nylas-buffer-time] The body of the buffer time\n * @part nbt__dropdown-before - [nylas-buffer-time] The before buffer dropdown container\n * @part nbt__dropdown-button-before - [nylas-buffer-time] The before buffer dropdown button\n * @part nbt__dropdown-content-before - [nylas-buffer-time] The before buffer dropdown content\n * @part nbt__dropdown-after - [nylas-buffer-time] The after buffer dropdown container\n * @part nbt__dropdown-button-after - [nylas-buffer-time] The after buffer dropdown button\n * @part nbt__dropdown-content-after - [nylas-buffer-time] The after buffer dropdown content\n * @part nbt__preview - [nylas-buffer-time] The buffer time preview\n * @part ncp - [nylas-calendar-picker] The calendar picker container\n * @part ncp__header - [nylas-calendar-picker] The header of the calendar picker\n * @part ncp__dropdown - [nylas-calendar-picker] The dropdown container\n * @part ncp__dropdown-button - [nylas-calendar-picker] The dropdown button\n * @part ncp__dropdown-content - [nylas-calendar-picker] The dropdown content\n * @part ncbf - [nylas-custom-booking-flow] The custom booking flow container\n * @part ncbf__header - [nylas-custom-booking-flow] The header of the custom booking flow\n * @part ncbf__dropdown - [nylas-custom-booking-flow] The dropdown container\n * @part ncbf__dropdown-button - [nylas-custom-booking-flow] The dropdown button\n * @part ncbf__dropdown-content - [nylas-custom-booking-flow] The dropdown content\n * @part nedesc - [nylas-event-description] The event description container\n * @part nedesc__textarea - [nylas-event-description] The event description textarea\n * @part ned - [nylas-event-duration] The event duration container\n * @part ned__dropdown - [nylas-event-duration] The dropdown container for the duration increment\n * @part ned__dropdown-button - [nylas-event-duration] The dropdown button for the duration increment\n * @part ned__dropdown-content - [nylas-event-duration] The dropdown content for the duration increment\n * @part ned__input_dropdown - [nylas-event-duration] The input dropdown container for the duration minutes\n * @part ned__input_dropdown-input - [nylas-event-duration] The input for the duration minutes\n * @part ned__input_dropdown-content - [nylas-event-duration] The dropdown content for the input duration minutes\n * @part net - [nylas-event-title] The event title container\n * @part net__title - [nylas-event-title] The event title input\n * @part net__dropdown-content - [nylas-event-title] The token options container\n * @part nlfb - [nylas-limit-future-bookings] The limit future bookings container\n * @part nlfb__number-dropdown - [nylas-limit-future-bookings] The number dropdown container\n * @part nlfb__number-dropdown-button - [nylas-limit-future-bookings] The number dropdown button\n * @part nlfb__number-dropdown-content - [nylas-limit-future-bookings] The number dropdown content\n * @part nlfb__period-dropdown - [nylas-limit-future-bookings] The period dropdown container\n * @part nlfb__period-dropdown-button - [nylas-limit-future-bookings] The period dropdown button\n * @part nlfb__period-dropdown-content - [nylas-limit-future-bookings] The period dropdown content\n * @part nel - [nylas-event-location] The event location container\n * @part nel__location - [nylas-event-location] The event location input\n * @part nel__dropdown - [nylas-event-location] The dropdown container\n * @part nel__dropdown-button - [nylas-event-location] The dropdown button\n * @part nel__dropdown-content - [nylas-event-location] The dropdown content\n * @part nmbn - [nylas-min-booking-notice] The minimum booking notice container\n * @part nmbn__number-dropdown - [nylas-min-booking-notice] The number dropdown container\n * @part nmbn__number-dropdown-button - [nylas-min-booking-notice] The number dropdown button\n * @part nmbn__number-dropdown-content -[nylas-min-booking-notice] The number dropdown content\n * @part nmbn__period-dropdown - [nylas-min-booking-notice] The period dropdown container\n * @part nmbn__period-dropdown-button - [nylas-min-booking-notice] The period dropdown button\n * @part nmbn__period-dropdown-content - [nylas-min-booking-notice] The period dropdown content\n * @part nmcn - [nylas-min-cancellation-notice] The minimum cancellation notice container\n * @part nmcn__number-dropdown - [nylas-min-cancellation-notice] The number dropdown container\n * @part nmcn__number-dropdown-button - [nylas-min-cancellation-notice] The number dropdown button\n * @part nmcn__number-dropdown-content - [nylas-min-cancellation-notice] The number dropdown content\n * @part nmcn__period-dropdown - [nylas-min-cancellation-notice] The period dropdown container\n * @part nmcn__period-dropdown-button - [nylas-min-cancellation-notice] The period dropdown button\n * @part nmcn__period-dropdown-content - [nylas-min-cancellation-notice] The period dropdown content\n * @part ncpolicy - [nylas-cancellation-policy] The cancellation policy container\n * @part ncpolicy__textarea - [nylas-cancellation-policy] The cancellation policy textarea\n * @part nti - [nylas-timeslot-interval] The timeslot interval container\n * @part nti__header - [nylas-timeslot-interval] The header of the timeslot interval picker\n * @part nti__input-label - [nylas-timeslot-interval] The input label of the timeslot interval picker\n * @part nti__dropdown - [nylas-timeslot-interval] The dropdown container\n * @part nti__dropdown-button - [nylas-timeslot-interval] The dropdown button\n * @part nti__dropdown-content - [nylas-timeslot-interval] The dropdown content\n * @part npca - [nylas-participants-custom-availability] The participants custom availability container\n * @part npca__header - [nylas-participants-custom-availability] The header of the participants custom availability\n * @part npca__content - [nylas-participants-custom-availability] The content of the participants custom availability\n * @part npca__participant-container - [nylas-participants-custom-availability] The participant container\n * @part npca__participant-title - [nylas-participants-custom-availability] The participant title\n * @part npca__participant-toggle--container - [nylas-participants-custom-availability] The participant toggle container\n * @part npca__toggle-label - [nylas-participants-custom-availability] The toggle label\n * @part npca__toggle-input - [nylas-participants-custom-availability] The toggle input\n * @part npca__toggle-slider - [nylas-participants-custom-availability] The toggle slider\n * @part ncbs - [nylas-customize-booking-settings] The booking calendar picker container\n * @part ncbs__header - [nylas-customize-booking-settings] The header of the booking calendar picker\n * @part ncbs__settings - [nylas-customize-booking-settings] The settings container\n * @part ncbs__settings-div - [nylas-customize-booking-settings] The div inside the settings container that contains the checkbox and tooltip for each setting\n * @part ncbs__additional_guests - [nylas-customize-booking-settings] The additional guests setting\n * @part ncbs__cancellation_options - [nylas-customize-booking-settings] The cancellation options setting\n * @part ncbs__rescheduling_options - [nylas-customize-booking-settings] The rescheduling options setting\n * @part nsm - [nylas-scheduling-method] The booking calendar picker container\n * @part nsm__header - [nylas-scheduling-method] The header of the booking calendar picker\n * @part nsm__input-label - [nylas-scheduling-method] The input label of the booking calendar picker\n * @part nsm__dropdown - [nylas-scheduling-method] The dropdown container\n * @part nsm__dropdown-button - [nylas-scheduling-method] The dropdown button\n * @part nsm__dropdown-content - [nylas-scheduling-method] The dropdown content\n * @part npn - The nylas-page-name container\n * @part npn__body - The body of the event communication section\n * @part npn__header - The header of the event communication section\n * @part npn__drawer-toggle--container - The card's drawer toggle container\n * @part npn__input-textfield - The page name textfield\n * @part editor__form-contents - The form contents container\n * @part editor__tab - The tabs container\n * @part editor__tab-content - The tab content container\n * @part editor__footer - The footer container\n * @part editor__footer-preview - The preview button container\n * @part editor__footer-buttons - The buttons container\n */\n@Component({\n tag: 'nylas-editor-tabs',\n styleUrl: 'nylas-editor-tabs.scss',\n scoped: true,\n})\nexport class NylasEditorTabs {\n /**\n * The form reference to access the form data.\n */\n private formRef!: HTMLFormElement;\n /**\n * The host element.\n */\n @Element() host!: HTMLNylasEditorTabsElement;\n /**\n * @standalone\n * The list of calendars to use in the editor when configuring availability.\n */\n @Prop() calendars?: Calendar[];\n /**\n * @standalone\n * The selected configuration to use in the editor when editing an existing configuration or creating a new one.\n */\n @Prop() selectedConfiguration?: Configuration;\n\n /**\n * @standalone\n * The list of configurations\n */\n @Prop() configurations?: Configuration[];\n\n /**\n * @standalone\n * The current logged in user.\n */\n @Prop() currentUser?: User;\n /**\n * @standalone\n * The scheduler preview link to use when the user clicks on the preview button.\n * You can use a placeholder `{config.id}` to replace the configuration id anywhere in the link.\n */\n @Prop({ attribute: 'scheduler-preview-link' }) schedulerPreviewLink: string = '';\n /**\n * @standalone\n * The mode of the editor.\n * - `app`: The editor is used as a standalone app.\n * - `composable`: The editor is used as a composable component.\n */\n @Prop() mode?: 'app' | 'composable' = 'app';\n /**\n * @standalone\n * This prop is passed down by the parent component.\n * It is an optional prop is used to hide tabs in the editor. Available tabs are:\n * eventInfo, availability, participants, bookingOptions, bookingForm\n */\n @Prop() hideEditorTabs?: Tab[] = [];\n /**\n * @standalone\n * This prop is passed down by the parent component to enable or disable user feedback.\n */\n @Prop() enableUserFeedback?: boolean = true;\n\n /**\n * @standalone\n * This prop is passed down by the parent component to enable or disable Notetaker configuration.\n */\n @Prop({ attribute: 'enable-notetaker' }) enableNotetaker?: boolean = false;\n\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: LANGUAGE_CODE;\n\n /**\n * The selected event type.\n */\n @Prop() selectedEventType?: CONFIGURATION_EVENT_TYPE;\n /**\n * @standalone\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: ThemeConfig;\n\n /**\n * The action to perform in the editor.\n * - `create`: Create a new configuration.\n * - `edit`: Edit an existing configuration.\n */\n @State() action: 'create' | 'edit' = 'create';\n /**\n * The state for showing the feedback modal.\n */\n @State() showFeedbackModal: boolean = false;\n /**\n * The active tab in the editor.\n */\n @State() activeTab: Tab = Tab.EventInfo;\n /**\n * The loading state of the editor.\n */\n @State() isLoading: boolean = false;\n /**\n * The unsaved changes state of the editor.\n */\n @State() hasUnsavedChanges: boolean = false;\n /**\n * The changes saved state of the editor.\n */\n @State() changesSaved: boolean = false;\n /**\n * The loaded state of the editor. This is used to fade in the tab contents when the editor is loaded.\n * This is used to prevent the tab contents (background-color) from flickering when the editor is loaded.\n */\n @State() loaded: boolean = false;\n /**\n * The form state of the editor.\n */\n @State() formState: SchedulerEditorFormState = {};\n /**\n * The error state of the editor.\n */\n @State() error?: {\n message: string;\n type: NotificationType | undefined;\n category: ErrorCategory | undefined;\n title: string;\n } = {\n message: '',\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: '',\n };\n\n /**\n * Event emitted when the scheduler configuration form is submitted and ready to be processed (before the API request is made). This fires for both create and edit actions after client-side validation passes.\n */\n @Event() schedulerConfigChanged!: EventEmitter<SchedulerEventDetail>;\n /**\n * Event emitted when a scheduler configuration is successfully created via the API. This fires only for create actions after the API request completes successfully.\n */\n @Event() schedulerConfigCreated!: EventEmitter<SchedulerEventDetail>;\n /**\n * Event emitted when the user clicks the cancel button to exit the scheduler editor.\n */\n @Event() cancelButtonClick!: EventEmitter<void>;\n /**\n * Event emitted at the very beginning of form submission, before any validation occurs. This event is cancelable and can prevent the submission process if preventDefault() is called.\n */\n @Event({ bubbles: true, cancelable: true }) formSubmitted!: EventEmitter<void>;\n /**\n * Event emitted when the user clicks the preview button. This fires before the preview link is opened and can be used to override the default preview behavior.\n */\n @Event() previewButtonClicked!: EventEmitter<HTMLNylasEditorTabsElement>;\n /**\n * Event emitted whenever any form field value changes within the scheduler editor. This provides real-time updates as users modify form inputs.\n */\n @Event() schedulerEditorFormUpdated!: EventEmitter<{ value: string; name: string }>;\n\n /**\n * Event emitted when the component needs to display an error notification to the user. This includes validation errors, API errors, and other component-level errors.\n */\n @Event({ cancelable: false }) readonly nylasSchedulerError!: EventEmitter<{ notification: Notification; host: HTMLElement }>;\n /**\n * Event emitted when the user dismisses an error notification, allowing parent components to handle cleanup or additional actions.\n */\n @Event() dismissNotification!: EventEmitter<{ id: string; host: HTMLNylasEditorTabsElement }>;\n\n @Watch('selectedConfiguration')\n configChangedHandler(newConfig: Configuration) {\n debug('[nylas-editor-tabs]', 'configChangedHandler', newConfig, this.selectedConfiguration);\n this.formState = {\n ...this.getFormStateFromConfig(newConfig),\n };\n if (newConfig?.id) {\n this.action = 'edit';\n } else {\n this.action = 'create';\n }\n }\n\n @Watch('currentUser')\n userChangedHandler(newUser: User) {\n // Actively watch for changes in the current user to update the form state.\n debug('[nylas-editor-tabs]', 'userChangedHandler', newUser);\n if (newUser) {\n this.formState = {\n ...this.getFormStateFromConfig(this.selectedConfiguration),\n };\n }\n }\n\n @Watch('selectedLanguage')\n selectedLanguageChangedHandler(newVal: LANGUAGE_CODE, oldVal: LANGUAGE_CODE) {\n if (newVal === oldVal) return;\n i18next.changeLanguage(newVal);\n if (this.error && this.error.message) {\n this.error = {\n ...this.error,\n message: i18next.t('fixFormErrors'),\n };\n this.showErrorNotification(this.error);\n }\n }\n\n @Watch('themeConfig')\n themeConfigChangedHandler(newVal: ThemeConfig, oldVal: ThemeConfig) {\n if (newVal === oldVal) return;\n this.applyThemeConfig(newVal);\n }\n\n applyThemeConfig(themeConfig?: ThemeConfig) {\n if (themeConfig) {\n for (const [key, value] of Object.entries(themeConfig)) {\n this.host.style.setProperty(`${key}`, value);\n }\n }\n }\n\n @Method()\n async schedulerConfigCreatedEventHandler(data: SchedulerEventDetail) {\n const event = this.schedulerConfigCreated.emit(data);\n return event;\n }\n\n @Method()\n async setError(error: { message: string; type: NotificationType; category: ErrorCategory; title: string }) {\n this.error = {\n message: error.message,\n type: error.type,\n category: error.category,\n title: error.title || i18next.t('genericErrorTitle'),\n };\n if (this.error?.message) {\n this.showErrorNotification(this.error);\n }\n }\n\n @Method()\n async resetError() {\n if (this.error?.message) {\n this.dismissNotification.emit({ id: this.error?.message.split(' ').join('-'), host: this.host });\n }\n this.error = {\n message: '',\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: '',\n };\n }\n\n connectedCallback() {\n debug('[nylas-editor-tabs]', 'connectedCallback');\n // Use queueMicrotask to defer theme application until after React has set props.\n // This fixes the timing issue where connectedCallback fires before React sets themeConfig.\n queueMicrotask(() => {\n if (this.themeConfig) {\n this.applyThemeConfig(this.themeConfig);\n this.host.setAttribute('data-themed', '');\n }\n });\n }\n\n componentWillLoad() {\n debug('[nylas-editor-tabs]', 'componentWillLoad');\n this.formState = this.getFormStateFromConfig(this.selectedConfiguration);\n // Theme already applied in connectedCallback via queueMicrotask\n }\n\n componentDidLoad() {\n debug('[nylas-editor-tabs]', 'componentDidLoad');\n if (this.enableUserFeedback && !Sentry.isInitialized()) {\n Sentry.init({\n dsn: 'https://9d5731f1c77ca84c9ed3fb9b3ccf7ee1@o74852.ingest.us.sentry.io/4507889638178816',\n release: version,\n integrations: integrations => [\n ...integrations.filter(_integration => false), // Removes default integrations (including Breadcrumbs)\n Sentry.feedbackIntegration({\n colorScheme: 'system',\n autoInject: false,\n }),\n ],\n // Disable all other event capture\n autoSessionTracking: false, // Disable session tracking\n beforeSend: () => null, // Prevents error events from being sent\n });\n }\n if (this.selectedConfiguration?.id) {\n this.configChangedHandler(this.selectedConfiguration);\n }\n const firstVisibleTab = (this.host.querySelector('button.tab:not(.hide)') as HTMLButtonElement)?.name as Tab;\n\n if (firstVisibleTab) {\n this.activeTab = firstVisibleTab;\n }\n this.loaded = true;\n }\n\n disconnectedCallback() {\n debug('[nylas-editor-tabs]', 'disconnectedCallback');\n }\n\n @Listen('valueChanged')\n handleValueChanged(event: CustomEvent) {\n debug('[nylas-editor-tabs]', 'handleValueChanged', event);\n const { name, value } = event.detail;\n debug('name', name, 'value', value);\n this.setFormState(value, name);\n this.formState = { ...this.formState };\n this.resetError();\n if (editorTabComponentNames.includes(name)) {\n this.hasUnsavedChanges = true;\n }\n this.schedulerEditorFormUpdated.emit({\n value: event.detail.value,\n name: event.detail.name,\n });\n }\n\n @Listen('feedbackModalClosed')\n feedbackModalClosedHandler() {\n this.showFeedbackModal = false;\n }\n\n @Listen('feedbackSubmitted')\n feedbackSubmittedHandler(event: CustomEvent<{ feedback: string }>) {\n const eventId = Sentry.captureMessage('Scheduler Editor User Feedback', {\n extra: {\n configId: this.selectedConfiguration?.id,\n slug: this.selectedConfiguration?.slug,\n },\n });\n const feedback = {\n eventId: eventId,\n message: event.detail.feedback,\n };\n\n Sentry.captureFeedback(feedback, {\n includeReplay: true,\n captureContext: {\n tags: {\n 'nylas-web-element': 'nylas-scheduler-editor',\n 'nylas-web-element-version': version,\n 'nylas-config-id': this.selectedConfiguration?.id,\n 'nylas-slug': this.selectedConfiguration?.slug,\n 'host-url': window.location.href,\n },\n extra: {\n configId: this.selectedConfiguration?.id,\n slug: this.selectedConfiguration?.slug,\n },\n },\n });\n this.showFeedbackModal = false;\n }\n\n showErrorNotification(error: { message: string; type: NotificationType | undefined; category: ErrorCategory | undefined; title: string }) {\n if (error.message) {\n this.nylasSchedulerError.emit({\n notification: {\n title: error.title,\n category: error.category || ErrorCategory.Component,\n type: error.type || NotificationType.Error,\n description: error.message,\n id: error.message.split(' ').join('-'),\n ttl: 'none',\n },\n host: this.host,\n });\n }\n }\n\n getFormStateFromConfig(config?: Configuration): SchedulerEditorFormState {\n let organizerParticipant = config?.participants?.find(p => p.is_organizer);\n // If the config is round robin, there is no organizer set in the config, in that case flag the current user as the organizer.\n if (!organizerParticipant && config?.availability?.availability_rules?.availability_method !== 'collective') {\n organizerParticipant = config?.participants?.find(p => p.email === this.currentUser?.email);\n if (organizerParticipant) {\n organizerParticipant.is_organizer = true;\n }\n }\n if (config?.appearance) {\n debug(\n '[nylas-editor-tabs]',\n 'getFormStateFromConfig',\n 'Appearance settings have been returned from the given configuration; please remember to grab them from the configSettingsLoaded event and apply them as desired.',\n );\n }\n\n return {\n title: config?.event_booking?.title ?? '',\n description: config?.event_booking?.description ?? '',\n duration: config?.availability?.duration_minutes?.toString() ?? '30',\n availability: {\n timezone: config?.event_booking?.timezone ?? Intl.DateTimeFormat().resolvedOptions().timeZone,\n openHours: config?.availability?.availability_rules?.default_open_hours ?? DEFAULT_OPEN_HOURS,\n },\n specificTimeAvailability: config?.availability?.availability_rules?.default_specific_time_availability ?? [],\n onlySpecificTimeAvailability: config?.availability?.availability_rules?.only_specific_time_availability ?? false,\n additionalFields: config?.scheduler?.additional_fields ?? {},\n conferencing: config?.event_booking?.conferencing ?? {},\n calendarIds: organizerParticipant?.availability?.calendar_ids ?? [],\n participants: config?.participants ?? [],\n bookingCalendar: organizerParticipant?.booking?.calendar_id ?? organizerParticipant?.email ?? '',\n location: config?.event_booking?.location ?? '',\n bookingType: config?.event_booking?.booking_type ?? 'booking',\n buffer: config?.availability?.availability_rules?.buffer ?? { before: 0, after: 0 },\n cancellationPolicy: config?.scheduler?.cancellation_policy ?? '',\n availableDaysInFuture: config?.scheduler?.available_days_in_future ?? 30,\n minCancellationNotice: config?.scheduler?.min_cancellation_notice ?? 0,\n minBookingNotice: config?.scheduler?.min_booking_notice ?? 60,\n timeslotInterval: {\n interval: config?.availability?.interval_minutes ?? config?.availability?.duration_minutes,\n roundTo: config?.availability?.round_to,\n },\n additionalGuestsHidden: config?.scheduler?.hide_additional_guests ?? false,\n hideCancellationOptions: config?.scheduler?.hide_cancellation_options ?? false,\n hideReschedulingOptions: config?.scheduler?.hide_rescheduling_options ?? false,\n participantBookingCalendars: (config?.participants ?? []).reduce<{ [key: string]: string }>((acc, p) => {\n if (p.booking?.calendar_id) {\n acc[p.email] = p.booking.calendar_id;\n }\n return acc;\n }, {}),\n participantCalendars:\n config?.participants?.reduce((acc, p) => {\n acc[p.email] = p.availability?.calendar_ids;\n return acc;\n }, {}) ?? {},\n reminders: config?.event_booking?.reminders,\n emailTemplate: config?.scheduler?.email_template,\n redirectUrl: config?.scheduler?.confirmation_redirect_url,\n slug: config?.slug,\n appearance: config?.appearance,\n name: config?.name,\n disableEmails: config?.event_booking?.disable_emails,\n organizerLocale: config?.scheduler?.email_template?.organizer_locale,\n // If conferencing is not configured (no provider), set notetaker enabled to false\n // Otherwise, use the notetaker settings from config\n notetaker: config?.scheduler?.notetaker_settings\n ? config.event_booking?.conferencing?.provider\n ? config.scheduler.notetaker_settings\n : { ...config.scheduler.notetaker_settings, enabled: false }\n : undefined,\n };\n }\n\n setFormState(value, key) {\n switch (key) {\n case 'title':\n this.formState.title = value.toString();\n break;\n case 'description':\n this.formState.description = value.toString();\n break;\n case 'duration':\n this.formState.duration = value.toString();\n break;\n case 'availability':\n this.formState.availability = JSON.parse(value.toString());\n break;\n case 'specific-time-availability':\n this.formState.specificTimeAvailability = JSON.parse(value.toString());\n break;\n case 'only-specific-time-availability': {\n const { enableSpecificTimeAvailability } = JSON.parse(value.toString());\n this.formState.onlySpecificTimeAvailability = enableSpecificTimeAvailability;\n break;\n }\n case 'participants':\n this.formState.participants = JSON.parse(value.toString());\n break;\n case 'booking-calendar':\n this.formState.bookingCalendar = value.toString();\n break;\n case 'participant-booking-calendars':\n this.formState.participantBookingCalendars = JSON.parse(value.toString());\n break;\n case 'location':\n this.formState.location = value.toString();\n break;\n case 'conference': {\n const parsedConferencing = JSON.parse(value.toString());\n this.formState.conferencing = parsedConferencing;\n // If conferencing is removed (null or no provider), automatically disable notetaker\n if (!parsedConferencing || !parsedConferencing.provider) {\n // Set enabled to false, preserving any existing notetaker settings\n const updatedNotetaker = this.formState.notetaker ? { ...this.formState.notetaker, enabled: false } : { enabled: false };\n this.formState.notetaker = updatedNotetaker;\n // Update formState reference to trigger reactivity\n this.formState = { ...this.formState };\n // Emit a valueChanged event to update the notetaker component\n this.schedulerEditorFormUpdated.emit({\n value: JSON.stringify(updatedNotetaker),\n name: 'notetaker',\n });\n }\n break;\n }\n case 'confirmation-type':\n this.formState.bookingType = value.toString();\n break;\n case 'buffer-time':\n this.formState.buffer = JSON.parse(value.toString());\n break;\n case 'limit-future-bookings':\n this.formState.availableDaysInFuture = parseInt(value.toString());\n break;\n case 'min-cancellation-notice':\n this.formState.minCancellationNotice = parseInt(value.toString());\n break;\n case 'min-booking-notice':\n this.formState.minBookingNotice = parseInt(value.toString());\n break;\n case 'cancellation-policy':\n this.formState.cancellationPolicy = value.toString();\n break;\n case 'timeslot-interval':\n this.formState.timeslotInterval = JSON.parse(value.toString());\n break;\n case 'customize-booking-settings': {\n const settings = JSON.parse(value.toString());\n this.formState.additionalGuestsHidden = settings.additionalGuestsHidden;\n this.formState.hideCancellationOptions = settings.hideCancellationOptions;\n this.formState.hideReschedulingOptions = settings.hideReschedulingOptions;\n break;\n }\n case 'participant-custom-availability': {\n const participantOpenHours = JSON.parse(value.toString());\n this.formState.participantOpenHours = participantOpenHours;\n break;\n }\n case 'participant-custom-availability-specific-time': {\n const participantSpecificTimeAvailability = JSON.parse(value.toString());\n this.formState.participantSpecificTimeAvailability = participantSpecificTimeAvailability;\n break;\n }\n case 'participant-custom-availability-only-specific-time': {\n const participantOnlySpecificTimeAvailability = JSON.parse(value.toString());\n this.formState.participantOnlySpecificTimeAvailability = participantOnlySpecificTimeAvailability;\n break;\n }\n case 'additional-fields':\n this.formState.additionalFields = JSON.parse(value.toString());\n break;\n case 'connected-calendars':\n this.formState.participantCalendars = JSON.parse(value.toString());\n break;\n case 'confirmation-email-template':\n this.formState.emailTemplate = JSON.parse(value.toString());\n break;\n case 'disable-emails': {\n const { disableEmails, organizerLocale } = JSON.parse(value.toString());\n this.formState.disableEmails = disableEmails;\n this.formState.organizerLocale = organizerLocale;\n break;\n }\n case 'reminder-overrides':\n this.formState.reminders = JSON.parse(value.toString());\n break;\n case 'confirmation-redirect':\n this.formState.redirectUrl = value.toString();\n break;\n case 'availability-method':\n this.formState.availabilityMethod = value.toString();\n break;\n case 'custom-event-slug':\n this.formState.slug = JSON.parse(value.toString());\n break;\n case 'page-styling':\n this.formState.appearance = JSON.parse(value.toString());\n break;\n case 'page-name':\n this.formState.name = JSON.parse(value.toString());\n break;\n case 'notetaker': {\n const notetakerValue = value.toString();\n if (notetakerValue === 'null' || notetakerValue === '') {\n this.formState.notetaker = undefined;\n } else {\n this.formState.notetaker = JSON.parse(notetakerValue);\n }\n break;\n }\n }\n this.schedulerEditorFormUpdated.emit({\n value,\n name: key,\n });\n }\n\n updateFormState() {\n const formData = new FormData(this.formRef);\n formData.forEach((value, key) => {\n this.setFormState(value, key);\n });\n\n this.formState = { ...this.formState };\n return this.formState;\n }\n\n setActiveTab(e: Event, tabName: Tab) {\n e.preventDefault();\n this.updateFormState();\n this.activeTab = tabName;\n }\n\n formSubmissionHandler = async (event: Event) => {\n event.preventDefault();\n const formEvent = await this.formSubmitted.emit();\n debug('[nylas-editor-tabs]', 'formSubmissionHandler', formEvent);\n const valid = this.formRef.checkValidity();\n if (!valid || formEvent.defaultPrevented) {\n this.setError({\n message: this.formRef.validationMessage || i18next.t('fixFormErrors'),\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: i18next.t('nylasEditorTabs.formErrorTitle'),\n });\n return;\n }\n this.isLoading = true;\n this.hasUnsavedChanges = false;\n const formState = this.updateFormState();\n debug('[nylas-editor-tabs]', 'formState', formState);\n const {\n title,\n description,\n duration,\n availability,\n specificTimeAvailability,\n onlySpecificTimeAvailability,\n bookingCalendar,\n location,\n bookingType,\n buffer,\n availableDaysInFuture,\n minCancellationNotice,\n minBookingNotice,\n cancellationPolicy,\n timeslotInterval,\n additionalGuestsHidden,\n hideCancellationOptions,\n hideReschedulingOptions,\n participants,\n participantOpenHours,\n participantSpecificTimeAvailability,\n participantOnlySpecificTimeAvailability,\n additionalFields,\n participantCalendars,\n conferencing,\n participantBookingCalendars,\n reminders,\n emailTemplate,\n redirectUrl,\n availabilityMethod,\n slug,\n appearance,\n name,\n disableEmails,\n organizerLocale,\n notetaker,\n } = formState;\n const organizer = this.selectedConfiguration?.participants?.find(p => p.is_organizer) || participants?.find(p => p.is_organizer);\n const organizerCalendars = participantCalendars && organizer?.email ? participantCalendars[organizer?.email] : [];\n const organizerBookingCalendar = organizer?.booking?.calendar_id || bookingCalendar;\n const durationMinutes = duration ? parseInt(duration) : 30;\n\n const participantsList =\n participants && participants?.length > 0\n ? participants\n : [\n {\n name: organizer?.name ?? this.currentUser?.name ?? '',\n email: organizer?.email ?? this.currentUser?.email ?? '',\n is_organizer: true,\n timezone: availability?.timezone ?? Intl.DateTimeFormat().resolvedOptions().timeZone,\n availability: {\n calendar_ids: bookingCalendar && bookingCalendar !== '' ? [bookingCalendar] : ['primary'],\n open_hours: [],\n },\n booking: {\n calendar_id: bookingCalendar && bookingCalendar !== '' ? bookingCalendar : 'primary',\n },\n },\n ];\n\n let availabilityMethodSelected = availabilityMethod ? availabilityMethod : this.selectedConfiguration?.availability?.availability_rules?.availability_method ?? 'collective';\n if (this.selectedEventType && this.selectedEventType !== CONFIGURATION_EVENT_TYPE.group) {\n availabilityMethodSelected = this.selectedEventType === CONFIGURATION_EVENT_TYPE.one_on_one ? CONFIGURATION_EVENT_TYPE.collective : this.selectedEventType;\n }\n\n const configObject: Partial<Configuration> = {\n ...(this.selectedConfiguration?.id && { id: this.selectedConfiguration.id }),\n version: this.selectedConfiguration?.version ?? '1.0.0',\n slug: slug,\n name: name,\n availability: {\n duration_minutes: durationMinutes,\n interval_minutes: timeslotInterval?.interval ?? durationMinutes,\n round_to: timeslotInterval?.roundTo,\n availability_rules: {\n default_specific_time_availability: specificTimeAvailability ?? [],\n only_specific_time_availability: onlySpecificTimeAvailability ?? false,\n availability_method: availabilityMethodSelected,\n buffer: buffer || { before: 0, after: 0 },\n default_open_hours: availability?.openHours ?? this.selectedConfiguration?.availability?.availability_rules?.default_open_hours ?? DEFAULT_OPEN_HOURS,\n round_robin_group_id: this.selectedConfiguration?.availability?.availability_rules?.round_robin_group_id ?? '',\n },\n },\n participants: [\n ...(participantsList\n ? participantsList.map(p => {\n const specificAvailabilityRaw = participantSpecificTimeAvailability?.[p.email] ?? p.specific_time_availability ?? [];\n\n // The participant's timezone should be the default timezone set by the selected configuration's availability rules\n // if open hours are not set for the participant\n let timezone = availability?.timezone ?? Intl.DateTimeFormat().resolvedOptions().timeZone;\n if (participantOpenHours?.[p.email]?.length) {\n timezone = participantOpenHours?.[p.email]?.[0]?.timezone;\n } else if (specificAvailabilityRaw.length > 0) {\n const saTz = specificAvailabilityRaw.find(sa => sa.timezone)?.timezone;\n if (saTz) {\n timezone = saTz;\n }\n }\n\n const specificAvailability = specificAvailabilityRaw.map(sa => ({\n ...sa,\n timezone,\n }));\n\n if (p.is_organizer) {\n const orgPartBookingCalendar = participantBookingCalendars?.[p.email]\n ? participantBookingCalendars?.[p.email]\n : organizerBookingCalendar\n ? organizerBookingCalendar\n : 'primary';\n const orgpartAvailabilityCalendars = participantCalendars?.[p.email]\n ? participantCalendars?.[p.email]\n : organizerCalendars?.length\n ? organizerCalendars\n : ['primary'];\n const isPartAvailabilityCalendarsPrimaryOnly = orgpartAvailabilityCalendars.length === 1 && orgpartAvailabilityCalendars[0] === 'primary';\n\n return {\n name: p.name ?? '',\n email: p.email,\n is_organizer: true,\n timezone,\n availability: {\n calendar_ids: isPartAvailabilityCalendarsPrimaryOnly ? [orgPartBookingCalendar] : orgpartAvailabilityCalendars,\n open_hours: participantOpenHours?.[p.email] ?? p.availability?.open_hours ?? [],\n },\n specific_time_availability: specificAvailability,\n only_specific_time_availability: participantOnlySpecificTimeAvailability?.[p.email] ?? p.only_specific_time_availability ?? false,\n booking: {\n calendar_id: orgPartBookingCalendar,\n },\n };\n }\n const partBooking = participantBookingCalendars?.[p.email] ? { calendar_id: participantBookingCalendars?.[p.email] } : p?.booking ?? undefined;\n const partAvailabilityCalendars = participantCalendars?.[p.email] ?? p.availability?.calendar_ids ?? ['primary'];\n const isPartAvailabilityCalendarsPrimaryOnly = partAvailabilityCalendars.length === 1 && partAvailabilityCalendars[0] === 'primary';\n return {\n ...p,\n timezone,\n availability: p.availability\n ? {\n calendar_ids: isPartAvailabilityCalendarsPrimaryOnly && typeof partBooking !== 'undefined' ? [partBooking?.calendar_id] : partAvailabilityCalendars,\n open_hours: participantOpenHours?.[p.email] ?? p.availability?.open_hours ?? [],\n }\n : undefined,\n booking: partBooking,\n specific_time_availability: specificAvailability,\n only_specific_time_availability: participantOnlySpecificTimeAvailability?.[p.email] ?? p.only_specific_time_availability ?? false,\n };\n })\n : []),\n ],\n event_booking: {\n title: title?.toString() ?? '',\n description: description?.toString() ?? '',\n location: location?.toString() ?? '',\n booking_type: (bookingType?.toString() as BookingType) ?? 'booking',\n timezone: availability?.timezone ?? Intl.DateTimeFormat().resolvedOptions().timeZone,\n conferencing: conferencing,\n reminders: reminders,\n disable_emails: typeof disableEmails === 'boolean' ? disableEmails : false,\n },\n scheduler: {\n cancellation_policy: cancellationPolicy ?? '',\n available_days_in_future: availableDaysInFuture ?? 30,\n min_cancellation_notice: minCancellationNotice ?? 0,\n min_booking_notice: minBookingNotice ?? 60,\n hide_additional_guests: additionalGuestsHidden ?? false,\n hide_cancellation_options: hideCancellationOptions ?? false,\n hide_rescheduling_options: hideReschedulingOptions ?? false,\n additional_fields: additionalFields,\n email_template: emailTemplate\n ? {\n ...emailTemplate,\n organizer_locale: organizerLocale || 'en',\n logo: emailTemplate.logo || '',\n }\n : undefined,\n confirmation_redirect_url: redirectUrl,\n notetaker_settings: notetaker,\n },\n appearance: appearance,\n };\n\n const configObjectWithDeveloperSettings = mergeDeep(this.selectedConfiguration, configObject || {});\n\n const finalConfig = this.action === 'create' ? configObjectWithDeveloperSettings : configObject;\n\n if (this.isConfigRoundRobin(finalConfig)) {\n // If the config is round robin, no participant should be flagged as the organizer\n finalConfig.participants = finalConfig.participants.map(p => ({ ...p, is_organizer: undefined }));\n }\n const resetLoadingState = (_e: CustomEvent) => {\n this.isLoading = false;\n this.changesSaved = true;\n setTimeout(() => {\n this.changesSaved = false;\n }, 5000);\n };\n\n const hasBookingError = this.checkForBookingFormErrors(finalConfig);\n\n // Check for client side errors using the selected config from the list configs (stored in API)\n const currentConfig = this.configurations?.find(c => c.id === this.selectedConfiguration?.id) || {};\n const hasOrganizerConfirmationError = this.checkForOrganizerConfirmationError(mergeDeep(finalConfig, currentConfig));\n\n if (hasBookingError || hasOrganizerConfirmationError) {\n return;\n }\n this.schedulerConfigChanged.emit({ config: finalConfig, resetLoadingState, action: this.action, host: this.host });\n };\n\n isConfigRoundRobin = (config: Configuration) => {\n return config?.availability?.availability_rules?.availability_method === 'max-availability' || config.availability?.availability_rules?.availability_method === 'max-fairness';\n };\n\n checkForOrganizerConfirmationError = config => {\n // Check additional Fields in config\n let hasError = false;\n let errorMessage = '';\n const isOrganizerConfirmationType = config.event_booking?.booking_type === 'organizer-confirmation';\n const organizerConfirmationUrl = config.scheduler?.organizer_confirmation_url;\n\n if (isOrganizerConfirmationType && !organizerConfirmationUrl) {\n errorMessage += 'Organizer confirmation URL is required when using organizer confirmation booking type.';\n hasError = true;\n }\n if (hasError) {\n this.isLoading = false;\n this.host.setError({\n message: errorMessage,\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: 'Error:',\n });\n }\n return hasError;\n };\n\n checkForBookingFormErrors = config => {\n // Check additional Fields in config\n let hasError = false;\n let errorMessage = '';\n const additionalFields = config.scheduler?.additional_fields;\n if (additionalFields) {\n errorMessage = '';\n Object.entries(additionalFields).forEach(entry => {\n const field = entry[1] as AdditionalFields;\n if (field.label === '') {\n errorMessage += i18next.t('nylasEditorTabs.bookingFormError_label', { type: field.type });\n hasError = true;\n return;\n }\n if (field.options) {\n for (const option of field.options) {\n if (option.trim() === '') {\n errorMessage += i18next.t('nylasEditorTabs.bookingFormError_option', { label: field.label, type: field.type });\n hasError = true;\n break;\n }\n }\n }\n });\n }\n if (hasError) {\n this.isLoading = false;\n this.host.setError({\n message: errorMessage,\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: i18next.t('nylasEditorTabs.bookingFormError'),\n });\n }\n return hasError;\n };\n\n hideTab(tab: Tab) {\n return this.hideEditorTabs?.includes(tab) || false;\n }\n\n onFeedbackClick(e: Event) {\n e.preventDefault();\n this.showFeedbackModal = true;\n }\n\n @RegisterComponent<NylasEditorTabs, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-editor-tabs',\n stateToProps: new Map([\n ['schedulerConfig.calendars', 'calendars'],\n ['schedulerConfig.selectedConfiguration', 'selectedConfiguration'],\n ['schedulerConfig.currentUser', 'currentUser'],\n ['schedulerConfig.configurations', 'configurations'],\n ['schedulerConfig.selectedLanguage', 'selectedLanguage'],\n ['schedulerConfig.selectedEventType', 'selectedEventType'],\n ['schedulerConfig.themeConfig', 'themeConfig'],\n ]),\n eventToProps: {\n schedulerConfigChanged: async (event: CustomEvent<SchedulerEventDetail>, nylasSchedulerConfigConnector: NylasSchedulerConfigConnector) => {\n const { resetLoadingState, host, action, config } = event.detail;\n const checkForErrors = (response: DataResponseReturnType, errorTitle: string) => {\n const [data, error] = response;\n if (!data && error) {\n host.setError({\n message: error.message || i18next.t('genericErrorTitle'),\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: errorTitle,\n });\n } else if (data && !error && action === 'create') {\n host.schedulerConfigCreatedEventHandler({ config: data, action, host });\n nylasSchedulerConfigConnector.schedulerConfigStore.set('selectedEventType', undefined);\n }\n if (resetLoadingState) {\n resetLoadingState(event);\n }\n };\n\n // If we have an ID, we are updating an existing configuration\n if (action === 'edit') {\n const response = await nylasSchedulerConfigConnector.schedulerConfig.updateConfiguration(config);\n checkForErrors(response, i18next.t('nylasEditorTabs.updateConfigError'));\n } else {\n const response = await nylasSchedulerConfigConnector.schedulerConfig.createConfiguration(config);\n checkForErrors(response, i18next.t('nylasEditorTabs.createConfigError'));\n }\n },\n cancelButtonClick: async (_, nylasSchedulerConfigConnector) => {\n nylasSchedulerConfigConnector.schedulerConfigStore.state.action = null;\n nylasSchedulerConfigConnector.schedulerConfigStore.set('selectedEventType', undefined);\n },\n previewButtonClicked: async (_, nylasSchedulerConfigConnector) => {\n debug('[nylas-editor-tabs]', 'previewButtonClicked', nylasSchedulerConfigConnector);\n },\n formSubmitted: async (_, nylasSchedulerConfigConnector) => {\n debug('[nylas-editor-tabs]', 'formSubmitted', nylasSchedulerConfigConnector);\n },\n schedulerEditorFormUpdated: async (event: CustomEvent<{ value: string; name: string }>, _nylasSchedulerConfigConnector) => {\n debug('[nylas-editor-tabs]', 'schedulerEditorFormUpdated', event);\n },\n schedulerConfigCreated: async (event: CustomEvent<SchedulerEventDetail>, _nylasSchedulerConfigConnector: NylasSchedulerConfigConnector) => {\n debug('[nylas-editor-tabs]', 'schedulerConfigCreated', event);\n },\n },\n localPropsToProp: new Map([\n ['schedulerPreviewLink', 'schedulerPreviewLink'],\n ['enableUserFeedback', 'enableUserFeedback'],\n ['hideEditorTabs', 'hideEditorTabs'],\n ['enableNotetaker', 'enableNotetaker'],\n ]),\n fireRegisterEvent: true,\n })\n render() {\n debug('[nylas-editor-tabs]', 'render', this.formState);\n\n return (\n <Host>\n <nylas-notification></nylas-notification>\n <form onSubmit={this.formSubmissionHandler} class=\"scheduler-editor\" ref={el => (this.formRef = el as HTMLFormElement)} noValidate>\n {this.mode === 'app' ? (\n <div class=\"form-contents\" part=\"editor__form-contents net__form-contents\">\n <div class=\"tabs\" part=\"editor__tabs net__tabs\">\n <button\n name={Tab.EventInfo}\n class={{ tab: true, active: this.activeTab == Tab.EventInfo, hide: this.hideTab(Tab.EventInfo) }}\n part=\"editortab__event-info net__tab-event-info\"\n onClick={e => this.setActiveTab(e, Tab.EventInfo)}\n >\n <calendar-info-icon width=\"16\" height=\"16\" />\n {i18next.t('eventInfoTab')}\n </button>\n <button\n name={Tab.Availability}\n class={{ tab: true, active: this.activeTab == Tab.Availability, hide: this.hideTab(Tab.Availability) }}\n part=\"editortab__availability net__tab-availability\"\n onClick={e => this.setActiveTab(e, Tab.Availability)}\n >\n <calendar-patterns-icon width=\"16\" height=\"16\" />\n {i18next.t('availabilityTab')}\n </button>\n <button\n name={Tab.Participants}\n class={{ tab: true, active: this.activeTab == Tab.Participants, hide: this.hideTab(Tab.Participants) }}\n part=\"editortab__participants net__tab-participants\"\n onClick={e => this.setActiveTab(e, Tab.Participants)}\n >\n <people-icon width=\"16\" height=\"16\" />\n {i18next.t('participantsTab')}\n </button>\n <button\n name={Tab.BookingOptions}\n class={{ tab: true, active: this.activeTab == Tab.BookingOptions, hide: this.hideTab(Tab.BookingOptions) }}\n part=\"editortab__booking-options net__tab-booking-options\"\n onClick={e => this.setActiveTab(e, Tab.BookingOptions)}\n >\n <flow-icon width=\"16\" height=\"16\" />\n {i18next.t('bookingOptionsTab')}\n </button>\n <button\n name={Tab.BookingForm}\n class={{ tab: true, active: this.activeTab == 'bookingForm', hide: this.hideTab(Tab.BookingForm) }}\n part=\"editortab__booking-form net__tab-booking-form\"\n onClick={e => this.setActiveTab(e, Tab.BookingForm)}\n >\n {this.activeTab == Tab.BookingForm ? <calendar-agenda-fill-icon width=\"16\" height=\"16\" /> : <calendar-agenda-icon width=\"16\" height=\"16\" />}\n {i18next.t('bookingFormTab')}\n </button>\n <button\n name={Tab.Communications}\n class={{ tab: true, active: this.activeTab == 'communications', hide: this.hideTab(Tab.Communications) }}\n onClick={e => this.setActiveTab(e, Tab.Communications)}\n part=\"editortab__communications net__tab-communications\"\n >\n {this.activeTab == Tab.Communications ? <envelope-fill-icon width=\"16\" height=\"16\" /> : <envelope-icon width=\"16\" height=\"16\" />}\n {i18next.t('communicationsTab')}\n </button>\n <button\n name={Tab.PageStyles}\n class={{ tab: true, active: this.activeTab == 'pageStyles', hide: this.hideTab(Tab.PageStyles) }}\n onClick={e => this.setActiveTab(e, Tab.PageStyles)}\n part=\"editortab__page-styles net__tab-page-styles\"\n >\n {this.activeTab == Tab.PageStyles ? <paintbrush-fill-icon width=\"16\" height=\"16\" /> : <paintbrush-icon width=\"16\" height=\"16\" />}\n {i18next.t('pageStylesTab')}\n </button>\n </div>\n <div\n class={{\n 'tab-content': true,\n 'fadeIn': this.loaded,\n }}\n part=\"editor__tab-content net__tab-content\"\n >\n <TabContents\n formState={this.formState}\n activeTab={this.activeTab}\n currentUser={this.currentUser}\n calendars={this.calendars}\n id={this.selectedConfiguration?.id ?? 'new'}\n i18next={i18next}\n enableNotetaker={this.enableNotetaker}\n themeConfig={this.themeConfig}\n />\n </div>\n </div>\n ) : (\n <div class=\"composable\" key={this.selectedConfiguration?.id}>\n <slot></slot>\n </div>\n )}\n\n <div class=\"footer\" part=\"editor__footer net__footer\">\n <div class=\"preview\" part=\"editor__footer-preview net__footer-preview\">\n {this.enableUserFeedback && (\n <button-component title=\"Share your feedback\" id=\"report-issue\" variant={'basic'} onClick={e => this.onFeedbackClick(e)}>\n <feedback-icon />\n </button-component>\n )}\n </div>\n <div class=\"buttons\" part=\"editor__footer-buttons net__footer-buttons\">\n <p\n class={{\n 'unsaved-changes': this.hasUnsavedChanges && !this.changesSaved,\n 'saved-changes': this.changesSaved,\n 'error': this.error?.message !== '',\n 'error-full-width': this.error?.message !== '' && this.action === 'create',\n }}\n >\n {this.error?.message == '' && this.hasUnsavedChanges && !this.changesSaved\n ? i18next.t('unsavedChangesLabel')\n : this.error?.message == '' && this.changesSaved\n ? `${i18next.t('changesSavedLabel')}!`\n : ''}\n </p>\n {this.schedulerPreviewLink !== '' && this.action === 'edit' && (\n <button-component\n title=\"Preview\"\n type=\"button\"\n disabled={this.isLoading}\n clickHandler={event => {\n event.preventDefault();\n const previewEvent = this.previewButtonClicked.emit(this.host);\n if (!previewEvent.defaultPrevented) {\n window.open(parsePreviewLink(this.schedulerPreviewLink, this.selectedConfiguration), '_blank');\n }\n }}\n variant={'basic'}\n >\n <eye-icon />\n </button-component>\n )}\n <button-component\n type=\"button\"\n disabled={this.isLoading}\n clickHandler={event => {\n event.preventDefault();\n this.cancelButtonClick.emit();\n this.host.resetError();\n }}\n variant={'basic'}\n part=\"editor__footer-cancel net__footer-cancel\"\n >\n {i18next.t('cancelButton')}\n </button-component>\n <button-component class={{ 'save-changes': this.action === 'edit' }} type=\"submit\" disabled={this.isLoading} part=\"editor__footer-cta, net__footer-cta\">\n {this.isLoading ? (\n <span>\n {i18next.t('savingButtonText')}\n <loading-icon />{' '}\n </span>\n ) : this.action === 'create' ? (\n `${i18next.t('createButtonText')}`\n ) : (\n `${i18next.t('saveChangesButtonText')}`\n )}\n </button-component>\n </div>\n </div>\n </form>\n {this.showFeedbackModal && <nylas-feedback-form></nylas-feedback-form>}\n </Host>\n );\n }\n}\n","import { Fragment, h } from '@stencil/core';\n\nexport enum TabGroup {\n BookingOptions = 'bookingOptions',\n Communications = 'communications',\n BookingForm = 'bookingForm',\n PageStyles = 'pageStyles',\n CalendarView = 'calendarView',\n}\n\nexport type TabGroupContentsProps = {\n id: string;\n formState: any;\n activeTab: TabGroup;\n calendars?: any[];\n currentUser?: any;\n i18next: any;\n};\n\nexport default function TabContentsGroup({ id, formState, activeTab }: TabGroupContentsProps, children: any) {\n return (\n <Fragment>\n {activeTab === TabGroup.CalendarView && (\n <div key={`calendar-view-${id}`} class={{ 'hide': activeTab !== TabGroup.CalendarView, 'calendar-view': true }}>\n <nylas-event-calendar />\n </div>\n )}\n <div key={`booking-options-${id}`} class={{ hide: activeTab !== TabGroup.BookingOptions }}>\n <nylas-scheduling-method\n name=\"availability-method\"\n readOnly={true}\n exportparts=\"nsm, nsm__header, nsm__input-label, nsm__dropdown, nsm__dropdown-button, nsm__dropdown-content\"\n />\n <nylas-custom-booking-flow exportparts={'ncbflow, ncbflow__header, ncbflow__title, ncbflow__content'}>\n <div slot=\"inputs\">\n <nylas-booking-confirmation-type\n name=\"confirmation-type\"\n showComponent={false}\n exportparts={'nbct, nbct__header, nbct__dropdown, nbct__dropdown-button, nbct__dropdown-content'}\n />\n <nylas-booking-confirmation-redirect\n name=\"confirmation-redirect\"\n exportparts={'nbcr, nbcr__header, nbcr__dropdown, nbcr__dropdown-button, nbcr__dropdown-content, nbcr__input-textfield'}\n />\n </div>\n </nylas-custom-booking-flow>\n <nylas-event-limits>\n <div slot=\"inputs\">\n <nylas-min-booking-notice\n name=\"min-booking-notice\"\n exportparts=\"nmbn, nmbn__number-dropdown, nmbn__number-dropdown-button, nmbn__number-dropdown-content, nmbn__period-dropdown, nmbn__period-dropdown-button, nmbn__period-dropdown-content\"\n />\n <nylas-min-cancellation-notice\n name=\"min-cancellation-notice\"\n exportparts=\"nmcn, nmcn__number-dropdown, nmcn__number-dropdown-button, nmcn__number-dropdown-content, nmcn__period-dropdown, nmcn__period-dropdown-button, nmcn__period-dropdown-content\"\n />\n <nylas-cancellation-policy name=\"cancellation-policy\" exportparts=\"ncpolicy, ncpolicy__textarea\" />\n </div>\n </nylas-event-limits>\n <nylas-customize-booking-settings\n showSettings={['hideCancellationOptions', 'hideReschedulingOptions']}\n name=\"customize-booking-settings\"\n exportparts=\"ncbs, ncbs__header, ncbs__settings, ncbs__settings-div, ncbs__additional_guests, ncbs__cancellation_options, ncbs__rescheduling_options\"\n />\n </div>\n <div key={`communications-${id}`} class={{ hide: activeTab !== TabGroup.Communications }}>\n <nylas-disable-emails name=\"disable-emails\" exportparts=\"nde, nde__toggle-label, nde_toggle-input, nde_toggle-slider\" />\n {!formState?.disableEmails && (\n <Fragment>\n <nylas-confirmation-email\n name=\"confirmation-email-template\"\n exportparts={\n 'nce, nce__tab-heading, nce__header, nce__body, nce__confirmation-email-toggle--container, nce__summary, nce__reminder-input_dropdown, nce__reminder-input_dropdown-input, nce__reminder-input_dropdown-content'\n }\n />\n <nylas-reminder-emails\n name=\"reminder-overrides\"\n exportparts={\n 'nre, nre__tab-heading, nre__header, nre__body, nre__confirmation-email-toggle--container, nre__summary, nrt, nrt__number-dropdown, nrt__number-dropdown-button, nrt__number-dropdown-content, nrt__period-dropdown, nrt__period-dropdown-button, nrt__period-dropdown-content, nrt__time-period-selector'\n }\n />\n </Fragment>\n )}\n </div>\n <div key={`page-styles-${id}`} class={{ hide: activeTab !== TabGroup.PageStyles }}>\n <nylas-custom-event-slug name=\"custom-event-slug\" exportparts=\"nces, nces__body, nces__header, nces__drawer-toggle--container, nces__input-textfield\" />\n <nylas-page-name name=\"page-name\" requirePageName={true} exportparts=\"npn, npn__body, npn__header, npn__drawer-toggle--container, npn__input-textfield\" />\n <nylas-page-styling\n name=\"page-styling\"\n exportparts=\"nps, nps__header, nps__drawer-toggle--container, nps__body, nps__title-input-textfield, nps__company-logo-input-textfield, nps__color-picker, nps__color-picker-button, nps__color-picker-button-label, nps__color-picker-selected-label, nps__submit-button-label-input-textfield, nps__message-textarea\"\n >\n {children}\n </nylas-page-styling>\n </div>\n <div key={`booking-form-${id}`} class={{ hide: activeTab !== TabGroup.BookingForm }}>\n <nylas-booking-form-config\n name=\"additional-fields\"\n exportparts=\"nbfc, nbfc__header, nbfc__add_field, nbfc__add_field-button, nbfc__add_field-content, nbfc__static_fields, nbfc__additional_fields, nbfc__form-field, nbfc__form-field-header, nbfc__form-field-content\"\n />\n </div>\n </Fragment>\n );\n}\n","@use '../../../common/styles/variables' as *;\n@use '../../../common/mixins/buttons' as *;\n\n:host {\n display: block;\n @include default-css-variables;\n}\n\n.scheduler-editor {\n display: flex;\n flex-direction: column;\n height: inherit;\n position: relative;\n\n div.return-to-calendar-view {\n display: flex;\n border-bottom: 1px solid var(--nylas-base-200);\n }\n\n .form-contents {\n display: grid;\n grid-template-columns: minmax(224px, 25%) 1fr;\n height: auto;\n overflow-y: auto;\n min-height: calc(100% - 80px - 48px); // 80px is the height of the footer, 48px is the height of the return-to-calendar-view button\n\n @media #{$mobile} {\n display: table-column-group;\n height: auto;\n min-height: calc(100% - 80px - 196px - 48px);\n }\n\n .tabs {\n display: flex;\n flex-direction: column;\n border-right: 1px solid var(--nylas-base-200);\n\n background-color: var(--nylas-base-25);\n\n .tab {\n display: flex;\n align-items: center;\n text-align: left;\n gap: 0.5rem;\n padding: 0.5rem 1rem;\n color: var(--nylas-base-900);\n background: var(--nylas-base-0);\n border: none;\n height: 56px;\n font-family: var(--nylas-font-family);\n font-size: 16px;\n font-weight: 500;\n line-height: 24px;\n cursor: pointer;\n\n &:not(:first-of-type) {\n margin-top: 0.25rem;\n }\n\n &:last-of-type {\n margin-bottom: 0.25rem;\n }\n\n &.active {\n font-weight: 600;\n background: var(--nylas-base-0);\n color: var(--nylas-primary);\n border-left: 4px solid var(--nylas-primary);\n box-shadow: 0px 1px 2px 0px #0000000f;\n box-shadow: 0px 1px 3px 0px #0000001a;\n }\n\n &.hide {\n display: none;\n }\n }\n\n @media #{$mobile} {\n border-right: none;\n }\n }\n\n .tab-content {\n max-width: 692px;\n overflow-y: auto;\n overflow-x: hidden;\n\n .hide {\n display: none;\n }\n\n .calendar-view {\n position: absolute;\n top: 0;\n left: 0;\n height: calc(100% - 80px);\n width: -webkit-fill-available;\n background: var(--nylas-base-0);\n }\n\n nylas-event-info,\n nylas-event-limits {\n width: inherit;\n\n div[slot='inputs'] {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n }\n }\n\n .tab-header {\n display: flex;\n flex-direction: column;\n margin: 1rem 1rem 0.5rem;\n row-gap: 4px;\n\n h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n line-height: 20px;\n color: var(--nylas-base-900);\n text-align: left;\n }\n\n p {\n margin: 0;\n font-size: 0.875rem;\n font-weight: 400;\n line-height: 20px;\n color: var(--nylas-base-600);\n text-align: left;\n }\n }\n }\n }\n}\n\n.footer {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 1rem;\n min-height: 80px;\n padding: 0 1rem;\n border-top: 1px solid var(--nylas-base-200);\n\n @media #{$mobile} {\n flex-direction: column;\n height: auto;\n z-index: 2;\n }\n\n .preview {\n display: flex;\n gap: 16px;\n\n @media #{$mobile} {\n margin-top: 1rem;\n width: 100%;\n }\n\n button-component.page-settings-button {\n min-width: 140px;\n }\n }\n\n .buttons {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n justify-self: flex-end;\n gap: 1rem;\n\n @media #{$mobile} {\n flex-direction: column-reverse;\n width: 100%;\n }\n\n .footer-buttons__row {\n display: flex;\n gap: 16px;\n\n @media #{$mobile} {\n width: 100%;\n\n button-component[title='Preview'] {\n width: 48px;\n }\n }\n }\n\n p {\n max-width: 524px;\n\n &.unsaved-changes {\n color: var(--nylas-base-600);\n }\n\n &.saved-changes {\n color: var(--nylas-success);\n }\n\n &.error {\n color: var(--nylas-error);\n }\n\n &.error-full-width {\n max-width: 660px;\n }\n }\n\n button-component {\n @media #{$mobile} {\n width: 100%;\n }\n }\n\n button {\n @include primary-button;\n width: 148px;\n\n span {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n }\n }\n\n button-component.save-changes {\n min-width: 140px;\n }\n }\n}\n\nbutton-component#report-issue {\n width: auto;\n}\n\nnylas-feedback-form {\n position: absolute;\n top: 0;\n height: 100%;\n width: 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n background: rgba(0, 0, 0, 0.6);\n z-index: 2;\n border-radius: inherit;\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { debug, mergeDeep, parsePreviewLink } from '@/utils/utils';\nimport {\n AdditionalFields,\n Appearance,\n BookingType,\n Calendar,\n Conference,\n Configuration,\n EmailTemplate,\n EventReminder,\n GroupConfiguration,\n GroupEvent,\n GroupEventAPIData,\n ImportGroupEventDetails,\n NotificationType,\n RecurrenceDeleteOption,\n RecurrenceUpdateOption,\n ThemeConfig,\n} from '@nylas/core';\nimport { Component, Element, Event, EventEmitter, Host, Listen, Method, Prop, State, Watch, h } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\nimport TabContentsGroup, { TabGroup } from './tab-contents-group';\nimport { User } from '@/common/nylas-api-request';\nimport { CONFIGURATION_EVENT_TYPE, editorGroupTabComponentNames } from '@/common/constants';\nimport { DataResponseReturnType } from '@/common/types';\nimport * as Sentry from '@sentry/browser';\nimport i18next from '@/utils/i18n';\nimport { LANGUAGE_CODE } from '@/common/constants';\nimport { CreateGroupEventFormState } from '../../..';\nimport { SchedulerGroupEventDetail } from '@nylas/core';\nimport { ErrorCategory, Notification } from '@/types/index';\nimport { version } from '@/version';\n\n/**\n * The nylas-editor-tabs-group component provides the user interface for managing editor tabs within the scheduler editor.\n * It is primarily used to control the edit mode of the scheduler editor, and it is rendered automatically by the\n * parent component, nylas-scheduler-editor, during editing. There is no need to interact with this component directly\n * or set any props manually, as its behavior is fully managed by the parent component.\n *\n * @part nap__title - [nylas-additional-participants] The title of the component.\n * @part nap__subtitle - [nylas-additional-participants] The subtitle of the component.\n * @part nap__content - [nylas-additional-participants] The content of the component.\n * @part nap__input - [nylas-additional-participants] The input of the component.\n * @part nap__remove-participant - [nylas-additional-participants] The remove participant button of the component.\n * @part nap__add-participant - [nylas-additional-participants] The add participant button of the component.\n * @part nap__header - [nylas-availability-picker] The header of the availability picker\n * @part nap__select-timezone - [nylas-availability-picker] The timezone selection container\n * @part nap__select-timezone-button -[nylas-availability-picker] The timezone selection button\n * @part nap__select-timezone-dropdown-content -[nylas-availability-picker] The timezone selection dropdown content\n * @part nap__availability - [nylas-availability-picker] The availability container\n * @part nap__day - [nylas-availability-picker] The day container\n * @part nap__time-ranges - [nylas-availability-picker] The time ranges container\n * @part nap__time-range - [nylas-availability-picker] The time range container\n * @part nap__add-time-range - [nylas-availability-picker] The add time range button\n * @part nap__time-picker-container -[nylas-availability-picker] The time picker container\n * @part nap__time-picker-input - [nylas-availability-picker] The time picker input\n * @part nap__time-picker-times - [nylas-availability-picker] The time picker times\n * @part nbcp - [nylas-booking-calendar-picker] The booking calendar picker container\n * @part nbcp__header - [nylas-booking-calendar-picker] The header of the booking calendar picker\n * @part nbcp__input-label - [nylas-booking-calendar-picker] The input label of the booking calendar picker\n * @part nbcp__dropdown - [nylas-booking-calendar-picker] The dropdown container\n * @part nbcp__dropdown-button - [nylas-booking-calendar-picker] The dropdown button\n * @part nbcp__dropdown-content - [nylas-booking-calendar-picker] The dropdown content\n * @part nbt - [nylas-buffer-time] The buffer time container\n * @part nbt__header - [nylas-buffer-time] The header of the buffer time\n * @part nbt__body - [nylas-buffer-time] The body of the buffer time\n * @part nbt__dropdown-before - [nylas-buffer-time] The before buffer dropdown container\n * @part nbt__dropdown-button-before - [nylas-buffer-time] The before buffer dropdown button\n * @part nbt__dropdown-content-before - [nylas-buffer-time] The before buffer dropdown content\n * @part nbt__dropdown-after - [nylas-buffer-time] The after buffer dropdown container\n * @part nbt__dropdown-button-after - [nylas-buffer-time] The after buffer dropdown button\n * @part nbt__dropdown-content-after - [nylas-buffer-time] The after buffer dropdown content\n * @part nbt__preview - [nylas-buffer-time] The buffer time preview\n * @part ncp - [nylas-calendar-picker] The calendar picker container\n * @part ncp__header - [nylas-calendar-picker] The header of the calendar picker\n * @part ncp__dropdown - [nylas-calendar-picker] The dropdown container\n * @part ncp__dropdown-button - [nylas-calendar-picker] The dropdown button\n * @part ncp__dropdown-content - [nylas-calendar-picker] The dropdown content\n * @part ncbf - [nylas-custom-booking-flow] The custom booking flow container\n * @part ncbf__header - [nylas-custom-booking-flow] The header of the custom booking flow\n * @part ncbf__dropdown - [nylas-custom-booking-flow] The dropdown container\n * @part ncbf__dropdown-button - [nylas-custom-booking-flow] The dropdown button\n * @part ncbf__dropdown-content - [nylas-custom-booking-flow] The dropdown content\n * @part nedesc - [nylas-event-description] The event description container\n * @part nedesc__textarea - [nylas-event-description] The event description textarea\n * @part ned - [nylas-event-duration] The event duration container\n * @part ned__dropdown - [nylas-event-duration] The dropdown container for the duration increment\n * @part ned__dropdown-button - [nylas-event-duration] The dropdown button for the duration increment\n * @part ned__dropdown-content - [nylas-event-duration] The dropdown content for the duration increment\n * @part ned__input_dropdown - [nylas-event-duration] The input dropdown container for the duration minutes\n * @part ned__input_dropdown-input - [nylas-event-duration] The input for the duration minutes\n * @part ned__input_dropdown-content - [nylas-event-duration] The dropdown content for the input duration minutes\n * @part net - [nylas-event-title] The event title container\n * @part net__title - [nylas-event-title] The event title input\n * @part net__dropdown-content - [nylas-event-title] The token options container\n * @part nlfb - [nylas-limit-future-bookings] The limit future bookings container\n * @part nlfb__number-dropdown - [nylas-limit-future-bookings] The number dropdown container\n * @part nlfb__number-dropdown-button - [nylas-limit-future-bookings] The number dropdown button\n * @part nlfb__number-dropdown-content - [nylas-limit-future-bookings] The number dropdown content\n * @part nlfb__period-dropdown - [nylas-limit-future-bookings] The period dropdown container\n * @part nlfb__period-dropdown-button - [nylas-limit-future-bookings] The period dropdown button\n * @part nlfb__period-dropdown-content - [nylas-limit-future-bookings] The period dropdown content\n * @part nel - [nylas-event-location] The event location container\n * @part nel__location - [nylas-event-location] The event location input\n * @part nel__dropdown - [nylas-event-location] The dropdown container\n * @part nel__dropdown-button - [nylas-event-location] The dropdown button\n * @part nel__dropdown-content - [nylas-event-location] The dropdown content\n * @part nmbn - [nylas-min-booking-notice] The minimum booking notice container\n * @part nmbn__number-dropdown - [nylas-min-booking-notice] The number dropdown container\n * @part nmbn__number-dropdown-button - [nylas-min-booking-notice] The number dropdown button\n * @part nmbn__number-dropdown-content -[nylas-min-booking-notice] The number dropdown content\n * @part nmbn__period-dropdown - [nylas-min-booking-notice] The period dropdown container\n * @part nmbn__period-dropdown-button - [nylas-min-booking-notice] The period dropdown button\n * @part nmbn__period-dropdown-content - [nylas-min-booking-notice] The period dropdown content\n * @part nmcn - [nylas-min-cancellation-notice] The minimum cancellation notice container\n * @part nmcn__number-dropdown - [nylas-min-cancellation-notice] The number dropdown container\n * @part nmcn__number-dropdown-button - [nylas-min-cancellation-notice] The number dropdown button\n * @part nmcn__number-dropdown-content - [nylas-min-cancellation-notice] The number dropdown content\n * @part nmcn__period-dropdown - [nylas-min-cancellation-notice] The period dropdown container\n * @part nmcn__period-dropdown-button - [nylas-min-cancellation-notice] The period dropdown button\n * @part nmcn__period-dropdown-content - [nylas-min-cancellation-notice] The period dropdown content\n * @part ncpolicy - [nylas-cancellation-policy] The cancellation policy container\n * @part ncpolicy__textarea - [nylas-cancellation-policy] The cancellation policy textarea\n * @part nti - [nylas-timeslot-interval] The timeslot interval container\n * @part nti__header - [nylas-timeslot-interval] The header of the timeslot interval picker\n * @part nti__input-label - [nylas-timeslot-interval] The input label of the timeslot interval picker\n * @part nti__dropdown - [nylas-timeslot-interval] The dropdown container\n * @part nti__dropdown-button - [nylas-timeslot-interval] The dropdown button\n * @part nti__dropdown-content - [nylas-timeslot-interval] The dropdown content\n * @part npca - [nylas-participants-custom-availability] The participants custom availability container\n * @part npca__header - [nylas-participants-custom-availability] The header of the participants custom availability\n * @part npca__content - [nylas-participants-custom-availability] The content of the participants custom availability\n * @part npca__participant-container - [nylas-participants-custom-availability] The participant container\n * @part npca__participant-title - [nylas-participants-custom-availability] The participant title\n * @part npca__participant-toggle--container - [nylas-participants-custom-availability] The participant toggle container\n * @part npca__toggle-label - [nylas-participants-custom-availability] The toggle label\n * @part npca__toggle-input - [nylas-participants-custom-availability] The toggle input\n * @part npca__toggle-slider - [nylas-participants-custom-availability] The toggle slider\n * @part ncbs - [nylas-customize-booking-settings] The booking calendar picker container\n * @part ncbs__header - [nylas-customize-booking-settings] The header of the booking calendar picker\n * @part ncbs__settings - [nylas-customize-booking-settings] The settings container\n * @part ncbs__settings-div - [nylas-customize-booking-settings] The div inside the settings container that contains the checkbox and tooltip for each setting\n * @part ncbs__additional_guests - [nylas-customize-booking-settings] The additional guests setting\n * @part ncbs__cancellation_options - [nylas-customize-booking-settings] The cancellation options setting\n * @part ncbs__rescheduling_options - [nylas-customize-booking-settings] The rescheduling options setting\n * @part nsm - [nylas-scheduling-method] The booking calendar picker container\n * @part nsm__header - [nylas-scheduling-method] The header of the booking calendar picker\n * @part nsm__input-label - [nylas-scheduling-method] The input label of the booking calendar picker\n * @part nsm__dropdown - [nylas-scheduling-method] The dropdown container\n * @part nsm__dropdown-button - [nylas-scheduling-method] The dropdown button\n * @part nsm__dropdown-content - [nylas-scheduling-method] The dropdown content\n * @part npn - The nylas-page-name container\n * @part npn__body - The body of the event communication section\n * @part npn__header - The header of the event communication section\n * @part npn__drawer-toggle--container - The card's drawer toggle container\n * @part npn__input-textfield - The page name textfield\n * @part editor__form-contents - The form contents container\n * @part editor__tab - The tabs container\n * @part editor__tab-content - The tab content container\n * @part editor__footer - The footer container\n * @part editor__footer-preview - The preview button container\n * @part editor__footer-buttons - The buttons container\n */\n@Component({\n tag: 'nylas-editor-tabs-group',\n styleUrl: 'nylas-editor-tabs-group.scss',\n scoped: true,\n})\nexport class NylasEditorTabsGroup {\n /**\n * The form reference to access the form data.\n */\n private formRef!: HTMLFormElement;\n /**\n * The host element.\n */\n @Element() host!: HTMLNylasEditorTabsGroupElement;\n // Props\n /**\n * @standalone\n * The list of calendars to use in the editor when configuring availability.\n */\n @Prop() calendars?: Calendar[];\n /**\n * @standalone\n * The selected configuration to use in the editor when editing an existing configuration or creating a new one.\n */\n @Prop() selectedConfiguration?: GroupConfiguration;\n\n /**\n * @standalone\n * The list of configurations\n */\n @Prop() configurations?: (Configuration | GroupConfiguration)[];\n\n /**\n * @standalone\n * The current logged in user.\n */\n @Prop() currentUser?: User;\n /**\n * @standalone\n * The scheduler preview link to use when the user clicks on the preview button.\n * You can use a placeholder `{config.id}` to replace the configuration id anywhere in the link.\n */\n @Prop({ attribute: 'scheduler-preview-link' }) schedulerPreviewLink: string = '';\n /**\n * @standalone\n * The mode of the editor.\n * - `app`: The editor is used as a standalone app.\n * - `composable`: The editor is used as a composable component.\n */\n @Prop() mode?: 'app' | 'composable' = 'app';\n /**\n * @standalone\n * This prop is passed down by the parent component.\n * It is an optional prop is used to hide tabs in the editor. Available tabs are:\n * eventInfo, availability, participants, bookingOptions, bookingForm\n */\n @Prop() hideEditorTabs?: TabGroup[] = [];\n /**\n * @standalone\n * This prop is passed down by the parent component to enable or disable user feedback.\n */\n @Prop() enableUserFeedback?: boolean = true;\n\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: LANGUAGE_CODE;\n\n /**\n * The selected event type.\n */\n @Prop() selectedEventType?: CONFIGURATION_EVENT_TYPE;\n\n /**\n * The selected group event.\n */\n @Prop() selectedGroupEvent?: GroupEventAPIData;\n\n /**\n * @standalone\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: ThemeConfig;\n\n // State\n /**\n * The action to perform in the editor.\n * - `create`: Create a new configuration.\n * - `edit`: Edit an existing configuration.\n */\n @State() action: 'create' | 'edit' = 'create';\n /**\n * The state for showing the feedback modal.\n */\n @State() showFeedbackModal: boolean = false;\n /**\n * The active tab in the editor.\n */\n @State() activeTab: TabGroup = TabGroup.CalendarView;\n /**\n * The loading state of the editor.\n */\n @State() isLoading: boolean = false;\n /**\n * The component loaded state of the editor.\n */\n @State() componentLoaded: boolean = false;\n /**\n * The unsaved changes state of the editor.\n */\n @State() hasUnsavedChanges: boolean = false;\n /**\n * The changes saved state of the editor.\n */\n @State() changesSaved: boolean = false;\n /**\n * The form state of the editor.\n */\n @State() formState: Partial<{\n title: string;\n description: string;\n participants: {\n name: string;\n email: string;\n is_organizer?: boolean;\n }[];\n additionalFields?: Record<string, AdditionalFields>;\n bookingCalendar?: string;\n location?: string;\n conferencing?: Conference;\n bookingType?: string;\n cancellationPolicy?: string;\n minCancellationNotice?: number;\n minBookingNotice?: number;\n hideCancellationOptions?: boolean;\n hideReschedulingOptions?: boolean;\n reminders?: EventReminder[];\n emailTemplate?: EmailTemplate;\n redirectUrl?: string;\n slug: string;\n appearance: Appearance;\n name: string;\n eventCapacity: number;\n eventTimeslot: {\n when: {\n start_time: number;\n end_time: number;\n start_timezone: string;\n end_timezone: string;\n };\n recurrence: string[];\n };\n disableEmails?: boolean;\n organizerLocale?: string;\n }> = {};\n /**\n * The error state of the editor.\n */\n @State() error?: {\n message: string;\n type: NotificationType | undefined;\n category: ErrorCategory | undefined;\n title: string;\n } = {\n message: '',\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: '',\n };\n\n // Events\n /**\n * Event emitted when the group scheduler configuration form is submitted and ready to be processed (before the API request is made). This fires for both create and edit actions after client-side validation passes.\n */\n @Event() schedulerConfigChanged!: EventEmitter<SchedulerGroupEventDetail & { host: HTMLNylasEditorTabsGroupElement }>;\n /**\n * Event emitted when a group scheduler configuration is successfully created via the API. This fires only for create actions after the API request completes successfully.\n */\n @Event() schedulerConfigCreated!: EventEmitter<SchedulerGroupEventDetail & { host: HTMLNylasEditorTabsGroupElement }>;\n /**\n * Event emitted when the user clicks the cancel button to exit the group scheduler editor.\n */\n @Event() cancelButtonClick!: EventEmitter<void>;\n /**\n * Event emitted at the very beginning of form submission, before any validation occurs. This event is cancelable and can prevent the submission process if preventDefault() is called.\n */\n @Event({ bubbles: true, cancelable: true }) formSubmitted!: EventEmitter<void>;\n /**\n * Event emitted when the user clicks the preview button. This fires before the preview link is opened and can be used to override the default preview behavior.\n */\n @Event() previewButtonClicked!: EventEmitter<HTMLNylasEditorTabsGroupElement>;\n /**\n * Event emitted whenever any form field value changes within the group scheduler editor. This provides real-time updates as users modify form inputs.\n */\n @Event() schedulerEditorFormUpdated!: EventEmitter<{ value: string; name: string }>;\n\n /**\n * Event emitted when the user requests to create a new group event in the calendar view. This fires when the create button is clicked and validation passes.\n */\n @Event() groupEventCreateTriggered!: EventEmitter<{ groupEvent: Partial<GroupEvent>; configId: string; host: HTMLNylasEditorTabsGroupElement }>;\n\n /**\n * Event emitted when the user requests to save changes to an existing group event. This fires after validation passes and includes the recurrence update option chosen by the user.\n */\n @Event() groupEventUpdateTriggered!: EventEmitter<{\n groupEvent: GroupEvent;\n chosenOption: RecurrenceUpdateOption;\n configId: string;\n host: HTMLNylasEditorTabsGroupElement;\n }>;\n\n /**\n * Event emitted when the user requests to delete a group event. This fires when the delete button is clicked and includes the recurrence delete option chosen by the user.\n */\n @Event() groupEventDeleteTriggered!: EventEmitter<{\n groupEvent: GroupEvent;\n chosenOption: RecurrenceDeleteOption;\n configId: string;\n host: HTMLNylasEditorTabsGroupElement;\n }>;\n\n /**\n * Event emitted when the user requests to import group events from an external source. This fires when the import action is triggered in the calendar view.\n */\n @Event() groupEventImportTriggered!: EventEmitter<{\n groupEvent: ImportGroupEventDetails;\n configId: string;\n host: HTMLNylasEditorTabsGroupElement;\n }>;\n\n /**\n * Event emitted when validation errors prevent saving changes to a group event. This provides error details for handling failed save attempts.\n */\n @Event() saveGroupEventChangesError!: EventEmitter<{\n error: string;\n configId: string;\n host: HTMLNylasEditorTabsGroupElement;\n }>;\n\n /**\n * Event emitted when the component needs to display an error notification to the user. This includes validation errors, API errors, and other component-level errors.\n */\n @Event({ cancelable: false }) readonly nylasSchedulerError!: EventEmitter<{ notification: Notification; host: HTMLElement }>;\n\n /**\n * Event emitted when the user dismisses an error notification, allowing parent components to handle cleanup or additional actions.\n */\n @Event({ cancelable: false }) dismissNotification!: EventEmitter<{ id: string; host: HTMLNylasEditorTabsGroupElement }>;\n\n // Watchers\n /**\n * Watches for changes in the selected configuration and updates the form state.\n */\n @Watch('selectedConfiguration')\n configChangedHandler(newConfig: GroupConfiguration) {\n debug('[nylas-editor-tabs-group]', 'configChangedHandler', newConfig, this.selectedConfiguration);\n this.formState = {\n ...this.getFormStateFromConfig(newConfig),\n };\n if (newConfig?.id) {\n this.action = 'edit';\n } else {\n this.action = 'create';\n }\n }\n\n /**\n * Watches for changes in the selected group event and updates the form state.\n */\n @Watch('selectedGroupEvent')\n selectedGroupEventChangedHandler(newConfig: GroupEventAPIData) {\n debug('[nylas-editor-tabs-group]', 'selectedGroupEventChangedHandler', newConfig, this.selectedConfiguration);\n this.formState = {\n ...this.formState,\n title: this.selectedGroupEvent?.event?.title,\n description: this.selectedGroupEvent?.event?.description,\n location: this.selectedGroupEvent?.event?.location,\n conferencing: this.selectedGroupEvent?.event?.conferencing,\n eventCapacity: this.selectedGroupEvent?.group_event_info?.capacity,\n participants: this.selectedGroupEvent?.group_event_info?.participants?.map(participant => ({\n name: participant.name,\n email: participant.email,\n is_organizer: !!participant.is_organizer,\n })),\n eventTimeslot: this.selectedGroupEvent?.event?.when\n ? {\n when: {\n start_time: this.selectedGroupEvent?.event?.when?.start_time as number,\n end_time: this.selectedGroupEvent?.event?.when?.end_time as number,\n start_timezone: this.selectedGroupEvent?.event?.when?.start_timezone as string,\n end_timezone: this.selectedGroupEvent?.event?.when?.end_timezone as string,\n },\n recurrence: this.selectedGroupEvent?.group_event_info?.rrule ? this.selectedGroupEvent?.group_event_info?.rrule : [],\n }\n : undefined,\n };\n }\n\n /**\n * Watches for changes in the current user and updates the form state.\n */\n @Watch('currentUser')\n userChangedHandler(newUser: User) {\n // Actively watch for changes in the current user to update the form state.\n debug('[nylas-editor-tabs-group]', 'userChangedHandler', newUser);\n if (newUser) {\n this.formState = {\n ...this.getFormStateFromConfig(this.selectedConfiguration),\n };\n }\n }\n\n /**\n * Watches for changes in the selected language and updates the form state.\n */\n @Watch('selectedLanguage')\n selectedLanguageChangedHandler(newVal: LANGUAGE_CODE, oldVal: LANGUAGE_CODE) {\n if (newVal === oldVal) return;\n i18next.changeLanguage(newVal);\n if (this.error && this.error.message) {\n this.error = {\n ...this.error,\n message: i18next.t('fixFormErrors'),\n };\n this.showErrorNotification(this.error);\n }\n }\n\n @Watch('themeConfig')\n themeConfigChangedHandler(newVal: ThemeConfig, oldVal: ThemeConfig) {\n if (newVal === oldVal) return;\n this.applyThemeConfig(newVal);\n }\n\n applyThemeConfig(themeConfig?: ThemeConfig) {\n if (themeConfig) {\n for (const [key, value] of Object.entries(themeConfig)) {\n this.host.style.setProperty(`${key}`, value);\n }\n }\n }\n\n // Methods\n /**\n * Event handler for the scheduler config created event.\n */\n @Method()\n async schedulerConfigCreatedEventHandler(data: SchedulerGroupEventDetail & { host: HTMLNylasEditorTabsGroupElement }) {\n const event = this.schedulerConfigCreated.emit(data);\n return event;\n }\n\n /**\n * Sets the error state of the editor.\n */\n @Method()\n async setError(error: { message: string; type: NotificationType; category: ErrorCategory; title: string }) {\n this.error = {\n message: error.message,\n type: error.type,\n category: error.category,\n title: error.title || i18next.t('genericErrorTitle'),\n };\n if (this.error?.message) {\n this.showErrorNotification(this.error);\n }\n }\n\n /**\n * Resets the error state of the editor.\n */\n @Method()\n async resetError() {\n if (this.error?.message) {\n this.dismissNotification.emit({ id: this.error?.message.split(' ').join('-'), host: this.host });\n }\n this.error = {\n message: '',\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: '',\n };\n }\n\n // Lifecycle methods\n connectedCallback() {\n debug('[nylas-editor-tabs-group]', 'connectedCallback');\n // Use queueMicrotask to defer theme application until after React has set props.\n // This fixes the timing issue where connectedCallback fires before React sets themeConfig.\n queueMicrotask(() => {\n if (this.themeConfig) {\n this.applyThemeConfig(this.themeConfig);\n this.host.setAttribute('data-themed', '');\n }\n });\n }\n\n componentWillLoad() {\n debug('[nylas-editor-tabs-group]', 'componentWillLoad');\n this.formState = this.getFormStateFromConfig(this.selectedConfiguration);\n }\n\n componentDidLoad() {\n debug('[nylas-editor-tabs-group]', 'componentDidLoad');\n if (this.enableUserFeedback && !Sentry.isInitialized()) {\n Sentry.init({\n dsn: 'https://9d5731f1c77ca84c9ed3fb9b3ccf7ee1@o74852.ingest.us.sentry.io/4507889638178816',\n release: version,\n integrations: integrations => [\n ...integrations.filter(_integration => false), // Removes default integrations (including Breadcrumbs)\n Sentry.feedbackIntegration({\n colorScheme: 'system',\n autoInject: false,\n }),\n ],\n // Disable all other event capture\n autoSessionTracking: false, // Disable session tracking\n beforeSend: () => null, // Prevents error events from being sent\n });\n }\n if (this.selectedConfiguration?.id) {\n this.configChangedHandler(this.selectedConfiguration);\n }\n const firstVisibleTab = (this.host.querySelector('button.tab:not(.hide)') as HTMLButtonElement)?.name as TabGroup;\n if (firstVisibleTab && this.hideEditorTabs?.includes(this.activeTab)) {\n this.activeTab = firstVisibleTab;\n }\n this.updateFormState();\n this.componentLoaded = true;\n }\n\n disconnectedCallback() {\n debug('[nylas-editor-tabs-group]', 'disconnectedCallback');\n }\n\n // Event listeners\n /**\n * Event listener for the value changed event.\n */\n @Listen('valueChanged')\n handleValueChanged(event: CustomEvent) {\n debug('[nylas-editor-tabs-group]', 'handleValueChanged', event);\n const { name, value } = event.detail;\n debug('name', name, 'value', value);\n this.setFormState(value, name);\n this.formState = { ...this.formState };\n if (editorGroupTabComponentNames.includes(name)) {\n this.hasUnsavedChanges = true;\n }\n this.host.resetError();\n this.schedulerEditorFormUpdated.emit({\n value: event.detail.value,\n name: event.detail.name,\n });\n }\n\n /**\n * Event listener for the feedback modal closed event.\n */\n @Listen('feedbackModalClosed')\n feedbackModalClosedHandler() {\n this.showFeedbackModal = false;\n }\n\n /**\n * Event listener for the feedback submitted event.\n */\n @Listen('feedbackSubmitted')\n feedbackSubmittedHandler(event: CustomEvent<{ feedback: string }>) {\n const eventId = Sentry.captureMessage('Scheduler Editor User Feedback');\n const feedback = {\n eventId: eventId,\n message: event.detail.feedback,\n };\n\n Sentry.captureFeedback(feedback, {\n includeReplay: true,\n captureContext: {\n tags: {\n 'nylas-web-element': 'nylas-scheduler-editor',\n 'nylas-web-element-version': version,\n },\n extra: {\n configId: this.selectedConfiguration?.id,\n slug: this.selectedConfiguration?.slug,\n },\n },\n });\n this.showFeedbackModal = false;\n }\n\n /**\n * Event listener for the import group event event.\n */\n @Listen('importGroupEvent')\n importGroupEventHandler(event: CustomEvent<ImportGroupEventDetails>) {\n this.groupEventImportTriggered.emit({ groupEvent: event.detail, configId: this.selectedConfiguration?.id ?? '', host: this.host });\n }\n\n /**\n * Event listener for the save group event changes event.\n */\n @Listen('saveGroupEventChanges')\n saveGroupEventChangesHandler(event: CustomEvent<{ data: GroupEventAPIData; action: RecurrenceUpdateOption }>) {\n debug('saveGroupEventChangesHandler', event.detail, this.selectedGroupEvent);\n const valid = this.formRef.checkValidity();\n const groupEvent = this.getGroupEventDetailsFromFormState();\n this.resetError();\n if (!groupEvent.title) {\n this.setError({\n message: i18next.t('nylasEditorTabsGroup.eventTitleRequired'),\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: i18next.t('nylasEditorTabs.formErrorTitle'),\n });\n }\n if (!groupEvent.when?.start_time || !groupEvent.when?.end_time) {\n this.setError({\n message: i18next.t('nylasEditorTabsGroup.eventTimeRequired'),\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: i18next.t('nylasEditorTabs.formErrorTitle'),\n });\n }\n if (!groupEvent.participants?.length) {\n this.setError({\n message: i18next.t('nylasEditorTabsGroup.participantsRequired'),\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: i18next.t('nylasEditorTabs.formErrorTitle'),\n });\n }\n if (groupEvent.participants?.length && groupEvent.participants?.some(p => !p.email)) {\n this.setError({\n message: i18next.t('nylasEditorTabsGroup.participantEmailRequired'),\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: i18next.t('nylasEditorTabs.formErrorTitle'),\n });\n }\n if (this.error?.message !== '' || !valid) {\n this.saveGroupEventChangesError.emit({\n error: this.error?.message ?? i18next.t('nylasEditorTabsGroup.errorOccured'),\n configId: this.selectedConfiguration?.id ?? '',\n host: this.host,\n });\n return;\n }\n\n this.groupEventUpdateTriggered.emit({\n groupEvent: groupEvent,\n chosenOption: event.detail.action,\n configId: this.selectedConfiguration?.id ?? '',\n host: this.host,\n });\n }\n\n /**\n * Event listener for the delete group event event.\n */\n @Listen('deleteGroupEvent')\n deleteGroupEventHandler(event: CustomEvent<{ data: GroupEventAPIData; action: RecurrenceDeleteOption }>) {\n debug('deleteGroupEventHandler', event.detail);\n const groupEvent = this.getGroupEventDetailsFromFormState();\n this.groupEventDeleteTriggered.emit({\n groupEvent: groupEvent,\n chosenOption: event.detail.action,\n configId: this.selectedConfiguration?.id ?? '',\n host: this.host,\n });\n }\n\n /**\n * Event listener for the create group event event.\n */\n @Listen('createGroupEvent')\n createGroupEventHandler(event: CustomEvent<CreateGroupEventFormState>) {\n const formState = event.detail;\n const organizer = {\n name: this.currentUser?.name ?? this.currentUser?.email ?? '',\n email: this.currentUser?.email ?? '',\n };\n const organizerDefaultCal = this.calendars?.find(c => c.is_primary) ?? this.calendars?.[0];\n const conferencing = this.formState?.conferencing || formState.conferencing;\n const groupEvent = {\n title: formState.title,\n description: formState.description,\n location: !conferencing ? formState.location : undefined,\n participants: formState.participants,\n organizer: organizer,\n conferencing: !formState.location ? conferencing : undefined,\n when: formState.eventTimeslot.when,\n recurrence: formState.eventTimeslot.recurrence,\n calendar_id: organizerDefaultCal?.id || 'primary',\n capacity: formState.eventCapacity,\n };\n this.groupEventCreateTriggered.emit({ groupEvent, configId: this.selectedConfiguration?.id ?? '', host: this.host });\n }\n\n showErrorNotification(error: { message: string; type: NotificationType | undefined; category: ErrorCategory | undefined; title: string }) {\n this.nylasSchedulerError.emit({\n notification: {\n title: error.title,\n category: error.category || ErrorCategory.Component,\n type: error.type || NotificationType.Error,\n description: error.message,\n id: error.message.split(' ').join('-'),\n ttl: 'none',\n },\n host: this.host,\n });\n }\n\n /**\n * Gets the group event details from the form state.\n */\n getGroupEventDetailsFromFormState() {\n const organizerDefaultCal = this.calendars?.find(c => c.is_primary) ?? this.calendars?.[0];\n const organizer = {\n name: this.currentUser?.name ?? this.currentUser?.email ?? '',\n email: this.currentUser?.email ?? '',\n };\n const participantOrganizer = [{ ...organizer, is_organizer: true }];\n const { title, description, bookingCalendar, location, conferencing, eventCapacity, eventTimeslot, participants } = this.formState;\n\n return {\n title: title,\n description: description,\n location: !conferencing ? location : undefined,\n conferencing: !location ? conferencing : undefined,\n when: {\n start_time: eventTimeslot?.when?.start_time ?? 0,\n end_time: eventTimeslot?.when?.end_time ?? 0,\n start_timezone: eventTimeslot?.when?.start_timezone ?? '',\n end_timezone: eventTimeslot?.when?.end_timezone ?? '',\n },\n recurrence: eventTimeslot?.recurrence ?? [],\n calendar_id: bookingCalendar || organizerDefaultCal?.id || 'primary',\n participants: participants?.length ? participants : participantOrganizer,\n organizer: organizer,\n capacity: eventCapacity || 10,\n } as any;\n }\n\n /**\n * Gets the form state from the selected configuration.\n */\n getFormStateFromConfig(config?: GroupConfiguration) {\n if (config?.appearance) {\n debug('Appearance settings have been returned from the given configuration; please remember to grab them from the configSettingsLoaded event and apply them as desired.');\n }\n return {\n additionalFields: config?.scheduler?.additional_fields ?? {},\n bookingType: config?.group_booking?.booking_type ?? 'booking',\n cancellationPolicy: config?.scheduler?.cancellation_policy ?? '',\n minCancellationNotice: config?.scheduler?.min_cancellation_notice ?? 0,\n minBookingNotice: config?.scheduler?.min_booking_notice ?? 60,\n hideCancellationOptions: config?.scheduler?.hide_cancellation_options ?? false,\n hideReschedulingOptions: config?.scheduler?.hide_rescheduling_options ?? false,\n reminders: config?.group_booking?.reminders,\n emailTemplate: config?.scheduler?.email_template,\n redirectUrl: config?.scheduler?.confirmation_redirect_url,\n slug: config?.slug,\n appearance: config?.appearance,\n name: config?.name,\n bookingCalendar: config?.group_booking?.calendar_id,\n disableEmails: config?.group_booking?.disable_emails,\n organizerLocale: config?.scheduler?.email_template?.organizer_locale,\n };\n }\n\n /**\n * Sets the form state from the form data.\n */\n setFormState(value, key) {\n switch (key) {\n case 'title':\n this.formState.title = value.toString();\n break;\n case 'description':\n this.formState.description = value.toString();\n break;\n case 'location':\n this.formState.location = value.toString();\n break;\n case 'conference':\n this.formState.conferencing = JSON.parse(value.toString());\n break;\n case 'confirmation-type':\n this.formState.bookingType = value.toString();\n break;\n case 'min-cancellation-notice':\n this.formState.minCancellationNotice = parseInt(value.toString());\n break;\n case 'min-booking-notice':\n this.formState.minBookingNotice = parseInt(value.toString());\n break;\n case 'cancellation-policy':\n this.formState.cancellationPolicy = value.toString();\n break;\n case 'customize-booking-settings': {\n const settings = JSON.parse(value.toString());\n this.formState.hideCancellationOptions = settings.hideCancellationOptions;\n this.formState.hideReschedulingOptions = settings.hideReschedulingOptions;\n break;\n }\n case 'booking-calendar':\n this.formState.bookingCalendar = value.toString();\n break;\n case 'event-capacity':\n this.formState.eventCapacity = parseInt(String(value));\n break;\n case 'additional-fields':\n this.formState.additionalFields = JSON.parse(value.toString());\n break;\n case 'confirmation-email-template':\n this.formState.emailTemplate = JSON.parse(value.toString());\n break;\n case 'reminder-overrides':\n this.formState.reminders = JSON.parse(value.toString());\n break;\n case 'confirmation-redirect':\n this.formState.redirectUrl = value.toString();\n break;\n case 'custom-event-slug':\n debug('custom-event-slug', value);\n this.formState.slug = JSON.parse(value.toString());\n break;\n case 'page-styling':\n this.formState.appearance = JSON.parse(value.toString());\n break;\n case 'page-name':\n this.formState.name = JSON.parse(value.toString());\n break;\n case 'participants': {\n const participants = JSON.parse(value.toString());\n this.formState.participants = participants.map(participant => ({\n name: participant.name,\n email: participant.email,\n is_organizer: participant.is_organizer,\n }));\n break;\n }\n case 'event-timeslot':\n this.formState.eventTimeslot = JSON.parse(value.toString());\n break;\n case 'disable-emails': {\n const { disableEmails, organizerLocale } = JSON.parse(value.toString());\n this.formState.disableEmails = disableEmails;\n this.formState.organizerLocale = organizerLocale;\n break;\n }\n }\n this.schedulerEditorFormUpdated.emit({\n value,\n name: key,\n });\n }\n\n /**\n * Updates the form state from the form data.\n */\n updateFormState() {\n const formData = new FormData(this.formRef);\n formData.forEach((value, key) => {\n this.setFormState(value, key);\n });\n\n this.formState = { ...this.formState };\n return this.formState;\n }\n\n /**\n * Sets the active tab.\n */\n setActiveTab(e: Event, tabName: TabGroup) {\n e.preventDefault();\n this.updateFormState();\n this.activeTab = tabName;\n }\n\n /**\n * Handles the form submission.\n */\n formSubmissionHandler = async (event: Event) => {\n event.preventDefault();\n const formEvent = await this.formSubmitted.emit();\n debug('[nylas-editor-tabs-group]', 'formSubmissionHandler', formEvent);\n const valid = this.formRef.checkValidity();\n if (!valid || formEvent.defaultPrevented) {\n await this.host.setError({\n message: this.formRef.validationMessage || i18next.t('fixFormErrors'),\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: i18next.t('nylasEditorTabs.formErrorTitle'),\n });\n return;\n }\n this.isLoading = true;\n this.hasUnsavedChanges = false;\n const formState = this.updateFormState();\n debug('[nylas-editor-tabs-group]', 'formState', formState);\n const {\n title,\n description,\n bookingCalendar,\n location,\n bookingType,\n minCancellationNotice,\n minBookingNotice,\n cancellationPolicy,\n hideCancellationOptions,\n hideReschedulingOptions,\n additionalFields,\n conferencing,\n reminders,\n emailTemplate,\n redirectUrl,\n slug,\n appearance,\n name,\n eventCapacity,\n eventTimeslot,\n participants,\n disableEmails,\n organizerLocale,\n } = formState;\n\n const configObject: Partial<GroupConfiguration> = {\n ...(this.selectedConfiguration?.id && { id: this.selectedConfiguration.id }),\n slug: slug,\n name: name,\n type: this.selectedEventType === CONFIGURATION_EVENT_TYPE.group ? CONFIGURATION_EVENT_TYPE.group : undefined,\n scheduler: {\n cancellation_policy: cancellationPolicy ?? '',\n min_cancellation_notice: minCancellationNotice ?? 0,\n min_booking_notice: minBookingNotice ?? 60,\n hide_cancellation_options: hideCancellationOptions ?? false,\n hide_rescheduling_options: hideReschedulingOptions ?? false,\n additional_fields: additionalFields,\n email_template: emailTemplate\n ? {\n ...emailTemplate,\n organizer_locale: organizerLocale || 'en',\n logo: emailTemplate.logo || '',\n }\n : undefined,\n confirmation_redirect_url: redirectUrl,\n },\n appearance: appearance,\n group_booking: {\n booking_type: bookingType ? (bookingType as BookingType) : 'booking',\n disable_emails: typeof disableEmails === 'boolean' ? disableEmails : false,\n reminders: reminders,\n conferencing: conferencing,\n calendar_id: bookingCalendar || 'primary',\n default_capacity: eventCapacity || 10,\n },\n };\n\n const configObjectWithDeveloperSettings = mergeDeep(this.selectedConfiguration, configObject || {});\n\n const finalConfig = this.action === 'create' ? configObjectWithDeveloperSettings : configObject;\n // Ensure the following properties are not included in the final config for group events\n delete finalConfig.availability;\n delete finalConfig.participants;\n delete finalConfig.event_booking;\n const resetLoadingState = (_e: CustomEvent) => {\n this.isLoading = false;\n this.changesSaved = true;\n setTimeout(() => {\n this.changesSaved = false;\n }, 3000);\n };\n\n const hasBookingError = this.checkForBookingFormErrors(finalConfig);\n\n if (hasBookingError) {\n return;\n }\n const organizer = {\n name: this.currentUser?.name ?? this.currentUser?.email ?? '',\n email: this.currentUser?.email ?? '',\n };\n const organizerDefaultCal = this.calendars?.find(c => c.is_primary) ?? this.calendars?.[0];\n const organizerParticipant = [{ ...organizer, is_organizer: true }];\n const groupEvent = !this.selectedConfiguration?.id\n ? {\n title: title,\n description: description,\n location: !conferencing ? location : undefined,\n conferencing: !location ? conferencing : undefined,\n when: {\n start_time: eventTimeslot?.when?.start_time ?? 0,\n end_time: eventTimeslot?.when?.end_time ?? 0,\n start_timezone: eventTimeslot?.when?.start_timezone ?? '',\n end_timezone: eventTimeslot?.when?.end_timezone ?? '',\n },\n recurrence: eventTimeslot?.recurrence ?? [],\n calendar_id: bookingCalendar || organizerDefaultCal?.id || 'primary',\n participants: participants?.length ? participants : organizerParticipant,\n organizer: organizer,\n capacity: eventCapacity || 10,\n }\n : undefined;\n this.schedulerConfigChanged.emit({ groupEvent: groupEvent || undefined, config: finalConfig, resetLoadingState: resetLoadingState, action: this.action, host: this.host });\n };\n\n /**\n * Checks for booking form errors.\n */\n checkForBookingFormErrors = config => {\n // Check additional Fields in config\n let hasError = false;\n let errorMessage = '';\n const additionalFields = config.scheduler?.additional_fields;\n if (additionalFields) {\n errorMessage = '';\n Object.entries(additionalFields).forEach(entry => {\n const field = entry[1] as AdditionalFields;\n if (field.label === '') {\n errorMessage += i18next.t('nylasEditorTabs.bookingFormError_label', { type: field.type });\n hasError = true;\n return;\n }\n if (field.options) {\n for (const option of field.options) {\n if (option.trim() === '') {\n errorMessage += i18next.t('nylasEditorTabs.bookingFormError_option', { label: field.label, type: field.type });\n hasError = true;\n break;\n }\n }\n }\n });\n }\n if (hasError) {\n this.isLoading = false;\n this.host.setError({\n message: errorMessage,\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: i18next.t('nylasEditorTabs.bookingFormError'),\n });\n }\n return hasError;\n };\n\n /**\n * Hides the tab.\n */\n hideTab(tab: TabGroup) {\n return this.hideEditorTabs?.includes(tab) || false;\n }\n\n /**\n * Handles the feedback click event.\n */\n onFeedbackClick(e: Event) {\n e.preventDefault();\n this.showFeedbackModal = true;\n }\n\n @RegisterComponent<NylasEditorTabsGroup, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-editor-tabs-group',\n stateToProps: new Map([\n ['schedulerConfig.calendars', 'calendars'],\n ['schedulerConfig.selectedConfiguration', 'selectedConfiguration'],\n ['schedulerConfig.currentUser', 'currentUser'],\n ['schedulerConfig.configurations', 'configurations'],\n ['schedulerConfig.selectedLanguage', 'selectedLanguage'],\n ['schedulerConfig.selectedEventType', 'selectedEventType'],\n ['schedulerConfig.selectedGroupEvent', 'selectedGroupEvent'],\n ['schedulerConfig.themeConfig', 'themeConfig'],\n ]),\n eventToProps: {\n schedulerConfigChanged: async (\n event: CustomEvent<SchedulerGroupEventDetail & { host: HTMLNylasEditorTabsGroupElement }>,\n nylasSchedulerConfigConnector: NylasSchedulerConfigConnector,\n ) => {\n const { resetLoadingState, host, action, config, groupEvent } = event.detail;\n const checkForErrors = (response: DataResponseReturnType, errorTitle: string) => {\n const [data, error] = response;\n if (!data && error) {\n host.setError({\n message: error.message || i18next.t('genericErrorTitle'),\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: errorTitle,\n });\n } else if (data && !error && action === 'create') {\n host.schedulerConfigCreatedEventHandler({ config: data, action, host });\n }\n };\n\n // If we have an ID, we are updating an existing configuration\n if (action === 'edit') {\n const response = await nylasSchedulerConfigConnector.schedulerConfig.updateConfiguration(config);\n checkForErrors(response, i18next.t('nylasEditorTabs.updateConfigError'));\n\n if (resetLoadingState) {\n resetLoadingState(event);\n }\n } else {\n const response = await nylasSchedulerConfigConnector.schedulerConfig.createConfiguration(config);\n checkForErrors(response, i18next.t('nylasEditorTabs.createConfigError'));\n const [data, _error] = response;\n const configId = data?.id;\n\n if (configId && groupEvent) {\n const eventResponse = await nylasSchedulerConfigConnector.schedulerConfig.createGroupEvent(groupEvent, configId);\n checkForErrors(eventResponse, i18next.t('nylasEditorTabsGroup.createGroupEventError'));\n // nylasSchedulerConfigConnector.schedulerConfigStore.set('selectedEventType', undefined);\n }\n if (resetLoadingState) {\n resetLoadingState(event);\n }\n }\n },\n cancelButtonClick: async (_, nylasSchedulerConfigConnector) => {\n nylasSchedulerConfigConnector.schedulerConfigStore.state.action = null;\n nylasSchedulerConfigConnector.schedulerConfigStore.set('selectedEventType', undefined);\n nylasSchedulerConfigConnector.schedulerConfigStore.set('selectedGroupEvent', undefined);\n nylasSchedulerConfigConnector.schedulerConfigStore.set('groupEvents', []);\n },\n previewButtonClicked: async (_, nylasSchedulerConfigConnector) => {\n debug('[nylas-editor-tabs-group]', 'previewButtonClicked', nylasSchedulerConfigConnector);\n },\n formSubmitted: async (_, nylasSchedulerConfigConnector) => {\n debug('[nylas-editor-tabs-group]', 'formSubmitted', nylasSchedulerConfigConnector);\n },\n schedulerEditorFormUpdated: async (event: CustomEvent<{ value: string; name: string }>, _nylasSchedulerConfigConnector) => {\n debug('[nylas-editor-tabs-group]', 'schedulerEditorFormUpdated', event);\n },\n schedulerConfigCreated: async (event: CustomEvent<SchedulerGroupEventDetail>, _nylasSchedulerConfigConnector: NylasSchedulerConfigConnector) => {\n debug('[nylas-editor-tabs-group]', 'schedulerConfigCreated', event);\n },\n groupEventUpdateTriggered: async (\n event: CustomEvent<{\n groupEvent: GroupEvent;\n host: HTMLNylasEditorTabsGroupElement;\n chosenOption: RecurrenceUpdateOption;\n configId: string;\n }>,\n nylasSchedulerConfigConnector: NylasSchedulerConfigConnector,\n ) => {\n const { groupEvent, host, chosenOption, configId } = event.detail;\n\n const response = await nylasSchedulerConfigConnector.schedulerConfig.updateGroupEvent(groupEvent, chosenOption, configId);\n const [data, error] = response;\n if (!data && error) {\n host.setError({\n message: error.message || i18next.t('genericErrorTitle'),\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: i18next.t('nylasEditorTabsGroup.updateGroupEventError'),\n });\n }\n },\n groupEventDeleteTriggered: async (\n event: CustomEvent<{ groupEvent: GroupEvent; chosenOption: RecurrenceDeleteOption; configId: string; host: HTMLNylasEditorTabsGroupElement }>,\n nylasSchedulerConfigConnector: NylasSchedulerConfigConnector,\n ) => {\n const { groupEvent, chosenOption, configId, host } = event.detail;\n const response = await nylasSchedulerConfigConnector.schedulerConfig.deleteGroupEvent(groupEvent, chosenOption, configId);\n const [data, error] = response;\n if (!data && error) {\n host.setError({\n message: error.message || i18next.t('genericErrorTitle'),\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: i18next.t('nylasEditorTabsGroup.deleteGroupEventError'),\n });\n }\n },\n groupEventCreateTriggered: async (\n event: CustomEvent<{ groupEvent: Partial<GroupEvent>; configId: string; host: HTMLNylasEditorTabsGroupElement }>,\n nylasSchedulerConfigConnector: NylasSchedulerConfigConnector,\n ) => {\n const { groupEvent, configId, host } = event.detail;\n const response = await nylasSchedulerConfigConnector.schedulerConfig.createGroupEvent(groupEvent, configId);\n const [data, error] = response;\n if (!data && error) {\n host.setError({\n message: error.message || i18next.t('genericErrorTitle'),\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: i18next.t('nylasEditorTabsGroup.createGroupEventError'),\n });\n }\n },\n groupEventImportTriggered: async (\n event: CustomEvent<{\n groupEvent: ImportGroupEventDetails;\n configId: string;\n host: HTMLNylasEditorTabsGroupElement;\n }>,\n nylasSchedulerConfigConnector: NylasSchedulerConfigConnector,\n ) => {\n const { groupEvent, configId, host } = event.detail;\n const response = await nylasSchedulerConfigConnector.schedulerConfig.importGroupEvent([groupEvent], configId);\n const [data, error] = response;\n if (!data && error) {\n host.setError({\n message: error.message || i18next.t('genericErrorTitle'),\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: i18next.t('nylasEditorTabsGroup.importGroupEventError'),\n });\n }\n if (data && data.import_failed && data.import_failed.length > 0) {\n const errorMessage = data.import_failed.map(failedEvent => failedEvent.reason).join('\\n');\n host.setError({\n message: errorMessage,\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: i18next.t('nylasEditorTabsGroup.importGroupEventError'),\n });\n setTimeout(() => {\n host.resetError();\n }, 5000);\n }\n },\n saveGroupEventChangesError: async (\n event: CustomEvent<{\n error: string;\n configId: string;\n host: HTMLNylasEditorTabsGroupElement;\n }>,\n _nylasSchedulerConfigConnector: NylasSchedulerConfigConnector,\n ) => {\n const { error, host } = event.detail;\n debug('[nylas-editor-tabs-group]', 'saveGroupEventChangesError', error, host);\n },\n },\n localPropsToProp: new Map([\n ['schedulerPreviewLink', 'schedulerPreviewLink'],\n ['enableUserFeedback', 'enableUserFeedback'],\n ['hideEditorTabs', 'hideEditorTabs'],\n ]),\n fireRegisterEvent: true,\n })\n render() {\n debug('[nylas-editor-tabs-group]', 'render', this.formState);\n // TODO: Remove this check when the feature is ready to be released\n // const showInDevelopmentTabs = localStorage.getItem('nylas') === 'Nylas Developer';\n\n return (\n <Host>\n <nylas-notification></nylas-notification>\n <form onSubmit={this.formSubmissionHandler} class=\"scheduler-editor\" ref={el => (this.formRef = el as HTMLFormElement)} noValidate>\n {this.mode === 'app' ? (\n <div class=\"return-to-calendar-view\" part=\"editor__return-to-calendar-view net__return-to-calendar-view\">\n <button-component\n id=\"return-to-calendar-view-button\"\n variant=\"invisible\"\n part=\"nset__header__back-button\"\n type=\"button\"\n onClick={e => {\n this.setActiveTab(e, TabGroup.CalendarView);\n }}\n >\n <chevron-icon width=\"16\" height=\"16\" />\n <span>{i18next.t('returnToCalendarView')}</span>\n </button-component>\n </div>\n ) : null}\n {this.mode === 'app' ? (\n <div class=\"form-contents\" part=\"editor__form-contents net__form-contents\">\n <div class=\"tabs\" part=\"editor__tabs net__tabs\">\n <button\n name={TabGroup.BookingOptions}\n class={{ tab: true, active: this.activeTab == TabGroup.BookingOptions, hide: this.hideTab(TabGroup.BookingOptions) }}\n part=\"editortab__booking-options net__tab-booking-options\"\n onClick={e => this.setActiveTab(e, TabGroup.BookingOptions)}\n >\n <flow-icon width=\"16\" height=\"16\" />\n {i18next.t('bookingOptionsTab')}\n </button>\n <button\n name={TabGroup.BookingForm}\n class={{ tab: true, active: this.activeTab == TabGroup.BookingForm, hide: this.hideTab(TabGroup.BookingForm) }}\n part=\"editortab__booking-form net__tab-booking-form\"\n onClick={e => this.setActiveTab(e, TabGroup.BookingForm)}\n >\n {this.activeTab == TabGroup.BookingForm ? <calendar-agenda-fill-icon width=\"16\" height=\"16\" /> : <calendar-agenda-icon width=\"16\" height=\"16\" />}\n {i18next.t('bookingFormTab')}\n </button>\n <button\n name={TabGroup.Communications}\n class={{ tab: true, active: this.activeTab == TabGroup.Communications, hide: this.hideTab(TabGroup.Communications) }}\n onClick={e => this.setActiveTab(e, TabGroup.Communications)}\n part=\"editortab__communications net__tab-communications\"\n >\n {this.activeTab == TabGroup.Communications ? <envelope-fill-icon width=\"16\" height=\"16\" /> : <envelope-icon width=\"16\" height=\"16\" />}\n {i18next.t('communicationsTab')}\n </button>\n <button\n name={TabGroup.PageStyles}\n class={{ tab: true, active: this.activeTab == TabGroup.PageStyles, hide: this.hideTab(TabGroup.PageStyles) }}\n onClick={e => this.setActiveTab(e, TabGroup.PageStyles)}\n part=\"editortab__page-styles net__tab-page-styles\"\n >\n {this.activeTab == TabGroup.PageStyles ? <paintbrush-fill-icon width=\"16\" height=\"16\" /> : <paintbrush-icon width=\"16\" height=\"16\" />}\n {i18next.t('pageStylesTab')}\n </button>\n </div>\n <div class=\"tab-content\" part=\"editor__tab-content net__tab-content\">\n <TabContentsGroup\n formState={this.formState}\n activeTab={this.activeTab}\n currentUser={this.currentUser}\n calendars={this.calendars}\n id={this.selectedConfiguration?.id ?? 'new'}\n i18next={i18next}\n />\n </div>\n </div>\n ) : (\n <div class=\"composable\" key={this.selectedConfiguration?.id}>\n <slot></slot>\n </div>\n )}\n\n <div class=\"footer\" part=\"editor__footer net__footer\">\n <div class=\"preview\" part=\"editor__footer-preview net__footer-preview\">\n {this.enableUserFeedback && (\n <button-component title=\"Share your feedback\" id=\"report-issue\" variant={'basic'} onClick={e => this.onFeedbackClick(e)}>\n <feedback-icon />\n </button-component>\n )}\n {this.activeTab === TabGroup.CalendarView && (\n <button-component\n class=\"page-settings-button\"\n title=\"Go to page settings\"\n id=\"page-settings\"\n variant={'basic'}\n onClick={e => this.setActiveTab(e, TabGroup.BookingOptions)}\n >\n {i18next.t('pageSettingsButton')}\n </button-component>\n )}\n </div>\n <div class=\"buttons\" part=\"editor__footer-buttons net__footer-buttons\">\n <p\n class={{\n 'unsaved-changes': this.hasUnsavedChanges && !this.changesSaved,\n 'saved-changes': this.changesSaved,\n 'error': this.error?.message !== '',\n 'error-full-width': this.error?.message !== '' && this.action === 'create',\n }}\n >\n {this.error?.message == '' && this.hasUnsavedChanges && !this.changesSaved && this.activeTab !== TabGroup.CalendarView\n ? i18next.t('unsavedChangesLabel')\n : this.error?.message == '' && this.changesSaved\n ? `${i18next.t('changesSavedLabel')}!`\n : ''}\n </p>\n <div class=\"footer-buttons__row\">\n {this.schedulerPreviewLink !== '' && this.action === 'edit' && (\n <button-component\n title=\"Preview\"\n type=\"button\"\n disabled={this.isLoading}\n clickHandler={event => {\n event.preventDefault();\n const previewEvent = this.previewButtonClicked.emit(this.host);\n if (!previewEvent.defaultPrevented) {\n window.open(parsePreviewLink(this.schedulerPreviewLink, this.selectedConfiguration), '_blank');\n }\n }}\n variant={'basic'}\n >\n <eye-icon />\n </button-component>\n )}\n <button-component\n type=\"button\"\n disabled={this.isLoading}\n clickHandler={event => {\n event.preventDefault();\n this.cancelButtonClick.emit();\n this.host.resetError();\n }}\n variant={'basic'}\n part=\"editor__footer-cancel net__footer-cancel\"\n >\n {i18next.t('cancelButton')}\n </button-component>\n <button-component class={{ 'save-changes': this.action === 'edit' }} type=\"submit\" disabled={this.isLoading} part=\"editor__footer-cta, net__footer-cta\">\n {!this.componentLoaded ? (\n <span>\n <loading-icon />{' '}\n </span>\n ) : this.isLoading ? (\n <span>\n {i18next.t('savingButtonText')}\n <loading-icon />{' '}\n </span>\n ) : this.action === 'create' ? (\n `${i18next.t('createButtonText')}`\n ) : (\n `${i18next.t('saveChangesButtonText')}`\n )}\n </button-component>\n </div>\n </div>\n </div>\n </form>\n {this.showFeedbackModal && <nylas-feedback-form></nylas-feedback-form>}\n </Host>\n );\n }\n}\n","@use '../../../common/styles/variables' as *;\n@use '../../../common/mixins/buttons' as *;\n\n:host {\n display: grid;\n grid-auto-flow: row;\n width: 100%;\n font-family: inherit;\n font-optical-sizing: auto;\n @include default-css-variables;\n}\n\n.header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 1rem;\n gap: 1rem;\n\n @media #{$mobile} {\n flex-direction: column;\n gap: 0.5rem;\n align-items: unset;\n }\n\n h2 {\n margin: 0;\n font-size: 1.25rem;\n color: var(--nylas-base-900);\n font-weight: 600;\n }\n\n p {\n margin: 0;\n font-size: 16px;\n color: var(--nylas-base-700);\n }\n\n .actions {\n justify-self: end;\n\n @media #{$mobile} {\n width: 100%;\n }\n }\n}\n\n.configurations {\n border: 1px solid var(--nylas-base-200);\n border-radius: var(--nylas-border-radius-2x);\n background: var(--nylas-base-0);\n height: 100%;\n display: flex;\n flex-direction: column;\n position: relative;\n overflow-y: hidden;\n\n .table-container {\n overflow-y: auto;\n flex: 1;\n\n @media #{$mobile} {\n min-height: 624px; // This is to ensure the dropdowns are not cut off\n }\n\n table {\n width: 100%;\n border-spacing: 0;\n border-collapse: collapse;\n font-family: inherit;\n height: max-content;\n\n &.no-configurations {\n height: 100%;\n }\n\n tr {\n color: var(--nylas-base-800);\n border-bottom: 1px solid var(--nylas-base-200);\n font-family: inherit;\n\n &.hide {\n display: none;\n }\n }\n\n th {\n font-weight: 600;\n text-transform: uppercase;\n font-size: 14px;\n line-height: 20px;\n }\n\n tr.no-configurations {\n td {\n > div {\n display: flex;\n height: 100%;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n\n padding: var(--nylas-border-radius-3x);\n\n h3 {\n margin: 0 0 1rem 0;\n color: var(--nylas-base-700);\n }\n\n p {\n margin: 0 0 1rem 0;\n color: var(--nylas-base-600);\n }\n\n calendar-icon {\n margin-bottom: 1rem;\n color: var(--nylas-base-200);\n }\n }\n }\n }\n\n th,\n td {\n text-align: left;\n padding: 1rem;\n font-family: inherit;\n }\n\n .actions {\n display: flex;\n justify-content: flex-end;\n gap: 1rem;\n text-align: right;\n button-component.edit-button {\n min-width: 98px;\n }\n @media #{$mobile} {\n flex-direction: column;\n gap: 0.5rem;\n }\n\n select-dropdown.last {\n &::part(sd_dropdown-content) {\n bottom: 54px;\n }\n }\n }\n\n .title {\n width: 100%;\n max-width: 300px;\n\n @media #{$mobile} {\n max-width: 96px;\n }\n\n div {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n\n &.config-event-title {\n font-weight: 600;\n }\n\n &.config-event-description {\n font-size: 0.75rem;\n }\n }\n }\n }\n }\n\n .pagination {\n padding: 1rem;\n position: sticky;\n top: 100%;\n display: flex;\n justify-content: flex-end;\n gap: 0.5rem;\n background: var(--nylas-base-0);\n width: calc(100% - 2rem);\n z-index: 2;\n\n td.arrows {\n display: flex;\n justify-content: flex-end;\n gap: 0.5rem;\n }\n\n button {\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n height: 3vh;\n width: 3vh;\n min-width: 3em;\n min-height: 3em;\n cursor: pointer;\n border-radius: var(--nylas-border-radius-2x);\n border: 1px solid var(--nylas-base-300);\n\n background-color: transparent;\n color: var(--nylas-base-800);\n cursor: pointer;\n\n &:hover:not(:disabled) {\n border: 1px solid var(--nylas-primary);\n }\n\n &:active {\n border: 1px solid var(--nylas-base-800);\n }\n\n &:disabled {\n border: 1px solid var(--nylas-base-100);\n background-color: transparent;\n color: var(--nylas-base-300);\n cursor: not-allowed;\n }\n\n &.right {\n transform: rotate(180deg);\n }\n }\n }\n}\n\n.error-container {\n margin-top: 1.5rem;\n\n .error {\n color: var(--nylas-error);\n padding: 0.5rem 0;\n margin: 1rem 0 0;\n }\n}\n\nbutton-component#copy {\n button {\n width: 108px;\n }\n}\n\nselect-dropdown {\n width: auto;\n color: inherit;\n}\n\nselect-dropdown::part(sd_dropdown-button) {\n display: block;\n height: 48px;\n padding: 0px 16px 8px;\n\n @media #{$mobile} {\n width: 92px;\n }\n}\n\nselect-dropdown::part(sd_dropdown-content) {\n width: 120px;\n right: 0;\n}\n\nselect-dropdown::part(sd_dropdown-labelhtml) {\n display: flex;\n gap: 0.5rem;\n align-items: center;\n color: var(--nylas-base-900);\n\n &:hover {\n color: var(--nylas-primary);\n }\n}\n\n.card-wrapper {\n position: absolute;\n top: 0;\n left: 0;\n height: calc(100% + 4rem);\n width: -webkit-fill-available;\n width: -moz-available;\n width: fill-available;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n background: rgba(0, 0, 0, 0.6);\n z-index: 2;\n\n border-radius: var(--nylas-border-radius-2x);\n\n @media #{$mobile} {\n justify-content: start;\n height: 100%;\n }\n}\n\n.card-modal {\n background: var(--nylas-base-0);\n display: flex;\n flex-direction: column;\n font-family: var(--nylas-font-family);\n background-color: var(--nylas-base-0);\n color: var(--nylas-base-900);\n border-radius: var(--nylas-border-radius-3x);\n padding: 32px;\n width: 562px;\n\n box-shadow:\n 0px 1px 4px rgba(0, 0, 0, 0.1),\n 0px 3px 6px rgba(0, 0, 0, 0.06);\n\n @media #{$mobile} {\n width: auto;\n border-radius: 0px;\n }\n}\n\n.description {\n &.title-desc {\n margin-bottom: 2rem;\n }\n\n p {\n margin: 0;\n font-size: 18px;\n color: var(--nylas-base-600);\n }\n}\n\n.footer {\n margin-top: 1rem;\n padding-top: 1rem;\n display: flex;\n justify-content: flex-end;\n gap: 0.5rem;\n box-sizing: border-box;\n background-color: var(--nylas-base-25);\n width: 100%;\n border-radius: 0 0 var(--nylas-border-radius-2x) var(--nylas-border-radius-2x);\n}\n\n.close-button {\n width: 100%;\n display: flex;\n justify-content: flex-end;\n\n button-component {\n button {\n padding: 0;\n height: auto;\n\n &:hover {\n background-color: transparent !important;\n }\n }\n }\n}\n\nbutton-component {\n --dot-color: var(--nylas-base-700);\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { debug, getCalendarRange, parsePreviewLink } from '@/utils/utils';\nimport { Component, Element, Event, EventEmitter, Host, Listen, Method, Prop, State, Watch, h } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\nimport { Configuration, GroupConfiguration, Notification, NotificationType, ThemeConfig } from '@nylas/core';\nimport i18next from '@/utils/i18n';\nimport { CONFIGURATION_EVENT_TYPE, LANGUAGE_CODE } from '@/common/constants';\nimport { ErrorCategory } from '@/types/index';\n\n/**\n * The `nylas-list-configurations` component displays a list of scheduling pages.\n *\n * @part nlc__create-new-cta - The create new configuration CTA.\n */\n@Component({\n tag: 'nylas-list-configurations',\n styleUrl: 'nylas-list-configurations.scss',\n shadow: true,\n})\nexport class NylasListConfigurations {\n /**\n * The host element.\n */\n @Element() host!: HTMLNylasListConfigurationsElement;\n\n /**\n * The list of configurations to display.\n */\n @Prop() configurations: (Configuration | GroupConfiguration)[] = [];\n\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: LANGUAGE_CODE;\n\n /**\n * The scheduler preview link to use when the user clicks on the preview button.\n * You can use a placeholder `{config.id}` to replace the configuration id anywhere in the link.\n */\n @Prop({ attribute: 'scheduler-preview-link' }) schedulerPreviewLink: string = '';\n\n /**\n * The next cursor for list configurations, if any.\n */\n @Prop() listConfigurationsNextCursor?: string | null;\n\n /**\n * @standalone\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: ThemeConfig;\n\n /**\n * Event emitted when the component is initialized.\n */\n @Event() initListConfigurations!: EventEmitter<{\n host: HTMLNylasListConfigurationsElement;\n cursor?: string;\n }>;\n\n /**\n * Event emitted when the user clicks the create event button.\n */\n @Event() createButtonClick!: EventEmitter<HTMLNylasListConfigurationsElement>;\n\n /**\n * Event emitted when the user clicks the edit event button.\n */\n @Event() editButtonClick!: EventEmitter<{\n host: HTMLNylasListConfigurationsElement;\n configuration: Configuration | GroupConfiguration;\n }>;\n\n /**\n * Event emitted when the user clicks the delete event button.\n */\n @Event() deleteButtonClick!: EventEmitter<{\n host: HTMLNylasListConfigurationsElement;\n configuration: Configuration | GroupConfiguration;\n }>;\n\n /**\n * This event is fired when there is an error in the component.\n */\n @Event({ cancelable: false }) readonly nylasSchedulerError!: EventEmitter<{ notification: Notification; host: HTMLElement }>;\n\n /**\n * Event emitted when the user dismisses the error notification.\n */\n @Event({ cancelable: false }) dismissNotification!: EventEmitter<{ id: string; host: HTMLNylasListConfigurationsElement }>;\n\n /**\n * The current state of the component.\n */\n @State() private state: 'loading' | 'loaded' | 'error' = 'loading';\n\n /**\n * The error message to display.\n */\n @State() error?: {\n message: string;\n type: NotificationType | undefined;\n category: ErrorCategory | undefined;\n title: string;\n } = {\n message: '',\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: '',\n };\n\n /**\n * Current cursor for list configurations\n */\n @State() currentCursor: string | null = null;\n\n /**\n * The list of previous cursors for list configurations\n */\n @State() previousCursors: string[] = [];\n\n /**\n * State to identiy if the next button should be disabled\n */\n @State() disableNextPageButton: boolean = false;\n\n /**\n * State to store the configuration id to delete and to show the delete confirmation modal\n */\n @State() deleteConfigurationId: string = '';\n\n /**\n * State to show Delete button loading state\n */\n @State() showDeleteButtonLoading: boolean = false;\n\n /**\n * State to show Edit button loading state\n */\n @State() editButtonLoadingId: string = '';\n\n @Watch('listConfigurationsNextCursor')\n listConfigurationsNextCursorChangedHandler(newVal: string | null, oldVal: string | null) {\n if (!newVal || newVal === oldVal) {\n if (newVal === null) {\n this.disableNextPageButton = true;\n }\n return;\n }\n this.disableNextPageButton = false;\n this.currentCursor = newVal;\n }\n\n @Watch('selectedLanguage')\n selectedLanguageChangedHandler(newVal: LANGUAGE_CODE, oldVal: LANGUAGE_CODE) {\n if (newVal === oldVal) return;\n i18next.changeLanguage(newVal);\n }\n\n @Watch('themeConfig')\n themeConfigChangedHandler(newVal: ThemeConfig, oldVal: ThemeConfig) {\n if (newVal === oldVal) return;\n this.applyThemeConfig(newVal);\n }\n\n connectedCallback() {\n debug('[nylas-list-configurations]', 'connectedCallback');\n // Use queueMicrotask to defer theme application until after React has set props.\n // This fixes the timing issue where connectedCallback fires before React sets themeConfig.\n queueMicrotask(() => {\n if (this.themeConfig) {\n this.applyThemeConfig(this.themeConfig);\n this.host.setAttribute('data-themed', '');\n }\n });\n }\n\n componentWillLoad() {\n debug('[nylas-list-configurations]', 'componentWillLoad');\n\n // If we have configurations, we will set the state to loaded.\n if (this.configurations && this.configurations.length > 0) {\n this.state = 'loaded';\n }\n }\n\n componentDidLoad() {\n debug('[nylas-list-configurations]', 'componentDidLoad');\n\n // Fire the init event. By default, we will fetch the configurations.\n // This is defined in the eventToProps object in the RegisterComponent decorator.\n this.initListConfigurations.emit({\n host: this.host,\n });\n }\n\n disconnectedCallback() {\n debug('[nylas-list-configurations]', 'disconnectedCallback');\n }\n\n applyThemeConfig(themeConfig?: ThemeConfig) {\n if (themeConfig) {\n for (const [key, value] of Object.entries(themeConfig)) {\n this.host.style.setProperty(`${key}`, value);\n }\n }\n }\n\n @Listen('nylasFormDropdownChanged')\n async handleNylasFormDropdownChanged(event: CustomEvent) {\n debug('[nylas-list-configurations]', 'handleNylasFormDropdownChanged', event.detail);\n const { value } = event.detail;\n const [action, index] = value.split('-');\n event.preventDefault();\n switch (action) {\n case 'delete':\n this.deleteConfigurationId = this.configurations[index]?.id;\n break;\n case 'preview':\n window.open(parsePreviewLink(this.schedulerPreviewLink, this.configurations[index]), '_blank');\n break;\n case 'copy':\n await navigator.clipboard.writeText(parsePreviewLink(this.schedulerPreviewLink, this.configurations[index]));\n break;\n default:\n break;\n }\n }\n\n @Method()\n async registerCallback() {\n // Fire the init event. By default, we will fetch the configurations.\n // This is defined in the eventToProps object in the RegisterComponent decorator.\n this.initListConfigurations.emit({\n host: this.host,\n });\n }\n\n @Method()\n async getState() {\n return this.state;\n }\n\n @Method()\n async setState(state: 'loading' | 'loaded' | 'error') {\n this.state = state;\n }\n\n @Method()\n async setError(error: { message: string; type: NotificationType; category: ErrorCategory; title: string }) {\n this.error = {\n message: error.message,\n type: error.type,\n category: error.category,\n title: error.title || i18next.t('genericErrorTitle'),\n };\n if (this.error?.message) {\n this.showErrorNotification(this.error);\n }\n }\n\n @Method()\n async hideDeleteConfirmation() {\n this.deleteConfigurationId = '';\n this.showDeleteButtonLoading = false;\n }\n\n @Method()\n async hideEditButtonLoading() {\n this.editButtonLoadingId = '';\n }\n\n showErrorNotification(error: { message: string; type: NotificationType | undefined; category: ErrorCategory | undefined; title: string }) {\n this.nylasSchedulerError.emit({\n notification: {\n id: error.message.split(' ').join('-'),\n type: error.type || NotificationType.Error,\n title: error.title,\n category: error.category || ErrorCategory.Component,\n description: error.message,\n ttl: 'none',\n } as Notification,\n host: this.host,\n });\n }\n\n closeModal(e: Event) {\n e.preventDefault();\n this.deleteConfigurationId = '';\n }\n\n handleConfirmDeleteButtonClicked(e: Event) {\n e.preventDefault();\n this.showDeleteButtonLoading = true;\n const config = this.configurations.find(config => config.id === this.deleteConfigurationId);\n if (config && config?.id) {\n this.deleteButtonClick.emit({ host: this.host, configuration: config });\n }\n }\n\n private getDurationString(duration: number) {\n if (!duration) return '—';\n const hours = Math.floor(duration / 60);\n const minutes = duration % 60;\n return `${hours ? hours : ''} ${hours ? `${hours > 1 ? 'hours' : 'hour'}` : ''} ${minutes ? minutes : ''} ${minutes ? `${minutes > 1 ? 'mins' : 'min'}` : ''}`;\n }\n\n getActionLabelHTML(action: string) {\n const actionStyle = {\n display: 'inline-flex',\n alignItems: 'center',\n gap: '0.5rem',\n };\n const dangerStyle = {\n color: 'var(--nylas-error)',\n };\n switch (action) {\n case 'preview':\n return (\n <span style={actionStyle}>\n <eye-icon width=\"16\" height=\"16\"></eye-icon>\n {i18next.t('nylasListConfigurations.previewButtonText')}\n </span>\n );\n case 'copy':\n return (\n <span style={actionStyle}>\n <copy-icon width=\"16\" height=\"16\" />\n {i18next.t('nylasListConfigurations.copyLinkButtonText')}\n </span>\n );\n case 'delete':\n return (\n <span style={{ ...actionStyle, ...dangerStyle }}>\n <delete-icon width=\"15\" height=\"17\"></delete-icon>\n {i18next.t('nylasListConfigurations.deleteButtonText')}\n </span>\n );\n default:\n return '';\n }\n }\n\n previousPageClickedHandler() {\n if (this.previousCursors.length === 0) return;\n\n this.currentCursor = this.previousCursors.pop() || null;\n const prevCursor = this.previousCursors[this.previousCursors.length - 1] || undefined;\n this.initListConfigurations.emit({\n host: this.host,\n cursor: prevCursor,\n });\n }\n\n nextPageClickedHandler() {\n if (!this.currentCursor) return;\n\n this.previousCursors = [...this.previousCursors, this.currentCursor];\n this.initListConfigurations.emit({\n host: this.host,\n cursor: this.currentCursor,\n });\n }\n\n @RegisterComponent<NylasListConfigurations, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-list-configurations',\n stateToProps: new Map([\n ['schedulerConfig.configurations', 'configurations'],\n ['schedulerConfig.listConfigurationsNextCursor', 'listConfigurationsNextCursor'],\n ['schedulerConfig.selectedLanguage', 'selectedLanguage'],\n ['schedulerConfig.themeConfig', 'themeConfig'],\n ]),\n localPropsToProp: new Map([['schedulerPreviewLink', 'schedulerPreviewLink']]),\n eventToProps: {\n initListConfigurations: async (event, connector) => {\n const { host, cursor } = event.detail;\n await host.setState('loading');\n const [data, error] = await connector.schedulerConfig.getConfigurations(cursor);\n if (!data && error && error.message) {\n await host.setState('error');\n await host.setError({\n message: error.message,\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: i18next.t('nylasEditorTabs.getConfigsError'),\n });\n return;\n }\n await host.setState('loaded');\n // setCursor here\n },\n createButtonClick: async (_, connector) => {\n connector.schedulerConfigStore.resetSelectedConfiguration();\n const enabledEventTypes = Object.entries(connector.schedulerConfigStore.state.enableEventTypes || {}).filter(([_key, value]) => value);\n if (enabledEventTypes.length === 1) {\n connector.schedulerConfigStore.state.action = 'create';\n connector.schedulerConfigStore.state.selectedEventType = CONFIGURATION_EVENT_TYPE[enabledEventTypes[0][0]];\n } else {\n connector.schedulerConfigStore.state.action = 'create-select';\n }\n },\n deleteButtonClick: async (event, connector) => {\n const { host, configuration } = event.detail;\n const [data, error] = await connector.schedulerConfig.deleteConfiguration(configuration.id);\n if (!data && error && error.message) {\n await host.setState('error');\n await host.setError({\n message: error.message,\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: i18next.t('nylasEditorTabs.deleteConfigError'),\n });\n }\n await host.hideDeleteConfirmation();\n },\n editButtonClick: async (event, connector) => {\n const { host, configuration } = event.detail;\n if (configuration.type === 'group') {\n const { startTime, endTime } = getCalendarRange(new Date().toISOString(), 'week');\n connector.schedulerConfigStore.state.calendarViewDateRange = {\n start_time: startTime.toString(),\n end_time: endTime.toString(),\n };\n const [data, error] = await connector.schedulerConfig.getGroupEvents(configuration.id, configuration);\n if (!data && error && error.message) {\n // handle error\n await host.setError({\n message: error.message,\n type: NotificationType.Error,\n category: ErrorCategory.Component,\n title: i18next.t('nylasEditorTabsGroup.getGroupEventsError'),\n });\n host.hideEditButtonLoading();\n return;\n }\n }\n connector.schedulerConfigStore.state.action = 'edit';\n connector.schedulerConfigStore.state.selectedConfiguration = configuration;\n host.hideEditButtonLoading();\n },\n },\n fireRegisterEvent: true,\n })\n render() {\n return (\n <Host>\n <nylas-notification></nylas-notification>\n <div class=\"header\">\n <div class=\"description\">\n <h2>{i18next.t('allSchedulingPages')}</h2>\n <p>{i18next.t('createAndManageSchedulingPages')}</p>\n </div>\n {this.configurations && this.configurations.length > 0 && (\n <div class=\"actions\">\n <button-component\n part=\"nlc__create-new-cta\"\n clickHandler={() => {\n this.createButtonClick.emit(this.host);\n }}\n >\n {i18next.t('createNewSchedulingPageButtonText')}\n </button-component>\n </div>\n )}\n </div>\n <div class=\"configurations\">\n <div class=\"table-container\">\n <table\n class={{\n 'no-configurations': this.state !== 'loading' && (!this.configurations || this.configurations.length === 0),\n }}\n >\n <tr\n class={{\n hide: this.state === 'loading' || (this.configurations && this.configurations.length === 0),\n }}\n >\n <th>{i18next.t('pageTitle')}</th>\n <th>{i18next.t('durationTitle')}</th>\n <th></th>\n </tr>\n {this.state === 'loading' && (\n <tr class=\"no-configurations\">\n <td colSpan={3}>\n <div>\n <h3>{i18next.t('loading')}...</h3>\n <p>{i18next.t('loadingPagesDescription')}</p>\n </div>\n </td>\n </tr>\n )}\n {this.state !== 'loading' && (!this.configurations || this.configurations.length === 0) && (\n <tr class=\"no-configurations\">\n <td colSpan={3}>\n <div>\n <calendar-icon width=\"48\" height=\"48\"></calendar-icon>\n <h3>{i18next.t('noSchedulingPages')}</h3>\n <p>{i18next.t('createFirstSchedulingPage')}</p>\n <button-component\n part=\"nlc__create-new-cta\"\n clickHandler={() => {\n this.createButtonClick.emit(this.host);\n }}\n >\n {i18next.t('createNewSchedulingPageButtonText')}\n </button-component>\n </div>\n </td>\n </tr>\n )}\n {this.state !== 'loading' &&\n this.configurations?.map((config, i) => {\n const lastTwo = (i === this.configurations.length - 1 || i === this.configurations.length - 2) && this.configurations.length > 3;\n const groupConfig = config as GroupConfiguration;\n const regularConfig = config as Configuration;\n return (\n <tr key={config?.id}>\n <td>\n <div class=\"title\">\n <div class=\"config-event-title\" title={regularConfig?.event_booking?.title}>\n {regularConfig?.event_booking?.title || groupConfig?.name}\n </div>\n <div class={'config-event-description'}>{regularConfig?.event_booking?.description}</div>\n </div>\n </td>\n <td>\n <div class=\"duration\">{this.getDurationString(regularConfig?.availability?.duration_minutes)}</div>\n </td>\n <td>\n <div class=\"actions\">\n <button-component\n class=\"edit-button\"\n variant={'basic'}\n key={`edit-${i}`}\n disabled={this.editButtonLoadingId === `edit-${i}`}\n isLoading={this.editButtonLoadingId === `edit-${i}`}\n clickHandler={event => {\n event.preventDefault();\n this.editButtonLoadingId = `edit-${i}`;\n this.editButtonClick.emit({ host: this.host, configuration: config });\n }}\n >\n {this.editButtonLoadingId === `edit-${i}` ? null : <edit-icon width=\"16\" height=\"16\"></edit-icon>}\n {i18next.t('editSchedulingPageButtonText')}\n </button-component>\n <select-dropdown\n class={{\n last: lastTwo,\n }}\n name=\"actions\"\n options={[\n { value: `preview-${i}`, label: 'Preview', labelHTML: this.getActionLabelHTML('preview') },\n { value: `copy-${i}`, label: 'Copy link', labelHTML: this.getActionLabelHTML('copy') },\n { value: `delete-${i}`, label: 'Delete', labelHTML: this.getActionLabelHTML('delete') },\n ]}\n defaultSelectedOption={{ value: '', label: '' }}\n dropdownButtonText=\"...\"\n withSearch={false}\n withChevron={false}\n themeConfig={this.themeConfig}\n exportparts=\"sd_dropdown: actions__dropdown, sd_dropdown-button: actions__dropdown-button, sd_dropdown-content: actions__dropdown-content, actions-Copy, actions-Preview, actions-Delete\"\n ></select-dropdown>\n </div>\n </td>\n </tr>\n );\n })}\n </table>\n </div>\n <div class=\"pagination\">\n <button class=\"arrow left\" onClick={() => this.previousPageClickedHandler()} disabled={this.previousCursors.length <= 0}>\n <chevron-icon />\n </button>\n <button class=\"arrow right\" onClick={() => this.nextPageClickedHandler()} disabled={this.disableNextPageButton}>\n <chevron-icon />\n </button>\n </div>\n </div>\n {!!this.deleteConfigurationId && (\n <div class=\"card-wrapper\">\n <div class=\"card-modal\">\n <div class=\"close-button\">\n <button-component tooltip=\"Close\" id=\"close\" variant={'invisible'} onClick={e => this.closeModal(e)} part=\"nfbf__close-button\">\n <close-icon />\n </button-component>\n </div>\n <div class=\"header\">\n <h2 slot=\"card-title\" part=\"nfbf__title\">\n {i18next.t('deleteSchedulingPageTitle')}\n </h2>\n </div>\n <div class=\"description title-desc\">\n <p>{i18next.t('deleteSchedulingPageDescription')}</p>\n </div>\n <div\n class={{\n footer: true,\n }}\n >\n <button-component variant={'basic'} onClick={e => this.closeModal(e)} part=\"nfbf__button-outline nfbf__cancel-cta\">\n {`${i18next.t('deleteSchedulingPageCancelButton')}`}\n </button-component>\n <button-component\n variant={'destructive'}\n onClick={e => this.handleConfirmDeleteButtonClicked(e)}\n disabled={this.showDeleteButtonLoading}\n isLoading={this.showDeleteButtonLoading}\n part=\"nfbf__button-outline nfbf__reschedule-cta\"\n >\n {`${i18next.t('deleteSchedulingPageConfirmButton')}`}\n </button-component>\n </div>\n </div>\n </div>\n )}\n </Host>\n );\n }\n}\n","@use '../../../common/styles/variables' as *;\n@use '../../../common/mixins/buttons' as *;\n\n:host {\n display: block;\n @include default-css-variables;\n width: inherit;\n}\n\n.nylas-select-event-type {\n height: inherit;\n overflow-y: auto;\n\n div.header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n border-bottom: 1px solid var(--nylas-base-200);\n\n h2 {\n font-size: 18px;\n padding: 0 24px;\n line-height: 24px;\n margin: 0;\n font-weight: 600;\n color: var(--nylas-base-800);\n }\n\n button-component {\n button {\n @include invisible-button;\n }\n }\n }\n\n div.content {\n padding: 40px;\n\n h3 {\n margin: 0 0 32px 0;\n font-size: 18px;\n line-height: 24px;\n font-weight: 600;\n }\n\n div.event-type {\n display: flex;\n flex-direction: column;\n gap: 8px;\n\n div.event-type-option {\n padding: 16px;\n border: 1px solid var(--nylas-base-200);\n border-radius: var(--nylas-border-radius-3x);\n width: inherit;\n cursor: pointer;\n display: flex;\n flex-direction: column;\n gap: 8px;\n\n h4 {\n margin: 0;\n font-size: 16px;\n line-height: 24px;\n font-weight: 600;\n color: var(--nylas-base-900);\n }\n\n p {\n margin: 0;\n font-size: 14px;\n line-height: 21px;\n font-weight: 400;\n color: var(--nylas-base-800);\n }\n }\n }\n }\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { debug } from '@/utils/utils';\nimport { Component, Element, Event, EventEmitter, Host, Prop, Watch, h } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\nimport i18next from '@/utils/i18n';\nimport { CONFIGURATION_EVENT_TYPE, LANGUAGE_CODE } from '@/common/constants';\nimport { AdditionalParticipant, EnableEventTypes, ThemeConfig } from '@nylas/core';\n\n/**\n * The `nylas-select-event-type` component is a UI component that allows users to select the event type for the scheduler configuration.\n */\n@Component({\n tag: 'nylas-select-event-type',\n styleUrl: 'nylas-select-event-type.scss',\n shadow: true,\n})\nexport class NylasSelectEventType {\n @Element() host!: HTMLNylasSelectEventTypeElement;\n\n /**\n * @standalone\n * The participant options passed in the additionalParticipants prop\n * from the nylas-scheduler-editor component.\n */\n @Prop() participantOptions?: AdditionalParticipant[];\n\n /**\n * @standalone\n * The name of the component\n */\n @Prop() name: string = 'select-event-type';\n\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: LANGUAGE_CODE;\n\n /**\n * The enable event types.\n */\n @Prop() enableEventTypes?: EnableEventTypes = {\n one_on_one: true,\n collective: true,\n max_fairness: true,\n max_availability: true,\n group: true,\n };\n /**\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: ThemeConfig;\n\n /**\n * This event is fired when the return to all scheduling pages button is clicked.\n */\n @Event() returnToAllSchedulingPagesEvent!: EventEmitter<void>;\n\n /**\n * This event is fired when the event type is selected.\n */\n @Event() createEventTypeSelected!: EventEmitter<{ eventType: CONFIGURATION_EVENT_TYPE }>;\n\n // Lifecycle methods\n connectedCallback() {\n debug('nylas-select-event-type', 'connectedCallback');\n // Use queueMicrotask to defer theme application until after React has set props.\n // This fixes the timing issue where connectedCallback fires before React sets themeConfig.\n queueMicrotask(() => {\n if (this.themeConfig) {\n this.applyThemeConfig(this.themeConfig);\n this.host.setAttribute('data-themed', '');\n }\n });\n }\n\n disconnectedCallback() {\n debug('nylas-select-event-type', 'disconnectedCallback');\n }\n\n componentWillLoad() {\n debug('nylas-select-event-type', 'componentWillLoad');\n // See comment in the @Watch('name') decorator for more information.\n this.host.setAttribute('name', this.name);\n }\n\n componentDidLoad() {\n debug('nylas-select-event-type', 'componentDidLoad');\n }\n\n /**\n * When a name prop is passed, stencil does not automatically set the name attribute on the host element.\n * Since this component is form-associated, the name attribute is required for form submission.\n * This is a workaround to ensure that the name attribute is set on the host element.\n */\n @Watch('name')\n elementNameChangedHandler(newValue: string) {\n debug('nylas-select-event-type', 'elementNameChangedHandler', newValue);\n this.host.setAttribute('name', newValue);\n }\n\n @Watch('selectedLanguage')\n selectedLanguageChangedHandler(newVal: LANGUAGE_CODE, oldVal: LANGUAGE_CODE) {\n if (newVal === oldVal) return;\n i18next.changeLanguage(newVal);\n }\n\n @Watch('themeConfig')\n themeConfigChangedHandler(newVal: ThemeConfig, oldVal: ThemeConfig) {\n if (newVal === oldVal) return;\n this.applyThemeConfig(newVal);\n }\n\n applyThemeConfig(themeConfig?: ThemeConfig) {\n if (themeConfig) {\n for (const [key, value] of Object.entries(themeConfig)) {\n this.host.style.setProperty(`${key}`, value);\n }\n }\n }\n\n @RegisterComponent<NylasSelectEventType, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-select-event-type',\n stateToProps: new Map([\n ['schedulerConfig.selectedLanguage', 'selectedLanguage'],\n ['schedulerConfig.additionalParticipants', 'participantOptions'],\n ['schedulerConfig.enableEventTypes', 'enableEventTypes'],\n ['schedulerConfig.themeConfig', 'themeConfig'],\n ]),\n eventToProps: {\n returnToAllSchedulingPagesEvent: async (_event: CustomEvent<void>, connector: NylasSchedulerConfigConnector) => {\n connector.schedulerConfigStore.state.action = null;\n connector.schedulerConfigStore.set('selectedEventType', undefined);\n },\n createEventTypeSelected: async (event: CustomEvent<{ eventType: CONFIGURATION_EVENT_TYPE }>, connector: NylasSchedulerConfigConnector) => {\n const { eventType } = event.detail;\n connector.schedulerConfigStore.state.action = 'create';\n connector.schedulerConfigStore.state.selectedEventType = eventType;\n },\n },\n fireRegisterEvent: true,\n })\n render() {\n interface EventTypeOption {\n label: string;\n value: CONFIGURATION_EVENT_TYPE;\n description: string;\n }\n\n const eventTypeKey = {\n 'one-on-one': 'one_on_one',\n 'collective': 'collective',\n 'max-fairness': 'max_fairness',\n 'max-availability': 'max_availability',\n 'group': 'group',\n };\n\n const allEventTypes: EventTypeOption[] = [\n {\n label: i18next.t('nylasSelectEventType.eventTypeOptions.oneOnOne.label'),\n value: CONFIGURATION_EVENT_TYPE.one_on_one,\n description: i18next.t('nylasSelectEventType.eventTypeOptions.oneOnOne.desc'),\n },\n {\n label: i18next.t('nylasSelectEventType.eventTypeOptions.collective.label'),\n value: CONFIGURATION_EVENT_TYPE.collective,\n description: i18next.t('nylasSelectEventType.eventTypeOptions.collective.desc'),\n },\n {\n label: i18next.t('nylasSelectEventType.eventTypeOptions.maxFairness.label'),\n value: CONFIGURATION_EVENT_TYPE.max_fairness,\n description: i18next.t('nylasSelectEventType.eventTypeOptions.maxFairness.desc'),\n },\n {\n label: i18next.t('nylasSelectEventType.eventTypeOptions.maxAvailability.label'),\n value: CONFIGURATION_EVENT_TYPE.max_availability,\n description: i18next.t('nylasSelectEventType.eventTypeOptions.maxAvailability.desc'),\n },\n {\n label: i18next.t('nylasSelectEventType.eventTypeOptions.group.label'),\n value: CONFIGURATION_EVENT_TYPE.group,\n description: i18next.t('nylasSelectEventType.eventTypeOptions.group.desc'),\n },\n ];\n const conditionalEventTypes = [CONFIGURATION_EVENT_TYPE.collective, CONFIGURATION_EVENT_TYPE.max_availability, CONFIGURATION_EVENT_TYPE.max_fairness];\n const hasAdditionalParticipants =\n this.participantOptions &&\n this.participantOptions?.length > 0 &&\n !!this.participantOptions[0].email &&\n !!this.participantOptions[0].name &&\n !!this.participantOptions[0].calendars &&\n this.participantOptions[0].calendars.length > 0;\n\n const eventTypes = this.enableEventTypes\n ? allEventTypes.filter(eventType => {\n const key = eventType.value;\n const keyType = eventTypeKey[key];\n debug('key', key, this.enableEventTypes ? this.enableEventTypes[keyType] : 'no enableEventTypes');\n if (conditionalEventTypes.includes(key) && !hasAdditionalParticipants) {\n return false;\n }\n return this.enableEventTypes && this.enableEventTypes[keyType];\n })\n : allEventTypes;\n return (\n <Host>\n <div class=\"nylas-select-event-type\" part=\"nset\">\n <div class=\"header\" part=\"nset__header\">\n <h2>{i18next.t('nylasSelectEventType.createEventHeaderTitle')}</h2>\n <button-component\n variant=\"invisible\"\n part=\"nset__header__back-button\"\n onClick={_event => {\n this.returnToAllSchedulingPagesEvent.emit();\n }}\n >\n <chevron-icon width=\"16\" height=\"16\" />\n <span>{i18next.t('nylasSelectEventType.returnToAllSchedulingPages')}</span>\n </button-component>\n </div>\n <div class=\"content\" part=\"nset__content\">\n <h3>{i18next.t('nylasSelectEventType.eventTypeHeaderTitle')}</h3>\n <div class=\"event-type\" part=\"nset__content__event-type\">\n {eventTypes.length === 0 && <p>{i18next.t('nylasSelectEventType.noEventTypesEnabled')}</p>}\n {eventTypes.map(eventType => (\n <div\n class=\"event-type-option\"\n onClick={_event => {\n this.createEventTypeSelected.emit({ eventType: eventType.value });\n }}\n part={`nset__content__event-type-option-${eventType.value}`}\n >\n <h4>{eventType.label}</h4>\n <p>{eventType.description}</p>\n </div>\n ))}\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"names":["iconCss","h","Fragment","NotificationType","ErrorCategory","debug","i18next","CONFIGURATION_EVENT_TYPE","DEFAULT_OPEN_HOURS","mergeDeep","Sentry.isInitialized","Sentry.init","version","Sentry.feedbackIntegration","editorTabComponentNames","Sentry.captureMessage","Sentry.captureFeedback","Host","parsePreviewLink","__decorate","RegisterComponent","editorGroupTabComponentNames","getCalendarRange"],"mappings":"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"}