@livepreso/api 6.41.0 → 6.44.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (446) hide show
  1. package/.eslintrc.js +5 -0
  2. package/.rush/temp/build-cache-tar.log +7 -0
  3. package/.rush/temp/package-deps_test.json +170 -0
  4. package/.rush/temp/shrinkwrap-deps.json +957 -0
  5. package/CHANGELOG.json +53 -0
  6. package/CHANGELOG.md +32 -0
  7. package/api.build.log +4 -0
  8. package/babel.config.js +9 -18
  9. package/cjs/api.js +1 -1
  10. package/cjs/api.js.map +1 -1
  11. package/cjs/api.spec.js +2 -2
  12. package/cjs/api.spec.js.map +1 -1
  13. package/cjs/auth.js +6 -5
  14. package/cjs/auth.js.map +1 -1
  15. package/cjs/auth.spec.js +25 -23
  16. package/cjs/auth.spec.js.map +1 -1
  17. package/cjs/caching.js +3 -3
  18. package/cjs/collections/activity.js +22 -27
  19. package/cjs/collections/activity.js.map +1 -1
  20. package/cjs/collections/adjunct-sections.js +2 -2
  21. package/cjs/collections/adjunct-sections.js.map +1 -1
  22. package/cjs/collections/adjunct-slides.js +2 -2
  23. package/cjs/collections/adjunct-slides.js.map +1 -1
  24. package/cjs/collections/adjunct-sub-slides.js +2 -2
  25. package/cjs/collections/adjunct-sub-slides.js.map +1 -1
  26. package/cjs/collections/appointment-adjunct-tags.js +28 -0
  27. package/cjs/collections/appointment-adjunct-tags.js.map +1 -0
  28. package/cjs/collections/appointment-deckversion-tags.js +28 -0
  29. package/cjs/collections/appointment-deckversion-tags.js.map +1 -0
  30. package/cjs/collections/appointment-duplicates.js +2 -2
  31. package/cjs/collections/appointment-duplicates.js.map +1 -1
  32. package/cjs/collections/appointment-editors.js +2 -2
  33. package/cjs/collections/appointment-editors.js.map +1 -1
  34. package/cjs/collections/appointment-section-tags.js +28 -0
  35. package/cjs/collections/appointment-section-tags.js.map +1 -0
  36. package/cjs/collections/appointment-slide-tags.js +28 -0
  37. package/cjs/collections/appointment-slide-tags.js.map +1 -0
  38. package/cjs/collections/appointment-tags.js +208 -0
  39. package/cjs/collections/appointment-tags.js.map +1 -0
  40. package/cjs/collections/appointments.js +10 -6
  41. package/cjs/collections/appointments.js.map +1 -1
  42. package/cjs/collections/assets.js +2 -2
  43. package/cjs/collections/assets.js.map +1 -1
  44. package/cjs/collections/auto-adjuncts.js +7 -3
  45. package/cjs/collections/auto-adjuncts.js.map +1 -1
  46. package/cjs/collections/base.js +103 -25
  47. package/cjs/collections/base.js.map +1 -1
  48. package/cjs/collections/base.spec.js +231 -123
  49. package/cjs/collections/base.spec.js.map +1 -1
  50. package/cjs/collections/cms-vals.js +2 -2
  51. package/cjs/collections/cms-vals.js.map +1 -1
  52. package/cjs/collections/contacts.js +2 -2
  53. package/cjs/collections/contacts.js.map +1 -1
  54. package/cjs/collections/created-assets.js +2 -2
  55. package/cjs/collections/created-assets.js.map +1 -1
  56. package/cjs/collections/customers.js +2 -2
  57. package/cjs/collections/customers.js.map +1 -1
  58. package/cjs/collections/deck-notes.js +2 -2
  59. package/cjs/collections/deck-notes.js.map +1 -1
  60. package/cjs/collections/deck-versions.js +20 -8
  61. package/cjs/collections/deck-versions.js.map +1 -1
  62. package/cjs/collections/decks.js +2 -2
  63. package/cjs/collections/decks.js.map +1 -1
  64. package/cjs/collections/deleted-assets.js +2 -2
  65. package/cjs/collections/deleted-assets.js.map +1 -1
  66. package/cjs/collections/dispatches.js +4 -4
  67. package/cjs/collections/dispatches.js.map +1 -1
  68. package/cjs/collections/event-objects.js +2 -2
  69. package/cjs/collections/event-objects.js.map +1 -1
  70. package/cjs/collections/events.js +2 -2
  71. package/cjs/collections/events.js.map +1 -1
  72. package/cjs/collections/groups.js +2 -2
  73. package/cjs/collections/groups.js.map +1 -1
  74. package/cjs/collections/images.js +2 -2
  75. package/cjs/collections/images.js.map +1 -1
  76. package/cjs/collections/locations.js +2 -2
  77. package/cjs/collections/locations.js.map +1 -1
  78. package/cjs/collections/opportunities.js +2 -2
  79. package/cjs/collections/opportunities.js.map +1 -1
  80. package/cjs/collections/pack-diffs.js +2 -2
  81. package/cjs/collections/pack-diffs.js.map +1 -1
  82. package/cjs/collections/packs.js +2 -2
  83. package/cjs/collections/packs.js.map +1 -1
  84. package/cjs/collections/presets.js +2 -2
  85. package/cjs/collections/presets.js.map +1 -1
  86. package/cjs/collections/section-selections.js +2 -2
  87. package/cjs/collections/section-selections.js.map +1 -1
  88. package/cjs/collections/sections.js +2 -2
  89. package/cjs/collections/sections.js.map +1 -1
  90. package/cjs/collections/slide-selections.js +2 -2
  91. package/cjs/collections/slide-selections.js.map +1 -1
  92. package/cjs/collections/slides.js +2 -2
  93. package/cjs/collections/slides.js.map +1 -1
  94. package/cjs/collections/snapshots.js +2 -2
  95. package/cjs/collections/snapshots.js.map +1 -1
  96. package/cjs/collections/sub-slides.js +2 -2
  97. package/cjs/collections/sub-slides.js.map +1 -1
  98. package/cjs/collections/tags.js +28 -0
  99. package/cjs/collections/tags.js.map +1 -0
  100. package/cjs/collections/teams.js +2 -2
  101. package/cjs/collections/teams.js.map +1 -1
  102. package/cjs/collections/templates.js +2 -2
  103. package/cjs/collections/templates.js.map +1 -1
  104. package/cjs/collections/uploads.js +2 -2
  105. package/cjs/collections/uploads.js.map +1 -1
  106. package/cjs/collections/users.js +2 -2
  107. package/cjs/collections/users.js.map +1 -1
  108. package/cjs/collections.js +115 -0
  109. package/cjs/collections.js.map +1 -1
  110. package/cjs/index.js +3 -0
  111. package/cjs/index.js.map +1 -1
  112. package/cjs/middleware.js.map +1 -1
  113. package/cjs/middlewares/auth.js +10 -6
  114. package/cjs/middlewares/auth.js.map +1 -1
  115. package/cjs/middlewares/base.js +1 -3
  116. package/cjs/middlewares/base.js.map +1 -1
  117. package/cjs/middlewares/json.js +10 -6
  118. package/cjs/middlewares/json.js.map +1 -1
  119. package/cjs/middlewares/redirect.js +10 -6
  120. package/cjs/middlewares/redirect.js.map +1 -1
  121. package/cjs/models/activity-item.js +6 -2
  122. package/cjs/models/activity-item.js.map +1 -1
  123. package/cjs/models/adjunct-section.js +2 -2
  124. package/cjs/models/adjunct-section.js.map +1 -1
  125. package/cjs/models/adjunct-slide.js +2 -2
  126. package/cjs/models/adjunct-slide.js.map +1 -1
  127. package/cjs/models/adjunct-sub-slide.js +2 -2
  128. package/cjs/models/adjunct-sub-slide.js.map +1 -1
  129. package/cjs/models/adjunct.js +2 -2
  130. package/cjs/models/adjunct.js.map +1 -1
  131. package/cjs/models/api.js.map +1 -1
  132. package/cjs/models/appointment-adjunct-tags.js +52 -0
  133. package/cjs/models/appointment-adjunct-tags.js.map +1 -0
  134. package/cjs/models/appointment-deckversion-tags.js +52 -0
  135. package/cjs/models/appointment-deckversion-tags.js.map +1 -0
  136. package/cjs/models/appointment-duplicate.js +8 -3
  137. package/cjs/models/appointment-duplicate.js.map +1 -1
  138. package/cjs/models/appointment-editor.js +2 -2
  139. package/cjs/models/appointment-editor.js.map +1 -1
  140. package/cjs/models/appointment-section-tags.js +52 -0
  141. package/cjs/models/appointment-section-tags.js.map +1 -0
  142. package/cjs/models/appointment-slide-tags.js +52 -0
  143. package/cjs/models/appointment-slide-tags.js.map +1 -0
  144. package/cjs/models/appointment-stats.js +2 -2
  145. package/cjs/models/appointment-stats.js.map +1 -1
  146. package/cjs/models/appointment-tags.js +48 -0
  147. package/cjs/models/appointment-tags.js.map +1 -0
  148. package/cjs/models/appointment-viewing.js +2 -2
  149. package/cjs/models/appointment-viewing.js.map +1 -1
  150. package/cjs/models/appointment.js +16 -7
  151. package/cjs/models/appointment.js.map +1 -1
  152. package/cjs/models/asset.js +2 -2
  153. package/cjs/models/asset.js.map +1 -1
  154. package/cjs/models/auto-adjunct-key-check.js +2 -2
  155. package/cjs/models/auto-adjunct-key-check.js.map +1 -1
  156. package/cjs/models/auto-adjunct.js +2 -2
  157. package/cjs/models/auto-adjunct.js.map +1 -1
  158. package/cjs/models/base.js +25 -36
  159. package/cjs/models/base.js.map +1 -1
  160. package/cjs/models/base.spec.js +45 -45
  161. package/cjs/models/base.spec.js.map +1 -1
  162. package/cjs/models/choicelist.js.map +1 -1
  163. package/cjs/models/cms-val.js.map +1 -1
  164. package/cjs/models/contact.js +2 -2
  165. package/cjs/models/contact.js.map +1 -1
  166. package/cjs/models/customer.js +2 -2
  167. package/cjs/models/customer.js.map +1 -1
  168. package/cjs/models/deck-note.js +2 -2
  169. package/cjs/models/deck-note.js.map +1 -1
  170. package/cjs/models/deck-tags.js +61 -0
  171. package/cjs/models/deck-tags.js.map +1 -0
  172. package/cjs/models/deck-version.js +5 -3
  173. package/cjs/models/deck-version.js.map +1 -1
  174. package/cjs/models/deck.js +6 -3
  175. package/cjs/models/deck.js.map +1 -1
  176. package/cjs/models/dispatch-preview.js +3 -3
  177. package/cjs/models/dispatch-preview.js.map +1 -1
  178. package/cjs/models/dispatch.js +2 -2
  179. package/cjs/models/dispatch.js.map +1 -1
  180. package/cjs/models/envs.js.map +1 -1
  181. package/cjs/models/event-object.js +2 -2
  182. package/cjs/models/event-object.js.map +1 -1
  183. package/cjs/models/event.js +2 -2
  184. package/cjs/models/event.js.map +1 -1
  185. package/cjs/models/feed-data.js +2 -2
  186. package/cjs/models/feed-data.js.map +1 -1
  187. package/cjs/models/file.js +2 -2
  188. package/cjs/models/file.js.map +1 -1
  189. package/cjs/models/group.js +2 -2
  190. package/cjs/models/group.js.map +1 -1
  191. package/cjs/models/handover.js +2 -2
  192. package/cjs/models/handover.js.map +1 -1
  193. package/cjs/models/hosted-preso.js +2 -2
  194. package/cjs/models/hosted-preso.js.map +1 -1
  195. package/cjs/models/image.js +2 -2
  196. package/cjs/models/image.js.map +1 -1
  197. package/cjs/models/location.js +2 -2
  198. package/cjs/models/location.js.map +1 -1
  199. package/cjs/models/manifest-json.js +83 -58
  200. package/cjs/models/manifest-json.js.map +1 -1
  201. package/cjs/models/onshare.js +2 -2
  202. package/cjs/models/onshare.js.map +1 -1
  203. package/cjs/models/opportunity.js +2 -2
  204. package/cjs/models/opportunity.js.map +1 -1
  205. package/cjs/models/pack-diff.js +2 -2
  206. package/cjs/models/pack-diff.js.map +1 -1
  207. package/cjs/models/pack.js +2 -2
  208. package/cjs/models/pack.js.map +1 -1
  209. package/cjs/models/preset.js +22 -2
  210. package/cjs/models/preset.js.map +1 -1
  211. package/cjs/models/refresh-request.js +2 -2
  212. package/cjs/models/refresh-request.js.map +1 -1
  213. package/cjs/models/room.js +2 -2
  214. package/cjs/models/room.js.map +1 -1
  215. package/cjs/models/salesforce-lookup.js +2 -2
  216. package/cjs/models/salesforce-lookup.js.map +1 -1
  217. package/cjs/models/section-selection.js +2 -2
  218. package/cjs/models/section-selection.js.map +1 -1
  219. package/cjs/models/section.js +2 -2
  220. package/cjs/models/section.js.map +1 -1
  221. package/cjs/models/slide-selection.js +2 -2
  222. package/cjs/models/slide-selection.js.map +1 -1
  223. package/cjs/models/slide.js +2 -2
  224. package/cjs/models/slide.js.map +1 -1
  225. package/cjs/models/snapshot.js +2 -2
  226. package/cjs/models/snapshot.js.map +1 -1
  227. package/cjs/models/sub-slide.js +2 -2
  228. package/cjs/models/sub-slide.js.map +1 -1
  229. package/cjs/models/support-ticket.js +2 -2
  230. package/cjs/models/support-ticket.js.map +1 -1
  231. package/cjs/models/tag.js +54 -0
  232. package/cjs/models/tag.js.map +1 -0
  233. package/cjs/models/team.js +2 -2
  234. package/cjs/models/team.js.map +1 -1
  235. package/cjs/models/template.js +2 -2
  236. package/cjs/models/template.js.map +1 -1
  237. package/cjs/models/tenancy.js +2 -2
  238. package/cjs/models/tenancy.js.map +1 -1
  239. package/cjs/models/timing-log.js +20 -41
  240. package/cjs/models/timing-log.js.map +1 -1
  241. package/cjs/models/timing-log.spec.js +18 -86
  242. package/cjs/models/timing-log.spec.js.map +1 -1
  243. package/cjs/models/transcribe-socket.js +2 -2
  244. package/cjs/models/transcribe-socket.js.map +1 -1
  245. package/cjs/models/upload.js +2 -2
  246. package/cjs/models/upload.js.map +1 -1
  247. package/cjs/models/user.js +4 -3
  248. package/cjs/models/user.js.map +1 -1
  249. package/cjs/models/user.spec.js +10 -8
  250. package/cjs/models/user.spec.js.map +1 -1
  251. package/cjs/models.js +148 -0
  252. package/cjs/models.js.map +1 -1
  253. package/cjs/presentation/appointment-presentation.js +13 -5
  254. package/cjs/presentation/appointment-presentation.js.map +1 -1
  255. package/cjs/presentation/base-presentation-collection.js.map +1 -1
  256. package/cjs/presentation/base-presentation-model.js +65 -0
  257. package/cjs/presentation/base-presentation-model.js.map +1 -1
  258. package/cjs/presentation/base-presentation-model.spec.js +87 -0
  259. package/cjs/presentation/base-presentation-model.spec.js.map +1 -1
  260. package/cjs/presentation/presentation-deck.js +31 -20
  261. package/cjs/presentation/presentation-deck.js.map +1 -1
  262. package/cjs/presentation/presentation-deck.spec.js +15 -13
  263. package/cjs/presentation/presentation-deck.spec.js.map +1 -1
  264. package/cjs/presentation/presentation-decks.js +2 -2
  265. package/cjs/presentation/presentation-decks.js.map +1 -1
  266. package/cjs/presentation/presentation-section.js +36 -17
  267. package/cjs/presentation/presentation-section.js.map +1 -1
  268. package/cjs/presentation/presentation-section.spec.js +418 -0
  269. package/cjs/presentation/presentation-section.spec.js.map +1 -0
  270. package/cjs/presentation/presentation-sections.js +2 -2
  271. package/cjs/presentation/presentation-sections.js.map +1 -1
  272. package/cjs/presentation/presentation-slide.js +35 -18
  273. package/cjs/presentation/presentation-slide.js.map +1 -1
  274. package/cjs/presentation/presentation-slide.spec.js +294 -0
  275. package/cjs/presentation/presentation-slide.spec.js.map +1 -0
  276. package/cjs/presentation/presentation-slides.js +2 -2
  277. package/cjs/presentation/presentation-slides.js.map +1 -1
  278. package/cjs/presentation/presentation-subslide.js +11 -7
  279. package/cjs/presentation/presentation-subslide.js.map +1 -1
  280. package/cjs/presentation/presentation-subslide.spec.js +68 -20
  281. package/cjs/presentation/presentation-subslide.spec.js.map +1 -1
  282. package/cjs/presentation/presentation-subslides.js +2 -2
  283. package/cjs/presentation/presentation-subslides.js.map +1 -1
  284. package/cjs/presentation/presentation.js +19 -9
  285. package/cjs/presentation/presentation.js.map +1 -1
  286. package/cjs/presentation.js +10 -0
  287. package/cjs/presentation.js.map +1 -1
  288. package/cjs/state-register.js +11 -1
  289. package/cjs/state-register.js.map +1 -1
  290. package/cjs/sync.js +7 -7
  291. package/cjs/sync.js.map +1 -1
  292. package/cjs/utils.js +7 -7
  293. package/cjs/utils.js.map +1 -1
  294. package/cjs/utils.spec.js.map +1 -1
  295. package/config/rush-project.json +11 -0
  296. package/index.js +0 -1
  297. package/jest.config.js +4 -4
  298. package/package.json +19 -59
  299. package/setup-tests.js +2 -1
  300. package/src/api.js +3 -3
  301. package/src/api.spec.js +3 -4
  302. package/src/auth.js +6 -7
  303. package/src/auth.spec.js +3 -4
  304. package/src/collections/activity.js +5 -6
  305. package/src/collections/adjunct-sections.js +4 -4
  306. package/src/collections/adjunct-slides.js +4 -4
  307. package/src/collections/adjunct-sub-slides.js +2 -2
  308. package/src/collections/appointment-adjunct-tags.js +18 -0
  309. package/src/collections/appointment-deckversion-tags.js +21 -0
  310. package/src/collections/appointment-duplicates.js +2 -2
  311. package/src/collections/appointment-editors.js +2 -2
  312. package/src/collections/appointment-section-tags.js +18 -0
  313. package/src/collections/appointment-slide-tags.js +18 -0
  314. package/src/collections/appointment-tags.js +136 -0
  315. package/src/collections/appointments.js +18 -23
  316. package/src/collections/assets.js +2 -2
  317. package/src/collections/auto-adjuncts.js +5 -5
  318. package/src/collections/base.js +88 -18
  319. package/src/collections/base.spec.js +100 -8
  320. package/src/collections/cms-vals.js +3 -3
  321. package/src/collections/contacts.js +2 -2
  322. package/src/collections/created-assets.js +2 -2
  323. package/src/collections/customers.js +2 -2
  324. package/src/collections/deck-notes.js +2 -2
  325. package/src/collections/deck-versions.js +18 -15
  326. package/src/collections/decks.js +2 -2
  327. package/src/collections/deleted-assets.js +2 -2
  328. package/src/collections/dispatches.js +8 -13
  329. package/src/collections/event-objects.js +2 -2
  330. package/src/collections/events.js +2 -2
  331. package/src/collections/groups.js +2 -2
  332. package/src/collections/images.js +2 -2
  333. package/src/collections/locations.js +2 -2
  334. package/src/collections/opportunities.js +2 -2
  335. package/src/collections/pack-diffs.js +2 -2
  336. package/src/collections/packs.js +2 -2
  337. package/src/collections/presets.js +2 -2
  338. package/src/collections/section-selections.js +4 -4
  339. package/src/collections/sections.js +2 -2
  340. package/src/collections/slide-selections.js +4 -4
  341. package/src/collections/slides.js +2 -2
  342. package/src/collections/snapshots.js +2 -2
  343. package/src/collections/sub-slides.js +2 -2
  344. package/src/collections/tags.js +18 -0
  345. package/src/collections/teams.js +2 -2
  346. package/src/collections/templates.js +2 -2
  347. package/src/collections/uploads.js +2 -2
  348. package/src/collections/users.js +2 -2
  349. package/src/collections.js +6 -0
  350. package/src/index.js +1 -4
  351. package/src/middleware.js +1 -1
  352. package/src/middlewares/json.js +2 -2
  353. package/src/middlewares/redirect.js +1 -2
  354. package/src/models/activity-item.js +6 -6
  355. package/src/models/adjunct-section.js +5 -5
  356. package/src/models/adjunct-slide.js +5 -5
  357. package/src/models/adjunct-sub-slide.js +5 -5
  358. package/src/models/adjunct.js +4 -4
  359. package/src/models/api.js +1 -1
  360. package/src/models/appointment-adjunct-tags.js +41 -0
  361. package/src/models/appointment-deckversion-tags.js +41 -0
  362. package/src/models/appointment-duplicate.js +7 -7
  363. package/src/models/appointment-editor.js +6 -6
  364. package/src/models/appointment-section-tags.js +41 -0
  365. package/src/models/appointment-slide-tags.js +41 -0
  366. package/src/models/appointment-stats.js +5 -5
  367. package/src/models/appointment-tags.js +39 -0
  368. package/src/models/appointment-viewing.js +3 -3
  369. package/src/models/appointment.js +35 -29
  370. package/src/models/asset.js +5 -5
  371. package/src/models/auto-adjunct-key-check.js +5 -5
  372. package/src/models/auto-adjunct.js +4 -4
  373. package/src/models/base.js +36 -37
  374. package/src/models/base.spec.js +61 -62
  375. package/src/models/choicelist.js +2 -2
  376. package/src/models/cms-val.js +3 -3
  377. package/src/models/contact.js +9 -9
  378. package/src/models/customer.js +13 -13
  379. package/src/models/deck-note.js +4 -4
  380. package/src/models/deck-tags.js +52 -0
  381. package/src/models/deck-version.js +9 -8
  382. package/src/models/deck.js +8 -6
  383. package/src/models/dispatch-preview.js +6 -7
  384. package/src/models/dispatch.js +6 -7
  385. package/src/models/envs.js +1 -1
  386. package/src/models/event-object.js +6 -6
  387. package/src/models/event.js +7 -7
  388. package/src/models/feed-data.js +5 -5
  389. package/src/models/file.js +4 -4
  390. package/src/models/group.js +3 -3
  391. package/src/models/handover.js +5 -5
  392. package/src/models/hosted-preso.js +5 -5
  393. package/src/models/image.js +4 -4
  394. package/src/models/location.js +5 -5
  395. package/src/models/manifest-json.js +77 -30
  396. package/src/models/onshare.js +5 -5
  397. package/src/models/opportunity.js +5 -5
  398. package/src/models/pack-diff.js +5 -5
  399. package/src/models/pack.js +4 -4
  400. package/src/models/preset.js +24 -5
  401. package/src/models/refresh-request.js +6 -6
  402. package/src/models/room.js +3 -3
  403. package/src/models/salesforce-lookup.js +3 -3
  404. package/src/models/section-selection.js +6 -6
  405. package/src/models/section.js +7 -7
  406. package/src/models/slide-selection.js +6 -6
  407. package/src/models/slide.js +7 -7
  408. package/src/models/snapshot.js +5 -5
  409. package/src/models/sub-slide.js +5 -5
  410. package/src/models/support-ticket.js +4 -4
  411. package/src/models/tag.js +42 -0
  412. package/src/models/team.js +4 -4
  413. package/src/models/template.js +4 -4
  414. package/src/models/tenancy.js +5 -5
  415. package/src/models/timing-log.js +18 -18
  416. package/src/models/timing-log.spec.js +28 -29
  417. package/src/models/transcribe-socket.js +3 -3
  418. package/src/models/upload.js +3 -3
  419. package/src/models/user.js +19 -17
  420. package/src/models/user.spec.js +2 -2
  421. package/src/models.js +7 -0
  422. package/src/presentation/appointment-presentation.js +14 -10
  423. package/src/presentation/base-presentation-model.js +67 -5
  424. package/src/presentation/base-presentation-model.spec.js +114 -22
  425. package/src/presentation/presentation-deck.js +54 -52
  426. package/src/presentation/presentation-deck.spec.js +26 -27
  427. package/src/presentation/presentation-decks.js +2 -2
  428. package/src/presentation/presentation-section.js +62 -48
  429. package/src/presentation/presentation-section.spec.js +363 -0
  430. package/src/presentation/presentation-sections.js +2 -2
  431. package/src/presentation/presentation-slide.js +51 -36
  432. package/src/presentation/presentation-slide.spec.js +250 -0
  433. package/src/presentation/presentation-slides.js +2 -2
  434. package/src/presentation/presentation-subslide.js +24 -17
  435. package/src/presentation/presentation-subslide.spec.js +40 -12
  436. package/src/presentation/presentation-subslides.js +2 -2
  437. package/src/presentation/presentation.js +27 -15
  438. package/src/state-register.js +7 -0
  439. package/src/sync.js +21 -23
  440. package/src/utils.js +8 -7
  441. package/src/utils.spec.js +15 -15
  442. package/.editorconfig +0 -9
  443. package/.eslintrc +0 -25
  444. package/.prettierrc.js +0 -3
  445. package/jsdoc.json +0 -12
  446. package/yarn.lock +0 -8099
