@nylas/web-elements 2.5.4-canary-20260414201801 → 2.5.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/dist/cdn/nylas-scheduler-editor/nylas-scheduler-editor.es.js +14 -7
  2. package/dist/cdn/nylas-scheduling/nylas-scheduling.es.js +7 -3
  3. package/dist/cjs/google-logo-icon_6.cjs.entry.js +1 -1
  4. package/dist/cjs/nylas-scheduler-editor.cjs.entry.js +8 -1
  5. package/dist/cjs/nylas-scheduler-editor.cjs.entry.js.map +1 -1
  6. package/dist/cjs/nylas-scheduler-editor.entry.cjs.js.map +1 -1
  7. package/dist/cjs/nylas-scheduling.cjs.entry.js +1 -1
  8. package/dist/cjs/radio-button-group.cjs.entry.js +8 -1
  9. package/dist/cjs/radio-button-group.cjs.entry.js.map +1 -1
  10. package/dist/cjs/radio-button-group.entry.cjs.js.map +1 -1
  11. package/dist/cjs/{version-Dfv6nyNu.js → version-COw2dh2E.js} +3 -3
  12. package/dist/cjs/{version-Dfv6nyNu.js.map → version-COw2dh2E.js.map} +1 -1
  13. package/dist/collection/components/design-system/radio-button-group/radio-button-group.js +8 -1
  14. package/dist/collection/components/design-system/radio-button-group/radio-button-group.js.map +1 -1
  15. package/dist/collection/connector/shared/api/scheduler-config.js +7 -0
  16. package/dist/collection/connector/shared/api/scheduler-config.js.map +1 -1
  17. package/dist/collection/version.js +1 -1
  18. package/dist/collection/version.js.map +1 -1
  19. package/dist/components/nylas-booking-form.js +1 -1
  20. package/dist/components/nylas-editor-tabs-group.js +1 -1
  21. package/dist/components/nylas-editor-tabs.js +1 -1
  22. package/dist/components/nylas-scheduler-editor.js +12 -5
  23. package/dist/components/nylas-scheduler-editor.js.map +1 -1
  24. package/dist/components/nylas-scheduling.js +3 -3
  25. package/dist/components/nylas-timeslot-interval.js +1 -1
  26. package/dist/components/{p-CrRo4iAd.js → p-BUEZ6uxG.js} +3 -3
  27. package/dist/components/{p-CrRo4iAd.js.map → p-BUEZ6uxG.js.map} +1 -1
  28. package/dist/components/{p-t9PqKZaR.js → p-Bd0cKEr-.js} +5 -5
  29. package/dist/components/{p-t9PqKZaR.js.map → p-Bd0cKEr-.js.map} +1 -1
  30. package/dist/components/{p-CMFPcpfe.js → p-C0pHjJtj.js} +3 -3
  31. package/dist/components/{p-CMFPcpfe.js.map → p-C0pHjJtj.js.map} +1 -1
  32. package/dist/components/{p-B_Qi3sM4.js → p-CyWE9dXK.js} +10 -3
  33. package/dist/components/p-CyWE9dXK.js.map +1 -0
  34. package/dist/components/{p-226WzMDo.js → p-DTmxwCTa.js} +3 -3
  35. package/dist/components/{p-226WzMDo.js.map → p-DTmxwCTa.js.map} +1 -1
  36. package/dist/components/{p-CfQZPhVq.js → p-ejCgVZ9o.js} +3 -3
  37. package/dist/components/{p-CfQZPhVq.js.map → p-ejCgVZ9o.js.map} +1 -1
  38. package/dist/components/radio-button-group.js +1 -1
  39. package/dist/esm/google-logo-icon_6.entry.js +1 -1
  40. package/dist/esm/nylas-scheduler-editor.entry.js +8 -1
  41. package/dist/esm/nylas-scheduler-editor.entry.js.map +1 -1
  42. package/dist/esm/nylas-scheduling.entry.js +1 -1
  43. package/dist/esm/radio-button-group.entry.js +8 -1
  44. package/dist/esm/radio-button-group.entry.js.map +1 -1
  45. package/dist/esm/{version-EWXklg7E.js → version-DDixcvI0.js} +3 -3
  46. package/dist/esm/{version-EWXklg7E.js.map → version-DDixcvI0.js.map} +1 -1
  47. package/dist/nylas-web-elements/nylas-scheduler-editor.entry.esm.js.map +1 -1
  48. package/dist/nylas-web-elements/nylas-web-elements.esm.js +1 -1
  49. package/dist/nylas-web-elements/{p-5a861a93.entry.js → p-7876f3e5.entry.js} +2 -2
  50. package/dist/nylas-web-elements/{p-5a861a93.entry.js.map → p-7876f3e5.entry.js.map} +1 -1
  51. package/dist/nylas-web-elements/{p-b26bb72f.entry.js → p-937127a0.entry.js} +2 -2
  52. package/dist/nylas-web-elements/{p-EWXklg7E.js → p-DDixcvI0.js} +2 -2
  53. package/dist/nylas-web-elements/{p-EWXklg7E.js.map → p-DDixcvI0.js.map} +1 -1
  54. package/dist/nylas-web-elements/{p-124fda53.entry.js → p-a6d5e357.entry.js} +2 -2
  55. package/dist/nylas-web-elements/p-a6d5e357.entry.js.map +1 -0
  56. package/dist/nylas-web-elements/{p-48449f8b.entry.js → p-f5cf4c30.entry.js} +2 -2
  57. package/dist/nylas-web-elements/radio-button-group.entry.esm.js.map +1 -1
  58. package/dist/types/connector/shared/api/scheduler-config.d.ts +1 -0
  59. package/dist/types/version.d.ts +1 -1
  60. package/package.json +1 -1
  61. package/dist/components/p-B_Qi3sM4.js.map +0 -1
  62. package/dist/nylas-web-elements/p-124fda53.entry.js.map +0 -1
  63. /package/dist/nylas-web-elements/{p-b26bb72f.entry.js.map → p-937127a0.entry.js.map} +0 -0
  64. /package/dist/nylas-web-elements/{p-48449f8b.entry.js.map → p-f5cf4c30.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"scheduler-config.js","sourceRoot":"","sources":["../../../../../src/connector/shared/api/scheduler-config.ts"],"names":[],"mappings":"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","sourcesContent":["import { NylasApiRequest } from '../../../common/nylas-api-request';\nimport { NylasSchedulerConfigStoreType } from '@/stores/scheduler-config-store';\nimport { dataResponse, debug, 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\ntype GroupEventsCache = {\n data: GroupEventAPIData[];\n timestamp: number;\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 private groupEventsCache: Map<string, GroupEventsCache> = new Map();\n private readonly CACHE_DURATION = 1 * 60 * 1000; //1 minute in milliseconds\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 debug('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 debug('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 allCalendars: Calendar[] = [];\n let cursor: string | null = null;\n const limit = 50;\n\n do {\n const [response, error] = await this.nylasApiRequest.request<NylasResponse<Calendar[]>>({\n method: 'GET',\n path: `calendars?limit=${limit}${cursor ? `&page_token=${cursor}` : ''}`,\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 // Add the current page of calendars to our collection\n allCalendars.push(...response.data);\n\n // Update cursor for next iteration\n cursor = response.next_cursor || null;\n } while (cursor);\n\n // Set all calendars as the current calendars\n this.nylasSchedulerConfigStore.state.calendars = allCalendars;\n\n return dataResponse(allCalendars);\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 debug('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 debug('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 debug('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 debug('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 debug('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 debug('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 debug('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 debug('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, this.nylasSchedulerConfigStore.state.selectedConfiguration as Configuration | GroupConfiguration);\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, selectedConfiguration: Configuration | GroupConfiguration) {\n if (!this.nylasApiRequest) {\n debug('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\n const queryParamsObject = new URLSearchParams();\n queryParamsObject.append('show_all', 'true');\n\n const calendarViewDateRange = this.nylasSchedulerConfigStore.state.calendarViewDateRange;\n let startTime: string;\n let endTime: string;\n\n if (calendarViewDateRange) {\n startTime = calendarViewDateRange.start_time;\n endTime = calendarViewDateRange.end_time;\n } else {\n const range = getCalendarRange(new Date().toISOString(), 'week');\n startTime = range.startTime.toString();\n endTime = range.endTime.toString();\n }\n\n // Create a cache key from the time range\n const cacheKey = `${configurationId}-${startTime}-${endTime}`;\n const cachedData = this.groupEventsCache.get(cacheKey);\n\n // Check if we have valid cached data\n if (cachedData && Date.now() - cachedData.timestamp < this.CACHE_DURATION) {\n this.nylasSchedulerConfigStore.state.groupEvents = cachedData.data;\n return dataResponse(cachedData.data);\n }\n\n queryParamsObject.append('start_time', startTime);\n queryParamsObject.append('end_time', endTime);\n\n const calendar_id = (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 // Update cache with new data\n this.groupEventsCache.set(cacheKey, {\n data: response.data,\n timestamp: Date.now(),\n });\n\n // Clean up expired cache entries\n this.cleanupExpiredCache();\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 * Clean up expired cache entries\n */\n private cleanupExpiredCache() {\n const now = Date.now();\n for (const [key, value] of this.groupEventsCache.entries()) {\n if (now - value.timestamp > this.CACHE_DURATION) {\n this.groupEventsCache.delete(key);\n }\n }\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 debug('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, this.nylasSchedulerConfigStore.state.selectedConfiguration as Configuration | GroupConfiguration);\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 debug('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, this.nylasSchedulerConfigStore.state.selectedConfiguration as Configuration | GroupConfiguration);\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 debug('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, this.nylasSchedulerConfigStore.state.selectedConfiguration as Configuration | GroupConfiguration);\n }\n\n this.nylasSchedulerConfigStore.state.isLoading = false;\n\n return dataResponse(response.data);\n }\n}\n"]}
