@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
@@ -1,12 +1,32 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
6
8
  exports.BasePresentationModel = void 0;
7
9
 
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
8
12
  var _base = require("../models/base.js");
9
13
 
14
+ var _deckVersionScreenshots = require("../collections/deck-version-screenshots.js");
15
+
16
+ var _team2 = require("../models/team.js");
17
+
18
+ var _lodash = _interopRequireDefault(require("lodash"));
19
+
20
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
21
+
22
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
23
+
24
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
25
+
26
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
27
+
28
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
29
+
10
30
  /**
11
31
  * @constructor
12
32
  * @alias presentation.BasePresentationModel
@@ -19,6 +39,97 @@ var BasePresentationModel = _base.BaseModel.extend(
19
39
  return null;
20
40
  }
21
41
  });
42
+ /**
43
+ * Logic to pick a thumbnail based on either the model itself or from
44
+ * and overriding screenshot if one exists.
45
+ */
46
+
47
+
48
+ exports.BasePresentationModel = BasePresentationModel;
49
+
50
+ BasePresentationModel.getThumbnail = function (model, screenshots) {
51
+ var _screenshots$filter;
52
+
53
+ var overrideScreenshot = (_screenshots$filter = screenshots === null || screenshots === void 0 ? void 0 : screenshots.filter(function (screen) {
54
+ return screen.subject === model.url();
55
+ })) !== null && _screenshots$filter !== void 0 ? _screenshots$filter : [];
56
+
57
+ if (overrideScreenshot.length) {
58
+ if (overrideScreenshot.length > 1) {
59
+ throw new Error("\n\t\t\t\tFound multiple screenshots that could match this subject. If there is a team\n\t\t\t\tand a global, be sure to remove the screenshot that you don't need.\n\t\t\t");
60
+ }
61
+
62
+ return overrideScreenshot[0].image_256;
63
+ }
64
+
65
+ return model.image_256;
66
+ };
67
+ /**
68
+ * Takes a list of screenshots and filters it to only be a list used by a single team
69
+ * (or company wide).
70
+ *
71
+ * The logic should be like this:
72
+ *
73
+ * * If the team is null, we just return all global screenshots (team = null)
74
+ * * If we select a team, we take those global screenshots and replace any that have a
75
+ * team specific version of that screenshot. If none is found, the team will want to
76
+ * see the same global version. Obviously only one team's screenshots should be available.
77
+ */
78
+
79
+
80
+ BasePresentationModel.filterScreenshotsByTeam = function (_screenshots) {
81
+ var _team = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
82
+
83
+ var screenshots = new _deckVersionScreenshots.DeckVersionScreenshotCollection(_screenshots);
84
+ var team = _team ? new _team2.TeamModel(_team) : null;
85
+ var globalScreenshots = screenshots.filter(function (screen) {
86
+ return screen.team === null;
87
+ }).map(function (screen) {
88
+ return screen.toJSON();
89
+ });
90
+ var result = globalScreenshots;
91
+
92
+ if (team) {
93
+ var teamScreenshots = screenshots.filter(function (screen) {
94
+ return screen.team && screen.team.url() === team.url();
95
+ }).map(function (screen) {
96
+ return _objectSpread(_objectSpread({}, screen.toJSON()), {}, {
97
+ team: screen.team.url()
98
+ });
99
+ });
100
+
101
+ var _iterator = _createForOfIteratorHelper(teamScreenshots),
102
+ _step;
103
+
104
+ try {
105
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
106
+ var teamScreen = _step.value;
107
+
108
+ var existingGlobalIndex = _lodash.default.findIndex(result, {
109
+ subject: teamScreen.subject
110
+ });
111
+
112
+ if (existingGlobalIndex === -1) {
113
+ // If there isn't an existing global version, just add the team
114
+ // screenshot to the list
115
+ result.push(teamScreen);
116
+ } else {
117
+ // Otherwise we should use the team version instead of the global version
118
+ result[existingGlobalIndex] = teamScreen;
119
+ }
120
+ }
121
+ } catch (err) {
122
+ _iterator.e(err);
123
+ } finally {
124
+ _iterator.f();
125
+ }
126
+ } // Try to return it in the same order every time
127
+
128
+
129
+ var ordered = _lodash.default.orderBy(result, ["team", "subject"], ["desc", "asc"]);
130
+
131
+ return new _deckVersionScreenshots.DeckVersionScreenshotCollection(ordered);
132
+ };
22
133
  /**
23
134
  * Standard function for retrieving the visibility and sequence of a model
24
135
  * from a choicelist or section & slide selections. If a choicelist is
@@ -28,8 +139,6 @@ var BasePresentationModel = _base.BaseModel.extend(
28
139
  */
29
140
 
30
141
 
