@livepreso/api 6.41.0 → 6.44.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_test.json +170 -0
  4. package/.rush/temp/shrinkwrap-deps.json +957 -0
  5. package/CHANGELOG.json +53 -0
  6. package/CHANGELOG.md +32 -0
  7. package/api.build.log +4 -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 +103 -25
  47. package/cjs/collections/base.js.map +1 -1
  48. package/cjs/collections/base.spec.js +231 -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 +83 -58
  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 +4 -3
  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 +11 -0
  296. package/index.js +0 -1
  297. package/jest.config.js +4 -4
  298. package/package.json +19 -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 +88 -18
  319. package/src/collections/base.spec.js +100 -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 +77 -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 +19 -17
  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,9 +1,8 @@
1
1
  import "./pack.js";
2
2
 
3
- import url2 from "url";
4
-
5
- import { register } from "../state-register.js";
6
3
  import { BaseModel } from "./base.js";
4
+ import { register } from "../state-register.js";
5
+ import url2 from "url";
7
6
 
8
7
  /**
9
8
  * @constructor
@@ -47,59 +46,65 @@ export const ManifestJSONModel = BaseModel.extend(
47
46
  content_editors: "object",
48
47
  persistentcontext: {
49
48
  type: "boolean",
50
- default: false
49
+ default: false,
51
50
  },
52
51
  screenshotpreferences: {
53
52
  type: "object",
54
53
  default: function () {
55
54
  return {
56
- vector: false
55
+ vector: false,
57
56
  };
58
- }
57
+ },
59
58
  },
60
59
  dimensions: {
61
60
  type: "object",
62
61
  default: function () {
63
62
  return {
64
63
  width: 1024,
65
- height: 768
64
+ height: 768,
66
65
  };
67
- }
66
+ },
68
67
  },
69
68
  pdfpreferences: {
70
69
  type: "object",
71
70
  default: function () {
72
71
  return {
73
- quality_level: "prepress"
72
+ quality_level: "prepress",
74
73
  };
75
- }
74
+ },
76
75
  },
77
76
  has_editable_share_support: {
78
77
  type: "boolean",
79
- default: false
78
+ default: false,
79
+ },
80
+ point_in_time_share_policy: {
81
+ type: "string",
80
82
  },
81
83
  notify_salesperson_after_feeds_fetched: {
82
84
  type: "boolean",
83
- default: false
85
+ default: false,
84
86
  },
85
87
  require_verification: {
86
88
  type: "boolean",
87
- default: false
89
+ default: false,
88
90
  },
89
91
  companywide_editable: {
90
92
  type: "boolean",
91
- default: false
93
+ default: false,
92
94
  },
93
95
  app_settings: {
94
96
  type: "object",
95
97
  default: function () {
96
98
  return {
97
99
  appointment: {
98
- show_visible_default: false
99
- }
100
+ show_visible_default: false,
101
+ },
102
+ fieldsets: {
103
+ enforce_required: false,
104
+ },
100
105
  };
101
- }
102
- }
106
+ },
107
+ },
103
108
  },
104
109
 
105
110
  /**
@@ -138,7 +143,7 @@ export const ManifestJSONModel = BaseModel.extend(
138
143
  }
139
144
 
140
145
  return BaseModel.prototype.url.call(this);
141
- }
146
+ },
142
147
  }
143
148
  );
144
149
 
@@ -148,6 +153,41 @@ export const ManifestJSONModel = BaseModel.extend(
148
153
  * object.
149
154
  */
