{"version":3,"sources":["webpack:///../WCC.UI/App/components/editors/thread/activatable.ts","webpack:///../WCC.UI/App/components/polls/anchor/model.js","webpack:///../WCC.UI/App/components/task/activity/activity.html?c15c","webpack:///../WCC.UI/App/components/task/activity/activity.scss?94da","webpack:///../WCC.UI/App/components/task/activity/activity.ts","webpack:///../WCC.UI/App/components/task/activity/clearToDoButton.html?fde4","webpack:///../WCC.UI/App/components/task/activity/clearToDoButton.ts","webpack:///../WCC.UI/App/components/task/activity/enums/viewType.ts","webpack:///../WCC.UI/App/components/task/activity/ideation/stageMessage/stageMessage.html?cc72","webpack:///../WCC.UI/App/components/task/activity/ideation/stageMessage/stageMessage.scss?c0c0","webpack:///../WCC.UI/App/components/task/activity/ideation/stageMessage/stageMessage.ts","webpack:///../WCC.UI/App/components/task/activity/ideation/tools/stageButton.ts","webpack:///../WCC.UI/App/components/task/activity/ideation/tools/tools.html?ceae","webpack:///../WCC.UI/App/components/task/activity/ideation/tools/tools.scss?558d","webpack:///../WCC.UI/App/components/task/activity/ideation/tools/tools.ts","webpack:///../WCC.UI/App/components/task/activity/ideation/votesCounter/votesCounter.html?ab0f","webpack:///../WCC.UI/App/components/task/activity/ideation/votesCounter/votesCounter.scss?76b2","webpack:///../WCC.UI/App/components/task/activity/ideation/votesCounter/votesCounter.ts","webpack:///../WCC.UI/App/components/task/activity/managers/navigation.ts","webpack:///../WCC.UI/App/components/task/activity/managers/viewLinks.ts","webpack:///../WCC.UI/App/components/task/activity/mobileEditorsToolbar.html?a2f9","webpack:///../WCC.UI/App/components/task/activity/mobileEditorsToolbar.scss?348f","webpack:///../WCC.UI/App/components/task/activity/mobileEditorsToolbar.ts","webpack:///../WCC.UI/App/components/task/activity/postButton.html?8cd9","webpack:///../WCC.UI/App/components/task/activity/postButton.scss?1759","webpack:///../WCC.UI/App/components/task/activity/postButton.ts","webpack:///../WCC.UI/App/components/task/activity/viewlink.html?090c","webpack:///../WCC.UI/App/components/task/activity/viewlink.scss?6994","webpack:///../WCC.UI/App/components/task/activity/viewlink.ts","webpack:///../WCC.UI/App/helpers/recording.ts","webpack:///../WCC.UI/App/helpers/topics.ts","webpack:///../WCC.UI/App/managers/ideation.ts","webpack:///../WCC.UI/App/managers/topic/form.formsConfig.ts","webpack:///../WCC.UI/App/managers/topic/form.previewsConfig.ts","webpack:///../WCC.UI/App/managers/topic/form.ts","webpack:///../WCC.UI/App/managers/topic/votes.ts","webpack:///../WCC.UI/App/managers/videoPresentationProgress.ts","webpack:///../WCC.UI/App/models/commentsFilters.ts","webpack:///../WCC.UI/App/models/threadVote.ts","webpack:///../WCC.UI/App/models/videoPresentationProgress.ts","webpack:///../WCC.UI/App/patterns/doubleLabel.ts","webpack:///../WCC.UI/App/tasks/userActivityTracker.ts","webpack:///../WCC.UI/App/components/task/activity/activity.scss","webpack:///../WCC.UI/App/components/task/activity/ideation/stageMessage/stageMessage.scss","webpack:///../WCC.UI/App/components/task/activity/ideation/tools/tools.scss","webpack:///../WCC.UI/App/components/task/activity/ideation/votesCounter/votesCounter.scss","webpack:///../WCC.UI/App/components/task/activity/mobileEditorsToolbar.scss","webpack:///../WCC.UI/App/components/task/activity/postButton.scss","webpack:///../WCC.UI/App/components/task/activity/viewlink.scss","webpack:///../WCC.UI/App/components/task/activity/activity.html","webpack:///../WCC.UI/App/components/task/activity/clearToDoButton.html","webpack:///../WCC.UI/App/components/task/activity/ideation/stageMessage/stageMessage.html","webpack:///../WCC.UI/App/components/task/activity/ideation/tools/tools.html","webpack:///../WCC.UI/App/components/task/activity/ideation/votesCounter/votesCounter.html","webpack:///../WCC.UI/App/components/task/activity/mobileEditorsToolbar.html","webpack:///../WCC.UI/App/components/task/activity/postButton.html","webpack:///../WCC.UI/App/components/task/activity/viewlink.html"],"names":["isActivatableThreadEditor","instance","ThreadEditorVM","MakeActivatable","Base","constructor","super","arguments","isActive","ko","observable","activate","this","onActivate","effects","register","thread","undefined","checkIfAllowedToCancel","finishEditing","define","content","expose","__esModule","default","api","module","i","options","exports","locals","PollAnchor","require","isStaging","forceMobileUI","isCommunity","settings","components","registerLocal","preload","ActivityVM","config","info","currentUserSession","storage","labels","editorToolsContainer","pollAnchor","commentsFilters","CommentsFilters","mainForm","activateTopic","topicId","navigationManager","jumpToNextTopic","async","_simpleTopics$find$id","_simpleTopics$find","_simpleTopics$find2","simpleTopicsManager","whenNotNull","loading","when","simpleTopics","topics","nextTopicId","find","topic","shouldBeAnswered","id","isAnswered","activateTopicInternal","element","taskId","flattenComputed","groupId","isWritableObservable","unwrap","viewName","view","isMobile","pureComputed","device","isDesktop","userManager","get","CurrentUserManager","discussionId","loadingUser","pluck","m","user","person","isRegular","u","isModeratorOrObserver","isObserver","topicManager","TopicManager","loadingTopic","isIdeation","t","isExternalSurvey","isTopicAnswered","privateTopicAutoJumpType","enums","PrivateTopicAutoJumpTypes","DoNothing","value","privateTopicAutoJumpPostsNumber","autoJumpMessage","privateTopicAutoJumpMessage","userComments","CommentsManager","CommentsView","mine","realComments","isAutoJumpMessageShown","autoJumpType","ShowMessage","is","target","length","SimpleTopicsManager","simpleTopic","SimpleTopicManager","searchString","peopleTagsIDs","allowTranslations","DiscussionTranslationManager","editorConfigManager","ActivityFormManager","toolsContainer","viewLinksManager","TaskActivityViewLinksManager","activeViewLink","viewLinks","l","views","commentsView","areCommentsAllowed","isNotNull","sidebarShown","sidebar","isToDoView","todo","mainFormConfig","secondaryFormConfig","secondaryForm","customFormConfig","customForm","layout","mapSingle","getLayout","commentsTableShown","commentsGridShown","topMenuShown","isMaterialUIEnabled","_WCC$Settings$Materia","WCC","Settings","MaterialUIEnabled","ActivityNavigationManager","navigate","bind","allowCommentsFiltering","isPollsShown","isReady","extend","deferred","isLoading","not","isMandatoryProbesShown","topicsSliderConfig","selectedTopicId","filters","theme","onTopicClick","topicSummaryConfig","topicBox","spinner","subscribeNotNull","subscribe","installTask","UserActivityTracker","assignToTopic","$","document","off","on","e","pastedText","originalEvent","clipboardData","getData","trim","API","apiRequest","url","method","data","PastedText","console","warn","Auto","_","delay","bucket","localStorageManager","personId","bucketContent","update","JSON","parse","toJson","state","set","stringify","applyBindingsToNode","isInformationOnlyTopic","toDefaultView","scrollTop","__decorate","injectable","__param","inject","wccModules","componentConfig","componentInfo","signalRCurrentUserSession","ActivityClearToDoButton","topicsService","isBusy","clear","system","confirm","messages","AreYouSureYouWantToMarkAllAsRead","markAllCommentsAsRead","ex","handleError","f","toDoCount","hasToDo","canClear","TaskActivityViewType","Message","_config$title","_config$votesCount","title","votesCountShown","votesCount","titleShown","TaskActivityIdeationStageMessageVM","message","getMessage","ideationManager","IdeationManager","ideationManagerReady","availableUpvotes","availableDownvotes","ideationStage","IdeationStages","IdeaReview","isModerator","YouAreInStage2OfIdeation","contentMessages","IdeationReviewInProgress","Title","Content","IdeaRating","getRankingMessageContent","ideationDownvotes","YouHaveNUpvotesAndMDownvotes","replace","toString","doubleLabelPattern","label","TextHelpers","selectLabelFromDoubleLabel","YouHaveNUpvotes","TaskActivityIdeationToolsStageButton","getIdeationStageName","stage","TaskActivitiyIdeationToolsVM","onStageButtonClick","stageButton","isReadOnly","activateStage","activeStage","stageButtons","observableArray","IdeaCreation","strictComputed","postCreatorRestrictionType","PostCreatorRestrictionTypes","Moderator","activateStageButton","WCCError","UnknownError","setIdeationStage","forEach","b","TaskActivityIdeationVotesCounterVM","_ref","votesManager","UpvotesRemaining","withEffects","autoNavigationAllowed","navigateFunc","topicsManager","loadingTopics","isUpdatingTopics","updating","currentTopic","nextTopic","getNextTopic","onTopicIsAnsweredStateChange","events","topicChangeRequested","onTopicChangeRequested","computed","showNextTopicIfNeeded","showNextTopicIfInvalid","dispose","idx","findIndex","ignoreDependencies","every","_this$topics$find","activeViewName","activeView","all","formConfig","getEditorConfig","previewConfig","heatmapFormConfig","name","params","model","showAllPins","rasterize","ViewLink","All","type","Mine","following","Following","unread","Unread","moderatorViewLinks","allPosts","mobileAllPosts","unreadPosts","participantsForm","ViewForm","moderatorForm","AddModPost","heatmap","Heatmap","result","Array","currentUser","ready","push","isHeatMap","isHomework","withEffect","targetViewLink","toLowerCase","newName","_activeViewLink","map","link","otherLink","commentAdded","targetTopicId","TaskActivityMobileEditorsToolbar","activity","toAwait","_this$mainFormConfig","_this$secondaryFormCo","mainComponentId","componentId","secondaryComponentId","ActivityPostButtonVM","editor","isEditorReady","isLoadingTopic","isLoadingUser","isRegularUser","getTitle","isNeeded","checkIfButtonNeeded","isVisible","click","activateEditor","invokeNotNull","isTextCommentsTopic","EnterAComment","isSurvey","CompleteASurvey","isMediaOnly","isDocumentsCollection","parsedAllowedMediaTypes","includes","ThreadMediaTypes","Images","AddPhoto","Video","AddVideo","Files","AddFile","isVoxPop","UploadAVideoBlog","PinAComment","isPinBoard","CreatePinBoard","isVideoPresentation","WatchTheVideo","isCardSort","isCardScore","SortCards","isMultipleComments","AnswerQuestions","isScreenRecording","RecordingHelpers","checkIfScreenRecordingSupported","RecordScreen","UploadARecording","isAudioRecording","RecordAudio","surveyAllowsMultipleResponses","commentsLimit","TaskActivityViewLinkModel","TaskActivityViewLinkVM","isInactive","processToDo","todoShown","v","isUnreadLink","isFeatured","checkIfVideoRecordingIsSupported","lazyAsync","window","MediaRecorder","navigator","mediaDevices","getUserMedia","video","getTracks","track","stop","checkIfAudioRecordingIsSupported","audio","checkIfScreenRecordingSupportedInternal","lazy","_browser$satisfies","bowser","getParser","userAgent","satisfies","safari","MediaStreamTrack","prototype","languageCode","shouldShowToDoBadge","isPrivateBadgeVisible","topicContentType","commentsVisibility","TopicContentTypes","InformationOnly","CommentsVisibilityType","HideAll","Creation","Review","Rating","getTopicRibbon","isGroup","isMember","ToDo","contentType","Private","BuildTopicListItemsWithGroups","activities","filter","a","TopicType","Enums","Screener","Survey","existingActivities","groups","IsGroup","each","g","group","text","children","chain","GroupId","DiscussionTopicId","upvotesCount","ideationUpvotes","downvotesCount","TopicVotesManager","loadingVotes","votes","personUpvotes","personDownvotes","usedUpvotes","reduce","r","usedDownvotes","hasUpvotes","count","hasDownvotes","isRatingStage","isDoneVoting","isVotingStage","managerConfig","activityFormsInfoSets","classic","mobile","_ref2","canAddComment","_ref3","_ref4","_ref5","_ref6","_ref7","_ref8","_ref9","_ref10","_ref11","_ref12","focus","_ref13","_ref14","task","observerCanPostComments","activityFormsPreviewInfoSets","activityFormsSet","form","forms","preview","overrides","createExtendedContainerUsingEffects","taskManager","TaskManager","userCommentsManager","isLoadingComments","areUserCommentsLoaded","vpProgressManager","VideoPresentationProgressManager","isVPFinished","isFinished","formViewConfig","getFormViewConfig","getFormEditorConfig","formConfigs","_set$views$type","checkIfCanAddComment","isString","comments","source","CollectionDataSource","load","mapper","jsonVote","ThreadVote","list","busy","requestsProcessed","replyAdded","onLocalReplyAdded","replyUpdated","onLocalReplyUpdated","replyDeleted","onLocalReplyDeleted","queries","toArray","ctx","vpOptions","videoPresentationOptions","EntityDataSource","progress","toEntity","jsonProgress","VideoPresentationProgress","isWatched","p","attemptNumber","preciseProgress","presentationType","VideoPresentationTypes","PresentationAndSurvey","_options$maxWatchAmou","maxWatchAmount","videoPresentationEvent","onLocalVideoPresentationEvent","getVideoPresentationProgress","eventData","Percent","inc","currentPosition","Seconds","servicesContext","WCCEntity","createField","createCollection","json","threadId","linkedThreadId","firstName","lastName","pattern","now","sendParticipantActivityInterval","notifyDelay","signalRMessages","lastActivityTime","Date","inactiveFor","getTime","toUICallback","DOMHelpers","onNodeEvent","interval","setInterval","notify","clearInterval","force","topicMemberIsWorking","send","storageOptions","disposeDelay","___CSS_LOADER_API_IMPORT___","___CSS_LOADER_GET_URL_IMPORT___","___CSS_LOADER_URL_IMPORT_0___","___CSS_LOADER_URL_REPLACEMENT_0___"],"mappings":"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","file":"96.c44dca6f13c64401bf9d.js","sourcesContent":["import { Constructor } from 'interfaces/constructor';\r\nimport ThreadEditorVM from './thread';\r\n\r\nexport interface ActivatableThreadEditor {\r\n activate: () => void\r\n}\r\n\r\nexport function isActivatableThreadEditor(instance: any): instance is ActivatableThreadEditor {\r\n return instance instanceof ThreadEditorVM && 'activate' in instance;\r\n}\r\n\r\nexport function MakeActivatable>>(Base: TBase) {\r\n abstract class Activatable extends Base implements ActivatableThreadEditor {\r\n isActive = ko.observable(false)\r\n\r\n activate = () => this.onActivate()\r\n\r\n constructor(...args: any[]) {\r\n super(...args);\r\n\r\n this.effects.register(thread => {\r\n if (thread != undefined)\r\n this.isActive(true);\r\n }, [this.thread]);\r\n }\r\n\r\n protected override checkIfAllowedToCancel() {\r\n return super.checkIfAllowedToCancel() || this.isActive();\r\n }\r\n\r\n protected override finishEditing() {\r\n super.finishEditing();\r\n\r\n this.isActive(false);\r\n }\r\n\r\n protected onActivate() {\r\n this.isActive(true);\r\n }\r\n }\r\n\r\n return Activatable;\r\n}","define('components/polls/anchor/model', [], function () {\r\n function Model() {\r\n this.isActive = ko.observable(false);\r\n }\r\n\r\n return Model;\r\n});","define([\n \"!!../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./activity.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!./activity.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 ThreadEditorVM from 'components/editors/thread/thread';\r\nimport CommentsView from 'enums/comments/views';\r\nimport { wccModules } from 'enums/wccModules';\r\nimport { CustomElementConfig } from 'extensions/knockout/bindings/customElement';\r\nimport { inject, injectable } from 'inversify';\r\nimport { Observable, PureComputed, Subscribable, SubscribableOrNullableValue } from 'knockout';\r\nimport { CurrentUserManager } from 'managers/currentUser';\r\nimport device from 'managers/device';\r\nimport DiscussionTranslationManager from 'managers/discussion/translation';\r\nimport { IWCCStorageManager } from 'managers/iStorage';\r\nimport localStorageManager from 'managers/localStorage';\r\nimport SimpleTopicManager from 'managers/simpleTopic';\r\nimport { TopicManager } from 'managers/topic';\r\nimport ActivityFormManager, { ActivityFormEditorConfig } from 'managers/topic/form';\r\nimport { EffectsContainer } from 'mixins/withEffects';\r\nimport CommentsFilters, { CommentsFiltersConfig } from 'models/commentsFilters';\r\nimport { Topic } from 'models/topic';\r\nimport UserActivityTracker from 'tasks/userActivityTracker';\r\nimport SimpleTopicsManager from '../../../managers/discussion/simpleTopics';\r\nimport { ISignalRCurrentUserSessionManager } from '../../../managers/signalR/sessions/currentUser.interfaces';\r\nimport CommentsManager from '../../../managers/topic/comments';\r\nimport { TopicSummaryVMConfig } from '../../topic/summary/summary';\r\nimport { TopicsSliderVMConfig } from '../topics/slider/slider';\r\nimport './activity.html';\r\nimport './activity.scss';\r\nimport ActivityNavigationManager from './managers/navigation';\r\nimport TaskActivityViewLinksManager from './managers/viewLinks';\r\nimport { TaskActivityViewLinkModel } from './viewlink';\r\n\r\nconst PollAnchor = require('components/polls/anchor/model');\r\n\r\nconst { isStaging, forceMobileUI, isCommunity } = settings;\r\n\r\ncomponents\r\n .registerLocal('task-activity-viewlink', () => require('./viewlink'))\r\n .registerLocal('task-activity-mobile-editors-toolbar', () => require('./mobileEditorsToolbar'))\r\n .registerLocal('task-activity-clear-todo-button', () => require('./clearToDoButton'))\r\n .registerLocal('task-activity-post-button', () => require('./postButton'))\r\n .registerLocal('task-activity-ideation-tools', () => require('./ideation/tools/tools'))\r\n .registerLocal('task-activity-ideation-stage-message', () => require('./ideation/stageMessage/stageMessage'))\r\n .registerLocal('task-activity-ideation-votes-counter', () => require('./ideation/votesCounter/votesCounter'));\r\n\r\ncomponents.preload('task-topics-slider', 'topic-summary', 'topic-comments-filters', 'topic-comments', 'translation-checkbox');\r\n\r\nexport interface ActivtityVMConfig {\r\n taskId: SubscribableOrNullableValue\r\n groupId?: SubscribableOrNullableValue\r\n topicId: Observable\r\n view: Observable\r\n}\r\n\r\n@injectable()\r\nexport default class ActivityVM {\r\n private simpleTopicsManager: Subscribable\r\n\r\n private viewLinksManager: TaskActivityViewLinksManager\r\n private navigationManager: ActivityNavigationManager\r\n\r\n labels = labels;\r\n element: HTMLElement\r\n\r\n editorToolsContainer = ko.observable();\r\n\r\n pollAnchor = new PollAnchor();\r\n commentsFilters = new CommentsFilters();\r\n\r\n taskId: Subscribable\r\n topicId: Observable\r\n layout: Subscribable\r\n autoJumpMessage: Subscribable\r\n\r\n mainFormConfig: Subscribable\r\n mainForm = ko.observable();\r\n\r\n secondaryFormConfig: Subscribable\r\n customFormConfig: Subscribable\r\n\r\n views: Subscribable>\r\n commentsView: Subscribable\r\n\r\n isRegular: Subscribable\r\n isReady: Subscribable\r\n isLoading: Subscribable\r\n isIdeation: Subscribable\r\n allowCommentsFiltering: Subscribable\r\n allowTranslations: Subscribable\r\n isMandatoryProbesShown: Subscribable\r\n isPollsShown: Subscribable\r\n isMobile: Subscribable\r\n isDesktop: Subscribable\r\n isToDoView: Subscribable\r\n isAutoJumpMessageShown: Subscribable\r\n areCommentsAllowed: Subscribable\r\n sidebarShown: Subscribable\r\n commentsTableShown: Subscribable\r\n commentsGridShown: Subscribable\r\n topMenuShown: Subscribable\r\n isObserver: Subscribable\r\n isMaterialUIEnabled: PureComputed\r\n\r\n topicsSliderConfig: TopicsSliderVMConfig\r\n topicSummaryConfig: TopicSummaryVMConfig\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) config: ActivtityVMConfig,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo,\r\n @inject(wccModules.signalRCurrentUserSession) currentUserSession: ISignalRCurrentUserSessionManager,\r\n @inject(wccModules.storage) storage: IWCCStorageManager,\r\n @inject(wccModules.effects) private effects: EffectsContainer\r\n ) {\r\n this.element = info.element;\r\n\r\n this.taskId = ko.flattenComputed(config.taskId);\r\n const groupId = ko.flattenComputed(config.groupId);\r\n const topicId = ko.isWritableObservable(config.topicId) ? config.topicId as Observable : ko.observable(ko.unwrap(config.topicId));\r\n const viewName = ko.isWritableObservable(config.view) ? config.view as Observable : ko.observable(ko.unwrap(config.view));\r\n\r\n this.topicId = topicId;\r\n\r\n this.isMobile = ko.pureComputed(() => device.isMobile() || forceMobileUI());\r\n this.isDesktop = ko.pureComputed(() => !this.isMobile());\r\n\r\n const userManager = storage.get(CurrentUserManager, { discussionId: this.taskId });\r\n const loadingUser = userManager.pluck(m => m.loading, true);\r\n const user = userManager.pluck(m => m.person);\r\n this.isRegular = user.pluck(u => u.isRegular, false);\r\n const isModeratorOrObserver = user.pluck(u => u.isModeratorOrObserver, false);\r\n this.isObserver = user.pluck(u => u.isObserver, false);\r\n\r\n const topicManager = storage.get(TopicManager, { topicId: this.topicId });\r\n const loadingTopic = topicManager.pluck(m => m.loading, true);\r\n const topic = topicManager.pluck(m => m.topic);\r\n this.isIdeation = topic.pluck(t => t.isIdeation, false);\r\n const isExternalSurvey = topic.pluck(t => t.isExternalSurvey, false);\r\n const isTopicAnswered = topic.pluck(t => t.isAnswered, false);\r\n\r\n const privateTopicAutoJumpType = this.isRegular.pluck(isRegular => isRegular ? topic.pluck(t => t.privateTopicAutoJumpType, enums.PrivateTopicAutoJumpTypes.DoNothing.value) : enums.PrivateTopicAutoJumpTypes.DoNothing.value);\r\n const privateTopicAutoJumpPostsNumber = topic.pluck(t => t.privateTopicAutoJumpPostsNumber, 0);\r\n this.autoJumpMessage = topic.pluck(t => t.privateTopicAutoJumpMessage);\r\n\r\n const userCommentsManager = storage.get(CommentsManager, { topicId: this.topicId, view: CommentsView.mine });\r\n const userComments = userCommentsManager.pluck(m => m.realComments, []);\r\n\r\n this.isAutoJumpMessageShown = privateTopicAutoJumpType.pluck(autoJumpType => {\r\n if (autoJumpType == enums.PrivateTopicAutoJumpTypes.ShowMessage.value)\r\n return privateTopicAutoJumpPostsNumber.is(target => target > 0 && userComments().length >= target);\r\n\r\n return false;\r\n });\r\n\r\n this.simpleTopicsManager = storage.get(SimpleTopicsManager, { discussionId: this.taskId });\r\n\r\n const simpleTopicManager = storage.get(SimpleTopicManager, { topicId: this.topicId, searchString: this.commentsFilters.searchString, peopleTagsIDs: this.commentsFilters.peopleTagsIDs });\r\n const simpleTopic = simpleTopicManager.pluck(m => m.topic);\r\n\r\n const translationManager = storage.get(DiscussionTranslationManager, { discussionId: this.taskId });\r\n const allowTranslations = translationManager.pluck('isAllowed', false);\r\n this.allowTranslations = ko.pureComputed(() => allowTranslations());\r\n\r\n const editorConfigManager = this.effects.register(new ActivityFormManager(this.taskId, this.topicId, { isMobile: this.isMobile, toolsContainer: this.editorToolsContainer }));\r\n\r\n this.viewLinksManager = effects.register(new TaskActivityViewLinksManager(viewName, user, simpleTopic, editorConfigManager, this.commentsFilters));\r\n const activeViewLink = this.viewLinksManager.viewLinks.find(l => l.isActive());\r\n this.views = this.viewLinksManager.viewLinks;\r\n this.commentsView = activeViewLink.pluck(l => l.commentsView);\r\n this.areCommentsAllowed = this.commentsView.isNotNull();\r\n this.sidebarShown = activeViewLink.pluck(l => l.sidebar, true);\r\n this.isToDoView = this.commentsView.is(CommentsView.todo);\r\n\r\n this.mainFormConfig = activeViewLink.pluck(l => l.mainForm);\r\n this.secondaryFormConfig = activeViewLink.pluck(l => l.secondaryForm);\r\n this.customFormConfig = activeViewLink.pluck(l => l.customForm);\r\n\r\n this.layout = topic.mapSingle(topic => this.getLayout(topic));\r\n this.commentsTableShown = ko.pureComputed(() => this.areCommentsAllowed() && isExternalSurvey() && isModeratorOrObserver());\r\n this.commentsGridShown = ko.pureComputed(() => this.areCommentsAllowed() && !this.commentsTableShown()); \r\n this.topMenuShown = ko.pureComputed(() => this.isDesktop() && !this.commentsTableShown() /*&& !this.isObserver()*/);\r\n this.isMaterialUIEnabled = ko.pureComputed(() => WCC.Settings.MaterialUIEnabled ?? false);\r\n\r\n this.navigationManager = effects.register(new ActivityNavigationManager({\r\n taskId: this.taskId,\r\n topicId: this.topicId,\r\n navigate: this.activateTopicInternal.bind(this),\r\n storage: storage\r\n }));\r\n\r\n this.allowCommentsFiltering = ko.pureComputed(() => this.isDesktop());\r\n this.isPollsShown = ko.pureComputed(() => isCommunity());\r\n\r\n this.isReady = ko.pureComputed(() => {\r\n return !loadingUser() &&\r\n !loadingTopic() &&\r\n this.navigationManager.isReady();\r\n }).extend({ deferred: true });\r\n\r\n this.isLoading = this.isReady.not();\r\n\r\n this.isMandatoryProbesShown = ko.pureComputed(() => this.isReady() && !isStaging && this.isRegular());\r\n\r\n this.topicsSliderConfig = {\r\n taskId: this.taskId,\r\n groupId: groupId,\r\n selectedTopicId: this.topicId,\r\n filters: this.commentsFilters,\r\n theme: 'small-rounded',\r\n onTopicClick: this.activateTopic\r\n }\r\n\r\n this.topicSummaryConfig = {\r\n topicId: this.topicId,\r\n topicBox: false,\r\n spinner: false\r\n }\r\n\r\n effects.register([\r\n topicId.subscribeNotNull(topicId => this.navigationManager.activateTopic(topicId))\r\n ]);\r\n\r\n if (ko.isWritableObservable(config.topicId))\r\n effects.register(() => this.topicId.subscribe(config.topicId));\r\n\r\n effects.register(topicId => {\r\n if (topicId != undefined)\r\n return storage.installTask(UserActivityTracker, { topicId });\r\n }, [this.topicId]);\r\n\r\n effects.register(topicId => {\r\n if (topicId != undefined)\r\n return currentUserSession.assignToTopic(topicId);\r\n }, [this.topicId]);\r\n \r\n effects.register(topicId => {\r\n if (topicId != undefined) {\r\n $(document).off('paste').on('paste', (e: any) => {\r\n try {\r\n const pastedText = e.originalEvent.clipboardData.getData('text');\r\n if(!pastedText || !pastedText.trim())\r\n return;\r\n \r\n WCC.API.apiRequest({\r\n url: 'topics/' + topicId + '/people/pasteHistory',\r\n method: 'POST',\r\n data: { PastedText: e.originalEvent.clipboardData.getData('text') }\r\n });\r\n }\r\n catch(e) {\r\n console.warn(e);\r\n }\r\n });\r\n }\r\n }, [this.topicId]);\r\n\r\n effects.register(privateTopicAutoJumpType => {\r\n if (privateTopicAutoJumpType == enums.PrivateTopicAutoJumpTypes.Auto.value) {\r\n return isTopicAnswered.subscribe(isTopicAnswered => {\r\n if (isTopicAnswered)\r\n _.delay(() =>this.jumpToNextTopic(), 1000);\r\n });\r\n }\r\n }, [privateTopicAutoJumpType]);\r\n\r\n effects.register((taskId, user) => {\r\n if (taskId != undefined && user != undefined) {\r\n const bucket = localStorageManager.commentsFilters(taskId, user.personId());\r\n const bucketContent = bucket.get();\r\n\r\n if (bucketContent != undefined)\r\n this.commentsFilters.update(JSON.parse(bucketContent));\r\n\r\n const state = ko.pureComputed(() => this.commentsFilters.toJson());\r\n\r\n return state.subscribe(state => bucket.set(JSON.stringify(state)));\r\n }\r\n }, [this.taskId, user]);\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'css': {\r\n 'task-activity': true,\r\n 'task-activity--mobile': device.isMobile,\r\n 'task-activity--with-poll': this.pollAnchor.isActive, \r\n 'task-activity--with-topmenu': this.topMenuShown\r\n }\r\n });\r\n }\r\n\r\n activateTopic = (topicId: string) => {\r\n this.navigationManager.activateTopic(topicId);\r\n }\r\n\r\n jumpToNextTopic = async () => {\r\n const simpleTopicsManager = await this.simpleTopicsManager.whenNotNull();\r\n await simpleTopicsManager.loading.when(loading => !loading);\r\n\r\n const simpleTopics = simpleTopicsManager.topics();\r\n const nextTopicId = simpleTopics.find(topic => topic.shouldBeAnswered())?.id() ??\r\n simpleTopics.find(topic => !topic.isAnswered())?.id();\r\n\r\n if (nextTopicId != undefined)\r\n this.activateTopicInternal(nextTopicId);\r\n }\r\n\r\n private getLayout(topic?: Topic): string {\r\n if (topic != undefined) {\r\n if (topic.isInformationOnlyTopic()\r\n || (topic.isExternalSurvey() && this.isRegular()))\r\n return 'wcc-components-task-activity-info';\r\n }\r\n\r\n return 'wcc-components-task-activity-general';\r\n }\r\n\r\n private activateTopicInternal(id: string) {\r\n this.topicId(id);\r\n this.viewLinksManager.toDefaultView();\r\n\r\n $('html, body').scrollTop(0);\r\n }\r\n}","define([\n \"!!../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./clearToDoButton.html\", \n \"!../../../webpack/runtime/htmlExposer.js\"], function (content, expose) {\n content = content.__esModule ? content.default : content;\n expose(content);\n return content;\n });","import { wccModules } from 'enums/wccModules';\r\nimport { inject, injectable } from 'inversify';\r\nimport { Subscribable, SubscribableOrNullableValue } from 'knockout';\r\nimport { IWCCStorageManager } from 'managers/iStorage';\r\nimport SimpleTopicManager from 'managers/simpleTopic';\r\nimport CommentsFilters from 'models/commentsFilters';\r\nimport { TopicsService } from 'services/topics';\r\nimport './clearToDoButton.html';\r\n\r\nexport interface ActivityClearToDoButtonConfig {\r\n topicId: SubscribableOrNullableValue\r\n commentsFilters: SubscribableOrNullableValue\r\n}\r\n\r\n@injectable()\r\nexport default class ActivityClearToDoButton {\r\n private topicId: Subscribable\r\n\r\n labels = labels\r\n\r\n toDoCount: Subscribable\r\n\r\n isBusy = ko.observable(false);\r\n canClear: Subscribable\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) config: ActivityClearToDoButtonConfig,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo,\r\n @inject(wccModules.topicsService) private topicsService: TopicsService,\r\n @inject(wccModules.storage) storage: IWCCStorageManager\r\n ) {\r\n this.topicId = ko.flattenComputed(config.topicId);\r\n\r\n const filters = ko.flattenComputed(config.commentsFilters);\r\n const searchString = filters.pluck(f => f.searchString, '');\r\n const peopleTagsIDs = filters.pluck(f => f.peopleTagsIDs, []);\r\n\r\n const topicManager = storage.get(SimpleTopicManager, { topicId: this.topicId, searchString, peopleTagsIDs });\r\n const topic = topicManager.pluck(m => m.topic);\r\n this.toDoCount = topic.pluck(m => m.toDoCount, 0);\r\n const hasToDo = ko.pureComputed(() => this.toDoCount() > 0);\r\n\r\n const isBusy = ko.observable(false);\r\n this.canClear = ko.pureComputed(() => hasToDo() && !isBusy());\r\n\r\n const isReady = ko.pureComputed(() => topic() != undefined);\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'visible': isReady,\r\n\r\n 'css': {\r\n 'task-activity__clear-todo-button': true\r\n }\r\n });\r\n }\r\n\r\n clear = () => {\r\n if (this.isBusy()) return;\r\n\r\n const topicId = this.topicId();\r\n\r\n if (topicId != undefined) {\r\n system.confirm(messages.AreYouSureYouWantToMarkAllAsRead, async () => {\r\n this.isBusy(true);\r\n\r\n try {\r\n await this.topicsService.markAllCommentsAsRead(topicId)\r\n } catch (ex) {\r\n system.handleError(ex);\r\n } finally {\r\n this.isBusy(false);\r\n }\r\n });\r\n }\r\n }\r\n}","enum TaskActivityViewType {\r\n all = 0,\r\n mine = 1,\r\n following = 2,\r\n todo = 3,\r\n unread = 3,\r\n participantsForm = 4,\r\n moderatorForm = 5,\r\n heatmap = 6\r\n}\r\n\r\nexport default TaskActivityViewType;","define([\n \"!!../../../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./stageMessage.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!./stageMessage.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 { wccModules } from 'enums/wccModules';\r\nimport { TextHelpers } from 'helpers/text';\r\nimport { inject, injectable } from 'inversify';\r\nimport { PureComputed, Subscribable, SubscribableOrNullableValue } from 'knockout';\r\nimport { CurrentUserManager } from 'managers/currentUser';\r\nimport IdeationManager from 'managers/ideation';\r\nimport { IWCCStorageManager } from 'managers/iStorage';\r\nimport { TopicManager } from 'managers/topic';\r\nimport { Person } from 'models/person';\r\nimport { Topic } from 'models/topic';\r\nimport doubleLabelPattern from 'patterns/doubleLabel';\r\nimport './stageMessage.html';\r\nimport './stageMessage.scss';\r\n\r\ncomponents.preload('wcc-alert');\r\n\r\nexport interface TaskActivityIdeationStageMessageVMConfig {\r\n topicId: SubscribableOrNullableValue\r\n}\r\n\r\ninterface MessageConfig {\r\n title?: string\r\n content: string\r\n votesCount?: boolean\r\n}\r\n\r\nclass Message {\r\n title: string\r\n content: string\r\n votesCountShown: boolean\r\n\r\n titleShown: boolean\r\n\r\n constructor(config: MessageConfig) {\r\n this.title = config.title ?? '';\r\n this.content = config.content;\r\n this.votesCountShown = config.votesCount ?? false;\r\n this.titleShown = this.title.length > 0;\r\n }\r\n}\r\n\r\n@injectable()\r\nexport default class TaskActivityIdeationStageMessageVM {\r\n private user: Subscribable\r\n private topic: Subscribable\r\n\r\n private availableUpvotes: Subscribable\r\n private availableDownvotes: Subscribable\r\n\r\n topicId: Subscribable\r\n\r\n message = ko.pureComputed(() => this.getMessage());\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) config: TaskActivityIdeationStageMessageVMConfig,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo,\r\n @inject(wccModules.storage) storage: IWCCStorageManager\r\n ) {\r\n this.topicId = ko.flattenComputed(config.topicId);\r\n\r\n const userManager = storage.get(CurrentUserManager, { discussionId: settings.discussionId });\r\n this.user = userManager.pluck(m => m.person);\r\n\r\n const topicManager = storage.get(TopicManager, { topicId: this.topicId });\r\n this.topic = topicManager.pluck(t => t.topic);\r\n\r\n const ideationManager = storage.get(IdeationManager, { topicId: this.topicId });\r\n const ideationManagerReady = ideationManager.pluck(m => m.isReady, false);\r\n\r\n this.availableUpvotes = ideationManager.pluck(m => m.availableUpvotes, 0);\r\n this.availableDownvotes = ideationManager.pluck(m => m.availableDownvotes, 0);\r\n\r\n const isReady = ko.pureComputed(() => {\r\n return this.user() != undefined &&\r\n this.topic() != undefined &&\r\n ideationManagerReady() &&\r\n this.message() != undefined;\r\n });\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'visible': isReady,\r\n\r\n 'css': {\r\n 'task-activity-ideation-stage-message': true\r\n }\r\n });\r\n }\r\n\r\n private getMessage(): Message | undefined {\r\n const user = this.user();\r\n const topic = this.topic();\r\n\r\n if (user != undefined && topic != undefined) {\r\n switch (topic.ideationStage()) {\r\n case enums.IdeationStages.IdeaReview.value:\r\n return user.isModerator() ?\r\n new Message({ content: messages.YouAreInStage2OfIdeation }) :\r\n new Message({ title: contentMessages.IdeationReviewInProgress.Title, content: contentMessages.IdeationReviewInProgress.Content });\r\n\r\n case enums.IdeationStages.IdeaRating.value:\r\n return user.isRegular() && this.availableUpvotes() > 0 ?\r\n new Message({ content: this.getRankingMessageContent(topic), votesCount: true }) :\r\n undefined;\r\n }\r\n }\r\n }\r\n\r\n private getRankingMessageContent(topic: Topic) {\r\n if (topic.ideationDownvotes() > 0) {\r\n return labels.YouHaveNUpvotesAndMDownvotes\r\n .replace('{0}', this.availableUpvotes().toString())\r\n .replace('{1}', this.availableDownvotes().toString())\r\n .replace(doubleLabelPattern, label => TextHelpers.selectLabelFromDoubleLabel(label, this.availableUpvotes()))\r\n .replace(doubleLabelPattern, label => TextHelpers.selectLabelFromDoubleLabel(label, this.availableDownvotes()));\r\n }\r\n\r\n return labels\r\n .YouHaveNUpvotes\r\n .replace('{0}', this.availableUpvotes().toString())\r\n .replace(doubleLabelPattern, label => TextHelpers.selectLabelFromDoubleLabel(label, this.availableUpvotes()));\r\n }\r\n}","import { getIdeationStageName } from 'helpers/topics';\r\nimport { Observable } from 'knockout';\r\n\r\ninterface IdeationToolsStageButtonConfig {\r\n stage: number\r\n}\r\n\r\nexport default class TaskActivityIdeationToolsStageButton {\r\n title: Observable\r\n stage: Observable\r\n\r\n isActive = ko.observable(false);\r\n\r\n constructor(config: IdeationToolsStageButtonConfig) {\r\n this.title = ko.observable(getIdeationStageName(config.stage));\r\n this.stage = ko.observable(config.stage);\r\n }\r\n}","define([\n \"!!../../../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./tools.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!./tools.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 { wccModules } from 'enums/wccModules';\r\nimport { inject, injectable } from 'inversify';\r\nimport { ObservableArray, Subscribable, SubscribableOrNullableValue } from 'knockout';\r\nimport { CurrentUserManager } from 'managers/currentUser';\r\nimport { IWCCStorageManager } from 'managers/iStorage';\r\nimport { TopicManager } from 'managers/topic';\r\nimport { EffectsContainer } from 'mixins/withEffects';\r\nimport WCCError from 'models/wccError';\r\nimport { TopicsService } from 'services/topics';\r\nimport TaskActivityIdeationToolsStageButton from './stageButton';\r\nimport './tools.html';\r\nimport './tools.scss';\r\n\r\nexport interface TaskActivityIdeationToolsVMConfig {\r\n topicId: SubscribableOrNullableValue\r\n}\r\n\r\n@injectable()\r\nexport default class TaskActivitiyIdeationToolsVM {\r\n private topicId: Subscribable\r\n private activeStage: Subscribable\r\n\r\n isReadOnly: Subscribable\r\n\r\n stageButtons: ObservableArray\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) config: TaskActivityIdeationToolsVMConfig,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo,\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 const userManager = storage.get(CurrentUserManager, { discussionId: settings.discussionId });\r\n const user = userManager.pluck(m => m.person);\r\n const isModerator = user.pluck(u => u.isModerator, false);\r\n\r\n const topicManager = storage.get(TopicManager, { topicId: config.topicId });\r\n const topic = topicManager.pluck(m => m.topic);\r\n this.topicId = topic.pluck(t => t.id);\r\n this.activeStage = topic.pluck(t => t.ideationStage, 0);\r\n\r\n this.stageButtons = ko.observableArray([\r\n new TaskActivityIdeationToolsStageButton({ stage: enums.IdeationStages.IdeaCreation.value }),\r\n new TaskActivityIdeationToolsStageButton({ stage: enums.IdeationStages.IdeaReview.value }),\r\n new TaskActivityIdeationToolsStageButton({ stage: enums.IdeationStages.IdeaRating.value })\r\n ]);\r\n\r\n this.isReadOnly = isModerator.not();\r\n\r\n const isReady = ko.strictComputed((user, topic) => {\r\n return user != undefined &&\r\n topic != undefined &&\r\n topic.postCreatorRestrictionType() != enums.PostCreatorRestrictionTypes.Moderator.value;\r\n }, [user, topic]);\r\n\r\n effects.register(stage => {\r\n this.activateStageButton(stage);\r\n }, [this.activeStage]);\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'visible': isReady,\r\n\r\n 'css': {\r\n 'task-activity-ideation-tools': true\r\n }\r\n });\r\n }\r\n\r\n onStageButtonClick = (stageButton: TaskActivityIdeationToolsStageButton) => {\r\n if (!this.isReadOnly() && !stageButton.isActive()) {\r\n system.confirm(`Are you sure you want to activate '${stageButton.title()}' stage?`, async () => {\r\n try {\r\n await this.activateStage(stageButton.stage());\r\n } catch (ex) {\r\n system.handleError(ex);\r\n }\r\n }); \r\n }\r\n }\r\n\r\n private async activateStage(stage: number) {\r\n const topicId = this.topicId();\r\n\r\n if (topicId == undefined)\r\n throw new WCCError(messages.UnknownError);\r\n\r\n await this.topicsService.setIdeationStage(topicId, stage);\r\n }\r\n\r\n private activateStageButton(stage: number) {\r\n this.stageButtons().forEach(b => b.isActive(b.stage() === stage));\r\n }\r\n}","define([\n \"!!../../../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./votesCounter.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!./votesCounter.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 { wccModules } from 'enums/wccModules';\r\nimport { TextHelpers } from 'helpers/text';\r\nimport { inject, injectable } from 'inversify';\r\nimport { Subscribable, SubscribableOrNullableValue } from 'knockout';\r\nimport IdeationManager from 'managers/ideation';\r\nimport { IWCCStorageManager } from 'managers/iStorage';\r\nimport doubleLabelPattern from 'patterns/doubleLabel';\r\nimport './votesCounter.html';\r\nimport './votesCounter.scss';\r\n\r\nexport interface TaskActivityIdeationVotesCounterVMConfig {\r\n topicId: SubscribableOrNullableValue\r\n}\r\n\r\n@injectable()\r\nexport default class TaskActivityIdeationVotesCounterVM {\r\n availableUpvotes: Subscribable\r\n message: Subscribable\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) { topicId }: TaskActivityIdeationVotesCounterVMConfig,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo,\r\n @inject(wccModules.storage) storage: IWCCStorageManager\r\n ) {\r\n const votesManager = storage.get(IdeationManager, { topicId });\r\n this.availableUpvotes = votesManager.pluck(m => m.availableUpvotes, 0);\r\n\r\n this.message = ko.pureComputed(() => labels.UpvotesRemaining.replace(doubleLabelPattern, label => TextHelpers.selectLabelFromDoubleLabel(label, this.availableUpvotes())));\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'css': {\r\n 'task-activity-ideation-votes-counter': true\r\n }\r\n });\r\n }\r\n}","import { Subscribable } from 'knockout';\r\nimport { CurrentUserManager } from 'managers/currentUser';\r\nimport SimpleTopicsManager from 'managers/discussion/simpleTopics';\r\nimport events from 'managers/events';\r\nimport { IWCCStorageManager } from 'managers/iStorage';\r\nimport { withEffects } from 'mixins/withEffects';\r\nimport { Person } from 'models/person';\r\nimport { SimpleTopic } from 'models/simpleTopic';\r\n\r\nexport interface ActivityNavigationManagerConfig {\r\n taskId: Subscribable\r\n topicId: Subscribable\r\n navigate: Action<[string]>\r\n storage: IWCCStorageManager\r\n}\r\n\r\nexport default class ActivityNavigationManager {\r\n private effects = withEffects();\r\n\r\n private autoNavigationAllowed = ko.observable(false);\r\n\r\n private topicId: Subscribable\r\n\r\n private user: Subscribable\r\n private topics: Subscribable>\r\n private currentTopic: Subscribable\r\n private nextTopic: Subscribable\r\n\r\n private isUpdatingTopics: Subscribable\r\n\r\n isReady: Subscribable\r\n\r\n private navigateFunc: Action<[string]>\r\n\r\n constructor({ taskId, topicId, navigate, storage }: ActivityNavigationManagerConfig) {\r\n const effects = this.effects;\r\n\r\n this.topicId = topicId;\r\n this.navigateFunc = navigate;\r\n\r\n const userManager = storage.get(CurrentUserManager, { discussionId: taskId });\r\n this.user = userManager.pluck(m => m.person);\r\n\r\n const topicsManager = storage.get(SimpleTopicsManager, { discussionId: taskId });\r\n const loadingTopics = topicsManager.pluck(m => m.loading, true).extend({ deferred: true });\r\n this.isUpdatingTopics = topicsManager.pluck(m => m.updating, false);\r\n this.topics = topicsManager.pluck(m => m.topics, []);\r\n\r\n this.currentTopic = this.topics.find(t => t.id() == this.topicId());\r\n this.nextTopic = ko.pureComputed(() => this.getNextTopic()); \r\n\r\n this.isReady = ko.pureComputed(() => this.user() != undefined && !loadingTopics());\r\n\r\n effects.register(topic => {\r\n if (topic != undefined)\r\n return topic.isAnswered.subscribe(this.onTopicIsAnsweredStateChange.bind(this));\r\n }, [this.currentTopic]);\r\n\r\n effects.register([\r\n events.topicChangeRequested.on(this.onTopicChangeRequested.bind(this)),\r\n\r\n ko.computed(() => this.showNextTopicIfNeeded()).extend({ deferred: true }),\r\n ko.computed(() => this.showNextTopicIfInvalid()).extend({ deferred: true })\r\n ]);\r\n }\r\n\r\n activateTopic(topicId: string) {\r\n this.autoNavigationAllowed(false);\r\n this.navigateFunc(topicId);\r\n }\r\n\r\n dispose() {\r\n this.effects.dispose();\r\n }\r\n\r\n private getNextTopic() {\r\n const topics = this.topics();\r\n\r\n const idx = topics.findIndex(topic => topic.id() == this.topicId());\r\n\r\n if (idx !== -1)\r\n return topics[idx + 1];\r\n }\r\n\r\n private showNextTopicIfNeeded() {\r\n if (this.isReady()) {\r\n const user = this.user();\r\n const currentTopic = this.currentTopic();\r\n const nextTopic = this.nextTopic();\r\n\r\n const navigationAllowed = user != undefined &&\r\n currentTopic != undefined &&\r\n currentTopic.isInformationOnlyTopic() &&\r\n user.isRegular() &&\r\n this.autoNavigationAllowed() &&\r\n !this.isUpdatingTopics();\r\n\r\n if (navigationAllowed && nextTopic != undefined) {\r\n const nextTopicId = nextTopic.id();\r\n\r\n if (nextTopicId != undefined)\r\n ko.ignoreDependencies(() => this.navigateFunc(nextTopicId));\r\n }\r\n }\r\n }\r\n\r\n private showNextTopicIfInvalid() {\r\n if (this.isReady()) {\r\n const navigationAllowed = !this.isUpdatingTopics() && this.topics().every(topic => topic.id() !== this.topicId());\r\n\r\n if (navigationAllowed) {\r\n const nextTopic = this.topics().find(topic => topic.shouldBeAnswered()) ?? this.topics()[0];\r\n\r\n if (nextTopic !== undefined) {\r\n const nextTopicId = nextTopic.id();\r\n\r\n if (nextTopicId != undefined)\r\n ko.ignoreDependencies(() => this.navigateFunc(nextTopicId));\r\n }\r\n }\r\n }\r\n }\r\n\r\n private onTopicIsAnsweredStateChange(isAnswered: boolean) {\r\n if (isAnswered)\r\n this.autoNavigationAllowed(true);\r\n }\r\n\r\n private onTopicChangeRequested(topicId: string) {\r\n if (this.topicId() == topicId)\r\n this.autoNavigationAllowed(true);\r\n }\r\n}","import { TopicHeatmapVMConfig } from 'components/topic/heatmap/heatmap.interfaces';\r\nimport CommentsView from 'enums/comments/views';\r\nimport { CustomElementConfig } from 'extensions/knockout/bindings/customElement';\r\nimport { Observable, PureComputed, Subscribable } from 'knockout';\r\nimport device from 'managers/device';\r\nimport events from 'managers/events';\r\nimport ActivityFormManager from 'managers/topic/form';\r\nimport { withEffect } from 'mixins/withEffect';\r\nimport { withEffects } from 'mixins/withEffects';\r\nimport CommentsFilters from 'models/commentsFilters';\r\nimport { Person } from 'models/person';\r\nimport { SimpleTopic } from 'models/simpleTopic';\r\nimport TaskActivityViewType from '../enums/viewType';\r\nimport { TaskActivityViewLinkModel as ViewLink } from '../viewlink';\r\n\r\nexport default class TaskActivityViewLinksManager {\r\n private effects = withEffects();\r\n\r\n activeView = ko.observable(TaskActivityViewType.all);\r\n\r\n viewLinks: PureComputed>\r\n\r\n constructor(\r\n activeViewName: Observable,\r\n user: Subscribable,\r\n topic: Subscribable,\r\n editorConfigManager: ActivityFormManager,\r\n commentsFilters: CommentsFilters\r\n ) {\r\n const effects = this.effects;\r\n\r\n const isModerator = user.pluck(u => u.isModerator, false);\r\n \r\n const topicId = topic.pluck(t => t.id);\r\n const shouldBeAnswered = topic.pluck(t => t.shouldBeAnswered, false);\r\n const toDoCount = topic.pluck(t => t.toDoCount, 0);\r\n\r\n const formConfig = editorConfigManager.getEditorConfig('form');\r\n const previewConfig = editorConfigManager.getEditorConfig('preview');\r\n\r\n const heatmapFormConfig = >{\r\n name: 'topic-heatmap',\r\n params: {\r\n model: {\r\n topicId: topicId,\r\n showAllPins: true,\r\n rasterize: true\r\n }\r\n }\r\n }\r\n\r\n const viewLinks = {\r\n all: new ViewLink({ title: labels.All, type: TaskActivityViewType.all, commentsView: CommentsView.all, mainForm: formConfig, todo: shouldBeAnswered }),\r\n mine: new ViewLink({ title: labels.Mine, type: TaskActivityViewType.mine, commentsView: CommentsView.mine, mainForm: formConfig }),\r\n following: new ViewLink({ title: labels.Following, type: TaskActivityViewType.following, commentsView: CommentsView.following, mainForm: formConfig }),\r\n unread: new ViewLink({ title: labels.Unread, type: TaskActivityViewType.unread, commentsView: CommentsView.unread, todo: toDoCount })\r\n }\r\n\r\n const moderatorViewLinks = {\r\n allPosts: new ViewLink({ title: labels.All, type: TaskActivityViewType.all, commentsView: CommentsView.all }),\r\n mobileAllPosts: new ViewLink({ title: labels.All, type: TaskActivityViewType.all, commentsView: CommentsView.all, mainForm: formConfig, secondaryForm: previewConfig }),\r\n unreadPosts: new ViewLink({ title: labels.Unread, type: TaskActivityViewType.unread, commentsView: CommentsView.unread, todo: toDoCount }),\r\n participantsForm: new ViewLink({ title: labels.ViewForm, type: TaskActivityViewType.participantsForm, mainForm: previewConfig }),\r\n moderatorForm: new ViewLink({ title: labels.AddModPost, type: TaskActivityViewType.moderatorForm, mainForm: formConfig }),\r\n heatmap: new ViewLink({ title: labels.Heatmap, type: TaskActivityViewType.heatmap, customForm: heatmapFormConfig }),\r\n }\r\n\r\n this.viewLinks = ko.pureComputed(() => {\r\n const result = new Array();\r\n const currentUser = user();\r\n const currentTopic = topic();\r\n\r\n if (currentUser != undefined && currentTopic != undefined && editorConfigManager.ready()) {\r\n if (currentUser.isModerator() || currentUser.isObserver()) {\r\n if (device.isMobile())\r\n result.push(moderatorViewLinks.mobileAllPosts);\r\n else\r\n result.push(moderatorViewLinks.allPosts);\r\n\r\n if (currentUser.isModerator())\r\n result.push(moderatorViewLinks.unreadPosts);\r\n\r\n if (currentTopic.isHeatMap())\r\n result.push(moderatorViewLinks.heatmap);\r\n\r\n if (!device.isMobile()) {\r\n if (previewConfig() != undefined)\r\n result.push(moderatorViewLinks.participantsForm);\r\n\r\n if (!commentsFilters.isActive() && currentUser.isModerator() && !currentTopic.isHomework)\r\n result.push(moderatorViewLinks.moderatorForm);\r\n }\r\n } else {\r\n result.push(viewLinks.all, viewLinks.mine);\r\n\r\n //if (!currentTopic.isIdeation())\r\n // result.push(viewLinks.following);\r\n\r\n result.push(viewLinks.unread);\r\n }\r\n }\r\n\r\n return result;\r\n }).extend({ deferred: true });\r\n\r\n const activeViewLink = this.viewLinks.find(l => l.isActive());\r\n\r\n effects.register(viewLinks => {\r\n if (viewLinks.length > 0) {\r\n return [\r\n withEffect((activeViewName) => {\r\n if (viewLinks.length > 0) {\r\n let targetViewLink = activeViewName != undefined ?\r\n viewLinks.find(l => TaskActivityViewType[l.type()].toLowerCase() == activeViewName.toLowerCase()) :\r\n undefined;\r\n\r\n if (targetViewLink == undefined)\r\n targetViewLink = viewLinks[0];\r\n\r\n if (targetViewLink != activeViewLink())\r\n this.activeView(targetViewLink.type());\r\n }\r\n }, [activeViewName]),\r\n\r\n withEffect((activeView) => {\r\n const newName = TaskActivityViewType[activeView];\r\n\r\n if (newName != activeViewName())\r\n activeViewName(newName);\r\n }, [this.activeView]),\r\n\r\n withEffect(activeView => {\r\n if (activeViewLink()?.type() != activeView)\r\n viewLinks.forEach(l => l.isActive(l.type() == activeView));\r\n }, [this.activeView]),\r\n\r\n withEffect(activeViewLink => {\r\n if (activeViewLink != undefined && activeViewLink.type() != this.activeView())\r\n this.activeView(activeViewLink.type());\r\n }, [activeViewLink]),\r\n\r\n viewLinks.map(link => withEffect(isActive => {\r\n if (isActive)\r\n viewLinks.forEach(otherLink => {\r\n if (otherLink != link)\r\n otherLink.isActive(false);\r\n });\r\n }, [link.isActive], false))\r\n ]\r\n }\r\n }, [this.viewLinks]);\r\n\r\n effects.register(isModerator => {\r\n if (isModerator) {\r\n return events.commentAdded.on(targetTopicId => {\r\n if (topicId() == targetTopicId && this.activeView() == TaskActivityViewType.moderatorForm)\r\n this.toDefaultView();\r\n });\r\n }\r\n }, [isModerator]);\r\n }\r\n\r\n toDefaultView() {\r\n this.activeView(TaskActivityViewType.all);\r\n }\r\n\r\n dispose() {\r\n this.effects.dispose();\r\n }\r\n}","define([\n \"!!../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./mobileEditorsToolbar.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!./mobileEditorsToolbar.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 ThreadEditorVM from 'components/editors/thread/thread';\r\nimport { wccModules } from 'enums/wccModules';\r\nimport { inject, injectable } from 'inversify';\r\nimport { Observable, Subscribable } from 'knockout';\r\nimport { ActivityFormEditorConfig } from 'managers/topic/form';\r\nimport ActivityVM from './activity';\r\nimport './mobileEditorsToolbar.html';\r\nimport './mobileEditorsToolbar.scss';\r\n\r\nexport interface TaskActivityMobileEditorsToolbarConfig {\r\n activity: ActivityVM\r\n}\r\n\r\n@injectable()\r\nexport default class TaskActivityMobileEditorsToolbar {\r\n mainForm: Observable\r\n mainFormConfig: Subscribable\r\n\r\n secondaryFormConfig: Subscribable\r\n\r\n toAwait: Subscribable>\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) { activity }: TaskActivityMobileEditorsToolbarConfig,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo\r\n ) {\r\n this.mainForm = activity.mainForm;\r\n this.mainFormConfig = activity.mainFormConfig\r\n\r\n this.secondaryFormConfig = activity.secondaryFormConfig;\r\n\r\n this.toAwait = ko.pureComputed(() => {\r\n const result = new Array();\r\n\r\n const mainComponentId = this.mainFormConfig()?.componentId;\r\n const secondaryComponentId = this.secondaryFormConfig()?.componentId;\r\n\r\n if (mainComponentId != undefined)\r\n result.push(mainComponentId);\r\n\r\n if (secondaryComponentId != undefined)\r\n result.push(secondaryComponentId);\r\n\r\n return result;\r\n });\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'visible': this.mainFormConfig.isNotNull(),\r\n\r\n 'css': {\r\n 'task-activity__mobile-editors-toolbar': true\r\n }\r\n });\r\n }\r\n}","define([\n \"!!../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./postButton.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!./postButton.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 { isActivatableThreadEditor } from 'components/editors/thread/activatable';\r\nimport ThreadEditorVM from 'components/editors/thread/thread';\r\nimport { wccModules } from 'enums/wccModules';\r\nimport { RecordingHelpers } from 'helpers/recording';\r\nimport { inject, injectable } from 'inversify';\r\nimport { PureComputed, Subscribable, SubscribableOrNullableValue } from 'knockout';\r\nimport { CurrentUserManager } from 'managers/currentUser';\r\nimport { IWCCStorageManager } from 'managers/iStorage';\r\nimport { TopicManager } from 'managers/topic';\r\nimport { Topic } from 'models/topic';\r\nimport './postButton.html';\r\nimport './postButton.scss';\r\n\r\ninterface ActivityPostButtonVMConfig {\n taskId: SubscribableOrNullableValue\r\n editor: SubscribableOrNullableValue>\r\n}\n\n@injectable()\nexport default class ActivityPostButtonVM {\n private editor: Subscribable | undefined>\n\n topic: Subscribable\n\n constructor(\r\n @inject(wccModules.componentConfig) model: ActivityPostButtonVMConfig,\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo,\n @inject(wccModules.storage) storage: IWCCStorageManager,\n ) {\r\n const taskId = ko.pureComputed(() => ko.unwrap(model.taskId));\r\n this.editor = ko.pureComputed(() => ko.unwrap(model.editor));\r\n\r\n const topicId = this.editor.pluck('topicId');\r\n const isEditorReady = this.editor.pluck(e => isActivatableThreadEditor(e), false);\r\n\r\n const topicManager = storage.get(TopicManager, { topicId });\n const isLoadingTopic = topicManager.pluck('loading', true);\n this.topic = topicManager.pluck('topic');\n\n const userManager = storage.get(CurrentUserManager, { discussionId: taskId });\n const isLoadingUser = userManager.pluck('loading', false);\n const user = userManager.pluck('person');\n const isRegularUser = user.pluck('isRegular', false);\r\n\r\n const title = ko.pureComputed(() => this.getTitle());\r\n\r\n const isNeeded = ko.pureComputed(() => this.checkIfButtonNeeded()); \r\n const isReady = ko.pureComputed(() => !isLoadingTopic() && !isLoadingUser() && isEditorReady());\r\n const isVisible = ko.pureComputed(() => isReady() && isRegularUser() && isNeeded() && title().length > 0);\r\n\r\n ko.applyBindingsToNode(info.element, {\n 'visible': isVisible,\n 'text': title,\n 'click': () => this.activateEditor(),\n\n 'css': {\n 'task-activity__post-button': true\n }\n }, this);\r\n }\r\n\r\n private activateEditor() {\r\n this.editor.invokeNotNull(editor => {\r\n if (isActivatableThreadEditor(editor))\r\n editor.activate();\r\n }); \r\n }\r\n\r\n private getTitle() {\r\n const topic = this.topic();\r\n\r\n if (topic != undefined) {\r\n if (topic.isTextCommentsTopic()) {\r\n return labels.EnterAComment;\r\n } else if (topic.isSurvey()) {\r\n return labels.CompleteASurvey;\r\n } else if (topic.isMediaOnly() || topic.isDocumentsCollection()) {\r\n if (topic.parsedAllowedMediaTypes().includes(enums.ThreadMediaTypes.Images.value))\n return labels.AddPhoto;\n else if (topic.parsedAllowedMediaTypes().includes(enums.ThreadMediaTypes.Video.value))\n return labels.AddVideo;\r\n else if (topic.parsedAllowedMediaTypes().includes(enums.ThreadMediaTypes.Files.value))\r\n return labels.AddFile;\r\n } else if (topic.isVoxPop()) {\r\n return labels.UploadAVideoBlog;\r\n } else if (topic.isHeatMap()) {\r\n return labels.PinAComment;\r\n } else if (topic.isPinBoard()) {\r\n return labels.CreatePinBoard;\r\n } else if (topic.isVideoPresentation()) {\r\n return labels.WatchTheVideo;\r\n } else if (topic.isCardSort() || topic.isCardScore()) {\r\n return labels.SortCards;\r\n } else if (topic.isMultipleComments()) {\r\n return labels.AnswerQuestions;\r\n } else if (topic.isScreenRecording()) {\r\n return RecordingHelpers.checkIfScreenRecordingSupported() ? labels.RecordScreen : labels.UploadARecording;\r\n } else if (topic.isAudioRecording()) {\r\n return labels.RecordAudio;\r\n }\r\n }\r\n\r\n return '';\r\n }\r\n\r\n private checkIfButtonNeeded() {\r\n const topic = this.topic();\r\n\r\n if (topic != undefined) {\r\n if (topic.isInformationOnlyTopic()) return false;\n\n if (!topic.shouldBeAnswered())\n return topic.isSurvey() && topic.surveyAllowsMultipleResponses() ||\n (topic.isMediaOnly() || topic.isVoxPop()) || topic.commentsLimit() === 0; // 0 means unlimited comments\n\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n}","define([\n \"!!../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./viewlink.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!./viewlink.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 CommentsView from 'enums/comments/views';\r\nimport { wccModules } from 'enums/wccModules';\r\nimport { CustomElementConfig } from 'extensions/knockout/bindings/customElement';\r\nimport { inject, injectable } from 'inversify';\r\nimport { Observable, PureComputed, Subscribable, SubscribableOrNullableValue } from 'knockout';\r\nimport { ActivityFormEditorConfig } from 'managers/topic/form';\r\nimport TaskActivityViewType from './enums/viewType';\r\nimport './viewlink.html';\r\nimport './viewlink.scss';\r\n\r\nexport interface TaskActivityViewLinkConfig {\r\n title: string\r\n type: TaskActivityViewType\r\n sidebar?: SubscribableOrNullableValue\r\n commentsView?: SubscribableOrNullableValue \r\n mainForm?: SubscribableOrNullableValue\r\n secondaryForm?: SubscribableOrNullableValue\r\n customForm?: SubscribableOrNullableValue\r\n todo?: SubscribableOrNullableValue | SubscribableOrNullableValue\r\n}\r\n\r\nexport class TaskActivityViewLinkModel {\r\n isActive = ko.observable(false);\r\n\r\n title: Subscribable\r\n type: Subscribable\r\n sidebar: Subscribable\r\n commentsView: Subscribable\r\n mainForm: Subscribable\r\n secondaryForm: Subscribable\r\n customForm: Subscribable\r\n todo: Subscribable\r\n\r\n constructor(config: TaskActivityViewLinkConfig) {\r\n this.type = ko.flattenComputed(config.type);\r\n this.title = ko.flattenComputed(config.title);\r\n this.sidebar = ko.flattenComputed(config.sidebar, true);\r\n this.commentsView = ko.flattenComputed(config.commentsView);\r\n this.mainForm = ko.flattenComputed(config.mainForm);\r\n this.secondaryForm = ko.flattenComputed(config.secondaryForm);\r\n this.customForm = ko.flattenComputed(config.customForm);\r\n this.todo = ko.flattenComputed(config.todo as SubscribableOrNullableValue, 0);\r\n }\r\n}\r\n\r\n@injectable()\r\nexport default class TaskActivityViewLinkVM {\r\n title: Subscribable\r\n toDoCount: Subscribable\r\n\r\n isActive: Observable\r\n isInactive: Subscribable\r\n todoShown: Subscribable\r\n\r\n isMaterialUIEnabled: PureComputed\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) model: TaskActivityViewLinkModel,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo\r\n ) {\r\n this.title = model.title;\r\n const type = model.type;\r\n this.isActive = model.isActive;\r\n this.isInactive = this.isActive.not();\r\n\r\n this.toDoCount = model.todo.mapSingle(value => this.processToDo(value));\r\n this.todoShown = this.toDoCount.is(v => v > 0);\r\n\r\n this.isMaterialUIEnabled = ko.pureComputed(() => WCC.Settings.MaterialUIEnabled ?? false);\r\n\r\n const isUnreadLink = type.is(TaskActivityViewType.unread);\r\n const isFeatured = ko.pureComputed(() => isUnreadLink() && this.todoShown());\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'click': () => this.isActive(true),\r\n\r\n 'css': {\r\n 'task-activity__viewlink': true,\r\n 'task-activity__viewlink--featured': isFeatured,\r\n 'task-activity__viewlink--with-badge': this.todoShown\r\n }\r\n });\r\n }\r\n\r\n private processToDo(value: number | boolean) {\r\n if (value === true || value === false) {\r\n return value ? 1 : 0;\r\n } else {\r\n return value;\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 { Person } from \"models/person\";\r\nimport { SimpleTopic } from \"models/simpleTopic\";\r\nimport { TopicRibbon } from 'models/topicRibbon';\r\nimport { JSONTopicListItem, TopicListItem } from \"../models/topicListItem\";\r\n\r\nconst { languageCode } = settings;\r\n\r\nexport function shouldShowToDoBadge(topic: SimpleTopic, person: Person) {\r\n return person.isRegular() && topic.shouldBeAnswered();\r\n}\r\n\r\n/**\r\n * Determines if a private badge should be shown to mods/obs in the live site for those topics which have the comments visibility set to 'HideAll'\r\n * @param person - target person\r\n * @param topicContentType - target topic content type\r\n * @param commentsVisibility - The comments visibility settings\r\n */\r\nexport function isPrivateBadgeVisible(person: Person, topicContentType?: number, commentsVisibility?: number) {\r\n //let's not show 'Private' badge for 'Information only' topics as they are obvious to be private and we never show comments there \r\n if (topicContentType === enums.TopicContentTypes.InformationOnly.value)\r\n return false; \r\n\r\n return person.isModeratorOrObserver() ? commentsVisibility == enums.CommentsVisibilityType.HideAll.value : false;\r\n}\r\n\r\nexport function getIdeationStageName(stage: number) {\r\n switch (stage) {\r\n case enums.IdeationStages.IdeaCreation.value: return labels.Creation;\r\n case enums.IdeationStages.IdeaReview.value: return labels.Review;\r\n case enums.IdeationStages.IdeaRating.value: return labels.Rating;\r\n default: return '';\r\n }\r\n}\r\n\r\nexport function getTopicRibbon(user: Person, topic: SimpleTopic): TopicRibbon | undefined {\r\n if (!topic.isGroup()) {\r\n if (user.isMember()) {\r\n if (topic.shouldBeAnswered())\r\n return { title: labels.ToDo, type: `wcc-ribbon--${languageCode} wcc-ribbon--red` };\r\n } else if (user.isModeratorOrObserver()) {\r\n if (isPrivateBadgeVisible(user, topic.contentType(), topic.commentsVisibility()))\r\n return { title: labels.Private, type: `wcc-ribbon--${languageCode} wcc-ribbon--red` };\r\n\r\n if (topic.isIdeation()) {\r\n const stage = topic.ideationStage();\r\n\r\n switch (stage) {\r\n case enums.IdeationStages.IdeaCreation.value: return { title: getIdeationStageName(stage), type: `wcc-ribbon--${languageCode} wcc-ribbon--green` };\r\n case enums.IdeationStages.IdeaReview.value: return { title: getIdeationStageName(stage), type: `wcc-ribbon--${languageCode} wcc-ribbon--blue` };\r\n case enums.IdeationStages.IdeaRating.value: return { title: getIdeationStageName(stage), type: `wcc-ribbon--${languageCode} wcc-ribbon--orange` };\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\n\r\nexport function BuildTopicListItemsWithGroups(activities: JSONTopicListItem[]) {\r\n activities = _.filter(activities, function (a) { return a.TopicType != WCC.Enums.TopicType.Screener.value && a.TopicType != WCC.Enums.TopicType.Survey.value; });\r\n let existingActivities: TopicListItem[] = [];\r\n\r\n var groups = _.filter(activities, function (a) { return a.IsGroup; });\r\n if (groups.length) {\r\n _.each(groups, function (g) {\r\n var group = {\r\n text: g.Title,\r\n children: _.chain(activities)\r\n .filter(function (a) { return a.GroupId == g.DiscussionTopicId; })\r\n .map(function (a) { return { id: a.DiscussionTopicId, text: a.Title } })\r\n .value()\r\n };\r\n existingActivities.push(group);\r\n });\r\n }\r\n else {\r\n existingActivities = _.map(activities, function (a) {\r\n return { id: a.DiscussionTopicId, text: a.Title };\r\n });\r\n }\r\n\r\n return existingActivities;\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 { TextThreadEditorVMConfig } from 'components/editors/thread/text/textThread';\r\nimport { ActivityFormConfig } from './form.common';\r\n\r\nconst activityFormsInfoSets: Array = [\r\n {\r\n views: {\r\n classic: 'info-thread-editor'\r\n },\r\n\r\n isActive: ({ topic }) => topic.isInformationOnlyTopic()\r\n },\r\n\r\n {\r\n views: {\r\n classic: 'survey-editor-standalone',\r\n mobile: 'survey-editor-mobile'\r\n },\r\n\r\n isActive: ({ topic, user, thread, canAddComment }) => topic.isSurvey() && (user.isRegular() && canAddComment || thread != undefined)\r\n },\r\n\r\n {\r\n views: {\r\n classic: 'externalsurvey-editor-participant'\r\n },\r\n\r\n isActive: ({ topic, user }) => topic.isExternalSurvey() && user.isRegular()\r\n },\r\n\r\n {\r\n views: {\r\n classic: 'externalsurvey-editor-mod'\r\n },\r\n\r\n isActive: ({ topic, user }) => topic.isExternalSurvey() && user.isModeratorOrObserver()\r\n },\r\n\r\n {\r\n views: {\r\n classic: 'heatmap-editor-standalone',\r\n mobile: 'heatmap-editor-mobile'\r\n },\r\n\r\n isActive: ({ topic, user, canAddComment }) => topic.isHeatMap() && user.isRegular() && canAddComment\r\n },\r\n\r\n {\r\n views: {\r\n classic: 'cards-sort-editor-standalone',\r\n mobile: 'cards-sort-editor-mobile'\r\n },\r\n\r\n isActive: ({ topic, user, thread, canAddComment }) => topic.isCardSort() && (user.isRegular() && canAddComment || thread != undefined)\r\n },\r\n\r\n {\r\n views: {\r\n 'classic': 'cards-score-editor-standalone',\r\n 'mobile': 'cards-score-editor-mobile'\r\n },\r\n\r\n isActive: ({ topic, user, thread, canAddComment }) => topic.isCardScore() && (user.isRegular() && canAddComment || thread != undefined)\r\n },\r\n\r\n {\r\n views: {\r\n 'classic': 'video-presentation-editor-standalone',\r\n 'mobile': 'video-presentation-editor-mobile'\r\n },\r\n\r\n isActive: ({ topic, user, thread, canAddComment }) => topic.isVideoPresentation() && (user.isRegular() && canAddComment || thread != undefined)\r\n },\r\n\r\n {\r\n views: {\r\n 'classic': 'pinboard-editor-standalone',\r\n 'mobile': 'pinboard-editor-mobile'\r\n },\r\n\r\n isActive: ({ topic, user, thread, canAddComment }) => topic.isPinBoard() && (user.isRegular() && canAddComment || thread != undefined)\r\n },\r\n\r\n {\r\n views: {\r\n 'classic': 'multicomment-editor-standalone',\r\n 'mobile': 'multicomment-editor-mobile'\r\n },\r\n\r\n isActive: ({ topic, user, canAddComment }) => topic.isMultipleComments() && (user.isRegular() && canAddComment)\r\n },\r\n\r\n {\r\n views: {\r\n 'classic': 'screenrecording-editor-standalone',\r\n 'mobile': 'screenrecording-editor-mobile'\r\n },\r\n\r\n isActive: ({ topic, user, canAddComment }) => topic.isScreenRecording() && (user.isRegular() && canAddComment)\r\n },\r\n\r\n {\r\n views: {\r\n 'classic': 'audiorecording-editor-standalone',\r\n 'mobile': 'audiorecording-editor-mobile'\r\n },\r\n\r\n isActive: ({ topic, user, canAddComment }) => topic.isAudioRecording() && (user.isRegular() && canAddComment)\r\n }, \r\n\r\n {\r\n views: {\r\n classic: ['comment-editor-standalone', { focus: true, title: true }],\r\n mobile: ['comment-editor-mobile', { focus: true, title: true }]\r\n },\r\n\r\n isActive: ({ topic, user, canAddComment }) => topic.isIdeation() && topic.ideationStage() == enums.IdeationStages.IdeaCreation.value && (user.isRegular() && canAddComment)\r\n },\r\n\r\n {\r\n views: {\r\n classic: ['comment-editor-standalone', { focus: true }],\r\n mobile: ['comment-editor-mobile', { focus: true }]\r\n },\r\n\r\n isActive: ({ task, topic, user, canAddComment }) => {\r\n return (!user.isRegular() && !topic.isIdeation() || topic.isTextCommentsTopic() || topic.isMediaOnly() || topic.isDocumentsCollection() || topic.isVoxPop()) &&\r\n (!user.isObserver() || task.observerCanPostComments()) &&\r\n canAddComment;\r\n }\r\n }\r\n]\r\n\r\nexport default activityFormsInfoSets;","import { ActivityFormConfig } from './form.common';\r\n\r\nconst activityFormsPreviewInfoSets: Array = [\r\n {\r\n views: {\r\n classic: 'survey-editor-standalone',\r\n mobile: 'survey-editor-mobile'\r\n },\r\n\r\n isActive: ({ topic, user }) => topic.isSurvey() && user.isModerator()\r\n },\r\n\r\n {\r\n views: {\r\n 'classic': 'video-presentation-editor-standalone',\r\n 'mobile': 'video-presentation-editor-mobile'\r\n },\r\n\r\n isActive: ({ topic, user }) => topic.isVideoPresentation() && user.isModerator()\r\n },\r\n\r\n {\r\n views: {\r\n classic: 'externalsurvey-editor-mod'\r\n },\r\n\r\n isActive: ({ topic, user }) => topic.isExternalSurvey() && user.isModeratorOrObserver()\r\n },\r\n]\r\n\r\nexport default activityFormsPreviewInfoSets;","import { ThreadEditorVMConfig } from 'components/editors/thread/thread.interfaces';\r\nimport CommentsView from 'enums/comments/views';\r\nimport { wccModules } from 'enums/wccModules';\r\nimport { Subscribable, SubscribableOrNullableValue } from 'knockout';\r\nimport { CurrentUserManager } from 'managers/currentUser';\r\nimport { IWCCStorageManager } from 'managers/iStorage';\r\nimport TaskManager from 'managers/task';\r\nimport { TopicManager } from 'managers/topic';\r\nimport CommentsManager from 'managers/topic/comments';\r\nimport VideoPresentationProgressManager from 'managers/videoPresentationProgress';\r\nimport { withEffects } from 'mixins/withEffects';\r\nimport { Person } from 'models/person';\r\nimport Task from 'models/task';\r\nimport { Topic } from 'models/topic';\r\nimport { TopicThread } from 'models/topicThread';\r\nimport { createExtendedContainerUsingEffects } from '../../configuration/inversify/container/extended';\r\nimport { ActivityFormConfig, ActivityFormViewConfig } from './form.common';\r\nimport activityFormsInfoSets from './form.formsConfig';\r\nimport activityFormsPreviewInfoSets from './form.previewsConfig';\r\n\r\nexport interface ActivityFormEditorConfig extends ThreadEditorVMConfig {\r\n componentId: string\r\n}\r\n\r\ntype ActivityFormConfigsSet = { forms: Array, overrides?: Partial }\r\n\r\nconst activityFormsSet = {\r\n form: { forms: activityFormsInfoSets },\r\n preview: { forms: activityFormsPreviewInfoSets, overrides: { preview: true } }\r\n}\r\n\r\ntype ActivityFormType = keyof typeof activityFormsSet\r\n\r\ninterface ActivityFormManagerOptions {\r\n thread?: SubscribableOrNullableValue\r\n isMobile?: SubscribableOrNullableValue\r\n toolsContainer?: SubscribableOrNullableValue\r\n}\r\n\r\nexport default class ActivityFormManager {\r\n private effects = withEffects();\r\n\r\n private topicId: Subscribable\r\n private toolsContainer: Subscribable\r\n\r\n private user: Subscribable\r\n private task: Subscribable\r\n private topic: Subscribable\r\n private thread: Subscribable\r\n\r\n private userComments: Subscribable>\r\n\r\n private isVPFinished: Subscribable\r\n private isMobile: Subscribable\r\n private areUserCommentsLoaded: Subscribable\r\n\r\n ready: Subscribable\r\n\r\n constructor(\r\n taskId: SubscribableOrNullableValue,\r\n topicId: SubscribableOrNullableValue,\r\n options?: ActivityFormManagerOptions\r\n ) {\r\n this.topicId = ko.flattenComputed(topicId);\r\n this.thread = ko.flattenComputed(options?.thread);\r\n this.isMobile = ko.flattenComputed(options?.isMobile, false);\r\n this.toolsContainer = ko.flattenComputed(options?.toolsContainer);\r\n\r\n const container = createExtendedContainerUsingEffects(this.effects);\r\n const storage = container.get(wccModules.storage);\r\n\r\n const userManager = storage.get(CurrentUserManager, { discussionId: taskId });\r\n this.user = userManager.pluck(m => m.person);\r\n\r\n const taskManager = storage.get(TaskManager, { taskId });\r\n this.task = taskManager.pluck(m => m.task);\r\n\r\n const topicManager = storage.get(TopicManager, { topicId });\r\n this.topic = topicManager.pluck(m => m.topic);\r\n\r\n const userCommentsManager = storage.get(CommentsManager, { topicId, view: CommentsView.mine });\r\n this.userComments = userCommentsManager.pluck(m => m.realComments, []);\r\n const isLoadingComments = userCommentsManager.pluck(m => m.loading).extend({ deferred: true });\r\n this.areUserCommentsLoaded = isLoadingComments.not();\r\n\r\n const vpProgressManager = storage.get(VideoPresentationProgressManager, { topicId });\r\n this.isVPFinished = vpProgressManager.pluck(m => m.isFinished, false);\r\n\r\n this.ready = ko.pureComputed(() => this.user() != undefined && this.task() != undefined && this.topic() != undefined);\r\n }\r\n\r\n getEditorConfig(type: ActivityFormType) {\r\n const { forms, overrides = {} } = activityFormsSet[type];\r\n\r\n const formViewConfig = ko.pureComputed(() => this.getFormViewConfig(forms)).extend({ deferred: true });\r\n const formEditorConfig = ko.pureComputed(() => this.getFormEditorConfig(formViewConfig(), overrides)).extend({ deferred: true });\r\n\r\n return formEditorConfig;\r\n }\r\n\r\n dispose() {\r\n this.effects.dispose();\r\n }\r\n\r\n private getFormViewConfig(formConfigs: Array) {\r\n const task = this.task();\r\n const topic = this.topic();\r\n const user = this.user();\r\n const thread = this.thread();\r\n\r\n if (task != undefined && topic != undefined && user != undefined) {\r\n const type = this.isMobile() ? 'mobile' : 'classic';\r\n const canAddComment = this.checkIfCanAddComment(topic, user);\r\n\r\n const set = _(formConfigs).find(set => set.isActive({ task, topic, user, canAddComment, thread }));\r\n\r\n if (set != undefined)\r\n return set.views[type] ?? set.views.classic;\r\n }\r\n }\r\n\r\n private getFormEditorConfig(formViewConfig: ActivityFormViewConfig | undefined, overrides: Partial = {}) {\r\n if (formViewConfig != undefined) {\r\n let componentId: string, config: ThreadEditorVMConfig;\r\n\r\n if (_.isString(formViewConfig)) {\r\n componentId = formViewConfig;\r\n config = {};\r\n } else {\r\n componentId = formViewConfig[0];\r\n config = formViewConfig[1];\r\n }\r\n\r\n return {\r\n ...config,\r\n ...overrides,\r\n\r\n componentId,\r\n topicId: this.topicId,\r\n thread: this.thread,\r\n toolsContainer: this.toolsContainer\r\n }\r\n }\r\n }\r\n\r\n private checkIfCanAddComment(topic: Topic, user: Person) {\r\n if (!user.isRegular())\r\n return true;\r\n\r\n if (topic.isVideoPresentation())\r\n return !this.isVPFinished();\r\n\r\n var commentsLimit = topic.commentsLimit();\r\n\r\n if (commentsLimit === 0) {\r\n return true;\r\n } else if (commentsLimit === 1) {\r\n return !topic.isAnswered();\r\n } else {\r\n const comments = this.userComments();\r\n const areCommentsReady = this.areUserCommentsLoaded();\r\n\r\n if (areCommentsReady)\r\n return comments.length < commentsLimit;\r\n }\r\n\r\n return false;\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, ObservableArray, PureComputed } from 'knockout';\r\nimport WCCEntity from './entity';\r\n\r\nexport interface CommentsFiltersConfig {\n searchString?: string\r\n peopleTagsIDs?: Array\r\n}\n\nexport default class CommentsFilters extends WCCEntity {\n searchString: Observable\n peopleTagsIDs: ObservableArray\n\n isActive: PureComputed\n\n constructor(config?: CommentsFiltersConfig) {\n super();\n\n this.searchString = this.createField(config, 'searchString', '');\n this.peopleTagsIDs = this.createCollection(config, 'peopleTagsIDs');\n\n this.isActive = ko.pureComputed(() => this.searchString().length > 0 || this.peopleTagsIDs().length > 0);\n }\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}","const pattern = /\\[([^|\\]]+)\\|([^|\\]]+)\\]/;\r\n\r\nexport default pattern;","import storageOptions from 'decorators/storageOptions';\r\nimport { wccModules } from 'enums/wccModules';\r\nimport { DOMHelpers } from 'helpers/dom';\r\nimport { inject, injectable } from 'inversify';\r\nimport { Subscribable } from 'knockout';\r\nimport SignalRMessagesManager from 'managers/signalR/messages';\r\nimport { EffectsContainer } from 'mixins/withEffects';\r\n\r\nconst { isStaging, now, sendParticipantActivityInterval } = settings;\r\nconst notifyDelay = sendParticipantActivityInterval * 1000;\r\n\r\nexport interface UserActivityTrackerConfig {\r\n topicId: string\r\n}\r\n\r\n@injectable()\r\n@storageOptions({ disposeDelay: 0 })\r\nexport default class UserActivityTracker {\r\n private topicId: string\r\n\r\n private lastActivityTime = ko.observable(new Date());\r\n private inactiveFor: Subscribable\r\n\r\n constructor(\r\n @inject(wccModules.managerConfig) config: UserActivityTrackerConfig,\r\n @inject(wccModules.signalRMessages) private signalRMessages: SignalRMessagesManager,\r\n @inject(wccModules.effects) effects: EffectsContainer\r\n ) {\r\n this.topicId = config.topicId;\r\n\r\n this.inactiveFor = ko.strictComputed((now, lastActivityTime) => {\r\n if (now > lastActivityTime)\r\n return now.getTime() - lastActivityTime.getTime();\r\n \r\n return 0;\r\n }, [now, this.lastActivityTime]);\r\n\r\n const update = system.toUICallback(() => this.update());\r\n\r\n if (!isStaging) {\r\n effects.register([\r\n DOMHelpers.onNodeEvent(document, 'click mousemove keydown touchstart touchmove touchend touchcancel scroll', update)\r\n ]);\r\n\r\n effects.register(() => {\r\n const interval = setInterval(() => this.notify(), notifyDelay);\r\n\r\n return () => clearInterval(interval);\r\n });\r\n\r\n this.notify(true);\r\n }\r\n }\r\n\r\n private update() {\r\n this.lastActivityTime(new Date());\r\n }\r\n\r\n private notify(force = false) {\r\n if (force || this.inactiveFor() < notifyDelay)\r\n this.signalRMessages.topicMemberIsWorking.send(this.topicId);\r\n }\r\n}","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_GET_URL_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/getUrl.js\");\nvar ___CSS_LOADER_URL_IMPORT_0___ = require(\"../../../../Images/bg-header.png\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\nexports.push([module.id, \".task-activity{position:relative;display:flex;flex-direction:column;background-color:#444}.task-activity.task-activity--mobile{padding-bottom:40px}.task-activity.task-activity--with-topmenu .task__topics-slider__topic--selected .task__topics-slider__topic__body:before{border-bottom-color:#595959}.task-activity.task-activity--with-poll .task-activity__container{padding-bottom:60px}.task-activity__slider{flex-shrink:0}.task-activity__layout{flex-grow:1;position:relative;display:flex;flex-direction:column;min-height:0}.task-activity__container{display:flex;flex-direction:column;padding:20px;min-height:0}.task-activity__body{display:flex;min-height:0;gap:20px}.task-activity__sidebar{flex-shrink:0;display:flex;flex-direction:column;width:448px;gap:20px}.task-activity__sidebar>*:empty{display:none}.task-activity__content{display:flex;flex-direction:column;min-width:0;min-height:0;width:100%}.task-activity__content .thread-editor--standalone{margin-bottom:20px}.task-activity__content .task-activity__post-button{display:block;margin-bottom:10px}.task-activity__content .task-activity-ideation-stage-message{margin-bottom:20px}.task-activity__content .component-awaiter{margin-bottom:20px}.task-activity__content .component-awaiter .thread-editor--standalone{margin-bottom:0}.task-activity__jump-message{padding:15px;border-color:#d6e9c6;margin-bottom:20px;transition:background-color ease-in-out 250ms;background-color:#dff0d8;border:1px solid transparent;border-radius:4px;user-select:none;color:#3c763d;cursor:pointer}.task-activity__jump-message:hover{background-color:#c1e2b3}.task-activity__info{max-width:500px;margin:auto}.task-activity__topmenu{display:flex;margin:-20px -20px 20px;padding:15px 20px;background-color:#555;border-bottom:1px solid #595959}.task-activity__topmenu__views{flex-shrink:0;margin-right:10px}.task-activity__topmenu__controls{flex-grow:1;display:flex;justify-content:space-between;align-items:center}.task-activity__topmenu__controls .translation-checkbox{color:#f8f8f7}.task-activity__mobile-toolbar{display:flex;justify-content:flex-end;align-items:center;height:40px;line-height:100%;margin-bottom:-10px;padding:10px;color:#fff}.task-activity__mobile-bottommenu{position:fixed;bottom:0;left:0;right:0;padding:10px;background-color:#333;background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \");box-shadow:0 0 3px 0 #c6c6c6;text-align:center;z-index:910}.task-activity__clear-todo-button{position:relative}.task-activity__safe-video-uploader{color:#c6c6c6;font-size:12px;display:block;margin-bottom:10px}@media(max-width: 750px){.task-activity__topmenu .task-activity__sidebar{width:auto}.task-activity__body{flex-direction:column}.task-activity__body .task-activity__sidebar{width:100%}.task-activity__body .task-activity__content{width:100%}.task-activity__body .thread-editor--standalone{max-width:none;margin-bottom:20px}.task-activity__body .topic-comments-filters{display:none}.task-activity--with-poll .task-activity__container{padding-bottom:83px}}@media(max-width: 500px){.task-activity__container{padding:10px}.task-activity__body{gap:10px}.task-activity poll-anchor-popup{bottom:60px !important}.task-activity--with-poll .task-activity__container{padding-bottom:51px}#footer{display:none}.push{height:40px !important}.mainContainer{margin-bottom:-40px !important}}\", \"\"]);\n// Exports\nmodule.exports = exports;\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, \".task-activity-ideation-stage-message{display:block}.task-activity-ideation-stage-message h4:first-child{margin-top:0}.task-activity-ideation-stage-message p:last-child{margin-bottom:0}.task-activity-ideation-stage-message__body{display:flex;align-items:center}.task-activity-ideation-stage-message__splitter{align-self:stretch;position:relative;width:1px;margin:0 15px;background-color:#f8f8f7}.task-activity-ideation-stage-message__content{flex-grow:1}\", \"\"]);\n// Exports\nmodule.exports = exports;\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, \".task-activity-ideation-tools{display:block;padding:15px;background-color:#fff;border-radius:4px;text-align:center}.task-activity-ideation-tools__title{margin-top:0;margin-bottom:20px}.task-activity-ideation-tools__stage-buttons{display:flex}.task-activity-ideation-tools__stage-buttons .btn{flex-grow:1}.task-activity-ideation-tools__stage-buttons .btn.disabled{opacity:1}\", \"\"]);\n// Exports\nmodule.exports = exports;\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, \".task-activity-ideation-votes-counter{display:flex;align-items:center}.task-activity-ideation-votes-counter__title{flex-shrink:0;margin-right:10px;font-weight:bold;font-size:60px;line-height:100%}.task-activity-ideation-votes-counter__message{width:80px;font-size:16px;text-align:center}\", \"\"]);\n// Exports\nmodule.exports = exports;\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, \".task-activity__mobile-editors-toolbar{position:relative;display:block;background:#ececec;min-height:40px}.task-activity__mobile-editors-toolbar__body{display:flex;overflow-x:auto}.task-activity__mobile-editors-toolbar__main-editor{flex-shrink:0;flex-grow:1}.task-activity__mobile-editors-toolbar__secondary-editor{flex-shrink:0}.task-activity__mobile-editors-toolbar__secondary-editor .topic-usercontent-mobile{padding-right:0}\", \"\"]);\n// Exports\nmodule.exports = exports;\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, \".task-activity__post-button{display:inline-block;padding:10px;text-align:center;color:#fff;background-color:#dd5454;border:1px solid #c6c6c6}\", \"\"]);\n// Exports\nmodule.exports = exports;\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, \".task-activity__viewlink{display:inline-block;position:relative;margin-right:20px}.task-activity__viewlink .wcc-badge--top-right{transform:translateX(75%) translateY(50%)}.task-activity__viewlink:last-child{margin-right:0}.task-activity__viewlink:last-child:after{content:none}.task-activity__viewlink:after{content:\\\"|\\\";position:absolute;top:50%;right:-10px;transform:translate(50%, -50%);color:#f8f8f7}.task-activity__viewlink.task-activity__viewlink--featured .wcc-link{color:#ff7a7a;border-color:#ff7a7a;font-weight:bold;text-shadow:0 0 3px #000}.task-activity__viewlink.task-activity__viewlink--featured .wcc-link:hover{color:#ffe4e4;border-color:#ffe4e4}.task-activity__viewlink.task-activity__viewlink--with-badge{margin-right:33px}.task-activity__viewlink.task-activity__viewlink--with-badge:after{right:-23px}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Module\nvar code = \"\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"\";\n// Exports\nmodule.exports = code;"],"sourceRoot":""}