@nylas/web-elements 0.0.0-canary-20251023164535 → 0.0.0-canary-20251029185136
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/cdn/nylas-scheduler-editor/nylas-scheduler-editor.es.js +17 -16
- package/dist/cdn/nylas-scheduling/nylas-scheduling.es.js +10 -10
- package/dist/cjs/{abstract-provider-DOaCK0Ia.js → abstract-provider-CZo7QWPj.js} +3 -3
- package/dist/cjs/{abstract-provider-DOaCK0Ia.js.map → abstract-provider-CZo7QWPj.js.map} +1 -1
- package/dist/cjs/calendar-agenda-fill-icon_38.cjs.entry.js +9 -9
- package/dist/cjs/calendar-agenda-fill-icon_38.cjs.entry.js.map +1 -1
- package/dist/cjs/checkbox-group_4.cjs.entry.js +3 -3
- package/dist/cjs/checkmark-icon_15.cjs.entry.js +2 -2
- package/dist/cjs/{customParseFormat-B3qRJI76.js → customParseFormat-DdrySvrq.js} +3 -3
- package/dist/cjs/{customParseFormat-B3qRJI76.js.map → customParseFormat-DdrySvrq.js.map} +1 -1
- package/dist/cjs/globe-icon_3.cjs.entry.js +2 -2
- package/dist/cjs/google-logo-icon_6.cjs.entry.js +3 -3
- package/dist/cjs/index.cjs.js +2 -2
- package/dist/cjs/input-component.cjs.entry.js +1 -1
- package/dist/cjs/input-dropdown_2.cjs.entry.js +1 -1
- package/dist/cjs/multi-select-dropdown.cjs.entry.js +1 -1
- package/dist/cjs/{nylas-api-request-Dyvsd6KX.js → nylas-api-request-Cyt148Hk.js} +3 -3
- package/dist/cjs/{nylas-api-request-Dyvsd6KX.js.map → nylas-api-request-Cyt148Hk.js.map} +1 -1
- package/dist/cjs/nylas-booked-event-card_11.cjs.entry.js +2 -2
- package/dist/cjs/nylas-form-card.cjs.entry.js +2 -2
- package/dist/cjs/nylas-notification_2.cjs.entry.js +1 -1
- package/dist/cjs/nylas-scheduler-editor.cjs.entry.js +4 -4
- package/dist/cjs/nylas-scheduling.cjs.entry.js +3 -3
- package/dist/cjs/{register-component-CZKreEUk.js → register-component-BYFF0_7-.js} +3 -3
- package/dist/cjs/{register-component-CZKreEUk.js.map → register-component-BYFF0_7-.js.map} +1 -1
- package/dist/cjs/textarea-component.cjs.entry.js +1 -1
- package/dist/cjs/{utils-VYrzhIuQ.js → utils-DMP9yXCk.js} +11 -11
- package/dist/cjs/{utils-VYrzhIuQ.js.map → utils-DMP9yXCk.js.map} +1 -1
- package/dist/cjs/{version-sMNkED66.js → version-DTKfJ9pI.js} +3 -3
- package/dist/cjs/{version-sMNkED66.js.map → version-DTKfJ9pI.js.map} +1 -1
- package/dist/collection/components/scheduler-editor/nylas-specific-time-availability-picker/nylas-specific-time-availability-picker.css +9 -2
- package/dist/collection/components/scheduler-editor/nylas-specific-time-availability-picker/nylas-specific-time-availability-picker.js +6 -6
- package/dist/collection/components/scheduler-editor/nylas-specific-time-availability-picker/nylas-specific-time-availability-picker.js.map +1 -1
- package/dist/collection/version.js +1 -1
- package/dist/collection/version.js.map +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/input-component.js +1 -1
- package/dist/components/input-image-url.js +1 -1
- package/dist/components/multi-select-dropdown.js +1 -1
- package/dist/components/nylas-additional-participants.js +1 -1
- package/dist/components/nylas-availability-picker.js +1 -1
- package/dist/components/nylas-booked-event-card.js +1 -1
- package/dist/components/nylas-booking-calendar-picker.js +1 -1
- package/dist/components/nylas-booking-confirmation-redirect.js +1 -1
- package/dist/components/nylas-booking-confirmation-type.js +1 -1
- package/dist/components/nylas-booking-form-config.js +1 -1
- package/dist/components/nylas-booking-form.js +1 -1
- package/dist/components/nylas-buffer-time.js +1 -1
- package/dist/components/nylas-calendar-picker.js +1 -1
- package/dist/components/nylas-cancel-booking-form.js +1 -1
- package/dist/components/nylas-cancellation-policy.js +1 -1
- package/dist/components/nylas-cancelled-event-card.js +1 -1
- package/dist/components/nylas-confirmation-email.js +1 -1
- package/dist/components/nylas-confirmed-event-card.js +1 -1
- package/dist/components/nylas-connected-calendars.js +1 -1
- package/dist/components/nylas-custom-booking-flow.js +1 -1
- package/dist/components/nylas-custom-event-slug.js +1 -1
- package/dist/components/nylas-customize-booking-settings.js +1 -1
- package/dist/components/nylas-date-component.js +1 -1
- package/dist/components/nylas-date-picker.js +1 -1
- package/dist/components/nylas-disable-emails.js +1 -1
- package/dist/components/nylas-editor-tabs-group.js +1 -1
- package/dist/components/nylas-editor-tabs.js +1 -1
- package/dist/components/nylas-event-calendar.js +1 -1
- package/dist/components/nylas-event-capacity.js +1 -1
- package/dist/components/nylas-event-description.js +1 -1
- package/dist/components/nylas-event-duration.js +1 -1
- package/dist/components/nylas-event-info.js +1 -1
- package/dist/components/nylas-event-limits.js +1 -1
- package/dist/components/nylas-event-location.js +1 -1
- package/dist/components/nylas-event-timeslot.js +1 -1
- package/dist/components/nylas-event-title.js +1 -1
- package/dist/components/nylas-feedback-form.js +1 -1
- package/dist/components/nylas-form-card.js +1 -1
- package/dist/components/nylas-limit-future-bookings.js +1 -1
- package/dist/components/nylas-list-configurations.js +1 -1
- package/dist/components/nylas-locale-switch.js +1 -1
- package/dist/components/nylas-min-booking-notice.js +1 -1
- package/dist/components/nylas-min-cancellation-notice.js +1 -1
- package/dist/components/nylas-notification.js +1 -1
- package/dist/components/nylas-only-specific-time-availability.js +1 -1
- package/dist/components/nylas-organizer-confirmation-card.js +1 -1
- package/dist/components/nylas-page-name.js +1 -1
- package/dist/components/nylas-page-styling.js +1 -1
- package/dist/components/nylas-participant-booking-calendars.js +1 -1
- package/dist/components/nylas-participants-custom-availability.js +1 -1
- package/dist/components/nylas-reminder-emails.js +1 -1
- package/dist/components/nylas-reminder-time.js +1 -1
- package/dist/components/nylas-scheduler-editor.js +55 -55
- package/dist/components/nylas-scheduling-method.js +1 -1
- package/dist/components/nylas-scheduling.js +19 -19
- package/dist/components/nylas-select-event-type.js +1 -1
- package/dist/components/nylas-selected-event-card.js +1 -1
- package/dist/components/nylas-specific-time-availability-picker.js +1 -1
- package/dist/components/nylas-time-window-picker.js +1 -1
- package/dist/components/nylas-timeslot-interval.js +1 -1
- package/dist/components/nylas-timeslot-picker.js +1 -1
- package/dist/components/{p-H2PEDQev.js → p--DnD2uAW.js} +7 -7
- package/dist/components/{p-H2PEDQev.js.map → p--DnD2uAW.js.map} +1 -1
- package/dist/components/{p-BOEUsxij.js → p-B4K2F_cG.js} +4 -4
- package/dist/components/{p-BOEUsxij.js.map → p-B4K2F_cG.js.map} +1 -1
- package/dist/components/{p-CS8D-1if.js → p-B5pNjL0N.js} +4 -4
- package/dist/components/{p-CS8D-1if.js.map → p-B5pNjL0N.js.map} +1 -1
- package/dist/components/{p-Nzu_5ZmQ.js → p-BC9yeuRb.js} +3 -3
- package/dist/components/{p-Nzu_5ZmQ.js.map → p-BC9yeuRb.js.map} +1 -1
- package/dist/components/{p-BX-dFDFA.js → p-BMpBdxEp.js} +4 -4
- package/dist/components/{p-BX-dFDFA.js.map → p-BMpBdxEp.js.map} +1 -1
- package/dist/components/{p-DyOLurnZ.js → p-BYzuAGXU.js} +49 -49
- package/dist/components/{p-DyOLurnZ.js.map → p-BYzuAGXU.js.map} +1 -1
- package/dist/components/{p-D6E0vp2X.js → p-BfdTgv37.js} +4 -4
- package/dist/components/{p-D6E0vp2X.js.map → p-BfdTgv37.js.map} +1 -1
- package/dist/components/{p-C-9RzJZG.js → p-BkzMJ4pV.js} +11 -11
- package/dist/components/{p-C-9RzJZG.js.map → p-BkzMJ4pV.js.map} +1 -1
- package/dist/components/{p-BnKgaDIm.js → p-BnU07kVV.js} +5 -5
- package/dist/components/{p-BnKgaDIm.js.map → p-BnU07kVV.js.map} +1 -1
- package/dist/components/{p-CJXT074p.js → p-BnrCrrsE.js} +4 -4
- package/dist/components/{p-CJXT074p.js.map → p-BnrCrrsE.js.map} +1 -1
- package/dist/components/{p-B4LAfvS9.js → p-BoryVwdE.js} +3 -3
- package/dist/components/{p-B4LAfvS9.js.map → p-BoryVwdE.js.map} +1 -1
- package/dist/components/{p-B-q5dr4Z.js → p-BqTfI9iO.js} +5 -5
- package/dist/components/{p-B-q5dr4Z.js.map → p-BqTfI9iO.js.map} +1 -1
- package/dist/components/{p-PGZfpcsW.js → p-Bspl8yuu.js} +8 -8
- package/dist/components/{p-PGZfpcsW.js.map → p-Bspl8yuu.js.map} +1 -1
- package/dist/components/{p-nwpBi6uh.js → p-BvRLg-HQ.js} +3 -3
- package/dist/components/{p-nwpBi6uh.js.map → p-BvRLg-HQ.js.map} +1 -1
- package/dist/components/{p-Ck7Utpku.js → p-C5fHZLWQ.js} +5 -5
- package/dist/components/{p-Ck7Utpku.js.map → p-C5fHZLWQ.js.map} +1 -1
- package/dist/components/{p-rernVjNw.js → p-C7CSS14_.js} +6 -6
- package/dist/components/{p-rernVjNw.js.map → p-C7CSS14_.js.map} +1 -1
- package/dist/components/{p-USlPWd32.js → p-C8gVhB99.js} +5 -5
- package/dist/components/{p-USlPWd32.js.map → p-C8gVhB99.js.map} +1 -1
- package/dist/components/{p-DiCCKLqS.js → p-C9m4ME75.js} +40 -40
- package/dist/components/{p-DiCCKLqS.js.map → p-C9m4ME75.js.map} +1 -1
- package/dist/components/{p-BJIdbu1H.js → p-CHGzZc5-.js} +5 -5
- package/dist/components/{p-BJIdbu1H.js.map → p-CHGzZc5-.js.map} +1 -1
- package/dist/components/{p-C3quV8UM.js → p-CI0FKgAJ.js} +7 -7
- package/dist/components/{p-C3quV8UM.js.map → p-CI0FKgAJ.js.map} +1 -1
- package/dist/components/{p-OWT0xV_k.js → p-CNojy2PB.js} +4 -4
- package/dist/components/{p-OWT0xV_k.js.map → p-CNojy2PB.js.map} +1 -1
- package/dist/components/{p-CpcjVJMS.js → p-COOMTxtt.js} +4 -4
- package/dist/components/{p-CpcjVJMS.js.map → p-COOMTxtt.js.map} +1 -1
- package/dist/components/{p-CIZt1hbc.js → p-CS7dGt1R.js} +4 -4
- package/dist/components/{p-CIZt1hbc.js.map → p-CS7dGt1R.js.map} +1 -1
- package/dist/components/{p-CxgQ4DV9.js → p-CZw_P3Tp.js} +4 -4
- package/dist/components/{p-CxgQ4DV9.js.map → p-CZw_P3Tp.js.map} +1 -1
- package/dist/components/{p-CxjS5vcT.js → p-C_QAMVyX.js} +4 -4
- package/dist/components/{p-CxjS5vcT.js.map → p-C_QAMVyX.js.map} +1 -1
- package/dist/components/{p-zBmfn9Ee.js → p-CexYKlpc.js} +3 -3
- package/dist/components/{p-zBmfn9Ee.js.map → p-CexYKlpc.js.map} +1 -1
- package/dist/components/{p-wJWFqJZw.js → p-CsKdKz2W.js} +4 -4
- package/dist/components/{p-wJWFqJZw.js.map → p-CsKdKz2W.js.map} +1 -1
- package/dist/components/{p-CZLOU3Va.js → p-CwlnHdR3.js} +4 -4
- package/dist/components/{p-CZLOU3Va.js.map → p-CwlnHdR3.js.map} +1 -1
- package/dist/components/{p-BzNgohl1.js → p-Cx31rTZq.js} +4 -4
- package/dist/components/{p-BzNgohl1.js.map → p-Cx31rTZq.js.map} +1 -1
- package/dist/components/{p-BPbLHmnh.js → p-CzBqaxFU.js} +5 -5
- package/dist/components/{p-BPbLHmnh.js.map → p-CzBqaxFU.js.map} +1 -1
- package/dist/components/{p-C7_XycjO.js → p-D1EoqZsu.js} +4 -4
- package/dist/components/{p-C7_XycjO.js.map → p-D1EoqZsu.js.map} +1 -1
- package/dist/components/{p-C_9WoSFK.js → p-D3xYUjJI.js} +4 -4
- package/dist/components/{p-C_9WoSFK.js.map → p-D3xYUjJI.js.map} +1 -1
- package/dist/components/{p-BnsOCm71.js → p-D5KNDDuK.js} +4 -4
- package/dist/components/{p-BnsOCm71.js.map → p-D5KNDDuK.js.map} +1 -1
- package/dist/components/{p-CQQB-OD7.js → p-D6ovLzQI.js} +3 -3
- package/dist/components/{p-CQQB-OD7.js.map → p-D6ovLzQI.js.map} +1 -1
- package/dist/components/{p-BgVZNMXq.js → p-D6x7KnWY.js} +8 -8
- package/dist/components/{p-BgVZNMXq.js.map → p-D6x7KnWY.js.map} +1 -1
- package/dist/components/{p-C2wPhW78.js → p-D7s_zg_d.js} +4 -4
- package/dist/components/{p-C2wPhW78.js.map → p-D7s_zg_d.js.map} +1 -1
- package/dist/components/{p-4Eo0pKVg.js → p-D92kTAyK.js} +5 -5
- package/dist/components/{p-4Eo0pKVg.js.map → p-D92kTAyK.js.map} +1 -1
- package/dist/components/{p-C-bIz_hy.js → p-D9Dg1JWU.js} +3 -3
- package/dist/components/{p-C-bIz_hy.js.map → p-D9Dg1JWU.js.map} +1 -1
- package/dist/components/{p-DP1P7gC9.js → p-D9PED7bs.js} +5 -5
- package/dist/components/{p-DP1P7gC9.js.map → p-D9PED7bs.js.map} +1 -1
- package/dist/components/{p-Dy9AIDSW.js → p-DAmas3F9.js} +4 -4
- package/dist/components/{p-Dy9AIDSW.js.map → p-DAmas3F9.js.map} +1 -1
- package/dist/components/{p-DEF0WG29.js → p-DHlJz5qn.js} +5 -5
- package/dist/components/{p-DEF0WG29.js.map → p-DHlJz5qn.js.map} +1 -1
- package/dist/components/{p-o0D7OIed.js → p-DJv7tC9z.js} +3 -3
- package/dist/components/{p-o0D7OIed.js.map → p-DJv7tC9z.js.map} +1 -1
- package/dist/components/{p-s06UjtHJ.js → p-DKnp-SZi.js} +8 -8
- package/dist/components/{p-s06UjtHJ.js.map → p-DKnp-SZi.js.map} +1 -1
- package/dist/components/{p-DPHPGDki.js → p-DPeb4p0M.js} +5 -5
- package/dist/components/{p-DPHPGDki.js.map → p-DPeb4p0M.js.map} +1 -1
- package/dist/components/{p-C7Gn7-GK.js → p-DRd9V7vZ.js} +7 -7
- package/dist/components/{p-C7Gn7-GK.js.map → p-DRd9V7vZ.js.map} +1 -1
- package/dist/components/{p-D5WcQ7s2.js → p-DTlpOiw-.js} +6 -6
- package/dist/components/{p-D5WcQ7s2.js.map → p-DTlpOiw-.js.map} +1 -1
- package/dist/components/{p-auB3ZoWP.js → p-DWkUeMm6.js} +4 -4
- package/dist/components/{p-auB3ZoWP.js.map → p-DWkUeMm6.js.map} +1 -1
- package/dist/components/{p-DFnXfDS7.js → p-DbjQjOKi.js} +3 -3
- package/dist/components/{p-DFnXfDS7.js.map → p-DbjQjOKi.js.map} +1 -1
- package/dist/components/{p-BQaskvNx.js → p-DciJgP0N.js} +4 -4
- package/dist/components/{p-BQaskvNx.js.map → p-DciJgP0N.js.map} +1 -1
- package/dist/components/{p-CAlTvMv3.js → p-DkJ3N73P.js} +5 -5
- package/dist/components/{p-CAlTvMv3.js.map → p-DkJ3N73P.js.map} +1 -1
- package/dist/components/{p-D3EFT5f-.js → p-DmYbjMxT.js} +4 -4
- package/dist/components/{p-D3EFT5f-.js.map → p-DmYbjMxT.js.map} +1 -1
- package/dist/components/{p-Ckv0Bcus.js → p-Dp5o78QS.js} +5 -5
- package/dist/components/{p-Ckv0Bcus.js.map → p-Dp5o78QS.js.map} +1 -1
- package/dist/components/{p-BgfJE-cE.js → p-DqcCEDhq.js} +5 -5
- package/dist/components/{p-BgfJE-cE.js.map → p-DqcCEDhq.js.map} +1 -1
- package/dist/components/{p-ksfJsdwW.js → p-Dqk37NDi.js} +5 -5
- package/dist/components/{p-ksfJsdwW.js.map → p-Dqk37NDi.js.map} +1 -1
- package/dist/components/{p-ML5NaBlp.js → p-Du2grbuj.js} +5 -5
- package/dist/components/{p-ML5NaBlp.js.map → p-Du2grbuj.js.map} +1 -1
- package/dist/components/{p-Dows6o9d.js → p-DvSo9R8l.js} +5 -5
- package/dist/components/{p-Dows6o9d.js.map → p-DvSo9R8l.js.map} +1 -1
- package/dist/components/{p-DzIz09Sr.js → p-DwtTOYHU.js} +13 -13
- package/dist/components/p-DwtTOYHU.js.map +1 -0
- package/dist/components/{p-He5IjVyD.js → p-DzErtQSw.js} +5 -5
- package/dist/components/{p-He5IjVyD.js.map → p-DzErtQSw.js.map} +1 -1
- package/dist/components/{p-D4OZzddo.js → p-F1_K10Bc.js} +5 -5
- package/dist/components/{p-D4OZzddo.js.map → p-F1_K10Bc.js.map} +1 -1
- package/dist/components/{p-DLdTazaE.js → p-MYEzIAsT.js} +4 -4
- package/dist/components/{p-DLdTazaE.js.map → p-MYEzIAsT.js.map} +1 -1
- package/dist/components/{p-bbx04OZB.js → p-UTtjPYki.js} +3 -3
- package/dist/components/{p-bbx04OZB.js.map → p-UTtjPYki.js.map} +1 -1
- package/dist/components/{p-DZJR8iD8.js → p-ngAHxLZm.js} +5 -5
- package/dist/components/{p-DZJR8iD8.js.map → p-ngAHxLZm.js.map} +1 -1
- package/dist/components/{p-DIbhOKDN.js → p-qe7eWmdR.js} +3 -3
- package/dist/components/{p-DIbhOKDN.js.map → p-qe7eWmdR.js.map} +1 -1
- package/dist/components/{p-B_Zms6J8.js → p-s8TAnkny.js} +4 -4
- package/dist/components/{p-B_Zms6J8.js.map → p-s8TAnkny.js.map} +1 -1
- package/dist/components/{p-DHJAvIzJ.js → p-t4Pprf0f.js} +17 -17
- package/dist/components/{p-DHJAvIzJ.js.map → p-t4Pprf0f.js.map} +1 -1
- package/dist/components/{p-CoslO5Ge.js → p-tgoTIF6z.js} +3 -3
- package/dist/components/{p-CoslO5Ge.js.map → p-tgoTIF6z.js.map} +1 -1
- package/dist/components/textarea-component.js +1 -1
- package/dist/components/time-period-selector.js +1 -1
- package/dist/esm/{abstract-provider-CAByQ1yu.js → abstract-provider-X9hmEFLa.js} +3 -3
- package/dist/esm/{abstract-provider-CAByQ1yu.js.map → abstract-provider-X9hmEFLa.js.map} +1 -1
- package/dist/esm/calendar-agenda-fill-icon_38.entry.js +9 -9
- package/dist/esm/calendar-agenda-fill-icon_38.entry.js.map +1 -1
- package/dist/esm/checkbox-group_4.entry.js +3 -3
- package/dist/esm/checkmark-icon_15.entry.js +2 -2
- package/dist/esm/{customParseFormat-C5X9iZBs.js → customParseFormat-DrYeNeiE.js} +3 -3
- package/dist/esm/{customParseFormat-C5X9iZBs.js.map → customParseFormat-DrYeNeiE.js.map} +1 -1
- package/dist/esm/globe-icon_3.entry.js +2 -2
- package/dist/esm/google-logo-icon_6.entry.js +3 -3
- package/dist/esm/index.js +2 -2
- package/dist/esm/input-component.entry.js +1 -1
- package/dist/esm/input-dropdown_2.entry.js +1 -1
- package/dist/esm/multi-select-dropdown.entry.js +1 -1
- package/dist/esm/{nylas-api-request-DRpN-bAX.js → nylas-api-request-AONmCQNh.js} +3 -3
- package/dist/esm/{nylas-api-request-DRpN-bAX.js.map → nylas-api-request-AONmCQNh.js.map} +1 -1
- package/dist/esm/nylas-booked-event-card_11.entry.js +2 -2
- package/dist/esm/nylas-form-card.entry.js +2 -2
- package/dist/esm/nylas-notification_2.entry.js +1 -1
- package/dist/esm/nylas-scheduler-editor.entry.js +4 -4
- package/dist/esm/nylas-scheduling.entry.js +3 -3
- package/dist/esm/{register-component-BP-GJdVK.js → register-component-BjlxxlMe.js} +3 -3
- package/dist/esm/{register-component-BP-GJdVK.js.map → register-component-BjlxxlMe.js.map} +1 -1
- package/dist/esm/textarea-component.entry.js +1 -1
- package/dist/esm/{utils-A9dwq_ZM.js → utils-B8iY7eY3.js} +11 -11
- package/dist/esm/{utils-A9dwq_ZM.js.map → utils-B8iY7eY3.js.map} +1 -1
- package/dist/esm/{version-5omo-Q8r.js → version-BXeVyeUj.js} +3 -3
- package/dist/esm/{version-5omo-Q8r.js.map → version-BXeVyeUj.js.map} +1 -1
- package/dist/nylas-web-elements/index.esm.js +1 -1
- package/dist/nylas-web-elements/nylas-web-elements.esm.js +1 -1
- package/dist/nylas-web-elements/{p-d0cbbff8.entry.js → p-20f4278e.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-240cb142.entry.js → p-292681a3.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-02dfca12.entry.js → p-2cf643e5.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-9efaf701.entry.js → p-2e5ddc68.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-3f8cca39.entry.js → p-2f787108.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-3a892dc9.entry.js → p-46da48ea.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-080d42d9.entry.js → p-581f203b.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-f344d9c4.entry.js → p-756bf83b.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-6e38f35b.entry.js → p-7b6e347e.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-5427bc14.entry.js → p-88fee757.entry.js} +3 -3
- package/dist/nylas-web-elements/{p-5427bc14.entry.js.map → p-88fee757.entry.js.map} +1 -1
- package/dist/nylas-web-elements/{p-CbRMUrkC.js → p-B1edKX4a.js} +2 -2
- package/dist/nylas-web-elements/{p-CbRMUrkC.js.map → p-B1edKX4a.js.map} +1 -1
- package/dist/nylas-web-elements/{p-A9dwq_ZM.js → p-B8iY7eY3.js} +2 -2
- package/dist/nylas-web-elements/{p-A9dwq_ZM.js.map → p-B8iY7eY3.js.map} +1 -1
- package/dist/nylas-web-elements/{p-5omo-Q8r.js → p-BXeVyeUj.js} +2 -2
- package/dist/nylas-web-elements/{p-5omo-Q8r.js.map → p-BXeVyeUj.js.map} +1 -1
- package/dist/nylas-web-elements/{p-uCXCisBZ.js → p-BaQNtGdo.js} +2 -2
- package/dist/nylas-web-elements/{p-uCXCisBZ.js.map → p-BaQNtGdo.js.map} +1 -1
- package/dist/nylas-web-elements/{p-BUNkAxEd.js → p-DEznk-5Q.js} +2 -2
- package/dist/nylas-web-elements/{p-BUNkAxEd.js.map → p-DEznk-5Q.js.map} +1 -1
- package/dist/nylas-web-elements/{p-CnLqB-Lc.js → p-ZCLNGrd_.js} +2 -2
- package/dist/nylas-web-elements/{p-CnLqB-Lc.js.map → p-ZCLNGrd_.js.map} +1 -1
- package/dist/nylas-web-elements/{p-eed68bcb.entry.js → p-c157e947.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-e13ed4e9.entry.js → p-c8025a87.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-80b69e76.entry.js → p-cd365b9c.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-0e011ed4.entry.js → p-d246e20e.entry.js} +2 -2
- package/dist/types/version.d.ts +1 -1
- package/package.json +2 -2
- package/dist/components/p-DzIz09Sr.js.map +0 -1
- /package/dist/nylas-web-elements/{p-d0cbbff8.entry.js.map → p-20f4278e.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-240cb142.entry.js.map → p-292681a3.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-02dfca12.entry.js.map → p-2cf643e5.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-9efaf701.entry.js.map → p-2e5ddc68.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-3f8cca39.entry.js.map → p-2f787108.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-3a892dc9.entry.js.map → p-46da48ea.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-080d42d9.entry.js.map → p-581f203b.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-f344d9c4.entry.js.map → p-756bf83b.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-6e38f35b.entry.js.map → p-7b6e347e.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-eed68bcb.entry.js.map → p-c157e947.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-e13ed4e9.entry.js.map → p-c8025a87.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-80b69e76.entry.js.map → p-cd365b9c.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-0e011ed4.entry.js.map → p-d246e20e.entry.js.map} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { d as dataResponse } from './p-
|
|
1
|
+
import { d as dataResponse } from './p-BkzMJ4pV.js';
|
|
2
2
|
|
|
3
3
|
class NylasIdentityRequestWrapper {
|
|
4
4
|
constructor(session) {
|
|
@@ -73,6 +73,6 @@ class NylasIdentityRequestWrapper {
|
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
export { NylasIdentityRequestWrapper as N };
|
|
76
|
-
//# sourceMappingURL=p-
|
|
76
|
+
//# sourceMappingURL=p-tgoTIF6z.js.map
|
|
77
77
|
|
|
78
|
-
//# sourceMappingURL=p-
|
|
78
|
+
//# sourceMappingURL=p-tgoTIF6z.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"p-
|
|
1
|
+
{"file":"p-tgoTIF6z.js","mappings":"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","names":[],"sources":["src/common/nylas-api-request.ts"],"sourcesContent":["import { dataResponse } from '@/utils/utils';\nimport type { NylasSessions } from '@nylas/identity';\nimport { DataResponseReturnType } from './types';\n\n/**\n * Arguments for making a request to the Nylas API.\n */\nexport type NylasRequestArgs = {\n method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';\n path: string;\n body?: any;\n headers?: Record<string, string>;\n};\n\n/**\n * A model representing a user in the Nylas Identity system.\n */\nexport type User = {\n id: string;\n email: string;\n name?: string;\n provider?: string;\n};\n\n/**\n * Arguments for authenticating a user with the Nylas Identity system.\n */\nexport type AuthArgs = {\n /**\n * The provider of the user's email address.\n */\n provider?: string;\n /**\n * A list of permission scopes for the provider.\n */\n scope?: Array<string>;\n /**\n * The login hint associated with the user.\n */\n loginHint?: string;\n /**\n * Whether to include grant scopes in the auth exchange.\n */\n includeGrantScopes?: boolean;\n prompt?: string;\n metadata?: string;\n state?: string;\n};\n\n/**\n * Interface for making requests to the Nylas API.\n *\n * This is an abstract class that is meant to be implemented by customers to provide their own\n * implementation of making requests to the Nylas API. This allows customers to use their own\n * authentication mechanism, or to use a different HTTP client library.\n */\nexport abstract class NylasApiRequest {\n /**\n * This method should make an authenticated request to the Nylas API.\n * Note: It should not throw an error if the request fails, but should return an object with the error\n * information as part of the tuple returned.\n * @param args NylasRequestArgs\n */\n abstract request<T = any>(args: NylasRequestArgs): Promise<DataResponseReturnType<T>>;\n\n /**\n * This method should return the current user's information.\n */\n\n abstract currentUser(): Promise<User | null>;\n\n /**\n * This method should set the default authentication arguments to use when authenticating the user.\n */\n abstract setDefaultAuthArgs(authArgs: AuthArgs[]): void;\n\n /**\n * This method should return the URL to redirect the user to for authentication.\n */\n abstract authenticationUrl(authArgs?: AuthArgs): Promise<string | undefined>;\n}\n\n/**\n * A wrapper around the Nylas Identity session that implements the NylasApiRequest interface.\n * This class is used by the Nylas Web Elements to make requests to the Nylas API if no custom\n * implementation of NylasApiRequest is provided.\n */\nexport class NylasIdentityRequestWrapper implements NylasApiRequest {\n /**\n * The Nylas Identity session instance.\n */\n private session: NylasSessions;\n\n /**\n * The grant_id to use for requests, if there is multi-account support\n * enabled in the Nylas Identity settings.\n */\n private activeGrantId?: string;\n\n /**\n * The default authentication arguments to use when authenticating the user.\n */\n private defaultAuthArgs: AuthArgs[] = [];\n\n /**\n * Constructor for the NylasIdentityRequestWrapper class.\n * @param session The Nylas Identity session instance.\n */\n constructor(session: NylasSessions) {\n this.session = session;\n }\n\n /**\n * This method sets the grant_id to use for requests.\n * This is used when there is multi-account support enabled in the Nylas Identity settings.\n *\n * @param grantId\n */\n setActiveGrantId(grantId: string) {\n this.activeGrantId = grantId;\n }\n\n /**\n * This method makes a request to the Nylas API, using the Nylas Identity's fetch method.\n *\n * The `grants/me/` prefix is added because all requests made from the browser to the Nylas API\n * must be made on behalf of the currently logged in user with a valid access token.\n *\n * @param NylasRequestArgs\n * @returns Promise<[T | null, NylasErrorResponse['error'] | null]>\n */\n async request<T>({ method, path, body, headers }: NylasRequestArgs): Promise<DataResponseReturnType<T>> {\n try {\n const response = await this.session.fetch(`grants/me/${path}`, {\n method,\n headers: headers ? new Headers(headers) : undefined,\n body,\n ...(this.session.isMultiAccount() && this.activeGrantId ? { grant_id: this.activeGrantId } : {}),\n });\n\n // Sometimes the Nylas identity session fetch method returns undefined.\n // Possibly due to CORS issues. In this case, we throw an error.\n if (typeof response === 'undefined') {\n throw new Error('Response is undefined');\n }\n\n return dataResponse(response as T);\n } catch (error: any) {\n let errorMessage = String(error);\n if (String(error).includes('Access token not found')) {\n errorMessage = 'Session expired, please log in again. Redirecting...';\n setTimeout(() => {\n localStorage.removeItem('grant');\n localStorage.removeItem('user');\n window.location.reload();\n }, 1000);\n }\n return dataResponse(null as T, {\n message: errorMessage,\n });\n }\n }\n\n /**\n * This method returns the current (logged in) user's information.\n * If the user is not logged in, it returns null.\n * @returns Promise<User | null>\n */\n async currentUser(): Promise<User | null> {\n const grantId = this.session.isMultiAccount() ? this.activeGrantId : undefined;\n const idToken = await this.session.getProfile(grantId);\n // If the user is not logged in, we can't get the grant (no access token)\n if (await this.session.isLoggedIn()) {\n const grantResponse = await this.session.fetch(`grants/me`, {\n method: 'GET',\n ...(this.session.isMultiAccount() && this.activeGrantId ? { grant_id: this.activeGrantId } : {}),\n });\n const grant = grantResponse.data;\n\n if (!idToken || !grant) {\n return null;\n }\n\n const grantEmail = grant.email;\n return {\n id: idToken.sub,\n email: grantEmail,\n name: idToken.name,\n provider: idToken.provider,\n };\n }\n\n return null;\n }\n\n /**\n * This method returns the URL to redirect the user to for authentication.\n * @param authConfig authArgs\n * @returns Promise<string | undefined>\n */\n async authenticationUrl(authArgs?: AuthArgs): Promise<string | undefined> {\n const provider = authArgs?.provider || 'google';\n const defaultArgs = this.defaultAuthArgs.find(args => args.provider === provider);\n let args = defaultArgs || {};\n\n if (authArgs) {\n args = { ...args, ...authArgs };\n }\n return this.session.auth(args);\n }\n\n /**\n * This method sets the default authentication arguments to use when authenticating the user.\n * @param authArgs authArgs\n */\n setDefaultAuthArgs(authArgs: AuthArgs[]) {\n this.defaultAuthArgs = authArgs;\n }\n}\n"],"version":3}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { T as TextareaComponent$1, d as defineCustomElement$1 } from './p-
|
|
1
|
+
import { T as TextareaComponent$1, d as defineCustomElement$1 } from './p-CexYKlpc.js';
|
|
2
2
|
|
|
3
3
|
const TextareaComponent = TextareaComponent$1;
|
|
4
4
|
const defineCustomElement = defineCustomElement$1;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { T as TimePeriodSelector$1, d as defineCustomElement$1 } from './p-
|
|
1
|
+
import { T as TimePeriodSelector$1, d as defineCustomElement$1 } from './p-BvRLg-HQ.js';
|
|
2
2
|
|
|
3
3
|
const TimePeriodSelector = TimePeriodSelector$1;
|
|
4
4
|
const defineCustomElement = defineCustomElement$1;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { b as debug, h as isTestEnvironment, j as uniqueID, k as formatEventName } from './utils-
|
|
1
|
+
import { b as debug, h as isTestEnvironment, j as uniqueID, k as formatEventName } from './utils-B8iY7eY3.js';
|
|
2
2
|
|
|
3
3
|
class NylasAbstractProvider {
|
|
4
4
|
constructor(host, stores, automaticComponentRegistration = true, eventOverrides) {
|
|
@@ -297,6 +297,6 @@ class NylasBaseProvider extends NylasAbstractProvider {
|
|
|
297
297
|
}
|
|
298
298
|
|
|
299
299
|
export { NylasBaseProvider as N };
|
|
300
|
-
//# sourceMappingURL=abstract-provider-
|
|
300
|
+
//# sourceMappingURL=abstract-provider-X9hmEFLa.js.map
|
|
301
301
|
|
|
302
|
-
//# sourceMappingURL=abstract-provider-
|
|
302
|
+
//# sourceMappingURL=abstract-provider-X9hmEFLa.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstract-provider-CAByQ1yu.js","sources":["src/common/abstract-provider.ts"],"sourcesContent":["import { RegisteredComponent } from '@/common/register-component';\nimport { BaseNylasConnectorInterface } from '@/connector/connector-interface';\nimport { debug, formatEventName, uniqueID, isTestEnvironment } from '@/utils/utils';\nimport { ObservableMap } from '@stencil/store';\nimport { EventOverride } from './component-types';\nimport { HTMLStencilElement } from '@stencil/core/internal';\n\nexport type PropKey = string | number | symbol;\nexport type StoreKey = string;\nexport type StoreName<T> = keyof T;\nexport type StateKey = string;\nexport type ElementID = string;\nexport type PropStateRegistration = { elementId: ElementID; propKey: PropKey };\nexport type EventListenerRegistration = [HTMLElement, PropKey, (event: CustomEvent<any>) => Promise<void>];\n\nexport interface NylasProviderInterface<Stores extends Record<string, ObservableMap<any>>> {\n nylasConnector?: BaseNylasConnectorInterface;\n stores: Stores;\n host?: HTMLElement;\n automaticComponentRegistration: boolean;\n registeredComponents: Record<ElementID, RegisteredComponent<any, any>>;\n propStateRegistrations: Map<StoreName<this['stores']>, Map<StateKey, PropStateRegistration[]>>;\n eventListenerRegistrations: Map<ElementID, EventListenerRegistration[]>;\n componentWillLoad(nylasConnector: BaseNylasConnectorInterface): Promise<void>;\n componentDidLoad(): Promise<void>;\n componentDisconnected(): Promise<void>;\n getStore<K extends keyof ThisType<this['stores']>>(name: K): ThisType<this['stores']>[K];\n registerComponent(component: RegisteredComponent<any, any>): void;\n unregisterComponent(component: RegisteredComponent<any, any>): void;\n}\n\nexport abstract class NylasAbstractProvider<Stores extends Record<string, ObservableMap<any>>> implements NylasProviderInterface<Stores> {\n /**\n * The NylasConnector instance.\n * This is used to provide access to the NylasConnector instance to all components.\n */\n public nylasConnector?: BaseNylasConnectorInterface;\n\n /**\n * A list of stores that are used by the provider.\n * This is used to provide access to the stores to all components.\n */\n public stores: Stores;\n\n /**\n * The host element.\n * Used to manage the host element of the provider.\n */\n public host!: HTMLElement;\n\n /**\n * Automatically register components that have the `@RegisterComponent` decorator.\n * If this is set to false, you will need to manually register components using the\n * `registerComponent` method.\n * @default true\n */\n public automaticComponentRegistration: boolean = true;\n\n /**\n * A list of registered components that are listening for store changes.\n * Each component is registered with a unique id so that we can easily track the component\n * for various other operations (see `propStateRegistrations` and `eventListenerRegistrations`).\n */\n public registeredComponents: Record<ElementID, RegisteredComponent<any, any>> = {};\n\n /**\n * A list of registered components that are listening for store changes.\n * To make lookups more efficient, we use a Map of our prop registrations that we need to map to differnet\n * state keys. When a component is unregistered, we can use this map to remove the prop registration.\n */\n public propStateRegistrations: Map<StoreName<this['stores']>, Map<StateKey, PropStateRegistration[]>> = new Map();\n\n /**\n * A list of registered event listeners.\n * To make lookups more efficient, we use a Map of our event listeners that we need to map to differnet\n * nylas connector methods. When a component is unregistered, we can use this map to remove the event listener.\n */\n public eventListenerRegistrations: Map<ElementID, EventListenerRegistration[]> = new Map();\n\n /**\n * A list of event overrides that are used by the provider.\n * This is used to provide an easy way to override the default function of the event emitter.\n * An example of this is the `timeslotConfirmed` event. By default, this event will set the scheduler store state for `showBookingForm` to `true` which will\n * show the booking form. However, if you want to override this behavior, you can pass in the prop `eventOverride` like:\n * ```html\n * <nylas-scheduler eventOverride={{\"timeslotConfirmed\": (event, nylasConnector) => { console.log(\"Timeslot confirmed event fired!\"); } }} />\n * ```\n */\n public eventOverrides: EventOverride<Exclude<BaseNylasConnectorInterface, undefined>>;\n\n /**\n * The constructor for the AbstractNylasProvider.\n * @param host The host element (usually the HTMLElement of the provider)\n * @param stores A list of stores that are used by the provider\n * @param automaticComponentRegistration A boolean that determines if components should be automatically registered\n * @param eventOverrides A list of event overrides that are used by the provider\n */\n constructor(host: HTMLElement, stores: Stores, automaticComponentRegistration: boolean = true, eventOverrides: EventOverride<any>) {\n this.host = host;\n this.stores = stores;\n this.automaticComponentRegistration = automaticComponentRegistration;\n this.eventOverrides = eventOverrides;\n\n debug(`[${this.hostTagName}] Initializing (abstract) provider.`, { eventOverrides });\n\n this.registerComponent = this.registerComponent.bind(this);\n this.getStore = this.getStore.bind(this);\n\n // Init propStateRegistrations with store names\n Object.keys(this.stores).forEach(storeName => {\n this.propStateRegistrations.set(storeName, new Map());\n });\n }\n\n /**\n * This method is called before the component is loaded.\n * We're passing the NylasConnector instance to the provider so that we can\n * provide access to the NylasConnector instance to all components.\n *\n * However, because the NylasConnector is often constructed after the component's\n * constructor is called, set the NylasConnector instance here.\n * @param nylasConnector The NylasConnector instance\n */\n async componentWillLoad(nylasConnector: BaseNylasConnectorInterface) {\n debug(`[${this.hostTagName}] Will load`);\n\n // For each of our stores, configure the listeners for changes in the\n // store state.\n this.setupStoreListeners();\n\n // Set the NylasConnector instance\n this.nylasConnector = nylasConnector;\n\n /**\n * This is a very static way of registering components, but it happens fairly\n * early in the component lifecycle, so it can be beneficial to do it here.\n *\n * The big downside to this is that it will not pick up any components that\n * are dynamically added to the DOM after this method is called.\n *\n * So we should evaluate if this is the best way to register components.\n */\n const childComponents = Array.from(this.host.querySelectorAll('*')).filter(child => child.tagName.toLowerCase().startsWith('nylas-'));\n debug(`[${this.hostTagName}] Found ${childComponents.length} child component(s).`, { childComponents });\n\n const registrations = childComponents.map(async child => {\n const component = child as any; // It unfortunately makes life a whole lot easier to just cast this to any\n if (!component) {\n debug(`[~${this.hostTagName}] (componentWillLoad) Component ${component.tagName} does not have a name. Skipping.`);\n return;\n }\n\n // Skip components that don't have the `registerNylasComponent` prop\n if (!component.registerNylasComponent) {\n debug(`[~${this.hostTagName}] (componentWillLoad) Component ${component.tagName} is not a component that can be registered. Skipping.`, { component });\n return;\n }\n\n const registeredComponent: RegisteredComponent<any, any> = {\n element: component as HTMLStencilElement,\n name: component.tagName.toLowerCase(),\n getStoresToProp: component.getStoresToProp,\n storeToProps: component.storeToProps,\n stateToProps: component.stateToProps,\n authToProp: component.authToProp,\n eventToProps: component.eventToProps,\n connectorToProp: component.connectorToProp,\n localPropsToProp: component.localPropsToProp,\n };\n\n await this.registerComponent(registeredComponent);\n });\n\n await Promise.all(registrations);\n }\n\n /**\n * This method is called after the component is loaded.\n * We're using this method to add event listeners to the host element.\n */\n async componentDidLoad() {\n debug(`[~${this.hostTagName}] (componentDidLoad) Did load`);\n }\n\n /**\n * This method is called when the component is disconnected from the DOM.\n * We're using this method to dispose of the stores.\n */\n async componentDisconnected() {\n // Loop through each store and and dispose\n Object.values(this.stores).forEach(store => {\n store.dispose();\n });\n }\n\n /**\n * This is a custom event handler that is used to register a component with the provider.\n * It is used by components that have the `@RegisterComponent` decorator.\n * @param event A custom event that contains the component to register\n * @returns Promise<void>\n */\n async registerComponentHandler(event: CustomEvent<RegisteredComponent<any, any>>): Promise<void> {\n event.stopPropagation();\n\n if (!this.automaticComponentRegistration) {\n debug(`~[${this.hostTagName}] (registerComponentHandler) Automatic component registration disabled. Skipping registration of ${event.detail.name}.`);\n return;\n }\n\n await this.registerComponent(event.detail);\n }\n\n /**\n * This is a custom event handler that is used to unregister a component with the provider.\n * It is used by components that have the `@RegisterComponent` decorator.\n * @param event A custom event that contains the component to unregister\n * @returns Promise<void>\n */\n async unregisterComponentHandler(event: CustomEvent<RegisteredComponent<any, any>>): Promise<void> {\n event.stopPropagation();\n\n if (!this.automaticComponentRegistration) {\n debug(`~[${this.hostTagName}] (unregisterComponentHandler) Automatic component registration disabled. Skipping unregistration of ${event.detail.name}.`);\n return;\n }\n\n this.unregisterComponent(event.detail);\n }\n\n /**\n * This method is used to register a component with the provider\n * @param component component to register\n * @returns void\n */\n public async registerComponent(component: RegisteredComponent<any, any>): Promise<void> {\n debug(`~[${this.hostTagName}] (registerComponent) Registering component ${component.name}.`);\n\n // Get component element id\n const elementId = component.element.dataset.nylasId;\n const isReregistration = elementId && this.registeredComponents[elementId];\n\n // If this is a re-registration, clean up previous registrations first\n if (isReregistration) {\n debug(`[${this.hostTagName}] (registerComponent) Component ${component.name} already registered. Updating registration.`);\n // Clean up event listeners but keep the component ID\n this.cleanupComponentRegistration(elementId, false);\n } else {\n // Set a deterministic data id in tests, otherwise a random id\n const deterministicId = isTestEnvironment() ? this.computeDeterministicId(component.element as HTMLElement) : undefined;\n component.element.dataset.nylasId = elementId || deterministicId || uniqueID();\n }\n\n // Register/update the component to ensure the component is tracked even while waiting for definition\n const nylasId = component.element.dataset.nylasId;\n if (nylasId) {\n this.registeredComponents[nylasId] = component;\n }\n\n // Wait for the component to be defined in the custom elements registry before we attempt to\n // complete the component registration. While this means that the component will not be loaded with\n // props immediately, it does ensure that when we do set the props, the component is ready to receive them.\n debug(`[${this.hostTagName}] (registerComponent) Waiting for \"${component.element.localName}\" component to be defined`, { component });\n try {\n await customElements.whenDefined(component.element.tagName.toLowerCase());\n debug(`[${this.hostTagName}] (registerComponent) Component \"${component.element.localName}\" is now defined`);\n } catch (error) {\n debug(`[${this.hostTagName}] (registerComponent) Error waiting for component \"${component.element.localName}\" to be defined:`, error);\n // Continue with registration anyway, as the component might be defined later\n }\n\n const eventOverrides = this.eventOverrides;\n const { stateToProps, getStoresToProp, eventToProps, storeToProps, connectorToProp, localPropsToProp, element } = component;\n\n /**\n * We allow components to map an event to a prop. These events can automatically\n * call a method on the nylasConnector instance.\n */\n eventToProps?.forEach((customEventHandler, propKey) => {\n const nylasConnector = this.nylasConnector;\n const handler = async (event: CustomEvent<any>) => {\n debug(`[${this.hostTagName}] (registerComponent) Handling \"${component.name}\" prop \"${String(propKey)}\" event.`, { event });\n if (propKey in eventOverrides) {\n debug(`[${this.hostTagName}] (registerComponent) Found event override for \"${String(propKey)}\" event. Calling override.`);\n await eventOverrides[propKey](event, nylasConnector);\n }\n\n if (!event.defaultPrevented) {\n await customEventHandler(event, nylasConnector);\n }\n\n return;\n };\n\n const elementId = component.element.dataset.nylasId;\n\n if (elementId && !this.eventListenerRegistrations.has(elementId)) {\n this.eventListenerRegistrations.set(elementId, []);\n }\n\n if (elementId) {\n this.eventListenerRegistrations.get(elementId)?.push([element, propKey, handler]);\n }\n\n debug(`[${this.hostTagName}] (registerComponent) Setting \"${component.name}\" event \"${String(propKey)}\" to automcially call NylasConnector method.`);\n\n // We should immediately call the event handler to make sure the prop is set\n const eventName = formatEventName(propKey.toString());\n debug(`[${this.hostTagName}] (registerComponent) Adding event listener for \"${eventName}\" on \"${element.tagName}\"`);\n element.addEventListener(eventName, handler as unknown as EventListener);\n });\n\n /**\n * This is a rather simple way for us to set the initial props for a component.\n * For each prop, we check if the prop is mapped to a store. If it is, we set\n * the prop to the store value.\n */\n stateToProps?.forEach((propKey, stateKey) => {\n const [storeName, stateName] = stateKey.split('.');\n const store = this.getStore(storeName as keyof typeof this.stores);\n const stateValue = store.state[stateName as keyof typeof store.state];\n\n // Make sure this component was registered and has a nylasId\n if (!element.dataset.nylasId) {\n debug(`[${this.hostTagName}] (registerComponent) Component \"${component.name}\" not registered. Skipping.`, { component });\n return;\n }\n\n // We need to keep track of the store and prop key so that we can update the\n // prop when the store changes\n if (!this.propStateRegistrations.has(storeName as keyof typeof this.stores)) {\n this.propStateRegistrations.set(storeName as keyof typeof this.stores, new Map());\n }\n\n if (!this.propStateRegistrations.get(storeName as keyof typeof this.stores)?.has(stateName)) {\n this.propStateRegistrations.get(storeName as keyof typeof this.stores)?.set(stateName, [\n {\n elementId: element.dataset.nylasId,\n propKey,\n },\n ]);\n } else {\n this.propStateRegistrations\n .get(storeName as keyof typeof this.stores)\n ?.get(stateName)\n ?.push({\n elementId: element.dataset.nylasId,\n propKey,\n });\n }\n\n // Set the prop value on the component\n (element as { [key: string]: any })[propKey.toString()] = stateValue;\n debug(`[${this.hostTagName}] Setting \"${component.name}\" prop \"${propKey.toString()}\" to \"${stateKey}\" value.`, { stateValue });\n });\n\n /**\n * We allow components to also map props from the provider to the component.\n */\n localPropsToProp?.forEach((propKey, value) => {\n const mappedPropValue = this.host[value]; // TODO: Is this safe? We should find a way to only limit it to public properties and no methods.\n (element as { [key: string]: any })[propKey.toString()] = mappedPropValue;\n debug(`[${this.hostTagName}] Setting \"${component.name}\" prop \"${propKey.toString()}\" to the value of \"${value}\" value.`, { value, mappedPropValue });\n });\n\n /**\n * We allow components to access the getStore method directly.\n */\n if (getStoresToProp) {\n (element as { [key: string]: any })[getStoresToProp?.toString()] = this.getStore;\n debug(`[${this.hostTagName}] Setting \"${component.name}\" prop \"${getStoresToProp.toString()}\" to \"getStore\" method.`);\n }\n\n /**\n * We allow components to map a store to a prop for direct access.\n */\n storeToProps?.forEach((propKey, storeKey) => {\n const store = this.getStore(storeKey);\n (element as { [key: string]: any })[propKey.toString()] = store;\n debug(`[${this.hostTagName}] Setting \"${component.name}\" prop \"${propKey.toString()}\" to \"${storeKey}\" store.`, { store });\n });\n\n /**\n * We allow components to map the NylasConnector instance to a prop for direct access.\n */\n if (connectorToProp) {\n (element as { [key: string]: any })[connectorToProp?.toString()] = this.nylasConnector;\n debug(`[${this.hostTagName}] Setting \"${component.name}\" prop \"${connectorToProp.toString()}\" to \"nylasConnector\" value.`, { connectorToProp });\n }\n\n /**\n * We allow components to fire an event when they are registered.\n */\n if (typeof element.registerCallback === 'function') {\n debug(`[${this.hostTagName}] (registerComponent) Calling registerCallback method for \"${component.name}\".`);\n await element.registerCallback();\n }\n\n debug(`[${this.hostTagName}] (registerComponent) Component ${component.name} registered.`);\n }\n\n /**\n * Compute a deterministic nylas id for an element during tests.\n * Preference order:\n * - existing element id attribute\n * - existing element name attribute\n * - <tag>-<indexWithinHostOfSameTag>\n */\n private computeDeterministicId(element: HTMLElement): string {\n const idAttr = element.getAttribute('id');\n if (idAttr && idAttr.trim().length > 0) return idAttr.trim();\n\n const nameAttr = element.getAttribute('name');\n if (nameAttr && nameAttr.trim().length > 0) return nameAttr.trim();\n\n const tag = element.tagName.toLowerCase();\n try {\n const siblingsSameTag = Array.from(this.host?.querySelectorAll(tag) || []) as HTMLElement[];\n const idx = siblingsSameTag.indexOf(element);\n const indexOneBased = idx >= 0 ? idx + 1 : siblingsSameTag.length + 1;\n return `${tag}-${indexOneBased}`;\n } catch (_e) {\n return `${tag}-1`;\n }\n }\n\n /**\n * Cleans up registrations for a component without fully unregistering it\n * @param elementId The ID of the element to clean up\n * @param removeFromRegistry Whether to remove the component from the registry\n */\n private cleanupComponentRegistration(elementId: string, removeFromRegistry: boolean = true): void {\n // Remove event listeners\n const eventListenerRegistrations = this.eventListenerRegistrations.get(elementId);\n if (eventListenerRegistrations) {\n eventListenerRegistrations.forEach(([element, propKey, handler]) => {\n const eventName = formatEventName(propKey.toString());\n debug(`[${this.hostTagName}] (cleanupComponentRegistration) Removing event listener for \"${eventName}\" on \"${element.tagName}\"`);\n element.removeEventListener(eventName, handler as unknown as EventListener);\n });\n this.eventListenerRegistrations.delete(elementId);\n }\n\n // Clean up prop state registrations\n this.propStateRegistrations.forEach((stateToProps, storeName) => {\n stateToProps.forEach((props, stateKey) => {\n const filteredProps = props.filter(prop => prop.elementId !== elementId);\n if (filteredProps.length !== props.length) {\n this.propStateRegistrations.get(storeName)?.set(stateKey, filteredProps);\n }\n });\n });\n\n // Remove from registry if requested\n if (removeFromRegistry) {\n delete this.registeredComponents[elementId];\n }\n }\n\n /**\n * This is a method that is used to unregister a component with the provider.\n * @param component HTMLElement to unregister\n * @returns void\n */\n public unregisterComponent(component: RegisteredComponent<any, any>): void {\n debug(`[${this.hostTagName}] Unregistering component ${component.name}.`);\n\n // Get component element id\n const elementId = component.element.dataset.nylasId;\n if (!elementId) {\n debug(`[${this.hostTagName}] (unregisterComponent) Unregistering component ${component.name}.`);\n return;\n }\n\n // Make sure the component is not already registered\n if (this.registeredComponents[elementId]) {\n debug(`[${this.hostTagName}] (unregisterComponent) Component ${component.name} not registered. Skipping.`);\n return;\n }\n\n // Remove the component prop registration from propStateRegistrations\n this.propStateRegistrations.forEach((stateToProps, storeName) => {\n stateToProps.forEach((_, stateKey) => {\n const props = this.propStateRegistrations.get(storeName)?.get(stateKey);\n const filteredProps = props?.filter(prop => prop.elementId !== elementId);\n if (filteredProps) {\n this.propStateRegistrations.get(storeName)?.set(stateKey, filteredProps);\n }\n });\n });\n\n // Before we unregister the component, we need to remove any event listeners\n const eventListenerRegistrations = this.eventListenerRegistrations.get(elementId);\n eventListenerRegistrations?.forEach(([element, propKey, handler]) => {\n const eventName = formatEventName(propKey.toString());\n debug(`[${this.hostTagName}] (unregisterComponent) Removing event listener for \"${eventName}\" on \"${element.tagName}\"`);\n element.removeEventListener(eventName, handler as unknown as EventListener);\n });\n\n // Unregister the component\n delete this.registeredComponents[elementId];\n }\n\n /**\n * This method is used to dynamically retrieve the appropriate store\n * @param name store name\n */\n public getStore<K extends keyof Stores>(name: K): Stores[K] {\n const store = this.stores[name];\n if (!store) {\n throw new Error(`[${this.hostTagName}] Store \"${name.toString()}\" not found.`);\n }\n return store;\n }\n\n /**\n * This method is called when the component is connected to the DOM.\n * We're using this method to listen for changes in the store and update\n * the registered components with the new values.\n */\n private async setupStoreListeners() {\n const self = this;\n\n /**\n * This is a rather simple way for us to listen for changes in the store\n * and make sure our registered components are updated with the new values.\n *\n * For each store change, we loop through each registered component and\n * check if the store change is mapped to a prop on the component. If it is,\n * we set the prop to the new value.\n *\n * We call this super early in the provider lifecycle so that we can make sure\n * that all components have the correct props before they are rendered.\n */\n Object.entries(this.stores).forEach(([storeName, store]) => {\n debug(`[${self.hostTagName}] (setupStoreListeners) Listening for changes in \"${storeName}\" store.`);\n store.use({\n set(stateKey, newValue, oldValue) {\n debug(`[${self.hostTagName}] (setupStoreListeners) Store \"${storeName}\" state \"${stateKey.toString()}\" changed`, { newValue, oldValue });\n if (newValue === oldValue) {\n debug(`[${self.hostTagName}] (setupStoreListeners) Store \"${storeName}\" state \"${stateKey.toString()}\" unchanged. Skipping.`);\n return;\n }\n\n const registeredComponents = self.registeredComponents;\n if (!registeredComponents) {\n debug(`[${self.hostTagName}] (setupStoreListeners) No registered components found. Skipping.`);\n return;\n }\n\n // Get our prop registrations for this store\n const props = self.propStateRegistrations.get(storeName as keyof typeof self.stores as string)?.get(stateKey.toString()) || [];\n debug(`[${self.hostTagName}] (setupStoreListeners) Found ${props.length} prop(s) registered for \"${stateKey.toString()}\" store.`, {\n props,\n propStateRegistrations: self.propStateRegistrations,\n });\n\n // Loop through each registered component and update the prop\n props.forEach(({ elementId, propKey }) => {\n const component = registeredComponents[elementId];\n if (!component) {\n debug(`[${self.hostTagName}] (setupStoreListeners) Component \"${elementId}\" not found. Skipping.`, { component });\n return;\n }\n\n // Get the appropriate store\n const loadedStore = self.getStore(storeName as keyof typeof self.stores as string);\n const stateValue = loadedStore.state[stateKey as unknown as keyof typeof loadedStore.state];\n (component.element as { [key: string]: any })[propKey.toString()] = stateValue;\n debug(`[${self.hostTagName}] (setupStoreListeners) Setting \"${component.name}\" prop \"${propKey.toString()}\" to \"${stateKey.toString()}\" value.`, { stateValue });\n });\n },\n });\n });\n }\n\n /**\n * Simple getter for the host element tag name.\n */\n private get hostTagName(): string {\n return this.host?.tagName?.toLowerCase() ?? 'nylas-provider';\n }\n}\n\nexport class NylasBaseProvider<T extends Record<string, ObservableMap<any>>> extends NylasAbstractProvider<T> {}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"abstract-provider-X9hmEFLa.js","sources":["src/common/abstract-provider.ts"],"sourcesContent":["import { RegisteredComponent } from '@/common/register-component';\nimport { BaseNylasConnectorInterface } from '@/connector/connector-interface';\nimport { debug, formatEventName, uniqueID, isTestEnvironment } from '@/utils/utils';\nimport { ObservableMap } from '@stencil/store';\nimport { EventOverride } from './component-types';\nimport { HTMLStencilElement } from '@stencil/core/internal';\n\nexport type PropKey = string | number | symbol;\nexport type StoreKey = string;\nexport type StoreName<T> = keyof T;\nexport type StateKey = string;\nexport type ElementID = string;\nexport type PropStateRegistration = { elementId: ElementID; propKey: PropKey };\nexport type EventListenerRegistration = [HTMLElement, PropKey, (event: CustomEvent<any>) => Promise<void>];\n\nexport interface NylasProviderInterface<Stores extends Record<string, ObservableMap<any>>> {\n nylasConnector?: BaseNylasConnectorInterface;\n stores: Stores;\n host?: HTMLElement;\n automaticComponentRegistration: boolean;\n registeredComponents: Record<ElementID, RegisteredComponent<any, any>>;\n propStateRegistrations: Map<StoreName<this['stores']>, Map<StateKey, PropStateRegistration[]>>;\n eventListenerRegistrations: Map<ElementID, EventListenerRegistration[]>;\n componentWillLoad(nylasConnector: BaseNylasConnectorInterface): Promise<void>;\n componentDidLoad(): Promise<void>;\n componentDisconnected(): Promise<void>;\n getStore<K extends keyof ThisType<this['stores']>>(name: K): ThisType<this['stores']>[K];\n registerComponent(component: RegisteredComponent<any, any>): void;\n unregisterComponent(component: RegisteredComponent<any, any>): void;\n}\n\nexport abstract class NylasAbstractProvider<Stores extends Record<string, ObservableMap<any>>> implements NylasProviderInterface<Stores> {\n /**\n * The NylasConnector instance.\n * This is used to provide access to the NylasConnector instance to all components.\n */\n public nylasConnector?: BaseNylasConnectorInterface;\n\n /**\n * A list of stores that are used by the provider.\n * This is used to provide access to the stores to all components.\n */\n public stores: Stores;\n\n /**\n * The host element.\n * Used to manage the host element of the provider.\n */\n public host!: HTMLElement;\n\n /**\n * Automatically register components that have the `@RegisterComponent` decorator.\n * If this is set to false, you will need to manually register components using the\n * `registerComponent` method.\n * @default true\n */\n public automaticComponentRegistration: boolean = true;\n\n /**\n * A list of registered components that are listening for store changes.\n * Each component is registered with a unique id so that we can easily track the component\n * for various other operations (see `propStateRegistrations` and `eventListenerRegistrations`).\n */\n public registeredComponents: Record<ElementID, RegisteredComponent<any, any>> = {};\n\n /**\n * A list of registered components that are listening for store changes.\n * To make lookups more efficient, we use a Map of our prop registrations that we need to map to differnet\n * state keys. When a component is unregistered, we can use this map to remove the prop registration.\n */\n public propStateRegistrations: Map<StoreName<this['stores']>, Map<StateKey, PropStateRegistration[]>> = new Map();\n\n /**\n * A list of registered event listeners.\n * To make lookups more efficient, we use a Map of our event listeners that we need to map to differnet\n * nylas connector methods. When a component is unregistered, we can use this map to remove the event listener.\n */\n public eventListenerRegistrations: Map<ElementID, EventListenerRegistration[]> = new Map();\n\n /**\n * A list of event overrides that are used by the provider.\n * This is used to provide an easy way to override the default function of the event emitter.\n * An example of this is the `timeslotConfirmed` event. By default, this event will set the scheduler store state for `showBookingForm` to `true` which will\n * show the booking form. However, if you want to override this behavior, you can pass in the prop `eventOverride` like:\n * ```html\n * <nylas-scheduler eventOverride={{\"timeslotConfirmed\": (event, nylasConnector) => { console.log(\"Timeslot confirmed event fired!\"); } }} />\n * ```\n */\n public eventOverrides: EventOverride<Exclude<BaseNylasConnectorInterface, undefined>>;\n\n /**\n * The constructor for the AbstractNylasProvider.\n * @param host The host element (usually the HTMLElement of the provider)\n * @param stores A list of stores that are used by the provider\n * @param automaticComponentRegistration A boolean that determines if components should be automatically registered\n * @param eventOverrides A list of event overrides that are used by the provider\n */\n constructor(host: HTMLElement, stores: Stores, automaticComponentRegistration: boolean = true, eventOverrides: EventOverride<any>) {\n this.host = host;\n this.stores = stores;\n this.automaticComponentRegistration = automaticComponentRegistration;\n this.eventOverrides = eventOverrides;\n\n debug(`[${this.hostTagName}] Initializing (abstract) provider.`, { eventOverrides });\n\n this.registerComponent = this.registerComponent.bind(this);\n this.getStore = this.getStore.bind(this);\n\n // Init propStateRegistrations with store names\n Object.keys(this.stores).forEach(storeName => {\n this.propStateRegistrations.set(storeName, new Map());\n });\n }\n\n /**\n * This method is called before the component is loaded.\n * We're passing the NylasConnector instance to the provider so that we can\n * provide access to the NylasConnector instance to all components.\n *\n * However, because the NylasConnector is often constructed after the component's\n * constructor is called, set the NylasConnector instance here.\n * @param nylasConnector The NylasConnector instance\n */\n async componentWillLoad(nylasConnector: BaseNylasConnectorInterface) {\n debug(`[${this.hostTagName}] Will load`);\n\n // For each of our stores, configure the listeners for changes in the\n // store state.\n this.setupStoreListeners();\n\n // Set the NylasConnector instance\n this.nylasConnector = nylasConnector;\n\n /**\n * This is a very static way of registering components, but it happens fairly\n * early in the component lifecycle, so it can be beneficial to do it here.\n *\n * The big downside to this is that it will not pick up any components that\n * are dynamically added to the DOM after this method is called.\n *\n * So we should evaluate if this is the best way to register components.\n */\n const childComponents = Array.from(this.host.querySelectorAll('*')).filter(child => child.tagName.toLowerCase().startsWith('nylas-'));\n debug(`[${this.hostTagName}] Found ${childComponents.length} child component(s).`, { childComponents });\n\n const registrations = childComponents.map(async child => {\n const component = child as any; // It unfortunately makes life a whole lot easier to just cast this to any\n if (!component) {\n debug(`[~${this.hostTagName}] (componentWillLoad) Component ${component.tagName} does not have a name. Skipping.`);\n return;\n }\n\n // Skip components that don't have the `registerNylasComponent` prop\n if (!component.registerNylasComponent) {\n debug(`[~${this.hostTagName}] (componentWillLoad) Component ${component.tagName} is not a component that can be registered. Skipping.`, { component });\n return;\n }\n\n const registeredComponent: RegisteredComponent<any, any> = {\n element: component as HTMLStencilElement,\n name: component.tagName.toLowerCase(),\n getStoresToProp: component.getStoresToProp,\n storeToProps: component.storeToProps,\n stateToProps: component.stateToProps,\n authToProp: component.authToProp,\n eventToProps: component.eventToProps,\n connectorToProp: component.connectorToProp,\n localPropsToProp: component.localPropsToProp,\n };\n\n await this.registerComponent(registeredComponent);\n });\n\n await Promise.all(registrations);\n }\n\n /**\n * This method is called after the component is loaded.\n * We're using this method to add event listeners to the host element.\n */\n async componentDidLoad() {\n debug(`[~${this.hostTagName}] (componentDidLoad) Did load`);\n }\n\n /**\n * This method is called when the component is disconnected from the DOM.\n * We're using this method to dispose of the stores.\n */\n async componentDisconnected() {\n // Loop through each store and and dispose\n Object.values(this.stores).forEach(store => {\n store.dispose();\n });\n }\n\n /**\n * This is a custom event handler that is used to register a component with the provider.\n * It is used by components that have the `@RegisterComponent` decorator.\n * @param event A custom event that contains the component to register\n * @returns Promise<void>\n */\n async registerComponentHandler(event: CustomEvent<RegisteredComponent<any, any>>): Promise<void> {\n event.stopPropagation();\n\n if (!this.automaticComponentRegistration) {\n debug(`~[${this.hostTagName}] (registerComponentHandler) Automatic component registration disabled. Skipping registration of ${event.detail.name}.`);\n return;\n }\n\n await this.registerComponent(event.detail);\n }\n\n /**\n * This is a custom event handler that is used to unregister a component with the provider.\n * It is used by components that have the `@RegisterComponent` decorator.\n * @param event A custom event that contains the component to unregister\n * @returns Promise<void>\n */\n async unregisterComponentHandler(event: CustomEvent<RegisteredComponent<any, any>>): Promise<void> {\n event.stopPropagation();\n\n if (!this.automaticComponentRegistration) {\n debug(`~[${this.hostTagName}] (unregisterComponentHandler) Automatic component registration disabled. Skipping unregistration of ${event.detail.name}.`);\n return;\n }\n\n this.unregisterComponent(event.detail);\n }\n\n /**\n * This method is used to register a component with the provider\n * @param component component to register\n * @returns void\n */\n public async registerComponent(component: RegisteredComponent<any, any>): Promise<void> {\n debug(`~[${this.hostTagName}] (registerComponent) Registering component ${component.name}.`);\n\n // Get component element id\n const elementId = component.element.dataset.nylasId;\n const isReregistration = elementId && this.registeredComponents[elementId];\n\n // If this is a re-registration, clean up previous registrations first\n if (isReregistration) {\n debug(`[${this.hostTagName}] (registerComponent) Component ${component.name} already registered. Updating registration.`);\n // Clean up event listeners but keep the component ID\n this.cleanupComponentRegistration(elementId, false);\n } else {\n // Set a deterministic data id in tests, otherwise a random id\n const deterministicId = isTestEnvironment() ? this.computeDeterministicId(component.element as HTMLElement) : undefined;\n component.element.dataset.nylasId = elementId || deterministicId || uniqueID();\n }\n\n // Register/update the component to ensure the component is tracked even while waiting for definition\n const nylasId = component.element.dataset.nylasId;\n if (nylasId) {\n this.registeredComponents[nylasId] = component;\n }\n\n // Wait for the component to be defined in the custom elements registry before we attempt to\n // complete the component registration. While this means that the component will not be loaded with\n // props immediately, it does ensure that when we do set the props, the component is ready to receive them.\n debug(`[${this.hostTagName}] (registerComponent) Waiting for \"${component.element.localName}\" component to be defined`, { component });\n try {\n await customElements.whenDefined(component.element.tagName.toLowerCase());\n debug(`[${this.hostTagName}] (registerComponent) Component \"${component.element.localName}\" is now defined`);\n } catch (error) {\n debug(`[${this.hostTagName}] (registerComponent) Error waiting for component \"${component.element.localName}\" to be defined:`, error);\n // Continue with registration anyway, as the component might be defined later\n }\n\n const eventOverrides = this.eventOverrides;\n const { stateToProps, getStoresToProp, eventToProps, storeToProps, connectorToProp, localPropsToProp, element } = component;\n\n /**\n * We allow components to map an event to a prop. These events can automatically\n * call a method on the nylasConnector instance.\n */\n eventToProps?.forEach((customEventHandler, propKey) => {\n const nylasConnector = this.nylasConnector;\n const handler = async (event: CustomEvent<any>) => {\n debug(`[${this.hostTagName}] (registerComponent) Handling \"${component.name}\" prop \"${String(propKey)}\" event.`, { event });\n if (propKey in eventOverrides) {\n debug(`[${this.hostTagName}] (registerComponent) Found event override for \"${String(propKey)}\" event. Calling override.`);\n await eventOverrides[propKey](event, nylasConnector);\n }\n\n if (!event.defaultPrevented) {\n await customEventHandler(event, nylasConnector);\n }\n\n return;\n };\n\n const elementId = component.element.dataset.nylasId;\n\n if (elementId && !this.eventListenerRegistrations.has(elementId)) {\n this.eventListenerRegistrations.set(elementId, []);\n }\n\n if (elementId) {\n this.eventListenerRegistrations.get(elementId)?.push([element, propKey, handler]);\n }\n\n debug(`[${this.hostTagName}] (registerComponent) Setting \"${component.name}\" event \"${String(propKey)}\" to automcially call NylasConnector method.`);\n\n // We should immediately call the event handler to make sure the prop is set\n const eventName = formatEventName(propKey.toString());\n debug(`[${this.hostTagName}] (registerComponent) Adding event listener for \"${eventName}\" on \"${element.tagName}\"`);\n element.addEventListener(eventName, handler as unknown as EventListener);\n });\n\n /**\n * This is a rather simple way for us to set the initial props for a component.\n * For each prop, we check if the prop is mapped to a store. If it is, we set\n * the prop to the store value.\n */\n stateToProps?.forEach((propKey, stateKey) => {\n const [storeName, stateName] = stateKey.split('.');\n const store = this.getStore(storeName as keyof typeof this.stores);\n const stateValue = store.state[stateName as keyof typeof store.state];\n\n // Make sure this component was registered and has a nylasId\n if (!element.dataset.nylasId) {\n debug(`[${this.hostTagName}] (registerComponent) Component \"${component.name}\" not registered. Skipping.`, { component });\n return;\n }\n\n // We need to keep track of the store and prop key so that we can update the\n // prop when the store changes\n if (!this.propStateRegistrations.has(storeName as keyof typeof this.stores)) {\n this.propStateRegistrations.set(storeName as keyof typeof this.stores, new Map());\n }\n\n if (!this.propStateRegistrations.get(storeName as keyof typeof this.stores)?.has(stateName)) {\n this.propStateRegistrations.get(storeName as keyof typeof this.stores)?.set(stateName, [\n {\n elementId: element.dataset.nylasId,\n propKey,\n },\n ]);\n } else {\n this.propStateRegistrations\n .get(storeName as keyof typeof this.stores)\n ?.get(stateName)\n ?.push({\n elementId: element.dataset.nylasId,\n propKey,\n });\n }\n\n // Set the prop value on the component\n (element as { [key: string]: any })[propKey.toString()] = stateValue;\n debug(`[${this.hostTagName}] Setting \"${component.name}\" prop \"${propKey.toString()}\" to \"${stateKey}\" value.`, { stateValue });\n });\n\n /**\n * We allow components to also map props from the provider to the component.\n */\n localPropsToProp?.forEach((propKey, value) => {\n const mappedPropValue = this.host[value]; // TODO: Is this safe? We should find a way to only limit it to public properties and no methods.\n (element as { [key: string]: any })[propKey.toString()] = mappedPropValue;\n debug(`[${this.hostTagName}] Setting \"${component.name}\" prop \"${propKey.toString()}\" to the value of \"${value}\" value.`, { value, mappedPropValue });\n });\n\n /**\n * We allow components to access the getStore method directly.\n */\n if (getStoresToProp) {\n (element as { [key: string]: any })[getStoresToProp?.toString()] = this.getStore;\n debug(`[${this.hostTagName}] Setting \"${component.name}\" prop \"${getStoresToProp.toString()}\" to \"getStore\" method.`);\n }\n\n /**\n * We allow components to map a store to a prop for direct access.\n */\n storeToProps?.forEach((propKey, storeKey) => {\n const store = this.getStore(storeKey);\n (element as { [key: string]: any })[propKey.toString()] = store;\n debug(`[${this.hostTagName}] Setting \"${component.name}\" prop \"${propKey.toString()}\" to \"${storeKey}\" store.`, { store });\n });\n\n /**\n * We allow components to map the NylasConnector instance to a prop for direct access.\n */\n if (connectorToProp) {\n (element as { [key: string]: any })[connectorToProp?.toString()] = this.nylasConnector;\n debug(`[${this.hostTagName}] Setting \"${component.name}\" prop \"${connectorToProp.toString()}\" to \"nylasConnector\" value.`, { connectorToProp });\n }\n\n /**\n * We allow components to fire an event when they are registered.\n */\n if (typeof element.registerCallback === 'function') {\n debug(`[${this.hostTagName}] (registerComponent) Calling registerCallback method for \"${component.name}\".`);\n await element.registerCallback();\n }\n\n debug(`[${this.hostTagName}] (registerComponent) Component ${component.name} registered.`);\n }\n\n /**\n * Compute a deterministic nylas id for an element during tests.\n * Preference order:\n * - existing element id attribute\n * - existing element name attribute\n * - <tag>-<indexWithinHostOfSameTag>\n */\n private computeDeterministicId(element: HTMLElement): string {\n const idAttr = element.getAttribute('id');\n if (idAttr && idAttr.trim().length > 0) return idAttr.trim();\n\n const nameAttr = element.getAttribute('name');\n if (nameAttr && nameAttr.trim().length > 0) return nameAttr.trim();\n\n const tag = element.tagName.toLowerCase();\n try {\n const siblingsSameTag = Array.from(this.host?.querySelectorAll(tag) || []) as HTMLElement[];\n const idx = siblingsSameTag.indexOf(element);\n const indexOneBased = idx >= 0 ? idx + 1 : siblingsSameTag.length + 1;\n return `${tag}-${indexOneBased}`;\n } catch (_e) {\n return `${tag}-1`;\n }\n }\n\n /**\n * Cleans up registrations for a component without fully unregistering it\n * @param elementId The ID of the element to clean up\n * @param removeFromRegistry Whether to remove the component from the registry\n */\n private cleanupComponentRegistration(elementId: string, removeFromRegistry: boolean = true): void {\n // Remove event listeners\n const eventListenerRegistrations = this.eventListenerRegistrations.get(elementId);\n if (eventListenerRegistrations) {\n eventListenerRegistrations.forEach(([element, propKey, handler]) => {\n const eventName = formatEventName(propKey.toString());\n debug(`[${this.hostTagName}] (cleanupComponentRegistration) Removing event listener for \"${eventName}\" on \"${element.tagName}\"`);\n element.removeEventListener(eventName, handler as unknown as EventListener);\n });\n this.eventListenerRegistrations.delete(elementId);\n }\n\n // Clean up prop state registrations\n this.propStateRegistrations.forEach((stateToProps, storeName) => {\n stateToProps.forEach((props, stateKey) => {\n const filteredProps = props.filter(prop => prop.elementId !== elementId);\n if (filteredProps.length !== props.length) {\n this.propStateRegistrations.get(storeName)?.set(stateKey, filteredProps);\n }\n });\n });\n\n // Remove from registry if requested\n if (removeFromRegistry) {\n delete this.registeredComponents[elementId];\n }\n }\n\n /**\n * This is a method that is used to unregister a component with the provider.\n * @param component HTMLElement to unregister\n * @returns void\n */\n public unregisterComponent(component: RegisteredComponent<any, any>): void {\n debug(`[${this.hostTagName}] Unregistering component ${component.name}.`);\n\n // Get component element id\n const elementId = component.element.dataset.nylasId;\n if (!elementId) {\n debug(`[${this.hostTagName}] (unregisterComponent) Unregistering component ${component.name}.`);\n return;\n }\n\n // Make sure the component is not already registered\n if (this.registeredComponents[elementId]) {\n debug(`[${this.hostTagName}] (unregisterComponent) Component ${component.name} not registered. Skipping.`);\n return;\n }\n\n // Remove the component prop registration from propStateRegistrations\n this.propStateRegistrations.forEach((stateToProps, storeName) => {\n stateToProps.forEach((_, stateKey) => {\n const props = this.propStateRegistrations.get(storeName)?.get(stateKey);\n const filteredProps = props?.filter(prop => prop.elementId !== elementId);\n if (filteredProps) {\n this.propStateRegistrations.get(storeName)?.set(stateKey, filteredProps);\n }\n });\n });\n\n // Before we unregister the component, we need to remove any event listeners\n const eventListenerRegistrations = this.eventListenerRegistrations.get(elementId);\n eventListenerRegistrations?.forEach(([element, propKey, handler]) => {\n const eventName = formatEventName(propKey.toString());\n debug(`[${this.hostTagName}] (unregisterComponent) Removing event listener for \"${eventName}\" on \"${element.tagName}\"`);\n element.removeEventListener(eventName, handler as unknown as EventListener);\n });\n\n // Unregister the component\n delete this.registeredComponents[elementId];\n }\n\n /**\n * This method is used to dynamically retrieve the appropriate store\n * @param name store name\n */\n public getStore<K extends keyof Stores>(name: K): Stores[K] {\n const store = this.stores[name];\n if (!store) {\n throw new Error(`[${this.hostTagName}] Store \"${name.toString()}\" not found.`);\n }\n return store;\n }\n\n /**\n * This method is called when the component is connected to the DOM.\n * We're using this method to listen for changes in the store and update\n * the registered components with the new values.\n */\n private async setupStoreListeners() {\n const self = this;\n\n /**\n * This is a rather simple way for us to listen for changes in the store\n * and make sure our registered components are updated with the new values.\n *\n * For each store change, we loop through each registered component and\n * check if the store change is mapped to a prop on the component. If it is,\n * we set the prop to the new value.\n *\n * We call this super early in the provider lifecycle so that we can make sure\n * that all components have the correct props before they are rendered.\n */\n Object.entries(this.stores).forEach(([storeName, store]) => {\n debug(`[${self.hostTagName}] (setupStoreListeners) Listening for changes in \"${storeName}\" store.`);\n store.use({\n set(stateKey, newValue, oldValue) {\n debug(`[${self.hostTagName}] (setupStoreListeners) Store \"${storeName}\" state \"${stateKey.toString()}\" changed`, { newValue, oldValue });\n if (newValue === oldValue) {\n debug(`[${self.hostTagName}] (setupStoreListeners) Store \"${storeName}\" state \"${stateKey.toString()}\" unchanged. Skipping.`);\n return;\n }\n\n const registeredComponents = self.registeredComponents;\n if (!registeredComponents) {\n debug(`[${self.hostTagName}] (setupStoreListeners) No registered components found. Skipping.`);\n return;\n }\n\n // Get our prop registrations for this store\n const props = self.propStateRegistrations.get(storeName as keyof typeof self.stores as string)?.get(stateKey.toString()) || [];\n debug(`[${self.hostTagName}] (setupStoreListeners) Found ${props.length} prop(s) registered for \"${stateKey.toString()}\" store.`, {\n props,\n propStateRegistrations: self.propStateRegistrations,\n });\n\n // Loop through each registered component and update the prop\n props.forEach(({ elementId, propKey }) => {\n const component = registeredComponents[elementId];\n if (!component) {\n debug(`[${self.hostTagName}] (setupStoreListeners) Component \"${elementId}\" not found. Skipping.`, { component });\n return;\n }\n\n // Get the appropriate store\n const loadedStore = self.getStore(storeName as keyof typeof self.stores as string);\n const stateValue = loadedStore.state[stateKey as unknown as keyof typeof loadedStore.state];\n (component.element as { [key: string]: any })[propKey.toString()] = stateValue;\n debug(`[${self.hostTagName}] (setupStoreListeners) Setting \"${component.name}\" prop \"${propKey.toString()}\" to \"${stateKey.toString()}\" value.`, { stateValue });\n });\n },\n });\n });\n }\n\n /**\n * Simple getter for the host element tag name.\n */\n private get hostTagName(): string {\n return this.host?.tagName?.toLowerCase() ?? 'nylas-provider';\n }\n}\n\nexport class NylasBaseProvider<T extends Record<string, ObservableMap<any>>> extends NylasAbstractProvider<T> {}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as registerInstance, h, c as createEvent, H as Host, a as getElement } from './index-0EQQA0nE.js';
|
|
2
|
-
import { R as RegisterComponent } from './register-component-
|
|
3
|
-
import { b as debug, i as instance, A as timeToMinutes, B as convertTo12HourFormat, C as convertTo24HourFormat, D as minutesToTime, E as isValidUrl, n as sanitize, F as checkForMissingSlots } from './utils-
|
|
2
|
+
import { R as RegisterComponent } from './register-component-BjlxxlMe.js';
|
|
3
|
+
import { b as debug, i as instance, A as timeToMinutes, B as convertTo12HourFormat, C as convertTo24HourFormat, D as minutesToTime, E as isValidUrl, n as sanitize, F as checkForMissingSlots } from './utils-B8iY7eY3.js';
|
|
4
4
|
import { D as DEFAULT_OPEN_HOURS, T as TIMEZONE_MAP, d as DEFAULT_FORM_FIELD_TYPES, F as FIELD_TYPES, L as LANGUAGE_CODE, a as LANGUAGE_MAP } from './constants-COJy29df.js';
|
|
5
5
|
|
|
6
6
|
const iconCss$9 = ".sc-calendar-agenda-fill-icon-h{display:flex}";
|
|
@@ -7900,7 +7900,7 @@ __decorate$2([
|
|
|
7900
7900
|
], NylasSchedulingMethod.prototype, "render", null);
|
|
7901
7901
|
NylasSchedulingMethod.style = nylasSchedulingMethodCss;
|
|
7902
7902
|
|
|
7903
|
-
const nylasSpecificTimeAvailabilityPickerCss = ":host{display:block;width:100%}.nylas-specific-time-availability-picker{display:flex;margin:1rem;flex-direction:column;border-radius:var(--nylas-border-radius-2x);border:1px solid var(--nylas-base-200)}.nylas-specific-time-availability-picker .content{padding:1.5rem;border-radius:var(--nylas-border-radius-2x);color:var(--nylas-base-900);font-size:16px;font-family:var(--nylas-font-family);background:var(--nylas-base-25);display:flex;flex-direction:column;gap:1.5rem}@media (max-width: 768px){.nylas-specific-time-availability-picker .content{padding:1rem;gap:1.25rem}}.nylas-specific-time-availability-picker .header{padding:1rem;border-bottom:1px solid var(--nylas-base-200)}.nylas-specific-time-availability-picker .header h3{margin:0;font-size:16px;font-weight:600;line-height:20px;color:var(--nylas-base-900);text-align:left}.nylas-specific-time-availability-picker .header p{margin:0.25rem 0 0 0;font-size:0.875rem;font-weight:400;line-height:20px;color:var(--nylas-base-600);text-align:left;display:flex;align-items:center;gap:4px}.nylas-specific-time-availability-picker .timezone-selector{display:flex;flex-direction:column;gap:0.75rem;padding:1.25rem;background:var(--nylas-base-0);border:1px solid var(--nylas-base-200);border-radius:var(--nylas-border-radius)}@media (max-width: 768px){.nylas-specific-time-availability-picker .timezone-selector{padding:1rem}}.nylas-specific-time-availability-picker .timezone-selector .sub-header{margin:0;font-size:0.9375rem;font-weight:600;line-height:1.5;color:var(--nylas-base-900)}.nylas-specific-time-availability-picker .timezone-selector .timezone-description{margin:0;font-size:0.8125rem;line-height:1.5;color:var(--nylas-base-600)}.nylas-specific-time-availability-picker .timezone-selector select-dropdown{margin-top:0.25rem}.nylas-specific-time-availability-picker .timezone-selector .timezone-error{margin-top:0.5rem}.nylas-specific-time-availability-picker .specific-times-section{display:flex;flex-direction:column;gap:1rem}.nylas-specific-time-availability-picker .specific-times-section .section-header{margin:0 0 0.5rem 0;font-size:0.9375rem;font-weight:600;line-height:1.5;color:var(--nylas-base-900)}.nylas-specific-time-availability-picker .specific-times-section .section-description{margin:0 0 1rem 0;font-size:0.8125rem;line-height:1.5;color:var(--nylas-base-600)}.nylas-specific-time-availability-picker .specific-times{display:flex;flex-direction:column;gap:0.75rem}.nylas-specific-time-availability-picker .empty-state{display:flex;flex-direction:column;align-items:center;padding:2rem 1rem;text-align:center}.nylas-specific-time-availability-picker .empty-state .empty-icon{margin-bottom:1.5rem;opacity:0.4;color:var(--nylas-base-400)}.nylas-specific-time-availability-picker .empty-state .empty-title{margin:0 0 0.5rem 0;font-size:1.125rem;font-weight:600;color:var(--nylas-base-700);line-height:1.5}.nylas-specific-time-availability-picker .empty-state .empty-subtitle{margin:0;font-size:0.875rem;color:var(--nylas-base-500);line-height:1.5;max-width:300px}.nylas-specific-time-availability-picker .specific-time-entry{display:flex;flex-direction:column;gap:0;padding:1rem;border:1px solid var(--nylas-base-200);border-radius:var(--nylas-border-radius);background:var(--nylas-base-0);transition:border-color 0.2s ease, box-shadow 0.2s ease}.nylas-specific-time-availability-picker .specific-time-entry:hover{border-color:var(--nylas-base-300)}.nylas-specific-time-availability-picker .specific-time-entry:focus-within{border-color:var(--nylas-primary);box-shadow:0 0 0 3px rgba(59, 130, 246, 0.1)}.nylas-specific-time-availability-picker .specific-time-entry .entry-content{display:grid;grid-template-columns:180px 1fr 48px 48px;gap:0.75rem;align-items:center}@media (max-width: 768px){.nylas-specific-time-availability-picker .specific-time-entry .entry-content{grid-template-areas:\"date date actions actions\" \"time_or_unavailable time_or_unavailable time_or_unavailable time_or_unavailable\";grid-template-columns:1fr auto auto;gap:0.75rem}}.nylas-specific-time-availability-picker .specific-time-entry .date-input-container{flex:0 0 auto}@media (max-width: 768px){.nylas-specific-time-availability-picker .specific-time-entry .date-input-container{grid-area:date}}.nylas-specific-time-availability-picker .specific-time-entry .date-input-container .date-input{width:100%}.nylas-specific-time-availability-picker .specific-time-entry .date-input-container nylas-date-component::part(ic__date){border:1px solid var(--nylas-base-200);height:48px;display:flex;align-items:center;border-radius:var(--nylas-border-radius);transition:border-color 0.2s ease, box-shadow 0.2s ease}.nylas-specific-time-availability-picker .specific-time-entry .date-input-container nylas-date-component::part(ic__date):focus-within{border-color:var(--nylas-primary);box-shadow:0 0 0 3px rgba(59, 130, 246, 0.1)}.nylas-specific-time-availability-picker .specific-time-entry .time-pickers{display:flex;align-items:center;gap:0.75rem;flex:1;min-width:0}@media (max-width: 768px){.nylas-specific-time-availability-picker .specific-time-entry .time-pickers{grid-area:time_or_unavailable}}.nylas-specific-time-availability-picker .specific-time-entry .time-pickers nylas-time-window-picker{flex:1;min-width:0}.nylas-specific-time-availability-picker .specific-time-entry .time-pickers .time-separator{font-size:0.875rem;color:var(--nylas-base-600);font-weight:500;flex-shrink:0;line-height:1;user-select:none}.nylas-specific-time-availability-picker .specific-time-entry .unavailable-text{flex:1;display:flex;align-items:center;padding:0 1rem;border-radius:var(--nylas-border-radius);background:var(--nylas-base-50);border:1px solid var(--nylas-base-200);min-height:48px}@media (max-width: 768px){.nylas-specific-time-availability-picker .specific-time-entry .unavailable-text{grid-area:time_or_unavailable}}.nylas-specific-time-availability-picker .specific-time-entry .unavailable-text .unavailable-label{font-size:0.875rem;color:var(--nylas-base-600);font-weight:500}.nylas-specific-time-availability-picker .specific-time-entry .action-buttons{display:flex;gap:0.5rem;align-items:center}@media (max-width: 768px){.nylas-specific-time-availability-picker .specific-time-entry .action-buttons{grid-area:actions;justify-self:end}}.nylas-specific-time-availability-picker .specific-time-entry .toggle-button{display:flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:1px solid var(--nylas-base-200);border-radius:var(--nylas-border-radius);background:var(--nylas-base-0);color:var(--nylas-base-500);cursor:pointer;transition:all 0.2s ease;flex-shrink:0}.nylas-specific-time-availability-picker .specific-time-entry .toggle-button:hover{background:var(--nylas-base-50);border-color:var(--nylas-primary);color:var(--nylas-primary)}.nylas-specific-time-availability-picker .specific-time-entry .toggle-button:focus{outline:none;border-color:var(--nylas-primary);box-shadow:0 0 0 3px rgba(59, 130, 246, 0.1)}.nylas-specific-time-availability-picker .specific-time-entry .toggle-button:active{background:var(--nylas-base-100)}.nylas-specific-time-availability-picker .specific-time-entry .toggle-button.unavailable{background:var(--nylas-error-50);border-color:var(--nylas-error-200);color:var(--nylas-error)}.nylas-specific-time-availability-picker .specific-time-entry .toggle-button.unavailable:hover{background:var(--nylas-error-100);border-color:var(--nylas-error)}.nylas-specific-time-availability-picker .specific-time-entry .remove-button{display:flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:1px solid var(--nylas-base-200);border-radius:var(--nylas-border-radius);background:var(--nylas-base-0);color:var(--nylas-base-400);cursor:pointer;transition:all 0.2s ease;flex-shrink:0}.nylas-specific-time-availability-picker .specific-time-entry .remove-button:hover{background:var(--nylas-error-50);border-color:var(--nylas-error-200);color:var(--nylas-error)}.nylas-specific-time-availability-picker .specific-time-entry .remove-button:focus{outline:none;border-color:var(--nylas-primary);box-shadow:0 0 0 3px rgba(59, 130, 246, 0.1)}.nylas-specific-time-availability-picker .specific-time-entry .remove-button:active{background:var(--nylas-error-100)}.nylas-specific-time-availability-picker .specific-time-entry .error-message{width:100%;padding:0.5rem 0.75rem;background:var(--nylas-error-50);color:var(--nylas-error);font-size:0.8125rem;line-height:1.5;border-radius:var(--nylas-border-radius);border:1px solid var(--nylas-error-200);margin-top:0.5rem;display:flex;align-items:center;gap:0.5rem}.nylas-specific-time-availability-picker .add-button-container{display:flex;justify-content:flex-start;margin-top:0.5rem}.nylas-specific-time-availability-picker .add-button-container button-component{width:100%}@media (max-width: 768px){.nylas-specific-time-availability-picker .add-button-container button-component{font-size:0.875rem}}::part(nstap__add-button){border:1px dashed var(--nylas-base-200);background:var(--nylas-base-0);color:var(--nylas-base-700)}::part(nstap__add-button):hover{border-color:var(--nylas-primary);background:var(--nylas-base-50);color:var(--nylas-primary)}::part(nstap__time-picker-container){flex:1;min-width:0}::part(nstap__time-picker-input){width:100%;font-size:0.875rem;min-height:48px;display:flex;align-items:center;border-radius:var(--nylas-border-radius)}::part(nstap__date-input){width:100%}::part(nstap__date-field){width:100%;font-size:0.875rem;border:1px solid var(--nylas-base-200);border-radius:var(--nylas-border-radius);padding:0.5rem 0.75rem}::part(nstap__date-field):focus{border-color:var(--nylas-primary);box-shadow:0 0 0 3px rgba(59, 130, 246, 0.1)}::part(nstap__date-wrapper){margin:0}::part(nstap__date-label){margin:0;padding:0}::part(nstap__date-label) p{display:none}";
|
|
7903
|
+
const nylasSpecificTimeAvailabilityPickerCss = ":host{display:block;width:100%}.nylas-specific-time-availability-picker{display:flex;margin:1rem;flex-direction:column;border-radius:var(--nylas-border-radius-2x);border:1px solid var(--nylas-base-200)}.nylas-specific-time-availability-picker .content{padding:1.5rem;border-radius:var(--nylas-border-radius-2x);color:var(--nylas-base-900);font-size:16px;font-family:var(--nylas-font-family);background:var(--nylas-base-25);display:flex;flex-direction:column;gap:1.5rem}@media (max-width: 768px){.nylas-specific-time-availability-picker .content{padding:1rem;gap:1.25rem}}.nylas-specific-time-availability-picker .header{padding:1rem;border-bottom:1px solid var(--nylas-base-200)}.nylas-specific-time-availability-picker .header h3{margin:0;font-size:16px;font-weight:600;line-height:20px;color:var(--nylas-base-900);text-align:left}.nylas-specific-time-availability-picker .header p{margin:0.25rem 0 0 0;font-size:0.875rem;font-weight:400;line-height:20px;color:var(--nylas-base-600);text-align:left;display:flex;align-items:center;gap:4px}.nylas-specific-time-availability-picker .timezone-selector{display:flex;flex-direction:column;gap:0.75rem;padding:1.25rem;background:var(--nylas-base-0);border:1px solid var(--nylas-base-200);border-radius:var(--nylas-border-radius)}@media (max-width: 768px){.nylas-specific-time-availability-picker .timezone-selector{padding:1rem}}.nylas-specific-time-availability-picker .timezone-selector .sub-header{margin:0;font-size:0.9375rem;font-weight:600;line-height:1.5;color:var(--nylas-base-900)}.nylas-specific-time-availability-picker .timezone-selector .timezone-description{margin:0;font-size:0.8125rem;line-height:1.5;color:var(--nylas-base-600)}.nylas-specific-time-availability-picker .timezone-selector select-dropdown{margin-top:0.25rem}.nylas-specific-time-availability-picker .timezone-selector .timezone-error{margin-top:0.5rem}.nylas-specific-time-availability-picker .specific-times-section{display:flex;flex-direction:column;gap:1rem;padding:1.25rem;background:var(--nylas-base-0);border:1px solid var(--nylas-base-200);border-radius:var(--nylas-border-radius)}.nylas-specific-time-availability-picker .specific-times-section .section-header{margin:0 0 0.5rem 0;font-size:0.9375rem;font-weight:600;line-height:1.5;color:var(--nylas-base-900)}.nylas-specific-time-availability-picker .specific-times-section .section-description{margin:0 0 1rem 0;font-size:0.8125rem;line-height:1.5;color:var(--nylas-base-600)}.nylas-specific-time-availability-picker .specific-times{display:flex;flex-direction:column;gap:0.75rem}.nylas-specific-time-availability-picker .empty-state{display:flex;flex-direction:column;align-items:center;padding:2rem 1rem;text-align:center}.nylas-specific-time-availability-picker .empty-state .empty-icon{margin-bottom:1.5rem;opacity:0.4;color:var(--nylas-base-400)}.nylas-specific-time-availability-picker .empty-state .empty-title{margin:0 0 0.5rem 0;font-size:1.125rem;font-weight:600;color:var(--nylas-base-700);line-height:1.5}.nylas-specific-time-availability-picker .empty-state .empty-subtitle{margin:0;font-size:0.875rem;color:var(--nylas-base-500);line-height:1.5;max-width:300px}.nylas-specific-time-availability-picker .specific-time-entry{display:flex;flex-direction:column;gap:0;padding:1rem;border:1px solid var(--nylas-base-200);border-radius:var(--nylas-border-radius);background:var(--nylas-base-0);transition:border-color 0.2s ease, box-shadow 0.2s ease}.nylas-specific-time-availability-picker .specific-time-entry:hover{border-color:var(--nylas-base-300)}.nylas-specific-time-availability-picker .specific-time-entry:focus-within{border-color:var(--nylas-primary);box-shadow:0 0 0 3px rgba(59, 130, 246, 0.1)}.nylas-specific-time-availability-picker .specific-time-entry .entry-content{display:grid;grid-template:1fr auto/auto 1fr;gap:0.75rem;align-items:center}@media (max-width: 768px){.nylas-specific-time-availability-picker .specific-time-entry .entry-content{grid-template:unset;grid-template-areas:\"date\" \"time_or_unavailable\" \"actions\";grid-template-columns:1fr auto auto;gap:0.75rem}}.nylas-specific-time-availability-picker .specific-time-entry .date-input-container{flex:0 0 auto}@media (max-width: 768px){.nylas-specific-time-availability-picker .specific-time-entry .date-input-container{grid-area:date}}.nylas-specific-time-availability-picker .specific-time-entry .date-input-container .date-input{width:100%}.nylas-specific-time-availability-picker .specific-time-entry .date-input-container nylas-date-component::part(ic__date){border:1px solid var(--nylas-base-200);height:48px;display:flex;align-items:center;border-radius:var(--nylas-border-radius);transition:border-color 0.2s ease, box-shadow 0.2s ease}.nylas-specific-time-availability-picker .specific-time-entry .date-input-container nylas-date-component::part(ic__date):focus-within{border-color:var(--nylas-primary);box-shadow:0 0 0 3px rgba(59, 130, 246, 0.1)}.nylas-specific-time-availability-picker .specific-time-entry .time-pickers{display:flex;align-items:center;gap:0.75rem;flex:1;min-width:0}@media (max-width: 768px){.nylas-specific-time-availability-picker .specific-time-entry .time-pickers{grid-area:time_or_unavailable}}.nylas-specific-time-availability-picker .specific-time-entry .time-pickers nylas-time-window-picker{flex:1;min-width:0}.nylas-specific-time-availability-picker .specific-time-entry .time-pickers .time-separator{font-size:0.875rem;color:var(--nylas-base-600);font-weight:500;flex-shrink:0;line-height:1;user-select:none}.nylas-specific-time-availability-picker .specific-time-entry .unavailable-text{flex:1;display:flex;align-items:center;padding:0 1rem;border-radius:var(--nylas-border-radius);background:var(--nylas-base-50);border:1px solid var(--nylas-base-200);min-height:48px}@media (max-width: 768px){.nylas-specific-time-availability-picker .specific-time-entry .unavailable-text{grid-area:time_or_unavailable}}.nylas-specific-time-availability-picker .specific-time-entry .unavailable-text .unavailable-label{font-size:0.875rem;color:var(--nylas-base-600);font-weight:500}.nylas-specific-time-availability-picker .specific-time-entry .action-buttons{display:flex;gap:0.5rem;align-items:center;grid-column:2;justify-content:end}@media (max-width: 768px){.nylas-specific-time-availability-picker .specific-time-entry .action-buttons{grid-area:actions;justify-self:end}}.nylas-specific-time-availability-picker .specific-time-entry .toggle-button{display:flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:1px solid var(--nylas-base-200);border-radius:var(--nylas-border-radius);background:var(--nylas-base-0);color:var(--nylas-base-500);cursor:pointer;transition:all 0.2s ease;flex-shrink:0}.nylas-specific-time-availability-picker .specific-time-entry .toggle-button:hover{background:var(--nylas-base-50);border-color:var(--nylas-primary);color:var(--nylas-primary)}.nylas-specific-time-availability-picker .specific-time-entry .toggle-button:focus{outline:none;border-color:var(--nylas-primary);box-shadow:0 0 0 3px rgba(59, 130, 246, 0.1)}.nylas-specific-time-availability-picker .specific-time-entry .toggle-button:active{background:var(--nylas-base-100)}.nylas-specific-time-availability-picker .specific-time-entry .toggle-button.unavailable{background:var(--nylas-error-50);border-color:var(--nylas-error-200);color:var(--nylas-error)}.nylas-specific-time-availability-picker .specific-time-entry .toggle-button.unavailable:hover{background:var(--nylas-error-100);border-color:var(--nylas-error)}.nylas-specific-time-availability-picker .specific-time-entry .remove-button{display:flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:1px solid var(--nylas-base-200);border-radius:var(--nylas-border-radius);background:var(--nylas-base-0);color:var(--nylas-base-400);cursor:pointer;transition:all 0.2s ease;flex-shrink:0}.nylas-specific-time-availability-picker .specific-time-entry .remove-button:hover{background:var(--nylas-error-50);border-color:var(--nylas-error-200);color:var(--nylas-error)}.nylas-specific-time-availability-picker .specific-time-entry .remove-button:focus{outline:none;border-color:var(--nylas-primary);box-shadow:0 0 0 3px rgba(59, 130, 246, 0.1)}.nylas-specific-time-availability-picker .specific-time-entry .remove-button:active{background:var(--nylas-error-100)}.nylas-specific-time-availability-picker .specific-time-entry .error-message{width:100%;padding:0.5rem 0.75rem;background:var(--nylas-error-50);color:var(--nylas-error);font-size:0.8125rem;line-height:1.5;border-radius:var(--nylas-border-radius);border:1px solid var(--nylas-error-200);margin-top:0.5rem;display:flex;align-items:center;gap:0.5rem}.nylas-specific-time-availability-picker .add-button-container{display:flex;justify-content:flex-start;margin-top:0.5rem}.nylas-specific-time-availability-picker .add-button-container button-component{width:100%}@media (max-width: 768px){.nylas-specific-time-availability-picker .add-button-container button-component{font-size:0.875rem}}::part(nstap__add-button){border:1px dashed var(--nylas-base-200);background:var(--nylas-base-0);color:var(--nylas-base-700)}::part(nstap__add-button):hover{border-color:var(--nylas-primary);background:var(--nylas-base-50);color:var(--nylas-primary)}::part(nstap__time-picker-container){flex:1;min-width:0}::part(nstap__time-picker-input){width:100%;font-size:0.875rem;min-height:48px;display:flex;align-items:center;border-radius:var(--nylas-border-radius)}::part(nstap__date-input){width:100%}::part(nstap__date-field){width:100%;font-size:0.875rem;border:1px solid var(--nylas-base-200);border-radius:var(--nylas-border-radius);padding:0.5rem 0.75rem}::part(nstap__date-field):focus{border-color:var(--nylas-primary);box-shadow:0 0 0 3px rgba(59, 130, 246, 0.1)}::part(nstap__date-wrapper){margin:0}::part(nstap__date-label){margin:0;padding:0}::part(nstap__date-label) p{display:none}";
|
|
7904
7904
|
|
|
7905
7905
|
var __decorate$1 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
|
|
7906
7906
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
@@ -7953,9 +7953,6 @@ const NylasSpecificTimeAvailabilityPicker = class {
|
|
|
7953
7953
|
else {
|
|
7954
7954
|
this.timezone = this.defaultTimezone;
|
|
7955
7955
|
if (this.specificTimesAvailability && this.specificTimesAvailability.length > 0) {
|
|
7956
|
-
if (this.specificTimesAvailability[0].timezone) {
|
|
7957
|
-
this.timezone = this.specificTimesAvailability[0].timezone;
|
|
7958
|
-
}
|
|
7959
7956
|
this.loadSpecificTimeAvailability();
|
|
7960
7957
|
}
|
|
7961
7958
|
}
|
|
@@ -7970,7 +7967,6 @@ const NylasSpecificTimeAvailabilityPicker = class {
|
|
|
7970
7967
|
}
|
|
7971
7968
|
configChangedHandler(newConfig) {
|
|
7972
7969
|
debug('nylas-specific-time-availability-picker', 'configChangedHandler', newConfig);
|
|
7973
|
-
this.timezone = newConfig?.event_booking?.timezone || this.defaultTimezone;
|
|
7974
7970
|
this.loadSpecificTimeAvailability();
|
|
7975
7971
|
}
|
|
7976
7972
|
selectedLanguageChangedHandler(newVal, oldVal) {
|
|
@@ -7994,6 +7990,9 @@ const NylasSpecificTimeAvailabilityPicker = class {
|
|
|
7994
7990
|
if (!this.specificTimesAvailability || this.specificTimesAvailability.length === 0) {
|
|
7995
7991
|
return;
|
|
7996
7992
|
}
|
|
7993
|
+
if (this.specificTimesAvailability[0].timezone) {
|
|
7994
|
+
this.timezone = this.specificTimesAvailability[0].timezone;
|
|
7995
|
+
}
|
|
7997
7996
|
const entries = this.specificTimesAvailability.map((item, index) => {
|
|
7998
7997
|
const isUnavailable = item.start === '00:00' && item.end === '00:00';
|
|
7999
7998
|
return {
|
|
@@ -8018,6 +8017,7 @@ const NylasSpecificTimeAvailabilityPicker = class {
|
|
|
8018
8017
|
startTime: '09:00am',
|
|
8019
8018
|
endTime: '05:00pm',
|
|
8020
8019
|
isUnavailable: false,
|
|
8020
|
+
timezone: this.timezone,
|
|
8021
8021
|
};
|
|
8022
8022
|
this.specificDateEntries = [...this.specificDateEntries, newEntry];
|
|
8023
8023
|
if (this.isInternalsAvailable) {
|
|
@@ -8206,11 +8206,11 @@ const NylasSpecificTimeAvailabilityPicker = class {
|
|
|
8206
8206
|
value: key,
|
|
8207
8207
|
}));
|
|
8208
8208
|
const selectedTimezoneOption = timezoneOptions.find(i => i.value === this.timezone);
|
|
8209
|
-
return (h(Host, { key: '
|
|
8209
|
+
return (h(Host, { key: 'b56cf3671b9ef2477f805bb01f2e944a08bf2ff0' }, h("div", { key: '8d424bbb73e97025f70af823dec9173776a77de8', class: "nylas-specific-time-availability-picker", part: "nstap" }, !this.hideHeader && (h("div", { key: '976f0dca6b414a5b39b94d52f0e137466cc006f1', class: "header", part: "nstap__header" }, h("h3", { key: '927dc716d64f2dbb0f8e90ea84238dfa56c61111' }, instance.t('nylasSpecificTimeAvailabilityPicker.headerTitle')), h("p", { key: '0de35c5ffcc313006eebb0a725522b33d1be3391' }, instance.t('nylasSpecificTimeAvailabilityPicker.headerDescription'), h("tooltip-component", { key: '0607c65fc0862707c285d03270d351f4906d7596' }, h("info-icon", { key: '34dfe76c1674fbcbbf4ca27fc7eac2a0094a2aec', slot: "tooltip-icon" }), h("span", { key: 'f79ef4f5a1a1acab6b03a548a55759e0860f7e9d', slot: "tooltip-content" }, instance.t('nylasSpecificTimeAvailabilityPicker.tooltip.desc')))))), h("div", { key: 'f304921adad62e29ed90fdb918864ec480ac6b57', class: "content", part: "nstap__content" }, h("section", { key: 'a770d923bfee31267666e1b9e7d51123f22ab781', class: "timezone-selector", part: "nstap__timezone-selector", "aria-labelledby": "timezone-header" }, h("h4", { key: '7968b6ebcbf2e0c19aab1232dd514335f40fbecf', id: "timezone-header", class: "sub-header" }, instance.t('nylasSpecificTimeAvailabilityPicker.selectTimezone')), h("p", { key: 'a5a891bb9685ac00feb62d499615f8c40e18819f', class: "timezone-description" }, instance.t('nylasSpecificTimeAvailabilityPicker.timezoneDescription')), selectedTimezoneOption?.label && (h("select-dropdown", { key: 'bdaa571da2e4d18cc8bcfbedb57605bd0589517f', name: "specific-time-timezone", searchPlaceholder: instance.t('search'), exportparts: "sd_dropdown: nstap__timezone-container, sd_dropdown-button: nstap__timezone-button, sd_dropdown-content: nstap__timezone-dropdown-content", options: timezoneOptions, defaultSelectedOption: selectedTimezoneOption, themeConfig: this.themeConfig, "aria-label": instance.t('nylasSpecificTimeAvailabilityPicker.selectTimezone') }, h("span", { key: '33bb2df3bf655e9b833ad0d8a669a7bd5a45dad1', slot: "select-icon", "aria-hidden": "true" }, h("globe-icon", { key: '589beedc4d5dc5f1bf163b1d7c63dd0373a06c1f', width: "20", height: "20" })))), this.validationErrors['timezone'] && (h("div", { key: 'f434eab051b5350c8176c63359c4c718b8a3fc1c', class: "error-message timezone-error", part: "nstap__error-message", role: "alert", "aria-live": "polite" }, this.validationErrors['timezone']))), h("section", { key: '3faa00e31c27e23461ede7b0e0e49f22cf2e32a2', class: "specific-times-section", part: "nstap__specific-times-section", "aria-labelledby": "specific-times-header" }, h("h4", { key: '145b8dfeeaf35e9cb7149a461b956e1648a6c401', id: "specific-times-header", class: "section-header" }, instance.t('nylasSpecificTimeAvailabilityPicker.specificTimesHeader')), h("p", { key: '5cd0509861f4b5bcb323fc70fac98fc4f5ee736f', class: "section-description" }, instance.t('nylasSpecificTimeAvailabilityPicker.specificTimesDescription')), h("div", { key: '72126f5b9ed3c5fc75b8bec3a72aa1d188cc1761', class: "specific-times", part: "nstap__specific-times", role: "list" }, this.specificDateEntries.length === 0 ? (h("div", { class: "empty-state", part: "nstap__empty-state" }, h("div", { class: "empty-icon", part: "nstap__empty-icon" }, h("calendar-icon", { width: "32", height: "32" })), h("h3", { class: "empty-title", part: "nstap__empty-title" }, instance.t('nylasSpecificTimeAvailabilityPicker.emptyState.title')), h("p", { class: "empty-subtitle", part: "nstap__empty-subtitle" }, instance.t('nylasSpecificTimeAvailabilityPicker.emptyState.subtitle')))) : (this.specificDateEntries.map((entry, index) => (h("article", { class: "specific-time-entry", part: "nstap__specific-time-entry", key: entry.id, "data-entry-id": entry.id, role: "listitem", "aria-label": `Specific time availability entry ${index + 1}` }, h("div", { class: "entry-content", part: "nstap__entry-content" }, h("div", { class: "date-input-container", part: "nstap__date-input-container" }, h("nylas-date-component", { name: `date-${entry.id}`, defaultValue: entry.date, placeholder: "yyyy-mm-dd", part: "nstap__date-input", class: "date-input", themeConfig: this.themeConfig, exportparts: "ic__date: nstap__date-field, ic__input_wrapper: nstap__date-wrapper, ic__label: nstap__date-label", "aria-label": `Date for entry ${index + 1}` })), entry.isUnavailable ? (h("div", { class: "unavailable-text", part: "nstap__unavailable-text", role: "status" }, h("span", { class: "unavailable-label" }, instance.t('nylasSpecificTimeAvailabilityPicker.entireDayUnavailable')))) : (h("div", { class: "time-pickers", part: "nstap__time-pickers", role: "group", "aria-label": "Time range" }, h("nylas-time-window-picker", { id: `${entry.id}_start`, time: entry.startTime, name: `${entry.id}_start`, key: `${entry.id}_start`, language: this.selectedLanguage, hasError: !!this.validationErrors[entry.id], themeConfig: this.themeConfig, exportparts: "time-picker: nstap__time-picker-container, time-input: nstap__time-picker-input, times: nstap__time-picker-times", "aria-label": `Start time for entry ${index + 1}` }), h("span", { class: "time-separator", "aria-hidden": "true" }, "-"), h("nylas-time-window-picker", { id: `${entry.id}_end`, time: entry.endTime, name: `${entry.id}_end`, key: `${entry.id}_end`, minimumStartTime: entry.startTime, language: this.selectedLanguage, hasError: !!this.validationErrors[entry.id], themeConfig: this.themeConfig, exportparts: "time-picker: nstap__time-picker-container, time-input: nstap__time-picker-input, times: nstap__time-picker-times", "aria-label": `End time for entry ${index + 1}` }))), h("div", { class: "action-buttons", part: "nstap__action-buttons" }, h("button", { type: "button", class: { 'toggle-button': true, 'unavailable': entry.isUnavailable }, part: "nstap__toggle-button", onClick: () => this.toggleAvailability(entry.id), "aria-label": entry.isUnavailable
|
|
8210
8210
|
? instance.t('nylasSpecificTimeAvailabilityPicker.markAsAvailable')
|
|
8211
8211
|
: instance.t('nylasSpecificTimeAvailabilityPicker.markAsUnavailable'), title: entry.isUnavailable
|
|
8212
8212
|
? instance.t('nylasSpecificTimeAvailabilityPicker.markAsAvailable')
|
|
8213
|
-
: instance.t('nylasSpecificTimeAvailabilityPicker.markAsUnavailable') }, h("calendar-icon", { width: "20", height: "20", "aria-hidden": "true" })), h("button", { type: "button", class: "remove-button", part: "nstap__remove-button", onClick: () => this.removeSpecificTimeAvailability(entry.id), "aria-label": `Remove specific time entry ${index + 1}`, title: "Remove" }, h("close-icon", { width: "16", height: "16", "aria-hidden": "true" })))), this.validationErrors[entry.id] && (h("div", { class: "error-message", part: "nstap__error-message", role: "alert", "aria-live": "polite" }, this.validationErrors[entry.id]))))))), h("div", { key: '
|
|
8213
|
+
: instance.t('nylasSpecificTimeAvailabilityPicker.markAsUnavailable') }, h("calendar-icon", { width: "20", height: "20", "aria-hidden": "true" })), h("button", { type: "button", class: "remove-button", part: "nstap__remove-button", onClick: () => this.removeSpecificTimeAvailability(entry.id), "aria-label": `Remove specific time entry ${index + 1}`, title: "Remove" }, h("close-icon", { width: "16", height: "16", "aria-hidden": "true" })))), this.validationErrors[entry.id] && (h("div", { class: "error-message", part: "nstap__error-message", role: "alert", "aria-live": "polite" }, this.validationErrors[entry.id]))))))), h("div", { key: '278a369986549c3ab2aa58ec78102e01d38481af', class: "add-button-container", part: "nstap__add-button-container" }, h("button-component", { key: '347c13d656b732ca52035e47b78438ba3a977396', id: "add-specific-time-open-hour", onClick: () => this.addSpecificTimeAvailability(), part: "nstap__add-button", variant: "basic", "aria-label": instance.t('nylasSpecificTimeAvailabilityPicker.addSpecificTimeAvailability') }, h("add-circle-icon", { key: '9dd3f2707d6420c2019cea00d47f1c8a679745d6', width: "24", height: "24", "aria-hidden": "true" }), instance.t('nylasSpecificTimeAvailabilityPicker.addSpecificTimeAvailability'))))))));
|
|
8214
8214
|
}
|
|
8215
8215
|
static get formAssociated() { return true; }
|
|
8216
8216
|
get host() { return getElement(this); }
|