@livepreso/api 6.40.0 → 6.43.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (446) hide show
  1. package/.eslintrc.js +5 -0
  2. package/.rush/temp/build-cache-tar.log +7 -0
  3. package/.rush/temp/package-deps_build.json +170 -0
  4. package/.rush/temp/shrinkwrap-deps.json +846 -0
  5. package/CHANGELOG.json +41 -0
  6. package/CHANGELOG.md +25 -0
  7. package/api.build.log +15 -0
  8. package/babel.config.js +9 -18
  9. package/cjs/api.js +1 -1
  10. package/cjs/api.js.map +1 -1
  11. package/cjs/api.spec.js +2 -2
  12. package/cjs/api.spec.js.map +1 -1
  13. package/cjs/auth.js +6 -5
  14. package/cjs/auth.js.map +1 -1
  15. package/cjs/auth.spec.js +25 -23
  16. package/cjs/auth.spec.js.map +1 -1
  17. package/cjs/caching.js +3 -3
  18. package/cjs/collections/activity.js +22 -27
  19. package/cjs/collections/activity.js.map +1 -1
  20. package/cjs/collections/adjunct-sections.js +2 -2
  21. package/cjs/collections/adjunct-sections.js.map +1 -1
  22. package/cjs/collections/adjunct-slides.js +2 -2
  23. package/cjs/collections/adjunct-slides.js.map +1 -1
  24. package/cjs/collections/adjunct-sub-slides.js +2 -2
  25. package/cjs/collections/adjunct-sub-slides.js.map +1 -1
  26. package/cjs/collections/appointment-adjunct-tags.js +28 -0
  27. package/cjs/collections/appointment-adjunct-tags.js.map +1 -0
  28. package/cjs/collections/appointment-deckversion-tags.js +28 -0
  29. package/cjs/collections/appointment-deckversion-tags.js.map +1 -0
  30. package/cjs/collections/appointment-duplicates.js +2 -2
  31. package/cjs/collections/appointment-duplicates.js.map +1 -1
  32. package/cjs/collections/appointment-editors.js +2 -2
  33. package/cjs/collections/appointment-editors.js.map +1 -1
  34. package/cjs/collections/appointment-section-tags.js +28 -0
  35. package/cjs/collections/appointment-section-tags.js.map +1 -0
  36. package/cjs/collections/appointment-slide-tags.js +28 -0
  37. package/cjs/collections/appointment-slide-tags.js.map +1 -0
  38. package/cjs/collections/appointment-tags.js +208 -0
  39. package/cjs/collections/appointment-tags.js.map +1 -0
  40. package/cjs/collections/appointments.js +10 -6
  41. package/cjs/collections/appointments.js.map +1 -1
  42. package/cjs/collections/assets.js +2 -2
  43. package/cjs/collections/assets.js.map +1 -1
  44. package/cjs/collections/auto-adjuncts.js +7 -3
  45. package/cjs/collections/auto-adjuncts.js.map +1 -1
  46. package/cjs/collections/base.js +30 -25
  47. package/cjs/collections/base.js.map +1 -1
  48. package/cjs/collections/base.spec.js +71 -123
  49. package/cjs/collections/base.spec.js.map +1 -1
  50. package/cjs/collections/cms-vals.js +2 -2
  51. package/cjs/collections/cms-vals.js.map +1 -1
  52. package/cjs/collections/contacts.js +2 -2
  53. package/cjs/collections/contacts.js.map +1 -1
  54. package/cjs/collections/created-assets.js +2 -2
  55. package/cjs/collections/created-assets.js.map +1 -1
  56. package/cjs/collections/customers.js +2 -2
  57. package/cjs/collections/customers.js.map +1 -1
  58. package/cjs/collections/deck-notes.js +2 -2
  59. package/cjs/collections/deck-notes.js.map +1 -1
  60. package/cjs/collections/deck-versions.js +20 -8
  61. package/cjs/collections/deck-versions.js.map +1 -1
  62. package/cjs/collections/decks.js +2 -2
  63. package/cjs/collections/decks.js.map +1 -1
  64. package/cjs/collections/deleted-assets.js +2 -2
  65. package/cjs/collections/deleted-assets.js.map +1 -1
  66. package/cjs/collections/dispatches.js +4 -4
  67. package/cjs/collections/dispatches.js.map +1 -1
  68. package/cjs/collections/event-objects.js +2 -2
  69. package/cjs/collections/event-objects.js.map +1 -1
  70. package/cjs/collections/events.js +2 -2
  71. package/cjs/collections/events.js.map +1 -1
  72. package/cjs/collections/groups.js +2 -2
  73. package/cjs/collections/groups.js.map +1 -1
  74. package/cjs/collections/images.js +2 -2
  75. package/cjs/collections/images.js.map +1 -1
  76. package/cjs/collections/locations.js +2 -2
  77. package/cjs/collections/locations.js.map +1 -1
  78. package/cjs/collections/opportunities.js +2 -2
  79. package/cjs/collections/opportunities.js.map +1 -1
  80. package/cjs/collections/pack-diffs.js +2 -2
  81. package/cjs/collections/pack-diffs.js.map +1 -1
  82. package/cjs/collections/packs.js +2 -2
  83. package/cjs/collections/packs.js.map +1 -1
  84. package/cjs/collections/presets.js +2 -2
  85. package/cjs/collections/presets.js.map +1 -1
  86. package/cjs/collections/section-selections.js +2 -2
  87. package/cjs/collections/section-selections.js.map +1 -1
  88. package/cjs/collections/sections.js +2 -2
  89. package/cjs/collections/sections.js.map +1 -1
  90. package/cjs/collections/slide-selections.js +2 -2
  91. package/cjs/collections/slide-selections.js.map +1 -1
  92. package/cjs/collections/slides.js +2 -2
  93. package/cjs/collections/slides.js.map +1 -1
  94. package/cjs/collections/snapshots.js +2 -2
  95. package/cjs/collections/snapshots.js.map +1 -1
  96. package/cjs/collections/sub-slides.js +2 -2
  97. package/cjs/collections/sub-slides.js.map +1 -1
  98. package/cjs/collections/tags.js +28 -0
  99. package/cjs/collections/tags.js.map +1 -0
  100. package/cjs/collections/teams.js +2 -2
  101. package/cjs/collections/teams.js.map +1 -1
  102. package/cjs/collections/templates.js +2 -2
  103. package/cjs/collections/templates.js.map +1 -1
  104. package/cjs/collections/uploads.js +2 -2
  105. package/cjs/collections/uploads.js.map +1 -1
  106. package/cjs/collections/users.js +2 -2
  107. package/cjs/collections/users.js.map +1 -1
  108. package/cjs/collections.js +115 -0
  109. package/cjs/collections.js.map +1 -1
  110. package/cjs/index.js +3 -0
  111. package/cjs/index.js.map +1 -1
  112. package/cjs/middleware.js.map +1 -1
  113. package/cjs/middlewares/auth.js +10 -6
  114. package/cjs/middlewares/auth.js.map +1 -1
  115. package/cjs/middlewares/base.js +1 -3
  116. package/cjs/middlewares/base.js.map +1 -1
  117. package/cjs/middlewares/json.js +10 -6
  118. package/cjs/middlewares/json.js.map +1 -1
  119. package/cjs/middlewares/redirect.js +10 -6
  120. package/cjs/middlewares/redirect.js.map +1 -1
  121. package/cjs/models/activity-item.js +6 -2
  122. package/cjs/models/activity-item.js.map +1 -1
  123. package/cjs/models/adjunct-section.js +2 -2
  124. package/cjs/models/adjunct-section.js.map +1 -1
  125. package/cjs/models/adjunct-slide.js +2 -2
  126. package/cjs/models/adjunct-slide.js.map +1 -1
  127. package/cjs/models/adjunct-sub-slide.js +2 -2
  128. package/cjs/models/adjunct-sub-slide.js.map +1 -1
  129. package/cjs/models/adjunct.js +2 -2
  130. package/cjs/models/adjunct.js.map +1 -1
  131. package/cjs/models/api.js.map +1 -1
  132. package/cjs/models/appointment-adjunct-tags.js +52 -0
  133. package/cjs/models/appointment-adjunct-tags.js.map +1 -0
  134. package/cjs/models/appointment-deckversion-tags.js +52 -0
  135. package/cjs/models/appointment-deckversion-tags.js.map +1 -0
  136. package/cjs/models/appointment-duplicate.js +8 -3
  137. package/cjs/models/appointment-duplicate.js.map +1 -1
  138. package/cjs/models/appointment-editor.js +2 -2
  139. package/cjs/models/appointment-editor.js.map +1 -1
  140. package/cjs/models/appointment-section-tags.js +52 -0
  141. package/cjs/models/appointment-section-tags.js.map +1 -0
  142. package/cjs/models/appointment-slide-tags.js +52 -0
  143. package/cjs/models/appointment-slide-tags.js.map +1 -0
  144. package/cjs/models/appointment-stats.js +2 -2
  145. package/cjs/models/appointment-stats.js.map +1 -1
  146. package/cjs/models/appointment-tags.js +48 -0
  147. package/cjs/models/appointment-tags.js.map +1 -0
  148. package/cjs/models/appointment-viewing.js +2 -2
  149. package/cjs/models/appointment-viewing.js.map +1 -1
  150. package/cjs/models/appointment.js +16 -7
  151. package/cjs/models/appointment.js.map +1 -1
  152. package/cjs/models/asset.js +2 -2
  153. package/cjs/models/asset.js.map +1 -1
  154. package/cjs/models/auto-adjunct-key-check.js +2 -2
  155. package/cjs/models/auto-adjunct-key-check.js.map +1 -1
  156. package/cjs/models/auto-adjunct.js +2 -2
  157. package/cjs/models/auto-adjunct.js.map +1 -1
  158. package/cjs/models/base.js +25 -36
  159. package/cjs/models/base.js.map +1 -1
  160. package/cjs/models/base.spec.js +45 -45
  161. package/cjs/models/base.spec.js.map +1 -1
  162. package/cjs/models/choicelist.js.map +1 -1
  163. package/cjs/models/cms-val.js.map +1 -1
  164. package/cjs/models/contact.js +2 -2
  165. package/cjs/models/contact.js.map +1 -1
  166. package/cjs/models/customer.js +2 -2
  167. package/cjs/models/customer.js.map +1 -1
  168. package/cjs/models/deck-note.js +2 -2
  169. package/cjs/models/deck-note.js.map +1 -1
  170. package/cjs/models/deck-tags.js +61 -0
  171. package/cjs/models/deck-tags.js.map +1 -0
  172. package/cjs/models/deck-version.js +5 -3
  173. package/cjs/models/deck-version.js.map +1 -1
  174. package/cjs/models/deck.js +6 -3
  175. package/cjs/models/deck.js.map +1 -1
  176. package/cjs/models/dispatch-preview.js +3 -3
  177. package/cjs/models/dispatch-preview.js.map +1 -1
  178. package/cjs/models/dispatch.js +2 -2
  179. package/cjs/models/dispatch.js.map +1 -1
  180. package/cjs/models/envs.js.map +1 -1
  181. package/cjs/models/event-object.js +2 -2
  182. package/cjs/models/event-object.js.map +1 -1
  183. package/cjs/models/event.js +2 -2
  184. package/cjs/models/event.js.map +1 -1
  185. package/cjs/models/feed-data.js +2 -2
  186. package/cjs/models/feed-data.js.map +1 -1
  187. package/cjs/models/file.js +2 -2
  188. package/cjs/models/file.js.map +1 -1
  189. package/cjs/models/group.js +2 -2
  190. package/cjs/models/group.js.map +1 -1
  191. package/cjs/models/handover.js +2 -2
  192. package/cjs/models/handover.js.map +1 -1
  193. package/cjs/models/hosted-preso.js +2 -2
  194. package/cjs/models/hosted-preso.js.map +1 -1
  195. package/cjs/models/image.js +2 -2
  196. package/cjs/models/image.js.map +1 -1
  197. package/cjs/models/location.js +2 -2
  198. package/cjs/models/location.js.map +1 -1
  199. package/cjs/models/manifest-json.js +74 -57
  200. package/cjs/models/manifest-json.js.map +1 -1
  201. package/cjs/models/onshare.js +2 -2
  202. package/cjs/models/onshare.js.map +1 -1
  203. package/cjs/models/opportunity.js +2 -2
  204. package/cjs/models/opportunity.js.map +1 -1
  205. package/cjs/models/pack-diff.js +2 -2
  206. package/cjs/models/pack-diff.js.map +1 -1
  207. package/cjs/models/pack.js +2 -2
  208. package/cjs/models/pack.js.map +1 -1
  209. package/cjs/models/preset.js +22 -2
  210. package/cjs/models/preset.js.map +1 -1
  211. package/cjs/models/refresh-request.js +2 -2
  212. package/cjs/models/refresh-request.js.map +1 -1
  213. package/cjs/models/room.js +2 -2
  214. package/cjs/models/room.js.map +1 -1
  215. package/cjs/models/salesforce-lookup.js +2 -2
  216. package/cjs/models/salesforce-lookup.js.map +1 -1
  217. package/cjs/models/section-selection.js +2 -2
  218. package/cjs/models/section-selection.js.map +1 -1
  219. package/cjs/models/section.js +2 -2
  220. package/cjs/models/section.js.map +1 -1
  221. package/cjs/models/slide-selection.js +2 -2
  222. package/cjs/models/slide-selection.js.map +1 -1
  223. package/cjs/models/slide.js +2 -2
  224. package/cjs/models/slide.js.map +1 -1
  225. package/cjs/models/snapshot.js +2 -2
  226. package/cjs/models/snapshot.js.map +1 -1
  227. package/cjs/models/sub-slide.js +2 -2
  228. package/cjs/models/sub-slide.js.map +1 -1
  229. package/cjs/models/support-ticket.js +2 -2
  230. package/cjs/models/support-ticket.js.map +1 -1
  231. package/cjs/models/tag.js +54 -0
  232. package/cjs/models/tag.js.map +1 -0
  233. package/cjs/models/team.js +2 -2
  234. package/cjs/models/team.js.map +1 -1
  235. package/cjs/models/template.js +2 -2
  236. package/cjs/models/template.js.map +1 -1
  237. package/cjs/models/tenancy.js +2 -2
  238. package/cjs/models/tenancy.js.map +1 -1
  239. package/cjs/models/timing-log.js +20 -41
  240. package/cjs/models/timing-log.js.map +1 -1
  241. package/cjs/models/timing-log.spec.js +18 -86
  242. package/cjs/models/timing-log.spec.js.map +1 -1
  243. package/cjs/models/transcribe-socket.js +2 -2
  244. package/cjs/models/transcribe-socket.js.map +1 -1
  245. package/cjs/models/upload.js +2 -2
  246. package/cjs/models/upload.js.map +1 -1
  247. package/cjs/models/user.js +6 -4
  248. package/cjs/models/user.js.map +1 -1
  249. package/cjs/models/user.spec.js +10 -8
  250. package/cjs/models/user.spec.js.map +1 -1
  251. package/cjs/models.js +148 -0
  252. package/cjs/models.js.map +1 -1
  253. package/cjs/presentation/appointment-presentation.js +13 -5
  254. package/cjs/presentation/appointment-presentation.js.map +1 -1
  255. package/cjs/presentation/base-presentation-collection.js.map +1 -1
  256. package/cjs/presentation/base-presentation-model.js +65 -0
  257. package/cjs/presentation/base-presentation-model.js.map +1 -1
  258. package/cjs/presentation/base-presentation-model.spec.js +87 -0
  259. package/cjs/presentation/base-presentation-model.spec.js.map +1 -1
  260. package/cjs/presentation/presentation-deck.js +31 -20
  261. package/cjs/presentation/presentation-deck.js.map +1 -1
  262. package/cjs/presentation/presentation-deck.spec.js +15 -13
  263. package/cjs/presentation/presentation-deck.spec.js.map +1 -1
  264. package/cjs/presentation/presentation-decks.js +2 -2
  265. package/cjs/presentation/presentation-decks.js.map +1 -1
  266. package/cjs/presentation/presentation-section.js +36 -17
  267. package/cjs/presentation/presentation-section.js.map +1 -1
  268. package/cjs/presentation/presentation-section.spec.js +418 -0
  269. package/cjs/presentation/presentation-section.spec.js.map +1 -0
  270. package/cjs/presentation/presentation-sections.js +2 -2
  271. package/cjs/presentation/presentation-sections.js.map +1 -1
  272. package/cjs/presentation/presentation-slide.js +35 -18
  273. package/cjs/presentation/presentation-slide.js.map +1 -1
  274. package/cjs/presentation/presentation-slide.spec.js +294 -0
  275. package/cjs/presentation/presentation-slide.spec.js.map +1 -0
  276. package/cjs/presentation/presentation-slides.js +2 -2
  277. package/cjs/presentation/presentation-slides.js.map +1 -1
  278. package/cjs/presentation/presentation-subslide.js +11 -7
  279. package/cjs/presentation/presentation-subslide.js.map +1 -1
  280. package/cjs/presentation/presentation-subslide.spec.js +68 -20
  281. package/cjs/presentation/presentation-subslide.spec.js.map +1 -1
  282. package/cjs/presentation/presentation-subslides.js +2 -2
  283. package/cjs/presentation/presentation-subslides.js.map +1 -1
  284. package/cjs/presentation/presentation.js +19 -9
  285. package/cjs/presentation/presentation.js.map +1 -1
  286. package/cjs/presentation.js +10 -0
  287. package/cjs/presentation.js.map +1 -1
  288. package/cjs/state-register.js +11 -1
  289. package/cjs/state-register.js.map +1 -1
  290. package/cjs/sync.js +7 -7
  291. package/cjs/sync.js.map +1 -1
  292. package/cjs/utils.js +7 -7
  293. package/cjs/utils.js.map +1 -1
  294. package/cjs/utils.spec.js.map +1 -1
  295. package/config/rush-project.json +53 -0
  296. package/index.js +0 -1
  297. package/jest.config.js +4 -4
  298. package/package.json +17 -59
  299. package/setup-tests.js +2 -1
  300. package/src/api.js +3 -3
  301. package/src/api.spec.js +3 -4
  302. package/src/auth.js +6 -7
  303. package/src/auth.spec.js +3 -4
  304. package/src/collections/activity.js +5 -6
  305. package/src/collections/adjunct-sections.js +4 -4
  306. package/src/collections/adjunct-slides.js +4 -4
  307. package/src/collections/adjunct-sub-slides.js +2 -2
  308. package/src/collections/appointment-adjunct-tags.js +18 -0
  309. package/src/collections/appointment-deckversion-tags.js +21 -0
  310. package/src/collections/appointment-duplicates.js +2 -2
  311. package/src/collections/appointment-editors.js +2 -2
  312. package/src/collections/appointment-section-tags.js +18 -0
  313. package/src/collections/appointment-slide-tags.js +18 -0
  314. package/src/collections/appointment-tags.js +136 -0
  315. package/src/collections/appointments.js +18 -23
  316. package/src/collections/assets.js +2 -2
  317. package/src/collections/auto-adjuncts.js +5 -5
  318. package/src/collections/base.js +17 -18
  319. package/src/collections/base.spec.js +7 -8
  320. package/src/collections/cms-vals.js +3 -3
  321. package/src/collections/contacts.js +2 -2
  322. package/src/collections/created-assets.js +2 -2
  323. package/src/collections/customers.js +2 -2
  324. package/src/collections/deck-notes.js +2 -2
  325. package/src/collections/deck-versions.js +18 -15
  326. package/src/collections/decks.js +2 -2
  327. package/src/collections/deleted-assets.js +2 -2
  328. package/src/collections/dispatches.js +8 -13
  329. package/src/collections/event-objects.js +2 -2
  330. package/src/collections/events.js +2 -2
  331. package/src/collections/groups.js +2 -2
  332. package/src/collections/images.js +2 -2
  333. package/src/collections/locations.js +2 -2
  334. package/src/collections/opportunities.js +2 -2
  335. package/src/collections/pack-diffs.js +2 -2
  336. package/src/collections/packs.js +2 -2
  337. package/src/collections/presets.js +2 -2
  338. package/src/collections/section-selections.js +4 -4
  339. package/src/collections/sections.js +2 -2
  340. package/src/collections/slide-selections.js +4 -4
  341. package/src/collections/slides.js +2 -2
  342. package/src/collections/snapshots.js +2 -2
  343. package/src/collections/sub-slides.js +2 -2
  344. package/src/collections/tags.js +18 -0
  345. package/src/collections/teams.js +2 -2
  346. package/src/collections/templates.js +2 -2
  347. package/src/collections/uploads.js +2 -2
  348. package/src/collections/users.js +2 -2
  349. package/src/collections.js +6 -0
  350. package/src/index.js +1 -4
  351. package/src/middleware.js +1 -1
  352. package/src/middlewares/json.js +2 -2
  353. package/src/middlewares/redirect.js +1 -2
  354. package/src/models/activity-item.js +6 -6
  355. package/src/models/adjunct-section.js +5 -5
  356. package/src/models/adjunct-slide.js +5 -5
  357. package/src/models/adjunct-sub-slide.js +5 -5
  358. package/src/models/adjunct.js +4 -4
  359. package/src/models/api.js +1 -1
  360. package/src/models/appointment-adjunct-tags.js +41 -0
  361. package/src/models/appointment-deckversion-tags.js +41 -0
  362. package/src/models/appointment-duplicate.js +7 -7
  363. package/src/models/appointment-editor.js +6 -6
  364. package/src/models/appointment-section-tags.js +41 -0
  365. package/src/models/appointment-slide-tags.js +41 -0
  366. package/src/models/appointment-stats.js +5 -5
  367. package/src/models/appointment-tags.js +39 -0
  368. package/src/models/appointment-viewing.js +3 -3
  369. package/src/models/appointment.js +35 -29
  370. package/src/models/asset.js +5 -5
  371. package/src/models/auto-adjunct-key-check.js +5 -5
  372. package/src/models/auto-adjunct.js +4 -4
  373. package/src/models/base.js +36 -37
  374. package/src/models/base.spec.js +61 -62
  375. package/src/models/choicelist.js +2 -2
  376. package/src/models/cms-val.js +3 -3
  377. package/src/models/contact.js +9 -9
  378. package/src/models/customer.js +13 -13
  379. package/src/models/deck-note.js +4 -4
  380. package/src/models/deck-tags.js +52 -0
  381. package/src/models/deck-version.js +9 -8
  382. package/src/models/deck.js +8 -6
  383. package/src/models/dispatch-preview.js +6 -7
  384. package/src/models/dispatch.js +6 -7
  385. package/src/models/envs.js +1 -1
  386. package/src/models/event-object.js +6 -6
  387. package/src/models/event.js +7 -7
  388. package/src/models/feed-data.js +5 -5
  389. package/src/models/file.js +4 -4
  390. package/src/models/group.js +3 -3
  391. package/src/models/handover.js +5 -5
  392. package/src/models/hosted-preso.js +5 -5
  393. package/src/models/image.js +4 -4
  394. package/src/models/location.js +5 -5
  395. package/src/models/manifest-json.js +68 -30
  396. package/src/models/onshare.js +5 -5
  397. package/src/models/opportunity.js +5 -5
  398. package/src/models/pack-diff.js +5 -5
  399. package/src/models/pack.js +4 -4
  400. package/src/models/preset.js +24 -5
  401. package/src/models/refresh-request.js +6 -6
  402. package/src/models/room.js +3 -3
  403. package/src/models/salesforce-lookup.js +3 -3
  404. package/src/models/section-selection.js +6 -6
  405. package/src/models/section.js +7 -7
  406. package/src/models/slide-selection.js +6 -6
  407. package/src/models/slide.js +7 -7
  408. package/src/models/snapshot.js +5 -5
  409. package/src/models/sub-slide.js +5 -5
  410. package/src/models/support-ticket.js +4 -4
  411. package/src/models/tag.js +42 -0
  412. package/src/models/team.js +4 -4
  413. package/src/models/template.js +4 -4
  414. package/src/models/tenancy.js +5 -5
  415. package/src/models/timing-log.js +18 -18
  416. package/src/models/timing-log.spec.js +28 -29
  417. package/src/models/transcribe-socket.js +3 -3
  418. package/src/models/upload.js +3 -3
  419. package/src/models/user.js +24 -20
  420. package/src/models/user.spec.js +2 -2
  421. package/src/models.js +7 -0
  422. package/src/presentation/appointment-presentation.js +14 -10
  423. package/src/presentation/base-presentation-model.js +67 -5
  424. package/src/presentation/base-presentation-model.spec.js +114 -22
  425. package/src/presentation/presentation-deck.js +54 -52
  426. package/src/presentation/presentation-deck.spec.js +26 -27
  427. package/src/presentation/presentation-decks.js +2 -2
  428. package/src/presentation/presentation-section.js +62 -48
  429. package/src/presentation/presentation-section.spec.js +363 -0
  430. package/src/presentation/presentation-sections.js +2 -2
  431. package/src/presentation/presentation-slide.js +51 -36
  432. package/src/presentation/presentation-slide.spec.js +250 -0
  433. package/src/presentation/presentation-slides.js +2 -2
  434. package/src/presentation/presentation-subslide.js +24 -17
  435. package/src/presentation/presentation-subslide.spec.js +40 -12
  436. package/src/presentation/presentation-subslides.js +2 -2
  437. package/src/presentation/presentation.js +27 -15
  438. package/src/state-register.js +7 -0
  439. package/src/sync.js +21 -23
  440. package/src/utils.js +8 -7
  441. package/src/utils.spec.js +15 -15
  442. package/.editorconfig +0 -9
  443. package/.eslintrc +0 -25
  444. package/.prettierrc.js +0 -3
  445. package/jsdoc.json +0 -12
  446. package/yarn.lock +0 -8099
