@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
@@ -1,5 +1,5 @@
1
- import { register } from "../state-register.js";
2
1
  import { BaseModel } from "./base.js";
2
+ import { register } from "../state-register.js";
3
3
 
4
4
  /**
5
5
  * @constructor
@@ -11,8 +11,8 @@ export const TranscribeSocketModel = BaseModel.extend(
11
11
  modelName: "transcribe-socket",
12
12
 
13
13
  props: {
14
- presigned_url: "string"
15
- }
14
+ presigned_url: "string",
15
+ },
16
16
  }
17
17
  );
18
18
 
@@ -1,5 +1,5 @@
1
- import { register } from "../state-register.js";
2
1
  import { BaseModel } from "./base.js";
2
+ import { register } from "../state-register.js";
3
3
 
4
4
  /**
5
5
  * @constructor
@@ -15,8 +15,8 @@ export const UploadModel = BaseModel.extend({
15
15
  */
16
16
  props: {
17
17
  name: "string",
18
- image_original: "string"
19
- }
18
+ image_original: "string",
19
+ },
20
20
  });
21
21
 
22
22
  register("UploadModel", UploadModel);
@@ -3,8 +3,8 @@ import "../collections/groups.js";
3
3
  import "../collections/teams.js";
4
4
 
5
5
  import { Api } from "../api.js";
6
- import { register } from "../state-register.js";
7
6
  import { BaseModel } from "./base.js";
7
+ import { register } from "../state-register.js";
8
8
 
9
9
  /**
10
10
 
@@ -43,7 +43,7 @@ export const UserModel = BaseModel.extend(
43
43
  props: {
44
44
  actions: {
45
45
  type: "array",
46
- default: () => []
46
+ default: () => [],
47
47
  },
48
48
  preferences: {
49
49
  type: "object",
@@ -52,9 +52,9 @@ export const UserModel = BaseModel.extend(
52
52
  notification_sender: "default",
53
53
  email_signature: "",
54
54
  app_prefs: {},
55
- timezone: ""
55
+ timezone: "",
56
56
  };
57
- }
57
+ },
58
58
  },
59
59
  calendar_feed: "string",
60
60
  date_joined: "date",
@@ -71,14 +71,14 @@ export const UserModel = BaseModel.extend(
71
71
  profile: "object",
72
72
  rtms_topic: "string",
73
73
  rtms_token: "string",
74
- last_reset_request: "string"
74
+ last_reset_request: "string",
75
75
  },
76
76
 
77
77
  /**
78
78
  * @property {models.TenancyModel} tenancy
79
79
  */
80
80
  children: {
81
- tenancy: "TenancyModel"
81
+ tenancy: "TenancyModel",
82
82
  },
83
83
 
84
84
  /**
@@ -87,7 +87,7 @@ export const UserModel = BaseModel.extend(
87
87
  */
88
88
  collections: {
89
89
  groups: "GroupCollection",
90
- team_set: "TeamCollection"
90
+ team_set: "TeamCollection",
91
91
  },
92
92
 
