@livepreso/api 6.42.1 → 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 (117) hide show
  1. package/.rush/temp/build-cache-tar.log +7 -0
  2. package/.rush/temp/package-deps_build.json +151 -133
  3. package/.rush/temp/shrinkwrap-deps.json +189 -192
  4. package/CHANGELOG.json +12 -0
  5. package/CHANGELOG.md +8 -1
  6. package/api.build.log +10 -24
  7. package/babel.config.js +1 -1
  8. package/cjs/api.js +1 -1
  9. package/cjs/api.js.map +1 -1
  10. package/cjs/auth.js +2 -1
  11. package/cjs/auth.js.map +1 -1
  12. package/cjs/caching.js +3 -3
  13. package/cjs/collections/appointment-adjunct-tags.js +28 -0
  14. package/cjs/collections/appointment-adjunct-tags.js.map +1 -0
  15. package/cjs/collections/appointment-deckversion-tags.js +28 -0
  16. package/cjs/collections/appointment-deckversion-tags.js.map +1 -0
  17. package/cjs/collections/appointment-section-tags.js +28 -0
  18. package/cjs/collections/appointment-section-tags.js.map +1 -0
  19. package/cjs/collections/appointment-slide-tags.js +28 -0
  20. package/cjs/collections/appointment-slide-tags.js.map +1 -0
  21. package/cjs/collections/appointment-tags.js +208 -0
  22. package/cjs/collections/appointment-tags.js.map +1 -0
  23. package/cjs/collections/tags.js +28 -0
  24. package/cjs/collections/tags.js.map +1 -0
  25. package/cjs/collections.js +78 -0
  26. package/cjs/collections.js.map +1 -1
  27. package/cjs/models/appointment-adjunct-tags.js +52 -0
  28. package/cjs/models/appointment-adjunct-tags.js.map +1 -0
  29. package/cjs/models/appointment-deckversion-tags.js +52 -0
  30. package/cjs/models/appointment-deckversion-tags.js.map +1 -0
  31. package/cjs/models/appointment-section-tags.js +52 -0
  32. package/cjs/models/appointment-section-tags.js.map +1 -0
  33. package/cjs/models/appointment-slide-tags.js +52 -0
  34. package/cjs/models/appointment-slide-tags.js.map +1 -0
  35. package/cjs/models/appointment-tags.js +16 -15
  36. package/cjs/models/appointment-tags.js.map +1 -1
  37. package/cjs/models/appointment.js +8 -2
  38. package/cjs/models/appointment.js.map +1 -1
  39. package/cjs/models/deck-tags.js +61 -0
  40. package/cjs/models/deck-tags.js.map +1 -0
  41. package/cjs/models/deck-version.js +2 -0
  42. package/cjs/models/deck-version.js.map +1 -1
  43. package/cjs/models/deck.js +4 -1
  44. package/cjs/models/deck.js.map +1 -1
  45. package/cjs/models/manifest-json.js +47 -12
  46. package/cjs/models/manifest-json.js.map +1 -1
  47. package/cjs/models/preset.js +21 -1
  48. package/cjs/models/preset.js.map +1 -1
  49. package/cjs/models/tag.js +54 -0
  50. package/cjs/models/tag.js.map +1 -0
  51. package/cjs/models/user.js +2 -1
  52. package/cjs/models/user.js.map +1 -1
  53. package/cjs/models.js +78 -0
  54. package/cjs/models.js.map +1 -1
  55. package/cjs/presentation/appointment-presentation.js +5 -2
  56. package/cjs/presentation/appointment-presentation.js.map +1 -1
  57. package/cjs/presentation/base-presentation-model.js +56 -7
  58. package/cjs/presentation/base-presentation-model.js.map +1 -1
  59. package/cjs/presentation/base-presentation-model.spec.js +40 -6
  60. package/cjs/presentation/base-presentation-model.spec.js.map +1 -1
  61. package/cjs/presentation/presentation-deck.js +2 -1
  62. package/cjs/presentation/presentation-deck.js.map +1 -1
  63. package/cjs/presentation/presentation-section.js +21 -8
  64. package/cjs/presentation/presentation-section.js.map +1 -1
  65. package/cjs/presentation/presentation-section.spec.js +418 -0
  66. package/cjs/presentation/presentation-section.spec.js.map +1 -0
  67. package/cjs/presentation/presentation-slide.js +12 -4
  68. package/cjs/presentation/presentation-slide.js.map +1 -1
  69. package/cjs/presentation/presentation-slide.spec.js +294 -0
  70. package/cjs/presentation/presentation-slide.spec.js.map +1 -0
  71. package/cjs/presentation/presentation-subslide.js +5 -2
  72. package/cjs/presentation/presentation-subslide.js.map +1 -1
  73. package/cjs/presentation/presentation-subslide.spec.js +58 -12
  74. package/cjs/presentation/presentation-subslide.spec.js.map +1 -1
  75. package/cjs/presentation/presentation.js +13 -3
  76. package/cjs/presentation/presentation.js.map +1 -1
  77. package/cjs/state-register.js +11 -1
  78. package/cjs/state-register.js.map +1 -1
  79. package/cjs/sync.js +1 -1
  80. package/cjs/utils.js +5 -5
  81. package/config/rush-project.json +53 -0
  82. package/package.json +64 -66
  83. package/src/api.js +1 -1
  84. package/src/collections/appointment-adjunct-tags.js +18 -0
  85. package/src/collections/appointment-deckversion-tags.js +21 -0
  86. package/src/collections/appointment-section-tags.js +18 -0
  87. package/src/collections/appointment-slide-tags.js +18 -0
  88. package/src/collections/appointment-tags.js +136 -0
  89. package/src/collections/tags.js +18 -0
  90. package/src/collections.js +6 -0
  91. package/src/models/appointment-adjunct-tags.js +41 -0
  92. package/src/models/appointment-deckversion-tags.js +41 -0
  93. package/src/models/appointment-section-tags.js +41 -0
  94. package/src/models/appointment-slide-tags.js +41 -0
  95. package/src/models/appointment-tags.js +16 -14
  96. package/src/models/appointment.js +6 -1
  97. package/src/models/deck-tags.js +52 -0
  98. package/src/models/deck-version.js +2 -0
  99. package/src/models/deck.js +2 -0
  100. package/src/models/manifest-json.js +46 -7
  101. package/src/models/preset.js +19 -0
  102. package/src/models/tag.js +42 -0
  103. package/src/models/user.js +2 -0
  104. package/src/models.js +6 -0
  105. package/src/presentation/appointment-presentation.js +4 -1
  106. package/src/presentation/base-presentation-model.js +52 -7
  107. package/src/presentation/base-presentation-model.spec.js +44 -6
  108. package/src/presentation/presentation-deck.js +1 -0
  109. package/src/presentation/presentation-section.js +20 -9
  110. package/src/presentation/presentation-section.spec.js +363 -0
  111. package/src/presentation/presentation-slide.js +16 -3
  112. package/src/presentation/presentation-slide.spec.js +250 -0
  113. package/src/presentation/presentation-subslide.js +7 -2
  114. package/src/presentation/presentation-subslide.spec.js +32 -3
  115. package/src/presentation/presentation.js +15 -3
  116. package/src/state-register.js +7 -0
  117. package/api.build.error.log +0 -16
