@livepreso/api 6.44.0 → 6.46.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 (502) hide show
  1. package/.eslintrc.js +3 -0
  2. package/.rush/temp/1aebf46f78ad5c45f82f8147751890adb37bef9d.log +10 -0
  3. package/.rush/temp/256021b5963b4c0221d3dec247b697b9691a9b2c.log +10 -0
  4. package/.rush/temp/2a322f00f12cf9d1e64afe81275cc78d01c49050.log +10 -0
  5. package/.rush/temp/30061f1865447dcbb3f20a305061205f3dbe6091.log +10 -0
  6. package/.rush/temp/3cdc82c352e8ed90607952873f3aa4c200490874.log +10 -0
  7. package/.rush/temp/45522aea0dee8cb2be1a53248ba45bd235743b43.log +10 -0
  8. package/.rush/temp/5489ab737e406518983c16c57fc3e1edc07c0341.log +10 -0
  9. package/.rush/temp/58fcbb7f15a76326d40e0839ab179755da82a891.log +10 -0
  10. package/.rush/temp/5bc0bba70b733baa4dd976667ba0a1386e516186.log +10 -0
  11. package/.rush/temp/64f1bb696f8d7d7e72907b80df316b127f72e23e.log +10 -0
  12. package/.rush/temp/6f640f951414ea68adb65c17e4ed7527cde54faf.log +10 -0
  13. package/.rush/temp/7c7b958682d4ab5697530be47d0aac62efe1adf1.log +10 -0
  14. package/.rush/temp/82bfb987463fbcfebf04022e6ed00015c73879c8.log +10 -0
  15. package/.rush/temp/844034aa6e542115075e8f3dc5ffc640973e0064.log +10 -0
  16. package/.rush/temp/8b42957a7c15da1f29cb57bee125f13affa70dca.log +10 -0
  17. package/.rush/temp/924652444ab5a6063f328a2217123a2227058896.log +10 -0
  18. package/.rush/temp/9f2030f96d62f3e38052e35201819a216566f14f.log +10 -0
  19. package/.rush/temp/a769db9d81a23000c0e9b1bf4f1a9a9e721d0d7c.log +10 -0
  20. package/.rush/temp/a87d3a8b4ece87ec66f27c86226a9f205617681f.log +10 -0
  21. package/.rush/temp/bb7a5bdcc4af4ad1507f81f33774b31f5b4e4fb7.log +10 -0
  22. package/.rush/temp/c20e29ccaaa9231b38a28bb24451b4ce7562cdc0.log +10 -0
  23. package/.rush/temp/e21303db8f59b4625fd184c9114377d781fd24f8.log +10 -0
  24. package/.rush/temp/e6d303862765b6a5f41dd483d0f9ae083a1fae10.log +10 -0
  25. package/.rush/temp/eaf69fbc059d2f1258d7569136180d4a1d3c7072.log +10 -0
  26. package/.rush/temp/f85d279e2674966daaec83e1c3986a96f86ef304.log +10 -0
  27. package/.rush/temp/fc0a332c5b34c6b90006850cf2d93a48fb4b9a6e.log +10 -0
  28. package/.rush/temp/operation/test/all.log +19 -0
  29. package/.rush/temp/operation/test/state.json +3 -0
  30. package/.rush/temp/{package-deps_test.json → package-deps_build.json} +11 -11
  31. package/.rush/temp/shrinkwrap-deps.json +605 -597
  32. package/CHANGELOG.json +29 -0
  33. package/CHANGELOG.md +15 -1
  34. package/README.md +4 -4
  35. package/api.build.log +1 -1
  36. package/api.test.cache.log +1 -0
  37. package/api.test.log +19 -0
  38. package/bin/test.sh +0 -1
  39. package/cjs/api.js +18 -17
  40. package/cjs/api.js.map +1 -1
  41. package/cjs/api.spec.js +0 -4
  42. package/cjs/api.spec.js.map +1 -1
  43. package/cjs/auth.js +35 -36
  44. package/cjs/auth.js.map +1 -1
  45. package/cjs/auth.spec.js +52 -71
  46. package/cjs/auth.spec.js.map +1 -1
  47. package/cjs/caching.js +2 -7
  48. package/cjs/caching.js.map +1 -1
  49. package/cjs/collections/activity.js +16 -56
  50. package/cjs/collections/activity.js.map +1 -1
  51. package/cjs/collections/adjunct-sections.js +1 -10
  52. package/cjs/collections/adjunct-sections.js.map +1 -1
  53. package/cjs/collections/adjunct-slides.js +1 -10
  54. package/cjs/collections/adjunct-slides.js.map +1 -1
  55. package/cjs/collections/adjunct-sub-slides.js +1 -9
  56. package/cjs/collections/adjunct-sub-slides.js.map +1 -1
  57. package/cjs/collections/appointment-adjunct-tags.js +1 -9
  58. package/cjs/collections/appointment-adjunct-tags.js.map +1 -1
  59. package/cjs/collections/appointment-deckversion-tags.js +1 -9
  60. package/cjs/collections/appointment-deckversion-tags.js.map +1 -1
  61. package/cjs/collections/appointment-duplicates.js +1 -9
  62. package/cjs/collections/appointment-duplicates.js.map +1 -1
  63. package/cjs/collections/appointment-editors.js +1 -10
  64. package/cjs/collections/appointment-editors.js.map +1 -1
  65. package/cjs/collections/appointment-section-tags.js +1 -9
  66. package/cjs/collections/appointment-section-tags.js.map +1 -1
  67. package/cjs/collections/appointment-slide-tags.js +1 -9
  68. package/cjs/collections/appointment-slide-tags.js.map +1 -1
  69. package/cjs/collections/appointment-tags.js +66 -103
  70. package/cjs/collections/appointment-tags.js.map +1 -1
  71. package/cjs/collections/appointment-templates.js +27 -0
  72. package/cjs/collections/appointment-templates.js.map +1 -0
  73. package/cjs/collections/appointments.js +9 -29
  74. package/cjs/collections/appointments.js.map +1 -1
  75. package/cjs/collections/assets.js +1 -9
  76. package/cjs/collections/assets.js.map +1 -1
  77. package/cjs/collections/auto-adjuncts.js +6 -21
  78. package/cjs/collections/auto-adjuncts.js.map +1 -1
  79. package/cjs/collections/base.js +46 -112
  80. package/cjs/collections/base.js.map +1 -1
  81. package/cjs/collections/base.spec.js +204 -233
  82. package/cjs/collections/base.spec.js.map +1 -1
  83. package/cjs/collections/cms-vals.js +9 -16
  84. package/cjs/collections/cms-vals.js.map +1 -1
  85. package/cjs/collections/contact-phones.js +20 -0
  86. package/cjs/collections/contact-phones.js.map +1 -0
  87. package/cjs/collections/contacts.js +1 -9
  88. package/cjs/collections/contacts.js.map +1 -1
  89. package/cjs/collections/created-assets.js +1 -10
  90. package/cjs/collections/created-assets.js.map +1 -1
  91. package/cjs/collections/customers.js +1 -9
  92. package/cjs/collections/customers.js.map +1 -1
  93. package/cjs/collections/deck-notes.js +1 -10
  94. package/cjs/collections/deck-notes.js.map +1 -1
  95. package/cjs/collections/deck-version-screenshots.js +49 -0
  96. package/cjs/collections/deck-version-screenshots.js.map +1 -0
  97. package/cjs/collections/deck-versions.js +5 -20
  98. package/cjs/collections/deck-versions.js.map +1 -1
  99. package/cjs/collections/decks.js +1 -9
  100. package/cjs/collections/decks.js.map +1 -1
  101. package/cjs/collections/deleted-assets.js +1 -10
  102. package/cjs/collections/deleted-assets.js.map +1 -1
  103. package/cjs/collections/dispatches.js +1 -13
  104. package/cjs/collections/dispatches.js.map +1 -1
  105. package/cjs/collections/event-objects.js +1 -9
  106. package/cjs/collections/event-objects.js.map +1 -1
  107. package/cjs/collections/events.js +1 -9
  108. package/cjs/collections/events.js.map +1 -1
  109. package/cjs/collections/groups.js +1 -9
  110. package/cjs/collections/groups.js.map +1 -1
  111. package/cjs/collections/images.js +1 -9
  112. package/cjs/collections/images.js.map +1 -1
  113. package/cjs/collections/locations.js +1 -9
  114. package/cjs/collections/locations.js.map +1 -1
  115. package/cjs/collections/opportunities.js +1 -9
  116. package/cjs/collections/opportunities.js.map +1 -1
  117. package/cjs/collections/pack-diffs.js +1 -9
  118. package/cjs/collections/pack-diffs.js.map +1 -1
  119. package/cjs/collections/packs.js +1 -9
  120. package/cjs/collections/packs.js.map +1 -1
  121. package/cjs/collections/presets.js +1 -9
  122. package/cjs/collections/presets.js.map +1 -1
  123. package/cjs/collections/section-selections.js +1 -9
  124. package/cjs/collections/section-selections.js.map +1 -1
  125. package/cjs/collections/sections.js +1 -9
  126. package/cjs/collections/sections.js.map +1 -1
  127. package/cjs/collections/slide-selections.js +1 -9
  128. package/cjs/collections/slide-selections.js.map +1 -1
  129. package/cjs/collections/slides.js +1 -9
  130. package/cjs/collections/slides.js.map +1 -1
  131. package/cjs/collections/snapshots.js +1 -9
  132. package/cjs/collections/snapshots.js.map +1 -1
  133. package/cjs/collections/sub-slides.js +1 -9
  134. package/cjs/collections/sub-slides.js.map +1 -1
  135. package/cjs/collections/tags.js +1 -9
  136. package/cjs/collections/tags.js.map +1 -1
  137. package/cjs/collections/teams.js +1 -9
  138. package/cjs/collections/teams.js.map +1 -1
  139. package/cjs/collections/templates.js +1 -9
  140. package/cjs/collections/templates.js.map +1 -1
  141. package/cjs/collections/uploads.js +1 -9
  142. package/cjs/collections/uploads.js.map +1 -1
  143. package/cjs/collections/users.js +1 -9
  144. package/cjs/collections/users.js.map +1 -1
  145. package/cjs/collections.js +33 -86
  146. package/cjs/collections.js.map +1 -1
  147. package/cjs/fixtures.js +187 -0
  148. package/cjs/fixtures.js.map +1 -0
  149. package/cjs/index.js +0 -10
  150. package/cjs/index.js.map +1 -1
  151. package/cjs/log.js +0 -1
  152. package/cjs/log.js.map +1 -1
  153. package/cjs/middleware.js +2 -7
  154. package/cjs/middleware.js.map +1 -1
  155. package/cjs/middlewares/auth.js +1 -17
  156. package/cjs/middlewares/auth.js.map +1 -1
  157. package/cjs/middlewares/base.js +3 -9
  158. package/cjs/middlewares/base.js.map +1 -1
  159. package/cjs/middlewares/json.js +1 -19
  160. package/cjs/middlewares/json.js.map +1 -1
  161. package/cjs/middlewares/redirect.js +5 -21
  162. package/cjs/middlewares/redirect.js.map +1 -1
  163. package/cjs/models/activity-item.js +6 -20
  164. package/cjs/models/activity-item.js.map +1 -1
  165. package/cjs/models/adjunct-section.js +8 -21
  166. package/cjs/models/adjunct-section.js.map +1 -1
  167. package/cjs/models/adjunct-slide.js +8 -21
  168. package/cjs/models/adjunct-slide.js.map +1 -1
  169. package/cjs/models/adjunct-sub-slide.js +1 -16
  170. package/cjs/models/adjunct-sub-slide.js.map +1 -1
  171. package/cjs/models/adjunct.js +34 -10
  172. package/cjs/models/adjunct.js.map +1 -1
  173. package/cjs/models/api.js +1 -6
  174. package/cjs/models/api.js.map +1 -1
  175. package/cjs/models/appointment-adjunct-tags.js +1 -13
  176. package/cjs/models/appointment-adjunct-tags.js.map +1 -1
  177. package/cjs/models/appointment-deckversion-tags.js +1 -13
  178. package/cjs/models/appointment-deckversion-tags.js.map +1 -1
  179. package/cjs/models/appointment-duplicate.js +3 -25
  180. package/cjs/models/appointment-duplicate.js.map +1 -1
  181. package/cjs/models/appointment-editor.js +1 -14
  182. package/cjs/models/appointment-editor.js.map +1 -1
  183. package/cjs/models/appointment-section-tags.js +1 -13
  184. package/cjs/models/appointment-section-tags.js.map +1 -1
  185. package/cjs/models/appointment-slide-tags.js +1 -13
  186. package/cjs/models/appointment-slide-tags.js.map +1 -1
  187. package/cjs/models/appointment-stats.js +1 -11
  188. package/cjs/models/appointment-stats.js.map +1 -1
  189. package/cjs/models/appointment-tags.js +1 -10
  190. package/cjs/models/appointment-tags.js.map +1 -1
  191. package/cjs/models/appointment-template.js +23 -0
  192. package/cjs/models/appointment-template.js.map +1 -0
  193. package/cjs/models/appointment-viewing.js +1 -8
  194. package/cjs/models/appointment-viewing.js.map +1 -1
  195. package/cjs/models/appointment.js +94 -69
  196. package/cjs/models/appointment.js.map +1 -1
  197. package/cjs/models/asset.js +12 -11
  198. package/cjs/models/asset.js.map +1 -1
  199. package/cjs/models/auto-adjunct-key-check.js +1 -15
  200. package/cjs/models/auto-adjunct-key-check.js.map +1 -1
  201. package/cjs/models/auto-adjunct.js +5 -14
  202. package/cjs/models/auto-adjunct.js.map +1 -1
  203. package/cjs/models/base.js +89 -173
  204. package/cjs/models/base.js.map +1 -1
  205. package/cjs/models/base.spec.js +8 -30
  206. package/cjs/models/base.spec.js.map +1 -1
  207. package/cjs/models/choicelist.js +1 -8
  208. package/cjs/models/choicelist.js.map +1 -1
  209. package/cjs/models/cms-val.js +28 -15
  210. package/cjs/models/cms-val.js.map +1 -1
  211. package/cjs/models/cms-val.spec.js +25 -0
  212. package/cjs/models/cms-val.spec.js.map +1 -0
  213. package/cjs/models/contact-phone.js +54 -0
  214. package/cjs/models/contact-phone.js.map +1 -0
  215. package/cjs/models/contact.js +1 -18
  216. package/cjs/models/contact.js.map +1 -1
  217. package/cjs/models/customer.js +5 -30
  218. package/cjs/models/customer.js.map +1 -1
  219. package/cjs/models/deck-note.js +1 -9
  220. package/cjs/models/deck-note.js.map +1 -1
  221. package/cjs/models/deck-tags.js +1 -12
  222. package/cjs/models/deck-tags.js.map +1 -1
  223. package/cjs/models/deck-version-screenshot.js +47 -0
  224. package/cjs/models/deck-version-screenshot.js.map +1 -0
  225. package/cjs/models/deck-version.js +54 -47
  226. package/cjs/models/deck-version.js.map +1 -1
  227. package/cjs/models/deck.js +1 -14
  228. package/cjs/models/deck.js.map +1 -1
  229. package/cjs/models/dispatch-preview.js +1 -13
  230. package/cjs/models/dispatch-preview.js.map +1 -1
  231. package/cjs/models/dispatch.js +1 -23
  232. package/cjs/models/dispatch.js.map +1 -1
  233. package/cjs/models/envs.js +1 -6
  234. package/cjs/models/envs.js.map +1 -1
  235. package/cjs/models/event-object.js +1 -11
  236. package/cjs/models/event-object.js.map +1 -1
  237. package/cjs/models/event.js +1 -13
  238. package/cjs/models/event.js.map +1 -1
  239. package/cjs/models/feed-data.js +6 -13
  240. package/cjs/models/feed-data.js.map +1 -1
  241. package/cjs/models/file.js +1 -11
  242. package/cjs/models/file.js.map +1 -1
  243. package/cjs/models/group.js +1 -11
  244. package/cjs/models/group.js.map +1 -1
  245. package/cjs/models/handover.js +1 -13
  246. package/cjs/models/handover.js.map +1 -1
  247. package/cjs/models/hosted-preso.js +1 -15
  248. package/cjs/models/hosted-preso.js.map +1 -1
  249. package/cjs/models/image.js +30 -11
  250. package/cjs/models/image.js.map +1 -1
  251. package/cjs/models/location.js +1 -13
  252. package/cjs/models/location.js.map +1 -1
  253. package/cjs/models/manifest-json.js +75 -74
  254. package/cjs/models/manifest-json.js.map +1 -1
  255. package/cjs/models/onshare.js +1 -14
  256. package/cjs/models/onshare.js.map +1 -1
  257. package/cjs/models/opportunity.js +1 -14
  258. package/cjs/models/opportunity.js.map +1 -1
  259. package/cjs/models/pack-diff.js +1 -14
  260. package/cjs/models/pack-diff.js.map +1 -1
  261. package/cjs/models/pack.js +1 -12
  262. package/cjs/models/pack.js.map +1 -1
  263. package/cjs/models/preset.js +4 -20
  264. package/cjs/models/preset.js.map +1 -1
  265. package/cjs/models/refresh-request.js +17 -11
  266. package/cjs/models/refresh-request.js.map +1 -1
  267. package/cjs/models/room.js +1 -9
  268. package/cjs/models/room.js.map +1 -1
  269. package/cjs/models/salesforce-lookup.js +1 -12
  270. package/cjs/models/salesforce-lookup.js.map +1 -1
  271. package/cjs/models/section-selection.js +1 -14
  272. package/cjs/models/section-selection.js.map +1 -1
  273. package/cjs/models/section.js +4 -15
  274. package/cjs/models/section.js.map +1 -1
  275. package/cjs/models/slide-selection.js +1 -14
  276. package/cjs/models/slide-selection.js.map +1 -1
  277. package/cjs/models/slide.js +4 -15
  278. package/cjs/models/slide.js.map +1 -1
  279. package/cjs/models/snapshot.js +13 -15
  280. package/cjs/models/snapshot.js.map +1 -1
  281. package/cjs/models/snapshot.spec.js +44 -0
  282. package/cjs/models/snapshot.spec.js.map +1 -0
  283. package/cjs/models/sub-slide.js +1 -12
  284. package/cjs/models/sub-slide.js.map +1 -1
  285. package/cjs/models/support-ticket.js +1 -11
  286. package/cjs/models/support-ticket.js.map +1 -1
  287. package/cjs/models/tag.js +1 -13
  288. package/cjs/models/tag.js.map +1 -1
  289. package/cjs/models/team.js +14 -13
  290. package/cjs/models/team.js.map +1 -1
  291. package/cjs/models/template.js +89 -15
  292. package/cjs/models/template.js.map +1 -1
  293. package/cjs/models/tenancy.js +4 -11
  294. package/cjs/models/tenancy.js.map +1 -1
  295. package/cjs/models/timing-log.js +21 -78
  296. package/cjs/models/timing-log.js.map +1 -1
  297. package/cjs/models/timing-log.spec.js +24 -37
  298. package/cjs/models/timing-log.spec.js.map +1 -1
  299. package/cjs/models/token.js +46 -0
  300. package/cjs/models/token.js.map +1 -0
  301. package/cjs/models/transcribe-socket.js +1 -8
  302. package/cjs/models/transcribe-socket.js.map +1 -1
  303. package/cjs/models/upload.js +1 -7
  304. package/cjs/models/upload.js.map +1 -1
  305. package/cjs/models/user.js +11 -28
  306. package/cjs/models/user.js.map +1 -1
  307. package/cjs/models/user.spec.js +20 -30
  308. package/cjs/models/user.spec.js.map +1 -1
  309. package/cjs/models.js +44 -128
  310. package/cjs/models.js.map +1 -1
  311. package/cjs/presentation/appointment-presentation.js +14 -36
  312. package/cjs/presentation/appointment-presentation.js.map +1 -1
  313. package/cjs/presentation/base-presentation-collection.js +1 -7
  314. package/cjs/presentation/base-presentation-collection.js.map +1 -1
  315. package/cjs/presentation/base-presentation-model.js +108 -33
  316. package/cjs/presentation/base-presentation-model.js.map +1 -1
  317. package/cjs/presentation/base-presentation-model.spec.js +58 -23
  318. package/cjs/presentation/base-presentation-model.spec.js.map +1 -1
  319. package/cjs/presentation/presentation-deck.js +73 -83
  320. package/cjs/presentation/presentation-deck.js.map +1 -1
  321. package/cjs/presentation/presentation-deck.spec.js +118 -88
  322. package/cjs/presentation/presentation-deck.spec.js.map +1 -1
  323. package/cjs/presentation/presentation-decks.js +1 -9
  324. package/cjs/presentation/presentation-decks.js.map +1 -1
  325. package/cjs/presentation/presentation-section.js +70 -84
  326. package/cjs/presentation/presentation-section.js.map +1 -1
  327. package/cjs/presentation/presentation-section.spec.js +296 -238
  328. package/cjs/presentation/presentation-section.spec.js.map +1 -1
  329. package/cjs/presentation/presentation-sections.js +1 -9
  330. package/cjs/presentation/presentation-sections.js.map +1 -1
  331. package/cjs/presentation/presentation-slide.js +74 -84
  332. package/cjs/presentation/presentation-slide.js.map +1 -1
  333. package/cjs/presentation/presentation-slide.spec.js +211 -166
  334. package/cjs/presentation/presentation-slide.spec.js.map +1 -1
  335. package/cjs/presentation/presentation-slides.js +1 -9
  336. package/cjs/presentation/presentation-slides.js.map +1 -1
  337. package/cjs/presentation/presentation-subslide.js +3 -23
  338. package/cjs/presentation/presentation-subslide.js.map +1 -1
  339. package/cjs/presentation/presentation-subslide.spec.js +101 -125
  340. package/cjs/presentation/presentation-subslide.spec.js.map +1 -1
  341. package/cjs/presentation/presentation-subslides.js +1 -9
  342. package/cjs/presentation/presentation-subslides.js.map +1 -1
  343. package/cjs/presentation/presentation.js +87 -32
  344. package/cjs/presentation/presentation.js.map +1 -1
  345. package/cjs/presentation.js +0 -20
  346. package/cjs/presentation.js.map +1 -1
  347. package/cjs/selections.js +81 -0
  348. package/cjs/selections.js.map +1 -0
  349. package/cjs/state-register.js +3 -11
  350. package/cjs/state-register.js.map +1 -1
  351. package/cjs/sync.js +32 -76
  352. package/cjs/sync.js.map +1 -1
  353. package/cjs/utils.js +51 -42
  354. package/cjs/utils.js.map +1 -1
  355. package/cjs/utils.spec.js +0 -4
  356. package/cjs/utils.spec.js.map +1 -1
  357. package/jest.config.js +5 -3
  358. package/package.json +11 -8
  359. package/src/api.js +17 -2
  360. package/src/auth.js +45 -9
  361. package/src/auth.spec.js +2 -0
  362. package/src/collections/activity.js +4 -4
  363. package/src/collections/adjunct-sections.js +1 -1
  364. package/src/collections/adjunct-slides.js +1 -1
  365. package/src/collections/adjunct-sub-slides.js +1 -1
  366. package/src/collections/appointment-adjunct-tags.js +1 -1
  367. package/src/collections/appointment-deckversion-tags.js +2 -2
  368. package/src/collections/appointment-duplicates.js +1 -1
  369. package/src/collections/appointment-editors.js +1 -1
  370. package/src/collections/appointment-section-tags.js +1 -1
  371. package/src/collections/appointment-slide-tags.js +1 -1
  372. package/src/collections/appointment-tags.js +20 -18
  373. package/src/collections/appointment-templates.js +26 -0
  374. package/src/collections/appointments.js +9 -9
  375. package/src/collections/assets.js +1 -1
  376. package/src/collections/auto-adjuncts.js +1 -1
  377. package/src/collections/base.js +20 -10
  378. package/src/collections/base.spec.js +19 -5
  379. package/src/collections/cms-vals.js +5 -1
  380. package/src/collections/contact-phones.js +18 -0
  381. package/src/collections/contacts.js +1 -1
  382. package/src/collections/created-assets.js +1 -1
  383. package/src/collections/customers.js +1 -1
  384. package/src/collections/deck-notes.js +1 -1
  385. package/src/collections/deck-version-screenshots.js +48 -0
  386. package/src/collections/deck-versions.js +1 -1
  387. package/src/collections/decks.js +1 -1
  388. package/src/collections/deleted-assets.js +1 -1
  389. package/src/collections/dispatches.js +2 -2
  390. package/src/collections/event-objects.js +1 -1
  391. package/src/collections/events.js +1 -1
  392. package/src/collections/groups.js +1 -1
  393. package/src/collections/images.js +1 -1
  394. package/src/collections/locations.js +1 -1
  395. package/src/collections/opportunities.js +1 -1
  396. package/src/collections/pack-diffs.js +1 -1
  397. package/src/collections/packs.js +1 -1
  398. package/src/collections/presets.js +1 -1
  399. package/src/collections/section-selections.js +1 -1
  400. package/src/collections/sections.js +1 -1
  401. package/src/collections/slide-selections.js +1 -1
  402. package/src/collections/slides.js +1 -1
  403. package/src/collections/snapshots.js +1 -1
  404. package/src/collections/sub-slides.js +1 -1
  405. package/src/collections/tags.js +1 -1
  406. package/src/collections/teams.js +1 -1
  407. package/src/collections/templates.js +1 -1
  408. package/src/collections/uploads.js +1 -1
  409. package/src/collections/users.js +1 -1
  410. package/src/collections.js +3 -0
  411. package/src/fixtures.js +193 -0
  412. package/src/models/activity-item.js +3 -1
  413. package/src/models/adjunct-section.js +7 -2
  414. package/src/models/adjunct-slide.js +7 -2
  415. package/src/models/adjunct-sub-slide.js +1 -1
  416. package/src/models/adjunct.js +39 -1
  417. package/src/models/appointment-adjunct-tags.js +1 -1
  418. package/src/models/appointment-deckversion-tags.js +1 -1
  419. package/src/models/appointment-duplicate.js +1 -1
  420. package/src/models/appointment-editor.js +1 -1
  421. package/src/models/appointment-section-tags.js +1 -1
  422. package/src/models/appointment-slide-tags.js +1 -1
  423. package/src/models/appointment-stats.js +1 -1
  424. package/src/models/appointment-tags.js +1 -1
  425. package/src/models/appointment-template.js +19 -0
  426. package/src/models/appointment-viewing.js +1 -1
  427. package/src/models/appointment.js +112 -37
  428. package/src/models/asset.js +15 -1
  429. package/src/models/auto-adjunct-key-check.js +1 -1
  430. package/src/models/auto-adjunct.js +4 -1
  431. package/src/models/base.js +55 -22
  432. package/src/models/base.spec.js +34 -27
  433. package/src/models/choicelist.js +1 -1
  434. package/src/models/cms-val.js +24 -1
  435. package/src/models/cms-val.spec.js +14 -0
  436. package/src/models/contact-phone.js +57 -0
  437. package/src/models/contact.js +1 -1
  438. package/src/models/customer.js +3 -3
  439. package/src/models/deck-note.js +1 -1
  440. package/src/models/deck-tags.js +1 -1
  441. package/src/models/deck-version-screenshot.js +48 -0
  442. package/src/models/deck-version.js +60 -9
  443. package/src/models/deck.js +1 -1
  444. package/src/models/dispatch-preview.js +1 -1
  445. package/src/models/dispatch.js +1 -1
  446. package/src/models/event-object.js +1 -1
  447. package/src/models/event.js +1 -1
  448. package/src/models/feed-data.js +3 -1
  449. package/src/models/file.js +1 -1
  450. package/src/models/group.js +1 -1
  451. package/src/models/handover.js +1 -1
  452. package/src/models/hosted-preso.js +1 -1
  453. package/src/models/image.js +33 -1
  454. package/src/models/location.js +1 -1
  455. package/src/models/manifest-json.js +57 -6
  456. package/src/models/onshare.js +1 -1
  457. package/src/models/opportunity.js +1 -1
  458. package/src/models/pack-diff.js +1 -1
  459. package/src/models/pack.js +1 -1
  460. package/src/models/preset.js +3 -1
  461. package/src/models/refresh-request.js +15 -1
  462. package/src/models/room.js +1 -1
  463. package/src/models/salesforce-lookup.js +1 -1
  464. package/src/models/section-selection.js +1 -1
  465. package/src/models/section.js +3 -1
  466. package/src/models/slide-selection.js +1 -1
  467. package/src/models/slide.js +3 -1
  468. package/src/models/snapshot.js +11 -2
  469. package/src/models/snapshot.spec.js +31 -0
  470. package/src/models/sub-slide.js +1 -1
  471. package/src/models/support-ticket.js +1 -1
  472. package/src/models/tag.js +1 -1
  473. package/src/models/team.js +14 -3
  474. package/src/models/template.js +74 -2
  475. package/src/models/tenancy.js +4 -1
  476. package/src/models/timing-log.js +2 -2
  477. package/src/models/timing-log.spec.js +1 -1
  478. package/src/models/token.js +47 -0
  479. package/src/models/transcribe-socket.js +1 -1
  480. package/src/models/user.js +15 -2
  481. package/src/models.js +4 -0
  482. package/src/presentation/appointment-presentation.js +13 -5
  483. package/src/presentation/base-presentation-collection.js +1 -1
  484. package/src/presentation/base-presentation-model.js +88 -3
  485. package/src/presentation/base-presentation-model.spec.js +80 -3
  486. package/src/presentation/presentation-deck.js +65 -22
  487. package/src/presentation/presentation-deck.spec.js +55 -2
  488. package/src/presentation/presentation-decks.js +1 -1
  489. package/src/presentation/presentation-section.js +91 -31
  490. package/src/presentation/presentation-section.spec.js +142 -10
  491. package/src/presentation/presentation-sections.js +1 -1
  492. package/src/presentation/presentation-slide.js +69 -23
  493. package/src/presentation/presentation-slide.spec.js +105 -9
  494. package/src/presentation/presentation-slides.js +1 -1
  495. package/src/presentation/presentation-subslide.js +5 -5
  496. package/src/presentation/presentation-subslide.spec.js +3 -3
  497. package/src/presentation/presentation-subslides.js +1 -1
  498. package/src/presentation/presentation.js +27 -8
  499. package/src/selections.js +71 -0
  500. package/src/sync.js +1 -1
  501. package/src/utils.js +31 -8
  502. package/src/utils.spec.js +4 -4
