{"version":3,"sources":["webpack:///../WCC.UI/App/components/dropdowns/base/base.scss?625b","webpack:///../WCC.UI/App/components/dropdowns/base/base.ts","webpack:///../WCC.UI/App/components/dropdowns/select/select.html?e847","webpack:///../WCC.UI/App/components/dropdowns/select/select.ts","webpack:///../WCC.UI/App/components/topic/comment/abuseCover.html?01b0","webpack:///../WCC.UI/App/components/topic/comment/abuseCover.ts","webpack:///../WCC.UI/App/components/topic/comment/body.html?bd3e","webpack:///../WCC.UI/App/components/topic/comment/body.scss?bdb1","webpack:///../WCC.UI/App/components/topic/comment/body.ts","webpack:///../WCC.UI/App/components/topic/comment/clearAbuseReportButton.html?802c","webpack:///../WCC.UI/App/components/topic/comment/clearAbuseReportButton.ts","webpack:///../WCC.UI/App/components/topic/comment/comment.html?f226","webpack:///../WCC.UI/App/components/topic/comment/comment.scss?3ea0","webpack:///../WCC.UI/App/components/topic/comment/comment.ts","webpack:///../WCC.UI/App/components/topic/comment/content.html?bd4a","webpack:///../WCC.UI/App/components/topic/comment/content.scss?2504","webpack:///../WCC.UI/App/components/topic/comment/content.ts","webpack:///../WCC.UI/App/components/topic/comment/creatorCover.html?cbc5","webpack:///../WCC.UI/App/components/topic/comment/creatorCover.scss?7de1","webpack:///../WCC.UI/App/components/topic/comment/creatorCover.ts","webpack:///../WCC.UI/App/components/topic/comment/doneCover.html?6d1b","webpack:///../WCC.UI/App/components/topic/comment/doneCover.ts","webpack:///../WCC.UI/App/components/topic/comment/editButton.html?85fd","webpack:///../WCC.UI/App/components/topic/comment/editButton.ts","webpack:///../WCC.UI/App/components/topic/comment/footer.html?906c","webpack:///../WCC.UI/App/components/topic/comment/footer.scss?578d","webpack:///../WCC.UI/App/components/topic/comment/footer.ts","webpack:///../WCC.UI/App/components/topic/comment/ideationApprovalControls.html?6998","webpack:///../WCC.UI/App/components/topic/comment/ideationApprovalControls.scss?c2bb","webpack:///../WCC.UI/App/components/topic/comment/ideationApprovalControls.ts","webpack:///../WCC.UI/App/components/topic/comment/ideationVoter.html?19eb","webpack:///../WCC.UI/App/components/topic/comment/ideationVoter.scss?c355","webpack:///../WCC.UI/App/components/topic/comment/ideationVoter.ts","webpack:///../WCC.UI/App/components/topic/comment/ideationVotesBubbles.html?329c","webpack:///../WCC.UI/App/components/topic/comment/ideationVotesBubbles.scss?4262","webpack:///../WCC.UI/App/components/topic/comment/ideationVotesBubbles.ts","webpack:///../WCC.UI/App/components/topic/comment/managers/todo.ts","webpack:///../WCC.UI/App/components/topic/comment/markAsDoneButton.html?6c10","webpack:///../WCC.UI/App/components/topic/comment/markAsDoneButton.scss?fdfd","webpack:///../WCC.UI/App/components/topic/comment/markAsDoneButton.ts","webpack:///../WCC.UI/App/components/topic/comment/ownerTags.html?6160","webpack:///../WCC.UI/App/components/topic/comment/ownerTags.scss?180f","webpack:///../WCC.UI/App/components/topic/comment/ownerTags.ts","webpack:///../WCC.UI/App/components/topic/comment/participants.html?1abb","webpack:///../WCC.UI/App/components/topic/comment/participants.scss?6def","webpack:///../WCC.UI/App/components/topic/comment/participants.ts","webpack:///../WCC.UI/App/components/topic/comment/pinButton.html?422c","webpack:///../WCC.UI/App/components/topic/comment/pinButton.ts","webpack:///../WCC.UI/App/components/topic/comment/refreshTranslationButton.html?e800","webpack:///../WCC.UI/App/components/topic/comment/refreshTranslationButton.ts","webpack:///../WCC.UI/App/components/topic/comment/removeButton.html?431f","webpack:///../WCC.UI/App/components/topic/comment/removeButton.ts","webpack:///../WCC.UI/App/components/topic/comment/removedCover.html?87c9","webpack:///../WCC.UI/App/components/topic/comment/removedCover.ts","webpack:///../WCC.UI/App/components/topic/comment/replies.html?2ab1","webpack:///../WCC.UI/App/components/topic/comment/replies.scss?7d39","webpack:///../WCC.UI/App/components/topic/comment/replies.ts","webpack:///../WCC.UI/App/components/topic/comment/reply.html?2c49","webpack:///../WCC.UI/App/components/topic/comment/reply.scss?aa21","webpack:///../WCC.UI/App/components/topic/comment/reply.ts","webpack:///../WCC.UI/App/components/topic/comment/reportAbuseButton.html?3740","webpack:///../WCC.UI/App/components/topic/comment/reportAbuseButton.ts","webpack:///../WCC.UI/App/components/topic/comment/requestButton.ts","webpack:///../WCC.UI/App/components/topic/comment/responseSetting.html?8280","webpack:///../WCC.UI/App/components/topic/comment/responseSetting.scss?2294","webpack:///../WCC.UI/App/components/topic/comment/responseSetting.ts","webpack:///../WCC.UI/App/components/topic/comment/settings.html?4460","webpack:///../WCC.UI/App/components/topic/comment/settings.scss?4e01","webpack:///../WCC.UI/App/components/topic/comment/settings.ts","webpack:///../WCC.UI/App/components/topic/comment/tags.html?d5f4","webpack:///../WCC.UI/App/components/topic/comment/tags.scss?186c","webpack:///../WCC.UI/App/components/topic/comment/tags.ts","webpack:///../WCC.UI/App/components/topic/comment/videoTools.html?97b9","webpack:///../WCC.UI/App/components/topic/comment/videoTools.scss?00da","webpack:///../WCC.UI/App/components/topic/comment/videoTools.ts","webpack:///../WCC.UI/App/components/topic/comment/visibilityTags.html?04fd","webpack:///../WCC.UI/App/components/topic/comment/visibilityTags.scss?55c0","webpack:///../WCC.UI/App/components/topic/comment/visibilityTags.ts","webpack:///../WCC.UI/App/components/topic/comment/visibleTo.html?c079","webpack:///../WCC.UI/App/components/topic/comment/visibleTo.scss?eb04","webpack:///../WCC.UI/App/components/topic/comment/visibleTo.ts","webpack:///../WCC.UI/App/decorators/componentModel.ts","webpack:///../WCC.UI/App/helpers/people.ts","webpack:///../WCC.UI/App/managers/discussion/people/tinyList.ts","webpack:///../WCC.UI/App/managers/discussion/translation.ts","webpack:///../WCC.UI/App/managers/ideation.ts","webpack:///../WCC.UI/App/managers/nodes/attributeTracker.ts","webpack:///../WCC.UI/App/managers/tags/topicPeople.ts","webpack:///../WCC.UI/App/managers/threadEditingOverlay.ts","webpack:///../WCC.UI/App/managers/topic/comment/replies.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/participants.ts","webpack:///../WCC.UI/App/managers/topic/votes.ts","webpack:///../WCC.UI/App/managers/videoPresentationProgress.ts","webpack:///../WCC.UI/App/models/participant.ts","webpack:///../WCC.UI/App/models/personTiny.ts","webpack:///../WCC.UI/App/models/threadVote.ts","webpack:///../WCC.UI/App/models/videoPresentationProgress.ts","webpack:///../WCC.UI/App/webpack/runtime/htmlExposer.js","webpack:///../WCC.UI/App/components/dropdowns/base/base.scss","webpack:///../WCC.UI/App/components/topic/comment/body.scss","webpack:///../WCC.UI/App/components/topic/comment/comment.scss","webpack:///../WCC.UI/App/components/topic/comment/content.scss","webpack:///../WCC.UI/App/components/topic/comment/creatorCover.scss","webpack:///../WCC.UI/App/components/topic/comment/footer.scss","webpack:///../WCC.UI/App/components/topic/comment/ideationApprovalControls.scss","webpack:///../WCC.UI/App/components/topic/comment/ideationVoter.scss","webpack:///../WCC.UI/App/components/topic/comment/ideationVotesBubbles.scss","webpack:///../WCC.UI/App/components/topic/comment/markAsDoneButton.scss","webpack:///../WCC.UI/App/components/topic/comment/ownerTags.scss","webpack:///../WCC.UI/App/components/topic/comment/participants.scss","webpack:///../WCC.UI/App/components/topic/comment/replies.scss","webpack:///../WCC.UI/App/components/topic/comment/reply.scss","webpack:///../WCC.UI/App/components/topic/comment/responseSetting.scss","webpack:///../WCC.UI/App/components/topic/comment/settings.scss","webpack:///../WCC.UI/App/components/topic/comment/tags.scss","webpack:///../WCC.UI/App/components/topic/comment/videoTools.scss","webpack:///../WCC.UI/App/components/topic/comment/visibilityTags.scss","webpack:///../WCC.UI/App/components/topic/comment/visibleTo.scss","webpack:///../WCC.UI/App/components/dropdowns/select/select.html","webpack:///../WCC.UI/App/components/topic/comment/abuseCover.html","webpack:///../WCC.UI/App/components/topic/comment/body.html","webpack:///../WCC.UI/App/components/topic/comment/clearAbuseReportButton.html","webpack:///../WCC.UI/App/components/topic/comment/comment.html","webpack:///../WCC.UI/App/components/topic/comment/content.html","webpack:///../WCC.UI/App/components/topic/comment/creatorCover.html","webpack:///../WCC.UI/App/components/topic/comment/doneCover.html","webpack:///../WCC.UI/App/components/topic/comment/editButton.html","webpack:///../WCC.UI/App/components/topic/comment/footer.html","webpack:///../WCC.UI/App/components/topic/comment/ideationApprovalControls.html","webpack:///../WCC.UI/App/components/topic/comment/ideationVoter.html","webpack:///../WCC.UI/App/components/topic/comment/ideationVotesBubbles.html","webpack:///../WCC.UI/App/components/topic/comment/markAsDoneButton.html","webpack:///../WCC.UI/App/components/topic/comment/ownerTags.html","webpack:///../WCC.UI/App/components/topic/comment/participants.html","webpack:///../WCC.UI/App/components/topic/comment/pinButton.html","webpack:///../WCC.UI/App/components/topic/comment/refreshTranslationButton.html","webpack:///../WCC.UI/App/components/topic/comment/removeButton.html","webpack:///../WCC.UI/App/components/topic/comment/removedCover.html","webpack:///../WCC.UI/App/components/topic/comment/replies.html","webpack:///../WCC.UI/App/components/topic/comment/reply.html","webpack:///../WCC.UI/App/components/topic/comment/reportAbuseButton.html","webpack:///../WCC.UI/App/components/topic/comment/responseSetting.html","webpack:///../WCC.UI/App/components/topic/comment/settings.html","webpack:///../WCC.UI/App/components/topic/comment/tags.html","webpack:///../WCC.UI/App/components/topic/comment/videoTools.html","webpack:///../WCC.UI/App/components/topic/comment/visibilityTags.html","webpack:///../WCC.UI/App/components/topic/comment/visibleTo.html"],"names":["api","content","__esModule","default","module","i","options","exports","locals","Dropdown","constructor","jsonModel","_jsonModel$Items","this","items","ko","observable","Items","unwrap","theme","flattenComputed","textSize","findItem","itemOrPredicate","_","isFunction","find","isObject","includes","DropdownVM","model","info","bodyNode","onBodyClick","m","e","$rowOrBody","$","target","closest","is","children","length","preventDefault","stopPropagation","isAlwaysShown","pureComputed","checkIfAlwaysShown","isVisible","applyBindingsToNode","element","__decorate","injectable","componentModel","__param","inject","wccModules","componentConfig","componentInfo","expose","SelectDropdown","data","_ref","_data$Disabled","_data$noDefault","_data$highlightActive","super","defaultValue","noDefault","undefined","first","selectedItem","disabled","Disabled","placeholder","container","hasCustomScroll","customScroll","highlightActiveItem","select","item","clear","SelectDropdownVM","effects","dropdownNode","isOpen","dropdown","headerNodes","templateNodes","filter","contents","itemNodes","isHeaderAllowed","hasMultipleItems","hasSingleItem","smartDropdownConfig","register","NodeAttributeTracker","node","hasClass","click","onClick","css","any","CommentAbuseCoverVM","config","ctx","labels","isBusy","undo","async","_this$comment","commentId","comment","id","Error","messages","InvalidRequest","commentsService","toggleAbuseReport","isDeleted","pluck","isReportedAsAbuse","title","mapNotNull","c","_c$parentId","parentId","YouHaveReportedThisReplyAsAbusive","YouHaveReportedThisCommentAsAbusive","servicesContext","components","preload","CommentBodyVM","storage","topicId","videoTemplate","getVideoTemplate","onlyContent","isCompact","compact","isModerator","get","CurrentUserManager","person","u","isTranscriptAllowed","isHeatMapPin","TopicManager","heatmapPinShown","pins","attachments","images","a","fileType","enums","AttachmentTypes","Image","value","videos","Video","audios","Audio","files","File","getPins","hasImages","hasAudios","hasFiles","hasVideos","hasAttachments","video","videoId","attachmentId","attachmentsService","queries","generateTranscript","ex","system","handleError","point","CommentClearAbuseReportButtonVM","CommentRequestButtonVM","clearAbuseReport","isLocked","userManager","discussionId","settings","user","taskManager","TaskManager","taskId","task","checkIfVisible","checkIfAllowedToShow","isHomework","spamComplaintCount","registerLocal","require","now","CommentVM","isRefreshingTranslation","ribbonLanguageClass","languageCode","footer","replyEditor","f","_replyEditorActive","isActive","replyEditorActive","_this$replyEditor","_this$replyEditor$oRe","_this$replyEditor$oRe2","oReplaySuggestionRef","openAiCompletionRef","cGenerationViewSelected","buttons","observableArray","avatarNode","titleNode","busy","checkIfBusy","strictComputed","name","getTheme","todoMode","editMode","extend","deferred","readMode","not","pinMode","disabledStylingMode","disableStyling","createDate","createDateStr","date","moment","locale","from","isEditing","editing","isResponseMandatory","isAbuse","isModeratorUser","isPrivate","isWhisper","isForSelectedParticipants","isForTaggedPeople","isPinned","initialRepliesCount","repliesCount","hasInitialReplies","maxHeight","headerType","header","creatorHeaderShown","titleHeaderShown","contentOnlyMode","participant","Person","fromThread","creatorName","p","nicknameOrName","status","getStatusText","isModeratorComment","isObserverComment","isObserver","isRegularComment","isRegular","topic","isIdeation","t","ideationManager","IdeationManager","isIdeationRankingStage","isRatingStage","isIdeationVotingStage","isVotingStage","hiddenControlsMode","hideControls","ideationVotesBubblesShown","ideationVoterShown","footerShown","todoManager","CommentToDoManager","isInToDoListOrReported","isInToDoList","isHeaderFieldsHovered","creatorCoverShown","commentEditorConfig","thread","focus","avatarConfig","footerConfig","isReady","checkIfShouldShowInlineEditor","threadEditingOverlay","edit","DOMHelpers","onNodeEvent","isNotNull","some","b","isSurvey","isCardSort","isCardScore","isVideoPresentation","isPinBoard","CommentResponseVM","_settings$translation","translationLabel","LanguageTranslationLabel","replace","translationLanguageName","trim","_this$comment$content","_this$comment2","hasContent","translatedContent","_this$comment$transla","_this$comment3","_this$comment$attachm","_this$comment4","cardsScoreAnswers","_this$comment$cardsSc","_this$comment5","isTranslationEditorShown","editTranslation","isTranslationAllowed","DiscussionTranslationManager","isTranslatedContentShown","translationEditorConfig","save","cancel","isAllowedToEdit","CommentCreatorCoverVM","active","avatarUrl","imageURL","isHovered","rateLimit","timeout","method","appearSettings","visible","isNeeded","toFlag","mouseenter","mouseleave","CommentDoneCoverVM","icon","threadEditInterval","CommentEditButtonVM","canEdit","checkIfCanBeEdited","discussionManager","DiscussionManager","discussion","simpleTopicManager","SimpleTopicManager","simpleTopic","topicManager","isRankingStage","IsModeratorIdea","threadType","ThreadTypes","isScreenRecording","isAudioRecording","isIdeationVote","canBeEdited","projectEditTimeout","editCommentTimeout","topicEditTimeout","editTimeout","timeCondition","before","DateHelpers","add","minutes","CommentFooterVM","hasReplies","showFooterControls","canAddNewReply","observerAccess","ObserverAccessTypes","CanComment","CanCommentAndModeratorNotified","replyEditorConfig","parentThread","CommentIdeationApprovalControlsVM","toggleApproval","UnknownError","isApproved","unapproveThread","approveThread","approvalTag","Tag","TagValue","IdeationApprovedTag","TagColor","ideationStage","IdeationStages","IdeaReview","CommentIdeationVoterVM","votesPickerContainer","ideationReady","votesManager","TopicVotesManager","loadingVotes","loading","voted","votes","v","threadId","voteEditorConfig","repliesShown","canVote","CommentIdeationVotesBubblesVM","inactiveMode","inactive","topicDownvotes","ideationDownvotes","upvotes","upvotesCount","downvotes","downvotesCount","total","hasDownvotes","isReported","isReply","hasNoInitialReplies","repliesView","replies","CommentRepliesManager","isEmpty","view","r","CommentMarkAsDoneButtonVM","checkIfCanBeMarkedDone","markAsDone","CommentOwnerTagsVM","anchor","inlineMode","inline","align","postedById","isModeratorOrObserver","participantTagsManager","PersonTagsManager","isLoadingTags","tags","tag","isHidden","hasTags","isAllowed","isRequired","isShown","onMouseEnter","onMouseLeave","withEffect","subscribe","noop","mapSingle","keepAliveOnly","hideTimeout","clearTimeout","setTimeout","CommentParticipantsVM","label","VisibleTo","commentParticipantsIDs","participantsManagerAccessor","getParticipantsManagerAccessor","participantsManager","allParticipants","isLoading","participants","_p$personId","personId","TinyPeopleListManager","MembershipStatusTypes","Member","sortKey","TopicParticipantsManager","CommentPinButtonVM","togglePinState","pin","isPinnableComment","canPin","CommentRefreshTranslationButtonVM","refreshTranslation","confirm","AreYouSureYouWantToRefreshThisTranslation","showInfoMessage","TheTranslationWillBeRefreshedSoon","translationManager","isAllowedToShow","CommentRemoveButtonVM","remove","AreYouSureYouWantToDeleteThisComment","lockOrSkip","canRemove","checkIfCanBeRemoved","canBeDeleted","discussionDeleteTimeout","deleteCommentTimeout","topicDeleteTimeout","deleteTimeout","CommentRemovedCoverVM","ReplyHasBeenDeleted","CommentHasBeenDeleted","CommentRepliesVM","hasNewReplies","syncReplies","clone","sortedReplies","areControlsHidden","userId","repliesManager","loadingReplies","allReplies","sortBy","reply","newReplies","difference","newRepliesCount","newRepliesCountStr","count","LoadNewReply","LoadNewReplies","toString","shouldAutoSync","currentNewReplies","currentUserId","when","then","CommentReplyVM","read","_this$reply$editing","_this$reply","write","_this$reply2","isModeratorReply","isObserverReply","currentUser","vote","hasVote","visibleToFullName","whisperText","_visibleToFullName","ModeratorsAndObservers","WCC","Labels","Private","_this$reply$spamCompl","_this$reply3","bodyShown","replyEditorShown","voteEditorShown","onCancel","onSave","CommentReportAbuseButtonVM","reportAbuse","lock","requestAnimationFrame","CommentResponseSettingVM","responseSettingSelect","Mandatory","toLowerCase","Optional","subscribeNotNull","changeResponseSetting","isMandatory","isStaging","CommentSettingsVM","isVisibleBySetting","isResponseSettingShown","checkIfShouldShowResponseSetting","CommentTagsVM","CommentVideoToolsVM","isGeneratingTranscript","post","CommentVisibilitTagsVM","commentVisibilityTagIDs","tagsManager","TopicPeopleTagsManager","_tag$contentTagId","contentTagId","CommentVisibleToVM","componentModelMetadataKey","Symbol","ctor","Reflect","defineMetadata","Moderator","toUpperCase","Observer","accountId","source","requestsProcessed","updating","queryData","MembershipStatusType","SortKey","CollectionDataSource","load","bind","update","mapper","jsonPerson","PersonTiny","people","list","peopleService","subscriptions","accountPeople","events","personChanged","on","onPersonChanged","discussionParticipantsTiny","toArrayPost","addArgs","background","firstOrDefaultPost","managerConfig","ui","isTranslationShown","translationLanguage","isRegularUser","stage","ideationUpvotes","personUpvotes","personDownvotes","usedUpvotes","reduce","availableUpvotes","usedDownvotes","availableDownvotes","hasUpvotes","IdeaRating","isDoneVoting","attribute","predicate","action","withEffects","$node","observer","MutationObserver","mutations","forEach","mutation","oldValue","observe","attributes","attributeOldValue","attributeFilter","disconnect","dispose","TagsManagerBase","addTag","jsonTag","removeTag","tagsService","topicPeopleTags","toArray","ThreadEditingOverlay","formEditorConfig","ActivityFormManager","isMobile","device","getEditorConfig","overlayManager","toOverlay","editorConfig","jsonThreads","editNextThreadIfAllowed","close","onClose","getInstance","whenNotNull","threadCreator","shouldContinue","allowContinuousSurveyEditing","commentsManager","CommentsManager","nextThread","getNextParticipantComment","comments","idx","indexOf","allPagesLoaded","loadMore","slice","extendedAppContainer","resolve","signalREvents","key","jsonThread","TopicThread","TopicThreadsEventsManager","newTopicReply","onNewReply","replyAdded","onLocalReplyAdded","replyUpdated","onLocalReplyUpdated","replyDeleted","onLocalReplyDeleted","commentReplies","map","getThread","important","firstOrDefault","parenThreadId","each","replyId","findSync","storageDefaults","storageIgnore","activityFormsInfoSets","views","classic","isInformationOnlyTopic","mobile","_ref2","canAddComment","_ref3","isExternalSurvey","_ref4","_ref5","isHeatMap","_ref6","_ref7","_ref8","_ref9","_ref10","isMultipleComments","_ref11","_ref12","_ref13","IdeaCreation","_ref14","isTextCommentsTopic","isMediaOnly","isDocumentsCollection","isVoxPop","observerCanPostComments","activityFormsPreviewInfoSets","activityFormsSet","form","forms","preview","overrides","toolsContainer","createExtendedContainerUsingEffects","userCommentsManager","CommentsView","mine","userComments","realComments","isLoadingComments","areUserCommentsLoaded","vpProgressManager","VideoPresentationProgressManager","isVPFinished","isFinished","ready","type","formViewConfig","getFormViewConfig","getFormEditorConfig","formConfigs","_set$views$type","checkIfCanAddComment","set","componentId","isString","commentsLimit","isAnswered","Participant","args","topicParticipants","topicsService","jsonVote","ThreadVote","vpOptions","videoPresentationOptions","EntityDataSource","progress","toEntity","jsonProgress","VideoPresentationProgress","isWatched","attemptNumber","preciseProgress","currentTopic","presentationType","VideoPresentationTypes","PresentationAndSurvey","_options$maxWatchAmou","maxWatchAmount","videoPresentationEvent","onLocalVideoPresentationEvent","getVideoPresentationProgress","eventData","Percent","inc","currentPosition","Seconds","_data$CommentsCount","_data$RepliesCount","_data$IsFollowed","_data$IsOnline","_data$IsModerator","_data$IsObserver","_data$TaskMemberTagId","PersonId","anonymousName","AnonymousName","fullName","FullName","firstName","FirstName","lastName","LastName","ImageURL","Status","sortOrder","SortOrder","commentsCount","CommentsCount","RepliesCount","isFollowed","IsFollowed","isOnline","IsOnline","IsModerator","IsObserver","taskMemberTagIds","TaskMemberTagIds","WCCEntity","json","createField","linkedThreadId","SystemHelpers","html","getTemplatesAndResources","document","head","appendChild","___CSS_LOADER_API_IMPORT___","push"],"mappings":"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","file":"92.636ee534d74b64bedf90.js","sourcesContent":["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!./base.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 componentModel from 'decorators/componentModel';\r\nimport { inject, injectable } from \"inversify\";\r\nimport { PureComputed, Subscribable, SubscribableOrNullableValue, SubscribableOrValue } from \"knockout\";\r\nimport { wccModules } from \"../../../enums/wccModules\";\r\nimport './base.scss';\r\n\r\nexport interface DropdownItem {\n title: Subscribable | string\r\n value: T\r\n header?: SubscribableOrNullableValue\r\n separate?: SubscribableOrNullableValue\r\n separateAfter?: SubscribableOrNullableValue\r\n}\n\nexport interface JSONDropdown {\n Items?: SubscribableOrValue>>\r\n items?: SubscribableOrValue>>\r\n theme?: DropdownTheme\r\n textSize?: DropdownTextSize\r\n}\n\nexport type DropdownItemOrPredicate = DropdownItem | ((item: DropdownItem) => boolean)\nexport type DropdownTheme = 'darkgrey' | 'black' | 'blue' | 'grey' | 'white';\nexport type DropdownTextSize = 'medium' | 'small' | 'extrasmall' | 'large';\n\nexport abstract class Dropdown {\n items: PureComputed>>\n theme: Subscribable\n textSize: Subscribable\n\n constructor(jsonModel?: JSONDropdown) {\r\n this.items = ko.observable(jsonModel?.Items ?? jsonModel?.items).unwrap().default([]);\r\n this.theme = ko.flattenComputed(jsonModel?.theme, 'darkgrey');\r\n this.textSize = ko.flattenComputed(jsonModel?.textSize, 'small');\r\n }\r\n\r\n protected findItem(itemOrPredicate: DropdownItemOrPredicate) {\r\n if (_.isFunction(itemOrPredicate))\r\n return this.items().find(itemOrPredicate);\r\n else if (_.isObject(itemOrPredicate) && this.items().includes(itemOrPredicate))\r\n return itemOrPredicate;\r\n\n return undefined;\r\n }\r\n}\n\n@injectable()\n@componentModel(Dropdown)\nexport default class DropdownVM {\n bodyNode = ko.observable();\n\n constructor(\r\n @inject(wccModules.componentConfig) model: Dropdown,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo\r\n ) {\r\n const isAlwaysShown = ko.pureComputed(() => this.checkIfAlwaysShown());\r\n const isVisible = ko.pureComputed(() => isAlwaysShown() || model.items().length > 0);\r\n\r\n ko.applyBindingsToNode(info.element, {\n 'visible': isVisible,\n\n 'css': {\n 'wcc-dropdown': true,\n 'wcc-dropdown--black': model.theme.is('black'),\n 'wcc-dropdown--blue': model.theme.is('blue'),\n 'wcc-dropdown--grey': model.theme.is('grey'),\n 'wcc-dropdown--white': model.theme.is('white'),\n 'wcc-dropdown--text-m': model.textSize.is('medium'),\n 'wcc-dropdown--text-xs': model.textSize.is('extrasmall'),\n 'wcc-dropdown--text-lg': model.textSize.is('large')\n }\n });\r\n }\r\n\r\n onBodyClick = (m: any, e: JQueryEventObject) => {\r\n const $target = $(e.target);\r\n const $rowOrBody = $target.closest('li, .dropdown-menu');\r\n\r\n let isClickable = $rowOrBody.is('li') && $rowOrBody.children('a').length > 0;\r\n\r\n if (!isClickable) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n }\r\n\r\n protected checkIfAlwaysShown() {\r\n return false;\r\n }\r\n}","define([\n \"!!../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./select.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 { SmartDropdownOptions } from \"extensions/knockout/bindings/smartDropdown\";\r\nimport { inject, injectable } from \"inversify\";\r\nimport { Observable, PureComputed, Subscribable, SubscribableOrNullableValue } from \"knockout\";\r\nimport NodeAttributeTracker from \"../../../managers/nodes/attributeTracker\";\r\nimport { EffectsContainer } from \"../../../mixins/withEffects\";\r\nimport DropdownVM, { Dropdown, DropdownItem, DropdownItemOrPredicate, JSONDropdown } from \"../base/base\";\r\nimport './select.html';\r\n\r\nexport interface JSONSelectDropdown extends JSONDropdown {\n Disabled?: boolean\n\n placeholder?: SubscribableOrNullableValue\n container?: SubscribableOrNullableValue\n customScroll?: SubscribableOrNullableValue\n\n noDefault?: boolean \r\n disabled?: boolean\r\n highlightActiveItem?: boolean\r\n}\n\nexport class SelectDropdown extends Dropdown {\n selectedItem: PureComputed | undefined>\n disabled: Observable \n\n placeholder: Subscribable\n container: Subscribable\n\n hasCustomScroll: Subscribable\n\n highlightActiveItem: boolean\n noDefault: boolean\n\n constructor(data?: JSONSelectDropdown) {\n super(data);\n\n const defaultValue = data?.noDefault === true ? undefined : this.items.first();\n\n this.selectedItem = ko.observable().default(defaultValue);\n this.disabled = ko.observable(data?.Disabled ?? data?.disabled ?? false);\n\n this.placeholder = ko.flattenComputed(data?.placeholder);\n this.container = ko.flattenComputed(data?.container);\n\n this.hasCustomScroll = ko.flattenComputed(data?.customScroll, false);\n\n this.noDefault = data?.noDefault ?? false;\n this.highlightActiveItem = data?.highlightActiveItem ?? false; \n }\n\n select(itemOrPredicate: DropdownItemOrPredicate) {\n let item = this.findItem(itemOrPredicate);\n\n if (item !== this.selectedItem())\n this.selectedItem(item);\n }\n\n clear() {\n this.selectedItem(undefined);\n }\n}\n\n@injectable()\nexport default class SelectDropdownVM extends DropdownVM {\n private dropdown: SelectDropdown\n\n dropdownNode = ko.observable();\n\n isOpen = ko.observable(false);\n\n headerNodes: JQuery\n itemNodes: JQuery\n\n highlightActiveItem: boolean\n\n items: Subscribable>\n selectedItem: PureComputed\n\n placeholder: Subscribable \n \n isHeaderAllowed: Subscribable\n hasMultipleItems: Subscribable\n hasSingleItem: Subscribable\n\n smartDropdownConfig: SmartDropdownOptions\n\n constructor(\r\n @inject(wccModules.componentConfig) model: SelectDropdown,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo,\r\n @inject(wccModules.effects) effects: EffectsContainer\r\n ) {\r\n super(model, info);\r\n\r\n this.dropdown = model;\r\n this.highlightActiveItem = model.highlightActiveItem;\r\n\r\n this.placeholder = model.placeholder;\r\n\r\n this.headerNodes = $(info.templateNodes).filter('select-head').contents();\n this.itemNodes = $(info.templateNodes).filter('select-item').contents();\r\n\r\n this.items = model.items;\n this.selectedItem = model.selectedItem;\r\n\r\n this.isHeaderAllowed = ko.pureComputed(() => this.dropdown.noDefault || this.selectedItem() != undefined);\r\n this.hasMultipleItems = ko.pureComputed(() => this.items().length > 1 || this.dropdown.noDefault);\r\n this.hasSingleItem = ko.pureComputed(() => this.items().length == 1 && !this.dropdown.noDefault);\r\n\r\n this.smartDropdownConfig = {\n container: model.container\r\n }\r\n\r\n effects.register((items, selectedItem) => {\r\n if (selectedItem != undefined && !items.includes(selectedItem))\r\n this.selectedItem(undefined);\r\n }, [this.items, this.selectedItem]);\r\n\r\n effects.register(new NodeAttributeTracker(this.dropdownNode, 'class', () => true, node => this.isOpen(node.hasClass('open'))));\r\n\r\n ko.applyBindingsToNode(info.element, {\n click: (m: any, e: JQueryEventObject) => this.onClick(e),\n\n css: {\n 'wcc-dropdown--custom-scroll': model.hasCustomScroll\r\n }\n });\r\n\r\n if (!_(this.headerNodes).any())\n this.headerNodes = $(`\n\n\n\n\n\n\n`);\n\n if (!_(this.itemNodes).any())\n this.itemNodes = $(''); \r\n }\r\n\r\n select = (itemOrPredicate: DropdownItemOrPredicate) => this.dropdown.select(itemOrPredicate)\r\n\r\n private onClick(e: JQueryEventObject) {\n if (this.dropdown.disabled()) {\n e.stopPropagation();\n e.preventDefault();\n }\n };\r\n}","define([\n \"!!../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./abuseCover.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 { TopicThread } from 'models/topicThread';\r\nimport { ServicesContext } from 'services/context';\r\nimport './abuseCover.html';\r\n\r\nexport interface CommentAbuseCoverVMConfig {\r\n comment: SubscribableOrNullableValue\r\n}\r\n\r\n@injectable()\r\nexport default class CommentAbuseCoverVM {\r\n private comment: Subscribable\r\n\r\n labels = labels\r\n\r\n title: Subscribable\r\n isBusy = ko.observable(false);\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) config: CommentAbuseCoverVMConfig,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo,\r\n @inject(wccModules.servicesContext) private ctx: ServicesContext\r\n ) {\r\n this.comment = ko.flattenComputed(config.comment);\r\n const isDeleted = this.comment.pluck('isDeleted', false);\r\n const isReportedAsAbuse = this.comment.pluck('isReportedAsAbuse', false);\r\n\r\n this.title = this.comment.mapNotNull(c => (c.parentId() ?? '').length > 0 ? labels.YouHaveReportedThisReplyAsAbusive : labels.YouHaveReportedThisCommentAsAbusive).default('');\r\n\r\n const isVisible = ko.pureComputed(() => !isDeleted() && isReportedAsAbuse());\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'visible': isVisible,\r\n\r\n 'css': {\r\n 'wcc-dark-cover': true\r\n }\r\n }, this);\r\n }\r\n\r\n undo = async () => {\r\n const commentId = this.comment()?.id();\r\n\r\n try {\r\n if (commentId == undefined)\r\n throw new Error(messages.InvalidRequest);\r\n\r\n this.isBusy(true);\r\n\r\n await this.ctx.commentsService.toggleAbuseReport(commentId);\r\n } finally {\r\n this.isBusy(false);\r\n }\r\n }\r\n}","define([\n \"!!../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./body.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!./body.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 { 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 WCCAudio from 'models/attachments/audio';\r\nimport WCCFile from 'models/attachments/file';\r\nimport WCCImage from 'models/attachments/image';\r\nimport WCCVideo from 'models/attachments/video';\r\nimport { TopicThread } from 'models/topicThread';\r\nimport { ServicesContext } from 'services/context';\r\nimport './body.html';\r\nimport './body.scss';\r\n\r\ncomponents.preload('photoset-new', 'grid-new', 'wcc-file', 'wcc-video', 'wcc-audio', 'wcc-heatmap', 'attachment-controls', 'wcc-list', 'attachment-transcript');\r\n\r\nexport interface CommentBodyVMConfig {\r\n comment: SubscribableOrNullableValue\r\n onlyContent: SubscribableOrNullableValue\r\n compact: SubscribableOrNullableValue\r\n}\r\n\r\n@injectable()\r\nexport default class CommentBodyVM {\r\n labels = labels \r\n\r\n comment: Subscribable\r\n commentId: Subscribable\r\n topicId: Subscribable\r\n videoTemplate: Subscribable\r\n\r\n hasImages: Subscribable\r\n hasAudios: Subscribable\r\n hasFiles: Subscribable\r\n hasAttachments: Subscribable\r\n heatmapPinShown: Subscribable\r\n isCompact: Subscribable\r\n isTranscriptAllowed: Subscribable\r\n\r\n images: Subscribable>\r\n files: Subscribable>\r\n videos: Subscribable>\r\n audios: Subscribable>\r\n pins: Subscribable> \r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) config: CommentBodyVMConfig,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo,\r\n @inject(wccModules.storage) storage: IWCCStorageManager,\r\n @inject(wccModules.servicesContext) private ctx: ServicesContext\r\n ) {\r\n this.comment = ko.flattenComputed(config.comment);\r\n\r\n this.commentId = this.comment.pluck('id');\r\n this.topicId = this.comment.pluck('topicId');\r\n this.videoTemplate = ko.pureComputed(() => this.getVideoTemplate());\r\n\r\n const onlyContent = ko.flattenComputed(config.onlyContent, false);\r\n this.isCompact = ko.flattenComputed(config.compact, false);\r\n\r\n const userManager = storage.get(CurrentUserManager, {});\r\n const user = userManager.pluck(m => m.person);\r\n const isModerator = user.pluck(u => u.isModerator, false);\r\n this.isTranscriptAllowed = ko.pureComputed(() => isModerator());\r\n\r\n const topicManager = storage.get(TopicManager, { topicId: this.topicId });\r\n const topic = topicManager.pluck('topic');\r\n const isHeatMapPin = topic.pluck('isHeatMap', false);\r\n\r\n this.heatmapPinShown = ko.pureComputed(() => !onlyContent() && isHeatMapPin() && this.pins().length > 0); \r\n\r\n const attachments = this.comment.pluck(c => c.attachments, []);\r\n this.images = attachments.filter(a => a.fileType() == enums.AttachmentTypes.Image.value);\r\n this.videos = attachments.filter(a => a.fileType() == enums.AttachmentTypes.Video.value);\r\n this.audios = attachments.filter(a => a.fileType() == enums.AttachmentTypes.Audio.value);\r\n this.files = attachments.filter(a => a.fileType() == enums.AttachmentTypes.File.value);\r\n\r\n this.pins = ko.pureComputed(() => this.getPins());\r\n\r\n this.hasImages = this.images.any();\r\n this.hasAudios = this.audios.any();\r\n this.hasFiles = this.files.any();\r\n const hasVideos = this.videos.any();\r\n this.hasAttachments = ko.pureComputed(() => this.hasImages() || hasVideos() || this.hasAudios() || this.hasFiles());\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'css': {\r\n 'comment-body': true,\r\n 'comment-body--compact': this.isCompact\r\n }\r\n });\r\n }\r\n\r\n async generateTranscript(video: any) {\r\n try {\r\n const commentId = this.comment()?.id();\r\n const videoId = video.attachmentId();\r\n\r\n if (commentId == undefined || videoId == undefined)\r\n throw new Error(messages.InvalidRequest);\r\n\r\n await this.ctx.attachmentsService.queries.generateTranscript(commentId, videoId);\r\n } catch (ex) {\r\n system.handleError(ex);\r\n }\r\n }\r\n\r\n private getPins() {\r\n const comment = this.comment();\r\n\r\n if (comment != undefined && comment.point() != undefined)\r\n return [comment];\r\n\r\n return [];\r\n }\r\n\r\n private getVideoTemplate() {\r\n //const user = this.user();\r\n //const isModerator = user?.isModerator() ?? false;\r\n\r\n //if (isModerator)\r\n // return 'wcc-components-comment-content-video-with-tools';\r\n\r\n return 'wcc-components-comment-content-video';\r\n }\r\n}","define([\n \"!!../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./clearAbuseReportButton.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 } from 'knockout';\r\nimport { CurrentUserManager } from 'managers/currentUser';\r\nimport { IWCCStorageManager } from 'managers/iStorage';\r\nimport { Person } from 'models/person';\r\nimport { ServicesContext } from 'services/context';\r\nimport './clearAbuseReportButton.html';\r\nimport CommentRequestButtonVM, { CommentRequestButtonVMConfig } from './requestButton';\r\nimport TaskManager from \"../../../managers/task\";\r\nimport Task from \"../../../models/task\";\r\n\r\n@injectable()\r\nexport default class CommentClearAbuseReportButtonVM extends CommentRequestButtonVM {\r\n user: Subscribable\r\n task: Subscribable\r\n \r\n constructor(\r\n @inject(wccModules.componentConfig) config: CommentRequestButtonVMConfig,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo,\r\n @inject(wccModules.servicesContext) private ctx: ServicesContext,\r\n @inject(wccModules.storage) storage: IWCCStorageManager\r\n ) {\r\n super(config, info);\r\n\r\n const userManager = storage.get(CurrentUserManager, { discussionId: settings.discussionId });\r\n this.user = userManager.pluck('person');\r\n\r\n const taskManager = storage.get(TaskManager, { taskId: settings.discussionId });\r\n this.task = taskManager.pluck(m => m.task);\r\n }\r\n\r\n clearAbuseReport = async () => {\r\n if (this.isLocked()) return;\r\n\r\n const commentId = this.comment()?.id();\r\n\r\n try {\r\n if (commentId == undefined)\r\n throw new Error(messages.InvalidRequest);\r\n\r\n this.isBusy(true);\r\n\r\n await this.ctx.commentsService.clearAbuseReport(commentId);\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 protected override checkIfVisible() {\r\n return super.checkIfVisible() && this.checkIfAllowedToShow();\r\n }\r\n\r\n private checkIfAllowedToShow() {\r\n const user = this.user();\r\n const comment = this.comment();\r\n const task = this.task();\r\n\r\n if (user == undefined || task == undefined || comment == undefined)\r\n return false;\r\n \r\n if (task.isHomework())\r\n return false;\r\n \r\n return user.isModerator() && comment.spamComplaintCount() > 0;\r\n }\r\n}","define([\n \"!!../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./comment.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!./comment.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 { TextThreadEditorVMConfig } from 'components/editors/thread/text/textThread';\r\nimport { wccModules } from 'enums/wccModules';\r\nimport { DOMHelpers } from 'helpers/dom';\r\nimport { getStatusText } from 'helpers/people';\r\nimport { inject, injectable } from 'inversify';\r\nimport { Observable, ObservableArray, 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 threadEditingOverlay from 'managers/threadEditingOverlay';\r\nimport { TopicManager } from 'managers/topic';\r\nimport { EffectsContainer } from 'mixins/withEffects';\r\nimport { Person } from 'models/person';\r\nimport { Topic } from 'models/topic';\r\nimport { TopicThread } from 'models/topicThread';\r\nimport { PersonAvatarVMConfig } from '../../avatar/person/person';\r\nimport './comment.html';\r\nimport './comment.scss';\r\nimport CommentFooterVM, { CommentFooterVMConfig } from './footer';\r\nimport CommentToDoManager from './managers/todo';\r\nimport CommentRequestButtonVM from './requestButton';\r\n\r\ncomponents\r\n .registerLocal('comment-abuse-cover', () => require('./abuseCover'))\r\n .registerLocal('comment-body', () => require('./body'))\r\n .registerLocal('comment-content', () => require('./content'))\r\n .registerLocal('comment-clear-abuse-report-button', () => require('./clearAbuseReportButton'))\r\n .registerLocal('comment-creator-cover', () => require('./creatorCover'))\r\n .registerLocal('comment-done-cover', () => require('./doneCover'))\r\n .registerLocal('comment-edit-button', () => require('./editButton'))\r\n .registerLocal('comment-footer', () => require('./footer'))\r\n .registerLocal('comment-ideation-approval-controls', () => require('./ideationApprovalControls'))\r\n .registerLocal('comment-ideation-votes-bubbles', () => require('./ideationVotesBubbles'))\r\n .registerLocal('comment-ideation-voter', () => require('./ideationVoter'))\r\n .registerLocal('comment-mark-as-done-button', () => require('./markAsDoneButton'))\r\n .registerLocal('comment-owner-tags', () => require('./ownerTags'))\r\n .registerLocal('comment-participants', () => require('./participants'))\r\n .registerLocal('comment-pin-button', () => require('./pinButton'))\r\n .registerLocal('comment-refresh-translation-button', () => require('./refreshTranslationButton'))\r\n .registerLocal('comment-remove-button', () => require('./removeButton'))\r\n .registerLocal('comment-removed-cover', () => require('./removedCover'))\r\n .registerLocal('comment-replies', () => require('./replies'))\r\n .registerLocal('comment-reply', () => require('./reply'))\r\n .registerLocal('comment-report-abuse-button', () => require('./reportAbuseButton'))\r\n .registerLocal('comment-response-setting', () => require('./responseSetting'))\r\n .registerLocal('comment-settings', () => require('./settings'))\r\n .registerLocal('comment-tags', () => require('./tags'))\r\n .registerLocal('comment-video-tools', () => require('./videoTools'))\r\n .registerLocal('comment-visibility-tags', () => require('./visibilityTags'))\r\n .registerLocal('comment-visible-to', () => require('./visibleTo'))\r\n .preload('comment-editor-inline', 'reply-editor-standalone', 'reply-suggestion', 'open-ai-completion', 'person-avatar');\r\n\r\nconst { discussionId, now } = settings;\r\n\r\nexport type CommentVMTheme = 'main' | 'compact';\r\nexport type CommentVMHeader = 'creator' | 'title';\r\n\r\nexport interface CommentVMConfig {\r\n comment?: SubscribableOrNullableValue\r\n todoMode?: SubscribableOrNullableValue\r\n pinMode?: SubscribableOrNullableValue\r\n disableStyling: SubscribableOrNullableValue\r\n hideControls?: SubscribableOrNullableValue\r\n onlyContent?: SubscribableOrNullableValue\r\n maxHeight?: SubscribableOrNullableValue\r\n theme?: SubscribableOrNullableValue\r\n header?: SubscribableOrNullableValue\r\n}\r\n\r\n@injectable()\r\nexport default class CommentVM {\r\n private isRegularComment: Subscribable\r\n private isRefreshingTranslation = ko.observable(false);\r\n\r\n labels = labels;\r\n messages = messages;\r\n\r\n ribbonLanguageClass = `wcc-ribbon--${settings.languageCode}`\r\n\r\n commentEditorConfig: TextThreadEditorVMConfig\r\n avatarConfig: PersonAvatarVMConfig\r\n\r\n footerConfig: CommentFooterVMConfig\r\n footer: Observable = ko.observable();\r\n replyEditor = this.footer.pluck(f => f.replyEditor);\r\n _replyEditorActive = this.replyEditor.pluck(e => e.isActive, false);\r\n replyEditorActive = ko.pureComputed(() => this._replyEditorActive() \r\n && this.replyEditor()?.oReplaySuggestionRef()?.openAiCompletionRef()?.cGenerationViewSelected() != true);\r\n\r\n buttons: ObservableArray = ko.observableArray();\r\n\r\n avatarNode = ko.observable();\r\n titleNode = ko.observable();\r\n \r\n comment: Subscribable\r\n id: Subscribable\r\n topicId: Subscribable\r\n title: Subscribable\r\n creatorName: Subscribable\r\n createDateStr: Subscribable\r\n status: Subscribable\r\n \r\n hasInitialReplies: Subscribable\r\n\r\n maxHeight: Subscribable\r\n\r\n creatorHeaderShown: Subscribable\r\n titleHeaderShown: Subscribable\r\n footerShown: Subscribable\r\n ideationVoterShown: Subscribable\r\n creatorCoverShown: Subscribable\r\n hideControls: Subscribable\r\n ideationVotesBubblesShown: Subscribable\r\n onlyContent: Subscribable\r\n\r\n busy = ko.pureComputed(() => this.checkIfBusy()); \r\n\r\n todoMode: Subscribable\r\n\r\n editMode: Observable\r\n readMode: Subscribable\r\n \r\n isPrivate: Subscribable\r\n isAbuse: Subscribable\r\n isResponseMandatory: Subscribable\r\n isInToDoList: Subscribable\r\n isIdeation: Subscribable\r\n isEditing: Subscribable\r\n isReady: Subscribable\r\n \r\n constructor(\r\n @inject(wccModules.componentConfig) config: CommentVMConfig,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo,\r\n @inject(wccModules.storage) storage: IWCCStorageManager,\r\n @inject(wccModules.effects) effects: EffectsContainer\r\n ) {\r\n const theme = ko.strictComputed(name => this.getTheme(name), [config.theme]);\r\n\r\n this.todoMode = ko.flattenComputed(config.todoMode, false);\r\n this.editMode = ko.observable(false).extend({ deferred: true });\r\n this.readMode = this.editMode.not();\r\n const pinMode = ko.flattenComputed(config.pinMode, false);\r\n const disabledStylingMode = ko.flattenComputed(config.disableStyling, false);\r\n const disableStyling = ko.pureComputed(() => pinMode() || disabledStylingMode());\r\n\r\n this.comment = ko.flattenComputed(config.comment);\r\n this.id = this.comment.pluck(c => c.id);\r\n this.topicId = this.comment.pluck(c => c.topicId);\r\n this.title = this.comment.pluck(c => c.title);\r\n const createDate = this.comment.pluck(c => c.createDate); \r\n this.createDateStr = createDate.mapNotNull(date => moment(date).locale(settings.languageCode).from(now())); \r\n this.isEditing = this.comment.pluck(c => c.editing, false);\r\n this.isResponseMandatory = this.comment.pluck(c => c.isResponseMandatory, false); \r\n const spamComplaintCount = this.comment.pluck(c => c.spamComplaintCount, 0);\r\n this.isAbuse = ko.pureComputed(() => spamComplaintCount() > 0 && isModeratorUser());\r\n this.isPrivate = this.comment.pluck(c => c.isWhisper() || c.isForSelectedParticipants() || c.isForTaggedPeople(), false);\r\n const isPinned = this.comment.pluck(c => c.isPinned, false);\r\n\r\n const initialRepliesCount = this.comment.pluck(c => c.repliesCount, 0);\r\n this.hasInitialReplies = initialRepliesCount.pluck(c => c > 0);\r\n\r\n this.maxHeight = ko.strictComputed(target => {\r\n if (target != undefined && target > 0)\r\n return target;\r\n }, [config.maxHeight]);\r\n\r\n const headerType = ko.flattenComputed(config.header, 'creator');\r\n this.creatorHeaderShown = headerType.is('creator');\r\n this.titleHeaderShown = headerType.is('title');\r\n \r\n const isDeleted = this.comment.pluck(c => c.isDeleted, false);\r\n\r\n const contentOnlyMode = ko.flattenComputed(config.onlyContent, false);\r\n this.onlyContent = ko.pureComputed(() => pinMode() || contentOnlyMode()); \r\n\r\n const currentUserManager = storage.get(CurrentUserManager, { discussionId });\r\n const user = currentUserManager.pluck('person');\r\n const isModeratorUser = user.pluck(u => u.isModerator, false);\r\n\r\n const participant = this.comment.mapNotNull(comment => Person.fromThread(comment));\r\n this.creatorName = participant.pluck(p => p.nicknameOrName);\r\n this.status = participant.mapNotNull(getStatusText);\r\n const isModeratorComment = participant.pluck(p => p.isModerator, false);\r\n const isObserverComment = participant.pluck(p => p.isObserver, false);\r\n this.isRegularComment = participant.pluck(p => p.isRegular, false);\r\n \r\n const topicManager = storage.get(TopicManager, { topicId: this.topicId });\r\n const topic = topicManager.pluck('topic');\r\n this.isIdeation = topic.pluck(t => t.isIdeation, false);\r\n\r\n const ideationManager = storage.get(IdeationManager, { topicId: this.topicId });\r\n const isIdeationRankingStage = ideationManager.pluck(m => m.isRatingStage, false);\r\n const isIdeationVotingStage = ideationManager.pluck(m => m.isVotingStage, false);\r\n\r\n const hiddenControlsMode = ko.flattenComputed(config.hideControls, false);\r\n this.hideControls = ko.pureComputed(() => pinMode() || hiddenControlsMode() || isDeleted());\r\n\r\n this.ideationVotesBubblesShown = ko.pureComputed(() => isIdeationRankingStage() && !isIdeationVotingStage());\r\n\r\n this.ideationVoterShown = isIdeationVotingStage;\r\n this.footerShown = this.ideationVoterShown.not();\r\n\r\n const todoManager = new CommentToDoManager(this.comment, storage);\r\n const isInToDoListOrReported = todoManager.isInToDoListOrReported;\r\n this.isInToDoList = todoManager.isInToDoList;\r\n\r\n const isHeaderFieldsHovered = ko.observable(false);\r\n this.creatorCoverShown = ko.pureComputed(() => isHeaderFieldsHovered());\r\n\r\n this.commentEditorConfig = { thread: this.comment, focus: true }\r\n this.avatarConfig = { person: participant }\r\n\r\n this.footerConfig = {\r\n comment: this.comment,\r\n buttons: this.buttons,\r\n pinMode,\r\n onlyContent: this.onlyContent,\r\n hideControls: this.hideControls,\r\n busy: this.busy\r\n }\r\n\r\n this.isReady = ko.pureComputed(() => {\r\n return this.comment() != undefined &&\r\n participant() != undefined &&\r\n user() != undefined &&\r\n topic() != undefined;\r\n });\r\n\r\n effects.register((topic, comment, isEditing) => {\r\n this.editMode(false);\r\n\r\n if (topic != undefined && comment != undefined && isEditing) {\r\n const shouldShowInlineEditor = this.checkIfShouldShowInlineEditor(topic);\r\n\r\n if (shouldShowInlineEditor)\r\n this.editMode(true);\r\n else\r\n threadEditingOverlay.edit(comment);\r\n }\r\n }, [topic, this.comment, this.isEditing]);\r\n\r\n effects.register((isModerator, node) => {\r\n if (isModerator && node != undefined)\r\n return [\r\n DOMHelpers.onNodeEvent(node, 'mouseenter', () => isHeaderFieldsHovered(true)),\r\n DOMHelpers.onNodeEvent(node, 'mouseleave', () => isHeaderFieldsHovered(false))\r\n ]\r\n }, [isModeratorUser, this.titleNode]);\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'visible': this.isReady,\r\n\r\n 'css': {\r\n 'topic__comment': true,\r\n 'topic__comment--moderator': ko.pureComputed(() => !disableStyling() && !this.isIdeation() && isModeratorComment()),\r\n 'topic__comment--observer': ko.pureComputed(() => !disableStyling() && isObserverComment()),\r\n 'topic__comment--private': ko.pureComputed(() => !disableStyling() && this.isPrivate()),\r\n 'topic__comment--todo': ko.pureComputed(() => !disableStyling() && isInToDoListOrReported()),\r\n 'topic__comment--abuse': ko.pureComputed(() => !disableStyling() && this.isAbuse()),\r\n 'topic__comment--response-mandatory': ko.pureComputed(() => !disableStyling() && this.isResponseMandatory()),\r\n 'topic__comment--limited': this.maxHeight.isNotNull(),\r\n 'topic__comment--pinned': isPinned\r\n }\r\n });\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'css': theme\r\n }, this);\r\n }\r\n\r\n private checkIfBusy() {\r\n return this.isRefreshingTranslation() || this.buttons().some(b => b.isBusy());\r\n }\r\n\r\n private checkIfShouldShowInlineEditor(topic: Topic) {\r\n if (topic.isSurvey() || topic.isCardSort() || topic.isCardScore() || topic.isVideoPresentation() || topic.isPinBoard())\r\n return !this.isRegularComment();\r\n\r\n return true;\r\n } \r\n\r\n private getTheme(name?: CommentVMTheme) {\r\n switch (name) {\r\n case 'compact': return 'topic__comment--compact';\r\n }\r\n } \r\n}","define([\n \"!!../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./content.html\", \n \"!../../../webpack/runtime/htmlExposer.js\"], function (content, expose) {\n content = content.__esModule ? content.default : content;\n expose(content);\n return content;\n });","var api = require(\"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./content.scss\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","import { ThreadTranslationEditorVMConfig } from 'components/editors/threadTranslation/threadTranslation';\r\nimport { wccModules } from 'enums/wccModules';\r\nimport { inject, injectable } from 'inversify';\r\nimport { PureComputed, Subscribable, SubscribableOrNullableValue } from 'knockout';\r\nimport { CurrentUserManager } from 'managers/currentUser';\r\nimport DiscussionTranslationManager from 'managers/discussion/translation';\r\nimport { IWCCStorageManager } from 'managers/iStorage';\r\nimport { TopicThread } from 'models/topicThread';\r\nimport './content.html';\r\nimport './content.scss';\r\n\r\ncomponents.preload('wcc-content', 'thread-translation-editor');\r\n\r\nexport interface CommentResponseVMConfig {\r\n comment: SubscribableOrNullableValue\r\n compact: SubscribableOrNullableValue\r\n}\r\n\r\n@injectable()\r\nexport default class CommentResponseVM {\r\n private comment: Subscribable\r\n\r\n labels = labels\r\n translationLabel = labels.LanguageTranslationLabel.replace(\"{0}\", settings.translationLanguageName ?? '').trim();\r\n\r\n topicId = ko.pureComputed(() => this.comment()?.topicId())\r\n\r\n content = ko.pureComputed(() => this.comment()?.content() ?? '')\r\n hasContent = ko.pureComputed(() => this.content().length > 0)\r\n\r\n translatedContent = ko.pureComputed(() => this.comment()?.translatedContent() ?? '')\r\n isTranslatedContentShown: Subscribable\r\n\r\n attachments = ko.pureComputed(() => this.comment()?.attachments() ?? [])\r\n cardsScoreAnswers = ko.pureComputed(() => this.comment()?.cardsScoreAnswers() ?? [])\r\n\r\n translationEditorConfig: ThreadTranslationEditorVMConfig\r\n isTranslationEditorShown = ko.observable(false)\r\n\r\n isAllowedToEdit: Subscribable\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) config: CommentResponseVMConfig,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo,\r\n @inject(wccModules.storage) storage: IWCCStorageManager\r\n ) {\r\n this.comment = ko.flattenComputed(config.comment);\r\n\r\n const translationManager = storage.get(DiscussionTranslationManager, { discussionId: settings.discussionId });\r\n const isTranslationAllowed = translationManager.pluck('isAllowedToShow', false);\r\n\r\n this.isTranslatedContentShown = ko.pureComputed(() => isTranslationAllowed() && this.translatedContent().length > 0);\r\n\r\n this.translationEditorConfig = {\r\n thread: this.comment,\r\n save: () => this.isTranslationEditorShown(false),\r\n cancel: () => this.isTranslationEditorShown(false)\r\n }\r\n\r\n const userManager = storage.get(CurrentUserManager, { discussionId: settings.discussionId });\r\n const user = userManager.pluck('person');\r\n this.isAllowedToEdit = user.pluck('isModerator', false);\r\n\r\n const isCompact = ko.flattenComputed(config.compact, false);\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'css': {\r\n 'comment-content': true,\r\n 'comment-content--compact': isCompact\r\n }\r\n }, this);\r\n }\r\n\r\n editTranslation = () => {\r\n this.isTranslationEditorShown(true);\r\n }\r\n}","define([\n \"!!../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./creatorCover.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!./creatorCover.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 { AppearBindingOptions } from 'extensions/knockout/bindings/appear';\r\nimport { inject, injectable } from 'inversify';\r\nimport { Subscribable, SubscribableOrNullableValue } from 'knockout';\r\nimport { IWCCStorageManager } from 'managers/iStorage';\r\nimport { Person } from 'models/person';\r\nimport { TopicThread } from 'models/topicThread';\r\nimport './creatorCover.html';\r\nimport './creatorCover.scss';\r\n\r\nconst { now } = settings;\r\nconst animationDuration = 500;\r\n\r\nexport interface CommentCreatorCoverVMConfig {\r\n comment: SubscribableOrNullableValue\r\n active: SubscribableOrNullableValue\r\n}\r\n\r\n@injectable()\r\nexport default class CommentCreatorCoverVM {\r\n comment: Subscribable\r\n\r\n avatarUrl: Subscribable\r\n creatorName: Subscribable\r\n createDateStr: Subscribable\r\n\r\n appearSettings: AppearBindingOptions\r\n\r\n isNeeded: Subscribable\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) config: CommentCreatorCoverVMConfig,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo,\r\n @inject(wccModules.storage) storage: IWCCStorageManager\r\n ) {\r\n this.comment = ko.flattenComputed(config.comment);\r\n const isActive = ko.flattenComputed(config.active, false);\r\n\r\n const createDate = this.comment.pluck(c => c.createDate);\r\n this.createDateStr = createDate.mapNotNull(date => moment(date).from(now())); \r\n\r\n const participant = this.comment.mapNotNull(comment => Person.fromThread(comment));\r\n this.avatarUrl = participant.pluck(p => p.imageURL);\r\n this.creatorName = participant.pluck(p => p.nicknameOrName); \r\n\r\n const isHovered = ko.observable(false);\r\n const isVisible = ko.pureComputed(() => isActive() || isHovered()).extend({ rateLimit: { timeout: 150, method: 'notifyWhenChangesStop' } });\r\n\r\n this.appearSettings = { visible: isVisible, 'show-animation': 'slideInDown', 'hide-animation': 'slideOutUp', 'duration': animationDuration };\r\n\r\n this.isNeeded = isVisible.toFlag();\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'appear': {\r\n 'visible': isVisible,\r\n 'show-animation': 'none',\r\n 'hide-animation': 'none',\r\n 'duration': animationDuration\r\n },\r\n\r\n 'css': {\r\n 'topic__comment__creator-cover': true,\r\n },\r\n\r\n 'event': {\r\n 'mouseenter': () => isHovered(true),\r\n 'mouseleave': () => isHovered(false)\r\n }\r\n }, this);\r\n }\r\n}","define([\n \"!!../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./doneCover.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 { SubscribableOrNullableValue } from 'knockout';\r\nimport { IWCCStorageManager } from 'managers/iStorage';\r\nimport { TopicThread } from 'models/topicThread';\r\nimport './doneCover.html';\r\nimport CommentToDoManager from './managers/todo';\r\n\r\nexport interface CommentDoneCoverVMConfig {\r\n comment: SubscribableOrNullableValue\r\n todoMode: SubscribableOrNullableValue\r\n}\r\n\r\n@injectable()\r\nexport default class CommentDoneCoverVM {\r\n labels = labels\r\n icon = 'fas fa-check'\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) config: CommentDoneCoverVMConfig,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo,\r\n @inject(wccModules.storage) storage: IWCCStorageManager\r\n ) {\r\n const comment = ko.flattenComputed(config.comment);\r\n const todoMode = ko.flattenComputed(config.todoMode, false);\r\n\r\n const todoManager = new CommentToDoManager(comment, storage);\r\n const isInToDoList = todoManager.isInToDoList;\r\n\r\n const isVisible = ko.pureComputed(() => todoMode() && !isInToDoList());\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'visible': isVisible,\r\n\r\n 'css': {\r\n 'wcc-dark-cover': true\r\n }\r\n }, this);\r\n }\r\n}","define([\n \"!!../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./editButton.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 { CurrentUserManager } from 'managers/currentUser';\r\nimport IdeationManager from 'managers/ideation';\r\nimport { IWCCStorageManager } from 'managers/iStorage';\r\nimport SimpleTopicManager from 'managers/simpleTopic';\r\nimport { TopicManager } from 'managers/topic';\r\nimport { SimpleTopic } from 'models/simpleTopic';\r\nimport { Topic } from 'models/topic';\r\nimport { TopicThread } from 'models/topicThread';\r\nimport { DateHelpers } from '../../../helpers/date';\r\nimport DiscussionManager from '../../../managers/discussion';\r\nimport Discussion from '../../../models/discussion';\r\nimport './editButton.html';\r\n\r\nconst { discussionId, threadEditInterval, now } = settings;\r\n\r\nexport interface CommentEditButtonVMConfig {\r\n comment: SubscribableOrNullableValue\r\n}\r\n\r\n@injectable()\r\nexport default class CommentEditButtonVM {\r\n private discussion: Subscribable\r\n private simpleTopic: Subscribable\r\n private topic: Subscribable\r\n private comment: Subscribable\r\n private canEdit: Subscribable\r\n private isModeratorUser: Subscribable\r\n private isRankingStage: Subscribable\r\n private isVotingStage: Subscribable\r\n\r\n labels = labels;\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) config: CommentEditButtonVMConfig,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo,\r\n @inject(wccModules.storage) storage: IWCCStorageManager\r\n ) {\r\n this.comment = ko.flattenComputed(config.comment);\r\n this.canEdit = ko.flattenComputed(() => this.checkIfCanBeEdited());\r\n\r\n const topicId = this.comment.pluck(c => c.topicId);\r\n\r\n const currentUserManager = storage.get(CurrentUserManager, { discussionId });\r\n const user = currentUserManager.pluck('person');\r\n this.isModeratorUser = user.pluck(u => u.isModerator, false);\r\n\r\n const discussionManager = storage.get(DiscussionManager, { discussionId });\r\n this.discussion = discussionManager.pluck(m => m.discussion);\r\n\r\n const simpleTopicManager = storage.get(SimpleTopicManager, { topicId });\r\n this.simpleTopic = simpleTopicManager.pluck(m => m.topic);\r\n\r\n const topicManager = storage.get(TopicManager, { topicId });\r\n this.topic = topicManager.pluck(m => m.topic);\r\n\r\n const ideationManager = storage.get(IdeationManager, { topicId });\r\n this.isRankingStage = ideationManager.pluck(m => m.isRatingStage, false);\r\n this.isVotingStage = ideationManager.pluck(m => m.isVotingStage, false);\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'visible': this.canEdit\r\n });\r\n }\r\n\r\n edit = () => {\r\n this.comment()?.editing(true);\r\n }\r\n\r\n private checkIfCanBeEdited() {\r\n const discussion = this.discussion();\r\n const simpleTopic = this.simpleTopic();\r\n const topic = this.topic();\r\n const comment = this.comment();\r\n const createDate = comment?.createDate();\r\n\r\n if (discussion == undefined || topic == undefined || simpleTopic == undefined || comment == undefined || createDate == undefined)\r\n return false;\r\n\r\n if (comment.IsModeratorIdea())\r\n return false;\r\n\r\n if (comment.threadType() === enums.ThreadTypes.Video.value)\r\n return false;\r\n\r\n //These are simple media and can't be edited\r\n if (!comment.isModerator() && !comment.isObserver() && (simpleTopic.isScreenRecording() && !this.isModeratorUser() || simpleTopic.isAudioRecording()))\r\n return false;\r\n\r\n if (this.isRankingStage()) {\r\n //we don't allow to edit ideas in ranking stage\r\n if (comment.parentId() == undefined)\r\n return false;\r\n\r\n //you can change your vote only during voting\r\n if (comment.isIdeationVote())\r\n return this.isVotingStage();\r\n } \r\n\r\n if (this.isModeratorUser()) {\r\n return !discussion.isHomework();\r\n }\r\n\r\n if (comment.canBeEdited()) {\r\n const projectEditTimeout = discussion.editCommentTimeout();\r\n const topicEditTimeout = topic.editCommentTimeout();\r\n\r\n const editTimeout = topicEditTimeout == -2 ? projectEditTimeout : topicEditTimeout;\r\n\r\n switch (editTimeout) {\r\n case -1: return true;\r\n case 0: return false;\r\n default: return ko.timeCondition({ before: DateHelpers.add(createDate, { minutes: editTimeout }) });\r\n } \r\n }\r\n\r\n return false;\r\n }\r\n}","define([\n \"!!../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./footer.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!./footer.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 StandaloneReplyEditorVM from 'components/editors/thread/text/reply/standaloneReply';\r\nimport { TextThreadEditorVMConfig } from 'components/editors/thread/text/textThread';\r\nimport { wccModules } from 'enums/wccModules';\r\nimport { inject, injectable } from 'inversify';\r\nimport { ObservableArray, PureComputed, Subscribable, SubscribableOrNullableValue } from 'knockout';\r\nimport { CurrentUserManager } from 'managers/currentUser';\r\nimport { IWCCStorageManager } from 'managers/iStorage';\r\nimport TaskManager from 'managers/task';\r\nimport { TopicThread } from 'models/topicThread';\r\nimport './footer.html';\r\nimport './footer.scss';\r\nimport CommentRequestButtonVM from './requestButton';\r\n\r\ncomponents.preload('reply-editor-standalone');\r\n\r\nconst { discussionId } = settings;\r\n\r\nexport interface CommentFooterVMConfig {\r\n comment: SubscribableOrNullableValue\r\n buttons: ObservableArray\r\n\r\n pinMode: SubscribableOrNullableValue\r\n onlyContent: SubscribableOrNullableValue\r\n hideControls: SubscribableOrNullableValue\r\n busy: SubscribableOrNullableValue\r\n}\r\n\r\n@injectable()\r\nexport default class CommentFooterVM {\r\n labels = labels;\r\n\r\n comment: Subscribable\r\n id: Subscribable\r\n topicId: Subscribable\r\n\r\n buttons: ObservableArray\r\n\r\n replyEditorConfig: TextThreadEditorVMConfig\r\n replyEditor = ko.observable();\r\n\r\n onlyContent: Subscribable\r\n hideControls: Subscribable\r\n hasReplies: Subscribable\r\n\r\n showFooterControls: Subscribable\r\n\r\n canAddNewReply: Subscribable\r\n\r\n isReady: Subscribable\r\n busy: Subscribable\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) config: CommentFooterVMConfig,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo,\r\n @inject(wccModules.storage) storage: IWCCStorageManager\r\n ) {\r\n this.comment = ko.flattenComputed(config.comment);\r\n this.id = this.comment.pluck(c => c.id);\r\n this.topicId = this.comment.pluck(c => c.topicId);\r\n const repliesCount = this.comment.pluck(c => c.repliesCount, 0);\r\n this.hasReplies = repliesCount.is(c => c > 0);\r\n this.hideControls = ko.flattenComputed(config.hideControls, false);\r\n\r\n const pinMode = ko.flattenComputed(config.pinMode, false);\r\n\r\n this.onlyContent = ko.flattenComputed(config.onlyContent, false);\r\n this.busy = ko.flattenComputed(config.busy, false);\r\n\r\n this.buttons = config.buttons;\r\n\r\n const currentUserManager = storage.get(CurrentUserManager, { discussionId });\r\n const user = currentUserManager.pluck('person');\r\n const isModeratorUser = user.pluck(u => u.isModerator, false);\r\n\r\n const taskManager = storage.get(TaskManager, { taskId: discussionId });\r\n const task = taskManager.pluck('task');\r\n\r\n this.showFooterControls = ko.pureComputed(() => pinMode() && isModeratorUser()); \r\n\r\n this.canAddNewReply = ko.strictComputed((task, user) => {\r\n if (task != undefined && user != undefined) {\r\n if (task.isHomework()) {\r\n return false;\r\n }\r\n \r\n return !user.isObserver() ||\r\n task.observerAccess() === enums.ObserverAccessTypes.CanComment.value ||\r\n task.observerAccess() === enums.ObserverAccessTypes.CanCommentAndModeratorNotified.value;\r\n }\r\n\r\n return false;\r\n }, [task, user]);\r\n\r\n this.isReady = ko.pureComputed(() => this.showFooterControls() || !this.onlyContent());\r\n\r\n this.replyEditorConfig = { parentThread: this.comment }\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'visible': this.isReady,\r\n\r\n 'css': {\r\n 'topic__comment__footer': true\r\n }\r\n }, this);\r\n }\r\n}","define([\n \"!!../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./ideationApprovalControls.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!./ideationApprovalControls.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 { Subscribable, SubscribableOrNullableValue } from 'knockout';\r\nimport { CurrentUserManager } from 'managers/currentUser';\r\nimport { IWCCStorageManager } from 'managers/iStorage';\r\nimport { TopicManager } from 'managers/topic';\r\nimport { Tag } from 'models/tag';\r\nimport { TopicThread } from 'models/topicThread';\r\nimport { CommentsService } from 'services/comments';\r\nimport './ideationApprovalControls.html';\r\nimport './ideationApprovalControls.scss';\r\n\r\ncomponents.preload('tag');\r\n\r\nexport interface CommentIdeationApprovalControlsVMConfig {\r\n comment: SubscribableOrNullableValue\r\n}\r\n\r\n@injectable()\r\nexport default class CommentIdeationApprovalControlsVM {\r\n private commentId: Subscribable\r\n\r\n approvalTag: Tag\r\n\r\n isApproved: Subscribable\r\n isReady: Subscribable\r\n isBusy = ko.observable(false).extend({ deferred: true });\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) config: CommentIdeationApprovalControlsVMConfig,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo,\r\n @inject(wccModules.storage) storage: IWCCStorageManager,\r\n @inject(wccModules.commentsService) private commentsService: CommentsService\r\n ) {\r\n const comment = ko.flattenComputed(config.comment);\r\n const topicId = comment.pluck(c => c.topicId);\r\n\r\n this.commentId = comment.pluck(c => c.id);\r\n this.isApproved = comment.pluck(c => c.isApproved, false);\r\n\r\n this.approvalTag = new Tag({\r\n TagValue: labels.IdeationApprovedTag,\r\n TagColor: \"#000000\"\r\n });\r\n\r\n const userManager = storage.get(CurrentUserManager, { discussionId: settings.discussionId });\r\n const user = userManager.pluck('person');\r\n const isModerator = user.pluck(u => u.isModerator, false);\r\n\r\n const topicManager = storage.get(TopicManager, { topicId });\r\n const topic = topicManager.pluck('topic');\r\n const isIdeation = topic.pluck(t => t.isIdeation, false);\r\n const ideationStage = topic.pluck(t => t.ideationStage, 0);\r\n\r\n this.isReady = ko.pureComputed(() => isIdeation() && ideationStage() == enums.IdeationStages.IdeaReview.value && isModerator());\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'visible': this.isReady,\r\n\r\n 'css': {\r\n 'topic__comment__ideation-approval-controls topic__comment__section': true\r\n }\r\n });\r\n }\r\n\r\n toggleApproval = async () => {\r\n const commentId = this.commentId();\r\n\r\n if (commentId == undefined)\r\n throw new Error(messages.UnknownError);\r\n\r\n this.isBusy(true);\r\n\r\n try {\r\n if (this.isApproved())\r\n await this.commentsService.unapproveThread(commentId);\r\n else\r\n await this.commentsService.approveThread(commentId);\r\n } catch (ex) {\r\n system.handleError(ex);\r\n }finally {\r\n this.isBusy(false);\r\n }\r\n }\r\n}","define([\n \"!!../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./ideationVoter.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!./ideationVoter.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 { IdeationVoteEditorVMConfig } from 'components/editors/thread/text/ideationVote/ideationVote';\r\nimport { wccModules } from 'enums/wccModules';\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 TopicVotesManager from 'managers/topic/votes';\r\nimport { TopicThread } from 'models/topicThread';\r\nimport './ideationVoter.html';\r\nimport './ideationVoter.scss';\r\n\r\ncomponents.preload('ideation-vote-editor-standalone');\r\n\r\nexport interface CommentIdeationVoterVMConfig {\n comment: SubscribableOrNullableValue\r\n}\n\n@injectable()\nexport default class CommentIdeationVoterVM {\n labels = labels;\n\n votesPickerContainer = ko.observable();\n\n comment: Subscribable\n id: Subscribable\n topicId: Subscribable\n\n voteEditorConfig: IdeationVoteEditorVMConfig\n\n repliesShown: Subscribable\n canVote: Subscribable\n isReady: Subscribable\n\n constructor(\r\n @inject(wccModules.componentConfig) config: CommentIdeationVoterVMConfig,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo,\r\n @inject(wccModules.storage) storage: IWCCStorageManager\r\n ) {\n this.comment = ko.flattenComputed(config.comment);\n this.id = this.comment.pluck(c => c.id);\n this.topicId = this.comment.pluck(c => c.topicId);\n\n const ideationManager = storage.get(IdeationManager, { topicId: this.topicId });\n const ideationReady = ideationManager.pluck(m => m.isReady, false);\n const isVotingStage = ideationManager.pluck(m => m.isVotingStage, false);\n\n const votesManager = storage.get(TopicVotesManager, { topicId: this.topicId });\n const loadingVotes = votesManager.pluck(m => m.loading, true);\n const votes = votesManager.pluck(m => m.votes, []);\n const vote = votes.find(v => v.threadId() === this.id());\n const voted = vote.isNotNull();\n\n this.voteEditorConfig = { parentThread: this.comment, votesPickerContainer: this.votesPickerContainer }\n\n this.repliesShown = ko.pureComputed(() => voted());\n this.canVote = ko.pureComputed(() => !voted());\n\n this.isReady = ko.pureComputed(() => {\n return ideationReady() &&\n !loadingVotes() &&\n isVotingStage();\n });\n\n ko.applyBindingsToNode(info.element, {\n 'visible': this.isReady,\n\n 'css': {\n 'topic__comment__ideation-voter': true\n }\n }, this);\r\n }\r\n}","define([\n \"!!../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./ideationVotesBubbles.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!./ideationVotesBubbles.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 { PureComputed, Subscribable, SubscribableOrNullableValue } from 'knockout';\r\nimport { IWCCStorageManager } from 'managers/iStorage';\r\nimport { TopicManager } from 'managers/topic';\r\nimport { TopicThread } from 'models/topicThread';\r\nimport './ideationVotesBubbles.html';\r\nimport './ideationVotesBubbles.scss';\r\n\r\nexport interface CommentIdeationVotesBubblesVMConfig {\n comment: SubscribableOrNullableValue\r\n inactive: SubscribableOrNullableValue\r\n}\n\n@injectable()\nexport default class CommentIdeationVotesBubblesVM {\n upvotes: Subscribable\n downvotes: Subscribable\n total: Subscribable\n\n hasDownvotes: Subscribable\n\n constructor(\r\n @inject(wccModules.componentConfig) config: CommentIdeationVotesBubblesVMConfig,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo,\r\n @inject(wccModules.storage) storage: IWCCStorageManager\r\n ) {\n const comment = ko.flattenComputed(config.comment);\n const inactiveMode = ko.flattenComputed(config.inactive, false);\n\n const topicId = comment.pluck(c => c.topicId);\n\n const topicManager = storage.get(TopicManager, { topicId });\n const topic = topicManager.pluck(m => m.topic);\n const topicDownvotes = topic.pluck(t => t.ideationDownvotes, 0);\n\n this.upvotes = comment.pluck(c => c.upvotesCount, 0);\n this.downvotes = comment.pluck(c => c.downvotesCount, 0);\n this.total = ko.pureComputed(() => this.upvotes() - this.downvotes());\n\n this.hasDownvotes = topicDownvotes.is(v => v > 0);\n\n ko.applyBindingsToNode(info.element, {\n 'css': {\n 'topic__comment__ideation-votes-bubbles': true,\n 'topic__comment__ideation-votes-bubbles--inactive': inactiveMode,\n 'topic__comment__ideation-votes-bubbles--with-downvotes': this.hasDownvotes\n }\n }, this);\r\n }\r\n}","import { RepliesViews } from 'enums/replies/views';\r\nimport { Subscribable } from 'knockout';\r\nimport IdeationManager from 'managers/ideation';\r\nimport { IWCCStorageManager } from 'managers/iStorage';\r\nimport CommentRepliesManager from 'managers/topic/comment/replies';\r\nimport { TopicThread } from 'models/topicThread';\r\n\r\nfunction isInToDoList(thread: TopicThread) {\r\n return thread.isInToDoList();\r\n}\r\n\r\nfunction isReported(thread: TopicThread) {\r\n return thread.spamComplaintCount() > 0;\r\n}\r\n\r\nexport default class CommentToDoManager {\r\n isInToDoList: Subscribable\r\n isReported: Subscribable\r\n\r\n isInToDoListOrReported = ko.pureComputed(() => this.isInToDoList() || this.isReported())\r\n\r\n constructor(\r\n comment: Subscribable,\r\n storage: IWCCStorageManager\r\n ) {\r\n const commentId = comment.pluck('id');\r\n const topicId = comment.pluck('topicId');\r\n const isReply = comment.mapNotNull(c => (c.parentId() ?? '').length > 0).default(false); \r\n const hasNoInitialReplies = comment.mapNotNull(c => c.repliesCount() === 0).default(false);\r\n\r\n const ideationManager = storage.get(IdeationManager, { topicId });\r\n const ideationReady = ideationManager.pluck(m => m.isReady, false);\r\n const isVotingStage = ideationManager.pluck(m => m.isVotingStage, false);\r\n\r\n const repliesView = ko.pureComputed(() => ideationReady() ? isVotingStage() ? 'myvotes' : 'all' : undefined);\r\n\r\n const repliesManager = storage.get(CommentRepliesManager, { commentId, topicId, isEmpty: hasNoInitialReplies, view: repliesView });\r\n const replies = repliesManager.pluck('replies', []);\r\n\r\n this.isInToDoList = comment.mapNotNull(c => isInToDoList(c) || (!isReply() && replies().some(r => isInToDoList(r)))).default(false);\r\n this.isReported = comment.mapNotNull(c => isReported(c) || (!isReply() && replies().some(r => isReported(r)))).default(false);\r\n }\r\n}","define([\n \"!!../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./markAsDoneButton.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!./markAsDoneButton.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 { Subscribable } from 'knockout';\r\nimport { IWCCStorageManager } from 'managers/iStorage';\r\nimport { ServicesContext } from 'services/context';\r\nimport CommentToDoManager from './managers/todo';\r\nimport './markAsDoneButton.html';\r\nimport './markAsDoneButton.scss';\r\nimport CommentRequestButtonVM, { CommentRequestButtonVMConfig } from './requestButton';\r\n\r\n@injectable()\r\nexport default class CommentMarkAsDoneButtonVM extends CommentRequestButtonVM {\r\n private commentId: Subscribable\r\n private topicId: Subscribable\r\n\r\n private isInToDoList: Subscribable\r\n private isReported: Subscribable\r\n\r\n isVisible = ko.pureComputed(() => this.checkIfCanBeMarkedDone())\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) config: CommentRequestButtonVMConfig,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo,\r\n @inject(wccModules.storage) storage: IWCCStorageManager,\r\n @inject(wccModules.servicesContext) private ctx: ServicesContext\r\n ) {\r\n super(config, info);\r\n\r\n this.commentId = this.comment.pluck(c => c.id);\r\n this.topicId = this.comment.pluck(c => c.topicId);\r\n\r\n const todoManager = new CommentToDoManager(this.comment, storage);\r\n this.isInToDoList = todoManager.isInToDoList;\r\n this.isReported = todoManager.isReported;\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'css': {\r\n 'topic__comment__mark-as-done-button': true\r\n }\r\n }, this);\r\n }\r\n\r\n markAsDone = async () => {\r\n if (this.isLocked()) return;\r\n\r\n this.isBusy(true);\r\n\r\n try {\r\n const commentId = this.commentId();\r\n const topicId = this.topicId();\r\n\r\n if (commentId == undefined || topicId == undefined)\r\n throw new Error(messages.InvalidRequest);\r\n\r\n await this.ctx.commentsService.markAsDone(topicId, commentId);\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 private checkIfCanBeMarkedDone() {\r\n if (!this.isLocked())\r\n return this.isInToDoList() && !this.isReported();\r\n\r\n return false;\r\n }\r\n}","define([\n \"!!../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./ownerTags.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!./ownerTags.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 { DOMHelpers } from 'helpers/dom';\r\nimport { inject, injectable } from 'inversify';\r\nimport { Subscribable, SubscribableOrNullableValue } from 'knockout';\r\nimport { CurrentUserManager } from 'managers/currentUser';\r\nimport { IWCCStorageManager } from 'managers/iStorage';\r\nimport PersonTagsManager from 'managers/tags/person';\r\nimport { withEffect } from 'mixins/withEffect';\r\nimport { EffectsContainer } from 'mixins/withEffects';\r\nimport { Tag } from 'models/tag';\r\nimport { TopicThread } from 'models/topicThread';\r\nimport './ownerTags.html';\r\nimport './ownerTags.scss';\r\n\r\ncomponents.preload('tags-list');\r\n\r\nconst hideDelay = 100\r\n\r\nexport type CommentOwnerTagsVMAlignment = 'left' | 'center';\r\n\r\nexport interface CommentOwnerTagsVMConfig {\r\n comment?: SubscribableOrNullableValue\r\n anchor?: SubscribableOrNullableValue\r\n inline?: SubscribableOrNullableValue\r\n align?: SubscribableOrNullableValue\r\n}\r\n\r\n@injectable()\r\nexport default class CommentOwnerTagsVM {\r\n labels = labels\r\n\r\n private hideTimeout: NodeJS.Timeout | undefined\r\n\r\n tags: Subscribable>\r\n \r\n isActive: Subscribable\r\n isLoadingTags: Subscribable\r\n hasTags: Subscribable\r\n isShown: Subscribable\r\n isHovered = ko.observable(false) \r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) config: CommentOwnerTagsVMConfig,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo,\r\n @inject(wccModules.storage) storage: IWCCStorageManager,\r\n @inject(wccModules.effects) effects: EffectsContainer\r\n ) {\r\n const anchor = ko.flattenComputed(config.anchor);\r\n const inlineMode = ko.flattenComputed(config.inline, false);\r\n const align = ko.flattenComputed(config.align, 'center');\r\n\r\n const comment = ko.flattenComputed(config.comment);\r\n const postedById = comment.pluck(c => c.postedById);\r\n\r\n const currentUserManager = storage.get(CurrentUserManager, { discussionId: settings.discussionId });\r\n const user = currentUserManager.pluck(m => m.person);\r\n const isModeratorOrObserver = user.pluck(u => u.isModeratorOrObserver, false);\r\n\r\n const participantTagsManager = storage.get(PersonTagsManager, [postedById]);\r\n this.isLoadingTags = participantTagsManager.pluck(m => m.loading, true).extend({ deferred: true });\r\n this.tags = participantTagsManager.pluck(m => m.tags, []).filter(tag => !tag.isHidden());\r\n this.hasTags = this.tags.is(tags => tags.length > 0);\r\n\r\n const isAllowed = ko.pureComputed(() => isModeratorOrObserver());\r\n const isRequired = this.isHovered.toFlag();\r\n\r\n this.isShown = ko.pureComputed(() => inlineMode() || this.isHovered());\r\n this.isActive = ko.pureComputed(() => isAllowed() && (inlineMode() || isRequired()));\r\n\r\n effects.register((isAllowed, anchor) => {\r\n if (isAllowed && anchor != undefined) {\r\n return [\r\n DOMHelpers.onNodeEvent(anchor, 'mouseenter', () => this.onMouseEnter()),\r\n DOMHelpers.onNodeEvent(anchor, 'mouseleave', () => this.onMouseLeave()),\r\n\r\n withEffect(inlineMode => {\r\n if (inlineMode)\r\n return this.tags.subscribe(_.noop);\r\n }, [inlineMode])\r\n ]\r\n }\r\n }, [isAllowed, anchor]);\r\n\r\n effects.register((inlineMode) => {\r\n if (!inlineMode)\r\n return [\r\n DOMHelpers.onNodeEvent(info.element, 'mouseenter', () => this.onMouseEnter(true)),\r\n DOMHelpers.onNodeEvent(info.element, 'mouseleave', () => this.onMouseLeave()),\r\n ]\r\n }, [inlineMode]);\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'visible': this.isActive,\r\n\r\n 'css': {\r\n 'topic__comment__owner-tags': true,\r\n 'topic__comment__owner-tags--inline': inlineMode\r\n }\r\n }, this);\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'css': align.mapSingle(align => `topic__comment__owner-tags--align-${align}`)\r\n });\r\n }\r\n\r\n private onMouseEnter(keepAliveOnly = false) {\r\n if (this.isHovered() || !keepAliveOnly) {\r\n this.isHovered(true);\r\n\r\n if (this.hideTimeout != undefined)\r\n clearTimeout(this.hideTimeout);\r\n }\r\n }\r\n\r\n private onMouseLeave() {\r\n if (this.hideTimeout != undefined)\r\n clearTimeout(this.hideTimeout);\r\n\r\n this.hideTimeout = setTimeout(() => this.isHovered(false), hideDelay);\r\n }\r\n}","define([\n \"!!../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./participants.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!./participants.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 { PureComputed, Subscribable, SubscribableOrNullableValue } from 'knockout';\r\nimport { CurrentUserManager } from 'managers/currentUser';\r\nimport { TinyPeopleListManager } from 'managers/discussion/people/tinyList';\r\nimport { IWCCStorageManager } from 'managers/iStorage';\r\nimport TopicParticipantsManager from 'managers/topic/participants';\r\nimport Participant from 'models/participant';\r\nimport { Person } from 'models/person';\r\nimport PersonTiny from 'models/personTiny';\r\nimport { TopicThread } from 'models/topicThread';\r\nimport './participants.html';\r\nimport './participants.scss';\r\n\r\nexport interface CommentParticipantsVMCofig {\r\n comment?: SubscribableOrNullableValue\r\n}\r\n\r\n@injectable()\r\nexport default class CommentParticipantsVM {\r\n private topicId: Subscribable\r\n private user: Subscribable\r\n\r\n label = `${labels.VisibleTo}:`\r\n\r\n participants: Subscribable>\r\n\r\n isActive: Subscribable\r\n isLoading: Subscribable\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) config: CommentParticipantsVMCofig,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo,\r\n @inject(wccModules.storage) private storage: IWCCStorageManager\r\n ) {\r\n const comment = ko.flattenComputed(config.comment);\r\n this.topicId = comment.pluck('topicId');\r\n const isForSelectedParticipants = comment.pluck('isForSelectedParticipants', false);\r\n const commentParticipantsIDs = comment.pluck('threadParticipantIDs', []);\r\n\r\n const userManager = storage.get(CurrentUserManager, { discussionId: settings.discussionId });\r\n this.user = userManager.pluck('person');\r\n\r\n const participantsManagerAccessor = ko.pureComputed(() => this.getParticipantsManagerAccessor());\r\n const participantsManager = ko.pureComputed(() => ko.unwrap(participantsManagerAccessor() as PureComputed));\r\n const allParticipants = participantsManager.pluck('people', []) as PureComputed>;\r\n\r\n this.isLoading = participantsManager.pluck('loading', true);\r\n this.participants = ko.pureComputed(() => allParticipants().filter(p => commentParticipantsIDs().includes(p.personId() ?? '')));\r\n\r\n this.isActive = ko.pureComputed(() => isForSelectedParticipants() && commentParticipantsIDs().length > 0 && this.participants().length > 0);\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'visible': this.isActive,\r\n\r\n 'css': {\r\n 'topic__comment__participants': true\r\n }\r\n }, this);\r\n }\r\n\r\n private getParticipantsManagerAccessor() {\r\n const user = this.user();\r\n\r\n if (user !== undefined) {\r\n if (user.isModerator()) {\r\n return this.storage.get(TinyPeopleListManager, {\r\n discussionId: settings.discussionId,\r\n status: enums.MembershipStatusTypes.Member.value,\r\n sortKey: 'LastName'\r\n });\r\n } else {\r\n return this.storage.get(TopicParticipantsManager, {\r\n topicId: this.topicId,\r\n filter: ''\r\n });\r\n }\r\n }\r\n }\r\n}","define([\n \"!!../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./pinButton.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 } from 'knockout';\r\nimport { CurrentUserManager } from 'managers/currentUser';\r\nimport { IWCCStorageManager } from 'managers/iStorage';\r\nimport { TopicManager } from 'managers/topic';\r\nimport { Person } from 'models/person';\r\nimport { CommentsService } from 'services/comments';\r\nimport './pinButton.html';\r\nimport CommentRequestButtonVM, { CommentRequestButtonVMConfig } from './requestButton';\r\nimport TaskManager from \"../../../managers/task\";\r\n\r\nconst { discussionId } = settings;\r\n\r\n@injectable()\r\nexport default class CommentPinButtonVM extends CommentRequestButtonVM {\r\n private commentId: Subscribable\r\n private topicId: Subscribable\r\n\r\n private canPin: Subscribable\r\n\r\n isPinned: Subscribable\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) config: CommentRequestButtonVMConfig,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo,\r\n @inject(wccModules.storage) storage: IWCCStorageManager,\r\n @inject(wccModules.commentsService) private commentsService: CommentsService\r\n ) {\r\n super(config, info);\r\n\r\n this.commentId = this.comment.pluck(c => c.id);\r\n this.topicId = this.comment.pluck(c => c.topicId);\r\n this.isPinned = this.comment.pluck(c => c.isPinned, false);\r\n\r\n const currentUserManager = storage.get(CurrentUserManager, { discussionId });\r\n const user = currentUserManager.pluck(m => m.person);\r\n const isModeratorUser = user.pluck(u => u.isModerator, false);\r\n\r\n const topicManager = storage.get(TopicManager, { topicId: this.topicId });\r\n const topic = topicManager.pluck(t => t.topic);\r\n const isIdeation = topic.pluck(t => t.isIdeation, false);\r\n\r\n const taskManager = storage.get(TaskManager, { taskId: discussionId });\r\n const task = taskManager.pluck(t => t.task);\r\n const isHomework = task.pluck(t => t.isHomework);\r\n\r\n const participant = this.comment.mapNotNull(comment => Person.fromThread(comment));\r\n const isPinnableComment = participant.pluck(p => p.isModerator() || !p.isObserver(), false);\r\n\r\n this.canPin = ko.pureComputed(() => isModeratorUser() && isPinnableComment() && !isIdeation() && !isHomework()); \r\n }\r\n\r\n togglePinState = async () => {\r\n if (this.isLocked()) return;\r\n\r\n const commentId = this.commentId();\r\n const topicId = this.topicId();\r\n\r\n try {\r\n if (commentId == undefined || topicId == undefined)\r\n throw new Error(messages.InvalidRequest);\r\n\r\n this.isBusy(true);\r\n\r\n await this.commentsService.pin(topicId, commentId);\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 protected override checkIfVisible() {\r\n return super.checkIfVisible() && this.canPin();\r\n }\r\n}","define([\n \"!!../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./refreshTranslationButton.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 } from 'knockout';\r\nimport DiscussionTranslationManager from 'managers/discussion/translation';\r\nimport { IWCCStorageManager } from 'managers/iStorage';\r\nimport { CommentsService } from 'services/comments';\r\nimport './refreshTranslationButton.html';\r\nimport CommentRequestButtonVM, { CommentRequestButtonVMConfig } from './requestButton';\r\n\r\nconst { discussionId } = settings;\r\n\r\n@injectable()\r\nexport default class CommentRefreshTranslationButtonVM extends CommentRequestButtonVM {\r\n private commentId: Subscribable\r\n private isTranslationAllowed: Subscribable\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) config: CommentRequestButtonVMConfig,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo,\r\n @inject(wccModules.storage) storage: IWCCStorageManager,\r\n @inject(wccModules.commentsService) private commentsService: CommentsService\r\n ) {\r\n super(config, info);\r\n\r\n this.commentId = this.comment.pluck(c => c.id);\r\n\r\n const translationManager = storage.get(DiscussionTranslationManager, { discussionId });\r\n this.isTranslationAllowed = translationManager.pluck(m => m.isAllowedToShow, false); \r\n }\r\n\r\n refreshTranslation = () => {\r\n if (this.isBusy()) return;\r\n\r\n system.confirm(messages.AreYouSureYouWantToRefreshThisTranslation, async () => {\r\n try {\r\n const commentId = this.commentId();\r\n\r\n if (commentId == undefined)\r\n throw new Error(messages.InvalidRequest);\r\n\r\n this.isBusy(true);\r\n\r\n await this.commentsService.refreshTranslation(commentId);\r\n\r\n system.showInfoMessage(messages.TheTranslationWillBeRefreshedSoon);\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 protected override checkIfVisible() {\r\n return super.checkIfVisible() && this.isTranslationAllowed();\r\n }\r\n}","define([\n \"!!../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./removeButton.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 } 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 { ServicesContext } from 'services/context';\r\nimport { DateHelpers } from '../../../helpers/date';\r\nimport DiscussionManager from '../../../managers/discussion';\r\nimport Discussion from '../../../models/discussion';\r\nimport './removeButton.html';\r\nimport CommentRequestButtonVM, { CommentRequestButtonVMConfig } from './requestButton';\r\n\r\n@injectable()\r\nexport default class CommentRemoveButtonVM extends CommentRequestButtonVM {\r\n private user: Subscribable\r\n private discussion: Subscribable\r\n private topic: Subscribable\r\n\r\n private isRankingStage: Subscribable\r\n private isVotingStage: Subscribable\r\n\r\n private canRemove: Subscribable\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) config: CommentRequestButtonVMConfig,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo,\r\n @inject(wccModules.storage) storage: IWCCStorageManager,\r\n @inject(wccModules.servicesContext) private ctx: ServicesContext\r\n ) {\r\n super(config, info);\r\n\r\n const topicId = this.comment.pluck(c => c.topicId);\r\n\r\n const userManager = storage.get(CurrentUserManager, { });\r\n this.user = userManager.pluck('person');\r\n\r\n const discussionManager = storage.get(DiscussionManager, {});\r\n this.discussion = discussionManager.pluck(m => m.discussion);\r\n\r\n const topicManager = storage.get(TopicManager, { topicId });\r\n this.topic = topicManager.pluck(m => m.topic);\r\n\r\n const ideationManager = storage.get(IdeationManager, { topicId });\r\n this.isRankingStage = ideationManager.pluck(m => m.isRatingStage, false);\r\n this.isVotingStage = ideationManager.pluck(m => m.isVotingStage, false);\r\n\r\n this.canRemove = ko.flattenComputed(() => this.checkIfCanBeRemoved());\r\n }\r\n\r\n remove = () => {\r\n if (this.isLocked()) return;\r\n\r\n const comment = this.comment();\r\n\r\n if (comment != undefined) {\r\n system.confirm(messages.AreYouSureYouWantToDeleteThisComment, () => system.lockOrSkip(this.isBusy, async () => {\r\n try {\r\n await this.ctx.commentsService.remove(comment);\r\n } catch (ex) {\r\n system.handleError(ex, true);\r\n }\r\n }));\r\n }\r\n }\r\n\r\n protected override checkIfVisible() {\r\n return super.checkIfVisible() && this.canRemove();\r\n }\r\n\r\n private checkIfCanBeRemoved() {\r\n const user = this.user()\r\n const discussion = this.discussion();\r\n const topic = this.topic();\r\n const comment = this.comment();\r\n\r\n if (discussion == undefined || topic == undefined || user == undefined || comment == undefined)\r\n return false;\r\n\r\n if (comment.IsModeratorIdea())\r\n return false;\r\n \r\n const createDate = comment.createDate();\r\n\r\n if (createDate == undefined)\r\n return false; \r\n\r\n if (this.isRankingStage()) {\r\n //we don't allow to delete ideas in ranking stage\r\n if (comment.parentId() == undefined)\r\n return false;\r\n\r\n //you can change your vote only during voting\r\n if (comment.isIdeationVote())\r\n return this.isVotingStage();\r\n }\r\n\r\n if (user.isModerator()) {\r\n return !discussion.isHomework();\r\n }\r\n\r\n if (comment.canBeDeleted()) {\r\n const discussionDeleteTimeout = discussion.deleteCommentTimeout();\r\n const topicDeleteTimeout = topic.deleteCommentTimeout();\r\n\r\n const deleteTimeout = topicDeleteTimeout == -2 ? discussionDeleteTimeout : topicDeleteTimeout;\r\n\r\n switch (deleteTimeout) {\r\n case -1: return true;\r\n case 0: return false;\r\n default: return ko.timeCondition({ before: DateHelpers.add(createDate, { minutes: deleteTimeout }) });\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n}","define([\n \"!!../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./removedCover.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 { TopicThread } from 'models/topicThread';\r\nimport './removedCover.html';\r\n\r\nexport interface CommentRemovedCoverVMConfig {\r\n comment: SubscribableOrNullableValue\r\n}\r\n\r\n@injectable()\r\nexport default class CommentRemovedCoverVM {\r\n title: Subscribable\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) config: CommentRemovedCoverVMConfig,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo,\r\n ) {\r\n const comment = ko.flattenComputed(config.comment);\r\n const parentId = comment.pluck('parentId', '');\r\n const isReply = parentId.is(id => id.length > 0);\r\n const isDeleted = comment.pluck('isDeleted', false); \r\n\r\n this.title = comment.pluck(c => isReply() ? labels.ReplyHasBeenDeleted : labels.CommentHasBeenDeleted, '');\r\n\r\n const isVisible = ko.pureComputed(() => isDeleted());\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'visible': isVisible,\r\n\r\n 'css': {\r\n 'wcc-dark-cover': true\r\n }\r\n }, this);\r\n }\r\n}","define([\n \"!!../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./replies.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!./replies.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 { RepliesViews } from 'enums/replies/views';\r\nimport { wccModules } from 'enums/wccModules';\r\nimport { inject, injectable } from 'inversify';\r\nimport { Subscribable, SubscribableOrNullableValue } from 'knockout';\r\nimport { CurrentUserManager } from 'managers/currentUser';\r\nimport { IWCCStorageManager } from 'managers/iStorage';\r\nimport CommentRepliesManager from 'managers/topic/comment/replies';\r\nimport { EffectsContainer } from 'mixins/withEffects';\r\nimport { TopicThread } from 'models/topicThread';\r\nimport './replies.html';\r\nimport './replies.scss';\r\n\r\ninterface CommentRepliesConfig {\r\n comment: SubscribableOrNullableValue\r\n commentId: SubscribableOrNullableValue\r\n topicId: SubscribableOrNullableValue\r\n view: SubscribableOrNullableValue\r\n votesPickerContainer: SubscribableOrNullableValue\r\n hideControls: SubscribableOrNullableValue\r\n isEmpty: SubscribableOrNullableValue\r\n}\r\n\r\n@injectable()\r\nexport default class CommentRepliesVM {\r\n comment: Subscribable;\r\n \r\n private sortedReplies: Subscribable>\r\n\r\n votesPickerContainer: SubscribableOrNullableValue\r\n \r\n replies = ko.observableArray().extend({ deferred: true });\r\n newRepliesCountStr: Subscribable\r\n\r\n hasNewReplies = ko.observable(false)\r\n\r\n areControlsHidden: Subscribable\r\n isReady: Subscribable\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) config: CommentRepliesConfig,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo,\r\n @inject(wccModules.storage) storage: IWCCStorageManager,\r\n @inject(wccModules.effects) effects: EffectsContainer\r\n ) {\r\n const view = ko.flattenComputed(config.view, 'all');\r\n const isEmpty = ko.flattenComputed(config.isEmpty, false);\r\n\r\n this.comment = ko.flattenComputed(config.comment);\r\n\r\n this.votesPickerContainer = config.votesPickerContainer;\r\n this.areControlsHidden = ko.observable(config.hideControls).unwrap().default(false);\r\n\r\n const userManager = storage.get(CurrentUserManager, { discussionId: settings.discussionId });\r\n const user = userManager.pluck(m => m.person);\r\n const userId = user.pluck(u => u.personId);\r\n\r\n const repliesManager = storage.get(CommentRepliesManager, { topicId: config.topicId, commentId: config.commentId, isEmpty, view });\r\n const loadingReplies = repliesManager.pluck(m => m.loading, true);\r\n const allReplies = repliesManager.pluck(m => m.replies, []);\r\n\r\n this.sortedReplies = allReplies.sortBy(reply => reply.createDate());\r\n const newReplies = this.sortedReplies.difference(this.replies);\r\n\r\n const newRepliesCount = ko.pureComputed(() => newReplies().length);\r\n\r\n this.newRepliesCountStr = ko.pureComputed(() => {\r\n const count = newRepliesCount();\r\n const label = count === 1 ? labels.LoadNewReply : labels.LoadNewReplies;\r\n\r\n return label.replace('{0}', count.toString());\r\n });\r\n\r\n const shouldAutoSync = ko.pureComputed(() => {\r\n var currentNewReplies = newReplies(),\r\n currentUserId = userId();\r\n\r\n if (currentNewReplies.length > 0 && userId != undefined)\r\n return currentNewReplies.some(reply => reply.postedById() === currentUserId);\r\n\r\n return false;\r\n });\r\n\r\n this.isReady = ko.pureComputed(() => !loadingReplies()).extend({ deferred: true });\r\n\r\n const isVisible = ko.pureComputed(() => this.isReady() && allReplies().length > 0);\r\n\r\n effects.register((newReplies, shouldAutoSync) => {\r\n var hasNewReplies = newReplies.length > 0;\r\n\r\n if (hasNewReplies && shouldAutoSync)\r\n this.syncReplies();\r\n\r\n this.hasNewReplies(hasNewReplies && !shouldAutoSync);\r\n }, [newReplies, shouldAutoSync]);\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'visible': isVisible,\r\n\r\n 'css': {\r\n 'comment__replies': true\r\n }\r\n }, this);\r\n\r\n this.isReady.when().then(() => this.syncReplies());\r\n }\r\n\r\n syncReplies = () => {\r\n this.replies(_.clone(this.sortedReplies()));\r\n this.comment()?.replies(this.replies());\r\n }\r\n}","define([\n \"!!../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./reply.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!./reply.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 { IdeationVoteEditorVMConfig } from 'components/editors/thread/text/ideationVote/ideationVote';\r\nimport { ThreadEditorVMConfig } from 'components/editors/thread/thread.interfaces';\r\nimport { 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 { Person } from 'models/person';\r\nimport { TopicThread } from 'models/topicThread';\r\nimport { PersonAvatarVMConfig } from '../../avatar/person/person';\r\nimport CommentToDoManager from './managers/todo';\r\nimport './reply.html';\r\nimport './reply.scss';\r\nimport CommentRequestButtonVM from './requestButton';\r\n\r\nconst { discussionId, now } = settings;\r\n\r\ncomponents.preload('reply-editor-inline', 'ideation-vote-editor-inline', 'vote-bubble', 'person-avatar');\r\n\r\nexport interface CommentReplyVMConfig {\r\n reply: SubscribableOrNullableValue\r\n hideControls: SubscribableOrNullableValue\r\n votesPickerContainer: SubscribableOrNullableValue\r\n}\r\n\r\n@injectable()\r\nexport default class CommentReplyVM {\r\n private isModerator: Subscribable\r\n\r\n labels = labels\r\n\r\n reply: Subscribable\r\n\r\n replyEditorConfig: ThreadEditorVMConfig\r\n voteEditorConfig: IdeationVoteEditorVMConfig\r\n avatarConfig: PersonAvatarVMConfig\r\n\r\n buttons: ObservableArray = ko.observableArray();\r\n\r\n content: Subscribable\r\n creatorName: Subscribable\r\n whisperText: Subscribable\r\n createDate: Subscribable\r\n\r\n vote: Subscribable\r\n hasVote: Subscribable\r\n\r\n isWhisper: Subscribable\r\n isInToDoList: Subscribable\r\n isAbuse: Subscribable\r\n hideControls: Subscribable\r\n \r\n bodyShown: Subscribable\r\n replyEditorShown: Subscribable\r\n voteEditorShown: Subscribable\r\n\r\n busy = ko.pureComputed(() => this.buttons().some(b => b.isBusy()));\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) config: CommentReplyVMConfig,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo,\r\n @inject(wccModules.storage) storage: IWCCStorageManager\r\n ) {\r\n this.reply = ko.flattenComputed(config.reply);\r\n\r\n const isDeleted = this.reply.pluck(r => r.isDeleted, false);\r\n const isEditing = ko.pureComputed({\r\n read: () => this.reply()?.editing() ?? false,\r\n write: value => this.reply()?.editing(value)\r\n });\r\n\r\n const hideControls = ko.flattenComputed(config.hideControls, false);\r\n this.hideControls = ko.pureComputed(() => hideControls() || isDeleted());\r\n\r\n const createDate = this.reply.pluck(reply => reply.createDate);\r\n\r\n const participant = this.reply.mapNotNull(reply => Person.fromThread(reply));\r\n const isModeratorReply = participant.pluck(participant => participant.isModerator, false);\r\n const isObserverReply = participant.pluck(participant => participant.isObserver, false);\r\n\r\n const currentUserManager = storage.get(CurrentUserManager, { discussionId });\r\n const currentUser = currentUserManager.pluck(m => m.person);\r\n this.isModerator = currentUser.pluck(u => u.isModerator, false);\r\n const isObserver = currentUser.pluck(u => u.isObserver, false);\r\n\r\n this.content = this.reply.pluck(r => r.content, '');\r\n this.creatorName = participant.pluck(p => p.nicknameOrName);\r\n this.createDate = createDate.mapNotNull(date => moment(date).locale(settings.languageCode).from(now()));\r\n\r\n this.vote = this.reply.pluck(r => r.vote, 0);\r\n this.hasVote = this.vote.is(v => v != 0);\r\n\r\n const visibleToFullName = this.reply.pluck(reply => reply.visibleToFullName);\r\n\r\n this.whisperText = ko.pureComputed(() => {\r\n if (this.isModerator() || isObserver())\r\n return '@' + (visibleToFullName() ?? labels.ModeratorsAndObservers);\r\n else\r\n return WCC.Labels.Private;\r\n });\r\n\r\n this.isWhisper = this.reply.pluck('isWhisper', false);\r\n this.isAbuse = ko.pureComputed(() => (this.reply()?.spamComplaintCount() ?? 0) > 0 && this.isModerator());\r\n\r\n const todoManager = new CommentToDoManager(this.reply, storage);\r\n this.isInToDoList = todoManager.isInToDoList;\r\n const isInToDoListOrReported = todoManager.isInToDoListOrReported; \r\n\r\n this.bodyShown = ko.pureComputed(() => !isEditing());\r\n this.replyEditorShown = ko.pureComputed(() => isEditing() && !this.hasVote());\r\n this.voteEditorShown = ko.pureComputed(() => isEditing() && this.hasVote());\r\n\r\n this.replyEditorConfig = {\r\n thread: this.reply,\r\n onCancel: () => isEditing(false),\r\n onSave: () => isEditing(false)\r\n }\r\n\r\n this.voteEditorConfig = {\r\n thread: this.reply,\r\n votesPickerContainer: config.votesPickerContainer,\r\n onCancel: () => isEditing(false),\r\n onSave: () => isEditing(false)\r\n }\r\n\r\n this.avatarConfig = { person: participant }\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'css': {\r\n 'comment__reply': this,\r\n 'comment__reply--moderator': isModeratorReply,\r\n 'comment__reply--observer': isObserverReply,\r\n 'comment__reply--abuse': this.isAbuse,\r\n 'comment__reply--todo': isInToDoListOrReported,\r\n 'comment__reply--editing': isEditing\r\n }\r\n }, this);\r\n }\r\n}","define([\n \"!!../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./reportAbuseButton.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 } from 'knockout';\r\nimport { CurrentUserManager } from 'managers/currentUser';\r\nimport { IWCCStorageManager } from 'managers/iStorage';\r\nimport SimpleTopicManager from 'managers/simpleTopic';\r\nimport TaskManager from 'managers/task';\r\nimport { Person } from 'models/person';\r\nimport { SimpleTopic } from 'models/simpleTopic';\r\nimport Task from 'models/task';\r\nimport { ServicesContext } from 'services/context';\r\nimport './reportAbuseButton.html';\r\nimport CommentRequestButtonVM, { CommentRequestButtonVMConfig } from './requestButton';\r\n\r\n@injectable()\r\nexport default class CommentReportAbuseButtonVM extends CommentRequestButtonVM {\r\n user: Subscribable\r\n task: Subscribable\r\n topic: Subscribable\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) config: CommentRequestButtonVMConfig,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo,\r\n @inject(wccModules.storage) storage: IWCCStorageManager,\r\n @inject(wccModules.servicesContext) private ctx: ServicesContext\r\n ) {\r\n super(config, info);\r\n\r\n const topicId = this.comment.pluck('topicId');\r\n\r\n const userManager = storage.get(CurrentUserManager, { discussionId: settings.discussionId });\r\n this.user = userManager.pluck('person');\r\n\r\n const taskManager = storage.get(TaskManager, { taskId: settings.discussionId });\r\n this.task = taskManager.pluck(m => m.task);\r\n\r\n const topicManager = storage.get(SimpleTopicManager, { topicId });\r\n this.topic = topicManager.pluck('topic');\r\n }\r\n\r\n reportAbuse = async () => {\r\n if (this.isLocked()) return;\r\n\r\n const commentId = this.comment()?.id();\r\n\r\n try {\r\n if (commentId == undefined)\r\n throw new Error(messages.InvalidRequest);\r\n\r\n this.isBusy(true);\r\n\r\n await this.ctx.commentsService.toggleAbuseReport(commentId);\r\n } finally {\r\n this.isBusy(false);\r\n }\r\n }\r\n\r\n protected override checkIfVisible() {\r\n return super.checkIfVisible() && this.checkIfAllowedToShow();\r\n }\r\n\r\n private checkIfAllowedToShow() {\r\n const user = this.user();\r\n const task = this.task();\r\n const topic = this.topic();\r\n const comment = this.comment();\r\n\r\n if (user == undefined || task == undefined || topic == undefined || comment == undefined)\r\n return false;\r\n\r\n if (task.isHomework() || topic.isIdeation())\r\n return false;\r\n\r\n return comment.postedById() !== user.personId() &&\r\n !comment.isReportedAsAbuse() &&\r\n !comment.isModerator() &&\r\n !comment.isObserver() &&\r\n !user.isModerator();\r\n }\r\n}","import { wccModules } from 'enums/wccModules';\r\nimport { inject, injectable } from 'inversify';\r\nimport { PureComputed, Subscribable, SubscribableOrNullableValue } from 'knockout';\r\nimport { TopicThread } from 'models/topicThread';\r\n\r\nexport interface CommentRequestButtonVMConfig {\r\n comment?: SubscribableOrNullableValue\r\n lock?: SubscribableOrNullableValue\r\n}\r\n\r\n@injectable()\r\nexport default abstract class CommentRequestButtonVM {\r\n protected comment: Subscribable\r\n protected isLocked: Subscribable\r\n\r\n labels = labels;\r\n\r\n isBusy = ko.observable(false).extend({ rateLimit: 250 });\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) config: CommentRequestButtonVMConfig,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo\r\n ) {\r\n this.comment = ko.flattenComputed(config.comment);\r\n\r\n const isLocked = ko.flattenComputed(config.lock, false);\r\n this.isLocked = ko.pureComputed(() => this.isBusy() || isLocked());\r\n\r\n const isVisible = ko.pureComputed(() => this.checkIfVisible());\r\n\r\n //wait for full component construction\r\n requestAnimationFrame(() => {\r\n ko.applyBindingsToNode(info.element, {\r\n 'visible': isVisible\r\n }, this);\r\n });\r\n }\r\n\r\n protected checkIfVisible() {\r\n return this.comment() != undefined;\r\n }\r\n}","define([\n \"!!../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./responseSetting.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!./responseSetting.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 { SelectDropdown } from 'components/dropdowns/select/select';\r\nimport { wccModules } from 'enums/wccModules';\r\nimport { inject, injectable } from 'inversify';\r\nimport { Subscribable, SubscribableOrNullableValue } from 'knockout';\r\nimport { EffectsContainer } from 'mixins/withEffects';\r\nimport { TopicThread } from 'models/topicThread';\r\nimport { CommentsService } from 'services/comments';\r\nimport './responseSetting.html';\r\nimport './responseSetting.scss';\r\n\r\ncomponents.preload('wcc-select');\r\n\r\nexport interface CommentResponseSettingVMConfig {\r\n comment: SubscribableOrNullableValue\r\n}\r\n\r\n@injectable()\r\nexport default class CommentResponseSettingVM {\r\n private comment: Subscribable\r\n\r\n labels = labels\r\n\r\n responseSettingSelect: SelectDropdown\r\n\r\n busy = ko.observable(false);\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) config: CommentResponseSettingVMConfig,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo,\r\n @inject(wccModules.commentsService) private commentsService: CommentsService,\r\n @inject(wccModules.effects) effects: EffectsContainer\r\n ) {\r\n this.comment = ko.flattenComputed(config.comment);\r\n const isResponseMandatory = this.comment.pluck(c => c.isResponseMandatory, false);\r\n\r\n this.responseSettingSelect = new SelectDropdown({\r\n highlightActiveItem: true,\r\n theme: 'blue',\r\n\r\n items: [\r\n { title: labels.Mandatory.toLowerCase(), value: true },\r\n { title: labels.Optional.toLowerCase(), value: false }\r\n ]\r\n });\r\n\r\n this.responseSettingSelect.select(item => item.value === isResponseMandatory());\r\n\r\n effects.register([\r\n isResponseMandatory.subscribe(value => this.responseSettingSelect.select(item => item.value === value)),\r\n\r\n this.responseSettingSelect.selectedItem.subscribeNotNull(item => {\r\n if (item.value !== isResponseMandatory())\r\n this.changeResponseSetting(item.value);\r\n })\r\n ]);\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'css': {\r\n 'topic__comment__response-setting': true\r\n }\r\n });\r\n }\r\n\r\n private async changeResponseSetting(isMandatory: boolean) {\r\n if (this.busy()) return;\r\n\r\n const comment = this.comment();\r\n\r\n try {\r\n if (comment == undefined)\r\n throw new Error(messages.InvalidRequest);\r\n\r\n this.busy(true);\r\n\r\n await this.commentsService.changeResponseSetting(comment, isMandatory);\r\n } catch (ex) {\r\n system.handleError(ex);\r\n } finally {\r\n this.busy(false);\r\n }\r\n }\r\n}","define([\n \"!!../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./settings.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!./settings.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 { PureComputed, Subscribable, SubscribableOrNullableValue } from 'knockout';\r\nimport { CurrentUserManager } from 'managers/currentUser';\r\nimport { IWCCStorageManager } from 'managers/iStorage';\r\nimport { Person } from 'models/person';\r\nimport { TopicThread } from 'models/topicThread';\r\nimport './settings.html';\r\nimport './settings.scss';\r\n\r\nconst { isStaging, discussionId } = settings;\r\n\r\nexport interface CommentSettingsVMConfig {\r\n comment: SubscribableOrNullableValue\r\n visible: SubscribableOrNullableValue\r\n}\r\n\r\n@injectable()\r\nexport default class CommentSettingsVM {\r\n private isModeratorUser: Subscribable\r\n private isRegularComment: Subscribable\r\n private isVisibleBySetting: Subscribable\r\n\r\n comment: Subscribable\r\n\r\n isReady: Subscribable\r\n isResponseSettingShown: Subscribable\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) config: CommentSettingsVMConfig,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo,\r\n @inject(wccModules.storage) storage: IWCCStorageManager\r\n ) {\r\n this.comment = ko.flattenComputed(config.comment);\r\n\r\n this.isVisibleBySetting = ko.flattenComputed(config.visible, true);\r\n\r\n const participant = this.comment.mapNotNull(comment => Person.fromThread(comment));\r\n this.isRegularComment = participant.pluck(p => p.isRegular, false);\r\n\r\n const currentUserManager = storage.get(CurrentUserManager, { discussionId });\r\n const user = currentUserManager.pluck('person');\r\n this.isModeratorUser = user.pluck(u => u.isModerator, false);\r\n\r\n this.isResponseSettingShown = ko.pureComputed(() => this.checkIfShouldShowResponseSetting());\r\n\r\n this.isReady = this.isResponseSettingShown;\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'visible': this.isReady,\r\n\r\n 'css': {\r\n 'topic__comment__settings': true\r\n }\r\n });\r\n }\r\n\r\n private checkIfShouldShowResponseSetting() {\r\n return !isStaging &&\r\n this.isVisibleBySetting() &&\r\n this.isModeratorUser() &&\r\n this.isRegularComment(); \r\n } \r\n}","define([\n \"!!../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./tags.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!./tags.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 { PureComputed, Subscribable, SubscribableOrNullableValue } from 'knockout';\r\nimport { Tag } from 'models/tag';\r\nimport { TopicThread } from 'models/topicThread';\r\nimport './tags.html';\r\nimport './tags.scss';\r\n\r\ncomponents.preload('tags-list');\r\n\r\nexport interface CommentTagsVMConfig {\r\n comment: SubscribableOrNullableValue\r\n}\r\n\r\n@injectable()\r\nexport default class CommentTagsVM {\r\n tags: Subscribable>\r\n hasTags: Subscribable\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) config: CommentTagsVMConfig,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo\r\n ) {\r\n const comment = ko.flattenComputed(config.comment);\r\n\r\n this.tags = comment.pluck(c => c.tags, []);\r\n this.hasTags = this.tags.any();\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'visible': this.hasTags,\r\n\r\n 'css': {\r\n 'topic__comment__tags': true\r\n }\r\n });\r\n }\r\n}","define([\n \"!!../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./videoTools.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!./videoTools.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 { Subscribable, SubscribableOrNullableValue } from 'knockout';\r\nimport { ServicesContext } from 'services/context';\r\nimport './videoTools.html';\r\nimport './videoTools.scss';\r\n\r\ncomponents.preload('wcc-list');\r\n\r\nexport interface CommentVideoToolsVMConfig {\r\n commentId: SubscribableOrNullableValue\r\n videoId: SubscribableOrNullableValue\r\n}\r\n\r\n@injectable()\r\nexport default class CommentVideoToolsVM {\r\n private commentId: Subscribable\r\n private videoId: Subscribable\r\n\r\n private isGeneratingTranscript = ko.observable(false);\r\n\r\n labels = labels\r\n\r\n isBusy = ko.pureComputed(() => this.isGeneratingTranscript())\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) config: CommentVideoToolsVMConfig,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo,\r\n @inject(wccModules.servicesContext) private ctx: ServicesContext\r\n ) {\r\n this.commentId = ko.flattenComputed(config.commentId);\r\n this.videoId = ko.flattenComputed(config.videoId);\r\n\r\n const isReady = ko.pureComputed(() => this.commentId() != undefined && this.videoId() != undefined);\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'isVisible': isReady,\r\n\r\n 'css': {\r\n 'topic__comment__video-tools': true\r\n }\r\n }, this);\r\n }\r\n\r\n async generateTranscript() {\r\n if (this.isBusy()) return;\r\n\r\n try {\r\n const commentId = this.commentId();\r\n const videoId = this.videoId();\r\n\r\n if (commentId == undefined || videoId == undefined)\r\n throw new Error(messages.InvalidRequest);\r\n\r\n this.isGeneratingTranscript(true);\r\n\r\n await this.ctx.attachmentsService.queries.generateTranscript(commentId, videoId).post();\r\n } catch (ex) {\r\n system.handleError(ex);\r\n } finally {\r\n this.isGeneratingTranscript(false);\r\n }\r\n }\r\n}","define([\n \"!!../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./visibilityTags.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!./visibilityTags.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 { Subscribable, SubscribableOrNullableValue } from 'knockout';\r\nimport { CurrentUserManager } from 'managers/currentUser';\r\nimport { IWCCStorageManager } from 'managers/iStorage';\r\nimport TopicPeopleTagsManager from 'managers/tags/topicPeople';\r\nimport { Person } from 'models/person';\r\nimport { Tag } from 'models/tag';\r\nimport { TopicThread } from 'models/topicThread';\r\nimport './visibilityTags.html';\r\nimport './visibilityTags.scss';\r\n\r\nexport interface CommentVisibilitTagsVMCofig {\r\n comment?: SubscribableOrNullableValue\r\n}\r\n\r\n@injectable()\r\nexport default class CommentVisibilitTagsVM {\r\n private topicId: Subscribable\r\n private user: Subscribable\r\n\r\n label = `${labels.VisibleTo}:`\r\n\r\n tags: Subscribable>\r\n\r\n isActive: Subscribable\r\n isLoading: Subscribable\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) config: CommentVisibilitTagsVMCofig,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo,\r\n @inject(wccModules.storage) storage: IWCCStorageManager\r\n ) {\r\n const comment = ko.flattenComputed(config.comment);\r\n this.topicId = comment.pluck('topicId');\r\n const isForTaggedPeople = comment.pluck('isForTaggedPeople', false);\r\n const commentVisibilityTagIDs = comment.pluck('threadVisibilityTagIDs', []);\r\n\r\n const userManager = storage.get(CurrentUserManager, { discussionId: settings.discussionId });\r\n this.user = userManager.pluck('person');\r\n const isModeratorOrObserver = this.user.pluck('isModeratorOrObserver', false);\r\n\r\n const tagsManager = storage.get(TopicPeopleTagsManager, [this.topicId]);\r\n const tags = tagsManager.pluck('tags', []);\r\n\r\n this.isLoading = tagsManager.pluck('loading', true);\r\n this.tags = tags.filter(tag => commentVisibilityTagIDs().includes(tag.contentTagId() ?? ''));\r\n\r\n this.isActive = ko.pureComputed(() => isForTaggedPeople() && isModeratorOrObserver() && commentVisibilityTagIDs().length > 0);\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'visible': this.isActive,\r\n\r\n 'css': {\r\n 'topic__comment__visibility-tags': true\r\n }\r\n }, this);\r\n }\r\n}","define([\n \"!!../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./visibleTo.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!./visibleTo.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 { Subscribable, SubscribableOrNullableValue } from 'knockout';\r\nimport './visibleTo.html';\r\nimport './visibleTo.scss';\r\n\r\nexport interface CommentVisibleToVMCofig {\r\n items: SubscribableOrNullableValue>\r\n isLoading: SubscribableOrNullableValue\r\n}\r\n\r\n@injectable()\r\nexport default class CommentVisibleToVM {\r\n label = `${labels.VisibleTo}:`\r\n\r\n items: Subscribable>\r\n isLoading: Subscribable\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) config: CommentVisibleToVMCofig,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo\r\n ) {\r\n this.items = ko.flattenComputed(config.items, []);\r\n this.isLoading = ko.flattenComputed(config.isLoading, false);\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'css': {\r\n 'topic__comment__visible-to': true\r\n }\r\n }, this);\r\n }\r\n}","export const componentModelMetadataKey = Symbol('component:template');\r\n\r\nexport default function componentModel(model: any) {\r\n return (ctor: any) => {\r\n Reflect.defineMetadata(componentModelMetadataKey, model, ctor);\r\n return ctor;\r\n }\r\n}","import { Person } from \"models/person\";\r\n\r\nexport function getStatusText(person: Person) {\n if (person.isModerator())\n return labels.Moderator.toUpperCase();\n else if (person.isObserver())\n return labels.Observer.toUpperCase();\n\n return undefined;\n}","import { wccModules } from 'enums/wccModules';\r\nimport { inject, injectable } from 'inversify';\r\nimport { Subscribable } from 'knockout';\r\nimport { CollectionDataSource } from 'managers/datasources/collection';\r\nimport { EffectsContainer } from 'mixins/withEffects';\r\nimport PersonTiny, { JSONPersonTiny } from 'models/personTiny';\r\nimport { ServicesContext } from 'services/context';\r\n\nconst { accountId } = settings;\n\nexport interface TinyPeopleListManagerConfig {\n discussionId: string\r\n status: number,\r\n sortKey: string\r\n}\n\ninterface QueryData {\n MembershipStatusType: number\r\n SortKey: string\r\n}\n\n@injectable()\nexport class TinyPeopleListManager {\n private discussionId: string\n private queryData: QueryData\n\n private source: CollectionDataSource\n \n\n people: Subscribable>\n\n busy = ko.pureComputed(() => this.source.busy())\n loading = ko.pureComputed(() => this.source.busy() && this.source.requestsProcessed() === 0);\n updating = ko.pureComputed(() => this.source.busy() && this.source.requestsProcessed() > 0);\n\n constructor(\n @inject(wccModules.managerConfig) { discussionId, status, sortKey }: TinyPeopleListManagerConfig,\n @inject(wccModules.servicesContext) private ctx: ServicesContext,\n @inject(wccModules.effects) effects: EffectsContainer\n ) {\n this.discussionId = discussionId;\n\n this.queryData = {\n MembershipStatusType: status,\r\n SortKey: sortKey\r\n }\n\n this.source = effects.register(new CollectionDataSource({\n load: this.load.bind(this),\n update: this.update.bind(this),\n mapper: jsonPerson => new PersonTiny(jsonPerson)\n }));\n\n this.people = this.source.list; \n\n if (accountId)\n ctx.peopleService.subscriptions.accountPeople.subscribe(accountId);\n\n ctx.peopleService.events.personChanged.on(this.onPersonChanged.bind(this));\n }\n\n private load() {\n return this.ctx\n .peopleService\n .queries\n .discussionParticipantsTiny(this.discussionId)\n .toArrayPost(this.queryData);\n }\n\n private async update(person: PersonTiny) {\n const jsonPerson: JSONPersonTiny = await this.ctx.peopleService.queries\n .discussionParticipantsTiny(this.discussionId)\n .addArgs({ '$filter': 'PersonId eq cast(' + person.personId() + ', Edm.Guid)' })\n .background()\n .firstOrDefaultPost(this.queryData);\n\n person.update(jsonPerson);\n }\n\n private onPersonChanged(personId: string) {\n this.source.update(person => person.personId() === personId);\n }\n}","import { wccModules } from 'enums/wccModules';\r\nimport { inject, injectable } from 'inversify';\r\nimport { PureComputed } from 'knockout';\r\nimport { CurrentUserManager } from 'managers/currentUser';\r\nimport { IWCCStorageManager } from 'managers/iStorage';\r\n\r\nexport interface DiscussionTranslationManagerConfig {\r\n discussionId: string\r\n}\r\n\r\n@injectable()\r\nexport default class DiscussionTranslationManager {\r\n isAllowed: PureComputed\r\n isAllowedToShow = ko.pureComputed(() => this.isAllowed() && settings.ui.isTranslationShown())\r\n\r\n constructor(\r\n @inject(wccModules.managerConfig) { discussionId }: DiscussionTranslationManagerConfig,\r\n @inject(wccModules.storage) storage: IWCCStorageManager\r\n ) {\r\n const userManager = storage.get(CurrentUserManager, { discussionId });\r\n const user = userManager.pluck('person');\r\n const isModeratorOrObserver = user.pluck('isModeratorOrObserver', false);\r\n\r\n this.isAllowed = ko.pureComputed(() => settings.translationLanguage != undefined && isModeratorOrObserver());\r\n }\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 { Func } from 'interfaces/func';\r\nimport { SubscribableOrNullableValue } from 'knockout';\r\nimport { withEffects } from 'mixins/withEffects';\r\n\r\nexport default class NodeAttributeTracker {\r\n private effects = withEffects();\r\n\r\n constructor(node: SubscribableOrNullableValue, attribute: string, predicate: Func, oldValue: string | null]>, action: Action<[JQuery]>) {\r\n this.effects.register(node => {\r\n if (node != undefined) {\r\n const $node = $(node);\r\n\r\n const observer = new MutationObserver(mutations => {\r\n mutations.forEach(mutation => {\r\n if (predicate($node, mutation.oldValue))\r\n action($node);\r\n });\r\n });\r\n\r\n observer.observe(node, { attributes: true, attributeOldValue: true, attributeFilter: [attribute] });\r\n\r\n if (predicate($node, null))\r\n action($node);\r\n\r\n return () => observer.disconnect();\r\n }\r\n }, [node]);\r\n }\r\n\r\n dispose() {\r\n this.effects.dispose();\r\n }\r\n}","import { JSONTag, Tag } from 'models/tag';\r\nimport TagsManagerBase from './base';\r\n\nexport default class TopicPeopleTagsManager extends TagsManagerBase {\n topicId: string\n\n constructor(topicId: string) {\n super();\n\n this.topicId = topicId;\n }\n\n addTag(jsonTag: JSONTag): Promise {\n throw new Error('Unsupported operation');\n }\n\n removeTag(tag: Tag): Promise {\n throw new Error('Unsupported operation');\n }\n\n protected async load() {\n return await this.ctx.tagsService.queries.topicPeopleTags(this.topicId).background().toArray();\n }\n}","import { ThreadEditingOverlayStageConfig } from 'components/threadEditingOverlay/stage';\r\nimport { wccModules } from 'enums/wccModules';\r\nimport { inject, injectable } from 'inversify';\r\nimport { withEffects } from 'mixins/withEffects';\r\nimport { Person } from 'models/person';\r\nimport { TopicThread } from 'models/topicThread';\r\nimport { extendedAppContainer } from '../configuration/inversify/container/extended';\r\nimport { CurrentUserManager } from './currentUser';\r\nimport device from './device';\r\nimport { IWCCStorageManager } from './iStorage';\r\nimport overlayManager from './overlay';\r\nimport SimpleTopicManager from './simpleTopic';\r\nimport CommentsManager from './topic/comments';\r\nimport ActivityFormManager, { ActivityFormEditorConfig } from './topic/form';\r\n\r\ncomponents.preload('thread-editing-overlay-stage');\r\n\r\n@injectable()\r\nclass ThreadEditingOverlay {\r\n constructor(\r\n @inject(wccModules.storage) private storage: IWCCStorageManager\r\n ) { }\r\n\r\n edit(thread: TopicThread) {\r\n const effects = withEffects();\r\n\r\n const activityFormManager = effects.register(new ActivityFormManager(settings.discussionId, thread.topicId, { isMobile: device.isMobile, thread }));\r\n const formEditorConfig = activityFormManager.getEditorConfig('form');\r\n\r\n overlayManager.toOverlay('', {\r\n lock: true,\r\n data: stage => {\r\n return {\r\n editorConfig: formEditorConfig.pluck(config => ({\r\n ...config,\r\n\r\n onSave: async jsonThreads => {\r\n config.onSave?.(jsonThreads);\r\n await this.editNextThreadIfAllowed(thread);\r\n stage.close();\r\n },\r\n\r\n onCancel: () => {\r\n config.onCancel?.();\r\n stage.close();\r\n }\r\n }))\r\n }\r\n },\r\n\r\n onClose: () => {\r\n effects.dispose();\r\n }\r\n });\r\n }\r\n\r\n private async editNextThreadIfAllowed(thread: TopicThread) {\r\n const userManager = this.storage.getInstance(CurrentUserManager, {});\r\n const topicManager = this.storage.getInstance(SimpleTopicManager, { topicId: thread.topicId() });\r\n\r\n if (userManager != undefined && topicManager != undefined) {\r\n const user = await userManager.person.whenNotNull();\r\n const topic = await topicManager.topic.whenNotNull();\r\n\r\n const threadCreator = Person.fromThread(thread);\r\n\r\n const shouldContinue = settings.allowContinuousSurveyEditing() &&\r\n topic.isSurvey()\r\n user.isModerator() &&\r\n threadCreator.isRegular();\r\n\r\n if (shouldContinue) {\r\n const commentsManager = this.storage.getInstance(CommentsManager, { topicId: thread.topicId() });\r\n\r\n if (commentsManager != undefined) {\r\n const nextThread = await this.getNextParticipantComment(commentsManager, thread);\r\n\r\n if (nextThread != undefined)\r\n this.edit(nextThread);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private async getNextParticipantComment(commentsManager: CommentsManager, thread: TopicThread): Promise {\r\n await commentsManager.busy.when(v => !v);\r\n\r\n const comments = commentsManager.comments();\r\n const idx = comments.indexOf(thread);\r\n\r\n if (idx == -1 && !commentsManager.allPagesLoaded()) {\r\n commentsManager.loadMore();\r\n return await this.getNextParticipantComment(commentsManager, thread);\r\n } else if (idx != -1) {\r\n const targetComments = comments.slice(idx + 1);\r\n const nextThread = targetComments.find(c => !c.isModerator() && !c.isObserver());\r\n\r\n if (nextThread == undefined && !commentsManager.allPagesLoaded()) {\r\n commentsManager.loadMore();\r\n return await this.getNextParticipantComment(commentsManager, thread);\r\n } else {\r\n return nextThread;\r\n }\r\n }\r\n }\r\n}\r\n\r\nconst threadEditingOverlay = extendedAppContainer.resolve(ThreadEditingOverlay);\r\n\r\nexport default threadEditingOverlay;","import storageDefaults from 'decorators/storageDefaults';\r\nimport storageIgnore from 'decorators/storageIgnore';\r\nimport { RepliesViews } from 'enums/replies/views';\r\nimport { wccModules } from 'enums/wccModules';\r\nimport { inject, injectable } from 'inversify';\r\nimport { CollectionDataSource } from 'managers/datasources/collection';\r\nimport events from 'managers/events';\r\nimport SignalREventsManager from 'managers/signalR/events';\r\nimport { IWCCStorageManager } from 'managers/iStorage';\r\nimport { EffectsContainer } from 'mixins/withEffects';\r\nimport { JSONTopicThread, TopicThread } from 'models/topicThread';\r\nimport { ServicesContext } from 'services/context';\r\nimport TopicThreadsEventsManager from '../threads/eventsProcessor';\r\n\r\nexport interface CommentRepliesManagerConfig {\r\n topicId: string\r\n commentId: string\r\n view: RepliesViews\r\n isEmpty: boolean\r\n}\r\n\r\n@injectable()\n@storageDefaults(>{ view: 'all' })\n@storageIgnore('isEmpty')\nexport default class CommentRepliesManager {\n private source: CollectionDataSource\n\n private topicId: string\n private commentId: string\n private view: RepliesViews\n\n replies = ko.pureComputed(() => this.source.list());\n\n busy = ko.pureComputed(() => this.source.busy());\n loading = ko.pureComputed(() => this.source.busy() && this.source.requestsProcessed() === 0);\n updating = ko.pureComputed(() => this.source.busy() && this.source.requestsProcessed() > 0);\n\n constructor(\n @inject(wccModules.managerConfig) { topicId, commentId, view, isEmpty }: CommentRepliesManagerConfig,\n @inject(wccModules.servicesContext) private ctx: ServicesContext,\n @inject(wccModules.storage) storage: IWCCStorageManager,\n @inject(wccModules.signalREvents) signalREvents: SignalREventsManager,\n @inject(wccModules.effects) effects: EffectsContainer\n ) {\n this.topicId = topicId;\n this.commentId = commentId;\n this.view = view;\n\n this.source = effects.register(new CollectionDataSource({\n key: 'id',\n load: this.load.bind(this),\n update: this.update.bind(this),\n mapper: jsonThread => new TopicThread(jsonThread),\n isEmpty: isEmpty\n }));\n\n effects.register(new TopicThreadsEventsManager({\n topicId: this.topicId,\n source: this.source\n }, ctx, storage, signalREvents));\n\n ctx.commentsService.events.newTopicReply.on(this.onNewReply.bind(this)); \n\n effects.register([\n events.replyAdded.on(this.onLocalReplyAdded.bind(this)),\n events.replyUpdated.on(this.onLocalReplyUpdated.bind(this)),\n events.replyDeleted.on(this.onLocalReplyDeleted.bind(this))\n ]); \r\n }\n\n private load() {\r\n return this.ctx\r\n .commentsService\r\n .queries\r\n .commentReplies(this.commentId)\r\n .addArgs({ '$orderby': 'TopicThreadId asc', 'view': this.view })\r\n .background()\r\n .toArrayPost({ '': this.replies().map(r => r.id()) });\r\n }\r\n\r\n private async update(reply: TopicThread) {\r\n reply.update(await this.getThread(reply.id()));\r\n }\n\n private async getThread(threadId?: string) {\n if (threadId)\n return await this.ctx.commentsService.queries.thread(threadId).important().firstOrDefault();\n else\n throw new Error(messages.InvalidRequest);\r\n }\n\n private onNewReply(threadId: string, parenThreadId: string, topicId: string) {\n if (this.topicId === topicId && this.commentId === parenThreadId)\n this.source.load(true);\n } \n\n private onLocalReplyAdded(topicId: string, commentId: string, jsonThread: JSONTopicThread) {\n if (this.topicId === topicId && this.commentId === commentId) {\n this.source.add(jsonThread);\n _(this.replies()).each(reply => reply.isInToDoList(false));\n }\n }\n\n private onLocalReplyUpdated(topicId: string, commentId: string, replyId: string, jsonThread: JSONTopicThread) {\n if (this.topicId === topicId && this.commentId === commentId)\n this.source.findSync(replyId, reply => reply.update(jsonThread));\n }\n\n private onLocalReplyDeleted(topicId: string, commentId: string, replyId: string) {\n if (this.topicId === topicId && this.commentId === commentId)\n this.source.findSync(replyId, reply => reply.isDeleted(true));\n } \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 { Subscribable } from 'knockout';\r\nimport { CollectionDataSource } from 'managers/datasources/collection';\r\nimport { EffectsContainer } from 'mixins/withEffects';\r\nimport Participant from 'models/participant';\r\nimport { ServicesContext } from 'services/context';\r\n\r\nexport interface TopicParticipantsManagerConfig {\r\n topicId: string\r\n filter: string\r\n}\r\n\r\n@injectable()\r\nexport default class TopicParticipantsManager {\r\n private topicId: string\r\n private filter: string\r\n\r\n private source: CollectionDataSource\r\n\r\n people: Subscribable>\r\n\r\n busy = ko.pureComputed(() => this.source.busy())\r\n loading = ko.pureComputed(() => this.source.busy() && this.source.requestsProcessed() === 0);\r\n updating = ko.pureComputed(() => this.source.busy() && this.source.requestsProcessed() > 0);\r\n\r\n constructor(\r\n @inject(wccModules.managerConfig) { topicId, filter }: TopicParticipantsManagerConfig,\r\n @inject(wccModules.servicesContext) private ctx: ServicesContext,\r\n @inject(wccModules.effects) effects: EffectsContainer\r\n ) {\r\n this.topicId = topicId;\r\n this.filter = filter;\r\n\r\n this.source = effects.register(new CollectionDataSource({\r\n load: this.load.bind(this),\r\n mapper: jsonPerson => new Participant(jsonPerson)\r\n }));\r\n\r\n this.people = this.source.list;\r\n }\r\n\r\n private load() {\r\n const args: { [key: string]: string } = {};\r\n\r\n if (this.filter.length > 0)\r\n args['filter'] = this.filter;\r\n\r\n return this.ctx.peopleService.queries.topicParticipants(this.topicId).addArgs(args).toArray();\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 } from 'knockout'\r\n\r\nexport interface JSONParticipant {\n PersonId?: string\n\n AnonymousName?: string\n FullName?: string\n FirstName?: string\n LastName?: string\n ImageURL?: string\n\n Status?: number\n SortOrder?: number\n\n CommentsCount?: number\n RepliesCount?: number\n\n IsFollowed?: boolean\n IsOnline?: boolean\n IsModerator?: boolean\n IsObserver?: boolean \n \n TaskMemberTagIds?: Array\r\n}\n\nexport default class Participant {\n personId: Observable\n\n anonymousName: Observable\n fullName: Observable\n firstName: Observable\n lastName: Observable\n imageURL: Observable\n\n status: Observable\n sortOrder: Observable\n\n commentsCount: Observable\n repliesCount: Observable\n\n isFollowed: Observable\n isOnline: Observable\n isModerator: Observable\n isObserver: Observable\n\n taskMemberTagIds: ObservableArray\n\n constructor(data?: JSONParticipant) {\n this.personId = ko.observable(data?.PersonId);\n\n this.anonymousName = ko.observable(data?.AnonymousName);\n this.fullName = ko.observable(data?.FullName);\n this.firstName = ko.observable(data?.FirstName);\n this.lastName = ko.observable(data?.LastName);\n this.imageURL = ko.observable(data?.ImageURL);\n\n this.status = ko.observable(data?.Status);\n this.sortOrder = ko.observable(data?.SortOrder);\n\n this.commentsCount = ko.observable(data?.CommentsCount ?? 0);\n this.repliesCount = ko.observable(data?.RepliesCount ?? 0);\n\n this.isFollowed = ko.observable(data?.IsFollowed ?? false);\n this.isOnline = ko.observable(data?.IsOnline ?? false);\n this.isModerator = ko.observable(data?.IsModerator ?? false);\n this.isObserver = ko.observable(data?.IsObserver ?? false);\n \n\n this.taskMemberTagIds = ko.observableArray(data?.TaskMemberTagIds ?? []);\n }\n}","import { Observable } from 'knockout'\r\n\r\nexport interface JSONPersonTiny {\r\n PersonId?: string\r\n FullName?: string\r\n ImageURL?: string\r\n}\r\n\r\nexport default class PersonTiny {\r\n personId: Observable\r\n fullName: Observable\r\n imageURL: Observable\r\n\r\n constructor(config?: JSONPersonTiny) {\r\n this.personId = ko.observable(config?.PersonId);\r\n this.fullName = ko.observable(config?.FullName);\r\n this.imageURL = ko.observable(config?.ImageURL);\r\n }\r\n\r\n update(config: JSONPersonTiny) {\r\n this.personId(config.PersonId);\r\n this.fullName(config.FullName);\r\n this.imageURL(config.ImageURL);\r\n }\r\n}","import { Observable } from 'knockout';\r\nimport WCCEntity from './entity';\r\n\r\nexport interface JSONThreadVote {\r\n PersonId: string,\r\n ThreadId: string,\r\n VoteValue: number,\r\n LinkedThreadId: string\r\n}\r\n\r\nexport default class ThreadVote extends WCCEntity {\r\n personId: Observable\r\n threadId: Observable\r\n value: Observable\r\n linkedThreadId: Observable\r\n\r\n constructor(json: JSONThreadVote) {\r\n super();\r\n\r\n this.personId = this.createField(json, 'PersonId');\r\n this.threadId = this.createField(json, 'ThreadId');\r\n this.value = this.createField(json, 'VoteValue', 0);\r\n this.linkedThreadId = this.createField(json, 'LinkedThreadId');\r\n }\r\n}","import { Observable } from 'knockout';\r\nimport WCCEntity from './entity';\r\n\r\nexport interface JSONVideoPresentationProgress {\r\n PersonId?: string\r\n FirstName?: string\r\n LastName?: string\r\n\r\n AttemptNumber?: number\r\n CurrentPosition?: number\r\n PreciseProgress?: number\r\n}\r\n\r\nexport default class VideoPresentationProgress extends WCCEntity {\r\n personId: Observable\r\n firstName: Observable\r\n lastName: Observable\r\n\r\n attemptNumber: Observable\r\n currentPosition: Observable\r\n preciseProgress: Observable\r\n\r\n constructor(data?: JSONVideoPresentationProgress) {\r\n super();\r\n\r\n this.personId = this.createField(data, 'PersonId');\r\n this.firstName = this.createField(data, 'FirstName');\r\n this.lastName = this.createField(data, 'LastName');\r\n\r\n this.attemptNumber = this.createField(data, 'AttemptNumber', 1);\r\n this.currentPosition = this.createField(data, 'CurrentPosition', 0);\r\n this.preciseProgress = this.createField(data, 'PreciseProgress', 0);\r\n }\r\n}","define(function () {\r\n const system = require('helpers/system').SystemHelpers;\r\n\r\n return function (html) {\r\n system.getTemplatesAndResources(html)\r\n .forEach(function (node) { document.head.appendChild(node) });\r\n }\r\n});","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".wcc-dropdown{display:inline-block;position:relative;max-width:100%;vertical-align:text-bottom}.wcc-dropdown .dropdown-toggle{overflow:hidden}.wcc-dropdown .dropdown-toggle .wcc-link{color:#7a7a7a;border-bottom-color:#7a7a7a;font-size:13px;display:inline-block}.wcc-dropdown .dropdown-toggle .wcc-link:hover{color:#474747;border-bottom-color:#474747}.wcc-dropdown .dropdown-header{user-select:none}.wcc-dropdown li a{overflow:hidden;text-overflow:ellipsis}.wcc-dropdown.wcc-dropdown--custom-scroll .dropdown-menu::-webkit-scrollbar{width:8px;height:8px}.wcc-dropdown.wcc-dropdown--custom-scroll .dropdown-menu::-webkit-scrollbar-track{background-color:#e0e0dc;border-radius:4px}.wcc-dropdown.wcc-dropdown--custom-scroll .dropdown-menu::-webkit-scrollbar-thumb{background-color:#a0a0a0;border-radius:4px}.wcc-dropdown--black .dropdown-toggle .wcc-link{color:#262626;border-bottom-color:#262626}.wcc-dropdown--black .dropdown-toggle .wcc-link:hover{color:#000;border-bottom-color:#000}.wcc-dropdown--blue .dropdown-toggle .wcc-link{color:#5ca2dd;border-bottom-color:#5ca2dd}.wcc-dropdown--blue .dropdown-toggle .wcc-link:hover{color:#246faf;border-bottom-color:#246faf}.wcc-dropdown--grey .dropdown-toggle .wcc-link{color:#c6c6c6;border-bottom-color:#c6c6c6}.wcc-dropdown--grey .dropdown-toggle .wcc-link:hover{color:#939393;border-bottom-color:#939393}.wcc-dropdown--white .dropdown-toggle .wcc-link{color:#fff;border-bottom-color:#fff}.wcc-dropdown--white .dropdown-toggle .wcc-link:hover{color:#ccc;border-bottom-color:#ccc}.wcc-dropdown--text-m .dropdown-toggle .wcc-link{font-size:14px}.wcc-dropdown--text-xs .dropdown-toggle .wcc-link{font-size:12px}.wcc-dropdown--text-lg .dropdown-toggle .wcc-link{font-size:16px}.wcc-dropdown--dynamic .dropdown-menu{max-height:500px;max-width:360px;overflow-x:hidden}.wcc-dropdown--dynamic .dropdown-menu .divider:last-child{display:none}\", \"\"]);\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, \".comment-body{display:block}.comment-body.comment-body--compact .comment-body__attachments{margin-top:3px;padding:0px}.comment-body__attachments{padding:3px}.comment-body__attachments .wcc-video{margin-top:5px}.comment-body__attachments .wcc-video:first-child{margin-top:0}.comment-body__audios{margin-top:5px}.comment-body__audios:first-child{margin-top:0;padding:7px}.comment-body__audios .wcc-audio{margin-bottom:3px}.comment-body__attachments__files-grid{margin-top:5px}.comment-body__attachments__files-grid:first-child{margin-top:0}.comment-body__video-transcript{padding:15px 12px 12px}.comment-body__audio-transcript{padding:15px 8px 8px}\", \"\"]);\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, \".topic__comment{display:block;position:relative}.topic__comment .wcc-avatar{width:46px;height:46px}.topic__comment:hover comment-done-cover{display:none}.topic__comment.topic__comment--moderator .topic__comment__container{border:2px solid #ff9e6b}.topic__comment.topic__comment--moderator .topic__comment__container .topic__comment__header{background-color:#ffeee5}.topic__comment.topic__comment--observer .topic__comment__container{border:2px solid #3aad3e}.topic__comment.topic__comment--observer .topic__comment__container .topic__comment__header{background-color:#e5ffe6}.topic__comment.topic__comment--private .topic__comment__container{border:2px solid #f5332e}.topic__comment.topic__comment--response-mandatory .topic__comment__container{border:2px solid #5ca2dd}.topic__comment.topic__comment--pinned .topic__comment__container{border:3px solid #9b59b6}.topic__comment.topic__comment--abuse .topic__comment__container{border:2px solid orange}.topic__comment.topic__comment--todo .topic__comment__body-footer-wrapper>.comment-body{background-color:#fffbbf}.topic__comment.topic__comment--compact .topic__comment__header{padding:10px}.topic__comment.topic__comment--compact .wcc-avatar{width:40px;height:40px}.topic__comment.topic__comment--limited .comment-body{overflow:auto}.topic__comment__section:not(:empty):not(:last-child){border-bottom:1px solid #c6c6c6}.topic__comment__non-native-speaker-hint{font-size:10px;color:#c6c6c6;font-style:italic;padding:0 8px}.topic__comment__replies .comment__replies{border-bottom:1px solid #c6c6c6}.topic__comment__container{display:flex;flex-direction:column;transition:border ease-in-out 250ms;background-color:#fff;border:0px solid transparent;border-radius:4px;min-height:0}.topic__comment__container .wcc-link{color:#7a7a7a;border-bottom-color:#7a7a7a;border-bottom:none}.topic__comment__container .wcc-link:hover{color:#474747;border-bottom-color:#474747}.topic__comment__header{flex-shrink:0;display:flex;position:relative;padding:15px;background-color:#d3d3d3;border-top-left-radius:4px;border-top-right-radius:4px;gap:10px}.topic__comment__status{font-size:7px;text-transform:uppercase;font-weight:bold;font-family:Verdana;line-height:normal;color:#c27f6c}.topic__comment__header__fields{width:100%}.topic__comment__header__votes-bubbles{flex-shrink:0;margin:5px 0}.topic__comment__header__controls{position:absolute;top:0;right:0;bottom:0;display:flex;flex-direction:column;justify-content:space-between;align-items:flex-end;padding:2px 5px}.topic__comment__header__controls-section{display:flex;align-items:center;white-space:nowrap;height:33%;line-height:140%}.topic__comment__header__controls-section .wcc-link,.topic__comment__header__controls-section .loader{margin-left:7px}.topic__comment__header__controls-section:first-child{align-items:flex-start}.topic__comment__header__controls-section:last-child{align-items:flex-end}.topic__comment__header__badge{white-space:nowrap;animation-duration:400ms}.topic__comment__body-footer-wrapper{position:relative;display:flex;flex-direction:column;min-height:0}.topic__comment__body-footer-wrapper>:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px}.topic__comment__message{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);font-weight:bold;font-size:12px;color:#c6c6c6;text-align:center}.topic__comment__message .glyphicons{font-size:43px}.topic__comment__done-cover{opacity:.2}\", \"\"]);\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, \".comment-content{display:block}.comment-content--compact .comment-content__section{padding:0}.comment-content--compact .comment-content__section--translation{margin-top:5px;border-radius:4px;padding:5px 7px}.comment-content__section{position:relative;padding:15px;word-break:break-word}.comment-content__section--translation{background-color:#a7ddff;padding-top:5px}.comment-content__controls{font-size:12px;color:#7a7a7a;display:flex;justify-content:space-between;align-items:center;margin-bottom:2px}\", \"\"]);\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, \".wcc-badge{box-shadow:#000 0 0 4px;-webkit-box-shadow:0 0 4px 0 #000;display:inline-block;padding:4px 7px;border-radius:4px;font-size:11px;font-weight:bold;color:#fff;text-align:center;line-height:100%;z-index:1}.wcc-badge--red{background-color:#cb0000}.wcc-badge--blue{background-color:blue}.wcc-badge--green{background-color:#00a500}.wcc-badge--no-shadow{box-shadow:transparent 0 0 0;-webkit-box-shadow:0 0 0 0 transparent}.wcc-badge--sm{padding:2px 4px;font-size:10px}.wcc-badge--top-right{position:absolute;right:0;bottom:100%;transform:translateX(50%) translateY(50%)}.wcc-ribbon{transform:rotate(-45deg);-moz-transform:rotate(-45deg);-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);position:absolute;top:14px;left:-22px;width:90px;height:0;border-radius:3px;border-bottom:18px solid;border-left:18px solid transparent;border-right:18px solid transparent;font-size:11px;color:#fff;opacity:.8;z-index:1}.wcc-ribbon.wcc-ribbon--bottom-right{transform:rotate(136deg);-moz-transform:rotate(136deg);-webkit-transform:rotate(136deg);-ms-transform:rotate(136deg);-o-transform:rotate(136deg);top:initial;left:initial;right:-19px;bottom:8px}.wcc-ribbon.wcc-ribbon--bottom-right .wcc-ribbon__content{transform:rotate(180deg);-moz-transform:rotate(180deg);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);height:20px}.task__topics-list__topic .wcc-ribbon{top:-4px;left:-5px}.wcc-ribbon--red{border-bottom-color:#cb0000}.wcc-ribbon--green{border-bottom-color:#1c691c}.wcc-ribbon--yellow{border-bottom-color:#ffbb3f;color:#000}.wcc-ribbon--orange{border-bottom-color:orange;color:#000;opacity:1;font-weight:bold}.wcc-ribbon--blue{border-bottom-color:#5ca2dd}.wcc-ribbon--grey{border-bottom-color:#f8f8f7;color:#000;opacity:1}.wcc-ribbon--ar,.wcc-ribbon--cy,.wcc-ribbon--da,.wcc-ribbon--de,.wcc-ribbon--es,.wcc-ribbon--el,.wcc-ribbon--fil-ph,.wcc-ribbon--hi-in,.wcc-ribbon--hu,.wcc-ribbon--fr,.wcc-ribbon--id,.wcc-ribbon--it,.wcc-ribbon--ja,.wcc-ribbon--ko,.wcc-ribbon--ms,.wcc-ribbon--nl,.wcc-ribbon--pl,.wcc-ribbon--pt,.wcc-ribbon--ro,.wcc-ribbon--ru,.wcc-ribbon--sv,.wcc-ribbon--th,.wcc-ribbon--tr,.wcc-ribbon--vi,.wcc-ribbon--cs-cz,.wcc-ribbon--zh-cn,.wcc-ribbon--zh-tw{transform:translateY(-33%);-moz-transform:translateY(-33%);-webkit-transform:translateY(-33%);-ms-transform:translateY(-33%);-o-transform:translateY(-33%);top:0;left:-5px;height:auto;width:auto;border:1px solid #262626;border-radius:2px;padding:0px 6px;opacity:1;z-index:999}.wcc-ribbon--ar .wcc-ribbon__content,.wcc-ribbon--cy .wcc-ribbon__content,.wcc-ribbon--da .wcc-ribbon__content,.wcc-ribbon--de .wcc-ribbon__content,.wcc-ribbon--es .wcc-ribbon__content,.wcc-ribbon--el .wcc-ribbon__content,.wcc-ribbon--fil-ph .wcc-ribbon__content,.wcc-ribbon--hi-in .wcc-ribbon__content,.wcc-ribbon--hu .wcc-ribbon__content,.wcc-ribbon--fr .wcc-ribbon__content,.wcc-ribbon--id .wcc-ribbon__content,.wcc-ribbon--it .wcc-ribbon__content,.wcc-ribbon--ja .wcc-ribbon__content,.wcc-ribbon--ko .wcc-ribbon__content,.wcc-ribbon--ms .wcc-ribbon__content,.wcc-ribbon--nl .wcc-ribbon__content,.wcc-ribbon--pl .wcc-ribbon__content,.wcc-ribbon--pt .wcc-ribbon__content,.wcc-ribbon--ro .wcc-ribbon__content,.wcc-ribbon--ru .wcc-ribbon__content,.wcc-ribbon--sv .wcc-ribbon__content,.wcc-ribbon--th .wcc-ribbon__content,.wcc-ribbon--tr .wcc-ribbon__content,.wcc-ribbon--vi .wcc-ribbon__content,.wcc-ribbon--cs-cz .wcc-ribbon__content,.wcc-ribbon--zh-cn .wcc-ribbon__content,.wcc-ribbon--zh-tw .wcc-ribbon__content{height:auto}.wcc-ribbon--ar.wcc-ribbon--red,.wcc-ribbon--cy.wcc-ribbon--red,.wcc-ribbon--da.wcc-ribbon--red,.wcc-ribbon--de.wcc-ribbon--red,.wcc-ribbon--es.wcc-ribbon--red,.wcc-ribbon--el.wcc-ribbon--red,.wcc-ribbon--fil-ph.wcc-ribbon--red,.wcc-ribbon--hi-in.wcc-ribbon--red,.wcc-ribbon--hu.wcc-ribbon--red,.wcc-ribbon--fr.wcc-ribbon--red,.wcc-ribbon--id.wcc-ribbon--red,.wcc-ribbon--it.wcc-ribbon--red,.wcc-ribbon--ja.wcc-ribbon--red,.wcc-ribbon--ko.wcc-ribbon--red,.wcc-ribbon--ms.wcc-ribbon--red,.wcc-ribbon--nl.wcc-ribbon--red,.wcc-ribbon--pl.wcc-ribbon--red,.wcc-ribbon--pt.wcc-ribbon--red,.wcc-ribbon--ro.wcc-ribbon--red,.wcc-ribbon--ru.wcc-ribbon--red,.wcc-ribbon--sv.wcc-ribbon--red,.wcc-ribbon--th.wcc-ribbon--red,.wcc-ribbon--tr.wcc-ribbon--red,.wcc-ribbon--vi.wcc-ribbon--red,.wcc-ribbon--cs-cz.wcc-ribbon--red,.wcc-ribbon--zh-cn.wcc-ribbon--red,.wcc-ribbon--zh-tw.wcc-ribbon--red{background-color:#cb0000}.wcc-ribbon--ar.wcc-ribbon--green,.wcc-ribbon--cy.wcc-ribbon--green,.wcc-ribbon--da.wcc-ribbon--green,.wcc-ribbon--de.wcc-ribbon--green,.wcc-ribbon--es.wcc-ribbon--green,.wcc-ribbon--el.wcc-ribbon--green,.wcc-ribbon--fil-ph.wcc-ribbon--green,.wcc-ribbon--hi-in.wcc-ribbon--green,.wcc-ribbon--hu.wcc-ribbon--green,.wcc-ribbon--fr.wcc-ribbon--green,.wcc-ribbon--id.wcc-ribbon--green,.wcc-ribbon--it.wcc-ribbon--green,.wcc-ribbon--ja.wcc-ribbon--green,.wcc-ribbon--ko.wcc-ribbon--green,.wcc-ribbon--ms.wcc-ribbon--green,.wcc-ribbon--nl.wcc-ribbon--green,.wcc-ribbon--pl.wcc-ribbon--green,.wcc-ribbon--pt.wcc-ribbon--green,.wcc-ribbon--ro.wcc-ribbon--green,.wcc-ribbon--ru.wcc-ribbon--green,.wcc-ribbon--sv.wcc-ribbon--green,.wcc-ribbon--th.wcc-ribbon--green,.wcc-ribbon--tr.wcc-ribbon--green,.wcc-ribbon--vi.wcc-ribbon--green,.wcc-ribbon--cs-cz.wcc-ribbon--green,.wcc-ribbon--zh-cn.wcc-ribbon--green,.wcc-ribbon--zh-tw.wcc-ribbon--green{background-color:#1c691c}.wcc-ribbon--ar.wcc-ribbon--yellow,.wcc-ribbon--cy.wcc-ribbon--yellow,.wcc-ribbon--da.wcc-ribbon--yellow,.wcc-ribbon--de.wcc-ribbon--yellow,.wcc-ribbon--es.wcc-ribbon--yellow,.wcc-ribbon--el.wcc-ribbon--yellow,.wcc-ribbon--fil-ph.wcc-ribbon--yellow,.wcc-ribbon--hi-in.wcc-ribbon--yellow,.wcc-ribbon--hu.wcc-ribbon--yellow,.wcc-ribbon--fr.wcc-ribbon--yellow,.wcc-ribbon--id.wcc-ribbon--yellow,.wcc-ribbon--it.wcc-ribbon--yellow,.wcc-ribbon--ja.wcc-ribbon--yellow,.wcc-ribbon--ko.wcc-ribbon--yellow,.wcc-ribbon--ms.wcc-ribbon--yellow,.wcc-ribbon--nl.wcc-ribbon--yellow,.wcc-ribbon--pl.wcc-ribbon--yellow,.wcc-ribbon--pt.wcc-ribbon--yellow,.wcc-ribbon--ro.wcc-ribbon--yellow,.wcc-ribbon--ru.wcc-ribbon--yellow,.wcc-ribbon--sv.wcc-ribbon--yellow,.wcc-ribbon--th.wcc-ribbon--yellow,.wcc-ribbon--tr.wcc-ribbon--yellow,.wcc-ribbon--vi.wcc-ribbon--yellow,.wcc-ribbon--cs-cz.wcc-ribbon--yellow,.wcc-ribbon--zh-cn.wcc-ribbon--yellow,.wcc-ribbon--zh-tw.wcc-ribbon--yellow{background-color:#ffbb3f}.wcc-ribbon--ar.wcc-ribbon--orange,.wcc-ribbon--cy.wcc-ribbon--orange,.wcc-ribbon--da.wcc-ribbon--orange,.wcc-ribbon--de.wcc-ribbon--orange,.wcc-ribbon--es.wcc-ribbon--orange,.wcc-ribbon--el.wcc-ribbon--orange,.wcc-ribbon--fil-ph.wcc-ribbon--orange,.wcc-ribbon--hi-in.wcc-ribbon--orange,.wcc-ribbon--hu.wcc-ribbon--orange,.wcc-ribbon--fr.wcc-ribbon--orange,.wcc-ribbon--id.wcc-ribbon--orange,.wcc-ribbon--it.wcc-ribbon--orange,.wcc-ribbon--ja.wcc-ribbon--orange,.wcc-ribbon--ko.wcc-ribbon--orange,.wcc-ribbon--ms.wcc-ribbon--orange,.wcc-ribbon--nl.wcc-ribbon--orange,.wcc-ribbon--pl.wcc-ribbon--orange,.wcc-ribbon--pt.wcc-ribbon--orange,.wcc-ribbon--ro.wcc-ribbon--orange,.wcc-ribbon--ru.wcc-ribbon--orange,.wcc-ribbon--sv.wcc-ribbon--orange,.wcc-ribbon--th.wcc-ribbon--orange,.wcc-ribbon--tr.wcc-ribbon--orange,.wcc-ribbon--vi.wcc-ribbon--orange,.wcc-ribbon--cs-cz.wcc-ribbon--orange,.wcc-ribbon--zh-cn.wcc-ribbon--orange,.wcc-ribbon--zh-tw.wcc-ribbon--orange{background-color:orange}.wcc-ribbon--ar.wcc-ribbon--blue,.wcc-ribbon--cy.wcc-ribbon--blue,.wcc-ribbon--da.wcc-ribbon--blue,.wcc-ribbon--de.wcc-ribbon--blue,.wcc-ribbon--es.wcc-ribbon--blue,.wcc-ribbon--el.wcc-ribbon--blue,.wcc-ribbon--fil-ph.wcc-ribbon--blue,.wcc-ribbon--hi-in.wcc-ribbon--blue,.wcc-ribbon--hu.wcc-ribbon--blue,.wcc-ribbon--fr.wcc-ribbon--blue,.wcc-ribbon--id.wcc-ribbon--blue,.wcc-ribbon--it.wcc-ribbon--blue,.wcc-ribbon--ja.wcc-ribbon--blue,.wcc-ribbon--ko.wcc-ribbon--blue,.wcc-ribbon--ms.wcc-ribbon--blue,.wcc-ribbon--nl.wcc-ribbon--blue,.wcc-ribbon--pl.wcc-ribbon--blue,.wcc-ribbon--pt.wcc-ribbon--blue,.wcc-ribbon--ro.wcc-ribbon--blue,.wcc-ribbon--ru.wcc-ribbon--blue,.wcc-ribbon--sv.wcc-ribbon--blue,.wcc-ribbon--th.wcc-ribbon--blue,.wcc-ribbon--tr.wcc-ribbon--blue,.wcc-ribbon--vi.wcc-ribbon--blue,.wcc-ribbon--cs-cz.wcc-ribbon--blue,.wcc-ribbon--zh-cn.wcc-ribbon--blue,.wcc-ribbon--zh-tw.wcc-ribbon--blue{background-color:#5ca2dd}.wcc-ribbon__content{position:relative;display:flex;flex-wrap:nowrap;justify-content:center;align-items:center;height:17px}.wcc-row{display:flex;justify-content:space-between;align-items:center;width:100%}.wcc-column{margin:0 10px}.wcc-column:last-child{margin-right:0}.wcc-column:first-child{margin-left:0}.wcc-cell{margin:0 5px}.wcc-cell:last-child{margin-right:0}.wcc-cell:first-child{margin-left:0}.wcc-section{display:flex;justify-content:space-between;align-items:center;width:100%}.wcc-section__block{display:flex;align-items:center;margin-right:10px}.wcc-section__block:last-child{margin-right:0}.wcc-section__block--fullsize{width:100%}.wcc-section__block--static{flex-shrink:0}.wcc-section__block--right{justify-content:flex-end}.wcc-section__block__item{margin-right:15px}.wcc-section__block__item:last-child{margin-right:0}.wcc-table--red .wcc-table__row:nth-child(even){background-color:#ffcfcf}.wcc-table__row{display:flex;justify-content:flex-start;align-items:center;padding:7px 10px}.wcc-table__row:nth-child(even){background-color:#ecece9}.wcc-table__column{padding:0 10px;white-space:nowrap;min-width:0;flex-shrink:0}.wcc-table__column--no-wrap{white-space:nowrap;overflow:hidden}.wcc-table__column--auto{width:100%;flex-shrink:1}.select2-container.select2-container--open{z-index:100002 !important}.wcc-dark-cover{position:absolute;top:0;right:0;bottom:0;left:0;font-weight:bold;font-size:12px;color:#c6c6c6;background-color:rgba(68,68,68,.9);backdrop-filter:blur(2px);display:flex;flex-direction:column;justify-content:center;align-items:stretch;padding:20px;text-align:center;z-index:850}.wcc-dark-cover .wcc-link{font-weight:bold;font-size:12px;color:#c6c6c6;border-bottom-color:#c6c6c6}.wcc-dark-cover .wcc-link:hover{color:#939393;border-bottom-color:#939393}.wcc-checkbox{display:inline-flex;align-items:center;margin-bottom:0}.wcc-checkbox__label{margin-left:5px}#rotationButtons{position:fixed;bottom:10px;right:10px;font-size:25px !important;z-index:100001;color:#fff}#rotationButtons span{cursor:pointer;border-radius:35px;background-color:dimgray;border:3px solid #fff;padding:5px}.translatedCommentContent{background-color:#bcd4e675 !important}.translatedCommentContent.threadContentContainer{clear:both;padding:15px 5px 5px 5px}.translatedCommentContent .translationHeaderBar{margin-top:-10px}.translatedCommentContent .translationHeaderBar .translationLabel{color:#796f6f;font-size:11px;float:left}.translatedCommentContent.moderator{background-color:#ffc9ad !important;border:1px solid #ff9e6b}.translatedCommentContent.observer{background-color:#b9efbb !important;border:1px solid #3aad3e}.profileQuestion .rankingAnswer,.surveyQuestion .rankingAnswer,.wcc-classic-survey__question .rankingAnswer{margin-bottom:30px}.profileQuestion .rankingAnswer .rankSectionPanel,.surveyQuestion .rankingAnswer .rankSectionPanel,.wcc-classic-survey__question .rankingAnswer .rankSectionPanel{background:#dfdfdf;height:400px;border:1px solid;margin:0px 0px 0px 15px;padding:0px}.profileQuestion .rankingAnswer .rankSectionPanel .rankSectionHeader,.surveyQuestion .rankingAnswer .rankSectionPanel .rankSectionHeader,.wcc-classic-survey__question .rankingAnswer .rankSectionPanel .rankSectionHeader{background:#000;color:#fff;padding:5px;position:relative;height:40px}.profileQuestion .rankingAnswer .rankSectionPanel .rankSectionHeader .rankSectionTitle,.surveyQuestion .rankingAnswer .rankSectionPanel .rankSectionHeader .rankSectionTitle,.wcc-classic-survey__question .rankingAnswer .rankSectionPanel .rankSectionHeader .rankSectionTitle{position:absolute;top:8px}.profileQuestion .rankingAnswer .rankSectionPanel .rankSectionHeader button,.surveyQuestion .rankingAnswer .rankSectionPanel .rankSectionHeader button,.wcc-classic-survey__question .rankingAnswer .rankSectionPanel .rankSectionHeader button{float:right}.profileQuestion .rankingAnswer .rankSectionPanel .rankChoicesContainer,.surveyQuestion .rankingAnswer .rankSectionPanel .rankChoicesContainer,.wcc-classic-survey__question .rankingAnswer .rankSectionPanel .rankChoicesContainer{overflow-y:auto;overflow-x:hidden;height:360px}.profileQuestion .rankingAnswer .rankSectionPanel .rankChoicesContainer .rankChoice,.surveyQuestion .rankingAnswer .rankSectionPanel .rankChoicesContainer .rankChoice,.wcc-classic-survey__question .rankingAnswer .rankSectionPanel .rankChoicesContainer .rankChoice{background:#e4e4e4;color:#000;border:1px outset #fff}.profileQuestion .rankingAnswer .rankSectionPanel .rankChoicesContainer .rankChoice.selectable,.surveyQuestion .rankingAnswer .rankSectionPanel .rankChoicesContainer .rankChoice.selectable,.wcc-classic-survey__question .rankingAnswer .rankSectionPanel .rankChoicesContainer .rankChoice.selectable{cursor:pointer;padding:10px}.profileQuestion .rankingAnswer .rankSectionPanel .rankChoicesContainer .rankChoice.selected,.surveyQuestion .rankingAnswer .rankSectionPanel .rankChoicesContainer .rankChoice.selected,.wcc-classic-survey__question .rankingAnswer .rankSectionPanel .rankChoicesContainer .rankChoice.selected{padding:10px 10px 10px 0px}.profileQuestion .rankingAnswer .rankSectionPanel .rankChoicesContainer .rankChoice .rankChoiceButtonsContainer .ideation-bubbles-stat,.surveyQuestion .rankingAnswer .rankSectionPanel .rankChoicesContainer .rankChoice .rankChoiceButtonsContainer .ideation-bubbles-stat,.wcc-classic-survey__question .rankingAnswer .rankSectionPanel .rankChoicesContainer .rankChoice .rankChoiceButtonsContainer .ideation-bubbles-stat{position:static !important;float:left;margin-top:-15px}.profileQuestion .rankingAnswer .rankSectionPanel .rankChoicesContainer .rankChoice .rankChoiceButtonsContainer .ideation-bubbles-stat .ideation-bubble,.surveyQuestion .rankingAnswer .rankSectionPanel .rankChoicesContainer .rankChoice .rankChoiceButtonsContainer .ideation-bubbles-stat .ideation-bubble,.wcc-classic-survey__question .rankingAnswer .rankSectionPanel .rankChoicesContainer .rankChoice .rankChoiceButtonsContainer .ideation-bubbles-stat .ideation-bubble{position:relative}.profileQuestion .rankingAnswer .rankSectionPanel .rankChoicesContainer .rankChoice .rankChoiceButtonsContainer .rankChoiceButtons,.surveyQuestion .rankingAnswer .rankSectionPanel .rankChoicesContainer .rankChoice .rankChoiceButtonsContainer .rankChoiceButtons,.wcc-classic-survey__question .rankingAnswer .rankSectionPanel .rankChoicesContainer .rankChoice .rankChoiceButtonsContainer .rankChoiceButtons{text-align:right;float:right}.profileQuestion .rankingAnswer .rankSectionPanel .rankChoicesContainer .rankChoice .rankChoiceButtonsContainer .rankChoiceButtons button,.surveyQuestion .rankingAnswer .rankSectionPanel .rankChoicesContainer .rankChoice .rankChoiceButtonsContainer .rankChoiceButtons button,.wcc-classic-survey__question .rankingAnswer .rankSectionPanel .rankChoicesContainer .rankChoice .rankChoiceButtonsContainer .rankChoiceButtons button{padding:7px 5px}.profileQuestion .rankingAnswer .rankSectionPanel .rankChoicesContainer .rankChoice .rankChoiceButtonsContainer .rankChoiceButtons button.btn-navigation,.surveyQuestion .rankingAnswer .rankSectionPanel .rankChoicesContainer .rankChoice .rankChoiceButtonsContainer .rankChoiceButtons button.btn-navigation,.wcc-classic-survey__question .rankingAnswer .rankSectionPanel .rankChoicesContainer .rankChoice .rankChoiceButtonsContainer .rankChoiceButtons button.btn-navigation{background-color:#cacaca;border:1px solid #adadad;color:#717171}.profileQuestion .rankingAnswer .rankSectionPanel .rankChoicesContainer .rankChoice .rankChoiceText,.surveyQuestion .rankingAnswer .rankSectionPanel .rankChoicesContainer .rankChoice .rankChoiceText,.wcc-classic-survey__question .rankingAnswer .rankSectionPanel .rankChoicesContainer .rankChoice .rankChoiceText{word-break:break-word}.profileQuestion .rankingAnswer .rankSectionPanel .rankChoicesContainer .rankChoice .rankChoiceText.selected,.surveyQuestion .rankingAnswer .rankSectionPanel .rankChoicesContainer .rankChoice .rankChoiceText.selected,.wcc-classic-survey__question .rankingAnswer .rankSectionPanel .rankChoicesContainer .rankChoice .rankChoiceText.selected{clear:both;padding:10px 13px 0px 15px}.profileQuestion label.small-hint-text,.surveyQuestion label.small-hint-text,.wcc-classic-survey__question label.small-hint-text{font-size:12px;color:#adadad;font-weight:normal;margin-top:5px}.profileQuestion input[type=text].small-hint-text,.surveyQuestion input[type=text].small-hint-text,.wcc-classic-survey__question input[type=text].small-hint-text{font-size:12px;padding-left:0px}.profileQuestion .questionSeparatorHeading,.surveyQuestion .questionSeparatorHeading,.wcc-classic-survey__question .questionSeparatorHeading{clear:both}.profileQuestion .questionTitle.markdown-content h1,.surveyQuestion .questionTitle.markdown-content h1,.wcc-classic-survey__question .questionTitle.markdown-content h1{text-transform:uppercase;font-size:36px;font-weight:bold}.profileQuestion .questionTitle.markdown-content h2,.surveyQuestion .questionTitle.markdown-content h2,.wcc-classic-survey__question .questionTitle.markdown-content h2{font-size:36px;font-weight:bold}.profileQuestion .questionTitle.markdown-content h3,.surveyQuestion .questionTitle.markdown-content h3,.wcc-classic-survey__question .questionTitle.markdown-content h3{font-size:24px;font-weight:bold}.profileQuestion .questionTitle.markdown-content h4,.surveyQuestion .questionTitle.markdown-content h4,.wcc-classic-survey__question .questionTitle.markdown-content h4{font-size:24px;text-decoration:underline}.profileQuestion .questionTitle.markdown-content h5,.surveyQuestion .questionTitle.markdown-content h5,.wcc-classic-survey__question .questionTitle.markdown-content h5{font-size:18px;color:#f5332e}.profileQuestion .questionTitle.markdown-content h6,.surveyQuestion .questionTitle.markdown-content h6,.wcc-classic-survey__question .questionTitle.markdown-content h6{font-size:18px}.content-text{display:inline}.only-emojis.down-page{margin-top:15px}.only-emojis .emoji{height:50px;width:50px;margin-top:-15px}.across-page{display:inline-block;margin-right:20px}.across-page .emoji{margin-bottom:15px}.across-page .content-text{vertical-align:top}.across-page.questionChoice input[type=radio],.across-page.questionChoice input[type=checkbox]{margin-top:0px !important}.cover-readonly{position:absolute;left:0;top:0;right:0;bottom:0;z-index:10}.form-inline.force-inline .form-group{display:inline-block !important}.input-borderless,.input-borderless:hover,.input-borderless:active,.input-borderless:focus{background-color:transparent;border:none;box-shadow:none;border-bottom:1px #868686 dotted;border-radius:0;padding:4px 5px 2px;outline:none}.input-borderless-white,.input-borderless-white:hover,.input-borderless-white:active,.input-borderless-white:focus{background-color:transparent;border:none;box-shadow:none;border-bottom:1px #bfbfbf dotted;border-radius:0;padding:4px 5px 2px;outline:none}.input-borderless--maxsize{width:100%}.image-wrapper{position:relative;border:2px solid #e2e9ee;background-color:#fff;border-radius:45px;overflow:hidden;width:55px;height:55px;padding:2px}.image-wrapper .image-body{position:relative;border-radius:50px;overflow:hidden;width:100%;height:100%}.image-wrapper .image-body .image{width:100%;height:100%}.image-wrapper.moderator{border-color:#ff9e6b}.image-wrapper.observer{border-color:#3aad3e}.image-wrapper.uploading{height:55px;width:55px;margin-top:5px}.unselectable,.wcc-not-selectable{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;-o-user-select:none}.unselectable{position:relative;top:-2px}.wcc-fa-spinner{position:absolute;top:50%;left:0;right:0;transform:translateY(-50%);display:flex;justify-content:center;align-items:center;font-size:55px;text-align:center}.wcc-fa-spinner.wcc-fa-spinner-fixed{position:fixed}.wcc-fa-spinner.wcc-fa-spinner-small{font-size:22px;margin-top:-14px}.wcc-fa-spinner.wcc-fa-spinner-light{color:#c6c6c6}.wcc-fa-spinner.wcc-fa-spinner-inline{position:static;display:flex;justify-content:center;align-items:center;width:55px;height:55px;margin:auto}.wcc-fa-spinner-inline-small{display:inline-block;width:30px}.fancybox-container{z-index:120100}.pac-container{z-index:100250}.admin-flex-body{display:flex;flex-direction:column;overflow:auto}.admin-flex-body #header{position:static;z-index:initial}.admin-flex-body .headerWrapper{flex-shrink:0;padding:0}.admin-flex-body .wcc-dashboard-panel-wrapper>.wcc-dashboard-panel-background,.admin-flex-body .wcc-dashboard-panel-wrapper>.wcc-dashboard-body-background{display:none}.admin-flex-body #wrapper,.admin-flex-body .main-content,.admin-flex-body .main-content>.holder,.admin-flex-body .workArea,.admin-flex-body .wcc-dashboard-panel-wrapper,.admin-flex-body .wcc-dashboard-body,.admin-flex-body .wcc-dashboard-body-inner,.admin-flex-body .admin-dashboard-page,.admin-flex-body .admin-dashboard-page__inner,.admin-flex-body .admin-dashboard-page__content,.admin-flex-body .admin-dashboard-page__content__inner{flex-grow:1;display:flex;flex-direction:column;min-height:0}.admin-flex-body #wrapper{overflow:auto;margin:0 !important;min-height:0}.admin-flex-body .wcc-dashboard-body{padding-bottom:0}.admin-flex-body footer{position:static;flex-shrink:0}.wcc-autogrow-wrapper{display:grid;grid-template-columns:1fr;grid-template-rows:1fr}.wcc-autogrow-textarea{overflow-y:hidden;grid-column:1;grid-row:1}.wcc-autogrow-textarea-mirror{visibility:hidden;overflow-wrap:break-word;word-break:break-word;white-space:pre-wrap;padding:6px 12px;border:1px solid #fff;border-radius:4px;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:1.42857143;grid-column:1;grid-row:1}.no-items-container{border:1px solid #ccc;justify-content:center;align-items:center;flex-grow:1;display:flex}.no-items-container .gray-text{color:#aaa}.topic__comment__creator-cover{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;flex-direction:column;overflow:auto}.topic__comment__creator-cover__wrapper{color:#c6c6c6;background-color:rgba(68,68,68,.9);backdrop-filter:blur(2px);flex-grow:1;padding:15px}.topic__comment__creator-cover__header{display:flex;margin-bottom:5px}.topic__comment__creator-cover__avatar{flex-shrink:0;width:50px;height:50px;margin-right:15px}.topic__comment__creator-cover__header__fields{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, \".topic__comment__footer{flex-shrink:0;display:block;background-color:#f8f8f7}.topic__comment__footer__controls{text-align:right;padding:5px}\", \"\"]);\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, \".topic__comment__ideation-approval-controls{display:block;min-height:24px}.topic__comment__ideation-approval-controls .wcc-tag{margin:3px}\", \"\"]);\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, \".topic__comment__ideation-voter{display:block}\", \"\"]);\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, \".topic__comment__ideation-votes-bubbles{position:relative;display:flex;align-items:flex-end}.topic__comment__ideation-votes-bubbles--inactive{opacity:.3}.topic__comment__ideation-votes-bubbles--with-downvotes{padding:0 12px 12px}.topic__comment__ideation-votes-bubbles__bubble{display:flex;justify-content:center;align-items:center;width:40px;height:40px;border-radius:100%;box-shadow:0 2px 2px 1px #595959;font-size:16.8px;font-weight:bold;color:#fff}.topic__comment__ideation-votes-bubbles__bubble--total{background-color:#f3a527}.topic__comment__ideation-votes-bubbles__bubble--upvotes{background-color:#89c242}.topic__comment__ideation-votes-bubbles__bubble--downvotes{background-color:#fb403b}.topic__comment__ideation-votes-bubbles__bubble--small{width:25px;height:25px;font-size:11.9px}.topic__comment__ideation-votes-bubbles__bubble--left{position:absolute;left:0;bottom:0}.topic__comment__ideation-votes-bubbles__bubble--right{position:absolute;right:0;bottom:0}.ideation-bubbles-stat .ideation-bubble{padding:5px;border-radius:50px;color:#fff;box-shadow:0 2px 2px 1px #595959;text-align:center}.ideation-bubbles-stat .ideation-bubble.ideation-bubble-small{width:25px;height:25px;padding:4px 0;font-size:11.9px}.ideation-bubbles-stat .ideation-bubble.ideation-bubble-big{width:37px;height:37px;padding:8px 0;font-size:16.8px;font-weight:bold}.ideation-bubbles-stat .ideation-bubble.ideation-bubble-middle{position:absolute;top:0;right:15px}.ideation-bubbles-stat .ideation-bubble.ideation-bubble-right{position:absolute;top:24px;right:2px}.ideation-bubbles-stat .ideation-bubble.ideation-bubble-left{position:absolute;top:24px;right:41px}\", \"\"]);\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, \".topic__comment__mark-as-done-button__body{display:inline-block;background-color:#06860a;box-shadow:#000 0 0 4px;padding:2px 5px;font-size:12px;color:#f9f9f9;border-radius:3px;line-height:100%;cursor:pointer;transition:background-color ease-in-out 250ms}.topic__comment__mark-as-done-button__body:hover{background-color:#0da912}\", \"\"]);\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, \".topic__comment__owner-tags{display:block}.topic__comment__owner-tags:not(.topic__comment__owner-tags--inline){position:absolute;top:0;left:0;right:0;max-height:100%;overflow:auto;background-color:rgba(0,0,0,.65);z-index:1}.topic__comment__owner-tags--align-left .topic__comment__owner-tags__label{text-align:left}.topic__comment__owner-tags--align-center .topic__comment__owner-tags__label{text-align:center}.topic__comment__owner-tags__body{padding:5px;line-height:100%}.topic__comment__owner-tags__body .tags-list{display:inline-block;margin-bottom:-3px;margin-right:-3px}.topic__comment__owner-tags__label{font-size:13px;color:#f8f8f7;text-align:center;line-height:16px}\", \"\"]);\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, \".topic__comment__participants{display:block}.topic__comment__participants__image{width:20px;height:20px;border-radius:2px}\", \"\"]);\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, \".comment__replies{display:block}.comment__replies:last-child .comment__replies__spinner{margin-bottom:10px}.comment__replies__spinner{margin-top:10px}.comment__replies__reply:last-child{margin-bottom:0}.comment__replies__new-count{font-size:12px;padding:2px;margin-top:10px;background-color:#dd5454;border:1px solid #f16c6c;color:#fff;text-align:center;cursor:pointer}\", \"\"]);\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, \".comment__reply{display:block;position:relative;padding:5px 10px;background-color:transparent;transition:background-color ease-in-out 450ms}.comment__reply .deletedMessage{color:#6c6c6c}.comment__reply.comment__reply--moderator{background-color:#ffeee5}.comment__reply.comment__reply--observer{background-color:#e5ffe6}.comment__reply.comment__reply--todo{background-color:#fffbbf}.comment__reply.comment__reply--abuse{background-color:rgba(255,165,0,.25)}.comment__reply.comment__reply--editing{padding:0}.comment__reply__body{display:flex;gap:10px}.comment__reply__avatar{flex-shrink:0;position:relative;display:flex}.comment__reply__avatar .wcc-avatar{width:36px;height:36px;padding:1px}.comment__reply__container{flex-grow:1}.comment__reply__vote{position:absolute;top:12px;right:0;transform:translate(25%, 25%)}.comment__reply__footer{display:flex;justify-content:space-between;margin-top:5px}.topic__reply__message{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);font-weight:bold;font-size:12px;color:#a0a0a0;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, \".topic__comment__response-setting{font-size:12px;display:inline-block}.topic__comment__response-setting__body{white-space:nowrap}.topic__comment__response-setting__body>*{display:inline-block;vertical-align:text-bottom}\", \"\"]);\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, \".topic__comment__settings{display:block;background-color:#f8f8f7;padding:0 10px 10px;border-bottom-left-radius:4px;border-bottom-right-radius:4px;text-align:right;line-height:100%}\", \"\"]);\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, \".topic__comment__tags{display:block;background-color:#f8f8f7;padding:1px 3px 3px;line-height:100%}\", \"\"]);\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, \".topic__comment__video-tools{display:block}\", \"\"]);\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, \".topic__comment__visibility-tags{display:block}\", \"\"]);\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, \".topic__comment__visible-to{display:block;background-color:#ffe8be;padding:8px 15px}.topic__comment__visible-to__label{margin-right:4px}.topic__comment__visible-to__loader{color:#7a7a7a;font-size:11px}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Module\nvar code = \"\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"\\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;","// 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;","// 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;","// 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":""}