93
93
  /**
@@ -98,17 +98,19 @@ export const UserModel = BaseModel.extend(
98
98
  derived: {
99
99
  fullName: {
100
100
  deps: ["first_name", "last_name"],
101
- fn: function() {
101
+ fn: function () {
102
102
  return `${this.first_name} ${this.last_name}`;
103
- }
103
+ },
104
104
  },
105
105
 
106
106
  permissions: {
107
107
  deps: ["actions"],
108
- fn: function() {
108
+ fn: function () {
109
109
  const presets = {
110
110
  canCreateCompanyPresets:
111
- this.actions.indexOf("Manage Deck Presets") > -1
111
+ this.actions.indexOf("Manage Deck Presets") > -1,
112
+ canCreateTeamPresets:
113
+ this.actions.indexOf("Manage Team Presets") > -1,
112
114
  };
113
115
 
114
116
  const presomanager = {
@@ -122,7 +124,7 @@ export const UserModel = BaseModel.extend(
122
124
  isContentCreator: this.actions.indexOf("Create Content") > -1,
123
125
 
124
126
  canAddGlobalNotes: this.actions.indexOf("Manage Notes") > -1,
125
- canAddTeamNotes: this.actions.indexOf("Manage Team Notes") > -1
127
+ canAddTeamNotes: this.actions.indexOf("Manage Team Notes") > -1,
126
128
  };
127
129
 
128
130
  presomanager.canModifyNotes =
@@ -152,22 +154,24 @@ export const UserModel = BaseModel.extend(
152
154
  canShare: this.actions.indexOf("Share preso") > -1,
153
155
  canPresent: this.actions.indexOf("Present preso") > -1,
154
156
  canCreateWithoutTeam:
155
- this.actions.indexOf("Allow Teamless Appointments") > -1
157
+ this.actions.indexOf("Allow Teamless Appointments") > -1,
158
+ canUseClosedCaptions:
159
+ this.actions.indexOf("Use Closed Captions") > -1,
156
160
  };
157
161
 
158
162
  const customers = {
159
163
  canCreateWithoutTeam:
160
- this.actions.indexOf("Allow Teamless Customers") > -1
164
+ this.actions.indexOf("Allow Teamless Customers") > -1,
161
165
  };
162
166
 
163
167
  return {
164
168
  presets,
165
169
  appointments,
166
170
  presomanager,
167
- customers
171
+ customers,
168
172
  };
169
- }
170
- }
173
+ },
174
+ },
171
175
  },
172
176
 
173
177
  fetchHQLogin() {
@@ -210,11 +214,11 @@ export const UserModel = BaseModel.extend(
210
214
  toServer() {
211
215
  const data = {
212
216
  id: this.id,
213
- preferences: this.preferences
217
+ preferences: this.preferences,
214
218
  };
215
219
 
216
220
  if (this.groups) {
217
- data.groups = this.groups.map(group => group.url());
221
+ data.groups = this.groups.map((group) => group.url());
218
222
  }
219
223
 
220
224
  if (!data.preferences.timezone) {
@@ -222,7 +226,7 @@ export const UserModel = BaseModel.extend(
222
226
  }
223
227
 
224
228
  return data;
225
- }
229
+ },
226
230
  }
227
231
  );
228
232
 
@@ -3,7 +3,7 @@ import { G } from "sp-test/api";
3
3
  test("User can modify temporary slides", async () => {
4
4
  const UserModel = G("UserModel");
5
5
  const user = new UserModel({
6
- actions: ["Manage Temporary Slides"]
6
+ actions: ["Manage Temporary Slides"],
7
7
  });
8
8
  expect(user.permissions.presomanager.canModifyTemporarySlides).toBe(true);
9
9
  });
@@ -11,7 +11,7 @@ test("User can modify temporary slides", async () => {
11
11
  test("User can modify editable content", async () => {
12
12
  const UserModel = G("UserModel");
13
13
  const user = new UserModel({
14
- actions: ["Create Content"]
14
+ actions: ["Create Content"],
15
15
  });
16
16
  expect(user.permissions.presomanager.canModifyContent).toBe(true);
17
17
  });
package/src/models.js CHANGED
@@ -8,6 +8,7 @@ export * from "./models/adjunct-slide";
8
8
  export * from "./models/adjunct-sub-slide";
9
9
  export * from "./models/api";
10
10
  export * from "./models/appointment";
11
+ export * from "./models/appointment-tags";
11
12
  export * from "./models/asset";
12
13
  export * from "./models/auto-adjunct";
13
14
  export * from "./models/base";
@@ -16,6 +17,7 @@ export * from "./models/cms-val";
16
17
  export * from "./models/contact";
17
18
  export * from "./models/customer";
18
19
  export * from "./models/deck";
20
+ export * from "./models/deck-tags";
19
21
  export * from "./models/deck-version";
20
22
  export * from "./models/dispatch";
21
23
  export * from "./models/dispatch-preview";
@@ -45,6 +47,7 @@ export * from "./models/slide-selection";
45
47
  export * from "./models/snapshot";
46
48
  export * from "./models/sub-slide";
47
49
  export * from "./models/support-ticket.js";
50
+ export * from "./models/tag.js";
48
51
  export * from "./models/tenancy.js";
49
52
  export * from "./models/timing-log.js";
50
53
  export * from "./models/upload.js";
@@ -54,6 +57,10 @@ export * from "./models/appointment-editor.js";
54
57
  export * from "./models/appointment-duplicate.js";
55
58
  export * from "./models/appointment-stats.js";
56
59
  export * from "./models/appointment-viewing.js";
60
+ export * from "./models/appointment-deckversion-tags.js";
61
+ export * from "./models/appointment-section-tags.js";
62
+ export * from "./models/appointment-slide-tags.js";
63
+ export * from "./models/appointment-adjunct-tags.js";
57
64
  export * from "./models/team.js";
58
65
  export * from "./models/template.js";
59
66
  export * from "./models/auto-adjunct-key-check.js";
@@ -7,8 +7,8 @@ import "../collections/contacts.js";
7
7
 
8
8
  import { AppointmentModel } from "../models.js";
9
9
  import { BaseModel } from "../models/base.js";
10
- import { register } from "../state-register.js";
11
10
  import { PresentationDeck } from "./presentation-deck.js";
11
+ import { register } from "../state-register.js";
12
12
 
13
13
  /**
14
14
  * @constructor
@@ -29,7 +29,7 @@ export const AppointmentPresentation = BaseModel.extend(
29
29
  end: "date",
30
30
  tele: "object",
31
31
  supportMode: "boolean",
32
- locks: "array"
32
+ locks: "array",
33
33
  },
34
34
 
35
35
  /**
@@ -42,7 +42,7 @@ export const AppointmentPresentation = BaseModel.extend(
42
42
  presentation: "Presentation",
43
43
  latest_snapshot: "SnapshotModel",
44
44
  latest_feed_data: "FeedDataModel",
45
- user: "UserModel"
45
+ user: "UserModel",
46
46
  },
47
47
 
48
48
  /**
@@ -51,14 +51,17 @@ export const AppointmentPresentation = BaseModel.extend(
51
51
  */
