@livepreso/api 6.42.1 → 6.45.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 (196) hide show
  1. package/.eslintrc.js +3 -0
  2. package/.rush/temp/256021b5963b4c0221d3dec247b697b9691a9b2c.log +10 -0
  3. package/.rush/temp/2a322f00f12cf9d1e64afe81275cc78d01c49050.log +10 -0
  4. package/.rush/temp/30061f1865447dcbb3f20a305061205f3dbe6091.log +10 -0
  5. package/.rush/temp/45522aea0dee8cb2be1a53248ba45bd235743b43.log +10 -0
  6. package/.rush/temp/58fcbb7f15a76326d40e0839ab179755da82a891.log +10 -0
  7. package/.rush/temp/5bc0bba70b733baa4dd976667ba0a1386e516186.log +10 -0
  8. package/.rush/temp/64f1bb696f8d7d7e72907b80df316b127f72e23e.log +10 -0
  9. package/.rush/temp/6f640f951414ea68adb65c17e4ed7527cde54faf.log +10 -0
  10. package/.rush/temp/7c7b958682d4ab5697530be47d0aac62efe1adf1.log +10 -0
  11. package/.rush/temp/82bfb987463fbcfebf04022e6ed00015c73879c8.log +10 -0
  12. package/.rush/temp/844034aa6e542115075e8f3dc5ffc640973e0064.log +10 -0
  13. package/.rush/temp/8b42957a7c15da1f29cb57bee125f13affa70dca.log +10 -0
  14. package/.rush/temp/a769db9d81a23000c0e9b1bf4f1a9a9e721d0d7c.log +10 -0
  15. package/.rush/temp/a87d3a8b4ece87ec66f27c86226a9f205617681f.log +10 -0
  16. package/.rush/temp/bb7a5bdcc4af4ad1507f81f33774b31f5b4e4fb7.log +10 -0
  17. package/.rush/temp/build-cache-tar.log +7 -0
  18. package/.rush/temp/c20e29ccaaa9231b38a28bb24451b4ce7562cdc0.log +10 -0
  19. package/.rush/temp/e21303db8f59b4625fd184c9114377d781fd24f8.log +10 -0
  20. package/.rush/temp/e6d303862765b6a5f41dd483d0f9ae083a1fae10.log +10 -0
  21. package/.rush/temp/eaf69fbc059d2f1258d7569136180d4a1d3c7072.log +10 -0
  22. package/.rush/temp/f85d279e2674966daaec83e1c3986a96f86ef304.log +10 -0
  23. package/.rush/temp/fc0a332c5b34c6b90006850cf2d93a48fb4b9a6e.log +10 -0
  24. package/.rush/temp/package-deps_build.json +152 -134
  25. package/.rush/temp/package-deps_test.json +172 -0
  26. package/.rush/temp/shrinkwrap-deps.json +946 -847
  27. package/CHANGELOG.json +41 -0
  28. package/CHANGELOG.md +22 -1
  29. package/api.build.log +3 -26
  30. package/babel.config.js +1 -1
  31. package/bin/test.sh +0 -1
  32. package/cjs/api.js +1 -1
  33. package/cjs/api.js.map +1 -1
  34. package/cjs/auth.js +38 -11
  35. package/cjs/auth.js.map +1 -1
  36. package/cjs/auth.spec.js +12 -6
  37. package/cjs/auth.spec.js.map +1 -1
  38. package/cjs/caching.js +3 -3
  39. package/cjs/collections/activity.js +2 -2
  40. package/cjs/collections/appointment-adjunct-tags.js +28 -0
  41. package/cjs/collections/appointment-adjunct-tags.js.map +1 -0
  42. package/cjs/collections/appointment-deckversion-tags.js +28 -0
  43. package/cjs/collections/appointment-deckversion-tags.js.map +1 -0
  44. package/cjs/collections/appointment-section-tags.js +28 -0
  45. package/cjs/collections/appointment-section-tags.js.map +1 -0
  46. package/cjs/collections/appointment-slide-tags.js +28 -0
  47. package/cjs/collections/appointment-slide-tags.js.map +1 -0
  48. package/cjs/collections/appointment-tags.js +208 -0
  49. package/cjs/collections/appointment-tags.js.map +1 -0
  50. package/cjs/collections/appointments.js +2 -2
  51. package/cjs/collections/auto-adjuncts.js +2 -2
  52. package/cjs/collections/base.js +84 -3
  53. package/cjs/collections/base.js.map +1 -1
  54. package/cjs/collections/base.spec.js +178 -0
  55. package/cjs/collections/base.spec.js.map +1 -1
  56. package/cjs/collections/deck-version-screenshots.js +62 -0
  57. package/cjs/collections/deck-version-screenshots.js.map +1 -0
  58. package/cjs/collections/deck-versions.js +2 -2
  59. package/cjs/collections/tags.js +28 -0
  60. package/cjs/collections/tags.js.map +1 -0
  61. package/cjs/collections.js +91 -0
  62. package/cjs/collections.js.map +1 -1
  63. package/cjs/models/activity-item.js +5 -3
  64. package/cjs/models/activity-item.js.map +1 -1
  65. package/cjs/models/appointment-adjunct-tags.js +52 -0
  66. package/cjs/models/appointment-adjunct-tags.js.map +1 -0
  67. package/cjs/models/appointment-deckversion-tags.js +52 -0
  68. package/cjs/models/appointment-deckversion-tags.js.map +1 -0
  69. package/cjs/models/appointment-duplicate.js +2 -2
  70. package/cjs/models/appointment-section-tags.js +52 -0
  71. package/cjs/models/appointment-section-tags.js.map +1 -0
  72. package/cjs/models/appointment-slide-tags.js +52 -0
  73. package/cjs/models/appointment-slide-tags.js.map +1 -0
  74. package/cjs/models/appointment-tags.js +16 -15
  75. package/cjs/models/appointment-tags.js.map +1 -1
  76. package/cjs/models/appointment.js +19 -3
  77. package/cjs/models/appointment.js.map +1 -1
  78. package/cjs/models/auto-adjunct.js +3 -1
  79. package/cjs/models/auto-adjunct.js.map +1 -1
  80. package/cjs/models/base.js +19 -1
  81. package/cjs/models/base.js.map +1 -1
  82. package/cjs/models/base.spec.js +9 -0
  83. package/cjs/models/base.spec.js.map +1 -1
  84. package/cjs/models/deck-tags.js +61 -0
  85. package/cjs/models/deck-tags.js.map +1 -0
  86. package/cjs/models/deck-version-screenshot.js +59 -0
  87. package/cjs/models/deck-version-screenshot.js.map +1 -0
  88. package/cjs/models/deck-version.js +30 -5
  89. package/cjs/models/deck-version.js.map +1 -1
  90. package/cjs/models/deck.js +4 -1
  91. package/cjs/models/deck.js.map +1 -1
  92. package/cjs/models/feed-data.js +5 -0
  93. package/cjs/models/feed-data.js.map +1 -1
  94. package/cjs/models/image.js +34 -0
  95. package/cjs/models/image.js.map +1 -1
  96. package/cjs/models/manifest-json.js +56 -13
  97. package/cjs/models/manifest-json.js.map +1 -1
  98. package/cjs/models/preset.js +21 -1
  99. package/cjs/models/preset.js.map +1 -1
  100. package/cjs/models/section.js +3 -1
  101. package/cjs/models/section.js.map +1 -1
  102. package/cjs/models/slide.js +3 -1
  103. package/cjs/models/slide.js.map +1 -1
  104. package/cjs/models/tag.js +54 -0
  105. package/cjs/models/tag.js.map +1 -0
  106. package/cjs/models/template.js +3 -1
  107. package/cjs/models/template.js.map +1 -1
  108. package/cjs/models/token.js +56 -0
  109. package/cjs/models/token.js.map +1 -0
  110. package/cjs/models/user.js +4 -2
  111. package/cjs/models/user.js.map +1 -1
  112. package/cjs/models.js +104 -0
  113. package/cjs/models.js.map +1 -1
  114. package/cjs/presentation/appointment-presentation.js +11 -4
  115. package/cjs/presentation/appointment-presentation.js.map +1 -1
  116. package/cjs/presentation/base-presentation-model.js +167 -9
  117. package/cjs/presentation/base-presentation-model.js.map +1 -1
  118. package/cjs/presentation/base-presentation-model.spec.js +96 -6
  119. package/cjs/presentation/base-presentation-model.spec.js.map +1 -1
  120. package/cjs/presentation/presentation-deck.js +36 -8
  121. package/cjs/presentation/presentation-deck.js.map +1 -1
  122. package/cjs/presentation/presentation-deck.spec.js +53 -0
  123. package/cjs/presentation/presentation-deck.spec.js.map +1 -1
  124. package/cjs/presentation/presentation-section.js +64 -25
  125. package/cjs/presentation/presentation-section.js.map +1 -1
  126. package/cjs/presentation/presentation-section.spec.js +536 -0
  127. package/cjs/presentation/presentation-section.spec.js.map +1 -0
  128. package/cjs/presentation/presentation-slide.js +43 -18
  129. package/cjs/presentation/presentation-slide.js.map +1 -1
  130. package/cjs/presentation/presentation-slide.spec.js +386 -0
  131. package/cjs/presentation/presentation-slide.spec.js.map +1 -0
  132. package/cjs/presentation/presentation-subslide.js +5 -2
  133. package/cjs/presentation/presentation-subslide.js.map +1 -1
  134. package/cjs/presentation/presentation-subslide.spec.js +58 -12
  135. package/cjs/presentation/presentation-subslide.spec.js.map +1 -1
  136. package/cjs/presentation/presentation.js +120 -6
  137. package/cjs/presentation/presentation.js.map +1 -1
  138. package/cjs/state-register.js +11 -1
  139. package/cjs/state-register.js.map +1 -1
  140. package/cjs/sync.js +1 -1
  141. package/cjs/utils.js +5 -5
  142. package/config/rush-project.json +11 -0
  143. package/jest.config.js +1 -0
  144. package/package.json +66 -66
  145. package/src/api.js +1 -1
  146. package/src/auth.js +44 -8
  147. package/src/auth.spec.js +2 -0
  148. package/src/collections/appointment-adjunct-tags.js +18 -0
  149. package/src/collections/appointment-deckversion-tags.js +21 -0
  150. package/src/collections/appointment-section-tags.js +18 -0
  151. package/src/collections/appointment-slide-tags.js +18 -0
  152. package/src/collections/appointment-tags.js +136 -0
  153. package/src/collections/base.js +80 -3
  154. package/src/collections/base.spec.js +108 -1
  155. package/src/collections/deck-version-screenshots.js +48 -0
  156. package/src/collections/tags.js +18 -0
  157. package/src/collections.js +7 -0
  158. package/src/models/activity-item.js +2 -0
  159. package/src/models/appointment-adjunct-tags.js +41 -0
  160. package/src/models/appointment-deckversion-tags.js +41 -0
  161. package/src/models/appointment-section-tags.js +41 -0
  162. package/src/models/appointment-slide-tags.js +41 -0
  163. package/src/models/appointment-tags.js +16 -14
  164. package/src/models/appointment.js +18 -1
  165. package/src/models/auto-adjunct.js +2 -0
  166. package/src/models/base.js +19 -1
  167. package/src/models/base.spec.js +16 -9
  168. package/src/models/deck-tags.js +52 -0
  169. package/src/models/deck-version-screenshot.js +48 -0
  170. package/src/models/deck-version.js +32 -4
  171. package/src/models/deck.js +2 -0
  172. package/src/models/feed-data.js +2 -0
  173. package/src/models/image.js +32 -0
  174. package/src/models/manifest-json.js +55 -7
  175. package/src/models/preset.js +19 -0
  176. package/src/models/section.js +2 -0
  177. package/src/models/slide.js +2 -0
  178. package/src/models/tag.js +42 -0
  179. package/src/models/template.js +2 -0
  180. package/src/models/token.js +47 -0
  181. package/src/models/user.js +4 -0
  182. package/src/models.js +8 -0
  183. package/src/presentation/appointment-presentation.js +13 -2
  184. package/src/presentation/base-presentation-model.js +129 -8
  185. package/src/presentation/base-presentation-model.spec.js +121 -6
  186. package/src/presentation/presentation-deck.js +41 -2
  187. package/src/presentation/presentation-deck.spec.js +53 -0
  188. package/src/presentation/presentation-section.js +57 -14
  189. package/src/presentation/presentation-section.spec.js +496 -0
  190. package/src/presentation/presentation-slide.js +41 -8
  191. package/src/presentation/presentation-slide.spec.js +352 -0
  192. package/src/presentation/presentation-subslide.js +7 -2
  193. package/src/presentation/presentation-subslide.spec.js +32 -3
  194. package/src/presentation/presentation.js +35 -6
  195. package/src/state-register.js +7 -0
  196. package/api.build.error.log +0 -16
