@livepreso/api 6.40.0 → 6.43.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (446) hide show
  1. package/.eslintrc.js +5 -0
  2. package/.rush/temp/build-cache-tar.log +7 -0
  3. package/.rush/temp/package-deps_build.json +170 -0
  4. package/.rush/temp/shrinkwrap-deps.json +846 -0
  5. package/CHANGELOG.json +41 -0
  6. package/CHANGELOG.md +25 -0
  7. package/api.build.log +15 -0
  8. package/babel.config.js +9 -18
  9. package/cjs/api.js +1 -1
  10. package/cjs/api.js.map +1 -1
  11. package/cjs/api.spec.js +2 -2
  12. package/cjs/api.spec.js.map +1 -1
  13. package/cjs/auth.js +6 -5
  14. package/cjs/auth.js.map +1 -1
  15. package/cjs/auth.spec.js +25 -23
  16. package/cjs/auth.spec.js.map +1 -1
  17. package/cjs/caching.js +3 -3
  18. package/cjs/collections/activity.js +22 -27
  19. package/cjs/collections/activity.js.map +1 -1
  20. package/cjs/collections/adjunct-sections.js +2 -2
  21. package/cjs/collections/adjunct-sections.js.map +1 -1
  22. package/cjs/collections/adjunct-slides.js +2 -2
  23. package/cjs/collections/adjunct-slides.js.map +1 -1
  24. package/cjs/collections/adjunct-sub-slides.js +2 -2
  25. package/cjs/collections/adjunct-sub-slides.js.map +1 -1
  26. package/cjs/collections/appointment-adjunct-tags.js +28 -0
  27. package/cjs/collections/appointment-adjunct-tags.js.map +1 -0
  28. package/cjs/collections/appointment-deckversion-tags.js +28 -0
  29. package/cjs/collections/appointment-deckversion-tags.js.map +1 -0
  30. package/cjs/collections/appointment-duplicates.js +2 -2
  31. package/cjs/collections/appointment-duplicates.js.map +1 -1
  32. package/cjs/collections/appointment-editors.js +2 -2
  33. package/cjs/collections/appointment-editors.js.map +1 -1
  34. package/cjs/collections/appointment-section-tags.js +28 -0
  35. package/cjs/collections/appointment-section-tags.js.map +1 -0
  36. package/cjs/collections/appointment-slide-tags.js +28 -0
  37. package/cjs/collections/appointment-slide-tags.js.map +1 -0
  38. package/cjs/collections/appointment-tags.js +208 -0
  39. package/cjs/collections/appointment-tags.js.map +1 -0
  40. package/cjs/collections/appointments.js +10 -6
  41. package/cjs/collections/appointments.js.map +1 -1
  42. package/cjs/collections/assets.js +2 -2
  43. package/cjs/collections/assets.js.map +1 -1
  44. package/cjs/collections/auto-adjuncts.js +7 -3
  45. package/cjs/collections/auto-adjuncts.js.map +1 -1
  46. package/cjs/collections/base.js +30 -25
  47. package/cjs/collections/base.js.map +1 -1
  48. package/cjs/collections/base.spec.js +71 -123
  49. package/cjs/collections/base.spec.js.map +1 -1
  50. package/cjs/collections/cms-vals.js +2 -2
  51. package/cjs/collections/cms-vals.js.map +1 -1
  52. package/cjs/collections/contacts.js +2 -2
  53. package/cjs/collections/contacts.js.map +1 -1
  54. package/cjs/collections/created-assets.js +2 -2
  55. package/cjs/collections/created-assets.js.map +1 -1
  56. package/cjs/collections/customers.js +2 -2
  57. package/cjs/collections/customers.js.map +1 -1
  58. package/cjs/collections/deck-notes.js +2 -2
  59. package/cjs/collections/deck-notes.js.map +1 -1
  60. package/cjs/collections/deck-versions.js +20 -8
  61. package/cjs/collections/deck-versions.js.map +1 -1
  62. package/cjs/collections/decks.js +2 -2
  63. package/cjs/collections/decks.js.map +1 -1
  64. package/cjs/collections/deleted-assets.js +2 -2
  65. package/cjs/collections/deleted-assets.js.map +1 -1
  66. package/cjs/collections/dispatches.js +4 -4
  67. package/cjs/collections/dispatches.js.map +1 -1
  68. package/cjs/collections/event-objects.js +2 -2
  69. package/cjs/collections/event-objects.js.map +1 -1
  70. package/cjs/collections/events.js +2 -2
  71. package/cjs/collections/events.js.map +1 -1
  72. package/cjs/collections/groups.js +2 -2
  73. package/cjs/collections/groups.js.map +1 -1
  74. package/cjs/collections/images.js +2 -2
  75. package/cjs/collections/images.js.map +1 -1
  76. package/cjs/collections/locations.js +2 -2
  77. package/cjs/collections/locations.js.map +1 -1
  78. package/cjs/collections/opportunities.js +2 -2
  79. package/cjs/collections/opportunities.js.map +1 -1
  80. package/cjs/collections/pack-diffs.js +2 -2
  81. package/cjs/collections/pack-diffs.js.map +1 -1
  82. package/cjs/collections/packs.js +2 -2
  83. package/cjs/collections/packs.js.map +1 -1
  84. package/cjs/collections/presets.js +2 -2
  85. package/cjs/collections/presets.js.map +1 -1
  86. package/cjs/collections/section-selections.js +2 -2
  87. package/cjs/collections/section-selections.js.map +1 -1
  88. package/cjs/collections/sections.js +2 -2
  89. package/cjs/collections/sections.js.map +1 -1
  90. package/cjs/collections/slide-selections.js +2 -2
  91. package/cjs/collections/slide-selections.js.map +1 -1
  92. package/cjs/collections/slides.js +2 -2
  93. package/cjs/collections/slides.js.map +1 -1
  94. package/cjs/collections/snapshots.js +2 -2
  95. package/cjs/collections/snapshots.js.map +1 -1
  96. package/cjs/collections/sub-slides.js +2 -2
  97. package/cjs/collections/sub-slides.js.map +1 -1
  98. package/cjs/collections/tags.js +28 -0
  99. package/cjs/collections/tags.js.map +1 -0
  100. package/cjs/collections/teams.js +2 -2
  101. package/cjs/collections/teams.js.map +1 -1
  102. package/cjs/collections/templates.js +2 -2
  103. package/cjs/collections/templates.js.map +1 -1
  104. package/cjs/collections/uploads.js +2 -2
  105. package/cjs/collections/uploads.js.map +1 -1
  106. package/cjs/collections/users.js +2 -2
  107. package/cjs/collections/users.js.map +1 -1
  108. package/cjs/collections.js +115 -0
  109. package/cjs/collections.js.map +1 -1
  110. package/cjs/index.js +3 -0
  111. package/cjs/index.js.map +1 -1
  112. package/cjs/middleware.js.map +1 -1
  113. package/cjs/middlewares/auth.js +10 -6
  114. package/cjs/middlewares/auth.js.map +1 -1
  115. package/cjs/middlewares/base.js +1 -3
  116. package/cjs/middlewares/base.js.map +1 -1
  117. package/cjs/middlewares/json.js +10 -6
  118. package/cjs/middlewares/json.js.map +1 -1
  119. package/cjs/middlewares/redirect.js +10 -6
  120. package/cjs/middlewares/redirect.js.map +1 -1
  121. package/cjs/models/activity-item.js +6 -2
  122. package/cjs/models/activity-item.js.map +1 -1
  123. package/cjs/models/adjunct-section.js +2 -2
  124. package/cjs/models/adjunct-section.js.map +1 -1
  125. package/cjs/models/adjunct-slide.js +2 -2
  126. package/cjs/models/adjunct-slide.js.map +1 -1
  127. package/cjs/models/adjunct-sub-slide.js +2 -2
  128. package/cjs/models/adjunct-sub-slide.js.map +1 -1
  129. package/cjs/models/adjunct.js +2 -2
  130. package/cjs/models/adjunct.js.map +1 -1
  131. package/cjs/models/api.js.map +1 -1
  132. package/cjs/models/appointment-adjunct-tags.js +52 -0
  133. package/cjs/models/appointment-adjunct-tags.js.map +1 -0
  134. package/cjs/models/appointment-deckversion-tags.js +52 -0
  135. package/cjs/models/appointment-deckversion-tags.js.map +1 -0
  136. package/cjs/models/appointment-duplicate.js +8 -3
  137. package/cjs/models/appointment-duplicate.js.map +1 -1
  138. package/cjs/models/appointment-editor.js +2 -2
  139. package/cjs/models/appointment-editor.js.map +1 -1
  140. package/cjs/models/appointment-section-tags.js +52 -0
  141. package/cjs/models/appointment-section-tags.js.map +1 -0
  142. package/cjs/models/appointment-slide-tags.js +52 -0
  143. package/cjs/models/appointment-slide-tags.js.map +1 -0
  144. package/cjs/models/appointment-stats.js +2 -2
  145. package/cjs/models/appointment-stats.js.map +1 -1
  146. package/cjs/models/appointment-tags.js +48 -0
  147. package/cjs/models/appointment-tags.js.map +1 -0
  148. package/cjs/models/appointment-viewing.js +2 -2
  149. package/cjs/models/appointment-viewing.js.map +1 -1
  150. package/cjs/models/appointment.js +16 -7
  151. package/cjs/models/appointment.js.map +1 -1
  152. package/cjs/models/asset.js +2 -2
  153. package/cjs/models/asset.js.map +1 -1
  154. package/cjs/models/auto-adjunct-key-check.js +2 -2
  155. package/cjs/models/auto-adjunct-key-check.js.map +1 -1
  156. package/cjs/models/auto-adjunct.js +2 -2
  157. package/cjs/models/auto-adjunct.js.map +1 -1
  158. package/cjs/models/base.js +25 -36
  159. package/cjs/models/base.js.map +1 -1
  160. package/cjs/models/base.spec.js +45 -45
  161. package/cjs/models/base.spec.js.map +1 -1
  162. package/cjs/models/choicelist.js.map +1 -1
  163. package/cjs/models/cms-val.js.map +1 -1
  164. package/cjs/models/contact.js +2 -2
  165. package/cjs/models/contact.js.map +1 -1
  166. package/cjs/models/customer.js +2 -2
  167. package/cjs/models/customer.js.map +1 -1
  168. package/cjs/models/deck-note.js +2 -2
  169. package/cjs/models/deck-note.js.map +1 -1
  170. package/cjs/models/deck-tags.js +61 -0
  171. package/cjs/models/deck-tags.js.map +1 -0
  172. package/cjs/models/deck-version.js +5 -3
  173. package/cjs/models/deck-version.js.map +1 -1
  174. package/cjs/models/deck.js +6 -3
  175. package/cjs/models/deck.js.map +1 -1
  176. package/cjs/models/dispatch-preview.js +3 -3
  177. package/cjs/models/dispatch-preview.js.map +1 -1
  178. package/cjs/models/dispatch.js +2 -2
  179. package/cjs/models/dispatch.js.map +1 -1
  180. package/cjs/models/envs.js.map +1 -1
  181. package/cjs/models/event-object.js +2 -2
  182. package/cjs/models/event-object.js.map +1 -1
  183. package/cjs/models/event.js +2 -2
  184. package/cjs/models/event.js.map +1 -1
  185. package/cjs/models/feed-data.js +2 -2
  186. package/cjs/models/feed-data.js.map +1 -1
  187. package/cjs/models/file.js +2 -2
  188. package/cjs/models/file.js.map +1 -1
  189. package/cjs/models/group.js +2 -2
  190. package/cjs/models/group.js.map +1 -1
  191. package/cjs/models/handover.js +2 -2
  192. package/cjs/models/handover.js.map +1 -1
  193. package/cjs/models/hosted-preso.js +2 -2
  194. package/cjs/models/hosted-preso.js.map +1 -1
  195. package/cjs/models/image.js +2 -2
  196. package/cjs/models/image.js.map +1 -1
  197. package/cjs/models/location.js +2 -2
  198. package/cjs/models/location.js.map +1 -1
  199. package/cjs/models/manifest-json.js +74 -57
  200. package/cjs/models/manifest-json.js.map +1 -1
  201. package/cjs/models/onshare.js +2 -2
  202. package/cjs/models/onshare.js.map +1 -1
  203. package/cjs/models/opportunity.js +2 -2
  204. package/cjs/models/opportunity.js.map +1 -1
  205. package/cjs/models/pack-diff.js +2 -2
  206. package/cjs/models/pack-diff.js.map +1 -1
  207. package/cjs/models/pack.js +2 -2
  208. package/cjs/models/pack.js.map +1 -1
  209. package/cjs/models/preset.js +22 -2
  210. package/cjs/models/preset.js.map +1 -1
  211. package/cjs/models/refresh-request.js +2 -2
  212. package/cjs/models/refresh-request.js.map +1 -1
  213. package/cjs/models/room.js +2 -2
  214. package/cjs/models/room.js.map +1 -1
  215. package/cjs/models/salesforce-lookup.js +2 -2
  216. package/cjs/models/salesforce-lookup.js.map +1 -1
  217. package/cjs/models/section-selection.js +2 -2
  218. package/cjs/models/section-selection.js.map +1 -1
  219. package/cjs/models/section.js +2 -2
  220. package/cjs/models/section.js.map +1 -1
  221. package/cjs/models/slide-selection.js +2 -2
  222. package/cjs/models/slide-selection.js.map +1 -1
  223. package/cjs/models/slide.js +2 -2
  224. package/cjs/models/slide.js.map +1 -1
  225. package/cjs/models/snapshot.js +2 -2
  226. package/cjs/models/snapshot.js.map +1 -1
  227. package/cjs/models/sub-slide.js +2 -2
  228. package/cjs/models/sub-slide.js.map +1 -1
  229. package/cjs/models/support-ticket.js +2 -2
  230. package/cjs/models/support-ticket.js.map +1 -1
  231. package/cjs/models/tag.js +54 -0
  232. package/cjs/models/tag.js.map +1 -0
  233. package/cjs/models/team.js +2 -2
  234. package/cjs/models/team.js.map +1 -1
  235. package/cjs/models/template.js +2 -2
  236. package/cjs/models/template.js.map +1 -1
  237. package/cjs/models/tenancy.js +2 -2
  238. package/cjs/models/tenancy.js.map +1 -1
  239. package/cjs/models/timing-log.js +20 -41
  240. package/cjs/models/timing-log.js.map +1 -1
  241. package/cjs/models/timing-log.spec.js +18 -86
  242. package/cjs/models/timing-log.spec.js.map +1 -1
  243. package/cjs/models/transcribe-socket.js +2 -2
  244. package/cjs/models/transcribe-socket.js.map +1 -1
  245. package/cjs/models/upload.js +2 -2
  246. package/cjs/models/upload.js.map +1 -1
  247. package/cjs/models/user.js +6 -4
  248. package/cjs/models/user.js.map +1 -1
  249. package/cjs/models/user.spec.js +10 -8
  250. package/cjs/models/user.spec.js.map +1 -1
  251. package/cjs/models.js +148 -0
  252. package/cjs/models.js.map +1 -1
  253. package/cjs/presentation/appointment-presentation.js +13 -5
  254. package/cjs/presentation/appointment-presentation.js.map +1 -1
  255. package/cjs/presentation/base-presentation-collection.js.map +1 -1
  256. package/cjs/presentation/base-presentation-model.js +65 -0
  257. package/cjs/presentation/base-presentation-model.js.map +1 -1
  258. package/cjs/presentation/base-presentation-model.spec.js +87 -0
  259. package/cjs/presentation/base-presentation-model.spec.js.map +1 -1
  260. package/cjs/presentation/presentation-deck.js +31 -20
  261. package/cjs/presentation/presentation-deck.js.map +1 -1
  262. package/cjs/presentation/presentation-deck.spec.js +15 -13
  263. package/cjs/presentation/presentation-deck.spec.js.map +1 -1
  264. package/cjs/presentation/presentation-decks.js +2 -2
  265. package/cjs/presentation/presentation-decks.js.map +1 -1
  266. package/cjs/presentation/presentation-section.js +36 -17
  267. package/cjs/presentation/presentation-section.js.map +1 -1
  268. package/cjs/presentation/presentation-section.spec.js +418 -0
  269. package/cjs/presentation/presentation-section.spec.js.map +1 -0
  270. package/cjs/presentation/presentation-sections.js +2 -2
  271. package/cjs/presentation/presentation-sections.js.map +1 -1
  272. package/cjs/presentation/presentation-slide.js +35 -18
  273. package/cjs/presentation/presentation-slide.js.map +1 -1
  274. package/cjs/presentation/presentation-slide.spec.js +294 -0
  275. package/cjs/presentation/presentation-slide.spec.js.map +1 -0
  276. package/cjs/presentation/presentation-slides.js +2 -2
  277. package/cjs/presentation/presentation-slides.js.map +1 -1
  278. package/cjs/presentation/presentation-subslide.js +11 -7
  279. package/cjs/presentation/presentation-subslide.js.map +1 -1
  280. package/cjs/presentation/presentation-subslide.spec.js +68 -20
  281. package/cjs/presentation/presentation-subslide.spec.js.map +1 -1
  282. package/cjs/presentation/presentation-subslides.js +2 -2
  283. package/cjs/presentation/presentation-subslides.js.map +1 -1
  284. package/cjs/presentation/presentation.js +19 -9
  285. package/cjs/presentation/presentation.js.map +1 -1
  286. package/cjs/presentation.js +10 -0
  287. package/cjs/presentation.js.map +1 -1
  288. package/cjs/state-register.js +11 -1
  289. package/cjs/state-register.js.map +1 -1
  290. package/cjs/sync.js +7 -7
  291. package/cjs/sync.js.map +1 -1
  292. package/cjs/utils.js +7 -7
  293. package/cjs/utils.js.map +1 -1
  294. package/cjs/utils.spec.js.map +1 -1
  295. package/config/rush-project.json +53 -0
  296. package/index.js +0 -1
  297. package/jest.config.js +4 -4
  298. package/package.json +17 -59
  299. package/setup-tests.js +2 -1
  300. package/src/api.js +3 -3
  301. package/src/api.spec.js +3 -4
  302. package/src/auth.js +6 -7
  303. package/src/auth.spec.js +3 -4
  304. package/src/collections/activity.js +5 -6
  305. package/src/collections/adjunct-sections.js +4 -4
  306. package/src/collections/adjunct-slides.js +4 -4
  307. package/src/collections/adjunct-sub-slides.js +2 -2
  308. package/src/collections/appointment-adjunct-tags.js +18 -0
  309. package/src/collections/appointment-deckversion-tags.js +21 -0
  310. package/src/collections/appointment-duplicates.js +2 -2
  311. package/src/collections/appointment-editors.js +2 -2
  312. package/src/collections/appointment-section-tags.js +18 -0
  313. package/src/collections/appointment-slide-tags.js +18 -0
  314. package/src/collections/appointment-tags.js +136 -0
  315. package/src/collections/appointments.js +18 -23
  316. package/src/collections/assets.js +2 -2
  317. package/src/collections/auto-adjuncts.js +5 -5
  318. package/src/collections/base.js +17 -18
  319. package/src/collections/base.spec.js +7 -8
  320. package/src/collections/cms-vals.js +3 -3
  321. package/src/collections/contacts.js +2 -2
  322. package/src/collections/created-assets.js +2 -2
  323. package/src/collections/customers.js +2 -2
  324. package/src/collections/deck-notes.js +2 -2
  325. package/src/collections/deck-versions.js +18 -15
  326. package/src/collections/decks.js +2 -2
  327. package/src/collections/deleted-assets.js +2 -2
  328. package/src/collections/dispatches.js +8 -13
  329. package/src/collections/event-objects.js +2 -2
  330. package/src/collections/events.js +2 -2
  331. package/src/collections/groups.js +2 -2
  332. package/src/collections/images.js +2 -2
  333. package/src/collections/locations.js +2 -2
  334. package/src/collections/opportunities.js +2 -2
  335. package/src/collections/pack-diffs.js +2 -2
  336. package/src/collections/packs.js +2 -2
  337. package/src/collections/presets.js +2 -2
  338. package/src/collections/section-selections.js +4 -4
  339. package/src/collections/sections.js +2 -2
  340. package/src/collections/slide-selections.js +4 -4
  341. package/src/collections/slides.js +2 -2
  342. package/src/collections/snapshots.js +2 -2
  343. package/src/collections/sub-slides.js +2 -2
  344. package/src/collections/tags.js +18 -0
  345. package/src/collections/teams.js +2 -2
  346. package/src/collections/templates.js +2 -2
  347. package/src/collections/uploads.js +2 -2
  348. package/src/collections/users.js +2 -2
  349. package/src/collections.js +6 -0
  350. package/src/index.js +1 -4
  351. package/src/middleware.js +1 -1
  352. package/src/middlewares/json.js +2 -2
  353. package/src/middlewares/redirect.js +1 -2
  354. package/src/models/activity-item.js +6 -6
  355. package/src/models/adjunct-section.js +5 -5
  356. package/src/models/adjunct-slide.js +5 -5
  357. package/src/models/adjunct-sub-slide.js +5 -5
  358. package/src/models/adjunct.js +4 -4
  359. package/src/models/api.js +1 -1
  360. package/src/models/appointment-adjunct-tags.js +41 -0
  361. package/src/models/appointment-deckversion-tags.js +41 -0
  362. package/src/models/appointment-duplicate.js +7 -7
  363. package/src/models/appointment-editor.js +6 -6
  364. package/src/models/appointment-section-tags.js +41 -0
  365. package/src/models/appointment-slide-tags.js +41 -0
  366. package/src/models/appointment-stats.js +5 -5
  367. package/src/models/appointment-tags.js +39 -0
  368. package/src/models/appointment-viewing.js +3 -3
  369. package/src/models/appointment.js +35 -29
  370. package/src/models/asset.js +5 -5
  371. package/src/models/auto-adjunct-key-check.js +5 -5
  372. package/src/models/auto-adjunct.js +4 -4
  373. package/src/models/base.js +36 -37
  374. package/src/models/base.spec.js +61 -62
  375. package/src/models/choicelist.js +2 -2
  376. package/src/models/cms-val.js +3 -3
  377. package/src/models/contact.js +9 -9
  378. package/src/models/customer.js +13 -13
  379. package/src/models/deck-note.js +4 -4
  380. package/src/models/deck-tags.js +52 -0
  381. package/src/models/deck-version.js +9 -8
  382. package/src/models/deck.js +8 -6
  383. package/src/models/dispatch-preview.js +6 -7
  384. package/src/models/dispatch.js +6 -7
  385. package/src/models/envs.js +1 -1
  386. package/src/models/event-object.js +6 -6
  387. package/src/models/event.js +7 -7
  388. package/src/models/feed-data.js +5 -5
  389. package/src/models/file.js +4 -4
  390. package/src/models/group.js +3 -3
  391. package/src/models/handover.js +5 -5
  392. package/src/models/hosted-preso.js +5 -5
  393. package/src/models/image.js +4 -4
  394. package/src/models/location.js +5 -5
  395. package/src/models/manifest-json.js +68 -30
  396. package/src/models/onshare.js +5 -5
  397. package/src/models/opportunity.js +5 -5
  398. package/src/models/pack-diff.js +5 -5
  399. package/src/models/pack.js +4 -4
  400. package/src/models/preset.js +24 -5
  401. package/src/models/refresh-request.js +6 -6
  402. package/src/models/room.js +3 -3
  403. package/src/models/salesforce-lookup.js +3 -3
  404. package/src/models/section-selection.js +6 -6
  405. package/src/models/section.js +7 -7
  406. package/src/models/slide-selection.js +6 -6
  407. package/src/models/slide.js +7 -7
  408. package/src/models/snapshot.js +5 -5
  409. package/src/models/sub-slide.js +5 -5
  410. package/src/models/support-ticket.js +4 -4
  411. package/src/models/tag.js +42 -0
  412. package/src/models/team.js +4 -4
  413. package/src/models/template.js +4 -4
  414. package/src/models/tenancy.js +5 -5
  415. package/src/models/timing-log.js +18 -18
  416. package/src/models/timing-log.spec.js +28 -29
  417. package/src/models/transcribe-socket.js +3 -3
  418. package/src/models/upload.js +3 -3
  419. package/src/models/user.js +24 -20
  420. package/src/models/user.spec.js +2 -2
  421. package/src/models.js +7 -0
  422. package/src/presentation/appointment-presentation.js +14 -10
  423. package/src/presentation/base-presentation-model.js +67 -5
  424. package/src/presentation/base-presentation-model.spec.js +114 -22
  425. package/src/presentation/presentation-deck.js +54 -52
  426. package/src/presentation/presentation-deck.spec.js +26 -27
  427. package/src/presentation/presentation-decks.js +2 -2
  428. package/src/presentation/presentation-section.js +62 -48
  429. package/src/presentation/presentation-section.spec.js +363 -0
  430. package/src/presentation/presentation-sections.js +2 -2
  431. package/src/presentation/presentation-slide.js +51 -36
  432. package/src/presentation/presentation-slide.spec.js +250 -0
  433. package/src/presentation/presentation-slides.js +2 -2
  434. package/src/presentation/presentation-subslide.js +24 -17
  435. package/src/presentation/presentation-subslide.spec.js +40 -12
  436. package/src/presentation/presentation-subslides.js +2 -2
  437. package/src/presentation/presentation.js +27 -15
  438. package/src/state-register.js +7 -0
  439. package/src/sync.js +21 -23
  440. package/src/utils.js +8 -7
  441. package/src/utils.spec.js +15 -15
  442. package/.editorconfig +0 -9
  443. package/.eslintrc +0 -25
  444. package/.prettierrc.js +0 -3
  445. package/jsdoc.json +0 -12
  446. package/yarn.lock +0 -8099
