cronofy-elements 1.48.1 → 1.49.1

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 (349) hide show
  1. package/dist/.gitkeep +0 -0
  2. package/dist/CronofyElements.js +2 -0
  3. package/{build/CronofyElements.v1.48.1.js.LICENSE.txt → dist/CronofyElements.js.LICENSE.txt} +0 -0
  4. package/package.json +10 -7
  5. package/.babelrc +0 -20
  6. package/.eslintrc.yaml +0 -43
  7. package/.prettierignore +0 -4
  8. package/.prettierrc +0 -7
  9. package/Makefile +0 -92
  10. package/brainstorm.md +0 -76
  11. package/build/CronofyElements.v1.48.1.js +0 -2
  12. package/build/npm/CronofyElements.js +0 -2
  13. package/compat.config.js +0 -25
  14. package/demo/agenda.ejs +0 -71
  15. package/demo/availability-viewer.ejs +0 -322
  16. package/demo/calendar-sync.ejs +0 -149
  17. package/demo/crossbrowser.ejs +0 -228
  18. package/demo/date-time-picker.ejs +0 -213
  19. package/demo/demo-styles.css +0 -134
  20. package/demo/index.ejs +0 -249
  21. package/demo/integration.ejs +0 -482
  22. package/demo/load-elements.ejs +0 -12
  23. package/demo/nav.ejs +0 -14
  24. package/demo/rules.ejs +0 -121
  25. package/demo/server.js +0 -425
  26. package/demo/slot-picker.ejs +0 -197
  27. package/git.README.md +0 -71
  28. package/notes.style.md +0 -197
  29. package/postcss.config.js +0 -3
  30. package/script/i18n-export +0 -11
  31. package/script/i18n-helpers/split_write.rb +0 -25
  32. package/script/i18n-import +0 -22
  33. package/script/i18n-reference-update +0 -241
  34. package/src/js/components/Agenda/Agenda.js +0 -243
  35. package/src/js/components/Agenda/AllDayEventsList.js +0 -37
  36. package/src/js/components/Agenda/Calendar.js +0 -100
  37. package/src/js/components/Agenda/CalendarHeader.js +0 -187
  38. package/src/js/components/Agenda/Event.js +0 -34
  39. package/src/js/components/Agenda/EventAllDay.js +0 -76
  40. package/src/js/components/Agenda/EventAttendees.js +0 -30
  41. package/src/js/components/Agenda/EventDetail.js +0 -111
  42. package/src/js/components/Agenda/EventMessages.js +0 -24
  43. package/src/js/components/Agenda/EventMeta.js +0 -48
  44. package/src/js/components/Agenda/EventTime.js +0 -34
  45. package/src/js/components/Agenda/EventWrapper.js +0 -271
  46. package/src/js/components/Agenda/Location.js +0 -29
  47. package/src/js/components/Agenda/Message.js +0 -22
  48. package/src/js/components/Agenda/TimedEventsList.js +0 -29
  49. package/src/js/components/AvailabilityRules/AddButton.js +0 -60
  50. package/src/js/components/AvailabilityRules/AvailabilityRules.js +0 -45
  51. package/src/js/components/AvailabilityRules/Calendar.js +0 -31
  52. package/src/js/components/AvailabilityRules/CalendarListItem.js +0 -53
  53. package/src/js/components/AvailabilityRules/CalendarProfiles.js +0 -67
  54. package/src/js/components/AvailabilityRules/CalendarSelector.js +0 -104
  55. package/src/js/components/AvailabilityRules/Calendars.js +0 -145
  56. package/src/js/components/AvailabilityRules/Checkmark.js +0 -51
  57. package/src/js/components/AvailabilityRules/DayLabels.js +0 -91
  58. package/src/js/components/AvailabilityRules/Footer.js +0 -109
  59. package/src/js/components/AvailabilityRules/Legend.js +0 -57
  60. package/src/js/components/AvailabilityRules/Loading.js +0 -53
  61. package/src/js/components/AvailabilityRules/RemoveButton.js +0 -57
  62. package/src/js/components/AvailabilityRules/Slot.js +0 -195
  63. package/src/js/components/AvailabilityRules/SlotDisplay.js +0 -27
  64. package/src/js/components/AvailabilityRules/Slots.js +0 -81
  65. package/src/js/components/AvailabilityRules/SlotsDisplay.js +0 -68
  66. package/src/js/components/AvailabilityRules/TimeExpander.js +0 -119
  67. package/src/js/components/AvailabilityRules/TimeLabels.js +0 -89
  68. package/src/js/components/AvailabilityRules/TimeZoneDisplay.js +0 -41
  69. package/src/js/components/AvailabilityRules/ToggleIcon.js +0 -41
  70. package/src/js/components/AvailabilityRules/Tooltip.js +0 -63
  71. package/src/js/components/AvailabilityRules/UnknownCalendar.js +0 -33
  72. package/src/js/components/AvailabilityRules/Week.js +0 -115
  73. package/src/js/components/AvailabilityRules/WeekGrid.js +0 -80
  74. package/src/js/components/AvailabilityRules/Wrapper.js +0 -414
  75. package/src/js/components/AvailabilityRules/contexts/drag-context.js +0 -15
  76. package/src/js/components/AvailabilityRules/scss/_base.buttons.scss +0 -58
  77. package/src/js/components/AvailabilityRules/scss/_base.theme.scss +0 -4
  78. package/src/js/components/AvailabilityRules/scss/_components.timezoneselector.scss +0 -74
  79. package/src/js/components/AvailabilityRules/scss/_generic.reset.scss +0 -13
  80. package/src/js/components/AvailabilityRules/scss/_settings.colours.scss +0 -12
  81. package/src/js/components/AvailabilityRules/scss/availabilityrules.scss +0 -5
  82. package/src/js/components/AvailabilityRules/utils/tz-utils.js +0 -44
  83. package/src/js/components/AvailabilityViewer/AvailabilityViewer.js +0 -524
  84. package/src/js/components/AvailabilityViewer/ColumnHeader.js +0 -35
  85. package/src/js/components/AvailabilityViewer/DayColumn.js +0 -36
  86. package/src/js/components/AvailabilityViewer/DayColumnDisplay.js +0 -33
  87. package/src/js/components/AvailabilityViewer/DayColumnWrapper.js +0 -29
  88. package/src/js/components/AvailabilityViewer/DayLabels.js +0 -41
  89. package/src/js/components/AvailabilityViewer/EmptyColumn.js +0 -29
  90. package/src/js/components/AvailabilityViewer/Footer.js +0 -36
  91. package/src/js/components/AvailabilityViewer/GridFreeSelect.js +0 -33
  92. package/src/js/components/AvailabilityViewer/HoverSlot.js +0 -35
  93. package/src/js/components/AvailabilityViewer/HoverTooltip.js +0 -34
  94. package/src/js/components/AvailabilityViewer/LabelColumn.js +0 -53
  95. package/src/js/components/AvailabilityViewer/LabelItem.js +0 -73
  96. package/src/js/components/AvailabilityViewer/Legend.js +0 -79
  97. package/src/js/components/AvailabilityViewer/Loading.js +0 -57
  98. package/src/js/components/AvailabilityViewer/MonthLabels.js +0 -43
  99. package/src/js/components/AvailabilityViewer/Navigation.js +0 -138
  100. package/src/js/components/AvailabilityViewer/Overlay.js +0 -60
  101. package/src/js/components/AvailabilityViewer/Preloading.js +0 -66
  102. package/src/js/components/AvailabilityViewer/SelectedSlot.js +0 -106
  103. package/src/js/components/AvailabilityViewer/SelectedSlots.js +0 -72
  104. package/src/js/components/AvailabilityViewer/SelectionMask.js +0 -44
  105. package/src/js/components/AvailabilityViewer/Slot.js +0 -237
  106. package/src/js/components/AvailabilityViewer/SlotFreeSelect.js +0 -115
  107. package/src/js/components/AvailabilityViewer/Slots.js +0 -57
  108. package/src/js/components/AvailabilityViewer/TimeExpander.js +0 -93
  109. package/src/js/components/AvailabilityViewer/TimeLines.js +0 -74
  110. package/src/js/components/AvailabilityViewer/TimeSelector.js +0 -243
  111. package/src/js/components/AvailabilityViewer/TimeSelectorTrigger.js +0 -42
  112. package/src/js/components/AvailabilityViewer/TimeZoneDisplay.js +0 -28
  113. package/src/js/components/AvailabilityViewer/ToggleIcon.js +0 -41
  114. package/src/js/components/AvailabilityViewer/Tooltip.js +0 -65
  115. package/src/js/components/AvailabilityViewer/Week.js +0 -255
  116. package/src/js/components/AvailabilityViewer/WeekWrapper.js +0 -132
  117. package/src/js/components/AvailabilityViewer/contexts/page-context.js +0 -17
  118. package/src/js/components/AvailabilityViewer/contexts/page-reducer.js +0 -28
  119. package/src/js/components/AvailabilityViewer/contexts/selection-context.js +0 -25
  120. package/src/js/components/AvailabilityViewer/contexts/selection-reducer.js +0 -18
  121. package/src/js/components/CalendarSync/Active.js +0 -57
  122. package/src/js/components/CalendarSync/AddToggle.js +0 -72
  123. package/src/js/components/CalendarSync/CalendarSync.js +0 -215
  124. package/src/js/components/CalendarSync/EditToggle.js +0 -71
  125. package/src/js/components/CalendarSync/Footer.js +0 -31
  126. package/src/js/components/CalendarSync/Inactive.js +0 -66
  127. package/src/js/components/CalendarSync/Loading.js +0 -52
  128. package/src/js/components/CalendarSync/Pending.js +0 -74
  129. package/src/js/components/CalendarSync/ProfileStatus.js +0 -33
  130. package/src/js/components/CalendarSync/Profiles.js +0 -109
  131. package/src/js/components/CalendarSync/ProviderLogo.js +0 -28
  132. package/src/js/components/CalendarSync/Providers.js +0 -80
  133. package/src/js/components/CalendarSync/RemoveLink.js +0 -96
  134. package/src/js/components/CalendarSync/SelectProvider.js +0 -25
  135. package/src/js/components/CalendarSync/contexts/status-reducer.js +0 -74
  136. package/src/js/components/DateTimePicker/Calendar.js +0 -127
  137. package/src/js/components/DateTimePicker/CalendarHeader.js +0 -80
  138. package/src/js/components/DateTimePicker/Confirm.js +0 -106
  139. package/src/js/components/DateTimePicker/DateTimePicker.js +0 -131
  140. package/src/js/components/DateTimePicker/DayButton.js +0 -38
  141. package/src/js/components/DateTimePicker/DayHeadings.js +0 -33
  142. package/src/js/components/DateTimePicker/Details.js +0 -33
  143. package/src/js/components/DateTimePicker/Error.js +0 -39
  144. package/src/js/components/DateTimePicker/Loading.js +0 -20
  145. package/src/js/components/DateTimePicker/LoadingCalendar.js +0 -21
  146. package/src/js/components/DateTimePicker/NoSlotsFound.js +0 -16
  147. package/src/js/components/DateTimePicker/SequencedSlotButton.js +0 -97
  148. package/src/js/components/DateTimePicker/SlotButton.js +0 -55
  149. package/src/js/components/DateTimePicker/SlotsList.js +0 -45
  150. package/src/js/components/DateTimePicker/Wrapper.js +0 -281
  151. package/src/js/components/DateTimePicker/contexts/status-context.js +0 -19
  152. package/src/js/components/DateTimePicker/contexts/status-reducer.js +0 -276
  153. package/src/js/components/DateTimePicker/contexts/theme-context.js +0 -33
  154. package/src/js/components/DateTimePicker/helpers/theming.js +0 -49
  155. package/src/js/components/DateTimePicker/scss/_base.buttons.scss +0 -58
  156. package/src/js/components/DateTimePicker/scss/_base.layout.scss +0 -28
  157. package/src/js/components/DateTimePicker/scss/_base.theme.scss +0 -17
  158. package/src/js/components/DateTimePicker/scss/_components.calendargrid.scss +0 -78
  159. package/src/js/components/DateTimePicker/scss/_components.calendarheader.scss +0 -71
  160. package/src/js/components/DateTimePicker/scss/_components.confirm.scss +0 -40
  161. package/src/js/components/DateTimePicker/scss/_components.details.scss +0 -20
  162. package/src/js/components/DateTimePicker/scss/_components.error.scss +0 -34
  163. package/src/js/components/DateTimePicker/scss/_components.loading.scss +0 -36
  164. package/src/js/components/DateTimePicker/scss/_components.slotslist.scss +0 -43
  165. package/src/js/components/DateTimePicker/scss/_components.timezoneselector.scss +0 -73
  166. package/src/js/components/DateTimePicker/scss/_generic.reset.scss +0 -18
  167. package/src/js/components/DateTimePicker/scss/_settings.colours.scss +0 -17
  168. package/src/js/components/DateTimePicker/scss/datetimepicker.scss +0 -5
  169. package/src/js/components/DateTimePicker/utils/calendar-keyboard.js +0 -109
  170. package/src/js/components/DateTimePicker/utils/calendar.js +0 -125
  171. package/src/js/components/DateTimePicker/utils/slots.js +0 -288
  172. package/src/js/components/SlotPicker/Confirm.js +0 -160
  173. package/src/js/components/SlotPicker/Days.js +0 -58
  174. package/src/js/components/SlotPicker/Slot.js +0 -72
  175. package/src/js/components/SlotPicker/SlotPicker.js +0 -292
  176. package/src/js/components/SlotPicker/Slots.js +0 -66
  177. package/src/js/components/SlotPicker/TimeSlots.js +0 -91
  178. package/src/js/components/generic/Button.js +0 -26
  179. package/src/js/components/generic/Container.js +0 -33
  180. package/src/js/components/generic/Error.js +0 -77
  181. package/src/js/components/generic/Loading.js +0 -51
  182. package/src/js/components/generic/LoadingSpinner.js +0 -30
  183. package/src/js/components/generic/ShadowScrollbars.js +0 -70
  184. package/src/js/components/generic/TimeZoneSelector.js +0 -158
  185. package/src/js/components/generic/TransitionSlide.js +0 -72
  186. package/src/js/contexts/i18n-context.js +0 -25
  187. package/src/js/contexts/log-context.js +0 -18
  188. package/src/js/contexts/tz-context.js +0 -18
  189. package/src/js/env.example.js +0 -8
  190. package/src/js/helpers/colors.js +0 -33
  191. package/src/js/helpers/comparators.AvailabilityViewer.js +0 -27
  192. package/src/js/helpers/connections.js +0 -370
  193. package/src/js/helpers/events.js +0 -166
  194. package/src/js/helpers/functional.js +0 -4
  195. package/src/js/helpers/generator.js +0 -107
  196. package/src/js/helpers/i18n.js +0 -153
  197. package/src/js/helpers/init.Agenda.js +0 -55
  198. package/src/js/helpers/init.AvailabilityRules.js +0 -195
  199. package/src/js/helpers/init.AvailabilityViewer.js +0 -215
  200. package/src/js/helpers/init.CalendarSync.js +0 -83
  201. package/src/js/helpers/init.DateTimePicker.js +0 -219
  202. package/src/js/helpers/init.SlotPicker.js +0 -89
  203. package/src/js/helpers/init.js +0 -308
  204. package/src/js/helpers/logging.js +0 -78
  205. package/src/js/helpers/mocks.js +0 -871
  206. package/src/js/helpers/slots.js +0 -340
  207. package/src/js/helpers/slots.rules.js +0 -220
  208. package/src/js/helpers/theming.js +0 -93
  209. package/src/js/helpers/translations.js +0 -42
  210. package/src/js/helpers/tz-list.js +0 -136
  211. package/src/js/helpers/utils.AvailabilityRules.js +0 -110
  212. package/src/js/helpers/utils.AvailabilityViewer.js +0 -789
  213. package/src/js/helpers/utils.CalendarSync.js +0 -199
  214. package/src/js/helpers/utils.js +0 -76
  215. package/src/js/hooks/useWindowSize.js +0 -20
  216. package/src/js/main.js +0 -133
  217. package/src/js/next.js +0 -37
  218. package/src/js/styles/_settings.utils.scss +0 -82
  219. package/src/js/styles/colors.js +0 -13
  220. package/src/js/styles/global.js +0 -49
  221. package/src/js/styles/utils.js +0 -81
  222. package/src/js/translations/de/agenda.json +0 -12
  223. package/src/js/translations/de/availability_rules.json +0 -18
  224. package/src/js/translations/de/availability_viewer.json +0 -14
  225. package/src/js/translations/de/calendar_sync.json +0 -14
  226. package/src/js/translations/de/core.json +0 -15
  227. package/src/js/translations/de/date_time_picker.json +0 -14
  228. package/src/js/translations/de/slot_picker.json +0 -9
  229. package/src/js/translations/de/time_zones.json +0 -135
  230. package/src/js/translations/en/agenda.json +0 -12
  231. package/src/js/translations/en/availability_rules.json +0 -18
  232. package/src/js/translations/en/availability_viewer.json +0 -14
  233. package/src/js/translations/en/calendar_sync.json +0 -14
  234. package/src/js/translations/en/core.json +0 -23
  235. package/src/js/translations/en/date_time_picker.json +0 -15
  236. package/src/js/translations/en/slot_picker.json +0 -9
  237. package/src/js/translations/en/time_zones.json +0 -17
  238. package/src/js/translations/es/agenda.json +0 -12
  239. package/src/js/translations/es/availability_rules.json +0 -18
  240. package/src/js/translations/es/availability_viewer.json +0 -14
  241. package/src/js/translations/es/calendar_sync.json +0 -14
  242. package/src/js/translations/es/core.json +0 -15
  243. package/src/js/translations/es/date_time_picker.json +0 -14
  244. package/src/js/translations/es/slot_picker.json +0 -9
  245. package/src/js/translations/es/time_zones.json +0 -203
  246. package/src/js/translations/fr/agenda.json +0 -12
  247. package/src/js/translations/fr/availability_rules.json +0 -18
  248. package/src/js/translations/fr/availability_viewer.json +0 -14
  249. package/src/js/translations/fr/calendar_sync.json +0 -14
  250. package/src/js/translations/fr/core.json +0 -15
  251. package/src/js/translations/fr/date_time_picker.json +0 -14
  252. package/src/js/translations/fr/slot_picker.json +0 -9
  253. package/src/js/translations/fr/time_zones.json +0 -161
  254. package/src/js/translations/fr-CA/agenda.json +0 -12
  255. package/src/js/translations/fr-CA/availability_rules.json +0 -18
  256. package/src/js/translations/fr-CA/availability_viewer.json +0 -14
  257. package/src/js/translations/fr-CA/calendar_sync.json +0 -14
  258. package/src/js/translations/fr-CA/core.json +0 -23
  259. package/src/js/translations/fr-CA/date_time_picker.json +0 -14
  260. package/src/js/translations/fr-CA/slot_picker.json +0 -9
  261. package/src/js/translations/fr-CA/time_zones.json +0 -163
  262. package/src/js/translations/it/agenda.json +0 -12
  263. package/src/js/translations/it/availability_rules.json +0 -18
  264. package/src/js/translations/it/availability_viewer.json +0 -14
  265. package/src/js/translations/it/calendar_sync.json +0 -14
  266. package/src/js/translations/it/core.json +0 -15
  267. package/src/js/translations/it/date_time_picker.json +0 -14
  268. package/src/js/translations/it/slot_picker.json +0 -9
  269. package/src/js/translations/it/time_zones.json +0 -126
  270. package/src/js/translations/ja/agenda.json +0 -12
  271. package/src/js/translations/ja/availability_rules.json +0 -18
  272. package/src/js/translations/ja/availability_viewer.json +0 -14
  273. package/src/js/translations/ja/calendar_sync.json +0 -14
  274. package/src/js/translations/ja/core.json +0 -15
  275. package/src/js/translations/ja/date_formats.json +0 -5
  276. package/src/js/translations/ja/date_time_picker.json +0 -14
  277. package/src/js/translations/ja/slot_picker.json +0 -9
  278. package/src/js/translations/ja/time_zones.json +0 -435
  279. package/src/js/translations/nl/agenda.json +0 -12
  280. package/src/js/translations/nl/availability_rules.json +0 -18
  281. package/src/js/translations/nl/availability_viewer.json +0 -14
  282. package/src/js/translations/nl/calendar_sync.json +0 -14
  283. package/src/js/translations/nl/core.json +0 -15
  284. package/src/js/translations/nl/date_time_picker.json +0 -14
  285. package/src/js/translations/nl/slot_picker.json +0 -9
  286. package/src/js/translations/nl/time_zones.json +0 -118
  287. package/src/js/translations/ru/agenda.json +0 -12
  288. package/src/js/translations/ru/availability_rules.json +0 -18
  289. package/src/js/translations/ru/availability_viewer.json +0 -14
  290. package/src/js/translations/ru/calendar_sync.json +0 -14
  291. package/src/js/translations/ru/core.json +0 -15
  292. package/src/js/translations/ru/date_time_picker.json +0 -14
  293. package/src/js/translations/ru/slot_picker.json +0 -9
  294. package/src/js/translations/ru/time_zones.json +0 -435
  295. package/src/js/translations/sv/agenda.json +0 -12
  296. package/src/js/translations/sv/availability_rules.json +0 -18
  297. package/src/js/translations/sv/availability_viewer.json +0 -14
  298. package/src/js/translations/sv/calendar_sync.json +0 -14
  299. package/src/js/translations/sv/core.json +0 -15
  300. package/src/js/translations/sv/date_time_picker.json +0 -14
  301. package/src/js/translations/sv/slot_picker.json +0 -9
  302. package/src/js/translations/sv/time_zones.json +0 -136
  303. package/tests/AvailabilityRules/AvailabilityRules.test.js +0 -39
  304. package/tests/AvailabilityRules/__snapshots__/AvailabilityRules.test.js.snap +0 -1045
  305. package/tests/AvailabilityViewer/Navigation.test.js +0 -130
  306. package/tests/AvailabilityViewer/contexts/page-reducer.test.js +0 -87
  307. package/tests/AvailabilityViewer/reducer.test.js +0 -73
  308. package/tests/CalendarSync/Active.test.js +0 -25
  309. package/tests/CalendarSync/AddToggle.test.js +0 -57
  310. package/tests/CalendarSync/EditToggle.test.js +0 -57
  311. package/tests/CalendarSync/Inactive.test.js +0 -26
  312. package/tests/CalendarSync/Pending.test.js +0 -25
  313. package/tests/CalendarSync/ProviderLogo.test.js +0 -95
  314. package/tests/CalendarSync/__snapshots__/Active.test.js.snap +0 -61
  315. package/tests/CalendarSync/__snapshots__/Inactive.test.js.snap +0 -78
  316. package/tests/CalendarSync/__snapshots__/Pending.test.js.snap +0 -90
  317. package/tests/CalendarSync/__snapshots__/ProviderLogo.test.js.snap +0 -267
  318. package/tests/CalendarSync/init.CalendarSync.test.js +0 -302
  319. package/tests/CalendarSync/mocks/theme.js +0 -14
  320. package/tests/CalendarSync/status-reducer.test.js +0 -435
  321. package/tests/DateTimePicker/SequencedSlotButton.test.js +0 -157
  322. package/tests/DateTimePicker/SlotButton.test.js +0 -118
  323. package/tests/DateTimePicker/contexts/status-reducer.test.js +0 -1036
  324. package/tests/DateTimePicker/dummy-data.js +0 -883
  325. package/tests/DateTimePicker/utils.test.js +0 -515
  326. package/tests/colors.test.js +0 -70
  327. package/tests/components/TimezoneSelector.test.js +0 -124
  328. package/tests/components/main.test.js +0 -203
  329. package/tests/components/rtl-utils.js +0 -32
  330. package/tests/connections.test.js +0 -684
  331. package/tests/events.test.js +0 -472
  332. package/tests/generator.test.js +0 -74
  333. package/tests/i18n.test.js +0 -255
  334. package/tests/init.Agenda.test.js +0 -122
  335. package/tests/init.AvailabilityRules.test.js +0 -279
  336. package/tests/init.AvailabilityViewer.test.js +0 -740
  337. package/tests/init.SlotPicker.test.js +0 -166
  338. package/tests/init.test.js +0 -231
  339. package/tests/logging.test.js +0 -235
  340. package/tests/mocks/i18n.js +0 -3
  341. package/tests/mocks/theme.js +0 -3
  342. package/tests/setupJest.js +0 -8
  343. package/tests/slots.rules.test.js +0 -195
  344. package/tests/slots.test.js +0 -278
  345. package/tests/utils.AvailabilityRules.test.js +0 -221
  346. package/tests/utils.AvailabilityViewer.test.js +0 -1800
  347. package/tests/utils.CalendarSync.test.js +0 -277
  348. package/tests/utils.test.js +0 -119
  349. package/webpack.config.js +0 -114