@@ -156,7 +156,7 @@ PresentationSlide.createFromSlide = function (slideModel, options = {}) {
156
156
  key: slideModel.key,
157
157
  thumbnail: slideModel.image_256,
158
158
  custom: false,
159
- editable: slideModel.tags.indexOf("editable") > -1,
159
+ editable: tags.indexOf("editable") > -1,
160
160
  title: slideModel.title,
161
161
  section: slideModel.section.id,
162
162
  tags,
@@ -183,7 +183,7 @@ PresentationSlide.createFromSlide = function (slideModel, options = {}) {
183
183
  if (
184
184
  adjunctSubslides.length &&
185
185
  !slide.subslides.length &&
186
- !(slideModel.tags.indexOf("subslide_container") > -1)
186
+ !(tags.indexOf("subslide_container") > -1)
187
187
  ) {
188
188
  slide.subslides.add(PresentationSubSlide.createFromSlide(slide));
189
189
  }
@@ -243,6 +243,7 @@ PresentationSlide.createFromAdjunctSlide = function (
243
243
  key = adjunctSlideModel.key;
244
244
  } else if (keyID) {
245
245
  key = `adjunct-${keyID}`;
246
+ adjunctSlideModel.key = key;
246
247
  }
247
248
 
248
249
  const config = PresentationSlide.getVisibilityAndSequence(
@@ -250,6 +251,8 @@ PresentationSlide.createFromAdjunctSlide = function (
250
251
  options
251
252
  );
252
253
 
254
+ const tags = PresentationSlide.getTags(adjunctSlideModel, options);
255
+
253
256
  const slide = new PresentationSlide({
254
257
  id: options.id || options.getUniqueAdjunctID(),
255
258
  adjunct: adjunctSlideModel.adjunct ? adjunctSlideModel.adjunct.url() : null,
@@ -265,7 +268,7 @@ PresentationSlide.createFromAdjunctSlide = function (
265
268
  temporary: adjunctSlideModel.created_by_autoadjunct,
266
269
  title: adjunctSlideModel.title,
267
270
  section: section ? section.id : null,
268
- tags: adjunctSlideModel.tags,
271
+ tags,
269
272
  index: config.sequence,
270
273
  sequence: config.sequence,
271
274
  visible: config.visible,
@@ -386,6 +389,15 @@ PresentationSlide.createFromAutoAdjunct = function (model, opts) {
386
389
  impostor: false,
387
390
  });
388
391
 
392
+ const tags = PresentationSlide.getTags(
393
+ {
394
+ isAutoAdjunct: true,
395
+ key: model.key,
396
+ tags: model.tags,
397
+ },
398
+ options
399
+ );
400
+
389
401
  const autoAdjunct = new AutoAdjunctModel(model);
390
402
 
391
403
  const autoAdjunctSlide = new PresentationSlide({
@@ -407,6 +419,7 @@ PresentationSlide.createFromAutoAdjunct = function (model, opts) {
407
419
  allowConvert: options.allowConvert,
408
420
  deckversion: options.deckversionID,
409
421
  impostor: options.impostor,
422
+ tags,
410
423
  });
411
424
 
412
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
+ });
@@ -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", () => {
@@ -18,7 +18,7 @@ export const Presentation = BasePresentationModel.extend({
18
18
  Presentation.createFromDeckversion = function (deckversionURL, options) {
19
19
  const deckversion = new DeckVersionModel(deckversionURL);
20
20
 
21
- options = _.defaults(options, {
21
+ const opts = _.defaults(options, {
22
22
  includeTemplates: false,
23
23
  });
24
24
 
@@ -31,9 +31,21 @@ Presentation.createFromDeckversion = function (deckversionURL, options) {
31
31
  ]);
32
32
  })
33
33
  .then(() => {
34
+ return deckversion.deck.tags.fetch();
35
+ })
36
+ .then(() => {
37
+ const deckTags = deckversion.deck.tags.items.reduce((tagObj, tagItem) => {
38
+ tagObj[tagItem.namespaced_key] = tagItem.tags;
39
+ return tagObj;
40
+ }, {});
41
+
34
42
  const presentation = new Presentation();
35
- const createOpts = {};
36
- if (options.includeTemplates) {
43
+
44
+ const createOpts = {
45
+ deckTags,
46
+ };
47
+
48
+ if (opts.includeTemplates) {
37
49
  createOpts.templates = deckversion.template_set.toJSON();
38
50
  }
39
51
 
@@ -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.