@nylas/web-elements 0.0.0-test-20250320185733 → 0.0.0-test-20250320205845

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 (95) hide show
  1. package/dist/cdn/nylas-scheduler-editor/nylas-scheduler-editor.es.js +7 -7
  2. package/dist/cdn/nylas-scheduling/nylas-scheduling.es.js +4792 -4796
  3. package/dist/cjs/calendar-agenda-fill-icon_36.cjs.entry.js +17 -13
  4. package/dist/cjs/calendar-agenda-fill-icon_36.cjs.entry.js.map +1 -1
  5. package/dist/cjs/index.es-4f95065f.js.map +1 -1
  6. package/dist/cjs/loader.cjs.js +1 -1
  7. package/dist/cjs/nylas-booked-event-card_12.cjs.entry.js +3 -3
  8. package/dist/cjs/nylas-booked-event-card_12.cjs.entry.js.map +1 -1
  9. package/dist/cjs/nylas-provider.cjs.entry.js +2 -2
  10. package/dist/cjs/nylas-provider.cjs.entry.js.map +1 -1
  11. package/dist/cjs/nylas-scheduler-editor.cjs.entry.js.map +1 -1
  12. package/dist/cjs/nylas-scheduling.cjs.entry.js +1 -1
  13. package/dist/cjs/nylas-scheduling.cjs.entry.js.map +1 -1
  14. package/dist/cjs/nylas-web-elements.cjs.js +1 -1
  15. package/dist/cjs/scheduler-config-store-cf66a841.js.map +1 -1
  16. package/dist/cjs/{scheduler-store-df3a9a3a.js → scheduler-store-461fd2ff.js} +1 -11
  17. package/dist/cjs/{scheduler-store-df3a9a3a.js.map → scheduler-store-461fd2ff.js.map} +1 -1
  18. package/dist/collection/common/abstract-provider.js.map +1 -1
  19. package/dist/collection/components/nylas-provider/nylas-provider.js +7 -2
  20. package/dist/collection/components/nylas-provider/nylas-provider.js.map +1 -1
  21. package/dist/collection/components/scheduler/nylas-booked-event-card/nylas-booked-event-card.js +8 -10
  22. package/dist/collection/components/scheduler/nylas-booked-event-card/nylas-booked-event-card.js.map +1 -1
  23. package/dist/collection/components/scheduler/nylas-scheduling/nylas-scheduling.js +3 -3
  24. package/dist/collection/components/scheduler/nylas-scheduling/nylas-scheduling.js.map +1 -1
  25. package/dist/collection/components/scheduler-editor/nylas-booking-form-config/nylas-booking-form-config.js +20 -15
  26. package/dist/collection/components/scheduler-editor/nylas-booking-form-config/nylas-booking-form-config.js.map +1 -1
  27. package/dist/collection/connector/nylas-connector/index.js.map +1 -1
  28. package/dist/collection/connector/nylas-scheduler-config-connector/index.js.map +1 -1
  29. package/dist/collection/connector/nylas-scheduler-connector/errors/index.js.map +1 -1
  30. package/dist/collection/connector/shared/api/scheduler.js.map +1 -1
  31. package/dist/collection/stores/scheduler-config-store.js.map +1 -1
  32. package/dist/collection/stores/scheduler-store.js.map +1 -1
  33. package/dist/collection/types/index.js +0 -10
  34. package/dist/collection/types/index.js.map +1 -1
  35. package/dist/components/index.es.js.map +1 -1
  36. package/dist/components/nylas-booked-event-card2.js +4 -4
  37. package/dist/components/nylas-booked-event-card2.js.map +1 -1
  38. package/dist/components/nylas-booking-form-config2.js +17 -13
  39. package/dist/components/nylas-booking-form-config2.js.map +1 -1
  40. package/dist/components/nylas-provider.js +1 -1
  41. package/dist/components/nylas-provider.js.map +1 -1
  42. package/dist/components/nylas-scheduler-editor.js.map +1 -1
  43. package/dist/components/nylas-scheduling.js.map +1 -1
  44. package/dist/components/scheduler-config-store.js.map +1 -1
  45. package/dist/components/scheduler-store.js +0 -10
  46. package/dist/components/scheduler-store.js.map +1 -1
  47. package/dist/esm/calendar-agenda-fill-icon_36.entry.js +17 -13
  48. package/dist/esm/calendar-agenda-fill-icon_36.entry.js.map +1 -1
  49. package/dist/esm/index.es-f8ebfa98.js.map +1 -1
  50. package/dist/esm/loader.js +1 -1
  51. package/dist/esm/nylas-booked-event-card_12.entry.js +3 -3
  52. package/dist/esm/nylas-booked-event-card_12.entry.js.map +1 -1
  53. package/dist/esm/nylas-provider.entry.js +2 -2
  54. package/dist/esm/nylas-provider.entry.js.map +1 -1
  55. package/dist/esm/nylas-scheduler-editor.entry.js.map +1 -1
  56. package/dist/esm/nylas-scheduling.entry.js +1 -1
  57. package/dist/esm/nylas-scheduling.entry.js.map +1 -1
  58. package/dist/esm/nylas-web-elements.js +1 -1
  59. package/dist/esm/scheduler-config-store-d6729d8d.js.map +1 -1
  60. package/dist/esm/{scheduler-store-ef022be9.js → scheduler-store-755ced0b.js} +1 -11
  61. package/dist/esm/{scheduler-store-ef022be9.js.map → scheduler-store-755ced0b.js.map} +1 -1
  62. package/dist/nylas-web-elements/nylas-web-elements.esm.js +1 -1
  63. package/dist/nylas-web-elements/nylas-web-elements.esm.js.map +1 -1
  64. package/dist/nylas-web-elements/p-14894041.js.map +1 -1
  65. package/dist/nylas-web-elements/{p-a906d005.entry.js → p-4b48f29a.entry.js} +2 -2
  66. package/dist/nylas-web-elements/p-4b48f29a.entry.js.map +1 -0
  67. package/dist/nylas-web-elements/p-68608216.entry.js.map +1 -1
  68. package/dist/nylas-web-elements/{p-1fb32e0e.entry.js → p-b9727e42.entry.js} +2 -2
  69. package/dist/nylas-web-elements/{p-1fb32e0e.entry.js.map → p-b9727e42.entry.js.map} +1 -1
  70. package/dist/nylas-web-elements/p-c372bced.js.map +1 -1
  71. package/dist/nylas-web-elements/p-d36ad6ef.js +2 -0
  72. package/dist/nylas-web-elements/p-d36ad6ef.js.map +1 -0
  73. package/dist/nylas-web-elements/{p-13a6c977.entry.js → p-e4272174.entry.js} +2 -2
  74. package/dist/nylas-web-elements/p-e4272174.entry.js.map +1 -0
  75. package/dist/nylas-web-elements/p-f12cd991.entry.js +8 -0
  76. package/dist/nylas-web-elements/p-f12cd991.entry.js.map +1 -0
  77. package/dist/types/common/abstract-provider.d.ts +1 -1
  78. package/dist/types/components/nylas-provider/nylas-provider.d.ts +1 -1
  79. package/dist/types/components/scheduler/nylas-booked-event-card/nylas-booked-event-card.d.ts +1 -1
  80. package/dist/types/components/scheduler/nylas-scheduling/nylas-scheduling.d.ts +2 -1
  81. package/dist/types/components/scheduler-editor/nylas-booking-form-config/nylas-booking-form-config.d.ts +4 -12
  82. package/dist/types/components.d.ts +10 -10
  83. package/dist/types/connector/nylas-connector/index.d.ts +6 -6
  84. package/dist/types/connector/nylas-scheduler-config-connector/index.d.ts +2 -2
  85. package/dist/types/connector/nylas-scheduler-connector/errors/index.d.ts +2 -1
  86. package/dist/types/stores/scheduler-config-store.d.ts +1 -1
  87. package/dist/types/stores/scheduler-store.d.ts +2 -2
  88. package/dist/types/types/index.d.ts +0 -9
  89. package/package.json +2 -2
  90. package/dist/nylas-web-elements/p-13a6c977.entry.js.map +0 -1
  91. package/dist/nylas-web-elements/p-731a856b.js +0 -2
  92. package/dist/nylas-web-elements/p-731a856b.js.map +0 -1
  93. package/dist/nylas-web-elements/p-7b787c73.entry.js +0 -8
  94. package/dist/nylas-web-elements/p-7b787c73.entry.js.map +0 -1
  95. package/dist/nylas-web-elements/p-a906d005.entry.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"nylas-booking-form-config.js","sourceRoot":"","sources":["../../../../src/components/scheduler-editor/nylas-booking-form-config/nylas-booking-form-config.tsx"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAgB,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAE9H,OAAO,EAAE,wBAAwB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE3E,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAoCnD,MAAM,OAAO,sBAAsB;;QACzB,iBAAY,GAAG;YACrB;gBACE,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,WAAW;gBAClB,GAAG,EAAE,WAAW;gBAChB,SAAS,EAAE,YAAY;gBACvB,QAAQ,EAAE,IAAI;gBACd,QAAQ,EAAE,IAAI;gBACd,MAAM,EAAE,KAAK;gBACb,aAAa,EAAE,WAAW;gBAC1B,KAAK,EAAE,CAAC;aACT;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,YAAY;gBACnB,GAAG,EAAE,YAAY;gBACjB,SAAS,EAAE,OAAO;gBAClB,QAAQ,EAAE,IAAI;gBACd,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,IAAI;gBACd,aAAa,EAAE,YAAY;gBAC3B,KAAK,EAAE,CAAC;aACT;SACF,CAAC;;oBAeqB,mBAAmB;;;;;qBA6BjB,CAAC;;0BAMJ,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACrD,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;QAC7F,CAAC,CAAC;;IAQF,yBAAyB,CAAC,QAAgB;QACxC,KAAK,CAAC,uBAAuB,EAAE,2BAA2B,EAAE,QAAQ,CAAC,CAAC;QACtE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAGD,mCAAmC,CAAC,QAAuB;QACzD,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IAGD,8BAA8B,CAAC,MAAqB,EAAE,MAAqB;QACzE,IAAI,MAAM,KAAK,MAAM;YAAE,OAAO;QAC9B,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACjD,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;QAC7F,CAAC,CAAC,CAAC;IACL,CAAC;IAED,iBAAiB;QACf,KAAK,CAAC,2BAA2B,EAAE,mBAAmB,CAAC,CAAC;IAC1D,CAAC;IAED,oBAAoB;QAClB,KAAK,CAAC,2BAA2B,EAAE,sBAAsB,CAAC,CAAC;IAC7D,CAAC;IAED,iBAAiB;QACf,KAAK,CAAC,2BAA2B,EAAE,mBAAmB,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;IAED,gBAAgB;QACd,KAAK,CAAC,2BAA2B,EAAE,kBAAkB,CAAC,CAAC;QACvD,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC/B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAOD,IAAI,oBAAoB;QACtB,OAAO,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,KAAK,UAAU,CAAC;IAC3F,CAAC;IAED,gBAAgB,CAAC,MAAqB,EAAE,eAAwB,IAAI;QAClE,IAAI,CAAC,WAAW,GAAG;YACjB,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,IAAI,EAAE;YACzC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,IAAI,EAAE;SACtD,CAAC;QACF,MAAM,gBAAgB,GACpB,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,iBAAiB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAI,KAA0B,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,gBAAgB,IAAI,EAAE,CAAC;QAEhK,IAAI,CAAC,UAAU,GAAG;YAChB,GAAG,gBAAgB;iBAChB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;iBACjC,GAAG,CAAC,CAAC,CAAmB,EAAE,EAAE,EAAE,EAAE;gBAC/B,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;gBACnE,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;gBACvD,CAAC;gBACD,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC;gBAClC,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;gBAC3B,OAAO,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACrF,CAAC,CAAC;SACL,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;QAEvC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;QACjE,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE;YACzB,SAAS,EAAE,GAAG;YACd,IAAI,EAAE,IAAI;YACV,SAAS,EAAE,WAAW;YACtB,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;YACjC,MAAM,EAAE,oBAAoB;YAC5B,MAAM,EAAE,QAAQ;YAChB,iBAAiB,EAAE,CAAC;YACpB,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;SACxD,CAAC,CAAC;IACL,CAAC;IAED,wBAAwB,CAAC,QAAoC,EAAE,eAAwB,IAAI;QACzF,MAAM,gBAAgB,GAAG,QAAQ,IAAI,EAAE,CAAC;QAExC,MAAM,YAAY,GAAG,gBAAgB;aAClC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;aACxB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;aACjC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACZ,MAAM,KAAK,GAAqB;gBAC9B,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,KAAK,EAAE,CAAC,GAAG,CAAC;gBACZ,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,GAAG,EAAE,CAAC,CAAC,GAAG;gBACV,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,aAAa,EAAE,CAAC,CAAC,aAAa;aAC/B,CAAC;YACF,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;QAGL,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YACtD,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG;gBACf,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC;YACF,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAE,CAAC,CAAC;QACP,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAElG,IAAI,YAAY,EAAE,CAAC;YAEjB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;gBACrB,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;gBACnC,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IAaD,qBAAqB,CAAC,GAAa;QACjC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,OAAO,CAAC,CAAC;QACX,CAAC;QAGD,MAAM,OAAO,GAAG,GAAG;aAChB,GAAG,CAAC,IAAI,CAAC,EAAE;YACV,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9B,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;YAC7B,MAAM,YAAY,GAAG,QAAQ,CAAC,QAAQ,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YAClD,OAAO,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;QACnD,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,GAAG,EAAiB,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC;aAC5C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAGzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtC,OAAO,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QAGD,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC;IAGD,+BAA+B,CAC7B,KAGE;QAEF,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;QACrC,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;YACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YAChE,MAAM,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC7F,MAAM,IAAI,GAAG,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;YAC3D,MAAM,QAAQ,GAAG,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,GAAG,CAAC,EAAE,CAAC;YACzI,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACjD,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAGD,4BAA4B,CAAC,KAAmD;QAC9E,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;QAC9B,IAAI,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACtC,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC;YAC1D,IAAI,CAAC,wBAAwB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClD,IAAI,WAAW,EAAE,CAAC;gBAChB,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,CAAC;YAC7E,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;IACH,CAAC;IAGD,mBAAmB,CAAC,KAAmD;QACrE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;QACrC,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;YAC/C,IAAI,CAAC,WAAW,GAAG;gBACjB,GAAG,IAAI,CAAC,WAAW;gBACnB,CAAC,IAAI,CAAC,EAAE,KAAK;aACd,CAAC;QACJ,CAAC;IACH,CAAC;IAED,UAAU,CAAC,KAAK;QACd,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;QACrC,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAClE,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAEjD,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;QAG3C,MAAM,CAAC,WAAW,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAGxD,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;QAG/C,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACrC,KAAK,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QAGH,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC;QAChC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;IAED,WAAW,CAAC,KAAK;QACf,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC7C,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;gBACf,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;YACvB,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;IACD,WAAW,CAAC,KAAK;QACf,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;QAChE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;IAED,aAAa,CAAC,KAAK;QACjB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YACjD,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;gBAChB,KAAK,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;YACnC,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;IACD,gBAAgB,CAAC,GAAG,EAAE,KAAK;QACzB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YACjD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;gBACd,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;gBAC3B,OAAO;oBACL,GAAG,KAAK;oBACR,KAAK,EAAE,KAAK;iBACb,CAAC;YACJ,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;IACD,cAAc,CAAC,KAAK;QAClB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YACjD,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;gBAChB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;oBACnB,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;gBACrB,CAAC;gBACD,KAAK,CAAC,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACzC,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;IAED,iBAAiB,CAAC,UAAU,EAAE,KAAK;QACjC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YACjD,IAAI,CAAC,KAAK,UAAU,EAAE,CAAC;gBACrB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;oBACnB,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;gBACrB,CAAC;gBACD,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;YAC9D,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;IACD,iBAAiB,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK;QACxC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YACjD,IAAI,CAAC,KAAK,UAAU,EAAE,CAAC;gBACrB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;oBACnB,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;gBACrB,CAAC;gBACD,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;oBACzC,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;wBAChB,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;oBACzB,CAAC;oBACD,OAAO,CAAC,CAAC;gBACX,CAAC,CAAC,CAAC;YACL,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;IAED,wBAAwB,CAAC,KAAK,EAAE,KAAK;QACnC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YACjD,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;gBAChB,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;YACrC,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;IAUD,MAAM;QACJ,OAAO,CACL,EAAC,IAAI;YACH,4DAAK,KAAK,EAAC,2BAA2B,EAAC,IAAI,EAAC,MAAM;gBAChD,4DAAK,KAAK,EAAC,QAAQ,EAAC,IAAI,EAAC,cAAc;oBACrC,4DAAK,KAAK,EAAC,aAAa;wBACtB,6DAAK,OAAO,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAM;wBAC1D,4DAAI,OAAO,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAK,CACvD;oBACN,4DAAK,KAAK,EAAC,eAAe;wBACxB,wEACE,IAAI,EAAC,WAAW,EAChB,WAAW,EAAC,iIAAiI,EAC7I,OAAO,EAAE,IAAI,CAAC,UAAU,EACxB,UAAU,EAAE,KAAK,EACjB,WAAW,EAAE,KAAK,EAClB,kBAAkB,EAAE,OAAO,CAAC,CAAC,CAAC,2CAA2C,CAAC;4BAE1E,6DAAM,IAAI,EAAC,aAAa;gCACtB,kEAAW,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,GAAa,CACzC,CACS,CACd,CACF;gBACN,4DAAK,KAAK,EAAC,SAAS;oBAClB,4DAAK,KAAK,EAAC,iCAAiC,EAAC,IAAI,EAAC,qBAAqB,IACpE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;wBAClC,OAAO,CACL,WAAK,KAAK,EAAE,wBAAwB,KAAK,CAAC,QAAQ,IAAI,OAAO,EAAE,EAAE,IAAI,EAAC,kBAAkB,EAAC,GAAG,EAAE,CAAC;4BAC7F,WAAK,KAAK,EAAC,mBAAmB,EAAC,IAAI,EAAC,yBAAyB;gCAC3D,YAAM,KAAK,EAAC,UAAU;oCACpB,qBAAe,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,GAAiB,CACjD;gCACP,WAAK,KAAK,EAAC,wBAAwB;oCACjC,cAAK,OAAO,CAAC,CAAC,CAAC,qCAAqC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAM;oCAChF,aAAI,KAAK,CAAC,SAAS,CAAK,CACpB;gCACN,WAAK,KAAK,EAAC,2BAA2B;oCACpC,YAAM,KAAK,EAAE,aAAa,IAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAQ;oCACnG,YACE,KAAK,EAAE,WAAW,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,EACpD,OAAO,EAAE,GAAG,EAAE;4CACZ,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;wCACtB,CAAC;wCAED,oBAAc,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,GAAG,CAClC,CACH,CACF;4BACN,WAAK,KAAK,EAAE,sBAAsB,CAAC,KAAK,CAAC,MAAM,IAAI,QAAQ,EAAE,EAAE,IAAI,EAAC,0BAA0B;gCAC5F,WAAK,KAAK,EAAC,QAAQ;oCACjB,uBACE,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,GAAG,CAAC,EAAE,EACZ,GAAG,EAAE,CAAC,EACN,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,8BAA8B,CAAC,EAChD,QAAQ,EAAE,KAAK,EACf,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,YAAY,EAAE,KAAK,CAAC,KAAK;wCAEzB,WAAK,KAAK,EAAC,gBAAgB,EAAC,IAAI,EAAC,kBAAkB;4CACjD,aACE,IAAI,EAAC,UAAU,EACf,IAAI,EAAE,YAAY,KAAK,CAAC,KAAK,EAAE,EAC/B,EAAE,EAAE,YAAY,KAAK,CAAC,KAAK,EAAE,EAC7B,OAAO,EAAE,GAAG,EAAE;oDACZ,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;gDACxB,CAAC,EACD,OAAO,EAAE,KAAK,CAAC,QAAQ,EACvB,QAAQ,EAAE,KAAK,CAAC,QAAQ,GACxB;4CAEF,aAAO,OAAO,EAAE,YAAY,KAAK,CAAC,KAAK,EAAE,gBAAa,UAAU,IAC7D,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAChB,CACJ,CACU,CACd,CACF,CACF,CACP,CAAC;oBACJ,CAAC,CAAC,CACE;oBACN,4DAAK,EAAE,EAAC,QAAQ,EAAC,KAAK,EAAC,mBAAmB,EAAC,IAAI,EAAC,yBAAyB,IACtE,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;wBACjC,OAAO,CACL,WAAK,KAAK,EAAE,wBAAwB,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAC,kBAAkB,EAAC,GAAG,EAAE,KAAK,CAAC,GAAG;4BAC1G,WAAK,KAAK,EAAC,mBAAmB,EAAC,IAAI,EAAC,yBAAyB;gCAC3D,YAAM,KAAK,EAAC,UAAU;oCACpB,qBAAe,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,GAAiB,CACjD;gCACP,WAAK,KAAK,EAAC,wBAAwB;oCACjC,cAAK,OAAO,CAAC,CAAC,CAAC,qCAAqC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAM;oCAChF,aAAI,KAAK,CAAC,SAAS,CAAK,CACpB;gCACN,WAAK,KAAK,EAAC,2BAA2B;oCACpC,YAAM,KAAK,EAAE,aAAa,IAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAQ;oCAClG,CAAC,KAAK,CAAC,QAAQ,IAAI,CAClB,cACE,OAAO,EAAE,GAAG,EAAE;4CACZ,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;4CACrC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;4CACjD,IAAI,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gDACvC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC;gDACpE,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;gDACvC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gDAC/C,UAAU,CAAC,GAAG,EAAE;oDACd,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;oDACjB,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;oDACvC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gDACjD,CAAC,EAAE,IAAI,CAAC,CAAC;gDACT,OAAO;4CACT,CAAC;4CACD,IAAI,WAAW,IAAI,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gDACnD,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,gDAAgD,CAAC,CAAC;gDAC1E,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;gDACvC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gDAC/C,UAAU,CAAC,GAAG,EAAE;oDACd,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;oDACjB,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;oDACvC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gDACjD,CAAC,EAAE,IAAI,CAAC,CAAC;gDACT,OAAO;4CACT,CAAC;4CACD,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;wCACtB,CAAC;wCAED,qBAAc,CACP,CACV;oCACD,YACE,KAAK,EAAE,WAAW,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,EACpD,OAAO,EAAE,GAAG,EAAE;4CACZ,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;wCACtB,CAAC;wCAED,oBAAc,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,GAAG,CAClC,CACH,CACF;4BACN,YACE,KAAK,EAAE;oCACL,OAAO,EAAE,IAAI;oCACb,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,EAAE;iCAChD,IAEA,KAAK,CAAC,KAAK,CACP;4BACP,WAAK,KAAK,EAAE,sBAAsB,CAAC,KAAK,CAAC,MAAM,IAAI,QAAQ,EAAE,EAAE,IAAI,EAAC,0BAA0B;gCAC5F,WAAK,KAAK,EAAC,QAAQ;oCACjB,uBACE,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,GAAG,CAAC,EAAE,EACZ,GAAG,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,QAAQ,EAC9B,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,8BAA8B,CAAC,EAChD,QAAQ,EAAE,KAAK,EACf,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,YAAY,EAAE,KAAK,CAAC,KAAK;wCAEzB,WAAK,KAAK,EAAC,gBAAgB,EAAC,IAAI,EAAC,kBAAkB;4CACjD,aACE,IAAI,EAAC,UAAU,EACf,IAAI,EAAE,YAAY,CAAC,EAAE,EACrB,EAAE,EAAE,YAAY,CAAC,EAAE,EACnB,OAAO,EAAE,GAAG,EAAE;oDACZ,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;gDACxB,CAAC,EACD,OAAO,EAAE,KAAK,CAAC,QAAQ,EACvB,QAAQ,EAAE,KAAK,CAAC,QAAQ,GACxB;4CAEF,aAAO,OAAO,EAAE,YAAY,CAAC,EAAE,gBAAa,UAAU,IACnD,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAChB,CACJ,CACU;oCACjB,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,CAC3C,uBACE,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,iBAAiB,CAAC,EAAE,EAC1B,GAAG,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,gBAAgB,EACtC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,qCAAqC,CAAC,EACvD,QAAQ,EAAE,KAAK,EACf,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,YAAY,EAAE,KAAK,CAAC,OAAO,GAC3B,CACH;oCACA,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,CAC3C,4BACE,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,iBAAiB,CAAC,EAAE,EAC1B,GAAG,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,gBAAgB,EACtC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,qCAAqC,CAAC,EACvD,QAAQ,EAAE,KAAK,EACf,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,YAAY,EAAE,KAAK,CAAC,OAAO,GAC3B,CACH,CACG;gCACL,KAAK,CAAC,OAAO,IAAI,SAAS,IAAI,CAC7B,WAAK,KAAK,EAAC,mBAAmB;oCAC5B,cAAK,OAAO,CAAC,CAAC,CAAC,yCAAyC,CAAC,CAAM;oCAC/D,WAAK,KAAK,EAAC,SAAS,IACjB,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;wCAC1B,OAAO,CACL,WAAK,KAAK,EAAC,QAAQ;4CACjB,uBAAiB,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,GAAG,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,IACvH,CAAC,GAAG,CAAC,IAAI,CACR,WAAK,KAAK,EAAC,gBAAgB,EAAC,IAAI,EAAC,kBAAkB;gDACjD,cACE,OAAO,EAAE,GAAG,EAAE;wDACZ,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oDAC/B,CAAC;oDAED,qBAAc,CACP,CACL,CACP,CACe,CACd,CACP,CAAC;oCACJ,CAAC,CAAC,CACE;oCACN,cACE,OAAO,EAAE,GAAG,EAAE;4CACZ,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;wCACzB,CAAC,EACD,IAAI,EAAC,qBAAqB;wCAE1B,0BAAmB;;wCAAE,OAAO,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAC3D,CACL,CACP,CACG,CACF,CACP,CAAC;oBACJ,CAAC,CAAC,CACE,CACF,CACF,CACD,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF;AAnPC;IARC,iBAAiB,CAA4G;QAC5H,IAAI,EAAE,2BAA2B;QACjC,YAAY,EAAE,IAAI,GAAG,CAAC;YACpB,CAAC,uCAAuC,EAAE,uBAAuB,CAAC;YAClE,CAAC,kCAAkC,EAAE,kBAAkB,CAAC;SACzD,CAAC;QACF,iBAAiB,EAAE,IAAI;KACxB,CAAC;;;;oDAmPD","sourcesContent":["import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { debug } from '@/utils/utils';\nimport { AttachInternals, Component, Element, Event, EventEmitter, Host, Listen, Prop, State, Watch, h } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\nimport { DEFAULT_FORM_FIELD_TYPES, FIELD_TYPES } from '@/common/constants';\nimport { Configuration } from '@nylas/core';\nimport Sortable from 'sortablejs';\nimport i18next from '@/utils/i18n';\nimport { LANGUAGE_CODE } from '@/common/constants';\n\ninterface AdditionalFields {\n type: string;\n required: boolean;\n label: string;\n order: number;\n options?: string[];\n key: string;\n default?: string;\n error?: string;\n fieldLabelKey: string;\n}\ninterface AdditionalFieldsInternal extends AdditionalFields {\n isOpen: boolean;\n readonly?: boolean;\n typeLabel: string;\n}\n\n/**\n * The `nylas-booking-form-config` component is a form input for adding additional fields to the booking form.\n * @part nbfc__header - The header of the booking form\n * @part nbfc__add_field - The add field selection container\n * @part nbfc__add_field-button - The add field selection button\n * @part nbfc__add_field-content - The add field selection dropdown content\n * @part nbfc__additional_fields - The aditional fields container\n * @part nbfc__form-field - The single form container\n * @part nbfc__form-field-header - The single form header\n * @part nbfc__form-field-content - The single form content\n */\n@Component({\n tag: 'nylas-booking-form-config',\n styleUrl: 'nylas-booking-form-config.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasBookingFormConfig {\n private staticFields = [\n {\n type: 'text',\n label: 'Your name',\n key: 'your_name',\n typeLabel: 'Short text',\n readonly: true,\n required: true,\n isOpen: false,\n fieldLabelKey: 'your_name',\n order: 0,\n },\n {\n type: 'email',\n label: 'Your Email',\n key: 'your_email',\n typeLabel: 'Email',\n readonly: true,\n isOpen: false,\n required: true,\n fieldLabelKey: 'your_email',\n order: 1,\n },\n ];\n /**\n * The element <nylas-booking-form-config> itself.\n */\n @Element() host!: HTMLNylasBookingFormConfigElement;\n\n /**\n * @internal\n * The selected configuration.\n */\n @Prop() selectedConfiguration?: Configuration;\n\n /**\n * The name of the booking form config.\n */\n @Prop() name: string = 'additional-fields';\n\n /**\n * The additional fields to be displayed on the booking form.\n */\n @Prop() additionalFields?: AdditionalFields[];\n\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: LANGUAGE_CODE;\n\n /**\n * This event is fired when the selected availability / open hours change.\n */\n @Event() valueChanged!: EventEmitter<{\n value: string;\n name: string;\n }>;\n\n /**\n * The element internals.\n */\n @AttachInternals() internals!: ElementInternals;\n\n @State() formFields!: AdditionalFieldsInternal[];\n\n @State() formFieldsOrder!: AdditionalFieldsInternal[];\n\n @State() count: number = 0;\n\n @State() watchFields!: {\n title: string;\n description: string;\n };\n @State() fieldTypes = DEFAULT_FORM_FIELD_TYPES.map(f => {\n return { label: i18next.t(`nylasBookingFormConfig.fieldType.${f.value}`), value: f.value };\n });\n\n /**\n * When a name prop is passed, stencil does not automatically set the name attribute on the host element.\n * Since this component is form-associated, the name attribute is required for form submission.\n * This is a workaround to ensure that the name attribute is set on the host element.\n */\n @Watch('name')\n elementNameChangedHandler(newValue: string) {\n debug('nylas-calendar-picker', 'elementNameChangedHandler', newValue);\n this.host.setAttribute('name', newValue);\n }\n\n @Watch('selectedConfiguration')\n selectedConfigurationChangedHandler(newValue: Configuration) {\n this.updateFormFields(newValue, false);\n }\n\n @Watch('selectedLanguage')\n selectedLanguageChangedHandler(newVal: LANGUAGE_CODE, oldVal: LANGUAGE_CODE) {\n if (newVal === oldVal) return;\n i18next.changeLanguage(newVal);\n this.fieldTypes = DEFAULT_FORM_FIELD_TYPES.map(f => {\n return { label: i18next.t(`nylasBookingFormConfig.fieldType.${f.value}`), value: f.value };\n });\n }\n\n connectedCallback() {\n debug('nylas-booking-form-config', 'connectedCallback');\n }\n\n disconnectedCallback() {\n debug('nylas-booking-form-config', 'disconnectedCallback');\n }\n\n componentWillLoad() {\n debug('nylas-booking-form-config', 'componentWillLoad');\n this.host.setAttribute('name', this.name);\n this.formFields = [];\n this.formFieldsChangedHandler(this.formFields, false);\n }\n\n componentDidLoad() {\n debug('nylas-booking-form-config', 'componentDidLoad');\n if (this.selectedConfiguration) {\n this.updateFormFields(this.selectedConfiguration, false);\n }\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';\n }\n\n updateFormFields(config: Configuration, valueChanged: boolean = true) {\n this.watchFields = {\n title: config?.event_booking?.title || '',\n description: config?.event_booking?.description || '',\n };\n const additionalFields =\n Object.entries(config?.scheduler?.additional_fields || {}).map(([id, field]) => ({ ...(field as AdditionalFields), key: id })) || this.additionalFields || [];\n\n this.formFields = [\n ...additionalFields\n .sort((a, b) => a.order - b.order)\n .map((f: AdditionalFields, _i) => {\n const fieldType = FIELD_TYPES.find(field => field.type === f.type);\n if (!fieldType) {\n return { ...f, isOpen: false, typeLabel: 'Unknown' };\n }\n const typeLabel = fieldType.label;\n const order = f.order || 0;\n return { ...f, order: order - 1, isOpen: false, typeLabel, fieldLabelKey: f.type };\n }),\n ];\n this.formFields = [...this.formFields];\n\n this.formFieldsChangedHandler(this.formFields, valueChanged);\n const container = this.host.shadowRoot?.getElementById('fields');\n Sortable.create(container, {\n animation: 150,\n swap: true, // Enable swap plugin\n swapClass: 'highlight', // The class applied to the hovered swap item\n onEnd: this.swapFields.bind(this),\n handle: '.form-field_header', // Only allow dragging by the header\n filter: '.fixed', // Disable dragging for elements with the 'fixed' class\n fallbackTolerance: 3, // So that we can select items on mobile\n onMove: evt => !evt.related.classList.contains('fixed'), // Prevent moving if target has 'fixed' class\n });\n }\n\n formFieldsChangedHandler(newValue: AdditionalFieldsInternal[], valueChanged: boolean = true) {\n const additionalFields = newValue || [];\n // Remove readonly fields, sort by order\n const sortedFields = additionalFields\n .filter(f => !f.readonly)\n .sort((a, b) => a.order - b.order)\n .map((f, i) => {\n const field: AdditionalFields = {\n type: f.type,\n required: f.required,\n label: f.label,\n order: i + 1,\n options: f.options,\n key: f.key,\n default: f.default,\n fieldLabelKey: f.fieldLabelKey,\n };\n return { ...field };\n });\n\n // Map fields to object\n const addFieldsMap = sortedFields.reduce((acc, field) => {\n acc[field.key] = {\n type: field.type,\n required: field.required,\n order: field.order,\n options: field.options,\n label: field.label,\n default: field.default,\n };\n return acc;\n }, {});\n this.isInternalsAvailable && this.internals.setFormValue(JSON.stringify(addFieldsMap), this.name);\n\n if (valueChanged) {\n // Do not emit the valueChanged event on initial load\n this.valueChanged.emit({\n value: JSON.stringify(addFieldsMap),\n name: this.name,\n });\n }\n this.formFields = [...this.formFields];\n }\n\n /**\n * This function finds the next missing number in an array of strings (keys of additional_fields).\n * We use this function to generate the next consecutive index number for the key.\n * For example,\n * - If the keys are ['dropdown_another-one_1', 'dropdown_Whatever-choose-one_3'] the function will return 2.\n * - If the array is empty, the function will return 1.\n * - If there are no missing numbers in between, the function will return the next number after the last element.\n *\n * @param arr of keys stored in the formFields for the given field type\n * @returns a number that is the next (consecutive) missing number in the array\n */\n findNextMissingNumber(arr: string[]): number {\n if (arr.length === 0) {\n return 1; // If the array is empty, the first number is 1\n }\n\n // Extract numbers from strings by splitting on underscore and popping the last element\n const numbers = arr\n .map(item => {\n const parts = item.split('_'); // Split the string by '_'\n const lastPart = parts.pop(); // Get the last part (should be the number)\n const parsedNumber = parseInt(lastPart || '', 10);\n return isNaN(parsedNumber) ? null : parsedNumber; // Return the parsed number or null if not a valid number\n })\n .filter((num): num is number => num !== null) // Filter out any null values and assert that the result is a number\n .sort((a, b) => a - b); // Sort numbers in ascending order\n\n // Iterate through the sorted numbers to find the missing number\n for (let i = 0; i < numbers.length - 1; i++) {\n if (numbers[i + 1] !== numbers[i] + 1) {\n return numbers[i] + 1; // Return the missing number\n }\n }\n\n // If no number is missing in between, return the next number after the last element\n return numbers.length > 0 ? numbers[numbers.length - 1] + 1 : 1;\n }\n\n @Listen('nylasFormDropdownChanged')\n nylasFormDropdownChangedHandler(\n event: CustomEvent<{\n value: string;\n name: string;\n }>,\n ) {\n const { name, value } = event.detail;\n if (name === 'add-field') {\n const field = FIELD_TYPES.find(f => f.type === value);\n const maxOrder = Math.max(...this.formFields.map(f => f.order));\n const existingFieldKeys = this.formFields.filter(f => f.type === field.type).map(f => f.key);\n const next = this.findNextMissingNumber(existingFieldKeys);\n const newField = { ...field, label: field.label, key: `${field.type}_${field.label.split(' ').join('-')}_${next}`, order: maxOrder + 1 }; // Copy object + Ensure unique order\n this.formFields = [...this.formFields, newField];\n this.formFieldsChangedHandler(this.formFields);\n }\n }\n\n @Listen('nylasFormInputChanged')\n nylasFormInputChangedHandler(event: CustomEvent<{ value: string; name: string }>) {\n const { name } = event.detail;\n if (name.startsWith('default-value-')) {\n const fieldIndex = parseInt(name.split('-').pop() || '0');\n this.fieldDefaultValueChanged(fieldIndex, event);\n } else {\n const [fieldIndex, optionIndex] = name.split('_');\n if (optionIndex) {\n this.fieldOptionChange(parseInt(fieldIndex), parseInt(optionIndex), event);\n } else {\n this.fieldLabelChange(parseInt(fieldIndex), event);\n }\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 === 'title' || name === 'description') {\n this.watchFields = {\n ...this.watchFields,\n [name]: value,\n };\n }\n }\n\n swapFields(event) {\n const { oldIndex, newIndex } = event;\n if (oldIndex == null || newIndex == null || oldIndex === newIndex) {\n return;\n }\n console.log('###swapFields', oldIndex, newIndex);\n // Create a copy of the current fields array\n const updatedFields = [...this.formFields];\n\n // Remove the dragged item from its old position\n const [draggedItem] = updatedFields.splice(oldIndex, 1);\n\n // Insert the dragged item at its new position\n updatedFields.splice(newIndex, 0, draggedItem);\n\n // Recalculate order for each field (starting at 1 as required)\n updatedFields.forEach((field, index) => {\n field.order = index + 1;\n });\n\n // Update state and trigger UI re-render\n this.formFields = updatedFields;\n this.formFieldsChangedHandler(this.formFields);\n }\n\n fieldToggle(index) {\n this.formFields = this.formFields.map((f, i) => {\n if (index == i) {\n f.isOpen = !f.isOpen;\n }\n return f;\n });\n this.formFieldsChangedHandler(this.formFields);\n }\n fieldRemove(index) {\n this.formFields = this.formFields.filter((_, i) => i !== index);\n this.formFieldsChangedHandler(this.formFields);\n }\n\n fieldRequired(index) {\n this.formFields = this.formFields.map((field, i) => {\n if (i === index) {\n field.required = !field.required;\n }\n return field;\n });\n this.formFieldsChangedHandler(this.formFields);\n }\n fieldLabelChange(ind, event) {\n const target = event.detail;\n this.formFields = this.formFields.map((field, i) => {\n if (i === ind) {\n const label = target.value;\n return {\n ...field,\n label: label,\n };\n }\n return field;\n });\n this.formFieldsChangedHandler(this.formFields);\n }\n fieldOptionAdd(index) {\n this.formFields = this.formFields.map((field, i) => {\n if (i === index) {\n if (!field.options) {\n field.options = [];\n }\n field.options = [...field.options, ''];\n }\n return field;\n });\n this.formFieldsChangedHandler(this.formFields);\n }\n\n fieldOptionRemove(fieldIndex, index) {\n this.formFields = this.formFields.map((field, i) => {\n if (i === fieldIndex) {\n if (!field.options) {\n field.options = [];\n }\n field.options = field.options.filter((_, i) => i !== index);\n }\n return field;\n });\n this.formFieldsChangedHandler(this.formFields);\n }\n fieldOptionChange(fieldIndex, index, event) {\n this.formFields = this.formFields.map((field, i) => {\n if (i === fieldIndex) {\n if (!field.options) {\n field.options = [];\n }\n field.options = field.options.map((o, i) => {\n if (i === index) {\n o = event.detail.value;\n }\n return o;\n });\n }\n return field;\n });\n this.formFieldsChangedHandler(this.formFields);\n }\n\n fieldDefaultValueChanged(index, event) {\n this.formFields = this.formFields.map((field, i) => {\n if (i === index) {\n field.default = event.detail.value;\n }\n return field;\n });\n this.formFieldsChangedHandler(this.formFields);\n }\n\n @RegisterComponent<NylasBookingFormConfig, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-booking-form-config',\n stateToProps: new Map([\n ['schedulerConfig.selectedConfiguration', 'selectedConfiguration'],\n ['schedulerConfig.selectedLanguage', 'selectedLanguage'],\n ]),\n fireRegisterEvent: true,\n })\n render() {\n return (\n <Host>\n <div class=\"nylas-booking-form-config\" part=\"nbfc\">\n <div class=\"header\" part=\"nbfc__header\">\n <div class=\"header_text\">\n <h3>{i18next.t('nylasBookingFormConfig.headerTitle')}</h3>\n <p>{i18next.t('nylasBookingFormConfig.headerSubTitle')}</p>\n </div>\n <div class=\"header_action\">\n <select-dropdown\n name=\"add-field\"\n exportparts=\"sd_dropdown: nbfc__add_field, sd_dropdown-button: nbfc__add_field-button, sd_dropdown-content: nbfc__add_field-dropdown-content\"\n options={this.fieldTypes}\n withSearch={false}\n withChevron={false}\n dropdownButtonText={i18next.t('nylasBookingFormConfig.dropdownButtonText')}\n >\n <span slot=\"select-icon\">\n <plus-icon width=\"15\" height=\"15\"></plus-icon>\n </span>\n </select-dropdown>\n </div>\n </div>\n <div class=\"content\">\n <div class=\"additional_fields static_fields\" part=\"nbfc__static_fields\">\n {this.staticFields.map((field, i) => {\n return (\n <div class={`form-field draggable ${field.readonly && 'fixed'}`} part=\"nbfc__form_field\" key={i}>\n <div class=\"form-field_header\" part=\"nbfc__form_field-header\">\n <span class=\"dragable\">\n <dragable-icon width=\"24\" height=\"25\"></dragable-icon>\n </span>\n <div class=\"form-field_header_text\">\n <h4>{i18next.t(`nylasBookingFormConfig.fieldLabel.${field.fieldLabelKey}`)}</h4>\n <p>{field.typeLabel}</p>\n </div>\n <div class=\"form-field_header_actions\">\n <span class={`is-required`}>{field.required ? i18next.t('required') : i18next.t('optional')}</span>\n <span\n class={`chevron ${field.isOpen ? 'open' : 'closed'}`}\n onClick={() => {\n this.fieldToggle(i);\n }}\n >\n <chevron-icon width=\"24\" height=\"24\" />\n </span>\n </div>\n </div>\n <div class={`form-field_content ${!field.isOpen && 'hidden'}`} part=\"nbfc__form_field-content\">\n <div class=\"inputs\">\n <input-component\n class={'label-input'}\n name={`${i}`}\n key={i}\n label={i18next.t('nylasBookingFormConfig.label')}\n required={false}\n readOnly={field.readonly}\n defaultValue={field.label}\n >\n <div class=\"required-input\" slot=\"additional-input\">\n <input\n type=\"checkbox\"\n name={`required_${field.order}`}\n id={`required_${field.order}`}\n onClick={() => {\n this.fieldRequired(i);\n }}\n checked={field.required}\n disabled={field.readonly}\n />\n\n <label htmlFor={`required_${field.order}`} aria-label=\"Required\">\n {i18next.t('required')}\n </label>\n </div>\n </input-component>\n </div>\n </div>\n </div>\n );\n })}\n </div>\n <div id=\"fields\" class=\"additional_fields\" part=\"nbfc__additional_fields\">\n {this.formFields?.map((field, i) => {\n return (\n <div class={`form-field draggable ${field?.readonly ? 'fixed' : ''}`} part=\"nbfc__form_field\" key={field.key}>\n <div class=\"form-field_header\" part=\"nbfc__form_field-header\">\n <span class=\"dragable\">\n <dragable-icon width=\"24\" height=\"25\"></dragable-icon>\n </span>\n <div class=\"form-field_header_text\">\n <h4>{i18next.t(`nylasBookingFormConfig.fieldLabel.${field.fieldLabelKey}`)}</h4>\n <p>{field.typeLabel}</p>\n </div>\n <div class=\"form-field_header_actions\">\n <span class={`is-required`}>{field.required ? i18next.t('required') : i18next.t('optional')}</span>\n {!field.readonly && (\n <button\n onClick={() => {\n const title = this.watchFields.title;\n const description = this.watchFields.description;\n if (title && title.includes(field.key)) {\n field.error = i18next.t('nylasBookingFormConfig.fieldInTitleError');\n this.formFields = [...this.formFields];\n this.formFieldsChangedHandler(this.formFields);\n setTimeout(() => {\n field.error = '';\n this.formFields = [...this.formFields];\n this.formFieldsChangedHandler(this.formFields);\n }, 3000);\n return;\n }\n if (description && description.includes(field.key)) {\n field.error = i18next.t('nylasBookingFormConfig.fieldInDescriptionError');\n this.formFields = [...this.formFields];\n this.formFieldsChangedHandler(this.formFields);\n setTimeout(() => {\n field.error = '';\n this.formFields = [...this.formFields];\n this.formFieldsChangedHandler(this.formFields);\n }, 3000);\n return;\n }\n this.fieldRemove(i);\n }}\n >\n <close-icon />\n </button>\n )}\n <span\n class={`chevron ${field.isOpen ? 'open' : 'closed'}`}\n onClick={() => {\n this.fieldToggle(i);\n }}\n >\n <chevron-icon width=\"24\" height=\"24\" />\n </span>\n </div>\n </div>\n <span\n class={{\n 'error': true,\n 'fade-out': !field?.error || field.error === '',\n }}\n >\n {field.error}\n </span>\n <div class={`form-field_content ${!field.isOpen && 'hidden'}`} part=\"nbfc__form_field-content\">\n <div class=\"inputs\">\n <input-component\n class={'label-input'}\n name={`${i}`}\n key={`${i}-${field.key}-label`}\n label={i18next.t('nylasBookingFormConfig.label')}\n required={false}\n readOnly={field.readonly}\n defaultValue={field.label}\n >\n <div class=\"required-input\" slot=\"additional-input\">\n <input\n type=\"checkbox\"\n name={`required_${i}`}\n id={`required_${i}`}\n onClick={() => {\n this.fieldRequired(i);\n }}\n checked={field.required}\n disabled={field.readonly}\n />\n\n <label htmlFor={`required_${i}`} aria-label=\"Required\">\n {i18next.t('required')}\n </label>\n </div>\n </input-component>\n {!field.readonly && field.type !== 'date' && (\n <input-component\n class={'default-value'}\n name={`default-value-${i}`}\n key={`${i}-${field.key}-default-value`}\n label={i18next.t('nylasBookingFormConfig.defaultValue')}\n required={false}\n readOnly={field.readonly}\n defaultValue={field.default}\n />\n )}\n {!field.readonly && field.type === 'date' && (\n <nylas-date-component\n class={'default-value'}\n name={`default-value-${i}`}\n key={`${i}-${field.key}-default-value`}\n label={i18next.t('nylasBookingFormConfig.defaultValue')}\n required={false}\n readOnly={field.readonly}\n defaultValue={field.default}\n />\n )}\n </div>\n {field.options != undefined && (\n <div class=\"options-container\">\n <h4>{i18next.t('nylasBookingFormConfig.allOptionsHeader')}</h4>\n <div class=\"options\">\n {field.options.map((o, j) => {\n return (\n <div class=\"option\">\n <input-component key={j} name={`${i}_${j}`} label={field.typeLabel + ' option ' + (j + 1)} required={true} defaultValue={o}>\n {j > 1 && (\n <div class=\"required-input\" slot=\"additional-input\">\n <button\n onClick={() => {\n this.fieldOptionRemove(i, j);\n }}\n >\n <close-icon />\n </button>\n </div>\n )}\n </input-component>\n </div>\n );\n })}\n </div>\n <button\n onClick={() => {\n this.fieldOptionAdd(i);\n }}\n part=\"nap__add-time-range\"\n >\n <add-circle-icon /> {i18next.t('nylasBookingFormConfig.addOption')}\n </button>\n </div>\n )}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"nylas-booking-form-config.js","sourceRoot":"","sources":["../../../../src/components/scheduler-editor/nylas-booking-form-config/nylas-booking-form-config.tsx"],"names":[],"mappings":"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","sourcesContent":["import { RegisterComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { debug } from '@/utils/utils';\nimport { AttachInternals, Component, Element, Event, EventEmitter, Host, Listen, Prop, State, Watch, h } from '@stencil/core';\nimport { NylasSchedulerEditor } from '../nylas-scheduler-editor/nylas-scheduler-editor';\nimport { DEFAULT_FORM_FIELD_TYPES, FIELD_TYPES } from '@/common/constants';\nimport { Configuration, AdditionalFields } from '@nylas/core';\nimport Sortable from 'sortablejs';\nimport i18next from '@/utils/i18n';\nimport { LANGUAGE_CODE } from '@/common/constants';\n\ninterface AdditionalFieldsInternal extends AdditionalFields {\n isOpen: boolean;\n readonly?: boolean;\n typeLabel: string;\n key?: string; // Make optional\n error?: string; // Make optional\n fieldLabelKey?: string; // Make optional\n}\n\n/**\n * The `nylas-booking-form-config` component is a form input for adding additional fields to the booking form.\n * @part nbfc__header - The header of the booking form\n * @part nbfc__add_field - The add field selection container\n * @part nbfc__add_field-button - The add field selection button\n * @part nbfc__add_field-content - The add field selection dropdown content\n * @part nbfc__additional_fields - The aditional fields container\n * @part nbfc__form-field - The single form container\n * @part nbfc__form-field-header - The single form header\n * @part nbfc__form-field-content - The single form content\n */\n@Component({\n tag: 'nylas-booking-form-config',\n styleUrl: 'nylas-booking-form-config.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class NylasBookingFormConfig {\n private staticFields = [\n {\n type: 'text',\n label: 'Your name',\n key: 'your_name',\n typeLabel: 'Short text',\n readonly: true,\n required: true,\n isOpen: false,\n fieldLabelKey: 'your_name',\n order: 0,\n },\n {\n type: 'email',\n label: 'Your Email',\n key: 'your_email',\n typeLabel: 'Email',\n readonly: true,\n isOpen: false,\n required: true,\n fieldLabelKey: 'your_email',\n order: 1,\n },\n ];\n /**\n * The element <nylas-booking-form-config> itself.\n */\n @Element() host!: HTMLNylasBookingFormConfigElement;\n\n /**\n * @internal\n * The selected configuration.\n */\n @Prop() selectedConfiguration?: Configuration;\n\n /**\n * The name of the booking form config.\n */\n @Prop() name: string = 'additional-fields';\n\n /**\n * The additional fields to be displayed on the booking form.\n */\n @Prop() additionalFields?: AdditionalFields[];\n\n /**\n * The selected language.\n */\n @Prop() selectedLanguage?: LANGUAGE_CODE;\n\n /**\n * This event is fired when the selected availability / open hours change.\n */\n @Event() valueChanged!: EventEmitter<{\n value: string;\n name: string;\n }>;\n\n /**\n * The element internals.\n */\n @AttachInternals() internals!: ElementInternals;\n\n @State() formFields!: AdditionalFieldsInternal[];\n\n @State() formFieldsOrder!: AdditionalFieldsInternal[];\n\n @State() count: number = 0;\n\n @State() watchFields!: {\n title: string;\n description: string;\n };\n @State() fieldTypes = DEFAULT_FORM_FIELD_TYPES.map(f => {\n return { label: i18next.t(`nylasBookingFormConfig.fieldType.${f.value}`), value: f.value };\n });\n\n /**\n * When a name prop is passed, stencil does not automatically set the name attribute on the host element.\n * Since this component is form-associated, the name attribute is required for form submission.\n * This is a workaround to ensure that the name attribute is set on the host element.\n */\n @Watch('name')\n elementNameChangedHandler(newValue: string) {\n debug('nylas-calendar-picker', 'elementNameChangedHandler', newValue);\n this.host.setAttribute('name', newValue);\n }\n\n @Watch('selectedConfiguration')\n selectedConfigurationChangedHandler(newValue: Configuration) {\n this.updateFormFields(newValue, false);\n }\n\n @Watch('selectedLanguage')\n selectedLanguageChangedHandler(newVal: LANGUAGE_CODE, oldVal: LANGUAGE_CODE) {\n if (newVal === oldVal) return;\n i18next.changeLanguage(newVal);\n this.fieldTypes = DEFAULT_FORM_FIELD_TYPES.map(f => {\n return { label: i18next.t(`nylasBookingFormConfig.fieldType.${f.value}`), value: f.value };\n });\n }\n\n connectedCallback() {\n debug('nylas-booking-form-config', 'connectedCallback');\n }\n\n disconnectedCallback() {\n debug('nylas-booking-form-config', 'disconnectedCallback');\n }\n\n componentWillLoad() {\n debug('nylas-booking-form-config', 'componentWillLoad');\n this.host.setAttribute('name', this.name);\n this.formFields = [];\n this.formFieldsChangedHandler(this.formFields, false);\n }\n\n componentDidLoad() {\n debug('nylas-booking-form-config', 'componentDidLoad');\n if (this.selectedConfiguration) {\n this.updateFormFields(this.selectedConfiguration, false);\n }\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';\n }\n\n updateFormFields(config: Configuration, valueChanged: boolean = true) {\n this.watchFields = {\n title: config?.event_booking?.title || '',\n description: config?.event_booking?.description || '',\n };\n const additionalFields =\n Object.entries(config?.scheduler?.additional_fields || {}).map(([id, field]) => ({ ...(field as AdditionalFields), key: id })) || this.additionalFields || [];\n\n this.formFields = [\n ...additionalFields\n .sort((a, b) => a.order - b.order)\n .map((f: AdditionalFields, _i) => {\n const fieldType = FIELD_TYPES.find(field => field.type === f.type);\n if (!fieldType) {\n return { ...f, isOpen: false, typeLabel: 'Unknown' };\n }\n const typeLabel = fieldType.label;\n const order = f.order || 0;\n return { ...f, order: order - 1, isOpen: false, typeLabel, fieldLabelKey: f.type };\n }),\n ];\n this.formFields = [...this.formFields];\n\n this.formFieldsChangedHandler(this.formFields, valueChanged);\n const container = this.host.shadowRoot?.getElementById('fields');\n Sortable.create(container, {\n animation: 150,\n swap: true, // Enable swap plugin\n swapClass: 'highlight', // The class applied to the hovered swap item\n onEnd: this.swapFields.bind(this),\n handle: '.form-field_header', // Only allow dragging by the header\n filter: '.fixed', // Disable dragging for elements with the 'fixed' class\n fallbackTolerance: 3, // So that we can select items on mobile\n onMove: evt => !evt.related.classList.contains('fixed'), // Prevent moving if target has 'fixed' class\n });\n }\n\n formFieldsChangedHandler(newValue: AdditionalFieldsInternal[], valueChanged: boolean = true) {\n const additionalFields = newValue || [];\n // Remove readonly fields, sort by order\n const sortedFields = additionalFields\n .filter(f => !f.readonly)\n .sort((a, b) => a.order - b.order)\n .map((f, i) => {\n const field: AdditionalFields = {\n type: f.type,\n required: f.required,\n label: f.label,\n order: i + 1,\n options: f.options,\n key: f.key,\n default: f.default,\n fieldLabelKey: f.fieldLabelKey,\n };\n return { ...field };\n });\n\n // Map fields to object\n const addFieldsMap = sortedFields.reduce((acc, field) => {\n if (field.key) { // Only add fields with defined keys\n acc[field.key] = {\n type: field.type,\n required: field.required,\n order: field.order,\n options: field.options,\n label: field.label,\n default: field.default,\n };\n }\n return acc;\n }, {});\n this.isInternalsAvailable && this.internals.setFormValue(JSON.stringify(addFieldsMap), this.name);\n\n if (valueChanged) {\n // Do not emit the valueChanged event on initial load\n this.valueChanged.emit({\n value: JSON.stringify(addFieldsMap),\n name: this.name,\n });\n }\n this.formFields = [...this.formFields];\n }\n\n /**\n * This function finds the next missing number in an array of strings (keys of additional_fields).\n * We use this function to generate the next consecutive index number for the key.\n * For example,\n * - If the keys are ['dropdown_another-one_1', 'dropdown_Whatever-choose-one_3'] the function will return 2.\n * - If the array is empty, the function will return 1.\n * - If there are no missing numbers in between, the function will return the next number after the last element.\n *\n * @param arr of keys stored in the formFields for the given field type\n * @returns a number that is the next (consecutive) missing number in the array\n */\n findNextMissingNumber(arr: string[]): number {\n if (arr.length === 0) {\n return 1; // If the array is empty, the first number is 1\n }\n\n // Extract numbers from strings by splitting on underscore and popping the last element\n const numbers = arr\n .map(item => {\n const parts = item.split('_'); // Split the string by '_'\n const lastPart = parts.pop(); // Get the last part (should be the number)\n const parsedNumber = parseInt(lastPart || '', 10);\n return isNaN(parsedNumber) ? null : parsedNumber; // Return the parsed number or null if not a valid number\n })\n .filter((num): num is number => num !== null) // Filter out any null values and assert that the result is a number\n .sort((a, b) => a - b); // Sort numbers in ascending order\n\n // Iterate through the sorted numbers to find the missing number\n for (let i = 0; i < numbers.length - 1; i++) {\n if (numbers[i + 1] !== numbers[i] + 1) {\n return numbers[i] + 1; // Return the missing number\n }\n }\n\n // If no number is missing in between, return the next number after the last element\n return numbers.length > 0 ? numbers[numbers.length - 1] + 1 : 1;\n }\n\n @Listen('nylasFormDropdownChanged')\n nylasFormDropdownChangedHandler(\n event: CustomEvent<{\n value: string;\n name: string;\n }>,\n ) {\n const { name, value } = event.detail;\n if (name === 'add-field') {\n const field = FIELD_TYPES.find(f => f.type === value);\n const maxOrder = Math.max(...this.formFields.map(f => f.order));\n const existingFieldKeys = this.formFields\n .filter(f => f.type === field.type && f.key !== undefined)\n .map(f => f.key as string);\n const next = this.findNextMissingNumber(existingFieldKeys);\n const newField = { ...field, label: field.label, key: `${field.type}_${field.label.split(' ').join('-')}_${next}`, order: maxOrder + 1 }; // Copy object + Ensure unique order\n this.formFields = [...this.formFields, newField];\n this.formFieldsChangedHandler(this.formFields);\n }\n }\n\n @Listen('nylasFormInputChanged')\n nylasFormInputChangedHandler(event: CustomEvent<{ value: string; name: string }>) {\n const { name } = event.detail;\n if (name.startsWith('default-value-')) {\n const fieldIndex = parseInt(name.split('-').pop() || '0');\n this.fieldDefaultValueChanged(fieldIndex, event);\n } else {\n const [fieldIndex, optionIndex] = name.split('_');\n if (optionIndex) {\n this.fieldOptionChange(parseInt(fieldIndex), parseInt(optionIndex), event);\n } else {\n this.fieldLabelChange(parseInt(fieldIndex), event);\n }\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 === 'title' || name === 'description') {\n this.watchFields = {\n ...this.watchFields,\n [name]: value,\n };\n }\n }\n\n swapFields(event) {\n const { oldIndex, newIndex } = event;\n if (oldIndex == null || newIndex == null || oldIndex === newIndex) {\n return;\n }\n console.log('###swapFields', oldIndex, newIndex);\n // Create a copy of the current fields array\n const updatedFields = [...this.formFields];\n\n // Remove the dragged item from its old position\n const [draggedItem] = updatedFields.splice(oldIndex, 1);\n\n // Insert the dragged item at its new position\n updatedFields.splice(newIndex, 0, draggedItem);\n\n // Recalculate order for each field (starting at 1 as required)\n updatedFields.forEach((field, index) => {\n field.order = index + 1;\n });\n\n // Update state and trigger UI re-render\n this.formFields = updatedFields;\n this.formFieldsChangedHandler(this.formFields);\n }\n\n fieldToggle(index) {\n this.formFields = this.formFields.map((f, i) => {\n if (index == i) {\n f.isOpen = !f.isOpen;\n }\n return f;\n });\n this.formFieldsChangedHandler(this.formFields);\n }\n fieldRemove(index) {\n this.formFields = this.formFields.filter((_, i) => i !== index);\n this.formFieldsChangedHandler(this.formFields);\n }\n\n fieldRequired(index) {\n this.formFields = this.formFields.map((field, i) => {\n if (i === index) {\n field.required = !field.required;\n }\n return field;\n });\n this.formFieldsChangedHandler(this.formFields);\n }\n fieldLabelChange(ind, event) {\n const target = event.detail;\n this.formFields = this.formFields.map((field, i) => {\n if (i === ind) {\n const label = target.value;\n return {\n ...field,\n label: label,\n };\n }\n return field;\n });\n this.formFieldsChangedHandler(this.formFields);\n }\n fieldOptionAdd(index) {\n this.formFields = this.formFields.map((field, i) => {\n if (i === index) {\n if (!field.options) {\n field.options = [];\n }\n field.options = [...field.options, ''];\n }\n return field;\n });\n this.formFieldsChangedHandler(this.formFields);\n }\n\n fieldOptionRemove(fieldIndex, index) {\n this.formFields = this.formFields.map((field, i) => {\n if (i === fieldIndex) {\n if (!field.options) {\n field.options = [];\n }\n field.options = field.options.filter((_, i) => i !== index);\n }\n return field;\n });\n this.formFieldsChangedHandler(this.formFields);\n }\n fieldOptionChange(fieldIndex, index, event) {\n this.formFields = this.formFields.map((field, i) => {\n if (i === fieldIndex) {\n if (!field.options) {\n field.options = [];\n }\n field.options = field.options.map((o, i) => {\n if (i === index) {\n o = event.detail.value;\n }\n return o;\n });\n }\n return field;\n });\n this.formFieldsChangedHandler(this.formFields);\n }\n\n fieldDefaultValueChanged(index, event) {\n this.formFields = this.formFields.map((field, i) => {\n if (i === index) {\n field.default = event.detail.value;\n }\n return field;\n });\n this.formFieldsChangedHandler(this.formFields);\n }\n\n @RegisterComponent<NylasBookingFormConfig, NylasSchedulerConfigConnector, Exclude<NylasSchedulerEditor['stores'], undefined>>({\n name: 'nylas-booking-form-config',\n stateToProps: new Map([\n ['schedulerConfig.selectedConfiguration', 'selectedConfiguration'],\n ['schedulerConfig.selectedLanguage', 'selectedLanguage'],\n ]),\n fireRegisterEvent: true,\n })\n render() {\n return (\n <Host>\n <div class=\"nylas-booking-form-config\" part=\"nbfc\">\n <div class=\"header\" part=\"nbfc__header\">\n <div class=\"header_text\">\n <h3>{i18next.t('nylasBookingFormConfig.headerTitle')}</h3>\n <p>{i18next.t('nylasBookingFormConfig.headerSubTitle')}</p>\n </div>\n <div class=\"header_action\">\n <select-dropdown\n name=\"add-field\"\n exportparts=\"sd_dropdown: nbfc__add_field, sd_dropdown-button: nbfc__add_field-button, sd_dropdown-content: nbfc__add_field-dropdown-content\"\n options={this.fieldTypes}\n withSearch={false}\n withChevron={false}\n dropdownButtonText={i18next.t('nylasBookingFormConfig.dropdownButtonText')}\n >\n <span slot=\"select-icon\">\n <plus-icon width=\"15\" height=\"15\"></plus-icon>\n </span>\n </select-dropdown>\n </div>\n </div>\n <div class=\"content\">\n <div class=\"additional_fields static_fields\" part=\"nbfc__static_fields\">\n {this.staticFields.map((field, i) => {\n return (\n <div class={`form-field draggable ${field.readonly && 'fixed'}`} part=\"nbfc__form_field\" key={i}>\n <div class=\"form-field_header\" part=\"nbfc__form_field-header\">\n <span class=\"dragable\">\n <dragable-icon width=\"24\" height=\"25\"></dragable-icon>\n </span>\n <div class=\"form-field_header_text\">\n <h4>{i18next.t(`nylasBookingFormConfig.fieldLabel.${field.fieldLabelKey}`)}</h4>\n <p>{field.typeLabel}</p>\n </div>\n <div class=\"form-field_header_actions\">\n <span class={`is-required`}>{field.required ? i18next.t('required') : i18next.t('optional')}</span>\n <span\n class={`chevron ${field.isOpen ? 'open' : 'closed'}`}\n onClick={() => {\n this.fieldToggle(i);\n }}\n >\n <chevron-icon width=\"24\" height=\"24\" />\n </span>\n </div>\n </div>\n <div class={`form-field_content ${!field.isOpen && 'hidden'}`} part=\"nbfc__form_field-content\">\n <div class=\"inputs\">\n <input-component\n class={'label-input'}\n name={`${i}`}\n key={i}\n label={i18next.t('nylasBookingFormConfig.label')}\n required={false}\n readOnly={field.readonly}\n defaultValue={field.label}\n >\n <div class=\"required-input\" slot=\"additional-input\">\n <input\n type=\"checkbox\"\n name={`required_${field.order}`}\n id={`required_${field.order}`}\n onClick={() => {\n this.fieldRequired(i);\n }}\n checked={field.required}\n disabled={field.readonly}\n />\n\n <label htmlFor={`required_${field.order}`} aria-label=\"Required\">\n {i18next.t('required')}\n </label>\n </div>\n </input-component>\n </div>\n </div>\n </div>\n );\n })}\n </div>\n <div id=\"fields\" class=\"additional_fields\" part=\"nbfc__additional_fields\">\n {this.formFields?.map((field, i) => {\n return (\n <div class={`form-field draggable ${field?.readonly ? 'fixed' : ''}`} part=\"nbfc__form_field\" key={field.key}>\n <div class=\"form-field_header\" part=\"nbfc__form_field-header\">\n <span class=\"dragable\">\n <dragable-icon width=\"24\" height=\"25\"></dragable-icon>\n </span>\n <div class=\"form-field_header_text\">\n <h4>{i18next.t(`nylasBookingFormConfig.fieldLabel.${field.fieldLabelKey}`)}</h4>\n <p>{field.typeLabel}</p>\n </div>\n <div class=\"form-field_header_actions\">\n <span class={`is-required`}>{field.required ? i18next.t('required') : i18next.t('optional')}</span>\n {!field.readonly && (\n <button\n onClick={() => {\n const title = this.watchFields.title;\n const description = this.watchFields.description;\n if (title && field.key && title.includes(field.key)) {\n field.error = i18next.t('nylasBookingFormConfig.fieldInTitleError');\n this.formFields = [...this.formFields];\n this.formFieldsChangedHandler(this.formFields);\n setTimeout(() => {\n field.error = '';\n this.formFields = [...this.formFields];\n this.formFieldsChangedHandler(this.formFields);\n }, 3000);\n return;\n }\n if (description && field.key && description.includes(field.key)) {\n field.error = i18next.t('nylasBookingFormConfig.fieldInDescriptionError');\n this.formFields = [...this.formFields];\n this.formFieldsChangedHandler(this.formFields);\n setTimeout(() => {\n field.error = '';\n this.formFields = [...this.formFields];\n this.formFieldsChangedHandler(this.formFields);\n }, 3000);\n return;\n }\n this.fieldRemove(i);\n }}\n >\n <close-icon />\n </button>\n )}\n <span\n class={`chevron ${field.isOpen ? 'open' : 'closed'}`}\n onClick={() => {\n this.fieldToggle(i);\n }}\n >\n <chevron-icon width=\"24\" height=\"24\" />\n </span>\n </div>\n </div>\n <span\n class={{\n 'error': true,\n 'fade-out': !field?.error || field.error === '',\n }}\n >\n {field.error}\n </span>\n <div class={`form-field_content ${!field.isOpen && 'hidden'}`} part=\"nbfc__form_field-content\">\n <div class=\"inputs\">\n <input-component\n class={'label-input'}\n name={`${i}`}\n key={`${i}-${field.key}-label`}\n label={i18next.t('nylasBookingFormConfig.label')}\n required={false}\n readOnly={field.readonly}\n defaultValue={field.label}\n >\n <div class=\"required-input\" slot=\"additional-input\">\n <input\n type=\"checkbox\"\n name={`required_${i}`}\n id={`required_${i}`}\n onClick={() => {\n this.fieldRequired(i);\n }}\n checked={field.required}\n disabled={field.readonly}\n />\n\n <label htmlFor={`required_${i}`} aria-label=\"Required\">\n {i18next.t('required')}\n </label>\n </div>\n </input-component>\n {!field.readonly && field.type !== 'date' && (\n <input-component\n class={'default-value'}\n name={`default-value-${i}`}\n key={`${i}-${field.key}-default-value`}\n label={i18next.t('nylasBookingFormConfig.defaultValue')}\n required={false}\n readOnly={field.readonly}\n defaultValue={field.default}\n />\n )}\n {!field.readonly && field.type === 'date' && (\n <nylas-date-component\n class={'default-value'}\n name={`default-value-${i}`}\n key={`${i}-${field.key}-default-value`}\n label={i18next.t('nylasBookingFormConfig.defaultValue')}\n required={false}\n readOnly={field.readonly}\n defaultValue={field.default}\n />\n )}\n </div>\n {field.options != undefined && (\n <div class=\"options-container\">\n <h4>{i18next.t('nylasBookingFormConfig.allOptionsHeader')}</h4>\n <div class=\"options\">\n {field.options.map((o, j) => {\n return (\n <div class=\"option\">\n <input-component key={j} name={`${i}_${j}`} label={field.typeLabel + ' option ' + (j + 1)} required={true} defaultValue={o}>\n {j > 1 && (\n <div class=\"required-input\" slot=\"additional-input\">\n <button\n onClick={() => {\n this.fieldOptionRemove(i, j);\n }}\n >\n <close-icon />\n </button>\n </div>\n )}\n </input-component>\n </div>\n );\n })}\n </div>\n <button\n onClick={() => {\n this.fieldOptionAdd(i);\n }}\n part=\"nap__add-time-range\"\n >\n <add-circle-icon /> {i18next.t('nylasBookingFormConfig.addOption')}\n </button>\n </div>\n )}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/connector/nylas-connector/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAGtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAIpE,MAAM,OAAO,cAAc;IAWzB,YACE,MAAuB,EACvB,SAAwB,EACxB,cAAkC,EAClC,mBAA4C,EAC5C,yBAAwD,EACxD,kBAA0B,0BAA0B;QAEpD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QAC/C,IAAI,CAAC,yBAAyB,GAAG,yBAAyB,CAAC;IAC7D,CAAC;IAEM,IAAI;QACT,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAC/B,CAAC;IAED,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,IAAW,cAAc;QACvB,OAAO,IAAI,CAAC,mBAAmB,CAAC;IAClC,CAAC;IAED,IAAW,oBAAoB;QAC7B,OAAO,IAAI,CAAC,yBAAyB,CAAC;IACxC,CAAC;IAED,IAAW,IAAI;QACb,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,cAAc,CAAC;QAC7B,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAClF,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,IAAW,SAAS;QAClB,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,sBAAsB,CAAC;QACrC,CAAC;QACD,IAAI,CAAC,sBAAsB,GAAG,IAAI,yBAAyB,CAAC;YAC1D,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,cAAc,EAAE,IAAI,CAAC,cAAc;SACpC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,sBAAsB,CAAC;IACrC,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAEM,WAAW;QAChB,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;IAEM,KAAK,CAAC,MAAM;QACjB,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QAC9B,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;CACF","sourcesContent":["import { RouterInterface } from '@/routers/router-interface';\nimport { NylasAuthStoreType } from '@/stores/auth-store';\nimport { NylasSchedulerConfigStoreType } from '@/stores/scheduler-config-store';\nimport { NylasSchedulerStoreType } from '@/stores/scheduler-store';\nimport { debug } from '@/utils/utils';\nimport type { NylasAuthType } from '@nylas/core';\nimport { NylasConnectorInterface } from '../connector-interface';\nimport { NylasAuthConnector } from '../shared/api/auth';\nimport { NylaSchedulerAPIConnector } from '../shared/api/scheduler';\n/**\n * Base class for the Nylas connector.\n */\nexport class NylasConnector implements NylasConnectorInterface {\n public router: RouterInterface;\n public nylasAuth: NylasAuthType;\n public nylasAuthStore: NylasAuthStoreType;\n public nylasSchedulerStore: NylasSchedulerStoreType;\n public nylasSchedulerConfigStore: NylasSchedulerConfigStoreType;\n public schedulerAPIURL: string;\n\n private _authConnector: NylasAuthConnector | undefined;\n private _schedulerAPIConnector: NylaSchedulerAPIConnector | undefined;\n\n constructor(\n router: RouterInterface,\n nylasAuth: NylasAuthType,\n nylasAuthStore: NylasAuthStoreType,\n nylasSchedulerStore: NylasSchedulerStoreType,\n nylasSchedulerConfigStore: NylasSchedulerConfigStoreType,\n schedulerAPIURL: string = 'https://api.us.nylas.com',\n ) {\n this.router = router;\n this.schedulerAPIURL = schedulerAPIURL;\n this.nylasAuth = nylasAuth;\n this.nylasAuthStore = nylasAuthStore;\n this.nylasSchedulerStore = nylasSchedulerStore;\n this.nylasSchedulerConfigStore = nylasSchedulerConfigStore;\n }\n\n public init() {\n debug('NylasConnector init');\n }\n\n public get authStore() {\n return this.nylasAuthStore;\n }\n\n public get schedulerStore() {\n return this.nylasSchedulerStore;\n }\n\n public get schedulerConfigStore() {\n return this.nylasSchedulerConfigStore;\n }\n\n public get auth() {\n if (this._authConnector) {\n return this._authConnector;\n }\n this._authConnector = new NylasAuthConnector(this.nylasAuth, this.nylasAuthStore);\n return this._authConnector;\n }\n\n public get scheduler() {\n if (this._schedulerAPIConnector) {\n return this._schedulerAPIConnector;\n }\n this._schedulerAPIConnector = new NylaSchedulerAPIConnector({\n schedulerAPIURL: this.schedulerAPIURL,\n schedulerStore: this.schedulerStore,\n });\n return this._schedulerAPIConnector;\n }\n\n public getAuth() {\n return this.nylasAuth;\n }\n\n public resetStores() {\n this.nylasAuthStore.reset();\n }\n\n public async logout() {\n await this.nylasAuth.logout();\n this.resetStores();\n }\n}\n\nexport type PublicMethods<T> = {\n [K in keyof T]: T[K] extends Function ? (string extends K ? never : K) : never;\n}[keyof T];\n\nexport type NylasConnectorPublicMethods = PublicMethods<NylasConnector>;\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/connector/nylas-connector/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAGtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAIpE,MAAM,OAAO,cAAc;IAWzB,YACE,MAAuB,EACvB,SAAwB,EACxB,cAAkC,EAClC,mBAA4C,EAC5C,yBAAwD,EACxD,kBAA0B,0BAA0B;QAEpD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QAC/C,IAAI,CAAC,yBAAyB,GAAG,yBAAyB,CAAC;IAC7D,CAAC;IAEM,IAAI;QACT,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAC/B,CAAC;IAED,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,IAAW,cAAc;QACvB,OAAO,IAAI,CAAC,mBAAmB,CAAC;IAClC,CAAC;IAED,IAAW,oBAAoB;QAC7B,OAAO,IAAI,CAAC,yBAAyB,CAAC;IACxC,CAAC;IAED,IAAW,IAAI;QACb,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,cAAc,CAAC;QAC7B,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAClF,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,IAAW,SAAS;QAClB,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,sBAAsB,CAAC;QACrC,CAAC;QACD,IAAI,CAAC,sBAAsB,GAAG,IAAI,yBAAyB,CAAC;YAC1D,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,cAAc,EAAE,IAAI,CAAC,cAAc;SACpC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,sBAAsB,CAAC;IACrC,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAEM,WAAW;QAChB,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;IAEM,KAAK,CAAC,MAAM;QACjB,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QAC9B,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;CACF","sourcesContent":["import { RouterInterface } from '@/routers/router-interface';\nimport { NylasAuthStoreType } from '../../stores/auth-store';\nimport { NylasSchedulerConfigStoreType } from '../../stores/scheduler-config-store';\nimport { NylasSchedulerStoreType } from '../../stores/scheduler-store';\nimport { debug } from '@/utils/utils';\nimport type { NylasAuthType } from '@nylas/core';\nimport { NylasConnectorInterface } from '../connector-interface';\nimport { NylasAuthConnector } from '../shared/api/auth';\nimport { NylaSchedulerAPIConnector } from '../shared/api/scheduler';\n/**\n * Base class for the Nylas connector.\n */\nexport class NylasConnector implements NylasConnectorInterface {\n public router: RouterInterface;\n public nylasAuth: NylasAuthType;\n public nylasAuthStore: NylasAuthStoreType;\n public nylasSchedulerStore: NylasSchedulerStoreType;\n public nylasSchedulerConfigStore: NylasSchedulerConfigStoreType;\n public schedulerAPIURL: string;\n\n private _authConnector: NylasAuthConnector | undefined;\n private _schedulerAPIConnector: NylaSchedulerAPIConnector | undefined;\n\n constructor(\n router: RouterInterface,\n nylasAuth: NylasAuthType,\n nylasAuthStore: NylasAuthStoreType,\n nylasSchedulerStore: NylasSchedulerStoreType,\n nylasSchedulerConfigStore: NylasSchedulerConfigStoreType,\n schedulerAPIURL: string = 'https://api.us.nylas.com',\n ) {\n this.router = router;\n this.schedulerAPIURL = schedulerAPIURL;\n this.nylasAuth = nylasAuth;\n this.nylasAuthStore = nylasAuthStore;\n this.nylasSchedulerStore = nylasSchedulerStore;\n this.nylasSchedulerConfigStore = nylasSchedulerConfigStore;\n }\n\n public init() {\n debug('NylasConnector init');\n }\n\n public get authStore() {\n return this.nylasAuthStore;\n }\n\n public get schedulerStore() {\n return this.nylasSchedulerStore;\n }\n\n public get schedulerConfigStore() {\n return this.nylasSchedulerConfigStore;\n }\n\n public get auth() {\n if (this._authConnector) {\n return this._authConnector;\n }\n this._authConnector = new NylasAuthConnector(this.nylasAuth, this.nylasAuthStore);\n return this._authConnector;\n }\n\n public get scheduler() {\n if (this._schedulerAPIConnector) {\n return this._schedulerAPIConnector;\n }\n this._schedulerAPIConnector = new NylaSchedulerAPIConnector({\n schedulerAPIURL: this.schedulerAPIURL,\n schedulerStore: this.schedulerStore,\n });\n return this._schedulerAPIConnector;\n }\n\n public getAuth() {\n return this.nylasAuth;\n }\n\n public resetStores() {\n this.nylasAuthStore.reset();\n }\n\n public async logout() {\n await this.nylasAuth.logout();\n this.resetStores();\n }\n}\n\nexport type PublicMethods<T> = {\n [K in keyof T]: T[K] extends Function ? (string extends K ? never : K) : never;\n}[keyof T];\n\nexport type NylasConnectorPublicMethods = PublicMethods<NylasConnector>;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/connector/nylas-scheduler-config-connector/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,gCAAgC,EAAE,MAAM,gCAAgC,CAAC;AAOlF,MAAM,OAAO,6BAA6B;IAMxC,YAAY,EAAE,eAAe,EAAE,yBAAyB,EAAwC;QAC9F,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,yBAAyB,GAAG,yBAAyB,CAAC;IAC7D,CAAC;IAEM,IAAI;QACT,KAAK,CAAC,oCAAoC,CAAC,CAAC;IAC9C,CAAC;IAED,IAAW,oBAAoB;QAC7B,OAAO,IAAI,CAAC,yBAAyB,CAAC;IACxC,CAAC;IAED,IAAW,eAAe;QACxB,IAAI,IAAI,CAAC,yBAAyB,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,yBAAyB,CAAC;QACxC,CAAC;QAED,IAAI,CAAC,yBAAyB,GAAG,IAAI,gCAAgC,CAAC;YACpE,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,yBAAyB,EAAE,IAAI,CAAC,yBAAyB;SAC1D,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,yBAAyB,CAAC;IACxC,CAAC;IAEM,WAAW;QAChB,KAAK,CAAC,2CAA2C,CAAC,CAAC;QACnD,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,CAAC;IACzC,CAAC;IAEM,KAAK,CAAC,MAAM;QACjB,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC9C,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;CACF","sourcesContent":["import { NylasApiRequest } from '@/common/nylas-api-request';\nimport { NylasSchedulerConfigStoreType } from '@/stores/scheduler-config-store';\nimport { debug } from '@/utils/utils';\nimport { NylasSchedulerConfigAPIConnector } from '../shared/api/scheduler-config';\n\ntype NylasSchedulerConfigConnectorOptions = {\n nylasSchedulerConfigStore: NylasSchedulerConfigStoreType;\n nylasApiRequest?: NylasApiRequest;\n};\n\nexport class NylasSchedulerConfigConnector {\n public nylasApiRequest?: NylasApiRequest;\n public nylasSchedulerConfigStore: NylasSchedulerConfigStoreType;\n\n private _schedulerConfigConnector: NylasSchedulerConfigAPIConnector | undefined;\n\n constructor({ nylasApiRequest, nylasSchedulerConfigStore }: NylasSchedulerConfigConnectorOptions) {\n this.nylasApiRequest = nylasApiRequest;\n this.nylasSchedulerConfigStore = nylasSchedulerConfigStore;\n }\n\n public init() {\n debug('NylasSchedulerConfigConnector init');\n }\n\n public get schedulerConfigStore() {\n return this.nylasSchedulerConfigStore;\n }\n\n public get schedulerConfig() {\n if (this._schedulerConfigConnector) {\n return this._schedulerConfigConnector;\n }\n\n this._schedulerConfigConnector = new NylasSchedulerConfigAPIConnector({\n nylasApiRequest: this.nylasApiRequest,\n nylasSchedulerConfigStore: this.nylasSchedulerConfigStore,\n });\n return this._schedulerConfigConnector;\n }\n\n public resetStores() {\n debug('NylasSchedulerConfigConnector resetStores');\n this.nylasSchedulerConfigStore.reset();\n }\n\n public async logout() {\n debug('NylasSchedulerConfigConnector logout');\n this.resetStores();\n }\n}\n\nexport type PublicMethods<T> = {\n [K in keyof T]: T[K] extends Function ? (string extends K ? never : K) : never;\n}[keyof T];\n\nexport type NylasSchedulerConfigConnectorPublicMethods = PublicMethods<NylasSchedulerConfigConnector>;\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/connector/nylas-scheduler-config-connector/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,gCAAgC,EAAE,MAAM,gCAAgC,CAAC;AAOlF,MAAM,OAAO,6BAA6B;IAMxC,YAAY,EAAE,eAAe,EAAE,yBAAyB,EAAwC;QAC9F,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,yBAAyB,GAAG,yBAAyB,CAAC;IAC7D,CAAC;IAEM,IAAI;QACT,KAAK,CAAC,oCAAoC,CAAC,CAAC;IAC9C,CAAC;IAED,IAAW,oBAAoB;QAC7B,OAAO,IAAI,CAAC,yBAAyB,CAAC;IACxC,CAAC;IAED,IAAW,eAAe;QACxB,IAAI,IAAI,CAAC,yBAAyB,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,yBAAyB,CAAC;QACxC,CAAC;QAED,IAAI,CAAC,yBAAyB,GAAG,IAAI,gCAAgC,CAAC;YACpE,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,yBAAyB,EAAE,IAAI,CAAC,yBAAyB;SAC1D,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,yBAAyB,CAAC;IACxC,CAAC;IAEM,WAAW;QAChB,KAAK,CAAC,2CAA2C,CAAC,CAAC;QACnD,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,CAAC;IACzC,CAAC;IAEM,KAAK,CAAC,MAAM;QACjB,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC9C,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;CACF","sourcesContent":["import { NylasApiRequest } from '@/common/nylas-api-request';\nimport { NylasSchedulerConfigStoreType } from '../../stores/scheduler-config-store';\nimport { debug } from '@/utils/utils';\nimport { NylasSchedulerConfigAPIConnector } from '../shared/api/scheduler-config';\n\ntype NylasSchedulerConfigConnectorOptions = {\n nylasSchedulerConfigStore: NylasSchedulerConfigStoreType;\n nylasApiRequest?: NylasApiRequest;\n};\n\nexport class NylasSchedulerConfigConnector {\n public nylasApiRequest?: NylasApiRequest;\n public nylasSchedulerConfigStore: NylasSchedulerConfigStoreType;\n\n private _schedulerConfigConnector: NylasSchedulerConfigAPIConnector | undefined;\n\n constructor({ nylasApiRequest, nylasSchedulerConfigStore }: NylasSchedulerConfigConnectorOptions) {\n this.nylasApiRequest = nylasApiRequest;\n this.nylasSchedulerConfigStore = nylasSchedulerConfigStore;\n }\n\n public init() {\n debug('NylasSchedulerConfigConnector init');\n }\n\n public get schedulerConfigStore() {\n return this.nylasSchedulerConfigStore;\n }\n\n public get schedulerConfig() {\n if (this._schedulerConfigConnector) {\n return this._schedulerConfigConnector;\n }\n\n this._schedulerConfigConnector = new NylasSchedulerConfigAPIConnector({\n nylasApiRequest: this.nylasApiRequest,\n nylasSchedulerConfigStore: this.nylasSchedulerConfigStore,\n });\n return this._schedulerConfigConnector;\n }\n\n public resetStores() {\n debug('NylasSchedulerConfigConnector resetStores');\n this.nylasSchedulerConfigStore.reset();\n }\n\n public async logout() {\n debug('NylasSchedulerConfigConnector logout');\n this.resetStores();\n }\n}\n\nexport type PublicMethods<T> = {\n [K in keyof T]: T[K] extends Function ? (string extends K ? never : K) : never;\n}[keyof T];\n\nexport type NylasSchedulerConfigConnectorPublicMethods = PublicMethods<NylasSchedulerConfigConnector>;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/connector/nylas-scheduler-connector/errors/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { APIErrorType, ComponentErrorType, ErrorCategory, ErrorDetails } from '@/types/index';\n\nexport class Errors {\n component = (_title: string): Record<ComponentErrorType, (message?: string) => ErrorDetails> => {\n const category = ErrorCategory.Component;\n const title = `${_title} Error`;\n return {\n endtime_not_in_future: (message: string = '\"endtime\" can not be in the future') => {\n return {\n title,\n message,\n category,\n };\n },\n no_booking_info: (message: string = 'No booking info provided') => {\n return {\n title,\n message,\n category,\n };\n },\n no_timeslot_selected: (message: string = 'No timeslot selected') => {\n return {\n title,\n message,\n category,\n };\n },\n no_timezone_selected: (message: string = 'No timezone selected') => {\n return {\n title,\n message,\n category,\n };\n },\n no_booking_id: (message: string = 'No booking id provided') => {\n return {\n title,\n message,\n category,\n };\n },\n no_salt: (message: string = 'No salt provided') => {\n return {\n title,\n message,\n category,\n };\n },\n invalid_start_time: (message: string = 'Invalid start time') => {\n return {\n title,\n message,\n category,\n };\n },\n invalid_end_time: (message: string = 'Invalid end time') => {\n return {\n title,\n message,\n category,\n };\n },\n invalid_timezone: (message: string = 'Invalid timezone') => {\n return {\n title,\n message,\n category,\n };\n },\n no_config_id: (message: string = 'No configuration id provided') => {\n return {\n title,\n message,\n category,\n };\n },\n };\n };\n\n api = (_title: string): Record<APIErrorType, (message: string) => ErrorDetails> => {\n const category = ErrorCategory.Api;\n const title = `${_title} Error`;\n\n return {\n invalid_session: (message: string) => {\n return {\n title,\n message,\n category,\n };\n },\n general_error: (message: string) => {\n return {\n title,\n message,\n category,\n };\n },\n internal_error: (message: string) => {\n return {\n title,\n message,\n category,\n };\n },\n invalid_request_error: (message: string) => {\n return {\n title,\n message,\n category,\n };\n },\n timeslot_not_available: (message: string) => {\n return {\n title,\n message,\n category,\n };\n },\n provider_error: (message: string) => {\n return {\n title,\n message,\n category,\n };\n },\n not_found_error: (message: string) => {\n return {\n title,\n message,\n category,\n };\n },\n };\n };\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/connector/nylas-scheduler-connector/errors/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { ComponentErrorType, ErrorCategory, ErrorDetails } from '@/types/index';\nimport { APIErrorType } from '@nylas/core';\nexport class Errors {\n component = (_title: string): Record<ComponentErrorType, (message?: string) => ErrorDetails> => {\n const category = ErrorCategory.Component;\n const title = `${_title} Error`;\n return {\n endtime_not_in_future: (message: string = '\"endtime\" can not be in the future') => {\n return {\n title,\n message,\n category,\n };\n },\n no_booking_info: (message: string = 'No booking info provided') => {\n return {\n title,\n message,\n category,\n };\n },\n no_timeslot_selected: (message: string = 'No timeslot selected') => {\n return {\n title,\n message,\n category,\n };\n },\n no_timezone_selected: (message: string = 'No timezone selected') => {\n return {\n title,\n message,\n category,\n };\n },\n no_booking_id: (message: string = 'No booking id provided') => {\n return {\n title,\n message,\n category,\n };\n },\n no_salt: (message: string = 'No salt provided') => {\n return {\n title,\n message,\n category,\n };\n },\n invalid_start_time: (message: string = 'Invalid start time') => {\n return {\n title,\n message,\n category,\n };\n },\n invalid_end_time: (message: string = 'Invalid end time') => {\n return {\n title,\n message,\n category,\n };\n },\n invalid_timezone: (message: string = 'Invalid timezone') => {\n return {\n title,\n message,\n category,\n };\n },\n no_config_id: (message: string = 'No configuration id provided') => {\n return {\n title,\n message,\n category,\n };\n },\n };\n };\n\n api = (_title: string): Record<APIErrorType, (message: string) => ErrorDetails> => {\n const category = ErrorCategory.Api;\n const title = `${_title} Error`;\n\n return {\n invalid_session: (message: string) => {\n return {\n title,\n message,\n category,\n };\n },\n general_error: (message: string) => {\n return {\n title,\n message,\n category,\n };\n },\n internal_error: (message: string) => {\n return {\n title,\n message,\n category,\n };\n },\n invalid_request_error: (message: string) => {\n return {\n title,\n message,\n category,\n };\n },\n timeslot_not_available: (message: string) => {\n return {\n title,\n message,\n category,\n };\n },\n provider_error: (message: string) => {\n return {\n title,\n message,\n category,\n };\n },\n not_found_error: (message: string) => {\n return {\n title,\n message,\n category,\n };\n },\n };\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../../../src/connector/shared/api/scheduler.ts"],"names":[],"mappings":"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","sourcesContent":["import { AvailabilityResponse, NylasSchedulerBookingDataWithFlatFields, NylasEvent, UISettingsResponse } from '@/common/types';\nimport { NylasSchedulerStoreType } from '../../../components';\nimport type { NylasErrorResponse, NylasResponse, NylasSchedulerBookingData, NylasSchedulerResponse, Timeslot } from '@nylas/core';\nimport { Errors } from '@/connector/nylas-scheduler-connector/errors';\nimport { addDaysToCurrentDate } from '@/utils/utils';\nimport i18next from '@/utils/i18n';\nimport { APIErrorType } from '@nylas/core';\n\ntype NylasSchedulerAPIConnectorOptions = {\n schedulerAPIURL: string;\n schedulerStore: NylasSchedulerStoreType;\n sessionId?: string;\n configId?: string;\n slug?: string;\n clientId?: string;\n};\n\n/**\n * NylaSchedulerConnector\n * This class is used to make API requests to the scheduler.\n */\nexport class NylaSchedulerAPIConnector {\n private schedulerStore: NylasSchedulerStoreType;\n private schedulerAPIURL: string;\n private sessionId: string | undefined;\n private configId: string | undefined;\n private slug: string | undefined;\n private clientId: string | undefined;\n private errors = new Errors();\n\n constructor({ schedulerAPIURL, schedulerStore, sessionId, configId, slug, clientId }: NylasSchedulerAPIConnectorOptions) {\n this.schedulerStore = schedulerStore;\n this.schedulerAPIURL = schedulerAPIURL;\n this.sessionId = sessionId;\n this.configId = configId;\n this.slug = slug;\n this.clientId = clientId;\n }\n\n private getHeaders() {\n return this.sessionId\n ? {\n Authorization: `Bearer ${this.sessionId}`,\n }\n : {};\n }\n\n /**\n * Makes an API request to the scheduler.\n * @param path The path to the API endpoint.\n * @param method The HTTP method.\n * @param body The request body (if any).\n * @returns {Promise<T>}\n */\n public async makeAPIRequest<T>(path: string, method: string, body: string | undefined, headers = {}): Promise<NylasResponse<T>> {\n try {\n const schedulerURL = new URL(this.schedulerAPIURL);\n const version = process.env.PACKAGE_VERSION || 'latest';\n schedulerURL.pathname = path;\n const response = await fetch(decodeURIComponent(schedulerURL.toString()), {\n method,\n headers: {\n 'Content-Type': 'application/json',\n 'Origin': window.location.origin,\n 'X-Source': 'nylas-scheduling',\n 'X-Nylas-Web-Elements-Version': version,\n ...headers,\n },\n body,\n });\n // The server returns a json object for errors: eg.\n // {\n // \"request_id\": \"<request_id>\",\n // \"error\": {\n // \"type\": \"not_found_error\",\n // \"message\": \"Session not found\"\n // }\n // }\n const data = await response.json();\n return data as NylasResponse<T>;\n } catch (error: any) {\n // NOTE: current server implementation doesn't return a JSON object for errors on some endpoints\n // handle this case by returning the error response as a string to be handled downstream\n return {\n error: {\n message: error.message,\n title: 'API request failed',\n type: 'api',\n },\n } as NylasErrorResponse;\n }\n }\n\n private getErrorMessage(error: NylasErrorResponse['error']) {\n let errorMessage = error?.message || error?.title || 'Something went wrong';\n if (error?.type === 'provider_error') {\n errorMessage = error?.provider_error?.error?.message || error?.provider_error?.error?.title || 'Something went wrong';\n }\n return errorMessage;\n }\n\n public setConfigId(configId: string) {\n this.configId = configId;\n }\n\n /**\n * Selects a date in the scheduler.\n */\n public selectDate(date: Date) {\n this.schedulerStore.set('selectedDate', date);\n this.schedulerStore.set('selectedTimeslot', null);\n }\n\n /**\n * Selects a time in the scheduler.\n */\n public selectTime(time: Timeslot) {\n this.schedulerStore.set('selectedTimeslot', time);\n }\n\n /**\n * Sets the timezone in the scheduler.\n */\n public selectTimezone(timezone: string) {\n this.schedulerStore.set('selectedTimezone', timezone);\n }\n\n /**\n * Sets the language in the scheduler.\n */\n public selectLanguage(language: string) {\n this.schedulerStore.set('selectedLanguage', language);\n i18next.changeLanguage(language);\n }\n\n /**\n * Toggles showBookingForm\n * @param value boolean\n */\n public async toggleAdditionalData(value: boolean) {\n if (!value) {\n // Refetch availability\n await this.refetchAvailability();\n }\n this.schedulerStore.set('showBookingForm', value);\n }\n\n /**\n * Set/update the name of the participant booking the event.\n */\n public setParticipantName(name: string) {\n const { bookingInfo } = this.schedulerStore.state;\n this.schedulerStore.set('bookingInfo', {\n ...bookingInfo,\n primaryParticipant: {\n ...(bookingInfo?.primaryParticipant as NylasSchedulerBookingData['primaryParticipant']),\n name,\n },\n });\n }\n\n /**\n * Set/update the email of the participant booking the event.\n */\n public setParticipantEmail(email: string) {\n const { bookingInfo } = this.schedulerStore.state;\n this.schedulerStore.set('bookingInfo', {\n ...bookingInfo,\n primaryParticipant: {\n ...(bookingInfo?.primaryParticipant as NylasSchedulerBookingData['primaryParticipant']),\n email,\n },\n });\n }\n\n private async refetchAvailability() {\n const today = new Date();\n // Refetch availability\n const startTime = new Date(today.getFullYear(), today.getMonth(), 1).getTime() / 1000;\n const startTimeWithOffset = startTime < today.getTime() / 1000 ? Math.floor(today.getTime() / 1000) : startTime;\n const endTime = new Date(today.getFullYear(), today.getMonth() + 1, 1).getTime() / 1000;\n const result = await this.getAvailability(startTimeWithOffset, endTime);\n return result;\n }\n\n private async resetStoreStateAndFetchAvailability() {\n const today = new Date();\n // Refetch availability\n const result = await this.refetchAvailability();\n // Set selected date to first available date\n const firstAvailableDate = this.schedulerStore.get('availability').find((timeslot: any) => new Date(timeslot.start_time) > new Date());\n let _selectedDate = today;\n if (firstAvailableDate) {\n _selectedDate = firstAvailableDate.start_time;\n }\n this.schedulerStore.set('selectedDate', _selectedDate);\n // Reset store state\n this.schedulerStore.set('eventInfo', null);\n this.schedulerStore.set('showBookingForm', false);\n this.schedulerStore.set('selectedTimeslot', null);\n\n return result;\n }\n\n /**\n * Set reschedule booking id\n */\n public async setReschedule(bookingID: string) {\n this.schedulerStore.set('isLoading', true);\n const eventInfo = this.schedulerStore.state.eventInfo;\n if (eventInfo) {\n this.schedulerStore.set('reschedulingEventInfo', eventInfo);\n }\n this.schedulerStore.set('rescheduleBookingId', bookingID);\n await this.getUISettings();\n // Set reschedule booking id\n const result = await this.resetStoreStateAndFetchAvailability().finally(() => {\n this.schedulerStore.set('isLoading', false);\n });\n\n return result;\n }\n\n /**\n * Set cancel booking id\n */\n public async setCancel(bookingID: string) {\n this.schedulerStore.set('cancelBookingId', bookingID);\n }\n\n /**\n * Set reject booking id\n */\n public async setReject(bookingID: string) {\n this.schedulerStore.set('rejectBookingId', bookingID);\n }\n\n public async resetCancel() {\n const result = await this.resetStoreStateAndFetchAvailability();\n this.schedulerStore.set('cancelBookingId', '');\n this.schedulerStore.set('rejectBookingId', '');\n this.schedulerStore.set('cancelledEventInfo', null);\n return result;\n }\n\n public async goBack() {\n this.schedulerStore.set('cancelBookingId', '');\n return;\n }\n\n public async resetConfirm() {\n const result = await this.resetStoreStateAndFetchAvailability();\n this.schedulerStore.set('organizerConfirmationBookingId', '');\n this.schedulerStore.set('confirmedEventInfo', undefined);\n return result;\n }\n\n /**\n * Book the selected timeslot.\n * @param data The booking info.\n * @returns {Promise<NylasResponse<NylasEvent>>}\n */\n public async bookTimeslot(data?: NylasSchedulerBookingDataWithFlatFields & { timeslot?: Timeslot }): Promise<NylasSchedulerResponse<NylasEvent>> {\n this.schedulerStore.set('isLoading', true);\n const { selectedTimeslot, selectedTimezone, bookingInfo, selectedLanguage } = this.schedulerStore.state;\n\n if (!data && !bookingInfo) {\n return { error: this.errors.component(i18next.t('createBookingErrorTitle')).no_booking_info() };\n }\n\n const timeslot = data?.timeslot || selectedTimeslot;\n if (!timeslot) {\n return { error: this.errors.component(i18next.t('createBookingErrorTitle')).no_timeslot_selected() };\n }\n\n const timezone = data && data?.timezone ? data?.timezone : selectedTimezone;\n const language = selectedLanguage || 'en-US';\n\n if (!timezone) {\n return { error: this.errors.component(i18next.t('createBookingErrorTitle')).no_timezone_selected() };\n }\n\n const order = [...this.schedulerStore.get('availabilityOrderEmails')];\n\n let participantToBookWith = '';\n const emails = timeslot?.emails || [];\n\n const addFields = {};\n Object.entries(bookingInfo?.additionalFields || {}).forEach(([key, entry]) => {\n addFields[key] = (entry as { value: string; type?: string }).value;\n });\n\n const primaryGuest = data ? data?.primaryParticipant : bookingInfo?.primaryParticipant;\n const guests = data ? data?.guests || [] : bookingInfo?.guests || [];\n const additional_fields = data ? data?.additionalFields : addFields;\n\n const headers = this.getHeaders();\n const configIdParam =\n !this.sessionId && this.configId\n ? `?configuration_id=${this.configId}`\n : !this.sessionId && this.slug && this.clientId\n ? `?slug=${this.slug}&client_id=${this.clientId}`\n : '';\n const url = `/v3/scheduling/bookings${configIdParam}`;\n\n // If the order array is empty, make a single request without retries\n if (order.length === 0) {\n const response = await this.makeAPIRequest<NylasEvent>(\n decodeURIComponent(url),\n 'POST',\n JSON.stringify({\n additional_fields,\n additional_guests: guests,\n guest: { ...primaryGuest },\n start_time: timeslot.start_time.getTime() / 1000,\n end_time: timeslot.end_time.getTime() / 1000,\n timezone,\n event_id: timeslot?.event_id || undefined,\n master_id: timeslot?.master_id || undefined,\n calendar_id: timeslot?.calendar_id || undefined,\n email_language: this.getTwoLetterLanguageCode(language),\n }),\n headers,\n );\n\n this.schedulerStore.set('isLoading', false);\n if ('data' in response) {\n this.schedulerStore.set('eventInfo', response.data);\n return response;\n }\n return { error: response.error };\n }\n\n while (order.length > 0) {\n participantToBookWith = order.shift()!;\n\n if (!emails.includes(participantToBookWith)) {\n continue; // Skip if the email is not part of the timeslot\n }\n\n const response = await this.makeAPIRequest<NylasEvent>(\n decodeURIComponent(url),\n 'POST',\n JSON.stringify({\n participants: participantToBookWith ? [{ email: participantToBookWith }] : undefined,\n additional_fields,\n additional_guests: guests,\n guest: { ...primaryGuest },\n start_time: timeslot.start_time.getTime() / 1000,\n end_time: timeslot.end_time.getTime() / 1000,\n timezone: timezone,\n email_language: this.getTwoLetterLanguageCode(language),\n }),\n headers,\n );\n\n if ('data' in response) {\n // Successful booking\n this.schedulerStore.set('isLoading', false);\n this.schedulerStore.set('eventInfo', response?.data);\n return response;\n } else if (response.error?.message?.startsWith('The selected timeslot is unavailable')) {\n // Retry with the next email in the order\n continue;\n } else {\n // Return other errors\n this.schedulerStore.set('isLoading', false);\n const errorType = response.error?.type;\n let error = response.error;\n if (errorType && errorType in this.errors.api(i18next.t('createBookingErrorTitle'))) {\n const errorMessage = this.getErrorMessage(error);\n error = this.errors.api(i18next.t('createBookingErrorTitle'))[errorType as APIErrorType](errorMessage);\n }\n return { error };\n }\n }\n\n // If no emails in order succeed\n this.schedulerStore.set('isLoading', false);\n return {\n error: this.errors.api(i18next.t('createBookingErrorTitle')).timeslot_not_available('The selected timeslot is unavailable'),\n };\n }\n\n /**\n * Get UI settings for the scheduler.\n */\n public async getUISettings(): Promise<NylasSchedulerResponse<UISettingsResponse>> {\n this.schedulerStore.set('isLoading', true);\n const bookingId = this.schedulerStore.get('rescheduleBookingId');\n const headers = this.getHeaders();\n let configIdParam =\n !this.sessionId && this.configId\n ? `?configuration_id=${this.configId}`\n : !this.sessionId && this.slug && this.clientId\n ? `?slug=${this.slug}&client_id=${this.clientId}`\n : '';\n if (bookingId && !!configIdParam) {\n configIdParam += `&booking_id=${bookingId}`;\n } else if (bookingId) {\n configIdParam += `?booking_id=${bookingId}`;\n }\n\n const url = `/v3/scheduling/ui-settings${configIdParam}`;\n\n const response = await this.makeAPIRequest<UISettingsResponse>(url, 'GET', undefined, headers);\n if ('error' in response) {\n this.schedulerStore.set('isLoading', false);\n const errorType = response.error?.type;\n let error = response.error;\n if (errorType && errorType in this.errors.api(i18next.t('getUISettingErrorTitle'))) {\n error = this.errors.api(i18next.t('getUISettingErrorTitle'))[errorType as APIErrorType](error?.message || error?.title || 'Something went wrong');\n }\n return { error };\n }\n if ('data' in response) {\n this.schedulerStore.set('configSettings', response.data);\n }\n this.schedulerStore.set('isLoading', false);\n return response;\n }\n\n private getTwoLetterLanguageCode(language: string) {\n return language.split('-')[0];\n }\n\n private getStartTimeWithMinBookingNotice(startTime: number) {\n const scheduler = this.schedulerStore.get('configSettings')?.scheduler;\n const min_booking_notice = scheduler?.min_booking_notice;\n if (!min_booking_notice) {\n return startTime;\n }\n const today = new Date().getTime();\n\n if (startTime < (today + min_booking_notice * 60 * 1000) / 1000) {\n return Math.floor((today + min_booking_notice * 60 * 1000) / 1000);\n } else {\n return startTime;\n }\n }\n\n private getEndTimeForAvailableDaysInFuture(endTime: number) {\n const today = new Date();\n const availableDaysInFuture = this.schedulerStore.get('configSettings')?.scheduler?.available_days_in_future;\n const endTimeForAvailableDaysInFuture = Math.floor(addDaysToCurrentDate(today, availableDaysInFuture).getTime() / 1000);\n const endTimeWithOffset = Math.min(endTimeForAvailableDaysInFuture, endTime);\n return endTimeWithOffset;\n }\n\n /**\n * Gets the availability for a page.\n * @param startTime The start time.\n * @param endTime The end time.\n * @returns {Promise<AvailabilityResponse>}\n */\n public async getAvailability(startTime: number = 0, endTime: number = 0): Promise<NylasSchedulerResponse<AvailabilityResponse>> {\n this.schedulerStore.set('isLoading', true);\n const params = new URLSearchParams();\n const now = new Date();\n const nowTime = now.getTime();\n\n if (endTime && endTime < nowTime / 1000) {\n this.schedulerStore.set('isLoading', false);\n const error = this.errors.component(i18next.t('getAvailabilityErrorTitle')).endtime_not_in_future();\n return { error };\n }\n\n // Calculate the start of the current month if startTime is not provided\n if (!startTime) {\n const startOfMonth = new Date(now.getFullYear(), now.getMonth(), 1);\n startTime = Math.floor(startOfMonth.getTime() / 1000); // Convert to UNIX timestamp in seconds\n }\n\n // Calculate the end of the current month if endTime is not provided\n if (!endTime) {\n const endOfMonth = new Date(now.getFullYear(), now.getMonth() + 1, 0); // Setting day to 0 gets the last day of the previous month, so in this case, the last day of the current month\n endTime = Math.floor(endOfMonth.getTime() / 1000); // Convert to UNIX timestamp in seconds\n }\n\n endTime = this.getEndTimeForAvailableDaysInFuture(endTime);\n const startTimeWithMinBooking = this.getStartTimeWithMinBookingNotice(startTime);\n startTime = startTimeWithMinBooking;\n endTime = startTimeWithMinBooking > endTime ? startTimeWithMinBooking + 1 : endTime;\n\n params.append('start_time', encodeURIComponent(startTime.toString()));\n params.append('end_time', encodeURIComponent(endTime.toString()));\n if (this.configId && !this.sessionId) {\n params.append('configuration_id', encodeURIComponent(this.configId));\n } else if (this.slug && this.clientId && !this.sessionId) {\n params.append('slug', encodeURIComponent(this.slug));\n params.append('client_id', encodeURIComponent(this.clientId));\n }\n\n const rescheduleBookingId = this.schedulerStore.get('rescheduleBookingId');\n if (rescheduleBookingId) {\n params.append('booking_id', encodeURIComponent(rescheduleBookingId));\n }\n const queryString = params.toString();\n const url = `/v3/scheduling/availability${queryString ? `?${queryString}` : ''}`;\n const headers = this.getHeaders();\n const response = await this.makeAPIRequest<AvailabilityResponse>(decodeURIComponent(url), 'GET', undefined, headers);\n\n if ('error' in response) {\n this.schedulerStore.set('availability', []);\n this.schedulerStore.set('isLoading', false);\n const errorType = response.error?.type;\n let error = response.error;\n if (errorType && errorType in this.errors.api(i18next.t('getAvailabilityErrorTitle'))) {\n const errorMessage = this.getErrorMessage(error);\n error = this.errors.api(i18next.t('getAvailabilityErrorTitle'))[errorType as APIErrorType](errorMessage);\n }\n return { error };\n }\n\n if ('data' in response) {\n const availability =\n response.data?.time_slots?.map(timeslot => {\n return {\n ...timeslot,\n start_time: new Date(timeslot.start_time * 1000),\n end_time: new Date(timeslot.end_time * 1000),\n };\n }) || [];\n\n // Filter out timeslots that are in the past\n const availabilityTimeslotsFiltered = availability.filter(timeslot => timeslot.start_time.getTime() > nowTime);\n const availabilityTimeslotSorted = availabilityTimeslotsFiltered.sort((a, b) => a.start_time.getTime() - b.start_time.getTime());\n this.schedulerStore.set('availability', availabilityTimeslotSorted);\n const order = response.data?.order || [];\n this.schedulerStore.set('availabilityOrderEmails', order);\n }\n\n this.schedulerStore.set('isLoading', false);\n return response;\n }\n\n /**\n * Cancels a booking.\n * @param bookingId The booking ID.\n */\n public async cancelBooking(bookingId: string, reason: string): Promise<NylasSchedulerResponse<Partial<NylasEvent>>> {\n this.schedulerStore.set('isLoading', true);\n if (!bookingId) {\n return { error: this.errors.component(i18next.t('cancelBookingErrorTitle')).no_booking_id() };\n }\n const configIdParam =\n !this.sessionId && this.configId\n ? `?configuration_id=${this.configId}`\n : !this.sessionId && this.slug && this.clientId\n ? `?slug=${this.slug}&client_id=${this.clientId}`\n : '';\n const url = `/v3/scheduling/bookings/${bookingId}${configIdParam}`;\n const headers = this.getHeaders();\n const response = await this.makeAPIRequest<Partial<NylasEvent>>(\n decodeURIComponent(url),\n 'DELETE',\n JSON.stringify({\n action: 'cancel',\n cancellation_reason: reason,\n }),\n headers,\n );\n\n if ('error' in response) {\n this.schedulerStore.set('isLoading', false);\n const errorType = response.error?.type;\n let error = response.error;\n if (errorType && errorType in this.errors.api(i18next.t('cancelBookingErrorTitle'))) {\n const errorMessage = this.getErrorMessage(error);\n error = this.errors.api(i18next.t('cancelBookingErrorTitle'))[errorType as APIErrorType](errorMessage);\n }\n return { error };\n }\n\n this.schedulerStore.set('cancelledEventInfo', {\n booking_id: bookingId,\n });\n this.schedulerStore.set('rescheduleBookingId', '');\n this.schedulerStore.set('isLoading', false);\n return response;\n }\n\n /**\n * Reschedules a booking.\n * @param bookingId The booking ID.\n * @param data The booking info.\n * @returns {Promise<NylasResponse<NylasEvent>>}\n */\n public async rescheduleBooking(bookingId: string, data: NylasSchedulerBookingDataWithFlatFields): Promise<NylasSchedulerResponse<NylasEvent>> {\n this.schedulerStore.set('isLoading', true);\n if (!bookingId) {\n return { error: this.errors.component(i18next.t('rescheduleBookingErrorTitle')).no_booking_id() };\n }\n const apiErrors = this.errors.api(i18next.t('rescheduleBookingErrorTitle'));\n const componentErrors = this.errors.component(i18next.t('rescheduleBookingErrorTitle'));\n const { bookingInfo, selectedTimeslot, selectedTimezone, selectedLanguage } = this.schedulerStore.state;\n // Validate data\n const { startTime, endTime, timezone } = data;\n const start_time = startTime || selectedTimeslot?.start_time;\n\n if (!start_time) {\n return { error: componentErrors.invalid_start_time('Please pass \"startTime\" in data or set \"selectedTimeslot\" in the defaultSchedulerState.') };\n }\n const end_time = endTime || selectedTimeslot?.end_time;\n if (!end_time) {\n return { error: componentErrors.invalid_end_time('Please pass \"endTime\" in data or set \"selectedTimeslot\" in the defaultSchedulerState.') };\n }\n\n const order = this.schedulerStore.get('availabilityOrderEmails');\n let participantToBookWith = '';\n if (order.length > 0) {\n // Get the emails in the timeslot\n const emails = selectedTimeslot?.emails || [];\n for (let i = 0; i < order.length; i++) {\n if (emails.includes(order[i])) {\n participantToBookWith = order[i];\n break;\n }\n }\n }\n\n const time_zone = timezone || selectedTimezone;\n if (!time_zone) {\n return { error: componentErrors.invalid_timezone('Please pass \"timezone\" in data or set \"selectedTimezone\" in the defaultSchedulerState.') };\n }\n const addFields = {};\n Object.entries(bookingInfo?.additionalFields || {}).forEach(([key, entry]) => {\n addFields[key] = (entry as { value: string; type?: string }).value;\n });\n const primaryGuest = data ? data?.primaryParticipant : bookingInfo?.primaryParticipant;\n const guests = data ? data?.guests || [] : bookingInfo?.guests || [];\n const additional_fields = data ? data?.additionalFields : addFields;\n\n const configIdParam =\n !this.sessionId && this.configId\n ? `?configuration_id=${this.configId}`\n : !this.sessionId && this.slug && this.clientId\n ? `?slug=${this.slug}&client_id=${this.clientId}`\n : '';\n const url = `/v3/scheduling/bookings/${bookingId}${configIdParam}`;\n const headers = this.getHeaders();\n const response = await this.makeAPIRequest<NylasEvent>(\n decodeURIComponent(url),\n 'PATCH',\n JSON.stringify({\n start_time: start_time.getTime() / 1000,\n end_time: end_time.getTime() / 1000,\n timezone: time_zone,\n additional_fields,\n guest: { ...primaryGuest },\n additional_guests: guests,\n participants: participantToBookWith ? [{ email: participantToBookWith }] : undefined,\n email_language: this.getTwoLetterLanguageCode(selectedLanguage),\n }),\n headers,\n );\n\n if ('error' in response) {\n this.schedulerStore.set('isLoading', false);\n const errorType = response.error?.type;\n let error = response.error;\n if (errorType && errorType in apiErrors) {\n const errorMessage = this.getErrorMessage(error);\n error = apiErrors[errorType as APIErrorType](errorMessage);\n }\n return { error };\n }\n\n const eventInfo = this.schedulerStore.get('reschedulingEventInfo');\n if ('data' in response) {\n this.schedulerStore.set('eventInfo', response?.data);\n } else if (eventInfo) {\n this.schedulerStore.set('eventInfo', eventInfo);\n } else {\n // We should technically never reach this point\n const event = {\n booking_id: bookingId,\n } as NylasEvent;\n this.schedulerStore.set('eventInfo', event);\n }\n\n this.schedulerStore.set('isLoading', false);\n return response;\n }\n\n /**\n * Updates the booking.\n * @param bookingId The booking ID.\n */\n public async updateBooking(payload: { bookingId: string; status: 'confirmed' | 'cancelled'; reason?: string }): Promise<NylasSchedulerResponse<NylasEvent>> {\n this.schedulerStore.set('isLoading', true);\n const { bookingId, status, reason } = payload;\n const salt = this.schedulerStore.get('organizerConfirmationSalt');\n const errorTitle = status === 'confirmed' ? i18next.t('confirmBookingErrorTitle') : i18next.t('rejectBookingErrorTitle');\n\n if (!bookingId) {\n return { error: this.errors.component(errorTitle).no_booking_id() };\n }\n if (!salt) {\n return { error: this.errors.component(errorTitle).no_salt() };\n }\n\n const configIdParam =\n !this.sessionId && this.configId\n ? `?configuration_id=${this.configId}`\n : !this.sessionId && this.slug && this.clientId\n ? `?slug=${this.slug}&client_id=${this.clientId}`\n : '';\n const url = `/v3/scheduling/bookings/${bookingId}${configIdParam}`;\n const headers = this.getHeaders();\n const response = await this.makeAPIRequest<NylasEvent>(\n decodeURIComponent(url),\n 'PUT',\n JSON.stringify({\n status: status,\n cancellation_reason: reason,\n salt,\n }),\n headers,\n );\n\n if ('error' in response) {\n this.schedulerStore.set('isLoading', false);\n const errorType = response.error?.type;\n let error = response.error;\n if (errorType && errorType in this.errors.api(errorTitle)) {\n const errorMessage = this.getErrorMessage(error);\n error = this.errors.api(errorTitle)[errorType as APIErrorType](errorMessage);\n }\n return { error };\n }\n\n if ('data' in response && status === 'confirmed') {\n this.schedulerStore.set('confirmedEventInfo', response?.data);\n } else if ('request_id' in response && status === 'cancelled') {\n this.schedulerStore.set('cancelledEventInfo', {\n booking_id: bookingId,\n });\n }\n\n this.schedulerStore.set('organizerConfirmationBookingId', '');\n this.schedulerStore.set('isLoading', false);\n return response;\n }\n\n /**\n * Validate timeslot for group event booking\n */\n public async validateGroupEventTimeslot(timeslot: Timeslot) {\n this.schedulerStore.set('isLoading', true);\n const configId = this.schedulerStore.get('configSettings')?.configuration_id;\n if (!configId) {\n return { error: this.errors.component(i18next.t('validateTimeslotErrorTitle')).no_config_id() };\n }\n\n const headers = this.getHeaders();\n const url = `/v3/scheduling/configurations/${configId}/group-events/validate-timeslot`;\n const response = await this.makeAPIRequest<NylasEvent>(\n decodeURIComponent(url),\n 'POST',\n JSON.stringify({\n ...timeslot,\n start_time: timeslot.start_time.getTime() / 1000,\n end_time: timeslot.end_time.getTime() / 1000,\n }),\n headers,\n );\n\n if ('error' in response) {\n this.schedulerStore.set('isLoading', false);\n const errorType = response.error?.type;\n let error = response.error;\n if (errorType && errorType in this.errors.api(i18next.t('validateTimeslotErrorTitle'))) {\n const errorMessage = this.getErrorMessage(error);\n error = this.errors.api(i18next.t('validateTimeslotErrorTitle'))[errorType as APIErrorType](errorMessage);\n }\n this.refetchAvailability();\n return { error };\n }\n\n this.schedulerStore.set('selectedTimeslot', timeslot);\n this.schedulerStore.set('showBookingForm', true);\n this.schedulerStore.set('isLoading', false);\n return response;\n }\n}\n"]}
1
+ {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../../../src/connector/shared/api/scheduler.ts"],"names":[],"mappings":"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","sourcesContent":["import { AvailabilityResponse, NylasSchedulerBookingData, NylasSchedulerBookingDataWithFlatFields, NylasEvent, UISettingsResponse } from '@/common/types';\nimport { NylasSchedulerStoreType } from '../../../components';\nimport type { NylasErrorResponse, NylasResponse, NylasSchedulerResponse, Timeslot } from '@nylas/core';\nimport { Errors } from '@/connector/nylas-scheduler-connector/errors';\nimport { addDaysToCurrentDate } from '@/utils/utils';\nimport i18next from '@/utils/i18n';\nimport { APIErrorType } from '@nylas/core';\n\ntype NylasSchedulerAPIConnectorOptions = {\n schedulerAPIURL: string;\n schedulerStore: NylasSchedulerStoreType;\n sessionId?: string;\n configId?: string;\n slug?: string;\n clientId?: string;\n};\n\n/**\n * NylaSchedulerConnector\n * This class is used to make API requests to the scheduler.\n */\nexport class NylaSchedulerAPIConnector {\n private schedulerStore: NylasSchedulerStoreType;\n private schedulerAPIURL: string;\n private sessionId: string | undefined;\n private configId: string | undefined;\n private slug: string | undefined;\n private clientId: string | undefined;\n private errors = new Errors();\n\n constructor({ schedulerAPIURL, schedulerStore, sessionId, configId, slug, clientId }: NylasSchedulerAPIConnectorOptions) {\n this.schedulerStore = schedulerStore;\n this.schedulerAPIURL = schedulerAPIURL;\n this.sessionId = sessionId;\n this.configId = configId;\n this.slug = slug;\n this.clientId = clientId;\n }\n\n private getHeaders() {\n return this.sessionId\n ? {\n Authorization: `Bearer ${this.sessionId}`,\n }\n : {};\n }\n\n /**\n * Makes an API request to the scheduler.\n * @param path The path to the API endpoint.\n * @param method The HTTP method.\n * @param body The request body (if any).\n * @returns {Promise<T>}\n */\n public async makeAPIRequest<T>(path: string, method: string, body: string | undefined, headers = {}): Promise<NylasResponse<T>> {\n try {\n const schedulerURL = new URL(this.schedulerAPIURL);\n const version = process.env.PACKAGE_VERSION || 'latest';\n schedulerURL.pathname = path;\n const response = await fetch(decodeURIComponent(schedulerURL.toString()), {\n method,\n headers: {\n 'Content-Type': 'application/json',\n 'Origin': window.location.origin,\n 'X-Source': 'nylas-scheduling',\n 'X-Nylas-Web-Elements-Version': version,\n ...headers,\n },\n body,\n });\n // The server returns a json object for errors: eg.\n // {\n // \"request_id\": \"<request_id>\",\n // \"error\": {\n // \"type\": \"not_found_error\",\n // \"message\": \"Session not found\"\n // }\n // }\n const data = await response.json();\n return data as NylasResponse<T>;\n } catch (error: any) {\n // NOTE: current server implementation doesn't return a JSON object for errors on some endpoints\n // handle this case by returning the error response as a string to be handled downstream\n return {\n error: {\n message: error.message,\n title: 'API request failed',\n type: 'api',\n },\n } as NylasErrorResponse;\n }\n }\n\n private getErrorMessage(error: NylasErrorResponse['error']) {\n let errorMessage = error?.message || error?.title || 'Something went wrong';\n if (error?.type === 'provider_error') {\n errorMessage = error?.provider_error?.error?.message || error?.provider_error?.error?.title || 'Something went wrong';\n }\n return errorMessage;\n }\n\n public setConfigId(configId: string) {\n this.configId = configId;\n }\n\n /**\n * Selects a date in the scheduler.\n */\n public selectDate(date: Date) {\n this.schedulerStore.set('selectedDate', date);\n this.schedulerStore.set('selectedTimeslot', null);\n }\n\n /**\n * Selects a time in the scheduler.\n */\n public selectTime(time: Timeslot) {\n this.schedulerStore.set('selectedTimeslot', time);\n }\n\n /**\n * Sets the timezone in the scheduler.\n */\n public selectTimezone(timezone: string) {\n this.schedulerStore.set('selectedTimezone', timezone);\n }\n\n /**\n * Sets the language in the scheduler.\n */\n public selectLanguage(language: string) {\n this.schedulerStore.set('selectedLanguage', language);\n i18next.changeLanguage(language);\n }\n\n /**\n * Toggles showBookingForm\n * @param value boolean\n */\n public async toggleAdditionalData(value: boolean) {\n if (!value) {\n // Refetch availability\n await this.refetchAvailability();\n }\n this.schedulerStore.set('showBookingForm', value);\n }\n\n /**\n * Set/update the name of the participant booking the event.\n */\n public setParticipantName(name: string) {\n const { bookingInfo } = this.schedulerStore.state;\n this.schedulerStore.set('bookingInfo', {\n ...bookingInfo,\n primaryParticipant: {\n ...(bookingInfo?.primaryParticipant as NylasSchedulerBookingData['primaryParticipant']),\n name,\n },\n });\n }\n\n /**\n * Set/update the email of the participant booking the event.\n */\n public setParticipantEmail(email: string) {\n const { bookingInfo } = this.schedulerStore.state;\n this.schedulerStore.set('bookingInfo', {\n ...bookingInfo,\n primaryParticipant: {\n ...(bookingInfo?.primaryParticipant as NylasSchedulerBookingData['primaryParticipant']),\n email,\n },\n });\n }\n\n private async refetchAvailability() {\n const today = new Date();\n // Refetch availability\n const startTime = new Date(today.getFullYear(), today.getMonth(), 1).getTime() / 1000;\n const startTimeWithOffset = startTime < today.getTime() / 1000 ? Math.floor(today.getTime() / 1000) : startTime;\n const endTime = new Date(today.getFullYear(), today.getMonth() + 1, 1).getTime() / 1000;\n const result = await this.getAvailability(startTimeWithOffset, endTime);\n return result;\n }\n\n private async resetStoreStateAndFetchAvailability() {\n const today = new Date();\n // Refetch availability\n const result = await this.refetchAvailability();\n // Set selected date to first available date\n const firstAvailableDate = this.schedulerStore.get('availability').find((timeslot: any) => new Date(timeslot.start_time) > new Date());\n let _selectedDate = today;\n if (firstAvailableDate) {\n _selectedDate = firstAvailableDate.start_time;\n }\n this.schedulerStore.set('selectedDate', _selectedDate);\n // Reset store state\n this.schedulerStore.set('eventInfo', null);\n this.schedulerStore.set('showBookingForm', false);\n this.schedulerStore.set('selectedTimeslot', null);\n\n return result;\n }\n\n /**\n * Set reschedule booking id\n */\n public async setReschedule(bookingID: string) {\n this.schedulerStore.set('isLoading', true);\n const eventInfo = this.schedulerStore.state.eventInfo;\n if (eventInfo) {\n this.schedulerStore.set('reschedulingEventInfo', eventInfo);\n }\n this.schedulerStore.set('rescheduleBookingId', bookingID);\n await this.getUISettings();\n // Set reschedule booking id\n const result = await this.resetStoreStateAndFetchAvailability().finally(() => {\n this.schedulerStore.set('isLoading', false);\n });\n\n return result;\n }\n\n /**\n * Set cancel booking id\n */\n public async setCancel(bookingID: string) {\n this.schedulerStore.set('cancelBookingId', bookingID);\n }\n\n /**\n * Set reject booking id\n */\n public async setReject(bookingID: string) {\n this.schedulerStore.set('rejectBookingId', bookingID);\n }\n\n public async resetCancel() {\n const result = await this.resetStoreStateAndFetchAvailability();\n this.schedulerStore.set('cancelBookingId', '');\n this.schedulerStore.set('rejectBookingId', '');\n this.schedulerStore.set('cancelledEventInfo', null);\n return result;\n }\n\n public async goBack() {\n this.schedulerStore.set('cancelBookingId', '');\n return;\n }\n\n public async resetConfirm() {\n const result = await this.resetStoreStateAndFetchAvailability();\n this.schedulerStore.set('organizerConfirmationBookingId', '');\n this.schedulerStore.set('confirmedEventInfo', undefined);\n return result;\n }\n\n /**\n * Book the selected timeslot.\n * @param data The booking info.\n * @returns {Promise<NylasResponse<NylasEvent>>}\n */\n public async bookTimeslot(data?: NylasSchedulerBookingDataWithFlatFields & { timeslot?: Timeslot }): Promise<NylasSchedulerResponse<NylasEvent>> {\n this.schedulerStore.set('isLoading', true);\n const { selectedTimeslot, selectedTimezone, bookingInfo, selectedLanguage } = this.schedulerStore.state;\n\n if (!data && !bookingInfo) {\n return { error: this.errors.component(i18next.t('createBookingErrorTitle')).no_booking_info() };\n }\n\n const timeslot = data?.timeslot || selectedTimeslot;\n if (!timeslot) {\n return { error: this.errors.component(i18next.t('createBookingErrorTitle')).no_timeslot_selected() };\n }\n\n const timezone = data && data?.timezone ? data?.timezone : selectedTimezone;\n const language = selectedLanguage || 'en-US';\n\n if (!timezone) {\n return { error: this.errors.component(i18next.t('createBookingErrorTitle')).no_timezone_selected() };\n }\n\n const order = [...this.schedulerStore.get('availabilityOrderEmails')];\n\n let participantToBookWith = '';\n const emails = timeslot?.emails || [];\n\n const addFields = {};\n Object.entries(bookingInfo?.additionalFields || {}).forEach(([key, entry]) => {\n addFields[key] = (entry as { value: string; type?: string }).value;\n });\n\n const primaryGuest = data ? data?.primaryParticipant : bookingInfo?.primaryParticipant;\n const guests = data ? data?.guests || [] : bookingInfo?.guests || [];\n const additional_fields = data ? data?.additionalFields : addFields;\n\n const headers = this.getHeaders();\n const configIdParam =\n !this.sessionId && this.configId\n ? `?configuration_id=${this.configId}`\n : !this.sessionId && this.slug && this.clientId\n ? `?slug=${this.slug}&client_id=${this.clientId}`\n : '';\n const url = `/v3/scheduling/bookings${configIdParam}`;\n\n // If the order array is empty, make a single request without retries\n if (order.length === 0) {\n const response = await this.makeAPIRequest<NylasEvent>(\n decodeURIComponent(url),\n 'POST',\n JSON.stringify({\n additional_fields,\n additional_guests: guests,\n guest: { ...primaryGuest },\n start_time: timeslot.start_time.getTime() / 1000,\n end_time: timeslot.end_time.getTime() / 1000,\n timezone,\n event_id: timeslot?.event_id || undefined,\n master_id: timeslot?.master_id || undefined,\n calendar_id: timeslot?.calendar_id || undefined,\n email_language: this.getTwoLetterLanguageCode(language),\n }),\n headers,\n );\n\n this.schedulerStore.set('isLoading', false);\n if ('data' in response) {\n this.schedulerStore.set('eventInfo', response.data);\n return response;\n }\n return { error: response.error };\n }\n\n while (order.length > 0) {\n participantToBookWith = order.shift()!;\n\n if (!emails.includes(participantToBookWith)) {\n continue; // Skip if the email is not part of the timeslot\n }\n\n const response = await this.makeAPIRequest<NylasEvent>(\n decodeURIComponent(url),\n 'POST',\n JSON.stringify({\n participants: participantToBookWith ? [{ email: participantToBookWith }] : undefined,\n additional_fields,\n additional_guests: guests,\n guest: { ...primaryGuest },\n start_time: timeslot.start_time.getTime() / 1000,\n end_time: timeslot.end_time.getTime() / 1000,\n timezone: timezone,\n email_language: this.getTwoLetterLanguageCode(language),\n }),\n headers,\n );\n\n if ('data' in response) {\n // Successful booking\n this.schedulerStore.set('isLoading', false);\n this.schedulerStore.set('eventInfo', response?.data);\n return response;\n } else if (response.error?.message?.startsWith('The selected timeslot is unavailable')) {\n // Retry with the next email in the order\n continue;\n } else {\n // Return other errors\n this.schedulerStore.set('isLoading', false);\n const errorType = response.error?.type;\n let error = response.error;\n if (errorType && errorType in this.errors.api(i18next.t('createBookingErrorTitle'))) {\n const errorMessage = this.getErrorMessage(error);\n error = this.errors.api(i18next.t('createBookingErrorTitle'))[errorType as APIErrorType](errorMessage);\n }\n return { error };\n }\n }\n\n // If no emails in order succeed\n this.schedulerStore.set('isLoading', false);\n return {\n error: this.errors.api(i18next.t('createBookingErrorTitle')).timeslot_not_available('The selected timeslot is unavailable'),\n };\n }\n\n /**\n * Get UI settings for the scheduler.\n */\n public async getUISettings(): Promise<NylasSchedulerResponse<UISettingsResponse>> {\n this.schedulerStore.set('isLoading', true);\n const bookingId = this.schedulerStore.get('rescheduleBookingId');\n const headers = this.getHeaders();\n let configIdParam =\n !this.sessionId && this.configId\n ? `?configuration_id=${this.configId}`\n : !this.sessionId && this.slug && this.clientId\n ? `?slug=${this.slug}&client_id=${this.clientId}`\n : '';\n if (bookingId && !!configIdParam) {\n configIdParam += `&booking_id=${bookingId}`;\n } else if (bookingId) {\n configIdParam += `?booking_id=${bookingId}`;\n }\n\n const url = `/v3/scheduling/ui-settings${configIdParam}`;\n\n const response = await this.makeAPIRequest<UISettingsResponse>(url, 'GET', undefined, headers);\n if ('error' in response) {\n this.schedulerStore.set('isLoading', false);\n const errorType = response.error?.type;\n let error = response.error;\n if (errorType && errorType in this.errors.api(i18next.t('getUISettingErrorTitle'))) {\n error = this.errors.api(i18next.t('getUISettingErrorTitle'))[errorType as APIErrorType](error?.message || error?.title || 'Something went wrong');\n }\n return { error };\n }\n if ('data' in response) {\n this.schedulerStore.set('configSettings', response.data);\n }\n this.schedulerStore.set('isLoading', false);\n return response;\n }\n\n private getTwoLetterLanguageCode(language: string) {\n return language.split('-')[0];\n }\n\n private getStartTimeWithMinBookingNotice(startTime: number) {\n const scheduler = this.schedulerStore.get('configSettings')?.scheduler;\n const min_booking_notice = scheduler?.min_booking_notice;\n if (!min_booking_notice) {\n return startTime;\n }\n const today = new Date().getTime();\n\n if (startTime < (today + min_booking_notice * 60 * 1000) / 1000) {\n return Math.floor((today + min_booking_notice * 60 * 1000) / 1000);\n } else {\n return startTime;\n }\n }\n\n private getEndTimeForAvailableDaysInFuture(endTime: number) {\n const today = new Date();\n const availableDaysInFuture = this.schedulerStore.get('configSettings')?.scheduler?.available_days_in_future;\n const endTimeForAvailableDaysInFuture = Math.floor(addDaysToCurrentDate(today, availableDaysInFuture).getTime() / 1000);\n const endTimeWithOffset = Math.min(endTimeForAvailableDaysInFuture, endTime);\n return endTimeWithOffset;\n }\n\n /**\n * Gets the availability for a page.\n * @param startTime The start time.\n * @param endTime The end time.\n * @returns {Promise<AvailabilityResponse>}\n */\n public async getAvailability(startTime: number = 0, endTime: number = 0): Promise<NylasSchedulerResponse<AvailabilityResponse>> {\n this.schedulerStore.set('isLoading', true);\n const params = new URLSearchParams();\n const now = new Date();\n const nowTime = now.getTime();\n\n if (endTime && endTime < nowTime / 1000) {\n this.schedulerStore.set('isLoading', false);\n const error = this.errors.component(i18next.t('getAvailabilityErrorTitle')).endtime_not_in_future();\n return { error };\n }\n\n // Calculate the start of the current month if startTime is not provided\n if (!startTime) {\n const startOfMonth = new Date(now.getFullYear(), now.getMonth(), 1);\n startTime = Math.floor(startOfMonth.getTime() / 1000); // Convert to UNIX timestamp in seconds\n }\n\n // Calculate the end of the current month if endTime is not provided\n if (!endTime) {\n const endOfMonth = new Date(now.getFullYear(), now.getMonth() + 1, 0); // Setting day to 0 gets the last day of the previous month, so in this case, the last day of the current month\n endTime = Math.floor(endOfMonth.getTime() / 1000); // Convert to UNIX timestamp in seconds\n }\n\n endTime = this.getEndTimeForAvailableDaysInFuture(endTime);\n const startTimeWithMinBooking = this.getStartTimeWithMinBookingNotice(startTime);\n startTime = startTimeWithMinBooking;\n endTime = startTimeWithMinBooking > endTime ? startTimeWithMinBooking + 1 : endTime;\n\n params.append('start_time', encodeURIComponent(startTime.toString()));\n params.append('end_time', encodeURIComponent(endTime.toString()));\n if (this.configId && !this.sessionId) {\n params.append('configuration_id', encodeURIComponent(this.configId));\n } else if (this.slug && this.clientId && !this.sessionId) {\n params.append('slug', encodeURIComponent(this.slug));\n params.append('client_id', encodeURIComponent(this.clientId));\n }\n\n const rescheduleBookingId = this.schedulerStore.get('rescheduleBookingId');\n if (rescheduleBookingId) {\n params.append('booking_id', encodeURIComponent(rescheduleBookingId));\n }\n const queryString = params.toString();\n const url = `/v3/scheduling/availability${queryString ? `?${queryString}` : ''}`;\n const headers = this.getHeaders();\n const response = await this.makeAPIRequest<AvailabilityResponse>(decodeURIComponent(url), 'GET', undefined, headers);\n\n if ('error' in response) {\n this.schedulerStore.set('availability', []);\n this.schedulerStore.set('isLoading', false);\n const errorType = response.error?.type;\n let error = response.error;\n if (errorType && errorType in this.errors.api(i18next.t('getAvailabilityErrorTitle'))) {\n const errorMessage = this.getErrorMessage(error);\n error = this.errors.api(i18next.t('getAvailabilityErrorTitle'))[errorType as APIErrorType](errorMessage);\n }\n return { error };\n }\n\n if ('data' in response) {\n const availability =\n response.data?.time_slots?.map(timeslot => {\n return {\n ...timeslot,\n start_time: new Date(timeslot.start_time * 1000),\n end_time: new Date(timeslot.end_time * 1000),\n };\n }) || [];\n\n // Filter out timeslots that are in the past\n const availabilityTimeslotsFiltered = availability.filter(timeslot => timeslot.start_time.getTime() > nowTime);\n const availabilityTimeslotSorted = availabilityTimeslotsFiltered.sort((a, b) => a.start_time.getTime() - b.start_time.getTime());\n this.schedulerStore.set('availability', availabilityTimeslotSorted);\n const order = response.data?.order || [];\n this.schedulerStore.set('availabilityOrderEmails', order);\n }\n\n this.schedulerStore.set('isLoading', false);\n return response;\n }\n\n /**\n * Cancels a booking.\n * @param bookingId The booking ID.\n */\n public async cancelBooking(bookingId: string, reason: string): Promise<NylasSchedulerResponse<Partial<NylasEvent>>> {\n this.schedulerStore.set('isLoading', true);\n if (!bookingId) {\n return { error: this.errors.component(i18next.t('cancelBookingErrorTitle')).no_booking_id() };\n }\n const configIdParam =\n !this.sessionId && this.configId\n ? `?configuration_id=${this.configId}`\n : !this.sessionId && this.slug && this.clientId\n ? `?slug=${this.slug}&client_id=${this.clientId}`\n : '';\n const url = `/v3/scheduling/bookings/${bookingId}${configIdParam}`;\n const headers = this.getHeaders();\n const response = await this.makeAPIRequest<Partial<NylasEvent>>(\n decodeURIComponent(url),\n 'DELETE',\n JSON.stringify({\n action: 'cancel',\n cancellation_reason: reason,\n }),\n headers,\n );\n\n if ('error' in response) {\n this.schedulerStore.set('isLoading', false);\n const errorType = response.error?.type;\n let error = response.error;\n if (errorType && errorType in this.errors.api(i18next.t('cancelBookingErrorTitle'))) {\n const errorMessage = this.getErrorMessage(error);\n error = this.errors.api(i18next.t('cancelBookingErrorTitle'))[errorType as APIErrorType](errorMessage);\n }\n return { error };\n }\n\n this.schedulerStore.set('cancelledEventInfo', {\n booking_id: bookingId,\n });\n this.schedulerStore.set('rescheduleBookingId', '');\n this.schedulerStore.set('isLoading', false);\n return response;\n }\n\n /**\n * Reschedules a booking.\n * @param bookingId The booking ID.\n * @param data The booking info.\n * @returns {Promise<NylasResponse<NylasEvent>>}\n */\n public async rescheduleBooking(bookingId: string, data: NylasSchedulerBookingDataWithFlatFields): Promise<NylasSchedulerResponse<NylasEvent>> {\n this.schedulerStore.set('isLoading', true);\n if (!bookingId) {\n return { error: this.errors.component(i18next.t('rescheduleBookingErrorTitle')).no_booking_id() };\n }\n const apiErrors = this.errors.api(i18next.t('rescheduleBookingErrorTitle'));\n const componentErrors = this.errors.component(i18next.t('rescheduleBookingErrorTitle'));\n const { bookingInfo, selectedTimeslot, selectedTimezone, selectedLanguage } = this.schedulerStore.state;\n // Validate data\n const { startTime, endTime, timezone } = data;\n const start_time = startTime || selectedTimeslot?.start_time;\n\n if (!start_time) {\n return { error: componentErrors.invalid_start_time('Please pass \"startTime\" in data or set \"selectedTimeslot\" in the defaultSchedulerState.') };\n }\n const end_time = endTime || selectedTimeslot?.end_time;\n if (!end_time) {\n return { error: componentErrors.invalid_end_time('Please pass \"endTime\" in data or set \"selectedTimeslot\" in the defaultSchedulerState.') };\n }\n\n const order = this.schedulerStore.get('availabilityOrderEmails');\n let participantToBookWith = '';\n if (order.length > 0) {\n // Get the emails in the timeslot\n const emails = selectedTimeslot?.emails || [];\n for (let i = 0; i < order.length; i++) {\n if (emails.includes(order[i])) {\n participantToBookWith = order[i];\n break;\n }\n }\n }\n\n const time_zone = timezone || selectedTimezone;\n if (!time_zone) {\n return { error: componentErrors.invalid_timezone('Please pass \"timezone\" in data or set \"selectedTimezone\" in the defaultSchedulerState.') };\n }\n const addFields = {};\n Object.entries(bookingInfo?.additionalFields || {}).forEach(([key, entry]) => {\n addFields[key] = (entry as { value: string; type?: string }).value;\n });\n const primaryGuest = data ? data?.primaryParticipant : bookingInfo?.primaryParticipant;\n const guests = data ? data?.guests || [] : bookingInfo?.guests || [];\n const additional_fields = data ? data?.additionalFields : addFields;\n\n const configIdParam =\n !this.sessionId && this.configId\n ? `?configuration_id=${this.configId}`\n : !this.sessionId && this.slug && this.clientId\n ? `?slug=${this.slug}&client_id=${this.clientId}`\n : '';\n const url = `/v3/scheduling/bookings/${bookingId}${configIdParam}`;\n const headers = this.getHeaders();\n const response = await this.makeAPIRequest<NylasEvent>(\n decodeURIComponent(url),\n 'PATCH',\n JSON.stringify({\n start_time: start_time.getTime() / 1000,\n end_time: end_time.getTime() / 1000,\n timezone: time_zone,\n additional_fields,\n guest: { ...primaryGuest },\n additional_guests: guests,\n participants: participantToBookWith ? [{ email: participantToBookWith }] : undefined,\n email_language: this.getTwoLetterLanguageCode(selectedLanguage),\n }),\n headers,\n );\n\n if ('error' in response) {\n this.schedulerStore.set('isLoading', false);\n const errorType = response.error?.type;\n let error = response.error;\n if (errorType && errorType in apiErrors) {\n const errorMessage = this.getErrorMessage(error);\n error = apiErrors[errorType as APIErrorType](errorMessage);\n }\n return { error };\n }\n\n const eventInfo = this.schedulerStore.get('reschedulingEventInfo');\n if ('data' in response) {\n this.schedulerStore.set('eventInfo', response?.data);\n } else if (eventInfo) {\n this.schedulerStore.set('eventInfo', eventInfo);\n } else {\n // We should technically never reach this point\n const event = {\n booking_id: bookingId,\n } as NylasEvent;\n this.schedulerStore.set('eventInfo', event);\n }\n\n this.schedulerStore.set('isLoading', false);\n return response;\n }\n\n /**\n * Updates the booking.\n * @param bookingId The booking ID.\n */\n public async updateBooking(payload: { bookingId: string; status: 'confirmed' | 'cancelled'; reason?: string }): Promise<NylasSchedulerResponse<NylasEvent>> {\n this.schedulerStore.set('isLoading', true);\n const { bookingId, status, reason } = payload;\n const salt = this.schedulerStore.get('organizerConfirmationSalt');\n const errorTitle = status === 'confirmed' ? i18next.t('confirmBookingErrorTitle') : i18next.t('rejectBookingErrorTitle');\n\n if (!bookingId) {\n return { error: this.errors.component(errorTitle).no_booking_id() };\n }\n if (!salt) {\n return { error: this.errors.component(errorTitle).no_salt() };\n }\n\n const configIdParam =\n !this.sessionId && this.configId\n ? `?configuration_id=${this.configId}`\n : !this.sessionId && this.slug && this.clientId\n ? `?slug=${this.slug}&client_id=${this.clientId}`\n : '';\n const url = `/v3/scheduling/bookings/${bookingId}${configIdParam}`;\n const headers = this.getHeaders();\n const response = await this.makeAPIRequest<NylasEvent>(\n decodeURIComponent(url),\n 'PUT',\n JSON.stringify({\n status: status,\n cancellation_reason: reason,\n salt,\n }),\n headers,\n );\n\n if ('error' in response) {\n this.schedulerStore.set('isLoading', false);\n const errorType = response.error?.type;\n let error = response.error;\n if (errorType && errorType in this.errors.api(errorTitle)) {\n const errorMessage = this.getErrorMessage(error);\n error = this.errors.api(errorTitle)[errorType as APIErrorType](errorMessage);\n }\n return { error };\n }\n\n if ('data' in response && status === 'confirmed') {\n this.schedulerStore.set('confirmedEventInfo', response?.data);\n } else if ('request_id' in response && status === 'cancelled') {\n this.schedulerStore.set('cancelledEventInfo', {\n booking_id: bookingId,\n });\n }\n\n this.schedulerStore.set('organizerConfirmationBookingId', '');\n this.schedulerStore.set('isLoading', false);\n return response;\n }\n\n /**\n * Validate timeslot for group event booking\n */\n public async validateGroupEventTimeslot(timeslot: Timeslot) {\n this.schedulerStore.set('isLoading', true);\n const configId = this.schedulerStore.get('configSettings')?.configuration_id;\n if (!configId) {\n return { error: this.errors.component(i18next.t('validateTimeslotErrorTitle')).no_config_id() };\n }\n\n const headers = this.getHeaders();\n const url = `/v3/scheduling/configurations/${configId}/group-events/validate-timeslot`;\n const response = await this.makeAPIRequest<NylasEvent>(\n decodeURIComponent(url),\n 'POST',\n JSON.stringify({\n ...timeslot,\n start_time: timeslot.start_time.getTime() / 1000,\n end_time: timeslot.end_time.getTime() / 1000,\n }),\n headers,\n );\n\n if ('error' in response) {\n this.schedulerStore.set('isLoading', false);\n const errorType = response.error?.type;\n let error = response.error;\n if (errorType && errorType in this.errors.api(i18next.t('validateTimeslotErrorTitle'))) {\n const errorMessage = this.getErrorMessage(error);\n error = this.errors.api(i18next.t('validateTimeslotErrorTitle'))[errorType as APIErrorType](errorMessage);\n }\n this.refetchAvailability();\n return { error };\n }\n\n this.schedulerStore.set('selectedTimeslot', timeslot);\n this.schedulerStore.set('showBookingForm', true);\n this.schedulerStore.set('isLoading', false);\n return response;\n }\n}\n"]}