@@ -0,0 +1,136 @@
1
+ import { getState, register } from "../state-register.js";
2
+
3
+ import { BaseCollection } from "./base.js";
4
+ import _ from "lodash";
5
+
6
+ /**
7
+ * @constructor
8
+ * @alias collections.AppointmentTagsCollection
9
+ * @extends collections.BaseCollection
10
+ * @see models.AppointmentTagsModel
11
+ */
12
+ export const AppointmentTagsCollection = BaseCollection.extend(
13
+ /** @lends collections.AppointmentTagsCollection# */ {
14
+ model: "AppointmentTagsModel",
15
+
16
+ tagNameCollectionMapping: {
17
+ deckversion: "AppointmentDeckVersionTagsCollection",
18
+ section: "AppointmentSectionTagsCollection",
19
+ slide: "AppointmentSlideTagsCollection",
20
+ adjunct: "AppointmentAdjunctTagsCollection",
21
+ },
22
+
23
+ _mapResultsToModel(result) {
24
+ // Maps a model from a content specific tag to a more generic one.
25
+ // It's generally the same thing, except instead of something like:
26
+ //
27
+ // slide: "/api/slides/1/"
28
+ //
29
+ // It becomes:
30
+ //
31
+ // content_type: "slide",
32
+ // content_url: "/api/slides/1/"
33
+ //
34
+ // So that we can return the list side by side.
35
+ const AppointmentTagsModel = getState("AppointmentTagsModel");
36
+ const resultType = Object.keys(result).find((key) => {
37
+ return Object.keys(this.tagNameCollectionMapping).includes(key);
38
+ });
39
+ if (!resultType) {
40
+ throw new Error("Unknown type of result found");
41
+ }
42
+ return new AppointmentTagsModel({
43
+ tags: result.tags,
44
+ content_type: resultType,
45
+ content_url: result[resultType],
46
+ appointment: result.appointment,
47
+ user: result.user,
48
+ url: result.url,
49
+ });
50
+ },
51
+
52
+ // These methods don't quite make sense right now, disable it for development.
53
+ async fetchSet() {
54
+ throw new Error("Not implemented");
55
+ },
56
+
57
+ async fetchModels() {
58
+ throw new Error("Not implemented");
59
+ },
60
+
61
+ async delete() {
62
+ throw new Error("Cannot delete using this collection");
63
+ },
64
+
65
+ async save() {
66
+ throw new Error("Not implemented");
67
+ },
68
+
69
+ async fetch(options) {
70
+ const AppointmentModel = getState("AppointmentModel");
71
+
72
+ let hasAppointment =
73
+ this._options?.appointment instanceof AppointmentModel ||
74
+ options?.appointment instanceof AppointmentModel;
75
+
76
+ if (!hasAppointment && this.parent instanceof AppointmentModel) {
77
+ options.appointment = this.parent;
78
+ hasAppointment = true;
79
+ }
80
+
81
+ if (!hasAppointment) {
82
+ throw new Error(
83
+ "Requires an appointment model in collection options to fetch."
84
+ );
85
+ }
86
+
87
+ const tagModels = Object.values(this.tagNameCollectionMapping);
88
+ // Fetch all the separate tag models and combine them into a single collection
89
+ const results = (
90
+ await Promise.all(
91
+ tagModels.map((tagModel) => {
92
+ const Collection = getState(tagModel);
93
+ const tags = new Collection({}, this._options);
94
+ return tags.fetch(options);
95
+ })
96
+ )
97
+ )
98
+ .flatMap((collection) => collection.results)
99
+ .map(this._mapResultsToModel.bind(this));
100
+
101
+ this.add(results);
102
+
103
+ return {
104
+ count: results.length,
105
+ next: null,
106
+ previous: null,
107
+ results: this.toJSON(),
108
+ };
109
+ },
110
+
111
+ // Used by Telepresenter to add the tags in the hostedpreso bundle to
112
+ // the appointment tags collection
113
+ addFromAppointment(appointment) {
114
+ const tagCollectionNames = [
115
+ "appointmentdeckversiontags_set",
116
+ "appointmentsectiontags_set",
117
+ "appointmentslidetags_set",
118
+ "appointmentadjuncttags_set",
119
+ ];
120
+
121
+ // flatMap currently doesn't work in TelePresenter
122
+ const results = _.flatten(
123
+ tagCollectionNames.map((collectionName) => {
124
+ const collection = appointment[collectionName];
125
+ return collection?._data || [];
126
+ })
127
+ ).map(this._mapResultsToModel.bind(this));
128
+
129
+ this.add(results);
130
+ },
131
+ }
132
+ );
133
+
134
+ AppointmentTagsCollection.canBeEmpty = true;
135
+
136
+ register("AppointmentTagsCollection", AppointmentTagsCollection);
@@ -1,11 +1,10 @@
1
1
  import "../models/appointment.js";