@@ -1,10 +1,5 @@
1
1
  import "./presentation-slides.js";
2
2
 
3
- import url2 from "url";
4
-
5
- import _ from "lodash";
6
-
7
- import { getAssetRoot } from "../index.js";
8
3
  import {
9
4
  AdjunctSectionModel,
10
5
  AdjunctSlideModel,
@@ -12,11 +7,15 @@ import {
12
7
  DeckVersionModel,
13
8
  SectionModel,
14
9
  SlideModel,
15
- TemplateModel
10
+ TemplateModel,
16
11
  } from "../models.js";
17
- import { register } from "../state-register.js";
12
+
18
13
  import { BasePresentationModel } from "./base-presentation-model.js";
19
14
  import { PresentationSlide } from "./presentation-slide.js";
15
+ import _ from "lodash";
16
+ import { getAssetRoot } from "../index.js";
17
+ import { register } from "../state-register.js";
18
+ import url2 from "url";
20
19
 
21
20
  /**
22
21
  * @constructor
@@ -57,23 +56,23 @@ export const PresentationSection = BasePresentationModel.extend(
57
56
  adjunctID: "number",
58
57
  autoAdjunctID: {
59
58
  type: "number",
60
- default: null
59
+ default: null,
61
60
  },
62
61
  templateID: {
63
62
  type: "number",
64
- default: null
63
+ default: null,
65
64
  },
66
65
  createdByAutoAdjunct: {
67
66
  type: "boolean",
68
- default: false
67
+ default: false,
69
68
  },
70
69
  createdByTemplate: {
71
70
  type: "boolean",
72
- default: false
71
+ default: false,
73
72
  },
74
73
  adjunctSlideLimit: {
75
74
  type: "number",
76
- default: 0
75
+ default: 0,
77
76
  },
78
77
  html: "string",
79
78
  css: "string",
@@ -94,22 +93,22 @@ export const PresentationSection = BasePresentationModel.extend(
94
93
  impostor: "boolean",
95
94
  isWelcome: {
96
95
  type: "boolean",
97
- default: () => false
98
- }
96
+ default: () => false,
97
+ },
99
98
  },
100
99
 
101
100
  /**
102
101
  * @property {models.AdjunctModel} adjunct
103
102
  */
104
103
  children: {
105
- adjunct: "AdjunctModel"
104
+ adjunct: "AdjunctModel",
106
105
  },
107
106
 
108
107
  /**
109
108
  * @property {presentation.PresentationSlideCollection} slides
110
109
  */
111
110
  collections: {
112
- slides: "PresentationSlideCollection"
111
+ slides: "PresentationSlideCollection",
113
112
  },
114
113
 
115
114
  addSlides(slides, options = {}) {
@@ -119,7 +118,7 @@ export const PresentationSection = BasePresentationModel.extend(
119
118
  choicelist: null,
120
119
  getUniqueAdjunctID: () => {
121
120
  return parseInt(_.uniqueId(), 10);
122
- }
121
+ },
123
122
  });