150
155
  ManifestJSONModel.createFromProject = function (projectFile) {
156
+ // If the deck is an impostor deck, we have to update some things for
157
+ // them to make sense in the impostor format
158
+ if (projectFile.impostor) {
159
+ // There is only one real section; all of the "sections" defined in the
160
+ // project.yaml are actually slides, and slides can't have a maxAdjunctSlides
161
+ // value. We get around this by totalling up all of the maxAdjunctSlides values
162
+ // across the sections and give that number to the real section. Later e.g. in the
163
+ // app, that number will be taken and divided by the number of impostor sections
164
+ // to get the maxAdjunctSlides value for each impostor section
165
+ const maxAdjunctSlides = projectFile.sections.reduce((num, section) => {
166
+ return num + (section.maxAdjunctSlides || 0);
167
+ }, 0);
168
+
169
+ // Create a "real" section (that will never be seen by the user) and give
170
+ // it all of the sections & slides. Impostor sections (which are technically
171
+ // slides) are given the "section-header" tag to mark them as sections
172
+ projectFile.sections = [
173
+ {
174
+ maxAdjunctSlides,
175
+ key: projectFile.key,
176
+ title: projectFile.name,
177
+ slides: projectFile.sections.reduce((sections, section) => {
178
+ const newSection = {
179
+ ...section,
180
+ slides: [],
181
+ };
182
+ newSection.tags = ["section-header"].concat(newSection.tags || []);
183
+
184
+ sections.push(newSection, ...(section.slides || []));
185
+ return sections;
186
+ }, []),
187
+ },
188
+ ];
189
+ }
190
+
151
191
  const titles = projectFile.sections.reduce((titles, section) => {
152
192
  titles[section.key] = section.title;
153
193
  for (const slide of section.slides || []) {
@@ -160,7 +200,7 @@ ManifestJSONModel.createFromProject = function (projectFile) {
160
200
  (templates, template, index) => {
161
201
  templates[template.key] = {
162
202
  title: template.title,
163
- ordering: index + 1
203
+ ordering: index + 1,
164
204
  };
165
205
  return templates;
166
206
  },
@@ -173,7 +213,7 @@ ManifestJSONModel.createFromProject = function (projectFile) {
173
213
  limits[section.key] = section.maxAdjunctSlides;
174
214
  }
175
215
  return limits;
176
- }, {})
216
+ }, {}),
177
217
  };
178
218
 
179
219
  const ordering = projectFile.sections.reduce((ordering, section, index) => {
@@ -187,13 +227,9 @@ ManifestJSONModel.createFromProject = function (projectFile) {
187
227
  }, {});
188
228
 
189
229
  const tags = projectFile.sections.reduce((tags, section) => {
190
- if (section.tags) {
191
- tags[section.key] = section.tags;
192
- }
230
+ tags[section.key] = section.tags || [];
193
231
  for (const slide of section.slides || []) {
194
- if (slide.tags) {
195
- tags[`${section.key}/${slide.key}`] = slide.tags;
196
- }
232
+ tags[`${section.key}/${slide.key}`] = slide.tags || [];
197
233
  }
198
234
  return tags;
199
235
  }, {});
@@ -204,7 +240,7 @@ ManifestJSONModel.createFromProject = function (projectFile) {
204
240
  if (projectFile.welcome.tags) {
205
241
  // It's convention to use an empty string for the
206
242
  // Welcome slide's key
207
- tags[""] = projectFile.welcome.tags;
243
+ tags[""] = projectFile.welcome.tags || [];
208
244
  }
209
245
  }
210
246
 
@@ -218,7 +254,7 @@ ManifestJSONModel.createFromProject = function (projectFile) {
218
254
  ordering,
219
255
  limits,
220
256
  tags,
221
- key: projectFile.key
257
+ key: projectFile.key,
222
258
  });
223
259
 