@@ -1,7 +1,7 @@
1
1
  import "./presentation-section.js";
2
2
 
3
- import { register } from "../state-register.js";
4
3
  import { BasePresentationCollection } from "./base-presentation-collection.js";
4
+ import { register } from "../state-register.js";
5
5
 
6
6
  /**
7
7
  * @constructor
@@ -12,7 +12,7 @@ import { BasePresentationCollection } from "./base-presentation-collection.js";
12
12
  export const PresentationSectionCollection = BasePresentationCollection.extend(
13
13
  /** @lends presentation.PresentationSectionCollection# */ {
14
14
  comparator: "sequence",
15
- model: "PresentationSection"
15
+ model: "PresentationSection",
16
16
  }
17
17
  );
18
18
 
@@ -1,15 +1,15 @@
1
1
  import "./presentation-subslides.js";
2
2
 
3
- import url2 from "url";
4
-
5
- import _ from "lodash";
6
-
7
3
  import * as collections from "../collections.js";
8
- import { getAssetRoot } from "../index.js";
4
+
9
5
  import { AdjunctSlideModel, AutoAdjunctModel, SlideModel } from "../models.js";
10
- import { register } from "../state-register.js";
6
+
11
7
  import { BasePresentationModel } from "./base-presentation-model.js";
12
8
  import { PresentationSubSlide } from "./presentation-subslide.js";
