@livepreso/api 6.45.0 → 6.47.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 (364) hide show
  1. package/.rush/temp/1aebf46f78ad5c45f82f8147751890adb37bef9d.log +10 -0
  2. package/.rush/temp/3cdc82c352e8ed90607952873f3aa4c200490874.log +10 -0
  3. package/.rush/temp/5489ab737e406518983c16c57fc3e1edc07c0341.log +10 -0
  4. package/.rush/temp/924652444ab5a6063f328a2217123a2227058896.log +10 -0
  5. package/.rush/temp/9f2030f96d62f3e38052e35201819a216566f14f.log +10 -0
  6. package/.rush/temp/operation/test/all.log +19 -0
  7. package/.rush/temp/operation/test/state.json +3 -0
  8. package/.rush/temp/package-deps_build.json +156 -141
  9. package/.rush/temp/shrinkwrap-deps.json +281 -214
  10. package/CHANGELOG.json +29 -0
  11. package/CHANGELOG.md +15 -1
  12. package/README.md +4 -4
  13. package/api.build.log +6 -3
  14. package/api.test.cache.log +1 -0
  15. package/api.test.log +19 -0
  16. package/cjs/api.js +18 -2
  17. package/cjs/api.js.map +1 -1
  18. package/cjs/auth.js +3 -3
  19. package/cjs/auth.js.map +1 -1
  20. package/cjs/collections/activity.js.map +1 -1
  21. package/cjs/collections/adjunct-sections.js.map +1 -1
  22. package/cjs/collections/adjunct-slides.js.map +1 -1
  23. package/cjs/collections/adjunct-sub-slides.js.map +1 -1
  24. package/cjs/collections/appointment-adjunct-tags.js.map +1 -1
  25. package/cjs/collections/appointment-deckversion-tags.js.map +1 -1
  26. package/cjs/collections/appointment-editors.js.map +1 -1
  27. package/cjs/collections/appointment-section-tags.js.map +1 -1
  28. package/cjs/collections/appointment-slide-tags.js.map +1 -1
  29. package/cjs/collections/appointment-tags.js +9 -7
  30. package/cjs/collections/appointment-tags.js.map +1 -1
  31. package/cjs/collections/appointment-templates.js +36 -0
  32. package/cjs/collections/appointment-templates.js.map +1 -0
  33. package/cjs/collections/appointments.js.map +1 -1
  34. package/cjs/collections/assets.js.map +1 -1
  35. package/cjs/collections/auto-adjuncts.js.map +1 -1
  36. package/cjs/collections/base.js +4 -0
  37. package/cjs/collections/base.js.map +1 -1
  38. package/cjs/collections/base.spec.js.map +1 -1
  39. package/cjs/collections/cms-vals.js +5 -0
  40. package/cjs/collections/cms-vals.js.map +1 -1
  41. package/cjs/collections/contact-phones.js +28 -0
  42. package/cjs/collections/contact-phones.js.map +1 -0
  43. package/cjs/collections/contacts.js.map +1 -1
  44. package/cjs/collections/created-assets.js.map +1 -1
  45. package/cjs/collections/customers.js.map +1 -1
  46. package/cjs/collections/deck-notes.js.map +1 -1
  47. package/cjs/collections/deck-version-screenshots.js.map +1 -1
  48. package/cjs/collections/deck-versions.js.map +1 -1
  49. package/cjs/collections/decks.js.map +1 -1
  50. package/cjs/collections/deleted-assets.js.map +1 -1
  51. package/cjs/collections/dispatches.js.map +1 -1
  52. package/cjs/collections/event-objects.js.map +1 -1
  53. package/cjs/collections/events.js.map +1 -1
  54. package/cjs/collections/groups.js.map +1 -1
  55. package/cjs/collections/images.js.map +1 -1
  56. package/cjs/collections/locations.js.map +1 -1
  57. package/cjs/collections/opportunities.js.map +1 -1
  58. package/cjs/collections/pack-diffs.js.map +1 -1
  59. package/cjs/collections/packs.js.map +1 -1
  60. package/cjs/collections/presets.js.map +1 -1
  61. package/cjs/collections/section-selections.js.map +1 -1
  62. package/cjs/collections/sections.js.map +1 -1
  63. package/cjs/collections/signers.js +28 -0
  64. package/cjs/collections/signers.js.map +1 -0
  65. package/cjs/collections/signing-requests.js +28 -0
  66. package/cjs/collections/signing-requests.js.map +1 -0
  67. package/cjs/collections/slide-selections.js.map +1 -1
  68. package/cjs/collections/slides.js.map +1 -1
  69. package/cjs/collections/snapshots.js.map +1 -1
  70. package/cjs/collections/sub-slides.js.map +1 -1
  71. package/cjs/collections/tags.js.map +1 -1
  72. package/cjs/collections/teams.js.map +1 -1
  73. package/cjs/collections/templates.js.map +1 -1
  74. package/cjs/collections/uploads.js.map +1 -1
  75. package/cjs/collections/users.js.map +1 -1
  76. package/cjs/collections.js +52 -13
  77. package/cjs/collections.js.map +1 -1
  78. package/cjs/fixtures.js +232 -0
  79. package/cjs/fixtures.js.map +1 -0
  80. package/cjs/index.js +28 -4
  81. package/cjs/index.js.map +1 -1
  82. package/cjs/models/activity-item.js +10 -2
  83. package/cjs/models/activity-item.js.map +1 -1
  84. package/cjs/models/adjunct-section.js +7 -2
  85. package/cjs/models/adjunct-section.js.map +1 -1
  86. package/cjs/models/adjunct-slide.js +7 -2
  87. package/cjs/models/adjunct-slide.js.map +1 -1
  88. package/cjs/models/adjunct-sub-slide.js.map +1 -1
  89. package/cjs/models/adjunct.js +40 -0
  90. package/cjs/models/adjunct.js.map +1 -1
  91. package/cjs/models/appointment-adjunct-tags.js.map +1 -1
  92. package/cjs/models/appointment-deckversion-tags.js.map +1 -1
  93. package/cjs/models/appointment-editor.js.map +1 -1
  94. package/cjs/models/appointment-section-tags.js.map +1 -1
  95. package/cjs/models/appointment-slide-tags.js.map +1 -1
  96. package/cjs/models/appointment-stats.js.map +1 -1
  97. package/cjs/models/appointment-tags.js.map +1 -1
  98. package/cjs/models/appointment-template.js +28 -0
  99. package/cjs/models/appointment-template.js.map +1 -0
  100. package/cjs/models/appointment-viewing.js.map +1 -1
  101. package/cjs/models/appointment.js +108 -15
  102. package/cjs/models/appointment.js.map +1 -1
  103. package/cjs/models/asset.js +12 -0
  104. package/cjs/models/asset.js.map +1 -1
  105. package/cjs/models/auto-adjunct-key-check.js.map +1 -1
  106. package/cjs/models/auto-adjunct.js +2 -1
  107. package/cjs/models/auto-adjunct.js.map +1 -1
  108. package/cjs/models/base.js +25 -5
  109. package/cjs/models/base.js.map +1 -1
  110. package/cjs/models/base.spec.js.map +1 -1
  111. package/cjs/models/choicelist.js.map +1 -1
  112. package/cjs/models/cms-val.js +35 -1
  113. package/cjs/models/cms-val.js.map +1 -1
  114. package/cjs/models/cms-val.spec.js +32 -0
  115. package/cjs/models/cms-val.spec.js.map +1 -0
  116. package/cjs/models/contact-phone.js +66 -0
  117. package/cjs/models/contact-phone.js.map +1 -0
  118. package/cjs/models/contact.js.map +1 -1
  119. package/cjs/models/customer.js +3 -1
  120. package/cjs/models/customer.js.map +1 -1
  121. package/cjs/models/deck-note.js.map +1 -1
  122. package/cjs/models/deck-tags.js.map +1 -1
  123. package/cjs/models/deck-version-screenshot.js.map +1 -1
  124. package/cjs/models/deck-version.js +31 -8
  125. package/cjs/models/deck-version.js.map +1 -1
  126. package/cjs/models/deck.js.map +1 -1
  127. package/cjs/models/dispatch-preview.js.map +1 -1
  128. package/cjs/models/dispatch.js.map +1 -1
  129. package/cjs/models/event-object.js.map +1 -1
  130. package/cjs/models/event.js.map +1 -1
  131. package/cjs/models/feed-data.js.map +1 -1
  132. package/cjs/models/file.js.map +1 -1
  133. package/cjs/models/group.js.map +1 -1
  134. package/cjs/models/handover.js.map +1 -1
  135. package/cjs/models/hosted-preso.js.map +1 -1
  136. package/cjs/models/image.js.map +1 -1
  137. package/cjs/models/location.js.map +1 -1
  138. package/cjs/models/manifest-json.js +70 -2
  139. package/cjs/models/manifest-json.js.map +1 -1
  140. package/cjs/models/onshare.js.map +1 -1
  141. package/cjs/models/opportunity.js.map +1 -1
  142. package/cjs/models/pack-diff.js.map +1 -1
  143. package/cjs/models/pack.js.map +1 -1
  144. package/cjs/models/preset.js +4 -1
  145. package/cjs/models/preset.js.map +1 -1
  146. package/cjs/models/refresh-request.js +24 -0
  147. package/cjs/models/refresh-request.js.map +1 -1
  148. package/cjs/models/room.js.map +1 -1
  149. package/cjs/models/salesforce-lookup.js.map +1 -1
  150. package/cjs/models/section-selection.js.map +1 -1
  151. package/cjs/models/section.js.map +1 -1
  152. package/cjs/models/signer.js +47 -0
  153. package/cjs/models/signer.js.map +1 -0
  154. package/cjs/models/signing-request.js +66 -0
  155. package/cjs/models/signing-request.js.map +1 -0
  156. package/cjs/models/slide-selection.js.map +1 -1
  157. package/cjs/models/slide.js.map +1 -1
  158. package/cjs/models/snapshot.js +41 -2
  159. package/cjs/models/snapshot.js.map +1 -1
  160. package/cjs/models/snapshot.spec.js +51 -0
  161. package/cjs/models/snapshot.spec.js.map +1 -0
  162. package/cjs/models/sub-slide.js.map +1 -1
  163. package/cjs/models/support-ticket.js.map +1 -1
  164. package/cjs/models/tag.js.map +1 -1
  165. package/cjs/models/team.js +15 -2
  166. package/cjs/models/team.js.map +1 -1
  167. package/cjs/models/template.js +105 -3
  168. package/cjs/models/template.js.map +1 -1
  169. package/cjs/models/tenancy.js +3 -0
  170. package/cjs/models/tenancy.js.map +1 -1
  171. package/cjs/models/timing-log.js.map +1 -1
  172. package/cjs/models/timing-log.spec.js.map +1 -1
  173. package/cjs/models/token.js.map +1 -1
  174. package/cjs/models/transcribe-socket.js.map +1 -1
  175. package/cjs/models/user.js +7 -2
  176. package/cjs/models/user.js.map +1 -1
  177. package/cjs/models.js +52 -13
  178. package/cjs/models.js.map +1 -1
  179. package/cjs/presentation/appointment-presentation.js.map +1 -1
  180. package/cjs/presentation/base-presentation-collection.js.map +1 -1
  181. package/cjs/presentation/base-presentation-model.js +23 -14
  182. package/cjs/presentation/base-presentation-model.js.map +1 -1
  183. package/cjs/presentation/base-presentation-model.spec.js.map +1 -1
  184. package/cjs/presentation/presentation-deck.js +5 -1
  185. package/cjs/presentation/presentation-deck.js.map +1 -1
  186. package/cjs/presentation/presentation-deck.spec.js.map +1 -1
  187. package/cjs/presentation/presentation-decks.js.map +1 -1
  188. package/cjs/presentation/presentation-section.js +33 -8
  189. package/cjs/presentation/presentation-section.js.map +1 -1
  190. package/cjs/presentation/presentation-section.spec.js +13 -20
  191. package/cjs/presentation/presentation-section.spec.js.map +1 -1
  192. package/cjs/presentation/presentation-sections.js.map +1 -1
  193. package/cjs/presentation/presentation-slide.js +43 -9
  194. package/cjs/presentation/presentation-slide.js.map +1 -1
  195. package/cjs/presentation/presentation-slide.spec.js +11 -18
  196. package/cjs/presentation/presentation-slide.spec.js.map +1 -1
  197. package/cjs/presentation/presentation-slides.js.map +1 -1
  198. package/cjs/presentation/presentation-subslide.js.map +1 -1
  199. package/cjs/presentation/presentation-subslide.spec.js.map +1 -1
  200. package/cjs/presentation/presentation-subslides.js.map +1 -1
  201. package/cjs/presentation/presentation.js +8 -3
  202. package/cjs/presentation/presentation.js.map +1 -1
  203. package/cjs/selections.js +106 -0
  204. package/cjs/selections.js.map +1 -0
  205. package/cjs/sync.js.map +1 -1
  206. package/cjs/utils.js +43 -6
  207. package/cjs/utils.js.map +1 -1
  208. package/cjs/utils.spec.js +1 -1
  209. package/cjs/utils.spec.js.map +1 -1
  210. package/jest.config.js +4 -3
  211. package/package.json +12 -9
  212. package/src/api.js +17 -2
  213. package/src/auth.js +3 -3
  214. package/src/collections/activity.js +4 -4
  215. package/src/collections/adjunct-sections.js +1 -1
  216. package/src/collections/adjunct-slides.js +1 -1
  217. package/src/collections/adjunct-sub-slides.js +1 -1
  218. package/src/collections/appointment-adjunct-tags.js +1 -1
  219. package/src/collections/appointment-deckversion-tags.js +2 -2
  220. package/src/collections/appointment-editors.js +1 -1
  221. package/src/collections/appointment-section-tags.js +1 -1
  222. package/src/collections/appointment-slide-tags.js +1 -1
  223. package/src/collections/appointment-tags.js +20 -18
  224. package/src/collections/appointment-templates.js +26 -0
  225. package/src/collections/appointments.js +9 -9
  226. package/src/collections/assets.js +1 -1
  227. package/src/collections/auto-adjuncts.js +1 -1
  228. package/src/collections/base.js +10 -6
  229. package/src/collections/base.spec.js +2 -2
  230. package/src/collections/cms-vals.js +5 -1
  231. package/src/collections/contact-phones.js +18 -0
  232. package/src/collections/contacts.js +1 -1
  233. package/src/collections/created-assets.js +1 -1
  234. package/src/collections/customers.js +1 -1
  235. package/src/collections/deck-notes.js +1 -1
  236. package/src/collections/deck-version-screenshots.js +1 -1
  237. package/src/collections/deck-versions.js +1 -1
  238. package/src/collections/decks.js +1 -1
  239. package/src/collections/deleted-assets.js +1 -1
  240. package/src/collections/dispatches.js +2 -2
  241. package/src/collections/event-objects.js +1 -1
  242. package/src/collections/events.js +1 -1
  243. package/src/collections/groups.js +1 -1
  244. package/src/collections/images.js +1 -1
  245. package/src/collections/locations.js +1 -1
  246. package/src/collections/opportunities.js +1 -1
  247. package/src/collections/pack-diffs.js +1 -1
  248. package/src/collections/packs.js +1 -1
  249. package/src/collections/presets.js +1 -1
  250. package/src/collections/section-selections.js +1 -1
  251. package/src/collections/sections.js +1 -1
  252. package/src/collections/signers.js +18 -0
  253. package/src/collections/signing-requests.js +18 -0
  254. package/src/collections/slide-selections.js +1 -1
  255. package/src/collections/slides.js +1 -1
  256. package/src/collections/snapshots.js +1 -1
  257. package/src/collections/sub-slides.js +1 -1
  258. package/src/collections/tags.js +1 -1
  259. package/src/collections/teams.js +1 -1
  260. package/src/collections/templates.js +1 -1
  261. package/src/collections/uploads.js +1 -1
  262. package/src/collections/users.js +1 -1
  263. package/src/collections.js +4 -1
  264. package/src/fixtures.js +195 -0
  265. package/src/index.js +2 -3
  266. package/src/models/activity-item.js +9 -1
  267. package/src/models/adjunct-section.js +7 -2
  268. package/src/models/adjunct-slide.js +7 -2
  269. package/src/models/adjunct-sub-slide.js +1 -1
  270. package/src/models/adjunct.js +39 -1
  271. package/src/models/appointment-adjunct-tags.js +1 -1
  272. package/src/models/appointment-deckversion-tags.js +1 -1
  273. package/src/models/appointment-editor.js +1 -1
  274. package/src/models/appointment-section-tags.js +1 -1
  275. package/src/models/appointment-slide-tags.js +1 -1
  276. package/src/models/appointment-stats.js +1 -1
  277. package/src/models/appointment-tags.js +1 -1
  278. package/src/models/appointment-template.js +19 -0
  279. package/src/models/appointment-viewing.js +1 -1
  280. package/src/models/appointment.js +104 -38
  281. package/src/models/asset.js +15 -1
  282. package/src/models/auto-adjunct-key-check.js +1 -1
  283. package/src/models/auto-adjunct.js +2 -1
  284. package/src/models/base.js +36 -21
  285. package/src/models/base.spec.js +18 -18
  286. package/src/models/choicelist.js +1 -1
  287. package/src/models/cms-val.js +24 -1
  288. package/src/models/cms-val.spec.js +14 -0
  289. package/src/models/contact-phone.js +57 -0
  290. package/src/models/contact.js +1 -1
  291. package/src/models/customer.js +3 -3
  292. package/src/models/deck-note.js +1 -1
  293. package/src/models/deck-tags.js +1 -1
  294. package/src/models/deck-version-screenshot.js +1 -1
  295. package/src/models/deck-version.js +32 -6
  296. package/src/models/deck.js +1 -1
  297. package/src/models/dispatch-preview.js +1 -1
  298. package/src/models/dispatch.js +1 -1
  299. package/src/models/event-object.js +1 -1
  300. package/src/models/event.js +1 -1
  301. package/src/models/feed-data.js +2 -2
  302. package/src/models/file.js +1 -1
  303. package/src/models/group.js +1 -1
  304. package/src/models/handover.js +1 -1
  305. package/src/models/hosted-preso.js +1 -1
  306. package/src/models/image.js +1 -1
  307. package/src/models/location.js +1 -1
  308. package/src/models/manifest-json.js +65 -5
  309. package/src/models/onshare.js +1 -1
  310. package/src/models/opportunity.js +1 -1
  311. package/src/models/pack-diff.js +1 -1
  312. package/src/models/pack.js +1 -1
  313. package/src/models/preset.js +4 -1
  314. package/src/models/refresh-request.js +16 -1
  315. package/src/models/room.js +1 -1
  316. package/src/models/salesforce-lookup.js +1 -1
  317. package/src/models/section-selection.js +1 -1
  318. package/src/models/section.js +1 -1
  319. package/src/models/signer.js +37 -0
  320. package/src/models/signing-request.js +56 -0
  321. package/src/models/slide-selection.js +1 -1
  322. package/src/models/slide.js +1 -1
  323. package/src/models/snapshot.js +30 -2
  324. package/src/models/snapshot.spec.js +31 -0
  325. package/src/models/sub-slide.js +1 -1
  326. package/src/models/support-ticket.js +1 -1
  327. package/src/models/tag.js +1 -1
  328. package/src/models/team.js +14 -3
  329. package/src/models/template.js +72 -2
  330. package/src/models/tenancy.js +4 -1
  331. package/src/models/timing-log.js +2 -2
  332. package/src/models/timing-log.spec.js +1 -1
  333. package/src/models/token.js +1 -1
  334. package/src/models/transcribe-socket.js +1 -1
  335. package/src/models/user.js +13 -2
  336. package/src/models.js +4 -1
  337. package/src/presentation/appointment-presentation.js +4 -4
  338. package/src/presentation/base-presentation-collection.js +1 -1
  339. package/src/presentation/base-presentation-model.js +25 -16
  340. package/src/presentation/base-presentation-model.spec.js +5 -5
  341. package/src/presentation/presentation-deck.js +28 -23
  342. package/src/presentation/presentation-deck.spec.js +4 -4
  343. package/src/presentation/presentation-decks.js +1 -1
  344. package/src/presentation/presentation-section.js +59 -31
  345. package/src/presentation/presentation-section.spec.js +31 -32
  346. package/src/presentation/presentation-sections.js +1 -1
  347. package/src/presentation/presentation-slide.js +51 -25
  348. package/src/presentation/presentation-slide.spec.js +21 -27
  349. package/src/presentation/presentation-slides.js +1 -1
  350. package/src/presentation/presentation-subslide.js +5 -5
  351. package/src/presentation/presentation-subslide.spec.js +3 -3
  352. package/src/presentation/presentation-subslides.js +1 -1
  353. package/src/presentation/presentation.js +5 -3
  354. package/src/selections.js +71 -0
  355. package/src/sync.js +1 -1
  356. package/src/utils.js +31 -8
  357. package/src/utils.spec.js +8 -8
  358. package/.rush/temp/package-deps_test.json +0 -172
  359. package/cjs/collections/appointment-duplicates.js +0 -29
  360. package/cjs/collections/appointment-duplicates.js.map +0 -1
  361. package/cjs/models/appointment-duplicate.js +0 -94
  362. package/cjs/models/appointment-duplicate.js.map +0 -1
  363. package/src/collections/appointment-duplicates.js +0 -19
  364. package/src/models/appointment-duplicate.js +0 -73
