@nylas/web-elements 2.5.13 → 2.5.16
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 +2991 -2998
- package/dist/cdn/nylas-scheduling/nylas-scheduling.es.js +1 -1
- package/dist/cjs/calendar-agenda-fill-icon_39.cjs.entry.js +13 -13
- package/dist/cjs/calendar-agenda-fill-icon_39.cjs.entry.js.map +1 -1
- package/dist/cjs/google-logo-icon.microsoft-logo-icon.nylas-editor-tabs.nylas-editor-tabs-group.nylas-list-configurations.nylas-select-event-type.entry.cjs.js.map +1 -1
- package/dist/cjs/google-logo-icon_6.cjs.entry.js +21 -13
- package/dist/cjs/google-logo-icon_6.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-scheduler-editor.cjs.entry.js +1 -1
- package/dist/cjs/nylas-scheduling.cjs.entry.js +1 -1
- package/dist/cjs/{version-BspChjso.js → version-Cc3rTMtG.js} +3 -3
- package/dist/cjs/{version-BspChjso.js.map → version-Cc3rTMtG.js.map} +1 -1
- package/dist/collection/components/scheduler-editor/nylas-editor-tabs/nylas-editor-tabs.js +10 -6
- package/dist/collection/components/scheduler-editor/nylas-editor-tabs/nylas-editor-tabs.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-editor-tabs-group/nylas-editor-tabs-group.js +10 -6
- package/dist/collection/components/scheduler-editor/nylas-editor-tabs-group/nylas-editor-tabs-group.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-participants-custom-availability/nylas-participants-custom-availability.js +9 -10
- package/dist/collection/components/scheduler-editor/nylas-participants-custom-availability/nylas-participants-custom-availability.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-specific-time-availability-picker/nylas-specific-time-availability-picker.js +4 -3
- 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-notetaker-config.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 +56 -56
- 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-BNzrPoR6.js → p-37a4h3J_.js} +5 -5
- package/dist/components/{p-BNzrPoR6.js.map → p-37a4h3J_.js.map} +1 -1
- package/dist/components/{p-CiJgH0CI.js → p-3FTb1-in.js} +17 -17
- package/dist/components/{p-CiJgH0CI.js.map → p-3FTb1-in.js.map} +1 -1
- package/dist/components/{p-Dlku8PCX.js → p-96zW11tR.js} +4 -4
- package/dist/components/{p-Dlku8PCX.js.map → p-96zW11tR.js.map} +1 -1
- package/dist/components/{p-CSECxNkF.js → p-B2cPNmM_.js} +6 -6
- package/dist/components/{p-CSECxNkF.js.map → p-B2cPNmM_.js.map} +1 -1
- package/dist/components/{p-DqgGszYv.js → p-B3cnALr8.js} +8 -8
- package/dist/components/{p-DqgGszYv.js.map → p-B3cnALr8.js.map} +1 -1
- package/dist/components/{p-FBEildbE.js → p-BBxu-pwN.js} +8 -8
- package/dist/components/{p-FBEildbE.js.map → p-BBxu-pwN.js.map} +1 -1
- package/dist/components/{p-Cx6l-C7e.js → p-BGbMXlLy.js} +4 -4
- package/dist/components/{p-Cx6l-C7e.js.map → p-BGbMXlLy.js.map} +1 -1
- package/dist/components/{p-DfNywLNk.js → p-BJ5a9k3B.js} +4 -4
- package/dist/components/{p-DfNywLNk.js.map → p-BJ5a9k3B.js.map} +1 -1
- package/dist/components/{p-Csux9e4C.js → p-BJsBeE4_.js} +60 -56
- package/dist/components/p-BJsBeE4_.js.map +1 -0
- package/dist/components/{p-rODq8j3H.js → p-BMmtU0fv.js} +5 -5
- package/dist/components/{p-rODq8j3H.js.map → p-BMmtU0fv.js.map} +1 -1
- package/dist/components/{p-uQf7jw6y.js → p-BTwTmU9e.js} +7 -7
- package/dist/components/{p-uQf7jw6y.js.map → p-BTwTmU9e.js.map} +1 -1
- package/dist/components/{p-B5zQj3-Z.js → p-BWbQSVNH.js} +4 -4
- package/dist/components/{p-B5zQj3-Z.js.map → p-BWbQSVNH.js.map} +1 -1
- package/dist/components/{p-D_CPIneS.js → p-BYzkNeMW.js} +3 -3
- package/dist/components/{p-D_CPIneS.js.map → p-BYzkNeMW.js.map} +1 -1
- package/dist/components/{p-B9G8DJJr.js → p-BqD6DKLT.js} +4 -4
- package/dist/components/{p-B9G8DJJr.js.map → p-BqD6DKLT.js.map} +1 -1
- package/dist/components/{p-Ch03cZa9.js → p-Bsd63RFi.js} +3 -3
- package/dist/components/{p-Ch03cZa9.js.map → p-Bsd63RFi.js.map} +1 -1
- package/dist/components/{p-BTo3RJwU.js → p-BuJdnN6-.js} +5 -5
- package/dist/components/{p-BTo3RJwU.js.map → p-BuJdnN6-.js.map} +1 -1
- package/dist/components/{p-Bj4ZUpbc.js → p-Bvnci8k8.js} +4 -4
- package/dist/components/{p-Bj4ZUpbc.js.map → p-Bvnci8k8.js.map} +1 -1
- package/dist/components/{p-DclMe63w.js → p-BxrC0Rsf.js} +3 -3
- package/dist/components/{p-DclMe63w.js.map → p-BxrC0Rsf.js.map} +1 -1
- package/dist/components/{p-W0q3GPje.js → p-BzLxndYA.js} +3 -3
- package/dist/components/{p-W0q3GPje.js.map → p-BzLxndYA.js.map} +1 -1
- package/dist/components/{p-CfNiz60j.js → p-CL8ugNmu.js} +5 -5
- package/dist/components/{p-CfNiz60j.js.map → p-CL8ugNmu.js.map} +1 -1
- package/dist/components/{p-BCUF1qcs.js → p-CMNiSC4o.js} +3 -3
- package/dist/components/{p-BCUF1qcs.js.map → p-CMNiSC4o.js.map} +1 -1
- package/dist/components/{p-CM9l-8zy.js → p-CRIlyxX5.js} +5 -5
- package/dist/components/{p-CM9l-8zy.js.map → p-CRIlyxX5.js.map} +1 -1
- package/dist/components/{p-xnXT49TS.js → p-CUe11ohy.js} +4 -4
- package/dist/components/{p-xnXT49TS.js.map → p-CUe11ohy.js.map} +1 -1
- package/dist/components/{p-CpP2uaEo.js → p-CUlV7ZGv.js} +3 -3
- package/dist/components/{p-CpP2uaEo.js.map → p-CUlV7ZGv.js.map} +1 -1
- package/dist/components/{p-BWCjcWGP.js → p-CXkCnHr5.js} +4 -4
- package/dist/components/{p-BWCjcWGP.js.map → p-CXkCnHr5.js.map} +1 -1
- package/dist/components/{p-Czoh6-K4.js → p-CdBb4zI5.js} +10 -9
- package/dist/components/p-CdBb4zI5.js.map +1 -0
- package/dist/components/{p-OAhdn1vx.js → p-CdPtFwy6.js} +3 -3
- package/dist/components/{p-OAhdn1vx.js.map → p-CdPtFwy6.js.map} +1 -1
- package/dist/components/{p-umrdj-23.js → p-CeKOSPvz.js} +5 -5
- package/dist/components/{p-umrdj-23.js.map → p-CeKOSPvz.js.map} +1 -1
- package/dist/components/{p-CNvWFjFr.js → p-Ch_HOS-9.js} +4 -4
- package/dist/components/{p-CNvWFjFr.js.map → p-Ch_HOS-9.js.map} +1 -1
- package/dist/components/{p-sH4nuWqV.js → p-Ci-pKDnr.js} +4 -4
- package/dist/components/{p-sH4nuWqV.js.map → p-Ci-pKDnr.js.map} +1 -1
- package/dist/components/{p-Co08mMKn.js → p-CpGRDWt9.js} +4 -4
- package/dist/components/{p-Co08mMKn.js.map → p-CpGRDWt9.js.map} +1 -1
- package/dist/components/{p-DjFQHhGY.js → p-CuaQW941.js} +4 -4
- package/dist/components/{p-DjFQHhGY.js.map → p-CuaQW941.js.map} +1 -1
- package/dist/components/{p-Dwxouxgj.js → p-CzSowwcD.js} +4 -4
- package/dist/components/{p-Dwxouxgj.js.map → p-CzSowwcD.js.map} +1 -1
- package/dist/components/{p-i8gpwgDT.js → p-D0137Jos.js} +4 -4
- package/dist/components/{p-i8gpwgDT.js.map → p-D0137Jos.js.map} +1 -1
- package/dist/components/{p-4jS2598L.js → p-D04Mu9fK.js} +3 -3
- package/dist/components/{p-4jS2598L.js.map → p-D04Mu9fK.js.map} +1 -1
- package/dist/components/{p-BlxYpYrq.js → p-D0qMgeBc.js} +4 -4
- package/dist/components/{p-BlxYpYrq.js.map → p-D0qMgeBc.js.map} +1 -1
- package/dist/components/{p-DswqiER3.js → p-D42UGkjM.js} +3 -3
- package/dist/components/{p-DswqiER3.js.map → p-D42UGkjM.js.map} +1 -1
- package/dist/components/{p-TOG3UyB_.js → p-D4gKLnje.js} +7 -7
- package/dist/components/{p-TOG3UyB_.js.map → p-D4gKLnje.js.map} +1 -1
- package/dist/components/{p-DjQuy9Lc.js → p-D5Swz0J4.js} +5 -5
- package/dist/components/{p-DjQuy9Lc.js.map → p-D5Swz0J4.js.map} +1 -1
- package/dist/components/{p-D6yyOiee.js → p-D9mHh12b.js} +5 -5
- package/dist/components/{p-D6yyOiee.js.map → p-D9mHh12b.js.map} +1 -1
- package/dist/components/{p-B2_cvJns.js → p-DDd7Mjvz.js} +5 -5
- package/dist/components/{p-B2_cvJns.js.map → p-DDd7Mjvz.js.map} +1 -1
- package/dist/components/{p-C1Z2qktB.js → p-DGDbXfHm.js} +7 -7
- package/dist/components/{p-C1Z2qktB.js.map → p-DGDbXfHm.js.map} +1 -1
- package/dist/components/{p-CjMpnxmP.js → p-DMwaGWVu.js} +3 -3
- package/dist/components/{p-CjMpnxmP.js.map → p-DMwaGWVu.js.map} +1 -1
- package/dist/components/{p-C2EKszp0.js → p-DOryfnIf.js} +3 -3
- package/dist/components/{p-C2EKszp0.js.map → p-DOryfnIf.js.map} +1 -1
- package/dist/components/{p-D8f8zHZu.js → p-DPL6BIu2.js} +5 -5
- package/dist/components/{p-D8f8zHZu.js.map → p-DPL6BIu2.js.map} +1 -1
- package/dist/components/{p-B2iddmWd.js → p-DPPqmJvY.js} +5 -5
- package/dist/components/{p-B2iddmWd.js.map → p-DPPqmJvY.js.map} +1 -1
- package/dist/components/{p-KPbwxUCV.js → p-DRMxunL6.js} +3 -3
- package/dist/components/{p-KPbwxUCV.js.map → p-DRMxunL6.js.map} +1 -1
- package/dist/components/{p-D7Xfdt74.js → p-DUVwWh7e.js} +4 -4
- package/dist/components/{p-D7Xfdt74.js.map → p-DUVwWh7e.js.map} +1 -1
- package/dist/components/{p-f0IvxSr9.js → p-DZwGCUUK.js} +6 -6
- package/dist/components/{p-f0IvxSr9.js.map → p-DZwGCUUK.js.map} +1 -1
- package/dist/components/{p-tIcs9Qo5.js → p-D_daFt1t.js} +5 -5
- package/dist/components/{p-tIcs9Qo5.js.map → p-D_daFt1t.js.map} +1 -1
- package/dist/components/{p-DGUo_p68.js → p-DcXycU5_.js} +4 -4
- package/dist/components/{p-DGUo_p68.js.map → p-DcXycU5_.js.map} +1 -1
- package/dist/components/{p-w9ANRXbn.js → p-DfxhC7Fd.js} +5 -5
- package/dist/components/{p-w9ANRXbn.js.map → p-DfxhC7Fd.js.map} +1 -1
- package/dist/components/{p-eej_Ksq1.js → p-DjJOgfxK.js} +5 -5
- package/dist/components/{p-eej_Ksq1.js.map → p-DjJOgfxK.js.map} +1 -1
- package/dist/components/{p-BDVZl2EG.js → p-KzMRmaBa.js} +50 -46
- package/dist/components/p-KzMRmaBa.js.map +1 -0
- package/dist/components/{p-ixTtdC_2.js → p-LOCJMijY.js} +5 -5
- package/dist/components/{p-ixTtdC_2.js.map → p-LOCJMijY.js.map} +1 -1
- package/dist/components/{p-DGwr7E6J.js → p-NA5f_7b7.js} +4 -4
- package/dist/components/{p-DGwr7E6J.js.map → p-NA5f_7b7.js.map} +1 -1
- package/dist/components/{p-Cf-rjo7-.js → p-O9btdnkK.js} +6 -6
- package/dist/components/{p-Cf-rjo7-.js.map → p-O9btdnkK.js.map} +1 -1
- package/dist/components/{p-B6bT8J6p.js → p-RPocf_FZ.js} +17 -18
- package/dist/components/p-RPocf_FZ.js.map +1 -0
- package/dist/components/{p-EKeBVTKB.js → p-UTn_XnKO.js} +5 -5
- package/dist/components/{p-EKeBVTKB.js.map → p-UTn_XnKO.js.map} +1 -1
- package/dist/components/{p-CeWOPOaM.js → p-eV80kRKP.js} +4 -4
- package/dist/components/{p-CeWOPOaM.js.map → p-eV80kRKP.js.map} +1 -1
- package/dist/components/{p-CbB5JFln.js → p-fwU4mtR0.js} +4 -4
- package/dist/components/{p-CbB5JFln.js.map → p-fwU4mtR0.js.map} +1 -1
- package/dist/components/{p-DrmjHhDH.js → p-g9YD1HRv.js} +5 -5
- package/dist/components/{p-DrmjHhDH.js.map → p-g9YD1HRv.js.map} +1 -1
- package/dist/components/{p-DvPuyp-I.js → p-nhhVpJed.js} +7 -7
- package/dist/components/{p-DvPuyp-I.js.map → p-nhhVpJed.js.map} +1 -1
- package/dist/components/{p-oVDOs1AN.js → p-oRjUujH5.js} +4 -4
- package/dist/components/{p-oVDOs1AN.js.map → p-oRjUujH5.js.map} +1 -1
- package/dist/components/{p-hmiyEk6L.js → p-qo42Sy8T.js} +5 -5
- package/dist/components/{p-hmiyEk6L.js.map → p-qo42Sy8T.js.map} +1 -1
- package/dist/components/{p-D_8c_n1h.js → p-uxA_4Zq1.js} +4 -4
- package/dist/components/{p-D_8c_n1h.js.map → p-uxA_4Zq1.js.map} +1 -1
- package/dist/components/{p-DWMCGYZt.js → p-wJgbEd5m.js} +5 -5
- package/dist/components/{p-DWMCGYZt.js.map → p-wJgbEd5m.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-DfvNw5fP.js → abstract-provider-C4xP8KoA.js} +3 -3
- package/dist/esm/{abstract-provider-DfvNw5fP.js.map → abstract-provider-C4xP8KoA.js.map} +1 -1
- package/dist/esm/calendar-agenda-fill-icon_39.entry.js +15 -15
- package/dist/esm/calendar-agenda-fill-icon_39.entry.js.map +1 -1
- package/dist/esm/checkbox-group_4.entry.js +3 -3
- package/dist/esm/checkmark-icon_14.entry.js +2 -2
- package/dist/esm/{customParseFormat-BUZsRKas.js → customParseFormat-oEkUiMUN.js} +3 -3
- package/dist/esm/{customParseFormat-BUZsRKas.js.map → customParseFormat-oEkUiMUN.js.map} +1 -1
- package/dist/esm/globe-icon_3.entry.js +2 -2
- package/dist/esm/google-logo-icon.microsoft-logo-icon.nylas-editor-tabs.nylas-editor-tabs-group.nylas-list-configurations.nylas-select-event-type.entry.js.map +1 -1
- package/dist/esm/google-logo-icon_6.entry.js +23 -15
- package/dist/esm/google-logo-icon_6.entry.js.map +1 -1
- 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/input-image-url_2.entry.js +2 -2
- package/dist/esm/multi-select-dropdown.entry.js +1 -1
- package/dist/esm/{nylas-api-request-B3Fj4B-L.js → nylas-api-request-CWLncKIc.js} +3 -3
- package/dist/esm/{nylas-api-request-B3Fj4B-L.js.map → nylas-api-request-CWLncKIc.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-B9YP9nha.js → register-component-4Wk1RjFK.js} +3 -3
- package/dist/esm/{register-component-B9YP9nha.js.map → register-component-4Wk1RjFK.js.map} +1 -1
- package/dist/esm/textarea-component.entry.js +1 -1
- package/dist/esm/{utils-OpKyWV8q.js → utils-DfIu4gMZ.js} +3 -3
- package/dist/esm/{utils-OpKyWV8q.js.map → utils-DfIu4gMZ.js.map} +1 -1
- package/dist/esm/{version-xO_cryq5.js → version-Ce04N_Lo.js} +3 -3
- package/dist/esm/{version-xO_cryq5.js.map → version-Ce04N_Lo.js.map} +1 -1
- package/dist/nylas-web-elements/google-logo-icon.microsoft-logo-icon.nylas-editor-tabs.nylas-editor-tabs-group.nylas-list-configurations.nylas-select-event-type.entry.esm.js.map +1 -1
- 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-2f3a33e1.entry.js → p-0745cbcc.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-ad920702.entry.js → p-0c276fdb.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-ccc9d9d2.entry.js → p-1618c8ac.entry.js} +3 -3
- package/dist/nylas-web-elements/p-1618c8ac.entry.js.map +1 -0
- package/dist/nylas-web-elements/{p-97034347.entry.js → p-2491c840.entry.js} +2 -2
- package/dist/nylas-web-elements/p-71137e94.entry.js +2 -0
- package/dist/nylas-web-elements/p-71137e94.entry.js.map +1 -0
- package/dist/nylas-web-elements/{p-330c2159.entry.js → p-81af9950.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-4d9bdaa0.entry.js → p-95c4f538.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-xO_cryq5.js → p-Ce04N_Lo.js} +2 -2
- package/dist/nylas-web-elements/{p-xO_cryq5.js.map → p-Ce04N_Lo.js.map} +1 -1
- package/dist/nylas-web-elements/{p-S0IPwRIR.js → p-DNbD_8zD.js} +2 -2
- package/dist/nylas-web-elements/{p-S0IPwRIR.js.map → p-DNbD_8zD.js.map} +1 -1
- package/dist/nylas-web-elements/{p-OpKyWV8q.js → p-DfIu4gMZ.js} +2 -2
- package/dist/nylas-web-elements/{p-OpKyWV8q.js.map → p-DfIu4gMZ.js.map} +1 -1
- package/dist/nylas-web-elements/{p-C-mOw2iU.js → p-Dgl7p7tZ.js} +2 -2
- package/dist/nylas-web-elements/{p-C-mOw2iU.js.map → p-Dgl7p7tZ.js.map} +1 -1
- package/dist/nylas-web-elements/p-VQ6-FdEA.js +2 -0
- package/dist/nylas-web-elements/{p-D8VJgipo.js.map → p-VQ6-FdEA.js.map} +1 -1
- package/dist/nylas-web-elements/{p-db79a1ca.entry.js → p-a5bb5b9d.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-e0de5436.entry.js → p-b607eace.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-3f66ac98.entry.js → p-c7f4c268.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-f235211e.entry.js → p-d48d8562.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-9a5ddc21.entry.js → p-eb5b77ab.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-38806f4d.entry.js → p-f45da541.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-f5cf565f.entry.js → p-fed4cb19.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-ca824e25.entry.js → p-ff693a85.entry.js} +3 -3
- package/dist/nylas-web-elements/{p-FlNKXp4j.js → p-gXPNb-6F.js} +2 -2
- package/dist/nylas-web-elements/{p-FlNKXp4j.js.map → p-gXPNb-6F.js.map} +1 -1
- package/dist/types/version.d.ts +1 -1
- package/package.json +1 -1
- package/dist/components/p-B6bT8J6p.js.map +0 -1
- package/dist/components/p-BDVZl2EG.js.map +0 -1
- package/dist/components/p-Csux9e4C.js.map +0 -1
- package/dist/components/p-Czoh6-K4.js.map +0 -1
- package/dist/nylas-web-elements/p-0716662b.entry.js +0 -2
- package/dist/nylas-web-elements/p-0716662b.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-D8VJgipo.js +0 -2
- package/dist/nylas-web-elements/p-ccc9d9d2.entry.js.map +0 -1
- /package/dist/nylas-web-elements/{p-2f3a33e1.entry.js.map → p-0745cbcc.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-ad920702.entry.js.map → p-0c276fdb.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-97034347.entry.js.map → p-2491c840.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-330c2159.entry.js.map → p-81af9950.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-4d9bdaa0.entry.js.map → p-95c4f538.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-db79a1ca.entry.js.map → p-a5bb5b9d.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-e0de5436.entry.js.map → p-b607eace.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-3f66ac98.entry.js.map → p-c7f4c268.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-f235211e.entry.js.map → p-d48d8562.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-9a5ddc21.entry.js.map → p-eb5b77ab.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-38806f4d.entry.js.map → p-f45da541.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-f5cf565f.entry.js.map → p-fed4cb19.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-ca824e25.entry.js.map → p-ff693a85.entry.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"p-4jS2598L.js","mappings":"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","names":[],"sources":["src/utils/deep-equal.ts","src/common/abstract-provider.ts"],"sourcesContent":["/**\n * Deep equality check for objects and arrays.\n * For primitives, uses === comparison.\n * Handles special cases like Date objects, RegExp, Map, Set, etc.\n *\n * @param a First value to compare\n * @param b Second value to compare\n * @returns true if values are deeply equal, false otherwise\n */\nexport function deepEqual(a: any, b: any): boolean {\n // Strict equality check (handles primitives, same reference, NaN edge case)\n if (a === b) return true;\n\n // Handle null/undefined\n if (a == null || b == null) return false;\n\n // Handle non-objects (primitives that aren't equal)\n if (typeof a !== 'object' || typeof b !== 'object') return false;\n\n // Handle Date objects - compare by time value since Date has no enumerable keys\n if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime();\n }\n // If only one is a Date, they're not equal\n if (a instanceof Date || b instanceof Date) {\n return false;\n }\n\n // Handle RegExp objects\n if (a instanceof RegExp && b instanceof RegExp) {\n return a.source === b.source && a.flags === b.flags;\n }\n if (a instanceof RegExp || b instanceof RegExp) {\n return false;\n }\n\n // Handle Map objects\n if (a instanceof Map && b instanceof Map) {\n if (a.size !== b.size) return false;\n for (const [key, value] of a) {\n if (!b.has(key) || !deepEqual(value, b.get(key))) return false;\n }\n return true;\n }\n if (a instanceof Map || b instanceof Map) {\n return false;\n }\n\n // Handle Set objects\n if (a instanceof Set && b instanceof Set) {\n if (a.size !== b.size) return false;\n for (const value of a) {\n if (!b.has(value)) return false;\n }\n return true;\n }\n if (a instanceof Set || b instanceof Set) {\n return false;\n }\n\n // Handle Array vs non-Array mismatch\n if (Array.isArray(a) !== Array.isArray(b)) return false;\n\n // Handle arrays\n if (Array.isArray(a)) {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (!deepEqual(a[i], b[i])) return false;\n }\n return true;\n }\n\n // Handle plain objects\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n\n for (const key of keysA) {\n if (!keysB.includes(key)) return false;\n if (!deepEqual(a[key], b[key])) return false;\n }\n\n return true;\n}\n","import { RegisteredComponent } from '@/common/register-component';\nimport { BaseNylasConnectorInterface } from '@/connector/connector-interface';\nimport { debug, formatEventName, uniqueID, isTestEnvironment } from '@/utils/utils';\nimport { deepEqual } from '@/utils/deep-equal';\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 * Queue for batching prop updates to prevent multiple re-renders from rapid state changes.\n * Updates are flushed on the next microtask.\n */\n private propUpdateQueue: Map<ElementID, Map<string, any>> = new Map();\n private propUpdateScheduled: boolean = false;\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\n // Wait for component to be fully hydrated, not just defined\n // Check if component has componentOnReady method (Stencil components)\n if (typeof (component.element as any).componentOnReady === 'function') {\n try {\n await (component.element as any).componentOnReady();\n debug(`[${this.hostTagName}] (registerComponent) Component \"${component.element.localName}\" is now ready`);\n } catch (error) {\n debug(`[${this.hostTagName}] (registerComponent) Error waiting for component \"${component.element.localName}\" to be ready:`, error);\n }\n } else {\n // Fallback: wait for hydration class or a short delay\n await new Promise<void>(resolve => {\n const checkHydration = () => {\n if (component.element.classList?.contains('hydrated')) {\n resolve();\n } else {\n // Wait a bit and check again\n setTimeout(() => {\n if (component.element.classList?.contains('hydrated')) {\n resolve();\n } else {\n // Resolve anyway after timeout to avoid blocking\n resolve();\n }\n }, 10);\n }\n };\n checkHydration();\n });\n }\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 handler = async (event: CustomEvent<any>) => {\n // Read nylasConnector at call time rather than at registration time.\n // This is necessary for the deferred-init path (CUST-5295): child components\n // register before the connector is created, so capturing `this.nylasConnector`\n // at registration time would snapshot `undefined`. By the time the user actually\n // clicks (dateSelected, timeslotSelected, etc.), performDeferredInit() has\n // already set this.nylasConnector to the real connector instance.\n const nylasConnector = this.nylasConnector;\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\n // Use deep equality for objects/arrays, === for primitives\n if (deepEqual(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 // 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\n // Queue prop updates for batching instead of updating immediately\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 // Queue the update instead of applying immediately\n self.queuePropUpdate(elementId, propKey.toString(), stateValue);\n debug(`[${self.hostTagName}] (setupStoreListeners) Queued \"${component.name}\" prop \"${propKey.toString()}\" update for \"${stateKey.toString()}\" value.`, { stateValue });\n });\n },\n });\n });\n }\n\n /**\n * Queue a prop update for batching.\n * Updates are flushed on the next microtask to prevent multiple re-renders.\n */\n private queuePropUpdate(elementId: ElementID, propKey: string, value: any): void {\n if (!this.propUpdateQueue.has(elementId)) {\n this.propUpdateQueue.set(elementId, new Map());\n }\n this.propUpdateQueue.get(elementId)!.set(propKey, value);\n\n if (!this.propUpdateScheduled) {\n this.propUpdateScheduled = true;\n Promise.resolve().then(() => {\n this.flushPropUpdates();\n });\n }\n }\n\n /**\n * Flush all queued prop updates.\n */\n private flushPropUpdates(): void {\n this.propUpdateScheduled = false;\n const queue = new Map(this.propUpdateQueue);\n this.propUpdateQueue.clear();\n\n queue.forEach((props, elementId) => {\n const component = this.registeredComponents[elementId];\n if (!component) {\n debug(`[${this.hostTagName}] (flushPropUpdates) Component \"${elementId}\" not found. Skipping.`);\n return;\n }\n\n props.forEach((value, propKey) => {\n (component.element as { [key: string]: any })[propKey] = value;\n debug(`[${this.hostTagName}] (flushPropUpdates) Setting \"${component.name}\" prop \"${propKey}\" to batched value.`, { value });\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"],"version":3}
|
|
1
|
+
{"file":"p-D04Mu9fK.js","mappings":"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","names":[],"sources":["src/utils/deep-equal.ts","src/common/abstract-provider.ts"],"sourcesContent":["/**\n * Deep equality check for objects and arrays.\n * For primitives, uses === comparison.\n * Handles special cases like Date objects, RegExp, Map, Set, etc.\n *\n * @param a First value to compare\n * @param b Second value to compare\n * @returns true if values are deeply equal, false otherwise\n */\nexport function deepEqual(a: any, b: any): boolean {\n // Strict equality check (handles primitives, same reference, NaN edge case)\n if (a === b) return true;\n\n // Handle null/undefined\n if (a == null || b == null) return false;\n\n // Handle non-objects (primitives that aren't equal)\n if (typeof a !== 'object' || typeof b !== 'object') return false;\n\n // Handle Date objects - compare by time value since Date has no enumerable keys\n if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime();\n }\n // If only one is a Date, they're not equal\n if (a instanceof Date || b instanceof Date) {\n return false;\n }\n\n // Handle RegExp objects\n if (a instanceof RegExp && b instanceof RegExp) {\n return a.source === b.source && a.flags === b.flags;\n }\n if (a instanceof RegExp || b instanceof RegExp) {\n return false;\n }\n\n // Handle Map objects\n if (a instanceof Map && b instanceof Map) {\n if (a.size !== b.size) return false;\n for (const [key, value] of a) {\n if (!b.has(key) || !deepEqual(value, b.get(key))) return false;\n }\n return true;\n }\n if (a instanceof Map || b instanceof Map) {\n return false;\n }\n\n // Handle Set objects\n if (a instanceof Set && b instanceof Set) {\n if (a.size !== b.size) return false;\n for (const value of a) {\n if (!b.has(value)) return false;\n }\n return true;\n }\n if (a instanceof Set || b instanceof Set) {\n return false;\n }\n\n // Handle Array vs non-Array mismatch\n if (Array.isArray(a) !== Array.isArray(b)) return false;\n\n // Handle arrays\n if (Array.isArray(a)) {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (!deepEqual(a[i], b[i])) return false;\n }\n return true;\n }\n\n // Handle plain objects\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n\n for (const key of keysA) {\n if (!keysB.includes(key)) return false;\n if (!deepEqual(a[key], b[key])) return false;\n }\n\n return true;\n}\n","import { RegisteredComponent } from '@/common/register-component';\nimport { BaseNylasConnectorInterface } from '@/connector/connector-interface';\nimport { debug, formatEventName, uniqueID, isTestEnvironment } from '@/utils/utils';\nimport { deepEqual } from '@/utils/deep-equal';\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 * Queue for batching prop updates to prevent multiple re-renders from rapid state changes.\n * Updates are flushed on the next microtask.\n */\n private propUpdateQueue: Map<ElementID, Map<string, any>> = new Map();\n private propUpdateScheduled: boolean = false;\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\n // Wait for component to be fully hydrated, not just defined\n // Check if component has componentOnReady method (Stencil components)\n if (typeof (component.element as any).componentOnReady === 'function') {\n try {\n await (component.element as any).componentOnReady();\n debug(`[${this.hostTagName}] (registerComponent) Component \"${component.element.localName}\" is now ready`);\n } catch (error) {\n debug(`[${this.hostTagName}] (registerComponent) Error waiting for component \"${component.element.localName}\" to be ready:`, error);\n }\n } else {\n // Fallback: wait for hydration class or a short delay\n await new Promise<void>(resolve => {\n const checkHydration = () => {\n if (component.element.classList?.contains('hydrated')) {\n resolve();\n } else {\n // Wait a bit and check again\n setTimeout(() => {\n if (component.element.classList?.contains('hydrated')) {\n resolve();\n } else {\n // Resolve anyway after timeout to avoid blocking\n resolve();\n }\n }, 10);\n }\n };\n checkHydration();\n });\n }\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 handler = async (event: CustomEvent<any>) => {\n // Read nylasConnector at call time rather than at registration time.\n // This is necessary for the deferred-init path (CUST-5295): child components\n // register before the connector is created, so capturing `this.nylasConnector`\n // at registration time would snapshot `undefined`. By the time the user actually\n // clicks (dateSelected, timeslotSelected, etc.), performDeferredInit() has\n // already set this.nylasConnector to the real connector instance.\n const nylasConnector = this.nylasConnector;\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\n // Use deep equality for objects/arrays, === for primitives\n if (deepEqual(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 // 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\n // Queue prop updates for batching instead of updating immediately\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 // Queue the update instead of applying immediately\n self.queuePropUpdate(elementId, propKey.toString(), stateValue);\n debug(`[${self.hostTagName}] (setupStoreListeners) Queued \"${component.name}\" prop \"${propKey.toString()}\" update for \"${stateKey.toString()}\" value.`, { stateValue });\n });\n },\n });\n });\n }\n\n /**\n * Queue a prop update for batching.\n * Updates are flushed on the next microtask to prevent multiple re-renders.\n */\n private queuePropUpdate(elementId: ElementID, propKey: string, value: any): void {\n if (!this.propUpdateQueue.has(elementId)) {\n this.propUpdateQueue.set(elementId, new Map());\n }\n this.propUpdateQueue.get(elementId)!.set(propKey, value);\n\n if (!this.propUpdateScheduled) {\n this.propUpdateScheduled = true;\n Promise.resolve().then(() => {\n this.flushPropUpdates();\n });\n }\n }\n\n /**\n * Flush all queued prop updates.\n */\n private flushPropUpdates(): void {\n this.propUpdateScheduled = false;\n const queue = new Map(this.propUpdateQueue);\n this.propUpdateQueue.clear();\n\n queue.forEach((props, elementId) => {\n const component = this.registeredComponents[elementId];\n if (!component) {\n debug(`[${this.hostTagName}] (flushPropUpdates) Component \"${elementId}\" not found. Skipping.`);\n return;\n }\n\n props.forEach((value, propKey) => {\n (component.element as { [key: string]: any })[propKey] = value;\n debug(`[${this.hostTagName}] (flushPropUpdates) Setting \"${component.name}\" prop \"${propKey}\" to batched value.`, { value });\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"],"version":3}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { p as proxyCustomElement, H, e as createEvent, h, i as Host } from './p-Bht9ktsW.js';
|
|
2
|
-
import { R as RegisterComponent } from './p-
|
|
3
|
-
import { P as EVENT_TITLE_TOKENS, a as debug, s as sanitize, Q as isNonPrintableKey, R as getBrowser } from './p-
|
|
2
|
+
import { R as RegisterComponent } from './p-CUlV7ZGv.js';
|
|
3
|
+
import { P as EVENT_TITLE_TOKENS, a as debug, s as sanitize, Q as isNonPrintableKey, R as getBrowser } from './p-CMNiSC4o.js';
|
|
4
4
|
import { i as instance } from './p-BjxQTsOy.js';
|
|
5
5
|
import { d as defineCustomElement$2 } from './p-d3kelm3z.js';
|
|
6
6
|
import { d as defineCustomElement$1 } from './p-DxDoo-4C.js';
|
|
@@ -490,6 +490,6 @@ function defineCustomElement() {
|
|
|
490
490
|
}
|
|
491
491
|
|
|
492
492
|
export { NylasEventTitle as N, defineCustomElement as d };
|
|
493
|
-
//# sourceMappingURL=p-
|
|
493
|
+
//# sourceMappingURL=p-D0qMgeBc.js.map
|
|
494
494
|
|
|
495
|
-
//# sourceMappingURL=p-
|
|
495
|
+
//# sourceMappingURL=p-D0qMgeBc.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"p-BlxYpYrq.js","mappings":";;;;;;;AAAA,MAAM,kBAAkB,GAAG,yuMAAyuM;;;;;;;;;;;;;;;;MCiCvvM,eAAe,GAAAA,kBAAA,CAAA,MAAA,eAAA,SAAAC,CAAA,CAAA;AAN5B,IAAA,WAAA,GAAA;;;;;;QAoBU,IAAU,CAAA,UAAA,GAAY,IAAI,CAAC,qBAAqB,EAAE,aAAa,EAAE,KAAK;AAKtE,QAAA,IAAI,CAAA,IAAA,GAAW,OAAO;AAStB,QAAA,IAAW,CAAA,WAAA,GAAY,KAAK;AAU3B,QAAA,IAAU,CAAA,UAAA,GAAY,KAAK;QAI3B,IAAe,CAAA,eAAA,GAAyDC,kBAAgB,CAAC,GAAG,CAAC,KAAK,KAAK;YAC9G,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,KAAK,EAAE,KAAK,CAAC,KAAK;AAClB,YAAA,SAAS,EAAE,KAAK;AACjB,SAAA,CAAC,CAAC;AAIM,QAAA,IAAA,CAAA,cAAc,GAAyD,IAAI,CAAC,eAAe;AAK3F,QAAA,IAAoB,CAAA,oBAAA,GAAW,EAAE;QAMjC,IAAW,CAAA,WAAA,GAKhB,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;AAEnD,QAAA,IAAe,CAAA,eAAA,GAAW,EAAE;AAC5B,QAAA,IAAgB,CAAA,gBAAA,GAAW,EAAE;AAE7B,QAAA,IAAqB,CAAA,qBAAA,GAAY,EAAE;AA8f7C;AApfC,IAAA,yBAAyB,CAAC,QAAgB,EAAA;AACxC,QAAA,KAAK,CAAC,qBAAqB,EAAE,2BAA2B,EAAE,QAAQ,CAAC;QACnE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC;;AAI1C,IAAA,kCAAkC,CAAC,QAAgB,EAAA;AACjD,QAAA,KAAK,CAAC,qBAAqB,EAAE,oCAAoC,EAAE,QAAQ,CAAC;AAC5E,QAAA,IAAI,QAAQ,KAAK,EAAE,EAAE;AACnB,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,QAAQ,CAAC;AACnE,YAAA,YAAY,EAAE,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;;aAChC;AACL,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC,0BAA0B,CAAC;AAClF,YAAA,OAAO,EAAE,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;;;AAKjE,IAAA,oBAAoB,CAAC,MAAqB,EAAA;AACxC,QAAA,MAAM,KAAK,GAAG,MAAM,EAAE,aAAa,EAAE,KAAK;QAC1C,MAAM,gBAAgB,GAAG,MAAM,EAAE,SAAS,EAAE,iBAAiB,IAAI,EAAE;QACnE,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;QACnD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,IAAG;YAClC,OAAO;gBACL,KAAK,EAAE,CAAI,CAAA,EAAA,GAAG,CAAE,CAAA;gBAChB,KAAK,EAAE,CAAM,GAAA,EAAA,GAAG,CAAG,CAAA,CAAA;gBACnB,WAAW,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE;aAC/C;AACH,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,qBAAqB,GAAG,CAAC,GAAG,SAAS,CAAC;AAC3C,QAAA,IAAI,CAAC,eAAe,GAAG,CAAC,GAAGA,kBAAgB,EAAE,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK;YACvE,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,KAAK,EAAE,KAAK,CAAC,KAAK;AAClB,YAAA,SAAS,EAAE,KAAK;AACjB,SAAA,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC;QAC/C,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;AAC7B,YAAA,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC;;;IAKxC,8BAA8B,CAAC,MAAqB,EAAE,MAAqB,EAAA;QACzE,IAAI,MAAM,KAAK,MAAM;YAAE;AACvB,QAAAC,QAAO,CAAC,cAAc,CAAC,MAAM,CAAC;AAC9B,QAAA,MAAM,WAAW,GAAG;AAClB,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,cAAc,EAAE,cAAc;AAC9B,YAAA,SAAS,EAAE,UAAU;SACtB;QACD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,IAAG;AACtD,YAAA,IAAI,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AAC5B,gBAAA,KAAK,CAAC,SAAS,CAAC,WAAW,GAAGA,QAAO,CAAC,CAAC,CAAC,CAA8C,2CAAA,EAAA,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC;;AAEnH,YAAA,OAAO,KAAK;AACd,SAAC,CAAC;QACF,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC;;IAIjD,yBAAyB,CAAC,MAAmB,EAAE,MAAmB,EAAA;QAChE,IAAI,MAAM,KAAK,MAAM;YAAE;AACvB,QAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;;AAG/B,IAAA,gBAAgB,CAAC,WAAyB,EAAA;QACxC,IAAI,WAAW,EAAE;AACf,YAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;AACtD,gBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA,EAAG,GAAG,CAAA,CAAE,EAAE,KAAK,CAAC;;;;IAelD,iBAAiB,GAAA;AACf,QAAA,KAAK,CAAC,qBAAqB,EAAE,mBAAmB,CAAC;QAGjD,cAAc,CAAC,MAAK;AAClB,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC;gBACvC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,EAAE,CAAC;;AAE7C,SAAC,CAAC;;IAGJ,iBAAiB,GAAA;AACf,QAAA,KAAK,CAAC,qBAAqB,EAAE,mBAAmB,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;;IAI3C,gBAAgB,GAAA;AACd,QAAA,KAAK,CAAC,qBAAqB,EAAE,kBAAkB,CAAC;QAChD,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,gBAAgB;QACpD,IAAI,IAAI,CAAC,qBAAqB,EAAE,aAAa,EAAE,KAAK,EAAE;YACpD,KAAK,GAAG,IAAI,CAAC,qBAAqB,EAAE,aAAa,EAAE,KAAK;;QAE1D,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC;AACpC,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC;;;IAItC,oBAAoB,GAAA;AAClB,QAAA,KAAK,CAAC,qBAAqB,EAAE,sBAAsB,CAAC;;AAItD,IAAA,oBAAoB,CAAC,KAAkB,EAAA;AACrC,QAAA,KAAK,CAAC,qBAAqB,EAAE,sBAAsB,EAAE,KAAK,CAAC;QAC3D,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE;AACpC,YAAA,IAAI,CAAC,eAAe,GAAG,oBAAoB;;aACtC;AACL,YAAA,IAAI,CAAC,eAAe,GAAG,EAAE;;;AAK7B,IAAA,mBAAmB,CAAC,KAAmD,EAAA;QACrE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,MAAM;AACpC,QAAA,IAAI,IAAI,KAAK,mBAAmB,EAAE;YAChC,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACrD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;YACnD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,IAAG;gBAClC,OAAO;oBACL,KAAK,EAAE,CAAI,CAAA,EAAA,GAAG,CAAE,CAAA;oBAChB,KAAK,EAAE,CAAM,GAAA,EAAA,GAAG,CAAG,CAAA,CAAA;oBACnB,WAAW,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE;iBAC/C;AACH,aAAC,CAAC;AACF,YAAA,IAAI,CAAC,qBAAqB,GAAG,CAAC,GAAG,SAAS,CAAC;AAC3C,YAAA,IAAI,CAAC,eAAe,GAAG,CAAC,GAAGD,kBAAgB,EAAE,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK;gBACvE,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,KAAK,EAAE,KAAK,CAAC,KAAK;AAClB,gBAAA,SAAS,EAAE,KAAK;AACjB,aAAA,CAAC,CAAC;YACH,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC;;;AAInD,IAAA,wBAAwB,CAAC,QAAgB,EAAA;AACvC,QAAA,KAAK,CAAC,qBAAqB,EAAE,0BAA0B,EAAE,QAAQ,CAAC;AAClE,QAAA,MAAM,KAAK,GAAG,QAAQ,IAAI,IAAI,CAAC,gBAAgB;AAC/C,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;YACrD,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,KAAK,UAAU,EAAE;AACpD,gBAAA,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,EAAE,EAAE;AAC1B,oBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AACrB,oBAAA,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAyB,uBAAA,CAAA,EAAE,IAAI,CAAC,QAAQ,CAAC;;qBACvF;oBACL,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;AACnD,oBAAA,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC;;;;;AAMnF,IAAA,eAAe,CAAC,KAAa,EAAA;QAC3B,IAAI,UAAU,GAAG,KAAK;AACtB,QAAA,CAAC,GAAGA,kBAAgB,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAG;AACtE,YAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK;YAE5B,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,CAAM,GAAA,EAAA,KAAK,CAAU,QAAA,CAAA,EAAE,GAAG,CAAC;YAEpD,UAAU,GAAG,UAAU,EAAE,OAAO,CAAC,KAAK,EAAE,yCAAyC,CAAC,IAAI,EAAE;AAC1F,SAAC,CAAC;AACF,QAAA,OAAO,UAAU;;IAGnB,6BAA6B,GAAA;QAC3B,MAAM,oBAAoB,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,KAAI;YAEpE,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC;YAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AACzC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1D,OAAO;AACL,gBAAA,WAAW,EAAE,MAAM;gBACnB,WAAW;gBACX,QAAQ;AACR,gBAAA,WAAW,EAAE,IAAI;gBACjB,IAAI;gBACJ,WAAW;aACZ;AACH,SAAC;QAGD,MAAM,aAAa,GAAG,CAAC,SAAoB,KAAK,SAAS,CAAC,YAAY,KAAK,CAAC,IAAI,SAAS,CAAC,WAAW,KAAK,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM;AAEhJ,QAAA,MAAM,cAAc,GAAG,UAAU,EAAE;QACnC,QAAQ,cAAc;AACpB,YAAA,KAAK,iBAAiB;YACtB,KAAK,QAAQ,EAAE;gBACb,MAAM,mBAAmB,GAAI,IAAI,CAAC,IAAI,CAAC,UAA+B,EAAE,YAAY,EAAE;AACtF,gBAAA,MAAM,SAAS,GAAG,mBAAmB,EAAE,SAAS;AAChD,gBAAA,MAAM,cAAc,GAAG,SAAS,EAAE,SAAS,IAAI,EAAE;gBACjD,MAAM,WAAW,GAAG,mBAAmB,IAAI,aAAa,CAAC,mBAAmB,CAAC;AAC7E,gBAAA,OAAO,oBAAoB,CAAC,cAAc,EAAE,mBAAmB,EAAE,WAAW,IAAI,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC;;YAE7G,KAAK,SAAS,EAAE;AACd,gBAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,EAAE;gBACzC,MAAM,eAAe,GAAG,SAAS,EAAE,UAAU,EAAE,SAAS,IAAI,EAAE;gBAC9D,MAAM,kBAAkB,GAAG,SAAS,IAAI,aAAa,CAAC,SAAS,CAAC;AAChE,gBAAA,OAAO,oBAAoB,CAAC,eAAe,EAAE,SAAS,EAAE,WAAW,IAAI,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,kBAAkB,CAAC;;YAEvH,KAAK,QAAQ,EAAE;AACb,gBAAA,MAAM,eAAe,GAAG,MAAM,CAAC,YAAY,EAAE;AAC7C,gBAAA,MAAM,UAAU,GAAI,eAAuB,EAAE,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,UAA8B,CAAC,CAAC,CAAC,CAAC;gBAC3G,MAAM,WAAW,GAAG,UAAU,EAAE,cAAc,EAAE,SAAS,IAAI,EAAE;gBAC/D,MAAM,iBAAiB,GAAG,eAAe,IAAI,aAAa,CAAC,eAAe,CAAC;AAC3E,gBAAA,OAAO,oBAAoB,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,IAAI,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE,iBAAiB,CAAC;;YAEtH,SAAS;gBACP,KAAK,CAAC,uBAAuB,CAAC;AAC9B,gBAAA,OAAO,IAAI;;;;AAKjB,IAAA,YAAY,CAAC,KAAY,EAAA;QACvB,IAAI,WAAW,GAAI,KAAK,CAAC,MAAyB,CAAC,WAAW,IAAI,EAAE;AACpE,QAAA,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;AAGnC,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,6BAA6B,EAAE;QAC7D,IAAI,CAAC,gBAAgB,EAAE;AACrB,YAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC;YAClC,IAAI,CAAC,aAAa,EAAE;YACpB;;QAEF,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,gBAAgB;QAE5E,IAAI,WAAW,KAAK,EAAE,IAAI,WAAW,GAAG,WAAW,EAAE;AACnD,YAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC;YAClC,IAAI,CAAC,aAAa,EAAE;YACpB;;AAEF,QAAA,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;YAGtB,IAAI,CAAC,WAAW,GAAG;AACjB,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,QAAQ,EAAE,WAAW;AACrB,gBAAA,KAAK,EAAE,WAAW;gBAClB,WAAW;aACZ;AACD,YAAA,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC;;aACrC;YACL,IAAI,CAAC,aAAa,EAAE;;AAEtB,QAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC;;AAGpC,IAAA,kBAAkB,CAAC,KAAK,EAAA;AACtB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,6BAA6B,EAAE;QAGtD,IAAI,SAAS,EAAE,WAAW,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE;AACvD,YAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,EAAE;;AAG9B,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;YACzB,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,IAAI,CAAC,oBAAoB,CAAC;YACpF,IAAI,YAAY,EAAE;gBAChB,YAAY,CAAC,KAAK,EAAE;AACpB,gBAAA,IAAI,CAAC,oBAAoB,GAAG,EAAE;;;AAE3B,aAAA,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;YACpC,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,IAAI,CAAC,oBAAoB,CAAC;YACpF,IAAI,YAAY,EAAE;AAChB,gBAAA,MAAM,UAAU,GAAG,YAAY,CAAC,kBAAkB;gBAClD,IAAI,UAAU,EAAE;AACd,oBAAA,IAAI,CAAC,oBAAoB,GAAG,UAAU,CAAC,EAAE;;qBACpC;oBACL,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK;;;iBAErD;gBACL,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK;;;AAErD,aAAA,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE;YAClC,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,IAAI,CAAC,oBAAoB,CAAC;YACpF,IAAI,YAAY,EAAE;AAChB,gBAAA,MAAM,UAAU,GAAG,YAAY,CAAC,sBAAsB;gBACtD,IAAI,UAAU,EAAE;AACd,oBAAA,IAAI,CAAC,oBAAoB,GAAG,UAAU,CAAC,EAAE;;qBACpC;AACL,oBAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK;;;iBAElF;AACL,gBAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK;;;AAElF,aAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;YACjC,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,aAAa,EAAE;;AACf,aAAA,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;AAC9D,YAAA,MAAM,UAAU,GAAG,SAAS,EAAE,IAAI,EAAE,UAAU;AAC9C,YAAA,IAAI,SAAS,EAAE,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,UAAU,IAAI,UAAU,CAAC,QAAQ,KAAK,MAAM,EAAE;gBAC3F,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC;gBACtC,UAAU,CAAC,MAAM,EAAE;gBACnB,IAAI,CAAC,aAAa,EAAE;gBACpB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,IAAI,EAAE,CAAC;;AAEzD,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,KAAK,EAAE,IAAI,SAAS,EAAE,WAAW,EAAE;AAC9D,gBAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,EAAE;AAC5B,gBAAA,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;;;;IAK/B,YAAY,CAAC,CAAQ,EAAE,MAA0D,EAAA;QAC/E,CAAC,CAAC,cAAc,EAAE;AAClB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ;AACtC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM;AAG1C,QAAA,IAAI,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU;QAC1C,IAAI,QAAQ,GAAqB,IAAI;QAErC,OAAO,WAAW,EAAE;AAClB,YAAA,IAAI,WAAW,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC9B,gBAAA,MAAM,eAAe,GAAG,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,IAAI,EAAE;gBAC5F,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC;AAC3D,gBAAA,IAAI,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;oBACtC,QAAQ,GAAG,WAAW;oBACtB;;;AAGJ,YAAA,WAAW,GAAG,WAAW,CAAC,WAAW;;QAGvC,IAAI,CAAC,QAAQ,EAAE;YACb;;AAGF,QAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,IAAI,EAAE;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;QACtC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC;AAC3C,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC;QAC3D,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC;AACvD,QAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE;QAGvC,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AAC9C,QAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC;QACxC,OAAO,CAAC,WAAW,GAAG,CAAA,EAAG,MAAM,CAAC,KAAK,EAAE;QACvC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC;AAE3D,QAAA,IAAI,SAAS,KAAK,EAAE,EAAE;YAEpB,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,OAAO,EAAE,gBAAgB,CAAC;AAC5D,YAAA,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC;;aACjC;YAEL,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC;YACnD,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,CAAC;AACrD,YAAA,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;;QAIjC,IAAI,CAAC,aAAa,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AAGrB,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,EAAE;AACjC,QAAA,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;QACvB,GAAG,EAAE,eAAe,EAAE;AACtB,QAAA,GAAG,EAAE,QAAQ,CAAC,QAAQ,CAAC;QAGvB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,CAAC;;IAGxD,2BAA2B,CAAC,QAAgB,EAAE,EAAA;QAC5C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,IAAG;YACtD,OAAO,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;AACzF,SAAC,CAAC;QAGF,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;YAClC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK;;;AAI5D,IAAA,IAAI,oBAAoB,GAAA;QACtB,OAAO,OAAO,IAAI,CAAC,SAAS,KAAK,WAAW,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,KAAK,UAAU,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,KAAK,UAAU;;AAGvJ,IAAA,gBAAgB,CAAC,IAAY,EAAE,OAAA,GAAmB,KAAK,EAAA;QACrD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;QACtC,IAAI,KAAK,KAAK,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACzC,YAAA,IAAI,CAAC,eAAe,GAAG,oBAAoB;YAC3C,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAA,uBAAA,CAAyB,EAAE,IAAI,CAAC,QAAQ,CAAC;;aACpH;AACL,YAAA,IAAI,CAAC,eAAe,GAAG,EAAE;AACzB,YAAA,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;;AAGlF,QAAA,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC;QAC3E,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;;;IAI7D,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,QAAA,IAAI,CAAC,oBAAoB,GAAG,EAAE;;AAGhC,IAAA,YAAY,CAAC,KAA6C,EAAA;AACxD,QAAA,QACE,CAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAC,aAAa,EAAA,EACtB,CAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAC,OAAO,IAAE,KAAK,CAAC,KAAK,CAAQ,EACxC,CAAM,CAAA,MAAA,EAAA,EAAA,KAAK,EAAC,aAAa,EAAE,EAAA,KAAK,CAAC,WAAW,CAAQ,CAChD;;IAcV,MAAM,GAAA;AACJ,QAAA,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,mBAAmB,EAAC,IAAI,EAAC,KAAK,EAAA,EACvC,CAAO,CAAA,OAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,OAAO,EAAC,OAAO,EAAA,EACpB,CAAA,CAAA,GAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACGC,QAAO,CAAC,CAAC,CAAC,6BAA6B,CAAC,EACzC,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,KAAK,EAAC,UAAU,EAAA,EAAA,GAAA,CAAS,CAC7B,CACE,EACR,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,KAAK,EAAE;AACL,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,KAAK,EAAE,IAAI,CAAC,eAAe,KAAK,EAAE;aACnC,EACD,IAAI,EAAC,YAAY,EACjB,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,QAAQ,GAAG,EAAoB,CAAC,EACjD,eAAe,EAAC,MAAM,EACtB,OAAO,EAAE,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAClC,SAAS,EAAE,KAAK,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAC7C,CAAA,EACN,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,CAAC,KACtE,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,eAAe,EAAC,IAAI,EAAC,uBAAuB,EAAA,EACrD,CAAA,CAAA,IAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAI,QAAQ,EAAC,IAAI,EAAC,IAAI,EAAC,SAAS,EAAa,YAAA,EAAA,IAAI,CAAC,IAAI,EAAA,uBAAA,EAAyB,IAAI,CAAC,oBAAoB,IACrG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,KAC7B,UACE,QAAQ,EAAC,GAAG,EACZ,GAAG,EAAE,MAAM,CAAC,KAAK,EACjB,EAAE,EAAE,MAAM,CAAC,KAAK,EAChB,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,oBAAoB,KAAK,MAAM,CAAC,KAAK,EAAE,EAC7D,OAAO,EAAE,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,EAC1C,IAAI,EAAC,QAAQ,EAAA,EAEZ,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CACjC,CACN,CAAC,CACC,CACD,CACP,EACA,CAAC,IAAI,CAAC,WAAW,KAChB,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,WAAW,EAAA,EACpBA,QAAO,CAAC,CAAC,CAAC,0BAA0B,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAEA,QAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC,EAAE,CAAC,OAAE,CAAc,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EAAA,GAAA,CAAA,EAAC,GAAG,EAC1HA,QAAO,CAAC,CAAC,CAAC,0BAA0B,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAC1D,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,YAAY,EAAA,EACtB,CAAA,CAAA,mBAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACE,CAAW,CAAA,WAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,cAAc,EAAG,CAAA,EACjC,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,iBAAiB,EAAA,EACzBA,QAAO,CAAC,CAAC,CAAC,8BAA8B,CAAC,OAAE,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EAAO,YAAY,CAAQ,CAClE,CACW,CACf,CACF,CACR,EACA,IAAI,CAAC,eAAe,IAAI,EAAE,IAAI,6DAAM,KAAK,EAAC,eAAe,EAAA,EAAEA,QAAO,CAAC,CAAC,CAAC,CAAmB,gBAAA,EAAA,IAAI,CAAC,eAAe,CAAA,CAAE,CAAC,CAAQ,CACpH,CACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAvDX,UAAA,CAAA;AAVC,IAAA,iBAAiB,CAAqG;AACrH,QAAA,IAAI,EAAE,mBAAmB;QACzB,YAAY,EAAE,IAAI,GAAG,CAAC;YACpB,CAAC,uCAAuC,EAAE,uBAAuB,CAAC;YAClE,CAAC,kCAAkC,EAAE,kBAAkB,CAAC;YACxD,CAAC,6BAA6B,EAAE,aAAa,CAAC;SAC/C,CAAC;AACF,QAAA,YAAY,EAAE,EAAE;AAChB,QAAA,iBAAiB,EAAE,IAAI;KACxB,CAAC;;;;CA0DD,EAAA,eAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["__stencil_proxyCustomElement","HTMLElement","eventTitleTokens","i18next"],"sources":["src/components/scheduler-editor/nylas-event-title/nylas-event-title.scss?tag=nylas-event-title&encapsulation=shadow","src/components/scheduler-editor/nylas-event-title/nylas-event-title.tsx"],"sourcesContent":["@use '../../../common/styles/variables' as *;\n@use '../../../common/mixins/inputs' as *;\n\n:host {\n display: block;\n height: auto;\n @include default-css-variables;\n width: 100%;\n}\n\n.nylas-event-title {\n display: flex;\n flex-direction: column;\n gap: 4px;\n position: relative;\n text-align: left;\n color: var(--nylas-base-900);\n\n div.title {\n // Apply textfield styles but override display and alignment for contentEditable\n border-radius: var(--nylas-border-radius-2x);\n border: 1px solid var(--nylas-base-300);\n background: var(--nylas-base-0);\n width: -webkit-fill-available;\n height: 48px;\n padding: 12px 16px;\n overflow: auto;\n white-space: nowrap;\n scrollbar-width: thin;\n color: var(--nylas-base-900);\n font-family: var(--nylas-font-family);\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n line-height: 150%;\n -webkit-text-fill-color: var(--nylas-base-900);\n display: block;\n\n &::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n }\n\n &:focus {\n color: var(--nylas-base-900);\n -webkit-text-fill-color: var(--nylas-base-900);\n outline: 2px solid var(--nylas-primary);\n outline-offset: 2px;\n }\n\n &:focus-visible {\n color: var(--nylas-base-900);\n -webkit-text-fill-color: var(--nylas-base-900);\n outline: 2px solid var(--nylas-primary);\n outline-offset: 2px;\n }\n\n &.error {\n border-color: var(--nylas-error);\n border-width: 2px;\n }\n }\n\n input {\n padding: 12px 16px;\n border-width: 1;\n border-radius: 8px;\n border: 1px solid var(--nylas-base-200);\n }\n\n span.help-text {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n color: var(--nylas-base-500);\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 21px;\n position: relative;\n\n span.label-icon {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n\n tooltip-component {\n display: flex;\n &::part(tc__container) {\n position: unset;\n }\n\n &::part(tc__content) {\n position: absolute;\n top: 4px;\n left: 50%;\n transform: translateX(-50%);\n }\n }\n }\n }\n\n span.error-message {\n color: var(--nylas-error);\n }\n\n label {\n @include input-label;\n flex-direction: column;\n gap: 4px;\n font-family: var(--nylas-font-family);\n align-items: flex-start;\n\n p {\n margin: 0;\n display: flex;\n align-items: center;\n }\n\n span.required {\n color: var(--nylas-error, #cc4841);\n }\n\n span.label-icon {\n margin-left: 4px;\n\n tooltip-component {\n display: flex;\n }\n }\n }\n}\n\n.highlighted-tag {\n background-color: var(--nylas-base-200);\n border-radius: var(--nylas-border-radius);\n padding: 5px;\n margin-left: 4px;\n}\n\n.token-options {\n display: block;\n background-color: var(--nylas-base-0);\n width: 100%;\n max-height: 336px;\n overflow: auto;\n z-index: 1;\n border-radius: 4px;\n position: absolute;\n top: calc(48px + 24px + 8px); // 48px is the height of the input, 24px is the height of the label, 8px is the gap between the label and the input\n\n box-shadow: 0px 4px 6px -2px #0000000d;\n box-shadow: 0px 10px 15px -3px #0000001a;\n\n @media #{$mobile} {\n right: 0;\n width: 325px;\n max-width: unset;\n }\n\n ul {\n padding: 0;\n list-style-type: none;\n color: var(--nylas-base-900);\n max-height: 336px;\n margin: 0;\n\n li {\n padding: 16px, 12px, 16px, 12px;\n color: var(--nylas-base-900);\n padding: 12px 16px;\n text-decoration: none;\n display: block;\n font-family: inherit;\n font-size: 14px;\n font-weight: 400;\n line-height: 20px;\n letter-spacing: 0px;\n text-align: left;\n cursor: pointer;\n\n .token-label {\n display: flex;\n flex-direction: column;\n font-weight: 400;\n\n .token {\n color: var(--nylas-abse-900);\n font-size: 16px;\n line-height: 24px;\n }\n\n .description {\n color: var(--nylas-base-600);\n font-size: 14px;\n line-height: 21px;\n }\n }\n\n &:hover,\n &:focus,\n &:active,\n &.active {\n background-color: var(--nylas-base-100);\n\n .token-label {\n .token {\n color: var(--nylas-primary);\n }\n }\n }\n }\n }\n\n .selected {\n background-color: var(--nylas-base-100);\n }\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { debug, getBrowser, isNonPrintableKey, sanitize } from '@/utils/utils';\nimport { AttachInternals, Component, Host, State, h, Element, Prop, Watch, Event, EventEmitter, Listen } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\nimport { EVENT_TITLE_TOKENS as eventTitleTokens } from '@/common/constants';\nimport { Configuration } from '@nylas/core';\nimport i18next from '@/utils/i18n';\nimport { LANGUAGE_CODE } from '@/common/constants';\nimport { ThemeConfig } from '@nylas/core';\n\ninterface CustomShadowRoot extends ShadowRoot {\n getSelection: () => Selection | null;\n}\n\ntype Token = {\n token: string;\n value: string;\n description: string;\n};\n\n/**\n * The `nylas-event-title` component is a form input for the title of an event.\n * @part net - The event title container\n * @part net__title - The event title input\n * @part net__dropdown-content - The token options container\n */\n@Component({\n tag: 'nylas-event-title',\n styleUrl: 'nylas-event-title.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasEventTitle {\n @Element() host!: HTMLElement;\n @AttachInternals() internals!: ElementInternals;\n\n // Properties\n /**\n * @standalone\n * The selected config\n */\n @Prop() selectedConfiguration?: Configuration;\n /**\n * @standalone\n * The title of the event from the cofiguration.\n */\n @Prop() eventTitle?: string = this.selectedConfiguration?.event_booking?.title;\n /**\n * @standalone\n * The name attribute of this component.\n */\n @Prop() name: string = 'title';\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: LANGUAGE_CODE;\n\n /**\n * Whether to show the tokens dropdown.\n */\n @Prop() noTemplates: boolean = false;\n /**\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: ThemeConfig;\n\n // State variables\n /**\n * Whether to show the tokens dropdown.\n */\n @State() showTokens: boolean = false;\n /**\n * The available token options for the dropdown.\n */\n @State() availableTokens: { label: string; value: string; labelHTML: Token }[] = eventTitleTokens.map(token => ({\n label: token.token,\n value: token.value,\n labelHTML: token,\n }));\n /**\n * The filtered token options for the dropdown based on the current query.\n */\n @State() filteredTokens: { label: string; value: string; labelHTML: Token }[] = this.availableTokens;\n /**\n * The aria-activedescendant attribute value. This is used to indicate the\n * currently active descendant in the tokens dropdown.\n */\n @State() ariaActivedescendant: string = '';\n /**\n * Stores the reference to the current word being typed.\n * This is used to update the event title with the selected token tag when\n * an option is selected from the dropdown by clicking on it.\n */\n @State() currentWord: {\n $value: string;\n fullText: string;\n index: number;\n focusOffset: number;\n } = { $value: '', fullText: '', index: -1, focusOffset: -1 };\n\n @State() validationError: string = '';\n @State() configEventTitle: string = '';\n\n @State() additionalFieldTokens: Token[] = [];\n // Reference to the title div element\n private titleRef!: HTMLDivElement;\n\n /**\n * When a name prop is passed, stencil does not automatically set the name attribute on the host element.\n * Since this component is form-associated, the name attribute is required for form submission.\n * This is a workaround to ensure that the name attribute is set on the host element.\n */\n @Watch('name')\n elementNameChangedHandler(newValue: string) {\n debug('[nylas-event-title]', 'elementNameChangedHandler', newValue);\n this.host.setAttribute('name', newValue);\n }\n\n @Watch('ariaActivedescendant')\n ariaActivedescendantChangedHandler(newValue: string) {\n debug('[nylas-event-title]', 'ariaActivedescendantChangedHandler', newValue);\n if (newValue !== '') {\n const activeOption = this.host.shadowRoot?.getElementById(newValue);\n activeOption?.classList.add('active');\n } else {\n const options = this.host.shadowRoot?.querySelectorAll('.token-options li.active');\n options?.forEach(option => option.classList.remove('active'));\n }\n }\n\n @Watch('selectedConfiguration')\n configChangedHandler(newVal: Configuration) {\n const title = newVal?.event_booking?.title;\n const additionalFields = newVal?.scheduler?.additional_fields || {};\n const newKeys = Object.keys(additionalFields) || [];\n const newTokens = newKeys.map(key => {\n return {\n token: `$${key}`,\n value: `\\${${key}}`,\n description: additionalFields[key].label || '',\n };\n });\n this.additionalFieldTokens = [...newTokens];\n this.availableTokens = [...eventTitleTokens, ...newTokens].map(token => ({\n label: token.token,\n value: token.value,\n labelHTML: token,\n }));\n this.filteredTokens = [...this.availableTokens];\n if (title) {\n this.configEventTitle = title;\n this.updateEventTitleFromProp(title);\n }\n }\n\n @Watch('selectedLanguage')\n selectedLanguageChangedHandler(newVal: LANGUAGE_CODE, oldVal: LANGUAGE_CODE) {\n if (newVal === oldVal) return;\n i18next.changeLanguage(newVal);\n const titleTokens = {\n $invitee: 'invitee',\n $invitee_email: 'inviteeEmail',\n $duration: 'duration',\n };\n this.availableTokens = this.availableTokens.map(token => {\n if (titleTokens[token.label]) {\n token.labelHTML.description = i18next.t(`nylasEventTitle.eventTitleTokenDescription.${titleTokens[token.label]}`);\n }\n return token;\n });\n this.filteredTokens = [...this.availableTokens];\n }\n\n @Watch('themeConfig')\n themeConfigChangedHandler(newVal: ThemeConfig, oldVal: ThemeConfig) {\n if (newVal === oldVal) return;\n this.applyThemeConfig(newVal);\n }\n\n applyThemeConfig(themeConfig?: ThemeConfig) {\n if (themeConfig) {\n for (const [key, value] of Object.entries(themeConfig)) {\n this.host.style.setProperty(`${key}`, value);\n }\n }\n }\n\n // Events\n /**\n * This event is fired when the value of the event title changes.\n */\n @Event() valueChanged!: EventEmitter<{\n value: string;\n name: string;\n }>;\n\n // Lifecycle methods\n connectedCallback() {\n debug('[nylas-event-title]', 'connectedCallback');\n // Use queueMicrotask to defer theme application until after React has set props.\n // This fixes the timing issue where connectedCallback fires before React sets themeConfig.\n queueMicrotask(() => {\n if (this.themeConfig) {\n this.applyThemeConfig(this.themeConfig);\n this.host.setAttribute('data-themed', '');\n }\n });\n }\n\n componentWillLoad() {\n debug('[nylas-event-title]', 'componentWillLoad');\n this.host.setAttribute('name', this.name);\n // Theme already applied in connectedCallback via queueMicrotask\n }\n\n componentDidLoad() {\n debug('[nylas-event-title]', 'componentDidLoad');\n let title = this.eventTitle || this.configEventTitle;\n if (this.selectedConfiguration?.event_booking?.title) {\n title = this.selectedConfiguration?.event_booking?.title;\n }\n if (title) {\n this.updateEventTitleFromProp(title);\n this.updateEventTitle(title, true);\n }\n }\n\n disconnectedCallback() {\n debug('[nylas-event-title]', 'disconnectedCallback');\n }\n\n @Listen('formSubmitted', { target: 'window' })\n formSubmittedHandler(event: CustomEvent) {\n debug('[nylas-event-title]', 'formSubmittedHandler', event);\n if (!this.internals?.validity?.valid) {\n this.validationError = 'eventTitleRequired';\n } else {\n this.validationError = '';\n }\n }\n\n @Listen('valueChanged', { target: 'document' })\n valueChangedHandler(event: CustomEvent<{ value: string; name: string }>) {\n const { name, value } = event.detail;\n if (name === 'additional-fields') {\n const additionalFields = JSON.parse(value.toString());\n const newKeys = Object.keys(additionalFields) || [];\n const newTokens = newKeys.map(key => {\n return {\n token: `$${key}`,\n value: `\\${${key}}`,\n description: additionalFields[key].label || '',\n };\n });\n this.additionalFieldTokens = [...newTokens];\n this.availableTokens = [...eventTitleTokens, ...newTokens].map(token => ({\n label: token.token,\n value: token.value,\n labelHTML: token,\n }));\n this.filteredTokens = [...this.availableTokens];\n }\n }\n\n updateEventTitleFromProp(newValue: string) {\n debug('[nylas-event-title]', 'eventTitleChangedHandler', newValue);\n const title = newValue || this.configEventTitle;\n if (this.titleRef) {\n this.titleRef.innerHTML = this.highlightTokens(title);\n if (typeof this.internals.setValidity === 'function') {\n if (!title || title === '') {\n this.titleRef.focus();\n this.internals?.setValidity({ customError: true }, `Event title is required`, this.titleRef);\n } else {\n this.internals?.setValidity({ customError: false });\n this.isInternalsAvailable && this.internals?.setFormValue(title, this.name);\n }\n }\n }\n }\n\n highlightTokens(title: string) {\n let outputHtml = title;\n [...eventTitleTokens, ...this.additionalFieldTokens].forEach(tokenObj => {\n const token = tokenObj.value;\n // Create a regular expression that matches the token as a whole word\n const regex = new RegExp(`(\\\\${token})(?!\\\\w)`, 'g');\n // Replace the token with a span element\n outputHtml = outputHtml?.replace(regex, '<span class=\"highlighted-tag\">$1</span>') || '';\n });\n return outputHtml;\n }\n\n getCurrentSelectionForBrowser() {\n const getSelectionTextData = (nodeValue, offset, node, allSelected) => {\n // Remove zero-width space characters from the text, because they are not visible and cause issues with the selection\n const text = nodeValue.replace(/[\\u200B-\\u200D\\uFEFF]/g, '');\n const dollarIndex = text.lastIndexOf('$');\n const lastWord = text.substring(dollarIndex).split(' ')[0];\n return {\n focusOffset: offset,\n dollarIndex,\n lastWord,\n currentText: text,\n node,\n allSelected,\n };\n };\n\n // Check if the selection has selected all the text in the node, we need this to handle the case where the user selects all the text and then types or deletes\n const isAllSelected = (selection: Selection) => selection.anchorOffset === 0 && selection.focusOffset === selection.focusNode?.nodeValue?.length;\n\n const currentBrowser = getBrowser();\n switch (currentBrowser) {\n case 'Edge (Chromium)':\n case 'Chrome': {\n const shadowRootSelection = (this.host.shadowRoot as CustomShadowRoot)?.getSelection();\n const focusNode = shadowRootSelection?.focusNode;\n const focusNodeValue = focusNode?.nodeValue || '';\n const allSelected = shadowRootSelection && isAllSelected(shadowRootSelection);\n return getSelectionTextData(focusNodeValue, shadowRootSelection?.focusOffset || -1, focusNode, allSelected);\n }\n case 'Firefox': {\n const selection = document.getSelection();\n const anchorNodeValue = selection?.anchorNode?.nodeValue || '';\n const allSelectedFirefox = selection && isAllSelected(selection);\n return getSelectionTextData(anchorNodeValue, selection?.focusOffset || -1, selection?.anchorNode, allSelectedFirefox);\n }\n case 'Safari': {\n const windowSelection = window.getSelection();\n const anchorNode = (windowSelection as any)?.getComposedRanges(this.host.shadowRoot as CustomShadowRoot)[0];\n const currentText = anchorNode?.startContainer?.nodeValue || '';\n const allSelectedSafari = windowSelection && isAllSelected(windowSelection);\n return getSelectionTextData(currentText, anchorNode?.endOffset || -1, anchorNode?.startContainer, allSelectedSafari);\n }\n default: {\n debug('Browser not supported');\n return null;\n }\n }\n }\n\n handleChange(event: Event) {\n let textContent = (event.target as HTMLDivElement).textContent || '';\n textContent = sanitize(textContent);\n\n // All browsers handle Selection within Shadow DOM differently, so get the current selection based on the browser\n const currentSelection = this.getCurrentSelectionForBrowser();\n if (!currentSelection) {\n this.updateEventTitle(textContent);\n this.resetDropdown();\n return;\n }\n const { focusOffset, dollarIndex, lastWord, currentText } = currentSelection;\n\n if (dollarIndex === -1 || focusOffset < dollarIndex) {\n this.updateEventTitle(textContent);\n this.resetDropdown();\n return;\n }\n if (lastWord.startsWith('$')) {\n this.showTokens = true;\n // Update the current word being typed, we need this reference to update the event title with the selected token\n // because the user can select an option from the dropdown by clicking on it, which will not trigger the input event.\n this.currentWord = {\n $value: lastWord,\n fullText: currentText,\n index: dollarIndex,\n focusOffset,\n };\n this.populateSuggestionsDropdown(lastWord);\n } else {\n this.resetDropdown();\n }\n this.updateEventTitle(textContent);\n }\n\n handleInputKeyDown(event) {\n const selection = this.getCurrentSelectionForBrowser();\n\n // If no text is remaining in the title, reset the title to an empty string\n if (selection?.allSelected && !isNonPrintableKey(event)) {\n this.titleRef.innerHTML = '';\n }\n\n if (event.key === 'Enter') {\n event.preventDefault();\n const activeOption = this.host.shadowRoot?.getElementById(this.ariaActivedescendant);\n if (activeOption) {\n activeOption.click();\n this.ariaActivedescendant = '';\n }\n } else if (event.key === 'ArrowDown') {\n event.preventDefault();\n const activeOption = this.host.shadowRoot?.getElementById(this.ariaActivedescendant);\n if (activeOption) {\n const nextOption = activeOption.nextElementSibling;\n if (nextOption) {\n this.ariaActivedescendant = nextOption.id;\n } else {\n this.ariaActivedescendant = this.filteredTokens[0].label;\n }\n } else {\n this.ariaActivedescendant = this.filteredTokens[0].label;\n }\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n const activeOption = this.host.shadowRoot?.getElementById(this.ariaActivedescendant);\n if (activeOption) {\n const prevOption = activeOption.previousElementSibling;\n if (prevOption) {\n this.ariaActivedescendant = prevOption.id;\n } else {\n this.ariaActivedescendant = this.filteredTokens[this.filteredTokens.length - 1].label;\n }\n } else {\n this.ariaActivedescendant = this.filteredTokens[this.filteredTokens.length - 1].label;\n }\n } else if (event.key === 'Escape') {\n event.preventDefault();\n this.resetDropdown();\n } else if (event.key === 'Backspace' || event.key === 'Delete') {\n const parentNode = selection?.node?.parentNode;\n if (selection?.currentText.startsWith('${') && parentNode && parentNode.nodeName === 'SPAN') {\n event.preventDefault();\n parentNode.removeChild(selection.node);\n parentNode.remove();\n this.resetDropdown();\n this.updateEventTitle(this.titleRef?.textContent || '');\n }\n if (this.titleRef.textContent === '' || selection?.allSelected) {\n this.titleRef.innerHTML = '';\n this.updateEventTitle('');\n }\n }\n }\n\n selectOption(e: Event, option: { label: string; value: string; labelHTML: Token }) {\n e.preventDefault();\n const word = this.currentWord.fullText;\n const dollarWord = this.currentWord.$value;\n\n // Traverse the DOM to find the text node that contains the current word fullText\n let currentNode = this.titleRef.firstChild;\n let textNode: ChildNode | null = null;\n\n while (currentNode) {\n if (currentNode.nodeType === 3) {\n const currentNodeText = currentNode.textContent?.replace(/[\\u200B-\\u200D\\uFEFF]/g, '') || '';\n const wordText = word.replace(/[\\u200B-\\u200D\\uFEFF]/g, '');\n if (currentNodeText.includes(wordText)) {\n textNode = currentNode;\n break;\n }\n }\n currentNode = currentNode.nextSibling;\n }\n\n if (!textNode) {\n return;\n }\n // Split the text node into three parts: text before the token, the token, and text after the token\n const text = textNode.textContent || '';\n const index = text.indexOf(dollarWord);\n const textBefore = text.substring(0, index);\n const textAfter = text.substring(index + dollarWord.length);\n const newTextNode = document.createTextNode(textBefore);\n const newRange = document.createRange();\n\n // Create a new span element to replace the text node\n const tagSpan = document.createElement('span');\n tagSpan.classList.add('highlighted-tag');\n tagSpan.textContent = `${option.value}`;\n const newTextNodeAfter = document.createTextNode(textAfter);\n\n if (textAfter !== '') {\n // If there is text after the token, add it to the new span element\n textNode.replaceWith(newTextNode, tagSpan, newTextNodeAfter);\n newRange.setStart(newTextNodeAfter, 1);\n } else {\n // If there is no text after the token, add a zero-width space character (Without this, the cursor will not move outside the highlighted span element)\n const afterNode = document.createTextNode('\\u200B');\n textNode.replaceWith(newTextNode, tagSpan, afterNode);\n newRange.setStart(afterNode, 1);\n }\n\n // Hide the dropdown\n this.resetDropdown();\n this.titleRef.focus();\n\n // Set the focus to the new span element\n const sel = window.getSelection();\n newRange.collapse(true);\n sel?.removeAllRanges();\n sel?.addRange(newRange);\n\n // Update the event title with the selected token\n this.updateEventTitle(this.titleRef.textContent || '');\n }\n\n populateSuggestionsDropdown(query: string = '') {\n this.filteredTokens = this.availableTokens.filter(obj => {\n return obj.label.startsWith(query.toString()) || obj.value.startsWith(query.toString());\n });\n\n // Set the first option as the active descendant\n if (this.filteredTokens.length > 0) {\n this.ariaActivedescendant = this.filteredTokens[0].label;\n }\n }\n\n get isInternalsAvailable() {\n return typeof this.internals !== 'undefined' && typeof this.internals.setValidity === 'function' && typeof this.internals.setFormValue === 'function';\n }\n\n updateEventTitle(text: string, noValue: boolean = false) {\n const value = text.replace(/ +/g, ' ');\n if (value === '' || /^[\\s]*$/.test(value)) {\n this.validationError = 'eventTitleRequired';\n this.isInternalsAvailable && this.internals?.setValidity({ customError: true }, `Event title is required`, this.titleRef);\n } else {\n this.validationError = '';\n this.isInternalsAvailable && this.internals?.setValidity({ customError: false });\n }\n\n this.isInternalsAvailable && this.internals?.setFormValue(value, this.name);\n if (!noValue) {\n this.valueChanged.emit({ value: value, name: this.name });\n }\n }\n\n resetDropdown() {\n this.showTokens = false;\n this.ariaActivedescendant = '';\n }\n\n getLabelHTML(token: { token: string; description: string }) {\n return (\n <div class=\"token-label\">\n <span class=\"token\">{token.token}</span>\n <span class=\"description\">{token.description}</span>\n </div>\n );\n }\n\n @RegisterComponent<NylasEventTitle, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-event-title',\n stateToProps: new Map([\n ['schedulerConfig.selectedConfiguration', 'selectedConfiguration'],\n ['schedulerConfig.selectedLanguage', 'selectedLanguage'],\n ['schedulerConfig.themeConfig', 'themeConfig'],\n ]),\n eventToProps: {},\n fireRegisterEvent: true,\n })\n render() {\n return (\n <Host>\n <div class=\"nylas-event-title\" part=\"net\">\n <label htmlFor=\"title\">\n <p>\n {i18next.t('nylasEventTitle.headerTitle')}\n <span class=\"required\">*</span>\n </p>\n </label>\n <div\n class={{\n title: true,\n error: this.validationError !== '',\n }}\n part=\"net__title\"\n ref={el => (this.titleRef = el as HTMLDivElement)}\n contentEditable=\"true\"\n onInput={e => this.handleChange(e)}\n onKeyDown={event => this.handleInputKeyDown(event)}\n ></div>\n {!this.noTemplates && this.showTokens && this.filteredTokens?.length > 0 && (\n <div class=\"token-options\" part=\"net__dropdown-content\">\n <ul tabindex=\"-1\" role=\"listbox\" aria-label={this.name} aria-activedescendant={this.ariaActivedescendant}>\n {this.filteredTokens.map(option => (\n <li\n tabindex=\"0\"\n key={option.label}\n id={option.label}\n class={{ active: this.ariaActivedescendant === option.label }}\n onClick={e => this.selectOption(e, option)}\n role=\"option\"\n >\n {this.getLabelHTML(option.labelHTML)}\n </li>\n ))}\n </ul>\n </div>\n )}\n {!this.noTemplates && (\n <span class=\"help-text\">\n {i18next.t('nylasEventTitle.helpText', { context: 'start', field: i18next.t('nylasEventTitle.title') })} <code>$</code>{' '}\n {i18next.t('nylasEventTitle.helpText', { context: 'end' })}\n <span class=\"label-icon\">\n <tooltip-component>\n <info-icon slot=\"tooltip-icon\" />\n <span slot=\"tooltip-content\">\n {i18next.t('nylasEventTitle.tooltip.desc')} <code>{'${invitee}'}</code>\n </span>\n </tooltip-component>\n </span>\n </span>\n )}\n {this.validationError != '' && <span class=\"error-message\">{i18next.t(`nylasEventTitle.${this.validationError}`)}</span>}\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"p-D0qMgeBc.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement","eventTitleTokens","i18next"],"sources":["src/components/scheduler-editor/nylas-event-title/nylas-event-title.scss?tag=nylas-event-title&encapsulation=shadow","src/components/scheduler-editor/nylas-event-title/nylas-event-title.tsx"],"sourcesContent":["@use '../../../common/styles/variables' as *;\n@use '../../../common/mixins/inputs' as *;\n\n:host {\n display: block;\n height: auto;\n @include default-css-variables;\n width: 100%;\n}\n\n.nylas-event-title {\n display: flex;\n flex-direction: column;\n gap: 4px;\n position: relative;\n text-align: left;\n color: var(--nylas-base-900);\n\n div.title {\n // Apply textfield styles but override display and alignment for contentEditable\n border-radius: var(--nylas-border-radius-2x);\n border: 1px solid var(--nylas-base-300);\n background: var(--nylas-base-0);\n width: -webkit-fill-available;\n height: 48px;\n padding: 12px 16px;\n overflow: auto;\n white-space: nowrap;\n scrollbar-width: thin;\n color: var(--nylas-base-900);\n font-family: var(--nylas-font-family);\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n line-height: 150%;\n -webkit-text-fill-color: var(--nylas-base-900);\n display: block;\n\n &::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n }\n\n &:focus {\n color: var(--nylas-base-900);\n -webkit-text-fill-color: var(--nylas-base-900);\n outline: 2px solid var(--nylas-primary);\n outline-offset: 2px;\n }\n\n &:focus-visible {\n color: var(--nylas-base-900);\n -webkit-text-fill-color: var(--nylas-base-900);\n outline: 2px solid var(--nylas-primary);\n outline-offset: 2px;\n }\n\n &.error {\n border-color: var(--nylas-error);\n border-width: 2px;\n }\n }\n\n input {\n padding: 12px 16px;\n border-width: 1;\n border-radius: 8px;\n border: 1px solid var(--nylas-base-200);\n }\n\n span.help-text {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n color: var(--nylas-base-500);\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 21px;\n position: relative;\n\n span.label-icon {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n\n tooltip-component {\n display: flex;\n &::part(tc__container) {\n position: unset;\n }\n\n &::part(tc__content) {\n position: absolute;\n top: 4px;\n left: 50%;\n transform: translateX(-50%);\n }\n }\n }\n }\n\n span.error-message {\n color: var(--nylas-error);\n }\n\n label {\n @include input-label;\n flex-direction: column;\n gap: 4px;\n font-family: var(--nylas-font-family);\n align-items: flex-start;\n\n p {\n margin: 0;\n display: flex;\n align-items: center;\n }\n\n span.required {\n color: var(--nylas-error, #cc4841);\n }\n\n span.label-icon {\n margin-left: 4px;\n\n tooltip-component {\n display: flex;\n }\n }\n }\n}\n\n.highlighted-tag {\n background-color: var(--nylas-base-200);\n border-radius: var(--nylas-border-radius);\n padding: 5px;\n margin-left: 4px;\n}\n\n.token-options {\n display: block;\n background-color: var(--nylas-base-0);\n width: 100%;\n max-height: 336px;\n overflow: auto;\n z-index: 1;\n border-radius: 4px;\n position: absolute;\n top: calc(48px + 24px + 8px); // 48px is the height of the input, 24px is the height of the label, 8px is the gap between the label and the input\n\n box-shadow: 0px 4px 6px -2px #0000000d;\n box-shadow: 0px 10px 15px -3px #0000001a;\n\n @media #{$mobile} {\n right: 0;\n width: 325px;\n max-width: unset;\n }\n\n ul {\n padding: 0;\n list-style-type: none;\n color: var(--nylas-base-900);\n max-height: 336px;\n margin: 0;\n\n li {\n padding: 16px, 12px, 16px, 12px;\n color: var(--nylas-base-900);\n padding: 12px 16px;\n text-decoration: none;\n display: block;\n font-family: inherit;\n font-size: 14px;\n font-weight: 400;\n line-height: 20px;\n letter-spacing: 0px;\n text-align: left;\n cursor: pointer;\n\n .token-label {\n display: flex;\n flex-direction: column;\n font-weight: 400;\n\n .token {\n color: var(--nylas-abse-900);\n font-size: 16px;\n line-height: 24px;\n }\n\n .description {\n color: var(--nylas-base-600);\n font-size: 14px;\n line-height: 21px;\n }\n }\n\n &:hover,\n &:focus,\n &:active,\n &.active {\n background-color: var(--nylas-base-100);\n\n .token-label {\n .token {\n color: var(--nylas-primary);\n }\n }\n }\n }\n }\n\n .selected {\n background-color: var(--nylas-base-100);\n }\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { debug, getBrowser, isNonPrintableKey, sanitize } from '@/utils/utils';\nimport { AttachInternals, Component, Host, State, h, Element, Prop, Watch, Event, EventEmitter, Listen } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\nimport { EVENT_TITLE_TOKENS as eventTitleTokens } from '@/common/constants';\nimport { Configuration } from '@nylas/core';\nimport i18next from '@/utils/i18n';\nimport { LANGUAGE_CODE } from '@/common/constants';\nimport { ThemeConfig } from '@nylas/core';\n\ninterface CustomShadowRoot extends ShadowRoot {\n getSelection: () => Selection | null;\n}\n\ntype Token = {\n token: string;\n value: string;\n description: string;\n};\n\n/**\n * The `nylas-event-title` component is a form input for the title of an event.\n * @part net - The event title container\n * @part net__title - The event title input\n * @part net__dropdown-content - The token options container\n */\n@Component({\n tag: 'nylas-event-title',\n styleUrl: 'nylas-event-title.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasEventTitle {\n @Element() host!: HTMLElement;\n @AttachInternals() internals!: ElementInternals;\n\n // Properties\n /**\n * @standalone\n * The selected config\n */\n @Prop() selectedConfiguration?: Configuration;\n /**\n * @standalone\n * The title of the event from the cofiguration.\n */\n @Prop() eventTitle?: string = this.selectedConfiguration?.event_booking?.title;\n /**\n * @standalone\n * The name attribute of this component.\n */\n @Prop() name: string = 'title';\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: LANGUAGE_CODE;\n\n /**\n * Whether to show the tokens dropdown.\n */\n @Prop() noTemplates: boolean = false;\n /**\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: ThemeConfig;\n\n // State variables\n /**\n * Whether to show the tokens dropdown.\n */\n @State() showTokens: boolean = false;\n /**\n * The available token options for the dropdown.\n */\n @State() availableTokens: { label: string; value: string; labelHTML: Token }[] = eventTitleTokens.map(token => ({\n label: token.token,\n value: token.value,\n labelHTML: token,\n }));\n /**\n * The filtered token options for the dropdown based on the current query.\n */\n @State() filteredTokens: { label: string; value: string; labelHTML: Token }[] = this.availableTokens;\n /**\n * The aria-activedescendant attribute value. This is used to indicate the\n * currently active descendant in the tokens dropdown.\n */\n @State() ariaActivedescendant: string = '';\n /**\n * Stores the reference to the current word being typed.\n * This is used to update the event title with the selected token tag when\n * an option is selected from the dropdown by clicking on it.\n */\n @State() currentWord: {\n $value: string;\n fullText: string;\n index: number;\n focusOffset: number;\n } = { $value: '', fullText: '', index: -1, focusOffset: -1 };\n\n @State() validationError: string = '';\n @State() configEventTitle: string = '';\n\n @State() additionalFieldTokens: Token[] = [];\n // Reference to the title div element\n private titleRef!: HTMLDivElement;\n\n /**\n * When a name prop is passed, stencil does not automatically set the name attribute on the host element.\n * Since this component is form-associated, the name attribute is required for form submission.\n * This is a workaround to ensure that the name attribute is set on the host element.\n */\n @Watch('name')\n elementNameChangedHandler(newValue: string) {\n debug('[nylas-event-title]', 'elementNameChangedHandler', newValue);\n this.host.setAttribute('name', newValue);\n }\n\n @Watch('ariaActivedescendant')\n ariaActivedescendantChangedHandler(newValue: string) {\n debug('[nylas-event-title]', 'ariaActivedescendantChangedHandler', newValue);\n if (newValue !== '') {\n const activeOption = this.host.shadowRoot?.getElementById(newValue);\n activeOption?.classList.add('active');\n } else {\n const options = this.host.shadowRoot?.querySelectorAll('.token-options li.active');\n options?.forEach(option => option.classList.remove('active'));\n }\n }\n\n @Watch('selectedConfiguration')\n configChangedHandler(newVal: Configuration) {\n const title = newVal?.event_booking?.title;\n const additionalFields = newVal?.scheduler?.additional_fields || {};\n const newKeys = Object.keys(additionalFields) || [];\n const newTokens = newKeys.map(key => {\n return {\n token: `$${key}`,\n value: `\\${${key}}`,\n description: additionalFields[key].label || '',\n };\n });\n this.additionalFieldTokens = [...newTokens];\n this.availableTokens = [...eventTitleTokens, ...newTokens].map(token => ({\n label: token.token,\n value: token.value,\n labelHTML: token,\n }));\n this.filteredTokens = [...this.availableTokens];\n if (title) {\n this.configEventTitle = title;\n this.updateEventTitleFromProp(title);\n }\n }\n\n @Watch('selectedLanguage')\n selectedLanguageChangedHandler(newVal: LANGUAGE_CODE, oldVal: LANGUAGE_CODE) {\n if (newVal === oldVal) return;\n i18next.changeLanguage(newVal);\n const titleTokens = {\n $invitee: 'invitee',\n $invitee_email: 'inviteeEmail',\n $duration: 'duration',\n };\n this.availableTokens = this.availableTokens.map(token => {\n if (titleTokens[token.label]) {\n token.labelHTML.description = i18next.t(`nylasEventTitle.eventTitleTokenDescription.${titleTokens[token.label]}`);\n }\n return token;\n });\n this.filteredTokens = [...this.availableTokens];\n }\n\n @Watch('themeConfig')\n themeConfigChangedHandler(newVal: ThemeConfig, oldVal: ThemeConfig) {\n if (newVal === oldVal) return;\n this.applyThemeConfig(newVal);\n }\n\n applyThemeConfig(themeConfig?: ThemeConfig) {\n if (themeConfig) {\n for (const [key, value] of Object.entries(themeConfig)) {\n this.host.style.setProperty(`${key}`, value);\n }\n }\n }\n\n // Events\n /**\n * This event is fired when the value of the event title changes.\n */\n @Event() valueChanged!: EventEmitter<{\n value: string;\n name: string;\n }>;\n\n // Lifecycle methods\n connectedCallback() {\n debug('[nylas-event-title]', 'connectedCallback');\n // Use queueMicrotask to defer theme application until after React has set props.\n // This fixes the timing issue where connectedCallback fires before React sets themeConfig.\n queueMicrotask(() => {\n if (this.themeConfig) {\n this.applyThemeConfig(this.themeConfig);\n this.host.setAttribute('data-themed', '');\n }\n });\n }\n\n componentWillLoad() {\n debug('[nylas-event-title]', 'componentWillLoad');\n this.host.setAttribute('name', this.name);\n // Theme already applied in connectedCallback via queueMicrotask\n }\n\n componentDidLoad() {\n debug('[nylas-event-title]', 'componentDidLoad');\n let title = this.eventTitle || this.configEventTitle;\n if (this.selectedConfiguration?.event_booking?.title) {\n title = this.selectedConfiguration?.event_booking?.title;\n }\n if (title) {\n this.updateEventTitleFromProp(title);\n this.updateEventTitle(title, true);\n }\n }\n\n disconnectedCallback() {\n debug('[nylas-event-title]', 'disconnectedCallback');\n }\n\n @Listen('formSubmitted', { target: 'window' })\n formSubmittedHandler(event: CustomEvent) {\n debug('[nylas-event-title]', 'formSubmittedHandler', event);\n if (!this.internals?.validity?.valid) {\n this.validationError = 'eventTitleRequired';\n } else {\n this.validationError = '';\n }\n }\n\n @Listen('valueChanged', { target: 'document' })\n valueChangedHandler(event: CustomEvent<{ value: string; name: string }>) {\n const { name, value } = event.detail;\n if (name === 'additional-fields') {\n const additionalFields = JSON.parse(value.toString());\n const newKeys = Object.keys(additionalFields) || [];\n const newTokens = newKeys.map(key => {\n return {\n token: `$${key}`,\n value: `\\${${key}}`,\n description: additionalFields[key].label || '',\n };\n });\n this.additionalFieldTokens = [...newTokens];\n this.availableTokens = [...eventTitleTokens, ...newTokens].map(token => ({\n label: token.token,\n value: token.value,\n labelHTML: token,\n }));\n this.filteredTokens = [...this.availableTokens];\n }\n }\n\n updateEventTitleFromProp(newValue: string) {\n debug('[nylas-event-title]', 'eventTitleChangedHandler', newValue);\n const title = newValue || this.configEventTitle;\n if (this.titleRef) {\n this.titleRef.innerHTML = this.highlightTokens(title);\n if (typeof this.internals.setValidity === 'function') {\n if (!title || title === '') {\n this.titleRef.focus();\n this.internals?.setValidity({ customError: true }, `Event title is required`, this.titleRef);\n } else {\n this.internals?.setValidity({ customError: false });\n this.isInternalsAvailable && this.internals?.setFormValue(title, this.name);\n }\n }\n }\n }\n\n highlightTokens(title: string) {\n let outputHtml = title;\n [...eventTitleTokens, ...this.additionalFieldTokens].forEach(tokenObj => {\n const token = tokenObj.value;\n // Create a regular expression that matches the token as a whole word\n const regex = new RegExp(`(\\\\${token})(?!\\\\w)`, 'g');\n // Replace the token with a span element\n outputHtml = outputHtml?.replace(regex, '<span class=\"highlighted-tag\">$1</span>') || '';\n });\n return outputHtml;\n }\n\n getCurrentSelectionForBrowser() {\n const getSelectionTextData = (nodeValue, offset, node, allSelected) => {\n // Remove zero-width space characters from the text, because they are not visible and cause issues with the selection\n const text = nodeValue.replace(/[\\u200B-\\u200D\\uFEFF]/g, '');\n const dollarIndex = text.lastIndexOf('$');\n const lastWord = text.substring(dollarIndex).split(' ')[0];\n return {\n focusOffset: offset,\n dollarIndex,\n lastWord,\n currentText: text,\n node,\n allSelected,\n };\n };\n\n // Check if the selection has selected all the text in the node, we need this to handle the case where the user selects all the text and then types or deletes\n const isAllSelected = (selection: Selection) => selection.anchorOffset === 0 && selection.focusOffset === selection.focusNode?.nodeValue?.length;\n\n const currentBrowser = getBrowser();\n switch (currentBrowser) {\n case 'Edge (Chromium)':\n case 'Chrome': {\n const shadowRootSelection = (this.host.shadowRoot as CustomShadowRoot)?.getSelection();\n const focusNode = shadowRootSelection?.focusNode;\n const focusNodeValue = focusNode?.nodeValue || '';\n const allSelected = shadowRootSelection && isAllSelected(shadowRootSelection);\n return getSelectionTextData(focusNodeValue, shadowRootSelection?.focusOffset || -1, focusNode, allSelected);\n }\n case 'Firefox': {\n const selection = document.getSelection();\n const anchorNodeValue = selection?.anchorNode?.nodeValue || '';\n const allSelectedFirefox = selection && isAllSelected(selection);\n return getSelectionTextData(anchorNodeValue, selection?.focusOffset || -1, selection?.anchorNode, allSelectedFirefox);\n }\n case 'Safari': {\n const windowSelection = window.getSelection();\n const anchorNode = (windowSelection as any)?.getComposedRanges(this.host.shadowRoot as CustomShadowRoot)[0];\n const currentText = anchorNode?.startContainer?.nodeValue || '';\n const allSelectedSafari = windowSelection && isAllSelected(windowSelection);\n return getSelectionTextData(currentText, anchorNode?.endOffset || -1, anchorNode?.startContainer, allSelectedSafari);\n }\n default: {\n debug('Browser not supported');\n return null;\n }\n }\n }\n\n handleChange(event: Event) {\n let textContent = (event.target as HTMLDivElement).textContent || '';\n textContent = sanitize(textContent);\n\n // All browsers handle Selection within Shadow DOM differently, so get the current selection based on the browser\n const currentSelection = this.getCurrentSelectionForBrowser();\n if (!currentSelection) {\n this.updateEventTitle(textContent);\n this.resetDropdown();\n return;\n }\n const { focusOffset, dollarIndex, lastWord, currentText } = currentSelection;\n\n if (dollarIndex === -1 || focusOffset < dollarIndex) {\n this.updateEventTitle(textContent);\n this.resetDropdown();\n return;\n }\n if (lastWord.startsWith('$')) {\n this.showTokens = true;\n // Update the current word being typed, we need this reference to update the event title with the selected token\n // because the user can select an option from the dropdown by clicking on it, which will not trigger the input event.\n this.currentWord = {\n $value: lastWord,\n fullText: currentText,\n index: dollarIndex,\n focusOffset,\n };\n this.populateSuggestionsDropdown(lastWord);\n } else {\n this.resetDropdown();\n }\n this.updateEventTitle(textContent);\n }\n\n handleInputKeyDown(event) {\n const selection = this.getCurrentSelectionForBrowser();\n\n // If no text is remaining in the title, reset the title to an empty string\n if (selection?.allSelected && !isNonPrintableKey(event)) {\n this.titleRef.innerHTML = '';\n }\n\n if (event.key === 'Enter') {\n event.preventDefault();\n const activeOption = this.host.shadowRoot?.getElementById(this.ariaActivedescendant);\n if (activeOption) {\n activeOption.click();\n this.ariaActivedescendant = '';\n }\n } else if (event.key === 'ArrowDown') {\n event.preventDefault();\n const activeOption = this.host.shadowRoot?.getElementById(this.ariaActivedescendant);\n if (activeOption) {\n const nextOption = activeOption.nextElementSibling;\n if (nextOption) {\n this.ariaActivedescendant = nextOption.id;\n } else {\n this.ariaActivedescendant = this.filteredTokens[0].label;\n }\n } else {\n this.ariaActivedescendant = this.filteredTokens[0].label;\n }\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n const activeOption = this.host.shadowRoot?.getElementById(this.ariaActivedescendant);\n if (activeOption) {\n const prevOption = activeOption.previousElementSibling;\n if (prevOption) {\n this.ariaActivedescendant = prevOption.id;\n } else {\n this.ariaActivedescendant = this.filteredTokens[this.filteredTokens.length - 1].label;\n }\n } else {\n this.ariaActivedescendant = this.filteredTokens[this.filteredTokens.length - 1].label;\n }\n } else if (event.key === 'Escape') {\n event.preventDefault();\n this.resetDropdown();\n } else if (event.key === 'Backspace' || event.key === 'Delete') {\n const parentNode = selection?.node?.parentNode;\n if (selection?.currentText.startsWith('${') && parentNode && parentNode.nodeName === 'SPAN') {\n event.preventDefault();\n parentNode.removeChild(selection.node);\n parentNode.remove();\n this.resetDropdown();\n this.updateEventTitle(this.titleRef?.textContent || '');\n }\n if (this.titleRef.textContent === '' || selection?.allSelected) {\n this.titleRef.innerHTML = '';\n this.updateEventTitle('');\n }\n }\n }\n\n selectOption(e: Event, option: { label: string; value: string; labelHTML: Token }) {\n e.preventDefault();\n const word = this.currentWord.fullText;\n const dollarWord = this.currentWord.$value;\n\n // Traverse the DOM to find the text node that contains the current word fullText\n let currentNode = this.titleRef.firstChild;\n let textNode: ChildNode | null = null;\n\n while (currentNode) {\n if (currentNode.nodeType === 3) {\n const currentNodeText = currentNode.textContent?.replace(/[\\u200B-\\u200D\\uFEFF]/g, '') || '';\n const wordText = word.replace(/[\\u200B-\\u200D\\uFEFF]/g, '');\n if (currentNodeText.includes(wordText)) {\n textNode = currentNode;\n break;\n }\n }\n currentNode = currentNode.nextSibling;\n }\n\n if (!textNode) {\n return;\n }\n // Split the text node into three parts: text before the token, the token, and text after the token\n const text = textNode.textContent || '';\n const index = text.indexOf(dollarWord);\n const textBefore = text.substring(0, index);\n const textAfter = text.substring(index + dollarWord.length);\n const newTextNode = document.createTextNode(textBefore);\n const newRange = document.createRange();\n\n // Create a new span element to replace the text node\n const tagSpan = document.createElement('span');\n tagSpan.classList.add('highlighted-tag');\n tagSpan.textContent = `${option.value}`;\n const newTextNodeAfter = document.createTextNode(textAfter);\n\n if (textAfter !== '') {\n // If there is text after the token, add it to the new span element\n textNode.replaceWith(newTextNode, tagSpan, newTextNodeAfter);\n newRange.setStart(newTextNodeAfter, 1);\n } else {\n // If there is no text after the token, add a zero-width space character (Without this, the cursor will not move outside the highlighted span element)\n const afterNode = document.createTextNode('\\u200B');\n textNode.replaceWith(newTextNode, tagSpan, afterNode);\n newRange.setStart(afterNode, 1);\n }\n\n // Hide the dropdown\n this.resetDropdown();\n this.titleRef.focus();\n\n // Set the focus to the new span element\n const sel = window.getSelection();\n newRange.collapse(true);\n sel?.removeAllRanges();\n sel?.addRange(newRange);\n\n // Update the event title with the selected token\n this.updateEventTitle(this.titleRef.textContent || '');\n }\n\n populateSuggestionsDropdown(query: string = '') {\n this.filteredTokens = this.availableTokens.filter(obj => {\n return obj.label.startsWith(query.toString()) || obj.value.startsWith(query.toString());\n });\n\n // Set the first option as the active descendant\n if (this.filteredTokens.length > 0) {\n this.ariaActivedescendant = this.filteredTokens[0].label;\n }\n }\n\n get isInternalsAvailable() {\n return typeof this.internals !== 'undefined' && typeof this.internals.setValidity === 'function' && typeof this.internals.setFormValue === 'function';\n }\n\n updateEventTitle(text: string, noValue: boolean = false) {\n const value = text.replace(/ +/g, ' ');\n if (value === '' || /^[\\s]*$/.test(value)) {\n this.validationError = 'eventTitleRequired';\n this.isInternalsAvailable && this.internals?.setValidity({ customError: true }, `Event title is required`, this.titleRef);\n } else {\n this.validationError = '';\n this.isInternalsAvailable && this.internals?.setValidity({ customError: false });\n }\n\n this.isInternalsAvailable && this.internals?.setFormValue(value, this.name);\n if (!noValue) {\n this.valueChanged.emit({ value: value, name: this.name });\n }\n }\n\n resetDropdown() {\n this.showTokens = false;\n this.ariaActivedescendant = '';\n }\n\n getLabelHTML(token: { token: string; description: string }) {\n return (\n <div class=\"token-label\">\n <span class=\"token\">{token.token}</span>\n <span class=\"description\">{token.description}</span>\n </div>\n );\n }\n\n @RegisterComponent<NylasEventTitle, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-event-title',\n stateToProps: new Map([\n ['schedulerConfig.selectedConfiguration', 'selectedConfiguration'],\n ['schedulerConfig.selectedLanguage', 'selectedLanguage'],\n ['schedulerConfig.themeConfig', 'themeConfig'],\n ]),\n eventToProps: {},\n fireRegisterEvent: true,\n })\n render() {\n return (\n <Host>\n <div class=\"nylas-event-title\" part=\"net\">\n <label htmlFor=\"title\">\n <p>\n {i18next.t('nylasEventTitle.headerTitle')}\n <span class=\"required\">*</span>\n </p>\n </label>\n <div\n class={{\n title: true,\n error: this.validationError !== '',\n }}\n part=\"net__title\"\n ref={el => (this.titleRef = el as HTMLDivElement)}\n contentEditable=\"true\"\n onInput={e => this.handleChange(e)}\n onKeyDown={event => this.handleInputKeyDown(event)}\n ></div>\n {!this.noTemplates && this.showTokens && this.filteredTokens?.length > 0 && (\n <div class=\"token-options\" part=\"net__dropdown-content\">\n <ul tabindex=\"-1\" role=\"listbox\" aria-label={this.name} aria-activedescendant={this.ariaActivedescendant}>\n {this.filteredTokens.map(option => (\n <li\n tabindex=\"0\"\n key={option.label}\n id={option.label}\n class={{ active: this.ariaActivedescendant === option.label }}\n onClick={e => this.selectOption(e, option)}\n role=\"option\"\n >\n {this.getLabelHTML(option.labelHTML)}\n </li>\n ))}\n </ul>\n </div>\n )}\n {!this.noTemplates && (\n <span class=\"help-text\">\n {i18next.t('nylasEventTitle.helpText', { context: 'start', field: i18next.t('nylasEventTitle.title') })} <code>$</code>{' '}\n {i18next.t('nylasEventTitle.helpText', { context: 'end' })}\n <span class=\"label-icon\">\n <tooltip-component>\n <info-icon slot=\"tooltip-icon\" />\n <span slot=\"tooltip-content\">\n {i18next.t('nylasEventTitle.tooltip.desc')} <code>{'${invitee}'}</code>\n </span>\n </tooltip-component>\n </span>\n </span>\n )}\n {this.validationError != '' && <span class=\"error-message\">{i18next.t(`nylasEventTitle.${this.validationError}`)}</span>}\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { p as proxyCustomElement, H, e as createEvent, h } from './p-Bht9ktsW.js';
|
|
2
|
-
import { s as sanitize } from './p-
|
|
2
|
+
import { s as sanitize } from './p-CMNiSC4o.js';
|
|
3
3
|
|
|
4
4
|
const inputComponentCss = ":host{display:block;height:auto;--nylas-primary:#2563eb;--nylas-error:#cc4841;--nylas-error-50:#ffeae8;--nylas-error-100:#ffc5bf;--nylas-error-200:#fecaca;--nylas-error-pressed:#992222;--nylas-wraning:#f06c00;--nylas-success:#16a392;--nylas-info:#2b8fc2;--nylas-base-0:#ffffff;--nylas-base-25:#fcfcfd;--nylas-base-50:#f8f9fc;--nylas-base-100:#eaecf5;--nylas-base-200:#d5d9eb;--nylas-base-300:#b3b8d8;--nylas-base-400:#717bbc;--nylas-base-500:#4e5ba6;--nylas-base-600:#3e4784;--nylas-base-700:#263f72;--nylas-base-800:#293056;--nylas-base-900:#101323;--nylas-base-950:#0e101b;--nylas-color-blue-100:#e0e6f9;--nylas-border-radius:0.25rem;--nylas-border-radius-2x:0.5rem;--nylas-border-radius-3x:0.75rem;--nylas-font-family:\"Inter\", sans-serif;--nylas-color-black:#000000;--nylas-color-grey-900:#2c2c2c;--nylas-color-grey-800:#4b4b4b;--nylas-color-grey-700:#6e6e6e;--nylas-color-grey-600:#8e8e8e;--nylas-color-grey-500:#b3b3b3;--nylas-color-grey-400:#cacaca;--nylas-color-grey-300:#e1e1e1;--nylas-color-grey-200:#eaeaea;--nylas-color-grey-100:#f5f5f5;--nylas-color-grey-50:#fbfcfe;--nylas-color-white:#ffffff;--nylas-color-red-900:#992222;--nylas-color-red-700:#cc4841;--nylas-color-red-500:#ff786a;--nylas-color-red-300:#ffa79e;--nylas-color-red-100:#ffc5bf;--nylas-color-red-50:#ffeae8;--nylas-color-blue-900:#213571;--nylas-color-blue-700:#314fa9;--nylas-color-blue-500:#4169e1;--nylas-color-blue-300:#bdccf9;--nylas-color-blue-100:#e0e6f9;--nylas-color-blue-50:#f6f8fd;--nylas-color-yellow-900:#7c6506;--nylas-color-yellow-700:#c29f09;--nylas-color-yellow-500:#f7c90b;--nylas-color-yellow-300:#f9de70;--nylas-color-yellow-100:#fceba9;--nylas-color-yellow-50:#fdf4ce;--nylas-color-green-900:#0e6b60;--nylas-color-green-700:#16a392;--nylas-color-green-500:#17c3b2;--nylas-color-green-300:#74dbd1;--nylas-color-green-100:#a2e7e0;--nylas-color-green-50:#d1f3f0;--nylas-color-purple-900:#643554;--nylas-color-purple-700:#954f7d;--nylas-color-purple-500:#c769a7;--nylas-color-purple-300:#dda5ca;--nylas-color-purple-100:#e0bdd6;--nylas-color-purple-50:#e9dde5;--nylas-color-sky-900:#20698f;--nylas-color-sky-700:#2b8fc2;--nylas-color-sky-500:#6dceff;--nylas-color-sky-300:#8fdaff;--nylas-color-sky-100:#b8e7ff;--nylas-color-sky-50:#d9f2ff;width:100%}label{display:flex;color:var(--nylas-base-800, #293056);font-size:14px;font-style:normal;font-weight:400;line-height:150%;word-break:break-word;overflow-wrap:break-word;flex-direction:column;gap:4px;font-family:var(--nylas-font-family);font-size:16px;color:var(--nylas-base-800)}label.error{color:var(--nylas-error)}label span.required{color:var(--nylas-error);padding:0 0.25rem}label p{margin:0}label .error{color:var(--nylas-error)}.input_wrapper{display:flex;align-items:center;gap:1rem}input[type=text],input[type=number],input[type=email],input[type=phone_number]{display:flex;height:48px;padding-left:16px;align-items:center;gap:8px;align-self:stretch;border-radius:var(--nylas-border-radius-2x);border:1px solid var(--nylas-base-300);background:var(--nylas-base-0);width:-webkit-fill-available;color:var(--nylas-base-900);font-size:16px;font-style:normal;font-weight:400;line-height:150%;width:-moz-available;width:-webkit-fill-available}input[type=text]:focus,input[type=number]:focus,input[type=email]:focus,input[type=phone_number]:focus{outline-color:var(--nylas-primary)}input[type=text].error,input[type=number].error,input[type=email].error,input[type=phone_number].error{border-radius:var(--nylas-border-radius-2x);font-weight:600;border-color:var(--nylas-error);border-width:2px}input[type=text].error::placeholder,input[type=number].error::placeholder,input[type=email].error::placeholder,input[type=phone_number].error::placeholder{font-weight:400}input[type=text]::placeholder,input[type=number]::placeholder,input[type=email]::placeholder,input[type=phone_number]::placeholder{color:var(--nylas-base-300)}input:read-only{background-color:var(--nylas-base-100);cursor:not-allowed}";
|
|
5
5
|
|
|
@@ -186,6 +186,6 @@ function defineCustomElement() {
|
|
|
186
186
|
}
|
|
187
187
|
|
|
188
188
|
export { InputComponent as I, defineCustomElement as d };
|
|
189
|
-
//# sourceMappingURL=p-
|
|
189
|
+
//# sourceMappingURL=p-D42UGkjM.js.map
|
|
190
190
|
|
|
191
|
-
//# sourceMappingURL=p-
|
|
191
|
+
//# sourceMappingURL=p-D42UGkjM.js.map
|