@@ -0,0 +1,352 @@
1
+ import { AdjunctSlideModel } from "../models/adjunct-slide";
2
+ import { AutoAdjunctModel } from "../models/auto-adjunct";
3
+ import { DeckVersionScreenshotCollection } from "../collections/deck-version-screenshots.js";
4
+ import { PresentationSlide } from "./presentation-slide";
5
+ import { SlideModel } from "../models/slide";
6
+
7
+ describe("#createFromSlide", () => {
8
+ const getSlideJSON = () => {
9
+ return {
10
+ created_date: "2021-07-22T04:57:56.484060Z",
11
+ description: "",
12
+ enabled: true,
13
+ id: 23219,
14
+ image_128: null,
15
+ image_256: null,
16
+ image_512: null,
17
+ index_asset: {
18
+ created_date: "2021-07-22T04:57:32.977770Z",
19
+ data: "sections/test-deck/slides/slide-key/index.html",
20
+ id: 148204,
21
+ modified_date: "2021-07-22T04:57:32.977790Z",
22
+ orig_path: "sections/test-deck/slides/slide-key",
23
+ pack: "https://staging-test.salespreso.com/api/packs/410/",
24
+ url: "https://staging-test-cdn.salespreso.com/media/pack/410/assets/sections/test-deck/slides/slide-key/index.html",
25
+ },
26
+ key: "slide-key",
27
+ modified_date: "2021-07-22T05:03:07.778106Z",
28
+ namespaced_key: "test-deck/slide-key",
29
+ section: "https://staging-test.salespreso.com/api/sections/1738/",
30
+ sequence: 13,
31
+ subslide_set: [],
32
+ tags: [],
33
+ title: "Digital Transformation",
34
+ url: "https://staging-test.salespreso.com/api/slides/23219/",
35
+ };
36
+ };
37
+
38
+ it("should create a presentation slide", async () => {
39
+ const slide = new SlideModel(getSlideJSON());
40
+ const presentationSlide = PresentationSlide.createFromSlide(slide);
41
+
42
+ const expected = {
43
+ adjunctID: null,
44
+ autoAdjunctID: null,
45
+ createdByAutoAdjunct: false,
46
+ createdByTemplate: false,
47
+ css: "https://staging-test-cdn.salespreso.com/media/pack/410/assets/sections/test-deck/slides/slide-key/slide.css",
48
+ custom: false,
49
+ editable: false,
50
+ html: "https://staging-test-cdn.salespreso.com/media/pack/410/assets/sections/test-deck/slides/slide-key/index.html",
51
+ id: 23219,
52
+ index: 13,
53
+ key: "slide-key",
54
+ section: 1738,
55
+ selectionID: null,
56
+ sequence: 13,
57
+ subslides: [],
58
+ tags: [],
59
+ templateID: null,
60
+ thumbnail: null,
61
+ title: "Digital Transformation",
62
+ url: "/api/slides/23219/",
63
+ visible: true,
64
+ };
65
+
66
+ expect(presentationSlide.toJSON()).toEqual(expected);
67
+ });
68
+
69
+ it("should use deckTags when available", async () => {
70
+ const slide = new SlideModel(getSlideJSON());
71
+ const options = {
72
+ deckTags: { "test-deck/slide-key": ["slide-tag"] },
73
+ };
74
+
75
+ const presentationSlide = PresentationSlide.createFromSlide(slide, options);
76
+
77
+ expect(presentationSlide.tags).toEqual(["slide-tag"]);
78
+ });
79
+
80
+ describe("Screenshots", () => {
81
+ it("should use the default image from the model if no screenshot found", () => {
82
+ const slide = new SlideModel(getSlideJSON());
83
+ const presentationSlide = PresentationSlide.createFromSlide(slide);
84
+ expect(presentationSlide.thumbnail).toEqual(null);
85
+ });
86
+
87
+ it("should use the screenshot model if it matches", () => {
88
+ const slide = new SlideModel(getSlideJSON());
89
+ const options = {
90
+ screenshots: new DeckVersionScreenshotCollection([
91
+ { subject: "/api/slides/23219/", image_256: "test-screenshot.png" },
92
+ ]),
93
+ };
94
+
95
+ const presentationSlide = PresentationSlide.createFromSlide(
96
+ slide,
97
+ options
98
+ );
99
+ expect(presentationSlide.thumbnail).toEqual("test-screenshot.png");
100
+ });
101
+ });
102
+ });
103
+
104
+ describe("#createFromAdjunctSlide", () => {
105
+ const getAdjunctSlideJSON = (includeTemplate = false) => {
106
+ const template = {
107
+ id: 1,
108
+ image_256: "template.png",
109
+ index_asset: {
110
+ created_date: "2021-07-22T04:57:32.977770Z",
111
+ data: "index.html",
112
+ id: 148204,
113
+ modified_date: "2021-07-22T04:57:32.977790Z",
114
+ orig_path: "templates/test-template/foo",
115
+ pack: "https://staging-test.salespreso.com/api/packs/410/",
116
+ url: "https://staging-test-cdn.salespreso.com/media/pack/410/assets/sections/test-deck/slides/slide-key/index.html",
117
+ },
118
+ };
119
+
120
+ return {
121
+ adjunct: "https://staging-test.salespreso.com/api/adjuncts/7457/",
122
+ appointment: "https://staging-test.salespreso.com/api/appointments/2426/",
123
+ created_by_autoadjunct: true,
124
+ created_date: "2021-09-20T05:34:45.267698Z",
125
+ creator_autoadjunct:
126
+ "https://staging-test.salespreso.com/api/autoadjuncts/541/",
127
+ deleted: false,
128
+ enabled: true,
129
+ html_content:
130
+ '<img src="https://staging-test-cdn.salespreso.com/media/autoadjunct/123.png">',
131
+ id: 10529,
132
+ image_128:
133
+ "https://staging-test-cdn.salespreso.com/media/CACHE/images/autoadjunct/123/456.jpg",
134
+ image_256:
135
+ "https://staging-test-cdn.salespreso.com/media/CACHE/images/autoadjunct/123/456.jpg",
136
+ image_512:
137
+ "https://staging-test-cdn.salespreso.com/media/CACHE/images/autoadjunct/123/456.jpg",
138
+ image_1024:
139
+ "https://staging-test-cdn.salespreso.com/media/CACHE/images/autoadjunct/123/456.png",
140
+ image_original:
141
+ "https://staging-test-cdn.salespreso.com/media/autoadjunct/123.png",
142
+ modified_date: "2021-09-20T05:34:45.267703Z",
143
+ section: "https://staging-test.salespreso.com/api/sections/1755/",
144
+ sequence: 3,
145
+ tags: [],
146
+ template: includeTemplate ? template : null,
147
+ title: "Six",
148
+ url: "https://staging-test.salespreso.com/api/adjunctslides/10529/",
149
+ };
150
+ };
151
+
152
+ it("should create a presentation slide", async () => {
153
+ const adjunctSlide = new AdjunctSlideModel(getAdjunctSlideJSON());
154
+ const presentationSlide =
155
+ PresentationSlide.createFromAdjunctSlide(adjunctSlide);
156
+
157
+ const expected = {
158
+ adjunct: {
159
+ url: "https://staging-test.salespreso.com/api/adjuncts/7457/",
160
+ },
161
+ adjunctID: 10529,
162
+ autoAdjunctID: 541,
163
+ createdByAutoAdjunct: true,
164
+ createdByTemplate: false,
165
+ custom: false,
166
+ id: 1,
167
+ image:
168
+ "https://staging-test-cdn.salespreso.com/media/autoadjunct/123.png",
169
+ index: 3,
170
+ key: "adjunct-10529",
171
+ section: null,
172
+ sequence: 3,
173
+ subslides: [],
174
+ tags: [],
175
+ templateID: null,
176
+ temporary: true,
177
+ thumbnail:
178
+ "https://staging-test-cdn.salespreso.com/media/CACHE/images/autoadjunct/123/456.jpg",
179
+ title: "Six",
180
+ url: "/api/adjunctslides/10529/",
181
+ visible: true,
182
+ cmsvalkey_set: [],
183
+ };
184
+
185
+ expect(presentationSlide.toJSON()).toEqual(expected);
186
+ });
187
+
188
+ it("should use deckTags when available", async () => {
189
+ const adjunctSlide = new AdjunctSlideModel(getAdjunctSlideJSON());
190
+ const options = {
191
+ deckTags: { "test-deck/adjunct-10529": ["adjunctslide-tag"] },
192
+ };
193
+
194
+ const presentationSlide = PresentationSlide.createFromAdjunctSlide(
195
+ adjunctSlide,
196
+ null,
197
+ options
198
+ );
199
+
200
+ expect(presentationSlide.tags).toEqual(["adjunctslide-tag"]);
201
+ });
202
+
203
+ describe("Screenshots", () => {
204
+ it("should use the default image from the model if no screenshot found", () => {
205
+ const data = getAdjunctSlideJSON(true);
206
+ const adjunctSlide = new AdjunctSlideModel(data);
207
+ const presentationSlide =
208
+ PresentationSlide.createFromAdjunctSlide(adjunctSlide);
209
+ expect(presentationSlide.thumbnail).toEqual(data.template.image_256);
210
+ });
211
+
212
+ it("should use the screenshot model if it matches", () => {
213
+ const adjunctSlide = new AdjunctSlideModel(getAdjunctSlideJSON(true));
214
+
215
+ const options = {
216
+ screenshots: new DeckVersionScreenshotCollection([
217
+ {
218
+ subject: "/api/autoadjuncts/541/",
219
+ image_256: "test-screenshot.png",
220
+ },
221
+ ]),
222
+ };
223
+
224
+ const presentationSlide = PresentationSlide.createFromAdjunctSlide(
225
+ adjunctSlide,
226
+ null,
227
+ options
228
+ );
229
+ expect(presentationSlide.thumbnail).toEqual("test-screenshot.png");
230
+ });
231
+ });
232
+ });
233
+
234
+ describe("#createFromAutoAdjunct", () => {
235
+ const getAutoAdjunctJSON = () => {
236
+ return {
237
+ after_key: "test-deck/industry_insights",
238
+ created_date: "2021-08-02T00:28:41.992805Z",
239
+ deck: "https://staging-test.salespreso.com/api/decks/4/",
240
+ enabled: true,
241
+ id: 525,
242
+ image_128:
243
+ "https://staging-test-cdn.salespreso.com/media/CACHE/images/autoadjunct/123/456.jpg",
244
+ image_256:
245
+ "https://staging-test-cdn.salespreso.com/media/CACHE/images/autoadjunct/123/456.jpg",
246
+ image_512:
247
+ "https://staging-test-cdn.salespreso.com/media/CACHE/images/autoadjunct/123/456.jpg",
248
+ image_1024:
249
+ "https://staging-test-cdn.salespreso.com/media/CACHE/images/autoadjunct/123/456.png",
250
+ image_original:
251
+ "https://staging-test-cdn.salespreso.com/media/autoadjunct/123.png",
252
+ key: "autoadjunct-three",
253
+ modified_date: "2021-09-15T05:52:49.234837Z",
254
+ name: "Three",
255
+ parent_key: "test-deck",
256
+ sequence: 4,
257
+ tags: [],
258
+ team: null,
259
+ template: null,
260
+ url: "https://staging-test.salespreso.com/api/autoadjuncts/525/",
261
+ };
262
+ };
263
+
264
+ it("should create a presentation slide", async () => {
265
+ const autoAdjunct = new AutoAdjunctModel(getAutoAdjunctJSON());
266
+ const options = {
267
+ index: 3,
268
+ deckversionID: 12,
269
+ };
270
+
271
+ const presentationSlide = PresentationSlide.createFromAutoAdjunct(
272
+ autoAdjunct,
273
+ options
274
+ );
275
+
276
+ const expected = {
277
+ adjunctID: 525,
278
+ autoAdjunctID: 525,
279
+ createdByAutoAdjunct: false,
280
+ createdByTemplate: false,
281
+ css: "",
282
+ html: "",
283
+ id: 525,
284
+ image:
285
+ "https://staging-test-cdn.salespreso.com/media/autoadjunct/123.png",
286
+ index: 3,
287
+ key: "autoadjunct-three",
288
+ sequence: 3,
289
+ subslides: [],
290
+ tags: [],
291
+ templateID: null,
292
+ temporary: true,
293
+ thumbnail:
294
+ "https://staging-test-cdn.salespreso.com/media/CACHE/images/autoadjunct/123/456.jpg",
295
+ title: "Three",
296
+ url: "/api/adjunctslides/525/",
297
+ visible: true,
298
+ };
299
+
300
+ expect(presentationSlide.toJSON()).toEqual(expected);
301
+ });
302
+
303
+ it("should use deckTags when available", async () => {
304
+ const autoAdjunct = new AutoAdjunctModel(getAutoAdjunctJSON());
305
+ const options = {
306
+ index: 3,
307
+ deckversionID: 12,
308
+ deckTags: {
309
+ "test-deck/autoadjunct-three": ["autoadjunct-tags"],
310
+ },
311
+ };
312
+
313
+ const presentationSlide = PresentationSlide.createFromAutoAdjunct(
314
+ autoAdjunct,
315
+ options
316
+ );
317
+ expect(presentationSlide.tags).toEqual(["autoadjunct-tags"]);
318
+ });
319
+
320
+ describe("Screenshots", () => {
321
+ it("should use the default image from the model if no screenshot found", () => {
322
+ const options = { index: 3, deckversionID: 12 };
323
+ const data = getAutoAdjunctJSON();
324
+ const autoAdjunct = new AutoAdjunctModel(data);
325
+ const presentationSlide = PresentationSlide.createFromAutoAdjunct(
326
+ autoAdjunct,
327
+ options
328
+ );
329
+ expect(presentationSlide.thumbnail).toEqual(data.image_256);
330
+ });
331
+
332
+ it("should use the screenshot model if it matches", () => {
333
+ const options = {
334
+ index: 3,
335
+ deckversionID: 12,
336
+ screenshots: new DeckVersionScreenshotCollection([
337
+ {
338
+ subject: "/api/autoadjuncts/525/",
339
+ image_256: "test-screenshot.png",
340
+ },
341
+ ]),
342
+ };
343
+ const data = getAutoAdjunctJSON();
344
+ const autoAdjunct = new AutoAdjunctModel(data);
345
+ const presentationSlide = PresentationSlide.createFromAutoAdjunct(
346
+ autoAdjunct,
347
+ options
348
+ );
349
+ expect(presentationSlide.thumbnail).toEqual("test-screenshot.png");
350
+ });
351
+ });
352
+ });
@@ -127,11 +127,16 @@ PresentationSubSlide.createFromAdjunctSubSlide = function (
127
127
  },