52
52
  collections: {
53
53
  opportunities: "OpportunityCollection",
54
- contacts: "ContactCollection"
55
- }
54
+ contacts: "ContactCollection",
55
+ },
56
56
  }
57
57
  );
58
58
 
59
- const createFromAppointment = function(appointment, options) {
59
+ const createFromAppointment = function (appointment, options) {
60
60
  const appointmentPresentation = new AppointmentPresentation();
61
61
 
62
+ // Note that we're not passing through tags if appointment.tags is empty.
63
+ // This is because tags currently aren't available in the telepresenter
64
+ // bundle and we want to fall back on the model tags for now.
62
65
  appointmentPresentation.presentation.decks.add(
63
66
  appointment.deckversion_set.map((model, index) => {
64
67
  return PresentationDeck.createFromDeckVersion(model, {
@@ -68,7 +71,8 @@ const createFromAppointment = function(appointment, options) {
68
71
  sectionSelections: appointment.appointmentssection_set,
69
72
  slideSelections: appointment.appointmentsslide_set,
70
73
  index,
71
- ...options
74
+ appointmentTags: appointment.tags.length ? appointment.tags : null,
75
+ ...options,
72
76
  });
73
77
  })
74
78
  );
@@ -94,7 +98,7 @@ const createFromAppointment = function(appointment, options) {
94
98
  * @memberof presentation.AppointmentPresentation
95
99
  * @param {string} url
96
100
  */
97
- AppointmentPresentation.createFromURL = function(url, options = {}) {
101
+ AppointmentPresentation.createFromURL = function (url, options = {}) {
98
102
  const appointment = new AppointmentModel({ url });
99
103
 
100
104
  return appointment.fetchAll(true).then(() => {
@@ -107,7 +111,7 @@ AppointmentPresentation.createFromURL = function(url, options = {}) {
107
111
  * @memberof presentation.AppointmentPresentation
108
112
  * @param {number} id
109
113
  */
110
- AppointmentPresentation.createFromID = function(id, options = {}) {
114
+ AppointmentPresentation.createFromID = function (id, options = {}) {
111
115
  const appointment = new AppointmentModel({ id });
112
116
 
113
117
  return appointment.fetchAll().then(() => {
@@ -120,7 +124,7 @@ AppointmentPresentation.createFromID = function(id, options = {}) {
120
124
  * @memberof presentation.AppointmentPresentation
121
125
  * @param {model} appointment
122
126
  */
123
- AppointmentPresentation.createFromAppointment = function(
127
+ AppointmentPresentation.createFromAppointment = function (
124
128
  appointment,
125
129
  options = {}
126
130
  ) {
@@ -9,7 +9,7 @@ export const BasePresentationModel = BaseModel.extend(
9
9
  /** @lends presentation.BasePresentationModel# */ {
10
10
  url() {
11
11
  return null;
12
- }
12
+ },
13
13
  }
14
14
  );
15
15
 
@@ -21,20 +21,23 @@ export const BasePresentationModel = BaseModel.extend(
21
21
  * model's state to determine sequence & vis when selections are used.
22
22
  */
23
23
 
24
- BasePresentationModel.getVisibilityAndSequence = function(model, options = {}) {
24
+ BasePresentationModel.getVisibilityAndSequence = function (
25
+ model,
26
+ options = {}
27
+ ) {
25
28
  const { choicelist = null, selections = null } = options;
26
29
  const url = model.url();
27
30
 
28
31
  const config = {
29
32
  visible: model.visible || model.enabled || false,
30
33
  sequence: model.sequence,
31
- selectionID: null
34
+ selectionID: null,
32
35
  };
33
36
 
34
37
  if (choicelist) {
35
38
  // All items should have a choicelist entry - if it's not in
36
39
  // the choicelist, it's not in the preso
37
- const choice = choicelist.find(item => item.url === url);
40
+ const choice = choicelist.find((item) => item.url === url);
38
41
 
39
42
  if (choice) {
40
43
  config.sequence = choicelist.indexOf(choice);
@@ -46,7 +49,7 @@ BasePresentationModel.getVisibilityAndSequence = function(model, options = {}) {
46
49
  // Non-adjunct subslides and adjunct sections/slides/subslides
47
50
  // have no selections - they fall through here using their
48
51
  // model's values
49
- const selection = selections.find(selection => selection.url === url);
52
+ const selection = selections.find((selection) => selection.url === url);
50
53
 
51
54
  if (selection) {
52
55
  config.visible = selection.visible;
@@ -61,4 +64,63 @@ BasePresentationModel.getVisibilityAndSequence = function(model, options = {}) {
61
64
  return config;
62
65
  };
63
66
 
67
+ const getAppointmentTags = function (model, tags) {
68
+ const url = model.adjunct?.url() || model.url();
69
+ const tagItem = tags.find((tag) => tag.content_url === url);
70
+
71
+ if (tagItem) {
72
+ return tagItem.tags || [];
73
+ }
74
+
75
+ // Subslide tags currently aren't included in the
76
+ // appointmentTags data.
77
+ return model.tags || [];
78
+ };
79
+
80
+ const getDeckTags = function (model, tags) {
81
+ // All non-adjunct sections, slides and subslides have namespaced_key
82
+ if (model.namespaced_key) {
83
+ return tags[model.namespaced_key] || model.tags || [];
84
+ } else if (model.adjunct || model.isAutoAdjunct) {
85
+ // Autoadjunct keys are unique and move around so we search for them
86
+ // and ignore the rest of the namespaced key
87
+ const keys = Object.keys(tags).filter((key) => {
88
+ if (key.includes("/")) {
89
+ const splitKey = key.split("/");
90
+
91
+ return splitKey[splitKey.length - 1] === model.key;
92
+ }
93
+ return key === model.key;
94
+ });
95
+ return keys.length ? tags[keys[0]] : [];
96
+ } else if (model.deck) {
97
+ // The deck's namespaced key is always "" - this is because the
98
+ // namespaced key format is section-key/slide-key, but the
99
+ // deck sits above sections.
100
+ return tags[""] || model.tags || [];
101
+ }
102
+
103
+ return model.tags || [];
104
+ };
105
+
106
+ // Retrieve the tags for the model.
107
+ // If appointmentTags is passed through in the options, we call the
108
+ // getAppointmentTags function above to retrieve the appointment tags
109
+ // for the model.
110
+ // if there are no appointmentTags but deckTags are passed
111
+ // through then we call the getDeckTags function.
112
+ // In the future we will always use one of these two methods and
113
+ // references to model.tags should be removed.
114
+ BasePresentationModel.getTags = function (model, options = {}) {
115
+ if (options.appointmentTags) {
116
+ return getAppointmentTags(model, options.appointmentTags);
117
+ }
118
+
119
+ if (options.deckTags) {
120
+ return getDeckTags(model, options.deckTags);
121
+ }
122
+
123
+ return model.tags || [];
124
+ };
125
+
64
126
  BasePresentationModel.canBeEmpty = true;
@@ -5,13 +5,13 @@ describe("#getVisibilityAndSequence", () => {
5
5
  const config = BasePresentationModel.getVisibilityAndSequence({
6
6
  sequence: 99,
7
7
  visible: true,
8
- url: () => ""
8
+ url: () => "",
9
9
  });
10
10
 
11
11
  const expected = {
12
12
  sequence: 99,
13
13
  visible: true,
14
- selectionID: null
14
+ selectionID: null,
15
15
  };
16
16
 
17
17
  expect(config).toEqual(expected);
@@ -21,13 +21,13 @@ describe("#getVisibilityAndSequence", () => {
21
21
  const config = BasePresentationModel.getVisibilityAndSequence({
22
22
  sequence: 99,
23
23
  visible: true,
24
- url: () => ""
24
+ url: () => "",
25
25
  });
26
26
 
27
27
  const expected = {
28
28
  sequence: 99,
29
29
  visible: true,
30
- selectionID: null
30
+ selectionID: null,
31
31
  };
32
32
 
33
33
  expect(config).toEqual(expected);
@@ -37,25 +37,25 @@ describe("#getVisibilityAndSequence", () => {
37
37
  const choicelist = [
38
38
  {
39
39
  url: "bleh/meh",
40
- visible: true
41
- }
40
+ visible: true,
41
+ },
42
42
  ];
43
43
 
44
44
  const config = BasePresentationModel.getVisibilityAndSequence(
45
45
  {
46
46
  sequence: 99,
47
47
  visible: false,
48
- url: () => "bleh/meh"
48
+ url: () => "bleh/meh",
49
49
  },
50
50
  {
51
- choicelist
51
+ choicelist,
52
52
  }
53
53
  );
54
54
 
55
55
  const expected = {
56
56
  sequence: 0,
57
57
  visible: true,
58
- selectionID: null
58
+ selectionID: null,
59
59
  };
60
60
 
61
61
  expect(config).toEqual(expected);
@@ -67,25 +67,25 @@ describe("#getVisibilityAndSequence", () => {
67
67
  url: "bleh/meh",
68
68
  visible: true,
69
69
  sequence: 27,
70
- id: 58
71
- }
70
+ id: 58,
71
+ },
72
72
  ];
73
73
 
74
74
  const config = BasePresentationModel.getVisibilityAndSequence(
75
75
  {
76
76
  sequence: 99,
77
77
  visible: false,
78
- url: () => "bleh/meh"
78
+ url: () => "bleh/meh",
79
79
  },
80
80
  {
81
- selections
81
+ selections,
82
82
  }
83
83
  );
84
84
 
85
85
  const expected = {
86
86
  sequence: 27,
87
87
  visible: true,
88
- selectionID: 58
88
+ selectionID: 58,
89
89
  };
90
90
 
91
91
  expect(config).toEqual(expected);
@@ -95,12 +95,12 @@ describe("#getVisibilityAndSequence", () => {
95
95
  const choicelist = [
96
96
  {
97
97
  url: "gah/meh",
98
- visible: false
98
+ visible: false,
99
99
  },
100
100
  {
101
101
  url: "bleh/meh",
102
- visible: true
103
- }
102
+ visible: true,
103
+ },
104
104
  ];
105
105
 
106
106
  const selections = [
@@ -108,26 +108,26 @@ describe("#getVisibilityAndSequence", () => {
108
108
  url: "bleh/meh",
109
109
  visible: true,
110
110
  sequence: 27,
111
- id: 58
112
- }
111
+ id: 58,
112
+ },
113
113
  ];
114
114
 
115
115
  const config = BasePresentationModel.getVisibilityAndSequence(
116
116
  {
117
117
  sequence: 99,
118
118
  visible: false,
119
- url: () => "bleh/meh"
119
+ url: () => "bleh/meh",
120
120
  },
121
121
  {
122
122
  choicelist,
123
- selections
123
+ selections,
124
124
  }
125
125
  );
126
126
 
127
127
  const expected = {
128
128
  sequence: 1,
129
129
  visible: true,
130
- selectionID: null
130
+ selectionID: null,
131
131
  };
132
132
 
133
133
  expect(config).toEqual(expected);
@@ -135,3 +135,95 @@ describe("#getVisibilityAndSequence", () => {
135
135
 
136
136
  // adjuncts!!
137
137
  });
138
+
139
+ describe("#getTags", () => {
140
+ it("should return empty array when no options or model tags", () => {
141
+ const tags = BasePresentationModel.getTags({});
142
+
143
+ expect(typeof tags).toEqual("object");
144
+ expect(tags.length).toEqual(0);
145
+ });
146
+
147
+ it("should return tags when no tags passed in options", () => {
148
+ const model = {
149
+ tags: ["model-tag-1", "model-tag-2"],
150
+ };
151
+ const tags = BasePresentationModel.getTags(model);
152
+
153
+ expect(tags).toEqual(model.tags);
154
+ });
155
+
156
+ it("should return tags for slide when tags passed in options", () => {
157
+ const model = {
158
+ namespaced_key: "slide-key",
159
+ tags: ["model-tag-1", "model-tag-2"],
160
+ };
161
+
162
+ const options = {
163
+ deckTags: {
164
+ "": ["deck-tags"],
165
+ "slide-key": ["slide-tags"],
166
+ },
167
+ };
168
+
169
+ const tags = BasePresentationModel.getTags(model, options);
170
+
171
+ expect(tags).toEqual(["slide-tags"]);
172
+ });
173
+
174
+ it("should return tags for welcome slide when tags passed in options", () => {
175
+ const model = {
176
+ deck: {},
177
+ tags: ["model-tag-1", "model-tag-2"],
178
+ };
179
+
180
+ const options = {
181
+ deckTags: {
182
+ "": ["deck-tags"],
183
+ "slide-key": ["slide-tags"],
184
+ },
185
+ };
186
+
187
+ const tags = BasePresentationModel.getTags(model, options);
188
+
189
+ expect(tags).toEqual(["deck-tags"]);
190
+ });
191
+
192
+ it("should return tags for an adjunct section when tags passed in options", () => {
193
+ const model = {
194
+ adjunct: true,
195
+ key: "adjunctsection-key",
196
+ tags: ["old-tag-1", "old-tag-2"],
197
+ };
198
+
199
+ const options = {
200
+ deckTags: {
201
+ "": ["deck-tags"],
202
+ "adjunctsection-key": ["adjunctsection-tags"],
203
+ },
204
+ };
205
+
206
+ const tags = BasePresentationModel.getTags(model, options);
207
+
208
+ expect(tags).toEqual(["adjunctsection-tags"]);
209
+ });
210
+
211
+ it("should return tags for an adjunct slide when tags passed in options", () => {
212
+ const model = {
213
+ adjunct: true,
214
+ key: "adjunctslide-key",
215
+ tags: ["old-tag-1", "old-tag-2"],
216
+ };
217
+
218
+ const options = {
219
+ deckTags: {
220
+ "": ["deck-tags"],
221
+ "section-key/adjunctslide-key": ["adjunctslide-tags"],
222
+ },
223
+ };
224
+
225
+ const tags = BasePresentationModel.getTags(model, options);
226
+
227
+ expect(tags).toEqual(["adjunctslide-tags"]);
228
+ });
229
+ });