2
2
 
3
- import moment from "moment";
4
-
5
3
  import { Auth } from "../auth.js";
4
+ import { BaseCollection } from "./base.js";
6
5
  import log from "../log.js";
6
+ import moment from "moment";
7
7
  import { register } from "../state-register.js";
8
- import { BaseCollection } from "./base.js";
9
8
 
10
9
  /**
11
10
  * @constructor
@@ -47,7 +46,11 @@ export const AppointmentCollection = BaseCollection.extend(
47
46
  ) {
48
47
  return this.fetch({
49
48
  ...options,
50
- data: AppointmentCollection.monthParametersForUser(date, userID, "sort")
49
+ data: AppointmentCollection.monthParametersForUser(
50
+ date,
51
+ userID,
52
+ "sort"
53
+ ),
51
54
  });
52
55
  },
53
56
 
@@ -62,7 +65,7 @@ export const AppointmentCollection = BaseCollection.extend(
62
65
  date,
63
66
  userID,
64
67
  "sort"
65
- )
68
+ ),
66
69
  });
67
70
  },
68
71
 
@@ -78,9 +81,9 @@ export const AppointmentCollection = BaseCollection.extend(
78
81
  date,
79
82
  userID,
80
83
  "created"
81
- )
84
+ ),
82
85
  });
83
- }
86
+ },
84
87
  }
85
88
  );
86
89
 
@@ -93,22 +96,18 @@ export const AppointmentCollection = BaseCollection.extend(
93
96
  * @param {string} [parameter="sort"]
94
97
  * @returns {object}
95
98
  */
