@livepreso/api 6.57.0 → 6.57.1

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 (84) hide show
  1. package/.rush/temp/chunked-rush-logs/api.build.chunks.jsonl +5 -15
  2. package/.rush/temp/operation/build/all.log +5 -15
  3. package/.rush/temp/operation/build/error.log +3 -13
  4. package/.rush/temp/operation/build/log-chunks.jsonl +5 -15
  5. package/.rush/temp/operation/build/state.json +1 -1
  6. package/.rush/temp/shrinkwrap-deps.json +11 -11
  7. package/CHANGELOG.json +23 -0
  8. package/CHANGELOG.md +10 -1
  9. package/cjs/collections/adjunct-sub-slides.js +13 -1
  10. package/cjs/collections/adjunct-sub-slides.js.map +1 -1
  11. package/cjs/fixtures.js +13 -2
  12. package/cjs/fixtures.js.map +1 -1
  13. package/cjs/models/base.js +12 -3
  14. package/cjs/models/base.js.map +1 -1
  15. package/cjs/models/deck-version.js +2 -0
  16. package/cjs/models/deck-version.js.map +1 -1
  17. package/cjs/models/dispatch.js +1 -1
  18. package/cjs/models/dispatch.js.map +1 -1
  19. package/cjs/models/room.js +4 -0
  20. package/cjs/models/room.js.map +1 -1
  21. package/cjs/models/user.js +1 -1
  22. package/cjs/models/user.js.map +1 -1
  23. package/cjs/presentation/base-presentation-model.js +6 -6
  24. package/cjs/presentation/base-presentation-model.js.map +1 -1
  25. package/cjs/presentation/presentation-deck.js +82 -27
  26. package/cjs/presentation/presentation-deck.js.map +1 -1
  27. package/cjs/presentation/presentation-section.js +42 -47
  28. package/cjs/presentation/presentation-section.js.map +1 -1
  29. package/cjs/presentation/presentation-slide.js +35 -39
  30. package/cjs/presentation/presentation-slide.js.map +1 -1
  31. package/cjs/utils.js +9 -6
  32. package/cjs/utils.js.map +1 -1
  33. package/package.json +3 -3
  34. package/rush-logs/api.build.error.log +3 -13
  35. package/rush-logs/api.build.log +5 -15
  36. package/src/collections/adjunct-sub-slides.js +13 -0
  37. package/src/fixtures.js +16 -2
  38. package/src/models/base.js +16 -3
  39. package/src/models/deck-version.js +2 -0
  40. package/src/models/dispatch.js +1 -1
  41. package/src/models/room.js +5 -0
  42. package/src/models/user.js +4 -4
  43. package/src/presentation/base-presentation-model.js +14 -6
  44. package/src/presentation/presentation-deck.js +63 -24
  45. package/src/presentation/presentation-section.js +31 -50
  46. package/src/presentation/presentation-slide.js +36 -43
  47. package/src/utils.js +9 -6
  48. package/.rush/temp/1aebf46f78ad5c45f82f8147751890adb37bef9d.log +0 -10
  49. package/.rush/temp/256021b5963b4c0221d3dec247b697b9691a9b2c.log +0 -10
  50. package/.rush/temp/2a322f00f12cf9d1e64afe81275cc78d01c49050.log +0 -10
  51. package/.rush/temp/30061f1865447dcbb3f20a305061205f3dbe6091.log +0 -10
  52. package/.rush/temp/3cdc82c352e8ed90607952873f3aa4c200490874.log +0 -10
  53. package/.rush/temp/45522aea0dee8cb2be1a53248ba45bd235743b43.log +0 -10
  54. package/.rush/temp/5489ab737e406518983c16c57fc3e1edc07c0341.log +0 -10
  55. package/.rush/temp/58fcbb7f15a76326d40e0839ab179755da82a891.log +0 -10
  56. package/.rush/temp/5bc0bba70b733baa4dd976667ba0a1386e516186.log +0 -10
  57. package/.rush/temp/64f1bb696f8d7d7e72907b80df316b127f72e23e.log +0 -10
  58. package/.rush/temp/6f640f951414ea68adb65c17e4ed7527cde54faf.log +0 -10
  59. package/.rush/temp/7c7b958682d4ab5697530be47d0aac62efe1adf1.log +0 -10
  60. package/.rush/temp/82bfb987463fbcfebf04022e6ed00015c73879c8.log +0 -10
  61. package/.rush/temp/844034aa6e542115075e8f3dc5ffc640973e0064.log +0 -10
  62. package/.rush/temp/8b42957a7c15da1f29cb57bee125f13affa70dca.log +0 -10
  63. package/.rush/temp/924652444ab5a6063f328a2217123a2227058896.log +0 -10
  64. package/.rush/temp/9f2030f96d62f3e38052e35201819a216566f14f.log +0 -10
  65. package/.rush/temp/a769db9d81a23000c0e9b1bf4f1a9a9e721d0d7c.log +0 -10
  66. package/.rush/temp/a87d3a8b4ece87ec66f27c86226a9f205617681f.log +0 -10
  67. package/.rush/temp/bb7a5bdcc4af4ad1507f81f33774b31f5b4e4fb7.log +0 -10
  68. package/.rush/temp/build-cache-tar.log +0 -7
  69. package/.rush/temp/c20e29ccaaa9231b38a28bb24451b4ce7562cdc0.log +0 -10
  70. package/.rush/temp/chunked-rush-logs/api.test.chunks.jsonl +0 -1
  71. package/.rush/temp/e21303db8f59b4625fd184c9114377d781fd24f8.log +0 -10
  72. package/.rush/temp/e6d303862765b6a5f41dd483d0f9ae083a1fae10.log +0 -10
  73. package/.rush/temp/eaf69fbc059d2f1258d7569136180d4a1d3c7072.log +0 -10
  74. package/.rush/temp/f85d279e2674966daaec83e1c3986a96f86ef304.log +0 -10
  75. package/.rush/temp/fc0a332c5b34c6b90006850cf2d93a48fb4b9a6e.log +0 -10
  76. package/.rush/temp/operation/test/all.log +0 -21
  77. package/.rush/temp/operation/test/log-chunks.jsonl +0 -21
  78. package/.rush/temp/operation/test/state.json +0 -3
  79. package/.rush/temp/package-deps_build.json +0 -185
  80. package/api.build.log +0 -9
  81. package/api.test.cache.log +0 -1
  82. package/api.test.log +0 -19
  83. package/rush-logs/api.test.cache.log +0 -1
  84. package/rush-logs/api.test.log +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"presentation-slide.js","names":["require","collections","_interopRequireWildcard","_models","_basePresentationModel","_presentationSubslide","_lodash","_interopRequireDefault","_index","_stateRegister","_utils","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","PresentationSlide","exports","BasePresentationModel","extend","props","id","adjunctID","autoAdjunctID","type","templateID","createdByAutoAdjunct","createdByTemplate","namespacedKey","html","css","index","key","sequence","custom","temporary","visible","title","section","sectionKey","image","_orig_image","thumbnail","selectionID","editable","titleEditable","notesEditable","tagsEditable","tags","cmsvalkey_set","isWelcome","isSlide","isSection","children","adjunct","template","subslides","url","_url","_","isNumber","AdjunctSlideModel","SlideModel","toString","concat","createFromSlide","slideModel","options","undefined","defaults","adjunctSubSlides","AdjunctSubSlideCollection","screenshots","DeckVersionScreenshotCollection","rootAssetPath","selections","choicelist","getUniqueAdjunctID","parseInt","uniqueId","screenshotsToMap","assetRoot","getAssetRoot","index_asset","baseRoot","deckversion","slidePath","slice","config","getVisibilityAndSequence","getTags","slide","getThumbnail","indexOf","namespaced_key","add","subslide_set","map","model","PresentationSubSlide","createFromSubSlide","adjunctSubslides","maxID","max","pluck","createFromAdjunctSubSlide","createFromAdjunctSlide","adjunctSlideModel","_adjunctSlideModel$cr","_adjunctSlideModel$te","_adjunctSlideModel$te2","keyID","creator_autoadjunct","image_256","created_by_autoadjunct","Boolean","Error","origPath","orig_path","image_original","createFromManifestJSON","manifestJSON","project","sectionID","_project$sections","_project$sections$fin","_projectSection$slide","_projectSection$slide2","_projectSlide$editabl","_key$split","split","_key$split2","_slicedToArray2","slideKey","projectSection","sections","find","s","projectSlide","slides","titles","resolveURL","getAssetPath","ordering","editables","createFromManifestImpostor","_section","_project$sections2","_project$sections2$fi","_projectSection$slide3","_projectSection$slide4","_projectSlide$editabl2","presentationSlide","createFromTemplate","minID","Number","createFromAutoAdjunct","_autoAdjunct$template","opts","requiredKeys","_i","_requiredKeys","allowConvert","deckversionID","impostor","isAutoAdjunct","autoAdjunct","AutoAdjunctModel","autoAdjunctSlide","name","_autoAdjunctSlide$cms","missingKeys","k","startsWith","_toConsumableArray2","register"],"sources":["../../src/presentation/presentation-slide.js"],"sourcesContent":["import \"./presentation-subslides.js\";\n\nimport * as collections from \"../collections.js\";\n\nimport { AdjunctSlideModel, AutoAdjunctModel, SlideModel } from \"../models.js\";\n\nimport { BasePresentationModel } from \"./base-presentation-model.js\";\nimport { PresentationSubSlide } from \"./presentation-subslide.js\";\nimport _ from \"lodash\";\nimport { getAssetRoot } from \"../index.js\";\nimport { register } from \"../state-register.js\";\nimport { resolveURL } from \"../utils.js\";\n\n/**\n * @constructor\n * @alias presentation.PresentationSlide\n * @extends presentation.BasePresentationModel\n */\nexport const PresentationSlide = BasePresentationModel.extend(\n\t/** @lends presentation.PresentationSlide# */ {\n\t\t/**\n\t\t * @property {number} id\n\t\t * @property {number} adjunctID\n\t\t * @property {number} autoAdjunctID\n\t\t * @property {number} templateID\n\t\t * @property {boolean} createdByAutoAdjunct\n\t\t * @property {boolean} createdByTemplate\n\t\t * @property {string} namespacedKey\n\t\t * @property {string} html\n\t\t * @property {string} css\n\t\t * @property {number} index\n\t\t * @property {string} key\n\t\t * @property {number} sequence\n\t\t * @property {boolean} custom\n\t\t * @property {boolean} temporary\n\t\t * @property {boolean} visible\n\t\t * @property {string} title\n\t\t * @property {number} section\n\t\t * @property {string} image\n\t\t * @property {string} _orig_image\n\t\t * @property {string} thumbnail\n\t\t * @property {number} selectionID\n\t\t * @property {bool} editable\n\t\t * @property {bool} titleEditable\n\t\t * @property {bool} notesEditable\n\t\t * @property {bool} tagsEditable\n\t\t * @property {array} tags\n\t\t * @property {string[]} cmsvalkey_set\n\t\t */\n\t\tprops: {\n\t\t\tid: \"number\",\n\t\t\tadjunctID: \"number\",\n\t\t\tautoAdjunctID: {\n\t\t\t\ttype: \"number\",\n\t\t\t\tdefault: null,\n\t\t\t},\n\t\t\ttemplateID: {\n\t\t\t\ttype: \"number\",\n\t\t\t\tdefault: null,\n\t\t\t},\n\t\t\tcreatedByAutoAdjunct: {\n\t\t\t\ttype: \"boolean\",\n\t\t\t\tdefault: false,\n\t\t\t},\n\t\t\tcreatedByTemplate: {\n\t\t\t\ttype: \"boolean\",\n\t\t\t\tdefault: false,\n\t\t\t},\n\t\t\tnamespacedKey: \"string\",\n\t\t\thtml: \"string\",\n\t\t\tcss: \"string\",\n\t\t\tindex: \"number\",\n\t\t\tkey: \"string\",\n\t\t\tsequence: \"number\",\n\t\t\tcustom: \"boolean\",\n\t\t\ttemporary: \"boolean\",\n\t\t\tvisible: \"boolean\",\n\t\t\ttitle: \"string\",\n\t\t\tsection: \"number\",\n\t\t\tsectionKey: \"string\",\n\t\t\timage: \"string\",\n\t\t\t_orig_image: \"string\",\n\t\t\tthumbnail: \"string\",\n\t\t\tselectionID: \"number\",\n\t\t\teditable: \"boolean\",\n\t\t\ttitleEditable: \"boolean\",\n\t\t\tnotesEditable: \"boolean\",\n\t\t\ttagsEditable: \"boolean\",\n\t\t\ttags: \"array\",\n\t\t\tcmsvalkey_set: \"array\",\n\t\t\tisWelcome: { type: \"boolean\", default: false },\n\t\t\tisSlide: { type: \"boolean\", default: true },\n\t\t\tisSection: { type: \"boolean\", default: false },\n\t\t},\n\n\t\t/**\n\t\t * @property {models.AdjunctModel} adjunct\n\t\t */\n\t\tchildren: {\n\t\t\tadjunct: \"AdjunctModel\",\n\t\t\ttemplate: \"TemplateModel\",\n\t\t},\n\n\t\t/**\n\t\t * @property {presentation.PresentationSubSlideCollection} subslides\n\t\t */\n\t\tcollections: {\n\t\t\tsubslides: \"PresentationSubSlideCollection\",\n\t\t},\n\n\t\turl() {\n\t\t\tif (!this._url) {\n\t\t\t\tif (_.isNumber(this.adjunctID)) {\n\t\t\t\t\tthis._url = new AdjunctSlideModel({ id: this.adjunctID }).url();\n\t\t\t\t} else {\n\t\t\t\t\tthis._url = new SlideModel({ id: this.id }).url();\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this._url;\n\t\t},\n\n\t\ttoString() {\n\t\t\treturn `Slide: ${this.key} (${this.id})`;\n\t\t},\n\t},\n);\n\n/**\n * @function createFromSlide\n * @memberof presentation.PresentationSlide\n * @param {models.SlideModel} slideModel\n * @param {object} [options]\n * @returns {presentation.PresentationSlide}\n */\nPresentationSlide.createFromSlide = function (slideModel, options = {}) {\n\t_.defaults(options, {\n\t\tadjunctSubSlides: new collections.AdjunctSubSlideCollection(),\n\t\tscreenshots: new collections.DeckVersionScreenshotCollection(),\n\t\trootAssetPath: null,\n\t\tselections: null,\n\t\tchoicelist: null,\n\t\tgetUniqueAdjunctID: () => {\n\t\t\treturn parseInt(_.uniqueId(), 10);\n\t\t},\n\t});\n\n\toptions.screenshots = PresentationSlide.screenshotsToMap(options.screenshots);\n\n\tlet html;\n\tlet css;\n\n\tconst assetRoot = getAssetRoot(slideModel.index_asset.url());\n\n\tif (options.rootAssetPath) {\n\t\tconst baseRoot = getAssetRoot(\n\t\t\tslideModel.section.deckversion.index_asset.url(),\n\t\t);\n\t\tconst slidePath = assetRoot.slice(baseRoot.length);\n\t\thtml = `${options.rootAssetPath}${slidePath}index.html`;\n\t\tcss = `${options.rootAssetPath}${slidePath}slide.css`;\n\t} else {\n\t\thtml = `${assetRoot}index.html`;\n\t\tcss = `${assetRoot}slide.css`;\n\t}\n\n\tconst config = PresentationSlide.getVisibilityAndSequence(\n\t\tslideModel,\n\t\toptions,\n\t);\n\n\tconst tags = PresentationSlide.getTags(slideModel, options);\n\n\tconst slide = new PresentationSlide({\n\t\tid: slideModel.id,\n\t\tadjunctID: null,\n\t\thtml,\n\t\tcss,\n\t\tkey: slideModel.key,\n\t\tthumbnail: PresentationSlide.getThumbnail(slideModel, options.screenshots),\n\t\tcustom: false,\n\t\teditable: tags.indexOf(\"editable\") > -1,\n\t\t// By default this is true for a deck slide. These can be changed later in PM depending\n\t\t// on the logged in user and properties of an AutoAdjunct\n\t\ttitleEditable: false,\n\t\tnotesEditable: true,\n\t\ttagsEditable: true,\n\t\ttitle: slideModel.title,\n\t\tsection: slideModel.section.id,\n\t\tsectionKey: slideModel.section.key,\n\t\ttags,\n\t\tindex: config.sequence,\n\t\tsequence: config.sequence,\n\t\tvisible: config.visible,\n\t\tselectionID: config.selectionID,\n\t\tcmsvalkey_set: slideModel.cmsvalkey_set,\n\t\tnamespacedKey: slideModel.namespaced_key,\n\t});\n\n\tslide.subslides.add(\n\t\tslideModel.subslide_set.map((model) => {\n\t\t\treturn PresentationSubSlide.createFromSubSlide(model, options);\n\t\t}),\n\t);\n\n\tconst adjunctSubslides = options.adjunctSubSlides.filter((model) => {\n\t\treturn model.slide.id === slideModel.id;\n\t});\n\n\t// If the slide's content is entirely adjunct and does not have a distinct\n\t// first subslide, we need to create one based on the slide.\n\t// This is mostly just a legacy format and is required for screenshots.\n\t// See REA-Developer's Investment Summary for an example.\n\tif (\n\t\tadjunctSubslides.length &&\n\t\t!slide.subslides.length &&\n\t\t!(tags.indexOf(\"subslide_container\") > -1)\n\t) {\n\t\tslide.subslides.add(PresentationSubSlide.createFromSlide(slide));\n\t}\n\n\tlet maxID = 0;\n\tif (slide.subslides.length) {\n\t\tmaxID = _.max(slide.subslides.pluck(\"id\"));\n\t}\n\n\t// Add any adjunct subslides to the list\n\tslide.subslides.add(\n\t\tadjunctSubslides.map((model, index) => {\n\t\t\tconst id = maxID + index + 1;\n\n\t\t\treturn PresentationSubSlide.createFromAdjunctSubSlide(model, slideModel, {\n\t\t\t\t...options,\n\t\t\t\tid,\n\t\t\t});\n\t\t}),\n\t);\n\n\treturn slide;\n};\n\n/**\n * @function createFromAdjunctSlide\n * @memberof presentation.PresentationSlide\n * @param {models.AdjunctSlideModel} adjunctSlideModel\n * @param {models.SectionModel} sectionModel\n * @param {object} [options]\n * @returns {presentation.PresentationSlide}\n */\nPresentationSlide.createFromAdjunctSlide = function (\n\tadjunctSlideModel,\n\tsection = null,\n\toptions = {},\n) {\n\t_.defaults(options, {\n\t\tid: null,\n\t\trootAssetPath: null,\n\t\tselections: null,\n\t\tchoicelist: null,\n\t\tgetUniqueAdjunctID: () => {\n\t\t\treturn parseInt(_.uniqueId(), 10);\n\t\t},\n\t\tscreenshots: new collections.DeckVersionScreenshotCollection(),\n\t});\n\n\toptions.screenshots = PresentationSlide.screenshotsToMap(options.screenshots);\n\n\tconst keyID =\n\t\tadjunctSlideModel.id ||\n\t\t(adjunctSlideModel.creator_autoadjunct\n\t\t\t? adjunctSlideModel.creator_autoadjunct.id\n\t\t\t: null);\n\n\tlet key = null;\n\n\tif (adjunctSlideModel.key) {\n\t\tkey = adjunctSlideModel.key;\n\t} else if (keyID) {\n\t\tkey = `adjunct-${keyID}`;\n\t\tadjunctSlideModel.key = key;\n\t}\n\n\tconst config = PresentationSlide.getVisibilityAndSequence(\n\t\tadjunctSlideModel,\n\t\toptions,\n\t);\n\n\tconst tags = PresentationSlide.getTags(adjunctSlideModel, options);\n\n\tconst autoAdjunctID = adjunctSlideModel.creator_autoadjunct?.id || null;\n\n\tconst slide = new PresentationSlide({\n\t\tid: options.id || options.getUniqueAdjunctID(),\n\t\tadjunct: adjunctSlideModel.adjunct,\n\t\tadjunctID: adjunctSlideModel.id,\n\t\tautoAdjunctID,\n\t\tkey,\n\t\tthumbnail: adjunctSlideModel.image_256,\n\t\tcreatedByAutoAdjunct: adjunctSlideModel.created_by_autoadjunct,\n\t\tcreatedByTemplate: Boolean(adjunctSlideModel.template),\n\t\tcustom: !adjunctSlideModel.created_by_autoadjunct,\n\t\ttemporary: adjunctSlideModel.created_by_autoadjunct,\n\t\ttitle: adjunctSlideModel.title,\n\t\tsection: section ? section.id : null,\n\t\ttags,\n\t\tindex: config.sequence,\n\t\tsequence: config.sequence,\n\t\tvisible: config.visible,\n\t\tcmsvalkey_set: adjunctSlideModel.template?.cmsvalkey_set || [],\n\t\ttemplateID: adjunctSlideModel.template?.id || null,\n\t\ttemplate: adjunctSlideModel.template || null,\n\t\tnamespacedKey: adjunctSlideModel.namespaced_key,\n\t});\n\n\tif (adjunctSlideModel.template) {\n\t\tif (!adjunctSlideModel.template.index_asset) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Template missing index_asset. Do you have the whole template available?\",\n\t\t\t);\n\t\t}\n\t\tconst origPath = adjunctSlideModel.template.index_asset.orig_path;\n\t\tlet html;\n\t\tlet css;\n\n\t\tif (options.rootAssetPath) {\n\t\t\thtml = `${options.rootAssetPath}${origPath}/index.html`;\n\t\t\tcss = `${options.rootAssetPath}${origPath}/slide.css`;\n\t\t} else {\n\t\t\tconst assetRoot = getAssetRoot(\n\t\t\t\tadjunctSlideModel.template.index_asset.url(),\n\t\t\t);\n\t\t\thtml = `${assetRoot}index.html`;\n\t\t\tcss = `${assetRoot}slide.css`;\n\t\t}\n\t\tslide.html = html;\n\t\tslide.css = css;\n\n\t\tif (adjunctSlideModel.creator_autoadjunct) {\n\t\t\tslide.thumbnail = PresentationSlide.getThumbnail(\n\t\t\t\tadjunctSlideModel.creator_autoadjunct,\n\t\t\t\toptions.screenshots,\n\t\t\t);\n\t\t}\n\n\t\tif (!slide.thumbnail) {\n\t\t\tslide.thumbnail = adjunctSlideModel.template.image_256;\n\t\t}\n\t} else {\n\t\tslide.image = adjunctSlideModel.image_original;\n\t}\n\n\treturn slide;\n};\n\nPresentationSlide.createFromManifestJSON = function (\n\tmanifestJSON,\n\tproject,\n\tkey,\n\tsectionID,\n\tindex,\n) {\n\tconst [sectionKey, slideKey] = key.split(\"/\");\n\tconst projectSection = project?.sections?.find?.((s) => s.key === sectionKey);\n\tconst projectSlide = projectSection?.slides?.find?.(\n\t\t(s) => s.key === slideKey,\n\t);\n\n\tconst slide = new PresentationSlide({\n\t\tid: parseInt(_.uniqueId(), 10),\n\t\ttitle: manifestJSON.titles[key],\n\t\tindex,\n\t\thtml: resolveURL(manifestJSON.getAssetPath(key), \"index.html\"),\n\t\tcss: resolveURL(manifestJSON.getAssetPath(key), \"slide.css\"),\n\t\tkey: slideKey,\n\t\teditable: false,\n\t\ttitleEditable: false,\n\t\tnotesEditable: true,\n\t\ttagsEditable: true,\n\t\tsequence: manifestJSON.ordering[key],\n\t\tthumbnail: null,\n\t\tcustom: false,\n\t\tvisible: true,\n\t\tsection: sectionID,\n\t\ttags: manifestJSON.tags[key] || null,\n\t\tcmsvalkey_set: projectSlide?.editables ?? [],\n\t});\n\n\treturn slide;\n};\n\nPresentationSlide.createFromManifestImpostor = function (\n\tslide,\n\t_section,\n\tproject,\n\tindex,\n\tsectionID,\n) {\n\tconst projectSection = project?.sections?.find?.(\n\t\t(s) => s.key === project.key,\n\t);\n\tconst projectSlide = projectSection?.slides?.find?.(\n\t\t(s) => s.key === slide.key,\n\t);\n\n\tconst presentationSlide = new PresentationSlide({\n\t\tid: parseInt(_.uniqueId(), 10),\n\t\teditable: slide.tags.indexOf(\"editable\") !== -1,\n\t\ttitleEditable: false,\n\t\tnotesEditable: true,\n\t\ttagsEditable: true,\n\t\tthumbnail: null,\n\t\tcustom: false,\n\t\tvisible: true,\n\t\tsection: sectionID,\n\t\tindex,\n\t\t...slide,\n\t\tcmsvalkey_set: projectSlide?.editables ?? [],\n\t});\n\n\treturn presentationSlide;\n};\n\nPresentationSlide.createFromTemplate = function (\n\ttemplate,\n\tindex,\n\tsectionID,\n\tminID = 0,\n) {\n\tconst presentationSlide = new PresentationSlide({\n\t\t...template,\n\t\tid: minID + parseInt(_.uniqueId(), 10),\n\t\teditable: false,\n\t\ttitleEditable: false,\n\t\tnotesEditable: false,\n\t\ttagsEditable: false,\n\t\tcustom: false,\n\t\tvisible: true,\n\t\tthumbnail: template.image_256,\n\t\tsection: sectionID,\n\t\t// Makes sure templates are rendered with unique IDs\n\t\tautoAdjunctID: Number(_.uniqueId()),\n\t\tindex,\n\t\tcreatedByTemplate: true,\n\t\tcmsvalkey_set: [],\n\t\tnamespacedKey: template.namespaced_key,\n\t});\n\treturn presentationSlide;\n};\n\nPresentationSlide.createFromAutoAdjunct = function (model, opts = {}) {\n\tconst requiredKeys = [\"index\", \"deckversionID\"];\n\tfor (const key of requiredKeys) {\n\t\tif (typeof opts[key] === \"undefined\") {\n\t\t\tthrow new Error(`Missing required key '${key}'.`);\n\t\t}\n\t}\n\n\tconst options = _.defaults(opts, {\n\t\tallowConvert: true,\n\t\tvisible: true,\n\t\tindex: -1,\n\t\tdeckversionID: -1,\n\t\tsectionKey: \"\",\n\t\tsequence: opts.index,\n\t\timpostor: false,\n\t\tscreenshots: new collections.DeckVersionScreenshotCollection(),\n\t});\n\n\toptions.screenshots = PresentationSlide.screenshotsToMap(options.screenshots);\n\n\tconst tags = PresentationSlide.getTags(\n\t\t{\n\t\t\tisAutoAdjunct: true,\n\t\t\tkey: model.key,\n\t\t\ttags: model.tags,\n\t\t},\n\t\toptions,\n\t);\n\n\tconst autoAdjunct = new AutoAdjunctModel(model);\n\n\tconst autoAdjunctSlide = new PresentationSlide({\n\t\tid: options.id || autoAdjunct.id,\n\t\tadjunctID: autoAdjunct.id,\n\t\tautoAdjunctID: autoAdjunct.id,\n\t\tcreatedByTemplate: autoAdjunct.template !== null,\n\t\ttemplateID: autoAdjunct.template?.id || null,\n\t\ttemplate: autoAdjunct.template || null,\n\t\thtml: \"\",\n\t\tcss: \"\",\n\t\tsequence: options.sequence,\n\t\tindex: options.index,\n\t\tkey: autoAdjunct.key,\n\t\tcreatedByAutoAdjunct: false,\n\t\tthumbnail: PresentationSlide.getThumbnail(autoAdjunct, options.screenshots),\n\t\ttemporary: true,\n\t\ttitle: autoAdjunct.name,\n\t\tvisible: options.visible,\n\t\tallowConvert: options.allowConvert,\n\t\tdeckversion: options.deckversionID,\n\t\timpostor: options.impostor,\n\t\tsectionKey: options.sectionKey,\n\t\ttags,\n\t\tcmsvalkey_set: autoAdjunct.cmsvalkey_set,\n\t\tnamespacedKey: autoAdjunct.namespaced_key,\n\t\teditable: true,\n\t\ttitleEditable: true,\n\t\tnotesEditable: true,\n\t\ttagsEditable: true,\n\t});\n\n\tif (autoAdjunct.template) {\n\t\t// If we've found a new screenshot for it, we don't want to override it here\n\t\tif (!autoAdjunctSlide.thumbnail) {\n\t\t\tautoAdjunctSlide.thumbnail = autoAdjunct.template.image_256;\n\t\t}\n\t\tautoAdjunctSlide.createdByTemplate = true;\n\t\tautoAdjunctSlide.templateID = autoAdjunct.template.id;\n\t\tautoAdjunctSlide.html = autoAdjunct.template.index_asset.url();\n\t\t//\n\t\t// We've had some instances where the caching was returning the wrong data, and the\n\t\t// app was unable to recover when an autoadjunct was missing keys. So, check for missing\n\t\t// keys.\n\t\tconst missingKeys = autoAdjunct.template.cmsvalkey_set\n\t\t\t.filter((t) => {\n\t\t\t\treturn !autoAdjunctSlide.cmsvalkey_set.find((k) => k.startsWith(t));\n\t\t\t})\n\t\t\t.map((t) => {\n\t\t\t\treturn `${t}-autoadjunct-${autoAdjunct.id}`;\n\t\t\t});\n\n\t\tautoAdjunctSlide.cmsvalkey_set.push(...missingKeys);\n\t} else {\n\t\tautoAdjunctSlide.image = autoAdjunct.image_original;\n\t}\n\n\treturn autoAdjunctSlide;\n};\n\nregister(\"PresentationSlide\", PresentationSlide);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"presentation-slide.js","names":["require","collections","_interopRequireWildcard","_models","_basePresentationModel","_presentationSubslide","_lodash","_interopRequireDefault","_index","_stateRegister","_utils","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","PresentationSlide","exports","BasePresentationModel","extend","props","id","adjunctID","autoAdjunctID","type","templateID","createdByAutoAdjunct","createdByTemplate","namespacedKey","html","css","index","key","sequence","custom","temporary","visible","title","section","sectionKey","image","_orig_image","thumbnail","selectionID","editable","titleEditable","notesEditable","tagsEditable","tags","cmsvalkey_set","isWelcome","isSlide","isSection","children","adjunct","template","subslides","url","_url","_","isNumber","AdjunctSlideModel","SlideModel","toString","concat","createFromSlide","slideModel","_options$adjunctSubSl","_options$rootAssetPat","_options$selections","_options$choicelist","_options$getUniqueAdj","_options$screenshots","_options$adjunctSubSl2","options","undefined","adjunctSubSlides","AdjunctSubSlideCollection","rootAssetPath","selections","choicelist","getUniqueAdjunctID","parseInt","uniqueId","screenshots","screenshotsToMap","DeckVersionScreenshotCollection","assetRoot","getAssetRoot","index_asset","_options$baseRoot","baseRoot","deckversion","slidePath","slice","config","getVisibilityAndSequence","getTags","slide","getThumbnail","indexOf","namespaced_key","add","subslide_set","map","model","PresentationSubSlide","createFromSubSlide","adjunctSubslides","adjunctSubSlidesBySlide","maxID","Math","max","_toConsumableArray2","s","createFromAdjunctSubSlide","createFromAdjunctSlide","adjunctSlideModel","_options$id","_options$rootAssetPat2","_options$selections2","_options$choicelist2","_options$getUniqueAdj2","_options$screenshots2","_adjunctSlideModel$cr","_adjunctSlideModel$te","_adjunctSlideModel$te2","keyID","creator_autoadjunct","image_256","created_by_autoadjunct","Boolean","Error","origPath","orig_path","image_original","createFromManifestJSON","manifestJSON","project","sectionID","_project$sections","_project$sections$fin","_projectSection$slide","_projectSection$slide2","_projectSlide$editabl","_key$split","split","_key$split2","_slicedToArray2","slideKey","projectSection","sections","find","projectSlide","slides","titles","resolveURL","getAssetPath","ordering","editables","createFromManifestImpostor","_section","_project$sections2","_project$sections2$fi","_projectSection$slide3","_projectSection$slide4","_projectSlide$editabl2","presentationSlide","createFromTemplate","minID","Number","createFromAutoAdjunct","_options$allowConvert","_options$visible","_options$index","_options$deckversionI","_options$sectionKey","_options$sequence","_options$impostor","_options$screenshots3","_autoAdjunct$template","opts","requiredKeys","_i","_requiredKeys","allowConvert","deckversionID","impostor","isAutoAdjunct","autoAdjunct","AutoAdjunctModel","autoAdjunctSlide","name","_autoAdjunctSlide$cms","missingKeys","k","startsWith","register"],"sources":["../../src/presentation/presentation-slide.js"],"sourcesContent":["import \"./presentation-subslides.js\";\n\nimport * as collections from \"../collections.js\";\n\nimport { AdjunctSlideModel, AutoAdjunctModel, SlideModel } from \"../models.js\";\n\nimport { BasePresentationModel } from \"./base-presentation-model.js\";\nimport { PresentationSubSlide } from \"./presentation-subslide.js\";\nimport _ from \"lodash\";\nimport { getAssetRoot } from \"../index.js\";\nimport { register } from \"../state-register.js\";\nimport { resolveURL } from \"../utils.js\";\n\n/**\n * @constructor\n * @alias presentation.PresentationSlide\n * @extends presentation.BasePresentationModel\n */\nexport const PresentationSlide = BasePresentationModel.extend(\n\t/** @lends presentation.PresentationSlide# */ {\n\t\t/**\n\t\t * @property {number} id\n\t\t * @property {number} adjunctID\n\t\t * @property {number} autoAdjunctID\n\t\t * @property {number} templateID\n\t\t * @property {boolean} createdByAutoAdjunct\n\t\t * @property {boolean} createdByTemplate\n\t\t * @property {string} namespacedKey\n\t\t * @property {string} html\n\t\t * @property {string} css\n\t\t * @property {number} index\n\t\t * @property {string} key\n\t\t * @property {number} sequence\n\t\t * @property {boolean} custom\n\t\t * @property {boolean} temporary\n\t\t * @property {boolean} visible\n\t\t * @property {string} title\n\t\t * @property {number} section\n\t\t * @property {string} image\n\t\t * @property {string} _orig_image\n\t\t * @property {string} thumbnail\n\t\t * @property {number} selectionID\n\t\t * @property {bool} editable\n\t\t * @property {bool} titleEditable\n\t\t * @property {bool} notesEditable\n\t\t * @property {bool} tagsEditable\n\t\t * @property {array} tags\n\t\t * @property {string[]} cmsvalkey_set\n\t\t */\n\t\tprops: {\n\t\t\tid: \"number\",\n\t\t\tadjunctID: \"number\",\n\t\t\tautoAdjunctID: {\n\t\t\t\ttype: \"number\",\n\t\t\t\tdefault: null,\n\t\t\t},\n\t\t\ttemplateID: {\n\t\t\t\ttype: \"number\",\n\t\t\t\tdefault: null,\n\t\t\t},\n\t\t\tcreatedByAutoAdjunct: {\n\t\t\t\ttype: \"boolean\",\n\t\t\t\tdefault: false,\n\t\t\t},\n\t\t\tcreatedByTemplate: {\n\t\t\t\ttype: \"boolean\",\n\t\t\t\tdefault: false,\n\t\t\t},\n\t\t\tnamespacedKey: \"string\",\n\t\t\thtml: \"string\",\n\t\t\tcss: \"string\",\n\t\t\tindex: \"number\",\n\t\t\tkey: \"string\",\n\t\t\tsequence: \"number\",\n\t\t\tcustom: \"boolean\",\n\t\t\ttemporary: \"boolean\",\n\t\t\tvisible: \"boolean\",\n\t\t\ttitle: \"string\",\n\t\t\tsection: \"number\",\n\t\t\tsectionKey: \"string\",\n\t\t\timage: \"string\",\n\t\t\t_orig_image: \"string\",\n\t\t\tthumbnail: \"string\",\n\t\t\tselectionID: \"number\",\n\t\t\teditable: \"boolean\",\n\t\t\ttitleEditable: \"boolean\",\n\t\t\tnotesEditable: \"boolean\",\n\t\t\ttagsEditable: \"boolean\",\n\t\t\ttags: \"array\",\n\t\t\tcmsvalkey_set: \"array\",\n\t\t\tisWelcome: { type: \"boolean\", default: false },\n\t\t\tisSlide: { type: \"boolean\", default: true },\n\t\t\tisSection: { type: \"boolean\", default: false },\n\t\t},\n\n\t\t/**\n\t\t * @property {models.AdjunctModel} adjunct\n\t\t */\n\t\tchildren: {\n\t\t\tadjunct: \"AdjunctModel\",\n\t\t\ttemplate: \"TemplateModel\",\n\t\t},\n\n\t\t/**\n\t\t * @property {presentation.PresentationSubSlideCollection} subslides\n\t\t */\n\t\tcollections: {\n\t\t\tsubslides: \"PresentationSubSlideCollection\",\n\t\t},\n\n\t\turl() {\n\t\t\tif (!this._url) {\n\t\t\t\tif (_.isNumber(this.adjunctID)) {\n\t\t\t\t\tthis._url = new AdjunctSlideModel({ id: this.adjunctID }).url();\n\t\t\t\t} else {\n\t\t\t\t\tthis._url = new SlideModel({ id: this.id }).url();\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this._url;\n\t\t},\n\n\t\ttoString() {\n\t\t\treturn `Slide: ${this.key} (${this.id})`;\n\t\t},\n\t},\n);\n\n/**\n * @function createFromSlide\n * @memberof presentation.PresentationSlide\n * @param {models.SlideModel} slideModel\n * @param {object} [options]\n * @returns {presentation.PresentationSlide}\n */\nPresentationSlide.createFromSlide = function (slideModel, options = {}) {\n\toptions.adjunctSubSlides ??= new collections.AdjunctSubSlideCollection();\n\toptions.rootAssetPath ??= null;\n\toptions.selections ??= null;\n\toptions.choicelist ??= null;\n\toptions.getUniqueAdjunctID ??= () => parseInt(_.uniqueId(), 10);\n\toptions.screenshots = PresentationSlide.screenshotsToMap(\n\t\toptions.screenshots ?? new collections.DeckVersionScreenshotCollection(),\n\t);\n\n\tlet html;\n\tlet css;\n\n\tconst assetRoot = getAssetRoot(slideModel.index_asset.url());\n\n\tif (options.rootAssetPath) {\n\t\tconst baseRoot =\n\t\t\toptions.baseRoot ??\n\t\t\tgetAssetRoot(slideModel.section.deckversion.index_asset.url());\n\t\tconst slidePath = assetRoot.slice(baseRoot.length);\n\t\thtml = `${options.rootAssetPath}${slidePath}index.html`;\n\t\tcss = `${options.rootAssetPath}${slidePath}slide.css`;\n\t} else {\n\t\thtml = `${assetRoot}index.html`;\n\t\tcss = `${assetRoot}slide.css`;\n\t}\n\n\tconst config = PresentationSlide.getVisibilityAndSequence(\n\t\tslideModel,\n\t\toptions,\n\t);\n\n\tconst tags = PresentationSlide.getTags(slideModel, options);\n\n\tconst slide = new PresentationSlide({\n\t\tid: slideModel.id,\n\t\tadjunctID: null,\n\t\thtml,\n\t\tcss,\n\t\tkey: slideModel.key,\n\t\tthumbnail: PresentationSlide.getThumbnail(slideModel, options.screenshots),\n\t\tcustom: false,\n\t\teditable: tags.indexOf(\"editable\") > -1,\n\t\t// By default this is true for a deck slide. These can be changed later in PM depending\n\t\t// on the logged in user and properties of an AutoAdjunct\n\t\ttitleEditable: false,\n\t\tnotesEditable: true,\n\t\ttagsEditable: true,\n\t\ttitle: slideModel.title,\n\t\tsection: slideModel.section.id,\n\t\tsectionKey: slideModel.section.key,\n\t\ttags,\n\t\tindex: config.sequence,\n\t\tsequence: config.sequence,\n\t\tvisible: config.visible,\n\t\tselectionID: config.selectionID,\n\t\tcmsvalkey_set: slideModel.cmsvalkey_set,\n\t\tnamespacedKey: slideModel.namespaced_key,\n\t});\n\n\tslide.subslides.add(\n\t\tslideModel.subslide_set.map((model) => {\n\t\t\treturn PresentationSubSlide.createFromSubSlide(model, options);\n\t\t}),\n\t);\n\n\tconst adjunctSubslides = options.adjunctSubSlidesBySlide\n\t\t? (options.adjunctSubSlidesBySlide.get(slideModel.id) ?? [])\n\t\t: options.adjunctSubSlides.filter(\n\t\t\t\t(model) => model.slide.id === slideModel.id,\n\t\t\t);\n\n\t// If the slide's content is entirely adjunct and does not have a distinct\n\t// first subslide, we need to create one based on the slide.\n\t// This is mostly just a legacy format and is required for screenshots.\n\t// See REA-Developer's Investment Summary for an example.\n\tif (\n\t\tadjunctSubslides.length &&\n\t\t!slide.subslides.length &&\n\t\t!(tags.indexOf(\"subslide_container\") > -1)\n\t) {\n\t\tslide.subslides.add(PresentationSubSlide.createFromSlide(slide));\n\t}\n\n\tlet maxID = 0;\n\tif (slide.subslides.length) {\n\t\tmaxID = Math.max(...slide.subslides.map((s) => s.id));\n\t}\n\n\t// Add any adjunct subslides to the list\n\tslide.subslides.add(\n\t\tadjunctSubslides.map((model, index) => {\n\t\t\tconst id = maxID + index + 1;\n\n\t\t\treturn PresentationSubSlide.createFromAdjunctSubSlide(model, slideModel, {\n\t\t\t\t...options,\n\t\t\t\tid,\n\t\t\t});\n\t\t}),\n\t);\n\n\treturn slide;\n};\n\n/**\n * @function createFromAdjunctSlide\n * @memberof presentation.PresentationSlide\n * @param {models.AdjunctSlideModel} adjunctSlideModel\n * @param {models.SectionModel} sectionModel\n * @param {object} [options]\n * @returns {presentation.PresentationSlide}\n */\nPresentationSlide.createFromAdjunctSlide = function (\n\tadjunctSlideModel,\n\tsection = null,\n\toptions = {},\n) {\n\toptions.id ??= null;\n\toptions.rootAssetPath ??= null;\n\toptions.selections ??= null;\n\toptions.choicelist ??= null;\n\toptions.getUniqueAdjunctID ??= () => parseInt(_.uniqueId(), 10);\n\toptions.screenshots = PresentationSlide.screenshotsToMap(\n\t\toptions.screenshots ?? new collections.DeckVersionScreenshotCollection(),\n\t);\n\n\tconst keyID =\n\t\tadjunctSlideModel.id ||\n\t\t(adjunctSlideModel.creator_autoadjunct\n\t\t\t? adjunctSlideModel.creator_autoadjunct.id\n\t\t\t: null);\n\n\tlet key = null;\n\n\tif (adjunctSlideModel.key) {\n\t\tkey = adjunctSlideModel.key;\n\t} else if (keyID) {\n\t\tkey = `adjunct-${keyID}`;\n\t\tadjunctSlideModel.key = key;\n\t}\n\n\tconst config = PresentationSlide.getVisibilityAndSequence(\n\t\tadjunctSlideModel,\n\t\toptions,\n\t);\n\n\tconst tags = PresentationSlide.getTags(adjunctSlideModel, options);\n\n\tconst autoAdjunctID = adjunctSlideModel.creator_autoadjunct?.id || null;\n\n\tconst slide = new PresentationSlide({\n\t\tid: options.id || options.getUniqueAdjunctID(),\n\t\tadjunct: adjunctSlideModel.adjunct,\n\t\tadjunctID: adjunctSlideModel.id,\n\t\tautoAdjunctID,\n\t\tkey,\n\t\tthumbnail: adjunctSlideModel.image_256,\n\t\tcreatedByAutoAdjunct: adjunctSlideModel.created_by_autoadjunct,\n\t\tcreatedByTemplate: Boolean(adjunctSlideModel.template),\n\t\tcustom: !adjunctSlideModel.created_by_autoadjunct,\n\t\ttemporary: adjunctSlideModel.created_by_autoadjunct,\n\t\ttitle: adjunctSlideModel.title,\n\t\tsection: section ? section.id : null,\n\t\ttags,\n\t\tindex: config.sequence,\n\t\tsequence: config.sequence,\n\t\tvisible: config.visible,\n\t\tcmsvalkey_set: adjunctSlideModel.template?.cmsvalkey_set || [],\n\t\ttemplateID: adjunctSlideModel.template?.id || null,\n\t\ttemplate: adjunctSlideModel.template || null,\n\t\tnamespacedKey: adjunctSlideModel.namespaced_key,\n\t});\n\n\tif (adjunctSlideModel.template) {\n\t\tif (!adjunctSlideModel.template.index_asset) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Template missing index_asset. Do you have the whole template available?\",\n\t\t\t);\n\t\t}\n\t\tconst origPath = adjunctSlideModel.template.index_asset.orig_path;\n\t\tlet html;\n\t\tlet css;\n\n\t\tif (options.rootAssetPath) {\n\t\t\thtml = `${options.rootAssetPath}${origPath}/index.html`;\n\t\t\tcss = `${options.rootAssetPath}${origPath}/slide.css`;\n\t\t} else {\n\t\t\tconst assetRoot = getAssetRoot(\n\t\t\t\tadjunctSlideModel.template.index_asset.url(),\n\t\t\t);\n\t\t\thtml = `${assetRoot}index.html`;\n\t\t\tcss = `${assetRoot}slide.css`;\n\t\t}\n\t\tslide.html = html;\n\t\tslide.css = css;\n\n\t\tif (adjunctSlideModel.creator_autoadjunct) {\n\t\t\tslide.thumbnail = PresentationSlide.getThumbnail(\n\t\t\t\tadjunctSlideModel.creator_autoadjunct,\n\t\t\t\toptions.screenshots,\n\t\t\t);\n\t\t}\n\n\t\tif (!slide.thumbnail) {\n\t\t\tslide.thumbnail = adjunctSlideModel.template.image_256;\n\t\t}\n\t} else {\n\t\tslide.image = adjunctSlideModel.image_original;\n\t}\n\n\treturn slide;\n};\n\nPresentationSlide.createFromManifestJSON = function (\n\tmanifestJSON,\n\tproject,\n\tkey,\n\tsectionID,\n\tindex,\n) {\n\tconst [sectionKey, slideKey] = key.split(\"/\");\n\tconst projectSection = project?.sections?.find?.((s) => s.key === sectionKey);\n\tconst projectSlide = projectSection?.slides?.find?.(\n\t\t(s) => s.key === slideKey,\n\t);\n\n\tconst slide = new PresentationSlide({\n\t\tid: parseInt(_.uniqueId(), 10),\n\t\ttitle: manifestJSON.titles[key],\n\t\tindex,\n\t\thtml: resolveURL(manifestJSON.getAssetPath(key), \"index.html\"),\n\t\tcss: resolveURL(manifestJSON.getAssetPath(key), \"slide.css\"),\n\t\tkey: slideKey,\n\t\teditable: false,\n\t\ttitleEditable: false,\n\t\tnotesEditable: true,\n\t\ttagsEditable: true,\n\t\tsequence: manifestJSON.ordering[key],\n\t\tthumbnail: null,\n\t\tcustom: false,\n\t\tvisible: true,\n\t\tsection: sectionID,\n\t\ttags: manifestJSON.tags[key] || null,\n\t\tcmsvalkey_set: projectSlide?.editables ?? [],\n\t});\n\n\treturn slide;\n};\n\nPresentationSlide.createFromManifestImpostor = function (\n\tslide,\n\t_section,\n\tproject,\n\tindex,\n\tsectionID,\n) {\n\tconst projectSection = project?.sections?.find?.(\n\t\t(s) => s.key === project.key,\n\t);\n\tconst projectSlide = projectSection?.slides?.find?.(\n\t\t(s) => s.key === slide.key,\n\t);\n\n\tconst presentationSlide = new PresentationSlide({\n\t\tid: parseInt(_.uniqueId(), 10),\n\t\teditable: slide.tags.indexOf(\"editable\") !== -1,\n\t\ttitleEditable: false,\n\t\tnotesEditable: true,\n\t\ttagsEditable: true,\n\t\tthumbnail: null,\n\t\tcustom: false,\n\t\tvisible: true,\n\t\tsection: sectionID,\n\t\tindex,\n\t\t...slide,\n\t\tcmsvalkey_set: projectSlide?.editables ?? [],\n\t});\n\n\treturn presentationSlide;\n};\n\nPresentationSlide.createFromTemplate = function (\n\ttemplate,\n\tindex,\n\tsectionID,\n\tminID = 0,\n) {\n\tconst presentationSlide = new PresentationSlide({\n\t\t...template,\n\t\tid: minID + parseInt(_.uniqueId(), 10),\n\t\teditable: false,\n\t\ttitleEditable: false,\n\t\tnotesEditable: false,\n\t\ttagsEditable: false,\n\t\tcustom: false,\n\t\tvisible: true,\n\t\tthumbnail: template.image_256,\n\t\tsection: sectionID,\n\t\t// Makes sure templates are rendered with unique IDs\n\t\tautoAdjunctID: Number(_.uniqueId()),\n\t\tindex,\n\t\tcreatedByTemplate: true,\n\t\tcmsvalkey_set: [],\n\t\tnamespacedKey: template.namespaced_key,\n\t});\n\treturn presentationSlide;\n};\n\nPresentationSlide.createFromAutoAdjunct = function (model, opts = {}) {\n\tconst requiredKeys = [\"index\", \"deckversionID\"];\n\tfor (const key of requiredKeys) {\n\t\tif (typeof opts[key] === \"undefined\") {\n\t\t\tthrow new Error(`Missing required key '${key}'.`);\n\t\t}\n\t}\n\n\tconst options = opts;\n\toptions.allowConvert ??= true;\n\toptions.visible ??= true;\n\toptions.index ??= -1;\n\toptions.deckversionID ??= -1;\n\toptions.sectionKey ??= \"\";\n\toptions.sequence ??= opts.index;\n\toptions.impostor ??= false;\n\toptions.screenshots = PresentationSlide.screenshotsToMap(\n\t\toptions.screenshots ?? new collections.DeckVersionScreenshotCollection(),\n\t);\n\n\tconst tags = PresentationSlide.getTags(\n\t\t{\n\t\t\tisAutoAdjunct: true,\n\t\t\tkey: model.key,\n\t\t\ttags: model.tags,\n\t\t},\n\t\toptions,\n\t);\n\n\tconst autoAdjunct = new AutoAdjunctModel(model);\n\n\tconst autoAdjunctSlide = new PresentationSlide({\n\t\tid: options.id || autoAdjunct.id,\n\t\tadjunctID: autoAdjunct.id,\n\t\tautoAdjunctID: autoAdjunct.id,\n\t\tcreatedByTemplate: autoAdjunct.template !== null,\n\t\ttemplateID: autoAdjunct.template?.id || null,\n\t\ttemplate: autoAdjunct.template || null,\n\t\thtml: \"\",\n\t\tcss: \"\",\n\t\tsequence: options.sequence,\n\t\tindex: options.index,\n\t\tkey: autoAdjunct.key,\n\t\tcreatedByAutoAdjunct: false,\n\t\tthumbnail: PresentationSlide.getThumbnail(autoAdjunct, options.screenshots),\n\t\ttemporary: true,\n\t\ttitle: autoAdjunct.name,\n\t\tvisible: options.visible,\n\t\tallowConvert: options.allowConvert,\n\t\tdeckversion: options.deckversionID,\n\t\timpostor: options.impostor,\n\t\tsectionKey: options.sectionKey,\n\t\ttags,\n\t\tcmsvalkey_set: autoAdjunct.cmsvalkey_set,\n\t\tnamespacedKey: autoAdjunct.namespaced_key,\n\t\teditable: true,\n\t\ttitleEditable: true,\n\t\tnotesEditable: true,\n\t\ttagsEditable: true,\n\t});\n\n\tif (autoAdjunct.template) {\n\t\t// If we've found a new screenshot for it, we don't want to override it here\n\t\tif (!autoAdjunctSlide.thumbnail) {\n\t\t\tautoAdjunctSlide.thumbnail = autoAdjunct.template.image_256;\n\t\t}\n\t\tautoAdjunctSlide.createdByTemplate = true;\n\t\tautoAdjunctSlide.templateID = autoAdjunct.template.id;\n\t\tautoAdjunctSlide.html = autoAdjunct.template.index_asset.url();\n\t\t//\n\t\t// We've had some instances where the caching was returning the wrong data, and the\n\t\t// app was unable to recover when an autoadjunct was missing keys. So, check for missing\n\t\t// keys.\n\t\tconst missingKeys = autoAdjunct.template.cmsvalkey_set\n\t\t\t.filter((t) => {\n\t\t\t\treturn !autoAdjunctSlide.cmsvalkey_set.find((k) => k.startsWith(t));\n\t\t\t})\n\t\t\t.map((t) => {\n\t\t\t\treturn `${t}-autoadjunct-${autoAdjunct.id}`;\n\t\t\t});\n\n\t\tautoAdjunctSlide.cmsvalkey_set.push(...missingKeys);\n\t} else {\n\t\tautoAdjunctSlide.image = autoAdjunct.image_original;\n\t}\n\n\treturn autoAdjunctSlide;\n};\n\nregister(\"PresentationSlide\", PresentationSlide);\n"],"mappings":"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","ignoreList":[]}