124
123
 
125
124
  if (this.createdByTemplate) {
@@ -127,7 +126,7 @@ export const PresentationSection = BasePresentationModel.extend(
127
126
  }
128
127
 
129
128
  this.slides.add(
130
- slides.map(slide => {
129
+ slides.map((slide) => {
131
130
  if (slide.modelName === "adjunctslides") {
132
131
  return PresentationSlide.createFromAdjunctSlide(
133
132
  slide,
@@ -154,7 +153,7 @@ export const PresentationSection = BasePresentationModel.extend(
154
153
  }
155
154
  }
156
155
  return this._url;
157
- }
156
+ },
158
157
  }
159
158
  );
160
159
 
@@ -165,11 +164,11 @@ export const PresentationSection = BasePresentationModel.extend(
165
164
  * @param {object} [options]
166
165
  * @returns {presentation.PresentationSection}
167
166
  */
168
- PresentationSection.createFromSection = function(sectionModel, options = {}) {
167
+ PresentationSection.createFromSection = function (sectionModel, options = {}) {
169
168
  _.defaults(options, {
170
169
  rootAssetPath: null,
171
170
  selections: null,
172
- choicelist: null
171
+ choicelist: null,
173
172
  });
174
173
 
175
174
  let html;
@@ -193,6 +192,8 @@ PresentationSection.createFromSection = function(sectionModel, options = {}) {
193
192
  options
194
193
  );
195
194
 
195
+ const tags = PresentationSection.getTags(sectionModel, options);
196
+
196
197
  const section = new PresentationSection({
197
198
  id: sectionModel.id,
198
199
  adjunctID: null,
@@ -205,12 +206,12 @@ PresentationSection.createFromSection = function(sectionModel, options = {}) {
205
206
  impostor: false,
206
207
  title: sectionModel.title,
207
208
  deckversion: sectionModel.deckversion.id,
208
- editable: sectionModel.tags.indexOf("editable") > -1,
209
- tags: sectionModel.tags,
209
+ editable: tags.indexOf("editable") > -1,
210
+ tags,
210
211
  index: config.sequence,
211
212
  sequence: config.sequence,
212
213
  visible: config.visible,
213
- selectionID: config.selectionID
214
+ selectionID: config.selectionID,
214
215
  });
215
216
 
216
217
  return section;
@@ -224,10 +225,10 @@ PresentationSection.createFromSection = function(sectionModel, options = {}) {
224
225
  * @param {object} [options]
225
226
  * @returns {presentation.PresentationSection}
226
227
  */
227
- PresentationSection.createFromAdjunctSection = function(
228
+ PresentationSection.createFromAdjunctSection = function (
228
229
  adjunctSectionModel,
229
230
  deckVersionModel,
230
- options
231
+ options = {}
231
232
  ) {
232
233
  _.defaults(options, {
233
234
  rootAssetPath: null,
@@ -235,7 +236,7 @@ PresentationSection.createFromAdjunctSection = function(
235
236
  choicelist: null,
236
237
  getUniqueAdjunctID: () => {
237
238
  return parseInt(_.uniqueId(), 10);
238
- }
239
+ },
239
240
  });
240
241
 
241
242
  const keyID =
@@ -250,6 +251,7 @@ PresentationSection.createFromAdjunctSection = function(
250
251
  key = adjunctSectionModel.key;
251
252
  } else if (keyID) {
252
253
  key = `adjunct-${keyID}`;
254
+ adjunctSectionModel.key = key;
253
255
  }
254
256
 
255
257
  const config = PresentationSection.getVisibilityAndSequence(
@@ -257,6 +259,8 @@ PresentationSection.createFromAdjunctSection = function(
257
259
  options
258
260
  );
259
261
 
262
+ const tags = PresentationSection.getTags(adjunctSectionModel, options);
263
+
260
264
  const section = new PresentationSection({
261
265
  id: options.getUniqueAdjunctID(),
262
266
  adjunct: adjunctSectionModel.adjunct
@@ -271,17 +275,15 @@ PresentationSection.createFromAdjunctSection = function(
271
275
  custom: !adjunctSectionModel.created_by_autoadjunct,
272
276
  createdByAutoAdjunct: adjunctSectionModel.created_by_autoadjunct,
273
277
  createdByTemplate: Boolean(adjunctSectionModel.template),
274
- impostor:
275
- adjunctSectionModel.tags &&
276
- adjunctSectionModel.tags.indexOf("section-header") > -1,
277
- tags: adjunctSectionModel.tags,
278
+ impostor: tags.indexOf("section-header") > -1,
279
+ tags: tags,
278
280
  temporary: adjunctSectionModel.created_by_autoadjunct,
279
281
  title: adjunctSectionModel.title,
280
282
  deckversion: deckVersionModel.id,
281
283
  editable: false,
282
284
  index: config.sequence,
283
285
  sequence: config.sequence,
284
- visible: config.visible
286
+ visible: config.visible,
285
287
  });
286
288
 
287
289
  if (adjunctSectionModel.template) {
@@ -314,15 +316,15 @@ PresentationSection.createFromAdjunctSection = function(
314
316
  return section;
315
317
  };
316
318
 
317
- PresentationSection.createFromImpostorSection = function(
319
+ PresentationSection.createFromImpostorSection = function (
318
320
  slideModel,
319
321
  DeckVersionModel,
320
- options
322
+ options = {}
321
323
  ) {
322
324
  _.defaults(options, {
323
325
  rootAssetPath: null,
324
326
  selections: null,
325
- choicelist: null
327
+ choicelist: null,
326
328
  });
327
329
 
328
330
  let html;
@@ -348,6 +350,8 @@ PresentationSection.createFromImpostorSection = function(
348
350
  options
349
351
  );
350
352
 
353
+ const tags = PresentationSection.getTags(slideModel, options);
354
+
351
355
  const section = new PresentationSection({
352
356
  id: slideModel.id,
353
357
  adjunctID: null,
@@ -360,18 +364,18 @@ PresentationSection.createFromImpostorSection = function(
360
364
  impostor: true,
361
365
  title: slideModel.title,
362
366
  deckversion: slideModel.section.deckversion.id,
363
- editable: slideModel.tags.indexOf("editable") > -1,
364
- tags: slideModel.tags,
367
+ editable: tags.indexOf("editable") > -1,
368
+ tags,
365
369
  index: config.sequence,
366
370
  sequence: config.sequence,
367
371
  visible: config.visible,
368
- selectionID: config.selectionID
372
+ selectionID: config.selectionID,
369
373
  });
370
374
 
371
375
  return section;
372
376
  };
373
377
 
374
- PresentationSection.createFromManifestJSON = function(
378
+ PresentationSection.createFromManifestJSON = function (
375
379
  manifestJSON,
376
380
  sectionKey,
377
381
  index
@@ -388,10 +392,10 @@ PresentationSection.createFromManifestJSON = function(
388
392
  custom: false,
389
393
  visible: true,
390
394
  deckversion: 1,
391
- tags: manifestJSON.tags[sectionKey] || null
395
+ tags: manifestJSON.tags[sectionKey] || null,
392
396
  });
393
397
 
394
- const slideKeys = Object.keys(manifestJSON.titles).filter(slideKey => {
398
+ const slideKeys = Object.keys(manifestJSON.titles).filter((slideKey) => {
395
399
  return slideKey.startsWith(sectionKey) && slideKey.split("/").length > 1;
396
400
  });
397
401
 
@@ -409,7 +413,7 @@ PresentationSection.createFromManifestJSON = function(
409
413
  return section;
410
414
  };
411
415
 
412
- PresentationSection.createFromManifestImpostor = function(section, index) {
416
+ PresentationSection.createFromManifestImpostor = function (section, index) {
413
417
  const slides = section.slides || [];
414
418
  section.slides = null;
415
419
 
@@ -420,7 +424,7 @@ PresentationSection.createFromManifestImpostor = function(section, index) {
420
424
  visible: true,
421
425
  deckversion: 1,
422
426
  index,
423
- ...section
427
+ ...section,
424
428
  });
425
429
 
426
430
  slides.forEach((slide, index) => {
@@ -436,7 +440,7 @@ PresentationSection.createFromManifestImpostor = function(section, index) {
436
440
  return presentationSection;
437
441
  };
438
442
 
439
- PresentationSection.createFromAutoAdjunct = function(model, opts) {
443
+ PresentationSection.createFromAutoAdjunct = function (model, opts = {}) {
440
444
  const requiredKeys = ["index", "deckversionID"];
441
445
  for (const key of requiredKeys) {
442
446
  if (typeof opts[key] === "undefined") {
@@ -450,9 +454,18 @@ PresentationSection.createFromAutoAdjunct = function(model, opts) {
450
454
  index: -1,
451
455
  deckversionID: -1,
452
456
  sequence: opts.index,
453
- impostor: false
457
+ impostor: false,
454
458
  });
455
459
 
460
+ const tags = PresentationSection.getTags(
461
+ {
462
+ isAutoAdjunct: true,
463
+ key: model.key,
464
+ tags: model.tags,
465
+ },
466
+ options
467
+ );
468
+
456
469
  const autoAdjunct = new AutoAdjunctModel(model);
457
470
 
458
471
  const autoAdjunctSection = new PresentationSection({
@@ -473,7 +486,8 @@ PresentationSection.createFromAutoAdjunct = function(model, opts) {
473
486
  visible: options.visible,
474
487
  allowConvert: options.allowConvert,
475
488
  deckversion: options.deckversionID,
476
- impostor: options.impostor
489
+ impostor: options.impostor,
490
+ tags,
477
491
  });
478
492
 
479
493
  if (autoAdjunct.template) {
@@ -488,7 +502,7 @@ PresentationSection.createFromAutoAdjunct = function(model, opts) {
488
502
  return autoAdjunctSection;
489
503
  };
490
504
 
491
- PresentationSection.createFromTemplate = function(template, index, minID = 0) {
505
+ PresentationSection.createFromTemplate = function (template, index, minID = 0) {
492
506
  const templateModel = new TemplateModel(template);
493
507
 
494
508
  const deckversion = new DeckVersionModel(templateModel.deckversion);
@@ -510,7 +524,7 @@ PresentationSection.createFromTemplate = function(template, index, minID = 0) {
510
524
  // of a list of sections
511
525
  sequence: 9000 + templateModel.sequence,
512
526
  createdByTemplate: true,
513
- index
527
+ index,
514
528
  });
515
529
 
516
530
  return presentationSection;
@@ -0,0 +1,363 @@
1
+ import { AdjunctSectionModel } from "../models/adjunct-section";
2
+ import { AutoAdjunctModel } from "../models/auto-adjunct";
3
+ import { PresentationSection } from "./presentation-section";
4
+ import { SectionModel } from "../models/section";
5
+ import { SlideModel } from "../models/slide";
6
+
7
+ describe("#createFromSection", () => {
8
+ const getSectionJSON = () => {
9
+ return {
10
+ adjunctslide_limit: 0,
11
+ created_date: "2021-07-19T01:17:59.522119Z",
12
+ deckversion: "https://staging-test.salespreso.com/api/deckversions/408/",
13
+ description: "",
14
+ enabled: true,
15
+ id: 1728,
16
+ image_128:
17
+ "https://staging-test-cdn.salespreso.com/media/CACHE/images/section/123/456.jpg",
18
+ image_256:
19
+ "https://staging-test-cdn.salespreso.com/media/CACHE/images/section/123/456.jpg",
20
+ image_512:
21
+ "https://staging-test-cdn.salespreso.com/media/CACHE/images/section/123/456.jpg",
22
+ index_asset: {
23
+ created_date: "2021-07-19T01:17:58.068483Z",
24
+ data: "sections/agenda/index.html",
25
+ hash_algorithm: "sha-256",
26
+ hash_digest:
27
+ "f84e1e0b43f4b25168e4a8997b11a2c1c2848376b128b2d72ba5bd4f44c17dcc",
28
+ id: 148115,
29
+ modified_date: "2021-07-19T01:17:58.068507Z",
30
+ orig_path: "sections/agenda",
31
+ pack: "https://staging-test.salespreso.com/api/packs/409/",
32
+ url: "https://staging-test-cdn.salespreso.com/media/pack/409/assets/sections/agenda/index.html",
33
+ },
34
+ key: "agenda",
35
+ modified_date: "2021-07-19T01:20:43.815965Z",
36
+ namespaced_key: "agenda",
37
+ sequence: 0,
38
+ slide_set: [],
39
+ tags: [],
40
+ title: "Agenda",
41
+ url: "https://staging-test.salespreso.com/api/sections/1728/",
42
+ };
43
+ };
44
+
45
+ it("should create a presentation section", async () => {
46
+ const section = new SectionModel(getSectionJSON());
47
+ const presentationSection = PresentationSection.createFromSection(section);
48
+
49
+ const expected = {
50
+ adjunctID: null,
51
+ adjunctSlideLimit: 0,
52
+ autoAdjunctID: null,
53
+ createdByAutoAdjunct: false,
54
+ createdByTemplate: false,
55
+ css: "https://staging-test-cdn.salespreso.com/media/pack/409/assets/sections/agenda/slide.css",
56
+ custom: false,
57
+ deckversion: 408,
58
+ editable: false,
59
+ html: "https://staging-test-cdn.salespreso.com/media/pack/409/assets/sections/agenda/index.html",
60
+ id: 1728,
61
+ impostor: false,
62
+ index: 0,
63
+ isWelcome: false,
64
+ key: "agenda",
65
+ selectionID: null,
66
+ sequence: 0,
67
+ slides: [],
68
+ tags: [],
69
+ templateID: null,
70
+ thumbnail:
71
+ "https://staging-test-cdn.salespreso.com/media/CACHE/images/section/123/456.jpg",
72
+ title: "Agenda",
73
+ url: "/api/sections/1728/",
74
+ visible: true,
75
+ };
76
+
77
+ expect(presentationSection.toJSON()).toEqual(expected);
78
+ });
79
+
80
+ it("should use deckTags when available", async () => {
81
+ const section = new SectionModel(getSectionJSON());
82
+ const options = {
83
+ deckTags: { agenda: ["section-tag"] },
84
+ };
85
+
86
+ const presentationSection = PresentationSection.createFromSection(
87
+ section,
88
+ options
89
+ );
90
+
91
+ expect(presentationSection.tags).toEqual(["section-tag"]);
92
+ });
93
+ });
94
+
95
+ describe("#createFromAdjunctSection", () => {
96
+ const getAdjunctSectionJSON = () => {
97
+ return {
98
+ adjunct: "https://staging-test.salespreso.com/api/adjuncts/7470/",
99
+ appointment: "https://staging-test.salespreso.com/api/appointments/2422/",
100
+ created_by_autoadjunct: true,
101
+ created_date: "2021-09-20T01:57:55.125224Z",
102
+ creator_autoadjunct:
103
+ "https://staging-test.salespreso.com/api/autoadjuncts/545/",
104
+ deckversion: "https://staging-test.salespreso.com/api/deckversions/408/",
105
+ deleted: false,
106
+ enabled: true,
107
+ html_content:
108
+ '<img src="https://staging-test-cdn.salespreso.com/media/autoadjunct/123.png">',
109
+ id: 1737,
110
+ image_128:
111
+ "https://staging-test-cdn.salespreso.com/media/CACHE/images/autoadjunct/123/456.jpg",
112
+ image_256:
113
+ "https://staging-test-cdn.salespreso.com/media/CACHE/images/autoadjunct/123/456.jpg",
114
+ image_512:
115
+ "https://staging-test-cdn.salespreso.com/media/CACHE/images/autoadjunct/123/456.jpg",
116
+ image_1024:
117
+ "https://staging-test-cdn.salespreso.com/media/CACHE/images/autoadjunct/123/456.png",
118
+ image_original:
119
+ "https://staging-test-cdn.salespreso.com/media/autoadjunct/123.png",
120
+ modified_date: "2021-09-20T01:57:55.125229Z",
121
+ sequence: 1,
122
+ tags: [],
123
+ template: null,
124
+ title: "Five",
125
+ url: "https://staging-test.salespreso.com/api/adjunctsections/1737/",
126
+ };
127
+ };
128
+
129
+ it("should create a presentation section", async () => {
130
+ const adjunctSection = new AdjunctSectionModel(getAdjunctSectionJSON());
131
+ const presentationSection = PresentationSection.createFromAdjunctSection(
132
+ adjunctSection,
133
+ { id: 1 }
134
+ );
135
+
136
+ const expected = {
137
+ adjunct: {
138
+ url: "https://staging-test.salespreso.com/api/adjuncts/7470/",
139
+ },
140
+ adjunctID: 1737,
141
+ adjunctSlideLimit: 0,
142
+ autoAdjunctID: 545,
143
+ createdByAutoAdjunct: true,
144
+ createdByTemplate: false,
145
+ custom: false,
146
+ deckversion: 1,
147
+ editable: false,
148
+ id: 1,
149
+ image:
150
+ "https://staging-test-cdn.salespreso.com/media/autoadjunct/123.png",
151
+ impostor: false,
152
+ index: 1,
153
+ isWelcome: false,
154
+ key: "adjunct-1737",
155
+ sequence: 1,
156
+ slides: [],
157
+ tags: [],
158
+ templateID: null,
159
+ temporary: true,
160
+ thumbnail:
161
+ "https://staging-test-cdn.salespreso.com/media/CACHE/images/autoadjunct/123/456.jpg",
162
+ title: "Five",
163
+ url: "/api/adjunctsections/1737/",
164
+ visible: true,
165
+ };
166
+
167
+ expect(presentationSection.toJSON()).toEqual(expected);
168
+ });
169
+
170
+ it("should use deckTags when available", async () => {
171
+ const adjunctSection = new AdjunctSectionModel(getAdjunctSectionJSON());
172
+ const options = {
173
+ deckTags: { "adjunct-1737": ["adjunctsection-tag"] },
174
+ };
175
+ const presentationSection = PresentationSection.createFromAdjunctSection(
176
+ adjunctSection,
177
+ { id: 1 },
178
+ options
179
+ );
180
+
181
+ expect(presentationSection.tags).toEqual(["adjunctsection-tag"]);
182
+ });
183
+ });
184
+
185
+ describe("#createFromImpostorSection", () => {
186
+ const getImpostorSectionJSON = () => {
187
+ return {
188
+ created_date: "2021-09-20T02:59:06.968285Z",
189
+ description: "",
190
+ enabled: true,
191
+ id: 23898,
192
+ image_128:
193
+ "https://staging-test-cdn.salespreso.com/media/CACHE/images/slide/123/456.jpg",
194
+ image_256:
195
+ "https://staging-test-cdn.salespreso.com/media/CACHE/images/slide/123/456.jpg",
196
+ image_512:
197
+ "https://staging-test-cdn.salespreso.com/media/CACHE/images/slide/123/456.jpg",
198
+ index_asset: {
199
+ created_date: "2021-09-20T02:59:02.361498Z",
200
+ data: "sections/test-deck/slides/agenda/index.html",
201
+ hash_algorithm: "sha-256",
202
+ hash_digest:
203
+ "b77283717f1a99bce5b8aea67e007f11aad06473f5fe26412c15e707f8758343",
204
+ id: 153400,
205
+ modified_date: "2021-09-20T02:59:02.361528Z",
206
+ orig_path: "sections/test-deck/slides/agenda",
207
+ pack: "https://staging-test.salespreso.com/api/packs/427/",
208
+ url: "https://staging-test-cdn.salespreso.com/media/pack/427/assets/sections/test-deck/slides/agenda/index.html",
209
+ },
210
+ key: "agenda",
211
+ modified_date: "2021-09-20T03:05:27.811485Z",
212
+ namespaced_key: "test-deck/agenda",
213
+ section: {
214
+ id: 2,
215
+ deckversion: {
216
+ id: 3,
217
+ },
218
+ },
219
+ sequence: 0,
220
+ subslide_set: [],
221
+ tags: ["section-header"],
222
+ title: "Agenda",
223
+ url: "https://staging-test.salespreso.com/api/slides/23898/",
224
+ };
225
+ };
226
+
227
+ it("should create a presentation section", async () => {
228
+ const impostorSection = new SlideModel(getImpostorSectionJSON());
229
+ const presentationSection =
230
+ PresentationSection.createFromImpostorSection(impostorSection);
231
+
232
+ const expected = {
233
+ adjunctID: null,
234
+ adjunctSlideLimit: 0,
235
+ autoAdjunctID: null,
236
+ createdByAutoAdjunct: false,
237
+ createdByTemplate: false,
238
+ css: "https://staging-test-cdn.salespreso.com/media/pack/427/assets/sections/test-deck/slides/agenda/slide.css",
239
+ custom: false,
240
+ deckversion: 3,
241
+ editable: false,
242
+ html: "https://staging-test-cdn.salespreso.com/media/pack/427/assets/sections/test-deck/slides/agenda/index.html",
243
+ id: 23898,
244
+ impostor: true,
245
+ index: 0,
246
+ isWelcome: false,
247
+ key: "agenda",
248
+ selectionID: null,
249
+ sequence: 0,
250
+ slides: [],
251
+ tags: ["section-header"],
252
+ templateID: null,
253
+ thumbnail:
254
+ "https://staging-test-cdn.salespreso.com/media/CACHE/images/slide/123/456.jpg",
255
+ title: "Agenda",
256
+ url: "/api/slides/23898/",
257
+ visible: true,
258
+ };
259
+
260
+ expect(presentationSection.toJSON()).toEqual(expected);
261
+ });
262
+
263
+ it("should use deckTags when available", async () => {
264
+ const impostorSection = new SlideModel(getImpostorSectionJSON());
265
+ const options = {
266
+ deckTags: { "test-deck/agenda": ["impostorsection-tag"] },
267
+ };
268
+ const presentationSection = PresentationSection.createFromImpostorSection(
269
+ impostorSection,
270
+ null,
271
+ options
272
+ );
273
+
274
+ expect(presentationSection.tags).toEqual(["impostorsection-tag"]);
275
+ });
276
+ });
277
+
278
+ describe("#createFromAutoAdjunct", () => {
279
+ const getAutoAdjunctJSON = () => {
280
+ return {
281
+ after_key: "autoadjunct-i-am-template-section",
282
+ created_date: "2021-09-16T04:25:54.459641Z",
283
+ deck: "https://staging-test.salespreso.com/api/decks/6/",
284
+ enabled: true,
285
+ id: 545,
286
+ image_128:
287
+ "https://staging-test-cdn.salespreso.com/media/CACHE/images/autoadjunct/123/456.jpg",
288
+ image_256:
289
+ "https://staging-test-cdn.salespreso.com/media/CACHE/images/autoadjunct/123/456.jpg",
290
+ image_512:
291
+ "https://staging-test-cdn.salespreso.com/media/CACHE/images/autoadjunct/123/456.jpg",
292
+ image_1024:
293
+ "https://staging-test-cdn.salespreso.com/media/CACHE/images/autoadjunct/123/456.png",
294
+ image_original:
295
+ "https://staging-test-cdn.salespreso.com/media/autoadjunct/123.png",
296
+ key: "autoadjunct-five",
297
+ modified_date: "2021-09-20T01:57:55.090828Z",
298
+ name: "Five",
299
+ parent_key: "",
300
+ sequence: 1,
301
+ tags: [],
302
+ team: null,
303
+ template: null,
304
+ url: "https://staging-test.salespreso.com/api/autoadjuncts/545/",
305
+ };
306
+ };
307
+
308
+ it("should create a presentation section", async () => {
309
+ const autoAdjunct = new AutoAdjunctModel(getAutoAdjunctJSON());
310
+ const options = {
311
+ index: 3,
312
+ deckversionID: 12,
313
+ };
314
+ const presentationSection = PresentationSection.createFromAutoAdjunct(
315
+ autoAdjunct,
316
+ options
317
+ );
318
+
319
+ const expected = {
320
+ adjunctID: 545,
321
+ adjunctSlideLimit: 0,
322
+ autoAdjunctID: 545,
323
+ createdByAutoAdjunct: false,
324
+ createdByTemplate: false,
325
+ css: "",
326
+ deckversion: 12,
327
+ html: "",
328
+ id: 545,
329
+ image:
330
+ "https://staging-test-cdn.salespreso.com/media/autoadjunct/123.png",
331
+ impostor: false,
332
+ index: 3,
333
+ isWelcome: false,
334
+ key: "autoadjunct-five",
335
+ sequence: 3,
336
+ slides: [],
337
+ tags: [],
338
+ templateID: null,
339
+ temporary: true,
340
+ thumbnail:
341
+ "https://staging-test-cdn.salespreso.com/media/CACHE/images/autoadjunct/123/456.jpg",
342
+ title: "Five",
343
+ url: "/api/adjunctsections/545/",
344
+ visible: true,
345
+ };
346
+ expect(presentationSection.toJSON()).toEqual(expected);
347
+ });
348
+
349
+ it("should use deckTags when available", async () => {
350
+ const autoAdjunct = new AutoAdjunctModel(getAutoAdjunctJSON());
351
+ const options = {
352
+ index: 3,
353
+ deckversionID: 12,
354
+ deckTags: { "autoadjunct-five": ["autoadjunct-tag"] },
355
+ };
356
+ const presentationSection = PresentationSection.createFromAutoAdjunct(
357
+ autoAdjunct,
358
+ options
359
+ );
360
+
361
+ expect(presentationSection.tags).toEqual(["autoadjunct-tag"]);
362
+ });
363
+ });