224
260
  if (projectFile.content_editors) {
@@ -250,6 +286,11 @@ ManifestJSONModel.createFromProject = function (projectFile) {
250
286
  projectFile.has_editable_share_support;
251
287
  }
252
288
 
289
+ if (projectFile.point_in_time_share_policy) {
290
+ manifest.point_in_time_share_policy =
291
+ projectFile.point_in_time_share_policy;
292
+ }
293
+
253
294
  if (projectFile.notify_salesperson_after_feeds_fetched) {
254
295
  manifest.notify_salesperson_after_feeds_fetched =
255
296
  projectFile.notify_salesperson_after_feeds_fetched;
@@ -262,10 +303,16 @@ ManifestJSONModel.createFromProject = function (projectFile) {
262
303
  if (projectFile.app_settings) {
263
304
  manifest.app_settings = {
264
305
  ...manifest.app_settings,
265
- ...projectFile.app_settings
306
+ ...projectFile.app_settings,
266
307
  };
267
308
  }
268
309
 
310
+ // For all new decks going forward, this should be set to true.
311
+ // This means we validate that a fieldset field has a value. Before
312
+ // this change, it was possible to save with a required field unfilled.
313
+ // This just keeps backwards compatability.
314
+ manifest.app_settings.fieldsets.enforce_required = true;
315
+
269
316
  return manifest;
270
317
  };
271
318
 
@@ -2,8 +2,8 @@ import "./contact.js";
2
2
  import "./dispatch.js";
3
3
  import "./hosted-preso.js";
4
4
 
5
- import { register } from "../state-register.js";
6
5
  import { BaseModel } from "./base.js";
6
+ import { register } from "../state-register.js";
7
7
 
8
8
  /**
9
9
  * @constructor
@@ -19,7 +19,7 @@ export const OnShareModel = BaseModel.extend(
19
19
  */
20
20
  props: {
21
21
  generate_content: "string",
22
- share: "string"
22
+ share: "string",
23
23
  },
24
24
 
25
25
  /**
@@ -30,14 +30,14 @@ export const OnShareModel = BaseModel.extend(
30
30
  children: {
31
31
  sender: "ContactModel",
32
32
  original_dispatch: "DispatchModel",
33
- share: "HostedPresoModel"
33
+ share: "HostedPresoModel",
34
34
  },
35
35
 
36
36
  /**
37
37
  * @property {models.ContactCollection} contact_set
38
38
  */
39
39
  collections: {
40
- contact_set: "ContactCollection"
40
+ contact_set: "ContactCollection",
41
41
  },
42
42
 
43
43
  toServer() {
@@ -49,7 +49,7 @@ export const OnShareModel = BaseModel.extend(
49
49
  data.share = this._retrieveURL(this.share);
50
50
 
51
51
  return data;
52
- }
52
+ },
53
53
  }
54
54
  );
55
55
 
@@ -2,8 +2,8 @@ import "../collections/appointments.js";
2
2
  import "../collections/customers.js";
3
3
  import "../models/customer.js";
4
4
 
5
- import { register } from "../state-register.js";
6
5
  import { BaseModel } from "./base.js";
6
+ import { register } from "../state-register.js";
7
7
 
8
8
  /**
9
9
  * @constructor
@@ -29,7 +29,7 @@ export const OpportunityModel = BaseModel.extend(
29
29
  name: "stringSanitized",
30
30
  soft_deleted: "boolean",
31
31
  stage_name: "string",
32
- profile: { type: "object", default: () => null }
32
+ profile: { type: "object", default: () => null },
33
33
  },
34
34
 
35
35
  /**
@@ -38,15 +38,15 @@ export const OpportunityModel = BaseModel.extend(
38
38
  */
39
39
  collections: {
40
40
  appointment_set: "AppointmentCollection",
41
- contact_set: "ContactCollection"
41
+ contact_set: "ContactCollection",
42
42
  },
43
43
 
44
44
  /**
45
45
  * @property {models.CustomerModel} customer
46
46
  */
47
47
  children: {
48
- customer: "CustomerModel"
49
- }
48
+ customer: "CustomerModel",
49
+ },
50
50
  }
51
51
  );
52
52
 
@@ -2,8 +2,8 @@ import "./pack.js";
2
2
  import "../collections/created-assets.js";
3
3
  import "../collections/deleted-assets.js";
4
4
 
5
- import { register } from "../state-register.js";
6
5
  import { BaseModel } from "./base.js";
6
+ import { register } from "../state-register.js";
7
7
 
