@nylas/web-elements 0.0.0-test-20250320185733 → 0.0.0-test-20250321141510
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cdn/nylas-scheduler-editor/nylas-scheduler-editor.es.js +7 -7
- package/dist/cdn/nylas-scheduling/nylas-scheduling.es.js +4792 -4796
- package/dist/cjs/calendar-agenda-fill-icon_36.cjs.entry.js +17 -13
- package/dist/cjs/calendar-agenda-fill-icon_36.cjs.entry.js.map +1 -1
- package/dist/cjs/index.es-4f95065f.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/nylas-booked-event-card_12.cjs.entry.js +3 -3
- package/dist/cjs/nylas-booked-event-card_12.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-provider.cjs.entry.js +2 -2
- package/dist/cjs/nylas-provider.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-scheduler-editor.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-scheduling.cjs.entry.js +1 -1
- package/dist/cjs/nylas-scheduling.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-web-elements.cjs.js +1 -1
- package/dist/cjs/scheduler-config-store-cf66a841.js.map +1 -1
- package/dist/cjs/{scheduler-store-df3a9a3a.js → scheduler-store-461fd2ff.js} +1 -11
- package/dist/cjs/{scheduler-store-df3a9a3a.js.map → scheduler-store-461fd2ff.js.map} +1 -1
- package/dist/collection/common/abstract-provider.js.map +1 -1
- package/dist/collection/components/nylas-provider/nylas-provider.js +7 -2
- package/dist/collection/components/nylas-provider/nylas-provider.js.map +1 -1
- package/dist/collection/components/scheduler/nylas-booked-event-card/nylas-booked-event-card.js +8 -10
- package/dist/collection/components/scheduler/nylas-booked-event-card/nylas-booked-event-card.js.map +1 -1
- package/dist/collection/components/scheduler/nylas-scheduling/nylas-scheduling.js +3 -3
- package/dist/collection/components/scheduler/nylas-scheduling/nylas-scheduling.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-booking-form-config/nylas-booking-form-config.js +20 -15
- package/dist/collection/components/scheduler-editor/nylas-booking-form-config/nylas-booking-form-config.js.map +1 -1
- package/dist/collection/connector/nylas-connector/index.js.map +1 -1
- package/dist/collection/connector/nylas-scheduler-config-connector/index.js.map +1 -1
- package/dist/collection/connector/nylas-scheduler-connector/errors/index.js.map +1 -1
- package/dist/collection/connector/shared/api/scheduler-config.js.map +1 -1
- package/dist/collection/connector/shared/api/scheduler.js.map +1 -1
- package/dist/collection/stores/scheduler-config-store.js.map +1 -1
- package/dist/collection/stores/scheduler-store.js.map +1 -1
- package/dist/collection/types/index.js +0 -10
- package/dist/collection/types/index.js.map +1 -1
- package/dist/components/index.es.js.map +1 -1
- package/dist/components/nylas-booked-event-card2.js +4 -4
- package/dist/components/nylas-booked-event-card2.js.map +1 -1
- package/dist/components/nylas-booking-form-config2.js +17 -13
- package/dist/components/nylas-booking-form-config2.js.map +1 -1
- package/dist/components/nylas-provider.js +1 -1
- package/dist/components/nylas-provider.js.map +1 -1
- package/dist/components/nylas-scheduler-editor.js.map +1 -1
- package/dist/components/nylas-scheduling.js.map +1 -1
- package/dist/components/scheduler-config-store.js.map +1 -1
- package/dist/components/scheduler-store.js +0 -10
- package/dist/components/scheduler-store.js.map +1 -1
- package/dist/esm/calendar-agenda-fill-icon_36.entry.js +17 -13
- package/dist/esm/calendar-agenda-fill-icon_36.entry.js.map +1 -1
- package/dist/esm/index.es-f8ebfa98.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/nylas-booked-event-card_12.entry.js +3 -3
- package/dist/esm/nylas-booked-event-card_12.entry.js.map +1 -1
- package/dist/esm/nylas-provider.entry.js +2 -2
- package/dist/esm/nylas-provider.entry.js.map +1 -1
- package/dist/esm/nylas-scheduler-editor.entry.js.map +1 -1
- package/dist/esm/nylas-scheduling.entry.js +1 -1
- package/dist/esm/nylas-scheduling.entry.js.map +1 -1
- package/dist/esm/nylas-web-elements.js +1 -1
- package/dist/esm/scheduler-config-store-d6729d8d.js.map +1 -1
- package/dist/esm/{scheduler-store-ef022be9.js → scheduler-store-755ced0b.js} +1 -11
- package/dist/esm/{scheduler-store-ef022be9.js.map → scheduler-store-755ced0b.js.map} +1 -1
- package/dist/nylas-web-elements/nylas-web-elements.esm.js +1 -1
- package/dist/nylas-web-elements/nylas-web-elements.esm.js.map +1 -1
- package/dist/nylas-web-elements/p-14894041.js.map +1 -1
- package/dist/nylas-web-elements/{p-a906d005.entry.js → p-4b48f29a.entry.js} +2 -2
- package/dist/nylas-web-elements/p-4b48f29a.entry.js.map +1 -0
- package/dist/nylas-web-elements/p-68608216.entry.js.map +1 -1
- package/dist/nylas-web-elements/{p-1fb32e0e.entry.js → p-b9727e42.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-1fb32e0e.entry.js.map → p-b9727e42.entry.js.map} +1 -1
- package/dist/nylas-web-elements/p-c372bced.js.map +1 -1
- package/dist/nylas-web-elements/p-d36ad6ef.js +2 -0
- package/dist/nylas-web-elements/p-d36ad6ef.js.map +1 -0
- package/dist/nylas-web-elements/{p-13a6c977.entry.js → p-e4272174.entry.js} +2 -2
- package/dist/nylas-web-elements/p-e4272174.entry.js.map +1 -0
- package/dist/nylas-web-elements/p-f12cd991.entry.js +8 -0
- package/dist/nylas-web-elements/p-f12cd991.entry.js.map +1 -0
- package/dist/types/common/abstract-provider.d.ts +1 -1
- package/dist/types/components/nylas-provider/nylas-provider.d.ts +1 -1
- package/dist/types/components/scheduler/nylas-booked-event-card/nylas-booked-event-card.d.ts +1 -1
- package/dist/types/components/scheduler/nylas-scheduling/nylas-scheduling.d.ts +2 -1
- package/dist/types/components/scheduler-editor/nylas-booking-form-config/nylas-booking-form-config.d.ts +4 -12
- package/dist/types/components.d.ts +10 -10
- package/dist/types/connector/nylas-connector/index.d.ts +6 -6
- package/dist/types/connector/nylas-scheduler-config-connector/index.d.ts +2 -2
- package/dist/types/connector/nylas-scheduler-connector/errors/index.d.ts +2 -1
- package/dist/types/connector/shared/api/scheduler-config.d.ts +2 -2
- package/dist/types/stores/scheduler-config-store.d.ts +1 -1
- package/dist/types/stores/scheduler-store.d.ts +2 -2
- package/dist/types/types/index.d.ts +0 -9
- package/package.json +3 -3
- package/dist/nylas-web-elements/p-13a6c977.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-731a856b.js +0 -2
- package/dist/nylas-web-elements/p-731a856b.js.map +0 -1
- package/dist/nylas-web-elements/p-7b787c73.entry.js +0 -8
- package/dist/nylas-web-elements/p-7b787c73.entry.js.map +0 -1
- 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 '
|
|
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 '
|
|
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":"AAAA,OAAO,
|
|
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-config.js","sourceRoot":"","sources":["../../../../src/connector/shared/api/scheduler-config.ts"],"names":[],"mappings":"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","sourcesContent":["import { NylasApiRequest } from '@/common/nylas-api-request';\nimport { NylasSchedulerConfigStoreType } from '@/stores/scheduler-config-store';\nimport { dataResponse, getCalendarRange } from '@/utils/utils';\nimport {\n Calendar,\n Configuration,\n EventDetails,\n GroupConfiguration,\n GroupEvent,\n GroupEventAPIData,\n ImportGroupEventDetails,\n ImportGroupEventResponse,\n NylasResponse,\n RecurrenceDeleteOption,\n RecurrenceUpdateOption,\n isNylasErrorResponse,\n} from '@nylas/core';\nimport dayjs from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\nimport timezone from 'dayjs/plugin/timezone';\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\n\ntype NylasSchedulerConfigAPIConnectorOptions = {\n nylasApiRequest?: NylasApiRequest;\n nylasSchedulerConfigStore: NylasSchedulerConfigStoreType;\n};\n\n/**\n * Nylas Scheduler Config API Connector\n * This class is responsible for making API requests to the Nylas API for Scheduler Configurations.\n */\nexport class NylasSchedulerConfigAPIConnector {\n private nylasApiRequest?: NylasApiRequest;\n private nylasSchedulerConfigStore: NylasSchedulerConfigStoreType;\n\n constructor({ nylasApiRequest, nylasSchedulerConfigStore }: NylasSchedulerConfigAPIConnectorOptions) {\n this.nylasApiRequest = nylasApiRequest;\n this.nylasSchedulerConfigStore = nylasSchedulerConfigStore;\n }\n\n /**\n * Get the current user.\n * @returns The current user or null if the request is not initialized.\n */\n public async currentUser() {\n if (!this.nylasApiRequest) {\n console.warn('Nylas API Request is not initialized');\n return null;\n }\n\n return this.nylasApiRequest.currentUser();\n }\n\n /**\n * Get the current user's calendars.\n * @returns The current user's calendars or an error if the request is not initialized.\n */\n public async getCalendars() {\n if (!this.nylasApiRequest) {\n console.warn('Nylas API Request is not initialized');\n return dataResponse(null, {\n message: 'Error fetching calendars: Nylas API Request is not initialized',\n });\n }\n\n const [response, error] = await this.nylasApiRequest.request<NylasResponse<Calendar[]>>({\n method: 'GET',\n path: `calendars`,\n });\n\n if (error) {\n return dataResponse(null, {\n message: 'Error fetching calendars: ' + error.message,\n });\n }\n\n if (isNylasErrorResponse(response)) {\n return dataResponse(null, {\n message: 'Error fetching calendars: ' + response.error?.message,\n });\n }\n\n // Set the new calendars as the current calendars\n this.nylasSchedulerConfigStore.state.calendars = response.data;\n\n return dataResponse(response.data);\n }\n\n /**\n * Get a configuration by its ID.\n * @param configurationId The ID of the configuration to fetch.\n */\n public async getConfigurationById(configurationId: string, forceFetch: boolean = false) {\n if (!this.nylasApiRequest) {\n console.warn('Nylas API Request is not initialized');\n return dataResponse(null, {\n message: 'Error fetching configuration: Nylas API Request is not initialized',\n });\n }\n\n // If the configuration is already in the store, return it\n if (!forceFetch) {\n const existingConfig = this.nylasSchedulerConfigStore.state.configurations.find(c => c.id === configurationId);\n if (existingConfig) {\n this.nylasSchedulerConfigStore.state.selectedConfiguration = existingConfig;\n return dataResponse(existingConfig);\n }\n }\n\n const [response, error] = await this.nylasApiRequest.request<NylasResponse<Configuration>>({\n method: 'GET',\n path: `scheduling/configurations/${configurationId}`,\n });\n\n if (error) {\n return dataResponse(null, {\n message: 'Error fetching configuration: ' + error.message,\n });\n }\n\n if (isNylasErrorResponse(response)) {\n return dataResponse(null, {\n message: 'Error fetching configuration: ' + response.error?.message,\n });\n }\n\n // Set the new configuration as the current configuration\n this.nylasSchedulerConfigStore.state.selectedConfiguration = response.data;\n\n // If the configuration was updated, update the list of configurations\n // If it doesn't exist, add it to the list\n if (this.nylasSchedulerConfigStore.state.configurations.find(c => c.id === configurationId)) {\n this.nylasSchedulerConfigStore.state.configurations = this.nylasSchedulerConfigStore.state.configurations.map(c => (c.id === configurationId ? response.data : c));\n } else {\n this.nylasSchedulerConfigStore.state.configurations = [...this.nylasSchedulerConfigStore.state.configurations, response.data];\n }\n\n return dataResponse(response.data);\n }\n\n /**\n * Get all configurations.\n * @returns The list of configurations or an error if the request is not initialized.\n */\n public async getConfigurations(cursor?: string) {\n if (!this.nylasApiRequest) {\n console.warn('Nylas API Request is not initialized');\n return dataResponse(null, {\n message: 'Error fetching configurations: Nylas API Request is not initialized',\n });\n }\n const limit = 50;\n const [response, error] = await this.nylasApiRequest.request<NylasResponse<Configuration[]>>({\n method: 'GET',\n path: `scheduling/configurations?limit=${limit}${cursor ? `&page_token=${cursor}` : ''}`,\n });\n\n if (error) {\n return dataResponse(null, {\n message: 'Error fetching configurations: ' + error.message,\n });\n }\n\n if (isNylasErrorResponse(response)) {\n return dataResponse(null, {\n message: 'Error fetching configurations: ' + response.error?.message,\n });\n }\n\n // Set the configurations in the store\n this.nylasSchedulerConfigStore.state.configurations = response.data;\n this.nylasSchedulerConfigStore.state.listConfigurationsNextCursor = response.next_cursor || null;\n return dataResponse(response.data);\n }\n\n /**\n * Get master event by its ID.\n */\n public async getMasterEventById(masterEventId: string) {\n if (!this.nylasApiRequest) {\n console.warn('Nylas API Request is not initialized');\n return dataResponse(null, {\n message: 'Error fetching master event: Nylas API Request is not initialized',\n });\n }\n\n const selectedGroupEvent = this.nylasSchedulerConfigStore.state.selectedGroupEvent;\n const calendar_id = selectedGroupEvent?.event?.calendar_id;\n if (!calendar_id) {\n console.warn('Calendar ID is not present');\n return dataResponse(null, {\n message: 'Error fetching master event: Calendar ID is not present',\n });\n }\n const queryParamsObject = new URLSearchParams();\n queryParamsObject.append('calendar_id', calendar_id);\n\n const [response, error] = await this.nylasApiRequest.request<NylasResponse<EventDetails>>({\n method: 'GET',\n path: `events/${masterEventId}?${queryParamsObject.toString()}`,\n });\n\n if (error) {\n return dataResponse(null, {\n message: 'Error fetching master event: ' + error.message,\n });\n }\n\n if (isNylasErrorResponse(response)) {\n return dataResponse(null, {\n message: 'Error fetching master event: ' + response.error?.message,\n });\n }\n\n const masterGroupEvents = this.nylasSchedulerConfigStore.state.masterGroupEvents;\n // Set the new master event as the current master event\n if (masterGroupEvents[masterEventId]) {\n this.nylasSchedulerConfigStore.state.masterGroupEvents[masterEventId] = response.data;\n } else {\n this.nylasSchedulerConfigStore.state.masterGroupEvents = { ...masterGroupEvents, [masterEventId]: response.data };\n }\n\n return dataResponse(response.data);\n }\n\n /**\n * Create a new configuration.\n * @param configuration The configuration to create.\n * @returns The new configuration or an error if the request is not initialized.\n */\n public async createConfiguration(configuration: Omit<Partial<Configuration>, 'id'>) {\n if (!this.nylasApiRequest) {\n console.warn('Nylas API Request is not initialized');\n return dataResponse(null, {\n message: 'Error creating configuration: Nylas API Request is not initialized',\n });\n }\n\n const [response, error] = await this.nylasApiRequest.request<NylasResponse<Configuration>>({\n method: 'POST',\n path: `scheduling/configurations`,\n body: configuration,\n });\n\n if (error) {\n return dataResponse(null, {\n message: 'Error creating configuration: ' + error.message,\n });\n }\n\n if (isNylasErrorResponse(response)) {\n return dataResponse(null, {\n message: 'Error creating configuration: ' + response.error?.message,\n });\n }\n\n // Set the new configuration as the current configuration\n this.nylasSchedulerConfigStore.state.selectedConfiguration = response.data;\n\n // Add the new configuration to the list of configurations\n this.nylasSchedulerConfigStore.state.configurations = [...this.nylasSchedulerConfigStore.state.configurations, response.data];\n\n return dataResponse(response.data);\n }\n\n /**\n * Update an existing configuration.\n * @param configuration The configuration to update.\n * @returns The updated configuration or an error if the request is not initialized.\n */\n public async updateConfiguration(configuration: Partial<Configuration>) {\n if (!this.nylasApiRequest) {\n console.warn('Nylas API Request is not initialized');\n return dataResponse(null, {\n message: 'Error updating configuration: Nylas API Request is not initialized',\n });\n }\n\n const [response, error] = await this.nylasApiRequest.request<NylasResponse<Configuration>>({\n method: 'PUT',\n path: `scheduling/configurations/${configuration.id}`,\n body: configuration,\n });\n\n if (error) {\n return dataResponse(null, {\n message: 'Error updating configuration: ' + error.message,\n });\n }\n\n if (isNylasErrorResponse(response)) {\n return dataResponse(null, {\n message: 'Error updating configuration: ' + response.error?.message,\n });\n }\n\n // Set the new configuration as the current configuration\n this.nylasSchedulerConfigStore.state.selectedConfiguration = response.data;\n\n // If the configuration was updated, update the list of configurations\n // If it doesn't exist, add it to the list\n if (this.nylasSchedulerConfigStore.state.configurations.find(c => c.id === configuration.id)) {\n this.nylasSchedulerConfigStore.state.configurations = this.nylasSchedulerConfigStore.state.configurations.map(c => (c.id === configuration.id ? response.data : c));\n } else {\n this.nylasSchedulerConfigStore.state.configurations = [...this.nylasSchedulerConfigStore.state.configurations, response.data];\n }\n\n return dataResponse(response.data);\n }\n\n /**\n * Delete a configuration by its ID.\n * @param configurationId The ID of the configuration to delete.\n * @returns The deleted configuration or an error if the request is not initialized.\n */\n public async deleteConfiguration(configurationId: string) {\n if (!this.nylasApiRequest) {\n console.warn('Nylas API Request is not initialized');\n return dataResponse(null, {\n message: 'Error deleting configuration: Nylas API Request is not initialized',\n });\n }\n\n const [response, error] = await this.nylasApiRequest.request<NylasResponse<Configuration>>({\n method: 'DELETE',\n path: `scheduling/configurations/${configurationId}`,\n });\n\n if (error) {\n return dataResponse(null, {\n message: 'Error deleting configuration: ' + error.message,\n });\n }\n\n if (isNylasErrorResponse(response)) {\n return dataResponse(null, {\n message: 'Error deleting configuration: ' + response.error?.message,\n });\n }\n\n // Remove the configuration from the list\n this.nylasSchedulerConfigStore.state.configurations = this.nylasSchedulerConfigStore.state.configurations.filter(c => c.id !== configurationId);\n\n // If the deleted configuration was the current configuration, reset it\n if (this.nylasSchedulerConfigStore.state.selectedConfiguration?.id === configurationId) {\n this.nylasSchedulerConfigStore.resetSelectedConfiguration();\n }\n\n return dataResponse(response.data);\n }\n\n /**\n * Create a group event.\n * @param eventDetails The group event to create.\n * @returns The group event or an error if the request is not initialized.\n */\n public async createGroupEvent(eventDetails: Omit<Partial<GroupEvent>, 'id'>, configurationId: string) {\n this.nylasSchedulerConfigStore.state.isLoading = true;\n\n if (!this.nylasApiRequest) {\n console.warn('Nylas API Request is not initialized');\n return dataResponse(null, {\n message: 'Error creating group event: Nylas API Request is not initialized',\n });\n }\n\n const [response, error] = await this.nylasApiRequest.request<NylasResponse<GroupEventAPIData>>({\n method: 'POST',\n path: `scheduling/configurations/${configurationId}/group-events`,\n body: eventDetails,\n });\n\n if (error) {\n this.nylasSchedulerConfigStore.state.isLoading = false;\n return dataResponse(null, {\n message: 'Error creating group event: ' + error.message,\n });\n }\n\n if (isNylasErrorResponse(response)) {\n this.nylasSchedulerConfigStore.state.isLoading = false;\n return dataResponse(null, {\n message: 'Error creating group event: ' + response.error?.message,\n });\n }\n\n // Set the new configuration as the current configuration\n this.nylasSchedulerConfigStore.state.selectedGroupEvent = response.data;\n\n // Get the list of group events\n await this.getGroupEvents(configurationId);\n\n this.nylasSchedulerConfigStore.state.isLoading = false;\n\n return dataResponse(response.data);\n }\n\n /**\n * Get a list of group events for a configuration.\n */\n public async getGroupEvents(configurationId: string) {\n if (!this.nylasApiRequest) {\n console.warn('Nylas API Request is not initialized');\n return dataResponse(null, {\n message: 'Error fetching group events: Nylas API Request is not initialized',\n });\n }\n const queryParamsObject = new URLSearchParams();\n queryParamsObject.append('show_all', 'true');\n\n const calendarViewDateRange = this.nylasSchedulerConfigStore.state.calendarViewDateRange;\n if (calendarViewDateRange) {\n queryParamsObject.append('start_time', calendarViewDateRange.start_time);\n queryParamsObject.append('end_time', calendarViewDateRange.end_time);\n } else {\n const { startTime, endTime } = getCalendarRange(new Date().toISOString(), 'week');\n queryParamsObject.append('start_time', startTime.toString());\n queryParamsObject.append('end_time', endTime.toString());\n }\n const calendar_id = (this.nylasSchedulerConfigStore.state.selectedConfiguration as GroupConfiguration)?.group_booking?.calendar_id;\n if (calendar_id) {\n queryParamsObject.append('calendar_id', calendar_id);\n }\n\n const [response, error] = await this.nylasApiRequest.request<NylasResponse<GroupEventAPIData[]>>({\n method: 'GET',\n path: `scheduling/configurations/${configurationId}/group-events?${queryParamsObject.toString()}`,\n });\n\n if (error) {\n return dataResponse(null, {\n message: 'Error fetching group events: ' + error.message,\n });\n }\n\n if (isNylasErrorResponse(response)) {\n return dataResponse(null, {\n message: 'Error fetching group events: ' + response.error?.message,\n });\n }\n\n // Set the group events in the store\n this.nylasSchedulerConfigStore.state.groupEvents = response.data;\n\n return dataResponse(response.data);\n }\n\n /**\n * Update a group event.\n */\n public async updateGroupEventById(groupEventDetails: Partial<GroupEvent>, configurationId: string) {\n this.nylasSchedulerConfigStore.state.isLoading = true;\n if (!this.nylasApiRequest) {\n console.warn('Nylas API Request is not initialized');\n return dataResponse(null, {\n message: 'Error updating group event: Nylas API Request is not initialized',\n });\n }\n const groupEventId = groupEventDetails.id;\n delete groupEventDetails.id;\n\n const [response, error] = await this.nylasApiRequest.request<NylasResponse<GroupEventAPIData>>({\n method: 'PATCH',\n path: `scheduling/configurations/${configurationId}/group-events/${groupEventId}`,\n body: groupEventDetails,\n });\n\n if (error) {\n this.nylasSchedulerConfigStore.state.isLoading = false;\n return dataResponse(null, {\n message: 'Error updating group event: ' + error.message,\n });\n }\n\n if (isNylasErrorResponse(response)) {\n this.nylasSchedulerConfigStore.state.isLoading = false;\n return dataResponse(null, {\n message: 'Error updating group event: ' + response.error?.message,\n });\n }\n\n // Set the new group event as the current group event\n this.nylasSchedulerConfigStore.state.selectedGroupEvent = response.data;\n\n // If the group event was updated, update the list of group events\n await this.getGroupEvents(configurationId);\n\n this.nylasSchedulerConfigStore.state.isLoading = false;\n\n return dataResponse(response.data);\n }\n /**\n * Updates a group event based on recurrence logic.\n */\n public async updateGroupEvent(groupEventDetails: GroupEvent, chosenOption: RecurrenceUpdateOption, configurationId: string) {\n this.nylasSchedulerConfigStore.state.isLoading = true;\n const selectedGroupEvent = this.nylasSchedulerConfigStore.state.selectedGroupEvent;\n const masterEventId = selectedGroupEvent?.event?.master_event_id;\n const selectedGroupEventId = selectedGroupEvent?.event?.id;\n const selectedGroupEventStartTime = selectedGroupEvent?.event?.when?.start_time;\n const rruleString = selectedGroupEvent?.group_event_info?.rrule?.[0];\n const rruleStringWithoutUntil = rruleString\n ? rruleString\n .split(';')\n .filter(s => !s.startsWith('UNTIL'))\n .join(';')\n : '';\n const until = selectedGroupEventStartTime\n ? dayjs(selectedGroupEventStartTime * 1000)\n .subtract(1, 'minute')\n .format('YYYYMMDDTHHmmss[Z]')\n : '';\n if (chosenOption === 'this') {\n // Update only the current event (sub-event)\n return this.updateGroupEventById(\n {\n ...groupEventDetails,\n id: selectedGroupEventId,\n rrule: masterEventId ? undefined : groupEventDetails.rrule,\n },\n configurationId,\n );\n } else if (chosenOption === 'future' && masterEventId) {\n // 1️⃣ Create a new recurrence event with the same recurrence as before\n const newRecurrenceEvent = await this.createGroupEvent(groupEventDetails, configurationId);\n // 2️⃣ Update master event with UNTIL\n const updatedMasterEvent = {\n location: selectedGroupEvent?.event?.location,\n conferencing: selectedGroupEvent?.event?.conferencing,\n title: selectedGroupEvent?.event?.title,\n description: selectedGroupEvent?.event?.description,\n capacity: selectedGroupEvent?.group_event_info?.capacity,\n calendar_id: selectedGroupEvent?.event?.calendar_id,\n rrule: rruleStringWithoutUntil ? [rruleStringWithoutUntil + ';UNTIL=' + until] : [`RRULE:FREQ=DAILY;UNTIL=${until}`],\n };\n await this.updateGroupEventById(\n {\n ...updatedMasterEvent,\n id: masterEventId,\n },\n configurationId,\n );\n return [updatedMasterEvent, newRecurrenceEvent];\n } else if (chosenOption === 'all') {\n // Update the master event\n // Check if the when is different\n const groupEventDetailsWhen = groupEventDetails?.when;\n const selectedGroupEventWhen = selectedGroupEvent?.event?.when;\n const masterEvent = this.nylasSchedulerConfigStore.state.masterGroupEvents?.[masterEventId as string];\n let when = masterEvent?.when;\n\n if (groupEventDetailsWhen?.start_time !== selectedGroupEventWhen?.start_time) {\n when = {\n ...when,\n start_time: groupEventDetailsWhen?.start_time || when?.start_time,\n };\n }\n if (groupEventDetailsWhen?.end_time !== selectedGroupEventWhen?.end_time) {\n when = {\n ...when,\n end_time: groupEventDetailsWhen?.end_time || when?.end_time,\n };\n }\n if (groupEventDetailsWhen?.start_timezone !== selectedGroupEventWhen?.start_timezone) {\n when = {\n ...when,\n start_timezone: groupEventDetailsWhen?.start_timezone || when?.start_timezone,\n };\n }\n if (groupEventDetailsWhen?.end_timezone !== selectedGroupEventWhen?.end_timezone) {\n when = {\n ...when,\n end_timezone: groupEventDetailsWhen?.end_timezone || when?.end_timezone,\n };\n }\n\n return this.updateGroupEventById(\n {\n ...groupEventDetails,\n when: when,\n id: masterEventId,\n },\n configurationId,\n );\n }\n\n this.nylasSchedulerConfigStore.state.isLoading = false;\n throw new Error('Invalid option');\n }\n\n /**\n * Delete a group event.\n */\n public async deleteGroupEvent(_groupEventDetails: GroupEvent, chosenOption: RecurrenceDeleteOption, configurationId: string) {\n this.nylasSchedulerConfigStore.state.isLoading = true;\n const selectedGroupEvent = this.nylasSchedulerConfigStore.state.selectedGroupEvent;\n const masterEventId = selectedGroupEvent?.event?.master_event_id;\n const selectedGroupEventId = selectedGroupEvent?.event?.id;\n const selectedGroupEventStartTime = selectedGroupEvent?.event?.when?.start_time;\n const rruleString = selectedGroupEvent?.group_event_info?.rrule?.[0];\n const rruleStringWithoutUntil = rruleString\n ? rruleString\n .split(';')\n .filter(s => !s.startsWith('UNTIL'))\n .join(';')\n : '';\n const until = selectedGroupEventStartTime ? dayjs(selectedGroupEventStartTime * 1000).format('YYYYMMDDTHHmmss[Z]') : '';\n const updatedMasterEvent = {\n location: selectedGroupEvent?.event?.location,\n conferencing: selectedGroupEvent?.event?.conferencing,\n title: selectedGroupEvent?.event?.title,\n description: selectedGroupEvent?.event?.description,\n capacity: selectedGroupEvent?.group_event_info?.capacity,\n calendar_id: selectedGroupEvent?.event?.calendar_id,\n rrule: rruleStringWithoutUntil ? [rruleStringWithoutUntil + ';UNTIL=' + until] : [`RRULE:UNTIL=${until}`],\n };\n\n if (chosenOption === 'this' && selectedGroupEventId) {\n // Delete only the current event (sub-event)\n return this.deleteGroupEventById(selectedGroupEventId, configurationId);\n } else if (chosenOption === 'future' && masterEventId && selectedGroupEventId) {\n // Delete current event\n await this.deleteGroupEventById(selectedGroupEventId, configurationId);\n // Update master event with UNTIL\n return await this.updateGroupEventById(\n {\n ...updatedMasterEvent,\n id: masterEventId,\n },\n configurationId,\n );\n } else if (chosenOption === 'all' && masterEventId) {\n // Delete all events\n return this.deleteGroupEventById(masterEventId, configurationId);\n }\n\n this.nylasSchedulerConfigStore.state.isLoading = false;\n throw new Error('Invalid option');\n }\n\n /**\n * Delete a group event by its ID.\n */\n public async deleteGroupEventById(groupEventId: string, configurationId: string) {\n this.nylasSchedulerConfigStore.state.isLoading = true;\n if (!this.nylasApiRequest) {\n console.warn('Nylas API Request is not initialized');\n return dataResponse(null, {\n message: 'Error deleting group event: Nylas API Request is not initialized',\n });\n }\n\n const queryParamsObject = new URLSearchParams();\n const calendar_id = (this.nylasSchedulerConfigStore.state.selectedConfiguration as GroupConfiguration)?.group_booking?.calendar_id;\n if (calendar_id) {\n queryParamsObject.append('calendar_id', calendar_id);\n }\n\n const [response, error] = await this.nylasApiRequest.request<NylasResponse<GroupEventAPIData>>({\n method: 'DELETE',\n path: `scheduling/configurations/${configurationId}/group-events/${groupEventId}?calendar_id=${calendar_id}`,\n });\n\n if (error) {\n this.nylasSchedulerConfigStore.state.isLoading = false;\n return dataResponse(null, {\n message: 'Error deleting group event: ' + error.message,\n });\n }\n\n if (isNylasErrorResponse(response)) {\n this.nylasSchedulerConfigStore.state.isLoading = false;\n return dataResponse(null, {\n message: 'Error deleting group event: ' + response.error?.message,\n });\n }\n\n // If the group event was delete, update the list of group events\n await this.getGroupEvents(configurationId);\n this.nylasSchedulerConfigStore.state.isLoading = false;\n return dataResponse(response.data);\n }\n\n /**\n * Import a group event.\n */\n public async importGroupEvent(groupEventDetails: ImportGroupEventDetails[], configurationId: string) {\n this.nylasSchedulerConfigStore.state.isLoading = true;\n\n if (!this.nylasApiRequest) {\n console.warn('Nylas API Request is not initialized');\n return dataResponse(null, {\n message: 'Error importing group event: Nylas API Request is not initialized',\n });\n }\n\n const queryParamsObject = new URLSearchParams();\n const calendar_id = (this.nylasSchedulerConfigStore.state.selectedConfiguration as GroupConfiguration)?.group_booking?.calendar_id;\n if (calendar_id) {\n queryParamsObject.append('calendar_id', calendar_id);\n }\n\n const [response, error] = await this.nylasApiRequest.request<NylasResponse<ImportGroupEventResponse>>({\n method: 'POST',\n path: `scheduling/configurations/${configurationId}/import-group-events?${queryParamsObject.toString()}`,\n body: groupEventDetails,\n });\n\n if (error) {\n this.nylasSchedulerConfigStore.state.isLoading = false;\n return dataResponse(null, {\n message: 'Error importing group event: ' + error.message,\n });\n }\n\n if (isNylasErrorResponse(response)) {\n this.nylasSchedulerConfigStore.state.isLoading = false;\n return dataResponse(null, {\n message: 'Error importing group event: ' + response.error?.message,\n });\n }\n\n // Update the list of group events\n if (response.data?.imported_events?.length > 0) {\n await this.getGroupEvents(configurationId);\n }\n\n this.nylasSchedulerConfigStore.state.isLoading = false;\n\n return dataResponse(response.data);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"scheduler-config.js","sourceRoot":"","sources":["../../../../src/connector/shared/api/scheduler-config.ts"],"names":[],"mappings":"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","sourcesContent":["import { NylasApiRequest } from '../../../common/nylas-api-request';\nimport { NylasSchedulerConfigStoreType } from '@/stores/scheduler-config-store';\nimport { dataResponse, getCalendarRange } from '@/utils/utils';\nimport {\n Calendar,\n Configuration,\n EventDetails,\n GroupConfiguration,\n GroupEvent,\n GroupEventAPIData,\n ImportGroupEventDetails,\n ImportGroupEventResponse,\n NylasResponse,\n RecurrenceDeleteOption,\n RecurrenceUpdateOption,\n isNylasErrorResponse,\n} from '@nylas/core';\nimport dayjs from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\nimport timezone from 'dayjs/plugin/timezone';\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\n\ntype NylasSchedulerConfigAPIConnectorOptions = {\n nylasApiRequest?: NylasApiRequest;\n nylasSchedulerConfigStore: NylasSchedulerConfigStoreType;\n};\n\n/**\n * Nylas Scheduler Config API Connector\n * This class is responsible for making API requests to the Nylas API for Scheduler Configurations.\n */\nexport class NylasSchedulerConfigAPIConnector {\n private nylasApiRequest?: NylasApiRequest;\n private nylasSchedulerConfigStore: NylasSchedulerConfigStoreType;\n\n constructor({ nylasApiRequest, nylasSchedulerConfigStore }: NylasSchedulerConfigAPIConnectorOptions) {\n this.nylasApiRequest = nylasApiRequest;\n this.nylasSchedulerConfigStore = nylasSchedulerConfigStore;\n }\n\n /**\n * Get the current user.\n * @returns The current user or null if the request is not initialized.\n */\n public async currentUser() {\n if (!this.nylasApiRequest) {\n console.warn('Nylas API Request is not initialized');\n return null;\n }\n\n return this.nylasApiRequest.currentUser();\n }\n\n /**\n * Get the current user's calendars.\n * @returns The current user's calendars or an error if the request is not initialized.\n */\n public async getCalendars() {\n if (!this.nylasApiRequest) {\n console.warn('Nylas API Request is not initialized');\n return dataResponse(null, {\n message: 'Error fetching calendars: Nylas API Request is not initialized',\n });\n }\n\n const [response, error] = await this.nylasApiRequest.request<NylasResponse<Calendar[]>>({\n method: 'GET',\n path: `calendars`,\n });\n\n if (error) {\n return dataResponse(null, {\n message: 'Error fetching calendars: ' + error.message,\n });\n }\n\n if (isNylasErrorResponse(response)) {\n return dataResponse(null, {\n message: 'Error fetching calendars: ' + response.error?.message,\n });\n }\n\n // Set the new calendars as the current calendars\n this.nylasSchedulerConfigStore.state.calendars = response.data;\n\n return dataResponse(response.data);\n }\n\n /**\n * Get a configuration by its ID.\n * @param configurationId The ID of the configuration to fetch.\n */\n public async getConfigurationById(configurationId: string, forceFetch: boolean = false) {\n if (!this.nylasApiRequest) {\n console.warn('Nylas API Request is not initialized');\n return dataResponse(null, {\n message: 'Error fetching configuration: Nylas API Request is not initialized',\n });\n }\n\n // If the configuration is already in the store, return it\n if (!forceFetch) {\n const existingConfig = this.nylasSchedulerConfigStore.state.configurations.find(c => c.id === configurationId);\n if (existingConfig) {\n this.nylasSchedulerConfigStore.state.selectedConfiguration = existingConfig;\n return dataResponse(existingConfig);\n }\n }\n\n const [response, error] = await this.nylasApiRequest.request<NylasResponse<Configuration>>({\n method: 'GET',\n path: `scheduling/configurations/${configurationId}`,\n });\n\n if (error) {\n return dataResponse(null, {\n message: 'Error fetching configuration: ' + error.message,\n });\n }\n\n if (isNylasErrorResponse(response)) {\n return dataResponse(null, {\n message: 'Error fetching configuration: ' + response.error?.message,\n });\n }\n\n // Set the new configuration as the current configuration\n this.nylasSchedulerConfigStore.state.selectedConfiguration = response.data;\n\n // If the configuration was updated, update the list of configurations\n // If it doesn't exist, add it to the list\n if (this.nylasSchedulerConfigStore.state.configurations.find(c => c.id === configurationId)) {\n this.nylasSchedulerConfigStore.state.configurations = this.nylasSchedulerConfigStore.state.configurations.map(c => (c.id === configurationId ? response.data : c));\n } else {\n this.nylasSchedulerConfigStore.state.configurations = [...this.nylasSchedulerConfigStore.state.configurations, response.data];\n }\n\n return dataResponse(response.data);\n }\n\n /**\n * Get all configurations.\n * @returns The list of configurations or an error if the request is not initialized.\n */\n public async getConfigurations(cursor?: string) {\n if (!this.nylasApiRequest) {\n console.warn('Nylas API Request is not initialized');\n return dataResponse(null, {\n message: 'Error fetching configurations: Nylas API Request is not initialized',\n });\n }\n const limit = 50;\n const [response, error] = await this.nylasApiRequest.request<NylasResponse<Configuration[]>>({\n method: 'GET',\n path: `scheduling/configurations?limit=${limit}${cursor ? `&page_token=${cursor}` : ''}`,\n });\n\n if (error) {\n return dataResponse(null, {\n message: 'Error fetching configurations: ' + error.message,\n });\n }\n\n if (isNylasErrorResponse(response)) {\n return dataResponse(null, {\n message: 'Error fetching configurations: ' + response.error?.message,\n });\n }\n\n // Set the configurations in the store\n this.nylasSchedulerConfigStore.state.configurations = response.data;\n this.nylasSchedulerConfigStore.state.listConfigurationsNextCursor = response.next_cursor || null;\n return dataResponse(response.data);\n }\n\n /**\n * Get master event by its ID.\n */\n public async getMasterEventById(masterEventId: string) {\n if (!this.nylasApiRequest) {\n console.warn('Nylas API Request is not initialized');\n return dataResponse(null, {\n message: 'Error fetching master event: Nylas API Request is not initialized',\n });\n }\n\n const selectedGroupEvent = this.nylasSchedulerConfigStore.state.selectedGroupEvent;\n const calendar_id = selectedGroupEvent?.event?.calendar_id;\n if (!calendar_id) {\n console.warn('Calendar ID is not present');\n return dataResponse(null, {\n message: 'Error fetching master event: Calendar ID is not present',\n });\n }\n const queryParamsObject = new URLSearchParams();\n queryParamsObject.append('calendar_id', calendar_id);\n\n const [response, error] = await this.nylasApiRequest.request<NylasResponse<EventDetails>>({\n method: 'GET',\n path: `events/${masterEventId}?${queryParamsObject.toString()}`,\n });\n\n if (error) {\n return dataResponse(null, {\n message: 'Error fetching master event: ' + error.message,\n });\n }\n\n if (isNylasErrorResponse(response)) {\n return dataResponse(null, {\n message: 'Error fetching master event: ' + response.error?.message,\n });\n }\n\n const masterGroupEvents = this.nylasSchedulerConfigStore.state.masterGroupEvents;\n // Set the new master event as the current master event\n if (masterGroupEvents[masterEventId]) {\n this.nylasSchedulerConfigStore.state.masterGroupEvents[masterEventId] = response.data;\n } else {\n this.nylasSchedulerConfigStore.state.masterGroupEvents = { ...masterGroupEvents, [masterEventId]: response.data };\n }\n\n return dataResponse(response.data);\n }\n\n /**\n * Create a new configuration.\n * @param configuration The configuration to create.\n * @returns The new configuration or an error if the request is not initialized.\n */\n public async createConfiguration(configuration: Omit<Partial<Configuration>, 'id'>) {\n if (!this.nylasApiRequest) {\n console.warn('Nylas API Request is not initialized');\n return dataResponse(null, {\n message: 'Error creating configuration: Nylas API Request is not initialized',\n });\n }\n\n const [response, error] = await this.nylasApiRequest.request<NylasResponse<Configuration>>({\n method: 'POST',\n path: `scheduling/configurations`,\n body: configuration,\n });\n\n if (error) {\n return dataResponse(null, {\n message: 'Error creating configuration: ' + error.message,\n });\n }\n\n if (isNylasErrorResponse(response)) {\n return dataResponse(null, {\n message: 'Error creating configuration: ' + response.error?.message,\n });\n }\n\n // Set the new configuration as the current configuration\n this.nylasSchedulerConfigStore.state.selectedConfiguration = response.data;\n\n // Add the new configuration to the list of configurations\n this.nylasSchedulerConfigStore.state.configurations = [...this.nylasSchedulerConfigStore.state.configurations, response.data];\n\n return dataResponse(response.data);\n }\n\n /**\n * Update an existing configuration.\n * @param configuration The configuration to update.\n * @returns The updated configuration or an error if the request is not initialized.\n */\n public async updateConfiguration(configuration: Partial<Configuration>) {\n if (!this.nylasApiRequest) {\n console.warn('Nylas API Request is not initialized');\n return dataResponse(null, {\n message: 'Error updating configuration: Nylas API Request is not initialized',\n });\n }\n\n const [response, error] = await this.nylasApiRequest.request<NylasResponse<Configuration>>({\n method: 'PUT',\n path: `scheduling/configurations/${configuration.id}`,\n body: configuration,\n });\n\n if (error) {\n return dataResponse(null, {\n message: 'Error updating configuration: ' + error.message,\n });\n }\n\n if (isNylasErrorResponse(response)) {\n return dataResponse(null, {\n message: 'Error updating configuration: ' + response.error?.message,\n });\n }\n\n // Set the new configuration as the current configuration\n this.nylasSchedulerConfigStore.state.selectedConfiguration = response.data;\n\n // If the configuration was updated, update the list of configurations\n // If it doesn't exist, add it to the list\n if (this.nylasSchedulerConfigStore.state.configurations.find(c => c.id === configuration.id)) {\n this.nylasSchedulerConfigStore.state.configurations = this.nylasSchedulerConfigStore.state.configurations.map(c => (c.id === configuration.id ? response.data : c));\n } else {\n this.nylasSchedulerConfigStore.state.configurations = [...this.nylasSchedulerConfigStore.state.configurations, response.data];\n }\n\n return dataResponse(response.data);\n }\n\n /**\n * Delete a configuration by its ID.\n * @param configurationId The ID of the configuration to delete.\n * @returns The deleted configuration or an error if the request is not initialized.\n */\n public async deleteConfiguration(configurationId: string) {\n if (!this.nylasApiRequest) {\n console.warn('Nylas API Request is not initialized');\n return dataResponse(null, {\n message: 'Error deleting configuration: Nylas API Request is not initialized',\n });\n }\n\n const [response, error] = await this.nylasApiRequest.request<NylasResponse<Configuration>>({\n method: 'DELETE',\n path: `scheduling/configurations/${configurationId}`,\n });\n\n if (error) {\n return dataResponse(null, {\n message: 'Error deleting configuration: ' + error.message,\n });\n }\n\n if (isNylasErrorResponse(response)) {\n return dataResponse(null, {\n message: 'Error deleting configuration: ' + response.error?.message,\n });\n }\n\n // Remove the configuration from the list\n this.nylasSchedulerConfigStore.state.configurations = this.nylasSchedulerConfigStore.state.configurations.filter(c => c.id !== configurationId);\n\n // If the deleted configuration was the current configuration, reset it\n if (this.nylasSchedulerConfigStore.state.selectedConfiguration?.id === configurationId) {\n this.nylasSchedulerConfigStore.resetSelectedConfiguration();\n }\n\n return dataResponse(response.data);\n }\n\n /**\n * Create a group event.\n * @param eventDetails The group event to create.\n * @returns The group event or an error if the request is not initialized.\n */\n public async createGroupEvent(eventDetails: Omit<Partial<GroupEvent>, 'id'>, configurationId: string) {\n this.nylasSchedulerConfigStore.state.isLoading = true;\n\n if (!this.nylasApiRequest) {\n console.warn('Nylas API Request is not initialized');\n return dataResponse(null, {\n message: 'Error creating group event: Nylas API Request is not initialized',\n });\n }\n\n const [response, error] = await this.nylasApiRequest.request<NylasResponse<GroupEventAPIData>>({\n method: 'POST',\n path: `scheduling/configurations/${configurationId}/group-events`,\n body: eventDetails,\n });\n\n if (error) {\n this.nylasSchedulerConfigStore.state.isLoading = false;\n return dataResponse(null, {\n message: 'Error creating group event: ' + error.message,\n });\n }\n\n if (isNylasErrorResponse(response)) {\n this.nylasSchedulerConfigStore.state.isLoading = false;\n return dataResponse(null, {\n message: 'Error creating group event: ' + response.error?.message,\n });\n }\n\n // Set the new configuration as the current configuration\n this.nylasSchedulerConfigStore.state.selectedGroupEvent = response.data;\n\n // Get the list of group events\n await this.getGroupEvents(configurationId);\n\n this.nylasSchedulerConfigStore.state.isLoading = false;\n\n return dataResponse(response.data);\n }\n\n /**\n * Get a list of group events for a configuration.\n */\n public async getGroupEvents(configurationId: string) {\n if (!this.nylasApiRequest) {\n console.warn('Nylas API Request is not initialized');\n return dataResponse(null, {\n message: 'Error fetching group events: Nylas API Request is not initialized',\n });\n }\n const queryParamsObject = new URLSearchParams();\n queryParamsObject.append('show_all', 'true');\n\n const calendarViewDateRange = this.nylasSchedulerConfigStore.state.calendarViewDateRange;\n if (calendarViewDateRange) {\n queryParamsObject.append('start_time', calendarViewDateRange.start_time);\n queryParamsObject.append('end_time', calendarViewDateRange.end_time);\n } else {\n const { startTime, endTime } = getCalendarRange(new Date().toISOString(), 'week');\n queryParamsObject.append('start_time', startTime.toString());\n queryParamsObject.append('end_time', endTime.toString());\n }\n const calendar_id = (this.nylasSchedulerConfigStore.state.selectedConfiguration as GroupConfiguration)?.group_booking?.calendar_id;\n if (calendar_id) {\n queryParamsObject.append('calendar_id', calendar_id);\n }\n\n const [response, error] = await this.nylasApiRequest.request<NylasResponse<GroupEventAPIData[]>>({\n method: 'GET',\n path: `scheduling/configurations/${configurationId}/group-events?${queryParamsObject.toString()}`,\n });\n\n if (error) {\n return dataResponse(null, {\n message: 'Error fetching group events: ' + error.message,\n });\n }\n\n if (isNylasErrorResponse(response)) {\n return dataResponse(null, {\n message: 'Error fetching group events: ' + response.error?.message,\n });\n }\n\n // Set the group events in the store\n this.nylasSchedulerConfigStore.state.groupEvents = response.data;\n\n return dataResponse(response.data);\n }\n\n /**\n * Update a group event.\n */\n public async updateGroupEventById(groupEventDetails: Partial<GroupEvent>, configurationId: string) {\n this.nylasSchedulerConfigStore.state.isLoading = true;\n if (!this.nylasApiRequest) {\n console.warn('Nylas API Request is not initialized');\n return dataResponse(null, {\n message: 'Error updating group event: Nylas API Request is not initialized',\n });\n }\n const groupEventId = groupEventDetails.id;\n delete groupEventDetails.id;\n\n const [response, error] = await this.nylasApiRequest.request<NylasResponse<GroupEventAPIData>>({\n method: 'PATCH',\n path: `scheduling/configurations/${configurationId}/group-events/${groupEventId}`,\n body: groupEventDetails,\n });\n\n if (error) {\n this.nylasSchedulerConfigStore.state.isLoading = false;\n return dataResponse(null, {\n message: 'Error updating group event: ' + error.message,\n });\n }\n\n if (isNylasErrorResponse(response)) {\n this.nylasSchedulerConfigStore.state.isLoading = false;\n return dataResponse(null, {\n message: 'Error updating group event: ' + response.error?.message,\n });\n }\n\n // Set the new group event as the current group event\n this.nylasSchedulerConfigStore.state.selectedGroupEvent = response.data;\n\n // If the group event was updated, update the list of group events\n await this.getGroupEvents(configurationId);\n\n this.nylasSchedulerConfigStore.state.isLoading = false;\n\n return dataResponse(response.data);\n }\n /**\n * Updates a group event based on recurrence logic.\n */\n public async updateGroupEvent(groupEventDetails: GroupEvent, chosenOption: RecurrenceUpdateOption, configurationId: string) {\n this.nylasSchedulerConfigStore.state.isLoading = true;\n const selectedGroupEvent = this.nylasSchedulerConfigStore.state.selectedGroupEvent;\n const masterEventId = selectedGroupEvent?.event?.master_event_id;\n const selectedGroupEventId = selectedGroupEvent?.event?.id;\n const selectedGroupEventStartTime = selectedGroupEvent?.event?.when?.start_time;\n const rruleString = selectedGroupEvent?.group_event_info?.rrule?.[0];\n const rruleStringWithoutUntil = rruleString\n ? rruleString\n .split(';')\n .filter(s => !s.startsWith('UNTIL'))\n .join(';')\n : '';\n const until = selectedGroupEventStartTime\n ? dayjs(selectedGroupEventStartTime * 1000)\n .subtract(1, 'minute')\n .format('YYYYMMDDTHHmmss[Z]')\n : '';\n if (chosenOption === 'this') {\n // Update only the current event (sub-event)\n return this.updateGroupEventById(\n {\n ...groupEventDetails,\n id: selectedGroupEventId,\n rrule: masterEventId ? undefined : groupEventDetails.rrule,\n },\n configurationId,\n );\n } else if (chosenOption === 'future' && masterEventId) {\n // 1️⃣ Create a new recurrence event with the same recurrence as before\n const newRecurrenceEvent = await this.createGroupEvent(groupEventDetails, configurationId);\n // 2️⃣ Update master event with UNTIL\n const updatedMasterEvent = {\n location: selectedGroupEvent?.event?.location,\n conferencing: selectedGroupEvent?.event?.conferencing,\n title: selectedGroupEvent?.event?.title,\n description: selectedGroupEvent?.event?.description,\n capacity: selectedGroupEvent?.group_event_info?.capacity,\n calendar_id: selectedGroupEvent?.event?.calendar_id,\n rrule: rruleStringWithoutUntil ? [rruleStringWithoutUntil + ';UNTIL=' + until] : [`RRULE:FREQ=DAILY;UNTIL=${until}`],\n };\n await this.updateGroupEventById(\n {\n ...updatedMasterEvent,\n id: masterEventId,\n },\n configurationId,\n );\n return [updatedMasterEvent, newRecurrenceEvent];\n } else if (chosenOption === 'all') {\n // Update the master event\n // Check if the when is different\n const groupEventDetailsWhen = groupEventDetails?.when;\n const selectedGroupEventWhen = selectedGroupEvent?.event?.when;\n const masterEvent = this.nylasSchedulerConfigStore.state.masterGroupEvents?.[masterEventId as string];\n let when = masterEvent?.when;\n\n if (groupEventDetailsWhen?.start_time !== selectedGroupEventWhen?.start_time) {\n when = {\n ...when,\n start_time: groupEventDetailsWhen?.start_time || when?.start_time,\n };\n }\n if (groupEventDetailsWhen?.end_time !== selectedGroupEventWhen?.end_time) {\n when = {\n ...when,\n end_time: groupEventDetailsWhen?.end_time || when?.end_time,\n };\n }\n if (groupEventDetailsWhen?.start_timezone !== selectedGroupEventWhen?.start_timezone) {\n when = {\n ...when,\n start_timezone: groupEventDetailsWhen?.start_timezone || when?.start_timezone,\n };\n }\n if (groupEventDetailsWhen?.end_timezone !== selectedGroupEventWhen?.end_timezone) {\n when = {\n ...when,\n end_timezone: groupEventDetailsWhen?.end_timezone || when?.end_timezone,\n };\n }\n\n return this.updateGroupEventById(\n {\n ...groupEventDetails,\n when: when,\n id: masterEventId,\n },\n configurationId,\n );\n }\n\n this.nylasSchedulerConfigStore.state.isLoading = false;\n throw new Error('Invalid option');\n }\n\n /**\n * Delete a group event.\n */\n public async deleteGroupEvent(_groupEventDetails: GroupEvent, chosenOption: RecurrenceDeleteOption, configurationId: string) {\n this.nylasSchedulerConfigStore.state.isLoading = true;\n const selectedGroupEvent = this.nylasSchedulerConfigStore.state.selectedGroupEvent;\n const masterEventId = selectedGroupEvent?.event?.master_event_id;\n const selectedGroupEventId = selectedGroupEvent?.event?.id;\n const selectedGroupEventStartTime = selectedGroupEvent?.event?.when?.start_time;\n const rruleString = selectedGroupEvent?.group_event_info?.rrule?.[0];\n const rruleStringWithoutUntil = rruleString\n ? rruleString\n .split(';')\n .filter(s => !s.startsWith('UNTIL'))\n .join(';')\n : '';\n const until = selectedGroupEventStartTime ? dayjs(selectedGroupEventStartTime * 1000).format('YYYYMMDDTHHmmss[Z]') : '';\n const updatedMasterEvent = {\n location: selectedGroupEvent?.event?.location,\n conferencing: selectedGroupEvent?.event?.conferencing,\n title: selectedGroupEvent?.event?.title,\n description: selectedGroupEvent?.event?.description,\n capacity: selectedGroupEvent?.group_event_info?.capacity,\n calendar_id: selectedGroupEvent?.event?.calendar_id,\n rrule: rruleStringWithoutUntil ? [rruleStringWithoutUntil + ';UNTIL=' + until] : [`RRULE:UNTIL=${until}`],\n };\n\n if (chosenOption === 'this' && selectedGroupEventId) {\n // Delete only the current event (sub-event)\n return this.deleteGroupEventById(selectedGroupEventId, configurationId);\n } else if (chosenOption === 'future' && masterEventId && selectedGroupEventId) {\n // Delete current event\n await this.deleteGroupEventById(selectedGroupEventId, configurationId);\n // Update master event with UNTIL\n return await this.updateGroupEventById(\n {\n ...updatedMasterEvent,\n id: masterEventId,\n },\n configurationId,\n );\n } else if (chosenOption === 'all' && masterEventId) {\n // Delete all events\n return this.deleteGroupEventById(masterEventId, configurationId);\n }\n\n this.nylasSchedulerConfigStore.state.isLoading = false;\n throw new Error('Invalid option');\n }\n\n /**\n * Delete a group event by its ID.\n */\n public async deleteGroupEventById(groupEventId: string, configurationId: string) {\n this.nylasSchedulerConfigStore.state.isLoading = true;\n if (!this.nylasApiRequest) {\n console.warn('Nylas API Request is not initialized');\n return dataResponse(null, {\n message: 'Error deleting group event: Nylas API Request is not initialized',\n });\n }\n\n const queryParamsObject = new URLSearchParams();\n const calendar_id = (this.nylasSchedulerConfigStore.state.selectedConfiguration as GroupConfiguration)?.group_booking?.calendar_id;\n if (calendar_id) {\n queryParamsObject.append('calendar_id', calendar_id);\n }\n\n const [response, error] = await this.nylasApiRequest.request<NylasResponse<GroupEventAPIData>>({\n method: 'DELETE',\n path: `scheduling/configurations/${configurationId}/group-events/${groupEventId}?calendar_id=${calendar_id}`,\n });\n\n if (error) {\n this.nylasSchedulerConfigStore.state.isLoading = false;\n return dataResponse(null, {\n message: 'Error deleting group event: ' + error.message,\n });\n }\n\n if (isNylasErrorResponse(response)) {\n this.nylasSchedulerConfigStore.state.isLoading = false;\n return dataResponse(null, {\n message: 'Error deleting group event: ' + response.error?.message,\n });\n }\n\n // If the group event was delete, update the list of group events\n await this.getGroupEvents(configurationId);\n this.nylasSchedulerConfigStore.state.isLoading = false;\n return dataResponse(response.data);\n }\n\n /**\n * Import a group event.\n */\n public async importGroupEvent(groupEventDetails: ImportGroupEventDetails[], configurationId: string) {\n this.nylasSchedulerConfigStore.state.isLoading = true;\n\n if (!this.nylasApiRequest) {\n console.warn('Nylas API Request is not initialized');\n return dataResponse(null, {\n message: 'Error importing group event: Nylas API Request is not initialized',\n });\n }\n\n const queryParamsObject = new URLSearchParams();\n const calendar_id = (this.nylasSchedulerConfigStore.state.selectedConfiguration as GroupConfiguration)?.group_booking?.calendar_id;\n if (calendar_id) {\n queryParamsObject.append('calendar_id', calendar_id);\n }\n\n const [response, error] = await this.nylasApiRequest.request<NylasResponse<ImportGroupEventResponse>>({\n method: 'POST',\n path: `scheduling/configurations/${configurationId}/import-group-events?${queryParamsObject.toString()}`,\n body: groupEventDetails,\n });\n\n if (error) {\n this.nylasSchedulerConfigStore.state.isLoading = false;\n return dataResponse(null, {\n message: 'Error importing group event: ' + error.message,\n });\n }\n\n if (isNylasErrorResponse(response)) {\n this.nylasSchedulerConfigStore.state.isLoading = false;\n return dataResponse(null, {\n message: 'Error importing group event: ' + response.error?.message,\n });\n }\n\n // Update the list of group events\n if (response.data?.imported_events?.length > 0) {\n await this.getGroupEvents(configurationId);\n }\n\n this.nylasSchedulerConfigStore.state.isLoading = false;\n\n return dataResponse(response.data);\n }\n}\n"]}
|