@nylas/web-elements 0.0.0-canary-20251023164535 → 0.0.0-canary-20251029185136

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (304) hide show
  1. package/dist/cdn/nylas-scheduler-editor/nylas-scheduler-editor.es.js +17 -16
  2. package/dist/cdn/nylas-scheduling/nylas-scheduling.es.js +10 -10
  3. package/dist/cjs/{abstract-provider-DOaCK0Ia.js → abstract-provider-CZo7QWPj.js} +3 -3
  4. package/dist/cjs/{abstract-provider-DOaCK0Ia.js.map → abstract-provider-CZo7QWPj.js.map} +1 -1
  5. package/dist/cjs/calendar-agenda-fill-icon_38.cjs.entry.js +9 -9
  6. package/dist/cjs/calendar-agenda-fill-icon_38.cjs.entry.js.map +1 -1
  7. package/dist/cjs/checkbox-group_4.cjs.entry.js +3 -3
  8. package/dist/cjs/checkmark-icon_15.cjs.entry.js +2 -2
  9. package/dist/cjs/{customParseFormat-B3qRJI76.js → customParseFormat-DdrySvrq.js} +3 -3
  10. package/dist/cjs/{customParseFormat-B3qRJI76.js.map → customParseFormat-DdrySvrq.js.map} +1 -1
  11. package/dist/cjs/globe-icon_3.cjs.entry.js +2 -2
  12. package/dist/cjs/google-logo-icon_6.cjs.entry.js +3 -3
  13. package/dist/cjs/index.cjs.js +2 -2
  14. package/dist/cjs/input-component.cjs.entry.js +1 -1
  15. package/dist/cjs/input-dropdown_2.cjs.entry.js +1 -1
  16. package/dist/cjs/multi-select-dropdown.cjs.entry.js +1 -1
  17. package/dist/cjs/{nylas-api-request-Dyvsd6KX.js → nylas-api-request-Cyt148Hk.js} +3 -3
  18. package/dist/cjs/{nylas-api-request-Dyvsd6KX.js.map → nylas-api-request-Cyt148Hk.js.map} +1 -1
  19. package/dist/cjs/nylas-booked-event-card_11.cjs.entry.js +2 -2
  20. package/dist/cjs/nylas-form-card.cjs.entry.js +2 -2
  21. package/dist/cjs/nylas-notification_2.cjs.entry.js +1 -1
  22. package/dist/cjs/nylas-scheduler-editor.cjs.entry.js +4 -4
  23. package/dist/cjs/nylas-scheduling.cjs.entry.js +3 -3
  24. package/dist/cjs/{register-component-CZKreEUk.js → register-component-BYFF0_7-.js} +3 -3
  25. package/dist/cjs/{register-component-CZKreEUk.js.map → register-component-BYFF0_7-.js.map} +1 -1
  26. package/dist/cjs/textarea-component.cjs.entry.js +1 -1
  27. package/dist/cjs/{utils-VYrzhIuQ.js → utils-DMP9yXCk.js} +11 -11
  28. package/dist/cjs/{utils-VYrzhIuQ.js.map → utils-DMP9yXCk.js.map} +1 -1
  29. package/dist/cjs/{version-sMNkED66.js → version-DTKfJ9pI.js} +3 -3
  30. package/dist/cjs/{version-sMNkED66.js.map → version-DTKfJ9pI.js.map} +1 -1
  31. package/dist/collection/components/scheduler-editor/nylas-specific-time-availability-picker/nylas-specific-time-availability-picker.css +9 -2
  32. package/dist/collection/components/scheduler-editor/nylas-specific-time-availability-picker/nylas-specific-time-availability-picker.js +6 -6
  33. package/dist/collection/components/scheduler-editor/nylas-specific-time-availability-picker/nylas-specific-time-availability-picker.js.map +1 -1
  34. package/dist/collection/version.js +1 -1
  35. package/dist/collection/version.js.map +1 -1
  36. package/dist/components/index.js +1 -1
  37. package/dist/components/input-component.js +1 -1
  38. package/dist/components/input-image-url.js +1 -1
  39. package/dist/components/multi-select-dropdown.js +1 -1
  40. package/dist/components/nylas-additional-participants.js +1 -1
  41. package/dist/components/nylas-availability-picker.js +1 -1
  42. package/dist/components/nylas-booked-event-card.js +1 -1
  43. package/dist/components/nylas-booking-calendar-picker.js +1 -1
  44. package/dist/components/nylas-booking-confirmation-redirect.js +1 -1
  45. package/dist/components/nylas-booking-confirmation-type.js +1 -1
  46. package/dist/components/nylas-booking-form-config.js +1 -1
  47. package/dist/components/nylas-booking-form.js +1 -1
  48. package/dist/components/nylas-buffer-time.js +1 -1
  49. package/dist/components/nylas-calendar-picker.js +1 -1
  50. package/dist/components/nylas-cancel-booking-form.js +1 -1
  51. package/dist/components/nylas-cancellation-policy.js +1 -1
  52. package/dist/components/nylas-cancelled-event-card.js +1 -1
  53. package/dist/components/nylas-confirmation-email.js +1 -1
  54. package/dist/components/nylas-confirmed-event-card.js +1 -1
  55. package/dist/components/nylas-connected-calendars.js +1 -1
  56. package/dist/components/nylas-custom-booking-flow.js +1 -1
  57. package/dist/components/nylas-custom-event-slug.js +1 -1
  58. package/dist/components/nylas-customize-booking-settings.js +1 -1
  59. package/dist/components/nylas-date-component.js +1 -1
  60. package/dist/components/nylas-date-picker.js +1 -1
  61. package/dist/components/nylas-disable-emails.js +1 -1
  62. package/dist/components/nylas-editor-tabs-group.js +1 -1
  63. package/dist/components/nylas-editor-tabs.js +1 -1
  64. package/dist/components/nylas-event-calendar.js +1 -1
  65. package/dist/components/nylas-event-capacity.js +1 -1
  66. package/dist/components/nylas-event-description.js +1 -1
  67. package/dist/components/nylas-event-duration.js +1 -1
  68. package/dist/components/nylas-event-info.js +1 -1
  69. package/dist/components/nylas-event-limits.js +1 -1
  70. package/dist/components/nylas-event-location.js +1 -1
  71. package/dist/components/nylas-event-timeslot.js +1 -1
  72. package/dist/components/nylas-event-title.js +1 -1
  73. package/dist/components/nylas-feedback-form.js +1 -1
  74. package/dist/components/nylas-form-card.js +1 -1
  75. package/dist/components/nylas-limit-future-bookings.js +1 -1
  76. package/dist/components/nylas-list-configurations.js +1 -1
  77. package/dist/components/nylas-locale-switch.js +1 -1
  78. package/dist/components/nylas-min-booking-notice.js +1 -1
  79. package/dist/components/nylas-min-cancellation-notice.js +1 -1
  80. package/dist/components/nylas-notification.js +1 -1
  81. package/dist/components/nylas-only-specific-time-availability.js +1 -1
  82. package/dist/components/nylas-organizer-confirmation-card.js +1 -1
  83. package/dist/components/nylas-page-name.js +1 -1
  84. package/dist/components/nylas-page-styling.js +1 -1
  85. package/dist/components/nylas-participant-booking-calendars.js +1 -1
  86. package/dist/components/nylas-participants-custom-availability.js +1 -1
  87. package/dist/components/nylas-reminder-emails.js +1 -1
  88. package/dist/components/nylas-reminder-time.js +1 -1
  89. package/dist/components/nylas-scheduler-editor.js +55 -55
  90. package/dist/components/nylas-scheduling-method.js +1 -1
  91. package/dist/components/nylas-scheduling.js +19 -19
  92. package/dist/components/nylas-select-event-type.js +1 -1
  93. package/dist/components/nylas-selected-event-card.js +1 -1
  94. package/dist/components/nylas-specific-time-availability-picker.js +1 -1
  95. package/dist/components/nylas-time-window-picker.js +1 -1
  96. package/dist/components/nylas-timeslot-interval.js +1 -1
  97. package/dist/components/nylas-timeslot-picker.js +1 -1
  98. package/dist/components/{p-H2PEDQev.js → p--DnD2uAW.js} +7 -7
  99. package/dist/components/{p-H2PEDQev.js.map → p--DnD2uAW.js.map} +1 -1
  100. package/dist/components/{p-BOEUsxij.js → p-B4K2F_cG.js} +4 -4
  101. package/dist/components/{p-BOEUsxij.js.map → p-B4K2F_cG.js.map} +1 -1
  102. package/dist/components/{p-CS8D-1if.js → p-B5pNjL0N.js} +4 -4
  103. package/dist/components/{p-CS8D-1if.js.map → p-B5pNjL0N.js.map} +1 -1
  104. package/dist/components/{p-Nzu_5ZmQ.js → p-BC9yeuRb.js} +3 -3
  105. package/dist/components/{p-Nzu_5ZmQ.js.map → p-BC9yeuRb.js.map} +1 -1
  106. package/dist/components/{p-BX-dFDFA.js → p-BMpBdxEp.js} +4 -4
  107. package/dist/components/{p-BX-dFDFA.js.map → p-BMpBdxEp.js.map} +1 -1
  108. package/dist/components/{p-DyOLurnZ.js → p-BYzuAGXU.js} +49 -49
  109. package/dist/components/{p-DyOLurnZ.js.map → p-BYzuAGXU.js.map} +1 -1
  110. package/dist/components/{p-D6E0vp2X.js → p-BfdTgv37.js} +4 -4
  111. package/dist/components/{p-D6E0vp2X.js.map → p-BfdTgv37.js.map} +1 -1
  112. package/dist/components/{p-C-9RzJZG.js → p-BkzMJ4pV.js} +11 -11
  113. package/dist/components/{p-C-9RzJZG.js.map → p-BkzMJ4pV.js.map} +1 -1
  114. package/dist/components/{p-BnKgaDIm.js → p-BnU07kVV.js} +5 -5
  115. package/dist/components/{p-BnKgaDIm.js.map → p-BnU07kVV.js.map} +1 -1
  116. package/dist/components/{p-CJXT074p.js → p-BnrCrrsE.js} +4 -4
  117. package/dist/components/{p-CJXT074p.js.map → p-BnrCrrsE.js.map} +1 -1
  118. package/dist/components/{p-B4LAfvS9.js → p-BoryVwdE.js} +3 -3
  119. package/dist/components/{p-B4LAfvS9.js.map → p-BoryVwdE.js.map} +1 -1
  120. package/dist/components/{p-B-q5dr4Z.js → p-BqTfI9iO.js} +5 -5
  121. package/dist/components/{p-B-q5dr4Z.js.map → p-BqTfI9iO.js.map} +1 -1
  122. package/dist/components/{p-PGZfpcsW.js → p-Bspl8yuu.js} +8 -8
  123. package/dist/components/{p-PGZfpcsW.js.map → p-Bspl8yuu.js.map} +1 -1
  124. package/dist/components/{p-nwpBi6uh.js → p-BvRLg-HQ.js} +3 -3
  125. package/dist/components/{p-nwpBi6uh.js.map → p-BvRLg-HQ.js.map} +1 -1
  126. package/dist/components/{p-Ck7Utpku.js → p-C5fHZLWQ.js} +5 -5
  127. package/dist/components/{p-Ck7Utpku.js.map → p-C5fHZLWQ.js.map} +1 -1
  128. package/dist/components/{p-rernVjNw.js → p-C7CSS14_.js} +6 -6
  129. package/dist/components/{p-rernVjNw.js.map → p-C7CSS14_.js.map} +1 -1
  130. package/dist/components/{p-USlPWd32.js → p-C8gVhB99.js} +5 -5
  131. package/dist/components/{p-USlPWd32.js.map → p-C8gVhB99.js.map} +1 -1
  132. package/dist/components/{p-DiCCKLqS.js → p-C9m4ME75.js} +40 -40
  133. package/dist/components/{p-DiCCKLqS.js.map → p-C9m4ME75.js.map} +1 -1
  134. package/dist/components/{p-BJIdbu1H.js → p-CHGzZc5-.js} +5 -5
  135. package/dist/components/{p-BJIdbu1H.js.map → p-CHGzZc5-.js.map} +1 -1
  136. package/dist/components/{p-C3quV8UM.js → p-CI0FKgAJ.js} +7 -7
  137. package/dist/components/{p-C3quV8UM.js.map → p-CI0FKgAJ.js.map} +1 -1
  138. package/dist/components/{p-OWT0xV_k.js → p-CNojy2PB.js} +4 -4
  139. package/dist/components/{p-OWT0xV_k.js.map → p-CNojy2PB.js.map} +1 -1
  140. package/dist/components/{p-CpcjVJMS.js → p-COOMTxtt.js} +4 -4
  141. package/dist/components/{p-CpcjVJMS.js.map → p-COOMTxtt.js.map} +1 -1
  142. package/dist/components/{p-CIZt1hbc.js → p-CS7dGt1R.js} +4 -4
  143. package/dist/components/{p-CIZt1hbc.js.map → p-CS7dGt1R.js.map} +1 -1
  144. package/dist/components/{p-CxgQ4DV9.js → p-CZw_P3Tp.js} +4 -4
  145. package/dist/components/{p-CxgQ4DV9.js.map → p-CZw_P3Tp.js.map} +1 -1
  146. package/dist/components/{p-CxjS5vcT.js → p-C_QAMVyX.js} +4 -4
  147. package/dist/components/{p-CxjS5vcT.js.map → p-C_QAMVyX.js.map} +1 -1
  148. package/dist/components/{p-zBmfn9Ee.js → p-CexYKlpc.js} +3 -3
  149. package/dist/components/{p-zBmfn9Ee.js.map → p-CexYKlpc.js.map} +1 -1
  150. package/dist/components/{p-wJWFqJZw.js → p-CsKdKz2W.js} +4 -4
  151. package/dist/components/{p-wJWFqJZw.js.map → p-CsKdKz2W.js.map} +1 -1
  152. package/dist/components/{p-CZLOU3Va.js → p-CwlnHdR3.js} +4 -4
  153. package/dist/components/{p-CZLOU3Va.js.map → p-CwlnHdR3.js.map} +1 -1
  154. package/dist/components/{p-BzNgohl1.js → p-Cx31rTZq.js} +4 -4
  155. package/dist/components/{p-BzNgohl1.js.map → p-Cx31rTZq.js.map} +1 -1
  156. package/dist/components/{p-BPbLHmnh.js → p-CzBqaxFU.js} +5 -5
  157. package/dist/components/{p-BPbLHmnh.js.map → p-CzBqaxFU.js.map} +1 -1
  158. package/dist/components/{p-C7_XycjO.js → p-D1EoqZsu.js} +4 -4
  159. package/dist/components/{p-C7_XycjO.js.map → p-D1EoqZsu.js.map} +1 -1
  160. package/dist/components/{p-C_9WoSFK.js → p-D3xYUjJI.js} +4 -4
  161. package/dist/components/{p-C_9WoSFK.js.map → p-D3xYUjJI.js.map} +1 -1
  162. package/dist/components/{p-BnsOCm71.js → p-D5KNDDuK.js} +4 -4
  163. package/dist/components/{p-BnsOCm71.js.map → p-D5KNDDuK.js.map} +1 -1
  164. package/dist/components/{p-CQQB-OD7.js → p-D6ovLzQI.js} +3 -3
  165. package/dist/components/{p-CQQB-OD7.js.map → p-D6ovLzQI.js.map} +1 -1
  166. package/dist/components/{p-BgVZNMXq.js → p-D6x7KnWY.js} +8 -8
  167. package/dist/components/{p-BgVZNMXq.js.map → p-D6x7KnWY.js.map} +1 -1
  168. package/dist/components/{p-C2wPhW78.js → p-D7s_zg_d.js} +4 -4
  169. package/dist/components/{p-C2wPhW78.js.map → p-D7s_zg_d.js.map} +1 -1
  170. package/dist/components/{p-4Eo0pKVg.js → p-D92kTAyK.js} +5 -5
  171. package/dist/components/{p-4Eo0pKVg.js.map → p-D92kTAyK.js.map} +1 -1
  172. package/dist/components/{p-C-bIz_hy.js → p-D9Dg1JWU.js} +3 -3
  173. package/dist/components/{p-C-bIz_hy.js.map → p-D9Dg1JWU.js.map} +1 -1
  174. package/dist/components/{p-DP1P7gC9.js → p-D9PED7bs.js} +5 -5
  175. package/dist/components/{p-DP1P7gC9.js.map → p-D9PED7bs.js.map} +1 -1
  176. package/dist/components/{p-Dy9AIDSW.js → p-DAmas3F9.js} +4 -4
  177. package/dist/components/{p-Dy9AIDSW.js.map → p-DAmas3F9.js.map} +1 -1
  178. package/dist/components/{p-DEF0WG29.js → p-DHlJz5qn.js} +5 -5
  179. package/dist/components/{p-DEF0WG29.js.map → p-DHlJz5qn.js.map} +1 -1
  180. package/dist/components/{p-o0D7OIed.js → p-DJv7tC9z.js} +3 -3
  181. package/dist/components/{p-o0D7OIed.js.map → p-DJv7tC9z.js.map} +1 -1
  182. package/dist/components/{p-s06UjtHJ.js → p-DKnp-SZi.js} +8 -8
  183. package/dist/components/{p-s06UjtHJ.js.map → p-DKnp-SZi.js.map} +1 -1
  184. package/dist/components/{p-DPHPGDki.js → p-DPeb4p0M.js} +5 -5
  185. package/dist/components/{p-DPHPGDki.js.map → p-DPeb4p0M.js.map} +1 -1
  186. package/dist/components/{p-C7Gn7-GK.js → p-DRd9V7vZ.js} +7 -7
  187. package/dist/components/{p-C7Gn7-GK.js.map → p-DRd9V7vZ.js.map} +1 -1
  188. package/dist/components/{p-D5WcQ7s2.js → p-DTlpOiw-.js} +6 -6
  189. package/dist/components/{p-D5WcQ7s2.js.map → p-DTlpOiw-.js.map} +1 -1
  190. package/dist/components/{p-auB3ZoWP.js → p-DWkUeMm6.js} +4 -4
  191. package/dist/components/{p-auB3ZoWP.js.map → p-DWkUeMm6.js.map} +1 -1
  192. package/dist/components/{p-DFnXfDS7.js → p-DbjQjOKi.js} +3 -3
  193. package/dist/components/{p-DFnXfDS7.js.map → p-DbjQjOKi.js.map} +1 -1
  194. package/dist/components/{p-BQaskvNx.js → p-DciJgP0N.js} +4 -4
  195. package/dist/components/{p-BQaskvNx.js.map → p-DciJgP0N.js.map} +1 -1
  196. package/dist/components/{p-CAlTvMv3.js → p-DkJ3N73P.js} +5 -5
  197. package/dist/components/{p-CAlTvMv3.js.map → p-DkJ3N73P.js.map} +1 -1
  198. package/dist/components/{p-D3EFT5f-.js → p-DmYbjMxT.js} +4 -4
  199. package/dist/components/{p-D3EFT5f-.js.map → p-DmYbjMxT.js.map} +1 -1
  200. package/dist/components/{p-Ckv0Bcus.js → p-Dp5o78QS.js} +5 -5
  201. package/dist/components/{p-Ckv0Bcus.js.map → p-Dp5o78QS.js.map} +1 -1
  202. package/dist/components/{p-BgfJE-cE.js → p-DqcCEDhq.js} +5 -5
  203. package/dist/components/{p-BgfJE-cE.js.map → p-DqcCEDhq.js.map} +1 -1
  204. package/dist/components/{p-ksfJsdwW.js → p-Dqk37NDi.js} +5 -5
  205. package/dist/components/{p-ksfJsdwW.js.map → p-Dqk37NDi.js.map} +1 -1
  206. package/dist/components/{p-ML5NaBlp.js → p-Du2grbuj.js} +5 -5
  207. package/dist/components/{p-ML5NaBlp.js.map → p-Du2grbuj.js.map} +1 -1
  208. package/dist/components/{p-Dows6o9d.js → p-DvSo9R8l.js} +5 -5
  209. package/dist/components/{p-Dows6o9d.js.map → p-DvSo9R8l.js.map} +1 -1
  210. package/dist/components/{p-DzIz09Sr.js → p-DwtTOYHU.js} +13 -13
  211. package/dist/components/p-DwtTOYHU.js.map +1 -0
  212. package/dist/components/{p-He5IjVyD.js → p-DzErtQSw.js} +5 -5
  213. package/dist/components/{p-He5IjVyD.js.map → p-DzErtQSw.js.map} +1 -1
  214. package/dist/components/{p-D4OZzddo.js → p-F1_K10Bc.js} +5 -5
  215. package/dist/components/{p-D4OZzddo.js.map → p-F1_K10Bc.js.map} +1 -1
  216. package/dist/components/{p-DLdTazaE.js → p-MYEzIAsT.js} +4 -4
  217. package/dist/components/{p-DLdTazaE.js.map → p-MYEzIAsT.js.map} +1 -1
  218. package/dist/components/{p-bbx04OZB.js → p-UTtjPYki.js} +3 -3
  219. package/dist/components/{p-bbx04OZB.js.map → p-UTtjPYki.js.map} +1 -1
  220. package/dist/components/{p-DZJR8iD8.js → p-ngAHxLZm.js} +5 -5
  221. package/dist/components/{p-DZJR8iD8.js.map → p-ngAHxLZm.js.map} +1 -1
  222. package/dist/components/{p-DIbhOKDN.js → p-qe7eWmdR.js} +3 -3
  223. package/dist/components/{p-DIbhOKDN.js.map → p-qe7eWmdR.js.map} +1 -1
  224. package/dist/components/{p-B_Zms6J8.js → p-s8TAnkny.js} +4 -4
  225. package/dist/components/{p-B_Zms6J8.js.map → p-s8TAnkny.js.map} +1 -1
  226. package/dist/components/{p-DHJAvIzJ.js → p-t4Pprf0f.js} +17 -17
  227. package/dist/components/{p-DHJAvIzJ.js.map → p-t4Pprf0f.js.map} +1 -1
  228. package/dist/components/{p-CoslO5Ge.js → p-tgoTIF6z.js} +3 -3
  229. package/dist/components/{p-CoslO5Ge.js.map → p-tgoTIF6z.js.map} +1 -1
  230. package/dist/components/textarea-component.js +1 -1
  231. package/dist/components/time-period-selector.js +1 -1
  232. package/dist/esm/{abstract-provider-CAByQ1yu.js → abstract-provider-X9hmEFLa.js} +3 -3
  233. package/dist/esm/{abstract-provider-CAByQ1yu.js.map → abstract-provider-X9hmEFLa.js.map} +1 -1
  234. package/dist/esm/calendar-agenda-fill-icon_38.entry.js +9 -9
  235. package/dist/esm/calendar-agenda-fill-icon_38.entry.js.map +1 -1
  236. package/dist/esm/checkbox-group_4.entry.js +3 -3
  237. package/dist/esm/checkmark-icon_15.entry.js +2 -2
  238. package/dist/esm/{customParseFormat-C5X9iZBs.js → customParseFormat-DrYeNeiE.js} +3 -3
  239. package/dist/esm/{customParseFormat-C5X9iZBs.js.map → customParseFormat-DrYeNeiE.js.map} +1 -1
  240. package/dist/esm/globe-icon_3.entry.js +2 -2
  241. package/dist/esm/google-logo-icon_6.entry.js +3 -3
  242. package/dist/esm/index.js +2 -2
  243. package/dist/esm/input-component.entry.js +1 -1
  244. package/dist/esm/input-dropdown_2.entry.js +1 -1
  245. package/dist/esm/multi-select-dropdown.entry.js +1 -1
  246. package/dist/esm/{nylas-api-request-DRpN-bAX.js → nylas-api-request-AONmCQNh.js} +3 -3
  247. package/dist/esm/{nylas-api-request-DRpN-bAX.js.map → nylas-api-request-AONmCQNh.js.map} +1 -1
  248. package/dist/esm/nylas-booked-event-card_11.entry.js +2 -2
  249. package/dist/esm/nylas-form-card.entry.js +2 -2
  250. package/dist/esm/nylas-notification_2.entry.js +1 -1
  251. package/dist/esm/nylas-scheduler-editor.entry.js +4 -4
  252. package/dist/esm/nylas-scheduling.entry.js +3 -3
  253. package/dist/esm/{register-component-BP-GJdVK.js → register-component-BjlxxlMe.js} +3 -3
  254. package/dist/esm/{register-component-BP-GJdVK.js.map → register-component-BjlxxlMe.js.map} +1 -1
  255. package/dist/esm/textarea-component.entry.js +1 -1
  256. package/dist/esm/{utils-A9dwq_ZM.js → utils-B8iY7eY3.js} +11 -11
  257. package/dist/esm/{utils-A9dwq_ZM.js.map → utils-B8iY7eY3.js.map} +1 -1
  258. package/dist/esm/{version-5omo-Q8r.js → version-BXeVyeUj.js} +3 -3
  259. package/dist/esm/{version-5omo-Q8r.js.map → version-BXeVyeUj.js.map} +1 -1
  260. package/dist/nylas-web-elements/index.esm.js +1 -1
  261. package/dist/nylas-web-elements/nylas-web-elements.esm.js +1 -1
  262. package/dist/nylas-web-elements/{p-d0cbbff8.entry.js → p-20f4278e.entry.js} +2 -2
  263. package/dist/nylas-web-elements/{p-240cb142.entry.js → p-292681a3.entry.js} +2 -2
  264. package/dist/nylas-web-elements/{p-02dfca12.entry.js → p-2cf643e5.entry.js} +2 -2
  265. package/dist/nylas-web-elements/{p-9efaf701.entry.js → p-2e5ddc68.entry.js} +2 -2
  266. package/dist/nylas-web-elements/{p-3f8cca39.entry.js → p-2f787108.entry.js} +2 -2
  267. package/dist/nylas-web-elements/{p-3a892dc9.entry.js → p-46da48ea.entry.js} +2 -2
  268. package/dist/nylas-web-elements/{p-080d42d9.entry.js → p-581f203b.entry.js} +2 -2
  269. package/dist/nylas-web-elements/{p-f344d9c4.entry.js → p-756bf83b.entry.js} +2 -2
  270. package/dist/nylas-web-elements/{p-6e38f35b.entry.js → p-7b6e347e.entry.js} +2 -2
  271. package/dist/nylas-web-elements/{p-5427bc14.entry.js → p-88fee757.entry.js} +3 -3
  272. package/dist/nylas-web-elements/{p-5427bc14.entry.js.map → p-88fee757.entry.js.map} +1 -1
  273. package/dist/nylas-web-elements/{p-CbRMUrkC.js → p-B1edKX4a.js} +2 -2
  274. package/dist/nylas-web-elements/{p-CbRMUrkC.js.map → p-B1edKX4a.js.map} +1 -1
  275. package/dist/nylas-web-elements/{p-A9dwq_ZM.js → p-B8iY7eY3.js} +2 -2
  276. package/dist/nylas-web-elements/{p-A9dwq_ZM.js.map → p-B8iY7eY3.js.map} +1 -1
  277. package/dist/nylas-web-elements/{p-5omo-Q8r.js → p-BXeVyeUj.js} +2 -2
  278. package/dist/nylas-web-elements/{p-5omo-Q8r.js.map → p-BXeVyeUj.js.map} +1 -1
  279. package/dist/nylas-web-elements/{p-uCXCisBZ.js → p-BaQNtGdo.js} +2 -2
  280. package/dist/nylas-web-elements/{p-uCXCisBZ.js.map → p-BaQNtGdo.js.map} +1 -1
  281. package/dist/nylas-web-elements/{p-BUNkAxEd.js → p-DEznk-5Q.js} +2 -2
  282. package/dist/nylas-web-elements/{p-BUNkAxEd.js.map → p-DEznk-5Q.js.map} +1 -1
  283. package/dist/nylas-web-elements/{p-CnLqB-Lc.js → p-ZCLNGrd_.js} +2 -2
  284. package/dist/nylas-web-elements/{p-CnLqB-Lc.js.map → p-ZCLNGrd_.js.map} +1 -1
  285. package/dist/nylas-web-elements/{p-eed68bcb.entry.js → p-c157e947.entry.js} +2 -2
  286. package/dist/nylas-web-elements/{p-e13ed4e9.entry.js → p-c8025a87.entry.js} +2 -2
  287. package/dist/nylas-web-elements/{p-80b69e76.entry.js → p-cd365b9c.entry.js} +2 -2
  288. package/dist/nylas-web-elements/{p-0e011ed4.entry.js → p-d246e20e.entry.js} +2 -2
  289. package/dist/types/version.d.ts +1 -1
  290. package/package.json +2 -2
  291. package/dist/components/p-DzIz09Sr.js.map +0 -1
  292. /package/dist/nylas-web-elements/{p-d0cbbff8.entry.js.map → p-20f4278e.entry.js.map} +0 -0
  293. /package/dist/nylas-web-elements/{p-240cb142.entry.js.map → p-292681a3.entry.js.map} +0 -0
  294. /package/dist/nylas-web-elements/{p-02dfca12.entry.js.map → p-2cf643e5.entry.js.map} +0 -0
  295. /package/dist/nylas-web-elements/{p-9efaf701.entry.js.map → p-2e5ddc68.entry.js.map} +0 -0
  296. /package/dist/nylas-web-elements/{p-3f8cca39.entry.js.map → p-2f787108.entry.js.map} +0 -0
  297. /package/dist/nylas-web-elements/{p-3a892dc9.entry.js.map → p-46da48ea.entry.js.map} +0 -0
  298. /package/dist/nylas-web-elements/{p-080d42d9.entry.js.map → p-581f203b.entry.js.map} +0 -0
  299. /package/dist/nylas-web-elements/{p-f344d9c4.entry.js.map → p-756bf83b.entry.js.map} +0 -0
  300. /package/dist/nylas-web-elements/{p-6e38f35b.entry.js.map → p-7b6e347e.entry.js.map} +0 -0
  301. /package/dist/nylas-web-elements/{p-eed68bcb.entry.js.map → p-c157e947.entry.js.map} +0 -0
  302. /package/dist/nylas-web-elements/{p-e13ed4e9.entry.js.map → p-c8025a87.entry.js.map} +0 -0
  303. /package/dist/nylas-web-elements/{p-80b69e76.entry.js.map → p-cd365b9c.entry.js.map} +0 -0
  304. /package/dist/nylas-web-elements/{p-0e011ed4.entry.js.map → p-d246e20e.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"file":"p-Nzu_5ZmQ.js","mappings":"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","names":[],"sources":["src/common/register-component.ts"],"sourcesContent":["import { BaseNylasConnectorInterface } from '@/connector/connector-interface';\nimport { debug, error } from '@/utils/utils';\nimport { ComponentInterface, getElement } from '@stencil/core';\nimport { CombinedStoreStateKeys, EventEmitterEventType, ExtractEventEmitterKeys, ExtractEventEmitterProperties } from './types';\nimport { HTMLStencilElement } from '@stencil/core/internal';\nexport interface RegisteredComponent<H extends ComponentInterface, B extends BaseNylasConnectorInterface, MailboxStores = string> {\n name: string;\n element: HTMLStencilElement & { setProperty?: (key: string, value: any) => Promise<void>; registerCallback?(): Promise<void> };\n getStoresToProp?: keyof H;\n storeToProps?: Map<string, keyof H>;\n stateToProps?: Map<MailboxStores, keyof H>;\n eventToProps?: Map<ExtractEventEmitterKeys<H>, (event: CustomEvent<EventEmitterEventType<H[ExtractEventEmitterKeys<H>]>>, nylasConnector: B) => Promise<void>>;\n localPropsToProp?: Map<string, keyof H>;\n authToProp?: keyof H;\n connectorToProp?: keyof H;\n registrationEventName?: string;\n unregistrationEventName?: string;\n}\n\nexport function createComponentEvent<T extends ComponentInterface, B extends BaseNylasConnectorInterface>(\n instance: T,\n registeredComponent: RegisteredComponent<T, B>,\n eventName: string = 'registerComponent',\n) {\n return new CustomEvent<RegisteredComponent<typeof instance, B>>(eventName, {\n bubbles: true,\n composed: true,\n detail: registeredComponent,\n });\n}\n\nexport function unregisterComponentEvent<T extends ComponentInterface, B extends BaseNylasConnectorInterface>(\n instance: T,\n registeredComponent: RegisteredComponent<T, B>,\n eventName: string = 'unregisterComponent',\n) {\n return new CustomEvent<RegisteredComponent<typeof instance, B>>(eventName, {\n bubbles: true,\n composed: true,\n detail: registeredComponent,\n });\n}\n\nexport interface RegisterComponentConfig<H extends ComponentInterface, B extends BaseNylasConnectorInterface, MailboxStores>\n extends Omit<RegisteredComponent<H, B, MailboxStores>, 'eventToProps' | 'name' | 'element'> {\n name: string;\n eventToProps?: Partial<{\n [P in ExtractEventEmitterProperties<H> as P['key']]: (event: CustomEvent<P['eventType']>, nylasConnector: B) => Promise<void>;\n }>;\n fireRegisterEvent?: boolean | ((host: H) => boolean);\n}\n\nexport interface NylasComponentInterface extends ComponentInterface {\n authToProp?: keyof this;\n connectorToProp?: keyof this;\n registerCallback?: () => Promise<void>;\n}\n\nexport function RegisterComponent<H extends NylasComponentInterface, B extends BaseNylasConnectorInterface, MailboxStores extends Record<string, any>>(\n config: RegisterComponentConfig<H, B, CombinedStoreStateKeys<keyof MailboxStores, MailboxStores>>,\n) {\n return (target: H, propKey: string) => {\n const componentName = config.name;\n debug(`[${componentName}] Registering component ${componentName} being called on ${propKey}`);\n\n const originalComponentWillLoad = target.componentWillLoad;\n if (!originalComponentWillLoad) {\n error(`[${componentName}] componentWillLoad lifecycle method in ${componentName} missing. Required for RegisterComponent decorator.`);\n return;\n }\n\n const originalConnectCallback = target.connectedCallback;\n if (!originalConnectCallback) {\n error(`[${componentName}] connectedCallback lifecycle method in ${componentName} missing. Required for RegisterComponent decorator.`);\n return;\n }\n\n const originalDisconnectCallback = target.disconnectedCallback;\n if (!originalDisconnectCallback) {\n error(`[${componentName}] disconnectedCallback lifecycle method in ${componentName} missing. Required for RegisterComponent decorator.`);\n return;\n }\n\n // Detect a conflict if config.storeToProps and config.stateToProps are both defined\n // for overlapping prop keys\n if (config.storeToProps && config.stateToProps) {\n const storeToPropsKeys = Array.from(config.storeToProps.values());\n const stateToPropsKeys = Array.from(config.stateToProps.values());\n const intersection = storeToPropsKeys.filter(key => stateToPropsKeys.includes(key));\n if (intersection.length > 0) {\n error(\n `[${componentName}] Overlapping prop keys detected in ${componentName} for storeToProps and stateToProps. Make sure to only define them once. Overlapping keys: ${intersection.join(\n ', ',\n )}`,\n );\n return;\n }\n }\n\n // Convert the record of eventToProps to a map\n const eventToPropsMap = new Map<ExtractEventEmitterKeys<H>, (event: CustomEvent<EventEmitterEventType<H[ExtractEventEmitterKeys<H>]>>, nylasConnector: B) => Promise<void>>();\n if (config.eventToProps) {\n Object.keys(config.eventToProps).forEach(key => {\n eventToPropsMap.set(\n key as ExtractEventEmitterKeys<H>,\n config.eventToProps?.[key as ExtractEventEmitterKeys<H>] as (\n event: CustomEvent<EventEmitterEventType<H[ExtractEventEmitterKeys<H>]>>,\n nylasConnector: B,\n ) => Promise<void>,\n );\n });\n }\n\n target.connectedCallback = function () {\n debug(`[~${componentName}] connectedCallback called`);\n const origionalResult = originalConnectCallback?.call(this);\n const host = getElement(this);\n\n // If the nylas id is already set, then we don't need to do anything\n if (host.dataset.nylasId) {\n return origionalResult;\n }\n\n Object.defineProperty(host, 'registerNylasComponent', {\n get() {\n return true;\n },\n enumerable: true,\n });\n Object.defineProperty(host, 'stateToProps', {\n get() {\n return config.stateToProps;\n },\n enumerable: true,\n });\n Object.defineProperty(host, 'getStoresToProp', {\n get() {\n return config.getStoresToProp;\n },\n enumerable: true,\n });\n Object.defineProperty(host, 'storeToProps', {\n get() {\n return config.storeToProps;\n },\n enumerable: true,\n });\n Object.defineProperty(host, 'eventToProps', {\n get() {\n return eventToPropsMap;\n },\n enumerable: true,\n });\n Object.defineProperty(host, 'authToProp', {\n get() {\n return config.authToProp;\n },\n enumerable: true,\n });\n Object.defineProperty(host, 'connectorToProp', {\n get() {\n return config.connectorToProp;\n },\n enumerable: true,\n });\n Object.defineProperty(host, 'localPropsToProp', {\n get() {\n return config.localPropsToProp;\n },\n enumerable: true,\n });\n return origionalResult;\n };\n\n if (config.fireRegisterEvent) {\n target.componentWillLoad = function () {\n const origionalResult = originalComponentWillLoad?.call(this);\n const host = getElement(this);\n\n // We use our host element to dispatch a registration event that is picked up by the\n // the nylas-provider component.\n const registeredComponent: RegisteredComponent<H, B> = {\n element: host,\n ...config,\n eventToProps: eventToPropsMap,\n };\n const event = createComponentEvent(target, registeredComponent, config.registrationEventName);\n if (host.dispatchEvent(event)) {\n debug(`[${componentName}] Component ${componentName} successfully fired registration event`);\n }\n\n return origionalResult;\n };\n\n target.disconnectedCallback = function () {\n const origionalResult = originalDisconnectCallback?.call(this);\n const host = getElement(this);\n\n // We use our host element to dispatch a registration event that is picked up by the\n // the nylas-provider component.\n const registeredComponent: RegisteredComponent<H, B> = {\n element: host,\n ...config,\n eventToProps: eventToPropsMap,\n };\n const event = unregisterComponentEvent(target, registeredComponent, config.unregistrationEventName);\n if (host.dispatchEvent(event)) {\n debug(`[${componentName}] Component ${componentName} successfully fired unregistration event`);\n }\n\n return origionalResult;\n };\n }\n };\n}\n"],"version":3}
