@nylas/web-elements 2.4.1 → 2.5.0-canary-20260306042320

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 (758) hide show
  1. package/dist/cdn/input-color-picker/input-color-picker.es.js +3 -3
  2. package/dist/cdn/nylas-scheduler-editor/nylas-scheduler-editor.es.js +2893 -2839
  3. package/dist/cdn/nylas-scheduling/nylas-scheduling.es.js +286 -273
  4. package/dist/cjs/add-circle-icon_2.cjs.entry.js +2 -2
  5. package/dist/cjs/archive-icon.cjs.entry.js +1 -1
  6. package/dist/cjs/arrow-icon.cjs.entry.js +1 -1
  7. package/dist/cjs/bold-icon.cjs.entry.js +1 -1
  8. package/dist/cjs/button-component_2.cjs.entry.js +2 -2
  9. package/dist/cjs/calendar-agenda-fill-icon_39.cjs.entry.js +86 -62
  10. package/dist/cjs/calendar-agenda-fill-icon_39.cjs.entry.js.map +1 -1
  11. package/dist/cjs/calendar-cancel-icon.cjs.entry.js +1 -1
  12. package/dist/cjs/calendar-check-icon.cjs.entry.js +1 -1
  13. package/dist/cjs/calendar-icon.cjs.entry.js +1 -1
  14. package/dist/cjs/checkbox-component.cjs.entry.js +1 -1
  15. package/dist/cjs/checkbox-group_4.cjs.entry.js +5 -5
  16. package/dist/cjs/checkmark-circle-icon.cjs.entry.js +1 -1
  17. package/dist/cjs/checkmark-icon_15.cjs.entry.js +44 -23
  18. package/dist/cjs/checkmark-icon_15.cjs.entry.js.map +1 -1
  19. package/dist/cjs/chevron-icon_3.cjs.entry.js +4 -4
  20. package/dist/cjs/clock-icon_4.cjs.entry.js +4 -4
  21. package/dist/cjs/delete-icon.cjs.entry.js +1 -1
  22. package/dist/cjs/document-refresh-icon.cjs.entry.js +1 -1
  23. package/dist/cjs/folder-icon.cjs.entry.js +1 -1
  24. package/dist/cjs/forward-icon.cjs.entry.js +1 -1
  25. package/dist/cjs/globe-icon_3.cjs.entry.js +5 -5
  26. package/dist/cjs/google-logo-icon.microsoft-logo-icon.nylas-editor-tabs.nylas-editor-tabs-group.nylas-list-configurations.nylas-select-event-type.entry.cjs.js.map +1 -1
  27. package/dist/cjs/google-logo-icon_6.cjs.entry.js +19 -17
  28. package/dist/cjs/google-logo-icon_6.cjs.entry.js.map +1 -1
  29. package/dist/cjs/google-meet-icon_5.cjs.entry.js +5 -5
  30. package/dist/cjs/inbox-icon.cjs.entry.js +1 -1
  31. package/dist/cjs/info-icon_2.cjs.entry.js +3 -3
  32. package/dist/cjs/input-component.cjs.entry.js +1 -1
  33. package/dist/cjs/input-dropdown_2.cjs.entry.js +2 -2
  34. package/dist/cjs/italic-icon.cjs.entry.js +1 -1
  35. package/dist/cjs/loader.cjs.js +1 -1
  36. package/dist/cjs/multi-select-dropdown.cjs.entry.js +2 -2
  37. package/dist/cjs/nylas-booked-event-card_11.cjs.entry.js +4 -4
  38. package/dist/cjs/nylas-form-card.cjs.entry.js +1 -1
  39. package/dist/cjs/nylas-notification_2.cjs.entry.js +2 -2
  40. package/dist/cjs/nylas-scheduler-editor.cjs.entry.js +13 -6
  41. package/dist/cjs/nylas-scheduler-editor.cjs.entry.js.map +1 -1
  42. package/dist/cjs/nylas-scheduler-editor.entry.cjs.js.map +1 -1
  43. package/dist/cjs/nylas-scheduling.cjs.entry.js +38 -19
  44. package/dist/cjs/nylas-scheduling.cjs.entry.js.map +1 -1
  45. package/dist/cjs/nylas-scheduling.entry.cjs.js.map +1 -1
  46. package/dist/cjs/nylas-web-elements.cjs.js +1 -1
  47. package/dist/cjs/person-icon.cjs.entry.js +1 -1
  48. package/dist/cjs/play-icon.cjs.entry.js +1 -1
  49. package/dist/cjs/radio-button-group.cjs.entry.js +1 -1
  50. package/dist/cjs/refresh-icon.cjs.entry.js +1 -1
  51. package/dist/cjs/reply-all-icon.cjs.entry.js +1 -1
  52. package/dist/cjs/reply-icon.cjs.entry.js +1 -1
  53. package/dist/cjs/sent-icon.cjs.entry.js +1 -1
  54. package/dist/cjs/spam-icon.cjs.entry.js +1 -1
  55. package/dist/cjs/star-icon.cjs.entry.js +1 -1
  56. package/dist/cjs/stop-icon.cjs.entry.js +1 -1
  57. package/dist/cjs/textarea-component.cjs.entry.js +1 -1
  58. package/dist/cjs/toggle-switch.cjs.entry.js +1 -1
  59. package/dist/cjs/translate-icon.cjs.entry.js +1 -1
  60. package/dist/cjs/trash-fill-icon.cjs.entry.js +1 -1
  61. package/dist/cjs/underline-icon.cjs.entry.js +1 -1
  62. package/dist/cjs/{version-BpVJo5VP.js → version-Co332DgG.js} +3 -3
  63. package/dist/{esm/version-BCn0rl0y.js.map → cjs/version-Co332DgG.js.map} +1 -1
  64. package/dist/collection/common/icons/add-circle.js +1 -1
  65. package/dist/collection/common/icons/archive.js +1 -1
  66. package/dist/collection/common/icons/arrow.js +1 -1
  67. package/dist/collection/common/icons/bold.js +1 -1
  68. package/dist/collection/common/icons/calendar-agenda-fill.js +1 -1
  69. package/dist/collection/common/icons/calendar-agenda.js +1 -1
  70. package/dist/collection/common/icons/calendar-cancel.js +1 -1
  71. package/dist/collection/common/icons/calendar-check.js +1 -1
  72. package/dist/collection/common/icons/calendar-info.js +1 -1
  73. package/dist/collection/common/icons/calendar-patterns.js +1 -1
  74. package/dist/collection/common/icons/calendar.js +1 -1
  75. package/dist/collection/common/icons/checkmark-circle.js +1 -1
  76. package/dist/collection/common/icons/checkmark.js +1 -1
  77. package/dist/collection/common/icons/chevron.js +1 -1
  78. package/dist/collection/common/icons/clock.js +1 -1
  79. package/dist/collection/common/icons/close.js +1 -1
  80. package/dist/collection/common/icons/copy.js +1 -1
  81. package/dist/collection/common/icons/delete.js +1 -1
  82. package/dist/collection/common/icons/document-refresh.js +1 -1
  83. package/dist/collection/common/icons/dragable.js +1 -1
  84. package/dist/collection/common/icons/edit.js +1 -1
  85. package/dist/collection/common/icons/envelope-fill.js +1 -1
  86. package/dist/collection/common/icons/envelope.js +1 -1
  87. package/dist/collection/common/icons/eye.js +1 -1
  88. package/dist/collection/common/icons/feedback-icon.js +1 -1
  89. package/dist/collection/common/icons/flow.js +1 -1
  90. package/dist/collection/common/icons/folder.js +1 -1
  91. package/dist/collection/common/icons/forward.js +1 -1
  92. package/dist/collection/common/icons/globe.js +1 -1
  93. package/dist/collection/common/icons/google-logo.js +1 -1
  94. package/dist/collection/common/icons/google-meet.js +1 -1
  95. package/dist/collection/common/icons/inbox.js +1 -1
  96. package/dist/collection/common/icons/info.js +1 -1
  97. package/dist/collection/common/icons/italic.js +1 -1
  98. package/dist/collection/common/icons/loading.js +1 -1
  99. package/dist/collection/common/icons/location-off.js +1 -1
  100. package/dist/collection/common/icons/location.js +1 -1
  101. package/dist/collection/common/icons/microsof-teams.js +1 -1
  102. package/dist/collection/common/icons/microsoft-logo.js +1 -1
  103. package/dist/collection/common/icons/nylas-logo.js +1 -1
  104. package/dist/collection/common/icons/paintbrush-fill.js +1 -1
  105. package/dist/collection/common/icons/paintbrush.js +1 -1
  106. package/dist/collection/common/icons/people.js +1 -1
  107. package/dist/collection/common/icons/person-clipboard.js +1 -1
  108. package/dist/collection/common/icons/person.js +1 -1
  109. package/dist/collection/common/icons/play.js +1 -1
  110. package/dist/collection/common/icons/plus.js +1 -1
  111. package/dist/collection/common/icons/refresh.js +1 -1
  112. package/dist/collection/common/icons/reply-all.js +1 -1
  113. package/dist/collection/common/icons/reply.js +1 -1
  114. package/dist/collection/common/icons/search.js +1 -1
  115. package/dist/collection/common/icons/sent.js +1 -1
  116. package/dist/collection/common/icons/spam.js +1 -1
  117. package/dist/collection/common/icons/star.js +1 -1
  118. package/dist/collection/common/icons/stop.js +1 -1
  119. package/dist/collection/common/icons/translate.js +1 -1
  120. package/dist/collection/common/icons/trash-fill.js +1 -1
  121. package/dist/collection/common/icons/trash.js +1 -1
  122. package/dist/collection/common/icons/underline.js +1 -1
  123. package/dist/collection/common/icons/warning.js +1 -1
  124. package/dist/collection/common/icons/zoom.js +1 -1
  125. package/dist/collection/components/design-system/button-component/button-component.js +1 -1
  126. package/dist/collection/components/design-system/checkbox-component/checkbox-component.js +1 -1
  127. package/dist/collection/components/design-system/checkbox-group/checkbox-group.js +1 -1
  128. package/dist/collection/components/design-system/input-color-picker/input-color-picker.js +2 -2
  129. package/dist/collection/components/design-system/input-component/input-component.js +1 -1
  130. package/dist/collection/components/design-system/input-dropdown/input-dropdown.js +1 -1
  131. package/dist/collection/components/design-system/input-image-url/input-image-url.js +1 -1
  132. package/dist/collection/components/design-system/multi-select-dropdown/multi-select-dropdown.js +2 -2
  133. package/dist/collection/components/design-system/nylas-date-component/nylas-date-component.js +1 -1
  134. package/dist/collection/components/design-system/radio-button-group/radio-button-group.js +1 -1
  135. package/dist/collection/components/design-system/select-dropdown/select-dropdown.js +2 -2
  136. package/dist/collection/components/design-system/textarea-component/textarea-component.js +1 -1
  137. package/dist/collection/components/design-system/time-period-selector/time-period-selector.js +1 -1
  138. package/dist/collection/components/design-system/toggle-switch/toggle-switch.js +1 -1
  139. package/dist/collection/components/design-system/tooltip-component/toolitp-component.js +2 -2
  140. package/dist/collection/components/scheduler/nylas-confirmed-event-card/nylas-confirmed-event-card.js +1 -1
  141. package/dist/collection/components/scheduler/nylas-feedback-form/nylas-feedback-form.js +2 -2
  142. package/dist/collection/components/scheduler/nylas-notification/nylas-notification.js +1 -1
  143. package/dist/collection/components/scheduler/nylas-organizer-confirmation-card/nylas-organizer-confirmation-card.js +2 -2
  144. package/dist/collection/components/scheduler/nylas-scheduling/nylas-scheduling.js +33 -17
  145. package/dist/collection/components/scheduler/nylas-scheduling/nylas-scheduling.js.map +1 -1
  146. package/dist/collection/components/scheduler-editor/nylas-additional-participants/nylas-additional-participants.js +50 -9
  147. package/dist/collection/components/scheduler-editor/nylas-additional-participants/nylas-additional-participants.js.map +1 -1
  148. package/dist/collection/components/scheduler-editor/nylas-availability-picker/nylas-availability-picker.js +1 -1
  149. package/dist/collection/components/scheduler-editor/nylas-booking-confirmation-redirect/nylas-booking-confirmation-redirect.js +1 -1
  150. package/dist/collection/components/scheduler-editor/nylas-booking-confirmation-type/nylas-booking-confirmation-type.js +1 -1
  151. package/dist/collection/components/scheduler-editor/nylas-booking-form-config/nylas-booking-form-config.js +2 -2
  152. package/dist/collection/components/scheduler-editor/nylas-cancellation-policy/nylas-cancellation-policy.js +1 -1
  153. package/dist/collection/components/scheduler-editor/nylas-confirmation-email/nylas-confirmation-email.js +2 -2
  154. package/dist/collection/components/scheduler-editor/nylas-connected-calendars/nylas-connected-calendars.js +21 -10
  155. package/dist/collection/components/scheduler-editor/nylas-connected-calendars/nylas-connected-calendars.js.map +1 -1
  156. package/dist/collection/components/scheduler-editor/nylas-custom-booking-flow/nylas-custom-booking-flow.js +1 -1
  157. package/dist/collection/components/scheduler-editor/nylas-customize-booking-settings/nylas-customize-booking-settings.js +1 -1
  158. package/dist/collection/components/scheduler-editor/nylas-disable-emails/nylas-disable-emails.js +1 -1
  159. package/dist/collection/components/scheduler-editor/nylas-editor-tabs/nylas-editor-tabs.js +11 -9
  160. package/dist/collection/components/scheduler-editor/nylas-editor-tabs/nylas-editor-tabs.js.map +1 -1
  161. package/dist/collection/components/scheduler-editor/nylas-editor-tabs-group/nylas-editor-tabs-group.js +5 -5
  162. package/dist/collection/components/scheduler-editor/nylas-event-capacity/nylas-event-capacity.js +1 -1
  163. package/dist/collection/components/scheduler-editor/nylas-event-info/nylas-event-info.js +1 -1
  164. package/dist/collection/components/scheduler-editor/nylas-event-limits/nylas-event-limits.js +1 -1
  165. package/dist/collection/components/scheduler-editor/nylas-event-location/nylas-event-location.js +1 -1
  166. package/dist/collection/components/scheduler-editor/nylas-event-timeslot/nylas-event-timeslot.js +3 -3
  167. package/dist/collection/components/scheduler-editor/nylas-form-card/nylas-form-card.js +1 -1
  168. package/dist/collection/components/scheduler-editor/nylas-limit-future-bookings/nylas-limit-future-bookings.js +1 -1
  169. package/dist/collection/components/scheduler-editor/nylas-min-booking-notice/nylas-min-booking-notice.js +1 -1
  170. package/dist/collection/components/scheduler-editor/nylas-min-cancellation-notice/nylas-min-cancellation-notice.js +1 -1
  171. package/dist/collection/components/scheduler-editor/nylas-notetaker-config/nylas-notetaker-config.js +8 -8
  172. package/dist/collection/components/scheduler-editor/nylas-only-specific-time-availability/nylas-only-specific-time-availability.js +1 -1
  173. package/dist/collection/components/scheduler-editor/nylas-page-name/nylas-page-name.js +1 -1
  174. package/dist/collection/components/scheduler-editor/nylas-page-styling/nylas-page-styling.js +1 -1
  175. package/dist/collection/components/scheduler-editor/nylas-participant-booking-calendars/nylas-participant-booking-calendars.js +21 -8
  176. package/dist/collection/components/scheduler-editor/nylas-participant-booking-calendars/nylas-participant-booking-calendars.js.map +1 -1
  177. package/dist/collection/components/scheduler-editor/nylas-participants-custom-availability/nylas-participants-custom-availability.js +2 -2
  178. package/dist/collection/components/scheduler-editor/nylas-participants-custom-availability/nylas-participants-custom-availability.js.map +1 -1
  179. package/dist/collection/components/scheduler-editor/nylas-reminder-emails/nylas-reminder-emails.js +3 -3
  180. package/dist/collection/components/scheduler-editor/nylas-reminder-time/nylas-reminder-time.js +1 -1
  181. package/dist/collection/components/scheduler-editor/nylas-scheduler-editor/nylas-scheduler-editor.js +41 -4
  182. package/dist/collection/components/scheduler-editor/nylas-scheduler-editor/nylas-scheduler-editor.js.map +1 -1
  183. package/dist/collection/components/scheduler-editor/nylas-specific-time-availability-picker/nylas-specific-time-availability-picker.js +2 -2
  184. package/dist/collection/components/scheduler-editor/nylas-time-window-picker/nylas-time-window-picker.js +3 -3
  185. package/dist/collection/components/scheduler-editor/nylas-timeslot-interval/nylas-timeslot-interval.js +1 -1
  186. package/dist/collection/connector/shared/api/scheduler.js +3 -0
  187. package/dist/collection/connector/shared/api/scheduler.js.map +1 -1
  188. package/dist/collection/stores/scheduler-config-store.js +1 -1
  189. package/dist/collection/stores/scheduler-config-store.js.map +1 -1
  190. package/dist/collection/version.js +1 -1
  191. package/dist/collection/version.js.map +1 -1
  192. package/dist/components/add-circle-icon.js +1 -1
  193. package/dist/components/archive-icon.js +1 -1
  194. package/dist/components/arrow-icon.js +1 -1
  195. package/dist/components/bold-icon.js +1 -1
  196. package/dist/components/button-component.js +1 -1
  197. package/dist/components/calendar-agenda-fill-icon.js +1 -1
  198. package/dist/components/calendar-agenda-icon.js +1 -1
  199. package/dist/components/calendar-cancel-icon.js +1 -1
  200. package/dist/components/calendar-check-icon.js +1 -1
  201. package/dist/components/calendar-icon.js +1 -1
  202. package/dist/components/calendar-info-icon.js +1 -1
  203. package/dist/components/calendar-patterns-icon.js +1 -1
  204. package/dist/components/checkbox-component.js +1 -1
  205. package/dist/components/checkbox-group.js +1 -1
  206. package/dist/components/checkmark-circle-icon.js +1 -1
  207. package/dist/components/checkmark-icon.js +1 -1
  208. package/dist/components/chevron-icon.js +1 -1
  209. package/dist/components/clock-icon.js +1 -1
  210. package/dist/components/close-icon.js +1 -1
  211. package/dist/components/copy-icon.js +1 -1
  212. package/dist/components/delete-icon.js +1 -1
  213. package/dist/components/document-refresh-icon.js +1 -1
  214. package/dist/components/dragable-icon.js +1 -1
  215. package/dist/components/edit-icon.js +1 -1
  216. package/dist/components/envelope-fill-icon.js +1 -1
  217. package/dist/components/envelope-icon.js +1 -1
  218. package/dist/components/eye-icon.js +1 -1
  219. package/dist/components/feedback-icon.js +1 -1
  220. package/dist/components/flow-icon.js +1 -1
  221. package/dist/components/folder-icon.js +1 -1
  222. package/dist/components/forward-icon.js +1 -1
  223. package/dist/components/globe-icon.js +1 -1
  224. package/dist/components/google-logo-icon.js +1 -1
  225. package/dist/components/google-meet-icon.js +1 -1
  226. package/dist/components/inbox-icon.js +1 -1
  227. package/dist/components/info-icon.js +1 -1
  228. package/dist/components/input-color-picker.js +1 -1
  229. package/dist/components/input-component.js +1 -1
  230. package/dist/components/input-dropdown.js +1 -1
  231. package/dist/components/input-image-url.js +1 -1
  232. package/dist/components/italic-icon.js +1 -1
  233. package/dist/components/loading-icon.js +1 -1
  234. package/dist/components/location-icon.js +1 -1
  235. package/dist/components/location-off-icon.js +1 -1
  236. package/dist/components/microsoft-logo-icon.js +1 -1
  237. package/dist/components/microsoft-teams-icon.js +1 -1
  238. package/dist/components/multi-select-dropdown.js +1 -1
  239. package/dist/components/nylas-additional-participants.js +1 -1
  240. package/dist/components/nylas-availability-picker.js +1 -1
  241. package/dist/components/nylas-booked-event-card.js +1 -1
  242. package/dist/components/nylas-booking-calendar-picker.js +1 -1
  243. package/dist/components/nylas-booking-confirmation-redirect.js +1 -1
  244. package/dist/components/nylas-booking-confirmation-type.js +1 -1
  245. package/dist/components/nylas-booking-form-config.js +1 -1
  246. package/dist/components/nylas-booking-form.js +1 -1
  247. package/dist/components/nylas-buffer-time.js +1 -1
  248. package/dist/components/nylas-calendar-picker.js +1 -1
  249. package/dist/components/nylas-cancel-booking-form.js +1 -1
  250. package/dist/components/nylas-cancellation-policy.js +1 -1
  251. package/dist/components/nylas-cancelled-event-card.js +1 -1
  252. package/dist/components/nylas-confirmation-email.js +1 -1
  253. package/dist/components/nylas-confirmed-event-card.js +1 -1
  254. package/dist/components/nylas-connected-calendars.js +1 -1
  255. package/dist/components/nylas-custom-booking-flow.js +1 -1
  256. package/dist/components/nylas-custom-event-slug.js +1 -1
  257. package/dist/components/nylas-customize-booking-settings.js +1 -1
  258. package/dist/components/nylas-date-component.js +1 -1
  259. package/dist/components/nylas-date-picker.js +1 -1
  260. package/dist/components/nylas-disable-emails.js +1 -1
  261. package/dist/components/nylas-editor-tabs-group.js +1 -1
  262. package/dist/components/nylas-editor-tabs.js +1 -1
  263. package/dist/components/nylas-event-calendar.js +1 -1
  264. package/dist/components/nylas-event-capacity.js +1 -1
  265. package/dist/components/nylas-event-description.js +1 -1
  266. package/dist/components/nylas-event-duration.js +1 -1
  267. package/dist/components/nylas-event-info.js +1 -1
  268. package/dist/components/nylas-event-limits.js +1 -1
  269. package/dist/components/nylas-event-location.js +1 -1
  270. package/dist/components/nylas-event-timeslot.js +1 -1
  271. package/dist/components/nylas-event-title.js +1 -1
  272. package/dist/components/nylas-feedback-form.js +1 -1
  273. package/dist/components/nylas-form-card.js +1 -1
  274. package/dist/components/nylas-limit-future-bookings.js +1 -1
  275. package/dist/components/nylas-list-configurations.js +1 -1
  276. package/dist/components/nylas-locale-switch.js +1 -1
  277. package/dist/components/nylas-logo.js +1 -1
  278. package/dist/components/nylas-min-booking-notice.js +1 -1
  279. package/dist/components/nylas-min-cancellation-notice.js +1 -1
  280. package/dist/components/nylas-notetaker-config.js +1 -1
  281. package/dist/components/nylas-notification.js +1 -1
  282. package/dist/components/nylas-only-specific-time-availability.js +1 -1
  283. package/dist/components/nylas-organizer-confirmation-card.js +1 -1
  284. package/dist/components/nylas-page-name.js +1 -1
  285. package/dist/components/nylas-page-styling.js +1 -1
  286. package/dist/components/nylas-participant-booking-calendars.js +1 -1
  287. package/dist/components/nylas-participants-custom-availability.js +1 -1
  288. package/dist/components/nylas-reminder-emails.js +1 -1
  289. package/dist/components/nylas-reminder-time.js +1 -1
  290. package/dist/components/nylas-scheduler-editor.js +113 -106
  291. package/dist/components/nylas-scheduler-editor.js.map +1 -1
  292. package/dist/components/nylas-scheduling-method.js +1 -1
  293. package/dist/components/nylas-scheduling.js +76 -57
  294. package/dist/components/nylas-scheduling.js.map +1 -1
  295. package/dist/components/nylas-select-event-type.js +1 -1
  296. package/dist/components/nylas-selected-event-card.js +1 -1
  297. package/dist/components/nylas-specific-time-availability-picker.js +1 -1
  298. package/dist/components/nylas-time-window-picker.js +1 -1
  299. package/dist/components/nylas-timeslot-interval.js +1 -1
  300. package/dist/components/nylas-timeslot-picker.js +1 -1
  301. package/dist/components/{p-BK05OJWJ.js → p-0Q791asW.js} +10 -10
  302. package/dist/components/{p-BK05OJWJ.js.map → p-0Q791asW.js.map} +1 -1
  303. package/dist/components/{p-B54Kgpd1.js → p-5RXhzvUo.js} +15 -15
  304. package/dist/components/{p-B54Kgpd1.js.map → p-5RXhzvUo.js.map} +1 -1
  305. package/dist/components/{p-DnRMuXBv.js → p-6A8ylLCU.js} +7 -7
  306. package/dist/components/{p-DnRMuXBv.js.map → p-6A8ylLCU.js.map} +1 -1
  307. package/dist/components/{p-dBa2aR6u.js → p-8f-LJhGH.js} +17 -17
  308. package/dist/components/{p-dBa2aR6u.js.map → p-8f-LJhGH.js.map} +1 -1
  309. package/dist/components/{p-DbTGA7PK.js → p-9SuQgutb.js} +5 -5
  310. package/dist/components/{p-DbTGA7PK.js.map → p-9SuQgutb.js.map} +1 -1
  311. package/dist/components/{p-D5p5Z11R.js → p-B0-YJO0f.js} +5 -5
  312. package/dist/components/{p-D5p5Z11R.js.map → p-B0-YJO0f.js.map} +1 -1
  313. package/dist/components/{p-n1uQQdTd.js → p-B2EksfAF.js} +3 -3
  314. package/dist/components/{p-n1uQQdTd.js.map → p-B2EksfAF.js.map} +1 -1
  315. package/dist/components/{p-Bkoea0ab.js → p-B2LU95MT.js} +3 -3
  316. package/dist/components/{p-Bkoea0ab.js.map → p-B2LU95MT.js.map} +1 -1
  317. package/dist/components/{p-Deswp92f.js → p-B9a2SDWB.js} +8 -8
  318. package/dist/components/{p-Deswp92f.js.map → p-B9a2SDWB.js.map} +1 -1
  319. package/dist/components/{p-BW5AWWWU.js → p-BAKh5tMf.js} +3 -3
  320. package/dist/components/{p-BW5AWWWU.js.map → p-BAKh5tMf.js.map} +1 -1
  321. package/dist/components/{p-CRjHH_OM.js → p-BD4aqMeC.js} +3 -3
  322. package/dist/components/{p-CRjHH_OM.js.map → p-BD4aqMeC.js.map} +1 -1
  323. package/dist/components/{p-wFPFZcNc.js → p-BF0muZ9G.js} +3 -3
  324. package/dist/components/{p-wFPFZcNc.js.map → p-BF0muZ9G.js.map} +1 -1
  325. package/dist/components/{p-Dhs6n8pM.js → p-BI99l5Mr.js} +3 -3
  326. package/dist/components/{p-Dhs6n8pM.js.map → p-BI99l5Mr.js.map} +1 -1
  327. package/dist/components/{p-PH-ASHZS.js → p-BNuHkEZZ.js} +3 -3
  328. package/dist/components/{p-PH-ASHZS.js.map → p-BNuHkEZZ.js.map} +1 -1
  329. package/dist/components/{p-C9beWH2f.js → p-BOk080VZ.js} +7 -7
  330. package/dist/components/{p-C9beWH2f.js.map → p-BOk080VZ.js.map} +1 -1
  331. package/dist/components/{p-Bpeu-ygG.js → p-BPbPSFbO.js} +10 -10
  332. package/dist/components/{p-Bpeu-ygG.js.map → p-BPbPSFbO.js.map} +1 -1
  333. package/dist/components/{p-CGxeg--J.js → p-BQsgOTb4.js} +14 -14
  334. package/dist/components/{p-CGxeg--J.js.map → p-BQsgOTb4.js.map} +1 -1
  335. package/dist/components/{p-DPClTQN0.js → p-BRjK4HIS.js} +10 -10
  336. package/dist/components/{p-DPClTQN0.js.map → p-BRjK4HIS.js.map} +1 -1
  337. package/dist/components/{p-S5MMQ3kK.js → p-BSfQxQEN.js} +3 -3
  338. package/dist/components/{p-S5MMQ3kK.js.map → p-BSfQxQEN.js.map} +1 -1
  339. package/dist/components/{p-WCXOX3Ou.js → p-BT5kT23k.js} +3 -3
  340. package/dist/components/{p-WCXOX3Ou.js.map → p-BT5kT23k.js.map} +1 -1
  341. package/dist/components/{p-DU3FxQJW.js → p-BTWclWyF.js} +5 -5
  342. package/dist/components/{p-DU3FxQJW.js.map → p-BTWclWyF.js.map} +1 -1
  343. package/dist/components/{p-Dvm3cFRX.js → p-BVH0Klhu.js} +4 -4
  344. package/dist/components/{p-Dvm3cFRX.js.map → p-BVH0Klhu.js.map} +1 -1
  345. package/dist/components/{p-DTF0fIhr.js → p-B_Qi3sM4.js} +3 -3
  346. package/dist/components/{p-DTF0fIhr.js.map → p-B_Qi3sM4.js.map} +1 -1
  347. package/dist/components/{p-1lKplrc1.js → p-BbQVpnV2.js} +5 -5
  348. package/dist/components/{p-1lKplrc1.js.map → p-BbQVpnV2.js.map} +1 -1
  349. package/dist/components/{p-k3eh7IEY.js → p-BhVGvOQU.js} +4 -4
  350. package/dist/components/{p-k3eh7IEY.js.map → p-BhVGvOQU.js.map} +1 -1
  351. package/dist/components/{p-Dhuiox3C.js → p-BjvgBBDi.js} +7 -7
  352. package/dist/components/{p-Dhuiox3C.js.map → p-BjvgBBDi.js.map} +1 -1
  353. package/dist/components/{p-B4WU6Ddk.js → p-BkqJQBCp.js} +3 -3
  354. package/dist/components/{p-B4WU6Ddk.js.map → p-BkqJQBCp.js.map} +1 -1
  355. package/dist/components/{p-C9OPB0dE.js → p-BluyqSV4.js} +12 -12
  356. package/dist/components/{p-C9OPB0dE.js.map → p-BluyqSV4.js.map} +1 -1
  357. package/dist/components/{p-BBKmpMW8.js → p-BmBJwWDS.js} +6 -6
  358. package/dist/components/{p-BBKmpMW8.js.map → p-BmBJwWDS.js.map} +1 -1
  359. package/dist/components/{p-D1LkVzVP.js → p-BmFTnJHK.js} +6 -6
  360. package/dist/components/{p-D1LkVzVP.js.map → p-BmFTnJHK.js.map} +1 -1
  361. package/dist/components/{p-sbWcoagv.js → p-BnEkgCIs.js} +3 -3
  362. package/dist/components/{p-sbWcoagv.js.map → p-BnEkgCIs.js.map} +1 -1
  363. package/dist/components/{p-BQqYYMC9.js → p-BoUo2hc7.js} +3 -3
  364. package/dist/components/{p-BQqYYMC9.js.map → p-BoUo2hc7.js.map} +1 -1
  365. package/dist/components/{p-CxX2L0KD.js → p-BrOgWk7y.js} +3 -3
  366. package/dist/components/{p-CxX2L0KD.js.map → p-BrOgWk7y.js.map} +1 -1
  367. package/dist/components/{p-CK4A4BDU.js → p-BxsadZ25.js} +8 -8
  368. package/dist/components/{p-CK4A4BDU.js.map → p-BxsadZ25.js.map} +1 -1
  369. package/dist/components/{p-B-gCWV_D.js → p-ByDfkWkX.js} +3 -3
  370. package/dist/components/{p-B-gCWV_D.js.map → p-ByDfkWkX.js.map} +1 -1
  371. package/dist/components/{p-B7pr9t7K.js → p-C0W947JI.js} +6 -6
  372. package/dist/components/{p-B7pr9t7K.js.map → p-C0W947JI.js.map} +1 -1
  373. package/dist/components/{p-BPwvrBru.js → p-C3knoHon.js} +4 -4
  374. package/dist/components/{p-BPwvrBru.js.map → p-C3knoHon.js.map} +1 -1
  375. package/dist/components/{p-CZF2moAV.js → p-C4BZ4XFc.js} +3 -3
  376. package/dist/components/{p-CZF2moAV.js.map → p-C4BZ4XFc.js.map} +1 -1
  377. package/dist/components/{p--JWPNuJw.js → p-C4RTQIyO.js} +3 -3
  378. package/dist/components/{p--JWPNuJw.js.map → p-C4RTQIyO.js.map} +1 -1
  379. package/dist/components/{p-GAHE0QsH.js → p-C6FGSOHu.js} +8 -8
  380. package/dist/components/{p-GAHE0QsH.js.map → p-C6FGSOHu.js.map} +1 -1
  381. package/dist/components/{p-Ccv_qdzg.js → p-C6yDHOLr.js} +6 -6
  382. package/dist/components/{p-Ccv_qdzg.js.map → p-C6yDHOLr.js.map} +1 -1
  383. package/dist/components/{p-BWj2o6Z2.js → p-C7J83Us-.js} +3 -3
  384. package/dist/components/{p-BWj2o6Z2.js.map → p-C7J83Us-.js.map} +1 -1
  385. package/dist/components/{p-hYRQCAHR.js → p-C7ZpwRD0.js} +3 -3
  386. package/dist/components/{p-hYRQCAHR.js.map → p-C7ZpwRD0.js.map} +1 -1
  387. package/dist/components/{p-I6ZJueEV.js → p-C8tr7RQP.js} +14 -14
  388. package/dist/components/{p-I6ZJueEV.js.map → p-C8tr7RQP.js.map} +1 -1
  389. package/dist/components/{p-DDuJfpmS.js → p-C9Mlv9rC.js} +3 -3
  390. package/dist/components/{p-DDuJfpmS.js.map → p-C9Mlv9rC.js.map} +1 -1
  391. package/dist/components/{p-3TuqcJ7a.js → p-CBBEkysd.js} +3 -3
  392. package/dist/components/{p-3TuqcJ7a.js.map → p-CBBEkysd.js.map} +1 -1
  393. package/dist/components/{p-B8zO9u9G.js → p-CDDw-hf8.js} +3 -3
  394. package/dist/components/{p-B8zO9u9G.js.map → p-CDDw-hf8.js.map} +1 -1
  395. package/dist/components/{p-D9TpXP_3.js → p-CFeDwD40.js} +3 -3
  396. package/dist/components/{p-D9TpXP_3.js.map → p-CFeDwD40.js.map} +1 -1
  397. package/dist/components/{p-B75UH_79.js → p-CHuh_iTR.js} +5 -5
  398. package/dist/components/{p-B75UH_79.js.map → p-CHuh_iTR.js.map} +1 -1
  399. package/dist/components/{p-CnuLK086.js → p-CJvmK-NM.js} +3 -3
  400. package/dist/components/{p-CnuLK086.js.map → p-CJvmK-NM.js.map} +1 -1
  401. package/dist/components/{p-BbMIB-Yc.js → p-CMzKWvKv.js} +3 -3
  402. package/dist/components/{p-BbMIB-Yc.js.map → p-CMzKWvKv.js.map} +1 -1
  403. package/dist/components/{p-Fc2FiFbz.js → p-COXbf1MO.js} +16 -16
  404. package/dist/components/{p-Fc2FiFbz.js.map → p-COXbf1MO.js.map} +1 -1
  405. package/dist/components/{p-BXdPZfqZ.js → p-CT64yPEO.js} +3 -3
  406. package/dist/components/{p-BXdPZfqZ.js.map → p-CT64yPEO.js.map} +1 -1
  407. package/dist/components/{p-Ba5u-TNq.js → p-CWWiQA0c.js} +6 -6
  408. package/dist/components/{p-Ba5u-TNq.js.map → p-CWWiQA0c.js.map} +1 -1
  409. package/dist/components/{p-Bo40Tzgq.js → p-CaQExWbD.js} +10 -10
  410. package/dist/components/{p-Bo40Tzgq.js.map → p-CaQExWbD.js.map} +1 -1
  411. package/dist/components/{p-DVTv2Hp1.js → p-CahZPm95.js} +4 -4
  412. package/dist/components/{p-DVTv2Hp1.js.map → p-CahZPm95.js.map} +1 -1
  413. package/dist/components/{p-B35dXoaU.js → p-Ce8gcoEa.js} +3 -3
  414. package/dist/components/{p-B35dXoaU.js.map → p-Ce8gcoEa.js.map} +1 -1
  415. package/dist/components/{p-D_1SiUrv.js → p-ChXM0wCn.js} +3 -3
  416. package/dist/components/{p-D_1SiUrv.js.map → p-ChXM0wCn.js.map} +1 -1
  417. package/dist/components/{p-CjPOfL98.js → p-CrEiNqrO.js} +20 -20
  418. package/dist/components/p-CrEiNqrO.js.map +1 -0
  419. package/dist/components/{p-DcgnP4PE.js → p-Cs_iJUbv.js} +3 -3
  420. package/dist/components/{p-DcgnP4PE.js.map → p-Cs_iJUbv.js.map} +1 -1
  421. package/dist/components/{p-DywCqDUg.js → p-CvLWbTI_.js} +3 -3
  422. package/dist/components/{p-DywCqDUg.js.map → p-CvLWbTI_.js.map} +1 -1
  423. package/dist/components/{p-BA0crRT4.js → p-Cyk3GcD_.js} +3 -3
  424. package/dist/components/{p-BA0crRT4.js.map → p-Cyk3GcD_.js.map} +1 -1
  425. package/dist/components/{p-DFnxqEjY.js → p-CykUOtqt.js} +5 -5
  426. package/dist/components/{p-DFnxqEjY.js.map → p-CykUOtqt.js.map} +1 -1
  427. package/dist/components/{p-D0Ur_s8w.js → p-CyzGRI94.js} +3 -3
  428. package/dist/components/{p-D0Ur_s8w.js.map → p-CyzGRI94.js.map} +1 -1
  429. package/dist/components/{p-DHEweiQ6.js → p-CzVZs3uZ.js} +3 -3
  430. package/dist/components/{p-DHEweiQ6.js.map → p-CzVZs3uZ.js.map} +1 -1
  431. package/dist/components/{p-3GhnM4Rs.js → p-D0g7xlgg.js} +17 -17
  432. package/dist/components/{p-3GhnM4Rs.js.map → p-D0g7xlgg.js.map} +1 -1
  433. package/dist/components/{p-BqxHAMYj.js → p-D0sMDSI5.js} +7 -7
  434. package/dist/components/{p-BqxHAMYj.js.map → p-D0sMDSI5.js.map} +1 -1
  435. package/dist/components/{p-BHKS010u.js → p-D1kxrvKw.js} +102 -100
  436. package/dist/components/p-D1kxrvKw.js.map +1 -0
  437. package/dist/components/{p-D0_t-TnJ.js → p-D2ELUj7W.js} +82 -82
  438. package/dist/components/{p-D0_t-TnJ.js.map → p-D2ELUj7W.js.map} +1 -1
  439. package/dist/components/{p-B2WOW0ov.js → p-D2FugEkX.js} +9 -9
  440. package/dist/components/{p-B2WOW0ov.js.map → p-D2FugEkX.js.map} +1 -1
  441. package/dist/components/{p-Dary9zXr.js → p-D3_U2Yis.js} +5 -5
  442. package/dist/components/{p-Dary9zXr.js.map → p-D3_U2Yis.js.map} +1 -1
  443. package/dist/components/{p-pbifVvbz.js → p-D59M0kgu.js} +6 -6
  444. package/dist/components/{p-pbifVvbz.js.map → p-D59M0kgu.js.map} +1 -1
  445. package/dist/components/{p-C7vQiSqU.js → p-D7z2dNXN.js} +3 -3
  446. package/dist/components/{p-C7vQiSqU.js.map → p-D7z2dNXN.js.map} +1 -1
  447. package/dist/components/{p-BGfs-kGd.js → p-DBHtQK2b.js} +3 -3
  448. package/dist/components/{p-BGfs-kGd.js.map → p-DBHtQK2b.js.map} +1 -1
  449. package/dist/components/{p-BPmIPX7g.js → p-DEbbVkgj.js} +3 -3
  450. package/dist/components/{p-BPmIPX7g.js.map → p-DEbbVkgj.js.map} +1 -1
  451. package/dist/components/{p-DPvhc5UR.js → p-DGWTdjcf.js} +7 -7
  452. package/dist/components/{p-DPvhc5UR.js.map → p-DGWTdjcf.js.map} +1 -1
  453. package/dist/components/{p-BB995eYS.js → p-DJcRuzNc.js} +6 -6
  454. package/dist/components/{p-BB995eYS.js.map → p-DJcRuzNc.js.map} +1 -1
  455. package/dist/components/{p-DL2k-3Y9.js → p-DNZkEEGF.js} +7 -7
  456. package/dist/components/{p-DL2k-3Y9.js.map → p-DNZkEEGF.js.map} +1 -1
  457. package/dist/components/{p-D2BnadaF.js → p-DPmhcLAV.js} +4 -4
  458. package/dist/components/{p-D2BnadaF.js.map → p-DPmhcLAV.js.map} +1 -1
  459. package/dist/components/{p-D07tmsA6.js → p-DPwhlVlN.js} +3 -3
  460. package/dist/components/{p-D07tmsA6.js.map → p-DPwhlVlN.js.map} +1 -1
  461. package/dist/components/{p-C-FqPkG1.js → p-DS6Ijr4M.js} +3 -3
  462. package/dist/components/{p-C-FqPkG1.js.map → p-DS6Ijr4M.js.map} +1 -1
  463. package/dist/components/{p-brI0OtLp.js → p-DZky0cSu.js} +21 -21
  464. package/dist/components/{p-brI0OtLp.js.map → p-DZky0cSu.js.map} +1 -1
  465. package/dist/components/{p-BB2JXH5u.js → p-DcjGlnBR.js} +3 -3
  466. package/dist/components/{p-BB2JXH5u.js.map → p-DcjGlnBR.js.map} +1 -1
  467. package/dist/components/{p-CeGr8vNo.js → p-DgCBdNz4.js} +4 -4
  468. package/dist/components/{p-CeGr8vNo.js.map → p-DgCBdNz4.js.map} +1 -1
  469. package/dist/components/{p-BO38LdDr.js → p-Dj1TLa3T.js} +3 -3
  470. package/dist/components/{p-BO38LdDr.js.map → p-Dj1TLa3T.js.map} +1 -1
  471. package/dist/components/{p-Ha2t2y12.js → p-Dl0Yur5r.js} +3 -3
  472. package/dist/components/{p-Ha2t2y12.js.map → p-Dl0Yur5r.js.map} +1 -1
  473. package/dist/components/{p-8bLDlCqt.js → p-Do-hiOVl.js} +6 -6
  474. package/dist/components/{p-8bLDlCqt.js.map → p-Do-hiOVl.js.map} +1 -1
  475. package/dist/components/{p-MHQuGZu-.js → p-DoJYki91.js} +5 -5
  476. package/dist/components/{p-MHQuGZu-.js.map → p-DoJYki91.js.map} +1 -1
  477. package/dist/components/{p-BP2IBV8d.js → p-DqM3uP9H.js} +39 -18
  478. package/dist/components/p-DqM3uP9H.js.map +1 -0
  479. package/dist/components/{p-D0zqlv9X.js → p-DsMKWaSN.js} +7 -7
  480. package/dist/components/{p-D0zqlv9X.js.map → p-DsMKWaSN.js.map} +1 -1
  481. package/dist/components/{p-CcJs1phT.js → p-DuVwrI20.js} +4 -4
  482. package/dist/components/{p-CcJs1phT.js.map → p-DuVwrI20.js.map} +1 -1
  483. package/dist/components/{p-B6_vWkUg.js → p-DwLh5aVI.js} +3 -3
  484. package/dist/components/{p-B6_vWkUg.js.map → p-DwLh5aVI.js.map} +1 -1
  485. package/dist/components/{p-Hj9jbKPX.js → p-DxDoo-4C.js} +4 -4
  486. package/dist/components/{p-Hj9jbKPX.js.map → p-DxDoo-4C.js.map} +1 -1
  487. package/dist/components/{p-_fPTbZgX.js → p-G4bkKoDi.js} +33 -33
  488. package/dist/components/{p-_fPTbZgX.js.map → p-G4bkKoDi.js.map} +1 -1
  489. package/dist/components/{p-CE-erUmL.js → p-Gm-vN7E1.js} +4 -4
  490. package/dist/components/{p-CE-erUmL.js.map → p-Gm-vN7E1.js.map} +1 -1
  491. package/dist/components/{p-9REldQO4.js → p-HeijVgBd.js} +8 -8
  492. package/dist/components/{p-9REldQO4.js.map → p-HeijVgBd.js.map} +1 -1
  493. package/dist/components/{p-CKo-5Qfq.js → p-LtcdluKm.js} +13 -13
  494. package/dist/components/{p-CKo-5Qfq.js.map → p-LtcdluKm.js.map} +1 -1
  495. package/dist/components/{p-B1gsLDiL.js → p-NBNWXBut.js} +9 -9
  496. package/dist/components/{p-B1gsLDiL.js.map → p-NBNWXBut.js.map} +1 -1
  497. package/dist/components/{p-BVrJG89A.js → p-OhUC7F_g.js} +3 -3
  498. package/dist/components/{p-BVrJG89A.js.map → p-OhUC7F_g.js.map} +1 -1
  499. package/dist/components/{p-Bfn8MxOP.js → p-QqIA-4UU.js} +5 -5
  500. package/dist/components/{p-Bfn8MxOP.js.map → p-QqIA-4UU.js.map} +1 -1
  501. package/dist/components/{p-2_78I5nY.js → p-UNYO4Uen.js} +3 -3
  502. package/dist/components/{p-2_78I5nY.js.map → p-UNYO4Uen.js.map} +1 -1
  503. package/dist/components/{p-LGPQBsXs.js → p-_gwYX3vh.js} +10 -10
  504. package/dist/components/{p-LGPQBsXs.js.map → p-_gwYX3vh.js.map} +1 -1
  505. package/dist/components/{p-BaI67hQ_.js → p-ao6VxuAL.js} +3 -3
  506. package/dist/components/{p-BaI67hQ_.js.map → p-ao6VxuAL.js.map} +1 -1
  507. package/dist/components/{p-DAvS1ihh.js → p-d3kelm3z.js} +3 -3
  508. package/dist/components/{p-DAvS1ihh.js.map → p-d3kelm3z.js.map} +1 -1
  509. package/dist/components/{p-CSGxrebs.js → p-hipsVOV5.js} +3 -3
  510. package/dist/components/{p-CSGxrebs.js.map → p-hipsVOV5.js.map} +1 -1
  511. package/dist/components/{p-CQ-EyvqC.js → p-icAweFo6.js} +4 -4
  512. package/dist/components/{p-CQ-EyvqC.js.map → p-icAweFo6.js.map} +1 -1
  513. package/dist/components/{p-CC5LBxvb.js → p-jBYg7WMS.js} +3 -3
  514. package/dist/components/{p-CC5LBxvb.js.map → p-jBYg7WMS.js.map} +1 -1
  515. package/dist/components/{p-DYNQu4cB.js → p-k68ZYeHL.js} +8 -8
  516. package/dist/components/{p-DYNQu4cB.js.map → p-k68ZYeHL.js.map} +1 -1
  517. package/dist/components/{p-dlRUGWVl.js → p-kbilJltW.js} +3 -3
  518. package/dist/components/{p-dlRUGWVl.js.map → p-kbilJltW.js.map} +1 -1
  519. package/dist/components/{p-Cm33KFk-.js → p-ollg-iFp.js} +29 -18
  520. package/dist/components/p-ollg-iFp.js.map +1 -0
  521. package/dist/components/{p-C8RnCnvv.js → p-q7g_LEwC.js} +3 -3
  522. package/dist/components/{p-C8RnCnvv.js.map → p-q7g_LEwC.js.map} +1 -1
  523. package/dist/components/{p-lJd3klAU.js → p-rrunpGAl.js} +15 -15
  524. package/dist/components/{p-lJd3klAU.js.map → p-rrunpGAl.js.map} +1 -1
  525. package/dist/components/{p-BUp6TlwK.js → p-tVUFrM9G.js} +29 -16
  526. package/dist/components/p-tVUFrM9G.js.map +1 -0
  527. package/dist/components/{p-idvnK5Rl.js → p-wphqTozF.js} +6 -6
  528. package/dist/components/{p-idvnK5Rl.js.map → p-wphqTozF.js.map} +1 -1
  529. package/dist/components/{p-RvuIq5wt.js → p-xMlGGw2N.js} +3 -3
  530. package/dist/components/{p-RvuIq5wt.js.map → p-xMlGGw2N.js.map} +1 -1
  531. package/dist/components/paintbrush-fill-icon.js +1 -1
  532. package/dist/components/paintbrush-icon.js +1 -1
  533. package/dist/components/people-icon.js +1 -1
  534. package/dist/components/person-clipboard-icon.js +1 -1
  535. package/dist/components/person-icon.js +1 -1
  536. package/dist/components/play-icon.js +1 -1
  537. package/dist/components/plus-icon.js +1 -1
  538. package/dist/components/radio-button-group.js +1 -1
  539. package/dist/components/refresh-icon.js +1 -1
  540. package/dist/components/reply-all-icon.js +1 -1
  541. package/dist/components/reply-icon.js +1 -1
  542. package/dist/components/search-icon.js +1 -1
  543. package/dist/components/select-dropdown.js +1 -1
  544. package/dist/components/sent-icon.js +1 -1
  545. package/dist/components/spam-icon.js +1 -1
  546. package/dist/components/star-icon.js +1 -1
  547. package/dist/components/stop-icon.js +1 -1
  548. package/dist/components/textarea-component.js +1 -1
  549. package/dist/components/time-period-selector.js +1 -1
  550. package/dist/components/toggle-switch.js +1 -1
  551. package/dist/components/tooltip-component.js +1 -1
  552. package/dist/components/translate-icon.js +1 -1
  553. package/dist/components/trash-fill-icon.js +1 -1
  554. package/dist/components/trash-icon.js +1 -1
  555. package/dist/components/underline-icon.js +1 -1
  556. package/dist/components/warning-icon.js +1 -1
  557. package/dist/components/zoom-icon.js +1 -1
  558. package/dist/esm/add-circle-icon_2.entry.js +2 -2
  559. package/dist/esm/archive-icon.entry.js +1 -1
  560. package/dist/esm/arrow-icon.entry.js +1 -1
  561. package/dist/esm/bold-icon.entry.js +1 -1
  562. package/dist/esm/button-component_2.entry.js +2 -2
  563. package/dist/esm/calendar-agenda-fill-icon_39.entry.js +86 -62
  564. package/dist/esm/calendar-agenda-fill-icon_39.entry.js.map +1 -1
  565. package/dist/esm/calendar-cancel-icon.entry.js +1 -1
  566. package/dist/esm/calendar-check-icon.entry.js +1 -1
  567. package/dist/esm/calendar-icon.entry.js +1 -1
  568. package/dist/esm/checkbox-component.entry.js +1 -1
  569. package/dist/esm/checkbox-group_4.entry.js +5 -5
  570. package/dist/esm/checkmark-circle-icon.entry.js +1 -1
  571. package/dist/esm/checkmark-icon_15.entry.js +44 -23
  572. package/dist/esm/checkmark-icon_15.entry.js.map +1 -1
  573. package/dist/esm/chevron-icon_3.entry.js +4 -4
  574. package/dist/esm/clock-icon_4.entry.js +4 -4
  575. package/dist/esm/delete-icon.entry.js +1 -1
  576. package/dist/esm/document-refresh-icon.entry.js +1 -1
  577. package/dist/esm/folder-icon.entry.js +1 -1
  578. package/dist/esm/forward-icon.entry.js +1 -1
  579. package/dist/esm/globe-icon_3.entry.js +5 -5
  580. package/dist/esm/google-logo-icon.microsoft-logo-icon.nylas-editor-tabs.nylas-editor-tabs-group.nylas-list-configurations.nylas-select-event-type.entry.js.map +1 -1
  581. package/dist/esm/google-logo-icon_6.entry.js +19 -17
  582. package/dist/esm/google-logo-icon_6.entry.js.map +1 -1
  583. package/dist/esm/google-meet-icon_5.entry.js +5 -5
  584. package/dist/esm/inbox-icon.entry.js +1 -1
  585. package/dist/esm/info-icon_2.entry.js +3 -3
  586. package/dist/esm/input-component.entry.js +1 -1
  587. package/dist/esm/input-dropdown_2.entry.js +2 -2
  588. package/dist/esm/italic-icon.entry.js +1 -1
  589. package/dist/esm/loader.js +1 -1
  590. package/dist/esm/multi-select-dropdown.entry.js +2 -2
  591. package/dist/esm/nylas-booked-event-card_11.entry.js +4 -4
  592. package/dist/esm/nylas-form-card.entry.js +1 -1
  593. package/dist/esm/nylas-notification_2.entry.js +2 -2
  594. package/dist/esm/nylas-scheduler-editor.entry.js +13 -6
  595. package/dist/esm/nylas-scheduler-editor.entry.js.map +1 -1
  596. package/dist/esm/nylas-scheduling.entry.js +38 -19
  597. package/dist/esm/nylas-scheduling.entry.js.map +1 -1
  598. package/dist/esm/nylas-web-elements.js +1 -1
  599. package/dist/esm/person-icon.entry.js +1 -1
  600. package/dist/esm/play-icon.entry.js +1 -1
  601. package/dist/esm/radio-button-group.entry.js +1 -1
  602. package/dist/esm/refresh-icon.entry.js +1 -1
  603. package/dist/esm/reply-all-icon.entry.js +1 -1
  604. package/dist/esm/reply-icon.entry.js +1 -1
  605. package/dist/esm/sent-icon.entry.js +1 -1
  606. package/dist/esm/spam-icon.entry.js +1 -1
  607. package/dist/esm/star-icon.entry.js +1 -1
  608. package/dist/esm/stop-icon.entry.js +1 -1
  609. package/dist/esm/textarea-component.entry.js +1 -1
  610. package/dist/esm/toggle-switch.entry.js +1 -1
  611. package/dist/esm/translate-icon.entry.js +1 -1
  612. package/dist/esm/trash-fill-icon.entry.js +1 -1
  613. package/dist/esm/underline-icon.entry.js +1 -1
  614. package/dist/esm/{version-BCn0rl0y.js → version-ClDvNLDf.js} +3 -3
  615. package/dist/{cjs/version-BpVJo5VP.js.map → esm/version-ClDvNLDf.js.map} +1 -1
  616. package/dist/nylas-web-elements/google-logo-icon.microsoft-logo-icon.nylas-editor-tabs.nylas-editor-tabs-group.nylas-list-configurations.nylas-select-event-type.entry.esm.js.map +1 -1
  617. package/dist/nylas-web-elements/nylas-scheduler-editor.entry.esm.js.map +1 -1
  618. package/dist/nylas-web-elements/nylas-scheduling.entry.esm.js.map +1 -1
  619. package/dist/nylas-web-elements/nylas-web-elements.esm.js +1 -1
  620. package/dist/nylas-web-elements/{p-9e4672ac.entry.js → p-02343d66.entry.js} +2 -2
  621. package/dist/nylas-web-elements/{p-053363a5.entry.js → p-11f478bd.entry.js} +2 -2
  622. package/dist/nylas-web-elements/p-12a29e9d.entry.js +11 -0
  623. package/dist/nylas-web-elements/p-12a29e9d.entry.js.map +1 -0
  624. package/dist/nylas-web-elements/p-16db18a3.entry.js +2 -0
  625. package/dist/nylas-web-elements/{p-5d087249.entry.js → p-1741705d.entry.js} +2 -2
  626. package/dist/nylas-web-elements/{p-52a66db6.entry.js → p-219fd6f9.entry.js} +2 -2
  627. package/dist/nylas-web-elements/{p-c0a17829.entry.js → p-37c5834c.entry.js} +2 -2
  628. package/dist/nylas-web-elements/p-37eedc9d.entry.js +2 -0
  629. package/dist/nylas-web-elements/{p-c50fdabc.entry.js → p-38d830c6.entry.js} +2 -2
  630. package/dist/nylas-web-elements/{p-13a88760.entry.js → p-3d1fd865.entry.js} +2 -2
  631. package/dist/nylas-web-elements/p-43c3f331.entry.js +2 -0
  632. package/dist/nylas-web-elements/p-55b2df61.entry.js +2 -0
  633. package/dist/nylas-web-elements/{p-5b01e519.entry.js → p-5a861a93.entry.js} +2 -2
  634. package/dist/nylas-web-elements/{p-843fff90.entry.js → p-62d0c211.entry.js} +2 -2
  635. package/dist/nylas-web-elements/p-68195a72.entry.js +2 -0
  636. package/dist/nylas-web-elements/{p-dfc63fe6.entry.js → p-7930474b.entry.js} +2 -2
  637. package/dist/nylas-web-elements/{p-b184b489.entry.js → p-7bc4f51f.entry.js} +2 -2
  638. package/dist/nylas-web-elements/{p-07beb85c.entry.js → p-7fe0b3bb.entry.js} +2 -2
  639. package/dist/nylas-web-elements/{p-b2c497eb.entry.js → p-84c3921f.entry.js} +2 -2
  640. package/dist/nylas-web-elements/p-88e89256.entry.js +2 -0
  641. package/dist/nylas-web-elements/{p-1398e461.entry.js → p-8b55669a.entry.js} +2 -2
  642. package/dist/nylas-web-elements/p-913511c9.entry.js +2 -0
  643. package/dist/nylas-web-elements/p-913511c9.entry.js.map +1 -0
  644. package/dist/nylas-web-elements/{p-8256e49f.entry.js → p-932456ba.entry.js} +2 -2
  645. package/dist/nylas-web-elements/{p-3b4ce792.entry.js → p-974fce52.entry.js} +2 -2
  646. package/dist/nylas-web-elements/{p-051c1704.entry.js → p-991b94bd.entry.js} +2 -2
  647. package/dist/nylas-web-elements/{p-d1948f4c.entry.js → p-9dd10333.entry.js} +2 -2
  648. package/dist/nylas-web-elements/p-ClDvNLDf.js +2 -0
  649. package/dist/nylas-web-elements/{p-BCn0rl0y.js.map → p-ClDvNLDf.js.map} +1 -1
  650. package/dist/nylas-web-elements/{p-8bcf3b85.entry.js → p-a3b1ac68.entry.js} +2 -2
  651. package/dist/nylas-web-elements/p-a3baa9bf.entry.js +2 -0
  652. package/dist/nylas-web-elements/p-a94cbeb7.entry.js +2 -0
  653. package/dist/nylas-web-elements/{p-a64038fa.entry.js → p-af340293.entry.js} +2 -2
  654. package/dist/nylas-web-elements/{p-8ea62358.entry.js → p-b6eb8c04.entry.js} +2 -2
  655. package/dist/nylas-web-elements/p-bafa8e30.entry.js +2 -0
  656. package/dist/nylas-web-elements/p-bafa8e30.entry.js.map +1 -0
  657. package/dist/nylas-web-elements/p-bca85255.entry.js +2 -0
  658. package/dist/nylas-web-elements/p-bf9adc08.entry.js +8 -0
  659. package/dist/nylas-web-elements/p-bf9adc08.entry.js.map +1 -0
  660. package/dist/nylas-web-elements/{p-0dd59c68.entry.js → p-c0f88f23.entry.js} +2 -2
  661. package/dist/nylas-web-elements/{p-d20045de.entry.js → p-c59fc361.entry.js} +2 -2
  662. package/dist/nylas-web-elements/{p-4e81d20a.entry.js → p-c96b6f73.entry.js} +2 -2
  663. package/dist/nylas-web-elements/p-d2f6e3d9.entry.js +2 -0
  664. package/dist/nylas-web-elements/p-d2f6e3d9.entry.js.map +1 -0
  665. package/dist/nylas-web-elements/{p-c760d10c.entry.js → p-d752c738.entry.js} +2 -2
  666. package/dist/nylas-web-elements/p-de990849.entry.js +2 -0
  667. package/dist/nylas-web-elements/p-e2dd457a.entry.js +2 -0
  668. package/dist/nylas-web-elements/p-e734cde9.entry.js +2 -0
  669. package/dist/nylas-web-elements/p-ed89219a.entry.js +2 -0
  670. package/dist/nylas-web-elements/p-f0406089.entry.js +2 -0
  671. package/dist/nylas-web-elements/{p-059379cf.entry.js → p-f3622337.entry.js} +2 -2
  672. package/dist/nylas-web-elements/{p-714cfaaa.entry.js → p-f4516330.entry.js} +2 -2
  673. package/dist/nylas-web-elements/p-f7f2c232.entry.js +2 -0
  674. package/dist/nylas-web-elements/{p-401fd416.entry.js → p-f84b98e9.entry.js} +2 -2
  675. package/dist/stencil.config.js +9 -1
  676. package/dist/stencil.config.js.map +1 -1
  677. package/dist/types/components/scheduler-editor/nylas-additional-participants/nylas-additional-participants.d.ts +2 -1
  678. package/dist/types/components/scheduler-editor/nylas-connected-calendars/nylas-connected-calendars.d.ts +1 -0
  679. package/dist/types/components/scheduler-editor/nylas-participant-booking-calendars/nylas-participant-booking-calendars.d.ts +1 -0
  680. package/dist/types/components/scheduler-editor/nylas-scheduler-editor/nylas-scheduler-editor.d.ts +9 -0
  681. package/dist/types/components.d.ts +10 -0
  682. package/dist/types/connector/shared/api/scheduler.d.ts +1 -0
  683. package/dist/types/version.d.ts +1 -1
  684. package/package.json +1 -1
  685. package/dist/components/p-BHKS010u.js.map +0 -1
  686. package/dist/components/p-BP2IBV8d.js.map +0 -1
  687. package/dist/components/p-BUp6TlwK.js.map +0 -1
  688. package/dist/components/p-CjPOfL98.js.map +0 -1
  689. package/dist/components/p-Cm33KFk-.js.map +0 -1
  690. package/dist/nylas-web-elements/p-00454d48.entry.js +0 -2
  691. package/dist/nylas-web-elements/p-00454d48.entry.js.map +0 -1
  692. package/dist/nylas-web-elements/p-038c59e1.entry.js +0 -2
  693. package/dist/nylas-web-elements/p-0c5c41bf.entry.js +0 -2
  694. package/dist/nylas-web-elements/p-106cec0c.entry.js +0 -2
  695. package/dist/nylas-web-elements/p-212e4c6b.entry.js +0 -2
  696. package/dist/nylas-web-elements/p-25966881.entry.js +0 -8
  697. package/dist/nylas-web-elements/p-25966881.entry.js.map +0 -1
  698. package/dist/nylas-web-elements/p-2e732ba2.entry.js +0 -2
  699. package/dist/nylas-web-elements/p-3001a2db.entry.js +0 -2
  700. package/dist/nylas-web-elements/p-351a0c32.entry.js +0 -2
  701. package/dist/nylas-web-elements/p-3cb90051.entry.js +0 -2
  702. package/dist/nylas-web-elements/p-3cb90051.entry.js.map +0 -1
  703. package/dist/nylas-web-elements/p-531412c9.entry.js +0 -2
  704. package/dist/nylas-web-elements/p-616b6000.entry.js +0 -2
  705. package/dist/nylas-web-elements/p-6604dde1.entry.js +0 -11
  706. package/dist/nylas-web-elements/p-6604dde1.entry.js.map +0 -1
  707. package/dist/nylas-web-elements/p-6e899199.entry.js +0 -2
  708. package/dist/nylas-web-elements/p-7117e2e0.entry.js +0 -2
  709. package/dist/nylas-web-elements/p-8823bc36.entry.js +0 -2
  710. package/dist/nylas-web-elements/p-9758d9fc.entry.js +0 -2
  711. package/dist/nylas-web-elements/p-9758d9fc.entry.js.map +0 -1
  712. package/dist/nylas-web-elements/p-BCn0rl0y.js +0 -2
  713. package/dist/nylas-web-elements/p-b5d145cd.entry.js +0 -2
  714. package/dist/nylas-web-elements/p-de00f363.entry.js +0 -2
  715. package/dist/nylas-web-elements/p-fb4fece1.entry.js +0 -2
  716. /package/dist/nylas-web-elements/{p-9e4672ac.entry.js.map → p-02343d66.entry.js.map} +0 -0
  717. /package/dist/nylas-web-elements/{p-053363a5.entry.js.map → p-11f478bd.entry.js.map} +0 -0
  718. /package/dist/nylas-web-elements/{p-7117e2e0.entry.js.map → p-16db18a3.entry.js.map} +0 -0
  719. /package/dist/nylas-web-elements/{p-5d087249.entry.js.map → p-1741705d.entry.js.map} +0 -0
  720. /package/dist/nylas-web-elements/{p-52a66db6.entry.js.map → p-219fd6f9.entry.js.map} +0 -0
  721. /package/dist/nylas-web-elements/{p-c0a17829.entry.js.map → p-37c5834c.entry.js.map} +0 -0
  722. /package/dist/nylas-web-elements/{p-8823bc36.entry.js.map → p-37eedc9d.entry.js.map} +0 -0
  723. /package/dist/nylas-web-elements/{p-c50fdabc.entry.js.map → p-38d830c6.entry.js.map} +0 -0
  724. /package/dist/nylas-web-elements/{p-13a88760.entry.js.map → p-3d1fd865.entry.js.map} +0 -0
  725. /package/dist/nylas-web-elements/{p-531412c9.entry.js.map → p-43c3f331.entry.js.map} +0 -0
  726. /package/dist/nylas-web-elements/{p-212e4c6b.entry.js.map → p-55b2df61.entry.js.map} +0 -0
  727. /package/dist/nylas-web-elements/{p-5b01e519.entry.js.map → p-5a861a93.entry.js.map} +0 -0
  728. /package/dist/nylas-web-elements/{p-843fff90.entry.js.map → p-62d0c211.entry.js.map} +0 -0
  729. /package/dist/nylas-web-elements/{p-b5d145cd.entry.js.map → p-68195a72.entry.js.map} +0 -0
  730. /package/dist/nylas-web-elements/{p-dfc63fe6.entry.js.map → p-7930474b.entry.js.map} +0 -0
  731. /package/dist/nylas-web-elements/{p-b184b489.entry.js.map → p-7bc4f51f.entry.js.map} +0 -0
  732. /package/dist/nylas-web-elements/{p-07beb85c.entry.js.map → p-7fe0b3bb.entry.js.map} +0 -0
  733. /package/dist/nylas-web-elements/{p-b2c497eb.entry.js.map → p-84c3921f.entry.js.map} +0 -0
  734. /package/dist/nylas-web-elements/{p-fb4fece1.entry.js.map → p-88e89256.entry.js.map} +0 -0
  735. /package/dist/nylas-web-elements/{p-1398e461.entry.js.map → p-8b55669a.entry.js.map} +0 -0
  736. /package/dist/nylas-web-elements/{p-8256e49f.entry.js.map → p-932456ba.entry.js.map} +0 -0
  737. /package/dist/nylas-web-elements/{p-3b4ce792.entry.js.map → p-974fce52.entry.js.map} +0 -0
  738. /package/dist/nylas-web-elements/{p-051c1704.entry.js.map → p-991b94bd.entry.js.map} +0 -0
  739. /package/dist/nylas-web-elements/{p-d1948f4c.entry.js.map → p-9dd10333.entry.js.map} +0 -0
  740. /package/dist/nylas-web-elements/{p-8bcf3b85.entry.js.map → p-a3b1ac68.entry.js.map} +0 -0
  741. /package/dist/nylas-web-elements/{p-de00f363.entry.js.map → p-a3baa9bf.entry.js.map} +0 -0
  742. /package/dist/nylas-web-elements/{p-351a0c32.entry.js.map → p-a94cbeb7.entry.js.map} +0 -0
  743. /package/dist/nylas-web-elements/{p-a64038fa.entry.js.map → p-af340293.entry.js.map} +0 -0
  744. /package/dist/nylas-web-elements/{p-8ea62358.entry.js.map → p-b6eb8c04.entry.js.map} +0 -0
  745. /package/dist/nylas-web-elements/{p-2e732ba2.entry.js.map → p-bca85255.entry.js.map} +0 -0
  746. /package/dist/nylas-web-elements/{p-0dd59c68.entry.js.map → p-c0f88f23.entry.js.map} +0 -0
  747. /package/dist/nylas-web-elements/{p-d20045de.entry.js.map → p-c59fc361.entry.js.map} +0 -0
  748. /package/dist/nylas-web-elements/{p-4e81d20a.entry.js.map → p-c96b6f73.entry.js.map} +0 -0
  749. /package/dist/nylas-web-elements/{p-c760d10c.entry.js.map → p-d752c738.entry.js.map} +0 -0
  750. /package/dist/nylas-web-elements/{p-3001a2db.entry.js.map → p-de990849.entry.js.map} +0 -0
  751. /package/dist/nylas-web-elements/{p-616b6000.entry.js.map → p-e2dd457a.entry.js.map} +0 -0
  752. /package/dist/nylas-web-elements/{p-106cec0c.entry.js.map → p-e734cde9.entry.js.map} +0 -0
  753. /package/dist/nylas-web-elements/{p-6e899199.entry.js.map → p-ed89219a.entry.js.map} +0 -0
  754. /package/dist/nylas-web-elements/{p-0c5c41bf.entry.js.map → p-f0406089.entry.js.map} +0 -0
  755. /package/dist/nylas-web-elements/{p-059379cf.entry.js.map → p-f3622337.entry.js.map} +0 -0
  756. /package/dist/nylas-web-elements/{p-714cfaaa.entry.js.map → p-f4516330.entry.js.map} +0 -0
  757. /package/dist/nylas-web-elements/{p-038c59e1.entry.js.map → p-f7f2c232.entry.js.map} +0 -0
  758. /package/dist/nylas-web-elements/{p-401fd416.entry.js.map → p-f84b98e9.entry.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"names":["iconCss","CheckmarkIcon","constructor","hostRef","this","width","height","render","h","key","viewBox","fill","xmlns","d","CopyIcon","DragableIcon","EyeIcon","FeedbackIcon","stroke","inputColorPickerCss","InputColorPicker","componentType","selectedColor","defaultSelectedColor","isOpen","ariaActivedescendant","errorMessage","componentWillLoad","el","setAttribute","handleFocus","handleBlur","handleInput","event","target","value","handleChange","nylasFormDropdownChanged","emit","name","error","handleKeyDown","code","preventDefault","inputRef","click","handleOutsideClick","path","composedPath","isClickInside","includes","class","part","tabindex","onKeyDown","e","type","ref","id","onFocus","onBlur","onInput","onChange","htmlFor","labelBtn","open","closed","chevron","inputImageUrlCss","InputImageUrl","imageUrl","currentImageUrl","connectedCallback","debug","queueMicrotask","themeConfig","applyThemeConfig","host","disconnectedCallback","componentDidLoad","setImage","componentWillUpdate","componentDidUpdate","componentWillRender","componentDidRender","elementNameChangedHandler","newValue","errorMessageChangedHandler","themeConfigChangedHandler","newVal","oldVal","Object","entries","style","setProperty","nylasFormInputChangedHandler","detail","nylasFormInputBlurHandler","valueChanged","isValidImage","then","internals","setValidity","setFormValue","catch","nylasFormInputImageUrlInvalid","customError","Host","required","exportparts","defaultValue","src","alt","__decorate","RegisterComponent","eventToProps","async","_nylasSchedulerConfigConnector","prototype","nylasAdditionalParticipantsCss","NylasAdditionalParticipants","participants","eventParticipants","participantErrors","includeOrganizerAsParticipant","isRoundRobinConfig","requiredError","patternError","participantSearchResults","participantSearchLoading","activeSearchInputIndex","PARTICIPANT_SEARCH_DEBOUNCE_MS","selectedConfigurationAndCurrentUserChangedHandler","_oldValue","propName","currentUser","updateState","selectedConfiguration","selectedLanguageChangedHandler","i18next","changeLanguage","t","field","roundRobinConfig","updateFormValue","selectedConfig","availability","availability_rules","availability_method","find","p","email","updateOrganizerAsParticipant","isInternalsAvailable","undefined","getParticipantLookupSources","fromOptions","participantOptions","fromSearch","seen","Set","filter","has","add","getDropdownOptions","_index","sources","participantSearch","getArrayDifference","runParticipantSearch","query","index","trim","results","err","onInputOptionChanged","EMAIL_REGEX","lookupSources","participant","clearTimeout","participantSearchDebounceTimer","setTimeout","parseInt","String","duplicateIndex","findIndex","i","is_valid","test","primaryCalendar","calendars","calendar","is_primary","calendar_ids","booking","calendar_id","findCurrentUserInParticipants","bookingCalendarDefault","currentUserCalendars","is_organizer","addParticipant","removeParticipant","_","length","JSON","stringify","array1","array2","filtered","participant1","some","participant2","map","label","slot","organizer","readOnly","onClick","checked","filterable","inputValue","options","noResultsText","context","stateToProps","Map","fireRegisterEvent","nylasEventDescriptionCss","NylasEventDescription","eventDescription","event_booking","description","hideAutoPopulateButton","noTemplates","showTokens","availableTokens","eventDescriptionTokens","token","labelHTML","filteredTokens","currentWord","$value","fullText","focusOffset","validationError","additionalFieldTokens","selectedConfigurationChangedHandler","additionalFields","scheduler","additional_fields","newKeys","keys","newTokens","updateEventDescriptionFromProp","titleTokens","$invitee","$invitee_email","$duration","valueChangedHandler","parse","toString","descriptionRef","innerHTML","highlightTokens","outputHtml","forEach","tokenObj","regex","RegExp","replace","getCurrentSelectionForBrowser","getSelectionTextData","nodeValue","offset","node","allSelected","text","dollarIndex","lastIndexOf","lastWord","substring","split","currentText","isAllSelected","selection","anchorOffset","focusNode","currentBrowser","getBrowser","shadowRootSelection","shadowRoot","getSelection","focusNodeValue","document","anchorNodeValue","anchorNode","allSelectedFirefox","windowSelection","window","getComposedRanges","startContainer","allSelectedSafari","endOffset","textContent","sanitize","currentSelection","updateEventDescription","resetDropdown","startsWith","populateSuggestionsDropdown","handleInputKeyDown","isNonPrintableKey","activeOption","getElementById","textNode","childNodes","newTextNode","createTextNode","insertBefore","firstChild","range","createRange","setStart","collapse","sel","removeAllRanges","addRange","nodeType","Node","TEXT_NODE","newText","slice","focus","nextOption","nextElementSibling","prevOption","previousElementSibling","parentNode","nodeName","removeChild","remove","selectOption","option","word","dollarWord","currentNode","currentNodeText","wordText","nextSibling","indexOf","textBefore","textAfter","newRange","tagSpan","createElement","classList","newTextNodeAfter","replaceWith","afterNode","obj","getLabelHTML","handleAddAdditionalFields","baseDescription","startMarker","endMarker","startIndex","endIndex","additionalFieldsBlock","contentEditable","role","active","variant","nylasEventInfoCss","NylasEventInfo","checkForMissingSlots","nylasEventLocationCss","NylasEventLocation","location","eventLocation","grantId","eventConferencing","setDefaultGrantID","userProviderState","userProvider","provider","locationOptions","configLocation","configConferencing","conferencing","selectedLocationOption","setDefaultLocationOption","currentUserChangedHandler","setLocationOptionsForProvider","conferenceProvidersChanged","push","locOptionValues","formElement","form","formData","FormData","set","getConferencePayload","conferenceProviders","payload","PROVIDER_CONFERENCE_MAP","autocreate","conf_grant_id","nylasFormDropdownChangedHandler","googleConfGrantId","google","microsoftConfGrantId","microsoft","zoomConfGrantId","zoom","CONFERENCE_PROVIDER_MAP","getIcon","display","alignItems","gap","fontSize","fontWeight","defaultOption","withSearch","defaultSelectedOption","maxlength","nylasEventTitleCss","NylasEventTitle","eventTitle","title","eventTitleTokens","configEventTitle","ariaActivedescendantChangedHandler","querySelectorAll","configChangedHandler","updateEventTitleFromProp","updateEventTitle","formSubmittedHandler","validity","valid","titleRef","noValue","nylasFeedbackFormCss","NylasFeedbackForm","feedbackMessage","handleConfirmBookingButtonClicked","validationEvent","triggerValidation","defaultPrevented","feedbackSubmitted","feedback","handleFormInputChanged","closeModal","stopImmediatePropagation","feedbackModalClosed","tooltip","maxLength","placeholder","href","rel","footer","_event","_nylasSchedulerConnector","localPropsToProp","nylasReminderTimeCss","NylasReminderTime","errorState","eventReminderTimeMinutesChangedHandler","updateNumberAndPeriodFromMinutes","eventReminderTimeMinutes","nylasSuggestReminderMinutesHandler","minutes","timePeriodChangedHandler","number","period","totalMinutes","minutesInHour","minutesInDay","minutesInWeek","minutesInMonth","Math","floor","selectedNumber","selectedPeriod","showTimePeriodSelector","hasError","timePeriods","defaultSelectedNumber","defaultSelectedPeriod","TrashIcon"],"sources":["src/common/icons/icon.css?tag=checkmark-icon&encapsulation=scoped","src/common/icons/checkmark.tsx","src/common/icons/icon.css?tag=copy-icon&encapsulation=scoped","src/common/icons/copy.tsx","src/common/icons/icon.css?tag=dragable-icon&encapsulation=scoped","src/common/icons/dragable.tsx","src/common/icons/icon.css?tag=eye-icon&encapsulation=scoped","src/common/icons/eye.tsx","src/common/icons/icon.css?tag=feedback-icon&encapsulation=scoped","src/common/icons/feedback-icon.tsx","src/components/design-system/input-color-picker/input-color-picker.scss?tag=input-color-picker&encapsulation=shadow","src/components/design-system/input-color-picker/input-color-picker.tsx","src/components/design-system/input-image-url/input-image-url.scss?tag=input-image-url&encapsulation=shadow","src/components/design-system/input-image-url/input-image-url.tsx","src/components/scheduler-editor/nylas-additional-participants/nylas-additional-participants.scss?tag=nylas-additional-participants&encapsulation=shadow","src/components/scheduler-editor/nylas-additional-participants/nylas-additional-participants.tsx","src/components/scheduler-editor/nylas-event-description/nylas-event-description.scss?tag=nylas-event-description&encapsulation=shadow","src/components/scheduler-editor/nylas-event-description/nylas-event-description.tsx","src/components/scheduler-editor/nylas-event-info/nylas-event-info.scss?tag=nylas-event-info&encapsulation=shadow","src/components/scheduler-editor/nylas-event-info/nylas-event-info.tsx","src/components/scheduler-editor/nylas-event-location/nylas-event-location.scss?tag=nylas-event-location&encapsulation=shadow","src/components/scheduler-editor/nylas-event-location/nylas-event-location.tsx","src/components/scheduler-editor/nylas-event-title/nylas-event-title.scss?tag=nylas-event-title&encapsulation=shadow","src/components/scheduler-editor/nylas-event-title/nylas-event-title.tsx","src/components/scheduler/nylas-feedback-form/nylas-feedback-form.scss?tag=nylas-feedback-form&encapsulation=shadow","src/components/scheduler/nylas-feedback-form/nylas-feedback-form.tsx","src/components/scheduler-editor/nylas-reminder-time/nylas-reminder-time.scss?tag=nylas-reminder-time&encapsulation=shadow","src/components/scheduler-editor/nylas-reminder-time/nylas-reminder-time.tsx","src/common/icons/icon.css?tag=trash-icon&encapsulation=scoped","src/common/icons/trash.tsx"],"sourcesContent":[":host {\n display: flex;\n}\n","import { Component, Prop, h } from '@stencil/core';\n\n@Component({\n tag: 'checkmark-icon',\n styleUrl: 'icon.css',\n scoped: true,\n})\nexport class CheckmarkIcon {\n @Prop() width: string = '18';\n @Prop() height: string = '14';\n\n render() {\n return (\n <svg width={this.width} height={this.height} viewBox=\"0 0 18 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M1.53033 7.46967C1.23744 7.17678 0.762563 7.17678 0.46967 7.46967C0.176777 7.76256 0.176777 8.23744 0.46967 8.53033L4.96967 13.0303C5.26256 13.3232 5.73744 13.3232 6.03033 13.0303L17.0303 2.03033C17.3232 1.73744 17.3232 1.26256 17.0303 0.96967C16.7374 0.676777 16.2626 0.676777 15.9697 0.96967L5.5 11.4393L1.53033 7.46967Z\"\n fill=\"#293056\"\n />\n </svg>\n );\n }\n}\n",":host {\n display: flex;\n}\n","import { Component, Prop, h } from '@stencil/core';\n\n@Component({\n tag: 'copy-icon',\n styleUrl: 'icon.css',\n scoped: true,\n})\nexport class CopyIcon {\n @Prop() width: string = '16';\n @Prop() height: string = '16';\n\n render() {\n return (\n <svg width={this.width} height={this.height} fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M4 0.75C2.89543 0.75 2 1.64543 2 2.75V12.75C2 13.8546 2.89543 14.75 4 14.75H10C11.1046 14.75 12 13.8546 12 12.75V2.75C12 1.64543 11.1046 0.75 10 0.75H4ZM3 2.75C3 2.19772 3.44772 1.75 4 1.75H10C10.5523 1.75 11 2.19772 11 2.75V12.75C11 13.3023 10.5523 13.75 10 13.75H4C3.44772 13.75 3 13.3023 3 12.75V2.75ZM0 4.75001C0 4.00973 0.402199 3.36339 1 3.01758V13.25C1 14.6307 2.11929 15.75 3.5 15.75H9.73244C9.38663 16.3478 8.74028 16.75 8 16.75H3.5C1.567 16.75 0 15.183 0 13.25V4.75001Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n }\n}\n",":host {\n display: flex;\n}\n","import { Component, Prop, h } from '@stencil/core';\n\n@Component({\n tag: 'dragable-icon',\n styleUrl: 'icon.css',\n scoped: true,\n})\nexport class DragableIcon {\n @Prop() width: string = '20';\n @Prop() height: string = '20';\n\n render() {\n return (\n <svg width={this.width} height={this.height} fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M15.5 18C16.3284 18 17 18.6716 17 19.5C17 20.3284 16.3284 21 15.5 21C14.6716 21 14 20.3284 14 19.5C14 18.6716 14.6716 18 15.5 18ZM8.5 18C9.32843 18 10 18.6716 10 19.5C10 20.3284 9.32843 21 8.5 21C7.67157 21 7 20.3284 7 19.5C7 18.6716 7.67157 18 8.5 18ZM15.5 11C16.3284 11 17 11.6716 17 12.5C17 13.3284 16.3284 14 15.5 14C14.6716 14 14 13.3284 14 12.5C14 11.6716 14.6716 11 15.5 11ZM8.5 11C9.32843 11 10 11.6716 10 12.5C10 13.3284 9.32843 14 8.5 14C7.67157 14 7 13.3284 7 12.5C7 11.6716 7.67157 11 8.5 11ZM15.5 4C16.3284 4 17 4.67157 17 5.5C17 6.32843 16.3284 7 15.5 7C14.6716 7 14 6.32843 14 5.5C14 4.67157 14.6716 4 15.5 4ZM8.5 4C9.32843 4 10 4.67157 10 5.5C10 6.32843 9.32843 7 8.5 7C7.67157 7 7 6.32843 7 5.5C7 4.67157 7.67157 4 8.5 4Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n }\n}\n",":host {\n display: flex;\n}\n","import { Component, Prop, h } from '@stencil/core';\n\n@Component({\n tag: 'eye-icon',\n styleUrl: 'icon.css',\n scoped: true,\n})\nexport class EyeIcon {\n @Prop() width: string = '17';\n @Prop() height: string = '10';\n\n render() {\n return (\n <svg width={this.width} height={this.height} fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M1.75909 6.60214C2.44254 3.32689 5.29437 1 8.50002 1C11.7057 1 14.5574 3.32688 15.2409 6.60215C15.2974 6.87246 15.5622 7.04587 15.8325 6.98946C16.1029 6.93304 16.2763 6.66817 16.2199 6.39785C15.4425 2.67312 12.1934 0 8.50002 0C4.8066 0 1.55742 2.67311 0.780175 6.39786C0.723767 6.66818 0.897177 6.93305 1.1675 6.98946C1.43782 7.04587 1.70268 6.87246 1.75909 6.60214ZM8.5 3C6.567 3 5 4.567 5 6.5C5 8.433 6.567 10 8.5 10C10.433 10 12 8.433 12 6.5C12 4.567 10.433 3 8.5 3ZM6 6.5C6 5.11929 7.11929 4 8.5 4C9.88071 4 11 5.11929 11 6.5C11 7.88071 9.88071 9 8.5 9C7.11929 9 6 7.88071 6 6.5Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n }\n}\n",":host {\n display: flex;\n}\n","import { Component, Prop, h } from '@stencil/core';\n\n@Component({\n tag: 'feedback-icon',\n styleUrl: 'icon.css',\n scoped: true,\n})\nexport class FeedbackIcon {\n @Prop() width: string = '11';\n @Prop() height: string = '14';\n\n render() {\n return (\n <svg width={this.width} height={this.height} fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M0.5 8.875C0.5 8.875 1.125 8.25 3 8.25C4.875 8.25 6.125 9.5 8 9.5C9.875 9.5 10.5 8.875 10.5 8.875V1.375C10.5 1.375 9.875 2 8 2C6.125 2 4.875 0.75 3 0.75C1.125 0.75 0.5 1.375 0.5 1.375V8.875ZM0.5 8.875V13.25\"\n stroke=\"currentColor\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n );\n }\n}\n","@use '../../../common/styles/variables' as *;\n@use '../../../common/mixins/inputs' as *;\n\n:host {\n display: block;\n position: relative;\n @include default-css-variables;\n width: 100%;\n\n @media #{$mobile} {\n position: unset;\n }\n}\n\nlabel {\n @include input-label;\n flex-direction: column;\n gap: 4px;\n font-family: var(--nylas-font-family);\n font-size: 16px;\n color: var(--nylas-base-800);\n\n p {\n margin: 0;\n }\n\n .error {\n color: var(--nylas-error);\n }\n}\n\n.color-picker-container {\n @include textfield;\n width: -moz-available;\n width: -webkit-fill-available;\n padding-left: 0;\n gap: 0;\n overflow: hidden;\n\n input {\n display: flex;\n align-items: center;\n height: 100%;\n appearance: none;\n border: none;\n border-right: 1px solid var(--nylas-base-200);\n background: transparent;\n\n &::-webkit-color-swatch {\n min-width: 30px;\n border-radius: 0.25rem;\n border: 1px solid var(--nylas-base-200);\n margin: 0.25rem;\n }\n\n &::-moz-color-swatch {\n min-width: 30px;\n border-radius: 0.25rem;\n border: 1px solid var(--nylas-base-200);\n margin: 0.25rem;\n }\n }\n\n &.error {\n border: 1px solid var(--nylas-error);\n }\n\n &:hover,\n &:active {\n outline: 1px solid var(--nylas-primary);\n }\n\n &:active {\n outline: 2px solid var(--nylas-primary);\n }\n\n label {\n width: 100%;\n }\n}\n\n.labelBtn {\n color: var(--nylas-base-800);\n padding: 14px;\n font-size: 16px;\n font-family: var(--nylas-font-family);\n cursor: pointer;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n width: 100%;\n gap: 0.5rem;\n background: transparent;\n border: none;\n\n &.error {\n border: 1px solid var(--nylas-error);\n }\n\n &.focus {\n background: transparent;\n }\n\n &:hover,\n &:active {\n outline: 1px solid var(--nylas-primary);\n }\n\n span {\n &.chevron {\n display: flex;\n align-self: center;\n }\n\n &.open {\n transform: rotate(90deg);\n }\n\n &.closed {\n transform: rotate(270deg);\n }\n\n &.selected-option {\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n max-width: 144px;\n font-size: 14px;\n line-height: 20px;\n\n @media #{$mobile} {\n max-width: 124px;\n font-size: 16px;\n }\n }\n }\n}\n","import { Component, Element, Event, EventEmitter, h, Listen, Prop, State } from '@stencil/core';\n\n/**\n * The `input-color-picker` component is a dropdown that allows users to select an accent color from either RGB inputs or an interactive color picker and converts them to a hex value.\n * This component is used in the scheduling form to input dropdown type inputs.\n * @part icp_color-picker - The dropdown container\n * @part icp_color-picker-button - The dropdown button\n * @part icp_color-picker-button-selected-label - The selected option label\n * @part icp_color-picker-label - The dropdown label\n */\n@Component({\n tag: 'input-color-picker',\n styleUrl: 'input-color-picker.scss',\n shadow: true,\n})\nexport class InputColorPicker {\n @Element() el!: HTMLElement;\n private readonly componentType: string = 'color-picker';\n\n private inputRef?: HTMLInputElement;\n\n // Props\n /**\n * The name of the dropdown\n */\n @Prop() name!: string;\n /**\n * The default selected color\n */\n @Prop({ attribute: 'default-selected-color' }) defaultSelectedColor?: string;\n\n // States\n /**\n * The selected option\n */\n @State() selectedColor: string | undefined = this.defaultSelectedColor;\n /**\n * The open state of the dropdown\n */\n @State() isOpen: boolean = false;\n /**\n * The aria-activedescendant attribute for the listbox element to indicate the currently active\n * option in the list box to screen readers. The value of aria-activedescendant is the ID of\n * the active option.\n */\n @State() ariaActivedescendant: string = '';\n\n /**\n * The error message to display when the value is empty or null and the dropdown is required\n */\n @State() errorMessage: string = '';\n\n // Events\n /**\n * This event is fired when the selected option is changed\n */\n @Event({ bubbles: true, composed: true }) nylasFormDropdownChanged!: EventEmitter<{\n value: string;\n name: string;\n error?: string;\n label?: string;\n }>;\n\n // Lifecycle events\n componentWillLoad() {\n this.selectedColor = this.defaultSelectedColor;\n this.el.setAttribute('component-type', this.componentType);\n }\n\n // Methods\n handleFocus() {\n this.isOpen = true;\n }\n handleBlur() {\n this.isOpen = false;\n }\n\n // handle input separately from change to allow for live updates in label\n handleInput(event: Event) {\n this.selectedColor = (event.target as HTMLInputElement).value;\n }\n\n handleChange(event: Event) {\n this.selectedColor = (event.target as HTMLInputElement).value;\n this.nylasFormDropdownChanged.emit({\n value: this.selectedColor,\n name: this.name,\n error: this.errorMessage,\n });\n }\n\n handleKeyDown(event: KeyboardEvent) {\n if (event.code === 'Enter' || event.code === 'Space') {\n event.preventDefault();\n this.inputRef?.click();\n }\n }\n\n // Event listeners\n @Listen('click', { target: 'document', capture: true })\n handleOutsideClick(event: MouseEvent) {\n // Get the path of the event\n const path = event.composedPath();\n const isClickInside = path.includes(this.el);\n\n if (!isClickInside && this.isOpen) {\n this.isOpen = false;\n }\n }\n\n render() {\n return (\n <div class=\"color-picker-container\" part=\"icp_color-picker\" tabindex=\"0\" onKeyDown={e => this.handleKeyDown(e)}>\n <input\n type=\"color\"\n ref={el => (this.inputRef = el as HTMLInputElement)}\n id={this.name}\n name={this.name}\n value={this.selectedColor}\n tabindex=\"-1\"\n onFocus={() => this.handleFocus()}\n onBlur={() => this.handleBlur()}\n onInput={e => this.handleInput(e)}\n onChange={e => this.handleChange(e)}\n onKeyDown={e => this.handleKeyDown(e)}\n />\n <label\n part=\"icp_color-picker-button\"\n htmlFor={this.name}\n class={{ labelBtn: true, open: this.isOpen, error: !!this.errorMessage }}\n aria-haspopup=\"listbox\"\n aria-expanded={this.isOpen ? 'true' : 'false'}\n aria-label={this.name}\n >\n <span class=\"selected-option\" part=\"icp_color-picker-button-selected-label\">\n {this.selectedColor || 'Select a color'}\n </span>\n <span\n class={{\n open: this.isOpen,\n closed: !this.isOpen,\n chevron: true,\n }}\n aria-hidden=\"true\"\n >\n <chevron-icon width=\"16\" height=\"16\" />\n </span>\n {this.errorMessage && <span class=\"error help-text\">{this.errorMessage}</span>}\n </label>\n </div>\n );\n }\n}\n","@use '../../../common/styles/variables' as *;\n\n:host {\n display: block;\n @include default-css-variables;\n width: inherit;\n}\n\n.logo-container {\n display: flex;\n flex-direction: row;\n gap: 2rem;\n\n .input-container {\n flex: 1;\n\n span.error-message {\n color: var(--nylas-error);\n }\n }\n\n .logo {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 200px;\n height: 100px;\n border: var(--nylas-base-200) solid 1px;\n border-radius: var(--nylas-border-radius-2x);\n overflow: hidden;\n padding: 10px;\n\n img {\n max-height: 100%;\n max-width: 100%;\n object-fit: contain;\n object-position: center;\n }\n }\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { debug, isValidImage } from '@/utils/utils';\nimport { AttachInternals, Component, Element, Event, EventEmitter, Host, Listen, Prop, State, Watch, h } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../../scheduler-editor/nylas-scheduler-editor/nylas-scheduler-editor';\nimport { ThemeConfig } from '@nylas/core';\n\n/**\n * The `nylas-image-input` component is a UI component that allows users input an image URL and see a preview of the image.\n *\n * @part iiu__logo-input-textfield - The image input textfield\n */\n@Component({\n tag: 'input-image-url',\n styleUrl: 'input-image-url.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class InputImageUrl {\n @Element() host!: HTMLInputImageUrlElement;\n private readonly componentType: string = 'image-url';\n\n /**\n * Image\n */\n @Prop({ attribute: 'image-url' }) imageUrl: string = '';\n /** */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: ThemeConfig;\n /**\n * Error message to display when the image URL is invalid.\n */\n @Prop() errorMessage: string = '';\n /**\n * The name of the component\n */\n @Prop() name: string = 'input-image-url';\n\n /**\n * The element internals.\n */\n @AttachInternals() internals!: ElementInternals;\n\n /**\n * The current image URL state.\n */\n @State() currentImageUrl: string = this.imageUrl;\n\n /**\n * The error message\n */\n @State() error: string = '';\n\n /**\n * This event is fired when the image url is changed and the image is invalid.\n */\n @Event() readonly nylasFormInputImageUrlInvalid!: EventEmitter<{ value: string; name: string }>;\n /**\n * This event is fired when the image URL is changed\n */\n @Event() valueChanged!: EventEmitter<{\n value: string;\n name: string;\n valueChanged?: (event: CustomEvent<{ value: string; name: string }>) => void;\n }>;\n\n // Lifecycle methods\n connectedCallback() {\n debug('nylas-image-input', 'connectedCallback');\n // Use queueMicrotask to defer theme application until after React has set props.\n // This fixes the timing issue where connectedCallback fires before React sets themeConfig.\n queueMicrotask(() => {\n if (this.themeConfig) {\n this.applyThemeConfig(this.themeConfig);\n this.host.setAttribute('data-themed', '');\n }\n });\n }\n\n disconnectedCallback() {\n debug('nylas-image-input', 'disconnectedCallback');\n }\n\n componentWillLoad() {\n debug('nylas-image-input', 'componentWillLoad');\n // See comment in the @Watch('name') decorator for more information.\n this.host.setAttribute('name', this.name);\n this.host.setAttribute('component-type', this.componentType);\n }\n\n componentDidLoad() {\n debug('nylas-image-input', 'componentDidLoad');\n this.currentImageUrl = this.imageUrl;\n this.setImage(this.imageUrl, false);\n }\n\n componentWillUpdate() {\n debug('nylas-image-input', 'componentWillUpdate');\n }\n\n componentDidUpdate() {\n debug('nylas-image-input', 'componentDidUpdate');\n }\n\n componentWillRender() {\n debug('nylas-image-input', 'componentWillRender');\n }\n\n componentDidRender() {\n debug('nylas-image-input', 'componentDidRender');\n }\n\n /**\n * When a name prop is passed, stencil does not automatically set the name attribute on the host element.\n * Since this component is form-associated, the name attribute is required for form submission.\n * This is a workaround to ensure that the name attribute is set on the host element.\n */\n @Watch('name')\n elementNameChangedHandler(newValue: string) {\n debug('nylas-image-input', 'elementNameChangedHandler', newValue);\n this.host.setAttribute('name', newValue);\n }\n\n @Watch('errorMessage')\n errorMessageChangedHandler(newValue: string) {\n debug('nylas-image-input', 'errorMessageChangedHandler', newValue);\n if (this.error) {\n this.error = newValue;\n }\n }\n\n @Watch('themeConfig')\n themeConfigChangedHandler(newVal: ThemeConfig, oldVal: ThemeConfig) {\n if (newVal === oldVal) return;\n this.applyThemeConfig(newVal);\n }\n\n applyThemeConfig(themeConfig?: ThemeConfig) {\n if (themeConfig) {\n for (const [key, value] of Object.entries(themeConfig)) {\n this.host.style.setProperty(`${key}`, value);\n }\n }\n }\n\n @Listen('nylasFormInputChanged')\n async nylasFormInputChangedHandler(event: CustomEvent<{ value: string; name: string }>) {\n const { name, value } = event.detail;\n\n if (name === this.name) {\n this.setImage(value);\n }\n }\n\n @Listen('nylasFormInputBlurred')\n async nylasFormInputBlurHandler(event: CustomEvent<{ value: string; name: string }>) {\n const { name, value } = event.detail;\n\n if (name === this.name) {\n this.setImage(value);\n }\n }\n\n setImage(value: string, valueChanged: boolean = true) {\n this.error = '';\n\n isValidImage(value)\n .then(() => {\n this.currentImageUrl = value;\n\n this.internals.setValidity({});\n this.internals.setFormValue(this.currentImageUrl, this.name);\n if (valueChanged) {\n this.valueChanged.emit({ value: this.currentImageUrl, name: this.name });\n }\n })\n .catch(() => {\n this.error = this.errorMessage || 'Invalid image URL.';\n this.nylasFormInputImageUrlInvalid.emit({ value: this.error, name: this.name });\n if (typeof this.internals.setValidity === 'function') {\n this.internals.setValidity({ customError: true }, this.error);\n }\n });\n }\n\n @RegisterComponent<InputImageUrl, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-image-input',\n eventToProps: {\n valueChanged: async (\n event: CustomEvent<{ value: string; name: string; valueChanged?: (event: CustomEvent<{ value: string; name: string }>) => void }>,\n _nylasSchedulerConfigConnector: NylasSchedulerConfigConnector,\n ) => {\n const { valueChanged } = event.detail;\n // If a handler is passed, call it.\n if (valueChanged) {\n valueChanged(event);\n }\n },\n },\n })\n render() {\n return (\n <Host>\n <div class=\"logo-container\">\n <div class=\"input-container\">\n <input-component\n name={this.name}\n id={this.name}\n type=\"text\"\n required={false}\n themeConfig={this.themeConfig}\n exportparts=\"ic_input: iiu__logo-input-textfield\"\n defaultValue={this.imageUrl ?? ''}\n />\n {this.error && <span class=\"error-message\">{this.error}</span>}\n </div>\n\n {this.currentImageUrl && !this.error && (\n <div class=\"logo\">\n <img src={this.currentImageUrl} alt=\"Logo\" />\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n","@use '../../../common/styles/variables' as *;\n\n:host {\n display: block;\n margin: 1rem;\n @include default-css-variables;\n}\n\n.nylas-additional-participants__title {\n color: var(--nylas-base-900);\n font-size: 16px;\n font-style: normal;\n font-weight: 600;\n line-height: 20px;\n /* 125% */\n margin: 0;\n text-align: left;\n}\n\n.nylas-additional-participants__subtitle {\n color: var(--nylas-base-600);\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n /* 142.857% */\n margin: 0.25rem 0px 0px;\n text-align: left;\n}\n\n.nylas-additional-participants__content {\n padding: 1rem;\n display: flex;\n flex-direction: column;\n gap: 1rem;\n background-color: var(--nylas-base-25);\n}\n\n.nylas-additional-participants__input_group {\n padding-top: 8px;\n display: flex;\n flex-direction: column;\n gap: 4px;\n\n label {\n display: flex;\n align-items: center;\n color: var(--nylas-base-800);\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 150%;\n\n span.org-as-participant {\n width: max-content;\n }\n }\n}\n\n.nylas-additional-participants__error {\n color: var(--nylas-error);\n font-size: 14px;\n font-family: var(--nylas-font-family);\n font-weight: 400;\n line-height: 16px;\n margin: 0;\n text-align: left;\n}\n\n.nylas-additional-participants__input_wrapper {\n display: flex;\n align-items: center;\n min-height: 48px;\n border-width: 1;\n border-radius: 8px;\n border: 1px solid var(--nylas-base-300);\n\n &.error {\n border-color: var(--nylas-error);\n }\n\n button {\n flex-shrink: 0;\n padding: 12px;\n border: none;\n border-left: 1px solid var(--nylas-base-300);\n background: none;\n cursor: pointer;\n color: var(--nylas-base-800);\n\n &:hover,\n &:active {\n color: var(--nylas-primary);\n }\n }\n}\n\n.nylas-additional-participants__input_wrapper_organizer {\n border: none;\n}\n\n.nylas-additional-participants__input {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: space-between;\n min-height: 48px;\n\n input {\n border: none;\n outline: none;\n background: none;\n width: 100%;\n }\n\n .nylas-additional-participants__input-with-loading {\n position: relative;\n width: 100%;\n }\n\n .nylas-additional-participants__loading {\n position: absolute;\n right: 48px;\n top: 50%;\n transform: translateY(-50%);\n font-size: 12px;\n color: var(--nylas-base-500);\n }\n\n input-dropdown {\n width: 100%;\n }\n\n input-dropdown::part(id_dropdown) {\n width: 100%;\n height: 100%;\n }\n\n input-dropdown::part(id_dropdown-input) {\n min-height: 48px;\n box-sizing: border-box;\n border-radius: var(--nylas-border-radius-2x);\n border: none;\n outline: none;\n border-top-right-radius: initial;\n border-bottom-right-radius: initial;\n padding-left: 16px;\n }\n\n input-dropdown::part(id_dropdown-content) {\n width: 100%;\n max-width: none;\n box-sizing: border-box;\n }\n\n input-component::part(ic__input) {\n background: var(--nylas-base-50);\n }\n\n input-component::part(ic__label) {\n font-size: 14px;\n }\n\n input-component {\n div.required-input {\n display: flex;\n gap: 4px;\n\n label {\n display: flex;\n gap: 4px;\n align-items: center;\n\n tooltip-component#organizer_participant_tooltip::part(tc__content) {\n left: -84px;\n }\n }\n }\n }\n}\n\n.nylas-additional-participants__add {\n padding: 12px;\n display: flex;\n align-items: center;\n border: none;\n background: none;\n cursor: pointer;\n color: var(--nylas-base-800);\n\n span {\n padding: 0 8px;\n font-size: 16px;\n font-style: normal;\n font-weight: 500;\n }\n\n &:hover,\n &:active {\n color: var(--nylas-primary);\n }\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { debug } from '@/utils/utils';\nimport { AttachInternals, Component, Host, Prop, State, Watch, h, Element, Listen, EventEmitter } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\nimport { Event } from '@stencil/core';\nimport { AdditionalParticipant, Calendar, Configuration, ThemeConfig } from '@nylas/core';\nimport { User } from '@/common/nylas-api-request';\nimport i18next from '@/utils/i18n';\nimport { LANGUAGE_CODE } from '@/common/constants';\n\ntype Participant = {\n name?: string;\n email: string;\n is_valid?: boolean;\n is_organizer?: boolean;\n availability?: Availability;\n booking?: Booking;\n};\ntype Availability = {\n calendar_ids: string[];\n};\ntype Booking = {\n calendar_id: string;\n};\n\n/**\n * The `nylas-additional-participants` component is a form input for adding additional participants to an event.\n *\n * @part nadtnlpart__title - The title of the component.\n * @part nadtnlpart__subtitle - The subtitle of the component.\n * @part nadtnlpart__content - The content of the component.\n * @part nadtnlpart__input_group - The input group of the component.\n * @part nadtnlpart__input_wrapper - The input wrapper of the component.\n * @part nadtnlpart__input - The input of the component.\n * @part nadtnlpart__remove-participant - The remove participant button of the component.\n * @part nadtnlpart__add-participant - The add participant button of the component.\n *\n */\n@Component({\n tag: 'nylas-additional-participants',\n styleUrl: 'nylas-additional-participants.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasAdditionalParticipants {\n @Element() host!: HTMLNylasAdditionalParticipantsElement;\n /**\n * @standalone\n * The name of the component\n */\n @Prop() name: string = 'participants';\n /**\n * @standalone\n * The selected config\n */\n @Prop() selectedConfiguration?: Configuration;\n /**\n * @standalone\n * The logged in user\n */\n @Prop() currentUser?: User;\n /**\n * @standalone\n * The list of user's calendars.\n */\n @Prop() currentUserCalendars?: Calendar[];\n /**\n * @standalone\n * The additional participants options from the config\n */\n @Prop() participantOptions?: AdditionalParticipant[];\n /**\n * @standalone\n * The event participants\n */\n @Prop() eventParticipants?: Participant[];\n /**\n * @standalone\n * If the config is round robin\n */\n @Prop() roundRobinConfig?: boolean;\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: LANGUAGE_CODE;\n /**\n * @standalone\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: ThemeConfig;\n /**\n * @standalone\n * Callback to search participants by query for autocomplete.\n */\n @Prop() participantSearch?: (query: string) => Promise<AdditionalParticipant[]>;\n\n @AttachInternals() internals!: ElementInternals;\n @State() participants: Participant[] = this.eventParticipants ?? [];\n @State() participantErrors: { [key: string]: string } = {};\n @State() includeOrganizerAsParticipant: boolean = true;\n @State() isRoundRobinConfig: boolean = false;\n @State() error: string = '';\n @State() requiredError: string = '';\n @State() patternError: string = '';\n @State() participantSearchResults: AdditionalParticipant[] = [];\n @State() participantSearchLoading: boolean = false;\n @State() activeSearchInputIndex: number | null = null;\n\n private participantSearchDebounceTimer?: ReturnType<typeof setTimeout>;\n private readonly PARTICIPANT_SEARCH_DEBOUNCE_MS = 300;\n\n /**\n * This event is fired when the selected participants change.\n */\n @Event() valueChanged!: EventEmitter<{\n value: string;\n name: string;\n }>;\n\n /**\n * When a name prop is passed, stencil does not automatically set the name attribute on the host element.\n * Since this component is form-associated, the name attribute is required for form submission.\n * This is a workaround to ensure that the name attribute is set on the host element.\n */\n @Watch('name')\n elementNameChangedHandler(newValue: string) {\n debug('nylas-additional-participants', 'elementNameChangedHandler', newValue);\n this.host.setAttribute('name', newValue);\n }\n\n @Watch('currentUser')\n @Watch('selectedConfiguration')\n selectedConfigurationAndCurrentUserChangedHandler(newValue: unknown, _oldValue: unknown, propName: string) {\n debug('nylas-additional-participants', 'selectedConfigurationAndCurrentUserChangedHandler', newValue, this.currentUser);\n\n if (propName === 'selectedConfiguration') {\n this.updateState(newValue as Configuration, this.currentUser, false);\n } else if (propName === 'currentUser') {\n this.updateState(this.selectedConfiguration, newValue as User, false);\n }\n }\n\n @Watch('selectedLanguage')\n selectedLanguageChangedHandler(newVal: LANGUAGE_CODE, oldVal: LANGUAGE_CODE) {\n if (newVal === oldVal) return;\n i18next.changeLanguage(newVal);\n this.requiredError = i18next.t('fieldRequired', { field: i18next.t('email') });\n this.patternError = i18next.t('invalidInputFormat', { field: i18next.t('email') });\n if (this.error) {\n this.error = i18next.t('nylasAdditionalParticipants.error');\n }\n }\n\n @Watch('themeConfig')\n themeConfigChangedHandler(newVal: ThemeConfig, oldVal: ThemeConfig) {\n if (newVal === oldVal) return;\n this.applyThemeConfig(newVal);\n }\n\n connectedCallback() {\n debug('nylas-additional-participants', 'connectedCallback');\n // Use queueMicrotask to defer theme application until after React has set props.\n // This fixes the timing issue where connectedCallback fires before React sets themeConfig.\n queueMicrotask(() => {\n if (this.themeConfig) {\n this.applyThemeConfig(this.themeConfig);\n this.host.setAttribute('data-themed', '');\n }\n });\n }\n\n componentWillLoad() {\n debug('nylas-additional-participants', 'componentWillLoad');\n this.host.setAttribute('name', this.name);\n }\n\n componentDidLoad() {\n debug('nylas-additional-participants', 'componentDidLoad');\n if (this.selectedConfiguration) {\n this.updateState(this.selectedConfiguration, this.currentUser, false);\n } else if (this.eventParticipants) {\n this.participants = this.eventParticipants || [];\n this.isRoundRobinConfig = this.roundRobinConfig || false;\n this.updateFormValue(true);\n }\n }\n\n disconnectedCallback() {\n debug('nylas-additional-participants', 'disconnectedCallback');\n }\n\n private updateState(selectedConfig?: Configuration, currentUser?: User, valueChanged: boolean = true) {\n this.isRoundRobinConfig = selectedConfig?.availability?.availability_rules?.availability_method\n ? selectedConfig?.availability?.availability_rules?.availability_method !== 'collective'\n : false;\n this.participants = selectedConfig?.participants || this.eventParticipants || [];\n this.includeOrganizerAsParticipant = this.isRoundRobinConfig && this.participants.find(p => p.email === currentUser?.email) ? true : false;\n this.updateOrganizerAsParticipant(valueChanged);\n }\n\n /**\n * This method is essentially a workaround to check if the internals are available because\n * the unit tests in stencil do not support the internals.\n * @returns boolean\n */\n get isInternalsAvailable() {\n return this.internals !== undefined && typeof this.internals.setFormValue === 'function' && typeof this.internals.setValidity === 'function';\n }\n\n private getParticipantLookupSources(): AdditionalParticipant[] {\n const fromOptions = this.participantOptions || [];\n const fromSearch = this.participantSearchResults || [];\n const seen = new Set<string>();\n return [...fromSearch, ...fromOptions].filter(p => {\n if (seen.has(p.email)) return false;\n seen.add(p.email);\n return true;\n });\n }\n\n private getDropdownOptions(_index: number): { value: string; label: string }[] {\n const sources = this.participantSearch ? this.getParticipantLookupSources() : this.participantOptions || [];\n return this.getArrayDifference(sources, this.participants);\n }\n\n private async runParticipantSearch(query: string, index: number) {\n if (!this.participantSearch || !query.trim()) {\n this.participantSearchResults = [];\n this.participantSearchLoading = false;\n return;\n }\n this.activeSearchInputIndex = index;\n this.participantSearchLoading = true;\n this.participantSearchResults = [];\n try {\n const results = await this.participantSearch(query.trim());\n if (this.activeSearchInputIndex === index) {\n this.participantSearchResults = results || [];\n }\n } catch (err) {\n debug('nylas-additional-participants', 'participantSearch failed', err);\n } finally {\n if (this.activeSearchInputIndex === index) {\n this.participantSearchLoading = false;\n }\n }\n }\n\n @Listen('inputOptionChanged')\n onInputOptionChanged(event: CustomEvent<{ value: string; name: string }>) {\n debug('nylas-additional-participants', 'onInputOptionChanged');\n const EMAIL_REGEX = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/;\n const index = event.detail.name;\n const value = event.detail.value;\n const lookupSources = this.getParticipantLookupSources();\n const participant = lookupSources.find(p => p.email === value);\n\n if (this.participantSearch && value) {\n clearTimeout(this.participantSearchDebounceTimer);\n if (participant) {\n this.participantSearchResults = [];\n } else {\n this.participantSearchDebounceTimer = setTimeout(() => {\n this.runParticipantSearch(value, parseInt(String(index), 10));\n }, this.PARTICIPANT_SEARCH_DEBOUNCE_MS);\n }\n }\n\n this.participants[index].email = value;\n\n // Check for duplicate emails\n if (value) {\n const duplicateIndex = this.participants.findIndex((p, i) => i !== parseInt(String(index), 10) && p.email === value);\n if (duplicateIndex !== -1) {\n this.isInternalsAvailable && this.internals.setValidity({ customError: true }, i18next.t('nylasAdditionalParticipants.error_duplicate'));\n this.participantErrors[index] = i18next.t('nylasAdditionalParticipants.error_duplicate');\n this.participants[index].is_valid = false;\n this.participants = [...this.participants];\n return;\n }\n }\n\n if (!participant && this.isRoundRobinConfig) {\n this.isInternalsAvailable && this.internals.setValidity({ customError: true }, 'For round robin configuration, participant should be selected from the dropdown.');\n this.participantErrors[index] = 'For round robin page, participant should be selected from the dropdown.';\n this.participants[index].is_valid = false;\n this.participants = [...this.participants];\n return;\n } else if (!participant && !EMAIL_REGEX.test(value)) {\n if (this.participantSearch && (this.participantSearchLoading || !value.includes('@'))) {\n this.participants = [...this.participants];\n return;\n }\n this.isInternalsAvailable && this.internals.setValidity({ customError: true }, i18next.t('nylasAdditionalParticipants.error_email'));\n this.participantErrors[index] = i18next.t('nylasAdditionalParticipants.error_email');\n this.participants[index].is_valid = false;\n this.participants = [...this.participants];\n return;\n } else {\n this.participantErrors[index] = '';\n this.participants[index].is_valid = true;\n this.isInternalsAvailable && this.internals.setValidity({});\n }\n // Default to the is_primary calendar if available, otherwise first calendar for all participants\n const primaryCalendar = participant?.calendars?.find(calendar => calendar.is_primary);\n this.participants[index].availability =\n participant && primaryCalendar?.id ? { calendar_ids: [primaryCalendar.id] } : participant?.calendars[0]?.id ? { calendar_ids: [participant.calendars[0].id] } : undefined;\n // If round-robin config, set booking calendar to is_primary if available, otherwise first calendar for all participants\n this.participants[index].booking =\n participant && this.isRoundRobinConfig && primaryCalendar?.id\n ? { calendar_id: primaryCalendar.id }\n : this.isRoundRobinConfig && participant?.calendars[0]?.id\n ? { calendar_id: participant.calendars[0].id }\n : undefined;\n this.participants[index].name = participant?.name || value;\n this.participants = [...this.participants];\n this.updateFormValue();\n }\n\n updateOrganizerAsParticipant(valueChanged: boolean = true) {\n const findCurrentUserInParticipants = this.participants.find(p => p.email === this.currentUser?.email);\n if (this.isRoundRobinConfig && !findCurrentUserInParticipants && this.currentUser?.email) {\n const bookingCalendarDefault = this.currentUserCalendars?.find(calendar => calendar.is_primary)?.id || this.currentUserCalendars?.[0]?.id || 'primary';\n this.participants = [\n {\n name: this.currentUser?.name,\n email: this.currentUser?.email,\n is_organizer: true,\n availability: {\n calendar_ids: [bookingCalendarDefault],\n },\n booking: {\n calendar_id: bookingCalendarDefault,\n },\n },\n ...this.participants,\n ];\n }\n this.updateFormValue(valueChanged);\n }\n\n addParticipant() {\n debug('nylas-additional-participants', 'addParticipant');\n this.participants = [...this.participants, { name: '', email: '', is_organizer: false }];\n this.updateFormValue();\n }\n removeParticipant(index: number) {\n debug('nylas-additional-participants', 'removeParticipant');\n this.participants = this.participants.filter((_, i) => i !== index);\n this.updateFormValue();\n }\n\n updateFormValue(valueChanged = true) {\n debug('nylas-additional-participants', 'updateFormValue');\n const participants = this.isRoundRobinConfig ? (this.includeOrganizerAsParticipant ? this.participants : this.participants.filter(p => !p.is_organizer)) : this.participants;\n if (participants.length === 0) {\n this.error = i18next.t('nylasAdditionalParticipants.error');\n this.isInternalsAvailable && this.internals.setValidity({ customError: true }, this.error);\n } else {\n this.isInternalsAvailable && this.internals.setValidity({});\n this.error = '';\n this.isInternalsAvailable && this.internals.setFormValue(JSON.stringify(participants), this.name);\n if (valueChanged) {\n this.valueChanged.emit({ value: JSON.stringify(participants), name: this.name });\n }\n }\n }\n\n // Filter out the participants that are already added\n getArrayDifference(array1: AdditionalParticipant[], array2: Participant[]) {\n const filtered = array1.filter(participant1 => !array2.some(participant2 => participant1.email === participant2.email));\n return filtered.map(participant => {\n return { value: participant.email, label: participant.email };\n });\n }\n\n applyThemeConfig(themeConfig?: ThemeConfig) {\n if (themeConfig) {\n for (const [key, value] of Object.entries(themeConfig)) {\n this.host.style.setProperty(`${key}`, value);\n }\n }\n }\n\n @RegisterComponent<NylasAdditionalParticipants, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-additional-participants',\n stateToProps: new Map([\n ['schedulerConfig.additionalParticipants', 'participantOptions'],\n ['schedulerConfig.participantSearch', 'participantSearch'],\n ['schedulerConfig.selectedConfiguration', 'selectedConfiguration'],\n ['schedulerConfig.currentUser', 'currentUser'],\n ['schedulerConfig.calendars', 'currentUserCalendars'],\n ['schedulerConfig.selectedLanguage', 'selectedLanguage'],\n ['schedulerConfig.themeConfig', 'themeConfig'],\n ]),\n eventToProps: {},\n fireRegisterEvent: true,\n })\n render() {\n return (\n <Host part=\"nadtnlpart\">\n <nylas-form-card exportparts=\"nfc, nfc__header\" themeConfig={this.themeConfig}>\n <h3 slot=\"header-title\" class=\"nylas-additional-participants__title\" part=\"nadtnlpart__title\">\n {i18next.t('nylasAdditionalParticipants.headerTitle')}\n </h3>\n <p slot=\"header-subtitle\" class=\"nylas-additional-participants__subtitle\" part=\"nadtnlpart__subtitle\">\n {i18next.t('nylasAdditionalParticipants.headerSubTitle')}\n </p>\n <div slot=\"content\" class=\"nylas-additional-participants__content\" part=\"nadtnlpart__content\">\n <div>\n {this.participants.map((participant, index) => {\n return (\n <div class={'nylas-additional-participants__input_group'} part=\"nadtnlpart__input_group\">\n {!participant.is_organizer && <label>{`${i18next.t('nylasAdditionalParticipants.participant')} ${index}`}</label>}\n <div\n part=\"nadtnlpart__input_wrapper\"\n class={{\n 'nylas-additional-participants__input_wrapper': true,\n 'nylas-additional-participants__input_wrapper_organizer': participant?.is_organizer === true,\n 'nylas-additional-participants__input_wrapper_invalid': participant.is_valid === false,\n 'error': participant.is_valid === false,\n }}\n >\n <div class={{ 'nylas-additional-participants__input': true, 'organizer': participant?.is_organizer === true }} part=\"nadtnlpart__input\">\n {participant.is_organizer ? (\n <input-component\n class={'label-input'}\n name={`${index}`}\n key={index}\n label={i18next.t('nylasAdditionalParticipants.organizer')}\n required={false}\n requiredError={this.requiredError}\n patternError={this.patternError}\n readOnly={participant.is_organizer}\n defaultValue={participant.email}\n themeConfig={this.themeConfig}\n >\n {this.isRoundRobinConfig && (\n <div class=\"required-input\" slot=\"additional-input\">\n <input\n type=\"checkbox\"\n name={`organizer_participant`}\n id={`organizer_participant`}\n onClick={() => {\n this.includeOrganizerAsParticipant = !this.includeOrganizerAsParticipant;\n this.updateFormValue();\n }}\n checked={this.includeOrganizerAsParticipant}\n />\n <label htmlFor={`organizer_participant`} aria-label=\"Include as participant\">\n <span class=\"org-as-participant\" part=\"nadtnlpart__org-as-participant\">\n {i18next.t('nylasAdditionalParticipants.organizerAsParticipant')}\n </span>\n <tooltip-component id=\"organizer_participant_tooltip\">\n <info-icon slot=\"tooltip-icon\" />\n <span slot=\"tooltip-content\">\n <strong>{i18next.t('nylasAdditionalParticipants.tooltip.includeOrganizer')}:</strong>{' '}\n {i18next.t('nylasAdditionalParticipants.tooltip.includeOrganizerDesc')} <br />\n <strong>{i18next.t('nylasAdditionalParticipants.tooltip.excludeOrganizer')}:</strong>{' '}\n {i18next.t('nylasAdditionalParticipants.tooltip.excludeOrganizerDesc')}\n </span>\n </tooltip-component>\n </label>\n </div>\n )}\n </input-component>\n ) : (\n <div class=\"nylas-additional-participants__input-with-loading\">\n <input-dropdown\n id={`${index}`}\n name={`${index}`}\n filterable={!this.participantSearch}\n inputValue={participant.email}\n options={this.getDropdownOptions(index)}\n noResultsText={\n this.participantSearch &&\n !this.participantSearchLoading &&\n this.activeSearchInputIndex === index &&\n participant.email?.trim() &&\n this.getDropdownOptions(index).length === 0\n ? i18next.t('nylasAdditionalParticipants.noResults')\n : undefined\n }\n themeConfig={this.themeConfig}\n />\n {this.participantSearch && this.participantSearchLoading && this.activeSearchInputIndex === index && (\n <span class=\"nylas-additional-participants__loading\" part=\"nadtnlpart__loading\" aria-live=\"polite\">\n {i18next.t('nylasAdditionalParticipants.searching')}\n </span>\n )}\n </div>\n )}\n {!participant.is_organizer && (\n <button onClick={() => this.removeParticipant(index)} part=\"nadtnlpart__remove-participant\">\n <close-icon />\n </button>\n )}\n </div>\n </div>\n {!participant.is_valid && (\n <p class=\"nylas-additional-participants__error\" part=\"nadtnlpart__error\">\n {this.participantErrors[index]}\n </p>\n )}\n </div>\n );\n })}\n <p class=\"nylas-additional-participants__error\" part=\"nadtnlpart__error\">\n {this.error}\n </p>\n </div>\n <button class=\"nylas-additional-participants__add\" part=\"nadtnlpart__add-participant\" onClick={() => this.addParticipant()}>\n <add-circle-icon />{' '}\n <span>\n {this.participants.length > 1\n ? i18next.t('nylasAdditionalParticipants.addParticipant', { context: 'next' })\n : i18next.t('nylasAdditionalParticipants.addParticipant', { context: 'first' })}\n </span>\n </button>\n </div>\n </nylas-form-card>\n </Host>\n );\n }\n}\n","@use '../../../common/styles/variables' as *;\n@use '../../../common/mixins/inputs' as *;\n\n:host {\n display: block;\n height: auto;\n @include default-css-variables;\n width: 100%;\n}\n\n.nylas-event-description {\n display: flex;\n flex-direction: column;\n gap: 4px;\n position: relative;\n color: var(--nylas-base-900);\n\n label {\n @include input-label;\n flex-direction: column;\n gap: 4px;\n font-family: var(--nylas-font-family);\n\n p {\n margin: 0;\n display: flex;\n align-items: center;\n }\n\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 // Apply textfield styles but override display and alignment for contentEditable\n border-radius: var(--nylas-border-radius-2x);\n border: 1px solid var(--nylas-base-300);\n background: var(--nylas-base-0);\n width: -webkit-fill-available;\n min-height: 50px;\n padding: 12px 16px;\n overflow-y: auto;\n white-space: pre-wrap;\n line-height: 1.5;\n scrollbar-width: thin;\n color: var(--nylas-base-900);\n font-family: var(--nylas-font-family);\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n -webkit-text-fill-color: var(--nylas-base-900);\n display: block;\n /* Preserves line breaks */\n &::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n }\n\n &:focus {\n color: var(--nylas-base-900);\n -webkit-text-fill-color: var(--nylas-base-900);\n outline: 2px solid var(--nylas-primary);\n outline-offset: 2px;\n }\n\n &:focus-visible {\n color: var(--nylas-base-900);\n -webkit-text-fill-color: var(--nylas-base-900);\n outline: 2px solid var(--nylas-primary);\n outline-offset: 2px;\n }\n\n &.error {\n border-color: var(--nylas-error);\n border-width: 2px;\n }\n }\n\n 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-flex;\n align-items: center;\n gap: 4px;\n color: var(--nylas-base-500);\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 21px;\n position: relative;\n\n span.label-icon {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n\n tooltip-component {\n display: flex;\n &::part(tc__container) {\n position: unset;\n }\n\n &::part(tc__content) {\n position: absolute;\n top: 4px;\n left: 50%;\n transform: translateX(-50%);\n }\n }\n }\n }\n\n .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 // Use queueMicrotask to defer theme application until after React has set props.\n // This fixes the timing issue where connectedCallback fires before React sets themeConfig.\n queueMicrotask(() => {\n if (this.themeConfig) {\n this.applyThemeConfig(this.themeConfig);\n this.host.setAttribute('data-themed', '');\n }\n });\n }\n\n componentWillLoad() {\n debug('nylas-event-description', 'componentWillLoad');\n this.host.setAttribute('name', this.name);\n // Theme already applied in connectedCallback via queueMicrotask\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 debug('Browser not supported');\n return null;\n }\n }\n }\n\n handleChange(event: Event) {\n let textContent = (event.target as HTMLDivElement).textContent || '';\n textContent = sanitize(textContent);\n // 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 <p>\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 </p>\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","@use '../../../common/styles/variables' as *;\n\n:host {\n display: block;\n margin: 1rem;\n @include default-css-variables;\n}\n\n.nylas-event-info__title {\n color: var(--nylas-base-900);\n font-size: 16px;\n font-style: normal;\n font-weight: 600;\n line-height: 20px;\n /* 125% */\n margin: 0;\n text-align: left;\n}\n\n.nylas-event-info__subtitle {\n color: var(--nylas-base-600);\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n /* 142.857% */\n margin: 0.25rem 0px 0px;\n text-align: left;\n}\n\n.nylas-event-info__content {\n padding: 1rem;\n display: flex;\n flex-direction: column;\n gap: 1rem;\n background-color: var(--nylas-base-25);\n}\n\n.nylas-event-info__block {\n display: flex;\n justify-content: space-between;\n gap: 0.5rem;\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { checkForMissingSlots, debug } from '@/utils/utils';\nimport { AttachInternals, Component, Element, Host, Prop, Watch, h } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\nimport i18next from '@/utils/i18n';\nimport { LANGUAGE_CODE } from '@/common/constants';\nimport { ThemeConfig } from '@nylas/core';\n/**\n * The `nylas-event-info` component is an input form for event information such as title, description, duration, location.\n * This component is a container for the `nylas-event-title`, `nylas-event-description`, `nylas-event-duration`, and `nylas-event-location` components.\n *\n * ```html\n * <nylas-event-info>\n * <div slot=\"inputs\">\n * <nylas-event-title></nylas-event-title>\n * <nylas-event-description></nylas-event-description>\n * <nylas-event-duration></nylas-event-duration>\n * <nylas-lcation-component></nylas-event-location>\n * </div>\n * </nylas-event-info>\n * ```\n *\n * @slot inputs - The event information inputs. This includes the event title, description, duration, and location components.\n */\n@Component({\n tag: 'nylas-event-info',\n styleUrl: 'nylas-event-info.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasEventInfo {\n @Element() el!: HTMLElement;\n\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: LANGUAGE_CODE;\n\n /**\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: ThemeConfig;\n\n /**\n * The element internals.\n */\n @AttachInternals() internals!: ElementInternals;\n\n @Watch('selectedLanguage')\n selectedLanguageChangedHandler(newVal: LANGUAGE_CODE, oldVal: LANGUAGE_CODE) {\n if (newVal === oldVal) return;\n i18next.changeLanguage(newVal);\n }\n\n @Watch('themeConfig')\n themeConfigChangedHandler(newVal: ThemeConfig, oldVal: ThemeConfig) {\n if (newVal === oldVal) return;\n this.applyThemeConfig(newVal);\n }\n\n applyThemeConfig(themeConfig?: ThemeConfig) {\n if (themeConfig) {\n for (const [key, value] of Object.entries(themeConfig)) {\n this.el.style.setProperty(`${key}`, value);\n }\n }\n }\n\n connectedCallback() {\n debug('nylas-event-info', 'connectedCallback');\n // Use queueMicrotask to defer theme application until after React has set props.\n // This fixes the timing issue where connectedCallback fires before React sets themeConfig.\n queueMicrotask(() => {\n if (this.themeConfig) {\n this.applyThemeConfig(this.themeConfig);\n this.el.setAttribute('data-themed', '');\n }\n });\n }\n\n componentWillLoad() {\n debug('nylas-event-info', 'componentWillLoad');\n }\n\n componentDidLoad() {\n debug('nylas-event-info', 'componentDidLoad');\n checkForMissingSlots(['inputs'], this.el);\n }\n\n disconnectedCallback() {\n debug('nylas-event-info', 'disconnectedCallback');\n }\n\n @RegisterComponent<NylasEventInfo, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-event-info',\n stateToProps: new Map([\n ['schedulerConfig.selectedLanguage', 'selectedLanguage'],\n ['schedulerConfig.themeConfig', 'themeConfig'],\n ]),\n eventToProps: {},\n fireRegisterEvent: true,\n })\n render() {\n return (\n <Host>\n <nylas-form-card exportparts=\"nfc__header: nei__header\">\n <h1 slot=\"header-title\" class=\"nylas-event-info__title\" part=\"nei__title\">\n {i18next.t('nylasEventInfo.headerTitle')}\n </h1>\n <div slot=\"content\" class=\"nylas-event-info__content\">\n <slot name=\"inputs\"></slot>\n </div>\n </nylas-form-card>\n </Host>\n );\n }\n}\n","@use '../../../common/styles/variables' as *;\n\n:host {\n @include default-css-variables;\n}\n\n.nylas-event-location {\n display: flex;\n flex-direction: column;\n gap: 4px;\n font-family: var(--nylas-font-family);\n\n label {\n display: flex;\n align-items: center;\n color: var(--nylas-base-800);\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n line-height: 150%; /* 21px */\n span.label-icon {\n margin-left: 4px;\n tooltip-component {\n display: flex;\n }\n }\n }\n\n span[slot='select-icon'] {\n border-right: 1px solid var(--nylas-base-200);\n padding: 16px 0.75rem 16px 0.5rem;\n border-radius: var(--nylas-border-radius-2x);\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n height: 20px;\n }\n div.location-input {\n display: grid;\n grid-template-columns: auto 1fr;\n width: 100%;\n gap: 0.5rem;\n @media #{$mobile} {\n grid-template-columns: 1fr;\n }\n input {\n border: 1px solid var(--nylas-base-200);\n border-radius: var(--nylas-border-radius-2x);\n padding: 12px 16px;\n font-family: var(--nylas-font-family);\n font-size: 16px;\n line-height: 24px;\n background-color: var(--nylas-base-0);\n color: var(--nylas-base-900);\n }\n }\n select-dropdown {\n width: 208px;\n @media #{$mobile} {\n width: 100%;\n }\n }\n select-dropdown::part(sd_dropdown) {\n width: 100%;\n }\n select-dropdown::part(sd_dropdown-content) {\n left: calc(35px + 0.5rem);\n }\n select-dropdown::part(sd_dropdown-button) {\n display: flex;\n justify-content: space-between;\n width: 100%;\n border: 1px solid var(--nylas-base-200);\n padding: 0 0.5rem;\n }\n select-dropdown::part(sd_dropdown-button-selected-label) {\n display: inline-flex;\n align-self: center;\n padding: 14px 0;\n font-family: var(--nylas-font-family);\n font-size: 16px;\n line-height: 24px;\n }\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { debug, 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 { Conference, Configuration } from '@nylas/core';\nimport { CONFERENCE_PROVIDER_MAP, PROVIDER_CONFERENCE_MAP } from '@/common/constants';\nimport { User } from '@/common/nylas-api-request';\nimport i18next from '@/utils/i18n';\nimport { LANGUAGE_CODE } from '@/common/constants';\nimport { ThemeConfig } from '@nylas/core';\n/**\n * The `nylas-event-location` component is a form input for the location of an event.\n *\n * @part nel - The event location container\n * @part nel__location - The event location input\n * @part nel__dropdown - The dropdown container\n * @part nel__dropdown-button - The dropdown button\n * @part nel__dropdown-content - The dropdown content\n */\n@Component({\n tag: 'nylas-event-location',\n styleUrl: 'nylas-event-location.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasEventLocation {\n /*\n * The host element <nylas-event-location>\n */\n @Element() host!: HTMLElement;\n /**\n * @standalone\n * The name of the event location input.\n */\n @Prop() name: string = 'location';\n\n /**\n * @standalone\n * The current user\n */\n @Prop() currentUser?: User;\n /**\n * @standalone\n * The users provider\n */\n @Prop() userProvider?: string;\n /**\n * @standalone\n * The event conferencing stored in the configuration\n */\n @Prop() eventConferencing?: Conference;\n /**\n * @standalone\n * The conference providers where the key is the provider name ('zoom') and the value is the grant id.\n * We currently support same provider ('google', 'microsoft') for all participants and 'zoom' for cross-provider conferencing.\n */\n @Prop() conferenceProviders?: Record<string, string>;\n\n /**\n * @standalone\n * The selected config\n */\n @Prop() selectedConfiguration?: Configuration;\n\n /**\n * @standalone\n * The event location stored in the configuration\n */\n @Prop() eventLocation?: string;\n\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: LANGUAGE_CODE;\n\n /**\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: ThemeConfig;\n\n /**\n * The selected event location state. This defaults to the event location from the configuration or an empty string.\n */\n @State() location: string = this.eventLocation ?? '';\n /**\n * The grant id for the conferencing of non-default conferencing options.\n */\n @State() grantId: string = this.eventConferencing ? this.setDefaultGrantID(this.eventConferencing) : '';\n /**\n * The selected location option. This defaults to 'none'.\n */\n @State() selectedLocationOption!: string;\n /**\n * The current user provider state.\n */\n @State() userProviderState: string = this.userProvider ?? this.currentUser?.provider ?? '';\n\n /**\n * The state to store location options.\n */\n @State() locationOptions = [\n { value: 'none', label: i18next.t('nylasEventLocation.conferenceOptions.none'), labelHTML: this.getLabelHTML('none') },\n { value: 'custom', label: i18next.t('nylasEventLocation.conferenceOptions.custom'), labelHTML: this.getLabelHTML('custom') },\n ];\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-location', '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 configLocation = newValue?.event_booking?.location || this.eventLocation;\n const configConferencing = newValue?.event_booking?.conferencing || this.eventConferencing;\n if (configConferencing?.provider) {\n this.selectedLocationOption = this.setDefaultLocationOption(configConferencing, configLocation ?? '');\n this.grantId = this.setDefaultGrantID(configConferencing);\n this.location = configLocation ? configLocation : '';\n } else if (configLocation) {\n this.selectedLocationOption = configLocation ? 'custom' : 'none';\n this.location = configLocation;\n } else {\n this.selectedLocationOption = 'none';\n this.location = '';\n }\n }\n\n @Watch('currentUser')\n currentUserChangedHandler(newValue: User) {\n debug('nylas-custom-booking-flow', 'currentUserChangedHandler', newValue);\n if (newValue?.provider) {\n this.userProviderState = newValue?.provider;\n this.setLocationOptionsForProvider(this.userProviderState);\n }\n }\n\n @Watch('conferenceProviders')\n conferenceProvidersChanged(newValue: Record<string, string>) {\n if (newValue?.['zoom'] && !this.locationOptions.some(option => option.value === 'zoom')) {\n this.locationOptions.push({ value: 'zoom', label: i18next.t('nylasEventLocation.conferenceOptions.zoom'), labelHTML: this.getLabelHTML('zoom') });\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 locOptionValues = this.locationOptions.map(option => option.value);\n locOptionValues.forEach(option => {\n const index = this.locationOptions.findIndex(i => i.value === option);\n this.locationOptions[index].label = i18next.t(`nylasEventLocation.conferenceOptions.${option}`);\n this.locationOptions[index].labelHTML = this.getLabelHTML(option);\n });\n this.locationOptions = [...this.locationOptions];\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 * This event is fired when the value of the event location changes.\n */\n @Event() valueChanged!: EventEmitter<{\n value: string;\n name: string;\n }>;\n\n connectedCallback() {\n debug('nylas-event-location', 'connectedCallback');\n // Use queueMicrotask to defer theme application until after React has set props.\n // This fixes the timing issue where connectedCallback fires before React sets themeConfig.\n queueMicrotask(() => {\n if (this.themeConfig) {\n this.applyThemeConfig(this.themeConfig);\n this.host.setAttribute('data-themed', '');\n }\n });\n }\n\n componentWillLoad() {\n debug('nylas-event-location', 'componentWillLoad');\n this.host.setAttribute('name', this.name);\n }\n\n componentDidLoad() {\n debug('nylas-event-location', 'componentDidLoad');\n if (this.selectedConfiguration?.event_booking) {\n this.selectedConfigurationChangedHandler(this.selectedConfiguration);\n } else {\n this.selectedLocationOption = this.setDefaultLocationOption(this.eventConferencing || null, this.eventLocation ?? '');\n this.location = this.eventLocation ?? '';\n }\n\n this.userProviderState = this.userProvider ?? this.currentUser?.provider ?? '';\n this.setLocationOptionsForProvider(this.userProviderState);\n const formElement = this.internals?.form;\n // Set the initial form value\n if (formElement) {\n const formData = new FormData(formElement);\n formData.set('conference', this.getConferencePayload());\n formData.set(this.name, this.location);\n }\n\n if (this.conferenceProviders?.['zoom'] && !this.locationOptions.some(option => option.value === 'zoom')) {\n this.locationOptions.push({ value: 'zoom', label: i18next.t('nylasEventLocation.conferenceOptions.zoom'), labelHTML: this.getLabelHTML('zoom') });\n }\n }\n\n disconnectedCallback() {\n debug('nylas-event-location', 'disconnectedCallback');\n }\n\n getConferencePayload() {\n if (this.selectedLocationOption === 'custom' || this.selectedLocationOption === 'none') {\n return JSON.stringify(null);\n }\n const grantId = this.conferenceProviders?.[this.selectedLocationOption];\n const payload = {\n provider: PROVIDER_CONFERENCE_MAP[this.selectedLocationOption],\n autocreate: grantId\n ? {\n conf_grant_id: grantId,\n }\n : {},\n };\n return JSON.stringify(payload);\n }\n\n @Listen('nylasFormDropdownChanged')\n nylasFormDropdownChangedHandler(event: CustomEvent<{ value: string }>) {\n this.selectedLocationOption = event.detail.value;\n let payload;\n switch (this.selectedLocationOption) {\n case 'none': {\n this.location = '';\n this.setFormValue('', this.name);\n this.valueChanged.emit({ value: '', name: this.name });\n this.valueChanged.emit({ value: JSON.stringify(null), name: 'conference' });\n break;\n }\n case 'custom': {\n this.valueChanged.emit({ value: JSON.stringify(null), name: 'conference' });\n break;\n }\n case 'google': {\n this.location = '';\n this.setFormValue('', this.name);\n const googleConfGrantId = this.conferenceProviders?.['google'];\n payload = {\n provider: PROVIDER_CONFERENCE_MAP.google,\n autocreate: googleConfGrantId\n ? {\n conf_grant_id: googleConfGrantId,\n }\n : {},\n };\n this.valueChanged.emit({ value: JSON.stringify(payload), name: 'conference' });\n this.valueChanged.emit({ value: '', name: this.name });\n break;\n }\n case 'microsoft': {\n this.location = '';\n this.setFormValue('', this.name);\n const microsoftConfGrantId = this.conferenceProviders?.['microsoft'];\n payload = {\n provider: PROVIDER_CONFERENCE_MAP.microsoft,\n autocreate: microsoftConfGrantId\n ? {\n conf_grant_id: microsoftConfGrantId,\n }\n : {},\n };\n this.valueChanged.emit({ value: JSON.stringify(payload), name: 'conference' });\n this.valueChanged.emit({ value: '', name: this.name });\n break;\n }\n case 'zoom': {\n this.location = '';\n this.setFormValue('', this.name);\n const zoomConfGrantId = this.conferenceProviders?.['zoom'];\n payload = {\n provider: PROVIDER_CONFERENCE_MAP.zoom,\n autocreate: zoomConfGrantId\n ? {\n conf_grant_id: zoomConfGrantId,\n }\n : {},\n };\n this.valueChanged.emit({ value: JSON.stringify(payload), name: 'conference' });\n this.valueChanged.emit({ value: '', name: this.name });\n break;\n }\n }\n }\n\n setLocationOptionsForProvider(provider: string) {\n switch (provider) {\n case 'google':\n if (!this.locationOptions.some(option => option.value === 'google')) {\n this.locationOptions.push({ value: 'google', label: i18next.t('nylasEventLocation.conferenceOptions.google'), labelHTML: this.getLabelHTML('google') });\n }\n break;\n case 'microsoft':\n if (!this.locationOptions.some(option => option.value === 'microsoft')) {\n this.locationOptions.push({ value: 'microsoft', label: i18next.t('nylasEventLocation.conferenceOptions.google'), labelHTML: this.getLabelHTML('microsoft') });\n }\n break;\n }\n }\n\n setDefaultLocationOption(eventConferencing: Conference | null, eventLocation: string) {\n if (eventConferencing != null && eventConferencing?.provider != null) {\n return CONFERENCE_PROVIDER_MAP[eventConferencing?.provider];\n }\n return eventLocation ? 'custom' : 'none';\n }\n setDefaultGrantID(eventConferencing: Conference) {\n if (eventConferencing != null && eventConferencing?.autocreate != null) {\n return eventConferencing?.autocreate?.conf_grant_id;\n }\n return '';\n }\n\n setFormValue(value: string, name: string) {\n if (typeof this.internals.setFormValue === 'function') {\n this.internals.setFormValue(value, name);\n }\n }\n\n handleChange(event) {\n const value = sanitize(event.target.value);\n this.location = value;\n this.setFormValue(value, this.name);\n this.valueChanged.emit({ value: value, name: this.name });\n }\n\n getIcon(location: string) {\n switch (location) {\n case 'none':\n return <location-off-icon />;\n case 'custom':\n return <location-icon />;\n case 'google':\n return <google-meet-icon />;\n case 'microsoft':\n return <microsoft-teams-icon />;\n case 'zoom':\n return <zoom-icon />;\n }\n }\n\n getLabelHTML(location: string) {\n return (\n <span\n class=\"location-label\"\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '16px',\n width: '-webkit-fill-available',\n }}\n >\n {this.getIcon(location)}\n <span\n class=\"location-text\"\n style={{\n fontSize: '14px',\n fontWeight: '400',\n }}\n >\n {i18next.t(`nylasEventLocation.conferenceOptions.${location}`)}\n </span>\n </span>\n );\n }\n\n @RegisterComponent<NylasEventLocation, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-event-location',\n stateToProps: new Map([\n ['schedulerConfig.selectedConfiguration', 'selectedConfiguration'],\n ['schedulerConfig.conferenceProviders', 'conferenceProviders'],\n ['schedulerConfig.currentUser', 'currentUser'],\n ['schedulerConfig.selectedLanguage', 'selectedLanguage'],\n ['schedulerConfig.themeConfig', 'themeConfig'],\n ]),\n eventToProps: {},\n fireRegisterEvent: true,\n })\n render() {\n const defaultOption = typeof this.selectedLocationOption !== 'undefined' ? this.locationOptions.find(i => i.value == this.selectedLocationOption) : null;\n return (\n <Host>\n <div class=\"nylas-event-location\" part=\"nel\">\n <label htmlFor=\"location\">\n {i18next.t('nylasEventLocation.headerTitle')}\n <span class=\"label-icon\">\n <tooltip-component>\n <info-icon slot=\"tooltip-icon\" />\n <span slot=\"tooltip-content\">{i18next.t('nylasEventLocation.tooltip.desc')}</span>\n </tooltip-component>\n </span>\n </label>\n <div class=\"location-input\">\n {/* {defaultOption && defaultOption?.label && ( */}\n <select-dropdown\n withSearch={false}\n name=\"location\"\n options={this.locationOptions}\n defaultSelectedOption={defaultOption}\n themeConfig={this.themeConfig}\n exportparts=\"sd_dropdown: nel__dropdown, sd_dropdown-button: nel__dropdown-button, sd_dropdown-content: nel__dropdown-content\"\n >\n <span slot=\"select-icon\">{this.getIcon(this.selectedLocationOption)}</span>\n </select-dropdown>\n {/* )} */}\n {this.selectedLocationOption === 'custom' && (\n <input type=\"text\" part=\"nel__location\" id=\"location\" name=\"location\" maxlength=\"1024\" value={this.location} onInput={e => this.handleChange(e)} />\n )}\n </div>\n </div>\n </Host>\n );\n }\n}\n","@use '../../../common/styles/variables' as *;\n@use '../../../common/mixins/inputs' as *;\n\n:host {\n display: block;\n height: auto;\n @include default-css-variables;\n width: 100%;\n}\n\n.nylas-event-title {\n display: flex;\n flex-direction: column;\n gap: 4px;\n position: relative;\n text-align: left;\n color: var(--nylas-base-900);\n\n div.title {\n // Apply textfield styles but override display and alignment for contentEditable\n border-radius: var(--nylas-border-radius-2x);\n border: 1px solid var(--nylas-base-300);\n background: var(--nylas-base-0);\n width: -webkit-fill-available;\n height: 48px;\n padding: 12px 16px;\n overflow: auto;\n white-space: nowrap;\n scrollbar-width: thin;\n color: var(--nylas-base-900);\n font-family: var(--nylas-font-family);\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n line-height: 150%;\n -webkit-text-fill-color: var(--nylas-base-900);\n display: block;\n\n &::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n }\n\n &:focus {\n color: var(--nylas-base-900);\n -webkit-text-fill-color: var(--nylas-base-900);\n outline: 2px solid var(--nylas-primary);\n outline-offset: 2px;\n }\n\n &:focus-visible {\n color: var(--nylas-base-900);\n -webkit-text-fill-color: var(--nylas-base-900);\n outline: 2px solid var(--nylas-primary);\n outline-offset: 2px;\n }\n\n &.error {\n border-color: var(--nylas-error);\n border-width: 2px;\n }\n }\n\n input {\n padding: 12px 16px;\n border-width: 1;\n border-radius: 8px;\n border: 1px solid var(--nylas-base-200);\n }\n\n span.help-text {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n color: var(--nylas-base-500);\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 21px;\n position: relative;\n\n span.label-icon {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n\n tooltip-component {\n display: flex;\n &::part(tc__container) {\n position: unset;\n }\n\n &::part(tc__content) {\n position: absolute;\n top: 4px;\n left: 50%;\n transform: translateX(-50%);\n }\n }\n }\n }\n\n span.error-message {\n color: var(--nylas-error);\n }\n\n label {\n @include input-label;\n flex-direction: column;\n gap: 4px;\n font-family: var(--nylas-font-family);\n align-items: flex-start;\n\n p {\n margin: 0;\n display: flex;\n align-items: center;\n }\n\n span.required {\n color: var(--nylas-error, #cc4841);\n }\n\n span.label-icon {\n margin-left: 4px;\n\n tooltip-component {\n display: flex;\n }\n }\n }\n}\n\n.highlighted-tag {\n background-color: var(--nylas-base-200);\n border-radius: var(--nylas-border-radius);\n padding: 5px;\n margin-left: 4px;\n}\n\n.token-options {\n display: block;\n background-color: var(--nylas-base-0);\n width: 100%;\n max-height: 336px;\n overflow: auto;\n z-index: 1;\n border-radius: 4px;\n position: absolute;\n top: calc(48px + 24px + 8px); // 48px is the height of the input, 24px is the height of the label, 8px is the gap between the label and the input\n\n box-shadow: 0px 4px 6px -2px #0000000d;\n box-shadow: 0px 10px 15px -3px #0000001a;\n\n @media #{$mobile} {\n right: 0;\n width: 325px;\n max-width: unset;\n }\n\n ul {\n padding: 0;\n list-style-type: none;\n color: var(--nylas-base-900);\n max-height: 336px;\n margin: 0;\n\n li {\n padding: 16px, 12px, 16px, 12px;\n color: var(--nylas-base-900);\n padding: 12px 16px;\n text-decoration: none;\n display: block;\n font-family: inherit;\n font-size: 14px;\n font-weight: 400;\n line-height: 20px;\n letter-spacing: 0px;\n text-align: left;\n cursor: pointer;\n\n .token-label {\n display: flex;\n flex-direction: column;\n font-weight: 400;\n\n .token {\n color: var(--nylas-abse-900);\n font-size: 16px;\n line-height: 24px;\n }\n\n .description {\n color: var(--nylas-base-600);\n font-size: 14px;\n line-height: 21px;\n }\n }\n\n &:hover,\n &:focus,\n &:active,\n &.active {\n background-color: var(--nylas-base-100);\n\n .token-label {\n .token {\n color: var(--nylas-primary);\n }\n }\n }\n }\n }\n\n .selected {\n background-color: var(--nylas-base-100);\n }\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { debug, getBrowser, isNonPrintableKey, sanitize } from '@/utils/utils';\nimport { AttachInternals, Component, Host, State, h, Element, Prop, Watch, Event, EventEmitter, Listen } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\nimport { EVENT_TITLE_TOKENS as eventTitleTokens } from '@/common/constants';\nimport { Configuration } from '@nylas/core';\nimport i18next from '@/utils/i18n';\nimport { LANGUAGE_CODE } from '@/common/constants';\nimport { ThemeConfig } from '@nylas/core';\n\ninterface CustomShadowRoot extends ShadowRoot {\n getSelection: () => Selection | null;\n}\n\ntype Token = {\n token: string;\n value: string;\n description: string;\n};\n\n/**\n * The `nylas-event-title` component is a form input for the title of an event.\n * @part net - The event title container\n * @part net__title - The event title input\n * @part net__dropdown-content - The token options container\n */\n@Component({\n tag: 'nylas-event-title',\n styleUrl: 'nylas-event-title.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasEventTitle {\n @Element() host!: HTMLElement;\n @AttachInternals() internals!: ElementInternals;\n\n // Properties\n /**\n * @standalone\n * The selected config\n */\n @Prop() selectedConfiguration?: Configuration;\n /**\n * @standalone\n * The title of the event from the cofiguration.\n */\n @Prop() eventTitle?: string = this.selectedConfiguration?.event_booking?.title;\n /**\n * @standalone\n * The name attribute of this component.\n */\n @Prop() name: string = 'title';\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: LANGUAGE_CODE;\n\n /**\n * Whether to show the tokens dropdown.\n */\n @Prop() noTemplates: boolean = false;\n /**\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: ThemeConfig;\n\n // State variables\n /**\n * Whether to show the tokens dropdown.\n */\n @State() showTokens: boolean = false;\n /**\n * The available token options for the dropdown.\n */\n @State() availableTokens: { label: string; value: string; labelHTML: Token }[] = eventTitleTokens.map(token => ({\n label: token.token,\n value: token.value,\n labelHTML: token,\n }));\n /**\n * The filtered token options for the dropdown based on the current query.\n */\n @State() filteredTokens: { label: string; value: string; labelHTML: Token }[] = this.availableTokens;\n /**\n * The aria-activedescendant attribute value. This is used to indicate the\n * currently active descendant in the tokens dropdown.\n */\n @State() ariaActivedescendant: string = '';\n /**\n * Stores the reference to the current word being typed.\n * This is used to update the event title with the selected token tag when\n * an option is selected from the dropdown by clicking on it.\n */\n @State() currentWord: {\n $value: string;\n fullText: string;\n index: number;\n focusOffset: number;\n } = { $value: '', fullText: '', index: -1, focusOffset: -1 };\n\n @State() validationError: string = '';\n @State() configEventTitle: string = '';\n\n @State() additionalFieldTokens: Token[] = [];\n // Reference to the title div element\n private titleRef!: HTMLDivElement;\n\n /**\n * When a name prop is passed, stencil does not automatically set the name attribute on the host element.\n * Since this component is form-associated, the name attribute is required for form submission.\n * This is a workaround to ensure that the name attribute is set on the host element.\n */\n @Watch('name')\n elementNameChangedHandler(newValue: string) {\n debug('[nylas-event-title]', 'elementNameChangedHandler', newValue);\n this.host.setAttribute('name', newValue);\n }\n\n @Watch('ariaActivedescendant')\n ariaActivedescendantChangedHandler(newValue: string) {\n debug('[nylas-event-title]', 'ariaActivedescendantChangedHandler', newValue);\n if (newValue !== '') {\n const activeOption = this.host.shadowRoot?.getElementById(newValue);\n activeOption?.classList.add('active');\n } else {\n const options = this.host.shadowRoot?.querySelectorAll('.token-options li.active');\n options?.forEach(option => option.classList.remove('active'));\n }\n }\n\n @Watch('selectedConfiguration')\n configChangedHandler(newVal: Configuration) {\n const title = newVal?.event_booking?.title;\n const additionalFields = newVal?.scheduler?.additional_fields || {};\n const newKeys = Object.keys(additionalFields) || [];\n const newTokens = newKeys.map(key => {\n return {\n token: `$${key}`,\n value: `\\${${key}}`,\n description: additionalFields[key].label || '',\n };\n });\n this.additionalFieldTokens = [...newTokens];\n this.availableTokens = [...eventTitleTokens, ...newTokens].map(token => ({\n label: token.token,\n value: token.value,\n labelHTML: token,\n }));\n this.filteredTokens = [...this.availableTokens];\n if (title) {\n this.configEventTitle = title;\n this.updateEventTitleFromProp(title);\n }\n }\n\n @Watch('selectedLanguage')\n selectedLanguageChangedHandler(newVal: LANGUAGE_CODE, oldVal: LANGUAGE_CODE) {\n if (newVal === oldVal) return;\n i18next.changeLanguage(newVal);\n const titleTokens = {\n $invitee: 'invitee',\n $invitee_email: 'inviteeEmail',\n $duration: 'duration',\n };\n this.availableTokens = this.availableTokens.map(token => {\n if (titleTokens[token.label]) {\n token.labelHTML.description = i18next.t(`nylasEventTitle.eventTitleTokenDescription.${titleTokens[token.label]}`);\n }\n return token;\n });\n this.filteredTokens = [...this.availableTokens];\n }\n\n @Watch('themeConfig')\n themeConfigChangedHandler(newVal: ThemeConfig, oldVal: ThemeConfig) {\n if (newVal === oldVal) return;\n this.applyThemeConfig(newVal);\n }\n\n applyThemeConfig(themeConfig?: ThemeConfig) {\n if (themeConfig) {\n for (const [key, value] of Object.entries(themeConfig)) {\n this.host.style.setProperty(`${key}`, value);\n }\n }\n }\n\n // Events\n /**\n * This event is fired when the value of the event title changes.\n */\n @Event() valueChanged!: EventEmitter<{\n value: string;\n name: string;\n }>;\n\n // Lifecycle methods\n connectedCallback() {\n debug('[nylas-event-title]', 'connectedCallback');\n // Use queueMicrotask to defer theme application until after React has set props.\n // This fixes the timing issue where connectedCallback fires before React sets themeConfig.\n queueMicrotask(() => {\n if (this.themeConfig) {\n this.applyThemeConfig(this.themeConfig);\n this.host.setAttribute('data-themed', '');\n }\n });\n }\n\n componentWillLoad() {\n debug('[nylas-event-title]', 'componentWillLoad');\n this.host.setAttribute('name', this.name);\n // Theme already applied in connectedCallback via queueMicrotask\n }\n\n componentDidLoad() {\n debug('[nylas-event-title]', 'componentDidLoad');\n let title = this.eventTitle || this.configEventTitle;\n if (this.selectedConfiguration?.event_booking?.title) {\n title = this.selectedConfiguration?.event_booking?.title;\n }\n if (title) {\n this.updateEventTitleFromProp(title);\n this.updateEventTitle(title, true);\n }\n }\n\n disconnectedCallback() {\n debug('[nylas-event-title]', 'disconnectedCallback');\n }\n\n @Listen('formSubmitted', { target: 'window' })\n formSubmittedHandler(event: CustomEvent) {\n debug('[nylas-event-title]', 'formSubmittedHandler', event);\n if (!this.internals?.validity?.valid) {\n this.validationError = 'eventTitleRequired';\n } else {\n this.validationError = '';\n }\n }\n\n @Listen('valueChanged', { target: 'document' })\n valueChangedHandler(event: CustomEvent<{ value: string; name: string }>) {\n const { name, value } = event.detail;\n if (name === 'additional-fields') {\n const additionalFields = JSON.parse(value.toString());\n const newKeys = Object.keys(additionalFields) || [];\n const newTokens = newKeys.map(key => {\n return {\n token: `$${key}`,\n value: `\\${${key}}`,\n description: additionalFields[key].label || '',\n };\n });\n this.additionalFieldTokens = [...newTokens];\n this.availableTokens = [...eventTitleTokens, ...newTokens].map(token => ({\n label: token.token,\n value: token.value,\n labelHTML: token,\n }));\n this.filteredTokens = [...this.availableTokens];\n }\n }\n\n updateEventTitleFromProp(newValue: string) {\n debug('[nylas-event-title]', 'eventTitleChangedHandler', newValue);\n const title = newValue || this.configEventTitle;\n if (this.titleRef) {\n this.titleRef.innerHTML = this.highlightTokens(title);\n if (typeof this.internals.setValidity === 'function') {\n if (!title || title === '') {\n this.titleRef.focus();\n this.internals?.setValidity({ customError: true }, `Event title is required`, this.titleRef);\n } else {\n this.internals?.setValidity({ customError: false });\n this.isInternalsAvailable && this.internals?.setFormValue(title, this.name);\n }\n }\n }\n }\n\n highlightTokens(title: string) {\n let outputHtml = title;\n [...eventTitleTokens, ...this.additionalFieldTokens].forEach(tokenObj => {\n const token = tokenObj.value;\n // Create a regular expression that matches the token as a whole word\n const regex = new RegExp(`(\\\\${token})(?!\\\\w)`, 'g');\n // Replace the token with a span element\n outputHtml = outputHtml?.replace(regex, '<span class=\"highlighted-tag\">$1</span>') || '';\n });\n return outputHtml;\n }\n\n getCurrentSelectionForBrowser() {\n const getSelectionTextData = (nodeValue, offset, node, allSelected) => {\n // Remove zero-width space characters from the text, because they are not visible and cause issues with the selection\n const text = nodeValue.replace(/[\\u200B-\\u200D\\uFEFF]/g, '');\n const dollarIndex = text.lastIndexOf('$');\n const lastWord = text.substring(dollarIndex).split(' ')[0];\n return {\n focusOffset: offset,\n dollarIndex,\n lastWord,\n currentText: text,\n node,\n allSelected,\n };\n };\n\n // Check if the selection has selected all the text in the node, we need this to handle the case where the user selects all the text and then types or deletes\n const isAllSelected = (selection: Selection) => selection.anchorOffset === 0 && selection.focusOffset === selection.focusNode?.nodeValue?.length;\n\n const currentBrowser = getBrowser();\n switch (currentBrowser) {\n case 'Chrome': {\n const shadowRootSelection = (this.host.shadowRoot as CustomShadowRoot)?.getSelection();\n const focusNode = shadowRootSelection?.focusNode;\n const focusNodeValue = focusNode?.nodeValue || '';\n const allSelected = shadowRootSelection && isAllSelected(shadowRootSelection);\n return getSelectionTextData(focusNodeValue, shadowRootSelection?.focusOffset || -1, focusNode, allSelected);\n }\n case 'Firefox': {\n const selection = document.getSelection();\n const anchorNodeValue = selection?.anchorNode?.nodeValue || '';\n const allSelectedFirefox = selection && isAllSelected(selection);\n return getSelectionTextData(anchorNodeValue, selection?.focusOffset || -1, selection?.anchorNode, allSelectedFirefox);\n }\n case 'Safari': {\n const windowSelection = window.getSelection();\n const anchorNode = (windowSelection as any)?.getComposedRanges(this.host.shadowRoot as CustomShadowRoot)[0];\n const currentText = anchorNode?.startContainer?.nodeValue || '';\n const allSelectedSafari = windowSelection && isAllSelected(windowSelection);\n return getSelectionTextData(currentText, anchorNode?.endOffset || -1, anchorNode?.startContainer, allSelectedSafari);\n }\n default: {\n debug('Browser not supported');\n return null;\n }\n }\n }\n\n handleChange(event: Event) {\n let textContent = (event.target as HTMLDivElement).textContent || '';\n textContent = sanitize(textContent);\n\n // All browsers handle Selection within Shadow DOM differently, so get the current selection based on the browser\n const currentSelection = this.getCurrentSelectionForBrowser();\n if (!currentSelection) {\n this.updateEventTitle(textContent);\n this.resetDropdown();\n return;\n }\n const { focusOffset, dollarIndex, lastWord, currentText } = currentSelection;\n\n if (dollarIndex === -1 || focusOffset < dollarIndex) {\n this.updateEventTitle(textContent);\n this.resetDropdown();\n return;\n }\n if (lastWord.startsWith('$')) {\n this.showTokens = true;\n // Update the current word being typed, we need this reference to update the event title with the selected token\n // because the user can select an option from the dropdown by clicking on it, which will not trigger the input event.\n this.currentWord = {\n $value: lastWord,\n fullText: currentText,\n index: dollarIndex,\n focusOffset,\n };\n this.populateSuggestionsDropdown(lastWord);\n } else {\n this.resetDropdown();\n }\n this.updateEventTitle(textContent);\n }\n\n handleInputKeyDown(event) {\n const selection = this.getCurrentSelectionForBrowser();\n\n // If no text is remaining in the title, reset the title to an empty string\n if (selection?.allSelected && !isNonPrintableKey(event)) {\n this.titleRef.innerHTML = '';\n }\n\n if (event.key === 'Enter') {\n event.preventDefault();\n const activeOption = this.host.shadowRoot?.getElementById(this.ariaActivedescendant);\n if (activeOption) {\n activeOption.click();\n this.ariaActivedescendant = '';\n }\n } else if (event.key === 'ArrowDown') {\n event.preventDefault();\n const activeOption = this.host.shadowRoot?.getElementById(this.ariaActivedescendant);\n if (activeOption) {\n const nextOption = activeOption.nextElementSibling;\n if (nextOption) {\n this.ariaActivedescendant = nextOption.id;\n } else {\n this.ariaActivedescendant = this.filteredTokens[0].label;\n }\n } else {\n this.ariaActivedescendant = this.filteredTokens[0].label;\n }\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n const activeOption = this.host.shadowRoot?.getElementById(this.ariaActivedescendant);\n if (activeOption) {\n const prevOption = activeOption.previousElementSibling;\n if (prevOption) {\n this.ariaActivedescendant = prevOption.id;\n } else {\n this.ariaActivedescendant = this.filteredTokens[this.filteredTokens.length - 1].label;\n }\n } else {\n this.ariaActivedescendant = this.filteredTokens[this.filteredTokens.length - 1].label;\n }\n } else if (event.key === 'Escape') {\n event.preventDefault();\n this.resetDropdown();\n } else if (event.key === 'Backspace' || event.key === 'Delete') {\n const parentNode = selection?.node?.parentNode;\n if (selection?.currentText.startsWith('${') && parentNode && parentNode.nodeName === 'SPAN') {\n event.preventDefault();\n parentNode.removeChild(selection.node);\n parentNode.remove();\n this.resetDropdown();\n this.updateEventTitle(this.titleRef?.textContent || '');\n }\n if (this.titleRef.textContent === '' || selection?.allSelected) {\n this.titleRef.innerHTML = '';\n this.updateEventTitle('');\n }\n }\n }\n\n selectOption(e: Event, option: { label: string; value: string; labelHTML: Token }) {\n e.preventDefault();\n const word = this.currentWord.fullText;\n const dollarWord = this.currentWord.$value;\n\n // Traverse the DOM to find the text node that contains the current word fullText\n let currentNode = this.titleRef.firstChild;\n let textNode: ChildNode | null = null;\n\n while (currentNode) {\n if (currentNode.nodeType === 3) {\n const currentNodeText = currentNode.textContent?.replace(/[\\u200B-\\u200D\\uFEFF]/g, '') || '';\n const wordText = word.replace(/[\\u200B-\\u200D\\uFEFF]/g, '');\n if (currentNodeText.includes(wordText)) {\n textNode = currentNode;\n break;\n }\n }\n currentNode = currentNode.nextSibling;\n }\n\n if (!textNode) {\n return;\n }\n // Split the text node into three parts: text before the token, the token, and text after the token\n const text = textNode.textContent || '';\n const index = text.indexOf(dollarWord);\n const textBefore = text.substring(0, index);\n const textAfter = text.substring(index + dollarWord.length);\n const newTextNode = document.createTextNode(textBefore);\n const newRange = document.createRange();\n\n // Create a new span element to replace the text node\n const tagSpan = document.createElement('span');\n tagSpan.classList.add('highlighted-tag');\n tagSpan.textContent = `${option.value}`;\n const newTextNodeAfter = document.createTextNode(textAfter);\n\n if (textAfter !== '') {\n // If there is text after the token, add it to the new span element\n textNode.replaceWith(newTextNode, tagSpan, newTextNodeAfter);\n newRange.setStart(newTextNodeAfter, 1);\n } else {\n // If there is no text after the token, add a zero-width space character (Without this, the cursor will not move outside the highlighted span element)\n const afterNode = document.createTextNode('\\u200B');\n textNode.replaceWith(newTextNode, tagSpan, afterNode);\n newRange.setStart(afterNode, 1);\n }\n\n // Hide the dropdown\n this.resetDropdown();\n this.titleRef.focus();\n\n // Set the focus to the new span element\n const sel = window.getSelection();\n newRange.collapse(true);\n sel?.removeAllRanges();\n sel?.addRange(newRange);\n\n // Update the event title with the selected token\n this.updateEventTitle(this.titleRef.textContent || '');\n }\n\n populateSuggestionsDropdown(query: string = '') {\n this.filteredTokens = this.availableTokens.filter(obj => {\n return obj.label.startsWith(query.toString()) || obj.value.startsWith(query.toString());\n });\n\n // Set the first option as the active descendant\n if (this.filteredTokens.length > 0) {\n this.ariaActivedescendant = this.filteredTokens[0].label;\n }\n }\n\n get isInternalsAvailable() {\n return typeof this.internals !== 'undefined' && typeof this.internals.setValidity === 'function' && typeof this.internals.setFormValue === 'function';\n }\n\n updateEventTitle(text: string, noValue: boolean = false) {\n const value = text.replace(/ +/g, ' ');\n if (value === '' || /^[\\s]*$/.test(value)) {\n this.validationError = 'eventTitleRequired';\n this.isInternalsAvailable && this.internals?.setValidity({ customError: true }, `Event title is required`, this.titleRef);\n } else {\n this.validationError = '';\n this.isInternalsAvailable && this.internals?.setValidity({ customError: false });\n }\n\n this.isInternalsAvailable && this.internals?.setFormValue(value, this.name);\n if (!noValue) {\n this.valueChanged.emit({ value: value, name: this.name });\n }\n }\n\n resetDropdown() {\n this.showTokens = false;\n this.ariaActivedescendant = '';\n }\n\n getLabelHTML(token: { token: string; description: string }) {\n return (\n <div class=\"token-label\">\n <span class=\"token\">{token.token}</span>\n <span class=\"description\">{token.description}</span>\n </div>\n );\n }\n\n @RegisterComponent<NylasEventTitle, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-event-title',\n stateToProps: new Map([\n ['schedulerConfig.selectedConfiguration', 'selectedConfiguration'],\n ['schedulerConfig.selectedLanguage', 'selectedLanguage'],\n ['schedulerConfig.themeConfig', 'themeConfig'],\n ]),\n eventToProps: {},\n fireRegisterEvent: true,\n })\n render() {\n return (\n <Host>\n <div class=\"nylas-event-title\" part=\"net\">\n <label htmlFor=\"title\">\n <p>\n {i18next.t('nylasEventTitle.headerTitle')}\n <span class=\"required\">*</span>\n </p>\n </label>\n <div\n class={{\n title: true,\n error: this.validationError !== '',\n }}\n part=\"net__title\"\n ref={el => (this.titleRef = el as HTMLDivElement)}\n contentEditable=\"true\"\n onInput={e => this.handleChange(e)}\n onKeyDown={event => this.handleInputKeyDown(event)}\n ></div>\n {!this.noTemplates && this.showTokens && this.filteredTokens?.length > 0 && (\n <div class=\"token-options\" part=\"net__dropdown-content\">\n <ul tabindex=\"-1\" role=\"listbox\" aria-label={this.name} aria-activedescendant={this.ariaActivedescendant}>\n {this.filteredTokens.map(option => (\n <li\n tabindex=\"0\"\n key={option.label}\n id={option.label}\n class={{ active: this.ariaActivedescendant === option.label }}\n onClick={e => this.selectOption(e, option)}\n role=\"option\"\n >\n {this.getLabelHTML(option.labelHTML)}\n </li>\n ))}\n </ul>\n </div>\n )}\n {!this.noTemplates && (\n <span class=\"help-text\">\n {i18next.t('nylasEventTitle.helpText', { context: 'start', field: i18next.t('nylasEventTitle.title') })} <code>$</code>{' '}\n {i18next.t('nylasEventTitle.helpText', { context: 'end' })}\n <span class=\"label-icon\">\n <tooltip-component>\n <info-icon slot=\"tooltip-icon\" />\n <span slot=\"tooltip-content\">\n {i18next.t('nylasEventTitle.tooltip.desc')} <code>{'${invitee}'}</code>\n </span>\n </tooltip-component>\n </span>\n </span>\n )}\n {this.validationError != '' && <span class=\"error-message\">{i18next.t(`nylasEventTitle.${this.validationError}`)}</span>}\n </div>\n </Host>\n );\n }\n}\n","@use '../../../common/styles/variables' as *;\n\n:host {\n display: block;\n @include default-css-variables;\n}\n\n.card-wrapper {\n background: var(--nylas-base-0);\n display: flex;\n flex-direction: column;\n font-family: var(--nylas-font-family);\n background-color: var(--nylas-base-0);\n color: var(--nylas-base-900);\n border-radius: var(--nylas-border-radius-3x);\n position: relative;\n padding: 32px;\n width: 562px;\n box-shadow:\n 0px 1px 4px rgba(0, 0, 0, 0.1),\n 0px 3px 6px rgba(0, 0, 0, 0.06);\n\n @media #{$mobile} {\n width: 100%;\n border-radius: 0px;\n }\n}\n\n.header {\n overflow-wrap: anywhere;\n display: flex;\n flex-direction: column;\n font-size: 16px;\n font-weight: 400;\n\n h2 {\n color: var(--nylas-base-900);\n font-size: 24px;\n font-weight: 600;\n text-align: left;\n margin: 0;\n }\n}\n\n.description {\n &.title-desc {\n margin-bottom: 2rem;\n }\n\n &.footer-desc {\n margin-top: 2rem;\n\n a {\n color: var(--nylas-primary);\n text-decoration: none;\n }\n }\n\n p {\n margin: 0;\n font-size: 18px;\n color: var(--nylas-base-600);\n }\n}\n\n.footer {\n margin-top: 1rem;\n padding-top: 1rem;\n display: flex;\n justify-content: flex-end;\n gap: 0.5rem;\n box-sizing: border-box;\n background-color: var(--nylas-base-25);\n width: 100%;\n border-radius: 0 0 var(--nylas-border-radius-2x) var(--nylas-border-radius-2x);\n}\n\n.close-button {\n width: 100%;\n display: flex;\n justify-content: flex-end;\n\n button-component {\n button {\n padding: 0;\n height: auto;\n\n &:hover {\n background-color: transparent !important;\n }\n }\n }\n}\n\nbutton-component {\n --dot-color: var(--nylas-base-700);\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { Component, Element, EventEmitter, h, Host, Listen, Prop, State } from '@stencil/core';\nimport { NylasSchedulerConnector } from '../../..';\nimport { NylasScheduling } from '../nylas-scheduling/nylas-scheduling';\nimport { debug } from '@/utils/utils';\nimport { Event } from '@stencil/core';\nimport i18next from '@/utils/i18n';\nimport { ThemeConfig } from '@nylas/core';\n\n/**\n * The `nylas-feedback-form` component is a UI component that displays the booked event card.\n *\n * @part nfbf - The booked event card host.\n * @part nfbf__card - The booked event card.\n * @part nfbf__title - The title of the booked event card.\n * @part nfbf__description - The description of the booked event card.\n * @part nfbf__button-outline - The cancel & reschedule button CTA.\n * @part nfbf__cancel-cta - The cancel button CTA.\n * @part nfbf__reschedule-cta - The reschedule button CTA.\n */\n@Component({\n tag: 'nylas-feedback-form',\n styleUrl: 'nylas-feedback-form.scss',\n shadow: true,\n})\nexport class NylasFeedbackForm {\n /**\n * The host element.\n */\n @Element() host!: HTMLNylasFeedbackFormElement;\n /**\n * @standalone\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: any;\n\n /**\n * Feedback modal close event.\n */\n @Event() readonly feedbackModalClosed!: EventEmitter<void>;\n\n /**\n * Feedback submitted event.\n */\n @Event() readonly feedbackSubmitted!: EventEmitter<{ feedback: string }>;\n\n /**\n * This is an internal event that is used to trigger validation on the form.\n */\n @Event() readonly triggerValidation!: EventEmitter<void>;\n\n /**\n * The state to hold the feedback message.\n */\n @State() feedbackMessage: string = '';\n\n connectedCallback() {\n // Use queueMicrotask to defer theme application until after React has set props.\n // This fixes the timing issue where connectedCallback fires before React sets themeConfig.\n queueMicrotask(() => {\n if (this.themeConfig) {\n this.applyThemeConfig(this.themeConfig);\n this.host.setAttribute('data-themed', '');\n }\n });\n }\n\n disconnectedCallback() {}\n\n async componentWillLoad() {\n debug(`[nylas-feedback-form] Component will load`);\n }\n\n async componentDidLoad() {\n debug(`[nylas-feedback-form] Component did load`);\n }\n\n applyThemeConfig(themeConfig?: ThemeConfig) {\n if (themeConfig) {\n for (const [key, value] of Object.entries(themeConfig)) {\n this.host.style.setProperty(`${key}`, value);\n }\n }\n }\n\n @Listen('nylasFormInputChanged', { target: 'document' })\n handleFormInputChanged(event: CustomEvent<{ name: string; value: string }>) {\n debug(`[nylas-feedback-form] Form input changed`);\n if (!event.detail.value) {\n return;\n }\n this.triggerValidation.emit();\n if (event.detail.name === 'feedback') {\n this.feedbackMessage = event.detail.value;\n }\n }\n\n private handleConfirmBookingButtonClicked = () => {\n // TODO: Implement feedback submission\n const validationEvent = this.triggerValidation.emit();\n if (validationEvent.defaultPrevented) {\n return;\n }\n this.feedbackSubmitted.emit({ feedback: this.feedbackMessage });\n };\n\n private closeModal(e: Event) {\n e.preventDefault();\n e.stopImmediatePropagation();\n this.feedbackModalClosed.emit();\n }\n\n @RegisterComponent<NylasFeedbackForm, NylasSchedulerConnector, Exclude<NylasScheduling['stores'], undefined>>({\n name: 'nylas-feedback-form',\n stateToProps: new Map([]),\n eventToProps: {\n feedbackSubmitted: async (_event: CustomEvent<{ feedback: string }>, _nylasSchedulerConnector: NylasSchedulerConnector) => {\n // TODO: Implement feedback submission\n },\n },\n localPropsToProp: new Map([['themeConfig', 'themeConfig']]),\n fireRegisterEvent: true,\n })\n render() {\n return (\n <Host part=\"nfbf\">\n <div class=\"card-wrapper\" part=\"nfbfc__card\">\n <div class=\"close-button\">\n <button-component tooltip=\"Close\" id=\"close\" variant={'invisible'} onClick={e => this.closeModal(e)} part=\"nfbf__close-button\">\n <close-icon />\n </button-component>\n </div>\n <div class=\"header\">\n <h2 slot=\"card-title\" part=\"nfbf__title\">\n {i18next.t('feedbackFormTitle')}\n </h2>\n </div>\n <div class=\"description title-desc\">\n <p>{i18next.t('feedbackFormDescription')}</p>\n </div>\n <textarea-component\n label={i18next.t('feedbackMessageLabel')}\n required={true}\n maxLength={500}\n part=\"nfbf__description\"\n name=\"feedback\"\n placeholder={i18next.t('feedbackMessagePlaceholder')}\n />\n <div class={'description footer-desc'}>\n <p>\n By sending this report, you agree to Nylas’ access to the data necessary to respond to this issue, subject to Nylas’{' '}\n <a href=\"https://www.nylas.com/privacy-policy/\" target=\"_blank\" rel=\"nofollow noreferrer noopener\">\n Privacy Policy\n </a>\n .\n </p>\n </div>\n <div\n class={{\n footer: true,\n }}\n >\n <button-component variant={'invisible'} onClick={e => this.closeModal(e)} part=\"nfbf__button-outline nfbf__cancel-cta\">\n {`${i18next.t('feedbackModalCloseButton')}`}\n </button-component>\n <button-component variant={'primary'} onClick={this.handleConfirmBookingButtonClicked} part=\"nfbf__button-outline nfbf__reschedule-cta\">\n {`${i18next.t('feedbackModalSubmitButton')}`}\n </button-component>\n </div>\n </div>\n </Host>\n );\n }\n}\n","@use '../../../common/styles/variables' as *;\n\n:host {\n display: block;\n @include default-css-variables;\n}\n\n.nylas-reminder-time {\n display: flex;\n flex-direction: column;\n gap: 4px;\n\n label {\n display: flex;\n align-items: center;\n color: var(--nylas-base-800);\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n line-height: 150%;\n\n /* 21px */\n span.required {\n color: var(--nylas-error, #cc4841);\n }\n\n span.label-icon {\n margin-left: 4px;\n\n tooltip-component {\n display: flex;\n }\n }\n }\n}\n\n.nylas-reminder-time__wrapper {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 0.5rem;\n\n input {\n padding: 12px 16px;\n border-width: 1;\n border-radius: 8px;\n border: 1px solid var(--nylas-base-200);\n font-family: var(--nylas-font-family);\n font-size: 16px;\n line-height: 24px;\n width: 48px;\n }\n\n input-dropdown {\n width: 80px;\n }\n\n input-dropdown::part(id_dropdown-input) {\n border: 1px solid var(--nylas-base-200);\n border-radius: var(--nylas-border-radius-2x);\n padding: 14px 16px;\n }\n\n input-dropdown::part(id_dropdown-content) {\n width: 100%;\n min-width: unset;\n height: 160px;\n }\n\n select-dropdown {\n width: 120px;\n\n @media #{$mobile} {\n width: 100%;\n }\n }\n\n select-dropdown::part(sd_dropdown-button) {\n border: 1px solid var(--nylas-base-200);\n }\n}\n","import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { debug } from '@/utils/utils';\nimport { AttachInternals, Component, Host, Listen, State, h, Element, Prop, Watch, Event, EventEmitter } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\nimport i18next from '@/utils/i18n';\nimport { LANGUAGE_CODE } from '@/common/constants';\nimport { ThemeConfig } from '@nylas/core';\n/**\n * The `nylas-reminder-time` component is a form input for the reminder time before an event.\n *\n * @part nrt - The event reminder container\n * @part nrt__number-dropdown - The number dropdown container\n * @part nrt__number-dropdown-button - The number dropdown button\n * @part nrt__number-dropdown-content - The number dropdown content\n * @part nrt__period-dropdown - The period dropdown container\n * @part nrt__period-dropdown-button - The period dropdown button\n * @part nrt__period-dropdown-content - The period dropdown content\n * @part nrt__time-period-selector - The time period selector\n */\n@Component({\n tag: 'nylas-reminder-time',\n styleUrl: 'nylas-reminder-time.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasReminderTime {\n /**\n * The host element <nylas-reminder-time>\n */\n @Element() host!: HTMLElement;\n /**\n * The name of the reminder time. Default is 'reminder time'.\n */\n @Prop() name: string = 'reminder-time';\n /**\n * The event reminder time in minutes as set in the configuration.\n */\n @Prop() eventReminderTimeMinutes?: number;\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: LANGUAGE_CODE;\n /**\n * The theme configuration.\n */\n @Prop({ attribute: 'theme-config' }) readonly themeConfig?: ThemeConfig;\n /**\n * The selected number for the reminder time.\n */\n @State() selectedNumber;\n\n /**\n * The selected period for the reminder time.\n */\n @State() selectedPeriod;\n\n /**\n * The error state to show the error message when the minutes selected is invalid (not divisible by 5).\n */\n @State() errorState: boolean = false;\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-reminder-time', 'elementNameChangedHandler', newValue);\n this.host.setAttribute('name', newValue);\n }\n\n @Watch('eventReminderTimeMinutes')\n eventReminderTimeMinutesChangedHandler(newValue: number, _oldValue: number) {\n debug('nylas-reminder-time', 'eventReminderTimeMinutesChangedHandler', newValue);\n this.updateNumberAndPeriodFromMinutes(newValue);\n this.isInternalsAvailable && this.internals.setFormValue(newValue?.toString(), this.name);\n }\n\n @Watch('selectedLanguage')\n selectedLanguageChangedHandler(newVal: LANGUAGE_CODE, oldVal: LANGUAGE_CODE) {\n if (newVal === oldVal) return;\n i18next.changeLanguage(newVal);\n }\n\n @Watch('themeConfig')\n themeConfigChangedHandler(newVal: ThemeConfig, oldVal: ThemeConfig) {\n if (newVal === oldVal) return;\n this.applyThemeConfig(newVal);\n }\n\n /**\n * Event emitted when the event reminder time changes.\n */\n @Event() valueChanged!: EventEmitter<{\n value: string;\n name: string;\n }>;\n\n connectedCallback() {\n debug('nylas-reminder-time', 'connectedCallback');\n // Use queueMicrotask to defer theme application until after React has set props.\n // This fixes the timing issue where connectedCallback fires before React sets themeConfig.\n queueMicrotask(() => {\n if (this.themeConfig) {\n this.applyThemeConfig(this.themeConfig);\n this.host.setAttribute('data-themed', '');\n }\n });\n }\n\n componentWillLoad() {\n debug('nylas-reminder-time', 'componentWillLoad');\n this.host.setAttribute('name', this.name);\n }\n\n componentDidLoad() {\n debug('nylas-reminder-time', 'componentDidLoad');\n this.updateNumberAndPeriodFromMinutes(this.eventReminderTimeMinutes || 30);\n }\n\n disconnectedCallback() {\n debug('nylas-reminder-time', 'disconnectedCallback');\n }\n\n applyThemeConfig(themeConfig?: ThemeConfig) {\n if (themeConfig) {\n for (const [key, value] of Object.entries(themeConfig)) {\n this.host.style.setProperty(`${key}`, value);\n }\n }\n }\n\n @Listen('nylasSuggestReminderMinutes', { target: 'document' })\n nylasSuggestReminderMinutesHandler(event: CustomEvent<{ minutes: number }>) {\n const { minutes } = event.detail;\n this.errorState = false;\n this.valueChanged.emit({ value: minutes.toString(), name: this.name });\n this.isInternalsAvailable && this.internals.setFormValue(minutes.toString(), this.name);\n // Workaround: Force the time-period-selector to the next rounded multiple of 5\n // instead of the current rounded multiple. This handles cases where the user re-enters\n // the same number, ensuring the selector correctly updates to the intended rounded value.\n this.updateNumberAndPeriodFromMinutes(minutes + 7);\n setTimeout(() => {\n this.updateNumberAndPeriodFromMinutes(minutes);\n }, 10);\n }\n\n @Listen('timePeriodChanged')\n timePeriodChangedHandler(\n event: CustomEvent<{\n number: number;\n period: string;\n }>,\n ) {\n const { number, period } = event.detail;\n let totalMinutes;\n const minutesInHour = 60;\n const minutesInDay = minutesInHour * 24;\n const minutesInWeek = minutesInDay * 7;\n const minutesInMonth = minutesInDay * 30; // Assuming 30 days in a month for simplification\n\n if (period === 'minute') {\n totalMinutes = number;\n } else if (period === 'hour') {\n totalMinutes = number * minutesInHour;\n } else if (period === 'day') {\n totalMinutes = number * minutesInDay;\n } else if (period === 'week') {\n totalMinutes = number * minutesInWeek;\n } else if (period === 'month') {\n totalMinutes = number * minutesInMonth;\n } else {\n totalMinutes = 0;\n }\n this.errorState = totalMinutes % 5 !== 0;\n this.valueChanged.emit({ value: totalMinutes, name: this.name });\n this.isInternalsAvailable && this.internals.setFormValue(totalMinutes.toString(), this.name);\n }\n\n private updateNumberAndPeriodFromMinutes(minutes: number): void {\n const minutesInHour = 60;\n const minutesInDay = minutesInHour * 24;\n const minutesInWeek = minutesInDay * 7;\n const minutesInMonth = minutesInDay * 30; // Assuming 30 days in a month for simplification\n let number, period;\n\n if (minutes === 0) {\n number = 0;\n period = 'minute';\n } else if (minutes >= minutesInMonth && minutes % minutesInMonth === 0) {\n number = Math.floor(minutes / minutesInMonth);\n period = 'month';\n } else if (minutes >= minutesInWeek && minutes % minutesInWeek === 0) {\n number = Math.floor(minutes / minutesInWeek);\n period = 'week';\n } else if (minutes >= minutesInDay && minutes % minutesInDay === 0) {\n number = Math.floor(minutes / minutesInDay);\n period = 'day';\n } else if (minutes >= minutesInHour && minutes % minutesInHour === 0) {\n number = Math.floor(minutes / minutesInHour);\n period = 'hour';\n } else {\n number = minutes;\n period = 'minute';\n }\n\n this.selectedNumber = number;\n this.selectedPeriod = period;\n }\n\n /**\n * The unit tests in stencil does not support the internals API.\n * This method checks if the internals API is available.\n * @returns boolean\n */\n get isInternalsAvailable() {\n return this.internals !== undefined && typeof this.internals.setFormValue === 'function' && typeof this.internals.setValidity === 'function';\n }\n\n @RegisterComponent<NylasReminderTime, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-reminder-time',\n stateToProps: new Map([\n ['schedulerConfig.selectedLanguage', 'selectedLanguage'],\n ['schedulerConfig.themeConfig', 'themeConfig'],\n ]),\n eventToProps: {},\n fireRegisterEvent: true,\n })\n render() {\n const showTimePeriodSelector = typeof this.selectedNumber == 'number' && typeof this.selectedPeriod == 'string';\n return (\n <Host>\n <div class=\"nylas-reminder-time\" part=\"nrt\">\n <div class=\"nylas-reminder-time__wrapper\">\n {showTimePeriodSelector && (\n <time-period-selector\n id=\"limit-future-bookings\"\n part=\"nrt__time-period-selector\"\n hasError={this.errorState}\n timePeriods={[\n { value: 'minute', label: i18next.t('timeDuration', { context: 'minute' }) },\n { value: 'hour', label: i18next.t('timeDuration', { context: 'hour' }) },\n { value: 'day', label: i18next.t('timePeriod', { context: 'day' }) },\n ]}\n exportparts=\"tps__number-dropdown: nrt__number-dropdown, tps__number-dropdown-button: nrt__number-dropdown-button, tps__number-dropdown-content: nrt__number-dropdown-content, tps__period-dropdown: nrt__period-dropdown, tps__period-dropdown-button: nrt__period-dropdown-button, tps__period-dropdown-content: nrt__period-dropdown-content\"\n defaultSelectedNumber={this.selectedNumber}\n defaultSelectedPeriod={this.selectedPeriod}\n themeConfig={this.themeConfig}\n />\n )}\n </div>\n </div>\n </Host>\n );\n }\n}\n",":host {\n display: flex;\n}\n","import { Component, Prop, h } from '@stencil/core';\n\n@Component({\n tag: 'trash-icon',\n styleUrl: 'icon.css',\n scoped: true,\n})\nexport class TrashIcon {\n @Prop() width: string = '20';\n @Prop() height: string = '21';\n\n render() {\n // Trash icon svg\n return (\n <svg width={this.width} height={this.height} viewBox=\"0 0 20 21\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M10 0.25C11.733 0.25 13.1492 1.60645 13.2449 3.31558L13.25 3.5H18.5C18.9142 3.5 19.25 3.83579 19.25 4.25C19.25 4.6297 18.9678 4.94349 18.6018 4.99315L18.5 5H17.704L16.4239 18.0192C16.2912 19.3683 15.1984 20.41 13.8626 20.4945L13.6871 20.5H6.31293C4.95734 20.5 3.81365 19.5145 3.59883 18.1934L3.57614 18.0192L2.295 5H1.5C1.1203 5 0.806509 4.71785 0.756847 4.35177L0.75 4.25C0.75 3.8703 1.03215 3.55651 1.39823 3.50685L1.5 3.5H6.75C6.75 1.70507 8.20507 0.25 10 0.25ZM16.197 5H3.802L5.06893 17.8724C5.12768 18.4696 5.60033 18.9343 6.18585 18.9936L6.31293 19H13.6871C14.2872 19 14.7959 18.5751 14.9123 17.9982L14.9311 17.8724L16.197 5ZM11.75 7.75C12.1297 7.75 12.4435 8.03215 12.4932 8.39823L12.5 8.5V15.5C12.5 15.9142 12.1642 16.25 11.75 16.25C11.3703 16.25 11.0565 15.9678 11.0068 15.6018L11 15.5V8.5C11 8.08579 11.3358 7.75 11.75 7.75ZM8.25 7.75C8.6297 7.75 8.94349 8.03215 8.99315 8.39823L9 8.5V15.5C9 15.9142 8.66421 16.25 8.25 16.25C7.8703 16.25 7.55651 15.9678 7.50685 15.6018L7.5 15.5V8.5C7.5 8.08579 7.83579 7.75 8.25 7.75ZM10 1.75C9.08183 1.75 8.32881 2.45711 8.2558 3.35647L8.25 3.5H11.75C11.75 2.5335 10.9665 1.75 10 1.75Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{r as t,h as e}from"./p-0EQQA0nE.js";const s=".sc-sent-icon-h{display:flex}";const d=class{constructor(e){t(this,e);this.width="15";this.height="15"}render(){return e("svg",{key:"ebaec44a931e83ec70d5912322a7dd9b7e6af056",width:this.width,height:this.height,viewBox:"0 0 24 24",fill:"auto",xmlns:"http://www.w3.org/2000/svg"},e("path",{key:"5dd0893c37ff3b25a856942f52e693d57848d0f4",d:"M21.5 12L3.5 3.5L3.5 20.5L21.5 12Z",stroke:"auto","stroke-width":"1.5"}),e("path",{key:"3e85934c11baa1c7b1605dd67e70dd6d1e3139e1",d:"M3.5 3.5L12 10.5",stroke:"auto","stroke-width":"1.5"}),e("path",{key:"7605516ac9141f7237c306f96466182307ebaed7",d:"M3.5 20.5L12 13.5",stroke:"auto","stroke-width":"1.5"}))}};d.style=s;export{d as sent_icon};
2
- //# sourceMappingURL=p-531412c9.entry.js.map
@@ -1,2 +0,0 @@
1
- import{r as e,h as s}from"./p-0EQQA0nE.js";const t=".sc-reply-icon-h{display:flex}";const i=class{constructor(s){e(this,s);this.width="15";this.height="15"}render(){return s("svg",{key:"d5d5dfb5b20d19aef8bf2942437a07ca52918f3c",fill:"auto",width:this.width,height:this.height,viewBox:"0 0 1920 1920",xmlns:"http://www.w3.org/2000/svg"},s("path",{key:"524b3834d6daf34149b402e908826eb8b84e3c89",d:"M835.942 632.563H244.966l478.08-478.08-90.496-90.496L-.026 696.563 632.55 1329.14l90.496-90.496-478.08-478.08h590.976c504.448 0 914.816 410.368 914.816 914.816v109.184h128V1675.38c0-574.976-467.84-1042.816-1042.816-1042.816","fill-rule":"evenodd"}))}};i.style=t;export{i as reply_icon};
2
- //# sourceMappingURL=p-616b6000.entry.js.map