package/cjs/utils.js CHANGED
@@ -134,15 +134,18 @@ function getMaxID(deckVersionModel) {
134
134
  // but the sequence is not necessarily 0-based and sequential (e.g. in the
135
135
  // case of impostor decks). We fix that here.
136
136
  function setSequentialSequences(deck) {
137
+ // Write directly to _values to bypass ampersand-state's setter overhead
138
+ // (type casting + change event firing). These are freshly created presentation
139
+ // models with no external listeners, so skipping the events is safe.
137
140
  deck.sections.forEach(function (section, index) {
138
- section.sequence = index;
139
- section.index = index;
141
+ section._values.sequence = index;
142
+ section._values.index = index;
140
143
  section.slides.forEach(function (slide, index) {
141
- slide.sequence = index;
142
- slide.index = index;
144
+ slide._values.sequence = index;
145
+ slide._values.index = index;
143
146
  slide.subslides.forEach(function (subslide, index) {
144
- subslide.sequence = index;
145
- subslide.index = index;
147
+ subslide._values.sequence = index;
148
+ subslide._values.index = index;
146
149
  });
147
150
  });
148
151
  });
package/cjs/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["_lodash","_interopRequireDefault","require","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","DATE_FORMAT","exports","DATE_FORMAT_T","getShortURL","url","URL","pathname","resolveURL","base","relative","dummyBase","href","resolved","replace","e2","removeMultiByteChars","_txt","txt","HOSTNAME_RE","getHostname","data","Error","concat","match","replaceHostname","before","after","hostnameBefore","hostnameAfter","indexOf","Array","isArray","map","item","_","isObject","reduce","newObj","key","getMaxID","deckVersionModel","ids","section_set","section","slides","slide_set","slide","subslides","subslide_set","subslide","id","_toConsumableArray2","flatten","max","setSequentialSequences","deck","sections","index","sequence","isImpostor","model","tags","isImpostorDeck","first","Boolean","find","sanitizeBase64","obj","conditionFn","undefined","v","_typeof2","acc","re","test","_conditionFn","process","env","NODE_ENV","window","Cypress"],"sources":["../src/utils.js"],"sourcesContent":["import _ from \"lodash\";\n/* eslint-disable no-control-regex */\n\nexport const DATE_FORMAT = \"YYYY-MM-DD HH:mm:ss.SSSSSS[Z]\";\nexport const DATE_FORMAT_T = \"YYYY-MM-DDTHH:mm:ss.SSSSSS[Z]\";\n\nexport function getShortURL(url) {\n\tif (!url) return url;\n\tif (typeof url !== \"string\") return url;\n\n\ttry {\n\t\treturn new URL(url, \"http://a.b\").pathname;\n\t} catch (e) {\n\t\treturn url;\n\t}\n}\n\n/**\n * Resolves a target URL relative to a base URL in a manner similar to a Web browser resolving an anchor tag.\n * Matches url.resolve() behavior but handles relative bases.\n */\nexport function resolveURL(base, relative) {\n\tif (!base) return relative;\n\tif (!relative) return base;\n\n\tconst dummyBase = \"http://a.b\";\n\ttry {\n\t\t// Try resolving normally (if base is absolute)\n\t\treturn new URL(relative, base).href;\n\t} catch (e) {\n\t\ttry {\n\t\t\t// If base is relative, resolve it against a dummy base, then strip it\n\t\t\tconst resolved = new URL(relative, new URL(base, dummyBase));\n\t\t\treturn resolved.href.replace(dummyBase, \"\");\n\t\t} catch (e2) {\n\t\t\treturn relative;\n\t\t}\n\t}\n}\n\n/**\n * Sometimes a string(especially from another platform) has characters encoded using another method.\n * In these circumstances those characters, when encoded with utf-8, look like errors.\n * see http://i18nqa.com/debug/utf8-debug.html for examples\n */\nexport function removeMultiByteChars(_txt) {\n\t// replace possible whitespace characters (non-breaking space, thin space etc.) with a normal space\n\tconst txt = _txt.replace(/(\\xA0|\\x20|\\x07| )/gmu, \" \");\n\n\t// remove every other cursed character entirely.\n\treturn txt.replace(\n\t\t/[\\xC0-\\xDF][\\x80-\\xBF]|[\\xE0-\\xEF][\\x80-\\xBF]{2}|[\\xF0-\\xF7][\\x80-\\xBF]{3}|[\\x80-\\xBF][\\xC0-\\xFF]/gmu,\n\t\t\"\",\n\t);\n}\n\nconst HOSTNAME_RE = /^(?:https?:\\/\\/)?([\\w-\\._]*)/;\n\nexport function getHostname(data) {\n\tif (typeof data !== \"string\") {\n\t\tthrow new Error(\n\t\t\t`Arg must contain a hostname, ie: \"test.livepreso.com\". Found \"${data}\"`,\n\t\t);\n\t}\n\n\treturn data.match(HOSTNAME_RE)[1];\n}\n\n/**\n * Replaces the hostname in some data (regardless of it being a string, array or object),\n * it will recursively update it all.\n *\n * Eg:\n *\n * replaceHostname(\"https://test.com/api/cool/1/\", \"test.com\", \"real.com\")\n * > \"https://real.com/api/cool/1/\"\n *\n */\nexport function replaceHostname(data, before, after) {\n\t// Don't do anything if they're the same!\n\tif (before === after) {\n\t\treturn data;\n\t}\n\n\tconst hostnameBefore = getHostname(before, \"Before\");\n\tconst hostnameAfter = getHostname(after, \"After\");\n\n\tif (typeof data === \"string\" && data.indexOf(\"http\") === 0) {\n\t\treturn data.replace(hostnameBefore, hostnameAfter);\n\t} else if (Array.isArray(data)) {\n\t\treturn data.map((item) => replaceHostname(item, before, after));\n\t} else if (_.isObject(data)) {\n\t\treturn Object.keys(data).reduce((newObj, key) => {\n\t\t\tnewObj[key] = replaceHostname(data[key], before, after);\n\t\t\treturn newObj;\n\t\t}, {});\n\t}\n\treturn data;\n}\n\n// Takes the deckversion model and retrieves the highest id between all of\n// the sections, slides and subslides\nexport function getMaxID(deckVersionModel) {\n\tconst ids = deckVersionModel.section_set.map((section) => {\n\t\tlet slides = [];\n\t\tif (section.slide_set) {\n\t\t\tslides = section.slide_set.map((slide) => {\n\t\t\t\tlet subslides = [];\n\n\t\t\t\tif (slide.subslide_set) {\n\t\t\t\t\tsubslides = slide.subslide_set.map((subslide) => subslide.id);\n\t\t\t\t}\n\n\t\t\t\treturn [slide.id, ...subslides];\n\t\t\t});\n\t\t}\n\n\t\treturn [section.id, ..._.flatten(slides)];\n\t});\n\n\treturn _.max(_.flatten(ids));\n}\n\n// The sections, slides and subslides are currently ordered by sequence\n// but the sequence is not necessarily 0-based and sequential (e.g. in the\n// case of impostor decks). We fix that here.\nexport function setSequentialSequences(deck) {\n\tdeck.sections.forEach((section, index) => {\n\t\tsection.sequence = index;\n\t\tsection.index = index;\n\n\t\tsection.slides.forEach((slide, index) => {\n\t\t\tslide.sequence = index;\n\t\t\tslide.index = index;\n\n\t\t\tslide.subslides.forEach((subslide, index) => {\n\t\t\t\tsubslide.sequence = index;\n\t\t\t\tsubslide.index = index;\n\t\t\t});\n\t\t});\n\t});\n}\n\n// A simple function to check the tags of a model - if it has the \"section-header\"\n// tag then it's an impostor slide\nexport function isImpostor(model) {\n\tconst tags = model.tags || [];\n\n\treturn tags.indexOf(\"section-header\") !== -1;\n}\n\n// An impostor deck will have impostor slides - checking for these is the\n// most reliable method of determining whether a deck is an impostor deck,\n// and is also the same method that the server uses.\nexport function isImpostorDeck(deckVersionModel) {\n\tconst section = deckVersionModel.section_set.first();\n\n\treturn Boolean(\n\t\tsection && section.slide_set.find((slide) => isImpostor(slide)),\n\t);\n}\n\n/**\n * Strips base64 strings recursively.\n *\n * Optionally accepts a condition function, which you can use you add any extra\n * checks to test whether you want to clear the string.\n */\nexport function sanitizeBase64(obj, conditionFn = () => true) {\n\tif (Array.isArray(obj)) {\n\t\treturn obj.map((v) => sanitizeBase64(v, conditionFn));\n\t} else if (\n\t\ttypeof obj === \"object\" &&\n\t\tobj !== null &&\n\t\ttypeof obj !== \"undefined\"\n\t) {\n\t\treturn Object.keys(obj).reduce((acc, key) => {\n\t\t\treturn { ...acc, [key]: sanitizeBase64(obj[key], conditionFn) };\n\t\t}, {});\n\t} else if (typeof obj === \"string\") {\n\t\t// Catch anything that looks like base64, or base64%2C (which is the encoded version)\n\t\t// and strip it. This is a last resort, we'd prefer not to be in this position!\n\t\tconst re = /base64(,|(%2C))/;\n\n\t\tif (re.test(obj)) {\n\t\t\t// If you're a developer, let's throw an error.\n\t\t\tif (process.env.NODE_ENV === \"development\" && !window.Cypress) {\n\t\t\t\tthrow new Error(\"Tried to save a base64 string. Figure out why!\");\n\t\t\t}\n\n\t\t\tif (conditionFn?.(obj) ?? true) {\n\t\t\t\treturn \"\";\n\t\t\t}\n\t\t}\n\t}\n\treturn obj;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"utils.js","names":["_lodash","_interopRequireDefault","require","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","DATE_FORMAT","exports","DATE_FORMAT_T","getShortURL","url","URL","pathname","resolveURL","base","relative","dummyBase","href","resolved","replace","e2","removeMultiByteChars","_txt","txt","HOSTNAME_RE","getHostname","data","Error","concat","match","replaceHostname","before","after","hostnameBefore","hostnameAfter","indexOf","Array","isArray","map","item","_","isObject","reduce","newObj","key","getMaxID","deckVersionModel","ids","section_set","section","slides","slide_set","slide","subslides","subslide_set","subslide","id","_toConsumableArray2","flatten","max","setSequentialSequences","deck","sections","index","_values","sequence","isImpostor","model","tags","isImpostorDeck","first","Boolean","find","sanitizeBase64","obj","conditionFn","undefined","v","_typeof2","acc","re","test","_conditionFn","process","env","NODE_ENV","window","Cypress"],"sources":["../src/utils.js"],"sourcesContent":["import _ from \"lodash\";\n/* eslint-disable no-control-regex */\n\nexport const DATE_FORMAT = \"YYYY-MM-DD HH:mm:ss.SSSSSS[Z]\";\nexport const DATE_FORMAT_T = \"YYYY-MM-DDTHH:mm:ss.SSSSSS[Z]\";\n\nexport function getShortURL(url) {\n\tif (!url) return url;\n\tif (typeof url !== \"string\") return url;\n\n\ttry {\n\t\treturn new URL(url, \"http://a.b\").pathname;\n\t} catch (e) {\n\t\treturn url;\n\t}\n}\n\n/**\n * Resolves a target URL relative to a base URL in a manner similar to a Web browser resolving an anchor tag.\n * Matches url.resolve() behavior but handles relative bases.\n */\nexport function resolveURL(base, relative) {\n\tif (!base) return relative;\n\tif (!relative) return base;\n\n\tconst dummyBase = \"http://a.b\";\n\ttry {\n\t\t// Try resolving normally (if base is absolute)\n\t\treturn new URL(relative, base).href;\n\t} catch (e) {\n\t\ttry {\n\t\t\t// If base is relative, resolve it against a dummy base, then strip it\n\t\t\tconst resolved = new URL(relative, new URL(base, dummyBase));\n\t\t\treturn resolved.href.replace(dummyBase, \"\");\n\t\t} catch (e2) {\n\t\t\treturn relative;\n\t\t}\n\t}\n}\n\n/**\n * Sometimes a string(especially from another platform) has characters encoded using another method.\n * In these circumstances those characters, when encoded with utf-8, look like errors.\n * see http://i18nqa.com/debug/utf8-debug.html for examples\n */\nexport function removeMultiByteChars(_txt) {\n\t// replace possible whitespace characters (non-breaking space, thin space etc.) with a normal space\n\tconst txt = _txt.replace(/(\\xA0|\\x20|\\x07| )/gmu, \" \");\n\n\t// remove every other cursed character entirely.\n\treturn txt.replace(\n\t\t/[\\xC0-\\xDF][\\x80-\\xBF]|[\\xE0-\\xEF][\\x80-\\xBF]{2}|[\\xF0-\\xF7][\\x80-\\xBF]{3}|[\\x80-\\xBF][\\xC0-\\xFF]/gmu,\n\t\t\"\",\n\t);\n}\n\nconst HOSTNAME_RE = /^(?:https?:\\/\\/)?([\\w-\\._]*)/;\n\nexport function getHostname(data) {\n\tif (typeof data !== \"string\") {\n\t\tthrow new Error(\n\t\t\t`Arg must contain a hostname, ie: \"test.livepreso.com\". Found \"${data}\"`,\n\t\t);\n\t}\n\n\treturn data.match(HOSTNAME_RE)[1];\n}\n\n/**\n * Replaces the hostname in some data (regardless of it being a string, array or object),\n * it will recursively update it all.\n *\n * Eg:\n *\n * replaceHostname(\"https://test.com/api/cool/1/\", \"test.com\", \"real.com\")\n * > \"https://real.com/api/cool/1/\"\n *\n */\nexport function replaceHostname(data, before, after) {\n\t// Don't do anything if they're the same!\n\tif (before === after) {\n\t\treturn data;\n\t}\n\n\tconst hostnameBefore = getHostname(before, \"Before\");\n\tconst hostnameAfter = getHostname(after, \"After\");\n\n\tif (typeof data === \"string\" && data.indexOf(\"http\") === 0) {\n\t\treturn data.replace(hostnameBefore, hostnameAfter);\n\t} else if (Array.isArray(data)) {\n\t\treturn data.map((item) => replaceHostname(item, before, after));\n\t} else if (_.isObject(data)) {\n\t\treturn Object.keys(data).reduce((newObj, key) => {\n\t\t\tnewObj[key] = replaceHostname(data[key], before, after);\n\t\t\treturn newObj;\n\t\t}, {});\n\t}\n\treturn data;\n}\n\n// Takes the deckversion model and retrieves the highest id between all of\n// the sections, slides and subslides\nexport function getMaxID(deckVersionModel) {\n\tconst ids = deckVersionModel.section_set.map((section) => {\n\t\tlet slides = [];\n\t\tif (section.slide_set) {\n\t\t\tslides = section.slide_set.map((slide) => {\n\t\t\t\tlet subslides = [];\n\n\t\t\t\tif (slide.subslide_set) {\n\t\t\t\t\tsubslides = slide.subslide_set.map((subslide) => subslide.id);\n\t\t\t\t}\n\n\t\t\t\treturn [slide.id, ...subslides];\n\t\t\t});\n\t\t}\n\n\t\treturn [section.id, ..._.flatten(slides)];\n\t});\n\n\treturn _.max(_.flatten(ids));\n}\n\n// The sections, slides and subslides are currently ordered by sequence\n// but the sequence is not necessarily 0-based and sequential (e.g. in the\n// case of impostor decks). We fix that here.\nexport function setSequentialSequences(deck) {\n\t// Write directly to _values to bypass ampersand-state's setter overhead\n\t// (type casting + change event firing). These are freshly created presentation\n\t// models with no external listeners, so skipping the events is safe.\n\tdeck.sections.forEach((section, index) => {\n\t\tsection._values.sequence = index;\n\t\tsection._values.index = index;\n\n\t\tsection.slides.forEach((slide, index) => {\n\t\t\tslide._values.sequence = index;\n\t\t\tslide._values.index = index;\n\n\t\t\tslide.subslides.forEach((subslide, index) => {\n\t\t\t\tsubslide._values.sequence = index;\n\t\t\t\tsubslide._values.index = index;\n\t\t\t});\n\t\t});\n\t});\n}\n\n// A simple function to check the tags of a model - if it has the \"section-header\"\n// tag then it's an impostor slide\nexport function isImpostor(model) {\n\tconst tags = model.tags || [];\n\n\treturn tags.indexOf(\"section-header\") !== -1;\n}\n\n// An impostor deck will have impostor slides - checking for these is the\n// most reliable method of determining whether a deck is an impostor deck,\n// and is also the same method that the server uses.\nexport function isImpostorDeck(deckVersionModel) {\n\tconst section = deckVersionModel.section_set.first();\n\n\treturn Boolean(\n\t\tsection && section.slide_set.find((slide) => isImpostor(slide)),\n\t);\n}\n\n/**\n * Strips base64 strings recursively.\n *\n * Optionally accepts a condition function, which you can use you add any extra\n * checks to test whether you want to clear the string.\n */\nexport function sanitizeBase64(obj, conditionFn = () => true) {\n\tif (Array.isArray(obj)) {\n\t\treturn obj.map((v) => sanitizeBase64(v, conditionFn));\n\t} else if (\n\t\ttypeof obj === \"object\" &&\n\t\tobj !== null &&\n\t\ttypeof obj !== \"undefined\"\n\t) {\n\t\treturn Object.keys(obj).reduce((acc, key) => {\n\t\t\treturn { ...acc, [key]: sanitizeBase64(obj[key], conditionFn) };\n\t\t}, {});\n\t} else if (typeof obj === \"string\") {\n\t\t// Catch anything that looks like base64, or base64%2C (which is the encoded version)\n\t\t// and strip it. This is a last resort, we'd prefer not to be in this position!\n\t\tconst re = /base64(,|(%2C))/;\n\n\t\tif (re.test(obj)) {\n\t\t\t// If you're a developer, let's throw an error.\n\t\t\tif (process.env.NODE_ENV === \"development\" && !window.Cypress) {\n\t\t\t\tthrow new Error(\"Tried to save a base64 string. Figure out why!\");\n\t\t\t}\n\n\t\t\tif (conditionFn?.(obj) ?? true) {\n\t\t\t\treturn \"\";\n\t\t\t}\n\t\t}\n\t}\n\treturn obj;\n}\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@livepreso/api",
3
3
  "license": "UNLICENSED",
4
- "version": "6.57.0",
4
+ "version": "6.57.1",
5
5
  "description": "Everything to do with talking to the SalePreso API",
6
6
  "main": "index.js",
7
7
  "module": "esm/index.js",
@@ -56,8 +56,8 @@
56
56
  "jest-fixed-default-reporter": "~2.0.1",
57
57
  "rosie": "~2.1.0",
58
58
  "@faker-js/faker": "~7.5.0",
59
- "@livepreso/eslint-config": "1.0.0",
60
- "sp-test": "0.2.0"
59
+ "sp-test": "0.2.0",
60
+ "@livepreso/eslint-config": "1.0.0"
61
61
  },
62
62
  "scripts": {
63
63
  "test:debug": "node --inspect node_modules/.bin/jest --watch --runInBand",
@@ -1,13 +1,3 @@
1
- npm verbose cli /home/adam/.nvm/versions/node/v24.12.0/bin/node /home/adam/.nvm/versions/node/v24.12.0/bin/npm
2
- npm info using npm@11.6.2
3
- npm info using node@v24.12.0
4
- npm verbose title npm run build:cjs
5
- npm verbose argv "run" "build:cjs"
6
- npm verbose logfile logs-max:10 dir:/home/adam/.npm/_logs/2026-02-17T02_45_57_253Z-
7
- npm verbose logfile /home/adam/.npm/_logs/2026-02-17T02_45_57_253Z-debug-0.log
8
- npm verbose cwd /home/adam/Programming/work/livepreso/modules/api
9
- npm verbose os Linux 6.14.0-29-generic
10
- npm verbose node v24.12.0
11
- npm verbose npm v11.6.2
12
- npm verbose exit 0
13
- npm info ok
1
+ Browserslist: browsers data (caniuse-lite) is 9 months old. Please run:
2
+ npx update-browserslist-db@latest
3
+ Why you should do it regularly: https://github.com/browserslist/update-db#readme
@@ -1,19 +1,9 @@
1
1
  Invoking: run-p build:*
2
- npm verbose cli /home/adam/.nvm/versions/node/v24.12.0/bin/node /home/adam/.nvm/versions/node/v24.12.0/bin/npm
3
- npm info using npm@11.6.2
4
- npm info using node@v24.12.0
5
- npm verbose title npm run build:cjs
6
- npm verbose argv "run" "build:cjs"
7
- npm verbose logfile logs-max:10 dir:/home/adam/.npm/_logs/2026-02-17T02_45_57_253Z-
8
- npm verbose logfile /home/adam/.npm/_logs/2026-02-17T02_45_57_253Z-debug-0.log
9
2
 
10
- > @livepreso/api@6.55.2 build:cjs
3
+ > @livepreso/api@6.53.0 build:cjs
11
4
  > BABEL_ENV=cjs babel --delete-dir-on-start src/ --out-dir=cjs/ -s
12
5
 
13
- Successfully compiled 165 files with Babel (6718ms).
14
- npm verbose cwd /home/adam/Programming/work/livepreso/modules/api
15
- npm verbose os Linux 6.14.0-29-generic
16
- npm verbose node v24.12.0
17
- npm verbose npm v11.6.2
18
- npm verbose exit 0
19
- npm info ok
6
+ Browserslist: browsers data (caniuse-lite) is 9 months old. Please run:
7
+ npx update-browserslist-db@latest
8
+ Why you should do it regularly: https://github.com/browserslist/update-db#readme
9
+ Successfully compiled 163 files with Babel (17903ms).
@@ -13,6 +13,19 @@ export const AdjunctSubSlideCollection = DuplicateIdCollection.extend(
13
13
  /** @lends collections.AdjunctSubSlideCollection# */ {
14
14
  comparator: "sequence",
15
15
  model: "AdjunctSubSlideModel",
16
+
17
+ /**
18
+ * Fetch a collection of adjunct slides related to an appointment
19
+ * @param {Integer} id - The id of the appointment
20
+ * @return {Promise} - A collection of AdjunctSlide models
21
+ */
22
+ fetchByAppointmentID(id) {
23
+ return this.fetch({
24
+ data: {
25
+ appointment: id,
26
+ },
27
+ });
28
+ },
16
29
  },
17
30
  );
18
31
 
package/src/fixtures.js CHANGED
@@ -22,6 +22,8 @@ const presentationCollections = {
22
22
  PresentationSubSlides: presentation.PresentationSubSlides,
23
23
  };
24
24
 
25
+ const _buildStack = new Set();
26
+
25
27
  function uuid() {
26
28
  return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (c) => {
27
29
  const r = (Math.random() * 16) | 0;
@@ -70,7 +72,17 @@ function makeFactory(name, Model, ignoreFields = []) {
70
72
  continue;
71
73
  }
72
74
  factory.attr(key, () => {
73
- return Factory.build(value);
75
+ if (_buildStack.has(value)) {
76
+ throw new Error(
77
+ `Recursion detected: ${[..._buildStack].join(" -> ")} -> ${value}`,
78
+ );
79
+ }
80
+ _buildStack.add(value);
81
+ try {
82
+ return Factory.build(value);
83
+ } finally {
84
+ _buildStack.delete(value);
85
+ }
74
86
  });
75
87
  }
76
88
  }
@@ -187,6 +199,8 @@ factories.UserModel.attr("first_name", () => faker.name.firstName()).attr(
187
199
 
188
200
  factories.TenancyModel.attr("administrator", null);
189
201
 
202
+ factories.RoomModel.attr("hostedpreso", null);
203
+
190
204
  factories.TemplateModel.sequence("sequence")
191
205
  // Prevent max call stack overflow
192
206
  .attr("original_template", null)
@@ -201,7 +215,7 @@ factories.ContactModel.attr("customer", null)
201
215
  .attr("name_first", () => faker.name.firstName())
202
216
  .attr("name_last", () => faker.name.lastName())
203
217
  .attr("email", () => faker.internet.email())
204
- .after((contact, options) => {
218
+ .after((contact) => {
205
219
  if (!contact.customer) {
206
220
  contact.customer = M("CustomerModel", {
207
221
  contact_set: [contact],
@@ -12,6 +12,8 @@ import qs from "qs";
12
12
  import { registeredStates } from "../state-register.js";
13
13
  import { sync } from "../sync.js";
14
14
 
15
+ const URL_TEMPLATE_RE = /(\{(?:\w+\.?)+\})/g;
16
+
15
17
  /**
16
18
  * @constructor
17
19
  * @alias models.BaseModel
@@ -154,7 +156,11 @@ export const BaseModel = Model.extend(
154
156
 
155
157
  // Internal function. Used by collection as well.
156
158
  _matchesURL(url, matchesDetail = true) {
157
- if (!this.modelName || this.urlRoot() === Api.getURL()) {
159
+ if (
160
+ typeof url !== "string" ||
161
+ !this.modelName ||
162
+ this.urlRoot() === Api.getURL()
163
+ ) {
158
164
  return false;
159
165
  }
160
166
 
@@ -435,6 +441,13 @@ export const BaseModel = Model.extend(
435
441
  save() {
436
442
  return Model.prototype.save.apply(this, arguments).tap((response) => {
437
443
  this._updateResponse(response);
444
+ // Sort events after server response to ensure ascending order
445
+ // since the server may return them in a different order
446
+ if (this.events && this.events.length > 1) {
447
+ this.events.sort((a, b) => {
448
+ return new Date(a.timestamp) - new Date(b.timestamp);
449
+ });
450
+ }
438
451
  });
439
452
  },
440
453
 
@@ -653,8 +666,8 @@ export const BaseModel = Model.extend(
653
666
  // So if you have /path/to/{model.id}/
654
667
  // It will check the model from "this.model.id" and replace
655
668
  // it in the url
656
- const re = /(\{(?:\w+\.?)+\})/g;
657
- const matches = resp.match(re) || [];
669
+ URL_TEMPLATE_RE.lastIndex = 0;
670
+ const matches = resp.match(URL_TEMPLATE_RE) || [];
658
671
  for (const match of matches) {
659
672
  const path = match.slice(1, -1);
660
673
  const replacement = _.get(this, path);
@@ -50,6 +50,8 @@ export const DeckVersionModel = BaseModel.extend(
50
50
  image_256_archive: "string",
51
51
  image_512_archive: "string",
52
52
  namespaced_key: "string",
53
+ created_date: "date",
54
+ modified_date: "date",
53
55
  creation_status: "string",
54
56
  creation_percent: "number",
55
57
  update_description: "string",
@@ -109,7 +109,7 @@ export const DispatchModel = BaseModel.extend(
109
109
  data.snapshot = this._retrieveURL(this.snapshot);
110
110
  }
111
111
 
112
- return data;
112
+ return _.omit(data, ["contentModel"]);
113
113
  },
114
114
 
115
115
  serialize() {
@@ -1,5 +1,6 @@
1
1
  import { BaseModel } from "./base.js";
2
2
  import { register } from "../state-register.js";
3
+ import "./hosted-preso.js";
3
4
 
4
5
  /**
5
6
  * @constructor
@@ -38,6 +39,10 @@ export const RoomModel = BaseModel.extend(
38
39
  wamp_version: "string",
39
40
  websocket_server_uri: "string",
40
41
  },
42
+
43
+ children: {
44
+ hostedpreso: "HostedPresoModel",
45
+ },
41
46
  },
42
47
  );
43
48
 
@@ -143,15 +143,15 @@ export const UserModel = BaseModel.extend(
143
143
  presomanager.isGlobalTemporarySlideManager ||
144
144
  presomanager.isTeamTemporarySlideManager;
145
145
 
146
+ presomanager.canModifyContent =
147
+ this.actions.indexOf("Create Content") > -1 ||
148
+ this.actions.indexOf("Manage Team Editable Text") > -1;
149
+
146
150
  presomanager.isPresoManagerUser =
147
151
  presomanager.canModifyTemporarySlides ||
148
152
  presomanager.canModifyNotes ||
149
153
  presomanager.canModifyContent;
150
154
 
151
- presomanager.canModifyContent =
152
- this.actions.indexOf("Create Content") > -1 ||
153
- this.actions.indexOf("Manage Team Editable Text") > -1;
154
-
155
155
  const appointments = {
156
156
  canUploadCustomSlides:
157
157
  this.actions.indexOf("Upload Custom Slides") > -1 &&
@@ -128,10 +128,14 @@ BasePresentationModel.getVisibilityAndSequence = function (
128
128
  if (choicelist) {
129
129
  // All items should have a choicelist entry - if it's not in
130
130
  // the choicelist, it's not in the preso
131
- const choice = choicelist.find((item) => item.url === url);
131
+ const choice = options.choicelistMap
132
+ ? options.choicelistMap.get(url)
133
+ : choicelist.find((item) => item.url === url);
132
134
 
133
135
  if (choice) {
134
- config.sequence = choicelist.indexOf(choice);
136
+ config.sequence = options.choicelistMap
137
+ ? choice._idx
138
+ : choicelist.indexOf(choice);
135
139
  config.visible = choice.visible;
136
140
  } else {
137
141
  config.visible = false;
@@ -140,7 +144,9 @@ BasePresentationModel.getVisibilityAndSequence = function (
140
144
  // Non-adjunct subslides and adjunct sections/slides/subslides
141
145
  // have no selections - they fall through here using their
142
146
  // model's values
143
- const selection = selections.find((selection) => selection.url === url);
147
+ const selection = options.selectionsMap
148
+ ? options.selectionsMap.get(url)
149
+ : selections.find((selection) => selection.url === url);
144
150
 
145
151
  if (selection) {
146
152
  config.visible = selection.visible;
@@ -155,9 +161,11 @@ BasePresentationModel.getVisibilityAndSequence = function (
155
161
  return config;
156
162
  };
157
163
 
158
- const getAppointmentTags = function (model, tags) {
164
+ const getAppointmentTags = function (model, tags, options) {
159
165
  const url = model.adjunct?.url() || model.url();
160
- const tagItem = tags.find((tag) => tag.content_url === url);
166
+ const tagItem = options?.appointmentTagsMap
167
+ ? options.appointmentTagsMap.get(url)
168
+ : tags.find((tag) => tag.content_url === url);
161
169
 
162
170
  if (tagItem) {
163
171
  return tagItem.tags || [];
@@ -204,7 +212,7 @@ const getDeckTags = function (model, tags) {
204
212
  // references to model.tags should be removed.
205
213
  BasePresentationModel.getTags = function (model, options = {}) {
206
214
  if (options.appointmentTags) {
207
- return getAppointmentTags(model, options.appointmentTags);
215
+ return getAppointmentTags(model, options.appointmentTags, options);
208
216
  }
209
217
 
210
218
  if (options.deckTags) {