96
- AppointmentCollection.fortnightParametersForUser = function(
99
+ AppointmentCollection.fortnightParametersForUser = function (
97
100
  date,
98
101
  userID = Auth.user.id,
99
102
  parameter = "sort"
100
103
  ) {
101
- const dateFrom = moment(date)
102
- .subtract(1, "week")
103
- .format();
104
- const dateTo = moment(date)
105
- .add(1, "week")
106
- .format();
104
+ const dateFrom = moment(date).subtract(1, "week").format();
105
+ const dateTo = moment(date).add(1, "week").format();
107
106
 
108
107
  // The server only returns apts with 'ready' creation status by default
109
108
  const data = {
110
109
  user: userID,
111
- creation_status: ["processing", "ready"]
110
+ creation_status: ["processing", "ready"],
112
111
  };
113
112
 
114
113
  data[`${parameter}_date__gte`] = dateFrom;
@@ -126,22 +125,18 @@ AppointmentCollection.fortnightParametersForUser = function(
126
125
  * @param {string} [parameter="sort"]
127
126
  * @returns {object}
128
127
  */
129
- AppointmentCollection.monthParametersForUser = function(
128
+ AppointmentCollection.monthParametersForUser = function (
130
129
  date,
131
130
  userID = Auth.user.id,
132
131
  parameter = "sort"
133
132
  ) {
134
- const dateFrom = moment(date)
135
- .startOf("month")
136
- .format();
137
- const dateTo = moment(date)
138
- .endOf("month")
139
- .format();
133
+ const dateFrom = moment(date).startOf("month").format();
134
+ const dateTo = moment(date).endOf("month").format();
140
135
 
141
136
  // The server only returns apts with 'ready' creation status by default
142
137
  const data = {
143
138
  user: userID,
144
- creation_status: ["processing", "ready"]
139
+ creation_status: ["processing", "ready"],
145
140
  };
146
141
 
147
142
  data[`${parameter}_date__gte`] = dateFrom;
@@ -1,7 +1,7 @@
1
1
  import "../models/asset.js";
2
2
 
3
- import { register } from "../state-register.js";
4
3
  import { BaseCollection } from "./base.js";
4
+ import { register } from "../state-register.js";
5
5
 
6
6
  /**
7
7
  * @constructor
@@ -11,7 +11,7 @@ import { BaseCollection } from "./base.js";
11
11
  */
12
12
  export const AssetCollection = BaseCollection.extend(
13
13
  /** @lends collections.AssetCollection# */ {
14
- model: "AssetModel"
14
+ model: "AssetModel",
15
15
  }
16
16
  );
17
17
 
@@ -1,8 +1,8 @@
1
1
  import "../models/auto-adjunct.js";
2
2
 
3
3
  import Auth from "../auth.js";
4
- import { register } from "../state-register.js";
5
4
  import { BaseCollection } from "./base.js";
5
+ import { register } from "../state-register.js";
6
6
 
7
7
  /**
8
8
  * @constructor
@@ -19,8 +19,8 @@ export const AutoAdjunctCollection = BaseCollection.extend(
19
19
  return this.fetch({
20
20
  ...options,
21
21
  data: {
22
- deck: deckID
23
- }
22
+ deck: deckID,
23
+ },
24
24
  });
25
25
  },
26
26
 
@@ -39,11 +39,11 @@ export const AutoAdjunctCollection = BaseCollection.extend(
39
39
  // the authorized user is a part of. This is mostly for the case where
40
40
  // a 'global' temp slide admin could end up seeing autoadjuncts for
41
41
  // many teams - which would be increadibly confusing.
42
- opts.data.team = [null].concat(user.team_set.map(team => team.id));
42
+ opts.data.team = [null].concat(user.team_set.map((team) => team.id));
43
43
  }
44
44
 
45
45
  return BaseCollection.prototype.fetch.call(this, opts);
46
- }
46
+ },
47
47
  }
48
48
  );
49
49
 
@@ -1,11 +1,10 @@
1
+ import { Api } from "../api.js";
2
+ import { BaseModel } from "../models/base.js";
1
3
  import Collection from "ampersand-rest-collection";
2
4
  import Promise from "bluebird";
3
5
  import _ from "lodash";
4
- import qs from "qs";
5
-
6
- import { Api } from "../api.js";
7
6
  import log from "../log.js";
8
- import { BaseModel } from "../models/base.js";
7
+ import qs from "qs";
9
8
  import { registeredStates } from "../state-register.js";
10
9
  import { sync } from "../sync.js";
11
10
 
@@ -32,12 +31,12 @@ export const BaseCollection = Collection.extend(
32
31
  urlMatchKeys: {},
33
32
 
34
33
  defaultFetchData: {
35
- per_page: 1000
34
+ per_page: 1000,
36
35
  },
37
36
 
38
37
  constructor(data = {}, opts = {}) {
39
38
  const options = _.defaults(opts, {
40
- data: {}
39
+ data: {},
41
40
  });
42
41
 
43
42
  // We ensure that we pass an array because we don't want the collection constructor to
@@ -175,11 +174,11 @@ export const BaseCollection = Collection.extend(
175
174
  },
176
175
 
177
176
  fetchModels(options = {}) {
178
- return Promise.all(this.models.map(model => model.fetch(options)));
177
+ return Promise.all(this.models.map((model) => model.fetch(options)));
179
178
  },
180
179
 
181
180
  fetchSet(opts = {}) {
182
- const idSet = this.models.map(model => model.id);
181
+ const idSet = this.models.map((model) => model.id);
183
182
 
184
183
  if (!idSet.length) {
185
184
  log.warn(`Tried to fetch ${this.modelName} set with no models`);
@@ -191,14 +190,14 @@ export const BaseCollection = Collection.extend(
191
190
  const options = {
192
191
  data: {
193
192
  ...data,
194
- id: idSet
193
+ id: idSet,
195
194
  },
196
- ...otherOpts
195
+ ...otherOpts,
197
196
  };
198
197
 
199
198
  // Necessary because these models were already initialised before the fetch,
200
199
  // and the children weren't updated correctly with the new data.
201
- return this.fetch(options).tap(data => {
200
+ return this.fetch(options).tap((data) => {
202
201
  this.reset();
203
202
  this.add(data.results);
204
203
  });
@@ -216,13 +215,13 @@ export const BaseCollection = Collection.extend(
216
215
  this._url = options.url;
217
216
  }
218
217
 
219
- return Collection.prototype.fetch.call(this, options).tap(response => {
218
+ return Collection.prototype.fetch.call(this, options).tap((response) => {
220
219
  this._data = response;
221
220
  });
222
221
  },
223
222
 
224
223
  toServer() {
225
- return this.map(function(model) {
224
+ return this.map(function (model) {
226
225
  if (model.toServer) {
227
226
  return model.toServer();
228
227
  } else if (model.serialize) {
@@ -261,7 +260,7 @@ export const BaseCollection = Collection.extend(
261
260
  }
262
261
 
263
262
  return Promise.all(
264
- this.map(model => {
263
+ this.map((model) => {
265
264
  return model.save(model.toServer(), options);
266
265
  })
267
266
  );
@@ -275,7 +274,7 @@ export const BaseCollection = Collection.extend(
275
274
  }
276
275
 
277
276
  return Promise.all(
278
- this.map(model => {
277
+ this.map((model) => {
279
278
  return model.delete(model.toServer(), options);
280
279
  })
281
280
  );
@@ -293,17 +292,17 @@ export const BaseCollection = Collection.extend(
293
292
  // can be passed to the model.
294
293
  //
295
294
  // TODO: Regex match for URLs
296
- return results.map(function(attr) {
295
+ return results.map(function (attr) {
297
296
  return { url: attr };
298
297
  });
299
298
  }
300
299
 
301
300
  return results;
302
- }
301
+ },
303
302
  }
304
303
  );
305
304
 
306
305
  // Make matchesURL available as a static method
307
- BaseCollection.matchesURL = function(url) {
306
+ BaseCollection.matchesURL = function (url) {
308
307
  return this.prototype.matchesURL(url);
309
308
  };
@@ -1,19 +1,18 @@
1
+ import { BaseCollection } from "./base.js";
2
+ import { BaseModel } from "../models/base.js";
1
3
  import { G } from "sp-test/api";
2
4
  import td from "testdouble";
3
5
 
4
- import { BaseModel } from "../models/base.js";
5
- import { BaseCollection } from "./base.js";
6
-
7
6
  it("should parse an array of urls into models", () => {
8
7
  G(BaseModel, "TestModel").extend({ modelName: "tests" });
9
8
  const Collection = G(BaseCollection).extend({
10
- model: "TestModel"
9
+ model: "TestModel",
11
10
  });
12
11
  const collection = new Collection(["/api/tests/1/", "/api/tests/2/"]);
13
12
  expect(collection.models).toHaveLength(2);
14
13
  });
15
14
 
16
- it("should fetch the individual models in the collection", async function() {
15
+ it("should fetch the individual models in the collection", async function () {
17
16
  G(BaseModel, "TestModel");
18
17
  const Collection = G(BaseCollection).extend({ model: "TestModel" });
19
18
  const collection = new Collection([{ id: 1 }, { id: 2 }]);
@@ -86,12 +85,12 @@ it("should query multiple values if using an array", () => {
86
85
  const Collection = G(BaseCollection);
87
86
  const collection = new Collection(
88
87
  {
89
- url: "/api/appointments/"
88
+ url: "/api/appointments/",
90
89
  },
91
90
  {
92
91
  data: {
93
- foo: [1, 2, null]
94
- }
92
+ foo: [1, 2, null],
93
+ },
95
94
  }
96
95
  );
97
96
  expect(collection.url()).toEqual(
@@ -1,8 +1,8 @@
1
1
  import "../models/cms-val.js";
2
2
 
3
3
  import Auth from "../auth.js";
4
- import { register } from "../state-register.js";
5
4
  import { BaseCollection } from "./base.js";
5
+ import { register } from "../state-register.js";
6
6
 
7
7
  /**
8
8
  * @constructor
@@ -29,11 +29,11 @@ export const CMSValCollection = BaseCollection.extend(
29
29
  // the authorized user is a part of. This is mostly for the case where
30
30
  // a 'global' temp slide admin could end up seeing autoadjuncts for
31
31
  // many teams - which would be increadibly confusing.
32
- opts.data.team = [null].concat(user.team_set.map(team => team.id));
32
+ opts.data.team = [null].concat(user.team_set.map((team) => team.id));
33
33
  }
34
34
 
35
35
  return BaseCollection.prototype.fetch.call(this, opts);
36
- }
36
+ },
37
37
  }
38
38
  );
39
39
 
@@ -1,7 +1,7 @@
1
1
  import "../models/contact.js";
2
2
 
3
- import { register } from "../state-register.js";
4
3
  import { BaseCollection } from "./base.js";
4
+ import { register } from "../state-register.js";
5
5
 
6
6
  /**
7
7
  * @constructor
@@ -11,7 +11,7 @@ import { BaseCollection } from "./base.js";
11
11
  */
12
12
  export const ContactCollection = BaseCollection.extend(
13
13
  /** @lends collections.ContactCollection# */ {
14
- model: "ContactModel"
14
+ model: "ContactModel",
15
15
  }
16
16
  );
17
17
 
@@ -1,7 +1,7 @@
1
1
  import "../models/asset.js";
2
2
 
3
- import { register } from "../state-register.js";
4
3
  import { BaseCollection } from "./base.js";
4
+ import { register } from "../state-register.js";
5
5
 
6
6
  /**
7
7
  * @constructor
@@ -19,7 +19,7 @@ export const CreatedAssetCollection = BaseCollection.extend(
19
19
  }
20
20
 
21
21
  return BaseCollection.prototype.url.call(this);
22
- }
22
+ },
23
23
  }
24
24
  );
25
25
 
@@ -1,7 +1,7 @@
1
1
  import "../models/customer.js";
2
2
 
3
- import { register } from "../state-register.js";
4
3
  import { BaseCollection } from "./base.js";
4
+ import { register } from "../state-register.js";
5
5
 
6
6
  /**
7
7
  * @constructor
@@ -11,7 +11,7 @@ import { BaseCollection } from "./base.js";
11
11
  */
12
12
  export const CustomerCollection = BaseCollection.extend(
13
13
  /** @lends collections.CustomerCollection# */ {
14
- model: "CustomerModel"
14
+ model: "CustomerModel",
15
15
  }
16
16
  );
17
17
 
@@ -1,7 +1,7 @@
1
1
  import "../models/deck-note.js";
2
2
 
3
- import { register } from "../state-register.js";
4
3
  import { BaseCollection } from "./base.js";
4
+ import { register } from "../state-register.js";
5
5
 
6
6
  /**
7
7
  * @constructor
@@ -18,7 +18,7 @@ export const DeckNoteCollection = BaseCollection.extend(
18
18
  return this.getFullURLPath(`${this.parent.getPlainURL()}notes/`);
19
19
  }
20
20
  return BaseCollection.prototype.url.call(this);
21
- }
21
+ },
22
22
  }
23
23
  );
24
24
 
@@ -1,9 +1,9 @@
1
1
  import "../models/deck-version.js";
2
2
 
3
+ import { Auth } from "../auth.js";
4
+ import { BaseCollection } from "./base.js";
3
5
  import moment from "moment";
4
-
5
6
  import { register } from "../state-register.js";
6
- import { BaseCollection } from "./base.js";
7
7
 
8
8
  /**
9
9
  * @constructor
@@ -29,24 +29,27 @@ export const DeckVersionCollection = BaseCollection.extend(
29
29
  */
30
30
  fetchForUser(userID, dateFrom, dateTo, options = {}) {
31
31
  const FORMAT = "YYYY-MM-DDTHH:mm:ssZ";
32
- const dateFromMoment = moment(dateFrom)
33
- .startOf("day")
34
- .format(FORMAT);
35
- const dateToMoment = moment(dateTo)
36
- .endOf("day")
37
- .format(FORMAT);
32
+ const dateFromMoment = moment(dateFrom).startOf("day").format(FORMAT);
33
+ const dateToMoment = moment(dateTo).endOf("day").format(FORMAT);
38
34
  const url = `${this.urlRoot()}scheduled/`;
39
35
 
36
+ const data = {
37
+ user: userID,
38
+ begin__gte: dateFromMoment,
39
+ begin__lte: dateToMoment,
40
+ };
41
+
42
+ // Allow content creators to immediately sync imaging deckversions
43
+ if (Auth.user.permissions.appointments.isContentCreator) {
44
+ data.creation_status = ["imaging", "created"];
45
+ }
46
+
40
47
  return this.fetch({
41
48
  url,
42
- data: {
43
- user: userID,
44
- begin__gte: dateFromMoment,
45
- begin__lte: dateToMoment
46
- },
47
- ...options
49
+ data,
50
+ ...options,
48
51
  });
49
- }
52
+ },
50
53
  }
51
54
  );
52
55
 
@@ -1,7 +1,7 @@
1
1
  import "../models/deck.js";
2
2
 
3
- import { register } from "../state-register.js";
4
3
  import { BaseCollection } from "./base.js";
4
+ import { register } from "../state-register.js";
5
5
 
6
6
  /**
7
7
  * @constructor
@@ -11,7 +11,7 @@ import { BaseCollection } from "./base.js";
11
11
  */
12
12
  export const DeckCollection = BaseCollection.extend(
13
13
  /** @lends collections.DeckCollection# */ {
14
- model: "DeckModel"
14
+ model: "DeckModel",
15
15
  }
16
16
  );
17
17
 
@@ -1,7 +1,7 @@
1
1
  import "../models/asset.js";
2
2
 
3
- import { register } from "../state-register.js";
4
3
  import { BaseCollection } from "./base.js";
4
+ import { register } from "../state-register.js";
5
5
 
6
6
  /**
7
7
  * @constructor
@@ -19,7 +19,7 @@ export const DeletedAssetCollection = BaseCollection.extend(
19
19
  }
20
20
 
21
21
  return BaseCollection.prototype.url.call(this);
22
- }
22
+ },
23
23
  }
24
24
  );
25
25
 
@@ -1,10 +1,9 @@
1
1
  import "../models/dispatch.js";
2
2
 
3
- import moment from "moment";
4
-
5
3
  import { Auth } from "../auth.js";
6
- import { register } from "../state-register.js";
7
4
  import { BaseCollection } from "./base.js";
5
+ import moment from "moment";
6
+ import { register } from "../state-register.js";
8
7
 
9
8
  /**
10
9
  * @constructor
@@ -17,24 +16,20 @@ export const DispatchCollection = BaseCollection.extend(
17
16
  model: "DispatchModel",
18
17
 
19
18
  fetchCreatedMonthForUser(date, userID = Auth.user.id) {
20
- const dateFrom = moment(date)
21
- .startOf("month")
22
- .format();
23
- const dateTo = moment(date)
24
- .endOf("month")
25
- .format();
19
+ const dateFrom = moment(date).startOf("month").format();
20
+ const dateTo = moment(date).endOf("month").format();
26
21
 
27
22
  return this.fetch({
28
23
  data: {
29
24
  user: userID,
30
25
  created_date__gte: dateFrom,
31
- created_date__lte: dateTo
32
- }
26
+ created_date__lte: dateTo,
27
+ },
33
28
  });
34
29
  },
35
30
 
36
31
  serialize() {
37
- return this.models.map(model => model.serialize());
32
+ return this.models.map((model) => model.serialize());
38
33
  },
39
34
 
40
35
  url() {
@@ -45,7 +40,7 @@ export const DispatchCollection = BaseCollection.extend(
45
40
  }
46
41
 
47
42
  return BaseCollection.prototype.url.call(this);
48
- }
43
+ },
49
44
  }
50
45
  );
51
46