31
- exports.BasePresentationModel = BasePresentationModel;
32
-
33
142
  BasePresentationModel.getVisibilityAndSequence = function (model) {
34
143
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
35
144
  var _options$choicelist = options.choicelist,
@@ -76,17 +185,66 @@ BasePresentationModel.getVisibilityAndSequence = function (model) {
76
185
  return config;
77
186
  };
78
187
 
188
+ var getAppointmentTags = function getAppointmentTags(model, tags) {
189
+ var _model$adjunct;
190
+
191
+ var url = ((_model$adjunct = model.adjunct) === null || _model$adjunct === void 0 ? void 0 : _model$adjunct.url()) || model.url();
192
+ var tagItem = tags.find(function (tag) {
193
+ return tag.content_url === url;
194
+ });
195
+
196
+ if (tagItem) {
197
+ return tagItem.tags || [];
198
+ } // Subslide tags currently aren't included in the
199
+ // appointmentTags data.
200
+
201
+
202
+ return model.tags || [];
203
+ };
204
+
205
+ var getDeckTags = function getDeckTags(model, tags) {
206
+ // All non-adjunct sections, slides and subslides have namespaced_key
207
+ if (model.namespaced_key) {
208
+ return tags[model.namespaced_key] || model.tags || [];
209
+ } else if (model.adjunct || model.isAutoAdjunct) {
210
+ // Autoadjunct keys are unique and move around so we search for them
211
+ // and ignore the rest of the namespaced key
212
+ var keys = Object.keys(tags).filter(function (key) {
213
+ if (key.includes("/")) {
214
+ var splitKey = key.split("/");
215
+ return splitKey[splitKey.length - 1] === model.key;
216
+ }
217
+
218
+ return key === model.key;
219
+ });
220
+ return keys.length ? tags[keys[0]] : [];
221
+ } else if (model.deck) {
222
+ // The deck's namespaced key is always "" - this is because the
223
+ // namespaced key format is section-key/slide-key, but the
224
+ // deck sits above sections.
225
+ return tags[""] || model.tags || [];
226
+ }
227
+
228
+ return model.tags || [];
229
+ }; // Retrieve the tags for the model.
230
+ // If appointmentTags is passed through in the options, we call the
231
+ // getAppointmentTags function above to retrieve the appointment tags
232
+ // for the model.
233
+ // if there are no appointmentTags but deckTags are passed
234
+ // through then we call the getDeckTags function.
235
+ // In the future we will always use one of these two methods and
236
+ // references to model.tags should be removed.
237
+
238
+
79
239
  BasePresentationModel.getTags = function (model) {
80
240
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
81
241
 
82
- if (options.tags) {
83
- if (model.namespaced_key) {
84
- return options.tags[model.namespaced_key] || [];
85
- } else if (model.deck) {
86
- return options.tags[""];
87
- }
242
+ if (options.appointmentTags) {
243
+ return getAppointmentTags(model, options.appointmentTags);
244
+ }
88
245
 
89
- return [];
246
+ if (options.deckTags) {
247
+ return getDeckTags(model, options.deckTags);
90
248
  }
91
249
 
92
250
  return model.tags || [];
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/presentation/base-presentation-model.js"],"names":["BasePresentationModel","BaseModel","extend","url","getVisibilityAndSequence","model","options","choicelist","selections","config","visible","enabled","sequence","selectionID","choice","find","item","indexOf","adjunct","selection","id","getTags","tags","namespaced_key","deck","canBeEmpty"],"mappings":";;;;;;;AAAA;;AAEA;AACA;AACA;AACA;AACA;AACO,IAAMA,qBAAqB,GAAGC,gBAAUC,MAAV;AACpC;AAAkD;AACjDC,EAAAA,GADiD,iBAC3C;AACL,WAAO,IAAP;AACA;AAHgD,CADd,CAA9B;AAQP;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AAEAH,qBAAqB,CAACI,wBAAtB,GAAiD,UAChDC,KADgD,EAG/C;AAAA,MADDC,OACC,uEADS,EACT;AACD,4BAAiDA,OAAjD,CAAQC,UAAR;AAAA,MAAQA,UAAR,oCAAqB,IAArB;AAAA,4BAAiDD,OAAjD,CAA2BE,UAA3B;AAAA,MAA2BA,UAA3B,oCAAwC,IAAxC;AACA,MAAML,GAAG,GAAGE,KAAK,CAACF,GAAN,EAAZ;AAEA,MAAMM,MAAM,GAAG;AACdC,IAAAA,OAAO,EAAEL,KAAK,CAACK,OAAN,IAAiBL,KAAK,CAACM,OAAvB,IAAkC,KAD7B;AAEdC,IAAAA,QAAQ,EAAEP,KAAK,CAACO,QAFF;AAGdC,IAAAA,WAAW,EAAE;AAHC,GAAf;;AAMA,MAAIN,UAAJ,EAAgB;AACf;AACA;AACA,QAAMO,MAAM,GAAGP,UAAU,CAACQ,IAAX,CAAgB,UAACC,IAAD;AAAA,aAAUA,IAAI,CAACb,GAAL,KAAaA,GAAvB;AAAA,KAAhB,CAAf;;AAEA,QAAIW,MAAJ,EAAY;AACXL,MAAAA,MAAM,CAACG,QAAP,GAAkBL,UAAU,CAACU,OAAX,CAAmBH,MAAnB,CAAlB;AACAL,MAAAA,MAAM,CAACC,OAAP,GAAiBI,MAAM,CAACJ,OAAxB;AACA,KAHD,MAGO;AACND,MAAAA,MAAM,CAACC,OAAP,GAAiB,KAAjB;AACA;AACD,GAXD,MAWO,IAAIF,UAAU,IAAI,CAACH,KAAK,CAACa,OAAzB,EAAkC;AACxC;AACA;AACA;AACA,QAAMC,SAAS,GAAGX,UAAU,CAACO,IAAX,CAAgB,UAACI,SAAD;AAAA,aAAeA,SAAS,CAAChB,GAAV,KAAkBA,GAAjC;AAAA,KAAhB,CAAlB;;AAEA,QAAIgB,SAAJ,EAAe;AACdV,MAAAA,MAAM,CAACC,OAAP,GAAiBS,SAAS,CAACT,OAA3B;AACAD,MAAAA,MAAM,CAACG,QAAP,GAAkBO,SAAS,CAACP,QAA5B;AACAH,MAAAA,MAAM,CAACI,WAAP,GAAqBM,SAAS,CAACC,EAA/B;AACA;AACD,GAhCA,CAkCD;AACA;;;AAEA,SAAOX,MAAP;AACA,CAzCD;;AA2CAT,qBAAqB,CAACqB,OAAtB,GAAgC,UAAUhB,KAAV,EAA+B;AAAA,MAAdC,OAAc,uEAAJ,EAAI;;AAC9D,MAAIA,OAAO,CAACgB,IAAZ,EAAkB;AACjB,QAAIjB,KAAK,CAACkB,cAAV,EAA0B;AACzB,aAAOjB,OAAO,CAACgB,IAAR,CAAajB,KAAK,CAACkB,cAAnB,KAAsC,EAA7C;AACA,KAFD,MAEO,IAAIlB,KAAK,CAACmB,IAAV,EAAgB;AACtB,aAAOlB,OAAO,CAACgB,IAAR,CAAa,EAAb,CAAP;AACA;;AAED,WAAO,EAAP;AACA;;AAED,SAAOjB,KAAK,CAACiB,IAAN,IAAc,EAArB;AACA,CAZD;;AAcAtB,qBAAqB,CAACyB,UAAtB,GAAmC,IAAnC","sourcesContent":["import { BaseModel } from \"../models/base.js\";\n\n/**\n * @constructor\n * @alias presentation.BasePresentationModel\n * @extends presentation.BaseModel\n */\nexport const BasePresentationModel = BaseModel.extend(\n\t/** @lends presentation.BasePresentationModel# */ {\n\t\turl() {\n\t\t\treturn null;\n\t\t},\n\t}\n);\n\n/**\n * Standard function for retrieving the visibility and sequence of a model\n * from a choicelist or section & slide selections. If a choicelist is\n * provided we prefer the choicelist, otherwise we use selections.\n * Adjuncts are included in choicelists but not in selections so we use the\n * model's state to determine sequence & vis when selections are used.\n */\n\nBasePresentationModel.getVisibilityAndSequence = function (\n\tmodel,\n\toptions = {}\n) {\n\tconst { choicelist = null, selections = null } = options;\n\tconst url = model.url();\n\n\tconst config = {\n\t\tvisible: model.visible || model.enabled || false,\n\t\tsequence: model.sequence,\n\t\tselectionID: null,\n\t};\n\n\tif (choicelist) {\n\t\t// All items should have a choicelist entry - if it's not in\n\t\t// the choicelist, it's not in the preso\n\t\tconst choice = choicelist.find((item) => item.url === url);\n\n\t\tif (choice) {\n\t\t\tconfig.sequence = choicelist.indexOf(choice);\n\t\t\tconfig.visible = choice.visible;\n\t\t} else {\n\t\t\tconfig.visible = false;\n\t\t}\n\t} else if (selections && !model.adjunct) {\n\t\t// Non-adjunct subslides and adjunct sections/slides/subslides\n\t\t// have no selections - they fall through here using their\n\t\t// model's values\n\t\tconst selection = selections.find((selection) => selection.url === url);\n\n\t\tif (selection) {\n\t\t\tconfig.visible = selection.visible;\n\t\t\tconfig.sequence = selection.sequence;\n\t\t\tconfig.selectionID = selection.id;\n\t\t}\n\t}\n\n\t// If neither a choicelist nor selections are available, the\n\t// values on the model will be used.\n\n\treturn config;\n};\n\nBasePresentationModel.getTags = function (model, options = {}) {\n\tif (options.tags) {\n\t\tif (model.namespaced_key) {\n\t\t\treturn options.tags[model.namespaced_key] || [];\n\t\t} else if (model.deck) {\n\t\t\treturn options.tags[\"\"];\n\t\t}\n\n\t\treturn [];\n\t}\n\n\treturn model.tags || [];\n};\n\nBasePresentationModel.canBeEmpty = true;\n"],"file":"base-presentation-model.js"}
1
+ {"version":3,"sources":["../../src/presentation/base-presentation-model.js"],"names":["BasePresentationModel","BaseModel","extend","url","getThumbnail","model","screenshots","overrideScreenshot","filter","screen","subject","length","Error","image_256","filterScreenshotsByTeam","_screenshots","_team","DeckVersionScreenshotCollection","team","TeamModel","globalScreenshots","map","toJSON","result","teamScreenshots","teamScreen","existingGlobalIndex","_","findIndex","push","ordered","orderBy","getVisibilityAndSequence","options","choicelist","selections","config","visible","enabled","sequence","selectionID","choice","find","item","indexOf","adjunct","selection","id","getAppointmentTags","tags","tagItem","tag","content_url","getDeckTags","namespaced_key","isAutoAdjunct","keys","Object","key","includes","splitKey","split","deck","getTags","appointmentTags","deckTags","canBeEmpty"],"mappings":"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","sourcesContent":["import { BaseModel } from \"../models/base.js\";\nimport { DeckVersionScreenshotCollection } from \"../collections/deck-version-screenshots.js\";\nimport { TeamModel } from \"../models/team.js\";\nimport _ from \"lodash\";\n\n/**\n * @constructor\n * @alias presentation.BasePresentationModel\n * @extends presentation.BaseModel\n */\nexport const BasePresentationModel = BaseModel.extend(\n\t/** @lends presentation.BasePresentationModel# */ {\n\t\turl() {\n\t\t\treturn null;\n\t\t},\n\t}\n);\n\n/**\n * Logic to pick a thumbnail based on either the model itself or from\n * and overriding screenshot if one exists.\n */\nBasePresentationModel.getThumbnail = function (model, screenshots) {\n\tconst overrideScreenshot =\n\t\tscreenshots?.filter((screen) => {\n\t\t\treturn screen.subject === model.url();\n\t\t}) ?? [];\n\n\tif (overrideScreenshot.length) {\n\t\tif (overrideScreenshot.length > 1) {\n\t\t\tthrow new Error(`\n\t\t\t\tFound multiple screenshots that could match this subject. If there is a team\n\t\t\t\tand a global, be sure to remove the screenshot that you don't need.\n\t\t\t`);\n\t\t}\n\n\t\treturn overrideScreenshot[0].image_256;\n\t}\n\n\treturn model.image_256;\n};\n\n/**\n * Takes a list of screenshots and filters it to only be a list used by a single team\n * (or company wide).\n *\n * The logic should be like this:\n *\n *\t* If the team is null, we just return all global screenshots (team = null)\n *\t* If we select a team, we take those global screenshots and replace any that have a\n *\t\tteam specific version of that screenshot. If none is found, the team will want to\n *\t\tsee the same global version. Obviously only one team's screenshots should be available.\n */\nBasePresentationModel.filterScreenshotsByTeam = function (\n\t_screenshots,\n\t_team = null\n) {\n\tconst screenshots = new DeckVersionScreenshotCollection(_screenshots);\n\tconst team = _team ? new TeamModel(_team) : null;\n\n\tconst globalScreenshots = screenshots\n\t\t.filter((screen) => screen.team === null)\n\t\t.map((screen) => screen.toJSON());\n\n\tconst result = globalScreenshots;\n\n\tif (team) {\n\t\tconst teamScreenshots = screenshots\n\t\t\t.filter((screen) => screen.team && screen.team.url() === team.url())\n\t\t\t.map((screen) => ({ ...screen.toJSON(), team: screen.team.url() }));\n\n\t\tfor (const teamScreen of teamScreenshots) {\n\t\t\tconst existingGlobalIndex = _.findIndex(result, {\n\t\t\t\tsubject: teamScreen.subject,\n\t\t\t});\n\n\t\t\tif (existingGlobalIndex === -1) {\n\t\t\t\t// If there isn't an existing global version, just add the team\n\t\t\t\t// screenshot to the list\n\t\t\t\tresult.push(teamScreen);\n\t\t\t} else {\n\t\t\t\t// Otherwise we should use the team version instead of the global version\n\t\t\t\tresult[existingGlobalIndex] = teamScreen;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Try to return it in the same order every time\n\tconst ordered = _.orderBy(result, [\"team\", \"subject\"], [\"desc\", \"asc\"]);\n\treturn new DeckVersionScreenshotCollection(ordered);\n};\n\n/**\n * Standard function for retrieving the visibility and sequence of a model\n * from a choicelist or section & slide selections. If a choicelist is\n * provided we prefer the choicelist, otherwise we use selections.\n * Adjuncts are included in choicelists but not in selections so we use the\n * model's state to determine sequence & vis when selections are used.\n */\nBasePresentationModel.getVisibilityAndSequence = function (\n\tmodel,\n\toptions = {}\n) {\n\tconst { choicelist = null, selections = null } = options;\n\tconst url = model.url();\n\n\tconst config = {\n\t\tvisible: model.visible || model.enabled || false,\n\t\tsequence: model.sequence,\n\t\tselectionID: null,\n\t};\n\n\tif (choicelist) {\n\t\t// All items should have a choicelist entry - if it's not in\n\t\t// the choicelist, it's not in the preso\n\t\tconst choice = choicelist.find((item) => item.url === url);\n\n\t\tif (choice) {\n\t\t\tconfig.sequence = choicelist.indexOf(choice);\n\t\t\tconfig.visible = choice.visible;\n\t\t} else {\n\t\t\tconfig.visible = false;\n\t\t}\n\t} else if (selections && !model.adjunct) {\n\t\t// Non-adjunct subslides and adjunct sections/slides/subslides\n\t\t// have no selections - they fall through here using their\n\t\t// model's values\n\t\tconst selection = selections.find((selection) => selection.url === url);\n\n\t\tif (selection) {\n\t\t\tconfig.visible = selection.visible;\n\t\t\tconfig.sequence = selection.sequence;\n\t\t\tconfig.selectionID = selection.id;\n\t\t}\n\t}\n\n\t// If neither a choicelist nor selections are available, the\n\t// values on the model will be used.\n\n\treturn config;\n};\n\nconst getAppointmentTags = function (model, tags) {\n\tconst url = model.adjunct?.url() || model.url();\n\tconst tagItem = tags.find((tag) => tag.content_url === url);\n\n\tif (tagItem) {\n\t\treturn tagItem.tags || [];\n\t}\n\n\t// Subslide tags currently aren't included in the\n\t// appointmentTags data.\n\treturn model.tags || [];\n};\n\nconst getDeckTags = function (model, tags) {\n\t// All non-adjunct sections, slides and subslides have namespaced_key\n\tif (model.namespaced_key) {\n\t\treturn tags[model.namespaced_key] || model.tags || [];\n\t} else if (model.adjunct || model.isAutoAdjunct) {\n\t\t// Autoadjunct keys are unique and move around so we search for them\n\t\t// and ignore the rest of the namespaced key\n\t\tconst keys = Object.keys(tags).filter((key) => {\n\t\t\tif (key.includes(\"/\")) {\n\t\t\t\tconst splitKey = key.split(\"/\");\n\n\t\t\t\treturn splitKey[splitKey.length - 1] === model.key;\n\t\t\t}\n\t\t\treturn key === model.key;\n\t\t});\n\t\treturn keys.length ? tags[keys[0]] : [];\n\t} else if (model.deck) {\n\t\t// The deck's namespaced key is always \"\" - this is because the\n\t\t// namespaced key format is section-key/slide-key, but the\n\t\t// deck sits above sections.\n\t\treturn tags[\"\"] || model.tags || [];\n\t}\n\n\treturn model.tags || [];\n};\n\n// Retrieve the tags for the model.\n// If appointmentTags is passed through in the options, we call the\n// getAppointmentTags function above to retrieve the appointment tags\n// for the model.\n// if there are no appointmentTags but deckTags are passed\n// through then we call the getDeckTags function.\n// In the future we will always use one of these two methods and\n// references to model.tags should be removed.\nBasePresentationModel.getTags = function (model, options = {}) {\n\tif (options.appointmentTags) {\n\t\treturn getAppointmentTags(model, options.appointmentTags);\n\t}\n\n\tif (options.deckTags) {\n\t\treturn getDeckTags(model, options.deckTags);\n\t}\n\n\treturn model.tags || [];\n};\n\nBasePresentationModel.canBeEmpty = true;\n"],"file":"base-presentation-model.js"}
@@ -6,6 +6,8 @@ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
6
6
 
7
7
  var _basePresentationModel = require("./base-presentation-model.js");
8
8
 
9
+ var _deckVersionScreenshots = require("../collections/deck-version-screenshots.js");
10
+
9
11
  describe("#getVisibilityAndSequence", function () {
10
12
  it("should return model defaults when no options", function () {
11
13
  var config = _basePresentationModel.BasePresentationModel.getVisibilityAndSequence({
@@ -122,13 +124,13 @@ describe("#getVisibilityAndSequence", function () {
122
124
  }); // adjuncts!!
123
125
  });
124
126
  describe("#getTags", function () {
125
- it("should return empty array when no options or model.tags", function () {
127
+ it("should return empty array when no options or model tags", function () {
126
128
  var tags = _basePresentationModel.BasePresentationModel.getTags({});
127
129
 
128
130
  expect((0, _typeof2.default)(tags)).toEqual("object");
129
131
  expect(tags.length).toEqual(0);
130
132
  });
131
- it("should return model.tags when no tags passed in options", function () {
133
+ it("should return tags when no tags passed in options", function () {
132
134
  var model = {
133
135
  tags: ["model-tag-1", "model-tag-2"]
134
136
  };
@@ -137,13 +139,13 @@ describe("#getTags", function () {
137
139
 
138
140
  expect(tags).toEqual(model.tags);
139
141
  });
140
- it("should return options.tags for slide when tags passed in options", function () {
142
+ it("should return tags for slide when tags passed in options", function () {
141
143
  var model = {
142
144
  namespaced_key: "slide-key",
143
145
  tags: ["model-tag-1", "model-tag-2"]
144
146
  };
145
147
  var options = {
146
- tags: {
148
+ deckTags: {
147
149
  "": ["deck-tags"],
148
150
  "slide-key": ["slide-tags"]
149
151
  }
@@ -153,13 +155,13 @@ describe("#getTags", function () {
153
155
 
154
156
  expect(tags).toEqual(["slide-tags"]);
155
157
  });
156
- it("should return options.tags[''] for welcome slide ", function () {
158
+ it("should return tags for welcome slide when tags passed in options", function () {
157
159
  var model = {
158
160
  deck: {},
159
161
  tags: ["model-tag-1", "model-tag-2"]
160
162
  };
161
163
  var options = {
162
- tags: {
164
+ deckTags: {
163
165
  "": ["deck-tags"],
164
166
  "slide-key": ["slide-tags"]
165
167
  }
@@ -169,5 +171,93 @@ describe("#getTags", function () {
169
171
 
170
172
  expect(tags).toEqual(["deck-tags"]);
171
173
  });
174
+ it("should return tags for an adjunct section when tags passed in options", function () {
175
+ var model = {
176
+ adjunct: true,
177
+ key: "adjunctsection-key",
178
+ tags: ["old-tag-1", "old-tag-2"]
179
+ };
180
+ var options = {
181
+ deckTags: {
182
+ "": ["deck-tags"],
183
+ "adjunctsection-key": ["adjunctsection-tags"]
184
+ }
185
+ };
186
+
187
+ var tags = _basePresentationModel.BasePresentationModel.getTags(model, options);
188
+
189
+ expect(tags).toEqual(["adjunctsection-tags"]);
190
+ });
191
+ it("should return tags for an adjunct slide when tags passed in options", function () {
192
+ var model = {
193
+ adjunct: true,
194
+ key: "adjunctslide-key",
195
+ tags: ["old-tag-1", "old-tag-2"]
196
+ };
197
+ var options = {
198
+ deckTags: {
199
+ "": ["deck-tags"],
200
+ "section-key/adjunctslide-key": ["adjunctslide-tags"]
201
+ }
202
+ };
203
+
204
+ var tags = _basePresentationModel.BasePresentationModel.getTags(model, options);
205
+
206
+ expect(tags).toEqual(["adjunctslide-tags"]);
207
+ });
208
+ });
209
+ describe("#filterScreenshotsByTeam", function () {
210
+ var screenshots = new _deckVersionScreenshots.DeckVersionScreenshotCollection([{
211
+ subject: "/api/slides/1/",
212
+ image_256: "global-screenshot-1.png",
213
+ team: null
214
+ }, {
215
+ subject: "/api/slides/2/",
216
+ image_256: "global-screenshot-2.png",
217
+ team: null
218
+ }, {
219
+ subject: "/api/slides/1/",
220
+ image_256: "team-1-screenshot.png",
221
+ team: "/api/teams/1/"
222
+ }, {
223
+ subject: "/api/sections/2/",
224
+ image_256: "team-1-screenshot.png",
225
+ team: "/api/teams/1/"
226
+ }, // Just for testing that the team filters don't get cross-contaminated
227
+ {
228
+ subject: "/api/sections/2/",
229
+ image_256: "team-2-screenshot.png",
230
+ team: "/api/teams/2/"
231
+ }]);
232
+ it("should just return global screenshots if team is null", function () {
233
+ var filtered = _basePresentationModel.BasePresentationModel.filterScreenshotsByTeam(screenshots, null).toJSON();
234
+
235
+ expect(filtered).toEqual([{
236
+ subject: "/api/slides/1/",
237
+ image_256: "global-screenshot-1.png",
238
+ team: null
239
+ }, {
240
+ subject: "/api/slides/2/",
241
+ image_256: "global-screenshot-2.png",
242
+ team: null
243
+ }]);
244
+ });
245
+ it("should return globals with team override", function () {
246
+ var filtered = _basePresentationModel.BasePresentationModel.filterScreenshotsByTeam(screenshots, 1).toJSON();
247
+
248
+ expect(filtered).toEqual([{
249
+ image_256: "global-screenshot-2.png",
250
+ subject: "/api/slides/2/",
251
+ team: null
252
+ }, {
253
+ image_256: "team-1-screenshot.png",
254
+ subject: "/api/sections/2/",
255
+ team: "/api/teams/1/"
256
+ }, {
257
+ image_256: "team-1-screenshot.png",
258
+ subject: "/api/slides/1/",
259
+ team: "/api/teams/1/"
260
+ }]);
261
+ });
172
262
  });
173
263
  //# sourceMappingURL=base-presentation-model.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/presentation/base-presentation-model.spec.js"],"names":["describe","it","config","BasePresentationModel","getVisibilityAndSequence","sequence","visible","url","expected","selectionID","expect","toEqual","choicelist","selections","id","tags","getTags","length","model","namespaced_key","options","deck"],"mappings":"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","sourcesContent":["import { BasePresentationModel } from \"./base-presentation-model.js\";\n\ndescribe(\"#getVisibilityAndSequence\", () => {\n\tit(\"should return model defaults when no options\", () => {\n\t\tconst config = BasePresentationModel.getVisibilityAndSequence({\n\t\t\tsequence: 99,\n\t\t\tvisible: true,\n\t\t\turl: () => \"\",\n\t\t});\n\n\t\tconst expected = {\n\t\t\tsequence: 99,\n\t\t\tvisible: true,\n\t\t\tselectionID: null,\n\t\t};\n\n\t\texpect(config).toEqual(expected);\n\t});\n\n\tit(\"should return model defaults when no options\", () => {\n\t\tconst config = BasePresentationModel.getVisibilityAndSequence({\n\t\t\tsequence: 99,\n\t\t\tvisible: true,\n\t\t\turl: () => \"\",\n\t\t});\n\n\t\tconst expected = {\n\t\t\tsequence: 99,\n\t\t\tvisible: true,\n\t\t\tselectionID: null,\n\t\t};\n\n\t\texpect(config).toEqual(expected);\n\t});\n\n\tit(\"should return choicelist config\", () => {\n\t\tconst choicelist = [\n\t\t\t{\n\t\t\t\turl: \"bleh/meh\",\n\t\t\t\tvisible: true,\n\t\t\t},\n\t\t];\n\n\t\tconst config = BasePresentationModel.getVisibilityAndSequence(\n\t\t\t{\n\t\t\t\tsequence: 99,\n\t\t\t\tvisible: false,\n\t\t\t\turl: () => \"bleh/meh\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tchoicelist,\n\t\t\t}\n\t\t);\n\n\t\tconst expected = {\n\t\t\tsequence: 0,\n\t\t\tvisible: true,\n\t\t\tselectionID: null,\n\t\t};\n\n\t\texpect(config).toEqual(expected);\n\t});\n\n\tit(\"should return selections config\", () => {\n\t\tconst selections = [\n\t\t\t{\n\t\t\t\turl: \"bleh/meh\",\n\t\t\t\tvisible: true,\n\t\t\t\tsequence: 27,\n\t\t\t\tid: 58,\n\t\t\t},\n\t\t];\n\n\t\tconst config = BasePresentationModel.getVisibilityAndSequence(\n\t\t\t{\n\t\t\t\tsequence: 99,\n\t\t\t\tvisible: false,\n\t\t\t\turl: () => \"bleh/meh\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tselections,\n\t\t\t}\n\t\t);\n\n\t\tconst expected = {\n\t\t\tsequence: 27,\n\t\t\tvisible: true,\n\t\t\tselectionID: 58,\n\t\t};\n\n\t\texpect(config).toEqual(expected);\n\t});\n\n\tit(\"should return choicelist config if both are provided\", () => {\n\t\tconst choicelist = [\n\t\t\t{\n\t\t\t\turl: \"gah/meh\",\n\t\t\t\tvisible: false,\n\t\t\t},\n\t\t\t{\n\t\t\t\turl: \"bleh/meh\",\n\t\t\t\tvisible: true,\n\t\t\t},\n\t\t];\n\n\t\tconst selections = [\n\t\t\t{\n\t\t\t\turl: \"bleh/meh\",\n\t\t\t\tvisible: true,\n\t\t\t\tsequence: 27,\n\t\t\t\tid: 58,\n\t\t\t},\n\t\t];\n\n\t\tconst config = BasePresentationModel.getVisibilityAndSequence(\n\t\t\t{\n\t\t\t\tsequence: 99,\n\t\t\t\tvisible: false,\n\t\t\t\turl: () => \"bleh/meh\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tchoicelist,\n\t\t\t\tselections,\n\t\t\t}\n\t\t);\n\n\t\tconst expected = {\n\t\t\tsequence: 1,\n\t\t\tvisible: true,\n\t\t\tselectionID: null,\n\t\t};\n\n\t\texpect(config).toEqual(expected);\n\t});\n\n\t// adjuncts!!\n});\n\ndescribe(\"#getTags\", () => {\n\tit(\"should return empty array when no options or model.tags\", () => {\n\t\tconst tags = BasePresentationModel.getTags({});\n\n\t\texpect(typeof tags).toEqual(\"object\");\n\t\texpect(tags.length).toEqual(0);\n\t});\n\n\tit(\"should return model.tags when no tags passed in options\", () => {\n\t\tconst model = {\n\t\t\ttags: [\"model-tag-1\", \"model-tag-2\"],\n\t\t};\n\t\tconst tags = BasePresentationModel.getTags(model);\n\n\t\texpect(tags).toEqual(model.tags);\n\t});\n\n\tit(\"should return options.tags for slide when tags passed in options\", () => {\n\t\tconst model = {\n\t\t\tnamespaced_key: \"slide-key\",\n\t\t\ttags: [\"model-tag-1\", \"model-tag-2\"],\n\t\t};\n\n\t\tconst options = {\n\t\t\ttags: {\n\t\t\t\t\"\": [\"deck-tags\"],\n\t\t\t\t\"slide-key\": [\"slide-tags\"],\n\t\t\t},\n\t\t};\n\n\t\tconst tags = BasePresentationModel.getTags(model, options);\n\n\t\texpect(tags).toEqual([\"slide-tags\"]);\n\t});\n\n\tit(\"should return options.tags[''] for welcome slide \", () => {\n\t\tconst model = {\n\t\t\tdeck: {},\n\t\t\ttags: [\"model-tag-1\", \"model-tag-2\"],\n\t\t};\n\n\t\tconst options = {\n\t\t\ttags: {\n\t\t\t\t\"\": [\"deck-tags\"],\n\t\t\t\t\"slide-key\": [\"slide-tags\"],\n\t\t\t},\n\t\t};\n\n\t\tconst tags = BasePresentationModel.getTags(model, options);\n\n\t\texpect(tags).toEqual([\"deck-tags\"]);\n\t});\n});\n"],"file":"base-presentation-model.spec.js"}
1
+ {"version":3,"sources":["../../src/presentation/base-presentation-model.spec.js"],"names":["describe","it","config","BasePresentationModel","getVisibilityAndSequence","sequence","visible","url","expected","selectionID","expect","toEqual","choicelist","selections","id","tags","getTags","length","model","namespaced_key","options","deckTags","deck","adjunct","key","screenshots","DeckVersionScreenshotCollection","subject","image_256","team","filtered","filterScreenshotsByTeam","toJSON"],"mappings":"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","sourcesContent":["import { BasePresentationModel } from \"./base-presentation-model.js\";\nimport { DeckVersionScreenshotCollection } from \"../collections/deck-version-screenshots.js\";\n\ndescribe(\"#getVisibilityAndSequence\", () => {\n\tit(\"should return model defaults when no options\", () => {\n\t\tconst config = BasePresentationModel.getVisibilityAndSequence({\n\t\t\tsequence: 99,\n\t\t\tvisible: true,\n\t\t\turl: () => \"\",\n\t\t});\n\n\t\tconst expected = {\n\t\t\tsequence: 99,\n\t\t\tvisible: true,\n\t\t\tselectionID: null,\n\t\t};\n\n\t\texpect(config).toEqual(expected);\n\t});\n\n\tit(\"should return model defaults when no options\", () => {\n\t\tconst config = BasePresentationModel.getVisibilityAndSequence({\n\t\t\tsequence: 99,\n\t\t\tvisible: true,\n\t\t\turl: () => \"\",\n\t\t});\n\n\t\tconst expected = {\n\t\t\tsequence: 99,\n\t\t\tvisible: true,\n\t\t\tselectionID: null,\n\t\t};\n\n\t\texpect(config).toEqual(expected);\n\t});\n\n\tit(\"should return choicelist config\", () => {\n\t\tconst choicelist = [\n\t\t\t{\n\t\t\t\turl: \"bleh/meh\",\n\t\t\t\tvisible: true,\n\t\t\t},\n\t\t];\n\n\t\tconst config = BasePresentationModel.getVisibilityAndSequence(\n\t\t\t{\n\t\t\t\tsequence: 99,\n\t\t\t\tvisible: false,\n\t\t\t\turl: () => \"bleh/meh\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tchoicelist,\n\t\t\t}\n\t\t);\n\n\t\tconst expected = {\n\t\t\tsequence: 0,\n\t\t\tvisible: true,\n\t\t\tselectionID: null,\n\t\t};\n\n\t\texpect(config).toEqual(expected);\n\t});\n\n\tit(\"should return selections config\", () => {\n\t\tconst selections = [\n\t\t\t{\n\t\t\t\turl: \"bleh/meh\",\n\t\t\t\tvisible: true,\n\t\t\t\tsequence: 27,\n\t\t\t\tid: 58,\n\t\t\t},\n\t\t];\n\n\t\tconst config = BasePresentationModel.getVisibilityAndSequence(\n\t\t\t{\n\t\t\t\tsequence: 99,\n\t\t\t\tvisible: false,\n\t\t\t\turl: () => \"bleh/meh\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tselections,\n\t\t\t}\n\t\t);\n\n\t\tconst expected = {\n\t\t\tsequence: 27,\n\t\t\tvisible: true,\n\t\t\tselectionID: 58,\n\t\t};\n\n\t\texpect(config).toEqual(expected);\n\t});\n\n\tit(\"should return choicelist config if both are provided\", () => {\n\t\tconst choicelist = [\n\t\t\t{\n\t\t\t\turl: \"gah/meh\",\n\t\t\t\tvisible: false,\n\t\t\t},\n\t\t\t{\n\t\t\t\turl: \"bleh/meh\",\n\t\t\t\tvisible: true,\n\t\t\t},\n\t\t];\n\n\t\tconst selections = [\n\t\t\t{\n\t\t\t\turl: \"bleh/meh\",\n\t\t\t\tvisible: true,\n\t\t\t\tsequence: 27,\n\t\t\t\tid: 58,\n\t\t\t},\n\t\t];\n\n\t\tconst config = BasePresentationModel.getVisibilityAndSequence(\n\t\t\t{\n\t\t\t\tsequence: 99,\n\t\t\t\tvisible: false,\n\t\t\t\turl: () => \"bleh/meh\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tchoicelist,\n\t\t\t\tselections,\n\t\t\t}\n\t\t);\n\n\t\tconst expected = {\n\t\t\tsequence: 1,\n\t\t\tvisible: true,\n\t\t\tselectionID: null,\n\t\t};\n\n\t\texpect(config).toEqual(expected);\n\t});\n\n\t// adjuncts!!\n});\n\ndescribe(\"#getTags\", () => {\n\tit(\"should return empty array when no options or model tags\", () => {\n\t\tconst tags = BasePresentationModel.getTags({});\n\n\t\texpect(typeof tags).toEqual(\"object\");\n\t\texpect(tags.length).toEqual(0);\n\t});\n\n\tit(\"should return tags when no tags passed in options\", () => {\n\t\tconst model = {\n\t\t\ttags: [\"model-tag-1\", \"model-tag-2\"],\n\t\t};\n\t\tconst tags = BasePresentationModel.getTags(model);\n\n\t\texpect(tags).toEqual(model.tags);\n\t});\n\n\tit(\"should return tags for slide when tags passed in options\", () => {\n\t\tconst model = {\n\t\t\tnamespaced_key: \"slide-key\",\n\t\t\ttags: [\"model-tag-1\", \"model-tag-2\"],\n\t\t};\n\n\t\tconst options = {\n\t\t\tdeckTags: {\n\t\t\t\t\"\": [\"deck-tags\"],\n\t\t\t\t\"slide-key\": [\"slide-tags\"],\n\t\t\t},\n\t\t};\n\n\t\tconst tags = BasePresentationModel.getTags(model, options);\n\n\t\texpect(tags).toEqual([\"slide-tags\"]);\n\t});\n\n\tit(\"should return tags for welcome slide when tags passed in options\", () => {\n\t\tconst model = {\n\t\t\tdeck: {},\n\t\t\ttags: [\"model-tag-1\", \"model-tag-2\"],\n\t\t};\n\n\t\tconst options = {\n\t\t\tdeckTags: {\n\t\t\t\t\"\": [\"deck-tags\"],\n\t\t\t\t\"slide-key\": [\"slide-tags\"],\n\t\t\t},\n\t\t};\n\n\t\tconst tags = BasePresentationModel.getTags(model, options);\n\n\t\texpect(tags).toEqual([\"deck-tags\"]);\n\t});\n\n\tit(\"should return tags for an adjunct section when tags passed in options\", () => {\n\t\tconst model = {\n\t\t\tadjunct: true,\n\t\t\tkey: \"adjunctsection-key\",\n\t\t\ttags: [\"old-tag-1\", \"old-tag-2\"],\n\t\t};\n\n\t\tconst options = {\n\t\t\tdeckTags: {\n\t\t\t\t\"\": [\"deck-tags\"],\n\t\t\t\t\"adjunctsection-key\": [\"adjunctsection-tags\"],\n\t\t\t},\n\t\t};\n\n\t\tconst tags = BasePresentationModel.getTags(model, options);\n\n\t\texpect(tags).toEqual([\"adjunctsection-tags\"]);\n\t});\n\n\tit(\"should return tags for an adjunct slide when tags passed in options\", () => {\n\t\tconst model = {\n\t\t\tadjunct: true,\n\t\t\tkey: \"adjunctslide-key\",\n\t\t\ttags: [\"old-tag-1\", \"old-tag-2\"],\n\t\t};\n\n\t\tconst options = {\n\t\t\tdeckTags: {\n\t\t\t\t\"\": [\"deck-tags\"],\n\t\t\t\t\"section-key/adjunctslide-key\": [\"adjunctslide-tags\"],\n\t\t\t},\n\t\t};\n\n\t\tconst tags = BasePresentationModel.getTags(model, options);\n\n\t\texpect(tags).toEqual([\"adjunctslide-tags\"]);\n\t});\n});\n\ndescribe(\"#filterScreenshotsByTeam\", () => {\n\tconst screenshots = new DeckVersionScreenshotCollection([\n\t\t{\n\t\t\tsubject: \"/api/slides/1/\",\n\t\t\timage_256: \"global-screenshot-1.png\",\n\t\t\tteam: null,\n\t\t},\n\t\t{\n\t\t\tsubject: \"/api/slides/2/\",\n\t\t\timage_256: \"global-screenshot-2.png\",\n\t\t\tteam: null,\n\t\t},\n\t\t{\n\t\t\tsubject: \"/api/slides/1/\",\n\t\t\timage_256: \"team-1-screenshot.png\",\n\t\t\tteam: \"/api/teams/1/\",\n\t\t},\n\t\t{\n\t\t\tsubject: \"/api/sections/2/\",\n\t\t\timage_256: \"team-1-screenshot.png\",\n\t\t\tteam: \"/api/teams/1/\",\n\t\t},\n\t\t// Just for testing that the team filters don't get cross-contaminated\n\t\t{\n\t\t\tsubject: \"/api/sections/2/\",\n\t\t\timage_256: \"team-2-screenshot.png\",\n\t\t\tteam: \"/api/teams/2/\",\n\t\t},\n\t]);\n\n\tit(\"should just return global screenshots if team is null\", () => {\n\t\tconst filtered = BasePresentationModel.filterScreenshotsByTeam(\n\t\t\tscreenshots,\n\t\t\tnull\n\t\t).toJSON();\n\n\t\texpect(filtered).toEqual([\n\t\t\t{\n\t\t\t\tsubject: \"/api/slides/1/\",\n\t\t\t\timage_256: \"global-screenshot-1.png\",\n\t\t\t\tteam: null,\n\t\t\t},\n\t\t\t{\n\t\t\t\tsubject: \"/api/slides/2/\",\n\t\t\t\timage_256: \"global-screenshot-2.png\",\n\t\t\t\tteam: null,\n\t\t\t},\n\t\t]);\n\t});\n\n\tit(\"should return globals with team override\", () => {\n\t\tconst filtered = BasePresentationModel.filterScreenshotsByTeam(\n\t\t\tscreenshots,\n\t\t\t1\n\t\t).toJSON();\n\n\t\texpect(filtered).toEqual([\n\t\t\t{\n\t\t\t\timage_256: \"global-screenshot-2.png\",\n\t\t\t\tsubject: \"/api/slides/2/\",\n\t\t\t\tteam: null,\n\t\t\t},\n\t\t\t{\n\t\t\t\timage_256: \"team-1-screenshot.png\",\n\t\t\t\tsubject: \"/api/sections/2/\",\n\t\t\t\tteam: \"/api/teams/1/\",\n\t\t\t},\n\t\t\t{\n\t\t\t\timage_256: \"team-1-screenshot.png\",\n\t\t\t\tsubject: \"/api/slides/1/\",\n\t\t\t\tteam: \"/api/teams/1/\",\n\t\t\t},\n\t\t]);\n\t});\n});\n"],"file":"base-presentation-model.spec.js"}
@@ -39,9 +39,9 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
39
39
 
40
40
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
41
41
 
42
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
42
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
43
43
 
44
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
44
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
45
45
 
46
46
  /**
47
47
  * @constructor
@@ -66,6 +66,7 @@ var PresentationDeck = _basePresentationModel.BasePresentationModel.extend(
66
66
  * @property {boolean} editable
67
67
  * @property {array} tags
68
68
  * @property {number} version
69
+ * @property {string[]} cmsvalkey_set
69
70
  */
70
71
  props: {
71
72
  html: "string",
@@ -81,7 +82,8 @@ var PresentationDeck = _basePresentationModel.BasePresentationModel.extend(
81
82
  usesImpostorSections: "boolean",
82
83
  editable: "boolean",
83
84
  tags: "array",
84
- version: "number"
85
+ version: "number",
86
+ cmsvalkey_set: "array"
85
87
  },
86
88
 
87
89
  /**
@@ -136,11 +138,13 @@ PresentationDeck.createFromDeckVersion = function (deckVersionModel) {
136
138
 
137
139
  _lodash.default.defaults(options, {
138
140
  index: 0,
141
+ autoAdjuncts: new collections.AutoAdjunctCollection(),
139
142
  adjunctSections: new collections.AdjunctSectionCollection(),
140
143
  adjunctSlides: new collections.AdjunctSlideCollection(),
141
144
  adjunctSubSlides: new collections.AdjunctSubSlideCollection(),
142
145
  sectionSelections: new collections.SectionSelectionCollection(),
143
146
  slideSelections: new collections.SlideSelectionCollection(),
147
+ screenshots: new collections.DeckVersionScreenshotCollection(),
144
148
  rootAssetPath: null,
145
149
  templates: null,
146
150
  choicelist: null
@@ -164,7 +168,7 @@ PresentationDeck.createFromDeckVersion = function (deckVersionModel) {
164
168
  css: css,
165
169
  id: deckVersionModel.id,
166
170
  index: options.index,
167
- thumbnail: deckVersionModel.image_256,
171
+ thumbnail: PresentationDeck.getThumbnail(deckVersionModel, options.screenshots),
168
172
  deckID: deckVersionModel.deck.id,
169
173
  visible: true,
170
174
  key: deckVersionModel.deck.key,
@@ -173,7 +177,8 @@ PresentationDeck.createFromDeckVersion = function (deckVersionModel) {
173
177
  editable: tags.indexOf("editable") > -1,
174
178
  tags: tags,
175
179
  version: deckVersionModel.version,
176
- usesImpostorSections: (0, _utils.isImpostorDeck)(deckVersionModel)
180
+ usesImpostorSections: (0, _utils.isImpostorDeck)(deckVersionModel),
181
+ cmsvalkey_set: deckVersionModel.cmsvalkey_set || []
177
182
  });
178
183
 
179
184
  if (!deck.key) {
@@ -321,8 +326,28 @@ PresentationDeck.createFromDeckVersion = function (deckVersionModel) {
321
326
 
322
327
  if (options.templates && options.templates.length > 0) {
323
328
  deck.sections.add(options.templates.map(function (template, index) {
324
- return _presentationSection.PresentationSection.createFromTemplate(template, index, options.getUniqueAdjunctID());
329
+ return _presentationSection.PresentationSection.createFromTemplate(template, deck.sections.length + index, options.getUniqueAdjunctID());
325
330
  }));
331
+ } // This is generally only used by screenshots
332
+
333
+
334
+ if (options.autoAdjuncts) {
335
+ var autoSections = options.autoAdjuncts.map(function (auto, index) {
336
+ // We already have the template on the deckversion, so we can find it here.
337
+ if (!auto.template) {
338
+ throw new Error("Attempted to use an autoadjunct that has no template.");
339
+ }
340
+
341
+ var section = _presentationSection.PresentationSection.createFromTemplate(auto.template, deck.sections.length + index, options.getUniqueAdjunctID()); // We've just borrowed the "from template" method above. We want to add
342
+ // back some of the specific keys about the auto.
343
+
344
+
345
+ section.autoAdjunctID = auto.id;
346
+ section.key = auto.key;
347
+ section.title = auto.name;
348
+ return section;
349
+ });
350
+ deck.sections.add(autoSections);
326
351
  }
327
352
 
328
353
  (0, _utils.setSequentialSequences)(deck);
@@ -341,7 +366,9 @@ PresentationDeck.createFromManifestJSON = function (manifestJSON) {
341
366
  thumbnail: null,
342
367
  deckID: 1,
343
368
  title: "Local",
344
- version: 1
369
+ version: 1,
370
+ tags: manifestJSON.tags[""] || [],
371
+ cmsvalkey_set: []
345
372
  });
346
373
 
347
374
  var usesImpostorSections = _lodash.default.some(manifestJSON.tags, function (tags) {
@@ -362,7 +389,8 @@ PresentationDeck.createFromManifestJSON = function (manifestJSON) {
362
389
  html: _url.default.resolve(manifestJSON.getAssetPath(key), "index.html"),
363
390
  css: _url.default.resolve(manifestJSON.getAssetPath(key), "slide.css"),
364
391
  title: manifestJSON.titles[key],
365
- tags: manifestJSON.tags[key] || []
392
+ tags: manifestJSON.tags[key] || [],
393
+ cmsvalkey_set: []
366
394
  };
367
395
  });
368
396
  items = _lodash.default.sortBy(items, "sequence");