128
128
  });
129
129
 
130
+ const key = `adjunct-${adjunctSubSlideModel.id}`;
131
+ adjunctSubSlideModel.key = key;
132
+
130
133
  const config = PresentationSubSlide.getVisibilityAndSequence(
131
134
  adjunctSubSlideModel,
132
135
  options
133
136
  );
134
137
 
138
+ const tags = PresentationSubSlide.getTags(adjunctSubSlideModel, options);
139
+
135
140
  const subslide = new PresentationSubSlide({
136
141
  id: options.id || options.getUniqueAdjunctID(),
137
142
  adjunct: adjunctSubSlideModel.adjunct
@@ -139,12 +144,12 @@ PresentationSubSlide.createFromAdjunctSubSlide = function (
139
144
  : null,
140
145
  adjunctID: adjunctSubSlideModel.id,
141
146
  html_content: adjunctSubSlideModel.html_content,
142
- key: `adjunct-${adjunctSubSlideModel.id}`,
147
+ key,
143
148
  image: adjunctSubSlideModel.image_256,
144
149
  custom: true,
145
150
  title: adjunctSubSlideModel.title,
146
151
  slide: slideModel.id,
147
- tags: adjunctSubSlideModel.tags,
152
+ tags,
148
153
  index: config.sequence,
149
154
  sequence: config.sequence,
150
155
  visible: config.visible,
@@ -15,9 +15,6 @@ describe("#createFromSubSlide", () => {
15
15
  index_asset: {
16
16
  created_date: "2020-07-20T03:25:15.530683Z",
17
17
  data: "sections/test-deck/slides/why_myob_vision/index.html",
18
- hash_algorithm: "sha-256",
19
- hash_digest:
20
- "5e2426643a0d9f9360f343891da19faecf6bd37584ed4be05528c87b981f1f26",
21
18
  id: 7836,
22
19
  modified_date: "2020-07-20T03:25:15.530717Z",
23
20
  orig_path: "sections/test-deck/slides/why_myob_vision",
@@ -55,6 +52,19 @@ describe("#createFromSubSlide", () => {
55
52
 
56
53
  expect(presentationSub.toJSON()).toEqual(expected);
57
54
  });
55
+
56
+ it("should use deckTags when available", async () => {
57
+ const subslide = new SubSlideModel(subslideJSON);
58
+ const options = {
59
+ deckTags: { "test-deck/why_myob_vision/subslide-1": ["subslide-tag"] },
60
+ };
61
+ const presentationSub = PresentationSubSlide.createFromSubSlide(
62
+ subslide,
63
+ options
64
+ );
65
+
66
+ expect(presentationSub.tags).toEqual(["subslide-tag"]);
67
+ });
58
68
  });
59
69
 
60
70
  describe("#createFromAdjunctSubSlide", () => {
@@ -107,11 +117,30 @@ describe("#createFromAdjunctSubSlide", () => {
107
117
  index: 2,
108
118
  sequence: 2,
109
119
  visible: true,
120
+ tags: [],
110
121
  url: subslide.url(),
111
122
  };
112
123
 
113
124
  expect(presentationSub.toJSON()).toEqual(expected);
114
125
  });
126
+
127
+ it("should use deckTags when available", async () => {
128
+ const subslide = new AdjunctSubSlideModel(adjunctSubSlideJSON);
129
+
130
+ const options = {
131
+ id: 23,
132
+ deckTags: {
133
+ "test-deck/why_myob_vision/adjunct-562": ["adjunctsubslide-tag"],
134
+ },
135
+ };
136
+ const presentationSub = PresentationSubSlide.createFromAdjunctSubSlide(
137
+ subslide,
138
+ { id: 58 },
139
+ options
140
+ );
141
+
142
+ expect(presentationSub.tags).toEqual(["adjunctsubslide-tag"]);
143
+ });
115
144
  });
116
145
 
117
146
  describe("#createFromSlide", () => {
@@ -2,6 +2,7 @@ import "./presentation-decks.js";
2
2
 
3
3
  import { DeckVersionModel, ManifestJSONModel } from "../models.js";
4
4
 
5
+ import { AutoAdjunctCollection } from "../collections/auto-adjuncts.js";
5
6
  import { BasePresentationModel } from "./base-presentation-model.js";
6
7
  import { PresentationDeck } from "./presentation-deck.js";
7
8
  import Promise from "bluebird";
@@ -17,9 +18,10 @@ export const Presentation = BasePresentationModel.extend({
17
18
 
18
19
  Presentation.createFromDeckversion = function (deckversionURL, options) {
19
20
  const deckversion = new DeckVersionModel(deckversionURL);
20
-
21
- options = _.defaults(options, {
21
+ const opts = _.defaults(options, {
22
22
  includeTemplates: false,
23
+ choicelist: null,
24
+ autoAdjuncts: new AutoAdjunctCollection(),
23
25
  });
24
26
 
25
27
  return deckversion
@@ -30,15 +32,42 @@ Presentation.createFromDeckversion = function (deckversionURL, options) {
30
32
  deckversion.deck.fetch(),
31
33
  ]);
32
34
  })
35
+ .then(async () => {
36
+ const templates = deckversion.template_set.models;
37
+
38
+ for (const auto of opts.autoAdjuncts.models) {
39
+ const dvTemplate = templates.find(
40
+ (t) => t.url() === auto.template.url()
41
+ );
42
+ if (dvTemplate) {
43
+ auto.template = dvTemplate;
44
+ } else {
45
+ await auto.template.fetch();
46
+ }
47
+ }
48
+ })
33
49
  .then(() => {
50
+ return deckversion.deck.tags.fetch();
51
+ })
52
+ .then(() => {
53
+ const deckTags = deckversion.deck.tags.items.reduce((tagObj, tagItem) => {
54
+ tagObj[tagItem.namespaced_key] = tagItem.tags;
55
+ return tagObj;
56
+ }, {});
57
+
34
58
  const presentation = new Presentation();
35
- const createOpts = {};
36
- if (options.includeTemplates) {
37
- createOpts.templates = deckversion.template_set.toJSON();
59
+
60
+ const { includeTemplates, ...otherOpts } = opts;
61
+
62
+ if (includeTemplates) {
63
+ otherOpts.templates = deckversion.template_set.toJSON();
38
64
  }
39
65
 
40
66
  presentation.decks.add([
41
- PresentationDeck.createFromDeckVersion(deckversion, createOpts),
67
+ PresentationDeck.createFromDeckVersion(deckversion, {
68
+ ...otherOpts,
69
+ deckTags,
70
+ }),
42
71
  ]);
43
72
 
44
73
  return presentation;
@@ -4,3 +4,10 @@ export const register = (name, State) => {
4
4
  State.prototype._registerName = name;
5
5
  registeredStates[name] = State;
6
6
  };
7
+
8
+ export const getState = (name) => {
9
+ if (!registeredStates[name]) {
10
+ throw new Error(`Registered state '${name}' not found.`);
11
+ }
12
+ return registeredStates[name];
13
+ };
@@ -1,16 +0,0 @@
1
- PASS src/presentation/base-presentation-model.spec.js (48.024s)
2
- PASS src/presentation/presentation-subslide.spec.js (48.051s)
3
- PASS src/presentation/presentation-deck.spec.js (48.156s)
4
- PASS src/utils.spec.js (48.326s)
5
- PASS src/collections/base.spec.js (48.602s)
6
- PASS src/models/timing-log.spec.js (48.606s)
7
- PASS src/models/base.spec.js (49.267s)
8
- PASS src/api.spec.js
9
- PASS src/models/user.spec.js
10
- PASS src/auth.spec.js
11
-
12
- Test Suites: 10 passed, 10 total
13
- Tests: 96 passed, 96 total
14
- Snapshots: 0 total
15
- Time: 55.047s
16
- Ran all test suites.