1
+ {"file":"p-BC9yeuRb.js","mappings":"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","names":[],"sources":["src/common/register-component.ts"],"sourcesContent":["import { BaseNylasConnectorInterface } from '@/connector/connector-interface';\nimport { debug, error } from '@/utils/utils';\nimport { ComponentInterface, getElement } from '@stencil/core';\nimport { CombinedStoreStateKeys, EventEmitterEventType, ExtractEventEmitterKeys, ExtractEventEmitterProperties } from './types';\nimport { HTMLStencilElement } from '@stencil/core/internal';\nexport interface RegisteredComponent<H extends ComponentInterface, B extends BaseNylasConnectorInterface, MailboxStores = string> {\n name: string;\n element: HTMLStencilElement & { setProperty?: (key: string, value: any) => Promise<void>; registerCallback?(): Promise<void> };\n getStoresToProp?: keyof H;\n storeToProps?: Map<string, keyof H>;\n stateToProps?: Map<MailboxStores, keyof H>;\n eventToProps?: Map<ExtractEventEmitterKeys<H>, (event: CustomEvent<EventEmitterEventType<H[ExtractEventEmitterKeys<H>]>>, nylasConnector: B) => Promise<void>>;\n localPropsToProp?: Map<string, keyof H>;\n authToProp?: keyof H;\n connectorToProp?: keyof H;\n registrationEventName?: string;\n unregistrationEventName?: string;\n}\n\nexport function createComponentEvent<T extends ComponentInterface, B extends BaseNylasConnectorInterface>(\n instance: T,\n registeredComponent: RegisteredComponent<T, B>,\n eventName: string = 'registerComponent',\n) {\n return new CustomEvent<RegisteredComponent<typeof instance, B>>(eventName, {\n bubbles: true,\n composed: true,\n detail: registeredComponent,\n });\n}\n\nexport function unregisterComponentEvent<T extends ComponentInterface, B extends BaseNylasConnectorInterface>(\n instance: T,\n registeredComponent: RegisteredComponent<T, B>,\n eventName: string = 'unregisterComponent',\n) {\n return new CustomEvent<RegisteredComponent<typeof instance, B>>(eventName, {\n bubbles: true,\n composed: true,\n detail: registeredComponent,\n });\n}\n\nexport interface RegisterComponentConfig<H extends ComponentInterface, B extends BaseNylasConnectorInterface, MailboxStores>\n extends Omit<RegisteredComponent<H, B, MailboxStores>, 'eventToProps' | 'name' | 'element'> {\n name: string;\n eventToProps?: Partial<{\n [P in ExtractEventEmitterProperties<H> as P['key']]: (event: CustomEvent<P['eventType']>, nylasConnector: B) => Promise<void>;\n }>;\n fireRegisterEvent?: boolean | ((host: H) => boolean);\n}\n\nexport interface NylasComponentInterface extends ComponentInterface {\n authToProp?: keyof this;\n connectorToProp?: keyof this;\n registerCallback?: () => Promise<void>;\n}\n\nexport function RegisterComponent<H extends NylasComponentInterface, B extends BaseNylasConnectorInterface, MailboxStores extends Record<string, any>>(\n config: RegisterComponentConfig<H, B, CombinedStoreStateKeys<keyof MailboxStores, MailboxStores>>,\n) {\n return (target: H, propKey: string) => {\n const componentName = config.name;\n debug(`[${componentName}] Registering component ${componentName} being called on ${propKey}`);\n\n const originalComponentWillLoad = target.componentWillLoad;\n if (!originalComponentWillLoad) {\n error(`[${componentName}] componentWillLoad lifecycle method in ${componentName} missing. Required for RegisterComponent decorator.`);\n return;\n }\n\n const originalConnectCallback = target.connectedCallback;\n if (!originalConnectCallback) {\n error(`[${componentName}] connectedCallback lifecycle method in ${componentName} missing. Required for RegisterComponent decorator.`);\n return;\n }\n\n const originalDisconnectCallback = target.disconnectedCallback;\n if (!originalDisconnectCallback) {\n error(`[${componentName}] disconnectedCallback lifecycle method in ${componentName} missing. Required for RegisterComponent decorator.`);\n return;\n }\n\n // Detect a conflict if config.storeToProps and config.stateToProps are both defined\n // for overlapping prop keys\n if (config.storeToProps && config.stateToProps) {\n const storeToPropsKeys = Array.from(config.storeToProps.values());\n const stateToPropsKeys = Array.from(config.stateToProps.values());\n const intersection = storeToPropsKeys.filter(key => stateToPropsKeys.includes(key));\n if (intersection.length > 0) {\n error(\n `[${componentName}] Overlapping prop keys detected in ${componentName} for storeToProps and stateToProps. Make sure to only define them once. Overlapping keys: ${intersection.join(\n ', ',\n )}`,\n );\n return;\n }\n }\n\n // Convert the record of eventToProps to a map\n const eventToPropsMap = new Map<ExtractEventEmitterKeys<H>, (event: CustomEvent<EventEmitterEventType<H[ExtractEventEmitterKeys<H>]>>, nylasConnector: B) => Promise<void>>();\n if (config.eventToProps) {\n Object.keys(config.eventToProps).forEach(key => {\n eventToPropsMap.set(\n key as ExtractEventEmitterKeys<H>,\n config.eventToProps?.[key as ExtractEventEmitterKeys<H>] as (\n event: CustomEvent<EventEmitterEventType<H[ExtractEventEmitterKeys<H>]>>,\n nylasConnector: B,\n ) => Promise<void>,\n );\n });\n }\n\n target.connectedCallback = function () {\n debug(`[~${componentName}] connectedCallback called`);\n const origionalResult = originalConnectCallback?.call(this);\n const host = getElement(this);\n\n // If the nylas id is already set, then we don't need to do anything\n if (host.dataset.nylasId) {\n return origionalResult;\n }\n\n Object.defineProperty(host, 'registerNylasComponent', {\n get() {\n return true;\n },\n enumerable: true,\n });\n Object.defineProperty(host, 'stateToProps', {\n get() {\n return config.stateToProps;\n },\n enumerable: true,\n });\n Object.defineProperty(host, 'getStoresToProp', {\n get() {\n return config.getStoresToProp;\n },\n enumerable: true,\n });\n Object.defineProperty(host, 'storeToProps', {\n get() {\n return config.storeToProps;\n },\n enumerable: true,\n });\n Object.defineProperty(host, 'eventToProps', {\n get() {\n return eventToPropsMap;\n },\n enumerable: true,\n });\n Object.defineProperty(host, 'authToProp', {\n get() {\n return config.authToProp;\n },\n enumerable: true,\n });\n Object.defineProperty(host, 'connectorToProp', {\n get() {\n return config.connectorToProp;\n },\n enumerable: true,\n });\n Object.defineProperty(host, 'localPropsToProp', {\n get() {\n return config.localPropsToProp;\n },\n enumerable: true,\n });\n return origionalResult;\n };\n\n if (config.fireRegisterEvent) {\n target.componentWillLoad = function () {\n const origionalResult = originalComponentWillLoad?.call(this);\n const host = getElement(this);\n\n // We use our host element to dispatch a registration event that is picked up by the\n // the nylas-provider component.\n const registeredComponent: RegisteredComponent<H, B> = {\n element: host,\n ...config,\n eventToProps: eventToPropsMap,\n };\n const event = createComponentEvent(target, registeredComponent, config.registrationEventName);\n if (host.dispatchEvent(event)) {\n debug(`[${componentName}] Component ${componentName} successfully fired registration event`);\n }\n\n return origionalResult;\n };\n\n target.disconnectedCallback = function () {\n const origionalResult = originalDisconnectCallback?.call(this);\n const host = getElement(this);\n\n // We use our host element to dispatch a registration event that is picked up by the\n // the nylas-provider component.\n const registeredComponent: RegisteredComponent<H, B> = {\n element: host,\n ...config,\n eventToProps: eventToPropsMap,\n };\n const event = unregisterComponentEvent(target, registeredComponent, config.unregistrationEventName);\n if (host.dispatchEvent(event)) {\n debug(`[${componentName}] Component ${componentName} successfully fired unregistration event`);\n }\n\n return origionalResult;\n };\n }\n };\n}\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-Nzu_5ZmQ.js';
3
- import { a as debug, b as instance, s as sanitize, G as isNonPrintableKey, H as getBrowser } from './p-C-9RzJZG.js';
2
+ import { R as RegisterComponent } from './p-BC9yeuRb.js';
3
+ import { a as debug, b as instance, s as sanitize, G as isNonPrintableKey, H as getBrowser } from './p-BkzMJ4pV.js';
4
4
  import { E as EVENT_TITLE_TOKENS } from './p-DUCeQ1R4.js';
5
5
  import { d as defineCustomElement$4 } from './p-CfWyIsij.js';
6
6
  import { d as defineCustomElement$3 } from './p-u4gxSL05.js';
@@ -506,6 +506,6 @@ function defineCustomElement() {
506
506
  }
507
507
 
508
508
  export { NylasEventDescription as N, defineCustomElement as d };
509
- //# sourceMappingURL=p-BX-dFDFA.js.map
509
+ //# sourceMappingURL=p-BMpBdxEp.js.map
510
510
 
511
- //# sourceMappingURL=p-BX-dFDFA.js.map
511
+ //# sourceMappingURL=p-BMpBdxEp.js.map
@@ -1 +1 @@
1
- {"file":"p-BX-dFDFA.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement","eventDescriptionTokens","i18next"],"sources":["src/components/scheduler-editor/nylas-event-description/nylas-event-description.scss?tag=nylas-event-description&encapsulation=shadow","src/components/scheduler-editor/nylas-event-description/nylas-event-description.tsx"],"sourcesContent":["@use '../../../common/styles/variables' as *;\n\n:host {\n @include default-css-variables;\n}\n\n.nylas-event-description {\n display: flex;\n flex-direction: column;\n gap: 4px;\n position: relative;\n\n label {\n display: flex;\n align-items: center;\n color: var(--nylas-base-800);\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n line-height: 150%;\n\n /* 21px */\n span.label-icon {\n margin-left: 4px;\n\n tooltip-component {\n display: flex;\n }\n }\n }\n\n textarea {\n padding: 12px 16px;\n border-width: 1;\n resize: vertical;\n border-radius: 8px;\n font-family: var(--nylas-font-family);\n font-size: 16px;\n line-height: 24px;\n border: 1px solid var(--nylas-base-200);\n\n &::-webkit-resizer {\n display: none;\n }\n }\n\n div.event-description {\n padding: 12px 16px;\n border: 1px solid var(--nylas-base-200);\n border-radius: var(--nylas-border-radius-2x);\n white-space: nowrap;\n scrollbar-width: thin;\n min-height: 50px;\n overflow-y: auto;\n white-space: pre-wrap;\n line-height: 1.5;\n background-color: var(--nylas-base-0);\n /* Preserves line breaks */\n &::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n }\n\n &.error {\n border-color: var(--nylas-error);\n border-width: 2px;\n outline: none;\n }\n }\n\n span.add-additional-fields {\n display: flex;\n align-items: center;\n gap: 8px;\n\n button-component {\n button {\n height: 35px;\n background-color: var(--nylas-base-0);\n }\n }\n }\n\n span.help-text {\n display: inline-block;\n gap: 4px;\n align-items: center;\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-block;\n\n tooltip-component {\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 .highlighted-tag {\n background-color: var(--nylas-base-200);\n border-radius: var(--nylas-border-radius);\n padding: 2px 5px;\n margin-left: 4px;\n margin-bottom: 4px;\n display: inline-block;\n vertical-align: baseline;\n }\n\n .token-options {\n display: block;\n background-color: var(--nylas-base-0);\n width: 100%;\n max-height: 336px;\n margin-top: 28px;\n overflow: auto;\n z-index: 1;\n border-radius: 4px;\n position: absolute;\n bottom: 108px;\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}\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 { Configuration } from '@nylas/core';\nimport i18next from '@/utils/i18n';\nimport { LANGUAGE_CODE } from '@/common/constants';\nimport { EVENT_TITLE_TOKENS as eventDescriptionTokens } from '@/common/constants';\nimport { ThemeConfig } from '@nylas/core';\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-description` component is a form input for the description of an event.\n * @part nedesc - The event description container\n * @part nedesc__textarea - The event description textarea\n */\n@Component({\n tag: 'nylas-event-description',\n styleUrl: 'nylas-event-description.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasEventDescription {\n /**\n * The host element <nylas-event-description>\n */\n @Element() host!: HTMLElement;\n /**\n * @standalone\n * The selected config\n */\n @Prop() selectedConfiguration?: Configuration;\n\n /**\n * @standalone\n * The event description stored in the configuration\n */\n @Prop() eventDescription?: string = this.selectedConfiguration?.event_booking?.description;\n\n /**\n * @standalone\n * The name of the event description input.\n */\n @Prop() name: string = 'description';\n\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: LANGUAGE_CODE;\n\n /**\n * Hide the auto popolate button\n */\n @Prop() hideAutoPopulateButton: boolean = false;\n\n /**\n * Whether to show the tokens dropdown.\n */\n @Prop() noTemplates: boolean = false;\n /**\n * @standalone\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: ThemeConfig;\n\n /**\n * The selected event description state. This defaults to the event description from the configuration or an empty string.\n */\n @State() description: string = this.eventDescription || this.selectedConfiguration?.event_booking?.description || '';\n @State() showTokens: boolean = false;\n /**\n * The available token options for the dropdown.\n */\n @State() availableTokens: { label: string; value: string; labelHTML: Token }[] = eventDescriptionTokens.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 description 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\n @State() additionalFieldTokens: Token[] = [];\n // Reference to the description textarea element\n private descriptionRef!: HTMLDivElement;\n\n /**\n * The element internals.\n */\n @AttachInternals() internals!: ElementInternals;\n\n /**\n * When a name prop is passed, stencil does not automatically set the name attribute on the host element.\n * Since this component is form-associated, the name attribute is required for form submission.\n * This is a workaround to ensure that the name attribute is set on the host element.\n */\n @Watch('name')\n elementNameChangedHandler(newValue: string) {\n debug('nylas-event-description', 'elementNameChangedHandler', newValue);\n this.host.setAttribute('name', newValue);\n }\n\n @Watch('selectedConfiguration')\n selectedConfigurationChangedHandler(newValue: Configuration) {\n debug('nylas-custom-booking-flow', 'selectedConfigurationChangedHandler', newValue);\n const description = newValue?.event_booking?.description || this.eventDescription || '';\n const additionalFields = newValue?.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 = [...eventDescriptionTokens, ...newTokens].map(token => ({\n label: token.token,\n value: token.value,\n labelHTML: token,\n }));\n this.filteredTokens = [...this.availableTokens];\n this.description = description;\n if (description) {\n this.updateEventDescriptionFromProp(description);\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 /**\n * Event emitted when the event description changes.\n */\n @Event() valueChanged!: EventEmitter<{\n value: string;\n name: string;\n }>;\n\n connectedCallback() {\n debug('nylas-event-description', 'connectedCallback');\n }\n\n componentWillLoad() {\n debug('nylas-event-description', 'componentWillLoad');\n this.host.setAttribute('name', this.name);\n this.applyThemeConfig(this.themeConfig);\n }\n\n componentDidLoad() {\n debug('nylas-event-description', 'componentDidLoad');\n if (this.selectedConfiguration) {\n this.selectedConfigurationChangedHandler(this.selectedConfiguration);\n } else {\n this.description = this.eventDescription || '';\n this.updateEventDescriptionFromProp(this.description);\n }\n }\n\n disconnectedCallback() {\n debug('nylas-event-description', 'disconnectedCallback');\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 = [...eventDescriptionTokens, ...newTokens].map(token => ({\n label: token.token,\n value: token.value,\n labelHTML: token,\n }));\n this.filteredTokens = [...this.availableTokens];\n }\n }\n\n updateEventDescriptionFromProp(newValue: string) {\n debug('nylas-event-description', 'updateEventDescriptionFromProp', newValue);\n const description = newValue || this.description;\n if (this.descriptionRef) {\n this.descriptionRef.innerHTML = this.highlightTokens(description);\n }\n }\n\n highlightTokens(description: string) {\n let outputHtml = description;\n [...eventDescriptionTokens, ...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 '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 console.warn('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 // 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.updateEventDescription(textContent);\n this.resetDropdown();\n return;\n }\n const { focusOffset, dollarIndex, lastWord, currentText } = currentSelection;\n\n if (dollarIndex === -1 || focusOffset < dollarIndex) {\n this.updateEventDescription(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 description 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.updateEventDescription(textContent);\n }\n\n handleInputKeyDown(event) {\n const selection = this.getCurrentSelectionForBrowser();\n\n // If no text is remaining in the description, reset the description to an empty string\n if (selection?.allSelected && !isNonPrintableKey(event)) {\n this.descriptionRef.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 } else {\n const textNode = selection?.node;\n const offset = selection?.focusOffset || 0;\n\n if (!textNode || offset === -1 || this.descriptionRef.childNodes.length === 0) {\n // If no text node exists or invalid selection, create new line at start\n const newTextNode = document.createTextNode('\\n');\n this.descriptionRef.insertBefore(newTextNode, this.descriptionRef.firstChild);\n\n // Set cursor after newline\n const range = document.createRange();\n range.setStart(newTextNode, 1);\n range.collapse(true);\n const sel = window.getSelection();\n sel?.removeAllRanges();\n sel?.addRange(range);\n } else if (textNode.nodeType === Node.TEXT_NODE) {\n const text = textNode.nodeValue || '';\n // Insert newline at cursor position\n const newText = text.slice(0, offset) + '\\n' + text.slice(offset);\n textNode.nodeValue = newText;\n\n // Move cursor after the newline\n const range = document.createRange();\n range.setStart(textNode, offset + 1);\n range.collapse(true);\n const sel = window.getSelection();\n sel?.removeAllRanges();\n sel?.addRange(range);\n }\n this.descriptionRef.focus();\n }\n } else if (event.key === 'ArrowDown') {\n if (this.showTokens) {\n event.preventDefault();\n }\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 if (this.showTokens) {\n event.preventDefault();\n }\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 }\n if (this.descriptionRef.textContent === '' || selection?.allSelected) {\n this.descriptionRef.innerHTML = '';\n this.updateEventDescription('');\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.descriptionRef.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.descriptionRef.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 description with the selected token\n this.updateEventDescription(this.descriptionRef.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 updateEventDescription(text: string) {\n const value = text.replace(/ +/g, ' ');\n this.isInternalsAvailable && this.internals?.setFormValue(value, this.name);\n this.valueChanged.emit({ value: value, name: this.name });\n }\n\n resetDropdown() {\n this.showTokens = false;\n this.ariaActivedescendant = '';\n }\n\n getLabelHTML(token: { token: string; description: string }) {\n return (\n <div class=\"token-label\">\n <span class=\"token\">{token.token}</span>\n <span class=\"description\">{token.description}</span>\n </div>\n );\n }\n\n handleAddAdditionalFields() {\n if (this.additionalFieldTokens.length === 0) {\n return;\n }\n\n // Remove any existing additional fields section while preserving content before and after\n const baseDescription = this.descriptionRef.innerHTML;\n const startMarker = '--- Additional Fields ---';\n const endMarker = '--- End Additional Fields ---';\n\n const startIndex = baseDescription.indexOf(startMarker);\n const endIndex = baseDescription.indexOf(endMarker);\n\n // Add the additional fields block with start and end markers\n let additionalFieldsBlock = startMarker + '\\n';\n this.additionalFieldTokens.forEach(token => {\n additionalFieldsBlock += `${token.description}: ${token.value}\\n`;\n });\n additionalFieldsBlock += endMarker;\n\n let description;\n if (startIndex !== -1 && endIndex !== -1) {\n // Replace existing block while maintaining text positions\n description = baseDescription.substring(0, startIndex) + additionalFieldsBlock + baseDescription.substring(endIndex + endMarker.length);\n } else {\n // First time adding the block\n description = baseDescription + additionalFieldsBlock;\n }\n\n this.updateEventDescriptionFromProp(description);\n this.updateEventDescription(description);\n }\n\n @RegisterComponent<NylasEventDescription, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-event-description',\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-description\" part=\"nedesc\">\n <label htmlFor=\"description\">\n {i18next.t('nylasEventDescription.headerTitle')}\n <span class=\"label-icon\">\n <tooltip-component>\n <info-icon slot=\"tooltip-icon\" />\n <span slot=\"tooltip-content\">{i18next.t('nylasEventDescription.tooltip.desc')}</span>\n </tooltip-component>\n </span>\n </label>\n <div\n id=\"event-description\"\n class={{ 'event-description': true }}\n part=\"nedesc__textarea\"\n contentEditable=\"true\"\n onInput={e => this.handleChange(e)}\n onKeyDown={event => this.handleInputKeyDown(event)}\n ref={el => (this.descriptionRef = el as HTMLDivElement)}\n ></div>\n {!this.noTemplates && this.showTokens && this.filteredTokens?.length > 0 && (\n <div class=\"token-options\" part=\"nedesc__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.description') })} <code>$</code>{' '}\n {i18next.t('nylasEventTitle.helpText', { context: 'end' })}\n <span class=\"label-icon\">\n <tooltip-component>\n <info-icon slot=\"tooltip-icon\" width=\"13\" height=\"13\" />\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.noTemplates && !this.hideAutoPopulateButton && (\n <span class=\"add-additional-fields\">\n <button-component variant=\"basic\" onClick={() => this.handleAddAdditionalFields()}>\n {i18next.t('nylasEventDescription.addAdditionalFields.buttonText')}\n </button-component>\n <span class=\"label-icon\">\n <tooltip-component>\n <info-icon slot=\"tooltip-icon\" />\n <span slot=\"tooltip-content\">\n {i18next.t('nylasEventDescription.addAdditionalFields.tooltip.desc')} <code>{'${invitee}'}</code>\n </span>\n </tooltip-component>\n </span>\n </span>\n )}\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
1
+ {"file":"p-BMpBdxEp.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement","eventDescriptionTokens","i18next"],"sources":["src/components/scheduler-editor/nylas-event-description/nylas-event-description.scss?tag=nylas-event-description&encapsulation=shadow","src/components/scheduler-editor/nylas-event-description/nylas-event-description.tsx"],"sourcesContent":["@use '../../../common/styles/variables' as *;\n\n:host {\n @include default-css-variables;\n}\n\n.nylas-event-description {\n display: flex;\n flex-direction: column;\n gap: 4px;\n position: relative;\n\n label {\n display: flex;\n align-items: center;\n color: var(--nylas-base-800);\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n line-height: 150%;\n\n /* 21px */\n span.label-icon {\n margin-left: 4px;\n\n tooltip-component {\n display: flex;\n }\n }\n }\n\n textarea {\n padding: 12px 16px;\n border-width: 1;\n resize: vertical;\n border-radius: 8px;\n font-family: var(--nylas-font-family);\n font-size: 16px;\n line-height: 24px;\n border: 1px solid var(--nylas-base-200);\n\n &::-webkit-resizer {\n display: none;\n }\n }\n\n div.event-description {\n padding: 12px 16px;\n border: 1px solid var(--nylas-base-200);\n border-radius: var(--nylas-border-radius-2x);\n white-space: nowrap;\n scrollbar-width: thin;\n min-height: 50px;\n overflow-y: auto;\n white-space: pre-wrap;\n line-height: 1.5;\n background-color: var(--nylas-base-0);\n /* Preserves line breaks */\n &::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n }\n\n &.error {\n border-color: var(--nylas-error);\n border-width: 2px;\n outline: none;\n }\n }\n\n span.add-additional-fields {\n display: flex;\n align-items: center;\n gap: 8px;\n\n button-component {\n button {\n height: 35px;\n background-color: var(--nylas-base-0);\n }\n }\n }\n\n span.help-text {\n display: inline-block;\n gap: 4px;\n align-items: center;\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-block;\n\n tooltip-component {\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 .highlighted-tag {\n background-color: var(--nylas-base-200);\n border-radius: var(--nylas-border-radius);\n padding: 2px 5px;\n margin-left: 4px;\n margin-bottom: 4px;\n display: inline-block;\n vertical-align: baseline;\n }\n\n .token-options {\n display: block;\n background-color: var(--nylas-base-0);\n width: 100%;\n max-height: 336px;\n margin-top: 28px;\n overflow: auto;\n z-index: 1;\n border-radius: 4px;\n position: absolute;\n bottom: 108px;\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}\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 { Configuration } from '@nylas/core';\nimport i18next from '@/utils/i18n';\nimport { LANGUAGE_CODE } from '@/common/constants';\nimport { EVENT_TITLE_TOKENS as eventDescriptionTokens } from '@/common/constants';\nimport { ThemeConfig } from '@nylas/core';\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-description` component is a form input for the description of an event.\n * @part nedesc - The event description container\n * @part nedesc__textarea - The event description textarea\n */\n@Component({\n tag: 'nylas-event-description',\n styleUrl: 'nylas-event-description.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasEventDescription {\n /**\n * The host element <nylas-event-description>\n */\n @Element() host!: HTMLElement;\n /**\n * @standalone\n * The selected config\n */\n @Prop() selectedConfiguration?: Configuration;\n\n /**\n * @standalone\n * The event description stored in the configuration\n */\n @Prop() eventDescription?: string = this.selectedConfiguration?.event_booking?.description;\n\n /**\n * @standalone\n * The name of the event description input.\n */\n @Prop() name: string = 'description';\n\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: LANGUAGE_CODE;\n\n /**\n * Hide the auto popolate button\n */\n @Prop() hideAutoPopulateButton: boolean = false;\n\n /**\n * Whether to show the tokens dropdown.\n */\n @Prop() noTemplates: boolean = false;\n /**\n * @standalone\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: ThemeConfig;\n\n /**\n * The selected event description state. This defaults to the event description from the configuration or an empty string.\n */\n @State() description: string = this.eventDescription || this.selectedConfiguration?.event_booking?.description || '';\n @State() showTokens: boolean = false;\n /**\n * The available token options for the dropdown.\n */\n @State() availableTokens: { label: string; value: string; labelHTML: Token }[] = eventDescriptionTokens.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 description 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\n @State() additionalFieldTokens: Token[] = [];\n // Reference to the description textarea element\n private descriptionRef!: HTMLDivElement;\n\n /**\n * The element internals.\n */\n @AttachInternals() internals!: ElementInternals;\n\n /**\n * When a name prop is passed, stencil does not automatically set the name attribute on the host element.\n * Since this component is form-associated, the name attribute is required for form submission.\n * This is a workaround to ensure that the name attribute is set on the host element.\n */\n @Watch('name')\n elementNameChangedHandler(newValue: string) {\n debug('nylas-event-description', 'elementNameChangedHandler', newValue);\n this.host.setAttribute('name', newValue);\n }\n\n @Watch('selectedConfiguration')\n selectedConfigurationChangedHandler(newValue: Configuration) {\n debug('nylas-custom-booking-flow', 'selectedConfigurationChangedHandler', newValue);\n const description = newValue?.event_booking?.description || this.eventDescription || '';\n const additionalFields = newValue?.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 = [...eventDescriptionTokens, ...newTokens].map(token => ({\n label: token.token,\n value: token.value,\n labelHTML: token,\n }));\n this.filteredTokens = [...this.availableTokens];\n this.description = description;\n if (description) {\n this.updateEventDescriptionFromProp(description);\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 /**\n * Event emitted when the event description changes.\n */\n @Event() valueChanged!: EventEmitter<{\n value: string;\n name: string;\n }>;\n\n connectedCallback() {\n debug('nylas-event-description', 'connectedCallback');\n }\n\n componentWillLoad() {\n debug('nylas-event-description', 'componentWillLoad');\n this.host.setAttribute('name', this.name);\n this.applyThemeConfig(this.themeConfig);\n }\n\n componentDidLoad() {\n debug('nylas-event-description', 'componentDidLoad');\n if (this.selectedConfiguration) {\n this.selectedConfigurationChangedHandler(this.selectedConfiguration);\n } else {\n this.description = this.eventDescription || '';\n this.updateEventDescriptionFromProp(this.description);\n }\n }\n\n disconnectedCallback() {\n debug('nylas-event-description', 'disconnectedCallback');\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 = [...eventDescriptionTokens, ...newTokens].map(token => ({\n label: token.token,\n value: token.value,\n labelHTML: token,\n }));\n this.filteredTokens = [...this.availableTokens];\n }\n }\n\n updateEventDescriptionFromProp(newValue: string) {\n debug('nylas-event-description', 'updateEventDescriptionFromProp', newValue);\n const description = newValue || this.description;\n if (this.descriptionRef) {\n this.descriptionRef.innerHTML = this.highlightTokens(description);\n }\n }\n\n highlightTokens(description: string) {\n let outputHtml = description;\n [...eventDescriptionTokens, ...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 '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 console.warn('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 // 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.updateEventDescription(textContent);\n this.resetDropdown();\n return;\n }\n const { focusOffset, dollarIndex, lastWord, currentText } = currentSelection;\n\n if (dollarIndex === -1 || focusOffset < dollarIndex) {\n this.updateEventDescription(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 description 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.updateEventDescription(textContent);\n }\n\n handleInputKeyDown(event) {\n const selection = this.getCurrentSelectionForBrowser();\n\n // If no text is remaining in the description, reset the description to an empty string\n if (selection?.allSelected && !isNonPrintableKey(event)) {\n this.descriptionRef.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 } else {\n const textNode = selection?.node;\n const offset = selection?.focusOffset || 0;\n\n if (!textNode || offset === -1 || this.descriptionRef.childNodes.length === 0) {\n // If no text node exists or invalid selection, create new line at start\n const newTextNode = document.createTextNode('\\n');\n this.descriptionRef.insertBefore(newTextNode, this.descriptionRef.firstChild);\n\n // Set cursor after newline\n const range = document.createRange();\n range.setStart(newTextNode, 1);\n range.collapse(true);\n const sel = window.getSelection();\n sel?.removeAllRanges();\n sel?.addRange(range);\n } else if (textNode.nodeType === Node.TEXT_NODE) {\n const text = textNode.nodeValue || '';\n // Insert newline at cursor position\n const newText = text.slice(0, offset) + '\\n' + text.slice(offset);\n textNode.nodeValue = newText;\n\n // Move cursor after the newline\n const range = document.createRange();\n range.setStart(textNode, offset + 1);\n range.collapse(true);\n const sel = window.getSelection();\n sel?.removeAllRanges();\n sel?.addRange(range);\n }\n this.descriptionRef.focus();\n }\n } else if (event.key === 'ArrowDown') {\n if (this.showTokens) {\n event.preventDefault();\n }\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 if (this.showTokens) {\n event.preventDefault();\n }\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 }\n if (this.descriptionRef.textContent === '' || selection?.allSelected) {\n this.descriptionRef.innerHTML = '';\n this.updateEventDescription('');\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.descriptionRef.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.descriptionRef.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 description with the selected token\n this.updateEventDescription(this.descriptionRef.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 updateEventDescription(text: string) {\n const value = text.replace(/ +/g, ' ');\n this.isInternalsAvailable && this.internals?.setFormValue(value, this.name);\n this.valueChanged.emit({ value: value, name: this.name });\n }\n\n resetDropdown() {\n this.showTokens = false;\n this.ariaActivedescendant = '';\n }\n\n getLabelHTML(token: { token: string; description: string }) {\n return (\n <div class=\"token-label\">\n <span class=\"token\">{token.token}</span>\n <span class=\"description\">{token.description}</span>\n </div>\n );\n }\n\n handleAddAdditionalFields() {\n if (this.additionalFieldTokens.length === 0) {\n return;\n }\n\n // Remove any existing additional fields section while preserving content before and after\n const baseDescription = this.descriptionRef.innerHTML;\n const startMarker = '--- Additional Fields ---';\n const endMarker = '--- End Additional Fields ---';\n\n const startIndex = baseDescription.indexOf(startMarker);\n const endIndex = baseDescription.indexOf(endMarker);\n\n // Add the additional fields block with start and end markers\n let additionalFieldsBlock = startMarker + '\\n';\n this.additionalFieldTokens.forEach(token => {\n additionalFieldsBlock += `${token.description}: ${token.value}\\n`;\n });\n additionalFieldsBlock += endMarker;\n\n let description;\n if (startIndex !== -1 && endIndex !== -1) {\n // Replace existing block while maintaining text positions\n description = baseDescription.substring(0, startIndex) + additionalFieldsBlock + baseDescription.substring(endIndex + endMarker.length);\n } else {\n // First time adding the block\n description = baseDescription + additionalFieldsBlock;\n }\n\n this.updateEventDescriptionFromProp(description);\n this.updateEventDescription(description);\n }\n\n @RegisterComponent<NylasEventDescription, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-event-description',\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-description\" part=\"nedesc\">\n <label htmlFor=\"description\">\n {i18next.t('nylasEventDescription.headerTitle')}\n <span class=\"label-icon\">\n <tooltip-component>\n <info-icon slot=\"tooltip-icon\" />\n <span slot=\"tooltip-content\">{i18next.t('nylasEventDescription.tooltip.desc')}</span>\n </tooltip-component>\n </span>\n </label>\n <div\n id=\"event-description\"\n class={{ 'event-description': true }}\n part=\"nedesc__textarea\"\n contentEditable=\"true\"\n onInput={e => this.handleChange(e)}\n onKeyDown={event => this.handleInputKeyDown(event)}\n ref={el => (this.descriptionRef = el as HTMLDivElement)}\n ></div>\n {!this.noTemplates && this.showTokens && this.filteredTokens?.length > 0 && (\n <div class=\"token-options\" part=\"nedesc__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.description') })} <code>$</code>{' '}\n {i18next.t('nylasEventTitle.helpText', { context: 'end' })}\n <span class=\"label-icon\">\n <tooltip-component>\n <info-icon slot=\"tooltip-icon\" width=\"13\" height=\"13\" />\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.noTemplates && !this.hideAutoPopulateButton && (\n <span class=\"add-additional-fields\">\n <button-component variant=\"basic\" onClick={() => this.handleAddAdditionalFields()}>\n {i18next.t('nylasEventDescription.addAdditionalFields.buttonText')}\n </button-component>\n <span class=\"label-icon\">\n <tooltip-component>\n <info-icon slot=\"tooltip-icon\" />\n <span slot=\"tooltip-content\">\n {i18next.t('nylasEventDescription.addAdditionalFields.tooltip.desc')} <code>{'${invitee}'}</code>\n </span>\n </tooltip-component>\n </span>\n </span>\n )}\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -1,9 +1,9 @@
1
1
  import { h, F as Fragment, p as proxyCustomElement, H, e as createEvent, i as Host } from './p-Bht9ktsW.js';
2
- import { R as RegisterComponent } from './p-Nzu_5ZmQ.js';
3
- import { a as debug, b as instance, E as mergeDeep, F as parsePreviewLink } from './p-C-9RzJZG.js';
2
+ import { R as RegisterComponent } from './p-BC9yeuRb.js';
3
+ import { a as debug, b as instance, E as mergeDeep, F as parsePreviewLink } from './p-BkzMJ4pV.js';
4
4
  import { E as ErrorCategory, u } from './p-C1VNIgoH.js';
5
5
  import { D as DEFAULT_OPEN_HOURS, e as editorTabComponentNames, C as CONFIGURATION_EVENT_TYPE } from './p-DUCeQ1R4.js';
6
- import { i as isInitialized, a as init, c as captureMessage, b as captureFeedback, v as version, f as feedbackSyncIntegration } from './p-C-bIz_hy.js';
6
+ import { i as isInitialized, a as init, c as captureMessage, b as captureFeedback, v as version, f as feedbackSyncIntegration } from './p-D9Dg1JWU.js';
7
7
  import { d as defineCustomElement$1n } from './p-p1aiCEqo.js';
8
8
  import { d as defineCustomElement$1m } from './p-CfWyIsij.js';
9
9
  import { d as defineCustomElement$1l } from './p-B-ANsDfP.js';
@@ -28,53 +28,53 @@ import { d as defineCustomElement$13 } from './p-T0NGagTT.js';
28
28
  import { d as defineCustomElement$12 } from './p-BxoSPM89.js';
29
29
  import { d as defineCustomElement$11 } from './p-u4gxSL05.js';
30
30
  import { d as defineCustomElement$10 } from './p-Do1E50j8.js';
31
- import { d as defineCustomElement$$ } from './p-o0D7OIed.js';
31
+ import { d as defineCustomElement$$ } from './p-DJv7tC9z.js';
32
32
  import { d as defineCustomElement$_ } from './p-BYgdOeYE.js';
33
- import { d as defineCustomElement$Z } from './p-Ck7Utpku.js';
33
+ import { d as defineCustomElement$Z } from './p-C5fHZLWQ.js';
34
34
  import { d as defineCustomElement$Y } from './p-DwvZ9OA9.js';
35
35
  import { d as defineCustomElement$X } from './p-BKlYBRE-.js';
36
36
  import { d as defineCustomElement$W } from './p-TRIQHgQL.js';
37
37
  import { d as defineCustomElement$V } from './p-DoT3Y7yk.js';
38
- import { d as defineCustomElement$U } from './p-DFnXfDS7.js';
39
- import { d as defineCustomElement$T } from './p-D5WcQ7s2.js';
40
- import { d as defineCustomElement$S } from './p-DEF0WG29.js';
41
- import { d as defineCustomElement$R } from './p-CJXT074p.js';
42
- import { d as defineCustomElement$Q } from './p-DP1P7gC9.js';
43
- import { d as defineCustomElement$P } from './p-DLdTazaE.js';
44
- import { d as defineCustomElement$O } from './p-C7Gn7-GK.js';
45
- import { d as defineCustomElement$N } from './p-CIZt1hbc.js';
46
- import { d as defineCustomElement$M } from './p-Ckv0Bcus.js';
47
- import { d as defineCustomElement$L } from './p-Dy9AIDSW.js';
48
- import { d as defineCustomElement$K } from './p-C3quV8UM.js';
49
- import { d as defineCustomElement$J } from './p-rernVjNw.js';
50
- import { d as defineCustomElement$I } from './p-CAlTvMv3.js';
51
- import { d as defineCustomElement$H } from './p-D4OZzddo.js';
52
- import { d as defineCustomElement$G } from './p-D6E0vp2X.js';
53
- import { d as defineCustomElement$F } from './p-bbx04OZB.js';
54
- import { d as defineCustomElement$E } from './p-BQaskvNx.js';
55
- import { d as defineCustomElement$D } from './p-BX-dFDFA.js';
56
- import { d as defineCustomElement$C } from './p-C7_XycjO.js';
57
- import { d as defineCustomElement$B } from './p-USlPWd32.js';
58
- import { d as defineCustomElement$A } from './p-BPbLHmnh.js';
59
- import { d as defineCustomElement$z } from './p-B_Zms6J8.js';
60
- import { d as defineCustomElement$y } from './p-CS8D-1if.js';
61
- import { d as defineCustomElement$x } from './p-BgfJE-cE.js';
62
- import { d as defineCustomElement$w } from './p-CZLOU3Va.js';
63
- import { d as defineCustomElement$v } from './p-B-q5dr4Z.js';
64
- import { d as defineCustomElement$u } from './p-DZJR8iD8.js';
65
- import { d as defineCustomElement$t } from './p-ML5NaBlp.js';
66
- import { d as defineCustomElement$s } from './p-B4LAfvS9.js';
67
- import { d as defineCustomElement$r } from './p-CxgQ4DV9.js';
68
- import { d as defineCustomElement$q } from './p-Dows6o9d.js';
69
- import { d as defineCustomElement$p } from './p-CxjS5vcT.js';
70
- import { d as defineCustomElement$o } from './p-DPHPGDki.js';
71
- import { d as defineCustomElement$n } from './p-s06UjtHJ.js';
72
- import { d as defineCustomElement$m } from './p-H2PEDQev.js';
73
- import { d as defineCustomElement$l } from './p-He5IjVyD.js';
74
- import { d as defineCustomElement$k } from './p-ksfJsdwW.js';
75
- import { d as defineCustomElement$j } from './p-DzIz09Sr.js';
76
- import { d as defineCustomElement$i } from './p-DIbhOKDN.js';
77
- import { d as defineCustomElement$h } from './p-BzNgohl1.js';
38
+ import { d as defineCustomElement$U } from './p-DbjQjOKi.js';
39
+ import { d as defineCustomElement$T } from './p-DTlpOiw-.js';
40
+ import { d as defineCustomElement$S } from './p-DHlJz5qn.js';
41
+ import { d as defineCustomElement$R } from './p-BnrCrrsE.js';
42
+ import { d as defineCustomElement$Q } from './p-D9PED7bs.js';
43
+ import { d as defineCustomElement$P } from './p-MYEzIAsT.js';
44
+ import { d as defineCustomElement$O } from './p-DRd9V7vZ.js';
45
+ import { d as defineCustomElement$N } from './p-CS7dGt1R.js';
46
+ import { d as defineCustomElement$M } from './p-Dp5o78QS.js';
47
+ import { d as defineCustomElement$L } from './p-DAmas3F9.js';
48
+ import { d as defineCustomElement$K } from './p-CI0FKgAJ.js';
49
+ import { d as defineCustomElement$J } from './p-C7CSS14_.js';
50
+ import { d as defineCustomElement$I } from './p-DkJ3N73P.js';
51
+ import { d as defineCustomElement$H } from './p-F1_K10Bc.js';
52
+ import { d as defineCustomElement$G } from './p-BfdTgv37.js';
53
+ import { d as defineCustomElement$F } from './p-UTtjPYki.js';
54
+ import { d as defineCustomElement$E } from './p-DciJgP0N.js';
55
+ import { d as defineCustomElement$D } from './p-BMpBdxEp.js';
56
+ import { d as defineCustomElement$C } from './p-D1EoqZsu.js';
57
+ import { d as defineCustomElement$B } from './p-C8gVhB99.js';
58
+ import { d as defineCustomElement$A } from './p-CzBqaxFU.js';
59
+ import { d as defineCustomElement$z } from './p-s8TAnkny.js';
60
+ import { d as defineCustomElement$y } from './p-B5pNjL0N.js';
61
+ import { d as defineCustomElement$x } from './p-DqcCEDhq.js';
62
+ import { d as defineCustomElement$w } from './p-CwlnHdR3.js';
63
+ import { d as defineCustomElement$v } from './p-BqTfI9iO.js';
64
+ import { d as defineCustomElement$u } from './p-ngAHxLZm.js';
65
+ import { d as defineCustomElement$t } from './p-Du2grbuj.js';
66
+ import { d as defineCustomElement$s } from './p-BoryVwdE.js';
67
+ import { d as defineCustomElement$r } from './p-CZw_P3Tp.js';
68
+ import { d as defineCustomElement$q } from './p-DvSo9R8l.js';
69
+ import { d as defineCustomElement$p } from './p-C_QAMVyX.js';
70
+ import { d as defineCustomElement$o } from './p-DPeb4p0M.js';
71
+ import { d as defineCustomElement$n } from './p-DKnp-SZi.js';
72
+ import { d as defineCustomElement$m } from './p--DnD2uAW.js';
73
+ import { d as defineCustomElement$l } from './p-DzErtQSw.js';
74
+ import { d as defineCustomElement$k } from './p-Dqk37NDi.js';
75
+ import { d as defineCustomElement$j } from './p-DwtTOYHU.js';
76
+ import { d as defineCustomElement$i } from './p-qe7eWmdR.js';
77
+ import { d as defineCustomElement$h } from './p-Cx31rTZq.js';
78
78
  import { d as defineCustomElement$g } from './p-aKU6wIer.js';
79
79
  import { d as defineCustomElement$f } from './p-CNjkUtlu.js';
80
80
  import { d as defineCustomElement$e } from './p-al7EpFcC.js';
@@ -83,8 +83,8 @@ import { d as defineCustomElement$c } from './p-5p7xZOmi.js';
83
83
  import { d as defineCustomElement$b } from './p-DNqwyMWN.js';
84
84
  import { d as defineCustomElement$a } from './p-Dyl-GVi0.js';
85
85
  import { d as defineCustomElement$9 } from './p-emUyDjNl.js';
86
- import { d as defineCustomElement$8 } from './p-zBmfn9Ee.js';
87
- import { d as defineCustomElement$7 } from './p-nwpBi6uh.js';
86
+ import { d as defineCustomElement$8 } from './p-CexYKlpc.js';
87
+ import { d as defineCustomElement$7 } from './p-BvRLg-HQ.js';
88
88
  import { d as defineCustomElement$6 } from './p-5epylYpy.js';
89
89
  import { d as defineCustomElement$5 } from './p-Di3WT0Ws.js';
90
90
  import { d as defineCustomElement$4 } from './p-Bm7z3HuO.js';
@@ -1370,6 +1370,6 @@ function defineCustomElement() {
1370
1370
  }
1371
1371
 
1372
1372
  export { NylasEditorTabs as N, defineCustomElement as d };
1373
- //# sourceMappingURL=p-DyOLurnZ.js.map
1373
+ //# sourceMappingURL=p-BYzuAGXU.js.map
1374
1374
 
1375
- //# sourceMappingURL=p-DyOLurnZ.js.map
1375
+ //# sourceMappingURL=p-BYzuAGXU.js.map