@nylas/web-elements 1.4.5 → 2.0.0
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 +179 -146
- package/dist/cdn/nylas-scheduling/nylas-scheduling.es.js +4998 -4993
- package/dist/cjs/calendar-agenda-fill-icon_36.cjs.entry.js +4 -4
- package/dist/cjs/checkmark-icon_15.cjs.entry.js +4 -4
- package/dist/cjs/checkmark-icon_15.cjs.entry.js.map +1 -1
- package/dist/cjs/{constants-3b9fb535.js → constants-27331d2d.js} +1 -5
- package/dist/cjs/constants-27331d2d.js.map +1 -0
- package/dist/cjs/{customParseFormat-4dbd51f6.js → customParseFormat-22da9017.js} +2 -2
- package/dist/cjs/{customParseFormat-4dbd51f6.js.map → customParseFormat-22da9017.js.map} +1 -1
- package/dist/cjs/{feedbackSync-670798db.js → feedbackSync-adabe7d6.js} +2 -2
- package/dist/cjs/{feedbackSync-670798db.js.map → feedbackSync-adabe7d6.js.map} +1 -1
- package/dist/cjs/globe-icon_2.cjs.entry.js +3 -3
- package/dist/cjs/google-logo-icon_6.cjs.entry.js +49 -25
- package/dist/cjs/google-logo-icon_6.cjs.entry.js.map +1 -1
- package/dist/cjs/index.cjs.js +2 -2
- package/dist/cjs/{index.es-cbc1ecb6.js → index.es-7848228a.js} +2 -2
- package/dist/cjs/{index.es-cbc1ecb6.js.map → index.es-7848228a.js.map} +1 -1
- package/dist/cjs/input-component.cjs.entry.js +1 -1
- package/dist/cjs/input-dropdown_2.cjs.entry.js +2 -2
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/multi-select-dropdown_2.cjs.entry.js +1 -1
- package/dist/cjs/{nylas-api-request-af6121b4.js → nylas-api-request-976db0f4.js} +2 -2
- package/dist/cjs/{nylas-api-request-af6121b4.js.map → nylas-api-request-976db0f4.js.map} +1 -1
- package/dist/cjs/nylas-booked-event-card_12.cjs.entry.js +3 -3
- package/dist/cjs/nylas-event-calendar_3.cjs.entry.js +4 -4
- package/dist/cjs/nylas-form-card.cjs.entry.js +2 -2
- package/dist/cjs/nylas-scheduler-editor.cjs.entry.js +22 -16
- package/dist/cjs/nylas-scheduler-editor.cjs.entry.js.map +1 -1
- package/dist/cjs/nylas-scheduling.cjs.entry.js +7 -7
- package/dist/cjs/nylas-web-elements.cjs.js +1 -1
- package/dist/cjs/{register-component-5e87c463.js → register-component-d2f37e40.js} +2 -2
- package/dist/cjs/{register-component-5e87c463.js.map → register-component-d2f37e40.js.map} +1 -1
- package/dist/cjs/textarea-component.cjs.entry.js +1 -1
- package/dist/cjs/{utils-0dfca9ec.js → utils-d522ef01.js} +10 -1
- package/dist/cjs/utils-d522ef01.js.map +1 -0
- package/dist/collection/common/constants.js +0 -1
- package/dist/collection/common/constants.js.map +1 -1
- package/dist/collection/components/scheduler/nylas-scheduling/nylas-scheduling.js +1 -1
- package/dist/collection/components/scheduler-editor/nylas-editor-tabs-group/nylas-editor-tabs-group.js +6 -7
- package/dist/collection/components/scheduler-editor/nylas-editor-tabs-group/nylas-editor-tabs-group.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-event-description/nylas-event-description.js +1 -1
- package/dist/collection/components/scheduler-editor/nylas-event-description/nylas-event-description.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-list-configurations/nylas-list-configurations.js +6 -3
- package/dist/collection/components/scheduler-editor/nylas-list-configurations/nylas-list-configurations.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-scheduler-editor/ExpressFlow.js +4 -5
- package/dist/collection/components/scheduler-editor/nylas-scheduler-editor/ExpressFlow.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-scheduler-editor/nylas-scheduler-editor.css +0 -8
- package/dist/collection/components/scheduler-editor/nylas-scheduler-editor/nylas-scheduler-editor.js +43 -10
- package/dist/collection/components/scheduler-editor/nylas-scheduler-editor/nylas-scheduler-editor.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-select-event-type/nylas-select-event-type.js +52 -7
- package/dist/collection/components/scheduler-editor/nylas-select-event-type/nylas-select-event-type.js.map +1 -1
- package/dist/collection/components/scheduler-editor/nylas-timeslot-interval/nylas-timeslot-interval.js +1 -1
- package/dist/collection/stores/scheduler-config-store.js.map +1 -1
- package/dist/components/constants.js +1 -5
- package/dist/components/constants.js.map +1 -1
- package/dist/components/nylas-editor-tabs-group2.js +8 -9
- package/dist/components/nylas-editor-tabs-group2.js.map +1 -1
- package/dist/components/nylas-editor-tabs2.js +2 -2
- package/dist/components/nylas-event-description2.js +1 -1
- package/dist/components/nylas-event-description2.js.map +1 -1
- package/dist/components/nylas-list-configurations2.js +6 -3
- package/dist/components/nylas-list-configurations2.js.map +1 -1
- package/dist/components/nylas-scheduler-editor.js +22 -14
- package/dist/components/nylas-scheduler-editor.js.map +1 -1
- package/dist/components/nylas-scheduling.js +3 -3
- package/dist/components/nylas-select-event-type2.js +32 -8
- package/dist/components/nylas-select-event-type2.js.map +1 -1
- package/dist/components/nylas-timeslot-interval2.js +1 -1
- package/dist/components/utils.js +9 -0
- package/dist/components/utils.js.map +1 -1
- package/dist/esm/calendar-agenda-fill-icon_36.entry.js +4 -4
- package/dist/esm/checkmark-icon_15.entry.js +4 -4
- package/dist/esm/checkmark-icon_15.entry.js.map +1 -1
- package/dist/esm/{constants-3d8016e3.js → constants-f51538ef.js} +2 -6
- package/dist/esm/constants-f51538ef.js.map +1 -0
- package/dist/esm/{customParseFormat-129be926.js → customParseFormat-d1de5ed0.js} +2 -2
- package/dist/esm/{customParseFormat-129be926.js.map → customParseFormat-d1de5ed0.js.map} +1 -1
- package/dist/esm/{feedbackSync-d943ffc7.js → feedbackSync-172f942c.js} +2 -2
- package/dist/esm/{feedbackSync-d943ffc7.js.map → feedbackSync-172f942c.js.map} +1 -1
- package/dist/esm/globe-icon_2.entry.js +3 -3
- package/dist/esm/google-logo-icon_6.entry.js +49 -25
- package/dist/esm/google-logo-icon_6.entry.js.map +1 -1
- package/dist/esm/{index.es-4615d47c.js → index.es-fc8588de.js} +2 -2
- package/dist/esm/{index.es-4615d47c.js.map → index.es-fc8588de.js.map} +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/input-component.entry.js +1 -1
- package/dist/esm/input-dropdown_2.entry.js +2 -2
- package/dist/esm/loader.js +1 -1
- package/dist/esm/multi-select-dropdown_2.entry.js +1 -1
- package/dist/esm/{nylas-api-request-acf12b47.js → nylas-api-request-3d7ced61.js} +2 -2
- package/dist/esm/{nylas-api-request-acf12b47.js.map → nylas-api-request-3d7ced61.js.map} +1 -1
- package/dist/esm/nylas-booked-event-card_12.entry.js +3 -3
- package/dist/esm/nylas-event-calendar_3.entry.js +4 -4
- package/dist/esm/nylas-form-card.entry.js +2 -2
- package/dist/esm/nylas-scheduler-editor.entry.js +22 -16
- package/dist/esm/nylas-scheduler-editor.entry.js.map +1 -1
- package/dist/esm/nylas-scheduling.entry.js +7 -7
- package/dist/esm/nylas-web-elements.js +1 -1
- package/dist/esm/{register-component-083eb961.js → register-component-62d792d4.js} +2 -2
- package/dist/esm/{register-component-083eb961.js.map → register-component-62d792d4.js.map} +1 -1
- package/dist/esm/textarea-component.entry.js +1 -1
- package/dist/esm/{utils-6c05ecaf.js → utils-bb88dd4d.js} +10 -1
- package/dist/esm/utils-bb88dd4d.js.map +1 -0
- package/dist/nylas-web-elements/index.esm.js +1 -1
- package/dist/nylas-web-elements/nylas-web-elements.esm.js +1 -1
- package/dist/nylas-web-elements/nylas-web-elements.esm.js.map +1 -1
- package/dist/nylas-web-elements/{p-865721fd.entry.js → p-05204c68.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-2b38054f.entry.js → p-0d422938.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-c59787f4.js → p-0d6ecada.js} +2 -2
- package/dist/nylas-web-elements/{p-e2632a60.js → p-198f05a6.js} +2 -2
- package/dist/nylas-web-elements/p-1d8c55c6.entry.js +11 -0
- package/dist/nylas-web-elements/p-1d8c55c6.entry.js.map +1 -0
- package/dist/nylas-web-elements/{p-4e1e01e4.entry.js → p-29f601d9.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-60b48bf7.js → p-3a3c5e17.js} +2 -2
- package/dist/nylas-web-elements/{p-6bb6a0b8.entry.js → p-447837c2.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-faa723fc.entry.js → p-49c8d4d9.entry.js} +2 -2
- package/dist/nylas-web-elements/p-49c8d4d9.entry.js.map +1 -0
- package/dist/nylas-web-elements/p-7e885253.js +2 -0
- package/dist/nylas-web-elements/p-7e885253.js.map +1 -0
- package/dist/nylas-web-elements/{p-3cc1072e.js → p-84109239.js} +2 -2
- package/dist/nylas-web-elements/{p-d16cd88b.entry.js → p-a7d2a211.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-bea31f39.entry.js → p-a9107606.entry.js} +2 -2
- package/dist/nylas-web-elements/p-a9107606.entry.js.map +1 -0
- package/dist/nylas-web-elements/{p-a9a0dd64.entry.js → p-ab96941e.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-6fc7d11b.entry.js → p-af94512e.entry.js} +3 -3
- package/dist/nylas-web-elements/{p-bfe2bdbd.js → p-b3ca5d4d.js} +2 -2
- package/dist/nylas-web-elements/{p-80d57b5a.entry.js → p-cd24a45e.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-6364eb02.entry.js → p-e9369c76.entry.js} +2 -2
- package/dist/nylas-web-elements/{p-b2241c3c.entry.js → p-f00d1bb3.entry.js} +2 -2
- package/dist/nylas-web-elements/p-f73e34dd.js +14 -0
- package/dist/nylas-web-elements/{p-2b97a896.js.map → p-f73e34dd.js.map} +1 -1
- package/dist/types/common/constants.d.ts +216 -1
- package/dist/types/components/scheduler-editor/nylas-editor-tabs-group/nylas-editor-tabs-group.d.ts +0 -2
- package/dist/types/components/scheduler-editor/nylas-scheduler-editor/ExpressFlow.d.ts +1 -2
- package/dist/types/components/scheduler-editor/nylas-scheduler-editor/nylas-scheduler-editor.d.ts +3 -1
- package/dist/types/components/scheduler-editor/nylas-select-event-type/nylas-select-event-type.d.ts +2 -1
- package/dist/types/components.d.ts +18 -2
- package/dist/types/stores/scheduler-config-store.d.ts +2 -1
- package/package.json +1 -1
- package/dist/cjs/constants-3b9fb535.js.map +0 -1
- package/dist/cjs/utils-0dfca9ec.js.map +0 -1
- package/dist/esm/constants-3d8016e3.js.map +0 -1
- package/dist/esm/utils-6c05ecaf.js.map +0 -1
- package/dist/nylas-web-elements/p-2b97a896.js +0 -14
- package/dist/nylas-web-elements/p-35b7d082.entry.js +0 -11
- package/dist/nylas-web-elements/p-35b7d082.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-6f7cb609.js +0 -2
- package/dist/nylas-web-elements/p-6f7cb609.js.map +0 -1
- package/dist/nylas-web-elements/p-bea31f39.entry.js.map +0 -1
- package/dist/nylas-web-elements/p-faa723fc.entry.js.map +0 -1
- /package/dist/nylas-web-elements/{p-865721fd.entry.js.map → p-05204c68.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-2b38054f.entry.js.map → p-0d422938.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-c59787f4.js.map → p-0d6ecada.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-e2632a60.js.map → p-198f05a6.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-4e1e01e4.entry.js.map → p-29f601d9.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-60b48bf7.js.map → p-3a3c5e17.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-6bb6a0b8.entry.js.map → p-447837c2.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-3cc1072e.js.map → p-84109239.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-d16cd88b.entry.js.map → p-a7d2a211.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-a9a0dd64.entry.js.map → p-ab96941e.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-6fc7d11b.entry.js.map → p-af94512e.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-bfe2bdbd.js.map → p-b3ca5d4d.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-80d57b5a.entry.js.map → p-cd24a45e.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-6364eb02.entry.js.map → p-e9369c76.entry.js.map} +0 -0
- /package/dist/nylas-web-elements/{p-b2241c3c.entry.js.map → p-f00d1bb3.entry.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"nylas-scheduler-editor.js","mappings":"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AAI,CAAC;AACxD,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;AAChE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC;AACxD,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;AAChE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC;AACxD,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;AAChE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC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","names":["isNylasErrorResponse","local","global","this","r","t","n","uuid","sha256","jwtDecode","NylasSchedulerEditor","i18next"],"sources":["src/connector/shared/api/scheduler-config.ts","src/connector/nylas-scheduler-config-connector/index.ts","src/stores/scheduler-config-store.ts","../nylas-identity/esm/client/localStorage.js","../nylas-identity/esm/client/store.js","../nylas-identity/esm/client/indexedDB.js","../../node_modules/.pnpm/js-sha256@0.9.0/node_modules/js-sha256/src/sha256.js","../../node_modules/.pnpm/uuid@8.3.2/node_modules/uuid/dist/esm-browser/rng.js","../../node_modules/.pnpm/uuid@8.3.2/node_modules/uuid/dist/esm-browser/regex.js","../../node_modules/.pnpm/uuid@8.3.2/node_modules/uuid/dist/esm-browser/validate.js","../../node_modules/.pnpm/uuid@8.3.2/node_modules/uuid/dist/esm-browser/stringify.js","../../node_modules/.pnpm/uuid@8.3.2/node_modules/uuid/dist/esm-browser/v4.js","../../node_modules/.pnpm/@microsoft+fetch-event-source@2.0.1/node_modules/@microsoft/fetch-event-source/lib/esm/parse.js","../../node_modules/.pnpm/@microsoft+fetch-event-source@2.0.1/node_modules/@microsoft/fetch-event-source/lib/esm/fetch.js","../nylas-identity/esm/helpers/index.js","../../node_modules/.pnpm/jwt-decode@3.1.2/node_modules/jwt-decode/build/jwt-decode.esm.js","../nylas-identity/esm/app.js","../../node_modules/.pnpm/react@18.2.0/node_modules/react/cjs/react.production.min.js","src/components/scheduler-editor/nylas-scheduler-editor/LoginRequired.tsx","src/components/scheduler-editor/nylas-scheduler-editor/ExpressFlow.tsx","src/components/scheduler-editor/nylas-scheduler-editor/nylas-scheduler-editor.scss?tag=nylas-scheduler-editor&encapsulation=shadow","src/components/scheduler-editor/nylas-scheduler-editor/nylas-scheduler-editor.tsx"],"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 recurrence: masterEventId ? undefined : groupEventDetails.recurrence,\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 recurrence: 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 recurrence: 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","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","import { AdditionalParticipant, Calendar, Configuration, EventDetails, GroupConfiguration, GroupEventAPIData } from '@nylas/core';\nimport { ObservableMap, createStore } from '@stencil/store';\nimport { User } from '../common/nylas-api-request';\nimport { CONFIGURATION_EVENT_TYPE, EXPERIMENTAL_FEATURES } from '@/common/constants';\n\ntype RecursivePartial<T> = {\n [P in keyof T]?: T[P] extends (infer U)[] ? RecursivePartial<U>[] : T[P] extends object | undefined ? RecursivePartial<T[P]> : T[P];\n};\n\nexport interface NylasSchedulerConfigStoreState {\n /**\n * The selected configuration.\n * This is the configuration that is currently selected, use it to populate default values for new configurations.\n */\n selectedConfiguration: RecursivePartial<Configuration> | RecursivePartial<GroupConfiguration>;\n /**\n * The list of configurations.\n * This is the list of configurations that the user has created.\n */\n configurations: Configuration[];\n /**\n * The list of calendars.\n * This is the list of calendars that the user has access to.\n */\n calendars: Calendar[];\n /**\n * The current user.\n * This is the user that is currently logged in.\n */\n currentUser: User | null;\n /**\n * The current action.\n * This is the current action that the user is performing.\n */\n action: 'create' | 'create-select' | 'edit' | null;\n /**\n * The additional participants.\n */\n additionalParticipants: AdditionalParticipant[];\n /**\n * The next cursor for list configurations.\n */\n listConfigurationsNextCursor: string | null;\n /**\n * The conference providers.\n */\n conferenceProviders?: Record<'microsoft' | 'zoom' | 'google', string>;\n /**\n * The flag to determine if the slug is required\n */\n requiresSlug: boolean;\n /**\n * The selected language.\n */\n selectedLanguage?: string;\n /**\n * The flag to show or hide the option to manage nylas branding in the email template.\n */\n nylasBranding?: boolean;\n /**\n * The experimental features.\n */\n experimentalFeatures?: Record<EXPERIMENTAL_FEATURES, boolean>;\n /**\n * The selected event type for creating a new configuration.\n */\n selectedEventType?: CONFIGURATION_EVENT_TYPE;\n /**\n * The group events of the selected configuration.\n */\n groupEvents: GroupEventAPIData[];\n /**\n * The selected group event being edited.\n */\n selectedGroupEvent?: GroupEventAPIData;\n /**\n * The url params with the date and time range for the current view in the scheduler editor calendar.\n */\n calendarViewDateRange?: {\n start_time: string;\n end_time: string;\n };\n /**\n * The list of master group events.\n */\n masterGroupEvents: Record<string, EventDetails>;\n /**\n * The flag to determine if the form is loading.\n */\n isLoading: boolean;\n}\n\nexport type NylasSchedulerConfigStoreType = ReturnType<typeof CreateNylasSchedulerConfigStore>;\n\nexport type CreateNylasSchedulerConfigStoreReturnType = ObservableMap<NylasSchedulerConfigStoreState> & {\n /**\n * Reset the selected configuration to the default state.\n * This is used to reset the selected configuration to the default state instead of setting it to an empty object.\n */\n resetSelectedConfiguration: () => void;\n};\n\nexport function CreateNylasSchedulerConfigStore(defaultState: Partial<NylasSchedulerConfigStoreState> = {}): CreateNylasSchedulerConfigStoreReturnType {\n const defaultSchedulerConfigState: NylasSchedulerConfigStoreState = {\n selectedConfiguration: {},\n configurations: [],\n groupEvents: [],\n listConfigurationsNextCursor: null,\n calendars: [],\n currentUser: null,\n action: null,\n additionalParticipants: [],\n requiresSlug: false,\n masterGroupEvents: {},\n isLoading: false,\n ...defaultState,\n };\n const store = createStore<NylasSchedulerConfigStoreState>(defaultSchedulerConfigState);\n\n /**\n * Reset the selected configuration to the default state.\n * This is used to reset the selected configuration to the default state instead of setting it to an empty object.\n */\n function resetSelectedConfiguration() {\n store.set('selectedConfiguration', { ...defaultState['selectedConfiguration'] });\n }\n\n store.onChange('action', async action => {\n if (!action) {\n resetSelectedConfiguration();\n }\n });\n\n return {\n ...store,\n resetSelectedConfiguration,\n };\n}\n","class LocalStorage {\n get(key) {\n return new Promise((res) => {\n const record = window.localStorage.getItem(key);\n if (!record) {\n res(null);\n }\n else {\n res(JSON.parse(record));\n }\n });\n }\n async remove(key) {\n window.localStorage.removeItem(key);\n return new Promise((res) => {\n res(null);\n });\n }\n set(key, value) {\n window.localStorage.setItem(key, JSON.stringify(value));\n return new Promise((res) => {\n res(null);\n });\n }\n}\nexport default LocalStorage;\n","import { Buffer } from \"buffer\";\nimport local from \"./localStorage\";\nconst PKCE_KEY = \"pkce\";\nconst GRANT_KEY = \"grant\";\nconst USER_KEY = \"user\";\nexport class Storage {\n Storage = new local();\n constructor(store) {\n if (store) {\n this.Storage = store;\n return;\n }\n }\n setPKCE(value) {\n const encrypt = Buffer.from(value);\n this.Storage.set(PKCE_KEY, encrypt.toString(\"base64\"));\n }\n async getPKCE() {\n try {\n const pkce = await this.Storage.get(PKCE_KEY);\n if (pkce) {\n const b = Buffer.from(pkce, \"base64\");\n return b.toString(\"utf8\");\n }\n }\n catch (error) {\n return null;\n }\n return null;\n }\n removePKCE() {\n this.Storage.remove(PKCE_KEY);\n }\n setGrant(resp, multiAccount = false) {\n const { grant_id } = resp;\n this.Storage.set(`${GRANT_KEY}${multiAccount ? \"-\" + grant_id : \"\"}`, resp);\n }\n removeGrant(id, multiAccount = false) {\n this.Storage.remove(`${GRANT_KEY}${multiAccount ? \"-\" + id : \"\"}`);\n }\n async getGrant(id, multiAccount = false) {\n const grant = await this.Storage.get(`${GRANT_KEY}${multiAccount ? \"-\" + id : \"\"}`);\n if (grant) {\n return grant;\n }\n return null;\n }\n // setUserToken is used to store the IDToken in storage\n async setUserToken(token) {\n const userTokens = await this.getUserTokens();\n // If userTokens exist, check if the token is already in the array\n if (userTokens) {\n const userToken = userTokens.find((t) => t.sub === token.sub);\n // If the token is not in the array, add it\n if (!userToken) {\n const newTokens = [...userTokens, token];\n this.Storage.set(USER_KEY, newTokens);\n }\n else {\n // If the token is in the array, update it\n const newUserTokens = userTokens.map((t) => {\n if (t.sub === token.sub) {\n t = token;\n }\n return t;\n });\n this.Storage.set(USER_KEY, newUserTokens);\n }\n }\n else {\n // If userTokens do not exist, create a new array with the token\n this.Storage.set(USER_KEY, [token]);\n }\n }\n // getUserToken is used to retrieve a specific IDToken from storage\n async getUserToken(id = \"\") {\n const tokens = await this.Storage.get(USER_KEY);\n if (tokens) {\n if (id === \"\") {\n // If no id is passed, return the first token\n return tokens[0];\n }\n // Find the token with the matching sub\n const userToken = tokens.find((token) => token.sub === id);\n return userToken;\n }\n return null;\n }\n // getUserTokens is used to retrieve all IDTokens from storage\n async getUserTokens() {\n const tokens = await this.Storage.get(USER_KEY);\n if (tokens) {\n return tokens;\n }\n return null;\n }\n // removeUserTokens is used to remove all IDTokens from storage\n removeUserTokens() {\n this.Storage.remove(USER_KEY);\n }\n // removeUserToken is used to remove a specific IDToken from storage\n async removeUserToken(id) {\n const userTokens = await this.getUserTokens();\n // Filter out the token with the matching sub\n const tokens = userTokens?.filter((token) => token.sub !== id);\n // If there are tokens left, store them\n this.Storage.set(USER_KEY, tokens);\n }\n async clearSession() {\n const tokens = await this.getUserTokens();\n tokens?.forEach((token) => {\n this.removeGrant(token.sub);\n });\n this.removePKCE();\n this.removeUserTokens();\n }\n}\n","class IndexedDBStorage {\n databaseName = \"identity-db\";\n storeName = \"identity\";\n get(key) {\n const self = this;\n return new Promise((resolve, reject) => {\n self.openDatabase().then(function (db) {\n const transaction = db.transaction(self.storeName, \"readwrite\");\n const objectStore = transaction.objectStore(self.storeName);\n const getRequest = objectStore.get(key);\n getRequest.onsuccess = () => {\n resolve(getRequest.result);\n };\n getRequest.onerror = () => {\n reject(getRequest.error);\n };\n transaction.oncomplete = () => {\n db.close();\n };\n });\n });\n }\n async remove(key) {\n const self = this;\n return new Promise((resolve, reject) => {\n const request = indexedDB.open(this.databaseName);\n request.onupgradeneeded = function (event) {\n const db = event.target.result;\n db.createObjectStore(self.storeName);\n };\n request.onerror = () => {\n reject(request.error);\n };\n request.onsuccess = (event) => {\n const db = event.target.result;\n const transaction = db.transaction(this.storeName, \"readwrite\");\n const objectStore = transaction.objectStore(this.storeName);\n const deleteRequest = objectStore.delete(key);\n deleteRequest.onsuccess = () => {\n resolve(null);\n };\n deleteRequest.onerror = () => {\n reject(deleteRequest.error);\n };\n transaction.oncomplete = () => {\n db.close();\n };\n };\n });\n }\n set(key, value) {\n return new Promise((resolve, reject) => {\n const request = indexedDB.open(this.databaseName);\n request.onerror = () => {\n reject(request.error);\n };\n request.onupgradeneeded = (event) => {\n const db = event.target.result;\n db.createObjectStore(this.storeName);\n };\n request.onsuccess = (event) => {\n const db = event.target.result;\n const transaction = db.transaction(this.storeName, \"readwrite\");\n const objectStore = transaction.objectStore(this.storeName);\n const setRequest = objectStore.put(value, key);\n setRequest.onsuccess = () => {\n resolve(value);\n };\n setRequest.onerror = () => {\n reject(setRequest.error);\n };\n transaction.oncomplete = () => {\n db.close();\n };\n };\n });\n }\n openDatabase() {\n const self = this;\n return new Promise(function (resolve, reject) {\n const request = indexedDB.open(self.databaseName, 2);\n request.onupgradeneeded = function (event) {\n const db = event.target.result;\n db.createObjectStore(self.storeName);\n };\n request.onsuccess = function (event) {\n resolve(event.target.result);\n };\n request.onerror = function (event) {\n reject(event.error);\n };\n });\n }\n}\nexport default IndexedDBStorage;\n","/**\n * [js-sha256]{@link https://github.com/emn178/js-sha256}\n *\n * @version 0.9.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2014-2017\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var ERROR = 'input is invalid type';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA256_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA256_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA256_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA256_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var EXTRA = [-2147483648, 8388608, 32768, 128];\n var SHIFT = [24, 16, 8, 0];\n var K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n ];\n var OUTPUT_TYPES = ['hex', 'array', 'digest', 'arrayBuffer'];\n\n var blocks = [];\n\n if (root.JS_SHA256_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (outputType, is224) {\n return function (message) {\n return new Sha256(is224, true).update(message)[outputType]();\n };\n };\n\n var createMethod = function (is224) {\n var method = createOutputMethod('hex', is224);\n if (NODE_JS) {\n method = nodeWrap(method, is224);\n }\n method.create = function () {\n return new Sha256(is224);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createOutputMethod(type, is224);\n }\n return method;\n };\n\n var nodeWrap = function (method, is224) {\n var crypto = eval(\"require('crypto')\");\n var Buffer = eval(\"require('buffer').Buffer\");\n var algorithm = is224 ? 'sha224' : 'sha256';\n var nodeMethod = function (message) {\n if (typeof message === 'string') {\n return crypto.createHash(algorithm).update(message, 'utf8').digest('hex');\n } else {\n if (message === null || message === undefined) {\n throw new Error(ERROR);\n } else if (message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n }\n }\n if (Array.isArray(message) || ArrayBuffer.isView(message) ||\n message.constructor === Buffer) {\n return crypto.createHash(algorithm).update(new Buffer(message)).digest('hex');\n } else {\n return method(message);\n }\n };\n return nodeMethod;\n };\n\n var createHmacOutputMethod = function (outputType, is224) {\n return function (key, message) {\n return new HmacSha256(key, is224, true).update(message)[outputType]();\n };\n };\n\n var createHmacMethod = function (is224) {\n var method = createHmacOutputMethod('hex', is224);\n method.create = function (key) {\n return new HmacSha256(key, is224);\n };\n method.update = function (key, message) {\n return method.create(key).update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createHmacOutputMethod(type, is224);\n }\n return method;\n };\n\n function Sha256(is224, sharedMemory) {\n if (sharedMemory) {\n blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n this.blocks = blocks;\n } else {\n this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n }\n\n if (is224) {\n this.h0 = 0xc1059ed8;\n this.h1 = 0x367cd507;\n this.h2 = 0x3070dd17;\n this.h3 = 0xf70e5939;\n this.h4 = 0xffc00b31;\n this.h5 = 0x68581511;\n this.h6 = 0x64f98fa7;\n this.h7 = 0xbefa4fa4;\n } else { // 256\n this.h0 = 0x6a09e667;\n this.h1 = 0xbb67ae85;\n this.h2 = 0x3c6ef372;\n this.h3 = 0xa54ff53a;\n this.h4 = 0x510e527f;\n this.h5 = 0x9b05688c;\n this.h6 = 0x1f83d9ab;\n this.h7 = 0x5be0cd19;\n }\n\n this.block = this.start = this.bytes = this.hBytes = 0;\n this.finalized = this.hashed = false;\n this.first = true;\n this.is224 = is224;\n }\n\n Sha256.prototype.update = function (message) {\n if (this.finalized) {\n return;\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n notString = true;\n }\n var code, index = 0, i, length = message.length, blocks = this.blocks;\n\n while (index < length) {\n if (this.hashed) {\n this.hashed = false;\n blocks[0] = this.block;\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n\n if (notString) {\n for (i = this.start; index < length && i < 64; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < 64; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n\n this.lastByteIndex = i;\n this.bytes += i - this.start;\n if (i >= 64) {\n this.block = blocks[16];\n this.start = i - 64;\n this.hash();\n this.hashed = true;\n } else {\n this.start = i;\n }\n }\n if (this.bytes > 4294967295) {\n this.hBytes += this.bytes / 4294967296 << 0;\n this.bytes = this.bytes % 4294967296;\n }\n return this;\n };\n\n Sha256.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex;\n blocks[16] = this.block;\n blocks[i >> 2] |= EXTRA[i & 3];\n this.block = blocks[16];\n if (i >= 56) {\n if (!this.hashed) {\n this.hash();\n }\n blocks[0] = this.block;\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n blocks[14] = this.hBytes << 3 | this.bytes >>> 29;\n blocks[15] = this.bytes << 3;\n this.hash();\n };\n\n Sha256.prototype.hash = function () {\n var a = this.h0, b = this.h1, c = this.h2, d = this.h3, e = this.h4, f = this.h5, g = this.h6,\n h = this.h7, blocks = this.blocks, j, s0, s1, maj, t1, t2, ch, ab, da, cd, bc;\n\n for (j = 16; j < 64; ++j) {\n // rightrotate\n t1 = blocks[j - 15];\n s0 = ((t1 >>> 7) | (t1 << 25)) ^ ((t1 >>> 18) | (t1 << 14)) ^ (t1 >>> 3);\n t1 = blocks[j - 2];\n s1 = ((t1 >>> 17) | (t1 << 15)) ^ ((t1 >>> 19) | (t1 << 13)) ^ (t1 >>> 10);\n blocks[j] = blocks[j - 16] + s0 + blocks[j - 7] + s1 << 0;\n }\n\n bc = b & c;\n for (j = 0; j < 64; j += 4) {\n if (this.first) {\n if (this.is224) {\n ab = 300032;\n t1 = blocks[0] - 1413257819;\n h = t1 - 150054599 << 0;\n d = t1 + 24177077 << 0;\n } else {\n ab = 704751109;\n t1 = blocks[0] - 210244248;\n h = t1 - 1521486534 << 0;\n d = t1 + 143694565 << 0;\n }\n this.first = false;\n } else {\n s0 = ((a >>> 2) | (a << 30)) ^ ((a >>> 13) | (a << 19)) ^ ((a >>> 22) | (a << 10));\n s1 = ((e >>> 6) | (e << 26)) ^ ((e >>> 11) | (e << 21)) ^ ((e >>> 25) | (e << 7));\n ab = a & b;\n maj = ab ^ (a & c) ^ bc;\n ch = (e & f) ^ (~e & g);\n t1 = h + s1 + ch + K[j] + blocks[j];\n t2 = s0 + maj;\n h = d + t1 << 0;\n d = t1 + t2 << 0;\n }\n s0 = ((d >>> 2) | (d << 30)) ^ ((d >>> 13) | (d << 19)) ^ ((d >>> 22) | (d << 10));\n s1 = ((h >>> 6) | (h << 26)) ^ ((h >>> 11) | (h << 21)) ^ ((h >>> 25) | (h << 7));\n da = d & a;\n maj = da ^ (d & b) ^ ab;\n ch = (h & e) ^ (~h & f);\n t1 = g + s1 + ch + K[j + 1] + blocks[j + 1];\n t2 = s0 + maj;\n g = c + t1 << 0;\n c = t1 + t2 << 0;\n s0 = ((c >>> 2) | (c << 30)) ^ ((c >>> 13) | (c << 19)) ^ ((c >>> 22) | (c << 10));\n s1 = ((g >>> 6) | (g << 26)) ^ ((g >>> 11) | (g << 21)) ^ ((g >>> 25) | (g << 7));\n cd = c & d;\n maj = cd ^ (c & a) ^ da;\n ch = (g & h) ^ (~g & e);\n t1 = f + s1 + ch + K[j + 2] + blocks[j + 2];\n t2 = s0 + maj;\n f = b + t1 << 0;\n b = t1 + t2 << 0;\n s0 = ((b >>> 2) | (b << 30)) ^ ((b >>> 13) | (b << 19)) ^ ((b >>> 22) | (b << 10));\n s1 = ((f >>> 6) | (f << 26)) ^ ((f >>> 11) | (f << 21)) ^ ((f >>> 25) | (f << 7));\n bc = b & c;\n maj = bc ^ (b & d) ^ cd;\n ch = (f & g) ^ (~f & h);\n t1 = e + s1 + ch + K[j + 3] + blocks[j + 3];\n t2 = s0 + maj;\n e = a + t1 << 0;\n a = t1 + t2 << 0;\n }\n\n this.h0 = this.h0 + a << 0;\n this.h1 = this.h1 + b << 0;\n this.h2 = this.h2 + c << 0;\n this.h3 = this.h3 + d << 0;\n this.h4 = this.h4 + e << 0;\n this.h5 = this.h5 + f << 0;\n this.h6 = this.h6 + g << 0;\n this.h7 = this.h7 + h << 0;\n };\n\n Sha256.prototype.hex = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,\n h6 = this.h6, h7 = this.h7;\n\n var hex = HEX_CHARS[(h0 >> 28) & 0x0F] + HEX_CHARS[(h0 >> 24) & 0x0F] +\n HEX_CHARS[(h0 >> 20) & 0x0F] + HEX_CHARS[(h0 >> 16) & 0x0F] +\n HEX_CHARS[(h0 >> 12) & 0x0F] + HEX_CHARS[(h0 >> 8) & 0x0F] +\n HEX_CHARS[(h0 >> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] +\n HEX_CHARS[(h1 >> 28) & 0x0F] + HEX_CHARS[(h1 >> 24) & 0x0F] +\n HEX_CHARS[(h1 >> 20) & 0x0F] + HEX_CHARS[(h1 >> 16) & 0x0F] +\n HEX_CHARS[(h1 >> 12) & 0x0F] + HEX_CHARS[(h1 >> 8) & 0x0F] +\n HEX_CHARS[(h1 >> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] +\n HEX_CHARS[(h2 >> 28) & 0x0F] + HEX_CHARS[(h2 >> 24) & 0x0F] +\n HEX_CHARS[(h2 >> 20) & 0x0F] + HEX_CHARS[(h2 >> 16) & 0x0F] +\n HEX_CHARS[(h2 >> 12) & 0x0F] + HEX_CHARS[(h2 >> 8) & 0x0F] +\n HEX_CHARS[(h2 >> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] +\n HEX_CHARS[(h3 >> 28) & 0x0F] + HEX_CHARS[(h3 >> 24) & 0x0F] +\n HEX_CHARS[(h3 >> 20) & 0x0F] + HEX_CHARS[(h3 >> 16) & 0x0F] +\n HEX_CHARS[(h3 >> 12) & 0x0F] + HEX_CHARS[(h3 >> 8) & 0x0F] +\n HEX_CHARS[(h3 >> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] +\n HEX_CHARS[(h4 >> 28) & 0x0F] + HEX_CHARS[(h4 >> 24) & 0x0F] +\n HEX_CHARS[(h4 >> 20) & 0x0F] + HEX_CHARS[(h4 >> 16) & 0x0F] +\n HEX_CHARS[(h4 >> 12) & 0x0F] + HEX_CHARS[(h4 >> 8) & 0x0F] +\n HEX_CHARS[(h4 >> 4) & 0x0F] + HEX_CHARS[h4 & 0x0F] +\n HEX_CHARS[(h5 >> 28) & 0x0F] + HEX_CHARS[(h5 >> 24) & 0x0F] +\n HEX_CHARS[(h5 >> 20) & 0x0F] + HEX_CHARS[(h5 >> 16) & 0x0F] +\n HEX_CHARS[(h5 >> 12) & 0x0F] + HEX_CHARS[(h5 >> 8) & 0x0F] +\n HEX_CHARS[(h5 >> 4) & 0x0F] + HEX_CHARS[h5 & 0x0F] +\n HEX_CHARS[(h6 >> 28) & 0x0F] + HEX_CHARS[(h6 >> 24) & 0x0F] +\n HEX_CHARS[(h6 >> 20) & 0x0F] + HEX_CHARS[(h6 >> 16) & 0x0F] +\n HEX_CHARS[(h6 >> 12) & 0x0F] + HEX_CHARS[(h6 >> 8) & 0x0F] +\n HEX_CHARS[(h6 >> 4) & 0x0F] + HEX_CHARS[h6 & 0x0F];\n if (!this.is224) {\n hex += HEX_CHARS[(h7 >> 28) & 0x0F] + HEX_CHARS[(h7 >> 24) & 0x0F] +\n HEX_CHARS[(h7 >> 20) & 0x0F] + HEX_CHARS[(h7 >> 16) & 0x0F] +\n HEX_CHARS[(h7 >> 12) & 0x0F] + HEX_CHARS[(h7 >> 8) & 0x0F] +\n HEX_CHARS[(h7 >> 4) & 0x0F] + HEX_CHARS[h7 & 0x0F];\n }\n return hex;\n };\n\n Sha256.prototype.toString = Sha256.prototype.hex;\n\n Sha256.prototype.digest = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,\n h6 = this.h6, h7 = this.h7;\n\n var arr = [\n (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, h0 & 0xFF,\n (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, h1 & 0xFF,\n (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, h2 & 0xFF,\n (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, h3 & 0xFF,\n (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, h4 & 0xFF,\n (h5 >> 24) & 0xFF, (h5 >> 16) & 0xFF, (h5 >> 8) & 0xFF, h5 & 0xFF,\n (h6 >> 24) & 0xFF, (h6 >> 16) & 0xFF, (h6 >> 8) & 0xFF, h6 & 0xFF\n ];\n if (!this.is224) {\n arr.push((h7 >> 24) & 0xFF, (h7 >> 16) & 0xFF, (h7 >> 8) & 0xFF, h7 & 0xFF);\n }\n return arr;\n };\n\n Sha256.prototype.array = Sha256.prototype.digest;\n\n Sha256.prototype.arrayBuffer = function () {\n this.finalize();\n\n var buffer = new ArrayBuffer(this.is224 ? 28 : 32);\n var dataView = new DataView(buffer);\n dataView.setUint32(0, this.h0);\n dataView.setUint32(4, this.h1);\n dataView.setUint32(8, this.h2);\n dataView.setUint32(12, this.h3);\n dataView.setUint32(16, this.h4);\n dataView.setUint32(20, this.h5);\n dataView.setUint32(24, this.h6);\n if (!this.is224) {\n dataView.setUint32(28, this.h7);\n }\n return buffer;\n };\n\n function HmacSha256(key, is224, sharedMemory) {\n var i, type = typeof key;\n if (type === 'string') {\n var bytes = [], length = key.length, index = 0, code;\n for (i = 0; i < length; ++i) {\n code = key.charCodeAt(i);\n if (code < 0x80) {\n bytes[index++] = code;\n } else if (code < 0x800) {\n bytes[index++] = (0xc0 | (code >> 6));\n bytes[index++] = (0x80 | (code & 0x3f));\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes[index++] = (0xe0 | (code >> 12));\n bytes[index++] = (0x80 | ((code >> 6) & 0x3f));\n bytes[index++] = (0x80 | (code & 0x3f));\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (key.charCodeAt(++i) & 0x3ff));\n bytes[index++] = (0xf0 | (code >> 18));\n bytes[index++] = (0x80 | ((code >> 12) & 0x3f));\n bytes[index++] = (0x80 | ((code >> 6) & 0x3f));\n bytes[index++] = (0x80 | (code & 0x3f));\n }\n }\n key = bytes;\n } else {\n if (type === 'object') {\n if (key === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && key.constructor === ArrayBuffer) {\n key = new Uint8Array(key);\n } else if (!Array.isArray(key)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(key)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n }\n\n if (key.length > 64) {\n key = (new Sha256(is224, true)).update(key).array();\n }\n\n var oKeyPad = [], iKeyPad = [];\n for (i = 0; i < 64; ++i) {\n var b = key[i] || 0;\n oKeyPad[i] = 0x5c ^ b;\n iKeyPad[i] = 0x36 ^ b;\n }\n\n Sha256.call(this, is224, sharedMemory);\n\n this.update(iKeyPad);\n this.oKeyPad = oKeyPad;\n this.inner = true;\n this.sharedMemory = sharedMemory;\n }\n HmacSha256.prototype = new Sha256();\n\n HmacSha256.prototype.finalize = function () {\n Sha256.prototype.finalize.call(this);\n if (this.inner) {\n this.inner = false;\n var innerHash = this.array();\n Sha256.call(this, this.is224, this.sharedMemory);\n this.update(this.oKeyPad);\n this.update(innerHash);\n Sha256.prototype.finalize.call(this);\n }\n };\n\n var exports = createMethod();\n exports.sha256 = exports;\n exports.sha224 = createMethod(true);\n exports.sha256.hmac = createHmacMethod();\n exports.sha224.hmac = createHmacMethod(true);\n\n if (COMMON_JS) {\n module.exports = exports;\n } else {\n root.sha256 = exports.sha256;\n root.sha224 = exports.sha224;\n if (AMD) {\n define(function () {\n return exports;\n });\n }\n }\n})();\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","export async function getBytes(stream, onChunk) {\r\n const reader = stream.getReader();\r\n let result;\r\n while (!(result = await reader.read()).done) {\r\n onChunk(result.value);\r\n }\r\n}\r\nexport function getLines(onLine) {\r\n let buffer;\r\n let position;\r\n let fieldLength;\r\n let discardTrailingNewline = false;\r\n return function onChunk(arr) {\r\n if (buffer === undefined) {\r\n buffer = arr;\r\n position = 0;\r\n fieldLength = -1;\r\n }\r\n else {\r\n buffer = concat(buffer, arr);\r\n }\r\n const bufLength = buffer.length;\r\n let lineStart = 0;\r\n while (position < bufLength) {\r\n if (discardTrailingNewline) {\r\n if (buffer[position] === 10) {\r\n lineStart = ++position;\r\n }\r\n discardTrailingNewline = false;\r\n }\r\n let lineEnd = -1;\r\n for (; position < bufLength && lineEnd === -1; ++position) {\r\n switch (buffer[position]) {\r\n case 58:\r\n if (fieldLength === -1) {\r\n fieldLength = position - lineStart;\r\n }\r\n break;\r\n case 13:\r\n discardTrailingNewline = true;\r\n case 10:\r\n lineEnd = position;\r\n break;\r\n }\r\n }\r\n if (lineEnd === -1) {\r\n break;\r\n }\r\n onLine(buffer.subarray(lineStart, lineEnd), fieldLength);\r\n lineStart = position;\r\n fieldLength = -1;\r\n }\r\n if (lineStart === bufLength) {\r\n buffer = undefined;\r\n }\r\n else if (lineStart !== 0) {\r\n buffer = buffer.subarray(lineStart);\r\n position -= lineStart;\r\n }\r\n };\r\n}\r\nexport function getMessages(onId, onRetry, onMessage) {\r\n let message = newMessage();\r\n const decoder = new TextDecoder();\r\n return function onLine(line, fieldLength) {\r\n if (line.length === 0) {\r\n onMessage === null || onMessage === void 0 ? void 0 : onMessage(message);\r\n message = newMessage();\r\n }\r\n else if (fieldLength > 0) {\r\n const field = decoder.decode(line.subarray(0, fieldLength));\r\n const valueOffset = fieldLength + (line[fieldLength + 1] === 32 ? 2 : 1);\r\n const value = decoder.decode(line.subarray(valueOffset));\r\n switch (field) {\r\n case 'data':\r\n message.data = message.data\r\n ? message.data + '\\n' + value\r\n : value;\r\n break;\r\n case 'event':\r\n message.event = value;\r\n break;\r\n case 'id':\r\n onId(message.id = value);\r\n break;\r\n case 'retry':\r\n const retry = parseInt(value, 10);\r\n if (!isNaN(retry)) {\r\n onRetry(message.retry = retry);\r\n }\r\n break;\r\n }\r\n }\r\n };\r\n}\r\nfunction concat(a, b) {\r\n const res = new Uint8Array(a.length + b.length);\r\n res.set(a);\r\n res.set(b, a.length);\r\n return res;\r\n}\r\nfunction newMessage() {\r\n return {\r\n data: '',\r\n event: '',\r\n id: '',\r\n retry: undefined,\r\n };\r\n}\r\n//# sourceMappingURL=parse.js.map","var __rest = (this && this.__rest) || function (s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n};\r\nimport { getBytes, getLines, getMessages } from './parse';\r\nexport const EventStreamContentType = 'text/event-stream';\r\nconst DefaultRetryInterval = 1000;\r\nconst LastEventId = 'last-event-id';\r\nexport function fetchEventSource(input, _a) {\r\n var { signal: inputSignal, headers: inputHeaders, onopen: inputOnOpen, onmessage, onclose, onerror, openWhenHidden, fetch: inputFetch } = _a, rest = __rest(_a, [\"signal\", \"headers\", \"onopen\", \"onmessage\", \"onclose\", \"onerror\", \"openWhenHidden\", \"fetch\"]);\r\n return new Promise((resolve, reject) => {\r\n const headers = Object.assign({}, inputHeaders);\r\n if (!headers.accept) {\r\n headers.accept = EventStreamContentType;\r\n }\r\n let curRequestController;\r\n function onVisibilityChange() {\r\n curRequestController.abort();\r\n if (!document.hidden) {\r\n create();\r\n }\r\n }\r\n if (!openWhenHidden) {\r\n document.addEventListener('visibilitychange', onVisibilityChange);\r\n }\r\n let retryInterval = DefaultRetryInterval;\r\n let retryTimer = 0;\r\n function dispose() {\r\n document.removeEventListener('visibilitychange', onVisibilityChange);\r\n window.clearTimeout(retryTimer);\r\n curRequestController.abort();\r\n }\r\n inputSignal === null || inputSignal === void 0 ? void 0 : inputSignal.addEventListener('abort', () => {\r\n dispose();\r\n resolve();\r\n });\r\n const fetch = inputFetch !== null && inputFetch !== void 0 ? inputFetch : window.fetch;\r\n const onopen = inputOnOpen !== null && inputOnOpen !== void 0 ? inputOnOpen : defaultOnOpen;\r\n async function create() {\r\n var _a;\r\n curRequestController = new AbortController();\r\n try {\r\n const response = await fetch(input, Object.assign(Object.assign({}, rest), { headers, signal: curRequestController.signal }));\r\n await onopen(response);\r\n await getBytes(response.body, getLines(getMessages(id => {\r\n if (id) {\r\n headers[LastEventId] = id;\r\n }\r\n else {\r\n delete headers[LastEventId];\r\n }\r\n }, retry => {\r\n retryInterval = retry;\r\n }, onmessage)));\r\n onclose === null || onclose === void 0 ? void 0 : onclose();\r\n dispose();\r\n resolve();\r\n }\r\n catch (err) {\r\n if (!curRequestController.signal.aborted) {\r\n try {\r\n const interval = (_a = onerror === null || onerror === void 0 ? void 0 : onerror(err)) !== null && _a !== void 0 ? _a : retryInterval;\r\n window.clearTimeout(retryTimer);\r\n retryTimer = window.setTimeout(create, interval);\r\n }\r\n catch (innerErr) {\r\n dispose();\r\n reject(innerErr);\r\n }\r\n }\r\n }\r\n }\r\n create();\r\n });\r\n}\r\nfunction defaultOnOpen(response) {\r\n const contentType = response.headers.get('content-type');\r\n if (!(contentType === null || contentType === void 0 ? void 0 : contentType.startsWith(EventStreamContentType))) {\r\n throw new Error(`Expected content-type to be ${EventStreamContentType}, Actual: ${contentType}`);\r\n }\r\n}\r\n//# sourceMappingURL=fetch.js.map","export function Base64EncodeUrl(str) {\n return str.replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=+$/, \"\");\n}\nexport function Base64DecodeUrl(str) {\n str = (str + \"===\").slice(0, str.length + (str.length % 4));\n return str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n}\nexport function getTimestamp() {\n return Math.floor(Date.now() / 1000);\n}\nexport async function sha256(message) {\n // encode as UTF-8\n const msgBuffer = new TextEncoder().encode(message);\n // hash the message\n const hashBuffer = await crypto.subtle.digest(\"SHA-256\", msgBuffer);\n // convert ArrayBuffer to Array\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n // convert bytes to hex string\n const hashHex = hashArray\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n return hashHex;\n}\n","function e(e){this.message=e}e.prototype=new Error,e.prototype.name=\"InvalidCharacterError\";var r=\"undefined\"!=typeof window&&window.atob&&window.atob.bind(window)||function(r){var t=String(r).replace(/=+$/,\"\");if(t.length%4==1)throw new e(\"'atob' failed: The string to be decoded is not correctly encoded.\");for(var n,o,a=0,i=0,c=\"\";o=t.charAt(i++);~o&&(n=a%4?64*n+o:o,a++%4)?c+=String.fromCharCode(255&n>>(-2*a&6)):0)o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(o);return c};function t(e){var t=e.replace(/-/g,\"+\").replace(/_/g,\"/\");switch(t.length%4){case 0:break;case 2:t+=\"==\";break;case 3:t+=\"=\";break;default:throw\"Illegal base64url string!\"}try{return function(e){return decodeURIComponent(r(e).replace(/(.)/g,(function(e,r){var t=r.charCodeAt(0).toString(16).toUpperCase();return t.length<2&&(t=\"0\"+t),\"%\"+t})))}(t)}catch(e){return r(t)}}function n(e){this.message=e}function o(e,r){if(\"string\"!=typeof e)throw new n(\"Invalid token specified\");var o=!0===(r=r||{}).header?0:1;try{return JSON.parse(t(e.split(\".\")[o]))}catch(e){throw new n(\"Invalid token specified: \"+e.message)}}n.prototype=new Error,n.prototype.name=\"InvalidTokenError\";export default o;export{n as InvalidTokenError};\n//# sourceMappingURL=jwt-decode.esm.js.map\n","import { Storage } from \"./client/store\";\nimport IndexedDBStorage from \"./client/indexedDB\";\nimport { sha256 } from \"js-sha256\";\nimport { Buffer } from \"buffer\";\nimport { v4 as uuid } from \"uuid\";\nimport { fetchEventSource, } from \"@microsoft/fetch-event-source\";\nimport { Base64EncodeUrl, getTimestamp } from \"./helpers\";\nimport jwtDecode from \"jwt-decode\";\nexport class NylasSessions {\n clientId;\n redirectUri;\n accessType = \"online\";\n domain = \"http://api.nylas.com\";\n versioned = false;\n Storage;\n hosted = false;\n multiAccount = false;\n loginId = \"\";\n constructor(config) {\n this.clientId = config.clientId;\n this.redirectUri = config.redirectUri;\n if (config.domain) {\n this.domain = config.domain;\n const versionedPart = this.domain.substring(this.domain.length - 3);\n if (versionedPart.includes(\"/v\")) {\n this.versioned = true;\n }\n }\n if (config.multiAccount) {\n this.multiAccount = config.multiAccount;\n }\n if (config.sw) {\n const storage = new IndexedDBStorage();\n this.Storage = new Storage(storage);\n }\n else {\n this.Storage = new Storage();\n }\n if (config.accessType) {\n this.accessType = config.accessType;\n }\n if (config.loginId) {\n this.loginId = config.loginId;\n }\n if (config.hosted) {\n this.hosted = config.hosted;\n }\n if (config.disableInitCodeExchange !== true) {\n this.codeExchange(null);\n }\n // check();\n // registerServiceWorker();\n }\n // Validates access token\n async validateAccessToken(grant_id = \"\") {\n const grant = await this.Storage.getGrant(grant_id, this.multiAccount);\n if (!grant) {\n return false;\n }\n const { access_token } = grant;\n try {\n const response = await fetch(`${this.domain}/connect/tokeninfo?access_token=${access_token}`, {\n method: \"GET\",\n });\n const responseData = await response.json();\n if (!responseData.data) {\n return false;\n }\n return true;\n }\n catch (error) {\n return false;\n }\n }\n // Validates id token\n async validateIDToken(grant_id = \"\") {\n const grant = await this.Storage.getGrant(grant_id, this.multiAccount);\n if (!grant) {\n return false;\n }\n const { id_token } = grant;\n try {\n const response = await fetch(`${this.domain}/connect/tokeninfo?id_token=${id_token}`, {\n method: \"GET\",\n });\n if (response.status !== 200) {\n return false;\n }\n const responseData = await response.json();\n if (!responseData.data) {\n return false;\n }\n return true;\n }\n catch (error) {\n return false;\n }\n }\n // Gets domain of UAS\n getDomain() {\n return this.domain;\n }\n // Gets auth link\n async auth(config) {\n if (this.hosted &&\n (this.domain === window.location.origin ||\n (this.versioned && this.domain.includes(window.location.origin)))) {\n await this.hostedSetCodeChallenge();\n }\n const url = await this.generateAuthURL(config);\n if (config.popup) {\n this.popUp(url);\n return;\n }\n return url;\n }\n // Generates auth URL\n async generateAuthURL(config) {\n const codeChallenge = await this.getCodeChallege();\n let url = `${this.domain}/connect/auth?client_id=${this.clientId}&redirect_uri=${this.redirectUri}&access_type=${this.accessType}&response_type=code`;\n if (codeChallenge) {\n url += `&code_challenge=${codeChallenge}&code_challenge_method=S256&options=rotate_refresh_token`;\n }\n if (config.provider) {\n url += `&provider=${config.provider}`;\n }\n if (config.loginHint) {\n url += `&login_hint=${config.loginHint}`;\n if (config.includeGrantScopes) {\n url += `&include_grant_scopes=${config.includeGrantScopes}`;\n }\n }\n if (config.scope) {\n url += `&scope=${config.scope.join(\" \")}`;\n }\n if (config.prompt) {\n url += `&prompt=${config.prompt}`;\n }\n if (config.metadata) {\n url += `&metadata=${config.metadata}`;\n }\n if (config.state || this.loginId) {\n url += `&state=${this.loginId ? this.loginId : config.state}`;\n }\n return url;\n }\n // Generates auth URL\n async generateReauthURL(grant_id, scopes) {\n if (!grant_id) {\n throw new Error(\"Grant ID is required\");\n }\n const userToken = await this.Storage.getUserToken(grant_id);\n const codeChallenge = await this.getCodeChallege();\n let url = `${this.domain}/connect/auth?client_id=${this.clientId}&redirect_uri=${this.redirectUri}&access_type=${this.accessType}&response_type=code`;\n if (codeChallenge) {\n url += `&code_challenge=${codeChallenge}&code_challenge_method=S256&options=rotate_refresh_token`;\n }\n if (userToken?.provider) {\n url += `&provider=${userToken.provider}`;\n }\n if (userToken?.email) {\n url += `&login_hint=${userToken.email}`;\n }\n if (scopes) {\n url += `&scope=${scopes.join(\" \")}`;\n }\n return url;\n }\n // Generates UUID code challenge\n async generateCodeChallenge() {\n const code_verifier = await this.Storage.getPKCE();\n if (code_verifier) {\n return;\n }\n const codeChallenge = uuid();\n this.Storage.setPKCE(codeChallenge);\n return;\n }\n // Gets code challenge from URL query params\n async hostedSetCodeChallenge() {\n if (!this.hosted) {\n throw console.error(\"Method only used with hosted flag enabled\");\n }\n const params = new URLSearchParams(window.location.search);\n const codeChallenge = params.get(\"code_challenge\");\n if (!codeChallenge) {\n const code_verifier = await this.Storage.getPKCE();\n if (code_verifier) {\n return;\n }\n console.warn(\"Code challenge is recomended\");\n return;\n }\n this.Storage.setPKCE(codeChallenge);\n }\n // Gets code challenge from store\n async getCodeChallege() {\n if (this.hosted &&\n (this.domain === window.location.origin ||\n (this.versioned && this.domain.includes(window.location.origin)))) {\n const params = new URLSearchParams(window.location.search);\n const codeChallenge = params.get(\"code_challenge\");\n if (!codeChallenge) {\n console.warn(\"Code challenge is recomended\");\n return \"\";\n }\n return codeChallenge;\n }\n const code_verifier = await this.Storage.getPKCE();\n if (code_verifier) {\n const codeChallengeHashed = sha256(code_verifier);\n let codeChallengeEncrypted = Buffer.from(codeChallengeHashed).toString(\"base64\");\n codeChallengeEncrypted = Base64EncodeUrl(codeChallengeEncrypted);\n return codeChallengeEncrypted;\n }\n return \"\";\n }\n // checks if user is logged in\n async isLoggedIn() {\n // if hosted identity isLoggedIn always returns false\n if (this.hosted &&\n (this.domain === window.location.origin ||\n (this.versioned && this.domain.includes(window.location.origin)))) {\n return false;\n }\n const tokens = await this.Storage.getUserTokens();\n if (tokens && tokens.length > 0) {\n if (this.multiAccount) {\n await this.generateCodeChallenge();\n }\n return true;\n }\n await this.generateCodeChallenge();\n return false;\n }\n // Checks if user is multi account\n isMultiAccount() {\n return this.multiAccount;\n }\n // Logs user out\n async logout() {\n const profile = await this.getProfile();\n await this.Storage.clearSession();\n const payload = { detail: profile };\n window.dispatchEvent(new CustomEvent(\"onLogoutSuccess\", payload));\n }\n // Gets profile info from ID token\n async getProfile(grant_id = \"\") {\n let tok;\n if (grant_id) {\n tok = await this.Storage.getUserToken(grant_id);\n }\n else {\n tok = await this.Storage.getUserToken();\n }\n if (tok) {\n return tok;\n }\n return null;\n }\n // Gets profile info from ID tokens\n async getProfiles() {\n const tok = await this.Storage.getUserTokens();\n if (tok) {\n return tok;\n }\n return null;\n }\n // Remove a specific profile\n async removeProfile(id) {\n await this.Storage.removeUserToken(id);\n await this.Storage.removeGrant(id);\n return null;\n }\n // IMAP authentication\n async authIMAP(data) {\n const code_challenge = await this.getCodeChallege();\n const payload = {\n imap_username: data.imap_username,\n imap_password: data.imap_password,\n imap_host: data.imap_host,\n imap_port: data.imap_port,\n type: data.type,\n smtp_host: data.smtp_host,\n smtp_port: data.smtp_port,\n provider: data.provider,\n redirect_uri: this.redirectUri,\n state: data.state,\n public_application_id: this.clientId,\n access_type: this.accessType,\n };\n if (this.loginId) {\n payload.id = this.loginId;\n }\n if (data.smtp_username && data.smtp_password) {\n payload.smtp_username = data.smtp_username;\n payload.smtp_password = data.smtp_password;\n }\n if (code_challenge != \"\") {\n payload.code_challenge = code_challenge;\n payload.code_challenge_method = \"S256\";\n }\n const response = await fetch(`${this.domain}/connect/login/imap`, {\n method: \"POST\",\n headers: new Headers({ \"content-type\": \"application/json\" }),\n body: JSON.stringify(payload),\n });\n const responseData = await response.json();\n return responseData;\n }\n // EWS authentication\n async authEWS(data) {\n const code_challenge = await this.getCodeChallege();\n const payload = {\n ...data,\n provider: \"ews\",\n redirect_uri: this.redirectUri,\n public_application_id: this.clientId,\n access_type: this.accessType,\n };\n if (this.loginId) {\n payload.id = this.loginId;\n }\n if (code_challenge != \"\") {\n payload.code_challenge = code_challenge;\n payload.code_challenge_method = \"S256\";\n }\n const response = await fetch(`${this.domain}/connect/login/ews`, {\n method: \"POST\",\n headers: new Headers({ \"content-type\": \"application/json\" }),\n body: JSON.stringify(payload),\n });\n const responseData = await response.json();\n return responseData;\n }\n // Detects email\n async detectEmail(email) {\n const response = await fetch(`${this.versioned ? this.domain : this.domain + \"/connect\"}/providers/detect?client_id=${this.clientId}&email=${email}`, {\n method: \"POST\",\n headers: new Headers({ \"content-type\": \"application/json\" }),\n });\n const responseData = await response.json();\n return responseData;\n }\n // Gets app info from UAS\n async applicationInfo() {\n const response = await fetch(`${this.versioned ? this.domain : this.domain + \"/connect\"}/applications?client_id=${this.clientId}`, {\n method: \"GET\",\n headers: new Headers({ \"content-type\": \"application/json\" }),\n });\n const responseData = await response.json();\n return responseData.data;\n }\n // Gets providers form UAS\n async getAvailableProviders() {\n const response = await fetch(`${this.domain}/connect/providers/find?client_id=${this.clientId}`, {\n method: \"GET\",\n headers: new Headers({ \"content-type\": \"application/json\" }),\n });\n if (response) {\n const responseData = await response.json();\n const providers = responseData.data;\n return providers;\n }\n return null;\n }\n // EVENT HOOKS\n onLoginSuccess(callback) {\n window.addEventListener(\"onLoginSuccess\", (e) => callback(e));\n }\n onLogoutSuccess(callback) {\n window.addEventListener(\"onLogoutSuccess\", (e) => callback(e));\n }\n onLoginFail(callback) {\n window.addEventListener(\"onLoginFail\", (e) => callback(e));\n }\n onTokenRefreshSuccess(callback) {\n window.addEventListener(\"onTokenRefreshSuccess\", (e) => callback(e));\n }\n onTokenRefreshFail(callback) {\n window.addEventListener(\"onTokenRefreshFail\", (e) => callback(e));\n }\n onSessionExpired(callback) {\n window.addEventListener(\"onSessionExpired\", (e) => callback(e));\n }\n // Exchanges code for ID token and refresh and access tokens\n async codeExchange(search) {\n let params = new URLSearchParams(window.location.search);\n if (search) {\n params = new URLSearchParams(search);\n }\n const code = params.get(\"code\");\n const state = params.get(\"state\");\n const error = params.get(\"error\");\n const error_description = params.get(\"error_description\");\n const error_code = params.get(\"error_code\");\n if (error && error_description && error_code) {\n const payload = {\n detail: { error, error_description, error_code },\n };\n window.dispatchEvent(new CustomEvent(\"onLoginFail\", payload));\n window.history.pushState({}, document.title, window.location.pathname);\n return false;\n }\n if (!code) {\n console.warn(\"No code found\");\n return false;\n }\n // If popup window stop internal code exchange\n if (window.opener && window.name === \"uas-popup\") {\n console.warn(\"Popup window detected\");\n return false;\n }\n // Get PKCE code_challenge from local storage\n const code_verifier = await this.Storage.getPKCE();\n if (!code_verifier) {\n console.warn(\"No code verifier found\");\n return false;\n }\n // Prepare request\n try {\n const payload = {\n client_id: this.clientId,\n redirect_uri: this.redirectUri,\n code: code,\n grant_type: \"authorization_code\",\n code_verifier: code_verifier,\n };\n const response = await fetch(`${this.domain}/connect/token`, {\n method: \"POST\",\n headers: new Headers({ \"content-type\": \"application/json\" }),\n body: JSON.stringify(payload),\n });\n const responseData = await response.json();\n // Parse response\n // Store ID token\n if (responseData) {\n if (responseData.error) {\n const payload = { detail: responseData };\n window.dispatchEvent(new CustomEvent(\"onLoginFail\", payload));\n return true;\n }\n const exchangeResponse = await this.handleCodeExchangeResponse(responseData);\n if (!exchangeResponse.valid) {\n const payload = { detail: exchangeResponse.data };\n window.dispatchEvent(new CustomEvent(\"onLoginFail\", payload));\n return true;\n }\n else {\n if (state) {\n exchangeResponse.data.state = state;\n }\n const payload = { detail: exchangeResponse.data };\n window.dispatchEvent(new CustomEvent(\"onLoginSuccess\", payload));\n window.history.pushState({}, document.title, window.location.pathname);\n }\n }\n this.Storage.removePKCE();\n return true;\n // Remove PKCE code_challenge from local storage\n }\n catch (error) {\n const payload = { detail: error };\n window.dispatchEvent(new CustomEvent(\"onLoginFail\", payload));\n window.history.pushState({}, document.title, window.location.pathname);\n return false;\n }\n }\n // Token Exchange for session maintenece\n async tokenExchange(grant_id = \"\") {\n const grant = await this.Storage.getGrant(grant_id, this.multiAccount);\n if (!grant) {\n return false;\n }\n const refresh_token = grant.refresh_token;\n try {\n const payload = {\n client_id: this.clientId,\n redirect_uri: this.redirectUri,\n refresh_token,\n grant_type: \"refresh_token\",\n };\n const response = await fetch(`${this.domain}/connect/token`, {\n method: \"POST\",\n headers: new Headers({ \"content-type\": \"application/json\" }),\n body: JSON.stringify(payload),\n });\n const responseData = await response.json();\n // Parse response\n // Store ID token\n if (responseData) {\n if (responseData.error) {\n const payload = { detail: responseData };\n window.dispatchEvent(new CustomEvent(\"onTokenRefreshFail\", payload));\n return true;\n }\n const now = getTimestamp();\n responseData.expires_in = now + responseData.expires_in;\n this.Storage.setGrant(responseData, this.multiAccount);\n const isValidToken = await this.validateIDToken(grant_id);\n if (!isValidToken) {\n const payload = { detail: responseData };\n window.dispatchEvent(new CustomEvent(\"onTokenRefreshFail\", payload));\n return true;\n }\n const payload = { detail: responseData };\n window.dispatchEvent(new CustomEvent(\"onTokenRefreshSuccess\", payload));\n return true;\n }\n // Remove PKCE code_challenge from local storage\n this.Storage.removePKCE();\n }\n catch (error) {\n const payload = { detail: error };\n window.dispatchEvent(new CustomEvent(\"onTokenRefreshFail\", payload));\n return false;\n }\n }\n // Handles the response of code exchange\n async handleCodeExchangeResponse(responseData) {\n const isValid = true;\n if (responseData.error) {\n return {\n data: responseData,\n valid: false,\n };\n }\n const now = getTimestamp();\n responseData.expires_in = now + responseData.expires_in;\n this.Storage.setGrant(responseData, this.multiAccount);\n const user = jwtDecode(responseData.id_token);\n user.status = \"authenticated\";\n this.Storage.setUserToken(user);\n const isValidToken = await this.validateIDToken(user.sub);\n if (!isValidToken) {\n return {\n data: responseData,\n valid: false,\n };\n }\n return {\n data: responseData,\n valid: isValid,\n };\n }\n // Regulates POPUP behaivior\n async popUp(url) {\n const width = 500;\n const height = 600;\n const left = window.screenX + (window.outerWidth - width) / 2;\n const top = window.screenY + (window.outerHeight - height) / 2.5;\n const title = `uas-popup`;\n const popupURL = url;\n const externalPopup = window.open(popupURL, title, `width=${width},height=${height},left=${left},top=${top}`);\n if (!externalPopup) {\n return;\n }\n const timer = setInterval(async () => {\n if (externalPopup.closed) {\n const payload = {\n detail: { error_description: \"OAuth provider window closed\" },\n };\n window.dispatchEvent(new CustomEvent(\"onLoginFail\", payload));\n timer && clearInterval(timer);\n return;\n }\n try {\n const currentUrl = externalPopup.location.href.split(\"?\");\n if (!currentUrl[0]) {\n return;\n }\n const search = externalPopup.location.search;\n externalPopup.history.pushState({}, document.title, window.location.pathname);\n if (currentUrl[0] === this.redirectUri && currentUrl.length > 1) {\n const success = await this.codeExchange(search);\n externalPopup.close();\n if (success) {\n location.reload();\n }\n timer && clearInterval(timer);\n return;\n }\n }\n catch (error) {\n return;\n }\n }, 1000);\n }\n // Returns access token\n async getAccessToken(grant_id = \"\") {\n const now = getTimestamp();\n const grantResponse = await this.Storage.getGrant(grant_id, this.multiAccount);\n if (!grantResponse) {\n return null;\n }\n const { access_token, expires_in } = grantResponse;\n const token = access_token;\n if (token) {\n if (expires_in && expires_in > getTimestamp()) {\n const timeLeft = expires_in - now;\n // If more then 30 secounds remain return access token\n if (timeLeft > 30) {\n return token;\n }\n }\n }\n await this.tokenExchange(grant_id);\n const grant = await this.Storage.getGrant(grant_id, this.multiAccount);\n return grant.access_token;\n }\n async sse(url, request) {\n const headers = request.headers || {};\n const grant_id = headers[\"Grant-ID\"];\n let token = \"\";\n if (this.multiAccount) {\n if (!grant_id) {\n this.logout();\n throw new Error(\"Grant ID is required for multi account calls\");\n }\n token = await this.getAccessToken(grant_id);\n }\n else {\n token = await this.getAccessToken();\n }\n delete headers[\"Grant-ID\"];\n headers[\"Authorization\"] = `Bearer ${token}`;\n if (!headers[\"content-type\"]) {\n headers[\"content-type\"] = \"application/json\";\n }\n return fetchEventSource(`${this.domain}/${url}`, {\n ...request,\n headers,\n });\n }\n // Used to call Nylas API endpoints\n async fetch(url, request, parseJSON = true, domain) {\n let token = \"\";\n let profileCount = 1;\n if (this.multiAccount) {\n if (!request.grant_id) {\n this.logout();\n throw new Error(\"Grant ID is required for multi account calls\");\n }\n const profiles = await this.getProfiles();\n profileCount = profiles ? profiles.length : 1;\n token = await this.getAccessToken(request.grant_id);\n }\n else {\n token = await this.getAccessToken();\n }\n if (!token) {\n throw new Error(\"Access token not found\");\n }\n let headers = request.headers;\n if (!Headers.prototype.isPrototypeOf(headers)) {\n headers = new Headers({\n Authorization: `Bearer ${token}`,\n \"content-type\": \"application/json\",\n });\n }\n else {\n headers.append(\"Authorization\", `Bearer ${token}`);\n if (!headers.has(\"content-type\")) {\n headers.append(\"content-type\", \"application/json\");\n }\n }\n try {\n if (request?.body) {\n request.body = JSON.stringify(request?.body);\n }\n const response = await fetch(`${domain || this.domain}/${url}`, {\n ...request,\n headers,\n });\n if (!parseJSON) {\n return response;\n }\n const responseData = await response?.json();\n const isAuthenticated = await this.isAuthenticatedResponse(response.status, responseData);\n if (!isAuthenticated) {\n if (profileCount > 1) {\n const user = await this.getProfile(request.grant_id);\n if (user) {\n user.status = \"unauthorized\";\n await this.Storage.setUserToken(user);\n const payload = {\n detail: { user },\n };\n window.dispatchEvent(new CustomEvent(\"onSessionExpired\", payload));\n }\n }\n else {\n const user = await this.Storage.getUserToken();\n const payload = {\n detail: { user },\n };\n window.dispatchEvent(new CustomEvent(\"onSessionExpired\", payload));\n }\n this.logout();\n return;\n }\n return responseData;\n }\n catch (e) {\n throw e;\n }\n }\n async fetchRequest(path, method, body, parseJSON = true, domain, request) {\n const isLoggedIn = await this.isLoggedIn();\n const url = new URL(path, domain ?? this.domain);\n const headers = new Headers();\n headers.append(\"Accept\", \"application/json\");\n headers.append(\"Content-Type\", \"application/json\");\n headers.append(\"User-Agent\", \"nylas-identity\");\n if (isLoggedIn) {\n const accessToken = await this.getAccessToken();\n headers.append(\"Authorization\", `Bearer ${accessToken}`);\n }\n const response = await fetch(url.toString(), {\n method: method || \"GET\",\n headers,\n mode: \"cors\",\n referrer: location.origin,\n body: body ? JSON.stringify(body) : undefined,\n ...(request || {}),\n });\n // If we don't want to parse the response as JSON, return the raw response\n if (!parseJSON) {\n return response.body;\n }\n const json = await response.json();\n return json;\n }\n // Checks if the response is not 401\n async isAuthenticatedResponse(status, responseData) {\n if (status == 401 &&\n responseData?.error?.type == \"token.unauthorized_access\") {\n return false;\n }\n return true;\n }\n addAPIKey(grant_id, email, key) {\n this.Storage.setUserToken({\n aud: \"https://api-staging.us.nylas.com/\",\n exp: 2000000000,\n email_verified: true,\n iat: getTimestamp(),\n iss: \"\",\n email,\n provider: \"virtual-calendar\",\n status: \"authenticated\",\n name: email,\n sub: grant_id,\n });\n this.Storage.setGrant({\n grant_id,\n access_token: key,\n expires_in: 2000000000,\n }, this.multiAccount);\n }\n}\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];c.children=f}if(a&&a.defaultProps)for(d in g=a.defaultProps,g)void 0===c[d]&&(c[d]=g[d]);return{$$typeof:l,type:a,key:k,ref:h,props:c,_owner:K.current}}\nfunction N(a,b){return{$$typeof:l,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===l}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g;function Q(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction R(a,b,e,d,c){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case l:case n:h=!0}}if(h)return h=a,c=c(h),a=\"\"===d?\".\"+Q(h,0):d,I(c)?(e=\"\",null!=a&&(e=a.replace(P,\"$&/\")+\"/\"),R(c,b,e,\"\",function(a){return a})):null!=c&&(O(c)&&(c=N(c,e+(!c.key||h&&h.key===c.key?\"\":(\"\"+c.key).replace(P,\"$&/\")+\"/\")+a)),b.push(c)),1;h=0;d=\"\"===d?\".\":d+\":\";if(I(a))for(var g=0;g<a.length;g++){k=\na[g];var f=d+Q(k,g);h+=R(k,b,e,f,c)}else if(f=A(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=d+Q(k,g++),h+=R(k,b,e,f,c);else if(\"object\"===k)throw b=String(a),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b)+\"). If you meant to render a collection of children, use an array instead.\");return h}\nfunction S(a,b,e){if(null==a)return a;var d=[],c=0;R(a,d,\"\",\"\",function(a){return b.call(e,a,c++)});return d}function T(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b});-1===a._status&&(a._status=0,a._result=b)}if(1===a._status)return a._result.default;throw a._result;}\nvar U={current:null},V={transition:null},W={ReactCurrentDispatcher:U,ReactCurrentBatchConfig:V,ReactCurrentOwner:K};exports.Children={map:S,forEach:function(a,b,e){S(a,function(){b.apply(this,arguments)},e)},count:function(a){var b=0;S(a,function(){b++});return b},toArray:function(a){return S(a,function(a){return a})||[]},only:function(a){if(!O(a))throw Error(\"React.Children.only expected to receive a single React element child.\");return a}};exports.Component=E;exports.Fragment=p;\nexports.Profiler=r;exports.PureComponent=G;exports.StrictMode=q;exports.Suspense=w;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W;\nexports.cloneElement=function(a,b,e){if(null===a||void 0===a)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+a+\".\");var d=C({},a.props),c=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=K.current);void 0!==b.key&&(c=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)J.call(b,f)&&!L.hasOwnProperty(f)&&(d[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)d.children=e;else if(1<f){g=Array(f);\nfor(var m=0;m<f;m++)g[m]=arguments[m+2];d.children=g}return{$$typeof:l,type:a.type,key:c,ref:k,props:d,_owner:h}};exports.createContext=function(a){a={$$typeof:u,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:t,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};\nexports.forwardRef=function(a){return{$$typeof:v,render:a}};exports.isValidElement=O;exports.lazy=function(a){return{$$typeof:y,_payload:{_status:-1,_result:a},_init:T}};exports.memo=function(a,b){return{$$typeof:x,type:a,compare:void 0===b?null:b}};exports.startTransition=function(a){var b=V.transition;V.transition={};try{a()}finally{V.transition=b}};exports.unstable_act=function(){throw Error(\"act(...) is not supported in production builds of React.\");};\nexports.useCallback=function(a,b){return U.current.useCallback(a,b)};exports.useContext=function(a){return U.current.useContext(a)};exports.useDebugValue=function(){};exports.useDeferredValue=function(a){return U.current.useDeferredValue(a)};exports.useEffect=function(a,b){return U.current.useEffect(a,b)};exports.useId=function(){return U.current.useId()};exports.useImperativeHandle=function(a,b,e){return U.current.useImperativeHandle(a,b,e)};\nexports.useInsertionEffect=function(a,b){return U.current.useInsertionEffect(a,b)};exports.useLayoutEffect=function(a,b){return U.current.useLayoutEffect(a,b)};exports.useMemo=function(a,b){return U.current.useMemo(a,b)};exports.useReducer=function(a,b,e){return U.current.useReducer(a,b,e)};exports.useRef=function(a){return U.current.useRef(a)};exports.useState=function(a){return U.current.useState(a)};exports.useSyncExternalStore=function(a,b,e){return U.current.useSyncExternalStore(a,b,e)};\nexports.useTransition=function(){return U.current.useTransition()};exports.version=\"18.2.0\";\n","import { h } from '@stencil/core';\n\nexport type LoginRequiredProps = {\n authenticationUrl: (provider?: string) => Promise<string>;\n};\n\nexport const LoginRequired = ({ authenticationUrl }: LoginRequiredProps) => (\n <div class={'login-required'} part=\"nse__login-required login-component\">\n <div class={'card'} part=\"nse__login-required-card\">\n <p part=\"nse__login-required-text\">Log into your account to use the Scheduler Editor.</p>\n\n <button\n class=\"google-button\"\n part=\"nse__login-required-google-button\"\n onClick={async event => {\n event.preventDefault();\n const authUrl = await authenticationUrl('google');\n if (authUrl) {\n window.location.href = authUrl;\n } else {\n console.error(`[nylas-scheduler-editor] Unable to get authentication URL.`);\n }\n }}\n >\n <span class=\"icon\">\n <google-logo-icon width=\"15\" height=\"15\" />\n </span>\n Continue with Google\n </button>\n\n <button\n class=\"microsoft-button\"\n part=\"nse__login-required-microsoft-button\"\n onClick={async event => {\n event.preventDefault();\n const authUrl = await authenticationUrl('microsoft');\n if (authUrl) {\n window.location.href = authUrl;\n } else {\n console.error(`[nylas-scheduler-editor] Unable to get authentication URL.`);\n }\n }}\n >\n <span class=\"icon\">\n <microsoft-logo-icon width=\"15\" height=\"15\" />\n </span>\n Continue with Microsoft\n </button>\n\n <button\n class=\"other-provider-button\"\n part=\"nse__login-required-other-provider-button\"\n onClick={async event => {\n event.preventDefault();\n const authUrl = await authenticationUrl();\n if (authUrl) {\n window.location.href = authUrl;\n } else {\n console.error(`[nylas-scheduler-editor] Unable to get authentication URL.`);\n }\n }}\n >\n View all providers <chevron-icon width=\"17\" height=\"17\" />\n </button>\n\n <small class=\"disclaimer-text\" part=\"nse__login-required-disclaimer-text\">\n * You will be redirected to authenticate your account.\n </small>\n </div>\n </div>\n);\n","import { Fragment, h } from '@stencil/core';\nimport { Configuration } from '@nylas/core';\nimport { CONFIGURATION_EVENT_TYPE, EXPERIMENTAL_FEATURES } from '@/common/constants';\n\ntype RecursivePartial<T> = {\n [P in keyof T]?: T[P] extends (infer U)[] ? RecursivePartial<U>[] : T[P] extends object | undefined ? RecursivePartial<T[P]> : T[P];\n};\n\n/**\n * The props for the Express Flow component.\n */\nexport type ExpressFlowProps = {\n currentUser: any;\n calendars: any[];\n selectedConfiguration: RecursivePartial<Configuration>;\n selectedEventType: CONFIGURATION_EVENT_TYPE;\n experimentalFeatures?: Record<string, boolean>;\n};\n\n/**\n * The Express Flow component.\n */\nexport default function ExpressFlow({ currentUser, calendars, selectedEventType, experimentalFeatures }: ExpressFlowProps) {\n const defaultCalendarOption = calendars?.find(c => c.is_primary) || calendars?.[0];\n const enableGroupEvents = experimentalFeatures?.[EXPERIMENTAL_FEATURES.group_events] || false;\n switch (selectedEventType) {\n case CONFIGURATION_EVENT_TYPE.one_on_one:\n case CONFIGURATION_EVENT_TYPE.max_availability:\n case CONFIGURATION_EVENT_TYPE.max_fairness: {\n return (\n <Fragment>\n <nylas-event-info>\n <div slot=\"inputs\">\n <nylas-event-title />\n <nylas-event-duration />\n <nylas-event-location userProvider={currentUser.provider} />\n </div>\n </nylas-event-info>\n <nylas-booking-calendar-picker\n exportparts=\"nbcp, nbcp__header, nbcp__dropdown, nbcp__dropdown-button, nbcp__dropdown-content\"\n expressFlow={true}\n calendars={calendars}\n currentUser={currentUser}\n defaultBookingCalendar={defaultCalendarOption?.id}\n />\n {!enableGroupEvents && (\n <nylas-scheduling-method showSubTitle={true} exportparts=\"nsm, nsm__header, nsm__input-label, nsm__dropdown, nsm__dropdown-button, nsm__dropdown-content\" />\n )}\n <nylas-custom-event-slug name=\"custom-event-slug\" exportparts=\"nces, nces__body, nces__header, nces__drawer-toggle--container, nces__input-textfield\" />\n </Fragment>\n );\n }\n case CONFIGURATION_EVENT_TYPE.collective: {\n return (\n <Fragment>\n <nylas-event-info>\n <div slot=\"inputs\">\n <nylas-event-title />\n <nylas-event-duration />\n <nylas-event-location userProvider={currentUser.provider} />\n </div>\n </nylas-event-info>\n <nylas-booking-calendar-picker\n exportparts=\"nbcp, nbcp__header, nbcp__dropdown, nbcp__dropdown-button, nbcp__dropdown-content\"\n expressFlow={true}\n calendars={calendars}\n currentUser={currentUser}\n defaultBookingCalendar={defaultCalendarOption?.id}\n />\n {!enableGroupEvents && (\n <nylas-scheduling-method showSubTitle={true} exportparts=\"nsm, nsm__header, nsm__input-label, nsm__dropdown, nsm__dropdown-button, nsm__dropdown-content\" />\n )}\n <nylas-custom-event-slug name=\"custom-event-slug\" exportparts=\"nces, nces__body, nces__header, nces__drawer-toggle--container, nces__input-textfield\" />\n <nylas-additional-participants\n name=\"participants\"\n eventParticipants={[{ name: currentUser?.name || currentUser?.email, email: currentUser?.email || '', is_organizer: true }]}\n exportparts=\"nadtnlpart, nadtnlpart__title, nadtnlpart__subtitle, nadtnlpart__content, nadtnlpart__input_group, nadtnlpart__input_wrapper, nadtnlpart__input, nadtnlpart__remove-participant\"\n />\n </Fragment>\n );\n }\n case CONFIGURATION_EVENT_TYPE.group: {\n return (\n <Fragment>\n <nylas-event-info>\n <div slot=\"inputs\">\n <nylas-event-title noTemplates={true} />\n <nylas-event-description noTemplates={true} hideAutoPopulateButton={true} />\n <nylas-event-location userProvider={currentUser.provider} />\n <nylas-event-timeslot name=\"event-timeslot\" />\n <nylas-event-capacity />\n </div>\n </nylas-event-info>\n <nylas-booking-calendar-picker\n exportparts=\"nbcp, nbcp__header, nbcp__dropdown, nbcp__dropdown-button, nbcp__dropdown-content\"\n expressFlow={true}\n calendars={calendars}\n currentUser={currentUser}\n defaultBookingCalendar={defaultCalendarOption?.id}\n />\n <nylas-additional-participants\n name=\"participants\"\n eventParticipants={[{ name: currentUser?.name || currentUser?.email, email: currentUser?.email || '', is_organizer: true }]}\n exportparts=\"nadtnlpart, nadtnlpart__title, nadtnlpart__subtitle, nadtnlpart__content, nadtnlpart__input_group, nadtnlpart__input_wrapper, nadtnlpart__input, nadtnlpart__remove-participant\"\n />\n <nylas-page-name requirePageName={true} pageName=\"Group events page\" />\n <nylas-custom-event-slug name=\"custom-event-slug\" exportparts=\"nces, nces__body, nces__header, nces__drawer-toggle--container, nces__input-textfield\" />\n </Fragment>\n );\n }\n }\n}\n","@import '../../../common/styles/variables.scss';\n@import '../../../common/mixins/buttons.scss';\n\n:host {\n display: flex;\n flex-direction: column;\n overflow: visible;\n border-radius: var(--nylas-border-radius-2x);\n width: fit-content;\n\n @media #{$mobile} {\n width: -moz-available;\n /* WebKit-based browsers will ignore this. */\n width: -webkit-fill-available;\n /* Mozilla-based browsers will ignore this. */\n width: fill-available;\n min-width: 325px;\n }\n\n background: var(--nylas-base-0);\n position: relative;\n box-shadow:\n 0px 0px 6px -2px rgba(0, 0, 0, 0.05),\n 0px 5px 15px -3px rgba(0, 0, 0, 0.1);\n @include default-css-variables;\n}\n\ndiv.scheduler-editor-content {\n height: 610px;\n\n &.scheduler-editor-content--group_feature_enabled {\n height: 900px;\n\n @media #{$mobile} {\n height: auto;\n }\n }\n\n @media #{$mobile} {\n height: auto;\n }\n}\n\ndiv.scheduler-editor-content--group {\n height: 900px;\n\n @media #{$mobile} {\n height: auto;\n }\n}\n\ndiv.scheduler-editor-header {\n display: grid;\n grid-template-columns: 1fr auto auto;\n align-items: center;\n justify-content: space-between;\n padding: 1rem;\n border-bottom: 1px solid var(--nylas-base-200);\n color: var(--nylas-base-900);\n min-width: 924px;\n\n @media #{$mobile} {\n width: auto;\n min-width: calc(325px - 1rem);\n }\n\n h1.scheduler-editor-title {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n margin: 0;\n font-size: 18px;\n line-height: 24px;\n font-weight: 600;\n }\n\n button {\n @include invisible-button;\n }\n\n div.language {\n select-dropdown::part(sd_dropdown-button) {\n border: none;\n padding: 4px;\n margin-right: 8px;\n\n &:hover {\n outline: none;\n color: var(--nylas-primary);\n }\n }\n\n select-dropdown::part(sd_dropdown-content) {\n min-width: 132px;\n }\n\n @media #{$mobile} {\n select-dropdown::part(sd_dropdown-content) {\n width: -webkit-fill-available;\n width: fill-available;\n width: -moz-available;\n }\n }\n }\n}\n\nnylas-select-event-type {\n height: inherit;\n width: calc(924px + 2rem); // 1rem padding on each side\n\n @media #{$mobile} {\n width: auto;\n }\n}\n\nnylas-editor-tabs,\nnylas-editor-tabs-group {\n width: auto;\n height: inherit;\n\n .row {\n display: flex;\n gap: 1rem;\n }\n\n .composable {\n height: inherit;\n overflow: auto;\n }\n\n nylas-event-info,\n nylas-event-limits {\n div[slot='inputs'] {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n }\n }\n}\n\n.card {\n display: flex;\n flex-direction: column;\n padding: 2rem;\n background-color: var(--nylas-base-0);\n border: 1px solid var(--nylas-base-200);\n border-radius: 5px;\n\n max-width: fit-content;\n\n align-self: center;\n}\n\n.login-required {\n height: inherit;\n\n @media #{$mobile} {\n height: auto;\n }\n\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n justify-content: center;\n padding: 2rem 1rem;\n background-color: var(--nylas-base-25);\n border-radius: var(--nylas-border-radius-2x);\n\n p {\n margin: 0 0 1rem;\n }\n\n .microsoft-button,\n .google-button {\n @include button;\n display: flex;\n margin-bottom: 1rem;\n background-color: var(--nylas-base-0);\n border: 1px solid var(--nylas-base-200);\n border-radius: 5px;\n justify-content: center;\n gap: 0.5rem;\n align-items: center;\n\n &:hover {\n background-color: var(--nylas-base-25);\n }\n }\n\n .other-provider-button {\n @include button;\n display: flex;\n border: 0;\n background-color: var(--nylas-base-0);\n height: 48px;\n margin-bottom: 1rem;\n font-size: 0.95rem;\n justify-content: center;\n gap: 0.25rem;\n align-items: center;\n\n svg {\n transform: rotate(180deg);\n }\n\n &:hover {\n background-color: var(--nylas-base-25);\n }\n }\n\n .disclaimer-text {\n font-size: 0.75rem;\n color: var(--nylas-base-600);\n align-self: center;\n }\n}\n\n.list-configurations {\n padding: 2rem;\n height: inherit;\n\n @media #{$mobile} {\n height: auto;\n padding: 2rem 1rem;\n }\n\n background: var(--nylas-base-25);\n border-radius: var(--nylas-border-radius-2x);\n\n nylas-list-configurations {\n height: inherit;\n display: flex;\n flex-direction: column;\n }\n}\n","import { NylasBaseProvider } from '@/common/abstract-provider';\nimport type { SchedulerEditorEventOverride } from '@/common/component-types';\nimport { AuthArgs, NylasIdentityRequestWrapper, User, type NylasApiRequest } from '@/common/nylas-api-request';\nimport { RegisteredComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { CreateNylasSchedulerConfigStore, NylasSchedulerConfigStoreState, NylasSchedulerConfigStoreType } from '@/stores/scheduler-config-store';\nimport { debug } from '@/utils/utils';\nimport { Config, NylasSessions } from '@nylas/identity';\nimport { Component, Element, Event, EventEmitter, Host, Listen, Method, Prop, State, Watch, h } from '@stencil/core';\nimport { LoginRequired } from './LoginRequired';\nimport ExpressFlow from './ExpressFlow';\nimport { AdditionalParticipant, GroupConfiguration } from '@nylas/core';\nimport { Tab } from '../nylas-editor-tabs/tab-contents';\nimport i18next from '@/utils/i18n';\nimport { CONFIGURATION_EVENT_TYPE, EXPERIMENTAL_FEATURES, LANGUAGE_CODE, LANGUAGE_MAP, Locale } from '@/common/constants';\n\n/**\n * The `nylas-scheduler-editor` component is a form that allows users to configure the settings for the Nylas Scheduler.\n *\n * @slot login-required - This slot is used to display a message when the user is not logged in.\n * @slot custom-page-style-inputs - This slot is used in \"app\" mode to pass a custom page style form to the nylas-page-styling component.\n *\n * @part nse__header - The header of the scheduler editor.\n * @part nse__title - The title of the scheduler editor.\n * @part nse__close-button - The close button of the scheduler editor. Use this part to hide the close button.\n * @part nse__content - The content of the scheduler editor. Use this part to adjust the height of the editor.\n * @part nse__list-configurations - The list of configurations. Use this part to adjust the height of the list.\n * @part nse__login-required - The login required component.\n * @part nse__login-required-card - The card of the login required component.\n * @part nse__login-required-text - The text of the login required component.\n * @part nse__login-required-google-button - The Google button of the login required component.\n * @part nse__login-required-microsoft-button - The Microsoft button of the login required component.\n * @part nse__login-required-other-provider-button - The other provider button of the login required component.\n * @part nse__login-required-disclaimer-text - The icon of the login required component.\n */\n@Component({\n tag: 'nylas-scheduler-editor',\n styleUrl: 'nylas-scheduler-editor.scss',\n shadow: true,\n})\nexport class NylasSchedulerEditor {\n /**\n * Stores to be used by the provider.\n */\n private stores?: {\n schedulerConfig: NylasSchedulerConfigStoreType;\n };\n\n /**\n * This is a base provide that defines the common methods and properties\n * that all providers should have.\n *\n * Because stencil does not support abstract classes, we have to use a\n * property to store the base provider instance.\n */\n private baseProvider?: NylasBaseProvider<Exclude<typeof this.stores, undefined>>;\n\n /**\n * The Nylas Scheduler Config Connector instance.\n * The brains of the provider. It manages data fetching and state synchronization.\n */\n private nylasSchedulerConfigConnector?: NylasSchedulerConfigConnector;\n\n /**\n * The host element.\n * Used to manage the host element of the provider.\n */\n @Element() private host!: HTMLNylasSchedulerEditorElement;\n\n /***\n * The configuration id to use for the scheduler editor.\n * If provided, then the scheduler editor will try and fetch the configuration\n * with the provided id. If found, it will automatically load the editor\n * with the configuration settings for editing.\n */\n @Prop({ mutable: true }) configurationId?: string;\n\n /**\n * The Nylas Api Request instance.\n * Used to make requests to the Nylas API.\n */\n @Prop({ mutable: true }) nylasApiRequest?: NylasApiRequest;\n\n /**\n * The Nylas Sessions configuration.\n * Used to configure the Nylas Sessions instance.\n */\n @Prop() nylasSessionsConfig?: Config;\n\n /**\n * The default authentication arguments to use when authenticating a user.\n */\n @Prop() defaultAuthArgs?: AuthArgs[];\n\n /**\n * This provides a way to override the default event handlers.\n */\n @Prop() eventOverrides: SchedulerEditorEventOverride = {};\n\n /**\n * The scheduler preview link used when the user clicks the preview button.\n * If `requiresSlug` is true, you can use the placeholder `{slug}` to insert the slug in the link for Nylas hosted scheduling pages.\n * Additionally, you can use the placeholder `{config.id}` to insert the configuration ID anywhere in the link.\n * For example: `https://book.nylas.com/us/<YOUR_NYLAS_APP_CLIENT_ID>/{slug}`.\n * `us` denotes the region. Replace it with the appropriate region of your application.\n * Replace `<YOUR_NYLAS_APP_CLIENT_ID>` with your Nylas app client ID.\n * Note: Nylas hosted scheduling pages are only available for public configurations.\n */\n @Prop({ attribute: 'scheduler-preview-link' }) schedulerPreviewLink: string = '';\n\n /**\n * The default scheduler config store state.\n * Used to set the initial state of the scheduler config store.\n * This state can be used to pass defaults to newly created configurations.\n */\n @Prop({ attribute: 'default-scheduler-config-store-state' }) readonly defaultSchedulerConfigState?: Partial<NylasSchedulerConfigStoreState>;\n\n /**\n * This is used to set the mode for the scheduler config.\n * The mode can be 'app' or 'composable'.\n * The default mode is 'app'.\n */\n @Prop({ attribute: 'mode' }) readonly mode: 'app' | 'composable' = 'app';\n\n /**\n * This prop is used to populate the additional participants and\n * their availability in the scheduler editor.\n */\n @Prop({ attribute: 'additional-participants' }) additionalParticipants?: AdditionalParticipant[];\n\n /**\n * This optional prop is used to hide tabs in the editor. Available tabs are:\n * eventInfo, availability, participants, bookingOptions, bookingForm\n */\n @Prop({ attribute: 'hide-editor-tabs' }) hideEditorTabs?: Tab[] = [];\n\n /**\n * This prop will be used to populate the conference provider options in the editor.\n * The key is the provider name ('zoom') and the value is the grant id.\n * We currently support same provider ('google', 'microsoft') for all participants and 'zoom' for cross-provider conferencing.\n */\n @Prop({ attribute: 'conference-providers' }) conferenceProviders?: Record<string, string>;\n\n /**\n * Indicates if a slug is required for the configuration.\n * When set to true, the user must enter a slug when creating or editing a configuration.\n * The slug is used for hosted pages. If using Nylas hosted scheduling pages, the `schedulerPreviewLink` prop can be set to redirect to a public configuration as follows:\n * `https://book.nylas.com/us/<YOUR_NYLAS_APP_CLIENT_ID>/{slug}`.\n * `us` denotes the region. Replace it with the appropriate region of your application.\n * Replace `<YOUR_NYLAS_APP_CLIENT_ID>` with your Nylas app client ID. The `{slug}` placeholder is replaced with the appropriate slug when the scheduler preview button is clicked.\n * Note: Nylas hosted scheduling pages are only available for public configurations.\n */\n @Prop({ attribute: 'requires-slug' }) requiresSlug: boolean = false;\n\n /**\n * Indicates if the user feedback feature is enabled.\n * By default, this is set to true. When enabled, the user feedback\n * feature will be available in the edit mode.\n * To disable the user feedback feature, set this prop to false.\n */\n @Prop() readonly enableUserFeedback?: boolean = true;\n\n /**\n * This prop will allow to set a default language for the Nylas scheduling page.\n */\n @Prop() readonly defaultLanguage?: LANGUAGE_CODE;\n\n /**\n * This prop will allow to override the default localization strings for each language.\n * Nylas scheduling page currently support the following language codes: en, es, fr, de, sv, zh, ja, nl.\n */\n @Prop() readonly localization?: Partial<Record<LANGUAGE_CODE, Locale>>;\n\n /**\n * This prop will allow to show / hide the option to manage nylas branding in the email template.\n * By default, this is set to true. When enabled, the option to show/hide nylas branding will be shown in the email template.\n * To disable the option to show/hide nylas branding, set this prop to false.\n */\n @Prop() readonly nylasBranding?: boolean = true;\n\n /**\n * This prop is to opt in to experimental features.\n * Ex: { 'group_events': true }\n */\n @Prop() readonly experimentalFeatures?: Record<EXPERIMENTAL_FEATURES, boolean>;\n\n /**\n * This event is fired when the provider is initialized.\n * By default, this event handles determining if the user is logged in or not.\n * In addition, it fetches the provided configuration if a valid configuration id is provided.\n */\n @Event({ cancelable: true }) readonly init!: EventEmitter<HTMLNylasSchedulerEditorElement>;\n\n /**\n * This event is fired when the the NylasAuth isAuthenticated state changes\n * to true.\n */\n @Event({ cancelable: true }) readonly loggedIn!: EventEmitter<HTMLNylasSchedulerEditorElement>;\n\n /**\n * This event is fired when the the NylasAuth isAuthenticated state changes\n * to false.\n */\n @Event({ cancelable: true }) readonly loggedOut!: EventEmitter<HTMLNylasSchedulerEditorElement>;\n\n /**\n * This event is fired when the close button on scheduler config is clicked.\n */\n @Event({ cancelable: true }) readonly schedulerConfigCloseClicked!: EventEmitter<HTMLNylasSchedulerEditorElement>;\n\n /**\n * Automatically register components that have the `@RegisterComponent` decorator.\n * If this is set to false, you will need to manually register components using the\n * `registerComponent` method.\n * @default true\n */\n @State() automaticComponentRegistration: boolean = true;\n\n /**\n * This state will track the current selected language of the scheduler page.\n */\n @State() selectedLanguage: LANGUAGE_CODE = this.defaultLanguage || LANGUAGE_CODE.en;\n\n /**\n * This state will track the current language version of the state.\n * This is used to force the component to re-render when the localization prop is updated.\n */\n @State() langVersion: number = 0;\n\n connectedCallback() {\n debug(`[nylas-scheduler-editor] connectedCallback`);\n }\n\n async componentWillLoad() {\n debug(`[nylas-scheduler-editor] componentWillLoad`);\n const filteredAdditionalParticipants = this.additionalParticipants?.filter(participant => {\n const filteredCalendars = participant.calendars?.length > 0 ? participant.calendars.filter(calendar => calendar.id && calendar.name) : [];\n if (participant.name && participant.email && filteredCalendars.length > 0) {\n return {\n name: participant.name,\n email: participant.email,\n calendars: filteredCalendars,\n };\n }\n });\n this.stores = {\n schedulerConfig: CreateNylasSchedulerConfigStore({\n ...this.defaultSchedulerConfigState,\n additionalParticipants: filteredAdditionalParticipants,\n conferenceProviders: this.conferenceProviders,\n requiresSlug: this.requiresSlug,\n selectedLanguage: this.defaultLanguage || LANGUAGE_CODE.en,\n nylasBranding: this.nylasBranding,\n experimentalFeatures: this.experimentalFeatures,\n }),\n };\n\n if (!this.nylasApiRequest && this.nylasSessionsConfig) {\n const nylasSession = new NylasSessions(this.nylasSessionsConfig);\n\n // We must check if the user is logged in before continuing\n // otherwise, a PCKE code will not be generated and the user\n // will not be able to log in.\n await nylasSession.isLoggedIn();\n\n // Watch for login events so that we can automatically update the state\n nylasSession.onLoginSuccess(async () => {\n const currentUser = await this.nylasSchedulerConfigConnector?.schedulerConfig?.currentUser();\n if (currentUser) {\n const loggedInEvent = this.loggedIn.emit(this.host);\n if ('loggedIn' in this.eventOverrides) {\n await this.eventOverrides.loggedIn(loggedInEvent, this.nylasSchedulerConfigConnector);\n }\n if (!loggedInEvent.defaultPrevented) {\n await this.loggedInHandler(currentUser);\n }\n }\n });\n\n // Watch for logout events so that we can automatically update the state\n nylasSession.onLoginFail(async () => {\n this.stores?.schedulerConfig?.set('currentUser', null);\n const loggedOutEvent = this.loggedOut.emit(this.host);\n if ('loggedOut' in this.eventOverrides) {\n await this.eventOverrides.loggedOut(loggedOutEvent, this.nylasSchedulerConfigConnector);\n if (loggedOutEvent.defaultPrevented) {\n return;\n }\n }\n });\n\n this.nylasApiRequest = new NylasIdentityRequestWrapper(nylasSession);\n }\n\n if (this.nylasApiRequest && this.defaultAuthArgs) {\n this.nylasApiRequest.setDefaultAuthArgs(this.defaultAuthArgs);\n }\n\n this.baseProvider = new NylasBaseProvider(this.host, this.stores, this.automaticComponentRegistration, this.eventOverrides);\n\n const nylasSchedulerConfigStore = this.baseProvider.getStore('schedulerConfig');\n this.nylasSchedulerConfigConnector = new NylasSchedulerConfigConnector({\n nylasApiRequest: this.nylasApiRequest,\n nylasSchedulerConfigStore: nylasSchedulerConfigStore,\n });\n\n const initEvent = this.init.emit(this.host);\n if ('init' in this.eventOverrides) {\n await this.eventOverrides.init(initEvent, this.nylasSchedulerConfigConnector);\n }\n\n if (!initEvent.defaultPrevented) {\n const currentUser = await this.nylasSchedulerConfigConnector?.schedulerConfig?.currentUser();\n if (currentUser) {\n const loggedInEvent = this.loggedIn.emit(this.host);\n if ('loggedIn' in this.eventOverrides) {\n await this.eventOverrides.loggedIn(loggedInEvent, this.nylasSchedulerConfigConnector);\n }\n if (!loggedInEvent.defaultPrevented) {\n await this.loggedInHandler(currentUser);\n }\n } else {\n this.stores?.schedulerConfig?.set('currentUser', null);\n const loggedOutEvent = this.loggedOut.emit(this.host);\n if ('loggedOut' in this.eventOverrides) {\n await this.eventOverrides.loggedOut(loggedOutEvent, this.nylasSchedulerConfigConnector);\n if (loggedOutEvent.defaultPrevented) {\n return;\n }\n }\n }\n }\n\n // Watch for store changes\n this.stores?.schedulerConfig?.onChange('selectedConfiguration', async config => {\n if (config && config.id) {\n this.configurationId = config.id;\n }\n });\n\n this.baseProvider?.componentWillLoad(this.nylasSchedulerConfigConnector);\n }\n\n async componentDidLoad() {\n debug(`[nylas-scheduler-editor] componentDidLoad`);\n await this.baseProvider?.componentDidLoad();\n this.updateLocalization(this.localization);\n }\n\n async componentDisconnected() {\n await this.baseProvider?.componentDisconnected();\n }\n\n /**\n * Watch for changes to the configuration id and automatically fetch the configuration\n * when the configuration id changes. If the configuration id is cleared, then the\n * configuration is cleared as well.\n * @param newConfigurationId The new configuration id\n */\n @Watch('configurationId')\n async configurationIdChanged(newConfigurationId: string) {\n if (newConfigurationId) {\n await this.nylasSchedulerConfigConnector?.schedulerConfig?.getConfigurationById(newConfigurationId);\n this.stores?.schedulerConfig?.set('action', 'edit');\n } else {\n // Clear the configuration\n this.stores?.schedulerConfig?.set('selectedConfiguration', {});\n this.stores?.schedulerConfig?.set('action', null);\n }\n }\n\n @Watch('localization')\n updateLocalization(newVal?: Partial<Record<LANGUAGE_CODE, Locale>>) {\n if (!newVal) {\n return;\n }\n\n Object.keys(newVal).forEach(lang => {\n if (!(lang in LANGUAGE_CODE)) {\n return;\n }\n i18next.addResourceBundle(\n lang,\n 'translation',\n newVal[lang],\n false, // Merge with existing translations\n true, // Replace the existing translations with the same key\n );\n });\n this.langVersion++;\n }\n\n @Watch('nylasBranding')\n updateNylasBranding(newVal: boolean) {\n this.stores?.schedulerConfig?.set('nylasBranding', newVal);\n }\n\n @Watch('experimentalFeatures')\n updateExperimentalFeatures(newVal: Record<EXPERIMENTAL_FEATURES, boolean>) {\n this.stores?.schedulerConfig?.set('experimentalFeatures', newVal);\n }\n\n /**\n * This method is used to get the NylasSchedulerConfigStore instance.\n * You can use this instance to update or get the state of the store.\n * @returns Promise<NylasSchedulerConfigStoreType | undefined>\n */\n @Method()\n async store(): Promise<NylasSchedulerConfigStoreType | undefined> {\n return this.stores?.schedulerConfig;\n }\n\n /**\n * This method is used to get the NylasSchedulerConfigConnector instance.\n * You can use this instance to make requests to the Nylas API.\n * @returns Promise<NylasSchedulerConfigConnector | undefined>\n */\n @Method()\n async schedulerConnector(): Promise<NylasSchedulerConfigConnector | undefined> {\n return this.nylasSchedulerConfigConnector;\n }\n\n /**\n * This is a custom event handler that is used to register a component with the provider.\n * It is used by components that have the `@RegisterComponent` decorator.\n * @param event A custom event that contains the component to register\n * @returns Promise<void>\n */\n @Listen('registerComponent')\n async registerComponentHandler(event: CustomEvent<RegisteredComponent<any, any>>): Promise<void> {\n this.baseProvider?.registerComponent(event.detail);\n }\n\n /**\n * This is a custom event handler that is used to unregister a component with the provider.\n * It is used by components that have the `@RegisterComponent` decorator.\n * @param event A custom event that contains the component to unregister\n * @returns Promise<void>\n */\n @Listen('unregisterComponent')\n async unregisterComponentHandler(event: CustomEvent<RegisteredComponent<any, any>>): Promise<void> {\n this.baseProvider?.unregisterComponent(event.detail);\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 === 'language') {\n this.selectedLanguage = LANGUAGE_CODE[value as LANGUAGE_CODE];\n i18next.changeLanguage(this.selectedLanguage);\n this.stores?.schedulerConfig?.set('selectedLanguage', this.selectedLanguage);\n }\n }\n\n /**\n * Upon login, set the current user and fetch the configuration and calendars.\n * @param currentUser The current user that is logged in\n */\n private async loggedInHandler(currentUser: User) {\n this.stores?.schedulerConfig?.set('currentUser', currentUser);\n\n if (!this.nylasSchedulerConfigConnector) {\n return;\n }\n\n await this.nylasSchedulerConfigConnector.schedulerConfig?.getCalendars();\n\n if (this.configurationId) {\n const data = await this.nylasSchedulerConfigConnector.schedulerConfig?.getConfigurationById(this.configurationId);\n if (data && data[0]?.id) {\n this.stores?.schedulerConfig?.set('action', 'edit');\n }\n }\n }\n\n /**\n * This is a custom event handler that is used to update the state of the provider.\n */\n private handleSchedulerConfigCloseClicked = (_event: Event) => {\n const event = this.schedulerConfigCloseClicked.emit(this.host);\n if ('schedulerConfigCloseClicked' in this.eventOverrides) {\n this.eventOverrides.schedulerConfigCloseClicked(event, this.nylasSchedulerConfigConnector);\n }\n\n if (!event.defaultPrevented) {\n localStorage.removeItem('grant');\n localStorage.removeItem('user');\n window.location.reload();\n }\n };\n\n /**\n * This method is used to get the authentication URL for a provider.\n * @param provider The provider to get the authentication URL for (e.g. google, microsoft, etc.)\n * @returns Promise<string> The authentication URL to redirect the user for the provider\n */\n private authenticationUrl = async (provider?: string) => {\n if (!this.nylasApiRequest) {\n console.error(`[nylas-scheduler-editor] Nylas API Request is not initialized.`);\n return '';\n }\n const url = await this.nylasApiRequest.authenticationUrl({ provider });\n\n return url || '';\n };\n\n render() {\n const hasSlot = this.host.querySelector('[slot=\"custom-page-style-inputs\"]');\n const selectedConfigId = this.stores?.schedulerConfig?.state.selectedConfiguration?.id;\n const languageOptions = Object.keys(LANGUAGE_MAP).map(key => ({\n label: LANGUAGE_MAP[key],\n value: key,\n }));\n const isGroupType =\n this.stores?.schedulerConfig?.state.selectedEventType === CONFIGURATION_EVENT_TYPE.group ||\n (this.stores?.schedulerConfig?.state.selectedConfiguration as GroupConfiguration)?.type === CONFIGURATION_EVENT_TYPE.group;\n\n return (\n <Host>\n <div class=\"scheduler-editor-header\" part=\"nse__header\">\n <h1 class=\"scheduler-editor-title\" part=\"nse__title\">\n <calendar-icon width=\"18\" height=\"18\" />\n {i18next.t('schedulerEditorTitle')}\n </h1>\n <div\n class={{\n language: true,\n }}\n part=\"nse__language\"\n >\n <select-dropdown\n name=\"language\"\n searchPlaceholder={i18next.t('search')}\n options={languageOptions}\n withChevron={false}\n defaultSelectedOption={languageOptions.find(lang => lang.value == this.selectedLanguage)}\n exportparts=\"sd_dropdown: nse__language-dropdown, sd_dropdown-button: nse__language-drop-button, sd_dropdown-content: nse__language-drop-content, sd_dropdown_label: nse__language-drop-label\"\n >\n <span slot=\"select-icon\">\n <translate-icon width=\"20\" height=\"20\" />\n </span>\n </select-dropdown>\n </div>\n <button class=\"scheduler-editor-close\" title=\"logout\" onClick={e => this.handleSchedulerConfigCloseClicked(e)} part=\"nse__close-button\">\n <close-icon width=\"18\" height=\"18\" />\n </button>\n </div>\n <div\n class={{\n 'scheduler-editor-content': true,\n 'scheduler-editor-content--group_feature_enabled': !!this.stores?.schedulerConfig?.state.experimentalFeatures?.[EXPERIMENTAL_FEATURES.group_events],\n 'scheduler-editor-content--group': isGroupType,\n }}\n part=\"nse__content\"\n >\n {this.stores?.schedulerConfig?.state.currentUser && this.stores.schedulerConfig.state.action === null && (\n <div class=\"list-configurations\" part=\"nse__list-configurations\">\n <nylas-list-configurations exportparts=\"nlc__create-new-cta, actions__dropdown, actions__dropdown-button, actions__dropdown-content, actions-Copy, actions-Preview, actions-Delete\"></nylas-list-configurations>\n </div>\n )}\n {this.stores?.schedulerConfig?.state.currentUser &&\n this.stores.schedulerConfig.state.action === 'create-select' &&\n this.stores?.schedulerConfig?.state.experimentalFeatures?.[EXPERIMENTAL_FEATURES.group_events] && <nylas-select-event-type></nylas-select-event-type>}\n {this.stores?.schedulerConfig?.state.currentUser && this.stores.schedulerConfig.state.action === 'create' && isGroupType && (\n // If the mode is 'app', then render the editor tabs in a composable mode with children for creating a new configuration (Express flow).\n <nylas-editor-tabs-group mode=\"composable\">\n <ExpressFlow\n experimentalFeatures={this.stores?.schedulerConfig?.state?.experimentalFeatures}\n selectedEventType={this.stores?.schedulerConfig?.state?.selectedEventType || CONFIGURATION_EVENT_TYPE.one_on_one}\n currentUser={this.stores?.schedulerConfig?.state.currentUser}\n calendars={this.stores?.schedulerConfig?.state?.calendars}\n selectedConfiguration={this.stores?.schedulerConfig?.state?.selectedConfiguration}\n />\n </nylas-editor-tabs-group>\n )}\n {this.stores?.schedulerConfig?.state.currentUser && this.stores.schedulerConfig.state.action === 'create' && !isGroupType && (\n // If the mode is 'app', then render the editor tabs in a composable mode with children for creating a new configuration (Express flow).\n <nylas-editor-tabs mode=\"composable\">\n <ExpressFlow\n experimentalFeatures={this.stores?.schedulerConfig?.state?.experimentalFeatures}\n selectedEventType={this.stores?.schedulerConfig?.state?.selectedEventType || CONFIGURATION_EVENT_TYPE.one_on_one}\n currentUser={this.stores?.schedulerConfig?.state.currentUser}\n calendars={this.stores?.schedulerConfig?.state?.calendars}\n selectedConfiguration={this.stores?.schedulerConfig?.state?.selectedConfiguration}\n />\n </nylas-editor-tabs>\n )}\n {this.stores?.schedulerConfig?.state.currentUser && this.stores.schedulerConfig.state.action === 'edit' && isGroupType && (\n <nylas-editor-tabs-group key={selectedConfigId} mode={this.mode}>\n {this.mode === 'composable' && <slot />}\n {this.mode === 'app' && hasSlot && (\n <div style={{ display: 'none' }} slot=\"custom-page-style-inputs\" key={selectedConfigId}>\n <slot name=\"custom-page-style-inputs\" />\n </div>\n )}\n </nylas-editor-tabs-group>\n )}\n {this.stores?.schedulerConfig?.state.currentUser && this.stores.schedulerConfig.state.action === 'edit' && !isGroupType && (\n <nylas-editor-tabs key={selectedConfigId} mode={this.mode}>\n {this.mode === 'composable' && <slot />}\n {this.mode === 'app' && hasSlot && (\n <div style={{ display: 'none' }} slot=\"custom-page-style-inputs\" key={selectedConfigId}>\n <slot name=\"custom-page-style-inputs\" />\n </div>\n )}\n </nylas-editor-tabs>\n )}\n {!this.stores?.schedulerConfig?.state.currentUser && (\n <slot name=\"login-required\">\n <LoginRequired authenticationUrl={this.authenticationUrl} />\n </slot>\n )}\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"nylas-scheduler-editor.js","mappings":"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AAI,CAAC;AACxD,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;AAChE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC;AACxD,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;AAChE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC;AACxD,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;AAChE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC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","names":["isNylasErrorResponse","local","global","this","r","t","n","uuid","sha256","jwtDecode","NylasSchedulerEditor","i18next"],"sources":["src/connector/shared/api/scheduler-config.ts","src/connector/nylas-scheduler-config-connector/index.ts","src/stores/scheduler-config-store.ts","../nylas-identity/esm/client/localStorage.js","../nylas-identity/esm/client/store.js","../nylas-identity/esm/client/indexedDB.js","../../node_modules/.pnpm/js-sha256@0.9.0/node_modules/js-sha256/src/sha256.js","../../node_modules/.pnpm/uuid@8.3.2/node_modules/uuid/dist/esm-browser/rng.js","../../node_modules/.pnpm/uuid@8.3.2/node_modules/uuid/dist/esm-browser/regex.js","../../node_modules/.pnpm/uuid@8.3.2/node_modules/uuid/dist/esm-browser/validate.js","../../node_modules/.pnpm/uuid@8.3.2/node_modules/uuid/dist/esm-browser/stringify.js","../../node_modules/.pnpm/uuid@8.3.2/node_modules/uuid/dist/esm-browser/v4.js","../../node_modules/.pnpm/@microsoft+fetch-event-source@2.0.1/node_modules/@microsoft/fetch-event-source/lib/esm/parse.js","../../node_modules/.pnpm/@microsoft+fetch-event-source@2.0.1/node_modules/@microsoft/fetch-event-source/lib/esm/fetch.js","../nylas-identity/esm/helpers/index.js","../../node_modules/.pnpm/jwt-decode@3.1.2/node_modules/jwt-decode/build/jwt-decode.esm.js","../nylas-identity/esm/app.js","../../node_modules/.pnpm/react@18.2.0/node_modules/react/cjs/react.production.min.js","src/components/scheduler-editor/nylas-scheduler-editor/LoginRequired.tsx","src/components/scheduler-editor/nylas-scheduler-editor/ExpressFlow.tsx","src/components/scheduler-editor/nylas-scheduler-editor/nylas-scheduler-editor.scss?tag=nylas-scheduler-editor&encapsulation=shadow","src/components/scheduler-editor/nylas-scheduler-editor/nylas-scheduler-editor.tsx"],"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 recurrence: masterEventId ? undefined : groupEventDetails.recurrence,\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 recurrence: 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 recurrence: 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","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","import { AdditionalParticipant, Calendar, Configuration, EventDetails, GroupConfiguration, GroupEventAPIData, EnableEventTypes } from '@nylas/core';\nimport { ObservableMap, createStore } from '@stencil/store';\nimport { User } from '../common/nylas-api-request';\nimport { CONFIGURATION_EVENT_TYPE, EXPERIMENTAL_FEATURES } from '@/common/constants';\n\ntype RecursivePartial<T> = {\n [P in keyof T]?: T[P] extends (infer U)[] ? RecursivePartial<U>[] : T[P] extends object | undefined ? RecursivePartial<T[P]> : T[P];\n};\n\nexport interface NylasSchedulerConfigStoreState {\n /**\n * The selected configuration.\n * This is the configuration that is currently selected, use it to populate default values for new configurations.\n */\n selectedConfiguration: RecursivePartial<Configuration> | RecursivePartial<GroupConfiguration>;\n /**\n * The list of configurations.\n * This is the list of configurations that the user has created.\n */\n configurations: Configuration[];\n /**\n * The list of calendars.\n * This is the list of calendars that the user has access to.\n */\n calendars: Calendar[];\n /**\n * The current user.\n * This is the user that is currently logged in.\n */\n currentUser: User | null;\n /**\n * The current action.\n * This is the current action that the user is performing.\n */\n action: 'create' | 'create-select' | 'edit' | null;\n /**\n * The additional participants.\n */\n additionalParticipants: AdditionalParticipant[];\n /**\n * The next cursor for list configurations.\n */\n listConfigurationsNextCursor: string | null;\n /**\n * The conference providers.\n */\n conferenceProviders?: Record<'microsoft' | 'zoom' | 'google', string>;\n /**\n * The flag to determine if the slug is required\n */\n requiresSlug: boolean;\n /**\n * The selected language.\n */\n selectedLanguage?: string;\n /**\n * The flag to show or hide the option to manage nylas branding in the email template.\n */\n nylasBranding?: boolean;\n /**\n * The experimental features.\n */\n experimentalFeatures?: Record<EXPERIMENTAL_FEATURES, boolean>;\n /**\n * Controls which event types are enabled in the Scheduler.\n *\n * - By default, all event types are enabled and users will see a selection screen when creating a new event.\n * - You can disable specific event types by setting them to `false`.\n * - At least one event type must remain enabled at all times.\n * - If only one event type is enabled, the event type selection screen will be skipped.\n */\n enableEventTypes?: EnableEventTypes;\n /**\n * The selected event type for creating a new configuration.\n */\n selectedEventType?: CONFIGURATION_EVENT_TYPE;\n /**\n * The group events of the selected configuration.\n */\n groupEvents: GroupEventAPIData[];\n /**\n * The selected group event being edited.\n */\n selectedGroupEvent?: GroupEventAPIData;\n /**\n * The url params with the date and time range for the current view in the scheduler editor calendar.\n */\n calendarViewDateRange?: {\n start_time: string;\n end_time: string;\n };\n /**\n * The list of master group events.\n */\n masterGroupEvents: Record<string, EventDetails>;\n /**\n * The flag to determine if the form is loading.\n */\n isLoading: boolean;\n}\n\nexport type NylasSchedulerConfigStoreType = ReturnType<typeof CreateNylasSchedulerConfigStore>;\n\nexport type CreateNylasSchedulerConfigStoreReturnType = ObservableMap<NylasSchedulerConfigStoreState> & {\n /**\n * Reset the selected configuration to the default state.\n * This is used to reset the selected configuration to the default state instead of setting it to an empty object.\n */\n resetSelectedConfiguration: () => void;\n};\n\nexport function CreateNylasSchedulerConfigStore(defaultState: Partial<NylasSchedulerConfigStoreState> = {}): CreateNylasSchedulerConfigStoreReturnType {\n const defaultSchedulerConfigState: NylasSchedulerConfigStoreState = {\n selectedConfiguration: {},\n configurations: [],\n groupEvents: [],\n listConfigurationsNextCursor: null,\n calendars: [],\n currentUser: null,\n action: null,\n additionalParticipants: [],\n requiresSlug: false,\n masterGroupEvents: {},\n isLoading: false,\n ...defaultState,\n };\n const store = createStore<NylasSchedulerConfigStoreState>(defaultSchedulerConfigState);\n\n /**\n * Reset the selected configuration to the default state.\n * This is used to reset the selected configuration to the default state instead of setting it to an empty object.\n */\n function resetSelectedConfiguration() {\n store.set('selectedConfiguration', { ...defaultState['selectedConfiguration'] });\n }\n\n store.onChange('action', async action => {\n if (!action) {\n resetSelectedConfiguration();\n }\n });\n\n return {\n ...store,\n resetSelectedConfiguration,\n };\n}\n","class LocalStorage {\n get(key) {\n return new Promise((res) => {\n const record = window.localStorage.getItem(key);\n if (!record) {\n res(null);\n }\n else {\n res(JSON.parse(record));\n }\n });\n }\n async remove(key) {\n window.localStorage.removeItem(key);\n return new Promise((res) => {\n res(null);\n });\n }\n set(key, value) {\n window.localStorage.setItem(key, JSON.stringify(value));\n return new Promise((res) => {\n res(null);\n });\n }\n}\nexport default LocalStorage;\n","import { Buffer } from \"buffer\";\nimport local from \"./localStorage\";\nconst PKCE_KEY = \"pkce\";\nconst GRANT_KEY = \"grant\";\nconst USER_KEY = \"user\";\nexport class Storage {\n Storage = new local();\n constructor(store) {\n if (store) {\n this.Storage = store;\n return;\n }\n }\n setPKCE(value) {\n const encrypt = Buffer.from(value);\n this.Storage.set(PKCE_KEY, encrypt.toString(\"base64\"));\n }\n async getPKCE() {\n try {\n const pkce = await this.Storage.get(PKCE_KEY);\n if (pkce) {\n const b = Buffer.from(pkce, \"base64\");\n return b.toString(\"utf8\");\n }\n }\n catch (error) {\n return null;\n }\n return null;\n }\n removePKCE() {\n this.Storage.remove(PKCE_KEY);\n }\n setGrant(resp, multiAccount = false) {\n const { grant_id } = resp;\n this.Storage.set(`${GRANT_KEY}${multiAccount ? \"-\" + grant_id : \"\"}`, resp);\n }\n removeGrant(id, multiAccount = false) {\n this.Storage.remove(`${GRANT_KEY}${multiAccount ? \"-\" + id : \"\"}`);\n }\n async getGrant(id, multiAccount = false) {\n const grant = await this.Storage.get(`${GRANT_KEY}${multiAccount ? \"-\" + id : \"\"}`);\n if (grant) {\n return grant;\n }\n return null;\n }\n // setUserToken is used to store the IDToken in storage\n async setUserToken(token) {\n const userTokens = await this.getUserTokens();\n // If userTokens exist, check if the token is already in the array\n if (userTokens) {\n const userToken = userTokens.find((t) => t.sub === token.sub);\n // If the token is not in the array, add it\n if (!userToken) {\n const newTokens = [...userTokens, token];\n this.Storage.set(USER_KEY, newTokens);\n }\n else {\n // If the token is in the array, update it\n const newUserTokens = userTokens.map((t) => {\n if (t.sub === token.sub) {\n t = token;\n }\n return t;\n });\n this.Storage.set(USER_KEY, newUserTokens);\n }\n }\n else {\n // If userTokens do not exist, create a new array with the token\n this.Storage.set(USER_KEY, [token]);\n }\n }\n // getUserToken is used to retrieve a specific IDToken from storage\n async getUserToken(id = \"\") {\n const tokens = await this.Storage.get(USER_KEY);\n if (tokens) {\n if (id === \"\") {\n // If no id is passed, return the first token\n return tokens[0];\n }\n // Find the token with the matching sub\n const userToken = tokens.find((token) => token.sub === id);\n return userToken;\n }\n return null;\n }\n // getUserTokens is used to retrieve all IDTokens from storage\n async getUserTokens() {\n const tokens = await this.Storage.get(USER_KEY);\n if (tokens) {\n return tokens;\n }\n return null;\n }\n // removeUserTokens is used to remove all IDTokens from storage\n removeUserTokens() {\n this.Storage.remove(USER_KEY);\n }\n // removeUserToken is used to remove a specific IDToken from storage\n async removeUserToken(id) {\n const userTokens = await this.getUserTokens();\n // Filter out the token with the matching sub\n const tokens = userTokens?.filter((token) => token.sub !== id);\n // If there are tokens left, store them\n this.Storage.set(USER_KEY, tokens);\n }\n async clearSession() {\n const tokens = await this.getUserTokens();\n tokens?.forEach((token) => {\n this.removeGrant(token.sub);\n });\n this.removePKCE();\n this.removeUserTokens();\n }\n}\n","class IndexedDBStorage {\n databaseName = \"identity-db\";\n storeName = \"identity\";\n get(key) {\n const self = this;\n return new Promise((resolve, reject) => {\n self.openDatabase().then(function (db) {\n const transaction = db.transaction(self.storeName, \"readwrite\");\n const objectStore = transaction.objectStore(self.storeName);\n const getRequest = objectStore.get(key);\n getRequest.onsuccess = () => {\n resolve(getRequest.result);\n };\n getRequest.onerror = () => {\n reject(getRequest.error);\n };\n transaction.oncomplete = () => {\n db.close();\n };\n });\n });\n }\n async remove(key) {\n const self = this;\n return new Promise((resolve, reject) => {\n const request = indexedDB.open(this.databaseName);\n request.onupgradeneeded = function (event) {\n const db = event.target.result;\n db.createObjectStore(self.storeName);\n };\n request.onerror = () => {\n reject(request.error);\n };\n request.onsuccess = (event) => {\n const db = event.target.result;\n const transaction = db.transaction(this.storeName, \"readwrite\");\n const objectStore = transaction.objectStore(this.storeName);\n const deleteRequest = objectStore.delete(key);\n deleteRequest.onsuccess = () => {\n resolve(null);\n };\n deleteRequest.onerror = () => {\n reject(deleteRequest.error);\n };\n transaction.oncomplete = () => {\n db.close();\n };\n };\n });\n }\n set(key, value) {\n return new Promise((resolve, reject) => {\n const request = indexedDB.open(this.databaseName);\n request.onerror = () => {\n reject(request.error);\n };\n request.onupgradeneeded = (event) => {\n const db = event.target.result;\n db.createObjectStore(this.storeName);\n };\n request.onsuccess = (event) => {\n const db = event.target.result;\n const transaction = db.transaction(this.storeName, \"readwrite\");\n const objectStore = transaction.objectStore(this.storeName);\n const setRequest = objectStore.put(value, key);\n setRequest.onsuccess = () => {\n resolve(value);\n };\n setRequest.onerror = () => {\n reject(setRequest.error);\n };\n transaction.oncomplete = () => {\n db.close();\n };\n };\n });\n }\n openDatabase() {\n const self = this;\n return new Promise(function (resolve, reject) {\n const request = indexedDB.open(self.databaseName, 2);\n request.onupgradeneeded = function (event) {\n const db = event.target.result;\n db.createObjectStore(self.storeName);\n };\n request.onsuccess = function (event) {\n resolve(event.target.result);\n };\n request.onerror = function (event) {\n reject(event.error);\n };\n });\n }\n}\nexport default IndexedDBStorage;\n","/**\n * [js-sha256]{@link https://github.com/emn178/js-sha256}\n *\n * @version 0.9.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2014-2017\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var ERROR = 'input is invalid type';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA256_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA256_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA256_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA256_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var EXTRA = [-2147483648, 8388608, 32768, 128];\n var SHIFT = [24, 16, 8, 0];\n var K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n ];\n var OUTPUT_TYPES = ['hex', 'array', 'digest', 'arrayBuffer'];\n\n var blocks = [];\n\n if (root.JS_SHA256_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (outputType, is224) {\n return function (message) {\n return new Sha256(is224, true).update(message)[outputType]();\n };\n };\n\n var createMethod = function (is224) {\n var method = createOutputMethod('hex', is224);\n if (NODE_JS) {\n method = nodeWrap(method, is224);\n }\n method.create = function () {\n return new Sha256(is224);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createOutputMethod(type, is224);\n }\n return method;\n };\n\n var nodeWrap = function (method, is224) {\n var crypto = eval(\"require('crypto')\");\n var Buffer = eval(\"require('buffer').Buffer\");\n var algorithm = is224 ? 'sha224' : 'sha256';\n var nodeMethod = function (message) {\n if (typeof message === 'string') {\n return crypto.createHash(algorithm).update(message, 'utf8').digest('hex');\n } else {\n if (message === null || message === undefined) {\n throw new Error(ERROR);\n } else if (message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n }\n }\n if (Array.isArray(message) || ArrayBuffer.isView(message) ||\n message.constructor === Buffer) {\n return crypto.createHash(algorithm).update(new Buffer(message)).digest('hex');\n } else {\n return method(message);\n }\n };\n return nodeMethod;\n };\n\n var createHmacOutputMethod = function (outputType, is224) {\n return function (key, message) {\n return new HmacSha256(key, is224, true).update(message)[outputType]();\n };\n };\n\n var createHmacMethod = function (is224) {\n var method = createHmacOutputMethod('hex', is224);\n method.create = function (key) {\n return new HmacSha256(key, is224);\n };\n method.update = function (key, message) {\n return method.create(key).update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createHmacOutputMethod(type, is224);\n }\n return method;\n };\n\n function Sha256(is224, sharedMemory) {\n if (sharedMemory) {\n blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n this.blocks = blocks;\n } else {\n this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n }\n\n if (is224) {\n this.h0 = 0xc1059ed8;\n this.h1 = 0x367cd507;\n this.h2 = 0x3070dd17;\n this.h3 = 0xf70e5939;\n this.h4 = 0xffc00b31;\n this.h5 = 0x68581511;\n this.h6 = 0x64f98fa7;\n this.h7 = 0xbefa4fa4;\n } else { // 256\n this.h0 = 0x6a09e667;\n this.h1 = 0xbb67ae85;\n this.h2 = 0x3c6ef372;\n this.h3 = 0xa54ff53a;\n this.h4 = 0x510e527f;\n this.h5 = 0x9b05688c;\n this.h6 = 0x1f83d9ab;\n this.h7 = 0x5be0cd19;\n }\n\n this.block = this.start = this.bytes = this.hBytes = 0;\n this.finalized = this.hashed = false;\n this.first = true;\n this.is224 = is224;\n }\n\n Sha256.prototype.update = function (message) {\n if (this.finalized) {\n return;\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n notString = true;\n }\n var code, index = 0, i, length = message.length, blocks = this.blocks;\n\n while (index < length) {\n if (this.hashed) {\n this.hashed = false;\n blocks[0] = this.block;\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n\n if (notString) {\n for (i = this.start; index < length && i < 64; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < 64; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n\n this.lastByteIndex = i;\n this.bytes += i - this.start;\n if (i >= 64) {\n this.block = blocks[16];\n this.start = i - 64;\n this.hash();\n this.hashed = true;\n } else {\n this.start = i;\n }\n }\n if (this.bytes > 4294967295) {\n this.hBytes += this.bytes / 4294967296 << 0;\n this.bytes = this.bytes % 4294967296;\n }\n return this;\n };\n\n Sha256.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex;\n blocks[16] = this.block;\n blocks[i >> 2] |= EXTRA[i & 3];\n this.block = blocks[16];\n if (i >= 56) {\n if (!this.hashed) {\n this.hash();\n }\n blocks[0] = this.block;\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n blocks[14] = this.hBytes << 3 | this.bytes >>> 29;\n blocks[15] = this.bytes << 3;\n this.hash();\n };\n\n Sha256.prototype.hash = function () {\n var a = this.h0, b = this.h1, c = this.h2, d = this.h3, e = this.h4, f = this.h5, g = this.h6,\n h = this.h7, blocks = this.blocks, j, s0, s1, maj, t1, t2, ch, ab, da, cd, bc;\n\n for (j = 16; j < 64; ++j) {\n // rightrotate\n t1 = blocks[j - 15];\n s0 = ((t1 >>> 7) | (t1 << 25)) ^ ((t1 >>> 18) | (t1 << 14)) ^ (t1 >>> 3);\n t1 = blocks[j - 2];\n s1 = ((t1 >>> 17) | (t1 << 15)) ^ ((t1 >>> 19) | (t1 << 13)) ^ (t1 >>> 10);\n blocks[j] = blocks[j - 16] + s0 + blocks[j - 7] + s1 << 0;\n }\n\n bc = b & c;\n for (j = 0; j < 64; j += 4) {\n if (this.first) {\n if (this.is224) {\n ab = 300032;\n t1 = blocks[0] - 1413257819;\n h = t1 - 150054599 << 0;\n d = t1 + 24177077 << 0;\n } else {\n ab = 704751109;\n t1 = blocks[0] - 210244248;\n h = t1 - 1521486534 << 0;\n d = t1 + 143694565 << 0;\n }\n this.first = false;\n } else {\n s0 = ((a >>> 2) | (a << 30)) ^ ((a >>> 13) | (a << 19)) ^ ((a >>> 22) | (a << 10));\n s1 = ((e >>> 6) | (e << 26)) ^ ((e >>> 11) | (e << 21)) ^ ((e >>> 25) | (e << 7));\n ab = a & b;\n maj = ab ^ (a & c) ^ bc;\n ch = (e & f) ^ (~e & g);\n t1 = h + s1 + ch + K[j] + blocks[j];\n t2 = s0 + maj;\n h = d + t1 << 0;\n d = t1 + t2 << 0;\n }\n s0 = ((d >>> 2) | (d << 30)) ^ ((d >>> 13) | (d << 19)) ^ ((d >>> 22) | (d << 10));\n s1 = ((h >>> 6) | (h << 26)) ^ ((h >>> 11) | (h << 21)) ^ ((h >>> 25) | (h << 7));\n da = d & a;\n maj = da ^ (d & b) ^ ab;\n ch = (h & e) ^ (~h & f);\n t1 = g + s1 + ch + K[j + 1] + blocks[j + 1];\n t2 = s0 + maj;\n g = c + t1 << 0;\n c = t1 + t2 << 0;\n s0 = ((c >>> 2) | (c << 30)) ^ ((c >>> 13) | (c << 19)) ^ ((c >>> 22) | (c << 10));\n s1 = ((g >>> 6) | (g << 26)) ^ ((g >>> 11) | (g << 21)) ^ ((g >>> 25) | (g << 7));\n cd = c & d;\n maj = cd ^ (c & a) ^ da;\n ch = (g & h) ^ (~g & e);\n t1 = f + s1 + ch + K[j + 2] + blocks[j + 2];\n t2 = s0 + maj;\n f = b + t1 << 0;\n b = t1 + t2 << 0;\n s0 = ((b >>> 2) | (b << 30)) ^ ((b >>> 13) | (b << 19)) ^ ((b >>> 22) | (b << 10));\n s1 = ((f >>> 6) | (f << 26)) ^ ((f >>> 11) | (f << 21)) ^ ((f >>> 25) | (f << 7));\n bc = b & c;\n maj = bc ^ (b & d) ^ cd;\n ch = (f & g) ^ (~f & h);\n t1 = e + s1 + ch + K[j + 3] + blocks[j + 3];\n t2 = s0 + maj;\n e = a + t1 << 0;\n a = t1 + t2 << 0;\n }\n\n this.h0 = this.h0 + a << 0;\n this.h1 = this.h1 + b << 0;\n this.h2 = this.h2 + c << 0;\n this.h3 = this.h3 + d << 0;\n this.h4 = this.h4 + e << 0;\n this.h5 = this.h5 + f << 0;\n this.h6 = this.h6 + g << 0;\n this.h7 = this.h7 + h << 0;\n };\n\n Sha256.prototype.hex = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,\n h6 = this.h6, h7 = this.h7;\n\n var hex = HEX_CHARS[(h0 >> 28) & 0x0F] + HEX_CHARS[(h0 >> 24) & 0x0F] +\n HEX_CHARS[(h0 >> 20) & 0x0F] + HEX_CHARS[(h0 >> 16) & 0x0F] +\n HEX_CHARS[(h0 >> 12) & 0x0F] + HEX_CHARS[(h0 >> 8) & 0x0F] +\n HEX_CHARS[(h0 >> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] +\n HEX_CHARS[(h1 >> 28) & 0x0F] + HEX_CHARS[(h1 >> 24) & 0x0F] +\n HEX_CHARS[(h1 >> 20) & 0x0F] + HEX_CHARS[(h1 >> 16) & 0x0F] +\n HEX_CHARS[(h1 >> 12) & 0x0F] + HEX_CHARS[(h1 >> 8) & 0x0F] +\n HEX_CHARS[(h1 >> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] +\n HEX_CHARS[(h2 >> 28) & 0x0F] + HEX_CHARS[(h2 >> 24) & 0x0F] +\n HEX_CHARS[(h2 >> 20) & 0x0F] + HEX_CHARS[(h2 >> 16) & 0x0F] +\n HEX_CHARS[(h2 >> 12) & 0x0F] + HEX_CHARS[(h2 >> 8) & 0x0F] +\n HEX_CHARS[(h2 >> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] +\n HEX_CHARS[(h3 >> 28) & 0x0F] + HEX_CHARS[(h3 >> 24) & 0x0F] +\n HEX_CHARS[(h3 >> 20) & 0x0F] + HEX_CHARS[(h3 >> 16) & 0x0F] +\n HEX_CHARS[(h3 >> 12) & 0x0F] + HEX_CHARS[(h3 >> 8) & 0x0F] +\n HEX_CHARS[(h3 >> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] +\n HEX_CHARS[(h4 >> 28) & 0x0F] + HEX_CHARS[(h4 >> 24) & 0x0F] +\n HEX_CHARS[(h4 >> 20) & 0x0F] + HEX_CHARS[(h4 >> 16) & 0x0F] +\n HEX_CHARS[(h4 >> 12) & 0x0F] + HEX_CHARS[(h4 >> 8) & 0x0F] +\n HEX_CHARS[(h4 >> 4) & 0x0F] + HEX_CHARS[h4 & 0x0F] +\n HEX_CHARS[(h5 >> 28) & 0x0F] + HEX_CHARS[(h5 >> 24) & 0x0F] +\n HEX_CHARS[(h5 >> 20) & 0x0F] + HEX_CHARS[(h5 >> 16) & 0x0F] +\n HEX_CHARS[(h5 >> 12) & 0x0F] + HEX_CHARS[(h5 >> 8) & 0x0F] +\n HEX_CHARS[(h5 >> 4) & 0x0F] + HEX_CHARS[h5 & 0x0F] +\n HEX_CHARS[(h6 >> 28) & 0x0F] + HEX_CHARS[(h6 >> 24) & 0x0F] +\n HEX_CHARS[(h6 >> 20) & 0x0F] + HEX_CHARS[(h6 >> 16) & 0x0F] +\n HEX_CHARS[(h6 >> 12) & 0x0F] + HEX_CHARS[(h6 >> 8) & 0x0F] +\n HEX_CHARS[(h6 >> 4) & 0x0F] + HEX_CHARS[h6 & 0x0F];\n if (!this.is224) {\n hex += HEX_CHARS[(h7 >> 28) & 0x0F] + HEX_CHARS[(h7 >> 24) & 0x0F] +\n HEX_CHARS[(h7 >> 20) & 0x0F] + HEX_CHARS[(h7 >> 16) & 0x0F] +\n HEX_CHARS[(h7 >> 12) & 0x0F] + HEX_CHARS[(h7 >> 8) & 0x0F] +\n HEX_CHARS[(h7 >> 4) & 0x0F] + HEX_CHARS[h7 & 0x0F];\n }\n return hex;\n };\n\n Sha256.prototype.toString = Sha256.prototype.hex;\n\n Sha256.prototype.digest = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,\n h6 = this.h6, h7 = this.h7;\n\n var arr = [\n (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, h0 & 0xFF,\n (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, h1 & 0xFF,\n (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, h2 & 0xFF,\n (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, h3 & 0xFF,\n (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, h4 & 0xFF,\n (h5 >> 24) & 0xFF, (h5 >> 16) & 0xFF, (h5 >> 8) & 0xFF, h5 & 0xFF,\n (h6 >> 24) & 0xFF, (h6 >> 16) & 0xFF, (h6 >> 8) & 0xFF, h6 & 0xFF\n ];\n if (!this.is224) {\n arr.push((h7 >> 24) & 0xFF, (h7 >> 16) & 0xFF, (h7 >> 8) & 0xFF, h7 & 0xFF);\n }\n return arr;\n };\n\n Sha256.prototype.array = Sha256.prototype.digest;\n\n Sha256.prototype.arrayBuffer = function () {\n this.finalize();\n\n var buffer = new ArrayBuffer(this.is224 ? 28 : 32);\n var dataView = new DataView(buffer);\n dataView.setUint32(0, this.h0);\n dataView.setUint32(4, this.h1);\n dataView.setUint32(8, this.h2);\n dataView.setUint32(12, this.h3);\n dataView.setUint32(16, this.h4);\n dataView.setUint32(20, this.h5);\n dataView.setUint32(24, this.h6);\n if (!this.is224) {\n dataView.setUint32(28, this.h7);\n }\n return buffer;\n };\n\n function HmacSha256(key, is224, sharedMemory) {\n var i, type = typeof key;\n if (type === 'string') {\n var bytes = [], length = key.length, index = 0, code;\n for (i = 0; i < length; ++i) {\n code = key.charCodeAt(i);\n if (code < 0x80) {\n bytes[index++] = code;\n } else if (code < 0x800) {\n bytes[index++] = (0xc0 | (code >> 6));\n bytes[index++] = (0x80 | (code & 0x3f));\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes[index++] = (0xe0 | (code >> 12));\n bytes[index++] = (0x80 | ((code >> 6) & 0x3f));\n bytes[index++] = (0x80 | (code & 0x3f));\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (key.charCodeAt(++i) & 0x3ff));\n bytes[index++] = (0xf0 | (code >> 18));\n bytes[index++] = (0x80 | ((code >> 12) & 0x3f));\n bytes[index++] = (0x80 | ((code >> 6) & 0x3f));\n bytes[index++] = (0x80 | (code & 0x3f));\n }\n }\n key = bytes;\n } else {\n if (type === 'object') {\n if (key === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && key.constructor === ArrayBuffer) {\n key = new Uint8Array(key);\n } else if (!Array.isArray(key)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(key)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n }\n\n if (key.length > 64) {\n key = (new Sha256(is224, true)).update(key).array();\n }\n\n var oKeyPad = [], iKeyPad = [];\n for (i = 0; i < 64; ++i) {\n var b = key[i] || 0;\n oKeyPad[i] = 0x5c ^ b;\n iKeyPad[i] = 0x36 ^ b;\n }\n\n Sha256.call(this, is224, sharedMemory);\n\n this.update(iKeyPad);\n this.oKeyPad = oKeyPad;\n this.inner = true;\n this.sharedMemory = sharedMemory;\n }\n HmacSha256.prototype = new Sha256();\n\n HmacSha256.prototype.finalize = function () {\n Sha256.prototype.finalize.call(this);\n if (this.inner) {\n this.inner = false;\n var innerHash = this.array();\n Sha256.call(this, this.is224, this.sharedMemory);\n this.update(this.oKeyPad);\n this.update(innerHash);\n Sha256.prototype.finalize.call(this);\n }\n };\n\n var exports = createMethod();\n exports.sha256 = exports;\n exports.sha224 = createMethod(true);\n exports.sha256.hmac = createHmacMethod();\n exports.sha224.hmac = createHmacMethod(true);\n\n if (COMMON_JS) {\n module.exports = exports;\n } else {\n root.sha256 = exports.sha256;\n root.sha224 = exports.sha224;\n if (AMD) {\n define(function () {\n return exports;\n });\n }\n }\n})();\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","export async function getBytes(stream, onChunk) {\r\n const reader = stream.getReader();\r\n let result;\r\n while (!(result = await reader.read()).done) {\r\n onChunk(result.value);\r\n }\r\n}\r\nexport function getLines(onLine) {\r\n let buffer;\r\n let position;\r\n let fieldLength;\r\n let discardTrailingNewline = false;\r\n return function onChunk(arr) {\r\n if (buffer === undefined) {\r\n buffer = arr;\r\n position = 0;\r\n fieldLength = -1;\r\n }\r\n else {\r\n buffer = concat(buffer, arr);\r\n }\r\n const bufLength = buffer.length;\r\n let lineStart = 0;\r\n while (position < bufLength) {\r\n if (discardTrailingNewline) {\r\n if (buffer[position] === 10) {\r\n lineStart = ++position;\r\n }\r\n discardTrailingNewline = false;\r\n }\r\n let lineEnd = -1;\r\n for (; position < bufLength && lineEnd === -1; ++position) {\r\n switch (buffer[position]) {\r\n case 58:\r\n if (fieldLength === -1) {\r\n fieldLength = position - lineStart;\r\n }\r\n break;\r\n case 13:\r\n discardTrailingNewline = true;\r\n case 10:\r\n lineEnd = position;\r\n break;\r\n }\r\n }\r\n if (lineEnd === -1) {\r\n break;\r\n }\r\n onLine(buffer.subarray(lineStart, lineEnd), fieldLength);\r\n lineStart = position;\r\n fieldLength = -1;\r\n }\r\n if (lineStart === bufLength) {\r\n buffer = undefined;\r\n }\r\n else if (lineStart !== 0) {\r\n buffer = buffer.subarray(lineStart);\r\n position -= lineStart;\r\n }\r\n };\r\n}\r\nexport function getMessages(onId, onRetry, onMessage) {\r\n let message = newMessage();\r\n const decoder = new TextDecoder();\r\n return function onLine(line, fieldLength) {\r\n if (line.length === 0) {\r\n onMessage === null || onMessage === void 0 ? void 0 : onMessage(message);\r\n message = newMessage();\r\n }\r\n else if (fieldLength > 0) {\r\n const field = decoder.decode(line.subarray(0, fieldLength));\r\n const valueOffset = fieldLength + (line[fieldLength + 1] === 32 ? 2 : 1);\r\n const value = decoder.decode(line.subarray(valueOffset));\r\n switch (field) {\r\n case 'data':\r\n message.data = message.data\r\n ? message.data + '\\n' + value\r\n : value;\r\n break;\r\n case 'event':\r\n message.event = value;\r\n break;\r\n case 'id':\r\n onId(message.id = value);\r\n break;\r\n case 'retry':\r\n const retry = parseInt(value, 10);\r\n if (!isNaN(retry)) {\r\n onRetry(message.retry = retry);\r\n }\r\n break;\r\n }\r\n }\r\n };\r\n}\r\nfunction concat(a, b) {\r\n const res = new Uint8Array(a.length + b.length);\r\n res.set(a);\r\n res.set(b, a.length);\r\n return res;\r\n}\r\nfunction newMessage() {\r\n return {\r\n data: '',\r\n event: '',\r\n id: '',\r\n retry: undefined,\r\n };\r\n}\r\n//# sourceMappingURL=parse.js.map","var __rest = (this && this.__rest) || function (s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n};\r\nimport { getBytes, getLines, getMessages } from './parse';\r\nexport const EventStreamContentType = 'text/event-stream';\r\nconst DefaultRetryInterval = 1000;\r\nconst LastEventId = 'last-event-id';\r\nexport function fetchEventSource(input, _a) {\r\n var { signal: inputSignal, headers: inputHeaders, onopen: inputOnOpen, onmessage, onclose, onerror, openWhenHidden, fetch: inputFetch } = _a, rest = __rest(_a, [\"signal\", \"headers\", \"onopen\", \"onmessage\", \"onclose\", \"onerror\", \"openWhenHidden\", \"fetch\"]);\r\n return new Promise((resolve, reject) => {\r\n const headers = Object.assign({}, inputHeaders);\r\n if (!headers.accept) {\r\n headers.accept = EventStreamContentType;\r\n }\r\n let curRequestController;\r\n function onVisibilityChange() {\r\n curRequestController.abort();\r\n if (!document.hidden) {\r\n create();\r\n }\r\n }\r\n if (!openWhenHidden) {\r\n document.addEventListener('visibilitychange', onVisibilityChange);\r\n }\r\n let retryInterval = DefaultRetryInterval;\r\n let retryTimer = 0;\r\n function dispose() {\r\n document.removeEventListener('visibilitychange', onVisibilityChange);\r\n window.clearTimeout(retryTimer);\r\n curRequestController.abort();\r\n }\r\n inputSignal === null || inputSignal === void 0 ? void 0 : inputSignal.addEventListener('abort', () => {\r\n dispose();\r\n resolve();\r\n });\r\n const fetch = inputFetch !== null && inputFetch !== void 0 ? inputFetch : window.fetch;\r\n const onopen = inputOnOpen !== null && inputOnOpen !== void 0 ? inputOnOpen : defaultOnOpen;\r\n async function create() {\r\n var _a;\r\n curRequestController = new AbortController();\r\n try {\r\n const response = await fetch(input, Object.assign(Object.assign({}, rest), { headers, signal: curRequestController.signal }));\r\n await onopen(response);\r\n await getBytes(response.body, getLines(getMessages(id => {\r\n if (id) {\r\n headers[LastEventId] = id;\r\n }\r\n else {\r\n delete headers[LastEventId];\r\n }\r\n }, retry => {\r\n retryInterval = retry;\r\n }, onmessage)));\r\n onclose === null || onclose === void 0 ? void 0 : onclose();\r\n dispose();\r\n resolve();\r\n }\r\n catch (err) {\r\n if (!curRequestController.signal.aborted) {\r\n try {\r\n const interval = (_a = onerror === null || onerror === void 0 ? void 0 : onerror(err)) !== null && _a !== void 0 ? _a : retryInterval;\r\n window.clearTimeout(retryTimer);\r\n retryTimer = window.setTimeout(create, interval);\r\n }\r\n catch (innerErr) {\r\n dispose();\r\n reject(innerErr);\r\n }\r\n }\r\n }\r\n }\r\n create();\r\n });\r\n}\r\nfunction defaultOnOpen(response) {\r\n const contentType = response.headers.get('content-type');\r\n if (!(contentType === null || contentType === void 0 ? void 0 : contentType.startsWith(EventStreamContentType))) {\r\n throw new Error(`Expected content-type to be ${EventStreamContentType}, Actual: ${contentType}`);\r\n }\r\n}\r\n//# sourceMappingURL=fetch.js.map","export function Base64EncodeUrl(str) {\n return str.replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=+$/, \"\");\n}\nexport function Base64DecodeUrl(str) {\n str = (str + \"===\").slice(0, str.length + (str.length % 4));\n return str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n}\nexport function getTimestamp() {\n return Math.floor(Date.now() / 1000);\n}\nexport async function sha256(message) {\n // encode as UTF-8\n const msgBuffer = new TextEncoder().encode(message);\n // hash the message\n const hashBuffer = await crypto.subtle.digest(\"SHA-256\", msgBuffer);\n // convert ArrayBuffer to Array\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n // convert bytes to hex string\n const hashHex = hashArray\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n return hashHex;\n}\n","function e(e){this.message=e}e.prototype=new Error,e.prototype.name=\"InvalidCharacterError\";var r=\"undefined\"!=typeof window&&window.atob&&window.atob.bind(window)||function(r){var t=String(r).replace(/=+$/,\"\");if(t.length%4==1)throw new e(\"'atob' failed: The string to be decoded is not correctly encoded.\");for(var n,o,a=0,i=0,c=\"\";o=t.charAt(i++);~o&&(n=a%4?64*n+o:o,a++%4)?c+=String.fromCharCode(255&n>>(-2*a&6)):0)o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(o);return c};function t(e){var t=e.replace(/-/g,\"+\").replace(/_/g,\"/\");switch(t.length%4){case 0:break;case 2:t+=\"==\";break;case 3:t+=\"=\";break;default:throw\"Illegal base64url string!\"}try{return function(e){return decodeURIComponent(r(e).replace(/(.)/g,(function(e,r){var t=r.charCodeAt(0).toString(16).toUpperCase();return t.length<2&&(t=\"0\"+t),\"%\"+t})))}(t)}catch(e){return r(t)}}function n(e){this.message=e}function o(e,r){if(\"string\"!=typeof e)throw new n(\"Invalid token specified\");var o=!0===(r=r||{}).header?0:1;try{return JSON.parse(t(e.split(\".\")[o]))}catch(e){throw new n(\"Invalid token specified: \"+e.message)}}n.prototype=new Error,n.prototype.name=\"InvalidTokenError\";export default o;export{n as InvalidTokenError};\n//# sourceMappingURL=jwt-decode.esm.js.map\n","import { Storage } from \"./client/store\";\nimport IndexedDBStorage from \"./client/indexedDB\";\nimport { sha256 } from \"js-sha256\";\nimport { Buffer } from \"buffer\";\nimport { v4 as uuid } from \"uuid\";\nimport { fetchEventSource, } from \"@microsoft/fetch-event-source\";\nimport { Base64EncodeUrl, getTimestamp } from \"./helpers\";\nimport jwtDecode from \"jwt-decode\";\nexport class NylasSessions {\n clientId;\n redirectUri;\n accessType = \"online\";\n domain = \"http://api.nylas.com\";\n versioned = false;\n Storage;\n hosted = false;\n multiAccount = false;\n loginId = \"\";\n constructor(config) {\n this.clientId = config.clientId;\n this.redirectUri = config.redirectUri;\n if (config.domain) {\n this.domain = config.domain;\n const versionedPart = this.domain.substring(this.domain.length - 3);\n if (versionedPart.includes(\"/v\")) {\n this.versioned = true;\n }\n }\n if (config.multiAccount) {\n this.multiAccount = config.multiAccount;\n }\n if (config.sw) {\n const storage = new IndexedDBStorage();\n this.Storage = new Storage(storage);\n }\n else {\n this.Storage = new Storage();\n }\n if (config.accessType) {\n this.accessType = config.accessType;\n }\n if (config.loginId) {\n this.loginId = config.loginId;\n }\n if (config.hosted) {\n this.hosted = config.hosted;\n }\n if (config.disableInitCodeExchange !== true) {\n this.codeExchange(null);\n }\n // check();\n // registerServiceWorker();\n }\n // Validates access token\n async validateAccessToken(grant_id = \"\") {\n const grant = await this.Storage.getGrant(grant_id, this.multiAccount);\n if (!grant) {\n return false;\n }\n const { access_token } = grant;\n try {\n const response = await fetch(`${this.domain}/connect/tokeninfo?access_token=${access_token}`, {\n method: \"GET\",\n });\n const responseData = await response.json();\n if (!responseData.data) {\n return false;\n }\n return true;\n }\n catch (error) {\n return false;\n }\n }\n // Validates id token\n async validateIDToken(grant_id = \"\") {\n const grant = await this.Storage.getGrant(grant_id, this.multiAccount);\n if (!grant) {\n return false;\n }\n const { id_token } = grant;\n try {\n const response = await fetch(`${this.domain}/connect/tokeninfo?id_token=${id_token}`, {\n method: \"GET\",\n });\n if (response.status !== 200) {\n return false;\n }\n const responseData = await response.json();\n if (!responseData.data) {\n return false;\n }\n return true;\n }\n catch (error) {\n return false;\n }\n }\n // Gets domain of UAS\n getDomain() {\n return this.domain;\n }\n // Gets auth link\n async auth(config) {\n if (this.hosted &&\n (this.domain === window.location.origin ||\n (this.versioned && this.domain.includes(window.location.origin)))) {\n await this.hostedSetCodeChallenge();\n }\n const url = await this.generateAuthURL(config);\n if (config.popup) {\n this.popUp(url);\n return;\n }\n return url;\n }\n // Generates auth URL\n async generateAuthURL(config) {\n const codeChallenge = await this.getCodeChallege();\n let url = `${this.domain}/connect/auth?client_id=${this.clientId}&redirect_uri=${this.redirectUri}&access_type=${this.accessType}&response_type=code`;\n if (codeChallenge) {\n url += `&code_challenge=${codeChallenge}&code_challenge_method=S256&options=rotate_refresh_token`;\n }\n if (config.provider) {\n url += `&provider=${config.provider}`;\n }\n if (config.loginHint) {\n url += `&login_hint=${config.loginHint}`;\n if (config.includeGrantScopes) {\n url += `&include_grant_scopes=${config.includeGrantScopes}`;\n }\n }\n if (config.scope) {\n url += `&scope=${config.scope.join(\" \")}`;\n }\n if (config.prompt) {\n url += `&prompt=${config.prompt}`;\n }\n if (config.metadata) {\n url += `&metadata=${config.metadata}`;\n }\n if (config.state || this.loginId) {\n url += `&state=${this.loginId ? this.loginId : config.state}`;\n }\n return url;\n }\n // Generates auth URL\n async generateReauthURL(grant_id, scopes) {\n if (!grant_id) {\n throw new Error(\"Grant ID is required\");\n }\n const userToken = await this.Storage.getUserToken(grant_id);\n const codeChallenge = await this.getCodeChallege();\n let url = `${this.domain}/connect/auth?client_id=${this.clientId}&redirect_uri=${this.redirectUri}&access_type=${this.accessType}&response_type=code`;\n if (codeChallenge) {\n url += `&code_challenge=${codeChallenge}&code_challenge_method=S256&options=rotate_refresh_token`;\n }\n if (userToken?.provider) {\n url += `&provider=${userToken.provider}`;\n }\n if (userToken?.email) {\n url += `&login_hint=${userToken.email}`;\n }\n if (scopes) {\n url += `&scope=${scopes.join(\" \")}`;\n }\n return url;\n }\n // Generates UUID code challenge\n async generateCodeChallenge() {\n const code_verifier = await this.Storage.getPKCE();\n if (code_verifier) {\n return;\n }\n const codeChallenge = uuid();\n this.Storage.setPKCE(codeChallenge);\n return;\n }\n // Gets code challenge from URL query params\n async hostedSetCodeChallenge() {\n if (!this.hosted) {\n throw console.error(\"Method only used with hosted flag enabled\");\n }\n const params = new URLSearchParams(window.location.search);\n const codeChallenge = params.get(\"code_challenge\");\n if (!codeChallenge) {\n const code_verifier = await this.Storage.getPKCE();\n if (code_verifier) {\n return;\n }\n console.warn(\"Code challenge is recomended\");\n return;\n }\n this.Storage.setPKCE(codeChallenge);\n }\n // Gets code challenge from store\n async getCodeChallege() {\n if (this.hosted &&\n (this.domain === window.location.origin ||\n (this.versioned && this.domain.includes(window.location.origin)))) {\n const params = new URLSearchParams(window.location.search);\n const codeChallenge = params.get(\"code_challenge\");\n if (!codeChallenge) {\n console.warn(\"Code challenge is recomended\");\n return \"\";\n }\n return codeChallenge;\n }\n const code_verifier = await this.Storage.getPKCE();\n if (code_verifier) {\n const codeChallengeHashed = sha256(code_verifier);\n let codeChallengeEncrypted = Buffer.from(codeChallengeHashed).toString(\"base64\");\n codeChallengeEncrypted = Base64EncodeUrl(codeChallengeEncrypted);\n return codeChallengeEncrypted;\n }\n return \"\";\n }\n // checks if user is logged in\n async isLoggedIn() {\n // if hosted identity isLoggedIn always returns false\n if (this.hosted &&\n (this.domain === window.location.origin ||\n (this.versioned && this.domain.includes(window.location.origin)))) {\n return false;\n }\n const tokens = await this.Storage.getUserTokens();\n if (tokens && tokens.length > 0) {\n if (this.multiAccount) {\n await this.generateCodeChallenge();\n }\n return true;\n }\n await this.generateCodeChallenge();\n return false;\n }\n // Checks if user is multi account\n isMultiAccount() {\n return this.multiAccount;\n }\n // Logs user out\n async logout() {\n const profile = await this.getProfile();\n await this.Storage.clearSession();\n const payload = { detail: profile };\n window.dispatchEvent(new CustomEvent(\"onLogoutSuccess\", payload));\n }\n // Gets profile info from ID token\n async getProfile(grant_id = \"\") {\n let tok;\n if (grant_id) {\n tok = await this.Storage.getUserToken(grant_id);\n }\n else {\n tok = await this.Storage.getUserToken();\n }\n if (tok) {\n return tok;\n }\n return null;\n }\n // Gets profile info from ID tokens\n async getProfiles() {\n const tok = await this.Storage.getUserTokens();\n if (tok) {\n return tok;\n }\n return null;\n }\n // Remove a specific profile\n async removeProfile(id) {\n await this.Storage.removeUserToken(id);\n await this.Storage.removeGrant(id);\n return null;\n }\n // IMAP authentication\n async authIMAP(data) {\n const code_challenge = await this.getCodeChallege();\n const payload = {\n imap_username: data.imap_username,\n imap_password: data.imap_password,\n imap_host: data.imap_host,\n imap_port: data.imap_port,\n type: data.type,\n smtp_host: data.smtp_host,\n smtp_port: data.smtp_port,\n provider: data.provider,\n redirect_uri: this.redirectUri,\n state: data.state,\n public_application_id: this.clientId,\n access_type: this.accessType,\n };\n if (this.loginId) {\n payload.id = this.loginId;\n }\n if (data.smtp_username && data.smtp_password) {\n payload.smtp_username = data.smtp_username;\n payload.smtp_password = data.smtp_password;\n }\n if (code_challenge != \"\") {\n payload.code_challenge = code_challenge;\n payload.code_challenge_method = \"S256\";\n }\n const response = await fetch(`${this.domain}/connect/login/imap`, {\n method: \"POST\",\n headers: new Headers({ \"content-type\": \"application/json\" }),\n body: JSON.stringify(payload),\n });\n const responseData = await response.json();\n return responseData;\n }\n // EWS authentication\n async authEWS(data) {\n const code_challenge = await this.getCodeChallege();\n const payload = {\n ...data,\n provider: \"ews\",\n redirect_uri: this.redirectUri,\n public_application_id: this.clientId,\n access_type: this.accessType,\n };\n if (this.loginId) {\n payload.id = this.loginId;\n }\n if (code_challenge != \"\") {\n payload.code_challenge = code_challenge;\n payload.code_challenge_method = \"S256\";\n }\n const response = await fetch(`${this.domain}/connect/login/ews`, {\n method: \"POST\",\n headers: new Headers({ \"content-type\": \"application/json\" }),\n body: JSON.stringify(payload),\n });\n const responseData = await response.json();\n return responseData;\n }\n // Detects email\n async detectEmail(email) {\n const response = await fetch(`${this.versioned ? this.domain : this.domain + \"/connect\"}/providers/detect?client_id=${this.clientId}&email=${email}`, {\n method: \"POST\",\n headers: new Headers({ \"content-type\": \"application/json\" }),\n });\n const responseData = await response.json();\n return responseData;\n }\n // Gets app info from UAS\n async applicationInfo() {\n const response = await fetch(`${this.versioned ? this.domain : this.domain + \"/connect\"}/applications?client_id=${this.clientId}`, {\n method: \"GET\",\n headers: new Headers({ \"content-type\": \"application/json\" }),\n });\n const responseData = await response.json();\n return responseData.data;\n }\n // Gets providers form UAS\n async getAvailableProviders() {\n const response = await fetch(`${this.domain}/connect/providers/find?client_id=${this.clientId}`, {\n method: \"GET\",\n headers: new Headers({ \"content-type\": \"application/json\" }),\n });\n if (response) {\n const responseData = await response.json();\n const providers = responseData.data;\n return providers;\n }\n return null;\n }\n // EVENT HOOKS\n onLoginSuccess(callback) {\n window.addEventListener(\"onLoginSuccess\", (e) => callback(e));\n }\n onLogoutSuccess(callback) {\n window.addEventListener(\"onLogoutSuccess\", (e) => callback(e));\n }\n onLoginFail(callback) {\n window.addEventListener(\"onLoginFail\", (e) => callback(e));\n }\n onTokenRefreshSuccess(callback) {\n window.addEventListener(\"onTokenRefreshSuccess\", (e) => callback(e));\n }\n onTokenRefreshFail(callback) {\n window.addEventListener(\"onTokenRefreshFail\", (e) => callback(e));\n }\n onSessionExpired(callback) {\n window.addEventListener(\"onSessionExpired\", (e) => callback(e));\n }\n // Exchanges code for ID token and refresh and access tokens\n async codeExchange(search) {\n let params = new URLSearchParams(window.location.search);\n if (search) {\n params = new URLSearchParams(search);\n }\n const code = params.get(\"code\");\n const state = params.get(\"state\");\n const error = params.get(\"error\");\n const error_description = params.get(\"error_description\");\n const error_code = params.get(\"error_code\");\n if (error && error_description && error_code) {\n const payload = {\n detail: { error, error_description, error_code },\n };\n window.dispatchEvent(new CustomEvent(\"onLoginFail\", payload));\n window.history.pushState({}, document.title, window.location.pathname);\n return false;\n }\n if (!code) {\n console.warn(\"No code found\");\n return false;\n }\n // If popup window stop internal code exchange\n if (window.opener && window.name === \"uas-popup\") {\n console.warn(\"Popup window detected\");\n return false;\n }\n // Get PKCE code_challenge from local storage\n const code_verifier = await this.Storage.getPKCE();\n if (!code_verifier) {\n console.warn(\"No code verifier found\");\n return false;\n }\n // Prepare request\n try {\n const payload = {\n client_id: this.clientId,\n redirect_uri: this.redirectUri,\n code: code,\n grant_type: \"authorization_code\",\n code_verifier: code_verifier,\n };\n const response = await fetch(`${this.domain}/connect/token`, {\n method: \"POST\",\n headers: new Headers({ \"content-type\": \"application/json\" }),\n body: JSON.stringify(payload),\n });\n const responseData = await response.json();\n // Parse response\n // Store ID token\n if (responseData) {\n if (responseData.error) {\n const payload = { detail: responseData };\n window.dispatchEvent(new CustomEvent(\"onLoginFail\", payload));\n return true;\n }\n const exchangeResponse = await this.handleCodeExchangeResponse(responseData);\n if (!exchangeResponse.valid) {\n const payload = { detail: exchangeResponse.data };\n window.dispatchEvent(new CustomEvent(\"onLoginFail\", payload));\n return true;\n }\n else {\n if (state) {\n exchangeResponse.data.state = state;\n }\n const payload = { detail: exchangeResponse.data };\n window.dispatchEvent(new CustomEvent(\"onLoginSuccess\", payload));\n window.history.pushState({}, document.title, window.location.pathname);\n }\n }\n this.Storage.removePKCE();\n return true;\n // Remove PKCE code_challenge from local storage\n }\n catch (error) {\n const payload = { detail: error };\n window.dispatchEvent(new CustomEvent(\"onLoginFail\", payload));\n window.history.pushState({}, document.title, window.location.pathname);\n return false;\n }\n }\n // Token Exchange for session maintenece\n async tokenExchange(grant_id = \"\") {\n const grant = await this.Storage.getGrant(grant_id, this.multiAccount);\n if (!grant) {\n return false;\n }\n const refresh_token = grant.refresh_token;\n try {\n const payload = {\n client_id: this.clientId,\n redirect_uri: this.redirectUri,\n refresh_token,\n grant_type: \"refresh_token\",\n };\n const response = await fetch(`${this.domain}/connect/token`, {\n method: \"POST\",\n headers: new Headers({ \"content-type\": \"application/json\" }),\n body: JSON.stringify(payload),\n });\n const responseData = await response.json();\n // Parse response\n // Store ID token\n if (responseData) {\n if (responseData.error) {\n const payload = { detail: responseData };\n window.dispatchEvent(new CustomEvent(\"onTokenRefreshFail\", payload));\n return true;\n }\n const now = getTimestamp();\n responseData.expires_in = now + responseData.expires_in;\n this.Storage.setGrant(responseData, this.multiAccount);\n const isValidToken = await this.validateIDToken(grant_id);\n if (!isValidToken) {\n const payload = { detail: responseData };\n window.dispatchEvent(new CustomEvent(\"onTokenRefreshFail\", payload));\n return true;\n }\n const payload = { detail: responseData };\n window.dispatchEvent(new CustomEvent(\"onTokenRefreshSuccess\", payload));\n return true;\n }\n // Remove PKCE code_challenge from local storage\n this.Storage.removePKCE();\n }\n catch (error) {\n const payload = { detail: error };\n window.dispatchEvent(new CustomEvent(\"onTokenRefreshFail\", payload));\n return false;\n }\n }\n // Handles the response of code exchange\n async handleCodeExchangeResponse(responseData) {\n const isValid = true;\n if (responseData.error) {\n return {\n data: responseData,\n valid: false,\n };\n }\n const now = getTimestamp();\n responseData.expires_in = now + responseData.expires_in;\n this.Storage.setGrant(responseData, this.multiAccount);\n const user = jwtDecode(responseData.id_token);\n user.status = \"authenticated\";\n this.Storage.setUserToken(user);\n const isValidToken = await this.validateIDToken(user.sub);\n if (!isValidToken) {\n return {\n data: responseData,\n valid: false,\n };\n }\n return {\n data: responseData,\n valid: isValid,\n };\n }\n // Regulates POPUP behaivior\n async popUp(url) {\n const width = 500;\n const height = 600;\n const left = window.screenX + (window.outerWidth - width) / 2;\n const top = window.screenY + (window.outerHeight - height) / 2.5;\n const title = `uas-popup`;\n const popupURL = url;\n const externalPopup = window.open(popupURL, title, `width=${width},height=${height},left=${left},top=${top}`);\n if (!externalPopup) {\n return;\n }\n const timer = setInterval(async () => {\n if (externalPopup.closed) {\n const payload = {\n detail: { error_description: \"OAuth provider window closed\" },\n };\n window.dispatchEvent(new CustomEvent(\"onLoginFail\", payload));\n timer && clearInterval(timer);\n return;\n }\n try {\n const currentUrl = externalPopup.location.href.split(\"?\");\n if (!currentUrl[0]) {\n return;\n }\n const search = externalPopup.location.search;\n externalPopup.history.pushState({}, document.title, window.location.pathname);\n if (currentUrl[0] === this.redirectUri && currentUrl.length > 1) {\n const success = await this.codeExchange(search);\n externalPopup.close();\n if (success) {\n location.reload();\n }\n timer && clearInterval(timer);\n return;\n }\n }\n catch (error) {\n return;\n }\n }, 1000);\n }\n // Returns access token\n async getAccessToken(grant_id = \"\") {\n const now = getTimestamp();\n const grantResponse = await this.Storage.getGrant(grant_id, this.multiAccount);\n if (!grantResponse) {\n return null;\n }\n const { access_token, expires_in } = grantResponse;\n const token = access_token;\n if (token) {\n if (expires_in && expires_in > getTimestamp()) {\n const timeLeft = expires_in - now;\n // If more then 30 secounds remain return access token\n if (timeLeft > 30) {\n return token;\n }\n }\n }\n await this.tokenExchange(grant_id);\n const grant = await this.Storage.getGrant(grant_id, this.multiAccount);\n return grant.access_token;\n }\n async sse(url, request) {\n const headers = request.headers || {};\n const grant_id = headers[\"Grant-ID\"];\n let token = \"\";\n if (this.multiAccount) {\n if (!grant_id) {\n this.logout();\n throw new Error(\"Grant ID is required for multi account calls\");\n }\n token = await this.getAccessToken(grant_id);\n }\n else {\n token = await this.getAccessToken();\n }\n delete headers[\"Grant-ID\"];\n headers[\"Authorization\"] = `Bearer ${token}`;\n if (!headers[\"content-type\"]) {\n headers[\"content-type\"] = \"application/json\";\n }\n return fetchEventSource(`${this.domain}/${url}`, {\n ...request,\n headers,\n });\n }\n // Used to call Nylas API endpoints\n async fetch(url, request, parseJSON = true, domain) {\n let token = \"\";\n let profileCount = 1;\n if (this.multiAccount) {\n if (!request.grant_id) {\n this.logout();\n throw new Error(\"Grant ID is required for multi account calls\");\n }\n const profiles = await this.getProfiles();\n profileCount = profiles ? profiles.length : 1;\n token = await this.getAccessToken(request.grant_id);\n }\n else {\n token = await this.getAccessToken();\n }\n if (!token) {\n throw new Error(\"Access token not found\");\n }\n let headers = request.headers;\n if (!Headers.prototype.isPrototypeOf(headers)) {\n headers = new Headers({\n Authorization: `Bearer ${token}`,\n \"content-type\": \"application/json\",\n });\n }\n else {\n headers.append(\"Authorization\", `Bearer ${token}`);\n if (!headers.has(\"content-type\")) {\n headers.append(\"content-type\", \"application/json\");\n }\n }\n try {\n if (request?.body) {\n request.body = JSON.stringify(request?.body);\n }\n const response = await fetch(`${domain || this.domain}/${url}`, {\n ...request,\n headers,\n });\n if (!parseJSON) {\n return response;\n }\n const responseData = await response?.json();\n const isAuthenticated = await this.isAuthenticatedResponse(response.status, responseData);\n if (!isAuthenticated) {\n if (profileCount > 1) {\n const user = await this.getProfile(request.grant_id);\n if (user) {\n user.status = \"unauthorized\";\n await this.Storage.setUserToken(user);\n const payload = {\n detail: { user },\n };\n window.dispatchEvent(new CustomEvent(\"onSessionExpired\", payload));\n }\n }\n else {\n const user = await this.Storage.getUserToken();\n const payload = {\n detail: { user },\n };\n window.dispatchEvent(new CustomEvent(\"onSessionExpired\", payload));\n }\n this.logout();\n return;\n }\n return responseData;\n }\n catch (e) {\n throw e;\n }\n }\n async fetchRequest(path, method, body, parseJSON = true, domain, request) {\n const isLoggedIn = await this.isLoggedIn();\n const url = new URL(path, domain ?? this.domain);\n const headers = new Headers();\n headers.append(\"Accept\", \"application/json\");\n headers.append(\"Content-Type\", \"application/json\");\n headers.append(\"User-Agent\", \"nylas-identity\");\n if (isLoggedIn) {\n const accessToken = await this.getAccessToken();\n headers.append(\"Authorization\", `Bearer ${accessToken}`);\n }\n const response = await fetch(url.toString(), {\n method: method || \"GET\",\n headers,\n mode: \"cors\",\n referrer: location.origin,\n body: body ? JSON.stringify(body) : undefined,\n ...(request || {}),\n });\n // If we don't want to parse the response as JSON, return the raw response\n if (!parseJSON) {\n return response.body;\n }\n const json = await response.json();\n return json;\n }\n // Checks if the response is not 401\n async isAuthenticatedResponse(status, responseData) {\n if (status == 401 &&\n responseData?.error?.type == \"token.unauthorized_access\") {\n return false;\n }\n return true;\n }\n addAPIKey(grant_id, email, key) {\n this.Storage.setUserToken({\n aud: \"https://api-staging.us.nylas.com/\",\n exp: 2000000000,\n email_verified: true,\n iat: getTimestamp(),\n iss: \"\",\n email,\n provider: \"virtual-calendar\",\n status: \"authenticated\",\n name: email,\n sub: grant_id,\n });\n this.Storage.setGrant({\n grant_id,\n access_token: key,\n expires_in: 2000000000,\n }, this.multiAccount);\n }\n}\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];c.children=f}if(a&&a.defaultProps)for(d in g=a.defaultProps,g)void 0===c[d]&&(c[d]=g[d]);return{$$typeof:l,type:a,key:k,ref:h,props:c,_owner:K.current}}\nfunction N(a,b){return{$$typeof:l,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===l}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g;function Q(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction R(a,b,e,d,c){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case l:case n:h=!0}}if(h)return h=a,c=c(h),a=\"\"===d?\".\"+Q(h,0):d,I(c)?(e=\"\",null!=a&&(e=a.replace(P,\"$&/\")+\"/\"),R(c,b,e,\"\",function(a){return a})):null!=c&&(O(c)&&(c=N(c,e+(!c.key||h&&h.key===c.key?\"\":(\"\"+c.key).replace(P,\"$&/\")+\"/\")+a)),b.push(c)),1;h=0;d=\"\"===d?\".\":d+\":\";if(I(a))for(var g=0;g<a.length;g++){k=\na[g];var f=d+Q(k,g);h+=R(k,b,e,f,c)}else if(f=A(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=d+Q(k,g++),h+=R(k,b,e,f,c);else if(\"object\"===k)throw b=String(a),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b)+\"). If you meant to render a collection of children, use an array instead.\");return h}\nfunction S(a,b,e){if(null==a)return a;var d=[],c=0;R(a,d,\"\",\"\",function(a){return b.call(e,a,c++)});return d}function T(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b});-1===a._status&&(a._status=0,a._result=b)}if(1===a._status)return a._result.default;throw a._result;}\nvar U={current:null},V={transition:null},W={ReactCurrentDispatcher:U,ReactCurrentBatchConfig:V,ReactCurrentOwner:K};exports.Children={map:S,forEach:function(a,b,e){S(a,function(){b.apply(this,arguments)},e)},count:function(a){var b=0;S(a,function(){b++});return b},toArray:function(a){return S(a,function(a){return a})||[]},only:function(a){if(!O(a))throw Error(\"React.Children.only expected to receive a single React element child.\");return a}};exports.Component=E;exports.Fragment=p;\nexports.Profiler=r;exports.PureComponent=G;exports.StrictMode=q;exports.Suspense=w;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W;\nexports.cloneElement=function(a,b,e){if(null===a||void 0===a)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+a+\".\");var d=C({},a.props),c=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=K.current);void 0!==b.key&&(c=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)J.call(b,f)&&!L.hasOwnProperty(f)&&(d[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)d.children=e;else if(1<f){g=Array(f);\nfor(var m=0;m<f;m++)g[m]=arguments[m+2];d.children=g}return{$$typeof:l,type:a.type,key:c,ref:k,props:d,_owner:h}};exports.createContext=function(a){a={$$typeof:u,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:t,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};\nexports.forwardRef=function(a){return{$$typeof:v,render:a}};exports.isValidElement=O;exports.lazy=function(a){return{$$typeof:y,_payload:{_status:-1,_result:a},_init:T}};exports.memo=function(a,b){return{$$typeof:x,type:a,compare:void 0===b?null:b}};exports.startTransition=function(a){var b=V.transition;V.transition={};try{a()}finally{V.transition=b}};exports.unstable_act=function(){throw Error(\"act(...) is not supported in production builds of React.\");};\nexports.useCallback=function(a,b){return U.current.useCallback(a,b)};exports.useContext=function(a){return U.current.useContext(a)};exports.useDebugValue=function(){};exports.useDeferredValue=function(a){return U.current.useDeferredValue(a)};exports.useEffect=function(a,b){return U.current.useEffect(a,b)};exports.useId=function(){return U.current.useId()};exports.useImperativeHandle=function(a,b,e){return U.current.useImperativeHandle(a,b,e)};\nexports.useInsertionEffect=function(a,b){return U.current.useInsertionEffect(a,b)};exports.useLayoutEffect=function(a,b){return U.current.useLayoutEffect(a,b)};exports.useMemo=function(a,b){return U.current.useMemo(a,b)};exports.useReducer=function(a,b,e){return U.current.useReducer(a,b,e)};exports.useRef=function(a){return U.current.useRef(a)};exports.useState=function(a){return U.current.useState(a)};exports.useSyncExternalStore=function(a,b,e){return U.current.useSyncExternalStore(a,b,e)};\nexports.useTransition=function(){return U.current.useTransition()};exports.version=\"18.2.0\";\n","import { h } from '@stencil/core';\n\nexport type LoginRequiredProps = {\n authenticationUrl: (provider?: string) => Promise<string>;\n};\n\nexport const LoginRequired = ({ authenticationUrl }: LoginRequiredProps) => (\n <div class={'login-required'} part=\"nse__login-required login-component\">\n <div class={'card'} part=\"nse__login-required-card\">\n <p part=\"nse__login-required-text\">Log into your account to use the Scheduler Editor.</p>\n\n <button\n class=\"google-button\"\n part=\"nse__login-required-google-button\"\n onClick={async event => {\n event.preventDefault();\n const authUrl = await authenticationUrl('google');\n if (authUrl) {\n window.location.href = authUrl;\n } else {\n console.error(`[nylas-scheduler-editor] Unable to get authentication URL.`);\n }\n }}\n >\n <span class=\"icon\">\n <google-logo-icon width=\"15\" height=\"15\" />\n </span>\n Continue with Google\n </button>\n\n <button\n class=\"microsoft-button\"\n part=\"nse__login-required-microsoft-button\"\n onClick={async event => {\n event.preventDefault();\n const authUrl = await authenticationUrl('microsoft');\n if (authUrl) {\n window.location.href = authUrl;\n } else {\n console.error(`[nylas-scheduler-editor] Unable to get authentication URL.`);\n }\n }}\n >\n <span class=\"icon\">\n <microsoft-logo-icon width=\"15\" height=\"15\" />\n </span>\n Continue with Microsoft\n </button>\n\n <button\n class=\"other-provider-button\"\n part=\"nse__login-required-other-provider-button\"\n onClick={async event => {\n event.preventDefault();\n const authUrl = await authenticationUrl();\n if (authUrl) {\n window.location.href = authUrl;\n } else {\n console.error(`[nylas-scheduler-editor] Unable to get authentication URL.`);\n }\n }}\n >\n View all providers <chevron-icon width=\"17\" height=\"17\" />\n </button>\n\n <small class=\"disclaimer-text\" part=\"nse__login-required-disclaimer-text\">\n * You will be redirected to authenticate your account.\n </small>\n </div>\n </div>\n);\n","import { Fragment, h } from '@stencil/core';\nimport { Configuration } from '@nylas/core';\nimport { CONFIGURATION_EVENT_TYPE } from '@/common/constants';\n\ntype RecursivePartial<T> = {\n [P in keyof T]?: T[P] extends (infer U)[] ? RecursivePartial<U>[] : T[P] extends object | undefined ? RecursivePartial<T[P]> : T[P];\n};\n\n/**\n * The props for the Express Flow component.\n */\nexport type ExpressFlowProps = {\n currentUser: any;\n calendars: any[];\n selectedConfiguration: RecursivePartial<Configuration>;\n selectedEventType: CONFIGURATION_EVENT_TYPE;\n};\n\n/**\n * The Express Flow component.\n */\nexport default function ExpressFlow({ currentUser, calendars, selectedEventType }: ExpressFlowProps) {\n const defaultCalendarOption = calendars?.find(c => c.is_primary) || calendars?.[0];\n switch (selectedEventType) {\n case CONFIGURATION_EVENT_TYPE.one_on_one:\n case CONFIGURATION_EVENT_TYPE.max_availability:\n case CONFIGURATION_EVENT_TYPE.max_fairness: {\n return (\n <Fragment>\n <nylas-event-info>\n <div slot=\"inputs\">\n <nylas-event-title />\n <nylas-event-duration />\n <nylas-event-location userProvider={currentUser.provider} />\n </div>\n </nylas-event-info>\n <nylas-booking-calendar-picker\n exportparts=\"nbcp, nbcp__header, nbcp__dropdown, nbcp__dropdown-button, nbcp__dropdown-content\"\n expressFlow={true}\n calendars={calendars}\n currentUser={currentUser}\n defaultBookingCalendar={defaultCalendarOption?.id}\n />\n <nylas-custom-event-slug name=\"custom-event-slug\" exportparts=\"nces, nces__body, nces__header, nces__drawer-toggle--container, nces__input-textfield\" />\n </Fragment>\n );\n }\n case CONFIGURATION_EVENT_TYPE.collective: {\n return (\n <Fragment>\n <nylas-event-info>\n <div slot=\"inputs\">\n <nylas-event-title />\n <nylas-event-duration />\n <nylas-event-location userProvider={currentUser.provider} />\n </div>\n </nylas-event-info>\n <nylas-booking-calendar-picker\n exportparts=\"nbcp, nbcp__header, nbcp__dropdown, nbcp__dropdown-button, nbcp__dropdown-content\"\n expressFlow={true}\n calendars={calendars}\n currentUser={currentUser}\n defaultBookingCalendar={defaultCalendarOption?.id}\n />\n <nylas-custom-event-slug name=\"custom-event-slug\" exportparts=\"nces, nces__body, nces__header, nces__drawer-toggle--container, nces__input-textfield\" />\n <nylas-additional-participants\n name=\"participants\"\n eventParticipants={[{ name: currentUser?.name || currentUser?.email, email: currentUser?.email || '', is_organizer: true }]}\n exportparts=\"nadtnlpart, nadtnlpart__title, nadtnlpart__subtitle, nadtnlpart__content, nadtnlpart__input_group, nadtnlpart__input_wrapper, nadtnlpart__input, nadtnlpart__remove-participant\"\n />\n </Fragment>\n );\n }\n case CONFIGURATION_EVENT_TYPE.group: {\n return (\n <Fragment>\n <nylas-event-info>\n <div slot=\"inputs\">\n <nylas-event-title noTemplates={true} />\n <nylas-event-description noTemplates={true} hideAutoPopulateButton={true} />\n <nylas-event-location userProvider={currentUser.provider} />\n <nylas-event-timeslot name=\"event-timeslot\" />\n <nylas-event-capacity />\n </div>\n </nylas-event-info>\n <nylas-booking-calendar-picker\n exportparts=\"nbcp, nbcp__header, nbcp__dropdown, nbcp__dropdown-button, nbcp__dropdown-content\"\n expressFlow={true}\n calendars={calendars}\n currentUser={currentUser}\n defaultBookingCalendar={defaultCalendarOption?.id}\n />\n <nylas-additional-participants\n name=\"participants\"\n eventParticipants={[{ name: currentUser?.name || currentUser?.email, email: currentUser?.email || '', is_organizer: true }]}\n exportparts=\"nadtnlpart, nadtnlpart__title, nadtnlpart__subtitle, nadtnlpart__content, nadtnlpart__input_group, nadtnlpart__input_wrapper, nadtnlpart__input, nadtnlpart__remove-participant\"\n />\n <nylas-page-name requirePageName={true} pageName=\"Group events page\" />\n <nylas-custom-event-slug name=\"custom-event-slug\" exportparts=\"nces, nces__body, nces__header, nces__drawer-toggle--container, nces__input-textfield\" />\n </Fragment>\n );\n }\n }\n}\n","@import '../../../common/styles/variables.scss';\n@import '../../../common/mixins/buttons.scss';\n\n:host {\n display: flex;\n flex-direction: column;\n overflow: visible;\n border-radius: var(--nylas-border-radius-2x);\n width: fit-content;\n\n @media #{$mobile} {\n width: -moz-available;\n /* WebKit-based browsers will ignore this. */\n width: -webkit-fill-available;\n /* Mozilla-based browsers will ignore this. */\n width: fill-available;\n min-width: 325px;\n }\n\n background: var(--nylas-base-0);\n position: relative;\n box-shadow:\n 0px 0px 6px -2px rgba(0, 0, 0, 0.05),\n 0px 5px 15px -3px rgba(0, 0, 0, 0.1);\n @include default-css-variables;\n}\n\ndiv.scheduler-editor-content {\n height: 900px;\n @media #{$mobile} {\n height: auto;\n }\n}\n\ndiv.scheduler-editor-content--group {\n height: 900px;\n\n @media #{$mobile} {\n height: auto;\n }\n}\n\ndiv.scheduler-editor-header {\n display: grid;\n grid-template-columns: 1fr auto auto;\n align-items: center;\n justify-content: space-between;\n padding: 1rem;\n border-bottom: 1px solid var(--nylas-base-200);\n color: var(--nylas-base-900);\n min-width: 924px;\n\n @media #{$mobile} {\n width: auto;\n min-width: calc(325px - 1rem);\n }\n\n h1.scheduler-editor-title {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n margin: 0;\n font-size: 18px;\n line-height: 24px;\n font-weight: 600;\n }\n\n button {\n @include invisible-button;\n }\n\n div.language {\n select-dropdown::part(sd_dropdown-button) {\n border: none;\n padding: 4px;\n margin-right: 8px;\n\n &:hover {\n outline: none;\n color: var(--nylas-primary);\n }\n }\n\n select-dropdown::part(sd_dropdown-content) {\n min-width: 132px;\n }\n\n @media #{$mobile} {\n select-dropdown::part(sd_dropdown-content) {\n width: -webkit-fill-available;\n width: fill-available;\n width: -moz-available;\n }\n }\n }\n}\n\nnylas-select-event-type {\n height: inherit;\n width: calc(924px + 2rem); // 1rem padding on each side\n\n @media #{$mobile} {\n width: auto;\n }\n}\n\nnylas-editor-tabs,\nnylas-editor-tabs-group {\n width: auto;\n height: inherit;\n\n .row {\n display: flex;\n gap: 1rem;\n }\n\n .composable {\n height: inherit;\n overflow: auto;\n }\n\n nylas-event-info,\n nylas-event-limits {\n div[slot='inputs'] {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n }\n }\n}\n\n.card {\n display: flex;\n flex-direction: column;\n padding: 2rem;\n background-color: var(--nylas-base-0);\n border: 1px solid var(--nylas-base-200);\n border-radius: 5px;\n\n max-width: fit-content;\n\n align-self: center;\n}\n\n.login-required {\n height: inherit;\n\n @media #{$mobile} {\n height: auto;\n }\n\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n justify-content: center;\n padding: 2rem 1rem;\n background-color: var(--nylas-base-25);\n border-radius: var(--nylas-border-radius-2x);\n\n p {\n margin: 0 0 1rem;\n }\n\n .microsoft-button,\n .google-button {\n @include button;\n display: flex;\n margin-bottom: 1rem;\n background-color: var(--nylas-base-0);\n border: 1px solid var(--nylas-base-200);\n border-radius: 5px;\n justify-content: center;\n gap: 0.5rem;\n align-items: center;\n\n &:hover {\n background-color: var(--nylas-base-25);\n }\n }\n\n .other-provider-button {\n @include button;\n display: flex;\n border: 0;\n background-color: var(--nylas-base-0);\n height: 48px;\n margin-bottom: 1rem;\n font-size: 0.95rem;\n justify-content: center;\n gap: 0.25rem;\n align-items: center;\n\n svg {\n transform: rotate(180deg);\n }\n\n &:hover {\n background-color: var(--nylas-base-25);\n }\n }\n\n .disclaimer-text {\n font-size: 0.75rem;\n color: var(--nylas-base-600);\n align-self: center;\n }\n}\n\n.list-configurations {\n padding: 2rem;\n height: inherit;\n\n @media #{$mobile} {\n height: auto;\n padding: 2rem 1rem;\n }\n\n background: var(--nylas-base-25);\n border-radius: var(--nylas-border-radius-2x);\n\n nylas-list-configurations {\n height: inherit;\n display: flex;\n flex-direction: column;\n }\n}\n","import { NylasBaseProvider } from '@/common/abstract-provider';\nimport type { SchedulerEditorEventOverride } from '@/common/component-types';\nimport { AuthArgs, NylasIdentityRequestWrapper, User, type NylasApiRequest } from '@/common/nylas-api-request';\nimport { RegisteredComponent } from '@/common/register-component';\nimport { NylasSchedulerConfigConnector } from '@/connector/nylas-scheduler-config-connector';\nimport { CreateNylasSchedulerConfigStore, NylasSchedulerConfigStoreState, NylasSchedulerConfigStoreType } from '@/stores/scheduler-config-store';\nimport { debug } from '@/utils/utils';\nimport { Config, NylasSessions } from '@nylas/identity';\nimport { Component, Element, Event, EventEmitter, Host, Listen, Method, Prop, State, Watch, h } from '@stencil/core';\nimport { LoginRequired } from './LoginRequired';\nimport ExpressFlow from './ExpressFlow';\nimport { AdditionalParticipant, GroupConfiguration, EnableEventTypes } from '@nylas/core';\nimport { Tab } from '../nylas-editor-tabs/tab-contents';\nimport i18next from '@/utils/i18n';\nimport { CONFIGURATION_EVENT_TYPE, EXPERIMENTAL_FEATURES, LANGUAGE_CODE, LANGUAGE_MAP, Locale } from '@/common/constants';\n\n/**\n * The `nylas-scheduler-editor` component is a form that allows users to configure the settings for the Nylas Scheduler.\n *\n * @slot login-required - This slot is used to display a message when the user is not logged in.\n * @slot custom-page-style-inputs - This slot is used in \"app\" mode to pass a custom page style form to the nylas-page-styling component.\n *\n * @part nse__header - The header of the scheduler editor.\n * @part nse__title - The title of the scheduler editor.\n * @part nse__close-button - The close button of the scheduler editor. Use this part to hide the close button.\n * @part nse__content - The content of the scheduler editor. Use this part to adjust the height of the editor.\n * @part nse__list-configurations - The list of configurations. Use this part to adjust the height of the list.\n * @part nse__login-required - The login required component.\n * @part nse__login-required-card - The card of the login required component.\n * @part nse__login-required-text - The text of the login required component.\n * @part nse__login-required-google-button - The Google button of the login required component.\n * @part nse__login-required-microsoft-button - The Microsoft button of the login required component.\n * @part nse__login-required-other-provider-button - The other provider button of the login required component.\n * @part nse__login-required-disclaimer-text - The icon of the login required component.\n */\n@Component({\n tag: 'nylas-scheduler-editor',\n styleUrl: 'nylas-scheduler-editor.scss',\n shadow: true,\n})\nexport class NylasSchedulerEditor {\n /**\n * Stores to be used by the provider.\n */\n private stores?: {\n schedulerConfig: NylasSchedulerConfigStoreType;\n };\n\n /**\n * This is a base provide that defines the common methods and properties\n * that all providers should have.\n *\n * Because stencil does not support abstract classes, we have to use a\n * property to store the base provider instance.\n */\n private baseProvider?: NylasBaseProvider<Exclude<typeof this.stores, undefined>>;\n\n /**\n * The Nylas Scheduler Config Connector instance.\n * The brains of the provider. It manages data fetching and state synchronization.\n */\n private nylasSchedulerConfigConnector?: NylasSchedulerConfigConnector;\n\n /**\n * The host element.\n * Used to manage the host element of the provider.\n */\n @Element() private host!: HTMLNylasSchedulerEditorElement;\n\n /***\n * The configuration id to use for the scheduler editor.\n * If provided, then the scheduler editor will try and fetch the configuration\n * with the provided id. If found, it will automatically load the editor\n * with the configuration settings for editing.\n */\n @Prop({ mutable: true }) configurationId?: string;\n\n /**\n * The Nylas Api Request instance.\n * Used to make requests to the Nylas API.\n */\n @Prop({ mutable: true }) nylasApiRequest?: NylasApiRequest;\n\n /**\n * The Nylas Sessions configuration.\n * Used to configure the Nylas Sessions instance.\n */\n @Prop() nylasSessionsConfig?: Config;\n\n /**\n * The default authentication arguments to use when authenticating a user.\n */\n @Prop() defaultAuthArgs?: AuthArgs[];\n\n /**\n * This provides a way to override the default event handlers.\n */\n @Prop() eventOverrides: SchedulerEditorEventOverride = {};\n\n /**\n * The scheduler preview link used when the user clicks the preview button.\n * If `requiresSlug` is true, you can use the placeholder `{slug}` to insert the slug in the link for Nylas hosted scheduling pages.\n * Additionally, you can use the placeholder `{config.id}` to insert the configuration ID anywhere in the link.\n * For example: `https://book.nylas.com/us/<YOUR_NYLAS_APP_CLIENT_ID>/{slug}`.\n * `us` denotes the region. Replace it with the appropriate region of your application.\n * Replace `<YOUR_NYLAS_APP_CLIENT_ID>` with your Nylas app client ID.\n * Note: Nylas hosted scheduling pages are only available for public configurations.\n */\n @Prop({ attribute: 'scheduler-preview-link' }) schedulerPreviewLink: string = '';\n\n /**\n * The default scheduler config store state.\n * Used to set the initial state of the scheduler config store.\n * This state can be used to pass defaults to newly created configurations.\n */\n @Prop({ attribute: 'default-scheduler-config-store-state' }) readonly defaultSchedulerConfigState?: Partial<NylasSchedulerConfigStoreState>;\n\n /**\n * This is used to set the mode for the scheduler config.\n * The mode can be 'app' or 'composable'.\n * The default mode is 'app'.\n */\n @Prop({ attribute: 'mode' }) readonly mode: 'app' | 'composable' = 'app';\n\n /**\n * This prop is used to populate the additional participants and\n * their availability in the scheduler editor.\n */\n @Prop({ attribute: 'additional-participants' }) additionalParticipants?: AdditionalParticipant[];\n\n /**\n * This optional prop is used to hide tabs in the editor. Available tabs are:\n * eventInfo, availability, participants, bookingOptions, bookingForm\n */\n @Prop({ attribute: 'hide-editor-tabs' }) hideEditorTabs?: Tab[] = [];\n\n /**\n * This prop will be used to populate the conference provider options in the editor.\n * The key is the provider name ('zoom') and the value is the grant id.\n * We currently support same provider ('google', 'microsoft') for all participants and 'zoom' for cross-provider conferencing.\n */\n @Prop({ attribute: 'conference-providers' }) conferenceProviders?: Record<string, string>;\n\n /**\n * Indicates if a slug is required for the configuration.\n * When set to true, the user must enter a slug when creating or editing a configuration.\n * The slug is used for hosted pages. If using Nylas hosted scheduling pages, the `schedulerPreviewLink` prop can be set to redirect to a public configuration as follows:\n * `https://book.nylas.com/us/<YOUR_NYLAS_APP_CLIENT_ID>/{slug}`.\n * `us` denotes the region. Replace it with the appropriate region of your application.\n * Replace `<YOUR_NYLAS_APP_CLIENT_ID>` with your Nylas app client ID. The `{slug}` placeholder is replaced with the appropriate slug when the scheduler preview button is clicked.\n * Note: Nylas hosted scheduling pages are only available for public configurations.\n */\n @Prop({ attribute: 'requires-slug' }) requiresSlug: boolean = false;\n\n /**\n * Indicates if the user feedback feature is enabled.\n * By default, this is set to true. When enabled, the user feedback\n * feature will be available in the edit mode.\n * To disable the user feedback feature, set this prop to false.\n */\n @Prop() readonly enableUserFeedback?: boolean = true;\n\n /**\n * This prop will allow to set a default language for the Nylas scheduling page.\n */\n @Prop() readonly defaultLanguage?: LANGUAGE_CODE;\n\n /**\n * This prop will allow to override the default localization strings for each language.\n * Nylas scheduling page currently support the following language codes: en, es, fr, de, sv, zh, ja, nl.\n */\n @Prop() readonly localization?: Partial<Record<LANGUAGE_CODE, Locale>>;\n\n /**\n * This prop will allow to show / hide the option to manage nylas branding in the email template.\n * By default, this is set to true. When enabled, the option to show/hide nylas branding will be shown in the email template.\n * To disable the option to show/hide nylas branding, set this prop to false.\n */\n @Prop() readonly nylasBranding?: boolean = true;\n\n /**\n * This prop is to opt in to experimental features.\n * Ex: { 'group_events': true }\n */\n @Prop() readonly experimentalFeatures?: Record<EXPERIMENTAL_FEATURES, boolean>;\n\n /**\n * Controls which event types are enabled in the Scheduler.\n *\n * - By default, all event types are enabled and users will see a selection screen when creating a new event.\n * - You can disable specific event types by setting them to `false`.\n * - At least one event type must remain enabled at all times.\n * - If only one event type is enabled, the event type selection screen will be skipped.\n */\n @Prop() readonly enableEventTypes?: EnableEventTypes = {\n one_on_one: true,\n collective: true,\n max_fairness: true,\n max_availability: true,\n group: true,\n };\n\n /**\n * This event is fired when the provider is initialized.\n * By default, this event handles determining if the user is logged in or not.\n * In addition, it fetches the provided configuration if a valid configuration id is provided.\n */\n @Event({ cancelable: true }) readonly init!: EventEmitter<HTMLNylasSchedulerEditorElement>;\n\n /**\n * This event is fired when the the NylasAuth isAuthenticated state changes\n * to true.\n */\n @Event({ cancelable: true }) readonly loggedIn!: EventEmitter<HTMLNylasSchedulerEditorElement>;\n\n /**\n * This event is fired when the the NylasAuth isAuthenticated state changes\n * to false.\n */\n @Event({ cancelable: true }) readonly loggedOut!: EventEmitter<HTMLNylasSchedulerEditorElement>;\n\n /**\n * This event is fired when the close button on scheduler config is clicked.\n */\n @Event({ cancelable: true }) readonly schedulerConfigCloseClicked!: EventEmitter<HTMLNylasSchedulerEditorElement>;\n\n /**\n * Automatically register components that have the `@RegisterComponent` decorator.\n * If this is set to false, you will need to manually register components using the\n * `registerComponent` method.\n * @default true\n */\n @State() automaticComponentRegistration: boolean = true;\n\n /**\n * This state will track the current selected language of the scheduler page.\n */\n @State() selectedLanguage: LANGUAGE_CODE = this.defaultLanguage || LANGUAGE_CODE.en;\n\n /**\n * This state will track the current language version of the state.\n * This is used to force the component to re-render when the localization prop is updated.\n */\n @State() langVersion: number = 0;\n\n connectedCallback() {\n debug(`[nylas-scheduler-editor] connectedCallback`);\n }\n\n async componentWillLoad() {\n debug(`[nylas-scheduler-editor] componentWillLoad`);\n const filteredAdditionalParticipants = this.additionalParticipants?.filter(participant => {\n const filteredCalendars = participant.calendars?.length > 0 ? participant.calendars.filter(calendar => calendar.id && calendar.name) : [];\n if (participant.name && participant.email && filteredCalendars.length > 0) {\n return {\n name: participant.name,\n email: participant.email,\n calendars: filteredCalendars,\n };\n }\n });\n this.stores = {\n schedulerConfig: CreateNylasSchedulerConfigStore({\n ...this.defaultSchedulerConfigState,\n additionalParticipants: filteredAdditionalParticipants,\n conferenceProviders: this.conferenceProviders,\n requiresSlug: this.requiresSlug,\n selectedLanguage: this.defaultLanguage || LANGUAGE_CODE.en,\n nylasBranding: this.nylasBranding,\n experimentalFeatures: this.experimentalFeatures,\n enableEventTypes: this.enableEventTypes,\n }),\n };\n\n if (!this.nylasApiRequest && this.nylasSessionsConfig) {\n const nylasSession = new NylasSessions(this.nylasSessionsConfig);\n\n // We must check if the user is logged in before continuing\n // otherwise, a PCKE code will not be generated and the user\n // will not be able to log in.\n await nylasSession.isLoggedIn();\n\n // Watch for login events so that we can automatically update the state\n nylasSession.onLoginSuccess(async () => {\n const currentUser = await this.nylasSchedulerConfigConnector?.schedulerConfig?.currentUser();\n if (currentUser) {\n const loggedInEvent = this.loggedIn.emit(this.host);\n if ('loggedIn' in this.eventOverrides) {\n await this.eventOverrides.loggedIn(loggedInEvent, this.nylasSchedulerConfigConnector);\n }\n if (!loggedInEvent.defaultPrevented) {\n await this.loggedInHandler(currentUser);\n }\n }\n });\n\n // Watch for logout events so that we can automatically update the state\n nylasSession.onLoginFail(async () => {\n this.stores?.schedulerConfig?.set('currentUser', null);\n const loggedOutEvent = this.loggedOut.emit(this.host);\n if ('loggedOut' in this.eventOverrides) {\n await this.eventOverrides.loggedOut(loggedOutEvent, this.nylasSchedulerConfigConnector);\n if (loggedOutEvent.defaultPrevented) {\n return;\n }\n }\n });\n\n this.nylasApiRequest = new NylasIdentityRequestWrapper(nylasSession);\n }\n\n if (this.nylasApiRequest && this.defaultAuthArgs) {\n this.nylasApiRequest.setDefaultAuthArgs(this.defaultAuthArgs);\n }\n\n this.baseProvider = new NylasBaseProvider(this.host, this.stores, this.automaticComponentRegistration, this.eventOverrides);\n\n const nylasSchedulerConfigStore = this.baseProvider.getStore('schedulerConfig');\n this.nylasSchedulerConfigConnector = new NylasSchedulerConfigConnector({\n nylasApiRequest: this.nylasApiRequest,\n nylasSchedulerConfigStore: nylasSchedulerConfigStore,\n });\n\n const initEvent = this.init.emit(this.host);\n if ('init' in this.eventOverrides) {\n await this.eventOverrides.init(initEvent, this.nylasSchedulerConfigConnector);\n }\n\n if (!initEvent.defaultPrevented) {\n const currentUser = await this.nylasSchedulerConfigConnector?.schedulerConfig?.currentUser();\n if (currentUser) {\n const loggedInEvent = this.loggedIn.emit(this.host);\n if ('loggedIn' in this.eventOverrides) {\n await this.eventOverrides.loggedIn(loggedInEvent, this.nylasSchedulerConfigConnector);\n }\n if (!loggedInEvent.defaultPrevented) {\n await this.loggedInHandler(currentUser);\n }\n } else {\n this.stores?.schedulerConfig?.set('currentUser', null);\n const loggedOutEvent = this.loggedOut.emit(this.host);\n if ('loggedOut' in this.eventOverrides) {\n await this.eventOverrides.loggedOut(loggedOutEvent, this.nylasSchedulerConfigConnector);\n if (loggedOutEvent.defaultPrevented) {\n return;\n }\n }\n }\n }\n\n // Watch for store changes\n this.stores?.schedulerConfig?.onChange('selectedConfiguration', async config => {\n if (config && config.id) {\n this.configurationId = config.id;\n }\n });\n\n this.baseProvider?.componentWillLoad(this.nylasSchedulerConfigConnector);\n }\n\n async componentDidLoad() {\n debug(`[nylas-scheduler-editor] componentDidLoad`);\n await this.baseProvider?.componentDidLoad();\n this.updateLocalization(this.localization);\n }\n\n async componentDisconnected() {\n await this.baseProvider?.componentDisconnected();\n }\n\n /**\n * Watch for changes to the configuration id and automatically fetch the configuration\n * when the configuration id changes. If the configuration id is cleared, then the\n * configuration is cleared as well.\n * @param newConfigurationId The new configuration id\n */\n @Watch('configurationId')\n async configurationIdChanged(newConfigurationId: string) {\n if (newConfigurationId) {\n await this.nylasSchedulerConfigConnector?.schedulerConfig?.getConfigurationById(newConfigurationId);\n this.stores?.schedulerConfig?.set('action', 'edit');\n } else {\n // Clear the configuration\n this.stores?.schedulerConfig?.set('selectedConfiguration', {});\n this.stores?.schedulerConfig?.set('action', null);\n }\n }\n\n @Watch('localization')\n updateLocalization(newVal?: Partial<Record<LANGUAGE_CODE, Locale>>) {\n if (!newVal) {\n return;\n }\n\n Object.keys(newVal).forEach(lang => {\n if (!(lang in LANGUAGE_CODE)) {\n return;\n }\n i18next.addResourceBundle(\n lang,\n 'translation',\n newVal[lang],\n false, // Merge with existing translations\n true, // Replace the existing translations with the same key\n );\n });\n this.langVersion++;\n }\n\n @Watch('nylasBranding')\n updateNylasBranding(newVal: boolean) {\n this.stores?.schedulerConfig?.set('nylasBranding', newVal);\n }\n\n @Watch('experimentalFeatures')\n updateExperimentalFeatures(newVal: Record<EXPERIMENTAL_FEATURES, boolean>) {\n this.stores?.schedulerConfig?.set('experimentalFeatures', newVal);\n }\n\n @Watch('enableEventTypes')\n updateEnableEventTypes(newVal: EnableEventTypes) {\n this.stores?.schedulerConfig?.set('enableEventTypes', newVal);\n }\n\n /**\n * This method is used to get the NylasSchedulerConfigStore instance.\n * You can use this instance to update or get the state of the store.\n * @returns Promise<NylasSchedulerConfigStoreType | undefined>\n */\n @Method()\n async store(): Promise<NylasSchedulerConfigStoreType | undefined> {\n return this.stores?.schedulerConfig;\n }\n\n /**\n * This method is used to get the NylasSchedulerConfigConnector instance.\n * You can use this instance to make requests to the Nylas API.\n * @returns Promise<NylasSchedulerConfigConnector | undefined>\n */\n @Method()\n async schedulerConnector(): Promise<NylasSchedulerConfigConnector | undefined> {\n return this.nylasSchedulerConfigConnector;\n }\n\n /**\n * This is a custom event handler that is used to register a component with the provider.\n * It is used by components that have the `@RegisterComponent` decorator.\n * @param event A custom event that contains the component to register\n * @returns Promise<void>\n */\n @Listen('registerComponent')\n async registerComponentHandler(event: CustomEvent<RegisteredComponent<any, any>>): Promise<void> {\n this.baseProvider?.registerComponent(event.detail);\n }\n\n /**\n * This is a custom event handler that is used to unregister a component with the provider.\n * It is used by components that have the `@RegisterComponent` decorator.\n * @param event A custom event that contains the component to unregister\n * @returns Promise<void>\n */\n @Listen('unregisterComponent')\n async unregisterComponentHandler(event: CustomEvent<RegisteredComponent<any, any>>): Promise<void> {\n this.baseProvider?.unregisterComponent(event.detail);\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 === 'language') {\n this.selectedLanguage = LANGUAGE_CODE[value as LANGUAGE_CODE];\n i18next.changeLanguage(this.selectedLanguage);\n this.stores?.schedulerConfig?.set('selectedLanguage', this.selectedLanguage);\n }\n }\n\n /**\n * Upon login, set the current user and fetch the configuration and calendars.\n * @param currentUser The current user that is logged in\n */\n private async loggedInHandler(currentUser: User) {\n this.stores?.schedulerConfig?.set('currentUser', currentUser);\n\n if (!this.nylasSchedulerConfigConnector) {\n return;\n }\n\n await this.nylasSchedulerConfigConnector.schedulerConfig?.getCalendars();\n\n if (this.configurationId) {\n const data = await this.nylasSchedulerConfigConnector.schedulerConfig?.getConfigurationById(this.configurationId);\n if (data && data[0]?.id) {\n this.stores?.schedulerConfig?.set('action', 'edit');\n }\n }\n }\n\n /**\n * This is a custom event handler that is used to update the state of the provider.\n */\n private handleSchedulerConfigCloseClicked = (_event: Event) => {\n const event = this.schedulerConfigCloseClicked.emit(this.host);\n if ('schedulerConfigCloseClicked' in this.eventOverrides) {\n this.eventOverrides.schedulerConfigCloseClicked(event, this.nylasSchedulerConfigConnector);\n }\n\n if (!event.defaultPrevented) {\n localStorage.removeItem('grant');\n localStorage.removeItem('user');\n window.location.reload();\n }\n };\n\n /**\n * This method is used to get the authentication URL for a provider.\n * @param provider The provider to get the authentication URL for (e.g. google, microsoft, etc.)\n * @returns Promise<string> The authentication URL to redirect the user for the provider\n */\n private authenticationUrl = async (provider?: string) => {\n if (!this.nylasApiRequest) {\n console.error(`[nylas-scheduler-editor] Nylas API Request is not initialized.`);\n return '';\n }\n const url = await this.nylasApiRequest.authenticationUrl({ provider });\n\n return url || '';\n };\n\n render() {\n const hasSlot = this.host.querySelector('[slot=\"custom-page-style-inputs\"]');\n const selectedConfigId = this.stores?.schedulerConfig?.state.selectedConfiguration?.id;\n const languageOptions = Object.keys(LANGUAGE_MAP).map(key => ({\n label: LANGUAGE_MAP[key],\n value: key,\n }));\n const isGroupType =\n this.stores?.schedulerConfig?.state.selectedEventType === CONFIGURATION_EVENT_TYPE.group ||\n (this.stores?.schedulerConfig?.state.selectedConfiguration as GroupConfiguration)?.type === CONFIGURATION_EVENT_TYPE.group;\n\n return (\n <Host>\n <div class=\"scheduler-editor-header\" part=\"nse__header\">\n <h1 class=\"scheduler-editor-title\" part=\"nse__title\">\n <calendar-icon width=\"18\" height=\"18\" />\n {i18next.t('schedulerEditorTitle')}\n </h1>\n <div\n class={{\n language: true,\n }}\n part=\"nse__language\"\n >\n <select-dropdown\n name=\"language\"\n searchPlaceholder={i18next.t('search')}\n options={languageOptions}\n withChevron={false}\n defaultSelectedOption={languageOptions.find(lang => lang.value == this.selectedLanguage)}\n exportparts=\"sd_dropdown: nse__language-dropdown, sd_dropdown-button: nse__language-drop-button, sd_dropdown-content: nse__language-drop-content, sd_dropdown_label: nse__language-drop-label\"\n >\n <span slot=\"select-icon\">\n <translate-icon width=\"20\" height=\"20\" />\n </span>\n </select-dropdown>\n </div>\n <button class=\"scheduler-editor-close\" title=\"logout\" onClick={e => this.handleSchedulerConfigCloseClicked(e)} part=\"nse__close-button\">\n <close-icon width=\"18\" height=\"18\" />\n </button>\n </div>\n <div\n class={{\n 'scheduler-editor-content': true,\n 'scheduler-editor-content--group': isGroupType,\n }}\n part=\"nse__content\"\n >\n {this.stores?.schedulerConfig?.state.currentUser && this.stores.schedulerConfig.state.action === null && (\n <div class=\"list-configurations\" part=\"nse__list-configurations\">\n <nylas-list-configurations exportparts=\"nlc__create-new-cta, actions__dropdown, actions__dropdown-button, actions__dropdown-content, actions-Copy, actions-Preview, actions-Delete\"></nylas-list-configurations>\n </div>\n )}\n {this.stores?.schedulerConfig?.state.currentUser && this.stores.schedulerConfig.state.action === 'create-select' && <nylas-select-event-type></nylas-select-event-type>}\n {this.stores?.schedulerConfig?.state.currentUser && this.stores.schedulerConfig.state.action === 'create' && isGroupType && (\n // If the mode is 'app', then render the editor tabs in a composable mode with children for creating a new configuration (Express flow).\n <nylas-editor-tabs-group mode=\"composable\">\n <ExpressFlow\n selectedEventType={this.stores?.schedulerConfig?.state?.selectedEventType || CONFIGURATION_EVENT_TYPE.one_on_one}\n currentUser={this.stores?.schedulerConfig?.state.currentUser}\n calendars={this.stores?.schedulerConfig?.state?.calendars}\n selectedConfiguration={this.stores?.schedulerConfig?.state?.selectedConfiguration}\n />\n </nylas-editor-tabs-group>\n )}\n {this.stores?.schedulerConfig?.state.currentUser && this.stores.schedulerConfig.state.action === 'create' && !isGroupType && (\n // If the mode is 'app', then render the editor tabs in a composable mode with children for creating a new configuration (Express flow).\n <nylas-editor-tabs mode=\"composable\">\n <ExpressFlow\n selectedEventType={this.stores?.schedulerConfig?.state?.selectedEventType || CONFIGURATION_EVENT_TYPE.one_on_one}\n currentUser={this.stores?.schedulerConfig?.state.currentUser}\n calendars={this.stores?.schedulerConfig?.state?.calendars}\n selectedConfiguration={this.stores?.schedulerConfig?.state?.selectedConfiguration}\n />\n </nylas-editor-tabs>\n )}\n {this.stores?.schedulerConfig?.state.currentUser && this.stores.schedulerConfig.state.action === 'edit' && isGroupType && (\n <nylas-editor-tabs-group key={selectedConfigId} mode={this.mode}>\n {this.mode === 'composable' && <slot />}\n {this.mode === 'app' && hasSlot && (\n <div style={{ display: 'none' }} slot=\"custom-page-style-inputs\" key={selectedConfigId}>\n <slot name=\"custom-page-style-inputs\" />\n </div>\n )}\n </nylas-editor-tabs-group>\n )}\n {this.stores?.schedulerConfig?.state.currentUser && this.stores.schedulerConfig.state.action === 'edit' && !isGroupType && (\n <nylas-editor-tabs key={selectedConfigId} mode={this.mode}>\n {this.mode === 'composable' && <slot />}\n {this.mode === 'app' && hasSlot && (\n <div style={{ display: 'none' }} slot=\"custom-page-style-inputs\" key={selectedConfigId}>\n <slot name=\"custom-page-style-inputs\" />\n </div>\n )}\n </nylas-editor-tabs>\n )}\n {!this.stores?.schedulerConfig?.state.currentUser && (\n <slot name=\"login-required\">\n <LoginRequired authenticationUrl={this.authenticationUrl} />\n </slot>\n )}\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
|