{"version":3,"sources":["webpack:///../WCC.UI/App/components/topic/content/content.html?8582","webpack:///../WCC.UI/App/components/topic/content/content.scss?b606","webpack:///../WCC.UI/App/components/topic/content/content.ts","webpack:///../WCC.UI/App/helpers/recording.ts","webpack:///../WCC.UI/App/managers/ideation.ts","webpack:///../WCC.UI/App/managers/topic/votes.ts","webpack:///../WCC.UI/App/managers/videoPresentationProgress.ts","webpack:///../WCC.UI/App/models/threadVote.ts","webpack:///../WCC.UI/App/models/videoPresentationProgress.ts","webpack:///../WCC.UI/App/webpack/runtime/htmlExposer.js","webpack:///../WCC.UI/App/components/topic/content/content.scss","webpack:///../WCC.UI/App/components/topic/content/content.html"],"names":["content","expose","__esModule","default","api","module","i","options","exports","locals","components","preload","discussionId","settings","TopicContentVM","constructor","model","info","storage","contentBlocks","ko","pureComputed","this","getContentBlocks","topicId","flattenComputed","blockTheme","isTitleAllowed","showTitle","isModeratorOrObserver","get","CurrentUserManager","pluck","m","person","u","topicManager","TopicManager","topic","vpProgressManager","VideoPresentationProgressManager","isLoadingVPProgress","loading","vpIsWatched","isWatched","vpIsFinished","isFinished","ideationManager","IdeationManager","description","t","thoroughDescription","moderatorNotes","cardsHelpText","isCardSort","isCardScore","device","isMobile","cardSortHelpMobile","cardSortHelpDesktop","videoPresentationInstructions","isVideoPresentation","vpOptions","videoPresentationOptions","_vpOptions$videoFinis","_vpOptions$afterPlaye","_vpOptions$afterPlaye2","_vpOptions$beforePlay","undefined","videoFinishedInstructions","afterPlayedInstructions","beforePlayedInstructions","ideationInstructions","currentIdeationManager","_topic$ideationRankin","_topic$thoroughDescri","isIdeation","isRatingStage","ideationRankingDescription","screenRecordingInstructions","isScreenRecording","screenRecordingOptions","mobileRecordingInstructions","RecordingHelpers","checkIfScreenRecordingSupported","browserRecordingInstructions","nonCompatibleDevicesInstructions","isReady","applyBindingsToNode","element","result","push","getBlock","title","labels","ModeratorNotes","filter","b","_ko$unwrap","unwrap","length","config","theme","__decorate","injectable","__param","inject","wccModules","componentConfig","componentInfo","checkIfVideoRecordingIsSupported","system","lazyAsync","async","window","MediaRecorder","navigator","mediaDevices","getUserMedia","video","getTracks","forEach","track","stop","checkIfAudioRecordingIsSupported","audio","checkIfScreenRecordingSupportedInternal","lazy","_browser$satisfies","bowser","getParser","userAgent","satisfies","safari","MediaStreamTrack","prototype","_ref","user","isRegularUser","isRegular","stage","ideationStage","upvotesCount","ideationUpvotes","downvotesCount","ideationDownvotes","votesManager","TopicVotesManager","loadingVotes","votes","personUpvotes","v","value","personDownvotes","usedUpvotes","reduce","r","availableUpvotes","usedDownvotes","availableDownvotes","hasUpvotes","is","count","hasDownvotes","enums","IdeationStages","IdeaRating","isDoneVoting","isVotingStage","managerConfig","topicsService","effects","source","register","CollectionDataSource","load","bind","mapper","jsonVote","ThreadVote","list","busy","requestsProcessed","updating","withEffect","events","replyAdded","on","onLocalReplyAdded","replyUpdated","onLocalReplyUpdated","replyDeleted","onLocalReplyDeleted","update","queries","toArray","ctx","EntityDataSource","progress","data","toEntity","jsonProgress","VideoPresentationProgress","p","attemptNumber","preciseProgress","currentTopic","presentationType","VideoPresentationTypes","PresentationAndSurvey","isAnswered","_options$maxWatchAmou","maxWatchAmount","videoPresentationEvent","onLocalVideoPresentationEvent","getVideoPresentationProgress","eventData","Percent","inc","currentPosition","Seconds","servicesContext","WCCEntity","json","super","personId","createField","threadId","linkedThreadId","firstName","lastName","SystemHelpers","html","getTemplatesAndResources","node","document","head","appendChild","___CSS_LOADER_API_IMPORT___"],"mappings":"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","file":"162.324ab479e8b5b5dc3bfe.js","sourcesContent":["define([\n \"!!../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./content.html\", \n \"!../../../webpack/runtime/htmlExposer.js\"], function (content, expose) {\n content = content.__esModule ? content.default : content;\n expose(content);\n return content;\n });","var api = require(\"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./content.scss\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","import { ContentBlockVMConfig, ContentBlockVMTheme } from 'components/contentBlock/contentBlock';\r\nimport { RecordingHelpers } from 'helpers/recording';\r\nimport { inject, injectable } from 'inversify';\r\nimport { Subscribable, SubscribableOrNullableValue } from 'knockout';\r\nimport { CurrentUserManager } from 'managers/currentUser';\r\nimport device from 'managers/device';\r\nimport IdeationManager from 'managers/ideation';\r\nimport { IWCCStorageManager } from 'managers/iStorage';\r\nimport { TopicManager } from 'managers/topic';\r\nimport VideoPresentationProgressManager from 'managers/videoPresentationProgress';\r\nimport { Topic } from 'models/topic';\r\nimport { wccModules } from '../../../enums/wccModules';\r\nimport './content.html';\r\nimport './content.scss';\r\n\r\ncomponents.preload('content-block');\r\n\r\nconst { discussionId } = settings;\r\n\r\nexport interface TopicContentVMConfig {\r\n topicId?: SubscribableOrNullableValue\r\n blockTheme?: SubscribableOrNullableValue\r\n showTitle?: SubscribableOrNullableValue\r\n}\r\n\r\n@injectable()\r\nexport default class TopicContentVM {\r\n private topic: Subscribable\r\n\r\n private blockTheme: Subscribable\r\n\r\n private description: Subscribable\r\n private cardsHelpText: Subscribable\r\n private moderatorNotes: Subscribable\r\n private videoPresentationInstructions: Subscribable\r\n private ideationInstructions: Subscribable\r\n private screenRecordingInstructions: Subscribable\r\n\r\n private isTitleAllowed: Subscribable\r\n\r\n topicId: Subscribable\r\n\r\n contentBlocks = ko.pureComputed(() => this.getContentBlocks());\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) model: TopicContentVMConfig,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo,\r\n @inject(wccModules.storage) storage: IWCCStorageManager\r\n ) {\r\n this.topicId = ko.flattenComputed(model.topicId);\r\n this.blockTheme = ko.flattenComputed(model.blockTheme, 'default');\r\n this.isTitleAllowed = ko.flattenComputed(model.showTitle, true);\r\n\r\n const userManager = storage.get(CurrentUserManager, { discussionId });\r\n const user = userManager.pluck(m => m.person);\r\n const isModeratorOrObserver = user.pluck(u => u.isModeratorOrObserver, false);\r\n\r\n const topicManager = storage.get(TopicManager, { topicId: this.topicId });\r\n this.topic = topicManager.pluck(m => m.topic);\r\n\r\n const vpProgressManager = storage.get(VideoPresentationProgressManager, { topicId: this.topicId });\r\n const isLoadingVPProgress = vpProgressManager.pluck(m => m.loading, true);\r\n const vpIsWatched = vpProgressManager.pluck(m => m.isWatched);\r\n const vpIsFinished = vpProgressManager.pluck(m => m.isFinished);\r\n\r\n const ideationManager = storage.get(IdeationManager, { topicId: this.topicId });\r\n\r\n this.description = this.topic.pluck(t => t.thoroughDescription, '');\r\n this.moderatorNotes = this.topic.pluck(t => isModeratorOrObserver() ? t.moderatorNotes : '', '');\r\n\r\n this.cardsHelpText = this.topic.pluck(topic => {\r\n if (topic.isCardSort() || topic.isCardScore())\r\n return device.isMobile() ? topic.cardSortHelpMobile() : topic.cardSortHelpDesktop();\r\n }, '');\r\n\r\n this.videoPresentationInstructions = this.topic.pluck(topic => {\r\n if (topic.isVideoPresentation()) {\r\n const vpOptions = topic.videoPresentationOptions();\r\n\r\n if (vpOptions != undefined) {\r\n if (vpIsFinished())\r\n return vpOptions.videoFinishedInstructions() ?? (vpIsWatched() ? (vpOptions.afterPlayedInstructions() ?? this.description) : this.description);\r\n\r\n if (vpIsWatched())\r\n return vpOptions.afterPlayedInstructions() ?? this.description;\r\n\r\n return vpOptions.beforePlayedInstructions() ?? '';\r\n }\r\n }\r\n }, '');\r\n\r\n this.ideationInstructions = ko.pureComputed(() => {\r\n const topic = this.topic();\r\n const currentIdeationManager = ideationManager();\r\n\r\n if (topic != undefined && currentIdeationManager != undefined)\r\n if (currentIdeationManager.isIdeation()) {\r\n if (currentIdeationManager.isRatingStage())\r\n return topic.ideationRankingDescription() ?? '';\r\n else\r\n return topic.thoroughDescription() ?? '';\r\n }\r\n\r\n return '';\r\n });\r\n\r\n this.screenRecordingInstructions = this.topic.pluck(topic => {\r\n if (topic.isScreenRecording()) {\r\n const screenRecordingOptions = topic.screenRecordingOptions();\r\n\r\n if (screenRecordingOptions != undefined) {\r\n if (device.isMobile())\r\n return screenRecordingOptions.mobileRecordingInstructions();\r\n else if (RecordingHelpers.checkIfScreenRecordingSupported() || isModeratorOrObserver())\r\n return screenRecordingOptions.browserRecordingInstructions();\r\n else\r\n return screenRecordingOptions.nonCompatibleDevicesInstructions();\r\n }\r\n }\r\n }, '');\r\n\r\n const isReady = ko.pureComputed(() => {\r\n const topic = this.topic();\r\n let isReady = topic != undefined;\r\n\r\n if (topic != undefined && topic.isVideoPresentation())\r\n isReady = isReady && !isLoadingVPProgress();\r\n\r\n return isReady;\r\n });\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'visible': isReady,\r\n\r\n 'css': {\r\n 'topic-content': true\r\n }\r\n });\r\n }\r\n\r\n private getContentBlocks() {\r\n const topic = this.topic();\r\n const result: Array = [];\r\n\r\n if (topic != undefined) {\r\n if (topic.isIdeation())\r\n result.push(this.getBlock({ content: this.ideationInstructions }));\r\n else if (topic.isVideoPresentation())\r\n result.push(this.getBlock({ content: this.videoPresentationInstructions }));\r\n else if (topic.isScreenRecording())\r\n result.push(this.getBlock({ content: this.screenRecordingInstructions }));\r\n else if( topic)\r\n result.push(this.getBlock({ content: this.description }));\r\n\r\n if (topic.isCardSort() || topic.isCardScore())\r\n result.push(this.getBlock({ content: this.cardsHelpText }));\r\n\r\n result.push(this.getBlock({\r\n title: this.isTitleAllowed.pluck(isTitleAllowed => isTitleAllowed ? labels.ModeratorNotes : undefined),\r\n topicId: this.topicId,\r\n content: this.moderatorNotes\r\n }));\r\n }\r\n\r\n return result.filter(b => (ko.unwrap(b.content) ?? '').length > 0);\r\n }\r\n\r\n private getBlock(config: Omit): ContentBlockVMConfig {\r\n return {\r\n ...config,\r\n\r\n theme: this.blockTheme\r\n }\r\n }\r\n}","import device from 'managers/device';\r\n\r\nexport module RecordingHelpers {\r\n export const checkIfVideoRecordingIsSupported = system.lazyAsync(async () => {\r\n try {\r\n if (window.MediaRecorder != undefined) {\r\n const stream = await navigator.mediaDevices.getUserMedia({ video: true }); //get stream\r\n stream.getTracks().forEach(track => track.stop()); //dispose stream\r\n\r\n return true;\r\n }\r\n\r\n return false;\r\n } catch {\r\n return false;\r\n }\r\n });\r\n\r\n export const checkIfAudioRecordingIsSupported = system.lazyAsync(async () => {\r\n try {\r\n if (window.MediaRecorder != undefined) {\r\n const stream = await navigator.mediaDevices.getUserMedia({ audio: true }); //get stream\r\n stream.getTracks().forEach(track => track.stop()); //dispose stream\r\n\r\n return true;\r\n }\r\n\r\n return false;\r\n } catch {\r\n return false;\r\n }\r\n });\r\n\r\n const checkIfScreenRecordingSupportedInternal = system.lazy(() => {\r\n const browser = bowser.getParser(window.navigator.userAgent);\r\n const isSafari = browser.satisfies({ safari: '>=1' }) ?? false;\r\n\r\n if (isSafari)\r\n return false;\r\n\r\n if (\"mediaDevices\" in navigator && \"getDisplayMedia\" in navigator.mediaDevices) {\r\n if (\"getUserMedia\" in navigator || \"mediaDevices\" in navigator && \"getUserMedia\" in (navigator).mediaDevices) {\r\n if (typeof MediaRecorder === \"function\")\r\n return \"readyState\" in MediaStreamTrack.prototype\r\n }\r\n }\r\n });\r\n\r\n export const checkIfScreenRecordingSupported = ko.pureComputed(() => !device.isMobile() && checkIfScreenRecordingSupportedInternal());\r\n}","import { wccModules } from 'enums/wccModules';\r\nimport { inject, injectable } from 'inversify';\r\nimport { PureComputed, Subscribable } from 'knockout';\r\nimport { CurrentUserManager } from 'managers/currentUser';\r\nimport { IWCCStorageManager } from 'managers/iStorage';\r\nimport { TopicManager } from 'managers/topic';\r\nimport TopicVotesManager from './topic/votes';\r\n\r\nexport interface TopicVotesManagerConfig {\r\n topicId: string\r\n}\r\n\r\n@injectable()\r\nexport default class IdeationManager {\r\n stage: Subscribable\r\n\r\n availableUpvotes: Subscribable\r\n availableDownvotes: Subscribable\r\n\r\n hasUpvotes: Subscribable\r\n hasDownvotes: Subscribable\r\n\r\n isIdeation: Subscribable\r\n isRatingStage: Subscribable\r\n isVotingStage: Subscribable\r\n isDoneVoting: Subscribable\r\n\r\n isReady: Subscribable\r\n\r\n constructor(\r\n @inject(wccModules.managerConfig) { topicId }: TopicVotesManagerConfig,\r\n @inject(wccModules.storage) storage: IWCCStorageManager\r\n ) {\r\n const userManager = storage.get(CurrentUserManager, { discussionId: settings.discussionId });\r\n const user = userManager.pluck(m => m.person);\r\n const isRegularUser = user.pluck(u => u.isRegular, false);\r\n\r\n const topicManager = storage.get(TopicManager, { topicId });\r\n const topic = topicManager.pluck(m => m.topic);\r\n this.isIdeation = topic.pluck(t => t.isIdeation, false);\r\n this.stage = topic.pluck(t => t.ideationStage, 0);\r\n const upvotesCount = topic.pluck(t => t.ideationUpvotes, 0);\r\n const downvotesCount = topic.pluck(t => t.ideationDownvotes, 0);\r\n\r\n const votesManager = storage.get(TopicVotesManager, { topicId: topicId });\r\n const loadingVotes = votesManager.pluck(m => m.loading, true);\r\n const votes = votesManager.pluck(m => m.votes, []);\r\n\r\n const personUpvotes = votes.filter(v => v.value() > 0);\r\n const personDownvotes = votes.filter(v => v.value() < 0);\r\n\r\n const usedUpvotes = personUpvotes.reduce((r, v) => r + v.value(), () => 0);\r\n this.availableUpvotes = ko.pureComputed(() => isRegularUser() ? upvotesCount() - usedUpvotes() : 0);\r\n\r\n const usedDownvotes = personDownvotes.reduce((r, v) => r - v.value(), () => 0);\r\n this.availableDownvotes = ko.pureComputed(() => isRegularUser() ? downvotesCount() - usedDownvotes() : 0);\r\n\r\n this.hasUpvotes = this.availableUpvotes.is(count => count > 0);\r\n this.hasDownvotes = this.availableDownvotes.is(count => count > 0);\r\n\r\n this.isRatingStage = ko.pureComputed(() => this.stage() === enums.IdeationStages.IdeaRating.value);\r\n this.isDoneVoting = this.availableUpvotes.is(0);\r\n\r\n this.isVotingStage = ko.pureComputed(() => this.isIdeation() && isRegularUser() && this.isRatingStage() && !this.isDoneVoting());\r\n\r\n this.isReady = ko.pureComputed(() => !this.isIdeation() || user() != undefined && topic() != undefined && !loadingVotes());\r\n } \r\n}","import { wccModules } from 'enums/wccModules';\r\nimport { inject, injectable } from 'inversify';\r\nimport { PureComputed, Subscribable } from 'knockout';\r\nimport { CollectionDataSource } from 'managers/datasources/collection';\r\nimport events from 'managers/events';\r\nimport IdeationManager from 'managers/ideation';\r\nimport { IWCCStorageManager } from 'managers/iStorage';\r\nimport { withEffect } from 'mixins/withEffect';\r\nimport { EffectsContainer } from 'mixins/withEffects';\r\nimport ThreadVote, { JSONThreadVote } from 'models/threadVote';\r\nimport { TopicsService } from 'services/topics';\r\n\r\nexport interface TopicVotesManagerConfig {\r\n topicId: string\r\n}\r\n\r\n@injectable()\r\nexport default class TopicVotesManager {\r\n private topicId: string\r\n private source: CollectionDataSource\r\n\r\n votes: Subscribable>\r\n\r\n loading: PureComputed\r\n updating: PureComputed\r\n\r\n constructor(\r\n @inject(wccModules.managerConfig) { topicId }: TopicVotesManagerConfig,\r\n @inject(wccModules.storage) storage: IWCCStorageManager,\r\n @inject(wccModules.topicsService) private topicsService: TopicsService,\r\n @inject(wccModules.effects) effects: EffectsContainer,\r\n ) {\r\n this.topicId = topicId;\r\n\r\n this.source = effects.register(new CollectionDataSource({\r\n load: this.load.bind(this),\r\n mapper: jsonVote => new ThreadVote(jsonVote)\r\n }));\r\n\r\n this.votes = this.source.list; \r\n\r\n this.loading = ko.pureComputed(() => this.source.busy() && this.source.requestsProcessed() === 0);\r\n this.updating = ko.pureComputed(() => this.source.busy() && this.source.requestsProcessed() > 0);\r\n\r\n const ideationManager = storage.get(IdeationManager, { topicId: topicId });\r\n const isVotingStage = ideationManager.pluck(m => m.isVotingStage, false);\r\n\r\n //we're inside voting stage so any replies changes require votes update\r\n effects.register(isVotingStage => {\r\n if (isVotingStage) {\r\n return withEffect([\r\n events.replyAdded.on(this.onLocalReplyAdded.bind(this)),\r\n events.replyUpdated.on(this.onLocalReplyUpdated.bind(this)),\r\n events.replyDeleted.on(this.onLocalReplyDeleted.bind(this))\r\n ]);\r\n }\r\n }, [isVotingStage]);\r\n }\r\n\r\n update() {\r\n this.source.load();\r\n }\r\n\r\n private load() {\r\n return this.topicsService.queries.votes(this.topicId).toArray();\r\n }\r\n\r\n private onLocalReplyAdded(topicId: string) {\r\n if (this.topicId == topicId)\r\n this.update();\r\n }\r\n\r\n private onLocalReplyUpdated(topicId: string) {\r\n if (this.topicId == topicId)\r\n this.update();\r\n }\r\n\r\n private onLocalReplyDeleted(topicId: string) {\r\n if (this.topicId == topicId)\r\n this.update();\r\n }\r\n}","import { wccModules } from 'enums/wccModules';\r\nimport { inject, injectable } from 'inversify';\r\nimport { PureComputed, Subscribable } from 'knockout';\r\nimport { EffectsContainer } from 'mixins/withEffects';\r\nimport { JSONVideoPresentationEvent } from 'models/videoPresentationEvent';\r\nimport VideoPresentationProgress, { JSONVideoPresentationProgress } from 'models/videoPresentationProgress';\r\nimport { ServicesContext } from 'services/context';\r\nimport { EntityDataSource } from './datasources/entity';\r\nimport events from './events';\r\nimport { IWCCStorageManager } from './iStorage';\r\nimport { TopicManager } from './topic';\r\n\r\nexport interface VideoPresentationProgressManagerConfig {\r\n topicId: string\r\n}\r\n\r\n@injectable()\r\nexport default class VideoPresentationProgressManager {\r\n private source: EntityDataSource\r\n private topicId: string \r\n\r\n progress: PureComputed\r\n\r\n isWatched: Subscribable\r\n isFinished: Subscribable\r\n\r\n busy = ko.pureComputed(() => this.source.busy())\r\n loading = ko.pureComputed(() => this.busy() && this.source.requestsProcessed() === 0);\r\n updating = ko.pureComputed(() => this.busy() && this.source.requestsProcessed() > 0);\r\n\r\n constructor(\r\n @inject(wccModules.managerConfig) config: VideoPresentationProgressManagerConfig,\r\n @inject(wccModules.servicesContext) private ctx: ServicesContext,\r\n @inject(wccModules.storage) storage: IWCCStorageManager,\r\n @inject(wccModules.effects) effects: EffectsContainer\r\n ) {\r\n this.topicId = config.topicId;\r\n\r\n const topicManager = storage.get(TopicManager, { topicId: this.topicId });\r\n const topic = topicManager.pluck(m => m.topic);\r\n const vpOptions = topic.pluck(t => t.videoPresentationOptions);\r\n\r\n this.source = effects.register(new EntityDataSource({\r\n update: this.update.bind(this)\r\n }));\r\n\r\n this.progress = this.source.data.toEntity(\r\n jsonProgress => new VideoPresentationProgress(jsonProgress), \r\n (progress, jsonProgress) => progress.update(jsonProgress));\r\n\r\n this.isWatched = this.progress.pluck(p => p.attemptNumber() > 1 || p.preciseProgress() === 100, false);\r\n\r\n this.isFinished = ko.pureComputed(() => {\r\n const currentTopic = topic();\r\n const options = vpOptions();\r\n const progress = this.progress();\r\n\r\n if (currentTopic != undefined && options != undefined) {\r\n if (options.presentationType() == enums.VideoPresentationTypes.PresentationAndSurvey.value) {\r\n return currentTopic.isAnswered();\r\n } else if (progress != undefined) {\r\n const maxWatchAmount = options.maxWatchAmount() ?? 0;\r\n\r\n return maxWatchAmount > 0 &&\r\n (progress.attemptNumber() > maxWatchAmount || progress.attemptNumber() === maxWatchAmount && progress.preciseProgress() === 100);\r\n }\r\n }\r\n\r\n return false;\r\n });\r\n\r\n effects.register([\r\n events.videoPresentationEvent.on(this.onLocalVideoPresentationEvent.bind(this))\r\n ]);\r\n }\r\n\r\n private update() {\r\n return this.ctx.topicsService.getVideoPresentationProgress(this.topicId);\r\n }\r\n\r\n private onLocalVideoPresentationEvent(topicId: string, eventData: JSONVideoPresentationEvent) {\r\n if (this.topicId === topicId) {\r\n const progress = this.progress();\r\n\r\n if (progress != undefined) {\r\n if (progress.preciseProgress() === 100 && eventData.Percent < 1)\r\n progress.attemptNumber.inc();\r\n\r\n progress.preciseProgress(eventData.Percent * 100);\r\n progress.currentPosition(eventData.Seconds);\r\n } else {\r\n this.source.update();\r\n }\r\n }\r\n }\r\n}","import { Observable } from 'knockout';\r\nimport WCCEntity from './entity';\r\n\r\nexport interface JSONThreadVote {\r\n PersonId: string,\r\n ThreadId: string,\r\n VoteValue: number,\r\n LinkedThreadId: string\r\n}\r\n\r\nexport default class ThreadVote extends WCCEntity {\r\n personId: Observable\r\n threadId: Observable\r\n value: Observable\r\n linkedThreadId: Observable\r\n\r\n constructor(json: JSONThreadVote) {\r\n super();\r\n\r\n this.personId = this.createField(json, 'PersonId');\r\n this.threadId = this.createField(json, 'ThreadId');\r\n this.value = this.createField(json, 'VoteValue', 0);\r\n this.linkedThreadId = this.createField(json, 'LinkedThreadId');\r\n }\r\n}","import { Observable } from 'knockout';\r\nimport WCCEntity from './entity';\r\n\r\nexport interface JSONVideoPresentationProgress {\r\n PersonId?: string\r\n FirstName?: string\r\n LastName?: string\r\n\r\n AttemptNumber?: number\r\n CurrentPosition?: number\r\n PreciseProgress?: number\r\n}\r\n\r\nexport default class VideoPresentationProgress extends WCCEntity {\r\n personId: Observable\r\n firstName: Observable\r\n lastName: Observable\r\n\r\n attemptNumber: Observable\r\n currentPosition: Observable\r\n preciseProgress: Observable\r\n\r\n constructor(data?: JSONVideoPresentationProgress) {\r\n super();\r\n\r\n this.personId = this.createField(data, 'PersonId');\r\n this.firstName = this.createField(data, 'FirstName');\r\n this.lastName = this.createField(data, 'LastName');\r\n\r\n this.attemptNumber = this.createField(data, 'AttemptNumber', 1);\r\n this.currentPosition = this.createField(data, 'CurrentPosition', 0);\r\n this.preciseProgress = this.createField(data, 'PreciseProgress', 0);\r\n }\r\n}","define(function () {\r\n const system = require('helpers/system').SystemHelpers;\r\n\r\n return function (html) {\r\n system.getTemplatesAndResources(html)\r\n .forEach(function (node) { document.head.appendChild(node) });\r\n }\r\n});","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".topic-content{display:block}.topic-content__block{margin-bottom:10px}.topic-content__block:last-child{margin-bottom:0}.topic-content__block .wcc-content{word-break:break-word}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Module\nvar code = \"\";\n// Exports\nmodule.exports = code;"],"sourceRoot":""}