@nylas/web-elements 1.0.2-canary.2 → 1.1.0-canary.3
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.
- package/dist/cjs/add-circle-icon.cjs.entry.js +2 -2
- package/dist/cjs/{add-circle-icon_18.cjs.entry.js → add-circle-icon_22.cjs.entry.js} +425 -97
- package/dist/cjs/add-circle-icon_22.cjs.entry.js.map +1 -0
- package/dist/cjs/archive-icon.cjs.entry.js +2 -2
- package/dist/cjs/archive-icon_7.cjs.entry.js +8 -8
- package/dist/cjs/arrow-icon.cjs.entry.js +2 -2
- package/dist/cjs/bold-icon.cjs.entry.js +2 -2
- package/dist/cjs/bold-icon_3.cjs.entry.js +4 -4
- package/dist/cjs/button-component.cjs.entry.js +30 -0
- package/dist/cjs/button-component.cjs.entry.js.map +1 -0
- package/dist/cjs/calendar-cancel-icon.cjs.entry.js +2 -2
- package/dist/cjs/calendar-check-icon.cjs.entry.js +2 -2
- package/dist/cjs/calendar-check-icon_2.cjs.entry.js +3 -3
- package/dist/cjs/calendar-icon.cjs.entry.js +2 -2
- package/dist/cjs/calendar-info-icon.cjs.entry.js +2 -2
- package/dist/cjs/calendar-patterns-icon.cjs.entry.js +2 -2
- package/dist/cjs/checkmark-circle-icon.cjs.entry.js +2 -2
- package/dist/cjs/chevron-icon.cjs.entry.js +2 -2
- package/dist/cjs/chevron-icon_3.cjs.entry.js +23 -6
- package/dist/cjs/chevron-icon_3.cjs.entry.js.map +1 -1
- package/dist/cjs/close-icon.cjs.entry.js +2 -2
- package/dist/cjs/{constants-9e39ba68.js → constants-0fba94a4.js} +2 -1
- package/dist/cjs/{constants-9e39ba68.js.map → constants-0fba94a4.js.map} +1 -1
- package/dist/cjs/{constants-c48567b9.js → constants-6baf1f1d.js} +2 -1
- package/dist/cjs/{constants-c48567b9.js.map → constants-6baf1f1d.js.map} +1 -1
- package/dist/cjs/document-refresh-icon.cjs.entry.js +2 -2
- package/dist/cjs/flow-icon.cjs.entry.js +2 -2
- package/dist/cjs/folder-icon.cjs.entry.js +2 -2
- package/dist/cjs/forward-icon.cjs.entry.js +2 -2
- package/dist/cjs/forward-icon_6.cjs.entry.js +9 -9
- package/dist/cjs/globe-icon.cjs.entry.js +2 -2
- package/dist/cjs/google-logo-icon.cjs.entry.js +23 -0
- package/dist/cjs/google-logo-icon.cjs.entry.js.map +1 -0
- package/dist/cjs/google-logo-icon_3.cjs.entry.js +302 -0
- package/dist/cjs/google-logo-icon_3.cjs.entry.js.map +1 -0
- package/dist/cjs/inbox-icon.cjs.entry.js +2 -2
- package/dist/cjs/{index-ecd19640.js → index-5ba61c57.js} +2 -2
- package/dist/cjs/{index-ecd19640.js.map → index-5ba61c57.js.map} +1 -1
- package/dist/cjs/{index-37045c7b.js → index-7af03e3f.js} +482 -21
- package/dist/cjs/index-7af03e3f.js.map +1 -0
- package/dist/cjs/{index-ec8e2a4d.js → index-c14ea8f5.js} +34 -6
- package/dist/cjs/index-c14ea8f5.js.map +1 -0
- package/dist/cjs/{index-f969795f.js → index-e31dc92c.js} +2 -2
- package/dist/cjs/{index-f969795f.js.map → index-e31dc92c.js.map} +1 -1
- package/dist/cjs/index.cjs.js +4 -2
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/{index.es-9122f5a3.js → index.es-447c5aca.js} +7 -2
- package/dist/cjs/index.es-447c5aca.js.map +1 -0
- package/dist/cjs/{index.es-3c12ec8c.js → index.es-68425511.js} +7 -2
- package/dist/cjs/index.es-68425511.js.map +1 -0
- package/dist/cjs/info-icon.cjs.entry.js +2 -2
- package/dist/cjs/info-icon_2.cjs.entry.js +3 -3
- package/dist/cjs/italic-icon.cjs.entry.js +2 -2
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/loading-icon.cjs.entry.js +2 -2
- package/dist/cjs/location-icon.cjs.entry.js +2 -2
- package/dist/cjs/location-off-icon.cjs.entry.js +2 -2
- package/dist/cjs/{mailbox-store-37622628.js → mailbox-store-556bc7b6.js} +81 -3
- package/dist/cjs/mailbox-store-556bc7b6.js.map +1 -0
- package/dist/cjs/{mailbox-store-5cd5e485.js → mailbox-store-aacd75ff.js} +81 -3
- package/dist/cjs/mailbox-store-aacd75ff.js.map +1 -0
- package/dist/cjs/microsoft-logo-icon.cjs.entry.js +23 -0
- package/dist/cjs/microsoft-logo-icon.cjs.entry.js.map +1 -0
- package/dist/cjs/multi-select-dropdown.cjs.entry.js +3 -3
- package/dist/cjs/nylas-additional-participants.cjs.entry.js +6 -6
- package/dist/cjs/nylas-additional-participants.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-api-request-8ec3a89c.js +39 -0
- package/dist/cjs/nylas-api-request-8ec3a89c.js.map +1 -0
- package/dist/cjs/nylas-api-request-ab24150d.js +37 -0
- package/dist/cjs/nylas-api-request-ab24150d.js.map +1 -0
- package/dist/cjs/nylas-availability-picker.cjs.entry.js +9 -9
- package/dist/cjs/nylas-availability-picker.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-booked-event-card.cjs.entry.js +4 -4
- package/dist/cjs/nylas-booked-event-card.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-booked-event-card_10.cjs.entry.js +14 -14
- package/dist/cjs/nylas-booked-event-card_10.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-booking-calendar-picker.cjs.entry.js +4 -4
- package/dist/cjs/nylas-booking-calendar-picker.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-booking-form.cjs.entry.js +3 -3
- package/dist/cjs/nylas-booking-form.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-buffer-time.cjs.entry.js +5 -5
- package/dist/cjs/nylas-buffer-time.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-calendar-picker.cjs.entry.js +4 -4
- package/dist/cjs/nylas-calendar-picker.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-cancel-booking-form.cjs.entry.js +4 -4
- package/dist/cjs/nylas-cancel-booking-form.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-cancelled-event-card.cjs.entry.js +3 -3
- package/dist/cjs/nylas-composer.cjs.entry.js +2 -2
- package/dist/cjs/nylas-custom-booking-flow.cjs.entry.js +3 -3
- package/dist/cjs/nylas-custom-booking-flow.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-date-picker.cjs.entry.js +3 -3
- package/dist/cjs/nylas-date-picker.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-editor-tabs.cjs.entry.js +100 -48
- package/dist/cjs/nylas-editor-tabs.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-event-description.cjs.entry.js +3 -3
- package/dist/cjs/nylas-event-description.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-event-duration.cjs.entry.js +4 -4
- package/dist/cjs/nylas-event-duration.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-event-info.cjs.entry.js +4 -4
- package/dist/cjs/nylas-event-info.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-event-limits.cjs.entry.js +68 -0
- package/dist/cjs/nylas-event-limits.cjs.entry.js.map +1 -0
- package/dist/cjs/nylas-event-title.cjs.entry.js +4 -4
- package/dist/cjs/nylas-event-title.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-form-card.cjs.entry.js +4 -4
- package/dist/cjs/nylas-form-card.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-if-state.cjs.entry.js +2 -2
- package/dist/cjs/nylas-limit-future-bookings.cjs.entry.js +122 -0
- package/dist/cjs/nylas-limit-future-bookings.cjs.entry.js.map +1 -0
- package/dist/cjs/nylas-list-folders.cjs.entry.js +3 -3
- package/dist/cjs/nylas-list-threads.cjs.entry.js +3 -3
- package/dist/cjs/nylas-locale-switch.cjs.entry.js +4 -4
- package/dist/cjs/nylas-locale-switch.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-location-component.cjs.entry.js +5 -5
- package/dist/cjs/nylas-location-component.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-login.cjs.entry.js +3 -3
- package/dist/cjs/nylas-logo.cjs.entry.js +2 -2
- package/dist/cjs/nylas-mailbox-pagination.cjs.entry.js +2 -2
- package/dist/cjs/nylas-mailbox-toolbar-button.cjs.entry.js +3 -3
- package/dist/cjs/nylas-mailbox.cjs.entry.js +12 -13
- package/dist/cjs/nylas-mailbox.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-min-cancellation-notice.cjs.entry.js +145 -0
- package/dist/cjs/nylas-min-cancellation-notice.cjs.entry.js.map +1 -0
- package/dist/cjs/nylas-notification.cjs.entry.js +2 -2
- package/dist/cjs/nylas-provider.cjs.entry.js +9 -21
- package/dist/cjs/nylas-provider.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-scheduler-editor.cjs.entry.js +7257 -74
- package/dist/cjs/nylas-scheduler-editor.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-scheduling.cjs.entry.js +17 -13
- package/dist/cjs/nylas-scheduling.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-selected-event-card.cjs.entry.js +4 -4
- package/dist/cjs/nylas-selected-event-card.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-summarize-message-button.cjs.entry.js +4 -4
- package/dist/cjs/nylas-threads-refresh.cjs.entry.js +4 -4
- package/dist/cjs/nylas-threads-search.cjs.entry.js +3 -3
- package/dist/cjs/nylas-time-window-picker.cjs.entry.js +4 -4
- package/dist/cjs/nylas-time-window-picker.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-timeslot-picker.cjs.entry.js +3 -3
- package/dist/cjs/nylas-timeslot-picker.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-view-email.cjs.entry.js +2 -2
- package/dist/cjs/nylas-view-thread.cjs.entry.js +3 -3
- package/dist/cjs/nylas-web-elements.cjs.js +2 -2
- package/dist/cjs/people-icon.cjs.entry.js +2 -2
- package/dist/cjs/play-icon.cjs.entry.js +2 -2
- package/dist/cjs/play-icon_2.cjs.entry.js +3 -3
- package/dist/cjs/refresh-icon.cjs.entry.js +2 -2
- package/dist/cjs/{register-component-cc1cf810.js → register-component-d729f3f7.js} +2 -2
- package/dist/cjs/{register-component-cc1cf810.js.map → register-component-d729f3f7.js.map} +1 -1
- package/dist/cjs/{register-component-dfbd5404.js → register-component-f1ebc65d.js} +2 -2
- package/dist/cjs/{register-component-dfbd5404.js.map → register-component-f1ebc65d.js.map} +1 -1
- package/dist/cjs/reply-all-icon.cjs.entry.js +2 -2
- package/dist/cjs/reply-icon.cjs.entry.js +2 -2
- package/dist/cjs/scheduler-config-store-31b83ad3.js +19 -0
- package/dist/cjs/scheduler-config-store-31b83ad3.js.map +1 -0
- package/dist/cjs/scheduler-config-store-9c2cc421.js +19 -0
- package/dist/cjs/scheduler-config-store-9c2cc421.js.map +1 -0
- package/dist/cjs/{scheduler-store-65f0fbe5.js → scheduler-store-4cb46b3c.js} +3 -2
- package/dist/cjs/scheduler-store-4cb46b3c.js.map +1 -0
- package/dist/cjs/{scheduler-store-41b6d179.js → scheduler-store-7320f5d0.js} +3 -2
- package/dist/cjs/scheduler-store-7320f5d0.js.map +1 -0
- package/dist/cjs/search-icon.cjs.entry.js +2 -2
- package/dist/cjs/select-dropdown.cjs.entry.js +21 -4
- package/dist/cjs/select-dropdown.cjs.entry.js.map +1 -1
- package/dist/cjs/sent-icon.cjs.entry.js +2 -2
- package/dist/cjs/spam-icon.cjs.entry.js +2 -2
- package/dist/cjs/star-icon.cjs.entry.js +2 -2
- package/dist/cjs/stop-icon.cjs.entry.js +2 -2
- package/dist/cjs/time-period-selector.cjs.entry.js +104 -0
- package/dist/cjs/time-period-selector.cjs.entry.js.map +1 -0
- package/dist/cjs/tooltip-component.cjs.entry.js +2 -2
- package/dist/cjs/translate-icon.cjs.entry.js +2 -2
- package/dist/cjs/trash-icon.cjs.entry.js +2 -2
- package/dist/cjs/underline-icon.cjs.entry.js +2 -2
- package/dist/cjs/warning-icon.cjs.entry.js +2 -2
- package/dist/collection/collection-manifest.json +7 -0
- package/dist/collection/common/constants.js +1 -0
- package/dist/collection/common/constants.js.map +1 -1
- package/dist/collection/common/icons/add-circle.js +1 -1
- package/dist/collection/common/icons/archive.js +1 -1
- package/dist/collection/common/icons/arrow.js +1 -1
- package/dist/collection/common/icons/bold.js +1 -1
- package/dist/collection/common/icons/calendar-cancel.js +1 -1
- package/dist/collection/common/icons/calendar-check.js +1 -1
- package/dist/collection/common/icons/calendar-info.js +1 -1
- package/dist/collection/common/icons/calendar-patterns.js +1 -1
- package/dist/collection/common/icons/calendar.js +1 -1
- package/dist/collection/common/icons/checkmark-circle.js +1 -1
- package/dist/collection/common/icons/chevron.js +1 -1
- package/dist/collection/common/icons/close.js +1 -1
- package/dist/collection/common/icons/document-refresh.js +1 -1
- package/dist/collection/common/icons/flow.js +1 -1
- package/dist/collection/common/icons/folder.js +1 -1
- package/dist/collection/common/icons/forward.js +1 -1
- package/dist/collection/common/icons/globe.js +1 -1
- package/dist/collection/common/icons/google-logo.js +63 -0
- package/dist/collection/common/icons/google-logo.js.map +1 -0
- package/dist/collection/common/icons/inbox.js +1 -1
- package/dist/collection/common/icons/info.js +1 -1
- package/dist/collection/common/icons/italic.js +1 -1
- package/dist/collection/common/icons/loading.js +1 -1
- package/dist/collection/common/icons/location-off.js +1 -1
- package/dist/collection/common/icons/location.js +1 -1
- package/dist/collection/common/icons/microsoft-logo.js +63 -0
- package/dist/collection/common/icons/microsoft-logo.js.map +1 -0
- package/dist/collection/common/icons/nylas-logo.js +1 -1
- package/dist/collection/common/icons/people.js +1 -1
- package/dist/collection/common/icons/play.js +1 -1
- package/dist/collection/common/icons/refresh.js +1 -1
- package/dist/collection/common/icons/reply-all.js +1 -1
- package/dist/collection/common/icons/reply.js +1 -1
- package/dist/collection/common/icons/search.js +1 -1
- package/dist/collection/common/icons/sent.js +1 -1
- package/dist/collection/common/icons/spam.js +1 -1
- package/dist/collection/common/icons/star.js +1 -1
- package/dist/collection/common/icons/stop.js +1 -1
- package/dist/collection/common/icons/translate.js +1 -1
- package/dist/collection/common/icons/trash.js +1 -1
- package/dist/collection/common/icons/underline.js +1 -1
- package/dist/collection/common/icons/warning.js +1 -1
- package/dist/collection/common/nylas-api-request.js +34 -0
- package/dist/collection/common/nylas-api-request.js.map +1 -0
- package/dist/collection/components/design-system/button-component/button-component.css +73 -0
- package/dist/collection/components/design-system/button-component/button-component.js +193 -0
- package/dist/collection/components/design-system/button-component/button-component.js.map +1 -0
- package/dist/collection/components/design-system/multi-select-dropdown/multi-select-dropdown.js +2 -2
- package/dist/collection/components/design-system/select-dropdown/select-dropdown.css +6 -4
- package/dist/collection/components/design-system/select-dropdown/select-dropdown.js +42 -2
- package/dist/collection/components/design-system/select-dropdown/select-dropdown.js.map +1 -1
- package/dist/collection/components/design-system/time-period-selector/time-period-selector.css +22 -0
- package/dist/collection/components/design-system/time-period-selector/time-period-selector.js +200 -0
- package/dist/collection/components/design-system/time-period-selector/time-period-selector.js.map +1 -0
- package/dist/collection/components/design-system/tooltip-component/toolitp-component.js +1 -1
- package/dist/collection/components/mailbox/nylas-composer/nylas-composer.js +1 -1
- package/dist/collection/components/mailbox/nylas-list-folders/nylas-list-folders.js +1 -1
- package/dist/collection/components/mailbox/nylas-list-threads/nylas-list-threads.js +1 -1
- package/dist/collection/components/mailbox/nylas-mailbox/nylas-mailbox.js +1 -1
- package/dist/collection/components/mailbox/nylas-mailbox-toolbar-button/nylas-mailbox-toolbar-button.js +2 -2
- package/dist/collection/components/mailbox/nylas-summarize-message-button/nylas-summarize-message-button.js +2 -2
- package/dist/collection/components/mailbox/nylas-threads-refresh/nylas-threads-refresh.js +2 -2
- package/dist/collection/components/mailbox/nylas-threads-search/nylas-threads-search.js +1 -1
- package/dist/collection/components/mailbox/nylas-view-email/nylas-view-email.js +1 -1
- package/dist/collection/components/mailbox/nylas-view-thread/nylas-view-thread.js +1 -1
- package/dist/collection/components/nylas-login/nylas-login.js +1 -1
- package/dist/collection/components/nylas-provider/nylas-provider.js +1 -1
- package/dist/collection/components/scheduler/nylas-booked-event-card/nylas-booked-event-card.css +4 -3
- package/dist/collection/components/scheduler/nylas-booking-form/nylas-booking-form.css +4 -0
- package/dist/collection/components/scheduler/nylas-cancel-booking-form/nylas-cancel-booking-form.css +1 -0
- package/dist/collection/components/scheduler/nylas-cancel-booking-form/nylas-cancel-booking-form.js +1 -1
- package/dist/collection/components/scheduler/nylas-cancelled-event-card/nylas-cancelled-event-card.js +1 -1
- package/dist/collection/components/scheduler/nylas-date-picker/nylas-date-picker.css +20 -10
- package/dist/collection/components/scheduler/nylas-locale-switch/nylas-locale-switch.css +6 -1
- package/dist/collection/components/scheduler/nylas-locale-switch/test/nylas-locale-switch.spec.js +3 -3
- package/dist/collection/components/scheduler/nylas-locale-switch/test/nylas-locale-switch.spec.js.map +1 -1
- package/dist/collection/components/scheduler/nylas-notification/nylas-notification.js +1 -1
- package/dist/collection/components/scheduler/nylas-scheduler/nylas-scheduling.css +7 -8
- package/dist/collection/components/scheduler/nylas-scheduler/nylas-scheduling.js +27 -6
- package/dist/collection/components/scheduler/nylas-scheduler/nylas-scheduling.js.map +1 -1
- package/dist/collection/components/scheduler/nylas-scheduler/scheduler-view.js +2 -1
- package/dist/collection/components/scheduler/nylas-scheduler/scheduler-view.js.map +1 -1
- package/dist/collection/components/scheduler/nylas-scheduler/test/nylas-scheduling.spec.js +9 -0
- package/dist/collection/components/scheduler/nylas-scheduler/test/nylas-scheduling.spec.js.map +1 -1
- package/dist/collection/components/scheduler/nylas-selected-event-card/nylas-selected-event-card.css +12 -2
- package/dist/collection/components/scheduler/nylas-timeslot-picker/nylas-timeslot-picker.css +1 -1
- package/dist/collection/components/scheduler-editor/nylas-additional-participants/nylas-additional-participants.css +5 -16
- package/dist/collection/components/scheduler-editor/nylas-additional-participants/nylas-additional-participants.js +3 -3
- package/dist/collection/components/scheduler-editor/nylas-additional-participants/nylas-additional-participants.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-availability-picker/nylas-availability-picker.css +49 -3
- package/dist/collection/components/scheduler-editor/nylas-availability-picker/nylas-availability-picker.js +5 -5
- package/dist/collection/components/scheduler-editor/nylas-availability-picker/nylas-availability-picker.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-availability-picker/test/nylas-availability-picker.spec.js +1 -1
- package/dist/collection/components/scheduler-editor/nylas-availability-picker/test/nylas-availability-picker.spec.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-booking-calendar-picker/nylas-booking-calendar-picker.css +6 -0
- package/dist/collection/components/scheduler-editor/nylas-booking-calendar-picker/nylas-booking-calendar-picker.js +1 -1
- package/dist/collection/components/scheduler-editor/nylas-booking-calendar-picker/nylas-booking-calendar-picker.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-buffer-time/nylas-buffer-time.js +3 -3
- package/dist/collection/components/scheduler-editor/nylas-buffer-time/nylas-buffer-time.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-calendar-picker/nylas-calendar-picker.css +6 -0
- package/dist/collection/components/scheduler-editor/nylas-calendar-picker/nylas-calendar-picker.js +1 -1
- package/dist/collection/components/scheduler-editor/nylas-calendar-picker/nylas-calendar-picker.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-custom-booking-flow/nylas-custom-booking-flow.js +1 -1
- package/dist/collection/components/scheduler-editor/nylas-custom-booking-flow/nylas-custom-booking-flow.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-editor-tabs/nylas-editor-tabs.css +2 -2
- package/dist/collection/components/scheduler-editor/nylas-editor-tabs/nylas-editor-tabs.js +90 -52
- package/dist/collection/components/scheduler-editor/nylas-editor-tabs/nylas-editor-tabs.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-editor-tabs/tab-contents.js +22 -0
- package/dist/collection/components/scheduler-editor/nylas-editor-tabs/tab-contents.js.map +1 -0
- package/dist/collection/components/scheduler-editor/nylas-event-description/nylas-event-description.js +1 -1
- package/dist/collection/components/scheduler-editor/nylas-event-description/nylas-event-description.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-event-duration/nylas-event-duration.js +2 -2
- package/dist/collection/components/scheduler-editor/nylas-event-duration/nylas-event-duration.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-event-info/nylas-event-info.css +2 -2
- package/dist/collection/components/scheduler-editor/nylas-event-info/nylas-event-info.js +1 -1
- package/dist/collection/components/scheduler-editor/nylas-event-limits/nylas-event-limits.css +60 -0
- package/dist/collection/components/scheduler-editor/nylas-event-limits/nylas-event-limits.js +59 -0
- package/dist/collection/components/scheduler-editor/nylas-event-limits/nylas-event-limits.js.map +1 -0
- package/dist/collection/components/scheduler-editor/nylas-event-title/nylas-event-title.js +1 -1
- package/dist/collection/components/scheduler-editor/nylas-event-title/nylas-event-title.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-form-card/nylas-form-card.css +2 -2
- package/dist/collection/components/scheduler-editor/nylas-form-card/nylas-form-card.js +1 -1
- package/dist/collection/components/scheduler-editor/nylas-limit-future-bookings/nylas-limit-future-bookings.css +46 -0
- package/dist/collection/components/scheduler-editor/nylas-limit-future-bookings/nylas-limit-future-bookings.js +191 -0
- package/dist/collection/components/scheduler-editor/nylas-limit-future-bookings/nylas-limit-future-bookings.js.map +1 -0
- package/dist/collection/components/scheduler-editor/nylas-limit-future-bookings/test/nylas-limit-future-bookings.spec.js +41 -0
- package/dist/collection/components/scheduler-editor/nylas-limit-future-bookings/test/nylas-limit-future-bookings.spec.js.map +1 -0
- package/dist/collection/components/scheduler-editor/nylas-location-component/nylas-location-component.js +3 -3
- package/dist/collection/components/scheduler-editor/nylas-location-component/nylas-location-component.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-min-cancellation-notice/nylas-min-cancellation-notice.css +46 -0
- package/dist/collection/components/scheduler-editor/nylas-min-cancellation-notice/nylas-min-cancellation-notice.js +214 -0
- package/dist/collection/components/scheduler-editor/nylas-min-cancellation-notice/nylas-min-cancellation-notice.js.map +1 -0
- package/dist/collection/components/scheduler-editor/nylas-min-cancellation-notice/test/nylas-min-cancellation-notice.spec.js +41 -0
- package/dist/collection/components/scheduler-editor/nylas-min-cancellation-notice/test/nylas-min-cancellation-notice.spec.js.map +1 -0
- package/dist/collection/components/scheduler-editor/nylas-scheduler-editor/nylas-scheduler-editor.css +73 -1
- package/dist/collection/components/scheduler-editor/nylas-scheduler-editor/nylas-scheduler-editor.js +177 -66
- package/dist/collection/components/scheduler-editor/nylas-scheduler-editor/nylas-scheduler-editor.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-time-window-picker/nylas-time-window-picker.css +10 -2
- package/dist/collection/components/scheduler-editor/nylas-time-window-picker/nylas-time-window-picker.js +2 -2
- package/dist/collection/components/scheduler-editor/nylas-time-window-picker/nylas-time-window-picker.js.map +1 -1
- package/dist/collection/connector/connector-interface.js.map +1 -1
- package/dist/collection/connector/nylas-connector/index.js +0 -12
- package/dist/collection/connector/nylas-connector/index.js.map +1 -1
- package/dist/collection/connector/nylas-scheduler-config-connector/index.js +3 -24
- package/dist/collection/connector/nylas-scheduler-config-connector/index.js.map +1 -1
- package/dist/collection/connector/shared/api/scheduler-config.js +79 -10
- package/dist/collection/connector/shared/api/scheduler-config.js.map +1 -1
- package/dist/collection/index.js +1 -0
- package/dist/collection/index.js.map +1 -1
- package/dist/collection/stores/auth-session-store.js +18 -0
- package/dist/collection/stores/auth-session-store.js.map +1 -0
- package/dist/collection/stores/scheduler-config-store.js +2 -0
- package/dist/collection/stores/scheduler-config-store.js.map +1 -1
- package/dist/collection/stores/scheduler-store.js +1 -0
- package/dist/collection/stores/scheduler-store.js.map +1 -1
- package/dist/components/add-circle.js +1 -1
- package/dist/components/archive.js +1 -1
- package/dist/components/arrow.js +1 -1
- package/dist/components/bold.js +1 -1
- package/dist/components/button-component.d.ts +11 -0
- package/dist/components/button-component.js +8 -0
- package/dist/components/button-component.js.map +1 -0
- package/dist/components/button-component2.js +50 -0
- package/dist/components/button-component2.js.map +1 -0
- package/dist/components/calendar-cancel.js +1 -1
- package/dist/components/calendar-check.js +1 -1
- package/dist/components/calendar-info.js +1 -1
- package/dist/components/calendar-patterns.js +1 -1
- package/dist/components/calendar.js +1 -1
- package/dist/components/checkmark-circle.js +1 -1
- package/dist/components/chevron.js +1 -1
- package/dist/components/close.js +1 -1
- package/dist/components/constants.js +1 -0
- package/dist/components/constants.js.map +1 -1
- package/dist/components/document-refresh-icon.js +1 -1
- package/dist/components/flow.js +1 -1
- package/dist/components/folder.js +1 -1
- package/dist/components/forward.js +1 -1
- package/dist/components/globe.js +1 -1
- package/dist/components/google-logo-icon.d.ts +11 -0
- package/dist/components/google-logo-icon.js +8 -0
- package/dist/components/google-logo-icon.js.map +1 -0
- package/dist/components/google-logo.js +37 -0
- package/dist/components/google-logo.js.map +1 -0
- package/dist/components/inbox.js +1 -1
- package/dist/components/index.es.js +6 -2
- package/dist/components/index.es.js.map +1 -1
- package/dist/components/index.js +1 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/info.js +1 -1
- package/dist/components/italic.js +1 -1
- package/dist/components/loading.js +1 -1
- package/dist/components/location-off.js +1 -1
- package/dist/components/location.js +1 -1
- package/dist/components/mailbox-store.js +78 -2
- package/dist/components/mailbox-store.js.map +1 -1
- package/dist/components/microsoft-logo-icon.d.ts +11 -0
- package/dist/components/microsoft-logo-icon.js +8 -0
- package/dist/components/microsoft-logo-icon.js.map +1 -0
- package/dist/components/microsoft-logo.js +37 -0
- package/dist/components/microsoft-logo.js.map +1 -0
- package/dist/components/multi-select-dropdown2.js +2 -2
- package/dist/components/nylas-additional-participants.js +4 -4
- package/dist/components/nylas-additional-participants.js.map +1 -1
- package/dist/components/nylas-api-request.js +37 -0
- package/dist/components/nylas-api-request.js.map +1 -0
- package/dist/components/nylas-availability-picker2.js +6 -6
- package/dist/components/nylas-availability-picker2.js.map +1 -1
- package/dist/components/nylas-booked-event-card2.js +1 -1
- package/dist/components/nylas-booked-event-card2.js.map +1 -1
- package/dist/components/nylas-booking-calendar-picker2.js +2 -2
- package/dist/components/nylas-booking-calendar-picker2.js.map +1 -1
- package/dist/components/nylas-booking-form2.js +1 -1
- package/dist/components/nylas-booking-form2.js.map +1 -1
- package/dist/components/nylas-buffer-time2.js +3 -3
- package/dist/components/nylas-buffer-time2.js.map +1 -1
- package/dist/components/nylas-calendar-picker2.js +2 -2
- package/dist/components/nylas-calendar-picker2.js.map +1 -1
- package/dist/components/nylas-cancel-booking-form2.js +2 -2
- package/dist/components/nylas-cancel-booking-form2.js.map +1 -1
- package/dist/components/nylas-cancelled-event-card2.js +1 -1
- package/dist/components/nylas-composer2.js +1 -1
- package/dist/components/nylas-custom-booking-flow2.js +1 -1
- package/dist/components/nylas-custom-booking-flow2.js.map +1 -1
- package/dist/components/nylas-date-picker2.js +1 -1
- package/dist/components/nylas-date-picker2.js.map +1 -1
- package/dist/components/nylas-editor-tabs2.js +184 -101
- package/dist/components/nylas-editor-tabs2.js.map +1 -1
- package/dist/components/nylas-event-description2.js +1 -1
- package/dist/components/nylas-event-description2.js.map +1 -1
- package/dist/components/nylas-event-duration2.js +2 -2
- package/dist/components/nylas-event-duration2.js.map +1 -1
- package/dist/components/nylas-event-info2.js +2 -2
- package/dist/components/nylas-event-info2.js.map +1 -1
- package/dist/components/nylas-event-limits.d.ts +11 -0
- package/dist/components/nylas-event-limits.js +8 -0
- package/dist/components/nylas-event-limits.js.map +1 -0
- package/dist/components/nylas-event-limits2.js +79 -0
- package/dist/components/nylas-event-limits2.js.map +1 -0
- package/dist/components/nylas-event-title2.js +1 -1
- package/dist/components/nylas-event-title2.js.map +1 -1
- package/dist/components/nylas-form-card2.js +2 -2
- package/dist/components/nylas-form-card2.js.map +1 -1
- package/dist/components/nylas-limit-future-bookings.d.ts +11 -0
- package/dist/components/nylas-limit-future-bookings.js +8 -0
- package/dist/components/nylas-limit-future-bookings.js.map +1 -0
- package/dist/components/nylas-limit-future-bookings2.js +171 -0
- package/dist/components/nylas-limit-future-bookings2.js.map +1 -0
- package/dist/components/nylas-list-folders.js +1 -1
- package/dist/components/nylas-list-threads.js +1 -1
- package/dist/components/nylas-locale-switch2.js +1 -1
- package/dist/components/nylas-locale-switch2.js.map +1 -1
- package/dist/components/nylas-location-component2.js +3 -3
- package/dist/components/nylas-location-component2.js.map +1 -1
- package/dist/components/nylas-login.js +1 -1
- package/dist/components/nylas-logo2.js +1 -1
- package/dist/components/nylas-mailbox-toolbar-button.js +1 -1
- package/dist/components/nylas-mailbox.js +2 -3
- package/dist/components/nylas-mailbox.js.map +1 -1
- package/dist/components/nylas-min-cancellation-notice.d.ts +11 -0
- package/dist/components/nylas-min-cancellation-notice.js +8 -0
- package/dist/components/nylas-min-cancellation-notice.js.map +1 -0
- package/dist/components/nylas-min-cancellation-notice2.js +194 -0
- package/dist/components/nylas-min-cancellation-notice2.js.map +1 -0
- package/dist/components/nylas-notification2.js +1 -1
- package/dist/components/nylas-provider.js +3 -15
- package/dist/components/nylas-provider.js.map +1 -1
- package/dist/components/nylas-scheduler-editor.js +7362 -132
- package/dist/components/nylas-scheduler-editor.js.map +1 -1
- package/dist/components/nylas-scheduling.js +14 -9
- package/dist/components/nylas-scheduling.js.map +1 -1
- package/dist/components/nylas-selected-event-card2.js +1 -1
- package/dist/components/nylas-selected-event-card2.js.map +1 -1
- package/dist/components/nylas-summarize-message-button2.js +2 -2
- package/dist/components/nylas-threads-refresh.js +2 -2
- package/dist/components/nylas-threads-search.js +1 -1
- package/dist/components/nylas-time-window-picker2.js +3 -3
- package/dist/components/nylas-time-window-picker2.js.map +1 -1
- package/dist/components/nylas-timeslot-picker2.js +1 -1
- package/dist/components/nylas-timeslot-picker2.js.map +1 -1
- package/dist/components/nylas-view-email2.js +1 -1
- package/dist/components/nylas-view-thread.js +1 -1
- package/dist/components/people-icon.js +1 -1
- package/dist/components/play.js +1 -1
- package/dist/components/refresh.js +1 -1
- package/dist/components/reply-all.js +1 -1
- package/dist/components/reply.js +1 -1
- package/dist/components/scheduler-config-store.js +3 -30
- package/dist/components/scheduler-config-store.js.map +1 -1
- package/dist/components/scheduler-store.js +1 -0
- package/dist/components/scheduler-store.js.map +1 -1
- package/dist/components/search.js +1 -1
- package/dist/components/select-dropdown2.js +25 -4
- package/dist/components/select-dropdown2.js.map +1 -1
- package/dist/components/sent.js +1 -1
- package/dist/components/spam.js +1 -1
- package/dist/components/star.js +1 -1
- package/dist/components/stop.js +1 -1
- package/dist/components/time-period-selector.d.ts +11 -0
- package/dist/components/time-period-selector.js +8 -0
- package/dist/components/time-period-selector.js.map +1 -0
- package/dist/components/time-period-selector2.js +144 -0
- package/dist/components/time-period-selector2.js.map +1 -0
- package/dist/components/toolitp-component.js +1 -1
- package/dist/components/translate.js +1 -1
- package/dist/components/trash.js +1 -1
- package/dist/components/underline.js +1 -1
- package/dist/components/warning.js +1 -1
- package/dist/esm/add-circle-icon.entry.js +2 -2
- package/dist/esm/{add-circle-icon_18.entry.js → add-circle-icon_22.entry.js} +423 -99
- package/dist/esm/add-circle-icon_22.entry.js.map +1 -0
- package/dist/esm/archive-icon.entry.js +2 -2
- package/dist/esm/archive-icon_7.entry.js +8 -8
- package/dist/esm/arrow-icon.entry.js +2 -2
- package/dist/esm/bold-icon.entry.js +2 -2
- package/dist/esm/bold-icon_3.entry.js +4 -4
- package/dist/esm/button-component.entry.js +26 -0
- package/dist/esm/button-component.entry.js.map +1 -0
- package/dist/esm/calendar-cancel-icon.entry.js +2 -2
- package/dist/esm/calendar-check-icon.entry.js +2 -2
- package/dist/esm/calendar-check-icon_2.entry.js +3 -3
- package/dist/esm/calendar-icon.entry.js +2 -2
- package/dist/esm/calendar-info-icon.entry.js +2 -2
- package/dist/esm/calendar-patterns-icon.entry.js +2 -2
- package/dist/esm/checkmark-circle-icon.entry.js +2 -2
- package/dist/esm/chevron-icon.entry.js +2 -2
- package/dist/esm/chevron-icon_3.entry.js +23 -6
- package/dist/esm/chevron-icon_3.entry.js.map +1 -1
- package/dist/esm/close-icon.entry.js +2 -2
- package/dist/{nylas-web-elements/constants-56fee505.js → esm/constants-335dffcf.js} +2 -1
- package/dist/{nylas-web-elements/constants-56fee505.js.map → esm/constants-335dffcf.js.map} +1 -1
- package/dist/esm/{constants-b6bf6671.js → constants-6ee60d6d.js} +2 -1
- package/dist/esm/{constants-b6bf6671.js.map → constants-6ee60d6d.js.map} +1 -1
- package/dist/esm/document-refresh-icon.entry.js +2 -2
- package/dist/esm/flow-icon.entry.js +2 -2
- package/dist/esm/folder-icon.entry.js +2 -2
- package/dist/esm/forward-icon.entry.js +2 -2
- package/dist/esm/forward-icon_6.entry.js +10 -10
- package/dist/esm/globe-icon.entry.js +2 -2
- package/dist/esm/google-logo-icon.entry.js +19 -0
- package/dist/esm/google-logo-icon.entry.js.map +1 -0
- package/dist/esm/google-logo-icon_3.entry.js +296 -0
- package/dist/esm/google-logo-icon_3.entry.js.map +1 -0
- package/dist/esm/inbox-icon.entry.js +2 -2
- package/dist/{nylas-web-elements/index-7b27868b.js → esm/index-11d12497.js} +2 -2
- package/dist/esm/{index-7b27868b.js.map → index-11d12497.js.map} +1 -1
- package/dist/esm/{index-10914bc1.js → index-628f294a.js} +2 -2
- package/dist/esm/{index-10914bc1.js.map → index-628f294a.js.map} +1 -1
- package/dist/esm/{index-0583f8a8.js → index-7cb0dd3d.js} +482 -21
- package/dist/esm/index-7cb0dd3d.js.map +1 -0
- package/dist/esm/{index-bda1cba1.js → index-8362ce5c.js} +34 -6
- package/dist/esm/index-8362ce5c.js.map +1 -0
- package/dist/esm/{index.es-0a5de5bf.js → index.es-2578c6a5.js} +8 -4
- package/dist/esm/index.es-2578c6a5.js.map +1 -0
- package/dist/{nylas-web-elements/index.es-a9f78dad.js → esm/index.es-bd511719.js} +7 -3
- package/dist/esm/index.es-bd511719.js.map +1 -0
- package/dist/esm/index.js +3 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/info-icon.entry.js +2 -2
- package/dist/esm/info-icon_2.entry.js +3 -3
- package/dist/esm/italic-icon.entry.js +2 -2
- package/dist/esm/loader.js +3 -3
- package/dist/esm/loading-icon.entry.js +2 -2
- package/dist/esm/location-icon.entry.js +2 -2
- package/dist/esm/location-off-icon.entry.js +2 -2
- package/dist/{nylas-web-elements/mailbox-store-8a1c2d32.js → esm/mailbox-store-150cc456.js} +80 -4
- package/dist/esm/mailbox-store-150cc456.js.map +1 -0
- package/dist/esm/{mailbox-store-e721b17c.js → mailbox-store-bb21512c.js} +81 -5
- package/dist/esm/mailbox-store-bb21512c.js.map +1 -0
- package/dist/esm/microsoft-logo-icon.entry.js +19 -0
- package/dist/esm/microsoft-logo-icon.entry.js.map +1 -0
- package/dist/esm/multi-select-dropdown.entry.js +3 -3
- package/dist/esm/nylas-additional-participants.entry.js +6 -6
- package/dist/esm/nylas-additional-participants.entry.js.map +1 -1
- package/dist/esm/nylas-api-request-55446aba.js +37 -0
- package/dist/esm/nylas-api-request-55446aba.js.map +1 -0
- package/dist/esm/nylas-api-request-c97a0153.js +35 -0
- package/dist/esm/nylas-api-request-c97a0153.js.map +1 -0
- package/dist/esm/nylas-availability-picker.entry.js +9 -9
- package/dist/esm/nylas-availability-picker.entry.js.map +1 -1
- package/dist/esm/nylas-booked-event-card.entry.js +4 -4
- package/dist/esm/nylas-booked-event-card.entry.js.map +1 -1
- package/dist/esm/nylas-booked-event-card_10.entry.js +15 -15
- package/dist/esm/nylas-booked-event-card_10.entry.js.map +1 -1
- package/dist/esm/nylas-booking-calendar-picker.entry.js +4 -4
- package/dist/esm/nylas-booking-calendar-picker.entry.js.map +1 -1
- package/dist/esm/nylas-booking-form.entry.js +3 -3
- package/dist/esm/nylas-booking-form.entry.js.map +1 -1
- package/dist/esm/nylas-buffer-time.entry.js +5 -5
- package/dist/esm/nylas-buffer-time.entry.js.map +1 -1
- package/dist/esm/nylas-calendar-picker.entry.js +4 -4
- package/dist/esm/nylas-calendar-picker.entry.js.map +1 -1
- package/dist/esm/nylas-cancel-booking-form.entry.js +4 -4
- package/dist/esm/nylas-cancel-booking-form.entry.js.map +1 -1
- package/dist/esm/nylas-cancelled-event-card.entry.js +3 -3
- package/dist/esm/nylas-composer.entry.js +2 -2
- package/dist/esm/nylas-custom-booking-flow.entry.js +3 -3
- package/dist/esm/nylas-custom-booking-flow.entry.js.map +1 -1
- package/dist/esm/nylas-date-picker.entry.js +3 -3
- package/dist/esm/nylas-date-picker.entry.js.map +1 -1
- package/dist/esm/nylas-editor-tabs.entry.js +100 -48
- package/dist/esm/nylas-editor-tabs.entry.js.map +1 -1
- package/dist/esm/nylas-event-description.entry.js +3 -3
- package/dist/esm/nylas-event-description.entry.js.map +1 -1
- package/dist/esm/nylas-event-duration.entry.js +4 -4
- package/dist/esm/nylas-event-duration.entry.js.map +1 -1
- package/dist/esm/nylas-event-info.entry.js +4 -4
- package/dist/esm/nylas-event-info.entry.js.map +1 -1
- package/dist/esm/nylas-event-limits.entry.js +64 -0
- package/dist/esm/nylas-event-limits.entry.js.map +1 -0
- package/dist/esm/nylas-event-title.entry.js +4 -4
- package/dist/esm/nylas-event-title.entry.js.map +1 -1
- package/dist/esm/nylas-form-card.entry.js +4 -4
- package/dist/esm/nylas-form-card.entry.js.map +1 -1
- package/dist/esm/nylas-if-state.entry.js +2 -2
- package/dist/esm/nylas-limit-future-bookings.entry.js +118 -0
- package/dist/esm/nylas-limit-future-bookings.entry.js.map +1 -0
- package/dist/esm/nylas-list-folders.entry.js +3 -3
- package/dist/esm/nylas-list-threads.entry.js +3 -3
- package/dist/esm/nylas-locale-switch.entry.js +4 -4
- package/dist/esm/nylas-locale-switch.entry.js.map +1 -1
- package/dist/esm/nylas-location-component.entry.js +5 -5
- package/dist/esm/nylas-location-component.entry.js.map +1 -1
- package/dist/esm/nylas-login.entry.js +3 -3
- package/dist/esm/nylas-logo.entry.js +2 -2
- package/dist/esm/nylas-mailbox-pagination.entry.js +2 -2
- package/dist/esm/nylas-mailbox-toolbar-button.entry.js +3 -3
- package/dist/esm/nylas-mailbox.entry.js +5 -6
- package/dist/esm/nylas-mailbox.entry.js.map +1 -1
- package/dist/esm/nylas-min-cancellation-notice.entry.js +141 -0
- package/dist/esm/nylas-min-cancellation-notice.entry.js.map +1 -0
- package/dist/esm/nylas-notification.entry.js +2 -2
- package/dist/esm/nylas-provider.entry.js +7 -19
- package/dist/esm/nylas-provider.entry.js.map +1 -1
- package/dist/esm/nylas-scheduler-editor.entry.js +7257 -74
- package/dist/esm/nylas-scheduler-editor.entry.js.map +1 -1
- package/dist/esm/nylas-scheduling.entry.js +17 -13
- package/dist/esm/nylas-scheduling.entry.js.map +1 -1
- package/dist/esm/nylas-selected-event-card.entry.js +4 -4
- package/dist/esm/nylas-selected-event-card.entry.js.map +1 -1
- package/dist/esm/nylas-summarize-message-button.entry.js +4 -4
- package/dist/esm/nylas-threads-refresh.entry.js +4 -4
- package/dist/esm/nylas-threads-search.entry.js +3 -3
- package/dist/esm/nylas-time-window-picker.entry.js +4 -4
- package/dist/esm/nylas-time-window-picker.entry.js.map +1 -1
- package/dist/esm/nylas-timeslot-picker.entry.js +3 -3
- package/dist/esm/nylas-timeslot-picker.entry.js.map +1 -1
- package/dist/esm/nylas-view-email.entry.js +2 -2
- package/dist/esm/nylas-view-thread.entry.js +3 -3
- package/dist/esm/nylas-web-elements.js +3 -3
- package/dist/esm/people-icon.entry.js +2 -2
- package/dist/esm/play-icon.entry.js +2 -2
- package/dist/esm/play-icon_2.entry.js +3 -3
- package/dist/esm/refresh-icon.entry.js +2 -2
- package/dist/{nylas-web-elements/register-component-93f9bcf5.js → esm/register-component-0645dce0.js} +2 -2
- package/dist/esm/{register-component-93f9bcf5.js.map → register-component-0645dce0.js.map} +1 -1
- package/dist/esm/{register-component-d056a880.js → register-component-dc659dc3.js} +3 -3
- package/dist/esm/{register-component-d056a880.js.map → register-component-dc659dc3.js.map} +1 -1
- package/dist/esm/reply-all-icon.entry.js +2 -2
- package/dist/esm/reply-icon.entry.js +2 -2
- package/dist/esm/scheduler-config-store-51ee4f42.js +17 -0
- package/dist/esm/scheduler-config-store-51ee4f42.js.map +1 -0
- package/dist/esm/scheduler-config-store-bc59545b.js +17 -0
- package/dist/esm/scheduler-config-store-bc59545b.js.map +1 -0
- package/dist/esm/{scheduler-store-f2e72da4.js → scheduler-store-4d0a4f8a.js} +3 -2
- package/dist/esm/scheduler-store-4d0a4f8a.js.map +1 -0
- package/dist/esm/{scheduler-store-0fbe642c.js → scheduler-store-72116723.js} +4 -3
- package/dist/esm/scheduler-store-72116723.js.map +1 -0
- package/dist/esm/search-icon.entry.js +2 -2
- package/dist/esm/select-dropdown.entry.js +21 -4
- package/dist/esm/select-dropdown.entry.js.map +1 -1
- package/dist/esm/sent-icon.entry.js +2 -2
- package/dist/esm/spam-icon.entry.js +2 -2
- package/dist/esm/star-icon.entry.js +2 -2
- package/dist/esm/stop-icon.entry.js +2 -2
- package/dist/esm/time-period-selector.entry.js +100 -0
- package/dist/esm/time-period-selector.entry.js.map +1 -0
- package/dist/esm/tooltip-component.entry.js +2 -2
- package/dist/esm/translate-icon.entry.js +2 -2
- package/dist/esm/trash-icon.entry.js +2 -2
- package/dist/esm/underline-icon.entry.js +2 -2
- package/dist/esm/{utils-0cd66d04.js → utils-c00bdc3c.js} +2 -2
- package/dist/esm/{utils-0cd66d04.js.map → utils-c00bdc3c.js.map} +1 -1
- package/dist/esm/warning-icon.entry.js +2 -2
- package/dist/nylas-web-elements/add-circle-icon.entry.js +2 -2
- package/dist/nylas-web-elements/archive-icon.entry.js +2 -2
- package/dist/nylas-web-elements/arrow-icon.entry.js +2 -2
- package/dist/nylas-web-elements/bold-icon.entry.js +2 -2
- package/dist/nylas-web-elements/button-component.entry.js +26 -0
- package/dist/nylas-web-elements/button-component.entry.js.map +1 -0
- package/dist/nylas-web-elements/calendar-cancel-icon.entry.js +2 -2
- package/dist/nylas-web-elements/calendar-check-icon.entry.js +2 -2
- package/dist/nylas-web-elements/calendar-icon.entry.js +2 -2
- package/dist/nylas-web-elements/calendar-info-icon.entry.js +2 -2
- package/dist/nylas-web-elements/calendar-patterns-icon.entry.js +2 -2
- package/dist/nylas-web-elements/checkmark-circle-icon.entry.js +2 -2
- package/dist/nylas-web-elements/chevron-icon.entry.js +2 -2
- package/dist/nylas-web-elements/close-icon.entry.js +2 -2
- package/dist/{esm/constants-56fee505.js → nylas-web-elements/constants-335dffcf.js} +2 -1
- package/dist/{esm/constants-56fee505.js.map → nylas-web-elements/constants-335dffcf.js.map} +1 -1
- package/dist/nylas-web-elements/document-refresh-icon.entry.js +2 -2
- package/dist/nylas-web-elements/flow-icon.entry.js +2 -2
- package/dist/nylas-web-elements/folder-icon.entry.js +2 -2
- package/dist/nylas-web-elements/forward-icon.entry.js +2 -2
- package/dist/nylas-web-elements/globe-icon.entry.js +2 -2
- package/dist/nylas-web-elements/google-logo-icon.entry.js +19 -0
- package/dist/nylas-web-elements/google-logo-icon.entry.js.map +1 -0
- package/dist/nylas-web-elements/inbox-icon.entry.js +2 -2
- package/dist/{esm/index-7b27868b.js → nylas-web-elements/index-11d12497.js} +2 -2
- package/dist/nylas-web-elements/{index-7b27868b.js.map → index-11d12497.js.map} +1 -1
- package/dist/nylas-web-elements/{index-bda1cba1.js → index-8362ce5c.js} +2 -2
- package/dist/nylas-web-elements/index-8362ce5c.js.map +1 -0
- package/dist/{esm/index.es-a9f78dad.js → nylas-web-elements/index.es-bd511719.js} +7 -3
- package/dist/nylas-web-elements/index.es-bd511719.js.map +1 -0
- package/dist/nylas-web-elements/index.esm.js +3 -2
- package/dist/nylas-web-elements/index.esm.js.map +1 -1
- package/dist/nylas-web-elements/info-icon.entry.js +2 -2
- package/dist/nylas-web-elements/italic-icon.entry.js +2 -2
- package/dist/nylas-web-elements/loading-icon.entry.js +2 -2
- package/dist/nylas-web-elements/location-icon.entry.js +2 -2
- package/dist/nylas-web-elements/location-off-icon.entry.js +2 -2
- package/dist/{esm/mailbox-store-8a1c2d32.js → nylas-web-elements/mailbox-store-150cc456.js} +80 -4
- package/dist/nylas-web-elements/mailbox-store-150cc456.js.map +1 -0
- package/dist/nylas-web-elements/microsoft-logo-icon.entry.js +19 -0
- package/dist/nylas-web-elements/microsoft-logo-icon.entry.js.map +1 -0
- package/dist/nylas-web-elements/multi-select-dropdown.entry.js +3 -3
- package/dist/nylas-web-elements/nylas-additional-participants.entry.js +6 -6
- package/dist/nylas-web-elements/nylas-additional-participants.entry.js.map +1 -1
- package/dist/nylas-web-elements/nylas-api-request-55446aba.js +37 -0
- package/dist/nylas-web-elements/nylas-api-request-55446aba.js.map +1 -0
- package/dist/nylas-web-elements/nylas-availability-picker.entry.js +9 -9
- package/dist/nylas-web-elements/nylas-availability-picker.entry.js.map +1 -1
- package/dist/nylas-web-elements/nylas-booked-event-card.entry.js +4 -4
- package/dist/nylas-web-elements/nylas-booked-event-card.entry.js.map +1 -1
- package/dist/nylas-web-elements/nylas-booking-calendar-picker.entry.js +4 -4
- package/dist/nylas-web-elements/nylas-booking-calendar-picker.entry.js.map +1 -1
- package/dist/nylas-web-elements/nylas-booking-form.entry.js +3 -3
- package/dist/nylas-web-elements/nylas-booking-form.entry.js.map +1 -1
- package/dist/nylas-web-elements/nylas-buffer-time.entry.js +5 -5
- package/dist/nylas-web-elements/nylas-buffer-time.entry.js.map +1 -1
- package/dist/nylas-web-elements/nylas-calendar-picker.entry.js +4 -4
- package/dist/nylas-web-elements/nylas-calendar-picker.entry.js.map +1 -1
- package/dist/nylas-web-elements/nylas-cancel-booking-form.entry.js +4 -4
- package/dist/nylas-web-elements/nylas-cancel-booking-form.entry.js.map +1 -1
- package/dist/nylas-web-elements/nylas-cancelled-event-card.entry.js +3 -3
- package/dist/nylas-web-elements/nylas-composer.entry.js +2 -2
- package/dist/nylas-web-elements/nylas-custom-booking-flow.entry.js +3 -3
- package/dist/nylas-web-elements/nylas-custom-booking-flow.entry.js.map +1 -1
- package/dist/nylas-web-elements/nylas-date-picker.entry.js +3 -3
- package/dist/nylas-web-elements/nylas-date-picker.entry.js.map +1 -1
- package/dist/nylas-web-elements/nylas-editor-tabs.entry.js +100 -48
- package/dist/nylas-web-elements/nylas-editor-tabs.entry.js.map +1 -1
- package/dist/nylas-web-elements/nylas-event-description.entry.js +3 -3
- package/dist/nylas-web-elements/nylas-event-description.entry.js.map +1 -1
- package/dist/nylas-web-elements/nylas-event-duration.entry.js +4 -4
- package/dist/nylas-web-elements/nylas-event-duration.entry.js.map +1 -1
- package/dist/nylas-web-elements/nylas-event-info.entry.js +4 -4
- package/dist/nylas-web-elements/nylas-event-info.entry.js.map +1 -1
- package/dist/nylas-web-elements/nylas-event-limits.entry.js +64 -0
- package/dist/nylas-web-elements/nylas-event-limits.entry.js.map +1 -0
- package/dist/nylas-web-elements/nylas-event-title.entry.js +4 -4
- package/dist/nylas-web-elements/nylas-event-title.entry.js.map +1 -1
- package/dist/nylas-web-elements/nylas-form-card.entry.js +4 -4
- package/dist/nylas-web-elements/nylas-form-card.entry.js.map +1 -1
- package/dist/nylas-web-elements/nylas-if-state.entry.js +2 -2
- package/dist/nylas-web-elements/nylas-limit-future-bookings.entry.js +118 -0
- package/dist/nylas-web-elements/nylas-limit-future-bookings.entry.js.map +1 -0
- package/dist/nylas-web-elements/nylas-list-folders.entry.js +3 -3
- package/dist/nylas-web-elements/nylas-list-threads.entry.js +3 -3
- package/dist/nylas-web-elements/nylas-locale-switch.entry.js +4 -4
- package/dist/nylas-web-elements/nylas-locale-switch.entry.js.map +1 -1
- package/dist/nylas-web-elements/nylas-location-component.entry.js +5 -5
- package/dist/nylas-web-elements/nylas-location-component.entry.js.map +1 -1
- package/dist/nylas-web-elements/nylas-login.entry.js +3 -3
- package/dist/nylas-web-elements/nylas-logo.entry.js +2 -2
- package/dist/nylas-web-elements/nylas-mailbox-pagination.entry.js +2 -2
- package/dist/nylas-web-elements/nylas-mailbox-toolbar-button.entry.js +3 -3
- package/dist/nylas-web-elements/nylas-mailbox.entry.js +5 -6
- package/dist/nylas-web-elements/nylas-mailbox.entry.js.map +1 -1
- package/dist/nylas-web-elements/nylas-min-cancellation-notice.entry.js +141 -0
- package/dist/nylas-web-elements/nylas-min-cancellation-notice.entry.js.map +1 -0
- package/dist/nylas-web-elements/nylas-notification.entry.js +2 -2
- package/dist/nylas-web-elements/nylas-provider.entry.js +7 -19
- package/dist/nylas-web-elements/nylas-provider.entry.js.map +1 -1
- package/dist/nylas-web-elements/nylas-scheduler-editor.entry.js +7257 -74
- package/dist/nylas-web-elements/nylas-scheduler-editor.entry.js.map +1 -1
- package/dist/nylas-web-elements/nylas-scheduling.entry.js +17 -13
- package/dist/nylas-web-elements/nylas-scheduling.entry.js.map +1 -1
- package/dist/nylas-web-elements/nylas-selected-event-card.entry.js +4 -4
- package/dist/nylas-web-elements/nylas-selected-event-card.entry.js.map +1 -1
- package/dist/nylas-web-elements/nylas-summarize-message-button.entry.js +4 -4
- package/dist/nylas-web-elements/nylas-threads-refresh.entry.js +4 -4
- package/dist/nylas-web-elements/nylas-threads-search.entry.js +3 -3
- package/dist/nylas-web-elements/nylas-time-window-picker.entry.js +4 -4
- package/dist/nylas-web-elements/nylas-time-window-picker.entry.js.map +1 -1
- package/dist/nylas-web-elements/nylas-timeslot-picker.entry.js +3 -3
- package/dist/nylas-web-elements/nylas-timeslot-picker.entry.js.map +1 -1
- package/dist/nylas-web-elements/nylas-view-email.entry.js +2 -2
- package/dist/nylas-web-elements/nylas-view-thread.entry.js +3 -3
- package/dist/nylas-web-elements/nylas-web-elements.esm.js +3 -3
- package/dist/nylas-web-elements/p-006ab406.entry.js +2 -0
- package/dist/nylas-web-elements/p-006ab406.entry.js.map +1 -0
- package/dist/nylas-web-elements/p-01bf65c2.entry.js +2 -0
- package/dist/nylas-web-elements/{p-bf2887bd.js → p-1819b3d7.js} +2 -2
- package/dist/nylas-web-elements/{p-bf2887bd.js.map → p-1819b3d7.js.map} +1 -1
- package/dist/nylas-web-elements/{p-26b75895.entry.js → p-2523c292.entry.js} +2 -2
- package/dist/nylas-web-elements/p-2c5d5953.entry.js +2 -0
- package/dist/nylas-web-elements/p-2c5d5953.entry.js.map +1 -0
- package/dist/nylas-web-elements/p-3631e6e5.entry.js +2 -0
- package/dist/nylas-web-elements/p-3631e6e5.entry.js.map +1 -0
- package/dist/nylas-web-elements/p-374527e6.entry.js +2 -0
- package/dist/nylas-web-elements/p-374527e6.entry.js.map +1 -0
- package/dist/nylas-web-elements/{p-0195d832.entry.js → p-395f49eb.entry.js} +2 -2
- package/dist/nylas-web-elements/p-39b280e2.entry.js +2 -0
- package/dist/nylas-web-elements/p-39b280e2.entry.js.map +1 -0
- package/dist/nylas-web-elements/p-3da66838.entry.js +2 -0
- package/dist/nylas-web-elements/p-3da66838.entry.js.map +1 -0
- package/dist/nylas-web-elements/{p-9955e9b6.js → p-408dda49.js} +2 -2
- package/dist/nylas-web-elements/{p-31f12f3f.entry.js → p-409d4410.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-3105fc0a.entry.js → p-40ed7eab.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-412215d1.entry.js → p-41c1654e.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-a959a080.entry.js → p-42a4c2fd.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-68f47a72.entry.js → p-4d9fceeb.entry.js} +2 -2
- package/dist/nylas-web-elements/p-59b6ae90.entry.js +2 -0
- package/dist/nylas-web-elements/p-59b6ae90.entry.js.map +1 -0
- package/dist/nylas-web-elements/p-5a3809a7.entry.js +2 -0
- package/dist/nylas-web-elements/p-5a3809a7.entry.js.map +1 -0
- package/dist/nylas-web-elements/{p-c0fac9fc.entry.js → p-64364434.entry.js} +2 -2
- package/dist/nylas-web-elements/p-65fdfb60.js +2 -0
- package/dist/nylas-web-elements/p-65fdfb60.js.map +1 -0
- package/dist/nylas-web-elements/p-68c2fadf.js +3 -0
- package/dist/nylas-web-elements/{p-e4b9d6af.js.map → p-68c2fadf.js.map} +1 -1
- package/dist/nylas-web-elements/{p-67f20520.entry.js → p-7b1bb792.entry.js} +3 -3
- package/dist/nylas-web-elements/{p-facc84f3.js → p-901f9612.js} +2 -2
- package/dist/nylas-web-elements/{p-e324add5.entry.js → p-9dac153b.entry.js} +2 -2
- package/dist/nylas-web-elements/p-9f168ff0.js +2 -0
- package/dist/nylas-web-elements/{p-ce89d941.js.map → p-9f168ff0.js.map} +1 -1
- package/dist/nylas-web-elements/p-a0c2ce03.entry.js +2 -0
- package/dist/nylas-web-elements/{p-f8e59935.entry.js → p-a1e27dc5.entry.js} +2 -2
- package/dist/nylas-web-elements/p-a3d5a1dd.entry.js +2 -0
- package/dist/nylas-web-elements/p-ad9c3cab.entry.js +2 -0
- package/dist/nylas-web-elements/p-ad9c3cab.entry.js.map +1 -0
- package/dist/nylas-web-elements/{p-5d875283.entry.js → p-ae01e1cb.entry.js} +2 -2
- package/dist/nylas-web-elements/p-af22da60.entry.js +17 -0
- package/dist/nylas-web-elements/p-af22da60.entry.js.map +1 -0
- package/dist/nylas-web-elements/{p-b54b575a.entry.js → p-b2208193.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-02435888.entry.js → p-ba3d383f.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-f826c690.entry.js → p-baa620b4.entry.js} +2 -2
- package/dist/nylas-web-elements/p-bfdc148c.entry.js +2 -0
- package/dist/nylas-web-elements/{p-65b275df.js → p-cabb2e68.js} +2 -2
- package/dist/nylas-web-elements/p-cadc9052.js +2 -0
- package/dist/nylas-web-elements/p-cadc9052.js.map +1 -0
- package/dist/nylas-web-elements/p-d224c7af.entry.js +2 -0
- package/dist/nylas-web-elements/p-d224c7af.entry.js.map +1 -0
- package/dist/nylas-web-elements/p-d67d1c72.js +2 -0
- package/dist/nylas-web-elements/p-d67d1c72.js.map +1 -0
- package/dist/nylas-web-elements/p-d85eecf4.entry.js +2 -0
- package/dist/nylas-web-elements/p-d85eecf4.entry.js.map +1 -0
- package/dist/nylas-web-elements/p-d92a0405.entry.js +2 -0
- package/dist/nylas-web-elements/p-dc1cee56.entry.js +2 -0
- package/dist/nylas-web-elements/p-dc1cee56.entry.js.map +1 -0
- package/dist/nylas-web-elements/p-de63bc35.entry.js +2 -0
- package/dist/nylas-web-elements/{p-22c0a883.entry.js → p-deafc6bc.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-64be0bab.js → p-df5e9aaf.js} +2 -2
- package/dist/nylas-web-elements/p-df5e9aaf.js.map +1 -0
- package/dist/nylas-web-elements/p-f48d0571.entry.js +2 -0
- package/dist/nylas-web-elements/p-fbbca7a6.entry.js +2 -0
- package/dist/nylas-web-elements/people-icon.entry.js +2 -2
- package/dist/nylas-web-elements/play-icon.entry.js +2 -2
- package/dist/nylas-web-elements/refresh-icon.entry.js +2 -2
- package/dist/{esm/register-component-93f9bcf5.js → nylas-web-elements/register-component-0645dce0.js} +2 -2
- package/dist/nylas-web-elements/{register-component-93f9bcf5.js.map → register-component-0645dce0.js.map} +1 -1
- package/dist/nylas-web-elements/reply-all-icon.entry.js +2 -2
- package/dist/nylas-web-elements/reply-icon.entry.js +2 -2
- package/dist/nylas-web-elements/scheduler-config-store-bc59545b.js +17 -0
- package/dist/nylas-web-elements/scheduler-config-store-bc59545b.js.map +1 -0
- package/dist/nylas-web-elements/{scheduler-store-f2e72da4.js → scheduler-store-4d0a4f8a.js} +3 -2
- package/dist/nylas-web-elements/scheduler-store-4d0a4f8a.js.map +1 -0
- package/dist/nylas-web-elements/search-icon.entry.js +2 -2
- package/dist/nylas-web-elements/select-dropdown.entry.js +21 -4
- package/dist/nylas-web-elements/select-dropdown.entry.js.map +1 -1
- package/dist/nylas-web-elements/sent-icon.entry.js +2 -2
- package/dist/nylas-web-elements/spam-icon.entry.js +2 -2
- package/dist/nylas-web-elements/star-icon.entry.js +2 -2
- package/dist/nylas-web-elements/stop-icon.entry.js +2 -2
- package/dist/nylas-web-elements/time-period-selector.entry.js +100 -0
- package/dist/nylas-web-elements/time-period-selector.entry.js.map +1 -0
- package/dist/nylas-web-elements/tooltip-component.entry.js +2 -2
- package/dist/nylas-web-elements/translate-icon.entry.js +2 -2
- package/dist/nylas-web-elements/trash-icon.entry.js +2 -2
- package/dist/nylas-web-elements/underline-icon.entry.js +2 -2
- package/dist/nylas-web-elements/warning-icon.entry.js +2 -2
- package/dist/types/common/icons/google-logo.d.ts +5 -0
- package/dist/types/common/icons/microsoft-logo.d.ts +5 -0
- package/dist/types/common/nylas-api-request.d.ts +35 -0
- package/dist/types/components/design-system/button-component/button-component.d.ts +13 -0
- package/dist/types/components/design-system/select-dropdown/select-dropdown.d.ts +3 -0
- package/dist/types/components/design-system/time-period-selector/time-period-selector.d.ts +31 -0
- package/dist/types/components/scheduler/nylas-scheduler/nylas-scheduling.d.ts +1 -0
- package/dist/types/components/scheduler/nylas-scheduler/scheduler-view.d.ts +1 -0
- package/dist/types/components/scheduler-editor/nylas-editor-tabs/nylas-editor-tabs.d.ts +21 -28
- package/dist/types/components/scheduler-editor/nylas-editor-tabs/tab-contents.d.ts +7 -0
- package/dist/types/components/scheduler-editor/nylas-event-limits/nylas-event-limits.d.ts +8 -0
- package/dist/types/components/scheduler-editor/nylas-limit-future-bookings/nylas-limit-future-bookings.d.ts +28 -0
- package/dist/types/components/scheduler-editor/nylas-min-cancellation-notice/nylas-min-cancellation-notice.d.ts +25 -0
- package/dist/types/components/scheduler-editor/nylas-scheduler-editor/nylas-scheduler-editor.d.ts +12 -10
- package/dist/types/components.d.ts +314 -19
- package/dist/types/connector/connector-interface.d.ts +1 -1
- package/dist/types/connector/nylas-connector/index.d.ts +1 -4
- package/dist/types/connector/nylas-scheduler-config-connector/index.d.ts +5 -32
- package/dist/types/connector/shared/api/scheduler-config.d.ts +12 -11
- package/dist/types/index.d.ts +2 -0
- package/dist/types/stores/auth-session-store.d.ts +9 -0
- package/dist/types/stores/scheduler-config-store.d.ts +5 -2
- package/dist/types/stores/scheduler-store.d.ts +1 -0
- package/package.json +10 -7
- package/dist/cjs/add-circle-icon_18.cjs.entry.js.map +0 -1
- package/dist/cjs/auth-store-78906da5.js +0 -85
- package/dist/cjs/auth-store-78906da5.js.map +0 -1
- package/dist/cjs/auth-store-be4bbe89.js +0 -85
- package/dist/cjs/auth-store-be4bbe89.js.map +0 -1
- package/dist/cjs/index-37045c7b.js.map +0 -1
- package/dist/cjs/index-ec8e2a4d.js.map +0 -1
- package/dist/cjs/index.es-3c12ec8c.js.map +0 -1
- package/dist/cjs/index.es-9122f5a3.js.map +0 -1
- package/dist/cjs/mailbox-store-37622628.js.map +0 -1
- package/dist/cjs/mailbox-store-5cd5e485.js.map +0 -1
- package/dist/cjs/nylas-if-state_3.cjs.entry.js +0 -411
- package/dist/cjs/nylas-if-state_3.cjs.entry.js.map +0 -1
- package/dist/cjs/scheduler-config-store-03b22a70.js +0 -47
- package/dist/cjs/scheduler-config-store-03b22a70.js.map +0 -1
- package/dist/cjs/scheduler-config-store-9577e499.js +0 -47
- package/dist/cjs/scheduler-config-store-9577e499.js.map +0 -1
- package/dist/cjs/scheduler-store-41b6d179.js.map +0 -1
- package/dist/cjs/scheduler-store-65f0fbe5.js.map +0 -1
- package/dist/components/auth-store.js +0 -82
- package/dist/components/auth-store.js.map +0 -1
- package/dist/esm/add-circle-icon_18.entry.js.map +0 -1
- package/dist/esm/auth-store-69ac49c7.js +0 -82
- package/dist/esm/auth-store-69ac49c7.js.map +0 -1
- package/dist/esm/auth-store-f46d9222.js +0 -82
- package/dist/esm/auth-store-f46d9222.js.map +0 -1
- package/dist/esm/index-0583f8a8.js.map +0 -1
- package/dist/esm/index-bda1cba1.js.map +0 -1
- package/dist/esm/index.es-0a5de5bf.js.map +0 -1
- package/dist/esm/index.es-a9f78dad.js.map +0 -1
- package/dist/esm/mailbox-store-8a1c2d32.js.map +0 -1
- package/dist/esm/mailbox-store-e721b17c.js.map +0 -1
- package/dist/esm/nylas-if-state_3.entry.js +0 -405
- package/dist/esm/nylas-if-state_3.entry.js.map +0 -1
- package/dist/esm/scheduler-config-store-4d035001.js +0 -44
- package/dist/esm/scheduler-config-store-4d035001.js.map +0 -1
- package/dist/esm/scheduler-config-store-8f162729.js +0 -44
- package/dist/esm/scheduler-config-store-8f162729.js.map +0 -1
- package/dist/esm/scheduler-store-0fbe642c.js.map +0 -1
- package/dist/esm/scheduler-store-f2e72da4.js.map +0 -1
- package/dist/nylas-web-elements/auth-store-f46d9222.js +0 -82
- package/dist/nylas-web-elements/auth-store-f46d9222.js.map +0 -1
- package/dist/nylas-web-elements/index-bda1cba1.js.map +0 -1
- package/dist/nylas-web-elements/index.es-a9f78dad.js.map +0 -1
- package/dist/nylas-web-elements/mailbox-store-8a1c2d32.js.map +0 -1
- package/dist/nylas-web-elements/p-18c6ddfa.entry.js +0 -2
- package/dist/nylas-web-elements/p-1af51c6b.js +0 -2
- package/dist/nylas-web-elements/p-1af51c6b.js.map +0 -1
- package/dist/nylas-web-elements/p-1c3b651f.entry.js +0 -2
- package/dist/nylas-web-elements/p-1c3b651f.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-558faafb.entry.js +0 -2
- package/dist/nylas-web-elements/p-558faafb.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-5642190a.entry.js +0 -2
- package/dist/nylas-web-elements/p-5642190a.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-577ecdd4.entry.js +0 -2
- package/dist/nylas-web-elements/p-577ecdd4.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-578f4029.js +0 -2
- package/dist/nylas-web-elements/p-578f4029.js.map +0 -1
- package/dist/nylas-web-elements/p-5c72d9a4.js +0 -2
- package/dist/nylas-web-elements/p-5c72d9a4.js.map +0 -1
- package/dist/nylas-web-elements/p-5fd0eb1d.entry.js +0 -2
- package/dist/nylas-web-elements/p-64be0bab.js.map +0 -1
- package/dist/nylas-web-elements/p-6aa84fd8.entry.js +0 -2
- package/dist/nylas-web-elements/p-6c84f99e.entry.js +0 -2
- package/dist/nylas-web-elements/p-6c84f99e.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-80079122.entry.js +0 -2
- package/dist/nylas-web-elements/p-a30e3755.entry.js +0 -2
- package/dist/nylas-web-elements/p-afdac062.entry.js +0 -2
- package/dist/nylas-web-elements/p-afdac062.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-be3b6e3a.entry.js +0 -2
- package/dist/nylas-web-elements/p-be3b6e3a.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-cc6721a7.entry.js +0 -2
- package/dist/nylas-web-elements/p-ce89d941.js +0 -2
- package/dist/nylas-web-elements/p-e4b9d6af.js +0 -3
- package/dist/nylas-web-elements/p-e4ec4651.entry.js +0 -2
- package/dist/nylas-web-elements/p-e4ec4651.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-f442a2f9.entry.js +0 -2
- package/dist/nylas-web-elements/p-f78abda8.entry.js +0 -2
- package/dist/nylas-web-elements/p-f78abda8.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-f8056365.entry.js +0 -2
- package/dist/nylas-web-elements/p-fbe6262b.entry.js +0 -2
- package/dist/nylas-web-elements/p-fbe6262b.entry.js.map +0 -1
- package/dist/nylas-web-elements/scheduler-config-store-8f162729.js +0 -44
- package/dist/nylas-web-elements/scheduler-config-store-8f162729.js.map +0 -1
- package/dist/nylas-web-elements/scheduler-store-f2e72da4.js.map +0 -1
- /package/dist/nylas-web-elements/{p-5fd0eb1d.entry.js.map → p-01bf65c2.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-26b75895.entry.js.map → p-2523c292.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-0195d832.entry.js.map → p-395f49eb.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-9955e9b6.js.map → p-408dda49.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-31f12f3f.entry.js.map → p-409d4410.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-3105fc0a.entry.js.map → p-40ed7eab.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-412215d1.entry.js.map → p-41c1654e.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-a959a080.entry.js.map → p-42a4c2fd.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-68f47a72.entry.js.map → p-4d9fceeb.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-c0fac9fc.entry.js.map → p-64364434.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-67f20520.entry.js.map → p-7b1bb792.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-facc84f3.js.map → p-901f9612.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-e324add5.entry.js.map → p-9dac153b.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-6aa84fd8.entry.js.map → p-a0c2ce03.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-f8e59935.entry.js.map → p-a1e27dc5.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-18c6ddfa.entry.js.map → p-a3d5a1dd.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-5d875283.entry.js.map → p-ae01e1cb.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-b54b575a.entry.js.map → p-b2208193.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-02435888.entry.js.map → p-ba3d383f.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-f826c690.entry.js.map → p-baa620b4.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-f8056365.entry.js.map → p-bfdc148c.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-65b275df.js.map → p-cabb2e68.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-cc6721a7.entry.js.map → p-d92a0405.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-a30e3755.entry.js.map → p-de63bc35.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-22c0a883.entry.js.map → p-deafc6bc.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-f442a2f9.entry.js.map → p-f48d0571.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-80079122.entry.js.map → p-fbbca7a6.entry.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["iconCss","AddCircleIconStyle0","AddCircleIcon","render","h","key","width","this","height","fill","xmlns","d","CalendarInfoIconStyle0","CalendarInfoIcon","CalendarPatternsIconStyle0","CalendarPatternsIcon","FlowIconStyle0","FlowIcon","LocationIconStyle0","LocationIcon","LocationOffIconStyle0","LocationOffIcon","multiSelectDropdownCss","MultiSelectDropdownStyle0","MultiSelectDropdown","options","componentDidRender","debug","isOpen","shouldFocusFirstOption","ariaActivedescendant","availableOptions","value","focusOption","handleOutsideClick","event","path","composedPath","isClickInside","includes","el","selectOption","option","map","o","selected","selectedOptions","filter","selectedOptionsChanged","emit","name","toggleDropdown","handleSelectButtonKeyDown","preventDefault","handleListboxKeydown","e","items","currentIndex","findIndex","item","shiftKey","nextIndex","length","prevIndex","index","elementId","element","shadowRoot","getElementById","focus","scrollIntoView","behavior","block","getSelectedOptions","renderOption","id","role","tabindex","onClick","stopImmediatePropagation","class","htmlFor","type","checked","label","Host","part","dropbtn","open","onKeyDown","nylasAvailabilityPickerCss","NylasAvailabilityPickerStyle0","NylasAvailabilityPicker","Intl","DateTimeFormat","resolvedOptions","timeZone","SUN","MON","start","end","TUE","WED","THU","FRI","SAT","elementNameChangedHandler","newValue","host","setAttribute","scheduleChanged","oldValue","valueChanged","scheduleToOpenHours","timezone","overlapDays","Object","keys","forEach","dayTimeRanges","overlaps","getOverlaps","internals","setFormValue","setValidity","customError","JSON","stringify","selectedOptionChangedHandler","detail","schedule","connectedCallback","disconnectedCallback","componentWillLoad","componentDidLoad","openHours","updateSchedule","timeRanges","timeRangesInMinutes","range","timeToMinutes","originalIndex","sort","a","b","i","push","addTimeRange","day","currentTimeRanges","dayStart","dayEnd","lastRangeEnd","convertTo12HourFormat","minutesToTime","gapFound","currentEnd","nextStart","removeTimeRange","splice","setTime","_event","dayIndex","timeType","split","setFormError","_errorMessage","_","newSchedule","openHour","days","dayKey","getDayKey","start12hr","end12hr","timeRange","timeRangeExists","some","dayKeys","openHoursMap","Map","start24hr","convertTo24HourFormat","end24hr","has","set","entry","get","selectedOpenHours","_key","timezoneOptions","TIMEZONE_MAP","slot","defaultSelectedOption","find","defaultTimezone","timeRangeIndex","startKey","endKey","hasError","time","additionalData","minimumStartTime","__decorate","RegisterComponent","fireRegisterEvent","nylasBookingCalendarPickerCss","NylasBookingCalendarPickerStyle0","NylasBookingCalendarPicker","defaultBookingCalendar","toString","selectedCalendar","componentWillUpdate","componentDidUpdate","componentWillRender","calendarOptions","calendars","calendar","withSearch","cal","eventToProps","async","_nylasSchedulerConfigConnector","nylasBufferTimeCss","NylasBufferTimeStyle0","NylasBufferTime","before","after","buffer","bufferTime","selectedBeforeBufferTime","selectedAfterBufferTime","parseInt","renderPreview","totalSlots","slotHeight","eventSlotHeight","slotFill","minutes","fullSlots","Math","floor","partialFillHeight","createBeforeSlots","Array","from","isActive","isPartial","slotStyle","backgroundColor","background","style","createAfterSlots","minuteOptions","min","nylasCalendarPickerCss","NylasCalendarPickerStyle0","NylasCalendarPicker","defaultSelectedCalendars","selectedOptionsChangedHandler","valueChangedHandler","selectedCalendars","organizerEmail","nylasCustomBookingFlowCss","NylasCustomBookingFlowStyle0","NylasCustomBookingFlow","bookingType","selectedBookingType","bookingOptions","nylasEventDescriptionCss","NylasEventDescriptionStyle0","NylasEventDescription","eventDescription","handleChange","description","target","maxlength","onInput","nylasEventDurationCss","NylasEventDurationStyle0","NylasEventDuration","eventDurationMinutes","durationMinutesChangedHandler","durationMinutes","duration","durationIncrement","handleBlur","undefined","durationOptions","onBlur","nylasEventInfoCss","NylasEventInfoStyle0","NylasEventInfo","nylasEventTitleCss","NylasEventTitleStyle0","NylasEventTitle","eventTitleTokens","token","labelHTML","availableTokens","$value","fullText","focusOffset","ariaActivedescendantChangedHandler","activeOption","classList","add","querySelectorAll","remove","updateEventTitleFromProp","eventTitle","titleRef","innerHTML","highlightTokens","outputHtml","tokenObj","regex","RegExp","replace","getCurrentSelectionForBrowser","getSelectionTextData","nodeValue","offset","node","text","dollarIndex","lastIndexOf","lastWord","substring","currentText","currentBrowser","getBrowser","console","log","shadowRootSelection","getSelection","focusNode","focusNodeValue","selection","document","anchorNodeValue","anchorNode","windowSelection","window","getComposedRanges","startContainer","endOffset","warn","textContent","currentSelection","updateEventTitle","resetDropdown","startsWith","showTokens","currentWord","populateSuggestionsDropdown","handleInputKeyDown","click","nextOption","nextElementSibling","filteredTokens","prevOption","previousElementSibling","parentNode","removeChild","word","dollarWord","currentNode","firstChild","textNode","nodeType","currentNodeText","wordText","nextSibling","indexOf","textBefore","textAfter","newTextNode","createTextNode","newRange","createRange","tagSpan","createElement","newTextNodeAfter","replaceWith","setStart","afterNode","sel","collapse","removeAllRanges","addRange","query","obj","getLabelHTML","ref","contentEditable","active","nylasLocationComponentCss","NylasLocationComponentStyle0","NylasLocationComponent","eventLocation","eventLocationChangedHandler","selectedLocationOption","location","locationOptions","icons","none","custom","t","module","exports","LTS","LT","L","LL","LLL","LLLL","n","r","s","f","zone","match","concat","u","meridiem","A","afternoon","S","milliseconds","SS","SSS","ss","m","mm","H","HH","hh","D","DD","Do","ordinal","M","MM","MMM","slice","Error","month","MMMM","Y","YY","year","YYYY","Z","ZZ","c","formats","toUpperCase","l","parser","exec","call","hours","p","customParseFormat","parseTwoDigitYear","prototype","parse","date","utc","args","$u","$locale","Ls","$d","Date","seconds","getDate","getFullYear","getMonth","v","g","UTC","init","$L","locale","format","apply","isValid","nylasTimeWindowPickerCss","NylasTimeWindowPickerStyle0","dayjs","extend","TimeInput","generateTimes","showTimes","minimumStartTimeChangedHandler","formattedTime","hour","minute","toLowerCase","subtract","times","firstTime","selectedTimeFormatted","isBefore","err","shouldAutoScroll","autocompletedTime","autocompleteTimeFormat","optionIndex","scrollToViewWithinParent","handleTimeChange","input","timePart","validateTimeFormatInput","timeChange","handleTimeAutocomplete","newTime","roundToNearest15Minutes","validateExactTimeFormat","handleOnInput","startTime","diff","endOf","iterations","round","handleComboboxKeyDown","timeInput","childElement","parentElement","timeMenu","childRect","getBoundingClientRect","parentRect","top","scrollTop","bottom","left","scrollLeft","right","error","placeholder","focused"],"sources":["src/common/icons/icon.css?tag=add-circle-icon&encapsulation=scoped","src/common/icons/add-circle.tsx","src/common/icons/icon.css?tag=calendar-info-icon&encapsulation=scoped","src/common/icons/calendar-info.tsx","src/common/icons/icon.css?tag=calendar-patterns-icon&encapsulation=scoped","src/common/icons/calendar-patterns.tsx","src/common/icons/icon.css?tag=flow-icon&encapsulation=scoped","src/common/icons/flow.tsx","src/common/icons/icon.css?tag=location-icon&encapsulation=scoped","src/common/icons/location.tsx","src/common/icons/icon.css?tag=location-off-icon&encapsulation=scoped","src/common/icons/location-off.tsx","src/components/design-system/multi-select-dropdown/multi-select-dropdown.scss?tag=multi-select-dropdown&encapsulation=shadow","src/components/design-system/multi-select-dropdown/multi-select-dropdown.tsx","src/components/scheduler-editor/nylas-availability-picker/nylas-availability-picker.scss?tag=nylas-availability-picker&encapsulation=shadow","src/components/scheduler-editor/nylas-availability-picker/nylas-availability-picker.tsx","src/components/scheduler-editor/nylas-booking-calendar-picker/nylas-booking-calendar-picker.scss?tag=nylas-booking-calendar-picker&encapsulation=shadow","src/components/scheduler-editor/nylas-booking-calendar-picker/nylas-booking-calendar-picker.tsx","src/components/scheduler-editor/nylas-buffer-time/nylas-buffer-time.scss?tag=nylas-buffer-time&encapsulation=shadow","src/components/scheduler-editor/nylas-buffer-time/nylas-buffer-time.tsx","src/components/scheduler-editor/nylas-calendar-picker/nylas-calendar-picker.scss?tag=nylas-calendar-picker&encapsulation=shadow","src/components/scheduler-editor/nylas-calendar-picker/nylas-calendar-picker.tsx","src/components/scheduler-editor/nylas-custom-booking-flow/nylas-custom-booking-flow.scss?tag=nylas-custom-booking-flow&encapsulation=shadow","src/components/scheduler-editor/nylas-custom-booking-flow/nylas-custom-booking-flow.tsx","src/components/scheduler-editor/nylas-event-description/nylas-event-description.scss?tag=nylas-event-description&encapsulation=shadow","src/components/scheduler-editor/nylas-event-description/nylas-event-description.tsx","src/components/scheduler-editor/nylas-event-duration/nylas-event-duration.scss?tag=nylas-event-duration&encapsulation=shadow","src/components/scheduler-editor/nylas-event-duration/nylas-event-duration.tsx","src/components/scheduler-editor/nylas-event-info/nylas-event-info.scss?tag=nylas-event-info&encapsulation=shadow","src/components/scheduler-editor/nylas-event-info/nylas-event-info.tsx","src/components/scheduler-editor/nylas-event-title/nylas-event-title.scss?tag=nylas-event-title&encapsulation=shadow","src/components/scheduler-editor/nylas-event-title/nylas-event-title.tsx","src/components/scheduler-editor/nylas-location-component/nylas-location-component.scss?tag=nylas-location-component&encapsulation=shadow","src/components/scheduler-editor/nylas-location-component/nylas-location-component.tsx","../../node_modules/.pnpm/dayjs@1.11.7/node_modules/dayjs/plugin/customParseFormat.js","src/components/scheduler-editor/nylas-time-window-picker/nylas-time-window-picker.scss?tag=nylas-time-window-picker&encapsulation=shadow","src/components/scheduler-editor/nylas-time-window-picker/nylas-time-window-picker.tsx"],"sourcesContent":[":host {\n display: flex;\n}\n","import { Component, Prop, h } from '@stencil/core';\n\n@Component({\n tag: 'add-circle-icon',\n styleUrl: 'icon.css',\n scoped: true,\n})\nexport class AddCircleIcon {\n @Prop() width: string = '24';\n @Prop() height: string = '25';\n\n render() {\n return (\n <svg width={this.width} height={this.height} fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12 2.5c5.523 0 10 4.477 10 10s-4.477 10-10 10-10-4.477-10-10 4.477-10 10-10ZM12 4a8.5 8.5 0 1 0 0 17 8.5 8.5 0 0 0 0-17Zm0 3.5a.75.75 0 0 1 .75.75v3.5h3.5a.75.75 0 0 1 0 1.5h-3.5v3.5a.75.75 0 0 1-1.5 0v-3.5h-3.5a.75.75 0 0 1 0-1.5h3.5v-3.5A.75.75 0 0 1 12 7.5Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n }\n}\n",":host {\n display: flex;\n}\n","import { Component, Prop, h } from '@stencil/core';\n\n@Component({\n tag: 'calendar-info-icon',\n styleUrl: 'icon.css',\n scoped: true,\n})\nexport class CalendarInfoIcon {\n @Prop() width: string = '20';\n @Prop() height: string = '20';\n\n render() {\n return (\n <svg width={this.width} height={this.height} fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12 0C13.3807 0 14.5 1.11929 14.5 2.5V6.59971C14.1832 6.43777 13.8486 6.30564 13.5 6.20703V4H1.5V11.5C1.5 12.3284 2.17157 13 3 13H6.70703C6.80564 13.3486 6.93777 13.6832 7.09971 14H3C1.61929 14 0.5 12.8807 0.5 11.5V2.5C0.5 1.11929 1.61929 0 3 0H12ZM12 1H3C2.17157 1 1.5 1.67157 1.5 2.5V3H13.5V2.5C13.5 1.67157 12.8284 1 12 1ZM11.375 9.5C11.375 9.15482 11.6548 8.875 12 8.875C12.3452 8.875 12.625 9.15482 12.625 9.5C12.625 9.84518 12.3452 10.125 12 10.125C11.6548 10.125 11.375 9.84518 11.375 9.5ZM12.5 13.5C12.5 13.7761 12.2761 14 12 14C11.7239 14 11.5 13.7761 11.5 13.5V11.5C11.5 11.2239 11.7239 11 12 11C12.2761 11 12.5 11.2239 12.5 11.5V13.5ZM7.5 11.5C7.5 9.01472 9.51472 7 12 7C14.4853 7 16.5 9.01472 16.5 11.5C16.5 13.9853 14.4853 16 12 16C9.51472 16 7.5 13.9853 7.5 11.5ZM8.5 11.5C8.5 13.433 10.067 15 12 15C13.933 15 15.5 13.433 15.5 11.5C15.5 9.567 13.933 8 12 8C10.067 8 8.5 9.567 8.5 11.5Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n }\n}\n",":host {\n display: flex;\n}\n","import { Component, Prop, h } from '@stencil/core';\n\n@Component({\n tag: 'calendar-patterns-icon',\n styleUrl: 'icon.css',\n scoped: true,\n})\nexport class CalendarPatternsIcon {\n @Prop() width: string = '20';\n @Prop() height: string = '20';\n\n render() {\n return (\n <svg width={this.width} height={this.height} fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.25 0H11.75C13.2688 0 14.5 1.23122 14.5 2.75V11.25C14.5 12.7688 13.2688 14 11.75 14H3.25C1.73122 14 0.5 12.7688 0.5 11.25V2.75C0.5 1.23122 1.73122 0 3.25 0ZM2 2.75V4H13V2.75C13 2.05964 12.4404 1.5 11.75 1.5H3.25C2.55964 1.5 2 2.05964 2 2.75ZM12.2071 5L8.20711 9H10.7929L13 6.79289V5H12.2071ZM10.7929 5H8.20711L4.20711 9H6.79289L10.7929 5ZM2.79289 9L6.79289 5H4.20711L2 7.20711V9H2.79289ZM2 5.79289L2.79289 5H2V5.79289ZM12.2071 9H13V8.20711L12.2071 9Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n }\n}\n",":host {\n display: flex;\n}\n","import { Component, Prop, h } from '@stencil/core';\n\n@Component({\n tag: 'flow-icon',\n styleUrl: 'icon.css',\n scoped: true,\n})\nexport class FlowIcon {\n @Prop() width: string = '16';\n @Prop() height: string = '12';\n\n render() {\n return (\n <svg width={this.width} height={this.height} fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M13 1.66211C11.8954 1.66211 11 2.55754 11 3.66211C11 4.76668 11.8954 5.66211 13 5.66211C14.1046 5.66211 15 4.76668 15 3.66211C15 2.55754 14.1046 1.66211 13 1.66211ZM10.0407 3.16678C10.2768 1.74563 11.5119 0.662109 13 0.662109C14.6569 0.662109 16 2.00526 16 3.66211C16 5.31896 14.6569 6.66211 13 6.66211C11.5162 6.66211 10.2839 5.58482 10.0428 4.16971C9.37629 4.23688 8.82682 4.7426 8.71466 5.41551L8.27173 8.07311C8.07929 9.22776 7.11428 10.087 5.9593 10.1574C5.72319 11.5786 4.48813 12.6621 3 12.6621C1.34315 12.6621 0 11.319 0 9.66211C0 8.00526 1.34315 6.66211 3 6.66211C4.48384 6.66211 5.71607 7.73939 5.95724 9.15451C6.62371 9.08734 7.17318 8.58162 7.28534 7.90871L7.72827 5.25111C7.92071 4.09646 8.88571 3.23718 10.0407 3.16678ZM3 7.66211C1.89543 7.66211 1 8.55754 1 9.66211C1 10.7667 1.89543 11.6621 3 11.6621C4.10457 11.6621 5 10.7667 5 9.66211C5 8.55754 4.10457 7.66211 3 7.66211Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n }\n}\n",":host {\n display: flex;\n}\n","import { Component, Prop, h } from '@stencil/core';\n\n@Component({\n tag: 'location-icon',\n styleUrl: 'icon.css',\n scoped: true,\n})\nexport class LocationIcon {\n @Prop() width: string = '16';\n @Prop() height: string = '18';\n\n render() {\n return (\n <svg width={this.width} height={this.height} fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M10 7.66211C10 9.31896 8.65685 10.6621 7 10.6621C5.34315 10.6621 4 9.31896 4 7.66211C4 6.00526 5.34315 4.66211 7 4.66211C8.65685 4.66211 10 6.00526 10 7.66211ZM9 7.66211C9 6.55754 8.10457 5.66211 7 5.66211C5.89543 5.66211 5 6.55754 5 7.66211C5 8.76668 5.89543 9.66211 7 9.66211C8.10457 9.66211 9 8.76668 9 7.66211ZM11.9497 12.6171C14.6834 9.88221 14.6834 5.44812 11.9497 2.71326C9.21608 -0.0216067 4.78392 -0.0216067 2.05025 2.71326C-0.683418 5.44812 -0.683418 9.88221 2.05025 12.6171L3.57128 14.1159L5.61408 16.101L5.74691 16.2188C6.52168 16.8468 7.65623 16.8076 8.38611 16.1012L10.8223 13.7312L11.9497 12.6171ZM2.75499 3.4183C5.09944 1.07282 8.90055 1.07282 11.245 3.4183C13.5294 5.70364 13.5879 9.3725 11.4207 11.7288L11.245 11.912L9.92371 13.216L7.69315 15.3846L7.60016 15.4642C7.24594 15.732 6.7543 15.732 6.40012 15.4642L6.30713 15.3845L3.3263 12.4791L2.75499 11.912L2.57927 11.7288C0.412077 9.3725 0.47065 5.70364 2.75499 3.4183Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n }\n}\n",":host {\n display: flex;\n}\n","import { Component, Prop, h } from '@stencil/core';\n\n@Component({\n tag: 'location-off-icon',\n styleUrl: 'icon.css',\n scoped: true,\n})\nexport class LocationOffIcon {\n @Prop() width: string = '16';\n @Prop() height: string = '18';\n\n render() {\n return (\n <svg width={this.width} height={this.height} fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M0.146447 0.808556C0.341709 0.613294 0.658291 0.613294 0.853553 0.808556L15.8536 15.8086C16.0488 16.0038 16.0488 16.3204 15.8536 16.5157C15.6583 16.7109 15.3417 16.7109 15.1464 16.5157L12.0938 13.463L11.8223 13.7312L9.38611 16.1012C8.65623 16.8076 7.52168 16.8468 6.74691 16.2188L6.61408 16.101L4.57128 14.1159L3.05025 12.6171C0.607421 10.1732 0.347525 6.37239 2.27056 3.63976L0.146447 1.51566C-0.0488155 1.3204 -0.0488155 1.00382 0.146447 0.808556ZM9.07768 10.4469C8.74346 10.576 8.38024 10.6468 8.0005 10.6468C6.34839 10.6468 5.00909 9.30689 5.00909 7.65406C5.00909 7.27461 5.07967 6.91166 5.20843 6.57763L2.98793 4.35713C1.49206 6.62038 1.68917 9.67377 3.57927 11.7288L3.75499 11.912L4.3263 12.4791L7.30713 15.3845L7.40012 15.4642C7.7543 15.732 8.24594 15.732 8.60016 15.4642L8.69315 15.3846L10.9237 13.216L11.3883 12.7575L9.07768 10.4469ZM9.85409 8.39486L10.5983 9.13904C10.8487 8.70143 10.9919 8.19447 10.9919 7.65406C10.9919 6.00122 9.65261 4.66134 8.0005 4.66134C7.45986 4.66134 6.95271 4.80482 6.51504 5.05581L7.25921 5.79998C7.48839 5.70819 7.73855 5.6577 8.0005 5.6577C9.10258 5.6577 9.99599 6.5515 9.99599 7.65406C9.99599 7.91581 9.94564 8.16581 9.85409 8.39486ZM4.35291 2.89368C6.70671 1.08827 10.0908 1.26314 12.245 3.4183C14.3986 5.57283 14.5739 8.95702 12.771 11.3118L13.4812 12.022C15.6702 9.27273 15.493 5.25762 12.9497 2.71326C10.4058 0.168159 6.39081 -0.00843871 3.64269 2.18347L4.35291 2.89368Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n }\n}\n","@import '../../../common/styles/variables.scss';\n\n:host {\n display: block;\n width: inherit;\n @include default-css-variables;\n}\n\n.dropdown {\n display: inline-block;\n width: 100%;\n position: relative;\n .dropdown-label {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n color: var(--nylas-base-800);\n }\n}\n\n.dropbtn {\n width: inherit;\n height: 48px;\n color: black;\n padding: 0.5rem;\n font-size: 1rem;\n cursor: pointer;\n display: flex;\n gap: 0.5rem;\n justify-content: space-between;\n align-items: center;\n background: transparent;\n border: 1px solid var(--nylas-base-200);\n border-radius: var(--nylas-border-radius-2x);\n &.focus {\n background: transparent;\n }\n &:hover,\n &:active {\n border: 1px solid var(--nylas-primary);\n }\n &:active {\n outline: 2px solid var(--nylas-primary);\n }\n span {\n &.open {\n transform: rotate(90deg);\n }\n &.closed {\n transform: rotate(270deg);\n }\n }\n}\n\n.dropdown-content {\n display: block;\n margin-top: 0.5rem;\n background-color: var(--nylas-base-0);\n width: 100%;\n max-height: 336px;\n overflow: auto;\n border: 1px solid #ddd;\n z-index: 1;\n border-radius: 4px;\n position: absolute;\n box-shadow: 0px 4px 6px -2px #0000000d;\n box-shadow: 0px 10px 15px -3px #0000001a;\n}\n\n.dropdown-content ul {\n padding: 0;\n list-style-type: none;\n color: var(--nylas-base-900);\n max-height: 336px;\n li {\n padding: 16px, 12px, 16px, 12px;\n color: black;\n padding: 12px 16px;\n text-decoration: none;\n display: block;\n font-family: inherit;\n font-size: 14px;\n font-weight: 400;\n line-height: 20px;\n letter-spacing: 0px;\n text-align: left;\n cursor: pointer;\n &:hover,\n &:focus {\n background-color: var(--nylas-base-100);\n }\n label {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n input {\n margin: 0;\n }\n }\n }\n}\n\n.selected-options {\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n padding: 0.5rem 0;\n margin-top: 0.25rem;\n background: var(--nylas-base-0);\n .selected-option {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 4px 8px;\n border-radius: var(--nylas-border-radius-2x);\n background: var(--nylas-base-100);\n color: var(--nylas-base-800);\n font-size: 16px;\n font-weight: 500;\n line-height: 1.5rem;\n letter-spacing: 0.5px;\n button {\n background: transparent;\n border: none;\n cursor: pointer;\n padding: 0;\n &:hover {\n color: var(--nylas-primary);\n }\n }\n }\n}\n","import { debug } from '@/utils/utils';\nimport { Component, Element, Event, EventEmitter, Host, Listen, Prop, State, h } from '@stencil/core';\n\ninterface DropdownOption {\n label: string;\n value: string;\n selected?: boolean; // Add a selected flag to each option\n}\n\n@Component({\n tag: 'multi-select-dropdown',\n styleUrl: 'multi-select-dropdown.scss',\n shadow: true,\n})\nexport class MultiSelectDropdown {\n @Element() el!: HTMLElement;\n\n // Props\n /**\n * The name of the dropdown\n */\n @Prop() name!: string;\n\n /**\n * The label of the dropdown\n */\n @Prop() label?: string;\n\n /**\n * The options to display in the dropdown\n */\n @Prop() options: DropdownOption[] = [];\n\n // States\n /**\n * The copy of the options to display in the dropdown\n */\n @State() availableOptions: DropdownOption[] = this.options;\n /**\n * The open state of the dropdown\n */\n @State() isOpen: boolean = false;\n /**\n * The aria-activedescendant attribute for the listbox element to indicate the currently active\n */\n @State() ariaActivedescendant: string = '';\n\n /**\n * This flag is used to focus the first option when the dropdown is opened\n * and reset after the first option is focused\n */\n @State() shouldFocusFirstOption: boolean = false;\n\n // Events\n /**\n * This event is fired when the selected options are changed\n */\n @Event({ bubbles: true, composed: true }) selectedOptionsChanged!: EventEmitter<{\n value: string[];\n name: string;\n }>;\n\n // Lifecycle methods\n componentDidRender() {\n debug('multi-select-dropdown', 'componentDidRender');\n if (this.isOpen && this.shouldFocusFirstOption) {\n // The dropdown is open and we should focus the first option\n this.ariaActivedescendant = this.availableOptions[0].value;\n this.focusOption(0);\n // Reset the flag\n this.shouldFocusFirstOption = false;\n }\n }\n\n // Event listeners\n @Listen('click', { target: 'document', capture: true })\n handleOutsideClick(event: MouseEvent) {\n // Get the path of the event\n const path = event.composedPath();\n\n // Check if the path includes the host element\n const isClickInside = path.includes(this.el);\n\n if (!isClickInside && this.isOpen) {\n this.isOpen = false;\n }\n }\n\n // Methods\n\n selectOption(option: DropdownOption): void {\n this.availableOptions = this.availableOptions.map(o => {\n if (o.value === option.value) {\n o.selected = option.selected ? false : true;\n }\n return o;\n });\n const selectedOptions = this.availableOptions.filter(o => o.selected).map(o => o.value);\n this.selectedOptionsChanged.emit({\n value: selectedOptions,\n name: this.name,\n });\n }\n\n toggleDropdown(): void {\n this.isOpen = !this.isOpen;\n if (this.isOpen) {\n this.shouldFocusFirstOption = true;\n } else {\n this.ariaActivedescendant = '';\n }\n }\n\n handleSelectButtonKeyDown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'ArrowDown':\n case 'Enter':\n event.preventDefault();\n if (!this.isOpen) {\n this.toggleDropdown();\n }\n break;\n case 'Escape':\n this.isOpen = false;\n break;\n }\n }\n\n handleListboxKeydown(e: KeyboardEvent) {\n const items = this.availableOptions;\n const currentIndex = items.findIndex(item => item.value === this.ariaActivedescendant);\n\n switch (e.key) {\n case 'ArrowDown':\n case 'Tab':\n if (!e.shiftKey) {\n e.preventDefault();\n const nextIndex = currentIndex + 1 < items.length ? currentIndex + 1 : 0;\n this.ariaActivedescendant = items[nextIndex].value;\n this.focusOption(nextIndex);\n } else {\n e.preventDefault();\n const prevIndex = currentIndex - 1 >= 0 ? currentIndex - 1 : items.length - 1;\n this.ariaActivedescendant = items[prevIndex].value;\n this.focusOption(prevIndex);\n }\n break;\n case 'ArrowUp':\n e.preventDefault();\n const prevIndex = currentIndex - 1 >= 0 ? currentIndex - 1 : items.length - 1;\n this.ariaActivedescendant = items[prevIndex].value;\n this.focusOption(prevIndex);\n break;\n case 'Enter':\n e.preventDefault();\n if (this.ariaActivedescendant) {\n this.selectOption(items[currentIndex]);\n }\n break;\n case 'Escape':\n this.isOpen = false;\n break;\n }\n }\n\n focusOption(index: number) {\n const option = this.availableOptions[index];\n if (!option) return; // Guard clause in case index is out of bounds\n\n const elementId = option.value;\n const element = this.el.shadowRoot?.getElementById(elementId) as HTMLLIElement;\n\n if (element) {\n element.focus(); // Set focus on the element\n element.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n }\n }\n\n getSelectedOptions() {\n return this.availableOptions.filter(option => option.selected);\n }\n\n renderOption(option: DropdownOption) {\n return (\n <li\n key={option.value}\n id={option.value}\n role=\"option\"\n tabindex=\"0\"\n aria-selected={option.selected ? 'true' : 'false'}\n onClick={e => {\n e.stopImmediatePropagation();\n this.selectOption(option);\n }}\n class={{ selected: !!option.selected }}\n >\n <label htmlFor={option.value}>\n <input aria-hidden=\"true\" id={option.value} type=\"checkbox\" checked={option.selected} />\n <span>{option.label}</span>\n </label>\n </li>\n );\n }\n\n render() {\n return (\n <Host>\n <div class=\"dropdown\" part=\"msd_dropdown\">\n <label class=\"dropdown-label\">\n {this.label}\n <slot name=\"label-icon\" aria-hidden=\"true\"></slot>\n </label>\n <button\n part=\"msd_dropdown-button\"\n class={{ dropbtn: true, open: this.isOpen }}\n onClick={() => this.toggleDropdown()}\n aria-haspopup=\"listbox\"\n aria-expanded={this.isOpen ? 'true' : 'false'}\n aria-label={this.name}\n onKeyDown={e => this.handleSelectButtonKeyDown(e)}\n >\n <slot name=\"select-icon\" aria-hidden=\"true\"></slot>\n <span class=\"selected-option\" part=\"msd_dropdown-button-selected-label\">\n {this.getSelectedOptions().length > 1\n ? `Multiple ${this.name}s selected`\n : this.availableOptions.filter(o => o.selected)[0]?.label ?? this.availableOptions[0]?.label}\n </span>\n <span class={this.isOpen ? 'open' : 'closed'} aria-hidden=\"true\">\n <chevron-icon width=\"16\" height=\"16\" />\n </span>\n </button>\n {this.isOpen ? null : (\n <div class={'selected-options'}>\n {this.getSelectedOptions().map(option => (\n <span class=\"selected-option\">\n {option.label}\n <button key={option.label} onClick={() => this.selectOption(option)}>\n <close-icon />\n </button>\n </span>\n ))}\n </div>\n )}\n {this.isOpen ? (\n <div class=\"dropdown-content\" part=\"msd_dropdown-content\">\n <ul\n tabindex=\"-1\"\n role=\"listbox\"\n aria-label={this.name}\n aria-multiselectable={true}\n aria-activedescendant={this.ariaActivedescendant}\n onKeyDown={e => this.handleListboxKeydown(e)}\n >\n {this.availableOptions.map(option => this.renderOption(option))}\n </ul>\n </div>\n ) : null}\n </div>\n </Host>\n );\n }\n}\n","@import '../../../common/styles/variables.scss';\n\n:host {\n display: block;\n @include default-css-variables;\n width: inherit;\n}\n\n.nylas-availability-picker {\n width: inherit;\n display: flex;\n flex-direction: column;\n margin: 1rem;\n border-radius: var(--nylas-border-radius-2x);\n border: 1px solid var(--nylas-base-200);\n .header {\n padding: 1rem;\n border-bottom: 1px solid var(--nylas-base-200);\n h3 {\n margin: 0;\n font-size: 1rem;\n font-weight: 600;\n line-height: 20px;\n color: var(--nylas-base-900);\n text-align: left;\n }\n p {\n margin: 0.25rem 0 0 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 .content {\n padding: 1rem;\n color: var(--nylas-base-900);\n .select-timezone {\n display: flex;\n justify-content: space-between;\n align-items: center;\n border-bottom: 1px solid var(--nylas-base-200);\n padding-bottom: 1rem;\n h4 {\n display: flex;\n gap: 0.5rem;\n align-items: center;\n margin: 0;\n font-size: 1rem;\n font-weight: 500;\n line-height: 20px;\n }\n select-dropdown {\n border: 1px solid var(--nylas-base-200);\n border-radius: var(--nylas-border-radius-2x);\n }\n }\n .availability {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n padding: 0 0.5rem;\n margin: 1rem 0;\n .availability-day {\n display: grid;\n grid-template-columns: minmax(auto, 65px) 1fr minmax(auto, 40px);\n @media #{$mobile} {\n grid-template-columns: auto;\n }\n gap: 1rem;\n align-items: baseline;\n .day {\n display: flex;\n gap: 0.5rem;\n align-items: center;\n }\n .time-ranges {\n span.unavailable {\n height: 48px;\n display: flex;\n align-items: center;\n }\n .time-range {\n display: flex;\n gap: 1.5rem;\n justify-content: space-between;\n align-items: baseline;\n .pickers {\n display: flex;\n gap: 1rem;\n span {\n margin-top: 0.75rem;\n }\n }\n &:not(:last-of-type) {\n margin-bottom: 1rem;\n }\n }\n p.error {\n color: var(--nylas-error);\n }\n }\n button {\n border: none;\n background: transparent;\n height: 40px;\n cursor: pointer;\n color: var(--nylas-base-800);\n &:hover,\n &:active {\n color: var(--nylas-primary);\n }\n }\n }\n }\n }\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { convertTo12HourFormat, convertTo24HourFormat, debug, minutesToTime, timeToMinutes } from '@/utils/utils';\nimport { AttachInternals, Component, Element, Event, EventEmitter, Host, Listen, Prop, State, Watch, h } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\nimport { TIMEZONE_MAP } from '@/common/constants';\n\ntype OpenHours = {\n days: number[];\n start: string;\n end: string;\n timezone: string;\n};\n\ntype Schedule = {\n SUN: { start: string; end: string }[];\n MON: { start: string; end: string }[];\n TUE: { start: string; end: string }[];\n WED: { start: string; end: string }[];\n THU: { start: string; end: string }[];\n FRI: { start: string; end: string }[];\n SAT: { start: string; end: string }[];\n};\n\n/**\n * The `nylas-availability-picker` component is a form input for selecting availability (open hours).\n */\n@Component({\n tag: 'nylas-availability-picker',\n styleUrl: 'nylas-availability-picker.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasAvailabilityPicker {\n @Element() host!: HTMLNylasAvailabilityPickerElement;\n @Prop() openHours?: OpenHours[];\n @Prop() name: string = 'availability';\n @Prop() defaultTimezone: string = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\n /**\n * This event is fired when the selected availability / open hours change.\n */\n @Event() valueChanged!: EventEmitter<{\n value: OpenHours[];\n name: string;\n }>;\n\n /**\n * The element internals.\n */\n @AttachInternals() internals!: ElementInternals;\n @State() schedule = {\n SUN: [],\n MON: [{ start: '09:00am', end: '05:00pm' }],\n TUE: [{ start: '09:00am', end: '05:00pm' }],\n WED: [{ start: '09:00am', end: '05:00pm' }],\n THU: [{ start: '09:00am', end: '05:00pm' }],\n FRI: [{ start: '09:00am', end: '05:00pm' }],\n SAT: [],\n };\n @State() timezone: string = Intl.DateTimeFormat().resolvedOptions().timeZone;\n @State() overlapDays: { [key: string]: number[] } = {};\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-calendar-picker', 'elementNameChangedHandler', newValue);\n this.host.setAttribute('name', newValue);\n }\n\n @Watch('schedule')\n scheduleChanged(newValue: Schedule, oldValue: Schedule) {\n if (newValue !== oldValue) {\n this.valueChanged.emit({\n value: this.scheduleToOpenHours(newValue, this.timezone),\n name: this.name,\n });\n let overlapDays: { [key: string]: number[] } = {};\n Object.keys(newValue).forEach(key => {\n const dayTimeRanges = newValue[key];\n if (dayTimeRanges.length > 0) {\n const overlaps = this.getOverlaps(dayTimeRanges);\n if (overlaps.length > 0) {\n overlapDays[key] = overlaps;\n }\n }\n });\n this.overlapDays = overlapDays;\n if (typeof this.internals.setFormValue !== 'function') {\n return;\n }\n if (Object.keys(overlapDays).length > 0) {\n const element = this.host.shadowRoot?.getElementById(Object.keys(overlapDays)[0]) as HTMLInputElement;\n if (element) {\n this.internals.setValidity({ customError: true }, 'Overlapping time ranges found', element);\n }\n } else {\n this.internals.setValidity({ customError: false });\n this.internals.setFormValue(JSON.stringify(this.scheduleToOpenHours(newValue, this.timezone)));\n }\n }\n }\n\n @Listen('selectedOptionChanged')\n selectedOptionChangedHandler(\n event: CustomEvent<{\n value: string;\n name: string;\n }>,\n ) {\n const { name, value } = event.detail;\n if (name === 'timezone') {\n this.timezone = value;\n if (typeof this.internals.setFormValue !== 'function') {\n return;\n }\n this.internals.setFormValue(JSON.stringify(this.scheduleToOpenHours(this.schedule, this.timezone)));\n }\n }\n\n connectedCallback() {\n debug('nylas-availability-picker', 'connectedCallback');\n }\n\n disconnectedCallback() {\n debug('nylas-availability-picker', 'disconnectedCallback');\n }\n\n componentWillLoad() {\n debug('nylas-availability-picker', 'componentWillLoad');\n this.host.setAttribute('name', this.name);\n }\n\n componentDidLoad() {\n debug('nylas-availability-picker', 'componentDidLoad');\n if (this.openHours && this.openHours.length > 0) {\n this.updateSchedule(this.openHours);\n }\n if (typeof this.internals.setFormValue !== 'function') {\n return;\n }\n this.internals.setFormValue(JSON.stringify(this.scheduleToOpenHours(this.schedule, this.timezone)));\n }\n\n getOverlaps(timeRanges) {\n // Convert times to minutes and add to the array\n let timeRangesInMinutes = timeRanges.map((range, index) => ({\n start: timeToMinutes(range.start),\n end: timeToMinutes(range.end),\n originalIndex: index,\n }));\n\n // Sort by start time\n timeRangesInMinutes.sort((a, b) => a.start - b.start);\n let overlaps: number[] = [];\n // Check for overlap\n for (let i = 1; i < timeRangesInMinutes.length; i++) {\n if (timeRangesInMinutes[i].start < timeRangesInMinutes[i - 1].end) {\n // Add both overlapping time range indices if they are not already included\n if (!overlaps.includes(timeRangesInMinutes[i].originalIndex)) {\n overlaps.push(timeRangesInMinutes[i].originalIndex);\n }\n if (!overlaps.includes(timeRangesInMinutes[i - 1].originalIndex)) {\n overlaps.push(timeRangesInMinutes[i - 1].originalIndex);\n }\n }\n }\n return overlaps.sort((a, b) => a - b); // Return sorted list of indices\n }\n\n addTimeRange(day) {\n const currentTimeRanges = this.schedule[day];\n\n // Default working hours are from 00:00 to 23:45 for calculation purposes\n const dayStart = 0; // Start of the day in minutes (00:00)\n const dayEnd = 1425; // End of the day in minutes (23:45)\n\n if (currentTimeRanges.length === 0) {\n // If there are no existing time ranges, add one at the start of the day\n this.schedule[day] = [{ start: '09:00am', end: '05:00pm' }]; // Example range\n } else {\n // Convert all time ranges to minutes for comparison\n const timeRangesInMinutes = currentTimeRanges\n .map(range => ({\n start: timeToMinutes(range.start),\n end: timeToMinutes(range.end),\n }))\n .sort((a, b) => a.start - b.start); // Sort by start time\n\n // Attempt to add a new time range at the end of the day\n const lastRangeEnd = timeRangesInMinutes[timeRangesInMinutes.length - 1].end;\n if (lastRangeEnd + 60 <= dayEnd) {\n // There's room at the end of the day\n this.schedule[day].push({\n start: convertTo12HourFormat(minutesToTime(lastRangeEnd)),\n end: convertTo12HourFormat(minutesToTime(lastRangeEnd + 60)),\n });\n } else {\n // No room at the end, look for gaps at the beginning of the day\n let gapFound = false;\n if (timeRangesInMinutes[0].start > dayStart + 60) {\n // There's room for at least a 1-hour meeting at the beginning of the day\n this.schedule[day].push({\n start: convertTo12HourFormat(minutesToTime(dayStart)),\n end: convertTo12HourFormat(minutesToTime(dayStart + 60)),\n });\n gapFound = true;\n }\n\n if (!gapFound) {\n // Search for gaps between scheduled time ranges\n for (let i = 0; i < timeRangesInMinutes.length - 1; i++) {\n const currentEnd = timeRangesInMinutes[i].end;\n const nextStart = timeRangesInMinutes[i + 1].start;\n\n if (nextStart - currentEnd >= 60) {\n // Found a gap\n this.schedule[day].push({\n start: convertTo12HourFormat(minutesToTime(currentEnd)),\n end: convertTo12HourFormat(minutesToTime(currentEnd + 60)),\n });\n break; // Exit the loop after adding a time range\n }\n }\n }\n }\n }\n\n // Sort the updated schedule to maintain order\n this.schedule[day].sort((a, b) => timeToMinutes(a.start) - timeToMinutes(b.start));\n\n this.schedule = { ...this.schedule };\n }\n\n removeTimeRange(day, index) {\n this.schedule[day].splice(index, 1);\n this.schedule = { ...this.schedule };\n }\n\n setTime(key: string, _event: Event, value: string) {\n const [dayIndex, timeType] = key.split('_');\n const [day, index] = dayIndex.split(':');\n\n if (timeType === 'start') {\n this.schedule[day][index].start = value;\n } else if (timeType === 'end') {\n this.schedule[day][index].end = value;\n }\n this.internals.setValidity({ customError: false });\n this.schedule = { ...this.schedule };\n }\n\n setFormError(key: string, _event: Event, _errorMessage: string) {\n const [_, timeType] = key.split('_');\n const element = this.host.shadowRoot?.getElementById(key);\n if (element) {\n this.internals.setValidity({ customError: true }, `Invalid ${timeType} time`, element as HTMLInputElement);\n }\n }\n\n updateSchedule(openHours: OpenHours[]) {\n const newSchedule = {\n SUN: [],\n MON: [],\n TUE: [],\n WED: [],\n THU: [],\n FRI: [],\n SAT: [],\n };\n openHours.forEach(openHour => {\n openHour.days.forEach(day => {\n const dayKey = this.getDayKey(day);\n const start12hr = convertTo12HourFormat(openHour.start);\n const end12hr = convertTo12HourFormat(openHour.end);\n const timeRange = { start: start12hr, end: end12hr };\n\n // Check if the time range already exists for the day\n let timeRangeExists = false;\n if (newSchedule[dayKey]) {\n // Search for an existing time range that matches the current one\n timeRangeExists = newSchedule[dayKey].some(range => range.start === timeRange.start && range.end === timeRange.end);\n }\n\n if (!timeRangeExists) {\n if (newSchedule[dayKey]) {\n newSchedule[dayKey].push(timeRange);\n } else {\n newSchedule[dayKey] = [timeRange];\n }\n }\n });\n });\n if (openHours.length === 0) {\n this.timezone = openHours[0].timezone;\n }\n this.timezone = openHours[0].timezone;\n this.schedule = newSchedule;\n }\n\n getDayKey(dayIndex: number): string {\n const days = ['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT'];\n return days[dayIndex];\n }\n\n scheduleToOpenHours(schedule: Schedule, timezone: string = 'UTC'): OpenHours[] {\n const dayKeys = ['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT'];\n let openHoursMap: Map<string, { days: number[]; start: string; end: string }> = new Map();\n\n dayKeys.forEach((dayKey, index) => {\n if (schedule[dayKey]) {\n // Check if schedule for the day exists\n schedule[dayKey].forEach(timeRange => {\n const start24hr = convertTo24HourFormat(timeRange.start);\n const end24hr = convertTo24HourFormat(timeRange.end);\n const key = `${start24hr}-${end24hr}`;\n\n if (!openHoursMap.has(key)) {\n openHoursMap.set(key, { days: [index], start: start24hr, end: end24hr });\n } else {\n let entry = openHoursMap.get(key);\n if (entry) {\n entry.days.push(index);\n openHoursMap.set(key, entry);\n }\n }\n });\n }\n });\n\n let selectedOpenHours: OpenHours[] = [];\n openHoursMap.forEach((value, _key) => {\n selectedOpenHours.push({\n days: value.days,\n start: value.start,\n end: value.end,\n timezone: timezone,\n });\n });\n\n return selectedOpenHours;\n }\n\n @RegisterComponent<NylasAvailabilityPicker, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-availability-picker',\n fireRegisterEvent: true,\n })\n render() {\n const timezoneOptions = Object.keys(TIMEZONE_MAP).map(key => ({\n label: TIMEZONE_MAP[key],\n value: key,\n }));\n\n return (\n <Host>\n <div class=\"nylas-availability-picker\">\n <div class=\"header\" part=\"ncp__header\">\n <h3>General availability</h3>\n <p>Set your availability for scheduling meetings.</p>\n </div>\n <div class=\"content\">\n <div class=\"select-timezone\">\n <h4 class=\"sub-header\">\n Select timezone\n <span class=\"icon\">\n <tooltip-component>\n <info-icon slot=\"tooltip-icon\" />\n <span slot=\"tooltip-content\">Select your timezone for displaying availability.</span>\n </tooltip-component>\n </span>\n </h4>\n <select-dropdown name=\"timezone\" options={timezoneOptions} defaultSelectedOption={timezoneOptions.find(i => i.value === this.defaultTimezone)}>\n <span slot=\"select-icon\">\n <globe-icon width=\"20\" height=\"20\" />\n </span>\n </select-dropdown>\n </div>\n <div class=\"availability\">\n {Object.keys(this.schedule).map(key => {\n const day = key;\n const timeRanges = this.schedule[key] as { start: string; end: string }[];\n return (\n <div class=\"availability-day\">\n <div class=\"day\" part=\"ndp__day\">\n <input\n type=\"checkbox\"\n name={day}\n id={day}\n checked={timeRanges.length > 0}\n onClick={() => {\n if (timeRanges.length > 0) {\n this.schedule[day] = [];\n } else {\n this.schedule[day] = [{ start: '09:00am', end: '05:00pm' }];\n }\n this.schedule = { ...this.schedule };\n }}\n />\n <label htmlFor={day} aria-label=\"Select day\">\n {day}\n </label>\n </div>\n <div class=\"time-ranges\">\n {timeRanges.length ? null : <span class=\"unavailable\">Unavailable</span>}\n {timeRanges.length > 0 &&\n timeRanges.map((timeRange, timeRangeIndex) => {\n const startKey = `${key}:${timeRangeIndex}_start`;\n const endKey = `${key}:${timeRangeIndex}_end`;\n return (\n <div class=\"time-range\">\n <div class=\"pickers\">\n <nylas-time-window-picker\n id={startKey}\n hasError={this.overlapDays[day]?.includes(timeRangeIndex)}\n time={timeRange.start}\n name={startKey}\n key={startKey}\n setTime={(event, additionalData) => this.setTime(startKey, event, additionalData)}\n setFormError={(event, additionalData) => this.setFormError(startKey, event, additionalData)}\n />\n <span> - </span>\n <nylas-time-window-picker\n id={endKey}\n hasError={this.overlapDays[day]?.includes(timeRangeIndex)}\n time={timeRange.end}\n name={endKey}\n key={endKey}\n minimumStartTime={timeRange.start}\n setTime={(event, additionalData) => this.setTime(endKey, event, additionalData)}\n setFormError={(event, additionalData) => this.setFormError(endKey, event, additionalData)}\n />\n </div>\n <button onClick={() => this.removeTimeRange(day, timeRangeIndex)}>\n <close-icon />\n </button>\n </div>\n );\n })}\n <p class=\"error\">{this.overlapDays[day] ? 'Overlapping time ranges' : ''}</p>\n </div>\n <div>\n {timeRanges.length > 0 ? (\n <button onClick={() => this.addTimeRange(day)}>\n <add-circle-icon />\n </button>\n ) : null}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n","@import '../../../common/styles/variables.scss';\n\n:host {\n display: block;\n @include default-css-variables;\n width: inherit;\n}\n\n.nylas-booking-calendar-picker {\n width: inherit;\n display: flex;\n flex-direction: column;\n margin: 1rem;\n border-radius: var(--nylas-border-radius-2x);\n border: 1px solid var(--nylas-base-200);\n .header {\n padding: 1rem;\n border-bottom: 1px solid var(--nylas-base-200);\n h3 {\n margin: 0;\n font-size: 1rem;\n font-weight: 600;\n line-height: 20px;\n color: var(--nylas-base-900);\n text-align: left;\n }\n p {\n margin: 0.25rem 0 0 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 .nylas-booking-calendar-picker__loading {\n padding-bottom: 1rem;\n .label {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n margin: 1rem 1rem 0;\n color: var(--nylas-base-800);\n }\n .loading-button {\n margin: 0 1rem;\n padding: 0;\n width: inherit;\n height: 48px;\n color: black;\n font-size: 1rem;\n cursor: not-allowed;\n display: flex;\n gap: 0.5rem;\n justify-content: space-between;\n align-items: center;\n background: transparent;\n border: 1px solid var(--nylas-base-200);\n border-radius: var(--nylas-border-radius-2x);\n span {\n padding: 0 1rem;\n }\n }\n }\n .nylas-booking-calendar-picker__dropdown {\n padding: 1rem;\n span.label {\n display: flex;\n align-items: center;\n gap: 4px;\n color: var(--nylas-base-800);\n tooltip-component {\n display: flex;\n }\n }\n select-dropdown::part(sd_dropdown) {\n width: 100%;\n }\n select-dropdown::part(sd_dropdown-content) {\n width: 100%;\n max-width: unset;\n }\n select-dropdown::part(sd_dropdown-button) {\n width: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n border: 1px solid var(--nylas-base-200);\n border-radius: var(--nylas-border-radius-2x);\n padding: 1rem;\n }\n select-dropdown::part(sd_dropdown-button-selected-label) {\n max-width: calc(100% - 2rem);\n font-family: var(--nylas-font-family);\n font-size: 16px;\n line-height: 24px;\n }\n }\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { debug } from '@/utils/utils';\nimport { Calendar } from '@nylas/core';\nimport { AttachInternals, Component, Element, Event, EventEmitter, Host, Listen, Prop, State, Watch, h } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\n\n/**\n * The `nylas-booking-calendar-picker` component is a UI component that displays the booking calendar picker.\n */\n@Component({\n tag: 'nylas-booking-calendar-picker',\n styleUrl: 'nylas-booking-calendar-picker.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasBookingCalendarPicker {\n @Element() host!: HTMLNylasCalendarPickerElement;\n /**\n * The calendars to choose from.\n */\n @Prop() calendars?: Calendar[];\n /**\n * The name of the calendar picker.\n */\n @Prop() name: string = 'calendar';\n /**\n * The default selected calendars.\n */\n @Prop() defaultBookingCalendar: string = '';\n /**\n * The element internals.\n */\n @AttachInternals() internals!: ElementInternals;\n\n /**\n * The selected calendars.\n */\n @State() selectedCalendar: string = '';\n\n /**\n * This event is fired when the selected calendars change.\n */\n @Event() valueChanged!: EventEmitter<{\n value: string;\n name: string;\n valueChanged?: (event: CustomEvent<{ value: string; name: string }>) => void;\n }>;\n\n // Lifecycle methods\n connectedCallback() {\n debug('nylas-booking-calendar-picker', 'connectedCallback');\n }\n\n disconnectedCallback() {\n debug('nylas-booking-calendar-picker', 'disconnectedCallback');\n }\n\n componentWillLoad() {\n debug('nylas-booking-calendar-picker', '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-booking-calendar-picker', 'componentDidLoad');\n // TODO: Remove this when the internals in tests are fixed.\n if (typeof this.internals.setFormValue === 'function') {\n this.internals.setFormValue(this.defaultBookingCalendar.toString(), 'booking-calendar');\n }\n this.selectedCalendar = this.defaultBookingCalendar;\n }\n\n componentWillUpdate() {\n debug('nylas-booking-calendar-picker', 'componentWillUpdate');\n }\n\n componentDidUpdate() {\n debug('nylas-booking-calendar-picker', 'componentDidUpdate');\n }\n\n componentWillRender() {\n debug('nylas-booking-calendar-picker', 'componentWillRender');\n }\n\n componentDidRender() {\n debug('nylas-booking-calendar-picker', 'componentDidRender');\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-booking-calendar-picker', 'elementNameChangedHandler', newValue);\n this.host.setAttribute('name', newValue);\n }\n\n @Listen('selectedOptionChanged')\n selectedOptionChangedHandler(event: CustomEvent<{ value: string; name: string }>) {\n debug('nylas-booking-calendar-picker', 'selectedOptionChangedHandler', event.detail);\n // Pass as handler so that if event.defaultPrevented by parent app, this will be skipped.\n const valueChanged = (event: CustomEvent<{ value: string; name: string }>) => {\n const { value } = event.detail;\n this.selectedCalendar = value;\n this.internals.setFormValue(value.toString(), 'booking-calendar');\n };\n this.valueChanged.emit({ ...event.detail, valueChanged });\n }\n\n @RegisterComponent<NylasBookingCalendarPicker, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-booking-calendar-picker',\n eventToProps: {\n valueChanged: async (\n event: CustomEvent<{ value: string; name: string; valueChanged?: (event: CustomEvent<{ value: string; name: string }>) => void }>,\n _nylasSchedulerConfigConnector: NylasSchedulerConfigConnector,\n ) => {\n const { valueChanged } = event.detail;\n // If a handler is passed, call it.\n if (valueChanged) {\n valueChanged(event);\n }\n },\n },\n fireRegisterEvent: true,\n })\n render() {\n const calendarOptions =\n this.calendars?.map(calendar => {\n return {\n value: calendar.id,\n label: calendar.name,\n };\n }) ?? [];\n\n return (\n <Host>\n <div class=\"nylas-booking-calendar-picker\">\n <div class=\"header\" part=\"ncp__header\">\n <h3>Calendar booking</h3>\n <p>Choose calendar where you’d like the event bookings to show up.</p>\n </div>\n\n {calendarOptions.length > 0 ? (\n <div class=\"nylas-booking-calendar-picker__dropdown\">\n <span class=\"label\">\n Select a calendar to book meetings on\n <tooltip-component>\n <info-icon slot=\"tooltip-icon\" />\n <span slot=\"tooltip-content\">\n Check availability across one or multiple calendars. If multiple calendars are selected, you must be available across all of them to be considered available.\n </span>\n </tooltip-component>\n </span>\n <select-dropdown\n name=\"booking-calendar\"\n options={calendarOptions}\n withSearch={false}\n defaultSelectedOption={calendarOptions.find(cal => cal.value == this.defaultBookingCalendar) ?? calendarOptions[0]}\n />\n </div>\n ) : (\n <div class=\"nylas-booking-calendar-picker__loading\">\n <span class=\"label\">\n Select a calendar to book meetings on <info-icon />\n </span>\n <div class=\"loading-button\">\n <span>Loading...</span>\n </div>\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n","@import '../../../common/styles/variables.scss';\n\n:host {\n display: block;\n @include default-css-variables;\n width: inherit;\n}\n\n.nylas-buffer-time {\n width: inherit;\n display: flex;\n flex-direction: column;\n margin: 1rem;\n border-radius: var(--nylas-border-radius-2x);\n border: 1px solid var(--nylas-base-200);\n text-align: left;\n .header {\n padding: 1rem;\n border-bottom: 1px solid var(--nylas-base-200);\n h3 {\n margin: 0;\n font-size: 1rem;\n font-weight: 600;\n line-height: 20px;\n color: var(--nylas-base-900);\n text-align: left;\n }\n p {\n margin: 0.25rem 0 0 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 .nylas-buffer-time__body {\n display: grid;\n grid-template-columns: 1fr auto;\n .nylas-buffer-time__dropdown {\n padding: 1rem;\n display: flex;\n flex-direction: column;\n gap: 1rem;\n border-right: 1px solid var(--nylas-base-200);\n .nylas-buffer-time__row {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: center;\n gap: 1rem;\n label {\n width: 200px;\n }\n .dropdown-container {\n display: flex;\n gap: 1rem;\n align-items: center;\n }\n }\n }\n .nylas-buffer-time__preview {\n width: 200px;\n padding: 1rem;\n background: var(--nylas-base-25);\n border-bottom-right-radius: var(--nylas-border-radius-2x);\n h4 {\n font-size: 12px;\n line-height: 24px;\n color: var(--nylas-base-600);\n font-family: var(--nylas-font-family);\n font-weight: 500;\n text-align: center;\n }\n .preview-container {\n .slot {\n background-color: transparent;\n border-top: 1px solid var(--nylas-base-300);\n &.active {\n background-color: var(--nylas-base-100);\n }\n &:last-of-type {\n border-bottom: 1px solid var(--nylas-base-300);\n }\n }\n .event-slot {\n background-color: var(--nylas-base-600);\n border-top: 1px solid var(--nylas-base-300);\n border-bottom: 1px solid var(--nylas-base-300);\n }\n }\n }\n }\n\n .nylas-buffer-time__dropdown {\n select-dropdown::part(sd_dropdown-button) {\n width: 104px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n border: 1px solid var(--nylas-base-200);\n border-radius: var(--nylas-border-radius-2x);\n padding: 1rem;\n }\n select-dropdown::part(sd_dropdown-content) {\n width: 100%;\n }\n select-dropdown::part(sd_dropdown-button-selected-label) {\n max-width: calc(100% - 2rem);\n font-family: var(--nylas-font-family);\n font-size: 16px;\n line-height: 24px;\n }\n }\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { debug } from '@/utils/utils';\nimport { AttachInternals, Component, Element, Event, EventEmitter, Host, Listen, Prop, State, Watch, h } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\n\n/**\n * The `nylas-buffer-time` component is a UI component that displays the booking calendar picker.\n */\n@Component({\n tag: 'nylas-buffer-time',\n styleUrl: 'nylas-buffer-time.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasBufferTime {\n @Element() host!: HTMLNylasCalendarPickerElement;\n /**\n * The name of the calendar picker.\n */\n @Prop() name: string = 'buffer-time';\n /**\n * The buffer time\n */\n @Prop() buffer: { before: number; after: number } = { before: 0, after: 0 };\n /**\n * The element internals.\n */\n @AttachInternals() internals!: ElementInternals;\n\n /**\n * The selected before buffer time.\n */\n @State() selectedBeforeBufferTime: number = this.buffer.before;\n\n /**\n * The selected after buffer time.\n */\n @State() selectedAfterBufferTime: number = this.buffer.after;\n\n /**\n * This event is fired when the selected calendars change.\n */\n @Event() valueChanged!: EventEmitter<{\n value: string;\n name: string;\n valueChanged?: (event: CustomEvent<{ value: string; name: string }>) => void;\n }>;\n\n // Lifecycle methods\n connectedCallback() {\n debug('nylas-buffer-time', 'connectedCallback');\n }\n\n disconnectedCallback() {\n debug('nylas-buffer-time', 'disconnectedCallback');\n }\n\n componentWillLoad() {\n debug('nylas-buffer-time', '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-buffer-time', 'componentDidLoad');\n // TODO: Remove this when the internals in tests are fixed.\n if (typeof this.internals.setFormValue === 'function') {\n const bufferTime = {\n before: this.selectedBeforeBufferTime,\n after: this.selectedAfterBufferTime,\n };\n this.internals.setFormValue(JSON.stringify(bufferTime), this.name);\n }\n this.selectedAfterBufferTime = this.buffer.after;\n this.selectedBeforeBufferTime = this.buffer.before;\n }\n\n componentWillUpdate() {\n debug('nylas-buffer-time', 'componentWillUpdate');\n }\n\n componentDidUpdate() {\n debug('nylas-buffer-time', 'componentDidUpdate');\n }\n\n componentWillRender() {\n debug('nylas-buffer-time', 'componentWillRender');\n }\n\n componentDidRender() {\n debug('nylas-buffer-time', 'componentDidRender');\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-buffer-time', 'elementNameChangedHandler', newValue);\n this.host.setAttribute('name', newValue);\n }\n\n @Listen('selectedOptionChanged')\n selectedOptionChangedHandler(event: CustomEvent<{ value: string; name: string }>) {\n debug('nylas-buffer-time', 'selectedOptionChangedHandler', event.detail);\n // Pass as handler so that if event.defaultPrevented by parent app, this will be skipped.\n const valueChanged = (event: CustomEvent<{ value: string; name: string }>) => {\n const { value, name } = event.detail;\n if (name === 'before-buffer-time') {\n this.selectedBeforeBufferTime = parseInt(value);\n } else if (name === 'after-buffer-time') {\n this.selectedAfterBufferTime = parseInt(value);\n }\n const bufferTime = {\n before: this.selectedBeforeBufferTime,\n after: this.selectedAfterBufferTime,\n };\n this.internals.setFormValue(JSON.stringify(bufferTime), 'booking-calendar');\n };\n this.valueChanged.emit({ ...event.detail, valueChanged });\n }\n\n renderPreview() {\n const totalSlots = 4;\n const slotHeight = 20; // The height for each 30-minute slot\n\n // Event slot height is constant\n const eventSlotHeight = slotHeight * 2;\n\n // Helper function to determine the fill of a slot based on the minutes selected\n const slotFill = minutes => {\n const fullSlots = Math.floor(minutes / 30);\n const partialFillHeight = ((minutes % 30) / 30) * slotHeight;\n\n return {\n fullSlots,\n partialFillHeight,\n };\n };\n\n // Helper function to create before slots\n const createBeforeSlots = () => {\n const { fullSlots, partialFillHeight } = slotFill(this.selectedBeforeBufferTime);\n\n return Array.from({ length: totalSlots }, (_, index) => {\n // Slot is active if its index is greater than the total slots minus the full slots minus one\n // and there are some minutes selected.\n const isActive = this.selectedBeforeBufferTime > 0 && index > totalSlots - fullSlots - 1;\n const isPartial = this.selectedBeforeBufferTime > 0 && index === totalSlots - fullSlots - 1 && partialFillHeight > 0;\n\n let slotStyle: {\n backgroundColor?: string;\n background?: string;\n } = {};\n if (isActive && !isPartial) {\n slotStyle.backgroundColor = 'var(--nylas-base-100)';\n } else if (isPartial) {\n slotStyle.background = `linear-gradient(to top, var(--nylas-base-100) ${partialFillHeight}px, transparent 0)`;\n }\n\n return (\n <div\n class={`slot ${isActive ? 'active' : ''}`}\n style={{\n height: `${slotHeight}px`,\n ...slotStyle,\n }}\n ></div>\n );\n });\n };\n\n // Helper function to create after slots\n const createAfterSlots = () => {\n const { fullSlots, partialFillHeight } = slotFill(this.selectedAfterBufferTime);\n\n return Array.from({ length: totalSlots }, (_, index) => {\n const isActive = this.selectedAfterBufferTime > 0 && index < fullSlots;\n const isPartial = index === fullSlots && partialFillHeight > 0;\n\n let slotStyle: {\n backgroundColor?: string;\n background?: string;\n } = {};\n if (isActive && !isPartial) {\n slotStyle.backgroundColor = 'var(--nylas-base-100)';\n } else if (isPartial) {\n slotStyle.background = `linear-gradient(to bottom, var(--nylas-base-100) ${partialFillHeight}px, transparent 0)`;\n }\n\n return (\n <div\n class={`slot ${isActive ? 'active' : ''}`}\n style={{\n height: `${slotHeight}px`,\n ...slotStyle,\n }}\n ></div>\n );\n });\n };\n\n return (\n <div class=\"preview-container\">\n {createBeforeSlots()}\n <div class=\"event-slot\" style={{ height: `${eventSlotHeight}px` }}></div>\n {createAfterSlots()}\n </div>\n );\n }\n\n @RegisterComponent<NylasBufferTime, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-buffer-time',\n eventToProps: {\n valueChanged: async (\n event: CustomEvent<{ value: string; name: string; valueChanged?: (event: CustomEvent<{ value: string; name: string }>) => void }>,\n _nylasSchedulerConfigConnector: NylasSchedulerConfigConnector,\n ) => {\n const { valueChanged } = event.detail;\n // If a handler is passed, call it.\n if (valueChanged) {\n valueChanged(event);\n }\n },\n },\n fireRegisterEvent: true,\n })\n render() {\n const minuteOptions = Array.from({ length: 121 }, (_, i) => {\n return {\n label: i.toString(),\n value: i,\n };\n });\n\n return (\n <Host>\n <div class=\"nylas-buffer-time\">\n <div class=\"header\" part=\"ncp__header\">\n <h3>Buffer time</h3>\n <p>Add buffer time before and after the event.</p>\n </div>\n <div class=\"nylas-buffer-time__body\">\n <div class=\"nylas-buffer-time__dropdown\">\n <div class=\"nylas-buffer-time__row\">\n <label>Before the event</label>\n <div class=\"dropdown-container\">\n <select-dropdown\n id=\"before-buffer-time\"\n name=\"before-buffer-time\"\n options={minuteOptions}\n defaultSelectedOption={minuteOptions.find(min => min.value == this.selectedBeforeBufferTime) ?? minuteOptions[0]}\n />\n <span>mins</span>\n </div>\n </div>\n <div class=\"nylas-buffer-time__row\">\n <label>After the event</label>\n <div class=\"dropdown-container\">\n <select-dropdown\n id=\"after-buffer-time\"\n name=\"after-buffer-time\"\n options={minuteOptions}\n defaultSelectedOption={minuteOptions.find(min => min.value == this.selectedAfterBufferTime) ?? minuteOptions[0]}\n />\n <span>mins</span>\n </div>\n </div>\n </div>\n <div class=\"nylas-buffer-time__preview\">\n <h4>PREVIEW</h4>\n {this.renderPreview()}\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n","@import '../../../common/styles/variables.scss';\n\n:host {\n display: block;\n @include default-css-variables;\n width: inherit;\n}\n\n.nylas-calendar-picker {\n width: inherit;\n display: flex;\n flex-direction: column;\n margin: 1rem;\n border-radius: var(--nylas-border-radius-2x);\n border: 1px solid var(--nylas-base-200);\n .header {\n padding: 1rem;\n border-bottom: 1px solid var(--nylas-base-200);\n h3 {\n margin: 0;\n font-size: 1rem;\n font-weight: 600;\n line-height: 20px;\n color: var(--nylas-base-900);\n text-align: left;\n }\n p {\n margin: 0.25rem 0 0 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 .nylas-calendar-picker__loading {\n padding-bottom: 1rem;\n .label {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n margin: 1rem 1rem 0;\n color: var(--nylas-base-800);\n tooltip-component {\n display: flex;\n }\n }\n .loading-button {\n margin: 0 1rem;\n padding: 0;\n width: inherit;\n height: 48px;\n color: black;\n font-size: 1rem;\n cursor: not-allowed;\n display: flex;\n gap: 0.5rem;\n justify-content: space-between;\n align-items: center;\n background: transparent;\n border: 1px solid var(--nylas-base-200);\n border-radius: var(--nylas-border-radius-2x);\n span {\n padding: 0 1rem;\n }\n }\n }\n .nylas-calendar-picker__dropdown {\n padding: 1rem;\n multi-select-dropdown::part(msd_dropdown) {\n width: 100%;\n }\n multi-select-dropdown::part(msd_dropdown-button) {\n width: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n border: 1px solid var(--nylas-base-200);\n border-radius: var(--nylas-border-radius-2x);\n padding: 1rem;\n }\n multi-select-dropdown::part(msd_dropdown-content) {\n width: 100%;\n max-width: unset;\n }\n multi-select-dropdown::part(msd_dropdown-button-selected-label) {\n max-width: calc(100% - 2rem);\n font-family: var(--nylas-font-family);\n font-size: 16px;\n line-height: 24px;\n }\n }\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { debug } from '@/utils/utils';\nimport { Calendar } from '@nylas/core';\nimport { AttachInternals, Component, Element, Event, EventEmitter, Host, Listen, Prop, State, Watch, h } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\n\n/**\n * The `nylas-calendar-picker` component is a form input for selecting calendars.\n */\n@Component({\n tag: 'nylas-calendar-picker',\n styleUrl: 'nylas-calendar-picker.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasCalendarPicker {\n @Element() host!: HTMLNylasCalendarPickerElement;\n /**\n * The calendars to choose from.\n */\n @Prop() calendars?: Calendar[];\n /**\n * The organizer's email.\n */\n @Prop() organizerEmail?: string;\n /**\n * The name of the calendar picker.\n */\n @Prop() name: string = 'calendar';\n /**\n * The default selected calendars.\n */\n @Prop() defaultSelectedCalendars: string[] = [];\n /**\n * The element internals.\n */\n @AttachInternals() internals!: ElementInternals;\n\n /**\n * The selected calendars.\n */\n @State() selectedCalendars: string[] = [];\n\n /**\n * This event is fired when the selected calendars change.\n */\n @Event() valueChanged!: EventEmitter<{\n value: string[];\n name: string;\n valueChangedHandler?: (event: CustomEvent<{ value: string[]; name: string }>) => void;\n }>;\n\n // Lifecycle methods\n connectedCallback() {\n debug('nylas-calendar-picker', 'connectedCallback');\n }\n\n disconnectedCallback() {\n debug('nylas-calendar-picker', 'disconnectedCallback');\n }\n\n componentWillLoad() {\n debug('nylas-calendar-picker', '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-calendar-picker', 'componentDidLoad');\n // TODO: Remove this when the internals in tests are fixed.\n if (typeof this.internals.setFormValue === 'function') {\n this.internals.setFormValue(this.defaultSelectedCalendars.toString(), 'calendar');\n }\n }\n\n componentWillUpdate() {\n debug('nylas-calendar-picker', 'componentWillUpdate');\n }\n\n componentDidUpdate() {\n debug('nylas-calendar-picker', 'componentDidUpdate');\n }\n\n componentWillRender() {\n debug('nylas-calendar-picker', 'componentWillRender');\n }\n\n componentDidRender() {\n debug('nylas-calendar-picker', 'componentDidRender');\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-calendar-picker', 'elementNameChangedHandler', newValue);\n this.host.setAttribute('name', newValue);\n }\n\n @Listen('selectedOptionsChanged')\n selectedOptionsChangedHandler(event: CustomEvent<{ value: string[]; name: string }>) {\n debug('nylas-calendar-picker', 'selectedOptionChangedHandler', event.detail);\n // Pass as handler so that if event.defaultPrevented by parent app, this will be skipped.\n const valueChangedHandler = (event: CustomEvent<{ value: string[]; name: string }>) => {\n const { value } = event.detail;\n this.selectedCalendars = [...value];\n this.internals.setFormValue(value.toString(), 'calendar');\n };\n this.valueChanged.emit({ ...event.detail, name: this.name, valueChangedHandler });\n }\n\n @RegisterComponent<NylasCalendarPicker, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-calendar-picker',\n eventToProps: {\n valueChanged: async (\n event: CustomEvent<{ value: string[]; name: string; valueChangedHandler?: (event: CustomEvent<{ value: string[]; name: string }>) => void }>,\n _nylasSchedulerConfigConnector: NylasSchedulerConfigConnector,\n ) => {\n const { valueChangedHandler } = event.detail;\n // If a handler is passed, call it.\n if (valueChangedHandler) {\n valueChangedHandler(event);\n }\n },\n },\n fireRegisterEvent: true,\n })\n render() {\n const calendarOptions =\n this.calendars?.map(calendar => {\n return {\n value: calendar.id,\n label: calendar.name,\n selected: this.defaultSelectedCalendars?.includes(calendar.id) || (this.defaultSelectedCalendars?.includes('primary') && calendar.id === this.organizerEmail),\n };\n }) ?? [];\n\n return (\n <Host>\n <div class=\"nylas-calendar-picker\">\n <div class=\"header\" part=\"ncp__header\">\n <h3>Calendar availability</h3>\n <p>Select calendars that you’d like to use for checking your availability.</p>\n </div>\n\n {calendarOptions.length > 0 ? (\n <div class=\"nylas-calendar-picker__dropdown\">\n <multi-select-dropdown name={'calendar'} label=\"Select calendars that will be checked for availability\" options={calendarOptions}>\n <span slot=\"label-icon\">\n <tooltip-component>\n <info-icon slot=\"tooltip-icon\" />\n <span slot=\"tooltip-content\">\n Check availability across one or multiple calendars. If multiple calendars are selected, you must be available across all of them to be considered available.\n The default is your primary calendar if none are selected.\n </span>\n </tooltip-component>\n </span>\n </multi-select-dropdown>\n </div>\n ) : (\n <div class=\"nylas-calendar-picker__loading\">\n <span class=\"label\">\n Select calendars that will be checked for availability <info-icon />\n </span>\n <div class=\"loading-button\">\n <span>Loading...</span>\n </div>\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n","@import '../../../common/styles/variables.scss';\n\n:host {\n display: block;\n @include default-css-variables;\n width: inherit;\n}\n\n.nylas-custom-booking-flow {\n width: inherit;\n display: flex;\n flex-direction: column;\n margin: 1rem;\n border-radius: var(--nylas-border-radius-2x);\n border: 1px solid var(--nylas-base-200);\n .header {\n padding: 1rem;\n border-bottom: 1px solid var(--nylas-base-200);\n h3 {\n margin: 0;\n font-size: 1rem;\n font-weight: 600;\n line-height: 20px;\n color: var(--nylas-base-900);\n text-align: left;\n }\n p {\n margin: 0.25rem 0 0 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 .nylas-custom-booking-flow__loading {\n padding-bottom: 1rem;\n .label {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n margin: 1rem 1rem 0;\n color: var(--nylas-base-800);\n }\n .loading-button {\n margin: 0 1rem;\n padding: 0;\n width: inherit;\n height: 48px;\n color: black;\n font-size: 1rem;\n cursor: not-allowed;\n display: flex;\n gap: 0.5rem;\n justify-content: space-between;\n align-items: center;\n background: transparent;\n border: 1px solid var(--nylas-base-200);\n border-radius: var(--nylas-border-radius-2x);\n span {\n padding: 0 1rem;\n }\n }\n }\n .nylas-custom-booking-flow__dropdown {\n padding: 1rem;\n span.label {\n display: flex;\n align-items: center;\n gap: 4px;\n color: var(--nylas-base-800);\n tooltip-component {\n display: flex;\n }\n }\n select-dropdown::part(sd_dropdown) {\n width: 100%;\n }\n select-dropdown::part(sd_dropdown-button) {\n width: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n border: 1px solid var(--nylas-base-200);\n border-radius: var(--nylas-border-radius-2x);\n padding: 1rem;\n }\n select-dropdown::part(sd_dropdown-content) {\n width: 100%;\n max-width: unset;\n }\n select-dropdown::part(sd_dropdown-button-selected-label) {\n max-width: calc(100% - 2rem);\n font-family: var(--nylas-font-family);\n font-size: 16px;\n line-height: 24px;\n }\n }\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { debug } from '@/utils/utils';\nimport { AttachInternals, Component, Element, Event, EventEmitter, Host, Listen, Prop, State, Watch, h } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\n\n/**\n * The `nylas-custom-booking-flow` component is a UI component that displays the booking calendar picker.\n */\n@Component({\n tag: 'nylas-custom-booking-flow',\n styleUrl: 'nylas-custom-booking-flow.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasCustomBookingFlow {\n @Element() host!: HTMLNylasCustomBookingFlowElement;\n /**\n * The name of the calendar picker.\n */\n @Prop() name: string = 'booking-type';\n /**\n * The booking type.\n */\n @Prop() bookingType: string = '';\n /**\n * The element internals.\n */\n @AttachInternals() internals!: ElementInternals;\n\n /**\n * The selected bookingType.\n */\n @State() selectedBookingType: string = '';\n\n /**\n * This event is fired when the selected bookingType changes.\n */\n @Event() valueChanged!: EventEmitter<{\n value: string;\n name: string;\n valueChanged?: (event: CustomEvent<{ value: string; name: string }>) => void;\n }>;\n\n // Lifecycle methods\n connectedCallback() {\n debug('nylas-custom-booking-flow', 'connectedCallback');\n }\n\n disconnectedCallback() {\n debug('nylas-custom-booking-flow', 'disconnectedCallback');\n }\n\n componentWillLoad() {\n debug('nylas-custom-booking-flow', '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-custom-booking-flow', 'componentDidLoad');\n // TODO: Remove this when the internals in tests are fixed.\n if (typeof this.internals.setFormValue === 'function') {\n this.internals.setFormValue(this.bookingType.toString(), 'booking-calendar');\n }\n this.selectedBookingType = this.bookingType;\n }\n\n componentWillUpdate() {\n debug('nylas-custom-booking-flow', 'componentWillUpdate');\n }\n\n componentDidUpdate() {\n debug('nylas-custom-booking-flow', 'componentDidUpdate');\n }\n\n componentWillRender() {\n debug('nylas-custom-booking-flow', 'componentWillRender');\n }\n\n componentDidRender() {\n debug('nylas-custom-booking-flow', 'componentDidRender');\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-custom-booking-flow', 'elementNameChangedHandler', newValue);\n this.host.setAttribute('name', newValue);\n }\n\n @Listen('selectedOptionChanged')\n selectedOptionChangedHandler(event: CustomEvent<{ value: string; name: string }>) {\n debug('nylas-custom-booking-flow', 'selectedOptionChangedHandler', event.detail);\n // Pass as handler so that if event.defaultPrevented by parent app, this will be skipped.\n const valueChanged = (event: CustomEvent<{ value: string; name: string }>) => {\n const { value } = event.detail;\n this.selectedBookingType = value;\n this.internals.setFormValue(value.toString(), 'booking-calendar');\n };\n this.valueChanged.emit({ ...event.detail, valueChanged });\n }\n\n @RegisterComponent<NylasCustomBookingFlow, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-custom-booking-flow',\n eventToProps: {\n valueChanged: async (\n event: CustomEvent<{ value: string; name: string; valueChanged?: (event: CustomEvent<{ value: string; name: string }>) => void }>,\n _nylasSchedulerConfigConnector: NylasSchedulerConfigConnector,\n ) => {\n const { valueChanged } = event.detail;\n // If a handler is passed, call it.\n if (valueChanged) {\n valueChanged(event);\n }\n },\n },\n fireRegisterEvent: true,\n })\n render() {\n const bookingOptions = [\n {\n label: 'Automatically accept bookings',\n value: 'booking',\n },\n {\n label: 'Manually confirm/decline bookings',\n value: 'pre-booking',\n },\n ];\n\n return (\n <Host>\n <div class=\"nylas-custom-booking-flow\">\n <div class=\"header\" part=\"ncp__header\">\n <h3>Customize booking flow</h3>\n <p>Customize how new bookings are handled when a booking is completed.</p>\n </div>\n\n {bookingOptions.length > 0 ? (\n <div class=\"nylas-custom-booking-flow__dropdown\">\n <span class=\"label\">\n After a booking is confirmed\n <tooltip-component>\n <info-icon slot=\"tooltip-icon\" />\n <span slot=\"tooltip-content\">\n Choose how you’d like to handle new bookings. If you choose to manually confirm/decline bookings, you will be able to review and accept or decline each booking\n request.\n </span>\n </tooltip-component>\n </span>\n <select-dropdown\n name=\"booking-type\"\n options={bookingOptions}\n withSearch={false}\n defaultSelectedOption={bookingOptions.find(cal => cal.value == this.bookingType) ?? bookingOptions[0]}\n />\n </div>\n ) : (\n <div class=\"nylas-custom-booking-flow__loading\">\n <span class=\"label\">\n Select a calendar to book meetings on <info-icon />\n </span>\n <div class=\"loading-button\">\n <span>Loading...</span>\n </div>\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n","@import '../../../common/styles/variables.scss';\n\n:host {\n @include default-css-variables;\n}\n\n.nylas-event-description {\n display: flex;\n flex-direction: column;\n gap: 4px;\n\n label {\n display: flex;\n align-items: center;\n color: var(--nylas-base-800);\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 150%; /* 21px */\n span.label-icon {\n margin-left: 4px;\n tooltip-component {\n display: flex;\n }\n }\n }\n textarea {\n padding: 12px 16px;\n border-width: 1;\n resize: vertical;\n border-radius: 8px;\n font-family: var(--nylas-font-family);\n font-size: 16px;\n line-height: 24px;\n border: 1px solid var(--nylas-base-200);\n &::-webkit-resizer {\n display: none;\n }\n }\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { debug } from '@/utils/utils';\nimport { AttachInternals, Component, Host, State, h, Element, Prop, Watch, Event, EventEmitter } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\n\n/**\n * The `nylas-event-description` component is a form input for the description of an event.\n */\n@Component({\n tag: 'nylas-event-description',\n styleUrl: 'nylas-event-description.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasEventDescription {\n @Prop() eventDescription?: string;\n @State() description: string = this.eventDescription ?? '';\n @AttachInternals() internals!: ElementInternals;\n @Element() host!: HTMLElement;\n @Prop() name: string = 'description';\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-event-description', 'elementNameChangedHandler', newValue);\n this.host.setAttribute('name', newValue);\n }\n\n @Event() valueChanged!: EventEmitter<{\n value: string;\n name: string;\n }>;\n\n connectedCallback() {\n debug('nylas-event-description', 'connectedCallback');\n }\n\n componentWillLoad() {\n debug('nylas-event-description', 'componentWillLoad');\n this.host.setAttribute('name', this.name);\n }\n\n componentDidLoad() {\n debug('nylas-event-description', 'componentDidLoad');\n }\n\n disconnectedCallback() {\n debug('nylas-event-description', 'disconnectedCallback');\n }\n\n handleChange(event) {\n this.description = event.target.value;\n this.internals.setFormValue(event.target.value, 'description');\n this.valueChanged.emit({ value: event.target.value, name: this.name });\n }\n\n @RegisterComponent<NylasEventDescription, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-event-description',\n eventToProps: {},\n fireRegisterEvent: true,\n })\n render() {\n return (\n <Host>\n <div class=\"nylas-event-description\">\n <label htmlFor=\"description\">\n Event description\n <span class=\"label-icon\">\n <tooltip-component>\n <info-icon slot=\"tooltip-icon\" />\n <span slot=\"tooltip-content\">Provide any additional details for your event.</span>\n </tooltip-component>\n </span>\n </label>\n <textarea id=\"description\" name=\"description\" value={this.description} maxlength=\"8192\" onInput={e => this.handleChange(e)}></textarea>\n </div>\n </Host>\n );\n }\n}\n","@import '../../../common/styles/variables.scss';\n\n:host {\n display: block;\n @include default-css-variables;\n}\n\n.nylas-event-duration {\n display: flex;\n flex-direction: column;\n gap: 4px;\n\n label {\n display: flex;\n align-items: center;\n color: var(--nylas-base-800);\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 150%; /* 21px */\n span.required {\n color: var(--nylas-error, #cc4841);\n }\n span.label-icon {\n margin-left: 4px;\n tooltip-component {\n display: flex;\n }\n }\n }\n}\n.nylas-event-duration__wrapper {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n input {\n padding: 12px 16px;\n border-width: 1;\n border-radius: 8px;\n border: 1px solid var(--nylas-base-200);\n font-family: var(--nylas-font-family);\n font-size: 16px;\n line-height: 24px;\n width: 48px;\n }\n select-dropdown::part(sd_dropdown-button) {\n border: 1px solid var(--nylas-base-200);\n border-radius: var(--nylas-border-radius-2x);\n padding: 12px 16px;\n }\n select-dropdown::part(sd_dropdown-button-selected-label) {\n font-family: var(--nylas-font-family);\n font-size: 16px;\n line-height: 24px;\n }\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { debug } from '@/utils/utils';\nimport { AttachInternals, Component, Host, Listen, State, h, Element, Prop, Watch, Event, EventEmitter } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\n\n/**\n * The `nylas-event-duration` component is a form input for the duration of an event.\n */\n@Component({\n tag: 'nylas-event-duration',\n styleUrl: 'nylas-event-duration.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasEventDuration {\n @Element() host!: HTMLElement;\n\n @Prop() name: string = 'duration';\n @Prop() eventDurationMinutes?: number;\n\n @State() duration: number = this.eventDurationMinutes ? (this.eventDurationMinutes >= 60 ? this.eventDurationMinutes / 60 : this.eventDurationMinutes) : 5;\n @State() durationMinutes: number = this.eventDurationMinutes ?? 5;\n @State() durationIncrement: number = this.eventDurationMinutes ? (this.eventDurationMinutes >= 60 ? 60 : 1) : 1;\n\n @AttachInternals() internals!: ElementInternals;\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-event-duration', 'elementNameChangedHandler', newValue);\n this.host.setAttribute('name', newValue);\n }\n\n @Watch('durationMinutes')\n durationMinutesChangedHandler(newValue: number, oldValue: number) {\n debug('nylas-event-duration', 'durationMinutesChangedHandler', newValue);\n if (newValue === oldValue) {\n return;\n }\n this.valueChanged.emit({ value: newValue.toString(), name: this.name });\n }\n\n @Event() valueChanged!: EventEmitter<{\n value: string;\n name: string;\n }>;\n\n connectedCallback() {\n debug('nylas-event-duration', 'connectedCallback');\n }\n\n componentWillLoad() {\n debug('nylas-event-duration', 'componentWillLoad');\n this.host.setAttribute('name', this.name);\n }\n\n componentDidLoad() {\n debug('nylas-event-duration', 'componentDidLoad');\n this.internals.setFormValue(this.durationMinutes.toString(), 'duration');\n }\n\n disconnectedCallback() {\n debug('nylas-event-duration', 'disconnectedCallback');\n }\n\n handleChange(event) {\n this.duration = event.target.value;\n this.durationMinutes = this.duration * this.durationIncrement;\n this.internals.setFormValue(this.durationMinutes.toString(), 'duration');\n }\n handleBlur() {\n if ((this.duration === null || this.duration === undefined) && this.durationIncrement === 1) {\n this.duration = 5;\n }\n if ((this.duration <= 0 || this.duration === null || this.duration === undefined) && this.durationIncrement === 60) {\n this.duration = 1;\n }\n if (this.duration < 5 && this.durationIncrement === 1) {\n this.duration = 5;\n }\n if (this.duration > 720 && this.durationIncrement === 1) {\n this.duration = 720;\n }\n if (this.duration > 12 && this.durationIncrement === 60) {\n this.duration = 12;\n }\n this.durationMinutes = this.duration * this.durationIncrement;\n this.internals.setFormValue(this.durationMinutes.toString(), 'duration');\n }\n\n @Listen('selectedOptionChanged')\n selectedOptionChangedHandler(event: CustomEvent<{ value: string; name: string }>) {\n debug('nylas-calendar-picker', 'selectedOptionChangedHandler', event.detail);\n const { value } = event.detail;\n this.durationIncrement = parseInt(value);\n if (this.durationIncrement === 1) {\n this.duration = 5;\n } else {\n this.duration = 1;\n }\n\n this.durationMinutes = this.duration * this.durationIncrement;\n this.internals.setFormValue(this.durationMinutes.toString(), 'duration');\n }\n\n @RegisterComponent<NylasEventDuration, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-event-duration',\n eventToProps: {},\n fireRegisterEvent: true,\n })\n render() {\n const durationOptions = [\n { value: 1, label: 'minutes' },\n { value: 60, label: 'hours' },\n ];\n return (\n <Host>\n <div class=\"nylas-event-duration\">\n <label htmlFor=\"duration\">\n Event duration<span class=\"required\">*</span>\n <span class=\"label-icon\">\n <tooltip-component>\n <info-icon slot=\"tooltip-icon\" />\n <span slot=\"tooltip-content\">Set the duration of your event.</span>\n </tooltip-component>\n </span>\n </label>\n <div class=\"nylas-event-duration__wrapper\">\n <input type=\"number\" id=\"duration\" name=\"duration\" value={this.duration} onBlur={() => this.handleBlur()} onInput={e => this.handleChange(e)} min={5} />\n <select-dropdown\n name={'event-duration'}\n options={durationOptions}\n defaultSelectedOption={durationOptions.find(i => i.value == this.durationIncrement) ?? durationOptions[0]}\n withSearch={false}\n />\n </div>\n </div>\n </Host>\n );\n }\n}\n","@import '../../../common/styles/variables.scss';\n\n:host {\n display: block;\n margin: 1rem;\n @include default-css-variables;\n}\n\n.nylas-event-info__title {\n color: var(--nylas-base-nylas-base-900-aaa, #101323);\n font-size: 16px;\n font-style: normal;\n font-weight: 600;\n line-height: 20px; /* 125% */\n margin: 0;\n text-align: left;\n}\n.nylas-event-info__subtitle {\n color: var(--nylas-base-nylas-base-600-aaa, #3e4784);\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px; /* 142.857% */\n margin: 0.25rem 0px 0px;\n text-align: left;\n}\n.nylas-event-info__content {\n padding: 1rem;\n display: flex;\n flex-direction: column;\n gap: 1rem;\n}\n\n.nylas-event-info__block {\n display: flex;\n justify-content: space-between;\n gap: 0.5rem;\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { debug } from '@/utils/utils';\nimport { AttachInternals, Component, Host, h } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\n\n/**\n * The `nylas-event-info` component is a input form for the event information.\n * ```\n */\n@Component({\n tag: 'nylas-event-info',\n styleUrl: 'nylas-event-info.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasEventInfo {\n @AttachInternals() internals!: ElementInternals;\n\n connectedCallback() {\n debug('nylas-event-info', 'connectedCallback');\n }\n\n componentWillLoad() {\n debug('nylas-event-info', 'componentWillLoad');\n }\n\n componentDidLoad() {\n debug('nylas-event-info', 'componentDidLoad');\n }\n\n disconnectedCallback() {\n debug('nylas-event-info', 'disconnectedCallback');\n }\n\n @RegisterComponent<NylasEventInfo, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-event-info',\n eventToProps: {},\n fireRegisterEvent: true,\n })\n render() {\n return (\n <Host>\n <nylas-form-card>\n <h1 slot=\"header-title\" class=\"nylas-event-info__title\">\n Event information\n </h1>\n <h3 slot=\"header-subtitle\" class=\"nylas-event-info__subtitle\">\n Enter all event information.\n </h3>\n <div slot=\"content\" class=\"nylas-event-info__content\">\n <slot name=\"inputs\"></slot>\n </div>\n </nylas-form-card>\n </Host>\n );\n }\n}\n","@import '../../../common/styles/variables.scss';\n\n:host {\n display: block;\n @include default-css-variables;\n}\n\n.nylas-event-title {\n display: flex;\n flex-direction: column;\n gap: 4px;\n position: relative;\n text-align: left;\n div.title {\n padding: 12px 16px;\n border: 1px solid var(--nylas-base-200);\n border-radius: var(--nylas-border-radius-2x);\n overflow: scroll;\n white-space: nowrap;\n scrollbar-width: thin;\n &::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n }\n }\n input {\n padding: 12px 16px;\n border-width: 1;\n border-radius: 8px;\n border: 1px solid var(--nylas-base-200);\n }\n span.help-text {\n color: var(--nylas-base-800);\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 21px;\n }\n label {\n display: flex;\n align-items: center;\n color: var(--nylas-base-800);\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 150%; /* 21px */\n span.required {\n color: var(--nylas-error, #cc4841);\n }\n span.label-icon {\n margin-left: 4px;\n tooltip-component {\n display: flex;\n }\n }\n }\n}\n\n.highlighted-tag {\n background-color: var(--nylas-base-200);\n border-radius: var(--nylas-border-radius);\n padding: 5px;\n margin-left: 4px;\n}\n\n.token-options {\n display: block;\n background-color: var(--nylas-base-0);\n width: 100%;\n max-height: 336px;\n overflow: auto;\n z-index: 1;\n border-radius: 4px;\n position: absolute;\n top: calc(48px + 24px + 8px); // 48px is the height of the input, 24px is the height of the label, 8px is the gap between the label and the input\n @media #{$mobile} {\n right: 0;\n width: 325px;\n max-width: unset;\n }\n box-shadow: 0px 4px 6px -2px #0000000d;\n box-shadow: 0px 10px 15px -3px #0000001a;\n ul {\n padding: 0;\n list-style-type: none;\n color: var(--nylas-base-900);\n max-height: 336px;\n margin: 0;\n li {\n padding: 16px, 12px, 16px, 12px;\n color: black;\n padding: 12px 16px;\n text-decoration: none;\n display: block;\n font-family: inherit;\n font-size: 14px;\n font-weight: 400;\n line-height: 20px;\n letter-spacing: 0px;\n text-align: left;\n cursor: pointer;\n .token-label {\n display: flex;\n flex-direction: column;\n font-weight: 400;\n .token {\n color: var(--nylas-abse-900);\n font-size: 16px;\n line-height: 24px;\n }\n .description {\n color: var(--nylas-base-600);\n font-size: 14px;\n line-height: 21px;\n }\n }\n &:hover,\n &:focus,\n &:active,\n &.active {\n background-color: var(--nylas-base-100);\n .token-label {\n .token {\n color: var(--nylas-primary);\n }\n }\n }\n }\n }\n .selected {\n background-color: var(--nylas-base-100);\n }\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { debug, getBrowser } from '@/utils/utils';\nimport { AttachInternals, Component, Host, State, h, Element, Prop, Watch, Event, EventEmitter } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\nimport { EVENT_TITLE_TOKENS as eventTitleTokens } from '@/common/constants';\n\ninterface CustomShadowRoot extends ShadowRoot {\n getSelection: () => Selection | null;\n}\n\ntype Token = {\n token: string;\n value: string;\n description: string;\n};\n\n/**\n * The `nylas-event-title` component is a form input for the title of an event.\n */\n@Component({\n tag: 'nylas-event-title',\n styleUrl: 'nylas-event-title.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasEventTitle {\n @Element() host!: HTMLElement;\n @AttachInternals() internals!: ElementInternals;\n\n // Properties\n /**\n * The title of the event from the cofiguration.\n */\n @Prop() eventTitle?: string;\n /**\n * The name attribute of this component.\n */\n @Prop() name: string = 'title';\n\n // State variables\n /**\n * Whether to show the tokens dropdown.\n */\n @State() showTokens: boolean = false;\n /**\n * The available token options for the dropdown.\n */\n @State() availableTokens: { label: string; value: string; labelHTML: Token }[] = eventTitleTokens.map(token => ({\n label: token.token,\n value: token.value,\n labelHTML: token,\n }));\n /**\n * The filtered token options for the dropdown based on the current query.\n */\n @State() filteredTokens: { label: string; value: string; labelHTML: Token }[] = this.availableTokens;\n /**\n * The aria-activedescendant attribute value. This is used to indicate the\n * currently active descendant in the tokens dropdown.\n */\n @State() ariaActivedescendant: string = '';\n /**\n * Stores the reference to the current word being typed.\n * This is used to update the event title with the selected token tag when\n * an option is selected from the dropdown by clicking on it.\n */\n @State() currentWord: {\n $value: string;\n fullText: string;\n index: number;\n focusOffset: number;\n } = { $value: '', fullText: '', index: -1, focusOffset: -1 };\n\n // Reference to the title div element\n private titleRef!: HTMLDivElement;\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-event-title', 'elementNameChangedHandler', newValue);\n this.host.setAttribute('name', newValue);\n }\n\n @Watch('ariaActivedescendant')\n ariaActivedescendantChangedHandler(newValue: string) {\n debug('nylas-event-title', 'ariaActivedescendantChangedHandler', newValue);\n if (newValue !== '') {\n const activeOption = this.host.shadowRoot?.getElementById(newValue);\n activeOption?.classList.add('active');\n } else {\n const options = this.host.shadowRoot?.querySelectorAll('.token-options li.active');\n options?.forEach(option => option.classList.remove('active'));\n }\n }\n\n // Events\n /**\n * This event is fired when the value of the event title changes.\n */\n @Event() valueChanged!: EventEmitter<{\n value: string;\n name: string;\n }>;\n\n // Lifecycle methods\n connectedCallback() {\n debug('nylas-event-title', 'connectedCallback');\n }\n\n componentWillLoad() {\n debug('nylas-event-title', 'componentWillLoad');\n this.host.setAttribute('name', this.name);\n }\n\n componentDidLoad() {\n debug('nylas-event-title', 'componentDidLoad');\n this.updateEventTitleFromProp(this.eventTitle || '');\n }\n\n disconnectedCallback() {\n debug('nylas-event-title', 'disconnectedCallback');\n }\n\n updateEventTitleFromProp(newValue: string) {\n debug('nylas-event-title', 'eventTitleChangedHandler', newValue);\n\n this.titleRef.innerHTML = this.highlightTokens();\n this.titleRef.focus();\n }\n\n highlightTokens() {\n let outputHtml = this.eventTitle || '';\n\n eventTitleTokens.forEach(tokenObj => {\n const token = tokenObj.value;\n // Create a regular expression that matches the token as a whole word\n const regex = new RegExp(`(\\\\${token})(?!\\\\w)`, 'g');\n // Replace the token with a span element\n outputHtml = outputHtml.replace(regex, '<span class=\"highlighted-tag\">$1</span>');\n });\n return outputHtml;\n }\n\n getCurrentSelectionForBrowser() {\n const getSelectionTextData = (nodeValue, offset, node) => {\n // Remove zero-width space characters from the text, because they are not visible and cause issues with the selection\n const text = nodeValue.replace(/[\\u200B-\\u200D\\uFEFF]/g, '');\n const dollarIndex = text.lastIndexOf('$');\n const lastWord = text.substring(dollarIndex).split(' ')[0];\n return {\n focusOffset: offset,\n dollarIndex,\n lastWord,\n currentText: text,\n node,\n };\n };\n\n const currentBrowser = getBrowser();\n console.log('currentBrowser', currentBrowser);\n switch (currentBrowser) {\n case 'Chrome':\n const shadowRootSelection = (this.host.shadowRoot as CustomShadowRoot)?.getSelection();\n const focusNode = shadowRootSelection?.focusNode;\n const focusNodeValue = focusNode?.nodeValue || '';\n return getSelectionTextData(focusNodeValue, shadowRootSelection?.focusOffset || -1, focusNode);\n case 'Firefox':\n const selection = document.getSelection();\n const anchorNodeValue = selection?.anchorNode?.nodeValue || '';\n return getSelectionTextData(anchorNodeValue, selection?.focusOffset || -1, selection?.anchorNode);\n case 'Safari':\n const windowSelection = window.getSelection();\n const anchorNode = (windowSelection as any)?.getComposedRanges(this.host.shadowRoot as CustomShadowRoot)[0];\n const currentText = anchorNode?.startContainer?.nodeValue || '';\n return getSelectionTextData(currentText, anchorNode?.endOffset || -1, anchorNode?.startContainer);\n default:\n console.warn('Browser not supported');\n return null;\n }\n }\n\n handleChange(event: Event) {\n const textContent = (event.target as HTMLDivElement).textContent || '';\n // All browsers handle Selection within Shadow DOM differently, so get the current selection based on the browser\n const currentSelection = this.getCurrentSelectionForBrowser();\n if (!currentSelection) {\n this.updateEventTitle(textContent);\n this.resetDropdown();\n return;\n }\n const { focusOffset, dollarIndex, lastWord, currentText } = currentSelection;\n\n if (dollarIndex === -1 || focusOffset < dollarIndex) {\n this.updateEventTitle(textContent);\n this.resetDropdown();\n return;\n }\n if (lastWord.startsWith('$')) {\n this.showTokens = true;\n // Update the current word being typed, we need this reference to update the event title with the selected token\n // because the user can select an option from the dropdown by clicking on it, which will not trigger the input event.\n this.currentWord = {\n $value: lastWord,\n fullText: currentText,\n index: dollarIndex,\n focusOffset,\n };\n this.populateSuggestionsDropdown(lastWord);\n } else {\n this.resetDropdown();\n }\n this.updateEventTitle(textContent);\n }\n\n handleInputKeyDown(event) {\n if (event.key === 'Enter') {\n event.preventDefault();\n const activeOption = this.host.shadowRoot?.getElementById(this.ariaActivedescendant);\n if (activeOption) {\n activeOption.click();\n this.ariaActivedescendant = '';\n }\n } else if (event.key === 'ArrowDown') {\n event.preventDefault();\n const activeOption = this.host.shadowRoot?.getElementById(this.ariaActivedescendant);\n if (activeOption) {\n const nextOption = activeOption.nextElementSibling;\n if (nextOption) {\n this.ariaActivedescendant = nextOption.id;\n } else {\n this.ariaActivedescendant = this.filteredTokens[0].label;\n }\n } else {\n this.ariaActivedescendant = this.filteredTokens[0].label;\n }\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n const activeOption = this.host.shadowRoot?.getElementById(this.ariaActivedescendant);\n if (activeOption) {\n const prevOption = activeOption.previousElementSibling;\n if (prevOption) {\n this.ariaActivedescendant = prevOption.id;\n } else {\n this.ariaActivedescendant = this.filteredTokens[this.filteredTokens.length - 1].label;\n }\n } else {\n this.ariaActivedescendant = this.filteredTokens[this.filteredTokens.length - 1].label;\n }\n } else if (event.key === 'Escape') {\n event.preventDefault();\n this.resetDropdown();\n } else if (event.key === 'Backspace' || event.key === 'Delete') {\n const selection = this.getCurrentSelectionForBrowser();\n if (selection?.currentText.startsWith('${')) {\n selection?.node?.parentNode && selection.node.parentNode.removeChild(selection.node);\n }\n }\n }\n\n selectOption(e: Event, option: { label: string; value: string; labelHTML: Token }) {\n e.preventDefault();\n const word = this.currentWord.fullText;\n const dollarWord = this.currentWord.$value;\n\n // Traverse the DOM to find the text node that contains the current word fullText\n let currentNode = this.titleRef.firstChild;\n let textNode: ChildNode | null = null;\n\n while (currentNode) {\n if (currentNode.nodeType === 3) {\n const currentNodeText = currentNode.textContent?.replace(/[\\u200B-\\u200D\\uFEFF]/g, '') || '';\n const wordText = word.replace(/[\\u200B-\\u200D\\uFEFF]/g, '');\n if (currentNodeText.includes(wordText)) {\n textNode = currentNode;\n break;\n }\n }\n currentNode = currentNode.nextSibling;\n }\n\n if (!textNode) {\n return;\n }\n // Split the text node into three parts: text before the token, the token, and text after the token\n const text = textNode.textContent || '';\n const index = text.indexOf(dollarWord);\n const textBefore = text.substring(0, index);\n const textAfter = text.substring(index + dollarWord.length);\n const newTextNode = document.createTextNode(textBefore);\n const newRange = document.createRange();\n\n // Create a new span element to replace the text node\n const tagSpan = document.createElement('span');\n tagSpan.classList.add('highlighted-tag');\n tagSpan.textContent = `${option.value}`;\n const newTextNodeAfter = document.createTextNode(textAfter);\n\n if (textAfter !== '') {\n // If there is text after the token, add it to the new span element\n textNode.replaceWith(newTextNode, tagSpan, newTextNodeAfter);\n newRange.setStart(newTextNodeAfter, 0);\n } else {\n // If there is no text after the token, add a zero-width space character (Without this, the cursor will not move outside the highlighted span element)\n const afterNode = document.createTextNode('\\u200B');\n textNode.replaceWith(newTextNode, tagSpan, afterNode);\n newRange.setStart(afterNode, 0);\n }\n\n // Hide the dropdown\n this.resetDropdown();\n this.titleRef.focus();\n\n // Set the focus to the new span element\n const sel = window.getSelection();\n newRange.collapse(true);\n sel?.removeAllRanges();\n sel?.addRange(newRange);\n\n // Update the event title with the selected token\n this.updateEventTitle(this.titleRef.textContent || '');\n }\n\n populateSuggestionsDropdown(query: string = '') {\n this.filteredTokens = this.availableTokens.filter(obj => {\n return obj.label.startsWith(query.toString()) || obj.value.startsWith(query.toString());\n });\n\n // Set the first option as the active descendant\n if (this.filteredTokens.length > 0) {\n this.ariaActivedescendant = this.filteredTokens[0].label;\n }\n }\n\n updateEventTitle(text: string) {\n const value = text.replace(/ +/g, ' ');\n this.valueChanged.emit({ value: value, name: this.name });\n }\n\n resetDropdown() {\n this.showTokens = false;\n this.ariaActivedescendant = '';\n }\n\n getLabelHTML(token: { token: string; description: string }) {\n return (\n <div class=\"token-label\">\n <span class=\"token\">{token.token}</span>\n <span class=\"description\">{token.description}</span>\n </div>\n );\n }\n\n @RegisterComponent<NylasEventTitle, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-event-title',\n eventToProps: {},\n fireRegisterEvent: true,\n })\n render() {\n return (\n <Host>\n <div class=\"nylas-event-title\">\n <label htmlFor=\"title\">\n Event title<span class=\"required\">*</span>\n <span class=\"label-icon\">\n <tooltip-component>\n <info-icon slot=\"tooltip-icon\" />\n <span slot=\"tooltip-content\">Enter a title for your event.</span>\n </tooltip-component>\n </span>\n </label>\n <div\n class=\"title\"\n ref={el => (this.titleRef = el as HTMLDivElement)}\n contentEditable=\"true\"\n onInput={e => this.handleChange(e)}\n onKeyDown={event => this.handleInputKeyDown(event)}\n ></div>\n {this.showTokens && this.filteredTokens?.length > 0 && (\n <div class=\"token-options\">\n <ul tabindex=\"-1\" role=\"listbox\" aria-label={this.name} aria-activedescendant={this.ariaActivedescendant}>\n {this.filteredTokens.map(option => (\n <li\n tabindex=\"0\"\n key={option.label}\n id={option.label}\n class={{ active: this.ariaActivedescendant === option.label }}\n onClick={e => this.selectOption(e, option)}\n role=\"option\"\n >\n {this.getLabelHTML(option.labelHTML)}\n </li>\n ))}\n </ul>\n </div>\n )}\n <span class=\"help-text\">Create a dynamic templated event title by typing $. Learn more</span>\n </div>\n </Host>\n );\n }\n}\n","@import '../../../common/styles/variables.scss';\n\n:host {\n @include default-css-variables;\n}\n\n.nylas-event-location {\n display: flex;\n flex-direction: column;\n gap: 4px;\n font-family: var(--nylas-font-family);\n\n label {\n display: flex;\n align-items: center;\n color: var(--nylas-base-nylas-base-800);\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 150%; /* 21px */\n span.label-icon {\n margin-left: 4px;\n tooltip-component {\n display: flex;\n }\n }\n }\n\n span[slot='select-icon'] {\n border-right: 1px solid var(--nylas-base-200);\n padding: 16px 0.75rem 16px 0.5rem;\n border-radius: var(--nylas-border-radius-2x);\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n height: 20px;\n }\n div.location-input {\n display: grid;\n grid-template-columns: auto 1fr;\n width: 100%;\n gap: 0.5rem;\n input {\n border: 1px solid var(--nylas-base-200);\n border-radius: var(--nylas-border-radius-2x);\n padding: 12px 16px;\n font-family: var(--nylas-font-family);\n font-size: 16px;\n line-height: 24px;\n }\n }\n select-dropdown {\n width: 208px;\n @media #{$mobile} {\n width: 100%;\n }\n }\n select-dropdown::part(sd_dropdown) {\n width: 100%;\n }\n select-dropdown::part(sd_dropdown-content) {\n left: calc(35px + 0.5rem);\n }\n select-dropdown::part(sd_dropdown-button) {\n display: flex;\n justify-content: space-between;\n width: 100%;\n border: 1px solid var(--nylas-base-200);\n padding: 0 0.5rem;\n }\n select-dropdown::part(sd_dropdown-button-selected-label) {\n display: inline-flex;\n align-self: center;\n padding: 14px 0;\n font-family: var(--nylas-font-family);\n font-size: 16px;\n line-height: 24px;\n }\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { debug } from '@/utils/utils';\nimport { AttachInternals, Component, Host, State, h, Element, Prop, Watch, Event, EventEmitter, Listen } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\n\n/**\n * The `nylas-location-component` component is a form input for the description of an event.\n */\n@Component({\n tag: 'nylas-location-component',\n styleUrl: 'nylas-location-component.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasLocationComponent {\n @Prop() eventLocation?: string;\n @State() location: string = this.eventLocation ?? '';\n @State() selectedLocationOption: string = this.eventLocation ? 'custom' : 'none';\n @AttachInternals() internals!: ElementInternals;\n @Element() host!: HTMLElement;\n @Prop() name: string = 'location';\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-location-component', 'elementNameChangedHandler', newValue);\n this.host.setAttribute('name', newValue);\n }\n @Watch('eventLocation')\n eventLocationChangedHandler(newValue: string, oldValue: string) {\n debug('nylas-location-component', 'eventLocationChangedHandler', newValue);\n if (newValue === oldValue) {\n return;\n }\n this.selectedLocationOption = newValue ? 'custom' : 'none';\n }\n\n @Event() valueChanged!: EventEmitter<{\n value: string;\n name: string;\n }>;\n\n connectedCallback() {\n debug('nylas-location-component', 'connectedCallback');\n }\n\n componentWillLoad() {\n debug('nylas-location-component', 'componentWillLoad');\n this.host.setAttribute('name', this.name);\n }\n\n componentDidLoad() {\n debug('nylas-location-component', 'componentDidLoad');\n }\n\n disconnectedCallback() {\n debug('nylas-location-component', 'disconnectedCallback');\n }\n\n @Listen('selectedOptionChanged')\n selectedOptionChangedHandler(event: CustomEvent<{ value: string }>) {\n this.selectedLocationOption = event.detail.value;\n if (this.selectedLocationOption === 'none') {\n this.location = '';\n this.setFormValue('', 'location');\n this.valueChanged.emit({ value: '', name: this.name });\n }\n }\n\n setFormValue(value: string, name: string) {\n if (typeof this.internals.setFormValue === 'function') {\n this.internals.setFormValue(value, name);\n }\n }\n\n handleChange(event) {\n this.location = event.target.value;\n this.setFormValue(event.target.value, 'location');\n this.valueChanged.emit({ value: event.target.value, name: this.name });\n }\n\n @RegisterComponent<NylasLocationComponent, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-location-component',\n eventToProps: {},\n fireRegisterEvent: true,\n })\n render() {\n const locationOptions = [\n { value: 'none', label: 'None' },\n { value: 'custom', label: 'Custom location' },\n ];\n const icons = {\n none: <location-off-icon />,\n custom: <location-icon />,\n };\n\n return (\n <Host>\n <div class=\"nylas-event-location\">\n <label htmlFor=\"location\">\n Location type\n <span class=\"label-icon\">\n <tooltip-component>\n <info-icon slot=\"tooltip-icon\" />\n <span slot=\"tooltip-content\">\n Choose how you’ll meet with the participants at the scheduled time. Pick from available conferencing options or add a custom location.\n </span>\n </tooltip-component>\n </span>\n </label>\n <div class=\"location-input\">\n <select-dropdown withSearch={false} name=\"location\" options={locationOptions} defaultSelectedOption={locationOptions.find(i => i.value == this.selectedLocationOption)}>\n <span slot=\"select-icon\">{icons[this.selectedLocationOption]}</span>\n </select-dropdown>\n {this.selectedLocationOption === 'custom' && (\n <input type=\"text\" id=\"location\" name=\"location\" maxlength=\"1024\" value={this.location} onInput={e => this.handleChange(e)} />\n )}\n </div>\n </div>\n </Host>\n );\n }\n}\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_customParseFormat=t()}(this,(function(){\"use strict\";var e={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},t=/(\\[[^[]*\\])|([-_:/.,()\\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\\d\\d/,r=/\\d\\d?/,i=/\\d*[^-_:/,()\\s\\d]+/,o={},s=function(e){return(e=+e)+(e>68?1900:2e3)};var a=function(e){return function(t){this[e]=+t}},f=[/[+-]\\d\\d:?(\\d\\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if(\"Z\"===e)return 0;var t=e.match(/([+-]|\\d\\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:\"+\"===t[0]?-n:n}(e)}],h=function(e){var t=o[e];return t&&(t.indexOf?t:t.s.concat(t.f))},u=function(e,t){var n,r=o.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?\"pm\":\"PM\");return n},d={A:[i,function(e){this.afternoon=u(e,!1)}],a:[i,function(e){this.afternoon=u(e,!0)}],S:[/\\d/,function(e){this.milliseconds=100*+e}],SS:[n,function(e){this.milliseconds=10*+e}],SSS:[/\\d{3}/,function(e){this.milliseconds=+e}],s:[r,a(\"seconds\")],ss:[r,a(\"seconds\")],m:[r,a(\"minutes\")],mm:[r,a(\"minutes\")],H:[r,a(\"hours\")],h:[r,a(\"hours\")],HH:[r,a(\"hours\")],hh:[r,a(\"hours\")],D:[r,a(\"day\")],DD:[n,a(\"day\")],Do:[i,function(e){var t=o.ordinal,n=e.match(/\\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\\[|\\]/g,\"\")===e&&(this.day=r)}],M:[r,a(\"month\")],MM:[n,a(\"month\")],MMM:[i,function(e){var t=h(\"months\"),n=(h(\"monthsShort\")||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[i,function(e){var t=h(\"months\").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\\d+/,a(\"year\")],YY:[n,function(e){this.year=s(e)}],YYYY:[/\\d{4}/,a(\"year\")],Z:f,ZZ:f};function c(n){var r,i;r=n,i=o&&o.formats;for(var s=(n=r.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var o=r&&r.toUpperCase();return n||i[r]||e[r]||i[o].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),a=s.length,f=0;f<a;f+=1){var h=s[f],u=d[h],c=u&&u[0],l=u&&u[1];s[f]=l?{regex:c,parser:l}:h.replace(/^\\[|\\]$/g,\"\")}return function(e){for(var t={},n=0,r=0;n<a;n+=1){var i=s[n];if(\"string\"==typeof i)r+=i.length;else{var o=i.regex,f=i.parser,h=e.slice(r),u=o.exec(h)[0];f.call(t,u),e=e.replace(u,\"\")}}return function(e){var t=e.afternoon;if(void 0!==t){var n=e.hours;t?n<12&&(e.hours+=12):12===n&&(e.hours=0),delete e.afternoon}}(t),t}}return function(e,t,n){n.p.customParseFormat=!0,e&&e.parseTwoDigitYear&&(s=e.parseTwoDigitYear);var r=t.prototype,i=r.parse;r.parse=function(e){var t=e.date,r=e.utc,s=e.args;this.$u=r;var a=s[1];if(\"string\"==typeof a){var f=!0===s[2],h=!0===s[3],u=f||h,d=s[2];h&&(d=s[2]),o=this.$locale(),!f&&d&&(o=n.Ls[d]),this.$d=function(e,t,n){try{if([\"x\",\"X\"].indexOf(t)>-1)return new Date((\"X\"===t?1e3:1)*e);var r=c(t)(e),i=r.year,o=r.month,s=r.day,a=r.hours,f=r.minutes,h=r.seconds,u=r.milliseconds,d=r.zone,l=new Date,m=s||(i||o?1:l.getDate()),M=i||l.getFullYear(),Y=0;i&&!o||(Y=o>0?o-1:l.getMonth());var p=a||0,v=f||0,D=h||0,g=u||0;return d?new Date(Date.UTC(M,Y,m,p,v,D,g+60*d.offset*1e3)):n?new Date(Date.UTC(M,Y,m,p,v,D,g)):new Date(M,Y,m,p,v,D,g)}catch(e){return new Date(\"\")}}(t,a,r),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(a)&&(this.$d=new Date(\"\")),o={}}else if(a instanceof Array)for(var l=a.length,m=1;m<=l;m+=1){s[1]=a[m-1];var M=n.apply(this,s);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}m===l&&(this.$d=new Date(\"\"))}else i.call(this,e)}}}));","@import '../../../common/styles/variables.scss';\n:host {\n display: block;\n position: relative;\n @include default-css-variables;\n}\n\n.time-picker {\n display: inline-block;\n width: 150px;\n @media #{$mobile} {\n width: auto;\n }\n position: relative;\n input {\n width: 150px;\n @media #{$mobile} {\n width: 98px;\n }\n height: 48px;\n text-align: center;\n font-size: 1rem;\n cursor: pointer;\n background: transparent;\n border: 1px solid var(--nylas-base-200);\n border-radius: var(--nylas-border-radius-2x);\n &.focus {\n background: transparent;\n }\n &:hover,\n &:active {\n border: 1px solid var(--nylas-primary);\n }\n &:active {\n outline: 2px solid var(--nylas-primary);\n }\n span {\n &.open {\n transform: rotate(90deg);\n }\n &.closed {\n transform: rotate(270deg);\n }\n }\n &.error {\n border: 1px solid var(--nylas-error);\n }\n }\n p.error {\n color: var(--nylas-error);\n font-size: 0.875rem;\n margin: 0;\n }\n}\n.times {\n display: block;\n margin-top: 0.5rem;\n background-color: var(--nylas-base-0);\n width: 100%;\n max-height: 336px;\n overflow: auto;\n border: 1px solid #ddd;\n z-index: 1;\n border-radius: 4px;\n position: absolute;\n box-shadow: 0px 4px 6px -2px #0000000d;\n box-shadow: 0px 10px 15px -3px #0000001a;\n ul {\n padding: 0;\n list-style-type: none;\n color: var(--nylas-base-900);\n max-height: 336px;\n li {\n padding: 16px, 12px, 16px, 12px;\n color: black;\n padding: 12px 16px;\n text-decoration: none;\n display: block;\n font-family: inherit;\n font-size: 14px;\n font-weight: 400;\n line-height: 20px;\n letter-spacing: 0px;\n text-align: center;\n cursor: pointer;\n &.focused {\n background-color: var(--nylas-base-100);\n }\n &:hover,\n &:focus {\n background-color: var(--nylas-base-100);\n }\n label {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n input {\n margin: 0;\n }\n }\n }\n }\n}\n","import { autocompleteTimeFormat, roundToNearest15Minutes, validateExactTimeFormat, validateTimeFormatInput } from '@/utils/utils';\nimport { Component, h, State, Prop, Event, EventEmitter, Listen, Element, Host, Watch } from '@stencil/core';\nimport dayjs from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\n\ndayjs.extend(customParseFormat);\n\ntype Time = { id: number; value: string };\n\n/**\n * The `nylas-time-window-picker` component is a time picker that can be used to select a time.\n */\n@Component({\n tag: 'nylas-time-window-picker',\n styleUrl: 'nylas-time-window-picker.scss',\n shadow: true,\n})\nexport class TimeInput {\n @Element() el!: HTMLElement;\n private timeInput!: HTMLInputElement;\n private timeMenu!: HTMLElement;\n\n /**\n * The time to display in the input.\n * This is passed by the parent component and can be updated\n * using the setTime prop function provided by the parent component.\n */\n @Prop() time!: string;\n /**\n * This is the start time value if one is set by the parent component.\n * It is useful if this component is used to render an end time which\n * should not be before the start time, defining the earliest selectable time.\n */\n @Prop() minimumStartTime: string | null = null;\n\n /**\n * The placeholder text for the input.\n */\n @Prop() placeholder: string = 'hh:mmam/pm';\n /**\n * The function to set the time in the parent component.\n */\n @Prop() setTime!: Function;\n /**\n * The name of the input.\n */\n @Prop() name!: string;\n /**\n * This sets the error state of the input.\n */\n @Prop() hasError: boolean = false;\n /**\n * The function to set the form error in the parent component.\n * This is useful if the parent component wants to display an\n * error message or set form validity.\n */\n @Prop() setFormError!: Function;\n\n /**\n * The error message to display if the time is invalid.\n */\n @State() err: string = '';\n /**\n * Toggle to show the list of times.\n */\n @State() showTimes: boolean = false;\n /**\n * The aria-activedescendant attribute for the listbox element to indicate the currently active\n * option in the list box to screen readers. The value of aria-activedescendant is the ID of\n * the active option.\n */\n @State() ariaActivedescendant: string = '';\n @State() times: Time[] = this.generateTimes();\n @State() shouldAutoScroll: boolean = false;\n\n @Event() timeChange!: EventEmitter<string>;\n\n // Event listeners\n @Listen('click', { target: 'document' })\n handleOutsideClick(event: MouseEvent) {\n // Get the path of the event\n const path = event.composedPath();\n\n // Check if the path includes the host element\n const isClickInside = path.includes(this.el);\n\n if (!isClickInside && this.showTimes) {\n this.showTimes = false;\n }\n }\n\n @Watch('minimumStartTime')\n minimumStartTimeChangedHandler() {\n if (this.minimumStartTime) {\n let formattedTime = dayjs()\n .hour(parseInt(this.minimumStartTime))\n .minute(parseInt(this.minimumStartTime.slice(-4, -2)));\n if (this.minimumStartTime.slice(-2).toLowerCase() === 'pm' && parseInt(this.minimumStartTime) !== 12) {\n formattedTime = formattedTime.add(12, 'hour');\n } else if (this.minimumStartTime.slice(-2).toLowerCase() === 'am' && parseInt(this.minimumStartTime) === 12) {\n formattedTime = formattedTime.subtract(12, 'hour');\n }\n\n this.times = this.generateTimes();\n const firstTime = dayjs(this.times[0].value, 'hh:mma');\n let selectedTimeFormatted = dayjs(this.time, 'hh:mma');\n if (selectedTimeFormatted.isBefore(firstTime)) {\n this.err = 'Invalid';\n this.setFormError(null, 'Invalid');\n }\n }\n }\n\n componentDidRender() {\n if (this.showTimes && this.shouldAutoScroll) {\n const autocompletedTime = autocompleteTimeFormat(this.time);\n const optionIndex = this.times.findIndex(time => time.value === autocompletedTime);\n if (optionIndex > -1) {\n this.shouldAutoScroll = false;\n this.scrollToViewWithinParent(optionIndex);\n }\n return;\n }\n }\n\n private handleTimeChange(e: Event, input: string) {\n const timePart = input.split(':');\n if (timePart[0] === '00' && timePart[1].slice(-2) == 'pm') {\n this.err = 'Invalid';\n this.setFormError(e, 'Invalid');\n }\n if (!validateTimeFormatInput(input)) {\n this.err = 'Invalid';\n this.setFormError(e, 'Invalid');\n } else {\n this.err = '';\n this.setFormError(null);\n }\n this.setTime(e, input);\n this.timeChange.emit(input);\n }\n\n private handleTimeAutocomplete(event: Event) {\n const input = (event.target as HTMLInputElement)?.value;\n if (!validateTimeFormatInput(input)) {\n this.err = 'Invalid';\n this.setFormError(event, 'Invalid');\n return;\n }\n if (input === '') {\n const newTime = roundToNearest15Minutes().format('hh:mma');\n this.setTime(event, newTime);\n return;\n }\n if (!validateExactTimeFormat(input)) {\n const autocompletedTime = autocompleteTimeFormat(input);\n this.setTime(autocompletedTime);\n return;\n }\n this.setTime(event, input);\n }\n\n private handleOnInput(event: Event) {\n const input = (event.target as HTMLInputElement)?.value;\n if (!validateTimeFormatInput(input)) {\n return;\n }\n if (input === '') {\n const newTime = roundToNearest15Minutes().format('hh:mma');\n const optionIndex = this.times.findIndex(time => time.value === newTime);\n if (optionIndex > -1) {\n this.scrollToViewWithinParent(optionIndex);\n }\n return;\n }\n if (!validateExactTimeFormat(input)) {\n const autocompletedTime = autocompleteTimeFormat(input);\n const optionIndex = this.times.findIndex(time => time.value === autocompletedTime);\n if (optionIndex > -1) {\n this.scrollToViewWithinParent(optionIndex);\n }\n return;\n }\n }\n\n private generateTimes() {\n const times: Time[] = [];\n let startTime = dayjs().set('hour', 0).set('minute', 0).set('second', 0); // Set to 12:00 am\n if (this.minimumStartTime) {\n startTime = dayjs(this.minimumStartTime, 'hh:mma');\n }\n const diff = startTime.endOf('day').diff(startTime, 'minutes');\n const iterations = Math.round(diff / 15);\n for (let i = 0; i < iterations + 1; i++) {\n // 96 represents the total number of 15-minute increments in a day (24 hours * 60 minutes / 15 minutes)\n const time = startTime.add(i * 15, 'minute');\n if (i == iterations && time.format('hh:mma').includes('am')) {\n break;\n }\n times.push({ id: i, value: time.format('hh:mma') });\n }\n return times;\n }\n\n private handleComboboxKeyDown(event: KeyboardEvent): void {\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n if (!this.showTimes) {\n this.showTimes = true;\n this.shouldAutoScroll = true;\n return;\n }\n if (this.ariaActivedescendant === '') {\n this.ariaActivedescendant = this.times[0].id.toString();\n this.focusOption(0);\n } else {\n const currentIndex = this.times.findIndex(time => time.id.toString() === this.ariaActivedescendant);\n const nextIndex = currentIndex + 1 < this.times.length ? currentIndex + 1 : 0;\n this.ariaActivedescendant = this.times[nextIndex].id.toString();\n this.focusOption(nextIndex);\n }\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n if (this.ariaActivedescendant === '') {\n this.ariaActivedescendant = this.times[this.times.length - 1].id.toString();\n this.focusOption(this.times.length - 1);\n } else {\n const currentIndex = this.times.findIndex(time => time.id.toString() === this.ariaActivedescendant);\n const prevIndex = currentIndex - 1 >= 0 ? currentIndex - 1 : this.times.length - 1;\n this.ariaActivedescendant = this.times[prevIndex].id.toString();\n this.focusOption(prevIndex);\n }\n } else if (event.key === 'Escape') {\n this.showTimes = false;\n this.timeInput.focus();\n }\n }\n\n private handleListboxKeydown(e: KeyboardEvent) {\n const items = this.times;\n const currentIndex = items.findIndex(item => item.id.toString() === this.ariaActivedescendant);\n\n if (e.key === 'ArrowDown' || (e.key === 'Tab' && !e.shiftKey)) {\n e.preventDefault();\n const nextIndex = currentIndex + 1 < items.length ? currentIndex + 1 : 0;\n this.ariaActivedescendant = items[nextIndex].id.toString();\n this.focusOption(nextIndex);\n } else if (e.key === 'ArrowUp' || (e.key === 'Tab' && e.shiftKey)) {\n e.preventDefault();\n const prevIndex = currentIndex - 1 >= 0 ? currentIndex - 1 : items.length - 1;\n this.ariaActivedescendant = items[prevIndex].id.toString();\n this.focusOption(prevIndex);\n } else if (e.key === 'Enter') {\n e.preventDefault();\n if (this.ariaActivedescendant) {\n const option = items[currentIndex];\n this.handleTimeChange(e, option.value);\n this.showTimes = false;\n this.ariaActivedescendant = '';\n this.timeInput.focus();\n }\n } else if (e.key === 'Escape') {\n this.showTimes = false;\n this.timeInput.focus();\n }\n }\n\n scrollToViewWithinParent(optionIndex: number) {\n const option = this.times[optionIndex];\n const childElement = this.el.shadowRoot?.getElementById(option.id.toString()) as HTMLLIElement;\n const parentElement = this.timeMenu;\n\n this.ariaActivedescendant = option.id.toString();\n\n // Scroll child into view within parent\n const childRect = childElement.getBoundingClientRect();\n const parentRect = parentElement.getBoundingClientRect();\n\n if (childRect.top < parentRect.top) {\n // Child is above the visible area of the parent\n parentElement.scrollTop -= parentRect.top - childRect.top;\n } else if (childRect.bottom > parentRect.bottom) {\n // Child is below the visible area of the parent\n parentElement.scrollTop += childRect.bottom - parentRect.bottom;\n }\n\n if (childRect.left < parentRect.left) {\n // Child is to the left of the visible area of the parent\n parentElement.scrollLeft -= parentRect.left - childRect.left;\n } else if (childRect.right > parentRect.right) {\n // Child is to the right of the visible area of the parent\n parentElement.scrollLeft += childRect.right - parentRect.right;\n }\n }\n\n focusOption(index: number) {\n const option = this.times[index];\n if (!option) return; // Guard clause in case index is out of bounds\n\n const elementId = option.id.toString();\n const element = this.el.shadowRoot?.getElementById(elementId) as HTMLLIElement;\n\n if (element) {\n element.focus(); // Set focus on the element\n element.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n }\n }\n\n render() {\n return (\n <Host>\n <div class=\"time-picker\">\n <input\n type=\"text\"\n name={this.name}\n id={this.name}\n class={{\n 'time-input': true,\n 'error': !!this.err || this.hasError,\n }}\n ref={el => (this.timeInput = el as HTMLInputElement)}\n value={this.time}\n onClick={() => {\n this.showTimes = true;\n this.shouldAutoScroll = true;\n }}\n aria-haspopup=\"listbox\"\n aria-label={this.name}\n aria-expanded={this.showTimes ? 'true' : 'false'}\n placeholder={this.placeholder}\n onKeyDown={e => this.handleComboboxKeyDown(e)}\n onInput={event => this.handleOnInput(event)}\n onBlur={event => this.handleTimeAutocomplete(event)}\n />\n {this.err && <div class=\"invalid-time-icon\">{/* Icon here */}</div>}\n {this.showTimes && (\n <div class=\"times\" ref={el => (this.timeMenu = el as HTMLElement)}>\n <ul tabindex=\"-1\" role=\"listbox\" aria-label={this.name} aria-activedescendant={this.ariaActivedescendant} onKeyDown={e => this.handleListboxKeydown(e)}>\n {this.times.map(option => (\n <li\n tabindex=\"0\"\n key={option.id}\n id={option.id.toString()}\n class={{\n focused: this.ariaActivedescendant === option.id.toString(),\n }}\n onClick={e => {\n this.handleTimeChange(e, option.value);\n this.showTimes = false;\n this.timeInput.focus();\n }}\n role=\"option\"\n >\n {`${option.value}`}\n </li>\n ))}\n </ul>\n </div>\n )}\n {!this.showTimes && this.err && (\n <p class=\"error\" id=\"email-error\">\n {this.err}\n </p>\n )}\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{X as r}from"./p-1af51c6b.js";import{c as t}from"./p-65b275df.js";class s{constructor({nylasAuth:r,nylasAuthStore:t,nylasSchedulerConfigStore:s}){this.nylasAuth=r;this.nylasAuthStore=t;this.nylasSchedulerConfigStore=s}async getCalendars(){if(!this.nylasAuthStore.state.isAuthenticated){return{error:"Not authenticated"}}if(!this.nylasAuth.hasScope("calendar:read_only")){return{error:"Missing calendar:read_only scope"}}const t=await this.nylasAuth.nylasAPIRequest(`/v3/grants/me/calendars`);if(r(t)){return{error:"Error fetching calendars: "+t.error?.message}}this.nylasSchedulerConfigStore.state.calendars=t.data;return t?.data}}function a(r={}){const s={config:{},calendars:[],...r};const a=t(s);return a}export{a as C,s as N};
|
|
2
|
-
//# sourceMappingURL=p-578f4029.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["NylasSchedulerConfigAPIConnector","constructor","nylasAuth","nylasAuthStore","nylasSchedulerConfigStore","this","getCalendars","state","isAuthenticated","error","hasScope","response","nylasAPIRequest","isNylasErrorResponse","message","calendars","data","CreateNylasSchedulerConfigStore","defaultState","defaultNylasSchedulerConfigStoreState","config","store","createStore"],"sources":["src/connector/shared/api/scheduler-config.ts","src/stores/scheduler-config-store.ts"],"sourcesContent":["import { NylasSchedulerConfigStoreType } from '@/stores/scheduler-config-store';\nimport { Calendar, NylasAuthType, NylasErrorResponse, NylasResponse, isNylasErrorResponse } from '@nylas/core';\nimport { NylasAuthStoreType } from '../../../components';\n\ntype NylasSchedulerConfigAPIConnectorOptions = {\n nylasAuth: NylasAuthType;\n nylasAuthStore: NylasAuthStoreType;\n nylasSchedulerConfigStore: NylasSchedulerConfigStoreType;\n};\n\nexport class NylasSchedulerConfigAPIConnector {\n public nylasAuth: NylasAuthType;\n public nylasAuthStore: NylasAuthStoreType;\n public nylasSchedulerConfigStore: NylasSchedulerConfigStoreType;\n\n constructor({ nylasAuth, nylasAuthStore, nylasSchedulerConfigStore }: NylasSchedulerConfigAPIConnectorOptions) {\n this.nylasAuth = nylasAuth;\n this.nylasAuthStore = nylasAuthStore;\n this.nylasSchedulerConfigStore = nylasSchedulerConfigStore;\n }\n\n public async getCalendars() {\n if (!this.nylasAuthStore.state.isAuthenticated) {\n return {\n error: 'Not authenticated',\n };\n }\n\n if (!this.nylasAuth.hasScope('calendar:read_only')) {\n return {\n error: 'Missing calendar:read_only scope',\n };\n }\n const response = await this.nylasAuth.nylasAPIRequest<NylasResponse<Calendar[]>>(`/v3/grants/me/calendars`);\n if (isNylasErrorResponse(response)) {\n return {\n error: 'Error fetching calendars: ' + response.error?.message,\n } as NylasErrorResponse;\n }\n\n this.nylasSchedulerConfigStore.state.calendars = response.data;\n return response?.data;\n }\n}\n","import { Calendar } from '@nylas/core';\nimport { createStore } from '@stencil/store';\n\nexport interface NylasSchedulerConfigStoreState {\n config: any;\n calendars: Calendar[];\n}\n\nexport type NylasSchedulerConfigStoreType = ReturnType<typeof CreateNylasSchedulerConfigStore>;\n\nexport function CreateNylasSchedulerConfigStore(defaultState: Partial<NylasSchedulerConfigStoreState> = {}) {\n const defaultNylasSchedulerConfigStoreState: NylasSchedulerConfigStoreState = {\n config: {},\n calendars: [],\n ...defaultState,\n };\n const store = createStore<NylasSchedulerConfigStoreState>(defaultNylasSchedulerConfigStoreState);\n\n return store;\n}\n"],"mappings":"8EAUaA,EAKX,WAAAC,EAAYC,UAAEA,EAASC,eAAEA,EAAcC,0BAAEA,IACvCC,KAAKH,UAAYA,EACjBG,KAAKF,eAAiBA,EACtBE,KAAKD,0BAA4BA,C,CAG5B,kBAAME,GACX,IAAKD,KAAKF,eAAeI,MAAMC,gBAAiB,CAC9C,MAAO,CACLC,MAAO,oB,CAIX,IAAKJ,KAAKH,UAAUQ,SAAS,sBAAuB,CAClD,MAAO,CACLD,MAAO,mC,CAGX,MAAME,QAAiBN,KAAKH,UAAUU,gBAA2C,2BACjF,GAAIC,EAAqBF,GAAW,CAClC,MAAO,CACLF,MAAO,6BAA+BE,EAASF,OAAOK,Q,CAI1DT,KAAKD,0BAA0BG,MAAMQ,UAAYJ,EAASK,KAC1D,OAAOL,GAAUK,I,WC/BLC,EAAgCC,EAAwD,IACtG,MAAMC,EAAwE,CAC5EC,OAAQ,GACRL,UAAW,MACRG,GAEL,MAAMG,EAAQC,EAA4CH,GAE1D,OAAOE,CACT,Q"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{d as t}from"./p-facc84f3.js";import{c as s}from"./p-65b275df.js";class n{constructor(t,s){this.nylasAuth=t;this.nylasAuthStore=s}async validateSession(){const s=await this.isAccessTokenValid();if(!s){this.logout()}else{let s=await this.nylasAuth.getTokenInfo();if(s){const n=5*60*1e3;const e=Math.floor(Date.now()/1e3);if(s.expires_in&&s.expires_in-e<n){t("[NylasAuthConnectorMixin] Refreshing access token");s=await this.nylasAuth.refreshAccessToken();if(!s){t("[NylasAuthConnectorMixin] Token is expired and could not be refreshed. Logging out.");this.logout();return}}this.nylasAuthStore.state.tokenInfo=s}}this.nylasAuthStore.state.isAuthenticated=s}async isAuthenticated(){return this.nylasAuth.isAuthenticated()}async getTokenInfo(){return this.nylasAuth.getTokenInfo()}async isAccessTokenValid(){return this.nylasAuth.isAccessTokenValid()}async logout(){await this.nylasAuth.logout()}async getHostedAuthRedirectURL(t,s,n){return this.nylasAuth.getHostedAuthRedirectURL(t,s,n)}async manageHostedAuthCodeExchange(t){const s=new URL(t);const n=s.searchParams.get("code");if(n){const t=await this.nylasAuth.exchangeAuthCodeForTokenInfo(n);if(t){this.nylasAuthStore.state.tokenInfo=t;this.nylasAuthStore.state.isAuthenticated=true;return t}}return null}}function e(t={}){const n={isAuthenticated:false,tokenInfo:null,state:"ready",...t};const e=s(n);e.reset=()=>{for(const t in n){const s=n[t];e.set(t,s)}};return e}export{e as C,n as N};
|
|
2
|
-
//# sourceMappingURL=p-5c72d9a4.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["NylasAuthConnector","constructor","nylasAuth","nylasAuthStore","this","validateSession","isAuthenticated","isAccessTokenValid","logout","tokenInfo","getTokenInfo","expireTimeCheck","currentTimeInSeconds","Math","floor","Date","now","expires_in","debug","refreshAccessToken","state","getHostedAuthRedirectURL","scopes","email","provider","manageHostedAuthCodeExchange","currentUrl","url","URL","code","searchParams","get","exchangeAuthCodeForTokenInfo","CreateNylasAuthStore","defaultState","defaultNylasStoreState","store","createStore","reset","key","value","set"],"sources":["src/connector/shared/api/auth.ts","src/stores/auth-store.ts"],"sourcesContent":["import { debug } from '@/utils/utils';\nimport { NylasAuthStoreType, NylasAuthType, TokenInfo } from '../../..';\n\nexport class NylasAuthConnector {\n private nylasAuth: NylasAuthType;\n private nylasAuthStore: NylasAuthStoreType;\n\n constructor(nylasAuth: NylasAuthType, nylasAuthStore: NylasAuthStoreType) {\n this.nylasAuth = nylasAuth;\n this.nylasAuthStore = nylasAuthStore;\n }\n\n /**\n * Validates the current session and updates the store with the token info\n * if the user is authenticated.\n * If the user is not authenticated, the store is reset.\n * @returns {Promise<void>}\n */\n public async validateSession(): Promise<void> {\n const isAuthenticated = await this.isAccessTokenValid();\n if (!isAuthenticated) {\n // Reset the store if the access token is not valid\n this.logout();\n } else {\n // If the user is authenticated, update the store with the token info\n let tokenInfo = await this.nylasAuth.getTokenInfo();\n if (tokenInfo) {\n // If token is expired or about to expire (in 5 minutes), refresh it\n const expireTimeCheck = 5 * 60 * 1000; // 5 minutes\n const currentTimeInSeconds = Math.floor(Date.now() / 1000);\n\n if (tokenInfo.expires_in && tokenInfo.expires_in - currentTimeInSeconds < expireTimeCheck) {\n debug('[NylasAuthConnectorMixin] Refreshing access token');\n tokenInfo = await this.nylasAuth.refreshAccessToken();\n if (!tokenInfo) {\n debug('[NylasAuthConnectorMixin] Token is expired and could not be refreshed. Logging out.');\n this.logout();\n return;\n }\n }\n\n this.nylasAuthStore.state.tokenInfo = tokenInfo;\n }\n }\n this.nylasAuthStore.state.isAuthenticated = isAuthenticated;\n }\n\n /**\n * Returns true if the user is authenticated.\n * @returns {Promise<boolean>}\n */\n public async isAuthenticated(): Promise<boolean> {\n return this.nylasAuth.isAuthenticated();\n }\n\n /**\n * Returns the token info if the user is authenticated.\n * @returns {Promise<TokenInfo>}\n */\n public async getTokenInfo(): Promise<TokenInfo | null> {\n return this.nylasAuth.getTokenInfo();\n }\n\n /**\n * Returns true if the access token is valid.\n * @returns {Promise<boolean>}\n */\n public async isAccessTokenValid(): Promise<boolean> {\n return this.nylasAuth.isAccessTokenValid();\n }\n\n /**\n * Removes the token info from the store and logs the user out.\n * @returns {Promise<void>}\n */\n public async logout(): Promise<void> {\n await this.nylasAuth.logout();\n }\n\n /**\n * Returns the URL to redirect the user to for authentication.\n * @param scopes An array of scopes to request from the user.\n * @param email The email address of the user to authenticate.\n * @param provider The provider to use for authentication.\n * @returns {Promise<string>}\n */\n public async getHostedAuthRedirectURL(scopes?: string[], email?: string, provider?: string): Promise<string> {\n return this.nylasAuth.getHostedAuthRedirectURL(scopes, email, provider);\n }\n\n /**\n * Exchanges the auth code for a token info and updates the store.\n * @param currentUrl The current URL of the page.\n * @returns {Promise<TokenInfo | null>}\n */\n public async manageHostedAuthCodeExchange(currentUrl: string): Promise<TokenInfo | null> {\n const url = new URL(currentUrl);\n const code = url.searchParams.get('code');\n\n if (code) {\n const tokenInfo = await this.nylasAuth.exchangeAuthCodeForTokenInfo(code);\n if (tokenInfo) {\n this.nylasAuthStore.state.tokenInfo = tokenInfo;\n this.nylasAuthStore.state.isAuthenticated = true;\n return tokenInfo;\n }\n }\n\n return null;\n }\n}\n","import { TokenInfo } from '@nylas/core/dist/auth';\nimport { createStore } from '@stencil/store';\nimport { DataState } from '..';\n\nexport interface NylasAuthStoreState {\n isAuthenticated: boolean;\n tokenInfo: TokenInfo | null;\n state: DataState;\n}\n\nexport type NylasAuthStoreType = ReturnType<typeof CreateNylasAuthStore>;\n\nexport function CreateNylasAuthStore(defaultState: Partial<NylasAuthStoreState> = {}) {\n const defaultNylasStoreState: NylasAuthStoreState = {\n isAuthenticated: false,\n tokenInfo: null,\n state: 'ready',\n ...defaultState,\n };\n const store = createStore<NylasAuthStoreState>(defaultNylasStoreState);\n\n /**\n * Reset the Nylas store to its default state.\n * There is something wrong with the stencil/store reset method,\n * so we have to do it via this hack.\n */\n store.reset = () => {\n for (const key in defaultNylasStoreState) {\n const value = defaultNylasStoreState[key as keyof typeof defaultNylasStoreState];\n store.set(key as any, value);\n }\n };\n\n return store;\n}\n"],"mappings":"8EAGaA,EAIX,WAAAC,CAAYC,EAA0BC,GACpCC,KAAKF,UAAYA,EACjBE,KAAKD,eAAiBA,C,CASjB,qBAAME,GACX,MAAMC,QAAwBF,KAAKG,qBACnC,IAAKD,EAAiB,CAEpBF,KAAKI,Q,KACA,CAEL,IAAIC,QAAkBL,KAAKF,UAAUQ,eACrC,GAAID,EAAW,CAEb,MAAME,EAAkB,EAAI,GAAK,IACjC,MAAMC,EAAuBC,KAAKC,MAAMC,KAAKC,MAAQ,KAErD,GAAIP,EAAUQ,YAAcR,EAAUQ,WAAaL,EAAuBD,EAAiB,CACzFO,EAAM,qDACNT,QAAkBL,KAAKF,UAAUiB,qBACjC,IAAKV,EAAW,CACdS,EAAM,uFACNd,KAAKI,SACL,M,EAIJJ,KAAKD,eAAeiB,MAAMX,UAAYA,C,EAG1CL,KAAKD,eAAeiB,MAAMd,gBAAkBA,C,CAOvC,qBAAMA,GACX,OAAOF,KAAKF,UAAUI,iB,CAOjB,kBAAMI,GACX,OAAON,KAAKF,UAAUQ,c,CAOjB,wBAAMH,GACX,OAAOH,KAAKF,UAAUK,oB,CAOjB,YAAMC,SACLJ,KAAKF,UAAUM,Q,CAUhB,8BAAMa,CAAyBC,EAAmBC,EAAgBC,GACvE,OAAOpB,KAAKF,UAAUmB,yBAAyBC,EAAQC,EAAOC,E,CAQzD,kCAAMC,CAA6BC,GACxC,MAAMC,EAAM,IAAIC,IAAIF,GACpB,MAAMG,EAAOF,EAAIG,aAAaC,IAAI,QAElC,GAAIF,EAAM,CACR,MAAMpB,QAAkBL,KAAKF,UAAU8B,6BAA6BH,GACpE,GAAIpB,EAAW,CACbL,KAAKD,eAAeiB,MAAMX,UAAYA,EACtCL,KAAKD,eAAeiB,MAAMd,gBAAkB,KAC5C,OAAOG,C,EAIX,OAAO,I,WChGKwB,EAAqBC,EAA6C,IAChF,MAAMC,EAA8C,CAClD7B,gBAAiB,MACjBG,UAAW,KACXW,MAAO,WACJc,GAEL,MAAME,EAAQC,EAAiCF,GAO/CC,EAAME,MAAQ,KACZ,IAAK,MAAMC,KAAOJ,EAAwB,CACxC,MAAMK,EAAQL,EAAuBI,GACrCH,EAAMK,IAAIF,EAAYC,E,GAI1B,OAAOJ,CACT,Q"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as a,h as e}from"./p-e4b9d6af.js";const f=".sc-close-icon-h{display:flex}";const c=f;const t=class{constructor(e){a(this,e);this.width="16";this.height="16"}render(){return e("svg",{key:"e58d42880affc512eb7ae18a34099340a50dc6be",width:"21",height:"21",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e("g",{key:"122df83308958e375531cdaa9d057b78d36b08e3","clip-path":"url(#a)"},e("path",{key:"9b712ee4fa93a86f9a5609bea9233f17160bc23e",d:"M5.73 4.574a.75.75 0 1 0-1.061 1.06l4.419 4.42-4.42 4.42a.75.75 0 1 0 1.061 1.06l4.42-4.42 4.419 4.42a.75.75 0 0 0 1.06-1.06l-4.419-4.42 4.42-4.42a.75.75 0 1 0-1.061-1.06l-4.42 4.42-4.419-4.42Z",fill:"currentColor"})),e("defs",{key:"761a14ba84069f692cad52f6eafa8cafc4a36489"},e("clipPath",{key:"6805481c67c08d9253c6a5bd7ece2688f6fe0e55",id:"a"},e("path",{key:"af3d03843001cd7418021a9dd216f2e2f126fc7f",fill:"#fff",transform:"translate(.148 .054)",d:"M0 0h20v20H0z"}))))}};t.style=c;export{t as close_icon};
|
|
2
|
-
//# sourceMappingURL=p-5fd0eb1d.entry.js.map
|