1
+ {"version":3,"file":"scheduler-config.js","sourceRoot":"","sources":["../../../../../src/connector/shared/api/scheduler-config.ts"],"names":[],"mappings":"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","sourcesContent":["import { NylasApiRequest } from '../../../common/nylas-api-request';\nimport { NylasSchedulerConfigStoreType } from '@/stores/scheduler-config-store';\nimport { dataResponse, debug, 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\ntype GroupEventsCache = {\n data: GroupEventAPIData[];\n timestamp: number;\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 private groupEventsCache: Map<string, GroupEventsCache> = new Map();\n private readonly CACHE_DURATION = 1 * 60 * 1000; //1 minute in milliseconds\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 debug('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 debug('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 allCalendars: Calendar[] = [];\n let cursor: string | null = null;\n const limit = 50;\n\n do {\n const [response, error] = await this.nylasApiRequest.request<NylasResponse<Calendar[]>>({\n method: 'GET',\n path: `calendars?limit=${limit}${cursor ? `&page_token=${cursor}` : ''}`,\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 // Add the current page of calendars to our collection\n allCalendars.push(...response.data);\n\n // Update cursor for next iteration\n cursor = response.next_cursor || null;\n } while (cursor);\n\n // Set all calendars as the current calendars\n this.nylasSchedulerConfigStore.state.calendars = allCalendars;\n\n return dataResponse(allCalendars);\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 debug('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 debug('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 debug('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 debug('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 debug('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 debug('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 debug('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 debug('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 // Invalidate cache so we fetch fresh data reflecting the new event\n this.invalidateGroupEventsCache();\n await this.getGroupEvents(configurationId, this.nylasSchedulerConfigStore.state.selectedConfiguration as Configuration | GroupConfiguration);\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, selectedConfiguration: Configuration | GroupConfiguration) {\n if (!this.nylasApiRequest) {\n debug('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\n const queryParamsObject = new URLSearchParams();\n queryParamsObject.append('show_all', 'true');\n\n const calendarViewDateRange = this.nylasSchedulerConfigStore.state.calendarViewDateRange;\n let startTime: string;\n let endTime: string;\n\n if (calendarViewDateRange) {\n startTime = calendarViewDateRange.start_time;\n endTime = calendarViewDateRange.end_time;\n } else {\n const range = getCalendarRange(new Date().toISOString(), 'week');\n startTime = range.startTime.toString();\n endTime = range.endTime.toString();\n }\n\n // Create a cache key from the time range\n const cacheKey = `${configurationId}-${startTime}-${endTime}`;\n const cachedData = this.groupEventsCache.get(cacheKey);\n\n // Check if we have valid cached data\n if (cachedData && Date.now() - cachedData.timestamp < this.CACHE_DURATION) {\n this.nylasSchedulerConfigStore.state.groupEvents = cachedData.data;\n return dataResponse(cachedData.data);\n }\n\n queryParamsObject.append('start_time', startTime);\n queryParamsObject.append('end_time', endTime);\n\n const calendar_id = (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 // Update cache with new data\n this.groupEventsCache.set(cacheKey, {\n data: response.data,\n timestamp: Date.now(),\n });\n\n // Clean up expired cache entries\n this.cleanupExpiredCache();\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 * Invalidate all cached group events so the next getGroupEvents() call fetches fresh data.\n */\n private invalidateGroupEventsCache() {\n this.groupEventsCache.clear();\n }\n\n /**\n * Clean up expired cache entries\n */\n private cleanupExpiredCache() {\n const now = Date.now();\n for (const [key, value] of this.groupEventsCache.entries()) {\n if (now - value.timestamp > this.CACHE_DURATION) {\n this.groupEventsCache.delete(key);\n }\n }\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 debug('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 // Invalidate cache so we fetch fresh data reflecting the update\n this.invalidateGroupEventsCache();\n await this.getGroupEvents(configurationId, this.nylasSchedulerConfigStore.state.selectedConfiguration as Configuration | GroupConfiguration);\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 debug('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 // Invalidate cache so we fetch fresh data reflecting the deletion\n this.invalidateGroupEventsCache();\n await this.getGroupEvents(configurationId, this.nylasSchedulerConfigStore.state.selectedConfiguration as Configuration | GroupConfiguration);\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 debug('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 // Invalidate cache and refresh event list after import\n if (response.data?.imported_events?.length > 0) {\n this.invalidateGroupEventsCache();\n await this.getGroupEvents(configurationId, this.nylasSchedulerConfigStore.state.selectedConfiguration as Configuration | GroupConfiguration);\n }\n\n this.nylasSchedulerConfigStore.state.isLoading = false;\n\n return dataResponse(response.data);\n }\n}\n"]}
@@ -1,2 +1,2 @@
1
- export const version = '2.5.4-canary-20260414201801';
1
+ export const version = '2.5.4';
2
2
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,6BAA6B,CAAC","sourcesContent":["export const version = '2.5.4-canary-20260414201801';\n"]}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC","sourcesContent":["export const version = '2.5.4';\n"]}
@@ -1,4 +1,4 @@
1
- import { N as NylasBookingForm$1, d as defineCustomElement$1 } from './p-CMFPcpfe.js';
1
+ import { N as NylasBookingForm$1, d as defineCustomElement$1 } from './p-C0pHjJtj.js';
2
2
 