8
8
  /**
9
9
  * @constructor
@@ -26,7 +26,7 @@ export const PackDiffModel = BaseModel.extend(
26
26
  created_date: "date",
27
27
  creation_percent: "number",
28
28
  creation_status: "string",
29
- modified_date: "date"
29
+ modified_date: "date",
30
30
  },
31
31
 
32
32
  /**
@@ -35,7 +35,7 @@ export const PackDiffModel = BaseModel.extend(
35
35
  */
36
36
  collections: {
37
37
  created: "CreatedAssetCollection",
38
- deleted: "DeletedAssetCollection"
38
+ deleted: "DeletedAssetCollection",
39
39
  },
40
40
 
41
41
  /**
@@ -44,7 +44,7 @@ export const PackDiffModel = BaseModel.extend(
44
44
  */
45
45
  children: {
46
46
  pack_from: "PackModel",
47
- pack_to: "PackModel"
47
+ pack_to: "PackModel",
48
48
  },
49
49
 
50
50
  toServer() {
@@ -54,7 +54,7 @@ export const PackDiffModel = BaseModel.extend(
54
54
  data.pack_to = this._retrieveURL(this.pack_to);
55
55
 
56
56
  return data;
57
- }
57
+ },
58
58
  }
59
59
  );
60
60
 
@@ -1,7 +1,7 @@
1
1
  import "../collections/assets.js";
2
2
 
3
- import { register } from "../state-register.js";
4
3
  import { BaseModel } from "./base.js";
4
+ import { register } from "../state-register.js";
5
5
 
6
6
  /**
7
7
  * @constructor
@@ -22,14 +22,14 @@ export const PackModel = BaseModel.extend(
22
22
  created_date: "date",
23
23
  modified_date: "date",
24
24
  hash_digest: "string",
25
- hash_algorithm: "string"
25
+ hash_algorithm: "string",
26
26
  },
27
27
 
28
28
  /**
29
29
  * @property {collections.AssetCollection} asset_set
30
30
  */
31
31
  collections: {
32
- asset_set: "AssetCollection"
32
+ asset_set: "AssetCollection",
33
33
  },
34
34
 
35
35
  url() {
@@ -37,7 +37,7 @@ export const PackModel = BaseModel.extend(
37
37
  return BaseModel.prototype.url.call(this);
38
38
  }
39
39
  return `${this.urlRoot()}empty/`;
40
- }
40
+ },
41
41
  }
42
42
  );
43
43
 
@@ -1,8 +1,9 @@
1
1
  import "./user.js";
2
2
  import "./deck.js";
3
+ import "./team.js";
3
4
 
4
- import { register } from "../state-register.js";
5
5
  import { BaseModel } from "./base.js";
6
+ import { register } from "../state-register.js";
6
7
 
7
8
  /**
8
9
  * @constructor
@@ -26,16 +27,19 @@ export const PresetModel = BaseModel.extend(
26
27
  created_date: "date",
27
28
  modified_date: "date",
28
29
  name: "stringSanitized",
29
- context: "object"
30
+ context: "object",
30
31
  },
31
32
 
32
33
  /**
33
34
  * @property {models.UserModel} user
34
35
  * @property {models.DeckModel} deck
36
+ * @property {models.TeamModel} team
35
37
  */
36
38
  children: {
37
39
  user: "UserModel",
38
- deck: "DeckModel"
40
+ deck: "DeckModel",
41
+ team: "TeamModel",
42
+ keylist_team: "TeamModel",
39
43
  },
40
44
 
41
45
  toServer() {
@@ -47,16 +51,31 @@ export const PresetModel = BaseModel.extend(
47
51
  name: this.name,
48
52
  context: this.context || {},
49
53
  // user: this._retrieveURL(this.user),
50
- deck: this._retrieveURL(this.deck)
54
+ deck: this._retrieveURL(this.deck),
51
55
  };
52
56
 
53
57
  if (this.id) {
54
58
  data.id = this.id;
55
59
  }
56
60
 
61
+ const teamURL = this._retrieveURL(this.team);
62
+
63
+ if (teamURL) {
64
+ data.team = teamURL;
65
+ }
66
+ const keylistTeamURL = this._retrieveURL(this.keylist_team);
67
+
68
+ if (keylistTeamURL) {
69
+ data.keylist_team = keylistTeamURL;
70
+ }
71
+
57
72
  return data;
58
- }
73
+ },
59
74
  }