9
+ import _ from "lodash";
10
+ import { getAssetRoot } from "../index.js";
11
+ import { register } from "../state-register.js";
12
+ import url2 from "url";
13
13
 
14
14
  /**
15
15
  * @constructor
@@ -47,19 +47,19 @@ export const PresentationSlide = BasePresentationModel.extend(
47
47
  adjunctID: "number",
48
48
  autoAdjunctID: {
49
49
  type: "number",
50
- default: null
50
+ default: null,
51
51
  },
52
52
  templateID: {
53
53
  type: "number",
54
- default: null
54
+ default: null,
55
55
  },
56
56
  createdByAutoAdjunct: {
57
57
  type: "boolean",
58
- default: false
58
+ default: false,
59
59
  },
60
60
  createdByTemplate: {
61
61
  type: "boolean",
62
- default: false
62
+ default: false,
63
63
  },
64
64
  html: "string",
65
65
  css: "string",
@@ -76,21 +76,21 @@ export const PresentationSlide = BasePresentationModel.extend(
76
76
  thumbnail: "string",
77
77
  selectionID: "number",
78
78
  editable: "boolean",
79
- tags: "array"
79
+ tags: "array",
80
80
  },
81
81
 
82
82
  /**
83
83
  * @property {models.AdjunctModel} adjunct
84
84
  */
