@livepreso/api 6.41.0 → 6.44.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.
- package/.eslintrc.js +5 -0
- package/.rush/temp/build-cache-tar.log +7 -0
- package/.rush/temp/package-deps_test.json +170 -0
- package/.rush/temp/shrinkwrap-deps.json +957 -0
- package/CHANGELOG.json +53 -0
- package/CHANGELOG.md +32 -0
- package/api.build.log +4 -0
- package/babel.config.js +9 -18
- package/cjs/api.js +1 -1
- package/cjs/api.js.map +1 -1
- package/cjs/api.spec.js +2 -2
- package/cjs/api.spec.js.map +1 -1
- package/cjs/auth.js +6 -5
- package/cjs/auth.js.map +1 -1
- package/cjs/auth.spec.js +25 -23
- package/cjs/auth.spec.js.map +1 -1
- package/cjs/caching.js +3 -3
- package/cjs/collections/activity.js +22 -27
- package/cjs/collections/activity.js.map +1 -1
- package/cjs/collections/adjunct-sections.js +2 -2
- package/cjs/collections/adjunct-sections.js.map +1 -1
- package/cjs/collections/adjunct-slides.js +2 -2
- package/cjs/collections/adjunct-slides.js.map +1 -1
- package/cjs/collections/adjunct-sub-slides.js +2 -2
- package/cjs/collections/adjunct-sub-slides.js.map +1 -1
- package/cjs/collections/appointment-adjunct-tags.js +28 -0
- package/cjs/collections/appointment-adjunct-tags.js.map +1 -0
- package/cjs/collections/appointment-deckversion-tags.js +28 -0
- package/cjs/collections/appointment-deckversion-tags.js.map +1 -0
- package/cjs/collections/appointment-duplicates.js +2 -2
- package/cjs/collections/appointment-duplicates.js.map +1 -1
- package/cjs/collections/appointment-editors.js +2 -2
- package/cjs/collections/appointment-editors.js.map +1 -1
- package/cjs/collections/appointment-section-tags.js +28 -0
- package/cjs/collections/appointment-section-tags.js.map +1 -0
- package/cjs/collections/appointment-slide-tags.js +28 -0
- package/cjs/collections/appointment-slide-tags.js.map +1 -0
- package/cjs/collections/appointment-tags.js +208 -0
- package/cjs/collections/appointment-tags.js.map +1 -0
- package/cjs/collections/appointments.js +10 -6
- package/cjs/collections/appointments.js.map +1 -1
- package/cjs/collections/assets.js +2 -2
- package/cjs/collections/assets.js.map +1 -1
- package/cjs/collections/auto-adjuncts.js +7 -3
- package/cjs/collections/auto-adjuncts.js.map +1 -1
- package/cjs/collections/base.js +103 -25
- package/cjs/collections/base.js.map +1 -1
- package/cjs/collections/base.spec.js +231 -123
- package/cjs/collections/base.spec.js.map +1 -1
- package/cjs/collections/cms-vals.js +2 -2
- package/cjs/collections/cms-vals.js.map +1 -1
- package/cjs/collections/contacts.js +2 -2
- package/cjs/collections/contacts.js.map +1 -1
- package/cjs/collections/created-assets.js +2 -2
- package/cjs/collections/created-assets.js.map +1 -1
- package/cjs/collections/customers.js +2 -2
- package/cjs/collections/customers.js.map +1 -1
- package/cjs/collections/deck-notes.js +2 -2
- package/cjs/collections/deck-notes.js.map +1 -1
- package/cjs/collections/deck-versions.js +20 -8
- package/cjs/collections/deck-versions.js.map +1 -1
- package/cjs/collections/decks.js +2 -2
- package/cjs/collections/decks.js.map +1 -1
- package/cjs/collections/deleted-assets.js +2 -2
- package/cjs/collections/deleted-assets.js.map +1 -1
- package/cjs/collections/dispatches.js +4 -4
- package/cjs/collections/dispatches.js.map +1 -1
- package/cjs/collections/event-objects.js +2 -2
- package/cjs/collections/event-objects.js.map +1 -1
- package/cjs/collections/events.js +2 -2
- package/cjs/collections/events.js.map +1 -1
- package/cjs/collections/groups.js +2 -2
- package/cjs/collections/groups.js.map +1 -1
- package/cjs/collections/images.js +2 -2
- package/cjs/collections/images.js.map +1 -1
- package/cjs/collections/locations.js +2 -2
- package/cjs/collections/locations.js.map +1 -1
- package/cjs/collections/opportunities.js +2 -2
- package/cjs/collections/opportunities.js.map +1 -1
- package/cjs/collections/pack-diffs.js +2 -2
- package/cjs/collections/pack-diffs.js.map +1 -1
- package/cjs/collections/packs.js +2 -2
- package/cjs/collections/packs.js.map +1 -1
- package/cjs/collections/presets.js +2 -2
- package/cjs/collections/presets.js.map +1 -1
- package/cjs/collections/section-selections.js +2 -2
- package/cjs/collections/section-selections.js.map +1 -1
- package/cjs/collections/sections.js +2 -2
- package/cjs/collections/sections.js.map +1 -1
- package/cjs/collections/slide-selections.js +2 -2
- package/cjs/collections/slide-selections.js.map +1 -1
- package/cjs/collections/slides.js +2 -2
- package/cjs/collections/slides.js.map +1 -1
- package/cjs/collections/snapshots.js +2 -2
- package/cjs/collections/snapshots.js.map +1 -1
- package/cjs/collections/sub-slides.js +2 -2
- package/cjs/collections/sub-slides.js.map +1 -1
- package/cjs/collections/tags.js +28 -0
- package/cjs/collections/tags.js.map +1 -0
- package/cjs/collections/teams.js +2 -2
- package/cjs/collections/teams.js.map +1 -1
- package/cjs/collections/templates.js +2 -2
- package/cjs/collections/templates.js.map +1 -1
- package/cjs/collections/uploads.js +2 -2
- package/cjs/collections/uploads.js.map +1 -1
- package/cjs/collections/users.js +2 -2
- package/cjs/collections/users.js.map +1 -1
- package/cjs/collections.js +115 -0
- package/cjs/collections.js.map +1 -1
- package/cjs/index.js +3 -0
- package/cjs/index.js.map +1 -1
- package/cjs/middleware.js.map +1 -1
- package/cjs/middlewares/auth.js +10 -6
- package/cjs/middlewares/auth.js.map +1 -1
- package/cjs/middlewares/base.js +1 -3
- package/cjs/middlewares/base.js.map +1 -1
- package/cjs/middlewares/json.js +10 -6
- package/cjs/middlewares/json.js.map +1 -1
- package/cjs/middlewares/redirect.js +10 -6
- package/cjs/middlewares/redirect.js.map +1 -1
- package/cjs/models/activity-item.js +6 -2
- package/cjs/models/activity-item.js.map +1 -1
- package/cjs/models/adjunct-section.js +2 -2
- package/cjs/models/adjunct-section.js.map +1 -1
- package/cjs/models/adjunct-slide.js +2 -2
- package/cjs/models/adjunct-slide.js.map +1 -1
- package/cjs/models/adjunct-sub-slide.js +2 -2
- package/cjs/models/adjunct-sub-slide.js.map +1 -1
- package/cjs/models/adjunct.js +2 -2
- package/cjs/models/adjunct.js.map +1 -1
- package/cjs/models/api.js.map +1 -1
- package/cjs/models/appointment-adjunct-tags.js +52 -0
- package/cjs/models/appointment-adjunct-tags.js.map +1 -0
- package/cjs/models/appointment-deckversion-tags.js +52 -0
- package/cjs/models/appointment-deckversion-tags.js.map +1 -0
- package/cjs/models/appointment-duplicate.js +8 -3
- package/cjs/models/appointment-duplicate.js.map +1 -1
- package/cjs/models/appointment-editor.js +2 -2
- package/cjs/models/appointment-editor.js.map +1 -1
- package/cjs/models/appointment-section-tags.js +52 -0
- package/cjs/models/appointment-section-tags.js.map +1 -0
- package/cjs/models/appointment-slide-tags.js +52 -0
- package/cjs/models/appointment-slide-tags.js.map +1 -0
- package/cjs/models/appointment-stats.js +2 -2
- package/cjs/models/appointment-stats.js.map +1 -1
- package/cjs/models/appointment-tags.js +48 -0
- package/cjs/models/appointment-tags.js.map +1 -0
- package/cjs/models/appointment-viewing.js +2 -2
- package/cjs/models/appointment-viewing.js.map +1 -1
- package/cjs/models/appointment.js +16 -7
- package/cjs/models/appointment.js.map +1 -1
- package/cjs/models/asset.js +2 -2
- package/cjs/models/asset.js.map +1 -1
- package/cjs/models/auto-adjunct-key-check.js +2 -2
- package/cjs/models/auto-adjunct-key-check.js.map +1 -1
- package/cjs/models/auto-adjunct.js +2 -2
- package/cjs/models/auto-adjunct.js.map +1 -1
- package/cjs/models/base.js +25 -36
- package/cjs/models/base.js.map +1 -1
- package/cjs/models/base.spec.js +45 -45
- package/cjs/models/base.spec.js.map +1 -1
- package/cjs/models/choicelist.js.map +1 -1
- package/cjs/models/cms-val.js.map +1 -1
- package/cjs/models/contact.js +2 -2
- package/cjs/models/contact.js.map +1 -1
- package/cjs/models/customer.js +2 -2
- package/cjs/models/customer.js.map +1 -1
- package/cjs/models/deck-note.js +2 -2
- package/cjs/models/deck-note.js.map +1 -1
- package/cjs/models/deck-tags.js +61 -0
- package/cjs/models/deck-tags.js.map +1 -0
- package/cjs/models/deck-version.js +5 -3
- package/cjs/models/deck-version.js.map +1 -1
- package/cjs/models/deck.js +6 -3
- package/cjs/models/deck.js.map +1 -1
- package/cjs/models/dispatch-preview.js +3 -3
- package/cjs/models/dispatch-preview.js.map +1 -1
- package/cjs/models/dispatch.js +2 -2
- package/cjs/models/dispatch.js.map +1 -1
- package/cjs/models/envs.js.map +1 -1
- package/cjs/models/event-object.js +2 -2
- package/cjs/models/event-object.js.map +1 -1
- package/cjs/models/event.js +2 -2
- package/cjs/models/event.js.map +1 -1
- package/cjs/models/feed-data.js +2 -2
- package/cjs/models/feed-data.js.map +1 -1
- package/cjs/models/file.js +2 -2
- package/cjs/models/file.js.map +1 -1
- package/cjs/models/group.js +2 -2
- package/cjs/models/group.js.map +1 -1
- package/cjs/models/handover.js +2 -2
- package/cjs/models/handover.js.map +1 -1
- package/cjs/models/hosted-preso.js +2 -2
- package/cjs/models/hosted-preso.js.map +1 -1
- package/cjs/models/image.js +2 -2
- package/cjs/models/image.js.map +1 -1
- package/cjs/models/location.js +2 -2
- package/cjs/models/location.js.map +1 -1
- package/cjs/models/manifest-json.js +83 -58
- package/cjs/models/manifest-json.js.map +1 -1
- package/cjs/models/onshare.js +2 -2
- package/cjs/models/onshare.js.map +1 -1
- package/cjs/models/opportunity.js +2 -2
- package/cjs/models/opportunity.js.map +1 -1
- package/cjs/models/pack-diff.js +2 -2
- package/cjs/models/pack-diff.js.map +1 -1
- package/cjs/models/pack.js +2 -2
- package/cjs/models/pack.js.map +1 -1
- package/cjs/models/preset.js +22 -2
- package/cjs/models/preset.js.map +1 -1
- package/cjs/models/refresh-request.js +2 -2
- package/cjs/models/refresh-request.js.map +1 -1
- package/cjs/models/room.js +2 -2
- package/cjs/models/room.js.map +1 -1
- package/cjs/models/salesforce-lookup.js +2 -2
- package/cjs/models/salesforce-lookup.js.map +1 -1
- package/cjs/models/section-selection.js +2 -2
- package/cjs/models/section-selection.js.map +1 -1
- package/cjs/models/section.js +2 -2
- package/cjs/models/section.js.map +1 -1
- package/cjs/models/slide-selection.js +2 -2
- package/cjs/models/slide-selection.js.map +1 -1
- package/cjs/models/slide.js +2 -2
- package/cjs/models/slide.js.map +1 -1
- package/cjs/models/snapshot.js +2 -2
- package/cjs/models/snapshot.js.map +1 -1
- package/cjs/models/sub-slide.js +2 -2
- package/cjs/models/sub-slide.js.map +1 -1
- package/cjs/models/support-ticket.js +2 -2
- package/cjs/models/support-ticket.js.map +1 -1
- package/cjs/models/tag.js +54 -0
- package/cjs/models/tag.js.map +1 -0
- package/cjs/models/team.js +2 -2
- package/cjs/models/team.js.map +1 -1
- package/cjs/models/template.js +2 -2
- package/cjs/models/template.js.map +1 -1
- package/cjs/models/tenancy.js +2 -2
- package/cjs/models/tenancy.js.map +1 -1
- package/cjs/models/timing-log.js +20 -41
- package/cjs/models/timing-log.js.map +1 -1
- package/cjs/models/timing-log.spec.js +18 -86
- package/cjs/models/timing-log.spec.js.map +1 -1
- package/cjs/models/transcribe-socket.js +2 -2
- package/cjs/models/transcribe-socket.js.map +1 -1
- package/cjs/models/upload.js +2 -2
- package/cjs/models/upload.js.map +1 -1
- package/cjs/models/user.js +4 -3
- package/cjs/models/user.js.map +1 -1
- package/cjs/models/user.spec.js +10 -8
- package/cjs/models/user.spec.js.map +1 -1
- package/cjs/models.js +148 -0
- package/cjs/models.js.map +1 -1
- package/cjs/presentation/appointment-presentation.js +13 -5
- package/cjs/presentation/appointment-presentation.js.map +1 -1
- package/cjs/presentation/base-presentation-collection.js.map +1 -1
- package/cjs/presentation/base-presentation-model.js +65 -0
- package/cjs/presentation/base-presentation-model.js.map +1 -1
- package/cjs/presentation/base-presentation-model.spec.js +87 -0
- package/cjs/presentation/base-presentation-model.spec.js.map +1 -1
- package/cjs/presentation/presentation-deck.js +31 -20
- package/cjs/presentation/presentation-deck.js.map +1 -1
- package/cjs/presentation/presentation-deck.spec.js +15 -13
- package/cjs/presentation/presentation-deck.spec.js.map +1 -1
- package/cjs/presentation/presentation-decks.js +2 -2
- package/cjs/presentation/presentation-decks.js.map +1 -1
- package/cjs/presentation/presentation-section.js +36 -17
- package/cjs/presentation/presentation-section.js.map +1 -1
- package/cjs/presentation/presentation-section.spec.js +418 -0
- package/cjs/presentation/presentation-section.spec.js.map +1 -0
- package/cjs/presentation/presentation-sections.js +2 -2
- package/cjs/presentation/presentation-sections.js.map +1 -1
- package/cjs/presentation/presentation-slide.js +35 -18
- package/cjs/presentation/presentation-slide.js.map +1 -1
- package/cjs/presentation/presentation-slide.spec.js +294 -0
- package/cjs/presentation/presentation-slide.spec.js.map +1 -0
- package/cjs/presentation/presentation-slides.js +2 -2
- package/cjs/presentation/presentation-slides.js.map +1 -1
- package/cjs/presentation/presentation-subslide.js +11 -7
- package/cjs/presentation/presentation-subslide.js.map +1 -1
- package/cjs/presentation/presentation-subslide.spec.js +68 -20
- package/cjs/presentation/presentation-subslide.spec.js.map +1 -1
- package/cjs/presentation/presentation-subslides.js +2 -2
- package/cjs/presentation/presentation-subslides.js.map +1 -1
- package/cjs/presentation/presentation.js +19 -9
- package/cjs/presentation/presentation.js.map +1 -1
- package/cjs/presentation.js +10 -0
- package/cjs/presentation.js.map +1 -1
- package/cjs/state-register.js +11 -1
- package/cjs/state-register.js.map +1 -1
- package/cjs/sync.js +7 -7
- package/cjs/sync.js.map +1 -1
- package/cjs/utils.js +7 -7
- package/cjs/utils.js.map +1 -1
- package/cjs/utils.spec.js.map +1 -1
- package/config/rush-project.json +11 -0
- package/index.js +0 -1
- package/jest.config.js +4 -4
- package/package.json +19 -59
- package/setup-tests.js +2 -1
- package/src/api.js +3 -3
- package/src/api.spec.js +3 -4
- package/src/auth.js +6 -7
- package/src/auth.spec.js +3 -4
- package/src/collections/activity.js +5 -6
- package/src/collections/adjunct-sections.js +4 -4
- package/src/collections/adjunct-slides.js +4 -4
- package/src/collections/adjunct-sub-slides.js +2 -2
- package/src/collections/appointment-adjunct-tags.js +18 -0
- package/src/collections/appointment-deckversion-tags.js +21 -0
- package/src/collections/appointment-duplicates.js +2 -2
- package/src/collections/appointment-editors.js +2 -2
- package/src/collections/appointment-section-tags.js +18 -0
- package/src/collections/appointment-slide-tags.js +18 -0
- package/src/collections/appointment-tags.js +136 -0
- package/src/collections/appointments.js +18 -23
- package/src/collections/assets.js +2 -2
- package/src/collections/auto-adjuncts.js +5 -5
- package/src/collections/base.js +88 -18
- package/src/collections/base.spec.js +100 -8
- package/src/collections/cms-vals.js +3 -3
- package/src/collections/contacts.js +2 -2
- package/src/collections/created-assets.js +2 -2
- package/src/collections/customers.js +2 -2
- package/src/collections/deck-notes.js +2 -2
- package/src/collections/deck-versions.js +18 -15
- package/src/collections/decks.js +2 -2
- package/src/collections/deleted-assets.js +2 -2
- package/src/collections/dispatches.js +8 -13
- package/src/collections/event-objects.js +2 -2
- package/src/collections/events.js +2 -2
- package/src/collections/groups.js +2 -2
- package/src/collections/images.js +2 -2
- package/src/collections/locations.js +2 -2
- package/src/collections/opportunities.js +2 -2
- package/src/collections/pack-diffs.js +2 -2
- package/src/collections/packs.js +2 -2
- package/src/collections/presets.js +2 -2
- package/src/collections/section-selections.js +4 -4
- package/src/collections/sections.js +2 -2
- package/src/collections/slide-selections.js +4 -4
- package/src/collections/slides.js +2 -2
- package/src/collections/snapshots.js +2 -2
- package/src/collections/sub-slides.js +2 -2
- package/src/collections/tags.js +18 -0
- package/src/collections/teams.js +2 -2
- package/src/collections/templates.js +2 -2
- package/src/collections/uploads.js +2 -2
- package/src/collections/users.js +2 -2
- package/src/collections.js +6 -0
- package/src/index.js +1 -4
- package/src/middleware.js +1 -1
- package/src/middlewares/json.js +2 -2
- package/src/middlewares/redirect.js +1 -2
- package/src/models/activity-item.js +6 -6
- package/src/models/adjunct-section.js +5 -5
- package/src/models/adjunct-slide.js +5 -5
- package/src/models/adjunct-sub-slide.js +5 -5
- package/src/models/adjunct.js +4 -4
- package/src/models/api.js +1 -1
- package/src/models/appointment-adjunct-tags.js +41 -0
- package/src/models/appointment-deckversion-tags.js +41 -0
- package/src/models/appointment-duplicate.js +7 -7
- package/src/models/appointment-editor.js +6 -6
- package/src/models/appointment-section-tags.js +41 -0
- package/src/models/appointment-slide-tags.js +41 -0
- package/src/models/appointment-stats.js +5 -5
- package/src/models/appointment-tags.js +39 -0
- package/src/models/appointment-viewing.js +3 -3
- package/src/models/appointment.js +35 -29
- package/src/models/asset.js +5 -5
- package/src/models/auto-adjunct-key-check.js +5 -5
- package/src/models/auto-adjunct.js +4 -4
- package/src/models/base.js +36 -37
- package/src/models/base.spec.js +61 -62
- package/src/models/choicelist.js +2 -2
- package/src/models/cms-val.js +3 -3
- package/src/models/contact.js +9 -9
- package/src/models/customer.js +13 -13
- package/src/models/deck-note.js +4 -4
- package/src/models/deck-tags.js +52 -0
- package/src/models/deck-version.js +9 -8
- package/src/models/deck.js +8 -6
- package/src/models/dispatch-preview.js +6 -7
- package/src/models/dispatch.js +6 -7
- package/src/models/envs.js +1 -1
- package/src/models/event-object.js +6 -6
- package/src/models/event.js +7 -7
- package/src/models/feed-data.js +5 -5
- package/src/models/file.js +4 -4
- package/src/models/group.js +3 -3
- package/src/models/handover.js +5 -5
- package/src/models/hosted-preso.js +5 -5
- package/src/models/image.js +4 -4
- package/src/models/location.js +5 -5
- package/src/models/manifest-json.js +77 -30
- package/src/models/onshare.js +5 -5
- package/src/models/opportunity.js +5 -5
- package/src/models/pack-diff.js +5 -5
- package/src/models/pack.js +4 -4
- package/src/models/preset.js +24 -5
- package/src/models/refresh-request.js +6 -6
- package/src/models/room.js +3 -3
- package/src/models/salesforce-lookup.js +3 -3
- package/src/models/section-selection.js +6 -6
- package/src/models/section.js +7 -7
- package/src/models/slide-selection.js +6 -6
- package/src/models/slide.js +7 -7
- package/src/models/snapshot.js +5 -5
- package/src/models/sub-slide.js +5 -5
- package/src/models/support-ticket.js +4 -4
- package/src/models/tag.js +42 -0
- package/src/models/team.js +4 -4
- package/src/models/template.js +4 -4
- package/src/models/tenancy.js +5 -5
- package/src/models/timing-log.js +18 -18
- package/src/models/timing-log.spec.js +28 -29
- package/src/models/transcribe-socket.js +3 -3
- package/src/models/upload.js +3 -3
- package/src/models/user.js +19 -17
- package/src/models/user.spec.js +2 -2
- package/src/models.js +7 -0
- package/src/presentation/appointment-presentation.js +14 -10
- package/src/presentation/base-presentation-model.js +67 -5
- package/src/presentation/base-presentation-model.spec.js +114 -22
- package/src/presentation/presentation-deck.js +54 -52
- package/src/presentation/presentation-deck.spec.js +26 -27
- package/src/presentation/presentation-decks.js +2 -2
- package/src/presentation/presentation-section.js +62 -48
- package/src/presentation/presentation-section.spec.js +363 -0
- package/src/presentation/presentation-sections.js +2 -2
- package/src/presentation/presentation-slide.js +51 -36
- package/src/presentation/presentation-slide.spec.js +250 -0
- package/src/presentation/presentation-slides.js +2 -2
- package/src/presentation/presentation-subslide.js +24 -17
- package/src/presentation/presentation-subslide.spec.js +40 -12
- package/src/presentation/presentation-subslides.js +2 -2
- package/src/presentation/presentation.js +27 -15
- package/src/state-register.js +7 -0
- package/src/sync.js +21 -23
- package/src/utils.js +8 -7
- package/src/utils.spec.js +15 -15
- package/.editorconfig +0 -9
- package/.eslintrc +0 -25
- package/.prettierrc.js +0 -3
- package/jsdoc.json +0 -12
- package/yarn.lock +0 -8099
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
import "./presentation-sections.js";
|
|
2
2
|
|
|
3
|
-
import url2 from "url";
|
|
4
|
-
|
|
5
|
-
import _ from "lodash";
|
|
6
|
-
|
|
7
3
|
import * as collections from "../collections";
|
|
8
|
-
|
|
9
|
-
import log from "../log.js";
|
|
10
|
-
import { DeckVersionModel } from "../models";
|
|
11
|
-
import { register } from "../state-register";
|
|
4
|
+
|
|
12
5
|
import {
|
|
13
6
|
getMaxID,
|
|
14
7
|
isImpostor,
|
|
15
8
|
isImpostorDeck,
|
|
16
|
-
setSequentialSequences
|
|
9
|
+
setSequentialSequences,
|
|
17
10
|
} from "../utils.js";
|
|
11
|
+
|
|
18
12
|
import { BasePresentationModel } from "./base-presentation-model";
|
|
13
|
+
import { DeckVersionModel } from "../models";
|
|
19
14
|
import { PresentationSection } from "./presentation-section";
|
|
20
15
|
import { PresentationSlide } from "./presentation-slide";
|
|
16
|
+
import _ from "lodash";
|
|
17
|
+
import { getAssetRoot } from "../index.js";
|
|
18
|
+
import log from "../log.js";
|
|
19
|
+
import { register } from "../state-register";
|
|
20
|
+
import url2 from "url";
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
23
|
* @constructor
|
|
@@ -56,32 +56,32 @@ export const PresentationDeck = BasePresentationModel.extend(
|
|
|
56
56
|
usesImpostorSections: "boolean",
|
|
57
57
|
editable: "boolean",
|
|
58
58
|
tags: "array",
|
|
59
|
-
version: "number"
|
|
59
|
+
version: "number",
|
|
60
60
|
},
|
|
61
61
|
|
|
62
62
|
/**
|
|
63
63
|
* @property {presentation.PresentationSection} realSection
|
|
64
64
|
*/
|
|
65
65
|
children: {
|
|
66
|
-
realSection: "PresentationSection"
|
|
66
|
+
realSection: "PresentationSection",
|
|
67
67
|
},
|
|
68
68
|
|
|
69
69
|
derived: {
|
|
70
70
|
welcomeSlide: {
|
|
71
|
-
fn: function() {
|
|
71
|
+
fn: function () {
|
|
72
72
|
return new PresentationSection({
|
|
73
73
|
...this.getAttributes({ props: true }),
|
|
74
|
-
isWelcome: true
|
|
74
|
+
isWelcome: true,
|
|
75
75
|
});
|
|
76
|
-
}
|
|
77
|
-
}
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
78
|
},
|
|
79
79
|
|
|
80
80
|
/**
|
|
81
81
|
* @property {presentation.PresentationSectionCollection} sections
|
|
82
82
|
*/
|
|
83
83
|
collections: {
|
|
84
|
-
sections: "PresentationSectionCollection"
|
|
84
|
+
sections: "PresentationSectionCollection",
|
|
85
85
|
},
|
|
86
86
|
|
|
87
87
|
url() {
|
|
@@ -90,7 +90,7 @@ export const PresentationDeck = BasePresentationModel.extend(
|
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
return this._url;
|
|
93
|
-
}
|
|
93
|
+
},
|
|
94
94
|
}
|
|
95
95
|
);
|
|
96
96
|
|
|
@@ -103,7 +103,7 @@ export const PresentationDeck = BasePresentationModel.extend(
|
|
|
103
103
|
* @param {collections.AdjunctSectionCollection}} [adjunctSections]
|
|
104
104
|
* @returns {presentation.PresentationDeck}
|
|
105
105
|
*/
|
|
106
|
-
PresentationDeck.createFromDeckVersion = function(
|
|
106
|
+
PresentationDeck.createFromDeckVersion = function (
|
|
107
107
|
deckVersionModel,
|
|
108
108
|
options = {}
|
|
109
109
|
) {
|
|
@@ -116,7 +116,7 @@ PresentationDeck.createFromDeckVersion = function(
|
|
|
116
116
|
slideSelections: new collections.SlideSelectionCollection(),
|
|
117
117
|
rootAssetPath: null,
|
|
118
118
|
templates: null,
|
|
119
|
-
choicelist: null
|
|
119
|
+
choicelist: null,
|
|
120
120
|
});
|
|
121
121
|
|
|
122
122
|
const assetRoot = getAssetRoot(deckVersionModel.index_asset.url());
|
|
@@ -131,7 +131,7 @@ PresentationDeck.createFromDeckVersion = function(
|
|
|
131
131
|
css = `${assetRoot}slide.css`;
|
|
132
132
|
}
|
|
133
133
|
|
|
134
|
-
const tags = deckVersionModel
|
|
134
|
+
const tags = PresentationDeck.getTags(deckVersionModel, options);
|
|
135
135
|
|
|
136
136
|
const deck = new PresentationDeck({
|
|
137
137
|
html,
|
|
@@ -146,7 +146,8 @@ PresentationDeck.createFromDeckVersion = function(
|
|
|
146
146
|
title: deckVersionModel.deck.title,
|
|
147
147
|
editable: tags.indexOf("editable") > -1,
|
|
148
148
|
tags,
|
|
149
|
-
version: deckVersionModel.version
|
|
149
|
+
version: deckVersionModel.version,
|
|
150
|
+
usesImpostorSections: isImpostorDeck(deckVersionModel),
|
|
150
151
|
});
|
|
151
152
|
|
|
152
153
|
if (!deck.key) {
|
|
@@ -161,21 +162,21 @@ PresentationDeck.createFromDeckVersion = function(
|
|
|
161
162
|
const slideSelections = options.slideSelections;
|
|
162
163
|
|
|
163
164
|
options.selections = sectionSelections
|
|
164
|
-
.map(selection => {
|
|
165
|
+
.map((selection) => {
|
|
165
166
|
return {
|
|
166
167
|
sequence: selection.sequence,
|
|
167
168
|
visible: selection.visible,
|
|
168
169
|
url: selection.section.url(),
|
|
169
|
-
id: selection.id
|
|
170
|
+
id: selection.id,
|
|
170
171
|
};
|
|
171
172
|
})
|
|
172
173
|
.concat(
|
|
173
|
-
slideSelections.map(selection => {
|
|
174
|
+
slideSelections.map((selection) => {
|
|
174
175
|
return {
|
|
175
176
|
sequence: selection.sequence,
|
|
176
177
|
visible: selection.visible,
|
|
177
178
|
url: selection.slide.url(),
|
|
178
|
-
id: selection.id
|
|
179
|
+
id: selection.id,
|
|
179
180
|
};
|
|
180
181
|
})
|
|
181
182
|
);
|
|
@@ -185,7 +186,7 @@ PresentationDeck.createFromDeckVersion = function(
|
|
|
185
186
|
// all existing IDs then use the getUniqueAdjunctID function to retrieve an incremented ID
|
|
186
187
|
let maxID = getMaxID(deckVersionModel);
|
|
187
188
|
|
|
188
|
-
options.getUniqueAdjunctID = function() {
|
|
189
|
+
options.getUniqueAdjunctID = function () {
|
|
189
190
|
return ++maxID;
|
|
190
191
|
};
|
|
191
192
|
|
|
@@ -196,13 +197,13 @@ PresentationDeck.createFromDeckVersion = function(
|
|
|
196
197
|
// internally retrieve the correct sequence & visibility data depending on whether
|
|
197
198
|
// we're using selections or a choicelist.
|
|
198
199
|
|
|
199
|
-
if (!
|
|
200
|
+
if (!deck.usesImpostorSections) {
|
|
200
201
|
// Non impostor deck using selections or a choicelist. Slides are already
|
|
201
202
|
// associated with the correct sections, so all we have to do is turn
|
|
202
203
|
// everything into a presentation model and pass the options through with
|
|
203
204
|
// the selections or choicelist data.
|
|
204
205
|
|
|
205
|
-
deckVersionModel.section_set.forEach(sectionModel => {
|
|
206
|
+
deckVersionModel.section_set.forEach((sectionModel) => {
|
|
206
207
|
const section = PresentationSection.createFromSection(
|
|
207
208
|
sectionModel,
|
|
208
209
|
options
|
|
@@ -211,14 +212,14 @@ PresentationDeck.createFromDeckVersion = function(
|
|
|
211
212
|
section.addSlides(sectionModel.slide_set, options);
|
|
212
213
|
deck.sections.add(section);
|
|
213
214
|
|
|
214
|
-
const adjunctSlides = options.adjunctSlides.filter(slide => {
|
|
215
|
+
const adjunctSlides = options.adjunctSlides.filter((slide) => {
|
|
215
216
|
return slide.section && slide.section.id === section.id;
|
|
216
217
|
});
|
|
217
218
|
|
|
218
219
|
section.addSlides(adjunctSlides, options);
|
|
219
220
|
});
|
|
220
221
|
|
|
221
|
-
options.adjunctSections.forEach(adjunctSection => {
|
|
222
|
+
options.adjunctSections.forEach((adjunctSection) => {
|
|
222
223
|
const section = PresentationSection.createFromAdjunctSection(
|
|
223
224
|
adjunctSection,
|
|
224
225
|
DeckVersionModel,
|
|
@@ -232,14 +233,13 @@ PresentationDeck.createFromDeckVersion = function(
|
|
|
232
233
|
// only contains one section, which is the "real" section but is not used in
|
|
233
234
|
// the presentation. Some slides have the tag "section-header", and these slides
|
|
234
235
|
// will be turned into sections and may be given sets of slides.
|
|
235
|
-
deck.usesImpostorSections = true;
|
|
236
236
|
|
|
237
237
|
const realSection = deckVersionModel.section_set.first();
|
|
238
238
|
|
|
239
239
|
deck.realSection = new PresentationSection({
|
|
240
240
|
id: realSection.id,
|
|
241
241
|
key: realSection.key,
|
|
242
|
-
adjunctSlideLimit: realSection.adjunctslide_limit
|
|
242
|
+
adjunctSlideLimit: realSection.adjunctslide_limit,
|
|
243
243
|
});
|
|
244
244
|
|
|
245
245
|
let slides = [];
|
|
@@ -249,7 +249,7 @@ PresentationDeck.createFromDeckVersion = function(
|
|
|
249
249
|
// section; if it is just a slide then we add it to the slides array, which will contain
|
|
250
250
|
// all slides. We can't allocate slides to sections yet because we don't know
|
|
251
251
|
// which section a slide belongs to.
|
|
252
|
-
realSection.slide_set.forEach(slideModel => {
|
|
252
|
+
realSection.slide_set.forEach((slideModel) => {
|
|
253
253
|
const isSection = isImpostor(slideModel);
|
|
254
254
|
|
|
255
255
|
if (isSection) {
|
|
@@ -268,8 +268,8 @@ PresentationDeck.createFromDeckVersion = function(
|
|
|
268
268
|
|
|
269
269
|
// We filter the adjunct slides and add all the non-section slides to the slides array too.
|
|
270
270
|
options.adjunctSlides
|
|
271
|
-
.filter(slide => !isImpostor(slide))
|
|
272
|
-
.forEach(adjunctSlideModel => {
|
|
271
|
+
.filter((slide) => !isImpostor(slide))
|
|
272
|
+
.forEach((adjunctSlideModel) => {
|
|
273
273
|
const slide = PresentationSlide.createFromAdjunctSlide(
|
|
274
274
|
adjunctSlideModel,
|
|
275
275
|
null,
|
|
@@ -287,9 +287,9 @@ PresentationDeck.createFromDeckVersion = function(
|
|
|
287
287
|
// slides with the sequence > 110 then I know that all slides with a sequence > 110
|
|
288
288
|
// are valid. I then remove those slides from the slides array and move down to the
|
|
289
289
|
// next section.
|
|
290
|
-
deck.sections.models.reverse().forEach(section => {
|
|
290
|
+
deck.sections.models.reverse().forEach((section) => {
|
|
291
291
|
const sectionSlides = slides.filter(
|
|
292
|
-
slide => slide.sequence > section.sequence
|
|
292
|
+
(slide) => slide.sequence > section.sequence
|
|
293
293
|
);
|
|
294
294
|
|
|
295
295
|
section.slides.add(sectionSlides);
|
|
@@ -300,17 +300,17 @@ PresentationDeck.createFromDeckVersion = function(
|
|
|
300
300
|
// and a 100% chance that it's incorrect for adjunct slides as we
|
|
301
301
|
// didn't populate the section field when we created the adjunct slides.
|
|
302
302
|
// We update those now with the correct section.
|
|
303
|
-
section.slides.forEach(slide => {
|
|
303
|
+
section.slides.forEach((slide) => {
|
|
304
304
|
slide.section = section.id;
|
|
305
305
|
});
|
|
306
306
|
|
|
307
|
-
slides = slides.filter(slide => slide.sequence <= section.sequence);
|
|
307
|
+
slides = slides.filter((slide) => slide.sequence <= section.sequence);
|
|
308
308
|
});
|
|
309
309
|
|
|
310
310
|
// Average the adjunct slide limit used across the entire deck over each section
|
|
311
311
|
// in the deck. We do this before we add the adjunct impostor sections, 'cause you
|
|
312
312
|
// can't add custom slides to those.
|
|
313
|
-
deck.sections.forEach(section => {
|
|
313
|
+
deck.sections.forEach((section) => {
|
|
314
314
|
section.adjunctSlideLimit = section.adjunctSlideLimit
|
|
315
315
|
? section.adjunctSlideLimit
|
|
316
316
|
: Math.floor(realSection.adjunctSlideLimit / deck.sections.length);
|
|
@@ -324,8 +324,8 @@ PresentationDeck.createFromDeckVersion = function(
|
|
|
324
324
|
// but because adjunct sections can't have slides we're adding them after the
|
|
325
325
|
// slide-assigning process
|
|
326
326
|
options.adjunctSlides
|
|
327
|
-
.filter(slide => isImpostor(slide))
|
|
328
|
-
.forEach(adjunctSlideModel => {
|
|
327
|
+
.filter((slide) => isImpostor(slide))
|
|
328
|
+
.forEach((adjunctSlideModel) => {
|
|
329
329
|
const adjunctSection = PresentationSection.createFromAdjunctSection(
|
|
330
330
|
adjunctSlideModel,
|
|
331
331
|
DeckVersionModel,
|
|
@@ -354,7 +354,7 @@ PresentationDeck.createFromDeckVersion = function(
|
|
|
354
354
|
return deck;
|
|
355
355
|
};
|
|
356
356
|
|
|
357
|
-
PresentationDeck.createFromManifestJSON = function(manifestJSON) {
|
|
357
|
+
PresentationDeck.createFromManifestJSON = function (manifestJSON) {
|
|
358
358
|
const deck = new PresentationDeck({
|
|
359
359
|
id: parseInt(_.uniqueId(), 10),
|
|
360
360
|
index: 0,
|
|
@@ -366,18 +366,20 @@ PresentationDeck.createFromManifestJSON = function(manifestJSON) {
|
|
|
366
366
|
thumbnail: null,
|
|
367
367
|
deckID: 1,
|
|
368
368
|
title: "Local",
|
|
369
|
-
version: 1
|
|
369
|
+
version: 1,
|
|
370
|
+
tags: manifestJSON.tags[""] || [],
|
|
370
371
|
});
|
|
371
372
|
|
|
372
373
|
const usesImpostorSections = _.some(
|
|
373
374
|
manifestJSON.tags,
|
|
374
|
-
tags => tags.indexOf("section-header") !== -1
|
|
375
|
+
(tags) => tags.indexOf("section-header") !== -1
|
|
375
376
|
);
|
|
377
|
+
deck.usesImpostorSections = usesImpostorSections;
|
|
376
378
|
|
|
377
379
|
if (usesImpostorSections) {
|
|
378
380
|
deck.usesImpostorSections = true;
|
|
379
381
|
|
|
380
|
-
let items = Object.keys(manifestJSON.titles).map(key => {
|
|
382
|
+
let items = Object.keys(manifestJSON.titles).map((key) => {
|
|
381
383
|
const sequence = manifestJSON.toJSON().ordering[key];
|
|
382
384
|
const splitKey = key.split("/");
|
|
383
385
|
const newKey = splitKey[splitKey.length - 1];
|
|
@@ -388,14 +390,14 @@ PresentationDeck.createFromManifestJSON = function(manifestJSON) {
|
|
|
388
390
|
html: url2.resolve(manifestJSON.getAssetPath(key), "index.html"),
|
|
389
391
|
css: url2.resolve(manifestJSON.getAssetPath(key), "slide.css"),
|
|
390
392
|
title: manifestJSON.titles[key],
|
|
391
|
-
tags: manifestJSON.tags[key] || []
|
|
393
|
+
tags: manifestJSON.tags[key] || [],
|
|
392
394
|
};
|
|
393
395
|
});
|
|
394
396
|
|
|
395
397
|
items = _.sortBy(items, "sequence");
|
|
396
398
|
|
|
397
399
|
const sections = items.filter(
|
|
398
|
-
item => item.tags.indexOf("section-header") !== -1
|
|
400
|
+
(item) => item.tags.indexOf("section-header") !== -1
|
|
399
401
|
);
|
|
400
402
|
|
|
401
403
|
sections.forEach((item, index) => {
|
|
@@ -417,7 +419,7 @@ PresentationDeck.createFromManifestJSON = function(manifestJSON) {
|
|
|
417
419
|
|
|
418
420
|
deck.realSection = PresentationSection.createFromManifestImpostor(items[0]);
|
|
419
421
|
} else {
|
|
420
|
-
const sectionKeys = Object.keys(manifestJSON.titles).filter(title => {
|
|
422
|
+
const sectionKeys = Object.keys(manifestJSON.titles).filter((title) => {
|
|
421
423
|
return title.split("/").length === 1;
|
|
422
424
|
});
|
|
423
425
|
|
|
@@ -433,7 +435,7 @@ PresentationDeck.createFromManifestJSON = function(manifestJSON) {
|
|
|
433
435
|
}
|
|
434
436
|
|
|
435
437
|
if (manifestJSON.templates) {
|
|
436
|
-
const templates = Object.keys(manifestJSON.templates).map(key => {
|
|
438
|
+
const templates = Object.keys(manifestJSON.templates).map((key) => {
|
|
437
439
|
return {
|
|
438
440
|
...manifestJSON.templates[key],
|
|
439
441
|
key,
|
|
@@ -442,8 +444,8 @@ PresentationDeck.createFromManifestJSON = function(manifestJSON) {
|
|
|
442
444
|
url: url2.resolve(
|
|
443
445
|
manifestJSON.getTemplateAssetPath(key),
|
|
444
446
|
"index.html"
|
|
445
|
-
)
|
|
446
|
-
}
|
|
447
|
+
),
|
|
448
|
+
},
|
|
447
449
|
};
|
|
448
450
|
});
|
|
449
451
|
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { G } from "sp-test/api";
|
|
2
|
-
|
|
3
1
|
import { DeckVersionModel } from "../models/deck-version";
|
|
2
|
+
import { G } from "sp-test/api";
|
|
4
3
|
import { ManifestJSONModel } from "../models/manifest-json";
|
|
5
4
|
import { PresentationDeck } from "./presentation-deck";
|
|
6
5
|
|
|
@@ -20,7 +19,7 @@ describe("#createFromManifestJSON", () => {
|
|
|
20
19
|
section_2: "Section 2",
|
|
21
20
|
"section_2/slide_1": "Section 2 Slide 1",
|
|
22
21
|
"section_2/slide_2": "Section 2 Slide 2",
|
|
23
|
-
section_3: "Section 3"
|
|
22
|
+
section_3: "Section 3",
|
|
24
23
|
},
|
|
25
24
|
ordering: {
|
|
26
25
|
section_1: 1,
|
|
@@ -28,19 +27,19 @@ describe("#createFromManifestJSON", () => {
|
|
|
28
27
|
section_2: 2,
|
|
29
28
|
"section_2/slide_1": 1,
|
|
30
29
|
"section_2/slide_2": 2,
|
|
31
|
-
section_3: 3
|
|
30
|
+
section_3: 3,
|
|
32
31
|
},
|
|
33
32
|
templates: {
|
|
34
33
|
apple: {
|
|
35
34
|
title: "Apple",
|
|
36
|
-
ordering: 1
|
|
35
|
+
ordering: 1,
|
|
37
36
|
},
|
|
38
37
|
orange: {
|
|
39
38
|
title: "Orange",
|
|
40
|
-
ordering: 2
|
|
41
|
-
}
|
|
39
|
+
ordering: 2,
|
|
40
|
+
},
|
|
42
41
|
},
|
|
43
|
-
tags: {}
|
|
42
|
+
tags: {},
|
|
44
43
|
});
|
|
45
44
|
|
|
46
45
|
const deck = PresentationDeck.createFromManifestJSON(model);
|
|
@@ -65,8 +64,8 @@ describe("#createFromDeckVersion", () => {
|
|
|
65
64
|
key: "apple",
|
|
66
65
|
sequence: 1,
|
|
67
66
|
index_asset: {
|
|
68
|
-
url: "http://path/to/template/apple/index.html"
|
|
69
|
-
}
|
|
67
|
+
url: "http://path/to/template/apple/index.html",
|
|
68
|
+
},
|
|
70
69
|
},
|
|
71
70
|
{
|
|
72
71
|
id: 21,
|
|
@@ -74,22 +73,22 @@ describe("#createFromDeckVersion", () => {
|
|
|
74
73
|
key: "orange",
|
|
75
74
|
sequence: 2,
|
|
76
75
|
index_asset: {
|
|
77
|
-
url: "http://path/to/template/orange/index.html"
|
|
78
|
-
}
|
|
79
|
-
}
|
|
76
|
+
url: "http://path/to/template/orange/index.html",
|
|
77
|
+
},
|
|
78
|
+
},
|
|
80
79
|
],
|
|
81
80
|
index_asset: {
|
|
82
|
-
url: "http://path/to/index.html"
|
|
81
|
+
url: "http://path/to/index.html",
|
|
83
82
|
},
|
|
84
83
|
deck: {
|
|
85
|
-
id: 1
|
|
84
|
+
id: 1,
|
|
86
85
|
},
|
|
87
86
|
section_set: [
|
|
88
87
|
{
|
|
89
88
|
id: 1,
|
|
90
89
|
title: "Section 1",
|
|
91
90
|
index_asset: {
|
|
92
|
-
url: "http://path/to/index.html"
|
|
91
|
+
url: "http://path/to/index.html",
|
|
93
92
|
},
|
|
94
93
|
deckversion: { id: 1 },
|
|
95
94
|
sequence: 1,
|
|
@@ -98,34 +97,34 @@ describe("#createFromDeckVersion", () => {
|
|
|
98
97
|
id: 1,
|
|
99
98
|
title: "Slide 1",
|
|
100
99
|
index_asset: {
|
|
101
|
-
url: "http://path/to/index.html"
|
|
100
|
+
url: "http://path/to/index.html",
|
|
102
101
|
},
|
|
103
102
|
subslide_set: [],
|
|
104
|
-
section: { id: 1 }
|
|
105
|
-
}
|
|
106
|
-
]
|
|
103
|
+
section: { id: 1 },
|
|
104
|
+
},
|
|
105
|
+
],
|
|
107
106
|
},
|
|
108
107
|
{
|
|
109
108
|
id: 2,
|
|
110
109
|
title: "Section 2",
|
|
111
110
|
index_asset: {
|
|
112
|
-
url: "http://path/to/index.html"
|
|
111
|
+
url: "http://path/to/index.html",
|
|
113
112
|
},
|
|
114
113
|
deckversion: { id: 1 },
|
|
115
114
|
sequence: 2,
|
|
116
|
-
slide_set: []
|
|
115
|
+
slide_set: [],
|
|
117
116
|
},
|
|
118
117
|
{
|
|
119
118
|
id: 3,
|
|
120
119
|
title: "Section 3",
|
|
121
120
|
index_asset: {
|
|
122
|
-
url: "http://path/to/index.html"
|
|
121
|
+
url: "http://path/to/index.html",
|
|
123
122
|
},
|
|
124
123
|
deckversion: { id: 1 },
|
|
125
124
|
sequence: 3,
|
|
126
|
-
slide_set: []
|
|
127
|
-
}
|
|
128
|
-
]
|
|
125
|
+
slide_set: [],
|
|
126
|
+
},
|
|
127
|
+
],
|
|
129
128
|
};
|
|
130
129
|
|
|
131
130
|
it("should not add template sections to the end of a deck", async () => {
|
|
@@ -144,7 +143,7 @@ describe("#createFromDeckVersion", () => {
|
|
|
144
143
|
G(DeckVersionModel);
|
|
145
144
|
const model = new DeckVersionModel(deckVersionJSON);
|
|
146
145
|
const deck = PresentationDeck.createFromDeckVersion(model, {
|
|
147
|
-
templates: model.template_set
|
|
146
|
+
templates: model.template_set,
|
|
148
147
|
});
|
|
149
148
|
|
|
150
149
|
expect(deck.sections.length).toEqual(5);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "./presentation-deck.js";
|
|
2
2
|
|
|
3
|
-
import { register } from "../state-register.js";
|
|
4
3
|
import { BasePresentationCollection } from "./base-presentation-collection.js";
|
|
4
|
+
import { register } from "../state-register.js";
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* @constructor
|
|
@@ -12,7 +12,7 @@ import { BasePresentationCollection } from "./base-presentation-collection.js";
|
|
|
12
12
|
export const PresentationDeckCollection = BasePresentationCollection.extend(
|
|
13
13
|
/** @lends presentation.PresentationDeckCollection# */ {
|
|
14
14
|
comparator: "sequence",
|
|
15
|
-
model: "PresentationDeck"
|
|
15
|
+
model: "PresentationDeck",
|
|
16
16
|
}
|
|
17
17
|
);
|
|
18
18
|
|