3
3
  const NylasBookingForm = NylasBookingForm$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { N as NylasEditorTabsGroup$1, d as defineCustomElement$1 } from './p-226WzMDo.js';
1
+ import { N as NylasEditorTabsGroup$1, d as defineCustomElement$1 } from './p-DTmxwCTa.js';
2
2
 
3
3
  const NylasEditorTabsGroup = NylasEditorTabsGroup$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { N as NylasEditorTabs$1, d as defineCustomElement$1 } from './p-t9PqKZaR.js';
1
+ import { N as NylasEditorTabs$1, d as defineCustomElement$1 } from './p-Bd0cKEr-.js';
2
2
 
3
3
  const NylasEditorTabs = NylasEditorTabs$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -5,7 +5,7 @@ import { h as dayjs, w as utc, x as timezone, a as debug, d as dataResponse, Z a
5
5
  import { o as o$1, E as ErrorCategory, N as NotificationType } from './p-CWplx7sA.js';
6
6
  import { c as createStore } from './p-DVWbg8if.js';
7
7
  import { i as instance } from './p-CFk78OEk.js';
8
- import { v as version } from './p-CfQZPhVq.js';
8
+ import { v as version } from './p-ejCgVZ9o.js';
9
9
  import { d as defineCustomElement$1A } from './p-Dl0Yur5r.js';
10
10
  import { d as defineCustomElement$1z } from './p-BVH0Klhu.js';
11
11
  import { d as defineCustomElement$1y } from './p-hipsVOV5.js';
@@ -58,8 +58,8 @@ import { d as defineCustomElement$Q } from './p-CA-CDvvH.js';
58
58
  import { d as defineCustomElement$P } from './p--MwFi8VI.js';
59
59
  import { d as defineCustomElement$O } from './p-DHDBkOA6.js';
60
60
  import { d as defineCustomElement$N } from './p-JjXUnTze.js';
61
- import { d as defineCustomElement$M } from './p-t9PqKZaR.js';
62
- import { d as defineCustomElement$L } from './p-226WzMDo.js';
61
+ import { d as defineCustomElement$M } from './p-Bd0cKEr-.js';
62
+ import { d as defineCustomElement$L } from './p-DTmxwCTa.js';
63
63
  import { d as defineCustomElement$K } from './p-DAnwHL85.js';
64
64
  import { d as defineCustomElement$J } from './p-DWH9lxNw.js';
65
65
  import { d as defineCustomElement$I } from './p-D2Tc9Auy.js';
@@ -88,13 +88,13 @@ import { d as defineCustomElement$m } from './p-Du5g5VR_.js';
88
88
  import { d as defineCustomElement$l } from './p-Co55qdnC.js';
89
89
  import { d as defineCustomElement$k } from './p-BPZfpfqz.js';
90
90
  import { d as defineCustomElement$j } from './p-BmyZZVvG.js';
91
- import { d as defineCustomElement$i } from './p-CrRo4iAd.js';
91
+ import { d as defineCustomElement$i } from './p-BUEZ6uxG.js';
92
92
  import { d as defineCustomElement$h } from './p-ByDfkWkX.js';
93
93
  import { d as defineCustomElement$g } from './p-BSfQxQEN.js';
94
94
  import { d as defineCustomElement$f } from './p-xMlGGw2N.js';
95
95
  import { d as defineCustomElement$e } from './p-DPwhlVlN.js';
96
96
  import { d as defineCustomElement$d } from './p-jBYg7WMS.js';
97
- import { d as defineCustomElement$c } from './p-B_Qi3sM4.js';
97
+ import { d as defineCustomElement$c } from './p-CyWE9dXK.js';
98
98
  import { d as defineCustomElement$b } from './p-DBHtQK2b.js';
99
99
  import { d as defineCustomElement$a } from './p-wphqTozF.js';
100
100
  import { d as defineCustomElement$9 } from './p-DfJPUV12.js';
@@ -366,6 +366,7 @@ class NylasSchedulerConfigAPIConnector {
366
366
  });