@@ -1,871 +0,0 @@
1
- import moment from "moment-timezone";
2
-
3
- const today = moment(new Date());
4
-
5
- const offsetTime = (days, time) => {
6
- const utcOffset = moment().utcOffset();
7
- const invertedOffset = Math.sign(utcOffset) === -1 ? Math.abs(utcOffset) : 0 - utcOffset;
8
- const offset = invertedOffset / 60;
9
-
10
- const today = moment().add(1, "day").seconds(0);
11
- const startOfWeek = today.startOf("isoWeek").subtract(1, "days").add(7, "days");
12
-
13
- const timeString = `${startOfWeek.clone().format("YYYY-MM-DD")}T${time}:00Z`;
14
- const output = moment(timeString).add(days, "days").add(offset, "hours");
15
- return output.utc().format();
16
- };
17
-
18
- const staticEvents = [
19
- {
20
- calendar_id: "A_CALENDAR_ID_0",
21
- event_uid: "12345",
22
- summary: "An all day get-together",
23
- description: "",
24
- start: today.format(`YYYY-MM-DD`),
25
- end: today.add(1, "days").format(`YYYY-MM-DD`),
26
- location: {
27
- description: "London office",
28
- },
29
- participation_status: "accepted",
30
- transparency: "transparent",
31
- status: "confirmed",
32
- recurring: false,
33
- },
34
- {
35
- calendar_id: "A_CALENDAR_ID_1",
36
- event_uid: "12346",
37
- summary: "Conference",
38
- description: "",
39
- start: today.add(-2, "days").format(`YYYY-MM-DD`),
40
- end: today.add(3, "days").format(`YYYY-MM-DD`),
41
- location: {
42
- description: "Hawksmoor, 10 Basinghall St, London EC2V 5BQ, UK",
43
- },
44
- participation_status: "accepted",
45
- transparency: "transparent",
46
- status: "confirmed",
47
- recurring: false,
48
- },
49
- {
50
- calendar_id: "A_CALENDAR_ID_0",
51
- event_uid: "1232adfsdgsgd1345",
52
- summary: "Morning standup",
53
- description:
54
- "Lorem ipsum dolor sit amet consectetur, adipisicing elit. Eius odio dolore iusto velit eveniet exercitationem cumque consectetur. Iusto cupiditate placeat, illum quod aliquam, fugiat pariatur quidem sed repellendus dicta non?",
55
- start: `${today.add(-2, "days").format(`YYYY-MM-DD`)}T09:26:00`,
56
- end: `${today.format(`YYYY-MM-DD`)}T09:45:00`,
57
- participation_status: "accepted",
58
- transparency: "transparent",
59
- status: "confirmed",
60
- recurring: false,
61
- },
62
- {
63
- calendar_id: "A_CALENDAR_ID_1",
64
- event_uid: "12347bxddghjh",
65
- summary: "1:1 with team leader",
66
- description: "",
67
- start: `${today.format(`YYYY-MM-DD`)}T11:00:00`,
68
- end: `${today.format(`YYYY-MM-DD`)}T11:30:00`,
69
- location: {
70
- description: "London office",
71
- },
72
- participation_status: "accepted",
73
- attendees: [
74
- {
75
- email: "teamleader@biz.com",
76
- display_name: "Mr. Big",
77
- status: "accepted",
78
- },
79
- {
80
- email: "minion@biz.com",
81
- display_name: "Mindless Drone",
82
- status: "accepted",
83
- },
84
- ],
85
- transparency: "opaque",
86
- status: "confirmed",
87
- recurring: false,
88
- },
89
- {
90
- calendar_id: "A_CALENDAR_ID_0",
91
- event_uid: "evt_external_5b97c80a5c92eb4e31968f9b",
92
- summary: "Lunch with client",
93
- description: "",
94
- start: `${today.format(`YYYY-MM-DD`)}T12:00:00`,
95
- end: `${today.format(`YYYY-MM-DD`)}T13:30:00`,
96
- deleted: false,
97
- created: "2018-09-11T13:50:02Z",
98
- updated: "2018-09-12T11:19:06Z",
99
- event_private: false,
100
- location: {
101
- description: "Hawksmoor, 10 Basinghall St, London EC2V 5BQ, UK",
102
- },
103
- participation_status: "accepted",
104
- attendees: [
105
- {
106
- email: "ceo@client.com",
107
- display_name: null,
108
- status: "accepted",
109
- },
110
- {
111
- email: "cto@client.com",
112
- display_name: null,
113
- status: "accepted",
114
- },
115
- {
116
- email: "teamleader@biz.com",
117
- display_name: "Mr. Big",
118
- status: "accepted",
119
- },
120
- {
121
- email: "tom@biz.com",
122
- display_name: "Mindless Drone",
123
- status: "accepted",
124
- },
125
- ],
126
- organizer: {
127
- email: "ceo@client.com",
128
- display_name: null,
129
- },
130
- transparency: "opaque",
131
- status: "confirmed",
132
- categories: [],
133
- recurring: false,
134
- options: {
135
- delete: false,
136
- update: false,
137
- change_participation_status: true,
138
- },
139
- },
140
- {
141
- calendar_id: "A_CALENDAR_ID_0",
142
- event_uid: "12347",
143
- summary: "Request for meeting",
144
- description:
145
- "Lorem ipsum dolor sit amet consectetur, adipisicing elit. Eius odio dolore iusto velit eveniet exercitationem cumque consectetur. Iusto cupiditate placeat, illum quod aliquam, fugiat pariatur quidem sed repellendus dicta non?",
146
- start: `${today.format(`YYYY-MM-DD`)}T16:00:00`,
147
- end: `${today.format(`YYYY-MM-DD`)}T16:30:00`,
148
- participation_status: "needs_action",
149
- transparency: "opaque",
150
- status: "confirmed",
151
- recurring: false,
152
- },
153
- {
154
- calendar_id: "A_CALENDAR_ID_0",
155
- event_uid: "12321345",
156
- summary: "Check the servers",
157
- description:
158
- "Lorem ipsum dolor sit amet consectetur, adipisicing elit. Eius odio dolore iusto velit eveniet exercitationem cumque consectetur. Iusto cupiditate placeat, illum quod aliquam, fugiat pariatur quidem sed repellendus dicta non?",
159
- start: `${today.format(`YYYY-MM-DD`)}T15:45:00`,
160
- end: `${today.format(`YYYY-MM-DD`)}T15:50:00`,
161
- participation_status: "accepted",
162
- transparency: "transparent",
163
- status: "confirmed",
164
- recurring: false,
165
- },
166
- {
167
- calendar_id: "A_CALENDAR_ID_1",
168
- event_uid: "12321345",
169
- summary: "Flight AB1234: LHR - LAX",
170
- start: `${today.format(`YYYY-MM-DD`)}T16:05:00`,
171
- end: `${today.format(`YYYY-MM-DD`)}T23:35:00`,
172
- participation_status: "accepted",
173
- transparency: "transparent",
174
- status: "confirmed",
175
- recurring: false,
176
- },
177
- ];
178
-
179
- const staticUserinfo = {
180
- sub: "acc_01234567890",
181
- email: "example@cronofy.com",
182
- name: "PROFILE_NAME",
183
- zoneinfo: "Europe/London",
184
- "cronofy.type": "account",
185
- "cronofy.data": {
186
- authorization: { scope: "read_write" },
187
- profiles: [
188
- {
189
- provider_name: "google",
190
- provider_service: "google",
191
- profile_id: "A_PROFILE_ID",
192
- profile_name: "example@cronofy.com",
193
- profile_connected: true,
194
- profile_initial_sync_required: false,
195
- profile_calendars: [
196
- {
197
- calendar_id: "A_CALENDAR_ID_0",
198
- calendar_name: "Example Calendar",
199
- calendar_readonly: false,
200
- calendar_deleted: false,
201
- calendar_primary: true,
202
- permission_level: "sandbox",
203
- },
204
- {
205
- calendar_id: "A_CALENDAR_ID_1",
206
- calendar_name: "Another cal",
207
- calendar_readonly: false,
208
- calendar_deleted: false,
209
- calendar_primary: false,
210
- permission_level: "sandbox",
211
- },
212
- ],
213
- },
214
- {
215
- provider_name: "exchange",
216
- provider_service: "office365",
217
- profile_id: "rahul_malviya_outlook",
218
- profile_name: "rahul.malviya@outlook.com",
219
- profile_connected: true,
220
- profile_initial_sync_required: false,
221
- profile_calendars: [
222
- {
223
- calendar_id: "A_CALENDAR_ID_4",
224
- calendar_name: "Holiday",
225
- calendar_readonly: false,
226
- calendar_deleted: false,
227
- calendar_primary: true,
228
- permission_level: "sandbox",
229
- },
230
- {
231
- calendar_id: "A_CALENDAR_ID_5",
232
- calendar_name: "Personal",
233
- calendar_readonly: false,
234
- calendar_deleted: false,
235
- calendar_primary: false,
236
- permission_level: "sandbox",
237
- },
238
- ],
239
- },
240
- {
241
- provider_name: "live_connect",
242
- provider_service: "live_connect",
243
- profile_id: "ya_chin_ho_office365",
244
- profile_name: "ya.chin.ho@office365.com",
245
- profile_connected: true,
246
- profile_initial_sync_required: true,
247
- profile_calendars: [
248
- {
249
- calendar_id: "A_CALENDAR_ID_6",
250
- calendar_name: "Testing",
251
- calendar_readonly: false,
252
- calendar_deleted: false,
253
- calendar_primary: true,
254
- permission_level: "sandbox",
255
- },
256
- ],
257
- },
258
- {
259
- provider_name: "apple",
260
- provider_service: "apple",
261
- profile_id: "monica_ribeiro_itunes",
262
- profile_name: "monica-ribeiro@itunes.com",
263
- profile_connected: false,
264
- profile_initial_sync_required: false,
265
- profile_relink_url:
266
- "https://app.cronofy.com/relink/apple?email=example@cronofy.com",
267
- profile_calendars: [
268
- {
269
- calendar_id: "A_CALENDAR_ID_2",
270
- calendar_name: "Work Hours",
271
- calendar_readonly: false,
272
- calendar_deleted: false,
273
- calendar_primary: true,
274
- permission_level: "sandbox",
275
- },
276
- {
277
- calendar_id: "A_CALENDAR_ID_3",
278
- calendar_name: "Appointments",
279
- calendar_readonly: false,
280
- calendar_deleted: false,
281
- calendar_primary: false,
282
- permission_level: "sandbox",
283
- },
284
- ],
285
- },
286
- ],
287
- },
288
- };
289
-
290
- export const events = new Promise(function (resolve, reject) {
291
- resolve(staticEvents);
292
- });
293
-
294
- export const userinfo = new Promise(function (resolve, reject) {
295
- resolve(staticUserinfo);
296
- });
297
-
298
- export const eventsWithUserinfo = new Promise(function (resolve, reject) {
299
- resolve({
300
- events: staticEvents,
301
- userinfo: staticUserinfo,
302
- });
303
- });
304
-
305
- export const availability = new Promise(function (resolve, reject) {
306
- resolve({
307
- available_periods: [
308
- {
309
- start: offsetTime(1, "09:00"),
310
- end: offsetTime(1, "13:00"),
311
- participants: [
312
- {
313
- sub: "acc_5b97a52a5c92eb0cc0400ffe",
314
- },
315
- {
316
- sub: "test_busy_1000-1030_1430-1540_2200-0600",
317
- },
318
- {
319
- sub: "test_busy_1130-1200_1445-1500",
320
- },
321
- ],
322
- },
323
- {
324
- start: offsetTime(2, "10:00"),
325
- end: offsetTime(2, "13:00"),
326
- participants: [
327
- {
328
- sub: "acc_5b97a52a5c92eb0cc0400ffe",
329
- },
330
- {
331
- sub: "test_busy_1000-1030_1430-1540_2200-0600",
332
- },
333
- {
334
- sub: "test_busy_1130-1200_1445-1500",
335
- },
336
- ],
337
- },
338
- {
339
- start: offsetTime(2, "14:00"),
340
- end: offsetTime(2, "17:30"),
341
- participants: [
342
- {
343
- sub: "acc_5b97a52a5c92eb0cc0400ffe",
344
- },
345
- {
346
- sub: "test_busy_1000-1030_1430-1540_2200-0600",
347
- },
348
- {
349
- sub: "test_busy_1130-1200_1445-1500",
350
- },
351
- ],
352
- },
353
- {
354
- start: offsetTime(3, "09:00"),
355
- end: offsetTime(3, "17:30"),
356
- participants: [
357
- {
358
- sub: "acc_5b97a52a5c92eb0cc0400ffe",
359
- },
360
- {
361
- sub: "test_busy_1000-1030_1430-1540_2200-0600",
362
- },
363
- {
364
- sub: "test_busy_1130-1200_1445-1500",
365
- },
366
- ],
367
- },
368
- {
369
- start: offsetTime(4, "09:00"),
370
- end: offsetTime(4, "17:30"),
371
- participants: [
372
- {
373
- sub: "acc_5b97a52a5c92eb0cc0400ffe",
374
- },
375
- {
376
- sub: "test_busy_1000-1030_1430-1540_2200-0600",
377
- },
378
- {
379
- sub: "test_busy_1130-1200_1445-1500",
380
- },
381
- ],
382
- },
383
- {
384
- start: offsetTime(5, "09:00"),
385
- end: offsetTime(5, "17:30"),
386
- participants: [
387
- {
388
- sub: "acc_5b97a52a5c92eb0cc0400ffe",
389
- },
390
- {
391
- sub: "test_busy_1000-1030_1430-1540_2200-0600",
392
- },
393
- {
394
- sub: "test_busy_1130-1200_1445-1500",
395
- },
396
- ],
397
- },
398
- {
399
- start: offsetTime(8, "09:00"),
400
- end: offsetTime(8, "13:00"),
401
- participants: [
402
- {
403
- sub: "acc_5b97a52a5c92eb0cc0400ffe",
404
- },
405
- {
406
- sub: "test_busy_1000-1030_1430-1540_2200-0600",
407
- },
408
- {
409
- sub: "test_busy_1130-1200_1445-1500",
410
- },
411
- ],
412
- },
413
- {
414
- start: offsetTime(8, "14:00"),
415
- end: offsetTime(8, "17:30"),
416
- participants: [
417
- {
418
- sub: "acc_5b97a52a5c92eb0cc0400ffe",
419
- },
420
- {
421
- sub: "test_busy_1000-1030_1430-1540_2200-0600",
422
- },
423
- {
424
- sub: "test_busy_1130-1200_1445-1500",
425
- },
426
- ],
427
- },
428
- {
429
- start: offsetTime(9, "12:00"),
430
- end: offsetTime(9, "14:30"),
431
- participants: [
432
- {
433
- sub: "acc_5b97a52a5c92eb0cc0400ffe",
434
- },
435
- {
436
- sub: "test_busy_1000-1030_1430-1540_2200-0600",
437
- },
438
- {
439
- sub: "test_busy_1130-1200_1445-1500",
440
- },
441
- ],
442
- },
443
- {
444
- start: offsetTime(9, "15:40"),
445
- end: offsetTime(9, "17:00"),
446
- participants: [
447
- {
448
- sub: "acc_5b97a52a5c92eb0cc0400ffe",
449
- },
450
- {
451
- sub: "test_busy_1000-1030_1430-1540_2200-0600",
452
- },
453
- {
454
- sub: "test_busy_1130-1200_1445-1500",
455
- },
456
- ],
457
- },
458
- {
459
- start: offsetTime(9, "09:00"),
460
- end: offsetTime(9, "10:00"),
461
- participants: [
462
- {
463
- sub: "acc_5b97a52a5c92eb0cc0400ffe",
464
- },
465
- {
466
- sub: "test_busy_1000-1030_1430-1540_2200-0600",
467
- },
468
- {
469
- sub: "test_busy_1130-1200_1445-1500",
470
- },
471
- ],
472
- },
473
- {
474
- start: offsetTime(10, "09:00"),
475
- end: offsetTime(10, "17:30"),
476
- participants: [
477
- {
478
- sub: "acc_5b97a52a5c92eb0cc0400ffe",
479
- },
480
- {
481
- sub: "test_busy_1000-1030_1430-1540_2200-0600",
482
- },
483
- {
484
- sub: "test_busy_1130-1200_1445-1500",
485
- },
486
- ],
487
- },
488
- ],
489
- });
490
- });
491
-
492
- export const availabilitySlots = new Promise(function (resolve, reject) {
493
- const createMockSlot = (day, start, end) => ({
494
- start: offsetTime(day, start),
495
- end: offsetTime(day, end),
496
- participants: [
497
- {
498
- sub: "acc_5b97a52a5c92eb0cc0400ffe",
499
- },
500
- {
501
- sub: "test_busy_1000-1030_1430-1540_2200-0600",
502
- },
503
- {
504
- sub: "test_busy_1130-1200_1445-1500",
505
- },
506
- ],
507
- });
508
-
509
- resolve({
510
- available_slots: [
511
- createMockSlot(1, "09:00", "09:30"),
512
- createMockSlot(1, "09:30", "10:00"),
513
- createMockSlot(1, "10:00", "10:30"),
514
- createMockSlot(1, "10:30", "11:00"),
515
- createMockSlot(1, "11:00", "11:30"),
516
- createMockSlot(1, "11:30", "12:00"),
517
- createMockSlot(1, "12:00", "12:30"),
518
- createMockSlot(1, "12:30", "13:00"),
519
- createMockSlot(1, "14:00", "14:30"),
520
- createMockSlot(2, "14:30", "15:00"),
521
- createMockSlot(2, "15:00", "15:30"),
522
- createMockSlot(2, "16:30", "17:00"),
523
- createMockSlot(2, "17:00", "17:30"),
524
- createMockSlot(3, "08:00", "08:30"),
525
- createMockSlot(3, "08:30", "09:00"),
526
- createMockSlot(3, "09:00", "09:30"),
527
- createMockSlot(3, "09:30", "10:00"),
528
- createMockSlot(3, "10:00", "10:30"),
529
- createMockSlot(3, "10:30", "11:00"),
530
- createMockSlot(3, "11:00", "11:30"),
531
- createMockSlot(3, "11:30", "12:00"),
532
- createMockSlot(3, "12:00", "12:30"),
533
- createMockSlot(3, "12:30", "13:00"),
534
- createMockSlot(3, "14:00", "14:30"),
535
- createMockSlot(4, "09:00", "09:30"),
536
- createMockSlot(4, "09:30", "10:00"),
537
- createMockSlot(4, "10:00", "10:30"),
538
- createMockSlot(4, "12:00", "12:30"),
539
- createMockSlot(4, "12:30", "13:00"),
540
- createMockSlot(4, "16:00", "16:30"),
541
- createMockSlot(5, "09:00", "09:30"),
542
- createMockSlot(5, "09:30", "10:00"),
543
- createMockSlot(5, "10:00", "10:30"),
544
- createMockSlot(5, "10:30", "11:00"),
545
- createMockSlot(5, "11:00", "11:30"),
546
- createMockSlot(5, "11:30", "12:00"),
547
- createMockSlot(5, "12:00", "12:30"),
548
- createMockSlot(5, "13:30", "14:00"),
549
- createMockSlot(5, "14:00", "14:30"),
550
- createMockSlot(8, "09:00", "09:30"),
551
- createMockSlot(8, "09:30", "10:00"),
552
- createMockSlot(8, "10:00", "10:30"),
553
- createMockSlot(8, "10:30", "11:00"),
554
- createMockSlot(8, "11:00", "11:30"),
555
- createMockSlot(8, "14:00", "14:30"),
556
- createMockSlot(9, "09:00", "09:30"),
557
- createMockSlot(9, "09:30", "10:00"),
558
- createMockSlot(9, "10:00", "10:30"),
559
- createMockSlot(9, "10:30", "11:00"),
560
- createMockSlot(9, "11:00", "11:30"),
561
- ],
562
- });
563
- });
564
-
565
- export const sequencedAvailabilitySlots = new Promise(function (resolve, reject) {
566
- const createMockSequenceSlot = (day, startOne, endOne, startTwo, endTwo) => ({
567
- sequence: [
568
- {
569
- sequence_id: "demo-one",
570
- start: offsetTime(day, startOne),
571
- end: offsetTime(day, endOne),
572
- participants: [
573
- {
574
- sub: "acc_5b97a52a5c92eb0cc0400ffe",
575
- },
576
- ],
577
- },
578
- {
579
- sequence_id: "demo-two",
580
- start: offsetTime(day, startTwo),
581
- end: offsetTime(day, endTwo),
582
- participants: [
583
- {
584
- sub: "acc_5b97a52a5c92eb0cc0400ffe",
585
- },
586
- ],
587
- },
588
- ],
589
- });
590
-
591
- resolve({
592
- available_slots: [
593
- createMockSequenceSlot(1, "09:00", "09:30", "09:30", "10:00"),
594
- createMockSequenceSlot(1, "10:00", "10:30", "10:30", "11:00"),
595
- createMockSequenceSlot(1, "11:00", "11:30", "11:30", "12:00"),
596
- createMockSequenceSlot(1, "12:00", "12:30", "12:30", "13:00"),
597
- createMockSequenceSlot(1, "14:00", "14:30", "14:30", "15:00"),
598
- createMockSequenceSlot(2, "14:30", "15:00", "15:00", "15:30"),
599
- createMockSequenceSlot(2, "16:30", "17:00", "17:00", "17:30"),
600
- createMockSequenceSlot(3, "08:00", "08:30", "08:30", "09:00"),
601
- createMockSequenceSlot(3, "09:00", "09:30", "09:30", "10:00"),
602
- createMockSequenceSlot(3, "10:00", "10:30", "10:30", "11:00"),
603
- createMockSequenceSlot(3, "11:00", "11:30", "11:30", "12:00"),
604
- createMockSequenceSlot(3, "12:00", "12:30", "12:30", "13:00"),
605
- createMockSequenceSlot(3, "14:00", "14:30", "14:30", "15:00"),
606
- createMockSequenceSlot(4, "09:00", "09:30", "09:30", "10:00"),
607
- createMockSequenceSlot(4, "10:00", "10:30", "10:30", "11:00"),
608
- createMockSequenceSlot(4, "12:00", "12:30", "12:30", "13:00"),
609
- createMockSequenceSlot(4, "16:00", "16:30", "16:30", "17:00"),
610
- createMockSequenceSlot(5, "09:00", "09:30", "09:30", "10:00"),
611
- createMockSequenceSlot(5, "10:00", "10:30", "10:30", "11:00"),
612
- createMockSequenceSlot(5, "11:00", "11:30", "11:30", "12:00"),
613
- createMockSequenceSlot(5, "12:00", "12:30", "12:30", "13:00"),
614
- createMockSequenceSlot(5, "13:30", "14:00", "14:00", "14:30"),
615
- createMockSequenceSlot(8, "09:00", "09:30", "09:30", "10:00"),
616
- createMockSequenceSlot(8, "10:00", "10:30", "10:30", "11:00"),
617
- createMockSequenceSlot(8, "11:00", "11:30", "11:30", "12:00"),
618
- createMockSequenceSlot(8, "14:00", "14:30", "14:30", "15:00"),
619
- createMockSequenceSlot(9, "09:00", "09:30", "09:30", "10:00"),
620
- createMockSequenceSlot(9, "10:00", "10:30", "10:30", "11:00"),
621
- createMockSequenceSlot(9, "11:00", "11:30", "11:30", "12:00"),
622
- ],
623
- });
624
- });
625
-
626
- export const availabilityOverlappingSlots = (
627
- interval = 30,
628
- duration = 60,
629
- availablePeriods = false,
630
- tzid
631
- ) =>
632
- new Promise((resolve, reject) => {
633
- if (availablePeriods) {
634
- const dynamicSlots = generativeAvailabilityOverlappingSlots(
635
- interval,
636
- duration,
637
- availablePeriods,
638
- tzid
639
- );
640
- resolve({
641
- available_slots: dynamicSlots,
642
- });
643
- }
644
-
645
- const createMockSlot = (day, start, end) => ({
646
- start: offsetTime(day, start),
647
- end: offsetTime(day, end),
648
- participants: [
649
- {
650
- sub: "acc_5b97a52a5c92eb0cc0400ffe",
651
- },
652
- {
653
- sub: "test_busy_1000-1030_1430-1540_2200-0600",
654
- },
655
- {
656
- sub: "test_busy_1130-1200_1445-1500",
657
- },
658
- ],
659
- });
660
-
661
- const createPeriod = (day, startHour, endHour, interval, duration) => {
662
- const period = [];
663
- const starts = interval === 60 ? [0] : interval === 15 ? [0, 15, 30, 45] : [0, 30];
664
-
665
- for (let i = startHour; i <= endHour; i++) {
666
- const hour = i.toString().padStart(2, "0");
667
- for (let j = 0; j < starts.length; j++) {
668
- const minutes = starts[j].toString().padStart(2, "0");
669
- const endMinutes = ((starts[j] + duration) % 60).toString().padStart(2, "0");
670
- const endHour =
671
- starts[j] + duration >= 60 ? (i + 1).toString().padStart(2, "0") : hour;
672
- const start = `${hour}:${minutes}`;
673
- const end = `${endHour}:${endMinutes}`;
674
- period.push(createMockSlot(day, start, end));
675
- }
676
- }
677
-
678
- return period;
679
- };
680
-
681
- let availableSlots = [
682
- ...createPeriod(1, 9, 10, interval, duration),
683
- ...createPeriod(1, 14, 16, interval, duration),
684
- ...createPeriod(2, 9, 12, interval, duration),
685
- ...createPeriod(2, 15, 16, interval, duration),
686
- ...createPeriod(3, 8, 12, interval, duration),
687
- ...createPeriod(3, 15, 16, interval, duration),
688
- ...createPeriod(4, 9, 11, interval, duration),
689
- ...createPeriod(4, 14, 15, interval, duration),
690
- ...createPeriod(5, 10, 11, interval, duration),
691
- ...createPeriod(5, 13, 14, interval, duration),
692
- ...createPeriod(8, 10, 15, interval, duration),
693
- ...createPeriod(9, 8, 12, interval, duration),
694
- ...createPeriod(9, 15, 16, interval, duration),
695
- ...createPeriod(10, 9, 11, interval, duration),
696
- ...createPeriod(10, 14, 16, interval, duration),
697
- ...createPeriod(11, 9, 12, interval, duration),
698
- ];
699
-
700
- resolve({
701
- available_slots: availableSlots,
702
- });
703
- });
704
-
705
- export const generativeAvailabilityOverlappingSlots = (
706
- interval = 30,
707
- duration = 60,
708
- query,
709
- tzid
710
- ) => {
711
- const createPeriodUsingQuery = (period, interval, duration, tzid, acc = []) => {
712
- // // 80% chance of creating an available slot
713
- // const availableSlot = Math.random() * 100 < 80;
714
- // 100% chance of creating an available slot
715
- const availableSlot = true;
716
-
717
- const slotEnd = moment
718
- .tz(period.start, "YYYY-MM-DDTHH:mm:00Z", tzid)
719
- .add(duration, "minutes");
720
-
721
- const newPeriodStart = moment
722
- .tz(period.start, "YYYY-MM-DDTHH:mm:00Z", tzid)
723
- .add(interval, "minutes")
724
- .utc()
725
- .format("YYYY-MM-DDTHH:mm[:00Z]");
726
-
727
- const end = moment.tz(period.end, "YYYY-MM-DDTHH:mm:00Z", tzid);
728
-
729
- if (slotEnd.diff(end, "minutes") > 0) {
730
- return acc;
731
- }
732
-
733
- if (availableSlot) {
734
- acc.push({
735
- start: period.start,
736
- end: slotEnd.utc().format("YYYY-MM-DDTHH:mm[:00Z]"),
737
- participants: [
738
- {
739
- sub: "acc_5b97a52a5c92eb0cc0400ffe",
740
- },
741
- {
742
- sub: "test_busy_1000-1030_1430-1540_2200-0600",
743
- },
744
- {
745
- sub: "test_busy_1130-1200_1445-1500",
746
- },
747
- ],
748
- });
749
- }
750
-
751
- return createPeriodUsingQuery(
752
- {
753
- ...period,
754
- start: newPeriodStart,
755
- },
756
- interval,
757
- duration,
758
- tzid,
759
- acc
760
- );
761
- };
762
- const calculatedSlots = query
763
- .map(period => createPeriodUsingQuery(period, interval, duration, tzid))
764
- .reduce((curr, acc) => [...acc, ...curr]);
765
-
766
- return calculatedSlots;
767
- };
768
-
769
- export const default_availability_rules = [
770
- {
771
- day: "monday",
772
- start_time: "09:00",
773
- end_time: "17:00",
774
- },
775
- {
776
- day: "tuesday",
777
- start_time: "09:00",
778
- end_time: "17:00",
779
- },
780
- {
781
- day: "wednesday",
782
- start_time: "09:00",
783
- end_time: "17:00",
784
- },
785
- {
786
- day: "thursday",
787
- start_time: "09:00",
788
- end_time: "17:00",
789
- },
790
- {
791
- day: "friday",
792
- start_time: "09:00",
793
- end_time: "17:00",
794
- },
795
- ];
796
-
797
- export const availability_rules = tzid =>
798
- new Promise(function (resolve, reject) {
799
- const timezone = tzid || moment.tz.guess();
800
- resolve({
801
- availability_rule: {
802
- availability_rule_id: "default",
803
- tzid: timezone,
804
- calendar_ids: ["A_CALENDAR_ID_0"],
805
- weekly_periods: default_availability_rules,
806
- },
807
- });
808
- });
809
-
810
- export const revokeProfile = () =>
811
- new Promise(resolve => {
812
- setTimeout(
813
- () =>
814
- resolve({
815
- status: 202,
816
- }),
817
- 1000
818
- );
819
- });
820
-
821
- export const queryForDateTimePicker = {
822
- participants: [
823
- {
824
- sub: "acc_5b97a52a5c92eb0cc0400ffe",
825
- },
826
- {
827
- sub: "test_busy_1000-1030_1430-1540_2200-0600",
828
- },
829
- {
830
- sub: "test_busy_1130-1200_1445-1500",
831
- },
832
- ],
833
- query_periods: [{ start: offsetTime(1, "09:00"), end: offsetTime(9, "11:30") }],
834
- required_duration: { minutes: 30 },
835
- };
836
-
837
- export const sequencedQueryForDateTimePicker = {
838
- sequence: [
839
- {
840
- sequence_id: "demo-one",
841
- sequence_title: "Demo Event One",
842
- ordinal: 1,
843
- participants: [
844
- {
845
- members: [
846
- {
847
- sub: "acc_5b97a52a5c92eb0cc0400ffe",
848
- },
849
- ],
850
- },
851
- ],
852
- required_duration: { minutes: 30 },
853
- },
854
- {
855
- sequence_id: "demo-two",
856
- sequence_title: "Demo Event Two",
857
- ordinal: 2,
858
- participants: [
859
- {
860
- members: [
861
- {
862
- sub: "acc_5b97a52a5c92eb0cc0400ffe",
863
- },
864
- ],
865
- },
866
- ],
867
- required_duration: { minutes: 30 },
868
- },
869
- ],
870
- query_periods: [{ start: offsetTime(1, "09:00"), end: offsetTime(9, "11:30") }],
871
- };