60
75
  );
61
76
 
77
+ PresetModel.USER_VISIBILITY = "__user__";
78
+ PresetModel.GLOBAL_VISIBILITY = "__global__";
79
+ PresetModel.STANDARD_SLIDE_SOURCE = "__standard__";
80
+
62
81
  register("PresetModel", PresetModel);
@@ -1,8 +1,8 @@
1
1
  import "./customer.js";
2
2
  import "./user.js";
3
3
 
4
- import { register } from "../state-register.js";
5
4
  import { BaseModel } from "./base.js";
5
+ import { register } from "../state-register.js";
6
6
 
7
7
  /**
8
8
  * @constructor
@@ -17,26 +17,26 @@ export const RefreshRequestModel = BaseModel.extend(
17
17
  created_date: "date",
18
18
  creation_status: "string",
19
19
  creation_status_reason: "string",
20
- modified_date: "date"
20
+ modified_date: "date",
21
21
  },
22
22
 
23
23
  children: {
24
24
  customer: "CustomerModel",
25
- user: "UserModel"
25
+ user: "UserModel",
26
26
  },
27
27
 
28
28
  toServer() {
29
29
  if (this.isNew()) {
30
30
  return {
31
31
  url: this.url(),
32
- customer: this._retrieveURL(this.customer)
32
+ customer: this._retrieveURL(this.customer),
33
33
  };
34
34
  }
35
35
 
36
36
  return {
37
- url: this.url()
37
+ url: this.url(),
38
38
  };
39
- }
39
+ },
40
40
  }
41
41
  );
42
42
 
@@ -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
@@ -36,8 +36,8 @@ export const RoomModel = BaseModel.extend(
36
36
  rtms_version: "string",
37
37
  rtms_token: "string",
38
38
  wamp_version: "string",
39
- websocket_server_uri: "string"
40
- }
39
+ websocket_server_uri: "string",
40
+ },
41
41
  }
42
42
  );
43
43
 
@@ -2,8 +2,8 @@ import "../collections/contacts.js";
2
2
  import "../collections/customers.js";
3
3
  import "../collections/opportunities.js";
4
4
 
5
- import { register } from "../state-register.js";
6
5
  import { BaseModel } from "./base.js";
6
+ import { register } from "../state-register.js";
7
7
 
8
8
  /**
9
9
  * @constructor
@@ -22,8 +22,8 @@ export const SalesforceLookupModel = BaseModel.extend(
22
22
  collections: {
23
23
  contacts: "ContactCollection",
24
24
  customers: "CustomerCollection",
25
- opportunities: "OpportunityCollection"
26
- }
25
+ opportunities: "OpportunityCollection",
26
+ },
27
27
  }
28
28
  );
29
29
 
@@ -1,8 +1,8 @@
1
1
  import "./section.js";
2
2
  import "./appointment.js";
3
3
 
4
- import { register } from "../state-register.js";
5
4
  import { BaseModel } from "./base.js";
5
+ import { register } from "../state-register.js";
6
6
 
7
7
  /**
8
8
  * @constructor
@@ -14,7 +14,7 @@ export const SectionSelectionModel = BaseModel.extend(
14
14
  modelName: "appointment-sections",
15
15
 
16
16
  urlMatchKeys: {
17
- "appointment.id": "number"
17
+ "appointment.id": "number",
18
18
  },
19
19
 
20
20
  /**
@@ -23,7 +23,7 @@ export const SectionSelectionModel = BaseModel.extend(
23
23
  */
24
24
  props: {
25
25
  sequence: "number",
26
- visible: "boolean"
26
+ visible: "boolean",
27
27
  },
28
28
 
29
29
  /**
@@ -32,7 +32,7 @@ export const SectionSelectionModel = BaseModel.extend(
32
32
  */