367
367
  }
368
368
  this.nylasSchedulerConfigStore.state.selectedGroupEvent = response.data;
369
+ this.invalidateGroupEventsCache();
369
370
  await this.getGroupEvents(configurationId, this.nylasSchedulerConfigStore.state.selectedConfiguration);
370
371
  this.nylasSchedulerConfigStore.state.isLoading = false;
371
372
  return dataResponse(response.data);
@@ -425,6 +426,9 @@ class NylasSchedulerConfigAPIConnector {
425
426
  this.nylasSchedulerConfigStore.state.groupEvents = response.data;
426
427
  return dataResponse(response.data);
427
428
  }
429
+ invalidateGroupEventsCache() {
430
+ this.groupEventsCache.clear();
431
+ }
428
432
  cleanupExpiredCache() {
429
433
  const now = Date.now();
430
434
  for (const [key, value] of this.groupEventsCache.entries()) {
@@ -461,6 +465,7 @@ class NylasSchedulerConfigAPIConnector {
461
465
  });
462
466
  }
463
467
  this.nylasSchedulerConfigStore.state.selectedGroupEvent = response.data;
468
+ this.invalidateGroupEventsCache();
464
469
  await this.getGroupEvents(configurationId, this.nylasSchedulerConfigStore.state.selectedConfiguration);
465
470
  this.nylasSchedulerConfigStore.state.isLoading = false;
466
471
  return dataResponse(response.data);
@@ -613,6 +618,7 @@ class NylasSchedulerConfigAPIConnector {
613
618
  message: 'Error deleting group event: ' + response.error?.message,
614
619
  });
615
620
  }
621
+ this.invalidateGroupEventsCache();
616
622
  await this.getGroupEvents(configurationId, this.nylasSchedulerConfigStore.state.selectedConfiguration);
617
623
  this.nylasSchedulerConfigStore.state.isLoading = false;
618
624
  return dataResponse(response.data);
@@ -648,6 +654,7 @@ class NylasSchedulerConfigAPIConnector {
648
654
  });
649
655
  }
650
656
  if (response.data?.imported_events?.length > 0) {
657
+ this.invalidateGroupEventsCache();
651
658
  await this.getGroupEvents(configurationId, this.nylasSchedulerConfigStore.state.selectedConfiguration);
652
659
  }
653
660
  this.nylasSchedulerConfigStore.state.isLoading = false;