@@ -1,6 +1,5 @@
1
1
  import { AdjunctSectionModel } from "../models/adjunct-section";
2
2
  import { AutoAdjunctModel } from "../models/auto-adjunct";
3
- import { DeckVersionScreenshotCollection } from "../collections/deck-version-screenshots.js";
4
3
  import { PresentationSection } from "./presentation-section";
5
4
  import { SectionModel } from "../models/section";
6
5
  import { SlideModel } from "../models/slide";
@@ -86,7 +85,7 @@ describe("#createFromSection", () => {
86
85
 
87
86
  const presentationSection = PresentationSection.createFromSection(
88
87
  section,
89
- options
88
+ options,
90
89
  );
91
90
 
92
91
  expect(presentationSection.tags).toEqual(["section-tag"]);
@@ -104,14 +103,14 @@ describe("#createFromSection", () => {
104
103
  it("should use the screenshot model if it matches", () => {
105
104
  const section = new SectionModel(getSectionJSON());
106
105
  const options = {
107
- screenshots: new DeckVersionScreenshotCollection([
108
- { subject: section.url(), image_256: "test-screenshot.png" },
109
- ]),
106
+ screenshots: {
107
+ [section.url()]: "test-screenshot.png",
108
+ },
110
109
  };
111
110
 
112
111
  const presentationSection = PresentationSection.createFromSection(
113
112
  section,
114
- options
113
+ options,
115
114
  );
116
115
  expect(presentationSection.thumbnail).toEqual("test-screenshot.png");
117
116
  });
@@ -135,7 +134,7 @@ describe("#createFromAdjunctSection", () => {
135
134
  };
136
135
 
137
136
  return {
138
- adjunct: "https://staging-test.salespreso.com/api/adjuncts/7470/",
137
+ adjunct: "/api/adjuncts/7470/",
139
138
  appointment: "https://staging-test.salespreso.com/api/appointments/2422/",
140
139
  created_by_autoadjunct: true,
141
140
  created_date: "2021-09-20T01:57:55.125224Z",
@@ -170,12 +169,13 @@ describe("#createFromAdjunctSection", () => {
170
169
  const adjunctSection = new AdjunctSectionModel(getAdjunctSectionJSON());
171
170
  const presentationSection = PresentationSection.createFromAdjunctSection(
172
171
  adjunctSection,
173
- { id: 1 }
172
+ { id: 1 },
174
173
  );
175
174
 
176
175
  const expected = {
177
176
  adjunct: {
178
- url: "https://staging-test.salespreso.com/api/adjuncts/7470/",
177
+ url: "/api/adjuncts/7470/",
178
+ id: 7470,
179
179
  },
180
180
  adjunctID: 1737,
181
181
  adjunctSlideLimit: 0,
@@ -195,6 +195,7 @@ describe("#createFromAdjunctSection", () => {
195
195
  sequence: 1,
196
196
  slides: [],
197
197
  tags: [],
198
+ template: null,
198
199
  templateID: null,
199
200
  temporary: true,
200
201
  thumbnail:
@@ -216,7 +217,7 @@ describe("#createFromAdjunctSection", () => {
216
217
  const presentationSection = PresentationSection.createFromAdjunctSection(
217
218
  adjunctSection,
218
219
  { id: 1 },
219
- options
220
+ options,
220
221
  );
221
222
 
222
223
  expect(presentationSection.tags).toEqual(["adjunctsection-tag"]);
@@ -228,29 +229,26 @@ describe("#createFromAdjunctSection", () => {
228
229
  const adjunctSection = new AdjunctSectionModel(data);
229
230
  const presentationSlide = PresentationSection.createFromAdjunctSection(
230
231
  adjunctSection,
231
- { id: 1 }
232
+ { id: 1 },
232
233
  );
233
234
  expect(presentationSlide.thumbnail).toEqual(data.template.image_256);
234
235
  });
235
236
 
236
237
  it("should use the screenshot model if it matches", () => {
237
238
  const adjunctSection = new AdjunctSectionModel(
238
- getAdjunctSectionJSON(true)
239
+ getAdjunctSectionJSON(true),
239
240
  );
240
241
 
241
242
  const options = {
242
- screenshots: new DeckVersionScreenshotCollection([
243
- {
244
- subject: "/api/autoadjuncts/545/",
245
- image_256: "test-screenshot.png",
246
- },
247
- ]),
243
+ screenshots: {
244
+ "/api/autoadjuncts/545/": "test-screenshot.png",
245
+ },
248
246
  };
249
247
 
250
248
  const presentationSection = PresentationSection.createFromAdjunctSection(
251
249
  adjunctSection,
252
250
  { id: 1 },
253
- options
251
+ options,
254
252
  );
255
253
  expect(presentationSection.thumbnail).toEqual("test-screenshot.png");
256
254
  });
@@ -343,7 +341,7 @@ describe("#createFromImpostorSection", () => {
343
341
  const presentationSection = PresentationSection.createFromImpostorSection(
344
342
  impostorSection,
345
343
  null,
346
- options
344
+ options,
347
345
  );
348
346
 
349
347
  expect(presentationSection.tags).toEqual(["impostorsection-tag"]);
@@ -355,7 +353,7 @@ describe("#createFromImpostorSection", () => {
355
353
  const impostorSection = new SlideModel(data);
356
354
  const presentationSection = PresentationSection.createFromImpostorSection(
357
355
  impostorSection,
358
- null
356
+ null,
359
357
  );
360
358
  expect(presentationSection.thumbnail).toEqual(data.image_256);
361
359
  });
@@ -363,15 +361,15 @@ describe("#createFromImpostorSection", () => {
363
361
  it("should use the screenshot model if it matches", () => {
364
362
  const impostorSection = new SlideModel(getImpostorSectionJSON());
365
363
  const options = {
366
- screenshots: new DeckVersionScreenshotCollection([
367
- { subject: impostorSection.url(), image_256: "test-screenshot.png" },
368
- ]),
364
+ screenshots: {
365
+ [impostorSection.url()]: "test-screenshot.png",
366
+ },
369
367
  };
370
368
 
371
369
  const presentationSection = PresentationSection.createFromImpostorSection(
372
370
  impostorSection,
373
371
  null,
374
- options
372
+ options,
375
373
  );
376
374
  expect(presentationSection.thumbnail).toEqual("test-screenshot.png");
377
375
  });
@@ -416,7 +414,7 @@ describe("#createFromAutoAdjunct", () => {
416
414
  };
417
415
  const presentationSection = PresentationSection.createFromAutoAdjunct(
418
416
  autoAdjunct,
419
- options
417
+ options,
420
418
  );
421
419
 
422
420
  const expected = {
@@ -437,6 +435,7 @@ describe("#createFromAutoAdjunct", () => {
437
435
  key: "autoadjunct-five",
438
436
  sequence: 3,
439
437
  slides: [],
438
+ template: null,
440
439
  tags: [],
441
440
  templateID: null,
442
441
  temporary: true,
@@ -458,7 +457,7 @@ describe("#createFromAutoAdjunct", () => {
458
457
  };
459
458
  const presentationSection = PresentationSection.createFromAutoAdjunct(
460
459
  autoAdjunct,
461
- options
460
+ options,
462
461
  );
463
462
 
464
463
  expect(presentationSection.tags).toEqual(["autoadjunct-tag"]);
@@ -471,7 +470,7 @@ describe("#createFromAutoAdjunct", () => {
471
470
  const autoAdjunct = new AutoAdjunctModel(data);
472
471
  const presentationSection = PresentationSection.createFromAutoAdjunct(
473
472
  autoAdjunct,
474
- options
473
+ options,
475
474
  );
476
475
  expect(presentationSection.thumbnail).toEqual(data.image_256);
477
476
  });
@@ -481,14 +480,14 @@ describe("#createFromAutoAdjunct", () => {
481
480
  const options = {
482
481
  index: 3,
483
482
  deckversionID: 12,
484
- screenshots: new DeckVersionScreenshotCollection([
485
- { subject: autoAdjunct.url(), image_256: "test-screenshot.png" },
486
- ]),
483
+ screenshots: {
484
+ [autoAdjunct.url()]: "test-screenshot.png",
485
+ },
487
486
  };
488
487
 
489
488
  const presentationSection = PresentationSection.createFromAutoAdjunct(
490
489
  autoAdjunct,
491
- options
490
+ options,
492
491
  );
493
492
  expect(presentationSection.thumbnail).toEqual("test-screenshot.png");
494
493
  });
@@ -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);
@@ -86,6 +86,7 @@ export const PresentationSlide = BasePresentationModel.extend(
86
86
  */
87
87
  children: {
88
88
  adjunct: "AdjunctModel",
89
+ template: "TemplateModel",
89
90
  },
90
91
 
91
92
  /**
@@ -105,7 +106,7 @@ export const PresentationSlide = BasePresentationModel.extend(
105
106
  }
106
107
  return this._url;
107
108
  },
108
- }
109
+ },
109
110
  );
110
111
 
111
112
  /**
@@ -127,6 +128,8 @@ PresentationSlide.createFromSlide = function (slideModel, options = {}) {
127
128
  },
128
129
  });
129
130
 
131
+ options.screenshots = PresentationSlide.screenshotsToMap(options.screenshots);
132
+
130
133
  let html;
131
134
  let css;
132
135
 
@@ -134,7 +137,7 @@ PresentationSlide.createFromSlide = function (slideModel, options = {}) {
134
137
 
135
138
  if (options.rootAssetPath) {
136
139
  const baseRoot = getAssetRoot(
137
- slideModel.section.deckversion.index_asset.url()
140
+ slideModel.section.deckversion.index_asset.url(),
138
141
  );
139
142
  const slidePath = assetRoot.slice(baseRoot.length);
140
143
  html = `${options.rootAssetPath}${slidePath}index.html`;
@@ -146,7 +149,7 @@ PresentationSlide.createFromSlide = function (slideModel, options = {}) {
146
149
 
147
150
  const config = PresentationSlide.getVisibilityAndSequence(
148
151
  slideModel,
149
- options
152
+ options,
150
153
  );
151
154
 
152
155
  const tags = PresentationSlide.getTags(slideModel, options);
@@ -173,7 +176,7 @@ PresentationSlide.createFromSlide = function (slideModel, options = {}) {
173
176
  slide.subslides.add(
174
177
  slideModel.subslide_set.map((model) => {
175
178
  return PresentationSubSlide.createFromSubSlide(model, options);
176
- })
179
+ }),
177
180
  );
178
181
 
179
182
  const adjunctSubslides = options.adjunctSubSlides.filter((model) => {
@@ -206,7 +209,7 @@ PresentationSlide.createFromSlide = function (slideModel, options = {}) {
206
209
  ...options,
207
210
  id,
208
211
  });
209
- })
212
+ }),
210
213
  );
211
214
 
212
215
  return slide;
@@ -223,7 +226,7 @@ PresentationSlide.createFromSlide = function (slideModel, options = {}) {
223
226
  PresentationSlide.createFromAdjunctSlide = function (
224
227
  adjunctSlideModel,
225
228
  section = null,
226
- options = {}
229
+ options = {},
227
230
  ) {
228
231
  _.defaults(options, {
229
232
  id: null,
@@ -236,6 +239,8 @@ PresentationSlide.createFromAdjunctSlide = function (
236
239
  screenshots: new collections.DeckVersionScreenshotCollection(),
237
240
  });
238
241
 
242
+ options.screenshots = PresentationSlide.screenshotsToMap(options.screenshots);
243
+
239
244
  const keyID =
240
245
  adjunctSlideModel.id ||
241
246
  (adjunctSlideModel.creator_autoadjunct
@@ -253,18 +258,18 @@ PresentationSlide.createFromAdjunctSlide = function (
253
258
 
254
259
  const config = PresentationSlide.getVisibilityAndSequence(
255
260
  adjunctSlideModel,
256
- options
261
+ options,
257
262
  );
258
263
 
259
264
  const tags = PresentationSlide.getTags(adjunctSlideModel, options);
260
265
 
266
+ const autoAdjunctID = adjunctSlideModel.creator_autoadjunct?.id || null;
267
+
261
268
  const slide = new PresentationSlide({
262
269
  id: options.id || options.getUniqueAdjunctID(),
263
- adjunct: adjunctSlideModel.adjunct ? adjunctSlideModel.adjunct.url() : null,
270
+ adjunct: adjunctSlideModel.adjunct,
264
271
  adjunctID: adjunctSlideModel.id,
265
- autoAdjunctID: adjunctSlideModel.creator_autoadjunct
266
- ? adjunctSlideModel.creator_autoadjunct.id
267
- : null,
272
+ autoAdjunctID,
268
273
  key,
269
274
  thumbnail: adjunctSlideModel.image_256,
270
275
  createdByAutoAdjunct: adjunctSlideModel.created_by_autoadjunct,
@@ -277,13 +282,15 @@ PresentationSlide.createFromAdjunctSlide = function (
277
282
  index: config.sequence,
278
283
  sequence: config.sequence,
279
284
  visible: config.visible,
280
- cmsvalkey_set: [],
285
+ cmsvalkey_set: adjunctSlideModel.template?.cmsvalkey_set || [],
286
+ templateID: adjunctSlideModel.template?.id || null,
287
+ template: adjunctSlideModel.template || null,
281
288
  });
282
289
 
283
290
  if (adjunctSlideModel.template) {
284
291
  if (!adjunctSlideModel.template.index_asset) {
285
292
  throw new Error(
286
- "Template missing index_asset. Do you have the whole template available?"
293
+ "Template missing index_asset. Do you have the whole template available?",
287
294
  );
288
295
  }
289
296
  const origPath = adjunctSlideModel.template.index_asset.orig_path;
@@ -295,7 +302,7 @@ PresentationSlide.createFromAdjunctSlide = function (
295
302
  css = `${options.rootAssetPath}${origPath}/slide.css`;
296
303
  } else {
297
304
  const assetRoot = getAssetRoot(
298
- adjunctSlideModel.template.index_asset.url()
305
+ adjunctSlideModel.template.index_asset.url(),
299
306
  );
300
307
  html = `${assetRoot}index.html`;
301
308
  css = `${assetRoot}slide.css`;
@@ -303,13 +310,16 @@ PresentationSlide.createFromAdjunctSlide = function (
303
310
  slide.html = html;
304
311
  slide.css = css;
305
312
 
306
- slide.thumbnail =
307
- // Try and use autoadjunct screenshot (if there is one), otherwise
308
- // use the template's image as a fallback
309
- PresentationSlide.getThumbnail(
313
+ if (adjunctSlideModel.creator_autoadjunct) {
314
+ slide.thumbnail = PresentationSlide.getThumbnail(
310
315
  adjunctSlideModel.creator_autoadjunct,
311
- options.screenshots
312
- ) || adjunctSlideModel.template.image_256;
316
+ options.screenshots,
317
+ );
318
+ }
319
+
320
+ if (!slide.thumbnail) {
321
+ slide.thumbnail = adjunctSlideModel.template.image_256;
322
+ }
313
323
  } else {
314
324
  slide.image = adjunctSlideModel.image_original;
315
325
  }
@@ -321,7 +331,7 @@ PresentationSlide.createFromManifestJSON = function (
321
331
  manifestJSON,
322
332
  key,
323
333
  sectionID,
324
- index
334
+ index,
325
335
  ) {
326
336
  const [, slideKey] = key.split("/");
327
337
 
@@ -348,7 +358,7 @@ PresentationSlide.createFromManifestJSON = function (
348
358
  PresentationSlide.createFromManifestImpostor = function (
349
359
  slide,
350
360
  index,
351
- sectionID
361
+ sectionID,
352
362
  ) {
353
363
  const presentationSlide = new PresentationSlide({
354
364
  id: parseInt(_.uniqueId(), 10),
@@ -368,7 +378,7 @@ PresentationSlide.createFromTemplate = function (
368
378
  template,
369
379
  index,
370
380
  sectionID,
371
- minID = 0
381
+ minID = 0,
372
382
  ) {
373
383
  const presentationSlide = new PresentationSlide({
374
384
  ...template,
@@ -405,13 +415,15 @@ PresentationSlide.createFromAutoAdjunct = function (model, opts = {}) {
405
415
  screenshots: new collections.DeckVersionScreenshotCollection(),
406
416
  });
407
417
 
418
+ options.screenshots = PresentationSlide.screenshotsToMap(options.screenshots);
419
+
408
420
  const tags = PresentationSlide.getTags(
409
421
  {
410
422
  isAutoAdjunct: true,
411
423
  key: model.key,
412
424
  tags: model.tags,
413
425
  },
414
- options
426
+ options,
415
427
  );
416
428
 
417
429
  const autoAdjunct = new AutoAdjunctModel(model);
@@ -421,7 +433,8 @@ PresentationSlide.createFromAutoAdjunct = function (model, opts = {}) {
421
433
  adjunctID: autoAdjunct.id,
422
434
  autoAdjunctID: autoAdjunct.id,
423
435
  createdByTemplate: autoAdjunct.template !== null,
424
- templateID: autoAdjunct.template ? autoAdjunct.template.id : null,
436
+ templateID: autoAdjunct.template?.id || null,
437
+ template: autoAdjunct.template || null,
425
438
  html: "",
426
439
  css: "",
427
440
  sequence: options.sequence,
@@ -447,6 +460,19 @@ PresentationSlide.createFromAutoAdjunct = function (model, opts = {}) {
447
460
  autoAdjunctSlide.createdByTemplate = true;
448
461
  autoAdjunctSlide.templateID = autoAdjunct.template.id;
449
462
  autoAdjunctSlide.html = autoAdjunct.template.index_asset.url();
463
+ //
464
+ // We've had some instances where the caching was returning the wrong data, and the
465
+ // app was unable to recover when an autoadjunct was missing keys. So, check for missing
466
+ // keys.
467
+ const missingKeys = autoAdjunct.template.cmsvalkey_set
468
+ .filter((t) => {
469
+ return !autoAdjunctSlide.cmsvalkey_set.find((k) => k.startsWith(t));
470
+ })
471
+ .map((t) => {
472
+ return `${t}-autoadjunct-${autoAdjunct.id}`;
473
+ });
474
+
475
+ autoAdjunctSlide.cmsvalkey_set.push(...missingKeys);
450
476
  } else {
451
477
  autoAdjunctSlide.image = autoAdjunct.image_original;
452
478
  }
@@ -1,6 +1,5 @@
1
1
  import { AdjunctSlideModel } from "../models/adjunct-slide";
2
2
  import { AutoAdjunctModel } from "../models/auto-adjunct";
3
- import { DeckVersionScreenshotCollection } from "../collections/deck-version-screenshots.js";
4
3
  import { PresentationSlide } from "./presentation-slide";
5
4
  import { SlideModel } from "../models/slide";
6
5
 
@@ -87,14 +86,14 @@ describe("#createFromSlide", () => {
87
86
  it("should use the screenshot model if it matches", () => {
88
87
  const slide = new SlideModel(getSlideJSON());
89
88
  const options = {
90
- screenshots: new DeckVersionScreenshotCollection([
91
- { subject: "/api/slides/23219/", image_256: "test-screenshot.png" },
92
- ]),
89
+ screenshots: {
90
+ "/api/slides/23219/": "test-screenshot.png",
91
+ },
93
92
  };
94
93
 
95
94
  const presentationSlide = PresentationSlide.createFromSlide(
96
95
  slide,
97
- options
96
+ options,
98
97
  );
99
98
  expect(presentationSlide.thumbnail).toEqual("test-screenshot.png");
100
99
  });
@@ -155,9 +154,6 @@ describe("#createFromAdjunctSlide", () => {
155
154
  PresentationSlide.createFromAdjunctSlide(adjunctSlide);
156
155
 
157
156
  const expected = {
158
- adjunct: {
159
- url: "https://staging-test.salespreso.com/api/adjuncts/7457/",
160
- },
161
157
  adjunctID: 10529,
162
158
  autoAdjunctID: 541,
163
159
  createdByAutoAdjunct: true,
@@ -182,7 +178,9 @@ describe("#createFromAdjunctSlide", () => {
182
178
  cmsvalkey_set: [],
183
179
  };
184
180
 
185
- expect(presentationSlide.toJSON()).toEqual(expected);
181
+ expect(presentationSlide.toJSON()).toEqual(
182
+ expect.objectContaining(expected),
183
+ );
186
184
  });
187
185
 
188
186
  it("should use deckTags when available", async () => {
@@ -194,7 +192,7 @@ describe("#createFromAdjunctSlide", () => {
194
192
  const presentationSlide = PresentationSlide.createFromAdjunctSlide(
195
193
  adjunctSlide,
196
194
  null,
197
- options
195
+ options,
198
196
  );
199
197
 
200
198
  expect(presentationSlide.tags).toEqual(["adjunctslide-tag"]);
@@ -206,6 +204,7 @@ describe("#createFromAdjunctSlide", () => {
206
204
  const adjunctSlide = new AdjunctSlideModel(data);
207
205
  const presentationSlide =
208
206
  PresentationSlide.createFromAdjunctSlide(adjunctSlide);
207
+
209
208
  expect(presentationSlide.thumbnail).toEqual(data.template.image_256);
210
209
  });
211
210
 
@@ -213,18 +212,15 @@ describe("#createFromAdjunctSlide", () => {
213
212
  const adjunctSlide = new AdjunctSlideModel(getAdjunctSlideJSON(true));
214
213
 
215
214
  const options = {
216
- screenshots: new DeckVersionScreenshotCollection([
217
- {
218
- subject: "/api/autoadjuncts/541/",
219
- image_256: "test-screenshot.png",
220
- },
221
- ]),
215
+ screenshots: {
216
+ "/api/autoadjuncts/541/": "test-screenshot.png",
217
+ },
222
218
  };
223
219
 
224
220
  const presentationSlide = PresentationSlide.createFromAdjunctSlide(
225
221
  adjunctSlide,
226
222
  null,
227
- options
223
+ options,
228
224
  );
229
225
  expect(presentationSlide.thumbnail).toEqual("test-screenshot.png");
230
226
  });
@@ -270,7 +266,7 @@ describe("#createFromAutoAdjunct", () => {
270
266
 
271
267
  const presentationSlide = PresentationSlide.createFromAutoAdjunct(
272
268
  autoAdjunct,
273
- options
269
+ options,
274
270
  );
275
271
 
276
272
  const expected = {
@@ -288,6 +284,7 @@ describe("#createFromAutoAdjunct", () => {
288
284
  sequence: 3,
289
285
  subslides: [],
290
286
  tags: [],
287
+ template: null,
291
288
  templateID: null,
292
289
  temporary: true,
293
290
  thumbnail:
@@ -312,7 +309,7 @@ describe("#createFromAutoAdjunct", () => {
312
309
 
313
310
  const presentationSlide = PresentationSlide.createFromAutoAdjunct(
314
311
  autoAdjunct,
315
- options
312
+ options,
316
313
  );
317
314
  expect(presentationSlide.tags).toEqual(["autoadjunct-tags"]);
318
315
  });
@@ -324,7 +321,7 @@ describe("#createFromAutoAdjunct", () => {
324
321
  const autoAdjunct = new AutoAdjunctModel(data);
325
322
  const presentationSlide = PresentationSlide.createFromAutoAdjunct(
326
323
  autoAdjunct,
327
- options
324
+ options,
328
325
  );
329
326
  expect(presentationSlide.thumbnail).toEqual(data.image_256);
330
327
  });
@@ -333,18 +330,15 @@ describe("#createFromAutoAdjunct", () => {
333
330
  const options = {
334
331
  index: 3,
335
332
  deckversionID: 12,
336
- screenshots: new DeckVersionScreenshotCollection([
337
- {
338
- subject: "/api/autoadjuncts/525/",
339
- image_256: "test-screenshot.png",
340
- },
341
- ]),
333
+ screenshots: {
334
+ "/api/autoadjuncts/525/": "test-screenshot.png",
335
+ },
342
336
  };
343
337
  const data = getAutoAdjunctJSON();
344
338
  const autoAdjunct = new AutoAdjunctModel(data);
345
339
  const presentationSlide = PresentationSlide.createFromAutoAdjunct(
346
340
  autoAdjunct,
347
- options
341
+ options,
348
342
  );
349
343
  expect(presentationSlide.thumbnail).toEqual("test-screenshot.png");
350
344
  });
@@ -13,7 +13,7 @@ export const PresentationSlideCollection = BasePresentationCollection.extend(
13
13
  /** @lends presentation.PresentationSlideCollection# */ {
14
14
  comparator: "sequence",
15
15
  model: "PresentationSlide",
16
- }
16
+ },
17
17
  );
18
18
 
19
19
  register("PresentationSlideCollection", PresentationSlideCollection);
@@ -62,7 +62,7 @@ export const PresentationSubSlide = BasePresentationModel.extend(
62
62
 
63
63
  return this._url;
64
64
  },
65
- }
65
+ },
66
66
  );
67
67
 
68
68
  /**
@@ -74,7 +74,7 @@ export const PresentationSubSlide = BasePresentationModel.extend(
74
74
  */
75
75
  PresentationSubSlide.createFromSubSlide = function (
76
76
  subSlideModel,
77
- options = {}
77
+ options = {},
78
78
  ) {
79
79
  _.defaults(options, {
80
80
  selections: null,
@@ -83,7 +83,7 @@ PresentationSubSlide.createFromSubSlide = function (
83
83
 
84
84
  const config = PresentationSubSlide.getVisibilityAndSequence(
85
85
  subSlideModel,
86
- options
86
+ options,
87
87
  );
88
88
 
89
89
  const tags = PresentationSubSlide.getTags(subSlideModel, options);
@@ -116,7 +116,7 @@ PresentationSubSlide.createFromSubSlide = function (
116
116
  PresentationSubSlide.createFromAdjunctSubSlide = function (
117
117
  adjunctSubSlideModel,
118
118
  slideModel,
119
- options = {}
119
+ options = {},
120
120
  ) {
121
121
  _.defaults(options, {
122
122
  id: null,
@@ -132,7 +132,7 @@ PresentationSubSlide.createFromAdjunctSubSlide = function (
132
132
 
133
133
  const config = PresentationSubSlide.getVisibilityAndSequence(
134
134
  adjunctSubSlideModel,
135
- options
135
+ options,
136
136
  );
137
137
 
138
138
  const tags = PresentationSubSlide.getTags(adjunctSubSlideModel, options);
@@ -60,7 +60,7 @@ describe("#createFromSubSlide", () => {
60
60
  };
61
61
  const presentationSub = PresentationSubSlide.createFromSubSlide(
62
62
  subslide,
63
- options
63
+ options,
64
64
  );
65
65
 
66
66
  expect(presentationSub.tags).toEqual(["subslide-tag"]);
@@ -98,7 +98,7 @@ describe("#createFromAdjunctSubSlide", () => {
98
98
  const presentationSub = PresentationSubSlide.createFromAdjunctSubSlide(
99
99
  subslide,
100
100
  { id: 58 },
101
- { id: 23 }
101
+ { id: 23 },
102
102
  );
103
103
 
104
104
  // The adjunct subslide model doesn't have an image prop or a tags prop,
@@ -136,7 +136,7 @@ describe("#createFromAdjunctSubSlide", () => {
136
136
  const presentationSub = PresentationSubSlide.createFromAdjunctSubSlide(
137
137
  subslide,
138
138
  { id: 58 },
139
- options
139
+ options,
140
140
  );
141
141
 
142
142
  expect(presentationSub.tags).toEqual(["adjunctsubslide-tag"]);
@@ -13,7 +13,7 @@ export const PresentationSubSlideCollection = BasePresentationCollection.extend(
13
13
  /** @lends presentation.PresentationSubSlideCollection# */ {
14
14
  comparator: "sequence",
15
15
  model: "PresentationSubSlide",
16
- }
16
+ },
17
17
  );
18
18
 
19
19
  register("PresentationSubSlideCollection", PresentationSubSlideCollection);
@@ -33,16 +33,17 @@ Presentation.createFromDeckversion = function (deckversionURL, options) {
33
33
  ]);
34
34
  })
35
35
  .then(async () => {
36
- const templates = deckversion.template_set.models;
36
+ const templates = [...deckversion.template_set.models];
37
37
 
38
38
  for (const auto of opts.autoAdjuncts.models) {
39
39
  const dvTemplate = templates.find(
40
- (t) => t.url() === auto.template.url()
40
+ (t) => t.url() === auto.template.url(),
41
41
  );
42
42
  if (dvTemplate) {
43
43
  auto.template = dvTemplate;
44
44
  } else {
45
45
  await auto.template.fetch();
46
+ templates.push(auto.template);
46
47
  }
47
48
  }
48
49
  })
@@ -80,7 +81,8 @@ Presentation.createFromDeckversion = function (deckversionURL, options) {
80
81
 
81
82
  Presentation.createFromManifestJSON = function (manifestJSON, url) {
82
83
  const manifestModel = new ManifestJSONModel(manifestJSON.toJSON());
83
- // Let's use the model to transport the manifest url.
84
+
85
+ // Let's use the model to transport the base url for the deck assets
84
86
  manifestModel._url = url;
85
87
 
86
88
  const deck = PresentationDeck.createFromManifestJSON(manifestModel);