85
85
  children: {
86
- adjunct: "AdjunctModel"
86
+ adjunct: "AdjunctModel",
87
87
  },
88
88
 
89
89
  /**
90
90
  * @property {presentation.PresentationSubSlideCollection} subslides
91
91
  */
92
92
  collections: {
93
- subslides: "PresentationSubSlideCollection"
93
+ subslides: "PresentationSubSlideCollection",
94
94
  },
95
95
 
96
96
  url() {
@@ -102,7 +102,7 @@ export const PresentationSlide = BasePresentationModel.extend(
102
102
  }
103
103
  }
104
104
  return this._url;
105
- }
105
+ },
106
106
  }
107
107
  );
108
108
 
@@ -113,7 +113,7 @@ export const PresentationSlide = BasePresentationModel.extend(
113
113
  * @param {object} [options]
114
114
  * @returns {presentation.PresentationSlide}
115
115
  */
116
- PresentationSlide.createFromSlide = function(slideModel, options = {}) {
116
+ PresentationSlide.createFromSlide = function (slideModel, options = {}) {
117
117
  _.defaults(options, {
118
118
  adjunctSubSlides: new collections.AdjunctSubSlideCollection(),
119
119
  rootAssetPath: null,
@@ -121,7 +121,7 @@ PresentationSlide.createFromSlide = function(slideModel, options = {}) {
121
121
  choicelist: null,
122
122
  getUniqueAdjunctID: () => {
123
123
  return parseInt(_.uniqueId(), 10);
124
- }
124
+ },
125
125
  });
126
126
 
127
127
  let html;
@@ -146,6 +146,8 @@ PresentationSlide.createFromSlide = function(slideModel, options = {}) {
146
146
  options
147
147
  );
148
148
 
149
+ const tags = PresentationSlide.getTags(slideModel, options);
150
+
149
151
  const slide = new PresentationSlide({
150
152
  id: slideModel.id,
151
153
  adjunctID: null,
@@ -154,23 +156,23 @@ PresentationSlide.createFromSlide = function(slideModel, options = {}) {
154
156
  key: slideModel.key,
155
157
  thumbnail: slideModel.image_256,
156
158
  custom: false,
157
- editable: slideModel.tags.indexOf("editable") > -1,
159
+ editable: tags.indexOf("editable") > -1,
158
160
  title: slideModel.title,
159
161
  section: slideModel.section.id,
160
- tags: slideModel.tags,
162
+ tags,
161
163
  index: config.sequence,
162
164
  sequence: config.sequence,
163
165
  visible: config.visible,
164
- selectionID: config.selectionID
166
+ selectionID: config.selectionID,
165
167
  });
166
168
 
167
169
  slide.subslides.add(
168
- slideModel.subslide_set.map(model => {
170
+ slideModel.subslide_set.map((model) => {
169
171
  return PresentationSubSlide.createFromSubSlide(model, options);
170
172
  })
171
173
  );
172
174
 
173
- const adjunctSubslides = options.adjunctSubSlides.filter(model => {
175
+ const adjunctSubslides = options.adjunctSubSlides.filter((model) => {
174
176
  return model.slide.id === slideModel.id;
175
177
  });
176
178
 
@@ -181,7 +183,7 @@ PresentationSlide.createFromSlide = function(slideModel, options = {}) {
181
183
  if (
182
184
  adjunctSubslides.length &&
183
185
  !slide.subslides.length &&
184
- !(slideModel.tags.indexOf("subslide_container") > -1)
186
+ !(tags.indexOf("subslide_container") > -1)
185
187
  ) {
186
188
  slide.subslides.add(PresentationSubSlide.createFromSlide(slide));
187
189
  }
@@ -198,7 +200,7 @@ PresentationSlide.createFromSlide = function(slideModel, options = {}) {
198
200
 
199
201
  return PresentationSubSlide.createFromAdjunctSubSlide(model, slideModel, {
200
202
  ...options,
201
- id
203
+ id,
202
204
  });
203
205
  })
204
206
  );
@@ -214,7 +216,7 @@ PresentationSlide.createFromSlide = function(slideModel, options = {}) {
214
216
  * @param {object} [options]
215
217
  * @returns {presentation.PresentationSlide}
216
218
  */
217
- PresentationSlide.createFromAdjunctSlide = function(
219
+ PresentationSlide.createFromAdjunctSlide = function (
218
220
  adjunctSlideModel,
219
221
  section = null,
220
222
  options = {}
@@ -226,7 +228,7 @@ PresentationSlide.createFromAdjunctSlide = function(
226
228
  choicelist: null,
227
229
  getUniqueAdjunctID: () => {
228
230
  return parseInt(_.uniqueId(), 10);
229
- }
231
+ },
230
232
  });
231
233
 
232
234
  const keyID =
@@ -241,6 +243,7 @@ PresentationSlide.createFromAdjunctSlide = function(
241
243
  key = adjunctSlideModel.key;
242
244
  } else if (keyID) {
243
245
  key = `adjunct-${keyID}`;
246
+ adjunctSlideModel.key = key;
244
247
  }
245
248
 
246
249
  const config = PresentationSlide.getVisibilityAndSequence(
@@ -248,6 +251,8 @@ PresentationSlide.createFromAdjunctSlide = function(
248
251
  options
249
252
  );
250
253
 
254
+ const tags = PresentationSlide.getTags(adjunctSlideModel, options);
255
+
251
256
  const slide = new PresentationSlide({
252
257
  id: options.id || options.getUniqueAdjunctID(),
253
258
  adjunct: adjunctSlideModel.adjunct ? adjunctSlideModel.adjunct.url() : null,
@@ -263,10 +268,10 @@ PresentationSlide.createFromAdjunctSlide = function(
263
268
  temporary: adjunctSlideModel.created_by_autoadjunct,
264
269
  title: adjunctSlideModel.title,
265
270
  section: section ? section.id : null,
266
- tags: adjunctSlideModel.tags,
271
+ tags,
267
272
  index: config.sequence,
268
273
  sequence: config.sequence,
269
- visible: config.visible
274
+ visible: config.visible,
270
275
  });
271
276
 
272
277
  if (adjunctSlideModel.template) {
@@ -299,7 +304,7 @@ PresentationSlide.createFromAdjunctSlide = function(
299
304
  return slide;
300
305
  };
301
306
 
302
- PresentationSlide.createFromManifestJSON = function(
307
+ PresentationSlide.createFromManifestJSON = function (
303
308
  manifestJSON,
304
309
  key,
305
310
  sectionID,
@@ -320,13 +325,13 @@ PresentationSlide.createFromManifestJSON = function(
320
325
  custom: false,
321
326
  visible: true,
322
327
  section: sectionID,
323
- tags: manifestJSON.tags[key] || null
328
+ tags: manifestJSON.tags[key] || null,
324
329
  });
325
330
 
326
331
  return slide;
327
332
  };
328
333
 
329
- PresentationSlide.createFromManifestImpostor = function(
334
+ PresentationSlide.createFromManifestImpostor = function (
330
335
  slide,
331
336
  index,
332
337
  sectionID
@@ -339,13 +344,13 @@ PresentationSlide.createFromManifestImpostor = function(
339
344
  visible: true,
340
345
  section: sectionID,
341
346
  index,
342
- ...slide
347
+ ...slide,
343
348
  });
344
349
 
345
350
  return presentationSlide;
346
351
  };
347
352
 
348
- PresentationSlide.createFromTemplate = function(
353
+ PresentationSlide.createFromTemplate = function (
349
354
  template,
350
355
  index,
351
356
  sectionID,
@@ -362,12 +367,12 @@ PresentationSlide.createFromTemplate = function(
362
367
  // Makes sure templates are rendered with unique IDs
363
368
  autoAdjunctID: Number(_.uniqueId()),
364
369
  index,
365
- createdByTemplate: true
370
+ createdByTemplate: true,
366
371
  });
367
372
  return presentationSlide;
368
373
  };
369
374
 
370
- PresentationSlide.createFromAutoAdjunct = function(model, opts) {
375
+ PresentationSlide.createFromAutoAdjunct = function (model, opts) {
371
376
  const requiredKeys = ["index", "deckversionID"];
372
377
  for (const key of requiredKeys) {
373
378
  if (typeof opts[key] === "undefined") {
@@ -381,9 +386,18 @@ PresentationSlide.createFromAutoAdjunct = function(model, opts) {
381
386
  index: -1,
382
387
  deckversionID: -1,
383
388
  sequence: opts.index,
384
- impostor: false
389
+ impostor: false,
385
390
  });
386
391
 
392
+ const tags = PresentationSlide.getTags(
393
+ {
394
+ isAutoAdjunct: true,
395
+ key: model.key,
396
+ tags: model.tags,
397
+ },
398
+ options
399
+ );
400
+
387
401
  const autoAdjunct = new AutoAdjunctModel(model);
388
402
 
389
403
  const autoAdjunctSlide = new PresentationSlide({
@@ -404,7 +418,8 @@ PresentationSlide.createFromAutoAdjunct = function(model, opts) {
404
418
  visible: options.visible,
405
419
  allowConvert: options.allowConvert,
406
420
  deckversion: options.deckversionID,
407
- impostor: options.impostor
421
+ impostor: options.impostor,
422
+ tags,
408
423
  });
409
424
 
410
425
  if (autoAdjunct.template) {
@@ -0,0 +1,250 @@
1
+ import { AdjunctSlideModel } from "../models/adjunct-slide";
2
+ import { AutoAdjunctModel } from "../models/auto-adjunct";
3
+ import { PresentationSlide } from "./presentation-slide";
4
+ import { SlideModel } from "../models/slide";
5
+
6
+ describe("#createFromSlide", () => {
7
+ const getSlideJSON = () => {
8
+ return {
9
+ created_date: "2021-07-22T04:57:56.484060Z",
10
+ description: "",
11
+ enabled: true,
12
+ id: 23219,
13
+ image_128: null,
14
+ image_256: null,
15
+ image_512: null,
16
+ index_asset: {
17
+ created_date: "2021-07-22T04:57:32.977770Z",
18
+ data: "sections/test-deck/slides/slide-key/index.html",
19
+ id: 148204,
20
+ modified_date: "2021-07-22T04:57:32.977790Z",
21
+ orig_path: "sections/test-deck/slides/slide-key",
22
+ pack: "https://staging-test.salespreso.com/api/packs/410/",
23
+ url: "https://staging-test-cdn.salespreso.com/media/pack/410/assets/sections/test-deck/slides/slide-key/index.html",
24
+ },
25
+ key: "slide-key",
26
+ modified_date: "2021-07-22T05:03:07.778106Z",
27
+ namespaced_key: "test-deck/slide-key",
28
+ section: "https://staging-test.salespreso.com/api/sections/1738/",
29
+ sequence: 13,
30
+ subslide_set: [],
31
+ tags: [],
32
+ title: "Digital Transformation",
33
+ url: "https://staging-test.salespreso.com/api/slides/23219/",
34
+ };
35
+ };
36
+
37
+ it("should create a presentation slide", async () => {
38
+ const slide = new SlideModel(getSlideJSON());
39
+ const presentationSlide = PresentationSlide.createFromSlide(slide);
40
+
41
+ const expected = {
42
+ adjunctID: null,
43
+ autoAdjunctID: null,
44
+ createdByAutoAdjunct: false,
45
+ createdByTemplate: false,
46
+ css: "https://staging-test-cdn.salespreso.com/media/pack/410/assets/sections/test-deck/slides/slide-key/slide.css",
47
+ custom: false,
48
+ editable: false,
49
+ html: "https://staging-test-cdn.salespreso.com/media/pack/410/assets/sections/test-deck/slides/slide-key/index.html",
50
+ id: 23219,
51
+ index: 13,
52
+ key: "slide-key",
53
+ section: 1738,
54
+ selectionID: null,
55
+ sequence: 13,
56
+ subslides: [],
57
+ tags: [],
58
+ templateID: null,
59
+ thumbnail: null,
60
+ title: "Digital Transformation",
61
+ url: "/api/slides/23219/",
62
+ visible: true,
63
+ };
64
+
65
+ expect(presentationSlide.toJSON()).toEqual(expected);
66
+ });
67
+
68
+ it("should use deckTags when available", async () => {
69
+ const slide = new SlideModel(getSlideJSON());
70
+ const options = {
71
+ deckTags: { "test-deck/slide-key": ["slide-tag"] },
72
+ };
73
+
74
+ const presentationSlide = PresentationSlide.createFromSlide(slide, options);
75
+
76
+ expect(presentationSlide.tags).toEqual(["slide-tag"]);
77
+ });
78
+ });
79
+
80
+ describe("#createFromAdjunctSlide", () => {
81
+ const getAdjunctSlideJSON = () => {
82
+ return {
83
+ adjunct: "https://staging-test.salespreso.com/api/adjuncts/7457/",
84
+ appointment: "https://staging-test.salespreso.com/api/appointments/2426/",
85
+ created_by_autoadjunct: true,
86
+ created_date: "2021-09-20T05:34:45.267698Z",
87
+ creator_autoadjunct:
88
+ "https://staging-test.salespreso.com/api/autoadjuncts/541/",
89
+ deleted: false,
90
+ enabled: true,
91
+ html_content:
92
+ '<img src="https://staging-test-cdn.salespreso.com/media/autoadjunct/123.png">',
93
+ id: 10529,
94
+ image_128:
95
+ "https://staging-test-cdn.salespreso.com/media/CACHE/images/autoadjunct/123/456.jpg",
96
+ image_256:
97
+ "https://staging-test-cdn.salespreso.com/media/CACHE/images/autoadjunct/123/456.jpg",
98
+ image_512:
99
+ "https://staging-test-cdn.salespreso.com/media/CACHE/images/autoadjunct/123/456.jpg",
100
+ image_1024:
101
+ "https://staging-test-cdn.salespreso.com/media/CACHE/images/autoadjunct/123/456.png",
102
+ image_original:
103
+ "https://staging-test-cdn.salespreso.com/media/autoadjunct/123.png",
104
+ modified_date: "2021-09-20T05:34:45.267703Z",
105
+ section: "https://staging-test.salespreso.com/api/sections/1755/",
106
+ sequence: 3,
107
+ tags: [],
108
+ template: null,
109
+ title: "Six",
110
+ url: "https://staging-test.salespreso.com/api/adjunctslides/10529/",
111
+ };
112
+ };
113
+
114
+ it("should create a presentation slide", async () => {
115
+ const adjunctSlide = new AdjunctSlideModel(getAdjunctSlideJSON());
116
+ const presentationSlide =
117
+ PresentationSlide.createFromAdjunctSlide(adjunctSlide);
118
+
119
+ const expected = {
120
+ adjunct: {
121
+ url: "https://staging-test.salespreso.com/api/adjuncts/7457/",
122
+ },
123
+ adjunctID: 10529,
124
+ autoAdjunctID: 541,
125
+ createdByAutoAdjunct: true,
126
+ createdByTemplate: false,
127
+ custom: false,
128
+ id: 1,
129
+ image:
130
+ "https://staging-test-cdn.salespreso.com/media/autoadjunct/123.png",
131
+ index: 3,
132
+ key: "adjunct-10529",
133
+ section: null,
134
+ sequence: 3,
135
+ subslides: [],
136
+ tags: [],
137
+ templateID: null,
138
+ temporary: true,
139
+ thumbnail:
140
+ "https://staging-test-cdn.salespreso.com/media/CACHE/images/autoadjunct/123/456.jpg",
141
+ title: "Six",
142
+ url: "/api/adjunctslides/10529/",
143
+ visible: true,
144
+ };
145
+
146
+ expect(presentationSlide.toJSON()).toEqual(expected);
147
+ });
148
+
149
+ it("should use deckTags when available", async () => {
150
+ const adjunctSlide = new AdjunctSlideModel(getAdjunctSlideJSON());
151
+ const options = {
152
+ deckTags: { "test-deck/adjunct-10529": ["adjunctslide-tag"] },
153
+ };
154
+
155
+ const presentationSlide = PresentationSlide.createFromAdjunctSlide(
156
+ adjunctSlide,
157
+ null,
158
+ options
159
+ );
160
+
161
+ expect(presentationSlide.tags).toEqual(["adjunctslide-tag"]);
162
+ });
163
+ });
164
+
165
+ describe("#createFromAutoAdjunct", () => {
166
+ const getAutoAdjunctJSON = () => {
167
+ return {
168
+ after_key: "test-deck/industry_insights",
169
+ created_date: "2021-08-02T00:28:41.992805Z",
170
+ deck: "https://staging-test.salespreso.com/api/decks/4/",
171
+ enabled: true,
172
+ id: 525,
173
+ image_128:
174
+ "https://staging-test-cdn.salespreso.com/media/CACHE/images/autoadjunct/123/456.jpg",
175
+ image_256:
176
+ "https://staging-test-cdn.salespreso.com/media/CACHE/images/autoadjunct/123/456.jpg",
177
+ image_512:
178
+ "https://staging-test-cdn.salespreso.com/media/CACHE/images/autoadjunct/123/456.jpg",
179
+ image_1024:
180
+ "https://staging-test-cdn.salespreso.com/media/CACHE/images/autoadjunct/123/456.png",
181
+ image_original:
182
+ "https://staging-test-cdn.salespreso.com/media/autoadjunct/123.png",
183
+ key: "autoadjunct-three",
184
+ modified_date: "2021-09-15T05:52:49.234837Z",
185
+ name: "Three",
186
+ parent_key: "test-deck",
187
+ sequence: 4,
188
+ tags: [],
189
+ team: null,
190
+ template: null,
191
+ url: "https://staging-test.salespreso.com/api/autoadjuncts/525/",
192
+ };
193
+ };
194
+
195
+ it("should create a presentation slide", async () => {
196
+ const autoAdjunct = new AutoAdjunctModel(getAutoAdjunctJSON());
197
+ const options = {
198
+ index: 3,
199
+ deckversionID: 12,
200
+ };
201
+
202
+ const presentationSlide = PresentationSlide.createFromAutoAdjunct(
203
+ autoAdjunct,
204
+ options
205
+ );
206
+
207
+ const expected = {
208
+ adjunctID: 525,
209
+ autoAdjunctID: 525,
210
+ createdByAutoAdjunct: false,
211
+ createdByTemplate: false,
212
+ css: "",
213
+ html: "",
214
+ id: 525,
215
+ image:
216
+ "https://staging-test-cdn.salespreso.com/media/autoadjunct/123.png",
217
+ index: 3,
218
+ key: "autoadjunct-three",
219
+ sequence: 3,
220
+ subslides: [],
221
+ tags: [],
222
+ templateID: null,
223
+ temporary: true,
224
+ thumbnail:
225
+ "https://staging-test-cdn.salespreso.com/media/CACHE/images/autoadjunct/123/456.jpg",
226
+ title: "Three",
227
+ url: "/api/adjunctslides/525/",
228
+ visible: true,
229
+ };
230
+
231
+ expect(presentationSlide.toJSON()).toEqual(expected);
232
+ });
233
+
234
+ it("should use deckTags when available", async () => {
235
+ const autoAdjunct = new AutoAdjunctModel(getAutoAdjunctJSON());
236
+ const options = {
237
+ index: 3,
238
+ deckversionID: 12,
239
+ deckTags: {
240
+ "test-deck/autoadjunct-three": ["autoadjunct-tags"],
241
+ },
242
+ };
243
+
244
+ const presentationSlide = PresentationSlide.createFromAutoAdjunct(
245
+ autoAdjunct,
246
+ options
247
+ );
248
+ expect(presentationSlide.tags).toEqual(["autoadjunct-tags"]);
249
+ });
250
+ });
@@ -1,7 +1,7 @@
1
1
  import "./presentation-slide.js";
2
2
 
3
- import { register } from "../state-register.js";
4
3
  import { BasePresentationCollection } from "./base-presentation-collection.js";
4
+ import { register } from "../state-register.js";
5
5
 
6
6
  /**
7
7
  * @constructor
@@ -12,7 +12,7 @@ import { BasePresentationCollection } from "./base-presentation-collection.js";
12
12
  export const PresentationSlideCollection = BasePresentationCollection.extend(
13
13
  /** @lends presentation.PresentationSlideCollection# */ {
14
14
  comparator: "sequence",
15
- model: "PresentationSlide"
15
+ model: "PresentationSlide",
16
16
  }
17
17
  );
18
18
 
@@ -1,8 +1,8 @@
1
- import _ from "lodash";
2
-
3
1
  import { AdjunctSubSlideModel, SubSlideModel } from "../models.js";
4
- import { register } from "../state-register.js";
2
+
5
3
  import { BasePresentationModel } from "./base-presentation-model.js";
4
+ import _ from "lodash";
5
+ import { register } from "../state-register.js";
6
6
 
7
7
  /**
8
8
  * @constructor
@@ -41,14 +41,14 @@ export const PresentationSubSlide = BasePresentationModel.extend(
41
41
  slide: "number",
42
42
  image: "string",
43
43
  _orig_image: "string",
44
- tags: "array"
44
+ tags: "array",
45
45
  },
46
46
 
47
47
  /**
48
48
  * @property {models.AdjunctModel} adjunct
49
49
  */
50
50
  children: {
51
- adjunct: "AdjunctModel"
51
+ adjunct: "AdjunctModel",
52
52
  },
53
53
 
54
54
  url() {
@@ -61,7 +61,7 @@ export const PresentationSubSlide = BasePresentationModel.extend(
61
61
  }
62
62
 
63
63
  return this._url;
64
- }
64
+ },
65
65
  }
66
66
  );
67
67
 
@@ -72,13 +72,13 @@ export const PresentationSubSlide = BasePresentationModel.extend(
72
72
  * @param {object} [options]
73
73
  * @returns {presentation.PresentationSubSlide}
74
74
  */
75
- PresentationSubSlide.createFromSubSlide = function(
75
+ PresentationSubSlide.createFromSubSlide = function (
76
76
  subSlideModel,
77
77
  options = {}
78
78
  ) {
79
79
  _.defaults(options, {
80
80
  selections: null,
81
- choicelist: null
81
+ choicelist: null,
82
82
  });
83
83
 
84
84
  const config = PresentationSubSlide.getVisibilityAndSequence(
@@ -86,6 +86,8 @@ PresentationSubSlide.createFromSubSlide = function(
86
86
  options
87
87
  );
88
88
 
89
+ const tags = PresentationSubSlide.getTags(subSlideModel, options);
90
+
89
91
  const subslide = new PresentationSubSlide({
90
92
  id: subSlideModel.id,
91
93
  adjunctID: null,
@@ -94,10 +96,10 @@ PresentationSubSlide.createFromSubSlide = function(
94
96
  custom: false,
95
97
  title: subSlideModel.title,
96
98
  slide: subSlideModel.slide.id,
97
- tags: subSlideModel.tags,
99
+ tags,
98
100
  index: config.sequence,
99
101
  sequence: config.sequence,
100
- visible: config.visible
102
+ visible: config.visible,
101
103
  });
102
104
 
103
105
  return subslide;
@@ -111,7 +113,7 @@ PresentationSubSlide.createFromSubSlide = function(
111
113
  * @param {object} [options]
112
114
  * @returns {presentation.PresentationSubSlide}
113
115
  */
114
- PresentationSubSlide.createFromAdjunctSubSlide = function(
116
+ PresentationSubSlide.createFromAdjunctSubSlide = function (
115
117
  adjunctSubSlideModel,
116
118
  slideModel,
117
119
  options = {}
@@ -122,14 +124,19 @@ PresentationSubSlide.createFromAdjunctSubSlide = function(
122
124
  choicelist: null,
123
125
  getUniqueAdjunctID: () => {
124
126
  return parseInt(_.uniqueId(), 10);
125
- }
127
+ },
126
128
  });
127
129
 
130
+ const key = `adjunct-${adjunctSubSlideModel.id}`;
131
+ adjunctSubSlideModel.key = key;
132
+
128
133
  const config = PresentationSubSlide.getVisibilityAndSequence(
129
134
  adjunctSubSlideModel,
130
135
  options
131
136
  );
132
137
 
138
+ const tags = PresentationSubSlide.getTags(adjunctSubSlideModel, options);
139
+
133
140
  const subslide = new PresentationSubSlide({
134
141
  id: options.id || options.getUniqueAdjunctID(),
135
142
  adjunct: adjunctSubSlideModel.adjunct
@@ -137,21 +144,21 @@ PresentationSubSlide.createFromAdjunctSubSlide = function(
137
144
  : null,
138
145
  adjunctID: adjunctSubSlideModel.id,
139
146
  html_content: adjunctSubSlideModel.html_content,
140
- key: `adjunct-${adjunctSubSlideModel.id}`,
147
+ key,
141
148
  image: adjunctSubSlideModel.image_256,
142
149
  custom: true,
143
150
  title: adjunctSubSlideModel.title,
144
151
  slide: slideModel.id,
145
- tags: adjunctSubSlideModel.tags,
152
+ tags,
146
153
  index: config.sequence,
147
154
  sequence: config.sequence,
148
- visible: config.visible
155
+ visible: config.visible,
149
156
  });
150
157
 
151
158
  return subslide;
152
159
  };
153
160
 
154
- PresentationSubSlide.createFromSlide = function(slide) {
161
+ PresentationSubSlide.createFromSlide = function (slide) {
155
162
  const subslide = new PresentationSubSlide({
156
163
  id: slide.id,
157
164
  createdFromSlide: true,
@@ -164,7 +171,7 @@ PresentationSubSlide.createFromSlide = function(slide) {
164
171
  title: slide.title,
165
172
  slide: slide.id,
166
173
  image: slide.image,
167
- tags: slide.tags
174
+ tags: slide.tags,
168
175
  });
169
176
 
170
177
  return subslide;