@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 +1 @@
1
- {"version":3,"sources":["../../src/presentation/presentation-deck.js"],"names":["PresentationDeck","BasePresentationModel","extend","props","html","css","id","deckID","index","thumbnail","visible","key","common","title","usesImpostorSections","editable","tags","version","children","realSection","derived","welcomeSlide","fn","PresentationSection","getAttributes","isWelcome","collections","sections","url","_url","DeckVersionModel","createFromDeckVersion","deckVersionModel","options","_","defaults","adjunctSections","AdjunctSectionCollection","adjunctSlides","AdjunctSlideCollection","adjunctSubSlides","AdjunctSubSlideCollection","sectionSelections","SectionSelectionCollection","slideSelections","SlideSelectionCollection","rootAssetPath","templates","choicelist","assetRoot","index_asset","getTags","deck","image_256","manifest_json","indexOf","log","warn","toJSON","selections","map","selection","sequence","section","concat","slide","maxID","getUniqueAdjunctID","section_set","forEach","sectionModel","createFromSection","addSlides","slide_set","add","filter","adjunctSection","createFromAdjunctSection","first","adjunctSlideLimit","adjunctslide_limit","slides","slideModel","isSection","createFromImpostorSection","PresentationSlide","createFromSlide","push","adjunctSlideModel","createFromAdjunctSlide","models","reverse","sectionSlides","Math","floor","length","template","createFromTemplate","createFromManifestJSON","manifestJSON","parseInt","uniqueId","url2","resolve","getAssetPath","some","items","Object","keys","titles","ordering","splitKey","split","newKey","sortBy","item","startIndex","endIndex","slice","createFromManifestImpostor","sectionKeys","getTemplateAssetPath","minID","max"],"mappings":"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","sourcesContent":["import \"./presentation-sections.js\";\n\nimport * as collections from \"../collections\";\n\nimport {\n\tgetMaxID,\n\tisImpostor,\n\tisImpostorDeck,\n\tsetSequentialSequences,\n} from \"../utils.js\";\n\nimport { BasePresentationModel } from \"./base-presentation-model\";\nimport { DeckVersionModel } from \"../models\";\nimport { PresentationSection } from \"./presentation-section\";\nimport { PresentationSlide } from \"./presentation-slide\";\nimport _ from \"lodash\";\nimport { getAssetRoot } from \"../index.js\";\nimport log from \"../log.js\";\nimport { register } from \"../state-register\";\nimport url2 from \"url\";\n\n/**\n * @constructor\n * @alias presentation.PresentationDeck\n * @extends presentation.BasePresentationModel\n */\nexport const PresentationDeck = BasePresentationModel.extend(\n\t/** @lends presentation.PresentationDeck# */ {\n\t\t/**\n\t\t * @property {string} html\n\t\t * @property {string} css\n\t\t * @property {number} id\n\t\t * @property {number} deckID\n\t\t * @property {number} index\n\t\t * @property {string} thumbnail\n\t\t * @property {boolean} visible\n\t\t * @property {string} key\n\t\t * @property {object} common\n\t\t * @property {string} title\n\t\t * @property {boolean} usesImpostorSections\n\t\t * @property {boolean} editable\n\t\t * @property {array} tags\n\t\t * @property {number} version\n\t\t */\n\t\tprops: {\n\t\t\thtml: \"string\",\n\t\t\tcss: \"string\",\n\t\t\tid: \"number\",\n\t\t\tdeckID: \"number\",\n\t\t\tindex: \"number\",\n\t\t\tthumbnail: \"string\",\n\t\t\tvisible: \"boolean\",\n\t\t\tkey: \"string\",\n\t\t\tcommon: \"object\",\n\t\t\ttitle: \"string\",\n\t\t\tusesImpostorSections: \"boolean\",\n\t\t\teditable: \"boolean\",\n\t\t\ttags: \"array\",\n\t\t\tversion: \"number\",\n\t\t},\n\n\t\t/**\n\t\t * @property {presentation.PresentationSection} realSection\n\t\t */\n\t\tchildren: {\n\t\t\trealSection: \"PresentationSection\",\n\t\t},\n\n\t\tderived: {\n\t\t\twelcomeSlide: {\n\t\t\t\tfn: function () {\n\t\t\t\t\treturn new PresentationSection({\n\t\t\t\t\t\t...this.getAttributes({ props: true }),\n\t\t\t\t\t\tisWelcome: true,\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * @property {presentation.PresentationSectionCollection} sections\n\t\t */\n\t\tcollections: {\n\t\t\tsections: \"PresentationSectionCollection\",\n\t\t},\n\n\t\turl() {\n\t\t\tif (!this._url) {\n\t\t\t\tthis._url = new DeckVersionModel({ id: this.id }).url();\n\t\t\t}\n\n\t\t\treturn this._url;\n\t\t},\n\t}\n);\n\n/**\n * @function createFromURL\n * @memberof presentation.PresentationDeck\n * @param {models.DeckVersionModel} deckVersionModel\n * @param {object} [options]\n * @param {number} [options.index = 0]\n * @param {collections.AdjunctSectionCollection}} [adjunctSections]\n * @returns {presentation.PresentationDeck}\n */\nPresentationDeck.createFromDeckVersion = function (\n\tdeckVersionModel,\n\toptions = {}\n) {\n\t_.defaults(options, {\n\t\tindex: 0,\n\t\tadjunctSections: new collections.AdjunctSectionCollection(),\n\t\tadjunctSlides: new collections.AdjunctSlideCollection(),\n\t\tadjunctSubSlides: new collections.AdjunctSubSlideCollection(),\n\t\tsectionSelections: new collections.SectionSelectionCollection(),\n\t\tslideSelections: new collections.SlideSelectionCollection(),\n\t\trootAssetPath: null,\n\t\ttemplates: null,\n\t\tchoicelist: null,\n\t});\n\n\tconst assetRoot = getAssetRoot(deckVersionModel.index_asset.url());\n\tlet html;\n\tlet css;\n\n\tif (options.rootAssetPath) {\n\t\thtml = `${options.rootAssetPath}index.html`;\n\t\tcss = `${options.rootAssetPath}slide.css`;\n\t} else {\n\t\thtml = `${assetRoot}index.html`;\n\t\tcss = `${assetRoot}slide.css`;\n\t}\n\n\tconst tags = PresentationDeck.getTags(deckVersionModel, options);\n\n\tconst deck = new PresentationDeck({\n\t\thtml,\n\t\tcss,\n\t\tid: deckVersionModel.id,\n\t\tindex: options.index,\n\t\tthumbnail: deckVersionModel.image_256,\n\t\tdeckID: deckVersionModel.deck.id,\n\t\tvisible: true,\n\t\tkey: deckVersionModel.deck.key,\n\t\tcommon: deckVersionModel.manifest_json.common,\n\t\ttitle: deckVersionModel.deck.title,\n\t\teditable: tags.indexOf(\"editable\") > -1,\n\t\ttags,\n\t\tversion: deckVersionModel.version,\n\t\tusesImpostorSections: isImpostorDeck(deckVersionModel),\n\t});\n\n\tif (!deck.key) {\n\t\tlog.warn(\n\t\t\t\"Deck key not available to presentation\",\n\t\t\tdeckVersionModel.deck.toJSON()\n\t\t);\n\t}\n\n\t// Convert the selections to an easier format to use later\n\tconst sectionSelections = options.sectionSelections;\n\tconst slideSelections = options.slideSelections;\n\n\toptions.selections = sectionSelections\n\t\t.map((selection) => {\n\t\t\treturn {\n\t\t\t\tsequence: selection.sequence,\n\t\t\t\tvisible: selection.visible,\n\t\t\t\turl: selection.section.url(),\n\t\t\t\tid: selection.id,\n\t\t\t};\n\t\t})\n\t\t.concat(\n\t\t\tslideSelections.map((selection) => {\n\t\t\t\treturn {\n\t\t\t\t\tsequence: selection.sequence,\n\t\t\t\t\tvisible: selection.visible,\n\t\t\t\t\turl: selection.slide.url(),\n\t\t\t\t\tid: selection.id,\n\t\t\t\t};\n\t\t\t})\n\t\t);\n\n\t// We want all adjuncts to have fake ids that can't possibly overlap with the ids of\n\t// normal sections, slides and subslides, so we make a base ID that is larger than\n\t// all existing IDs then use the getUniqueAdjunctID function to retrieve an incremented ID\n\tlet maxID = getMaxID(deckVersionModel);\n\n\toptions.getUniqueAdjunctID = function () {\n\t\treturn ++maxID;\n\t};\n\n\t// We have four different ways to create a presentation structure here - we are\n\t// using either selections or a choicelist, and the deck is either a normal\n\t// deck or an impostor deck. Setting up a non-impostor deck is easier, so I've\n\t// split this up into two primary methods to cover those two branches, and the models\n\t// internally retrieve the correct sequence & visibility data depending on whether\n\t// we're using selections or a choicelist.\n\n\tif (!deck.usesImpostorSections) {\n\t\t// Non impostor deck using selections or a choicelist. Slides are already\n\t\t// associated with the correct sections, so all we have to do is turn\n\t\t// everything into a presentation model and pass the options through with\n\t\t// the selections or choicelist data.\n\n\t\tdeckVersionModel.section_set.forEach((sectionModel) => {\n\t\t\tconst section = PresentationSection.createFromSection(\n\t\t\t\tsectionModel,\n\t\t\t\toptions\n\t\t\t);\n\n\t\t\tsection.addSlides(sectionModel.slide_set, options);\n\t\t\tdeck.sections.add(section);\n\n\t\t\tconst adjunctSlides = options.adjunctSlides.filter((slide) => {\n\t\t\t\treturn slide.section && slide.section.id === section.id;\n\t\t\t});\n\n\t\t\tsection.addSlides(adjunctSlides, options);\n\t\t});\n\n\t\toptions.adjunctSections.forEach((adjunctSection) => {\n\t\t\tconst section = PresentationSection.createFromAdjunctSection(\n\t\t\t\tadjunctSection,\n\t\t\t\tDeckVersionModel,\n\t\t\t\toptions\n\t\t\t);\n\n\t\t\tdeck.sections.add(section);\n\t\t});\n\t} else {\n\t\t// Impostor deck using selections or a choicelist. The deckversion.section_set\n\t\t// only contains one section, which is the \"real\" section but is not used in\n\t\t// the presentation. Some slides have the tag \"section-header\", and these slides\n\t\t// will be turned into sections and may be given sets of slides.\n\n\t\tconst realSection = deckVersionModel.section_set.first();\n\n\t\tdeck.realSection = new PresentationSection({\n\t\t\tid: realSection.id,\n\t\t\tkey: realSection.key,\n\t\t\tadjunctSlideLimit: realSection.adjunctslide_limit,\n\t\t});\n\n\t\tlet slides = [];\n\n\t\t// First we go through all slides and separate the impostor sections from the\n\t\t// normal slides. If a slide is a \"section header\" then we turn it into a presentation\n\t\t// section; if it is just a slide then we add it to the slides array, which will contain\n\t\t// all slides. We can't allocate slides to sections yet because we don't know\n\t\t// which section a slide belongs to.\n\t\trealSection.slide_set.forEach((slideModel) => {\n\t\t\tconst isSection = isImpostor(slideModel);\n\n\t\t\tif (isSection) {\n\t\t\t\tconst section = PresentationSection.createFromImpostorSection(\n\t\t\t\t\tslideModel,\n\t\t\t\t\tDeckVersionModel,\n\t\t\t\t\toptions\n\t\t\t\t);\n\n\t\t\t\tdeck.sections.add(section);\n\t\t\t} else {\n\t\t\t\tconst slide = PresentationSlide.createFromSlide(slideModel, options);\n\t\t\t\tslides.push(slide);\n\t\t\t}\n\t\t});\n\n\t\t// We filter the adjunct slides and add all the non-section slides to the slides array too.\n\t\toptions.adjunctSlides\n\t\t\t.filter((slide) => !isImpostor(slide))\n\t\t\t.forEach((adjunctSlideModel) => {\n\t\t\t\tconst slide = PresentationSlide.createFromAdjunctSlide(\n\t\t\t\t\tadjunctSlideModel,\n\t\t\t\t\tnull,\n\t\t\t\t\toptions\n\t\t\t\t);\n\n\t\t\t\tslides.push(slide);\n\t\t\t});\n\n\t\t// Next we go through the sections backwards and use the sequence to find all slides\n\t\t// which belong to a section. Doing this backwards means that we only need to know\n\t\t// one section's sequence at a time, e.g. if I went forwards and the first section\n\t\t// had the sequence 1, I know that I can start looking for slides with sequence > 1\n\t\t// but I don't know where to stop. If I start with the last section and look for\n\t\t// slides with the sequence > 110 then I know that all slides with a sequence > 110\n\t\t// are valid. I then remove those slides from the slides array and move down to the\n\t\t// next section.\n\t\tdeck.sections.models.reverse().forEach((section) => {\n\t\t\tconst sectionSlides = slides.filter(\n\t\t\t\t(slide) => slide.sequence > section.sequence\n\t\t\t);\n\n\t\t\tsection.slides.add(sectionSlides);\n\n\t\t\t// Slides have a \"section\" on their model that represents the section\n\t\t\t// that they belong to. Because this is an impostor deck, there's a\n\t\t\t// good chance that the section is now incorrect for normal slides,\n\t\t\t// and a 100% chance that it's incorrect for adjunct slides as we\n\t\t\t// didn't populate the section field when we created the adjunct slides.\n\t\t\t// We update those now with the correct section.\n\t\t\tsection.slides.forEach((slide) => {\n\t\t\t\tslide.section = section.id;\n\t\t\t});\n\n\t\t\tslides = slides.filter((slide) => slide.sequence <= section.sequence);\n\t\t});\n\n\t\t// Average the adjunct slide limit used across the entire deck over each section\n\t\t// in the deck. We do this before we add the adjunct impostor sections, 'cause you\n\t\t// can't add custom slides to those.\n\t\tdeck.sections.forEach((section) => {\n\t\t\tsection.adjunctSlideLimit = section.adjunctSlideLimit\n\t\t\t\t? section.adjunctSlideLimit\n\t\t\t\t: Math.floor(realSection.adjunctSlideLimit / deck.sections.length);\n\t\t});\n\n\t\t// Return the sections to the correct order\n\t\tdeck.sections.models.reverse();\n\n\t\t// Finally, we add the adjunct impostor sections. These are adjunct slides with\n\t\t// the \"section-header\" tag and they work the same way as the slide impostors,\n\t\t// but because adjunct sections can't have slides we're adding them after the\n\t\t// slide-assigning process\n\t\toptions.adjunctSlides\n\t\t\t.filter((slide) => isImpostor(slide))\n\t\t\t.forEach((adjunctSlideModel) => {\n\t\t\t\tconst adjunctSection = PresentationSection.createFromAdjunctSection(\n\t\t\t\t\tadjunctSlideModel,\n\t\t\t\t\tDeckVersionModel,\n\t\t\t\t\toptions\n\t\t\t\t);\n\n\t\t\t\tdeck.sections.add(adjunctSection);\n\t\t\t});\n\t}\n\n\t// Add templates as sections if present. This is only used by the CDK.\n\tif (options.templates && options.templates.length > 0) {\n\t\tdeck.sections.add(\n\t\t\toptions.templates.map((template, index) => {\n\t\t\t\treturn PresentationSection.createFromTemplate(\n\t\t\t\t\ttemplate,\n\t\t\t\t\tindex,\n\t\t\t\t\toptions.getUniqueAdjunctID()\n\t\t\t\t);\n\t\t\t})\n\t\t);\n\t}\n\n\tsetSequentialSequences(deck);\n\n\treturn deck;\n};\n\nPresentationDeck.createFromManifestJSON = function (manifestJSON) {\n\tconst deck = new PresentationDeck({\n\t\tid: parseInt(_.uniqueId(), 10),\n\t\tindex: 0,\n\t\tvisible: true,\n\t\tkey: manifestJSON.key || \"manifest_deck\",\n\t\thtml: url2.resolve(manifestJSON.getAssetPath(), \"index.html\"),\n\t\tcss: url2.resolve(manifestJSON.getAssetPath(), \"slide.css\"),\n\t\tcommon: manifestJSON.common,\n\t\tthumbnail: null,\n\t\tdeckID: 1,\n\t\ttitle: \"Local\",\n\t\tversion: 1,\n\t});\n\n\tconst usesImpostorSections = _.some(\n\t\tmanifestJSON.tags,\n\t\t(tags) => tags.indexOf(\"section-header\") !== -1\n\t);\n\tdeck.usesImpostorSections = usesImpostorSections;\n\n\tif (usesImpostorSections) {\n\t\tdeck.usesImpostorSections = true;\n\n\t\tlet items = Object.keys(manifestJSON.titles).map((key) => {\n\t\t\tconst sequence = manifestJSON.toJSON().ordering[key];\n\t\t\tconst splitKey = key.split(\"/\");\n\t\t\tconst newKey = splitKey[splitKey.length - 1];\n\n\t\t\treturn {\n\t\t\t\tkey: newKey,\n\t\t\t\tsequence,\n\t\t\t\thtml: url2.resolve(manifestJSON.getAssetPath(key), \"index.html\"),\n\t\t\t\tcss: url2.resolve(manifestJSON.getAssetPath(key), \"slide.css\"),\n\t\t\t\ttitle: manifestJSON.titles[key],\n\t\t\t\ttags: manifestJSON.tags[key] || [],\n\t\t\t};\n\t\t});\n\n\t\titems = _.sortBy(items, \"sequence\");\n\n\t\tconst sections = items.filter(\n\t\t\t(item) => item.tags.indexOf(\"section-header\") !== -1\n\t\t);\n\n\t\tsections.forEach((item, index) => {\n\t\t\tconst startIndex = items.indexOf(item) + 1;\n\t\t\tconst endIndex = sections[index + 1]\n\t\t\t\t? items.indexOf(sections[index + 1])\n\t\t\t\t: items.length;\n\n\t\t\tconst slides = items.slice(startIndex, endIndex);\n\n\t\t\titem.slides = slides;\n\t\t});\n\n\t\tdeck.sections.add(\n\t\t\tsections.map((section, index) => {\n\t\t\t\treturn PresentationSection.createFromManifestImpostor(section, index);\n\t\t\t})\n\t\t);\n\n\t\tdeck.realSection = PresentationSection.createFromManifestImpostor(items[0]);\n\t} else {\n\t\tconst sectionKeys = Object.keys(manifestJSON.titles).filter((title) => {\n\t\t\treturn title.split(\"/\").length === 1;\n\t\t});\n\n\t\tdeck.sections.add(\n\t\t\tsectionKeys.map((key, index) => {\n\t\t\t\treturn PresentationSection.createFromManifestJSON(\n\t\t\t\t\tmanifestJSON,\n\t\t\t\t\tkey,\n\t\t\t\t\tindex\n\t\t\t\t);\n\t\t\t})\n\t\t);\n\t}\n\n\tif (manifestJSON.templates) {\n\t\tconst templates = Object.keys(manifestJSON.templates).map((key) => {\n\t\t\treturn {\n\t\t\t\t...manifestJSON.templates[key],\n\t\t\t\tkey,\n\t\t\t\tsequence: manifestJSON.templates[key].ordering,\n\t\t\t\tindex_asset: {\n\t\t\t\t\turl: url2.resolve(\n\t\t\t\t\t\tmanifestJSON.getTemplateAssetPath(key),\n\t\t\t\t\t\t\"index.html\"\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t};\n\t\t});\n\n\t\tconst minID = _.max(_.map(deck.sections.toJSON(), \"id\"));\n\n\t\tdeck.sections.add(\n\t\t\ttemplates.map((template, index) => {\n\t\t\t\treturn PresentationSection.createFromTemplate(template, index, minID);\n\t\t\t})\n\t\t);\n\t}\n\n\treturn deck;\n};\n\nregister(\"PresentationDeck\", PresentationDeck);\n"],"file":"presentation-deck.js"}
1
+ {"version":3,"sources":["../../src/presentation/presentation-deck.js"],"names":["PresentationDeck","BasePresentationModel","extend","props","html","css","id","deckID","index","thumbnail","visible","key","common","title","usesImpostorSections","editable","tags","version","cmsvalkey_set","children","realSection","derived","welcomeSlide","fn","PresentationSection","getAttributes","isWelcome","collections","sections","url","_url","DeckVersionModel","createFromDeckVersion","deckVersionModel","options","_","defaults","autoAdjuncts","AutoAdjunctCollection","adjunctSections","AdjunctSectionCollection","adjunctSlides","AdjunctSlideCollection","adjunctSubSlides","AdjunctSubSlideCollection","sectionSelections","SectionSelectionCollection","slideSelections","SlideSelectionCollection","screenshots","DeckVersionScreenshotCollection","rootAssetPath","templates","choicelist","assetRoot","index_asset","getTags","deck","getThumbnail","manifest_json","indexOf","log","warn","toJSON","selections","map","selection","sequence","section","concat","slide","maxID","getUniqueAdjunctID","section_set","forEach","sectionModel","createFromSection","addSlides","slide_set","add","filter","adjunctSection","createFromAdjunctSection","first","adjunctSlideLimit","adjunctslide_limit","slides","slideModel","isSection","createFromImpostorSection","PresentationSlide","createFromSlide","push","adjunctSlideModel","createFromAdjunctSlide","models","reverse","sectionSlides","Math","floor","length","template","createFromTemplate","autoSections","auto","Error","autoAdjunctID","name","createFromManifestJSON","manifestJSON","parseInt","uniqueId","url2","resolve","getAssetPath","some","items","Object","keys","titles","ordering","splitKey","split","newKey","sortBy","item","startIndex","endIndex","slice","createFromManifestImpostor","sectionKeys","getTemplateAssetPath","minID","max"],"mappings":"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","sourcesContent":["import \"./presentation-sections.js\";\n\nimport * as collections from \"../collections\";\n\nimport {\n\tgetMaxID,\n\tisImpostor,\n\tisImpostorDeck,\n\tsetSequentialSequences,\n} from \"../utils.js\";\n\nimport { BasePresentationModel } from \"./base-presentation-model\";\nimport { DeckVersionModel } from \"../models\";\nimport { PresentationSection } from \"./presentation-section\";\nimport { PresentationSlide } from \"./presentation-slide\";\nimport _ from \"lodash\";\nimport { getAssetRoot } from \"../index.js\";\nimport log from \"../log.js\";\nimport { register } from \"../state-register\";\nimport url2 from \"url\";\n\n/**\n * @constructor\n * @alias presentation.PresentationDeck\n * @extends presentation.BasePresentationModel\n */\nexport const PresentationDeck = BasePresentationModel.extend(\n\t/** @lends presentation.PresentationDeck# */ {\n\t\t/**\n\t\t * @property {string} html\n\t\t * @property {string} css\n\t\t * @property {number} id\n\t\t * @property {number} deckID\n\t\t * @property {number} index\n\t\t * @property {string} thumbnail\n\t\t * @property {boolean} visible\n\t\t * @property {string} key\n\t\t * @property {object} common\n\t\t * @property {string} title\n\t\t * @property {boolean} usesImpostorSections\n\t\t * @property {boolean} editable\n\t\t * @property {array} tags\n\t\t * @property {number} version\n\t\t * @property {string[]} cmsvalkey_set\n\t\t */\n\t\tprops: {\n\t\t\thtml: \"string\",\n\t\t\tcss: \"string\",\n\t\t\tid: \"number\",\n\t\t\tdeckID: \"number\",\n\t\t\tindex: \"number\",\n\t\t\tthumbnail: \"string\",\n\t\t\tvisible: \"boolean\",\n\t\t\tkey: \"string\",\n\t\t\tcommon: \"object\",\n\t\t\ttitle: \"string\",\n\t\t\tusesImpostorSections: \"boolean\",\n\t\t\teditable: \"boolean\",\n\t\t\ttags: \"array\",\n\t\t\tversion: \"number\",\n\t\t\tcmsvalkey_set: \"array\",\n\t\t},\n\n\t\t/**\n\t\t * @property {presentation.PresentationSection} realSection\n\t\t */\n\t\tchildren: {\n\t\t\trealSection: \"PresentationSection\",\n\t\t},\n\n\t\tderived: {\n\t\t\twelcomeSlide: {\n\t\t\t\tfn: function () {\n\t\t\t\t\treturn new PresentationSection({\n\t\t\t\t\t\t...this.getAttributes({ props: true }),\n\t\t\t\t\t\tisWelcome: true,\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * @property {presentation.PresentationSectionCollection} sections\n\t\t */\n\t\tcollections: {\n\t\t\tsections: \"PresentationSectionCollection\",\n\t\t},\n\n\t\turl() {\n\t\t\tif (!this._url) {\n\t\t\t\tthis._url = new DeckVersionModel({ id: this.id }).url();\n\t\t\t}\n\n\t\t\treturn this._url;\n\t\t},\n\t}\n);\n\n/**\n * @function createFromURL\n * @memberof presentation.PresentationDeck\n * @param {models.DeckVersionModel} deckVersionModel\n * @param {object} [options]\n * @param {number} [options.index = 0]\n * @param {collections.AdjunctSectionCollection}} [adjunctSections]\n * @returns {presentation.PresentationDeck}\n */\nPresentationDeck.createFromDeckVersion = function (\n\tdeckVersionModel,\n\toptions = {}\n) {\n\t_.defaults(options, {\n\t\tindex: 0,\n\t\tautoAdjuncts: new collections.AutoAdjunctCollection(),\n\t\tadjunctSections: new collections.AdjunctSectionCollection(),\n\t\tadjunctSlides: new collections.AdjunctSlideCollection(),\n\t\tadjunctSubSlides: new collections.AdjunctSubSlideCollection(),\n\t\tsectionSelections: new collections.SectionSelectionCollection(),\n\t\tslideSelections: new collections.SlideSelectionCollection(),\n\t\tscreenshots: new collections.DeckVersionScreenshotCollection(),\n\t\trootAssetPath: null,\n\t\ttemplates: null,\n\t\tchoicelist: null,\n\t});\n\n\tconst assetRoot = getAssetRoot(deckVersionModel.index_asset.url());\n\tlet html;\n\tlet css;\n\n\tif (options.rootAssetPath) {\n\t\thtml = `${options.rootAssetPath}index.html`;\n\t\tcss = `${options.rootAssetPath}slide.css`;\n\t} else {\n\t\thtml = `${assetRoot}index.html`;\n\t\tcss = `${assetRoot}slide.css`;\n\t}\n\n\tconst tags = PresentationDeck.getTags(deckVersionModel, options);\n\n\tconst deck = new PresentationDeck({\n\t\thtml,\n\t\tcss,\n\t\tid: deckVersionModel.id,\n\t\tindex: options.index,\n\t\tthumbnail: PresentationDeck.getThumbnail(\n\t\t\tdeckVersionModel,\n\t\t\toptions.screenshots\n\t\t),\n\t\tdeckID: deckVersionModel.deck.id,\n\t\tvisible: true,\n\t\tkey: deckVersionModel.deck.key,\n\t\tcommon: deckVersionModel.manifest_json.common,\n\t\ttitle: deckVersionModel.deck.title,\n\t\teditable: tags.indexOf(\"editable\") > -1,\n\t\ttags,\n\t\tversion: deckVersionModel.version,\n\t\tusesImpostorSections: isImpostorDeck(deckVersionModel),\n\t\tcmsvalkey_set: deckVersionModel.cmsvalkey_set || [],\n\t});\n\n\tif (!deck.key) {\n\t\tlog.warn(\n\t\t\t\"Deck key not available to presentation\",\n\t\t\tdeckVersionModel.deck.toJSON()\n\t\t);\n\t}\n\n\t// Convert the selections to an easier format to use later\n\tconst sectionSelections = options.sectionSelections;\n\tconst slideSelections = options.slideSelections;\n\n\toptions.selections = sectionSelections\n\t\t.map((selection) => {\n\t\t\treturn {\n\t\t\t\tsequence: selection.sequence,\n\t\t\t\tvisible: selection.visible,\n\t\t\t\turl: selection.section.url(),\n\t\t\t\tid: selection.id,\n\t\t\t};\n\t\t})\n\t\t.concat(\n\t\t\tslideSelections.map((selection) => {\n\t\t\t\treturn {\n\t\t\t\t\tsequence: selection.sequence,\n\t\t\t\t\tvisible: selection.visible,\n\t\t\t\t\turl: selection.slide.url(),\n\t\t\t\t\tid: selection.id,\n\t\t\t\t};\n\t\t\t})\n\t\t);\n\n\t// We want all adjuncts to have fake ids that can't possibly overlap with the ids of\n\t// normal sections, slides and subslides, so we make a base ID that is larger than\n\t// all existing IDs then use the getUniqueAdjunctID function to retrieve an incremented ID\n\tlet maxID = getMaxID(deckVersionModel);\n\n\toptions.getUniqueAdjunctID = function () {\n\t\treturn ++maxID;\n\t};\n\n\t// We have four different ways to create a presentation structure here - we are\n\t// using either selections or a choicelist, and the deck is either a normal\n\t// deck or an impostor deck. Setting up a non-impostor deck is easier, so I've\n\t// split this up into two primary methods to cover those two branches, and the models\n\t// internally retrieve the correct sequence & visibility data depending on whether\n\t// we're using selections or a choicelist.\n\n\tif (!deck.usesImpostorSections) {\n\t\t// Non impostor deck using selections or a choicelist. Slides are already\n\t\t// associated with the correct sections, so all we have to do is turn\n\t\t// everything into a presentation model and pass the options through with\n\t\t// the selections or choicelist data.\n\n\t\tdeckVersionModel.section_set.forEach((sectionModel) => {\n\t\t\tconst section = PresentationSection.createFromSection(\n\t\t\t\tsectionModel,\n\t\t\t\toptions\n\t\t\t);\n\n\t\t\tsection.addSlides(sectionModel.slide_set, options);\n\t\t\tdeck.sections.add(section);\n\n\t\t\tconst adjunctSlides = options.adjunctSlides.filter((slide) => {\n\t\t\t\treturn slide.section && slide.section.id === section.id;\n\t\t\t});\n\n\t\t\tsection.addSlides(adjunctSlides, options);\n\t\t});\n\n\t\toptions.adjunctSections.forEach((adjunctSection) => {\n\t\t\tconst section = PresentationSection.createFromAdjunctSection(\n\t\t\t\tadjunctSection,\n\t\t\t\tDeckVersionModel,\n\t\t\t\toptions\n\t\t\t);\n\n\t\t\tdeck.sections.add(section);\n\t\t});\n\t} else {\n\t\t// Impostor deck using selections or a choicelist. The deckversion.section_set\n\t\t// only contains one section, which is the \"real\" section but is not used in\n\t\t// the presentation. Some slides have the tag \"section-header\", and these slides\n\t\t// will be turned into sections and may be given sets of slides.\n\n\t\tconst realSection = deckVersionModel.section_set.first();\n\n\t\tdeck.realSection = new PresentationSection({\n\t\t\tid: realSection.id,\n\t\t\tkey: realSection.key,\n\t\t\tadjunctSlideLimit: realSection.adjunctslide_limit,\n\t\t});\n\n\t\tlet slides = [];\n\n\t\t// First we go through all slides and separate the impostor sections from the\n\t\t// normal slides. If a slide is a \"section header\" then we turn it into a presentation\n\t\t// section; if it is just a slide then we add it to the slides array, which will contain\n\t\t// all slides. We can't allocate slides to sections yet because we don't know\n\t\t// which section a slide belongs to.\n\t\trealSection.slide_set.forEach((slideModel) => {\n\t\t\tconst isSection = isImpostor(slideModel);\n\n\t\t\tif (isSection) {\n\t\t\t\tconst section = PresentationSection.createFromImpostorSection(\n\t\t\t\t\tslideModel,\n\t\t\t\t\tDeckVersionModel,\n\t\t\t\t\toptions\n\t\t\t\t);\n\n\t\t\t\tdeck.sections.add(section);\n\t\t\t} else {\n\t\t\t\tconst slide = PresentationSlide.createFromSlide(slideModel, options);\n\t\t\t\tslides.push(slide);\n\t\t\t}\n\t\t});\n\n\t\t// We filter the adjunct slides and add all the non-section slides to the slides array too.\n\t\toptions.adjunctSlides\n\t\t\t.filter((slide) => !isImpostor(slide))\n\t\t\t.forEach((adjunctSlideModel) => {\n\t\t\t\tconst slide = PresentationSlide.createFromAdjunctSlide(\n\t\t\t\t\tadjunctSlideModel,\n\t\t\t\t\tnull,\n\t\t\t\t\toptions\n\t\t\t\t);\n\n\t\t\t\tslides.push(slide);\n\t\t\t});\n\n\t\t// Next we go through the sections backwards and use the sequence to find all slides\n\t\t// which belong to a section. Doing this backwards means that we only need to know\n\t\t// one section's sequence at a time, e.g. if I went forwards and the first section\n\t\t// had the sequence 1, I know that I can start looking for slides with sequence > 1\n\t\t// but I don't know where to stop. If I start with the last section and look for\n\t\t// slides with the sequence > 110 then I know that all slides with a sequence > 110\n\t\t// are valid. I then remove those slides from the slides array and move down to the\n\t\t// next section.\n\t\tdeck.sections.models.reverse().forEach((section) => {\n\t\t\tconst sectionSlides = slides.filter(\n\t\t\t\t(slide) => slide.sequence > section.sequence\n\t\t\t);\n\n\t\t\tsection.slides.add(sectionSlides);\n\n\t\t\t// Slides have a \"section\" on their model that represents the section\n\t\t\t// that they belong to. Because this is an impostor deck, there's a\n\t\t\t// good chance that the section is now incorrect for normal slides,\n\t\t\t// and a 100% chance that it's incorrect for adjunct slides as we\n\t\t\t// didn't populate the section field when we created the adjunct slides.\n\t\t\t// We update those now with the correct section.\n\t\t\tsection.slides.forEach((slide) => {\n\t\t\t\tslide.section = section.id;\n\t\t\t});\n\n\t\t\tslides = slides.filter((slide) => slide.sequence <= section.sequence);\n\t\t});\n\n\t\t// Average the adjunct slide limit used across the entire deck over each section\n\t\t// in the deck. We do this before we add the adjunct impostor sections, 'cause you\n\t\t// can't add custom slides to those.\n\t\tdeck.sections.forEach((section) => {\n\t\t\tsection.adjunctSlideLimit = section.adjunctSlideLimit\n\t\t\t\t? section.adjunctSlideLimit\n\t\t\t\t: Math.floor(realSection.adjunctSlideLimit / deck.sections.length);\n\t\t});\n\n\t\t// Return the sections to the correct order\n\t\tdeck.sections.models.reverse();\n\n\t\t// Finally, we add the adjunct impostor sections. These are adjunct slides with\n\t\t// the \"section-header\" tag and they work the same way as the slide impostors,\n\t\t// but because adjunct sections can't have slides we're adding them after the\n\t\t// slide-assigning process\n\t\toptions.adjunctSlides\n\t\t\t.filter((slide) => isImpostor(slide))\n\t\t\t.forEach((adjunctSlideModel) => {\n\t\t\t\tconst adjunctSection = PresentationSection.createFromAdjunctSection(\n\t\t\t\t\tadjunctSlideModel,\n\t\t\t\t\tDeckVersionModel,\n\t\t\t\t\toptions\n\t\t\t\t);\n\n\t\t\t\tdeck.sections.add(adjunctSection);\n\t\t\t});\n\t}\n\n\t// Add templates as sections if present. This is only used by the CDK.\n\tif (options.templates && options.templates.length > 0) {\n\t\tdeck.sections.add(\n\t\t\toptions.templates.map((template, index) => {\n\t\t\t\treturn PresentationSection.createFromTemplate(\n\t\t\t\t\ttemplate,\n\t\t\t\t\tdeck.sections.length + index,\n\t\t\t\t\toptions.getUniqueAdjunctID()\n\t\t\t\t);\n\t\t\t})\n\t\t);\n\t}\n\n\t// This is generally only used by screenshots\n\tif (options.autoAdjuncts) {\n\t\tconst autoSections = options.autoAdjuncts.map((auto, index) => {\n\t\t\t// We already have the template on the deckversion, so we can find it here.\n\t\t\tif (!auto.template) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"Attempted to use an autoadjunct that has no template.\"\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst section = PresentationSection.createFromTemplate(\n\t\t\t\tauto.template,\n\t\t\t\tdeck.sections.length + index,\n\t\t\t\toptions.getUniqueAdjunctID()\n\t\t\t);\n\n\t\t\t// We've just borrowed the \"from template\" method above. We want to add\n\t\t\t// back some of the specific keys about the auto.\n\t\t\tsection.autoAdjunctID = auto.id;\n\t\t\tsection.key = auto.key;\n\t\t\tsection.title = auto.name;\n\n\t\t\treturn section;\n\t\t});\n\n\t\tdeck.sections.add(autoSections);\n\t}\n\n\tsetSequentialSequences(deck);\n\n\treturn deck;\n};\n\nPresentationDeck.createFromManifestJSON = function (manifestJSON) {\n\tconst deck = new PresentationDeck({\n\t\tid: parseInt(_.uniqueId(), 10),\n\t\tindex: 0,\n\t\tvisible: true,\n\t\tkey: manifestJSON.key || \"manifest_deck\",\n\t\thtml: url2.resolve(manifestJSON.getAssetPath(), \"index.html\"),\n\t\tcss: url2.resolve(manifestJSON.getAssetPath(), \"slide.css\"),\n\t\tcommon: manifestJSON.common,\n\t\tthumbnail: null,\n\t\tdeckID: 1,\n\t\ttitle: \"Local\",\n\t\tversion: 1,\n\t\ttags: manifestJSON.tags[\"\"] || [],\n\t\tcmsvalkey_set: [],\n\t});\n\n\tconst usesImpostorSections = _.some(\n\t\tmanifestJSON.tags,\n\t\t(tags) => tags.indexOf(\"section-header\") !== -1\n\t);\n\tdeck.usesImpostorSections = usesImpostorSections;\n\n\tif (usesImpostorSections) {\n\t\tdeck.usesImpostorSections = true;\n\n\t\tlet items = Object.keys(manifestJSON.titles).map((key) => {\n\t\t\tconst sequence = manifestJSON.toJSON().ordering[key];\n\t\t\tconst splitKey = key.split(\"/\");\n\t\t\tconst newKey = splitKey[splitKey.length - 1];\n\n\t\t\treturn {\n\t\t\t\tkey: newKey,\n\t\t\t\tsequence,\n\t\t\t\thtml: url2.resolve(manifestJSON.getAssetPath(key), \"index.html\"),\n\t\t\t\tcss: url2.resolve(manifestJSON.getAssetPath(key), \"slide.css\"),\n\t\t\t\ttitle: manifestJSON.titles[key],\n\t\t\t\ttags: manifestJSON.tags[key] || [],\n\t\t\t\tcmsvalkey_set: [],\n\t\t\t};\n\t\t});\n\n\t\titems = _.sortBy(items, \"sequence\");\n\n\t\tconst sections = items.filter(\n\t\t\t(item) => item.tags.indexOf(\"section-header\") !== -1\n\t\t);\n\n\t\tsections.forEach((item, index) => {\n\t\t\tconst startIndex = items.indexOf(item) + 1;\n\t\t\tconst endIndex = sections[index + 1]\n\t\t\t\t? items.indexOf(sections[index + 1])\n\t\t\t\t: items.length;\n\n\t\t\tconst slides = items.slice(startIndex, endIndex);\n\n\t\t\titem.slides = slides;\n\t\t});\n\n\t\tdeck.sections.add(\n\t\t\tsections.map((section, index) => {\n\t\t\t\treturn PresentationSection.createFromManifestImpostor(section, index);\n\t\t\t})\n\t\t);\n\n\t\tdeck.realSection = PresentationSection.createFromManifestImpostor(items[0]);\n\t} else {\n\t\tconst sectionKeys = Object.keys(manifestJSON.titles).filter((title) => {\n\t\t\treturn title.split(\"/\").length === 1;\n\t\t});\n\n\t\tdeck.sections.add(\n\t\t\tsectionKeys.map((key, index) => {\n\t\t\t\treturn PresentationSection.createFromManifestJSON(\n\t\t\t\t\tmanifestJSON,\n\t\t\t\t\tkey,\n\t\t\t\t\tindex\n\t\t\t\t);\n\t\t\t})\n\t\t);\n\t}\n\n\tif (manifestJSON.templates) {\n\t\tconst templates = Object.keys(manifestJSON.templates).map((key) => {\n\t\t\treturn {\n\t\t\t\t...manifestJSON.templates[key],\n\t\t\t\tkey,\n\t\t\t\tsequence: manifestJSON.templates[key].ordering,\n\t\t\t\tindex_asset: {\n\t\t\t\t\turl: url2.resolve(\n\t\t\t\t\t\tmanifestJSON.getTemplateAssetPath(key),\n\t\t\t\t\t\t\"index.html\"\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t};\n\t\t});\n\n\t\tconst minID = _.max(_.map(deck.sections.toJSON(), \"id\"));\n\n\t\tdeck.sections.add(\n\t\t\ttemplates.map((template, index) => {\n\t\t\t\treturn PresentationSection.createFromTemplate(template, index, minID);\n\t\t\t})\n\t\t);\n\t}\n\n\treturn deck;\n};\n\nregister(\"PresentationDeck\", PresentationDeck);\n"],"file":"presentation-deck.js"}
@@ -8,6 +8,8 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
8
8
 