33
33
  children: {
34
34
  appointment: "AppointmentModel",
35
- section: "SectionModel"
35
+ section: "SectionModel",
36
36
  },
37
37
 
38
38
  toServer() {
@@ -40,7 +40,7 @@ export const SectionSelectionModel = BaseModel.extend(
40
40
  appointment: this._retrieveURL(this.appointment),
41
41
  section: this._retrieveURL(this.section),
42
42
  sequence: this.sequence,
43
- visible: this.visible
43
+ visible: this.visible,
44
44
  };
45
45
 
46
46
  if (this.id) {
@@ -49,7 +49,7 @@ export const SectionSelectionModel = BaseModel.extend(
49
49
  }
50
50
 
51
51
  return data;
52
- }
52
+ },
53
53
  }
54
54
  );
55
55
 
@@ -2,8 +2,8 @@ import "../collections/slides.js";
2
2
  import "./deck-version.js";
3
3
  import "./asset.js";
4
4
 
5
- import { register } from "../state-register.js";
6
5
  import { BaseModel } from "./base.js";
6
+ import { register } from "../state-register.js";
7
7
 
8
8
  /**
9
9
  * @constructor
@@ -56,12 +56,12 @@ export const SectionModel = BaseModel.extend(
56
56
  uploaded: "boolean",
57
57
  visible: {
58
58
  type: "boolean",
59
- default: true
59
+ default: true,
60
60
  },
61
61
  tags: {
62
62
  type: "array",
63
- default: () => []
64
- }
63
+ default: () => [],
64
+ },
65
65
  },
66
66
 
67
67
  /**
@@ -70,15 +70,15 @@ export const SectionModel = BaseModel.extend(
70
70
  */
71
71
  children: {
72
72
  deckversion: "DeckVersionModel",
73
- index_asset: "AssetModel"
73
+ index_asset: "AssetModel",
74
74
  },
75
75
 
76
76
  /**
77
77
  * @property {collections.SlideCollection} slide_set
78
78
  */
79
79
  collections: {
80
- slide_set: "SlideCollection"
81
- }
80
+ slide_set: "SlideCollection",
81
+ },
82
82
  }
83
83
  );
84
84
 
@@ -1,8 +1,8 @@
1
1
  import "./slide.js";
2
2
  import "./appointment.js";
3
3
 
4
- import { register } from "../state-register.js";
5
4
  import { BaseModel } from "./base.js";
5
+ import { register } from "../state-register.js";
6
6
 
7
7
  /**
8
8
  * @constructor
@@ -14,7 +14,7 @@ export const SlideSelectionModel = BaseModel.extend(
14
14
  modelName: "appointment-slides",
15
15
 
16
16
  urlMatchKeys: {
17
- "appointment.id": "number"
17
+ "appointment.id": "number",
18
18
  },
19
19
 
20
20
  /**
@@ -23,7 +23,7 @@ export const SlideSelectionModel = BaseModel.extend(
23
23
  */
24
24
  props: {
25
25
  sequence: "number",
26
- visible: "boolean"
26
+ visible: "boolean",
27
27
  },
28
28
 
29
29
  /**
@@ -32,7 +32,7 @@ export const SlideSelectionModel = BaseModel.extend(
32
32
  */
33
33
  children: {
34
34
  appointment: "AppointmentModel",
35
- slide: "SlideModel"
35
+ slide: "SlideModel",
36
36
  },
37
37
 
38
38
  toServer() {
@@ -40,7 +40,7 @@ export const SlideSelectionModel = BaseModel.extend(
40
40
  appointment: this._retrieveURL(this.appointment),
41
41
  slide: this._retrieveURL(this.slide),
42
42
  sequence: this.sequence,
43
- visible: this.visible
43
+ visible: this.visible,
44
44
  };
45
45
 
46
46
  if (this.id) {
@@ -49,7 +49,7 @@ export const SlideSelectionModel = BaseModel.extend(
49
49
  }
50
50
 
51
51
  return data;
52
- }
52
+ },
53
53
  }
54
54
  );
55
55