@@ -1,5 +1,7 @@
1
1
  import "./presentation-slides.js";
2
2
 
3
+ import * as collections from "../collections.js";
4
+
3
5
  import {
4
6
  AdjunctSectionModel,
5
7
  AdjunctSlideModel,
@@ -50,6 +52,7 @@ export const PresentationSection = BasePresentationModel.extend(
50
52
  * @property {array} tags
51
53
  * @property {boolean} impostor
52
54
  * @property {boolean} isWelcome
55
+ * @property {string[]} cmsvalkey_set
53
56
  */
54
57
  props: {
55
58
  id: "number",
@@ -93,8 +96,9 @@ export const PresentationSection = BasePresentationModel.extend(
93
96
  impostor: "boolean",
94
97
  isWelcome: {
95
98
  type: "boolean",
96
- default: () => false,
99
+ default: false,
97
100
  },
101
+ cmsvalkey_set: "array",
98
102
  },
99
103
 
100
104
  /**
@@ -102,6 +106,7 @@ export const PresentationSection = BasePresentationModel.extend(
102
106
  */
103
107
  children: {
104
108
  adjunct: "AdjunctModel",
109
+ template: "TemplateModel",
105
110
  },
106
111
 
107
112
  /**
@@ -131,12 +136,12 @@ export const PresentationSection = BasePresentationModel.extend(
131
136
  return PresentationSlide.createFromAdjunctSlide(
132
137
  slide,
133
138
  this,
134
- options
139
+ options,
135
140
  );
136
141
  }
137
142
 
138
143
  return PresentationSlide.createFromSlide(slide, options);
139
- })
144
+ }),
140
145
  );
141
146
  },
142
147
 
@@ -154,7 +159,7 @@ export const PresentationSection = BasePresentationModel.extend(
154
159
  }
155
160
  return this._url;
156
161
  },
157
- }
162
+ },
158
163
  );
159
164
 
160
165
  /**
@@ -169,8 +174,13 @@ PresentationSection.createFromSection = function (sectionModel, options = {}) {
169
174
  rootAssetPath: null,
170
175
  selections: null,
171
176
  choicelist: null,
177
+ screenshots: new collections.DeckVersionScreenshotCollection(),
172
178
  });
173
179
 
180
+ options.screenshots = PresentationSection.screenshotsToMap(
181
+ options.screenshots,
182
+ );
183
+
174
184
  let html;
175
185
  let css;
176
186
 
@@ -189,7 +199,7 @@ PresentationSection.createFromSection = function (sectionModel, options = {}) {
189
199
 
190
200
  const config = PresentationSection.getVisibilityAndSequence(
191
201
  sectionModel,
192
- options
202
+ options,
193
203
  );
194
204
 
195
205
  const tags = PresentationSection.getTags(sectionModel, options);
@@ -201,7 +211,10 @@ PresentationSection.createFromSection = function (sectionModel, options = {}) {
201
211
  css,
202
212
  key: sectionModel.key,
203
213
  adjunctSlideLimit: sectionModel.adjunctslide_limit,
204
- thumbnail: sectionModel.image_256,
214
+ thumbnail: PresentationSection.getThumbnail(
215
+ sectionModel,
216
+ options.screenshots,
217
+ ),
205
218
  custom: false,
206
219
  impostor: false,
207
220
  title: sectionModel.title,
@@ -212,6 +225,7 @@ PresentationSection.createFromSection = function (sectionModel, options = {}) {
212
225
  sequence: config.sequence,
213
226
  visible: config.visible,
214
227
  selectionID: config.selectionID,
228
+ cmsvalkey_set: sectionModel.cmsvalkey_set,
215
229
  });
216
230
 
217
231
  return section;
@@ -228,7 +242,7 @@ PresentationSection.createFromSection = function (sectionModel, options = {}) {
228
242
  PresentationSection.createFromAdjunctSection = function (
229
243
  adjunctSectionModel,
230
244
  deckVersionModel,
231
- options = {}
245
+ options = {},
232
246
  ) {
233
247
  _.defaults(options, {
234
248
  rootAssetPath: null,
@@ -237,8 +251,13 @@ PresentationSection.createFromAdjunctSection = function (
237
251
  getUniqueAdjunctID: () => {
238
252
  return parseInt(_.uniqueId(), 10);
239
253
  },
254
+ screenshots: new collections.DeckVersionScreenshotCollection(),
240
255
  });
241
256
 
257
+ options.screenshots = PresentationSection.screenshotsToMap(
258
+ options.screenshots,
259
+ );
260
+
242
261
  const keyID =
243
262
  adjunctSectionModel.id ||
244
263
  (adjunctSectionModel.creator_autoadjunct
@@ -256,20 +275,17 @@ PresentationSection.createFromAdjunctSection = function (
256
275
 
257
276
  const config = PresentationSection.getVisibilityAndSequence(
258
277
  adjunctSectionModel,
259
- options
278
+ options,
260
279
  );
261
280
 
262
281
  const tags = PresentationSection.getTags(adjunctSectionModel, options);
282
+ const autoAdjunctID = adjunctSectionModel.creator_autoadjunct?.id || null;
263
283
 
264
284
  const section = new PresentationSection({
265
285
  id: options.getUniqueAdjunctID(),
266
- adjunct: adjunctSectionModel.adjunct
267
- ? adjunctSectionModel.adjunct.url()
268
- : null,
286
+ adjunct: adjunctSectionModel.adjunct,
269
287
  adjunctID: adjunctSectionModel.id,
270
- autoAdjunctID: adjunctSectionModel.creator_autoadjunct
271
- ? adjunctSectionModel.creator_autoadjunct.id
272
- : null,
288
+ autoAdjunctID,
273
289
  key,
274
290
  thumbnail: adjunctSectionModel.image_256,
275
291
  custom: !adjunctSectionModel.created_by_autoadjunct,
@@ -284,12 +300,15 @@ PresentationSection.createFromAdjunctSection = function (
284
300
  index: config.sequence,
285
301
  sequence: config.sequence,
286
302
  visible: config.visible,
303
+ cmsvalkey_set: adjunctSectionModel.template?.cmsvalkey_set || [],
304
+ templateID: adjunctSectionModel.template?.id || null,
305
+ template: adjunctSectionModel.template || null,
287
306
  });
288
307
 
289
308
  if (adjunctSectionModel.template) {
290
309
  if (!adjunctSectionModel.template.index_asset) {
291
310
  throw new Error(
292
- "Template missing index_asset. Do you have the whole template available?"
311
+ "Template missing index_asset. Do you have the whole template available?",
293
312
  );
294
313
  }
295
314
  const origPath = adjunctSectionModel.template.index_asset.orig_path;
@@ -301,14 +320,20 @@ PresentationSection.createFromAdjunctSection = function (
301
320
  css = `${options.rootAssetPath}${origPath}/slide.css`;
302
321
  } else {
303
322
  const assetRoot = getAssetRoot(
304
- adjunctSectionModel.template.index_asset.url()
323
+ adjunctSectionModel.template.index_asset.url(),
305
324
  );
306
325
  html = `${assetRoot}index.html`;
307
326
  css = `${assetRoot}slide.css`;
308
327
  }
309
328
  section.html = html;
310
329
  section.css = css;
311
- section.thumbnail = adjunctSectionModel.template.image_256;
330
+ section.thumbnail =
331
+ // Try and use autoadjunct screenshot (if there is one), otherwise
332
+ // use the template's image as a fallback
333
+ PresentationSection.getThumbnail(
334
+ adjunctSectionModel.creator_autoadjunct,
335
+ options.screenshots,
336
+ ) || adjunctSectionModel.template.image_256;
312
337
  } else {
313
338
  section.image = adjunctSectionModel.image_original;
314
339
  }
@@ -319,14 +344,19 @@ PresentationSection.createFromAdjunctSection = function (
319
344
  PresentationSection.createFromImpostorSection = function (
320
345
  slideModel,
321
346
  DeckVersionModel,
322
- options = {}
347
+ options = {},
323
348
  ) {
324
349
  _.defaults(options, {
325
350
  rootAssetPath: null,
326
351
  selections: null,
327
352
  choicelist: null,
353
+ screenshots: new collections.DeckVersionScreenshotCollection(),
328
354
  });
329
355
 
356
+ options.screenshots = PresentationSection.screenshotsToMap(
357
+ options.screenshots,
358
+ );
359
+
330
360
  let html;
331
361
  let css;
332
362
 
@@ -334,7 +364,7 @@ PresentationSection.createFromImpostorSection = function (
334
364
 
335
365
  if (options.rootAssetPath) {
336
366
  const baseRoot = getAssetRoot(
337
- slideModel.section.deckversion.index_asset.url()
367
+ slideModel.section.deckversion.index_asset.url(),
338
368
  );
339
369
  const sectionPath = assetRoot.slice(baseRoot.length);
340
370
 
@@ -347,11 +377,10 @@ PresentationSection.createFromImpostorSection = function (
347
377
 
348
378
  const config = PresentationSection.getVisibilityAndSequence(
349
379
  slideModel,
350
- options
380
+ options,
351
381
  );
352
382
 
353
383
  const tags = PresentationSection.getTags(slideModel, options);
354
-
355
384
  const section = new PresentationSection({
356
385
  id: slideModel.id,
357
386
  adjunctID: null,
@@ -359,7 +388,10 @@ PresentationSection.createFromImpostorSection = function (
359
388
  css,
360
389
  key: slideModel.key,
361
390
  adjunctSlideLimit: slideModel.adjunctslide_limit,
362
- thumbnail: slideModel.image_256,
391
+ thumbnail: PresentationSection.getThumbnail(
392
+ slideModel,
393
+ options.screenshots,
394
+ ),
363
395
  custom: false,
364
396
  impostor: true,
365
397
  title: slideModel.title,
@@ -370,6 +402,7 @@ PresentationSection.createFromImpostorSection = function (
370
402
  sequence: config.sequence,
371
403
  visible: config.visible,
372
404
  selectionID: config.selectionID,
405
+ cmsvalkey_set: slideModel.cmsvalkey_set,
373
406
  });
374
407
 
375
408
  return section;
@@ -378,7 +411,7 @@ PresentationSection.createFromImpostorSection = function (
378
411
  PresentationSection.createFromManifestJSON = function (
379
412
  manifestJSON,
380
413
  sectionKey,
381
- index
414
+ index,
382
415
  ) {
383
416
  const section = new PresentationSection({
384
417
  id: parseInt(_.uniqueId(), 10),
@@ -393,6 +426,7 @@ PresentationSection.createFromManifestJSON = function (
393
426
  visible: true,
394
427
  deckversion: 1,
395
428
  tags: manifestJSON.tags[sectionKey] || null,
429
+ cmsvalkey_set: [],
396
430
  });
397
431
 
398
432
  const slideKeys = Object.keys(manifestJSON.titles).filter((slideKey) => {
@@ -405,9 +439,9 @@ PresentationSection.createFromManifestJSON = function (
405
439
  manifestJSON,
406
440
  key,
407
441
  section.id,
408
- slideIndex
442
+ slideIndex,
409
443
  );
410
- })
444
+ }),
411
445
  );
412
446
 
413
447
  return section;
@@ -432,8 +466,8 @@ PresentationSection.createFromManifestImpostor = function (section, index) {
432
466
  PresentationSlide.createFromManifestImpostor(
433
467
  slide,
434
468
  index,
435
- presentationSection.id
436
- )
469
+ presentationSection.id,
470
+ ),
437
471
  );
438
472
  });
439
473
 
@@ -455,15 +489,20 @@ PresentationSection.createFromAutoAdjunct = function (model, opts = {}) {
455
489
  deckversionID: -1,
456
490
  sequence: opts.index,
457
491
  impostor: false,
492
+ screenshots: new collections.DeckVersionScreenshotCollection(),
458
493
  });
459
494
 
495
+ options.screenshots = PresentationSection.screenshotsToMap(
496
+ options.screenshots,
497
+ );
498
+
460
499
  const tags = PresentationSection.getTags(
461
500
  {
462
501
  isAutoAdjunct: true,
463
502
  key: model.key,
464
503
  tags: model.tags,
465
504
  },
466
- options
505
+ options,
467
506
  );
468
507
 
469
508
  const autoAdjunct = new AutoAdjunctModel(model);
@@ -473,14 +512,18 @@ PresentationSection.createFromAutoAdjunct = function (model, opts = {}) {
473
512
  adjunctID: autoAdjunct.id,
474
513
  autoAdjunctID: autoAdjunct.id,
475
514
  createdByTemplate: autoAdjunct.template !== null,
476
- templateID: autoAdjunct.template ? autoAdjunct.template.id : null,
515
+ templateID: autoAdjunct.template?.id || null,
516
+ template: autoAdjunct.template || null,
477
517
  html: "",
478
518
  css: "",
479
519
  sequence: options.sequence,
480
520
  index: options.index,
481
521
  key: autoAdjunct.key,
482
522
  createdByAutoAdjunct: false,
483
- thumbnail: autoAdjunct.image_256,
523
+ thumbnail: PresentationSection.getThumbnail(
524
+ autoAdjunct,
525
+ options.screenshots,
526
+ ),
484
527
  temporary: true,
485
528
  title: autoAdjunct.name,
486
529
  visible: options.visible,
@@ -488,13 +531,27 @@ PresentationSection.createFromAutoAdjunct = function (model, opts = {}) {
488
531
  deckversion: options.deckversionID,
489
532
  impostor: options.impostor,
490
533
  tags,
534
+ cmsvalkey_set: autoAdjunct.cmsvalkey_set,
491
535
  });
492
536
 
493
537
  if (autoAdjunct.template) {
494
- autoAdjunctSection.thumbnail = autoAdjunct.template.image_256;
538
+ // If we've found a new screenshot for it, we don't want to override it here
539
+ if (!autoAdjunctSection.thumbnail) {
540
+ autoAdjunctSection.thumbnail = autoAdjunct.template.image_256;
541
+ }
495
542
  autoAdjunctSection.createdByTemplate = true;
496
543
  autoAdjunctSection.templateID = autoAdjunct.template.id;
497
544
  autoAdjunctSection.html = autoAdjunct.template.index_asset.url();
545
+
546
+ const missingKeys = autoAdjunct.template.cmsvalkey_set
547
+ .filter((t) => {
548
+ return !autoAdjunctSection.cmsvalkey_set.find((k) => k.startsWith(t));
549
+ })
550
+ .map((t) => {
551
+ return `${t}-autoadjunct-${autoAdjunct.id}`;
552
+ });
553
+
554
+ autoAdjunctSection.cmsvalkey_set.push(...missingKeys);
498
555
  } else {
499
556
  autoAdjunctSection.image = autoAdjunct.image_original;
500
557
  }
@@ -507,9 +564,11 @@ PresentationSection.createFromTemplate = function (template, index, minID = 0) {
507
564
 
508
565
  const deckversion = new DeckVersionModel(templateModel.deckversion);
509
566
  const templateAssetRoot = getAssetRoot(templateModel.index_asset.url());
567
+
510
568
  const presentationSection = new PresentationSection({
511
569
  id: minID + parseInt(_.uniqueId(), 10),
512
570
  templateID: templateModel.id,
571
+ template: templateModel,
513
572
  key: `template-${templateModel.key}`,
514
573
  title: templateModel.title,
515
574
  html: `${templateAssetRoot}index.html`,
@@ -525,6 +584,7 @@ PresentationSection.createFromTemplate = function (template, index, minID = 0) {
525
584
  sequence: 9000 + templateModel.sequence,
526
585
  createdByTemplate: true,
527
586
  index,
587
+ cmsvalkey_set: [],
528
588
  });
529
589
 
530
590
  return presentationSection;
@@ -85,17 +85,56 @@ describe("#createFromSection", () => {
85
85
 
86
86
  const presentationSection = PresentationSection.createFromSection(
87
87
  section,
88
- options
88
+ options,
89
89
  );
90
90
 
91
91
  expect(presentationSection.tags).toEqual(["section-tag"]);
92
92
  });
93
+
94
+ describe("Screenshots", () => {
95
+ it("should use the default image from the slide if no screenshot found", () => {
96
+ const data = getSectionJSON();
97
+ const section = new SectionModel(data);
98
+ const presentationSection =
99
+ PresentationSection.createFromSection(section);
100
+ expect(presentationSection.thumbnail).toEqual(data.image_256);
101
+ });
102
+
103
+ it("should use the screenshot model if it matches", () => {
104
+ const section = new SectionModel(getSectionJSON());
105
+ const options = {
106
+ screenshots: {
107
+ [section.url()]: "test-screenshot.png",
108
+ },
109
+ };
110
+
111
+ const presentationSection = PresentationSection.createFromSection(
112
+ section,
113
+ options,
114
+ );
115
+ expect(presentationSection.thumbnail).toEqual("test-screenshot.png");
116
+ });
117
+ });
93
118
  });
94
119
 
95
120
  describe("#createFromAdjunctSection", () => {
96
- const getAdjunctSectionJSON = () => {
121
+ const getAdjunctSectionJSON = (includeTemplate) => {
122
+ const template = {
123
+ id: 1,
124
+ image_256: "template.png",
125
+ index_asset: {
126
+ created_date: "2021-07-22T04:57:32.977770Z",
127
+ data: "index.html",
128
+ id: 148204,
129
+ modified_date: "2021-07-22T04:57:32.977790Z",
130
+ orig_path: "templates/test-template/foo",
131
+ pack: "https://staging-test.salespreso.com/api/packs/410/",
132
+ url: "https://staging-test-cdn.salespreso.com/media/pack/410/assets/sections/test-deck/slides/slide-key/index.html",
133
+ },
134
+ };
135
+
97
136
  return {
98
- adjunct: "https://staging-test.salespreso.com/api/adjuncts/7470/",
137
+ adjunct: "/api/adjuncts/7470/",
99
138
  appointment: "https://staging-test.salespreso.com/api/appointments/2422/",
100
139
  created_by_autoadjunct: true,
101
140
  created_date: "2021-09-20T01:57:55.125224Z",
@@ -120,7 +159,7 @@ describe("#createFromAdjunctSection", () => {
120
159
  modified_date: "2021-09-20T01:57:55.125229Z",
121
160
  sequence: 1,
122
161
  tags: [],
123
- template: null,
162
+ template: includeTemplate ? template : null,
124
163
  title: "Five",
125
164
  url: "https://staging-test.salespreso.com/api/adjunctsections/1737/",
126
165
  };
@@ -130,12 +169,13 @@ describe("#createFromAdjunctSection", () => {
130
169
  const adjunctSection = new AdjunctSectionModel(getAdjunctSectionJSON());
131
170
  const presentationSection = PresentationSection.createFromAdjunctSection(
132
171
  adjunctSection,
133
- { id: 1 }
172
+ { id: 1 },
134
173
  );
135
174
 
136
175
  const expected = {
137
176
  adjunct: {
138
- url: "https://staging-test.salespreso.com/api/adjuncts/7470/",
177
+ url: "/api/adjuncts/7470/",
178
+ id: 7470,
139
179
  },
140
180
  adjunctID: 1737,
141
181
  adjunctSlideLimit: 0,
@@ -155,6 +195,7 @@ describe("#createFromAdjunctSection", () => {
155
195
  sequence: 1,
156
196
  slides: [],
157
197
  tags: [],
198
+ template: null,
158
199
  templateID: null,
159
200
  temporary: true,
160
201
  thumbnail:
@@ -162,6 +203,7 @@ describe("#createFromAdjunctSection", () => {
162
203
  title: "Five",
163
204
  url: "/api/adjunctsections/1737/",
164
205
  visible: true,
206
+ cmsvalkey_set: [],
165
207
  };
166
208
 
167
209
  expect(presentationSection.toJSON()).toEqual(expected);
@@ -175,11 +217,42 @@ describe("#createFromAdjunctSection", () => {
175
217
  const presentationSection = PresentationSection.createFromAdjunctSection(
176
218
  adjunctSection,
177
219
  { id: 1 },
178
- options
220
+ options,
179
221
  );
180
222
 
181
223
  expect(presentationSection.tags).toEqual(["adjunctsection-tag"]);
182
224
  });
225
+
226
+ describe("Screenshots", () => {
227
+ it("should use the default image from the model if no screenshot found", () => {
228
+ const data = getAdjunctSectionJSON(true);
229
+ const adjunctSection = new AdjunctSectionModel(data);
230
+ const presentationSlide = PresentationSection.createFromAdjunctSection(
231
+ adjunctSection,
232
+ { id: 1 },
233
+ );
234
+ expect(presentationSlide.thumbnail).toEqual(data.template.image_256);
235
+ });
236
+
237
+ it("should use the screenshot model if it matches", () => {
238
+ const adjunctSection = new AdjunctSectionModel(
239
+ getAdjunctSectionJSON(true),
240
+ );
241
+
242
+ const options = {
243
+ screenshots: {
244
+ "/api/autoadjuncts/545/": "test-screenshot.png",
245
+ },
246
+ };
247
+
248
+ const presentationSection = PresentationSection.createFromAdjunctSection(
249
+ adjunctSection,
250
+ { id: 1 },
251
+ options,
252
+ );
253
+ expect(presentationSection.thumbnail).toEqual("test-screenshot.png");
254
+ });
255
+ });
183
256
  });
184
257
 
185
258
  describe("#createFromImpostorSection", () => {
@@ -268,11 +341,39 @@ describe("#createFromImpostorSection", () => {
268
341
  const presentationSection = PresentationSection.createFromImpostorSection(
269
342
  impostorSection,
270
343
  null,
271
- options
344
+ options,
272
345
  );
273
346
 
274
347
  expect(presentationSection.tags).toEqual(["impostorsection-tag"]);
275
348
  });
349
+
350
+ describe("Screenshots", () => {
351
+ it("should use the default image from the model if no screenshot found", () => {
352
+ const data = getImpostorSectionJSON();
353
+ const impostorSection = new SlideModel(data);
354
+ const presentationSection = PresentationSection.createFromImpostorSection(
355
+ impostorSection,
356
+ null,
357
+ );
358
+ expect(presentationSection.thumbnail).toEqual(data.image_256);
359
+ });
360
+
361
+ it("should use the screenshot model if it matches", () => {
362
+ const impostorSection = new SlideModel(getImpostorSectionJSON());
363
+ const options = {
364
+ screenshots: {
365
+ [impostorSection.url()]: "test-screenshot.png",
366
+ },
367
+ };
368
+
369
+ const presentationSection = PresentationSection.createFromImpostorSection(
370
+ impostorSection,
371
+ null,
372
+ options,
373
+ );
374
+ expect(presentationSection.thumbnail).toEqual("test-screenshot.png");
375
+ });
376
+ });
276
377
  });
277
378
 
278
379
  describe("#createFromAutoAdjunct", () => {
@@ -313,7 +414,7 @@ describe("#createFromAutoAdjunct", () => {
313
414
  };
314
415
  const presentationSection = PresentationSection.createFromAutoAdjunct(
315
416
  autoAdjunct,
316
- options
417
+ options,
317
418
  );
318
419
 
319
420
  const expected = {
@@ -334,6 +435,7 @@ describe("#createFromAutoAdjunct", () => {
334
435
  key: "autoadjunct-five",
335
436
  sequence: 3,
336
437
  slides: [],
438
+ template: null,
337
439
  tags: [],
338
440
  templateID: null,
339
441
  temporary: true,
@@ -355,9 +457,39 @@ describe("#createFromAutoAdjunct", () => {
355
457
  };
356
458
  const presentationSection = PresentationSection.createFromAutoAdjunct(
357
459
  autoAdjunct,
358
- options
460
+ options,
359
461
  );
360
462
 
361
463
  expect(presentationSection.tags).toEqual(["autoadjunct-tag"]);
362
464
  });
465
+
466
+ describe("Screenshots", () => {
467
+ it("should use the default image from the model if no screenshot found", () => {
468
+ const data = getAutoAdjunctJSON();
469
+ const options = { index: 3, deckversionID: 12 };
470
+ const autoAdjunct = new AutoAdjunctModel(data);
471
+ const presentationSection = PresentationSection.createFromAutoAdjunct(
472
+ autoAdjunct,
473
+ options,
474
+ );
475
+ expect(presentationSection.thumbnail).toEqual(data.image_256);
476
+ });
477
+
478
+ it("should use the screenshot model if it matches", () => {
479
+ const autoAdjunct = new AutoAdjunctModel(getAutoAdjunctJSON());
480
+ const options = {
481
+ index: 3,
482
+ deckversionID: 12,
483
+ screenshots: {
484
+ [autoAdjunct.url()]: "test-screenshot.png",
485
+ },
486
+ };
487
+
488
+ const presentationSection = PresentationSection.createFromAutoAdjunct(
489
+ autoAdjunct,
490
+ options,
491
+ );
492
+ expect(presentationSection.thumbnail).toEqual("test-screenshot.png");
493
+ });
494
+ });
363
495
  });
@@ -13,7 +13,7 @@ export const PresentationSectionCollection = BasePresentationCollection.extend(
13
13
  /** @lends presentation.PresentationSectionCollection# */ {
14
14
  comparator: "sequence",
15
15
  model: "PresentationSection",
16
- }
16
+ },
17
17
  );
18
18
 
19
19
  register("PresentationSectionCollection", PresentationSectionCollection);