9
9
  var _deckVersion = require("../models/deck-version");
10
10
 
11
+ var _deckVersionScreenshots = require("../collections/deck-version-screenshots.js");
12
+
11
13
  var _api = require("sp-test/api");
12
14
 
13
15
  var _manifestJson = require("../models/manifest-json");
@@ -74,6 +76,7 @@ describe("#createFromManifestJSON", function () {
74
76
  });
75
77
  describe("#createFromDeckVersion", function () {
76
78
  var deckVersionJSON = {
79
+ image_256: "http://path/to/deck/thumbnail.png",
77
80
  template_set: [{
78
81
  id: 20,
79
82
  title: "Apple",
@@ -100,6 +103,7 @@ describe("#createFromDeckVersion", function () {
100
103
  section_set: [{
101
104
  id: 1,
102
105
  title: "Section 1",
106
+ image_256: "default_section.png",
103
107
  index_asset: {
104
108
  url: "http://path/to/index.html"
105
109
  },
@@ -113,6 +117,7 @@ describe("#createFromDeckVersion", function () {
113
117
  index_asset: {
114
118
  url: "http://path/to/index.html"
115
119
  },
120
+ image_256: "default_slide.png",
116
121
  subslide_set: [],
117
122
  section: {
118
123
  id: 1
@@ -121,6 +126,7 @@ describe("#createFromDeckVersion", function () {
121
126
  }, {
122
127
  id: 2,
123
128
  title: "Section 2",
129
+ image_256: "default_section.png",
124
130
  index_asset: {
125
131
  url: "http://path/to/index.html"
126
132
  },
@@ -132,6 +138,7 @@ describe("#createFromDeckVersion", function () {
132
138
  }, {
133
139
  id: 3,
134
140
  title: "Section 3",
141
+ image_256: "default_section.png",
135
142
  index_asset: {
136
143
  url: "http://path/to/index.html"
137
144
  },
@@ -189,5 +196,51 @@ describe("#createFromDeckVersion", function () {
189
196
  }
190
197
  }, _callee3);
191
198
  })));
199
+ describe("Screenshots", function () {
200
+ it("should use the default image from the slide if no screenshot found", function () {
201
+ var deck = new _deckVersion.DeckVersionModel(deckVersionJSON);
202
+
203
+ var presentationDeck = _presentationDeck.PresentationDeck.createFromDeckVersion(deck);
204
+
205
+ expect(presentationDeck.thumbnail).toEqual(deckVersionJSON.image_256);
206
+ });
207
+ it("should use the screenshot model if it matches", function () {
208
+ var deck = new _deckVersion.DeckVersionModel(deckVersionJSON);
209
+ var options = {
210
+ screenshots: new _deckVersionScreenshots.DeckVersionScreenshotCollection([{
211
+ subject: deck.url(),
212
+ image_256: "test-screenshot.png"
213
+ }])
214
+ };
215
+
216
+ var presentationDeck = _presentationDeck.PresentationDeck.createFromDeckVersion(deck, options);
217
+
218
+ expect(presentationDeck.thumbnail).toEqual("test-screenshot.png");
219
+ });
220
+ it("should pass screenshots to nested models", function () {
221
+ var deck = new _deckVersion.DeckVersionModel(deckVersionJSON);
222
+ var section = deck.section_set.first();
223
+ var slide = section.slide_set.first();
224
+ var options = {
225
+ screenshots: new _deckVersionScreenshots.DeckVersionScreenshotCollection([{
226
+ subject: deck.url(),
227
+ image_256: "test-screenshot.png"
228
+ }, {
229
+ subject: section.url(),
230
+ image_256: "test-screenshot.png"
231
+ }, {
232
+ subject: slide.url(),
233
+ image_256: "test-screenshot.png"
234
+ }])
235
+ };
236
+
237
+ var presentationDeck = _presentationDeck.PresentationDeck.createFromDeckVersion(deck, options);
238
+
239
+ var presentationSection = presentationDeck.sections.first();
240
+ var presentationSlide = presentationSection.slides.first();
241
+ expect(presentationSection.thumbnail).toEqual("test-screenshot.png");
242
+ expect(presentationSlide.thumbnail).toEqual("test-screenshot.png");
243
+ });
244
+ });
192
245
  });
193
246
  //# sourceMappingURL=presentation-deck.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/presentation/presentation-deck.spec.js"],"names":["describe","beforeEach","jest","spyOn","ManifestJSONModel","prototype","mockReturnValue","it","model","titles","section_1","section_2","section_3","ordering","templates","apple","title","orange","tags","deck","PresentationDeck","createFromManifestJSON","expect","sections","length","toEqual","at","lastSection","key","html","css","deckVersionJSON","template_set","id","sequence","index_asset","url","section_set","deckversion","slide_set","subslide_set","section","DeckVersionModel","createFromDeckVersion"],"mappings":"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","sourcesContent":["import { DeckVersionModel } from \"../models/deck-version\";\nimport { G } from \"sp-test/api\";\nimport { ManifestJSONModel } from \"../models/manifest-json\";\nimport { PresentationDeck } from \"./presentation-deck\";\n\ndescribe(\"#createFromManifestJSON\", () => {\n\tbeforeEach(() => {\n\t\tjest\n\t\t\t.spyOn(ManifestJSONModel.prototype, \"getAssetPath\")\n\t\t\t.mockReturnValue(\"/api/\");\n\t});\n\n\tit(\"should add template sections to the end of a deck\", async () => {\n\t\tG(ManifestJSONModel);\n\t\tconst model = new ManifestJSONModel({\n\t\t\ttitles: {\n\t\t\t\tsection_1: \"Section 1\",\n\t\t\t\t\"section_1/slide_1\": \"Section 1 Slide 1\",\n\t\t\t\tsection_2: \"Section 2\",\n\t\t\t\t\"section_2/slide_1\": \"Section 2 Slide 1\",\n\t\t\t\t\"section_2/slide_2\": \"Section 2 Slide 2\",\n\t\t\t\tsection_3: \"Section 3\",\n\t\t\t},\n\t\t\tordering: {\n\t\t\t\tsection_1: 1,\n\t\t\t\t\"section_1/slide_1\": 1,\n\t\t\t\tsection_2: 2,\n\t\t\t\t\"section_2/slide_1\": 1,\n\t\t\t\t\"section_2/slide_2\": 2,\n\t\t\t\tsection_3: 3,\n\t\t\t},\n\t\t\ttemplates: {\n\t\t\t\tapple: {\n\t\t\t\t\ttitle: \"Apple\",\n\t\t\t\t\tordering: 1,\n\t\t\t\t},\n\t\t\t\torange: {\n\t\t\t\t\ttitle: \"Orange\",\n\t\t\t\t\tordering: 2,\n\t\t\t\t},\n\t\t\t},\n\t\t\ttags: {},\n\t\t});\n\n\t\tconst deck = PresentationDeck.createFromManifestJSON(model);\n\t\texpect(deck.sections.length).toEqual(5);\n\t\texpect(deck.sections.at(0).title).toEqual(\"Section 1\");\n\t\texpect(deck.sections.at(3).title).toEqual(\"Apple\");\n\n\t\tconst lastSection = deck.sections.at(deck.sections.length - 1);\n\t\texpect(lastSection.title).toEqual(\"Orange\");\n\t\texpect(lastSection.key).toEqual(\"template-orange\");\n\t\texpect(lastSection.html).toEqual(\"/api/templates/orange/index.html\");\n\t\texpect(lastSection.css).toEqual(\"/api/templates/orange/slide.css\");\n\t});\n});\n\ndescribe(\"#createFromDeckVersion\", () => {\n\tconst deckVersionJSON = {\n\t\ttemplate_set: [\n\t\t\t{\n\t\t\t\tid: 20,\n\t\t\t\ttitle: \"Apple\",\n\t\t\t\tkey: \"apple\",\n\t\t\t\tsequence: 1,\n\t\t\t\tindex_asset: {\n\t\t\t\t\turl: \"http://path/to/template/apple/index.html\",\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 21,\n\t\t\t\ttitle: \"Orange\",\n\t\t\t\tkey: \"orange\",\n\t\t\t\tsequence: 2,\n\t\t\t\tindex_asset: {\n\t\t\t\t\turl: \"http://path/to/template/orange/index.html\",\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t\tindex_asset: {\n\t\t\turl: \"http://path/to/index.html\",\n\t\t},\n\t\tdeck: {\n\t\t\tid: 1,\n\t\t},\n\t\tsection_set: [\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\ttitle: \"Section 1\",\n\t\t\t\tindex_asset: {\n\t\t\t\t\turl: \"http://path/to/index.html\",\n\t\t\t\t},\n\t\t\t\tdeckversion: { id: 1 },\n\t\t\t\tsequence: 1,\n\t\t\t\tslide_set: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 1,\n\t\t\t\t\t\ttitle: \"Slide 1\",\n\t\t\t\t\t\tindex_asset: {\n\t\t\t\t\t\t\turl: \"http://path/to/index.html\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsubslide_set: [],\n\t\t\t\t\t\tsection: { id: 1 },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\ttitle: \"Section 2\",\n\t\t\t\tindex_asset: {\n\t\t\t\t\turl: \"http://path/to/index.html\",\n\t\t\t\t},\n\t\t\t\tdeckversion: { id: 1 },\n\t\t\t\tsequence: 2,\n\t\t\t\tslide_set: [],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\ttitle: \"Section 3\",\n\t\t\t\tindex_asset: {\n\t\t\t\t\turl: \"http://path/to/index.html\",\n\t\t\t\t},\n\t\t\t\tdeckversion: { id: 1 },\n\t\t\t\tsequence: 3,\n\t\t\t\tslide_set: [],\n\t\t\t},\n\t\t],\n\t};\n\n\tit(\"should not add template sections to the end of a deck\", async () => {\n\t\tG(DeckVersionModel);\n\t\tconst model = new DeckVersionModel(deckVersionJSON);\n\t\tconst deck = PresentationDeck.createFromDeckVersion(model);\n\n\t\texpect(deck.sections.length).toEqual(3);\n\t\texpect(deck.sections.at(0).title).toEqual(\"Section 1\");\n\t\texpect(deck.sections.at(deck.sections.length - 1).title).toEqual(\n\t\t\t\"Section 3\"\n\t\t);\n\t});\n\n\tit(\"should add template sections to the end of a deck\", async () => {\n\t\tG(DeckVersionModel);\n\t\tconst model = new DeckVersionModel(deckVersionJSON);\n\t\tconst deck = PresentationDeck.createFromDeckVersion(model, {\n\t\t\ttemplates: model.template_set,\n\t\t});\n\n\t\texpect(deck.sections.length).toEqual(5);\n\t\texpect(deck.sections.at(0).title).toEqual(\"Section 1\");\n\t\texpect(deck.sections.at(3).title).toEqual(\"Apple\");\n\n\t\tconst lastSection = deck.sections.at(deck.sections.length - 1);\n\t\texpect(lastSection.title).toEqual(\"Orange\");\n\t\texpect(lastSection.key).toEqual(\"template-orange\");\n\t\texpect(lastSection.html).toEqual(\n\t\t\t\"http://path/to/template/orange/index.html\"\n\t\t);\n\t\texpect(lastSection.css).toEqual(\"http://path/to/template/orange/slide.css\");\n\t});\n});\n"],"file":"presentation-deck.spec.js"}
1
+ {"version":3,"sources":["../../src/presentation/presentation-deck.spec.js"],"names":["describe","beforeEach","jest","spyOn","ManifestJSONModel","prototype","mockReturnValue","it","model","titles","section_1","section_2","section_3","ordering","templates","apple","title","orange","tags","deck","PresentationDeck","createFromManifestJSON","expect","sections","length","toEqual","at","lastSection","key","html","css","deckVersionJSON","image_256","template_set","id","sequence","index_asset","url","section_set","deckversion","slide_set","subslide_set","section","DeckVersionModel","createFromDeckVersion","presentationDeck","thumbnail","options","screenshots","DeckVersionScreenshotCollection","subject","first","slide","presentationSection","presentationSlide","slides"],"mappings":"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","sourcesContent":["import { DeckVersionModel } from \"../models/deck-version\";\nimport { DeckVersionScreenshotCollection } from \"../collections/deck-version-screenshots.js\";\nimport { G } from \"sp-test/api\";\nimport { ManifestJSONModel } from \"../models/manifest-json\";\nimport { PresentationDeck } from \"./presentation-deck\";\n\ndescribe(\"#createFromManifestJSON\", () => {\n\tbeforeEach(() => {\n\t\tjest\n\t\t\t.spyOn(ManifestJSONModel.prototype, \"getAssetPath\")\n\t\t\t.mockReturnValue(\"/api/\");\n\t});\n\n\tit(\"should add template sections to the end of a deck\", async () => {\n\t\tG(ManifestJSONModel);\n\t\tconst model = new ManifestJSONModel({\n\t\t\ttitles: {\n\t\t\t\tsection_1: \"Section 1\",\n\t\t\t\t\"section_1/slide_1\": \"Section 1 Slide 1\",\n\t\t\t\tsection_2: \"Section 2\",\n\t\t\t\t\"section_2/slide_1\": \"Section 2 Slide 1\",\n\t\t\t\t\"section_2/slide_2\": \"Section 2 Slide 2\",\n\t\t\t\tsection_3: \"Section 3\",\n\t\t\t},\n\t\t\tordering: {\n\t\t\t\tsection_1: 1,\n\t\t\t\t\"section_1/slide_1\": 1,\n\t\t\t\tsection_2: 2,\n\t\t\t\t\"section_2/slide_1\": 1,\n\t\t\t\t\"section_2/slide_2\": 2,\n\t\t\t\tsection_3: 3,\n\t\t\t},\n\t\t\ttemplates: {\n\t\t\t\tapple: {\n\t\t\t\t\ttitle: \"Apple\",\n\t\t\t\t\tordering: 1,\n\t\t\t\t},\n\t\t\t\torange: {\n\t\t\t\t\ttitle: \"Orange\",\n\t\t\t\t\tordering: 2,\n\t\t\t\t},\n\t\t\t},\n\t\t\ttags: {},\n\t\t});\n\n\t\tconst deck = PresentationDeck.createFromManifestJSON(model);\n\t\texpect(deck.sections.length).toEqual(5);\n\t\texpect(deck.sections.at(0).title).toEqual(\"Section 1\");\n\t\texpect(deck.sections.at(3).title).toEqual(\"Apple\");\n\n\t\tconst lastSection = deck.sections.at(deck.sections.length - 1);\n\t\texpect(lastSection.title).toEqual(\"Orange\");\n\t\texpect(lastSection.key).toEqual(\"template-orange\");\n\t\texpect(lastSection.html).toEqual(\"/api/templates/orange/index.html\");\n\t\texpect(lastSection.css).toEqual(\"/api/templates/orange/slide.css\");\n\t});\n});\n\ndescribe(\"#createFromDeckVersion\", () => {\n\tconst deckVersionJSON = {\n\t\timage_256: \"http://path/to/deck/thumbnail.png\",\n\t\ttemplate_set: [\n\t\t\t{\n\t\t\t\tid: 20,\n\t\t\t\ttitle: \"Apple\",\n\t\t\t\tkey: \"apple\",\n\t\t\t\tsequence: 1,\n\t\t\t\tindex_asset: {\n\t\t\t\t\turl: \"http://path/to/template/apple/index.html\",\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 21,\n\t\t\t\ttitle: \"Orange\",\n\t\t\t\tkey: \"orange\",\n\t\t\t\tsequence: 2,\n\t\t\t\tindex_asset: {\n\t\t\t\t\turl: \"http://path/to/template/orange/index.html\",\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t\tindex_asset: {\n\t\t\turl: \"http://path/to/index.html\",\n\t\t},\n\t\tdeck: {\n\t\t\tid: 1,\n\t\t},\n\t\tsection_set: [\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\ttitle: \"Section 1\",\n\t\t\t\timage_256: \"default_section.png\",\n\t\t\t\tindex_asset: {\n\t\t\t\t\turl: \"http://path/to/index.html\",\n\t\t\t\t},\n\t\t\t\tdeckversion: { id: 1 },\n\t\t\t\tsequence: 1,\n\t\t\t\tslide_set: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 1,\n\t\t\t\t\t\ttitle: \"Slide 1\",\n\t\t\t\t\t\tindex_asset: {\n\t\t\t\t\t\t\turl: \"http://path/to/index.html\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\timage_256: \"default_slide.png\",\n\t\t\t\t\t\tsubslide_set: [],\n\t\t\t\t\t\tsection: { id: 1 },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\ttitle: \"Section 2\",\n\t\t\t\timage_256: \"default_section.png\",\n\t\t\t\tindex_asset: {\n\t\t\t\t\turl: \"http://path/to/index.html\",\n\t\t\t\t},\n\t\t\t\tdeckversion: { id: 1 },\n\t\t\t\tsequence: 2,\n\t\t\t\tslide_set: [],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\ttitle: \"Section 3\",\n\t\t\t\timage_256: \"default_section.png\",\n\t\t\t\tindex_asset: {\n\t\t\t\t\turl: \"http://path/to/index.html\",\n\t\t\t\t},\n\t\t\t\tdeckversion: { id: 1 },\n\t\t\t\tsequence: 3,\n\t\t\t\tslide_set: [],\n\t\t\t},\n\t\t],\n\t};\n\n\tit(\"should not add template sections to the end of a deck\", async () => {\n\t\tG(DeckVersionModel);\n\t\tconst model = new DeckVersionModel(deckVersionJSON);\n\t\tconst deck = PresentationDeck.createFromDeckVersion(model);\n\n\t\texpect(deck.sections.length).toEqual(3);\n\t\texpect(deck.sections.at(0).title).toEqual(\"Section 1\");\n\t\texpect(deck.sections.at(deck.sections.length - 1).title).toEqual(\n\t\t\t\"Section 3\"\n\t\t);\n\t});\n\n\tit(\"should add template sections to the end of a deck\", async () => {\n\t\tG(DeckVersionModel);\n\t\tconst model = new DeckVersionModel(deckVersionJSON);\n\t\tconst deck = PresentationDeck.createFromDeckVersion(model, {\n\t\t\ttemplates: model.template_set,\n\t\t});\n\n\t\texpect(deck.sections.length).toEqual(5);\n\t\texpect(deck.sections.at(0).title).toEqual(\"Section 1\");\n\t\texpect(deck.sections.at(3).title).toEqual(\"Apple\");\n\n\t\tconst lastSection = deck.sections.at(deck.sections.length - 1);\n\t\texpect(lastSection.title).toEqual(\"Orange\");\n\t\texpect(lastSection.key).toEqual(\"template-orange\");\n\t\texpect(lastSection.html).toEqual(\n\t\t\t\"http://path/to/template/orange/index.html\"\n\t\t);\n\t\texpect(lastSection.css).toEqual(\"http://path/to/template/orange/slide.css\");\n\t});\n\n\tdescribe(\"Screenshots\", () => {\n\t\tit(\"should use the default image from the slide if no screenshot found\", () => {\n\t\t\tconst deck = new DeckVersionModel(deckVersionJSON);\n\t\t\tconst presentationDeck = PresentationDeck.createFromDeckVersion(deck);\n\t\t\texpect(presentationDeck.thumbnail).toEqual(deckVersionJSON.image_256);\n\t\t});\n\n\t\tit(\"should use the screenshot model if it matches\", () => {\n\t\t\tconst deck = new DeckVersionModel(deckVersionJSON);\n\t\t\tconst options = {\n\t\t\t\tscreenshots: new DeckVersionScreenshotCollection([\n\t\t\t\t\t{ subject: deck.url(), image_256: \"test-screenshot.png\" },\n\t\t\t\t]),\n\t\t\t};\n\n\t\t\tconst presentationDeck = PresentationDeck.createFromDeckVersion(\n\t\t\t\tdeck,\n\t\t\t\toptions\n\t\t\t);\n\t\t\texpect(presentationDeck.thumbnail).toEqual(\"test-screenshot.png\");\n\t\t});\n\n\t\tit(\"should pass screenshots to nested models\", () => {\n\t\t\tconst deck = new DeckVersionModel(deckVersionJSON);\n\t\t\tconst section = deck.section_set.first();\n\t\t\tconst slide = section.slide_set.first();\n\n\t\t\tconst options = {\n\t\t\t\tscreenshots: new DeckVersionScreenshotCollection([\n\t\t\t\t\t{ subject: deck.url(), image_256: \"test-screenshot.png\" },\n\t\t\t\t\t{ subject: section.url(), image_256: \"test-screenshot.png\" },\n\t\t\t\t\t{ subject: slide.url(), image_256: \"test-screenshot.png\" },\n\t\t\t\t]),\n\t\t\t};\n\n\t\t\tconst presentationDeck = PresentationDeck.createFromDeckVersion(\n\t\t\t\tdeck,\n\t\t\t\toptions\n\t\t\t);\n\t\t\tconst presentationSection = presentationDeck.sections.first();\n\t\t\tconst presentationSlide = presentationSection.slides.first();\n\n\t\t\texpect(presentationSection.thumbnail).toEqual(\"test-screenshot.png\");\n\t\t\texpect(presentationSlide.thumbnail).toEqual(\"test-screenshot.png\");\n\t\t});\n\t});\n});\n"],"file":"presentation-deck.spec.js"}
@@ -2,6 +2,8 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
5
7
  Object.defineProperty(exports, "__esModule", {
6
8
  value: true
7
9
  });
@@ -11,6 +13,8 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
11
13
 
12
14
  require("./presentation-slides.js");
13
15
 
16
+ var collections = _interopRequireWildcard(require("../collections.js"));
17
+
14
18
  var _models = require("../models.js");
15
19
 
16
20
  var _basePresentationModel = require("./base-presentation-model.js");
@@ -25,9 +29,13 @@ var _stateRegister = require("../state-register.js");
25
29
 
26
30
  var _url = _interopRequireDefault(require("url"));
27
31
 
28
- 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; }
32
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
33
+
34
+ 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; }
29
35
 
30
- 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; }
36
+ 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; }
37
+
38
+ 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; }
31
39
 
32
40
  /**
33
41
  * @constructor
@@ -63,6 +71,7 @@ var PresentationSection = _basePresentationModel.BasePresentationModel.extend(
63
71
  * @property {array} tags
64
72
  * @property {boolean} impostor
65
73
  * @property {boolean} isWelcome
74
+ * @property {string[]} cmsvalkey_set
66
75
  */
67
76
  props: {
68
77
  id: "number",
@@ -109,7 +118,8 @@ var PresentationSection = _basePresentationModel.BasePresentationModel.extend(
109
118
  default: function _default() {
110
119
  return false;
111
120
  }
112
- }
121
+ },
122
+ cmsvalkey_set: "array"
113
123
  },
114
124
 
115
125
  /**
@@ -192,7 +202,8 @@ PresentationSection.createFromSection = function (sectionModel) {
192
202
  _lodash.default.defaults(options, {
193
203
  rootAssetPath: null,
194
204
  selections: null,
195
- choicelist: null
205
+ choicelist: null,
206
+ screenshots: new collections.DeckVersionScreenshotCollection()
196
207
  });
197
208
 
198
209
  var html;
@@ -218,17 +229,18 @@ PresentationSection.createFromSection = function (sectionModel) {
218
229
  css: css,
219
230
  key: sectionModel.key,
220
231
  adjunctSlideLimit: sectionModel.adjunctslide_limit,
221
- thumbnail: sectionModel.image_256,
232
+ thumbnail: PresentationSection.getThumbnail(sectionModel, options.screenshots),
222
233
  custom: false,
223
234
  impostor: false,
224
235
  title: sectionModel.title,
225
236
  deckversion: sectionModel.deckversion.id,
226
- editable: sectionModel.tags.indexOf("editable") > -1,
237
+ editable: tags.indexOf("editable") > -1,
227
238
  tags: tags,
228
239
  index: config.sequence,
229
240
  sequence: config.sequence,
230
241
  visible: config.visible,
231
- selectionID: config.selectionID
242
+ selectionID: config.selectionID,
243
+ cmsvalkey_set: sectionModel.cmsvalkey_set
232
244
  });
233
245
  return section;
234
246
  };
@@ -242,14 +254,17 @@ PresentationSection.createFromSection = function (sectionModel) {
242
254
  */
243
255
 
244
256
 
245
- PresentationSection.createFromAdjunctSection = function (adjunctSectionModel, deckVersionModel, options) {
257
+ PresentationSection.createFromAdjunctSection = function (adjunctSectionModel, deckVersionModel) {
258
+ var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
259
+
246
260
  _lodash.default.defaults(options, {
247
261
  rootAssetPath: null,
248
262
  selections: null,
249
263
  choicelist: null,
250
264
  getUniqueAdjunctID: function getUniqueAdjunctID() {
251
265
  return parseInt(_lodash.default.uniqueId(), 10);
252
- }
266
+ },
267
+ screenshots: new collections.DeckVersionScreenshotCollection()
253
268
  });
254
269
 
255
270
  var keyID = adjunctSectionModel.id || (adjunctSectionModel.creator_autoadjunct ? adjunctSectionModel.creator_autoadjunct.id : null);
@@ -259,9 +274,11 @@ PresentationSection.createFromAdjunctSection = function (adjunctSectionModel, de
259
274
  key = adjunctSectionModel.key;
260
275
  } else if (keyID) {
261
276
  key = "adjunct-".concat(keyID);
277
+ adjunctSectionModel.key = key;
262
278
  }
263
279
 
264
280
  var config = PresentationSection.getVisibilityAndSequence(adjunctSectionModel, options);
281
+ var tags = PresentationSection.getTags(adjunctSectionModel, options);
265
282
  var section = new PresentationSection({
266
283
  id: options.getUniqueAdjunctID(),
267
284
  adjunct: adjunctSectionModel.adjunct ? adjunctSectionModel.adjunct.url() : null,
@@ -272,15 +289,16 @@ PresentationSection.createFromAdjunctSection = function (adjunctSectionModel, de
272
289
  custom: !adjunctSectionModel.created_by_autoadjunct,
273
290
  createdByAutoAdjunct: adjunctSectionModel.created_by_autoadjunct,
274
291
  createdByTemplate: Boolean(adjunctSectionModel.template),
275
- impostor: adjunctSectionModel.tags && adjunctSectionModel.tags.indexOf("section-header") > -1,
276
- tags: adjunctSectionModel.tags,
292
+ impostor: tags.indexOf("section-header") > -1,
293
+ tags: tags,
277
294
  temporary: adjunctSectionModel.created_by_autoadjunct,
278
295
  title: adjunctSectionModel.title,
279
296
  deckversion: deckVersionModel.id,
280
297
  editable: false,
281
298
  index: config.sequence,
282
299
  sequence: config.sequence,
283
- visible: config.visible
300
+ visible: config.visible,
301
+ cmsvalkey_set: []
284
302
  });
285
303
 
286
304
  if (adjunctSectionModel.template) {
@@ -303,7 +321,9 @@ PresentationSection.createFromAdjunctSection = function (adjunctSectionModel, de
303
321
 
304
322
  section.html = html;
305
323
  section.css = css;
306
- section.thumbnail = adjunctSectionModel.template.image_256;
324
+ section.thumbnail = // Try and use autoadjunct screenshot (if there is one), otherwise
325
+ // use the template's image as a fallback
326
+ PresentationSection.getThumbnail(adjunctSectionModel.creator_autoadjunct, options.screenshots) || adjunctSectionModel.template.image_256;
307
327
  } else {
308
328
  section.image = adjunctSectionModel.image_original;
309
329
  }
@@ -311,11 +331,14 @@ PresentationSection.createFromAdjunctSection = function (adjunctSectionModel, de
311
331
  return section;
312
332
  };
313
333
 
314
- PresentationSection.createFromImpostorSection = function (slideModel, DeckVersionModel, options) {
334
+ PresentationSection.createFromImpostorSection = function (slideModel, DeckVersionModel) {
335
+ var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
336
+
315
337
  _lodash.default.defaults(options, {
316
338
  rootAssetPath: null,
317
339
  selections: null,
318
- choicelist: null
340
+ choicelist: null,
341
+ screenshots: new collections.DeckVersionScreenshotCollection()
319
342
  });
320
343
 
321
344
  var html;
@@ -341,17 +364,18 @@ PresentationSection.createFromImpostorSection = function (slideModel, DeckVersio
341
364
  css: css,
342
365
  key: slideModel.key,
343
366
  adjunctSlideLimit: slideModel.adjunctslide_limit,
344
- thumbnail: slideModel.image_256,
367
+ thumbnail: PresentationSection.getThumbnail(slideModel, options.screenshots),
345
368
  custom: false,
346
369
  impostor: true,
347
370
  title: slideModel.title,
348
371
  deckversion: slideModel.section.deckversion.id,
349
- editable: slideModel.tags.indexOf("editable") > -1,
372
+ editable: tags.indexOf("editable") > -1,
350
373
  tags: tags,
351
374
  index: config.sequence,
352
375
  sequence: config.sequence,
353
376
  visible: config.visible,
354
- selectionID: config.selectionID
377
+ selectionID: config.selectionID,
378
+ cmsvalkey_set: slideModel.cmsvalkey_set
355
379
  });
356
380
  return section;
357
381
  };
@@ -369,7 +393,8 @@ PresentationSection.createFromManifestJSON = function (manifestJSON, sectionKey,
369
393
  custom: false,
370
394
  visible: true,
371
395
  deckversion: 1,
372
- tags: manifestJSON.tags[sectionKey] || null
396
+ tags: manifestJSON.tags[sectionKey] || null,
397
+ cmsvalkey_set: []
373
398
  });
374
399
  var slideKeys = Object.keys(manifestJSON.titles).filter(function (slideKey) {
375
400
  return slideKey.startsWith(sectionKey) && slideKey.split("/").length > 1;
@@ -397,7 +422,8 @@ PresentationSection.createFromManifestImpostor = function (section, index) {
397
422
  return presentationSection;
398
423
  };
399
424
 
400
- PresentationSection.createFromAutoAdjunct = function (model, opts) {
425
+ PresentationSection.createFromAutoAdjunct = function (model) {
426
+ var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
401
427
  var requiredKeys = ["index", "deckversionID"];
402
428
 
403
429
  for (var _i = 0, _requiredKeys = requiredKeys; _i < _requiredKeys.length; _i++) {
@@ -414,9 +440,15 @@ PresentationSection.createFromAutoAdjunct = function (model, opts) {
414
440
  index: -1,
415
441
  deckversionID: -1,
416
442
  sequence: opts.index,
417
- impostor: false
443
+ impostor: false,
444
+ screenshots: new collections.DeckVersionScreenshotCollection()
418
445
  });
419
446
 
447
+ var tags = PresentationSection.getTags({
448
+ isAutoAdjunct: true,
449
+ key: model.key,
450
+ tags: model.tags
451
+ }, options);
420
452
  var autoAdjunct = new _models.AutoAdjunctModel(model);
421
453
  var autoAdjunctSection = new PresentationSection({
422
454
  id: options.id || autoAdjunct.id,
@@ -430,17 +462,23 @@ PresentationSection.createFromAutoAdjunct = function (model, opts) {
430
462
  index: options.index,
431
463
  key: autoAdjunct.key,
432
464
  createdByAutoAdjunct: false,
433
- thumbnail: autoAdjunct.image_256,
465
+ thumbnail: PresentationSection.getThumbnail(autoAdjunct, options.screenshots),
434
466
  temporary: true,
435
467
  title: autoAdjunct.name,
436
468
  visible: options.visible,
437
469
  allowConvert: options.allowConvert,
438
470
  deckversion: options.deckversionID,
439
- impostor: options.impostor
471
+ impostor: options.impostor,
472
+ tags: tags,
473
+ cmsvalkey_set: autoAdjunct.cmsvalkey_set
440
474
  });
441
475
 
442
476
  if (autoAdjunct.template) {
443
- autoAdjunctSection.thumbnail = autoAdjunct.template.image_256;
477
+ // If we've found a new screenshot for it, we don't want to override it here
478
+ if (!autoAdjunctSection.thumbnail) {
479
+ autoAdjunctSection.thumbnail = autoAdjunct.template.image_256;
480
+ }
481
+
444
482
  autoAdjunctSection.createdByTemplate = true;
445
483
  autoAdjunctSection.templateID = autoAdjunct.template.id;
446
484
  autoAdjunctSection.html = autoAdjunct.template.index_asset.url();
@@ -473,7 +511,8 @@ PresentationSection.createFromTemplate = function (template, index) {
473
511
  // of a list of sections
474
512
  sequence: 9000 + templateModel.sequence,
475
513
  createdByTemplate: true,
476
- index: index
514
+ index: index,
515
+ cmsvalkey_set: []
477
516
  });
478
517
  return presentationSection;
479
518
  };