{"version":3,"sources":["webpack:///../WCC.UI/App/components/community/widgets/base/base.html?8ea2","webpack:///../WCC.UI/App/components/community/widgets/base/base.scss?da94","webpack:///../WCC.UI/App/components/community/widgets/base/base.ts","webpack:///../WCC.UI/App/components/community/widgets/navigation/builders/groups.ts","webpack:///../WCC.UI/App/components/community/widgets/navigation/desktop/group.html?0e11","webpack:///../WCC.UI/App/components/community/widgets/navigation/desktop/group.ts","webpack:///../WCC.UI/App/components/community/widgets/navigation/desktop/navigation.html?9d90","webpack:///../WCC.UI/App/components/community/widgets/navigation/desktop/navigation.ts","webpack:///../WCC.UI/App/components/community/widgets/navigation/enums/modes.ts","webpack:///../WCC.UI/App/components/community/widgets/navigation/enums/types.ts","webpack:///../WCC.UI/App/components/community/widgets/navigation/group.ts","webpack:///../WCC.UI/App/components/community/widgets/navigation/item.ts","webpack:///../WCC.UI/App/components/community/widgets/navigation/layout/layout.html?35a9","webpack:///../WCC.UI/App/components/community/widgets/navigation/layout/layout.scss?0f7d","webpack:///../WCC.UI/App/components/community/widgets/navigation/layout/layout.ts","webpack:///../WCC.UI/App/components/community/widgets/navigation/layout/link.html?2da0","webpack:///../WCC.UI/App/components/community/widgets/navigation/layout/link.ts","webpack:///../WCC.UI/App/components/community/widgets/navigation/link.html?413c","webpack:///../WCC.UI/App/components/community/widgets/navigation/link.scss?7344","webpack:///../WCC.UI/App/components/community/widgets/navigation/link.ts","webpack:///../WCC.UI/App/components/community/widgets/navigation/mobile/group.html?03ff","webpack:///../WCC.UI/App/components/community/widgets/navigation/mobile/group.ts","webpack:///../WCC.UI/App/components/community/widgets/navigation/mobile/item.html?02a5","webpack:///../WCC.UI/App/components/community/widgets/navigation/mobile/item.ts","webpack:///../WCC.UI/App/components/community/widgets/navigation/mobile/navigation.html?df7c","webpack:///../WCC.UI/App/components/community/widgets/navigation/mobile/navigation.ts","webpack:///../WCC.UI/App/components/community/widgets/navigation/navigation.html?c100","webpack:///../WCC.UI/App/components/community/widgets/navigation/navigation.scss?a25f","webpack:///../WCC.UI/App/components/community/widgets/navigation/navigation.ts","webpack:///../WCC.UI/App/components/community/widgets/navigation/settings.html?fb0f","webpack:///../WCC.UI/App/components/community/widgets/navigation/settings.ts","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/multiselect/multiselect.html?9231","webpack:///../WCC.UI/App/components/dropdowns/multiselect/multiselect.ts","webpack:///../WCC.UI/App/components/dropdowns/select/select.html?e847","webpack:///../WCC.UI/App/components/dropdowns/select/select.ts","webpack:///../WCC.UI/App/decorators/componentModel.ts","webpack:///../WCC.UI/App/managers/activeURLHash.ts","webpack:///../WCC.UI/App/managers/adminAccess.ts","webpack:///../WCC.UI/App/managers/community/communityTopicsManager.ts","webpack:///../WCC.UI/App/managers/nodes/attributeTracker.ts","webpack:///../WCC.UI/App/models/router.js","webpack:///../WCC.UI/App/webpack/runtime/htmlExposer.js","webpack:///../WCC.UI/App/components/community/widgets/base/base.scss","webpack:///../WCC.UI/App/components/community/widgets/navigation/layout/layout.scss","webpack:///../WCC.UI/App/components/community/widgets/navigation/link.scss","webpack:///../WCC.UI/App/components/community/widgets/navigation/navigation.scss","webpack:///../WCC.UI/App/components/dropdowns/base/base.scss","webpack:///../WCC.UI/App/components/community/widgets/base/base.html","webpack:///../WCC.UI/App/components/community/widgets/navigation/desktop/group.html","webpack:///../WCC.UI/App/components/community/widgets/navigation/desktop/navigation.html","webpack:///../WCC.UI/App/components/community/widgets/navigation/layout/layout.html","webpack:///../WCC.UI/App/components/community/widgets/navigation/layout/link.html","webpack:///../WCC.UI/App/components/community/widgets/navigation/link.html","webpack:///../WCC.UI/App/components/community/widgets/navigation/mobile/group.html","webpack:///../WCC.UI/App/components/community/widgets/navigation/mobile/item.html","webpack:///../WCC.UI/App/components/community/widgets/navigation/mobile/navigation.html","webpack:///../WCC.UI/App/components/community/widgets/navigation/navigation.html","webpack:///../WCC.UI/App/components/community/widgets/navigation/settings.html","webpack:///../WCC.UI/App/components/dropdowns/multiselect/multiselect.html","webpack:///../WCC.UI/App/components/dropdowns/select/select.html"],"names":["content","expose","__esModule","default","api","module","i","options","exports","locals","CommunityWidgetModel","WCCEntity","constructor","data","super","undefined","this","normalizeData","demo","ko","flattenComputed","settings","demoWidgets","_data$demo","Demo","CommunityWidgetVM","model","info","applyBindingsToNode","element","getTemplateNodes","onChange","events","communityWidgetSettingsAreChanged","trigger","onSettingsShown","communityWidgetSettingsAreShown","onSettingsHidden","communityWidgetSettingsAreHidden","__decorate","injectable","__param","inject","wccModules","componentConfig","componentInfo","CommunityNavigationWidgetGroupsBuilder","build","links","map","link","process","reduce","items","item","prev","_","last","canMergeWith","mergeWith","push","Array","newLink","title","parts","splitTitle","part","cleanUpTitlePart","length","groups","initial","name","clone","css","group","reduceRight","result","CommunityNavigationWidgetGroupModel","add","isRoot","toDoCount","escapingAreas","getEscapingAreas","splitIndexes","getIndexesOf","filter","idx","some","area","start","end","concat","index","list","startIdx","endIdx","substring","str","s","l","r","symbol","offset","instance","CommunityDesktopNavigationWidgetGroupVM","effects","header","register","setTimeout","resizeObserver","ResizeObserver","entries","el","target","elWidth","contentRect","width","getBoundingClientRect","left","window","innerWidth","setAttribute","classList","remove","htmlCollection","document","getElementsByClassName","prototype","forEach","call","observe","components","registerLocal","require","CommunityDesktopNavigationWidgetVM","root","showEmptyMessage","pureComputed","isDemo","CommunityNavigationWidgetMode","CommunityNavigationWidgetLinkType","CommunityNavigationWidgetItemModel","createCollection","createField","WCCError","messages","InvalidRequest","sibling","find","checkIfContainer","getId","_data$isRoot","observable","id","isContainer","toJson","forExport","_data$title","Title","preload","discussionId","systemPagesWhitelist","enums","CommunityPageType","LogIn","value","SignUp","pagesBlackList","TermsAndConditionsChangeSummary","CommunityNavigationWidgetLayoutVM","config","storage","showErrors","publicLinks","observableArray","extend","deferred","protectedLinks","save","_this$config$onSave","_this$config","validate","navigation","mode","showLogOutLink","isLogOutLinkShown","mobileLinks","onSave","cancel","_this$config$onCancel","_this$config2","onCancel","resetToDefault","regularPages","page","includes","type","CommunityNavigationWidgetLinkModel","route","url","isProtected","access","CommunityPageAccess","LoggedInMembersOnly","modeSelect","select","auto","logoutSelect","addPublicLink","addLink","addProtectedLink","removeLink","moveLink","collection","indexOf","oldIdx","newIdx","splice","pagesManager","get","AdminCommunityPagesManager","pagesReady","pluck","m","loading","pages","checkIfPageAllowed","topicsReady","SimpleTopicsManager","SelectDropdown","desktop","mobile","selectedItem","ready","rateLimit","loadLinks","Master","isSystem","contains","every","CommunityNavigationWidgetLayoutLinkVM","pickedGroup","pickedTopic","moveUp","_this$config$onMove","onMove","moveDown","_this$config$onMove2","system","confirm","_this$config$onRemove","_this$config3","onRemove","isPublic","public","read","write","validateCSS","validateTitle","validateRoute","topicId","topicsManager","topics","hasGroups","is","hasNoGroups","not","hasTopics","cssEditor","placeholder","theme","onKeyDown","bind","titleEditor","accessSelect","MultiSelectDropdown","defaultTitle","MembershipStatusTypes","Moderator","Observer","typeSelect","getTypeSelectItems","routeEditor","showRouteEditor","showTopicGroupsList","activitiesGroup","showTopicsList","activity","allowToSetAccess","checkIfSupportsAccessSettings","accessRestrictions","restriction","subscribeNotNull","clear","moderatorTools","observerTools","withEffect","selectedItems","_ref","_groups$find","topic","_topics$find","activities","todo","e","keyCode","router","activeHash","ActiveURLHashManager","hash","groupPattern","topicPattern","richContentPattern","cssPattern","isHighlighted","json","omit","overrides","error","test","FieldIsMandatory","any","_data$css","_data$type","_data$route","_data$topicId","_data$isProtected","_data$accessRestricti","CSS","Type","Route","TopicId","IsProtected","AccessRestrictions","CommunityNavigationWidgetLinkVM","loginService","busy","labels","isAdmin","isLoggedIn","adminAccess","AdminAccessManager","PublicCommunityPagesManager","defaultPages","startUpOptions","CommunityPageStartUpOptions","IfLoggedIn","IfNotLoggedIn","Never","CommunityTopicsManager","processTitle","isDefault","checkIfDefault","isActive","checkIfActive","isValid","checkIfValid","showToDo","count","click","navigate","logout","showAdminTools","openNextTopicToDo","communityProject","location","href","hasAccess","dropToken","_this$topics$find","shouldBeAnswered","requestAccess","processGroupsInTitle","processTopicsInTitle","processContentInTitle","func","match","step","success","exec","groupId","lIdx","rIdx","substr","Model","CommunityMobileNavigationWidgetGroupVM","_config$onClick","isExpanded","toggle","onClick","noop","d","isCollapsed","CommunityMobileNavigationWidgetItemVM","CommunityMobileNavigationWidgetVM","stage","hidden","visible","close","overlayManager","toOverlay","fullscreen","lock","hide","communityId","allowedAccessTypes","CommunityAccess","membersonly","groupsBuilder","CommunityNavigationWidgetModel","_data$isUserLoggedIn","isUserLoggedIn","loggedInNavigation","jsonLink","_data$isUserLoggedIn2","_data$logOut","_data$mode","_data$links","_data$mobileLinks","IsUserLoggedIn","logOut","LogOut","Mode","Links","MobileLinks","CommunityNavigationWidgetVM","logOutLink","isMobile","checkIfMobile","isDesktop","CommunityAccessManager","none","user","CurrentUserManager","person","currentUserStatus","u","status","getLinks","isLinkAllowed","unwrapLink","flatten","mapSingle","cache","oldItem","newItem","update","getMobileLinks","beforeInit","injectSettingsNodeInto","container","appendChild","DOMHelpers","createComponent","modes","device","unwrapActivitiesLink","unwrapActivitiesGroupLink","unwrapActivityLink","unwrapToDoLink","flatMap","adhocDiscussion","taskMemberCode","todoCountForUI","CommunityNavigationWidgetSettingsVM","widget","editLayout","async","layoutEditor","toggleState","Dropdown","jsonModel","_jsonModel$Items","Items","unwrap","textSize","findItem","itemOrPredicate","isFunction","isObject","DropdownVM","bodyNode","onBodyClick","$rowOrBody","$","closest","children","preventDefault","stopPropagation","isAlwaysShown","checkIfAlwaysShown","isVisible","componentModel","showReset","getTitle","deselect","itemMaxWidth","MultiSelectDropdownVM","dropdown","headerNodes","templateNodes","contents","itemNodes","selection","noneSelected","isEmpty","_data$Disabled","_data$noDefault","_data$highlightActive","defaultValue","noDefault","first","disabled","Disabled","hasCustomScroll","customScroll","highlightActiveItem","SelectDropdownVM","dropdownNode","isOpen","isHeaderAllowed","hasMultipleItems","hasSingleItem","smartDropdownConfig","NodeAttributeTracker","node","hasClass","componentModelMetadataKey","Symbol","ctor","Reflect","defineMetadata","getHash","on","disposeContainer","createExtendedContainer","dispose","tasksService","taskManager","TaskManager","taskId","task","discussionReady","isNotNull","moderatorAccessTypes","t","observerAccessTypes","currentUser","currentUserReady","checkIfHasAccess","PermissionDenied","UnknownError","query","getQuery","response","post","TaskId","AccountDNS","accountDNS","Data","IsRequestSuccessful","Message","fancybox","open","TheModObsToolsWillBeOpenedInANewWindow","replace","padding","ex","handleError","queries","moderatorLogin","observerLogin","ModeratorTools","ObserverTools","ctx","signalREvents","load","topicsService","simpleTopicsByDiscussionIdForCommunity","addArgs","important","toArray","storageDefaults","searchString","peopleTagsIDs","managerConfig","servicesContext","attribute","predicate","action","withEffects","$node","observer","MutationObserver","mutations","mutation","oldValue","attributes","attributeOldValue","attributeFilter","disconnect","define","fakeRouter","activeInstruction","SystemHelpers","html","getTemplatesAndResources","head","___CSS_LOADER_API_IMPORT___"],"mappings":"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","file":"95.2a8f3cdc1c686f383dd2.js","sourcesContent":["define([\n \"!!../../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./base.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!./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 { wccModules } from 'enums/wccModules';\r\nimport { inject, injectable } from 'inversify';\r\nimport { Subscribable } from 'knockout';\r\nimport events from 'managers/events';\r\nimport WCCEntity from 'models/entity';\r\nimport './base.html';\r\nimport './base.scss';\r\n\r\nexport interface CommunityWidgetVMConfig {\r\n Demo?: boolean\r\n\r\n demo?: boolean\r\n}\r\n\r\nexport class CommunityWidgetModel extends WCCEntity {\r\n demo: Subscribable\r\n\r\n constructor(data?: T) { \r\n super();\r\n\r\n if (data != undefined)\r\n this.normalizeData(data);\r\n\r\n this.demo = ko.flattenComputed(data?.demo, settings.demoWidgets);\r\n }\r\n\r\n protected normalizeData(data: T) {\r\n data.demo ??= data.Demo;\r\n }\r\n}\r\n\r\n@injectable()\r\nexport default class CommunityWidgetVM {\r\n demo: Subscribable\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) public model: T,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo\r\n ) {\r\n this.demo = model.demo;\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'css': {\r\n 'wcc-widget': true\r\n }\r\n });\r\n }\r\n\r\n getTemplateNodes(): Array {\r\n return [];\r\n }\r\n\r\n protected onChange() {\r\n events.communityWidgetSettingsAreChanged.trigger(this.model);\r\n }\r\n\r\n protected onSettingsShown() {\r\n events.communityWidgetSettingsAreShown.trigger(this.model);\r\n }\r\n\r\n protected onSettingsHidden() {\r\n events.communityWidgetSettingsAreHidden.trigger(this.model);\r\n }\r\n}","import CommunityNavigationWidgetGroupModel from '../group';\r\nimport CommunityNavigationWidgetItemModel from '../item';\r\nimport { CommunityNavigationWidgetLinkModel } from '../link';\r\n\r\ninterface EscapingArea {\r\n start: number\r\n end: number \r\n}\r\n\r\ninterface TempEscapingArea {\r\n start: number\r\n end?: number\r\n l: number\r\n r: number\r\n}\r\n\r\nexport default class CommunityNavigationWidgetGroupsBuilder {\r\n static instance = new CommunityNavigationWidgetGroupsBuilder();\r\n\r\n constructor() { }\r\n\r\n build(links: Array) {\r\n return links\r\n .map(link => this.process(link))\r\n .reduce((items, item) => {\r\n const prev = _(items).last();\r\n\r\n if (prev != undefined && prev.canMergeWith(item))\r\n prev.mergeWith(item);\r\n else\r\n items.push(item);\r\n\r\n return items;\r\n }, new Array());\r\n }\r\n\r\n private process(link: CommunityNavigationWidgetLinkModel): CommunityNavigationWidgetItemModel {\r\n let newLink: CommunityNavigationWidgetLinkModel;\r\n\r\n const title = link.title();\r\n const parts = this.splitTitle(title).map(part => this.cleanUpTitlePart(part));\r\n\r\n if (parts.length > 1) {\r\n const groups = _(parts).initial();\r\n const name = _(parts).last();\r\n\r\n newLink = link.clone({\r\n title: name,\r\n css: ''\r\n });\r\n\r\n const group = _(groups).reduceRight((result, name) => {\r\n const group = new CommunityNavigationWidgetGroupModel({\r\n title: name,\r\n css: link.css()\r\n });\r\n\r\n if (result != undefined)\r\n group.add(result);\r\n else\r\n group.add(newLink);\r\n\r\n return group;\r\n }, undefined);\r\n\r\n group.isRoot(true);\r\n\r\n return group;\r\n } else if (parts.length === 1) {\r\n newLink = link.clone({\r\n title: parts[0],\r\n toDoCount: link.toDoCount\r\n });\r\n } else {\r\n newLink = link.clone();\r\n }\r\n\r\n newLink.isRoot(true);\r\n\r\n return newLink;\r\n }\r\n\r\n private splitTitle(title: string) {\r\n const escapingAreas = this.getEscapingAreas(title);\r\n const splitIndexes = this.getIndexesOf(title, '/').filter(idx => !escapingAreas.some(area => idx > area.start && idx < area.end));\r\n\r\n if (splitIndexes.length === 0) {\r\n return [title];\r\n } else {\r\n return _(splitIndexes.concat([title.length])).map(function (index, idx, list) {\r\n var prev = list[idx - 1];\r\n\r\n var startIdx,\r\n endIdx;\r\n\r\n if (prev === undefined) {\r\n startIdx = 0;\r\n endIdx = index;\r\n } else {\r\n startIdx = prev + 1;\r\n endIdx = index;\r\n }\r\n\r\n return title.substring(startIdx, endIdx);\r\n });\r\n }\r\n }\r\n\r\n private getEscapingAreas(str: string) {\r\n const areas = [...str].reduce((list, s, idx) => {\r\n let area = _(list).last();\r\n\r\n switch (s) {\r\n case '[':\r\n if (area == undefined || area.end != undefined) {\r\n area = { start: idx, l: 1, r: 0 };\r\n list.push(area);\r\n } else {\r\n area.l++;\r\n }\r\n\r\n break;\r\n case ']':\r\n if (area !== undefined) {\r\n area.r++;\r\n\r\n if (area.r == area.l)\r\n area.end = idx;\r\n }\r\n\r\n break;\r\n }\r\n\r\n return list;\r\n }, new Array());\r\n\r\n return areas\r\n .filter(area => area.end != undefined)\r\n .map(area => ({ start: area.start, end: area.end }));\r\n }\r\n\r\n private getIndexesOf(str: string, symbol: string) {\r\n return [...str].reduce((list, s, idx) => {\r\n if (s == symbol)\r\n list.push(idx);\r\n\r\n return list;\r\n }, new Array());\r\n }\r\n\r\n private cleanUpTitlePart(str: string) {\r\n return this.getEscapingAreas(str).reduce((str, area, idx) => {\r\n var result = '',\r\n offset = -idx * 2,\r\n start = area.start + offset,\r\n end = area.end + offset;\r\n\r\n if (start > 0)\r\n result += str.substring(0, start);\r\n\r\n result += str.substring(start + 1, end);\r\n\r\n if (end < str.length - 1)\r\n result += str.substring(end + 1);\r\n\r\n return result;\r\n }, str);\r\n }\r\n}","define([\n \"!!../../../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./group.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 { EffectsContainer } from '../../../../../mixins/withEffects';\r\nimport CommunityNavigationWidgetGroupModel from '../group';\r\nimport CommunityNavigationWidgetItemModel from '../item';\r\nimport { CommunityNavigationWidgetLinkConfig } from '../link';\r\nimport './group.html';\r\n\r\n@injectable()\r\nexport default class CommunityDesktopNavigationWidgetGroupVM {\r\n header: CommunityNavigationWidgetLinkConfig\r\n\r\n title: Subscribable\r\n css: Subscribable\r\n\r\n items: Subscribable>\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) model: CommunityNavigationWidgetGroupModel,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo,\r\n @inject(wccModules.effects) protected effects: EffectsContainer\r\n ) {\r\n this.title = model.title;\r\n this.css = model.css;\r\n this.items = model.items;\r\n\r\n this.header = {\r\n title: model.title,\r\n toDoCount: model.toDoCount,\r\n isRoot: model.isRoot()\r\n }\r\n\r\n effects.register(() => {\r\n\r\n setTimeout(() => {\r\n // create a resize observer on our dropdown list sub menu\r\n const resizeObserver = new ResizeObserver((entries) => {\r\n //console.log(entries);\r\n for (let i = 0; i < entries.length; i++) { \r\n let el = entries[i].target;\r\n let elWidth = entries[i].contentRect.width;\r\n \r\n let boundingClientRect = el.getBoundingClientRect();\r\n\r\n if (boundingClientRect.left + elWidth > window.innerWidth) {\r\n // move our element to the left of the main dropdown by the width of the element\r\n el.setAttribute('style', 'position:absolute');\r\n el.setAttribute('style', `left:${-elWidth}px`);\r\n el.classList.remove('fix-overlap');\r\n // Note that removing the observer will mean resizing/change to the window will break the dropdown again \r\n //resizeObserver.unobserve(el);\r\n }\r\n else { // remove observer on elements that don't break the window size\r\n //resizeObserver.unobserve(el);\r\n }\r\n }\r\n \r\n });\r\n\r\n let htmlCollection = document.getElementsByClassName('dropdown-menu fix-overlap');\r\n\r\n Array.prototype.forEach.call(\r\n htmlCollection,\r\n (element:Element) => resizeObserver.observe(element)\r\n ); \r\n }, 2000); // deal with things not being ready. We can make this better by building a readiness into the component\r\n });\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'css': {\r\n 'community__desktop-navigation__group': true\r\n }\r\n });\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'css': this.css\r\n });\r\n }\r\n}","define([\n \"!!../../../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./navigation.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 CommunityNavigationWidgetItemModel from '../item';\r\nimport CommunityNavigationWidgetVM from '../navigation';\r\nimport './navigation.html';\r\n\r\ncomponents.registerLocal('community-navigation-desktop-group', () => require('./group'));\r\n\r\n@injectable()\r\nexport default class CommunityDesktopNavigationWidgetVM {\r\n items: Subscribable>\r\n\r\n showEmptyMessage: Subscribable\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) root: CommunityNavigationWidgetVM,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo\r\n ) {\r\n this.items = root.links;\r\n this.showEmptyMessage = ko.pureComputed(() => root.isDemo() && this.items().length == 0);\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'css': {\r\n 'community__desktop-navigation': true\r\n }\r\n });\r\n }\r\n}","enum CommunityNavigationWidgetMode {\r\n auto = 0,\r\n desktop = 1,\r\n mobile = 2\r\n}\r\n\r\nexport default CommunityNavigationWidgetMode;","enum CommunityNavigationWidgetLinkType {\r\n url = 0,\r\n activities = 1,\r\n activitiesGroup = 2,\r\n activity = 3,\r\n todo = 4,\r\n logout = 5,\r\n moderatorTools = 6,\r\n observerTools = 7,\r\n communityProject = 8\r\n}\r\n\r\nexport default CommunityNavigationWidgetLinkType;","import { Observable, ObservableArray, Subscribable } from 'knockout';\r\nimport WCCError from 'models/wccError';\r\nimport CommunityNavigationWidgetItemModel, { CommunityNavigationWidgetItemConfig } from './item';\r\n\r\nexport interface CommunityNavigationWidgetGroupConfig extends CommunityNavigationWidgetItemConfig {\r\n items?: Array\r\n css?: string\r\n}\r\n\r\nexport default class CommunityNavigationWidgetGroupModel extends CommunityNavigationWidgetItemModel {\r\n items: ObservableArray\r\n css: Observable\r\n\r\n toDoCount: Subscribable\r\n\r\n constructor(data: CommunityNavigationWidgetGroupConfig) {\r\n super(data);\r\n\r\n this.items = this.createCollection(data, 'items');\r\n this.css = this.createField(data, 'css', '');\r\n\r\n this.toDoCount = this.items.reduce((result, item) => result + item.toDoCount(), () => 0);\r\n }\r\n\r\n add(item: CommunityNavigationWidgetItemModel) {\r\n this.items.push(item);\r\n }\r\n\r\n override canMergeWith(item: CommunityNavigationWidgetItemModel): boolean {\r\n return item instanceof CommunityNavigationWidgetGroupModel && this.title() == item.title();\r\n }\r\n\r\n override mergeWith(item: CommunityNavigationWidgetItemModel) {\r\n if (!this.canMergeWith(item))\r\n throw new WCCError(messages.InvalidRequest);\r\n\r\n const group = item;\r\n\r\n group.items().forEach(item => {\r\n const sibling = this.items().find(i => i.canMergeWith(item));\r\n\r\n if (sibling != undefined)\r\n sibling.mergeWith(item);\r\n else\r\n this.add(item);\r\n });\r\n }\r\n\r\n protected override checkIfContainer() {\r\n return true;\r\n }\r\n\r\n protected override getId() {\r\n return 'group:' + this.title();\r\n }\r\n}","import { Observable, Subscribable, SubscribableOrNullableValue, SubscribableOrValue } from 'knockout';\r\nimport WCCEntity from 'models/entity';\r\nimport WCCError from 'models/wccError';\r\n\r\nexport interface CommunityNavigationWidgetItemConfig {\r\n Title?: SubscribableOrNullableValue\r\n\r\n title?: SubscribableOrNullableValue\r\n isRoot?: boolean\r\n}\r\n\r\nexport default abstract class CommunityNavigationWidgetItemModel extends WCCEntity {\r\n abstract toDoCount: Subscribable\r\n\r\n demo = ko.observable(false);\r\n\r\n id: Subscribable\r\n title: Observable\r\n\r\n isContainer: Subscribable\r\n isRoot: Observable\r\n\r\n constructor(data?: T) {\r\n super();\r\n\r\n if (data != undefined)\r\n this.normalizeData(data);\r\n\r\n this.id = ko.pureComputed(() => this.getId());\r\n this.title = this.createField(data, 'title', '');\r\n this.isContainer = ko.pureComputed(() => this.checkIfContainer());\r\n this.isRoot = ko.observable(data?.isRoot ?? false);\r\n }\r\n\r\n override toJson(forExport?: boolean) {\r\n return super.toJson();\r\n }\r\n\r\n canMergeWith(item: CommunityNavigationWidgetItemModel) {\r\n return false;\r\n }\r\n\r\n mergeWith(item: CommunityNavigationWidgetItemModel) {\r\n if (!this.canMergeWith(item))\r\n throw new WCCError(messages.InvalidRequest);\r\n }\r\n\r\n protected getId() {\r\n return 'item:' + this.title();\r\n }\r\n\r\n protected checkIfContainer() {\r\n return false;\r\n }\r\n\r\n protected normalizeData(data: T) {\r\n data.title ??= data.Title;\r\n }\r\n}","define([\n \"!!../../../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./layout.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!./layout.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 } from 'knockout';\r\nimport AdminCommunityPagesManager from 'managers/community/pages/admin';\r\nimport SimpleTopicsManager from 'managers/discussion/simpleTopics';\r\nimport { IWCCStorageManager } from 'managers/iStorage';\r\nimport { EffectsContainer } from 'mixins/withEffects';\r\nimport CommunityPage from 'models/community/page';\r\nimport CommunityNavigationWidgetMode from '../enums/modes';\r\nimport { CommunityNavigationWidgetLinkModel } from '../link';\r\nimport { CommunityNavigationWidgetModel } from '../navigation';\r\nimport './layout.html';\r\nimport './layout.scss';\r\n\r\ncomponents\r\n .registerLocal('community-navigation-layout-link', () => require('./link'))\r\n .preload('wcc-select');\r\n\r\nconst { discussionId } = settings;\r\n\r\nconst systemPagesWhitelist = [\r\n enums.CommunityPageType.LogIn.value,\r\n enums.CommunityPageType.SignUp.value\r\n]\r\n\r\nconst pagesBlackList = [\r\n enums.CommunityPageType.TermsAndConditionsChangeSummary.value\r\n]\r\n\r\nexport interface CommunityNavigationWidgetLayoutVMConfig {\r\n navigation: CommunityNavigationWidgetModel\r\n\r\n onSave?: Action\r\n onCancel?: Action\r\n}\r\n\r\n@injectable()\r\nexport default class CommunityNavigationWidgetLayoutVM {\r\n private navigation: CommunityNavigationWidgetModel\r\n\r\n private mode: Subscribable\r\n private links: Subscribable>\r\n private regularPages: Subscribable>\r\n private isLogOutLinkShown: Subscribable\r\n\r\n showErrors = ko.observable(false);\r\n\r\n publicLinks = ko.observableArray().extend({ deferred: true });\r\n protectedLinks = ko.observableArray().extend({ deferred: true });\r\n\r\n modeSelect: SelectDropdown\r\n logoutSelect: SelectDropdown\r\n\r\n ready: Subscribable\r\n loading: Subscribable\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) private config: CommunityNavigationWidgetLayoutVMConfig,\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 this.navigation = config.navigation;\r\n this.links = this.publicLinks.concat(this.protectedLinks);\r\n\r\n const pagesManager = storage.get(AdminCommunityPagesManager, {});\r\n const pagesReady = pagesManager.pluck(m => !m.loading(), false).extend({ deferred: true });\r\n const pages = pagesManager.pluck(m => m.pages, []);\r\n this.regularPages = pages.filter(page => this.checkIfPageAllowed(page));\r\n\r\n const topicsManager = storage.get(SimpleTopicsManager, { discussionId });\r\n const topicsReady = topicsManager.pluck(m => !m.loading(), false).extend({ deferred: true });\r\n\r\n this.modeSelect = new SelectDropdown({\r\n items: [\r\n { title: 'Auto', value: CommunityNavigationWidgetMode.auto },\r\n { title: 'Desktop', value: CommunityNavigationWidgetMode.desktop },\r\n { title: 'Mobile', value: CommunityNavigationWidgetMode.mobile }\r\n ]\r\n });\r\n\r\n this.mode = this.modeSelect.selectedItem.pluck(item => item.value, CommunityNavigationWidgetMode.auto);\r\n\r\n this.logoutSelect = new SelectDropdown({\r\n items: [\r\n { title: 'Show', value: true },\r\n { title: 'Hide', value: false }\r\n ]\r\n });\r\n\r\n this.isLogOutLinkShown = this.logoutSelect.selectedItem.pluck(item => item.value, false);\r\n\r\n this.ready = ko.pureComputed(() => pagesReady() && topicsReady()).extend({ rateLimit: 0 });\r\n this.loading = ko.pureComputed(() => !this.ready());\r\n\r\n this.modeSelect.select(item => item.value == this.navigation.mode());\r\n this.logoutSelect.select(item => item.value == this.navigation.showLogOutLink());\r\n\r\n effects.register(ready => {\r\n if (ready)\r\n this.loadLinks();\r\n }, [this.ready]);\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'css': {\r\n 'community__navigation__layout': true\r\n }\r\n });\r\n }\r\n\r\n save = () => {\r\n this.showErrors(false).showErrors(true);\r\n\r\n if (!this.validate()) return;\r\n\r\n this.navigation.mode(this.mode());\r\n this.navigation.showLogOutLink(this.isLogOutLinkShown());\r\n\r\n this.navigation.links(this.links());\r\n this.navigation.mobileLinks([]);\r\n\r\n this.config.onSave?.();\r\n }\r\n\r\n cancel = () => {\r\n this.config.onCancel?.();\r\n }\r\n\r\n resetToDefault = () => {\r\n var links = this.regularPages()\r\n .filter(page => !pagesBlackList.includes(page.type()))\r\n .map(page => {\r\n return new CommunityNavigationWidgetLinkModel({\r\n title: page.name(),\r\n route: page.url(),\r\n isProtected: page.access() == enums.CommunityPageAccess.LoggedInMembersOnly.value\r\n });\r\n });\r\n\r\n const publicLinks = links.filter(link => !link.isProtected());\r\n const protectedLinks = links.filter(link => link.isProtected());\r\n\r\n this.publicLinks(publicLinks);\r\n this.protectedLinks(protectedLinks);\r\n\r\n this.modeSelect.select(item => item.value == CommunityNavigationWidgetMode.auto);\r\n this.logoutSelect.select(item => item.value == true);\r\n }\r\n\r\n addPublicLink = () => {\r\n this.addLink();\r\n }\r\n\r\n addProtectedLink = () => {\r\n this.addLink(true);\r\n }\r\n\r\n removeLink = (link: CommunityNavigationWidgetLinkModel) => {\r\n this.publicLinks.remove(link);\r\n this.protectedLinks.remove(link);\r\n }\r\n\r\n moveLink = (link: CommunityNavigationWidgetLinkModel, offset: number) => {\r\n const collection = this.publicLinks().indexOf(link) != -1 ? this.publicLinks : this.protectedLinks;\r\n\r\n let oldIdx = _(collection()).indexOf(link),\r\n newIdx = oldIdx + offset;\r\n\r\n if (oldIdx == -1) return;\r\n if (newIdx < 0) newIdx = 0;\r\n if (newIdx >= collection().length) newIdx = collection().length - 1;\r\n\r\n collection.splice(newIdx, 0, collection.splice(oldIdx, 1)[0]);\r\n }\r\n\r\n private checkIfPageAllowed(page: CommunityPage) {\r\n return page.type() !== enums.CommunityPageType.Master.value &&\r\n (!page.isSystem() || _(systemPagesWhitelist).contains(page.type()));\r\n }\r\n\r\n private addLink(isProtected = false) {\r\n const collection = isProtected ? this.protectedLinks : this.publicLinks;\r\n\r\n collection.push(new CommunityNavigationWidgetLinkModel({ isProtected: isProtected }));\r\n }\r\n\r\n private loadLinks() {\r\n const links = this.navigation.links().map(link => link.clone());\r\n const publicLinks = links.filter(link => !link.isProtected());\r\n const protectedLinks = links.filter(link => link.isProtected());\r\n\r\n this.publicLinks(publicLinks);\r\n this.protectedLinks(protectedLinks);\r\n }\r\n\r\n private validate() {\r\n return this.links().every(link => link.validate());\r\n }\r\n}","define([\n \"!!../../../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./link.html\", \n \"!../../../../../webpack/runtime/htmlExposer.js\"], function (content, expose) {\n content = content.__esModule ? content.default : content;\n expose(content);\n return content;\n });","import { DropdownItem } from 'components/dropdowns/base/base';\r\nimport { MultiSelectDropdown } from 'components/dropdowns/multiselect/multiselect';\r\nimport { SelectDropdown } from 'components/dropdowns/select/select';\r\nimport { TextEditorConfig } from 'components/editors/text/text';\r\nimport { wccModules } from 'enums/wccModules';\r\nimport { inject, injectable } from 'inversify';\r\nimport { Observable, Subscribable, SubscribableOrNullableValue } from 'knockout';\r\nimport SimpleTopicsManager from 'managers/discussion/simpleTopics';\r\nimport { IWCCStorageManager } from 'managers/iStorage';\r\nimport { withEffect } from 'mixins/withEffect';\r\nimport { EffectsContainer } from 'mixins/withEffects';\r\nimport { SimpleTopic } from 'models/simpleTopic';\r\nimport { SimpleTopicsGroup } from 'models/simpleTopicsGroup';\r\nimport CommunityNavigationWidgetLinkType from '../enums/types';\r\nimport { CommunityNavigationWidgetLinkModel } from '../link';\r\nimport './link.html';\r\n\r\nconst { discussionId } = settings;\r\n\r\nexport interface CommunityNavigationWidgetLayoutLinkVMConfig {\r\n link: CommunityNavigationWidgetLinkModel\r\n\r\n public?: SubscribableOrNullableValue\r\n showErrors?: SubscribableOrNullableValue\r\n\r\n onRemove?: Action<[CommunityNavigationWidgetLinkModel]>\r\n onMove?: Action<[CommunityNavigationWidgetLinkModel, number]>\r\n}\r\n\r\n@injectable()\r\nexport default class CommunityNavigationWidgetLayoutLinkVM {\r\n private link: CommunityNavigationWidgetLinkModel\r\n private topicId: Observable\r\n private type: Observable\r\n\r\n private hasTopics: Subscribable\r\n\r\n pickedGroup = ko.observable();\r\n pickedTopic = ko.observable();\r\n\r\n accessSelect: MultiSelectDropdown\r\n typeSelect: SelectDropdown\r\n\r\n cssEditor: TextEditorConfig\r\n titleEditor: TextEditorConfig\r\n routeEditor: TextEditorConfig\r\n\r\n css: Observable\r\n title: Observable\r\n route: Observable \r\n\r\n topics: Subscribable>\r\n groups: Subscribable>\r\n\r\n isPublic: Subscribable\r\n showErrors: Subscribable\r\n showRouteEditor: Subscribable\r\n showTopicGroupsList: Subscribable\r\n showTopicsList: Subscribable\r\n hasGroups: Subscribable\r\n hasNoGroups: Subscribable\r\n allowToSetAccess: Subscribable\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) private config: CommunityNavigationWidgetLayoutLinkVMConfig,\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 this.link = config.link;\r\n this.isPublic = ko.flattenComputed(config.public, true);\r\n this.showErrors = ko.flattenComputed(config.showErrors, false);\r\n\r\n this.css = ko.pureComputed({ read: this.link.css, write: this.link.css }).extend({ validate: () => this.link.validateCSS() });\r\n this.title = ko.pureComputed({ read: this.link.title, write: this.link.title }).extend({ validate: () => this.link.validateTitle() });\r\n this.type = this.link.type;\r\n this.route = ko.pureComputed({ read: this.link.route, write: this.link.route }).extend({ validate: () => this.link.validateRoute() });\r\n this.topicId = this.link.topicId;\r\n\r\n const topicsManager = storage.get(SimpleTopicsManager, { discussionId });\r\n const topicsReady = topicsManager.pluck(m => !m.loading()).extend({ deferred: true });\r\n this.groups = topicsManager.pluck(m => m.groups, []);\r\n this.topics = topicsManager.pluck(m => m.topics, []);\r\n\r\n this.hasGroups = this.groups.is(groups => groups.length > 1);\r\n this.hasNoGroups = this.hasGroups.not();\r\n this.hasTopics = this.topics.is(topics => topics.length > 0);\r\n\r\n this.cssEditor = {\r\n value: this.css,\r\n placeholder: 'CSS',\r\n theme: 'underline',\r\n onKeyDown: this.onKeyDown.bind(this)\r\n };\r\n\r\n this.titleEditor = {\r\n value: this.title,\r\n placeholder: 'Title',\r\n theme: 'underline',\r\n onKeyDown: this.onKeyDown.bind(this)\r\n };\r\n\r\n this.accessSelect = new MultiSelectDropdown({\r\n defaultTitle: 'No Restrictions',\r\n items: [\r\n { title: 'Moderators', value: enums.MembershipStatusTypes.Moderator.value },\r\n { title: 'Observers', value: enums.MembershipStatusTypes.Observer.value }\r\n ]\r\n });\r\n \r\n this.typeSelect = new SelectDropdown({\r\n items: ko.pureComputed(() => this.getTypeSelectItems())\r\n });\r\n\r\n this.routeEditor = {\r\n value: this.route,\r\n placeholder: 'Route',\r\n theme: 'underline',\r\n onKeyDown: this.onKeyDown.bind(this)\r\n };\r\n\r\n this.showRouteEditor = this.type.is(CommunityNavigationWidgetLinkType.url);\r\n this.showTopicGroupsList = this.type.is(CommunityNavigationWidgetLinkType.activitiesGroup);\r\n this.showTopicsList = this.type.is(CommunityNavigationWidgetLinkType.activity);\r\n this.allowToSetAccess = ko.pureComputed(() => this.checkIfSupportsAccessSettings());\r\n\r\n const ready = ko.pureComputed(() => topicsReady()); \r\n\r\n effects.register(ready => {\r\n if (ready) {\r\n this.typeSelect.select(item => item.value == this.type());\r\n this.link.accessRestrictions().forEach(restriction => this.accessSelect.select(item => item.value == restriction));\r\n\r\n return [\r\n this.typeSelect.selectedItem.subscribeNotNull(item => {\r\n this.route('');\r\n this.topicId(undefined);\r\n\r\n this.pickedGroup(undefined);\r\n this.pickedTopic(undefined);\r\n\r\n this.type(item.value);\r\n this.accessSelect.clear();\r\n\r\n if (item.value == CommunityNavigationWidgetLinkType.moderatorTools)\r\n this.accessSelect.select(item => item.value == enums.MembershipStatusTypes.Moderator.value);\r\n\r\n if (item.value == CommunityNavigationWidgetLinkType.observerTools)\r\n this.accessSelect.select(item => item.value == enums.MembershipStatusTypes.Observer.value);\r\n }),\r\n\r\n withEffect(items => {\r\n this.link.accessRestrictions(items.map(item => item.value));\r\n }, [this.accessSelect.selectedItems]),\r\n\r\n withEffect((pickedGroup, groups, topicId, type) => {\r\n if (pickedGroup == undefined && type == CommunityNavigationWidgetLinkType.activitiesGroup) {\r\n pickedGroup = groups.find(group => group.id() == topicId) ??\r\n groups.find(group => group.topics().some(topic => topic.id() == topicId)) ??\r\n groups[0];\r\n\r\n this.pickedGroup(pickedGroup);\r\n }\r\n }, [this.pickedGroup, this.groups, this.topicId, this.type]),\r\n\r\n withEffect(group => {\r\n if (group != undefined && this.type() === CommunityNavigationWidgetLinkType.activitiesGroup)\r\n this.topicId(group.id());\r\n }, [this.pickedGroup]),\r\n\r\n withEffect((pickedTopic, topics, topicId, type) => {\r\n if (pickedTopic == undefined && type == CommunityNavigationWidgetLinkType.activity) {\r\n pickedTopic = topics.find(topic => topic.id() == topicId) ?? topics[0];\r\n\r\n this.pickedTopic(pickedTopic);\r\n }\r\n }, [this.pickedTopic, this.topics, this.topicId, this.type]),\r\n\r\n withEffect(topic => {\r\n if (topic != undefined && this.type() == CommunityNavigationWidgetLinkType.activity) {\r\n this.topicId(topic.id());\r\n }\r\n }, [this.pickedTopic])\r\n ]\r\n }\r\n }, [ready]); \r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'css': {\r\n 'community__navigation__layout__link': true\r\n }\r\n });\r\n }\r\n\r\n moveUp = () => {\r\n this.config.onMove?.(this.link, -1);\r\n }\r\n\r\n moveDown = () => {\r\n this.config.onMove?.(this.link, 1);\r\n }\r\n\r\n remove = () => {\r\n system.confirm('Are you sure you want to delete this link?', () => {\r\n this.config.onRemove?.(this.link);\r\n });\r\n }\r\n\r\n private checkIfSupportsAccessSettings() {\r\n switch (this.type()) {\r\n case CommunityNavigationWidgetLinkType.moderatorTools:\r\n case CommunityNavigationWidgetLinkType.observerTools:\r\n return false;\r\n\r\n default:\r\n return !this.isPublic();\r\n }\r\n }\r\n\r\n private getTypeSelectItems() {\r\n const result: Array> = [\r\n { title: 'URL', value: CommunityNavigationWidgetLinkType.url }\r\n ]\r\n\r\n if (!this.isPublic()) {\r\n result.push({ title: 'Activities', value: CommunityNavigationWidgetLinkType.activities });\r\n\r\n if (this.hasGroups())\r\n result.push({ title: 'Activities Group', value: CommunityNavigationWidgetLinkType.activitiesGroup });\r\n\r\n if (this.hasTopics())\r\n result.push({ title: 'Activity', value: CommunityNavigationWidgetLinkType.activity });\r\n\r\n result.push({ title: 'To Do', value: CommunityNavigationWidgetLinkType.todo });\r\n\r\n result.push(\r\n { title: 'Moderator Tools', value: CommunityNavigationWidgetLinkType.moderatorTools },\r\n { title: 'Observer Tools', value: CommunityNavigationWidgetLinkType.observerTools }\r\n );\r\n }\r\n\r\n return result;\r\n }\r\n\r\n private onKeyDown(e: JQueryEventObject) {\r\n switch (e.keyCode) {\r\n case 13: return false;\r\n default: return true;\r\n }\r\n }\r\n}","define([\n \"!!../../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./link.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!./link.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 { Func } from 'interfaces/func';\r\nimport { inject, injectable } from 'inversify';\r\nimport { DisposableSubscribable, Observable, ObservableArray, Subscribable, SubscribableOrNullableValue } from 'knockout';\r\nimport ActiveURLHashManager from 'managers/activeURLHash';\r\nimport AdminAccessManager from 'managers/adminAccess';\r\nimport AdminCommunityPagesManager from 'managers/community/pages/admin';\r\nimport CommunityPagesManager from 'managers/community/pages/base';\r\nimport PublicCommunityPagesManager from 'managers/community/pages/public';\r\nimport { IWCCStorageManager } from 'managers/iStorage';\r\nimport { EffectsContainer } from 'mixins/withEffects';\r\nimport CommunityPage from 'models/community/page';\r\nimport WCCEntity from 'models/entity';\r\nimport { SimpleTopic } from 'models/simpleTopic';\r\nimport { SimpleTopicsGroup } from 'models/simpleTopicsGroup';\r\nimport { LoginService } from 'services/login';\r\nimport CommunityTopicsManager from '../../../../managers/community/communityTopicsManager';\r\nimport CommunityNavigationWidgetLinkType from './enums/types';\r\nimport CommunityNavigationWidgetItemModel, { CommunityNavigationWidgetItemConfig } from './item';\r\nimport './link.html';\r\nimport './link.scss';\r\n\r\nconst router = require('models/router');\r\nconst activeHash = ActiveURLHashManager.instance.hash;\r\n\r\nconst groupPattern = /{group:((?:[0-9a-f]+-?)+)}/;\r\nconst topicPattern = /{topic:((?:[0-9a-f]+-?)+)}/;\r\nconst richContentPattern = /]+><\\/span>/;\r\nconst cssPattern = /^[\\w\\d- ]+$/;\r\n\r\nexport interface CommunityNavigationWidgetLinkConfig extends CommunityNavigationWidgetItemConfig {\r\n CSS?: SubscribableOrNullableValue\r\n Type?: SubscribableOrNullableValue\r\n Route?: SubscribableOrNullableValue\r\n TopicId?: SubscribableOrNullableValue\r\n IsProtected?: SubscribableOrNullableValue\r\n AccessRestrictions?: SubscribableOrNullableValue>\r\n\r\n css?: SubscribableOrNullableValue\r\n type?: SubscribableOrNullableValue\r\n route?: SubscribableOrNullableValue\r\n topicId?: SubscribableOrNullableValue\r\n isProtected?: SubscribableOrNullableValue\r\n isHighlighted?: SubscribableOrNullableValue\r\n accessRestrictions?: SubscribableOrNullableValue>\r\n\r\n toDoCount?: SubscribableOrNullableValue\r\n}\r\n\r\nexport class CommunityNavigationWidgetLinkModel extends CommunityNavigationWidgetItemModel {\r\n css: Observable\r\n type: Observable\r\n route: Observable\r\n topicId: Observable\r\n toDoCount: Observable\r\n isProtected: Observable\r\n isHighlighted: Observable\r\n accessRestrictions: ObservableArray \r\n\r\n constructor(data?: CommunityNavigationWidgetLinkConfig) {\r\n super(data);\r\n\r\n this.css = this.createField(data, 'css', '');\r\n this.type = this.createField(data, 'type', CommunityNavigationWidgetLinkType.url);\r\n this.route = this.createField(data, 'route');\r\n this.topicId = this.createField(data, 'topicId');\r\n this.toDoCount = this.createField(data, 'toDoCount', 0);\r\n this.isProtected = this.createField(data, 'isProtected', false);\r\n this.isHighlighted = this.createField(data, 'isHighlighted', false);\r\n this.accessRestrictions = this.createCollection(data, 'accessRestrictions');\r\n }\r\n\r\n override toJson(forExport = true) {\r\n let json = super.toJson(forExport);\r\n\r\n if (forExport)\r\n json = _(json).omit('toDoCount');\r\n\r\n return json;\r\n }\r\n\r\n override clone = WCCEntity>(overrides?: Partial): V {\r\n return super.clone({\r\n ...overrides,\r\n\r\n toDoCount: this.toDoCount\r\n });\r\n }\r\n\r\n validate() {\r\n return [\r\n this.validateCSS(),\r\n this.validateTitle(),\r\n this.validateRoute()\r\n ].every(error => error == undefined);\r\n }\r\n\r\n validateCSS() {\r\n var css = this.css();\r\n\r\n if (css.length > 0) {\r\n if (!cssPattern.test(css))\r\n return 'Invalid CSS. Only [a-zA-Z0-9_] allowed';\r\n }\r\n }\r\n\r\n validateTitle() {\r\n return this.title().length == 0 ? messages.FieldIsMandatory : undefined;\r\n }\r\n\r\n validateRoute() {\r\n switch (this.type()) {\r\n case CommunityNavigationWidgetLinkType.url:\r\n return !_(this.route()).any() ? messages.FieldIsMandatory : undefined;\r\n }\r\n }\r\n\r\n protected override getId() {\r\n return 'link:' + this.title();\r\n }\r\n\r\n protected override normalizeData(data: CommunityNavigationWidgetLinkConfig) {\r\n super.normalizeData(data);\r\n\r\n data.css ??= data.CSS;\r\n data.type ??= data.Type;\r\n data.route ??= data.Route;\r\n data.topicId ??= data.TopicId;\r\n data.isProtected ??= data.IsProtected;\r\n data.accessRestrictions ??= data.AccessRestrictions;\r\n }\r\n}\r\n\r\n@injectable()\r\nexport default class CommunityNavigationWidgetLinkVM {\r\n private adminAccess: AdminAccessManager\r\n private defaultPages: Subscribable>\r\n\r\n private type: Subscribable\r\n private route: Subscribable\r\n\r\n private groups: Subscribable>\r\n private topics: Subscribable>\r\n\r\n private isDemo: Subscribable\r\n private isDefault: Subscribable\r\n\r\n static Model = CommunityNavigationWidgetLinkModel;\r\n\r\n busy = ko.observable(false);\r\n\r\n labels = labels;\r\n\r\n title: Subscribable\r\n toDoCount: Subscribable\r\n\r\n showToDo: Subscribable\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) model: CommunityNavigationWidgetLinkModel,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo,\r\n @inject(wccModules.loginService) private loginService: LoginService,\r\n @inject(wccModules.storage) storage: IWCCStorageManager,\r\n @inject(wccModules.effects) effects: EffectsContainer\r\n ) {\r\n const { discussionId, isAdmin, isLoggedIn } = settings;\r\n\r\n this.adminAccess = effects.register(new AdminAccessManager());\r\n\r\n const pagesManager = isAdmin ? >storage.get(AdminCommunityPagesManager, {}) : >storage.get(PublicCommunityPagesManager, {});\r\n const pages = pagesManager.pluck(m => m.pages, []);\r\n\r\n this.defaultPages = pages\r\n .filter(page => page.startUpOptions() !== enums.CommunityPageStartUpOptions.IfLoggedIn.value || isLoggedIn())\r\n .filter(page => page.startUpOptions() !== enums.CommunityPageStartUpOptions.IfNotLoggedIn.value || !isLoggedIn())\r\n .filter(page => page.startUpOptions() !== enums.CommunityPageStartUpOptions.Never.value);\r\n\r\n const topicsManager = storage.get(CommunityTopicsManager, { discussionId });\r\n this.groups = topicsManager.pluck(m => m.groups, []);\r\n this.topics = topicsManager.pluck(m => m.topics, []);\r\n\r\n const css = model.css;\r\n this.title = model.title.pluck(title => this.processTitle(title));\r\n this.type = model.type;\r\n this.route = model.route;\r\n const isRoot = model.isRoot;\r\n this.isDemo = model.demo;\r\n\r\n this.isDefault = ko.pureComputed(() => this.checkIfDefault());\r\n const isActive = ko.pureComputed(() => this.checkIfActive());\r\n const isValid = ko.pureComputed(() => this.checkIfValid());\r\n\r\n this.toDoCount = model.toDoCount;\r\n this.showToDo = this.toDoCount.is(count => count > 0);\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'click': () => this.navigate(),\r\n 'visible': isValid,\r\n\r\n 'css': {\r\n 'community__navigation__link': true,\r\n 'community__navigation__link--active': isActive,\r\n 'community__navigation__link--highlighted': model.isHighlighted,\r\n 'community__navigation__link--root': isRoot,\r\n 'community__navigation__link--logout': this.type.is(CommunityNavigationWidgetLinkType.logout),\r\n 'active': isActive,\r\n 'community-navigation-logout': this.type.is(CommunityNavigationWidgetLinkType.logout)\r\n },\r\n\r\n 'attr': {\r\n 'data-todo': this.toDoCount\r\n }\r\n });\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'css': css\r\n });\r\n }\r\n\r\n navigate() {\r\n if (this.isDemo()) return;\r\n\r\n switch (this.type()) {\r\n case CommunityNavigationWidgetLinkType.logout:\r\n this.logout();\r\n break;\r\n\r\n case CommunityNavigationWidgetLinkType.moderatorTools:\r\n case CommunityNavigationWidgetLinkType.observerTools:\r\n this.showAdminTools();\r\n break;\r\n\r\n case CommunityNavigationWidgetLinkType.todo:\r\n this.openNextTopicToDo();\r\n break;\r\n\r\n case CommunityNavigationWidgetLinkType.communityProject:\r\n window.location.href = `/${this.route()}` ?? '';\r\n break;\r\n\r\n default:\r\n if (this.route() != null)\r\n router.navigate(this.route());\r\n\r\n break;\r\n }\r\n }\r\n\r\n private checkIfValid() {\r\n if (this.isDemo()) return true;\r\n\r\n switch (this.type()) {\r\n case CommunityNavigationWidgetLinkType.moderatorTools:\r\n case CommunityNavigationWidgetLinkType.observerTools:\r\n return this.adminAccess.hasAccess();\r\n\r\n default: return true;\r\n }\r\n }\r\n\r\n private logout() {\r\n this.loginService.dropToken();\r\n router.navigate('brochure');\r\n }\r\n\r\n private openNextTopicToDo() {\r\n const todo = this.topics().find(topic => topic.shouldBeAnswered()) ?? this.topics()[0];\r\n\r\n if (todo != undefined)\r\n router.navigate('topic/' + settings.discussionId + '/' + todo.id());\r\n }\r\n\r\n private async showAdminTools() {\r\n this.busy(true);\r\n\r\n await this.adminAccess.requestAccess();\r\n\r\n this.busy(false);\r\n }\r\n\r\n private checkIfDefault() {\r\n return this.route() != undefined && this.defaultPages().some(page => page.url() == this.route());\r\n }\r\n\r\n private checkIfActive() {\r\n return this.type() == CommunityNavigationWidgetLinkType.url &&\r\n (activeHash() == this.route() || activeHash() == '' && this.isDefault());\r\n }\r\n\r\n private processTitle(title: string) {\r\n return new Array>(\r\n title => this.processGroupsInTitle(title),\r\n title => this.processTopicsInTitle(title),\r\n title => this.processContentInTitle(title)\r\n ).reduce((result, func) => func(result), title);\r\n }\r\n\r\n private processGroupsInTitle(title: string) {\r\n let step = 0,\r\n success = false,\r\n match: RegExpExecArray | null;\r\n\r\n do {\r\n match = groupPattern.exec(title);\r\n success = false;\r\n\r\n if (match != undefined) {\r\n const [item, groupId] = match;\r\n\r\n let lIdx = match.index,\r\n rIdx = match.index + item.length;\r\n\r\n let group = this.groups().find(group => group.id() == groupId);\r\n\r\n if (group != undefined) {\r\n title = title.substring(0, lIdx) + group.title() + title.substring(rIdx + 1);\r\n\r\n success = true;\r\n step++;\r\n }\r\n }\r\n }\r\n while (success && step < 200);\r\n\r\n return title;\r\n }\r\n\r\n private processTopicsInTitle(title: string) {\r\n let step = 0,\r\n success = false,\r\n match: RegExpExecArray | null;\r\n\r\n do {\r\n match = topicPattern.exec(title);\r\n success = false;\r\n\r\n if (match != undefined) {\r\n const [item, topicId] = match;\r\n\r\n let lIdx = match.index,\r\n rIdx = match.index + item.length;\r\n\r\n let topic = this.topics().find(topic => topic.id() == topicId);\r\n\r\n if (topic !== undefined) {\r\n title = title.substring(0, lIdx) + topic.title() + title.substring(rIdx + 1);\r\n\r\n success = true;\r\n step++;\r\n }\r\n }\r\n }\r\n while (success && step < 200);\r\n\r\n return title;\r\n }\r\n\r\n private processContentInTitle(title: string) {\r\n if (title.length > 40) {\r\n var hasRichContent = richContentPattern.test(title);\r\n\r\n if (!hasRichContent)\r\n return title.substr(0, 40) + '...';\r\n }\r\n\r\n return title;\r\n }\r\n}","define([\n \"!!../../../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./group.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 CommunityNavigationWidgetGroupModel from '../group';\r\nimport CommunityNavigationWidgetItemModel from '../item';\r\nimport { CommunityNavigationWidgetLinkModel } from '../link';\r\nimport './group.html';\r\n\r\ninterface CommunityMobileNavigationWidgetGroupVMConfig {\r\n data?: SubscribableOrNullableValue\r\n onClick?: Action\r\n}\r\n\r\n@injectable()\r\nexport default class CommunityMobileNavigationWidgetGroupVM {\r\n isExpanded = ko.observable(false)\r\n\r\n items: Subscribable>\r\n isCollapsed: Subscribable\r\n\r\n header: Subscribable\r\n onClick: Action\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) config: CommunityMobileNavigationWidgetGroupVMConfig,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo\r\n ) {\r\n this.onClick = config.onClick ?? _.noop;\r\n\r\n const data = ko.flattenComputed(config.data);\r\n const title = data.pluck(d => d.title);\r\n this.items = data.pluck(d => d.items, []);\r\n const toDoCount = data.pluck(d => d.toDoCount);\r\n const isRoot = data.pluck(d => d.isRoot);\r\n\r\n this.header = ko.pureComputed(() => {\r\n return new CommunityNavigationWidgetLinkModel({\r\n title: title(),\r\n toDoCount: toDoCount(),\r\n isRoot: isRoot()\r\n });\r\n });\r\n\r\n this.isCollapsed = this.isExpanded.not();\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'css': {\r\n 'community__mobile-navigation__group': true\r\n }\r\n });\r\n }\r\n\r\n toggle = () => {\r\n this.isExpanded.toggle();\r\n }\r\n}","define([\n \"!!../../../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./item.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 CommunityNavigationWidgetItemModel from '../item';\r\nimport './item.html';\r\n\r\ninterface CommunityMobileNavigationWidgetItemVMConfig {\r\n data?: SubscribableOrNullableValue\r\n onClick?: Action\r\n}\r\n\r\n@injectable()\r\nexport default class CommunityMobileNavigationWidgetItemVM {\r\n data: Subscribable\r\n isContainer: Subscribable\r\n\r\n onClick: Action\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) config: CommunityMobileNavigationWidgetItemVMConfig,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo\r\n ) {\r\n this.data = ko.flattenComputed(config.data);\r\n this.isContainer = this.data.pluck(d => d.isContainer, false);\r\n\r\n this.onClick = config.onClick ?? _.noop;\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'css': {\r\n 'community__mobile-navigation__item': true\r\n }\r\n });\r\n }\r\n}","define([\n \"!!../../../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./navigation.html\", \n \"!../../../../../webpack/runtime/htmlExposer.js\"], function (content, expose) {\n content = content.__esModule ? content.default : content;\n expose(content);\n return content;\n });","import { IOverlayStageVM } from 'components/overlay/overlayStage.interfaces';\r\nimport { wccModules } from 'enums/wccModules';\r\nimport { inject, injectable } from 'inversify';\r\nimport { Subscribable } from 'knockout';\r\nimport overlayManager from 'managers/overlay';\r\nimport { EffectsContainer } from 'mixins/withEffects';\r\nimport CommunityNavigationWidgetItemModel from '../item';\r\nimport CommunityNavigationWidgetVM from '../navigation';\r\nimport './navigation.html';\r\n\r\nconst animationDuration = 650;\r\n\r\ncomponents\r\n .registerLocal('community-navigation-mobile-item', () => require('./item'))\r\n .registerLocal('community-navigation-mobile-group', () => require('./group'));\r\n\r\n@injectable()\r\nexport default class CommunityMobileNavigationWidgetVM {\r\n private stage = ko.observable();\r\n\r\n hidden = ko.observable(false);\r\n\r\n items: Subscribable>\r\n visible: Subscribable\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) root: CommunityNavigationWidgetVM,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo,\r\n @inject(wccModules.effects) effects: EffectsContainer\r\n ) {\r\n this.items = root.mobileLinks;\r\n this.visible = this.hidden.not();\r\n \r\n effects.register(stage => {\r\n if (stage != undefined)\r\n return () => stage.close();\r\n }, [this.stage]);\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'visible': this.items.any(),\r\n\r\n 'css': {\r\n 'community__mobile-navigation': true\r\n }\r\n });\r\n }\r\n\r\n async show() {\r\n this.hidden(false);\r\n\r\n const stage = await overlayManager.toOverlay({ id: 'wcc-components-community-navigation-mobile-popup' }, {\r\n fullscreen: true,\r\n lock: true,\r\n data: this\r\n });\r\n\r\n this.stage(stage);\r\n }\r\n\r\n hide() {\r\n this.hidden(true);\r\n\r\n setTimeout(() => this.stage(undefined), animationDuration);\r\n }\r\n\r\n //onBodyClick(m, e) {\r\n // let $target = $(e.target),\r\n // $link = $target.closest('community-navigation-link');\r\n\r\n // if (!$link.hasClass('navigation-group-header'))\r\n // this.hide();\r\n //}\r\n}","define([\n \"!!../../../../../node_modules/html-loader/dist/cjs.js??ref--26-1!./navigation.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!./navigation.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 CommunityAccess from 'enums/community/access';\r\nimport { wccModules } from 'enums/wccModules';\r\nimport { DOMHelpers } from 'helpers/dom';\r\nimport { inject, injectable } from 'inversify';\r\nimport { Observable, ObservableArray, Subscribable, SubscribableOrNullableValue } from 'knockout';\r\nimport CommunityAccessManager from 'managers/community/access';\r\nimport { CurrentUserManager } from 'managers/currentUser';\r\nimport device from 'managers/device';\r\nimport SimpleTopicsManager from 'managers/discussion/simpleTopics';\r\nimport { IWCCStorageManager, StorageArg } from 'managers/iStorage';\r\nimport { EffectsContainer } from 'mixins/withEffects';\r\nimport { SimpleTopic } from 'models/simpleTopic';\r\nimport { SimpleTopicsGroup } from 'models/simpleTopicsGroup';\r\nimport CommunityTopicsManager from '../../../../managers/community/communityTopicsManager';\r\nimport CommunityWidgetVM, { CommunityWidgetModel, CommunityWidgetVMConfig } from '../base/base';\r\nimport CommunityNavigationWidgetGroupsBuilder from './builders/groups';\r\nimport { default as CommunityNavigationWidgetMode, default as modes } from './enums/modes';\r\nimport CommunityNavigationWidgetLinkType from './enums/types';\r\nimport CommunityNavigationWidgetItemModel from './item';\r\nimport { CommunityNavigationWidgetLinkConfig, CommunityNavigationWidgetLinkModel } from './link';\r\nimport './navigation.html';\r\nimport './navigation.scss';\r\n\r\ncomponents\r\n .registerLocal('community-navigation-settings', () => require('./settings'))\r\n .registerLocal('community-navigation-desktop', () => require('./desktop/navigation'))\r\n .registerLocal('community-navigation-mobile', () => require('./mobile/navigation'))\r\n .registerLocal('community-navigation-link', () => require('./link'));\r\n\r\nconst { discussionId, discussionId: communityId } = settings;\r\n\r\nconst allowedAccessTypes = [\r\n CommunityAccess.public,\r\n CommunityAccess.membersonly\r\n]\r\n\r\nconst groupsBuilder = CommunityNavigationWidgetGroupsBuilder.instance;\r\n\r\nexport interface CommunityNavigationWidgetVMConfig extends CommunityWidgetVMConfig {\r\n IsUserLoggedIn?: boolean\r\n LogOut?: boolean\r\n Mode?: CommunityNavigationWidgetMode\r\n Links?: Array\r\n MobileLinks?: Array\r\n\r\n isUserLoggedIn?: boolean\r\n logOut?: boolean\r\n mode?: CommunityNavigationWidgetMode\r\n links?: Array\r\n mobileLinks?: Array\r\n}\r\n\r\nexport class CommunityNavigationWidgetModel extends CommunityWidgetModel {\r\n isUserLoggedIn: Observable\r\n mode: Observable\r\n showLogOutLink: Observable\r\n\r\n links: ObservableArray\r\n mobileLinks: ObservableArray\r\n\r\n constructor(data?: CommunityNavigationWidgetVMConfig) {\r\n super(data);\r\n\r\n this.isUserLoggedIn = ko.observable(data?.isUserLoggedIn ?? settings.loggedInNavigation);\r\n this.mode = this.createField(data, 'mode', CommunityNavigationWidgetMode.auto);\r\n this.showLogOutLink = this.createField(data, 'logOut', true);\r\n\r\n this.links = this.createCollection(data, 'links', jsonLink => new CommunityNavigationWidgetLinkModel(jsonLink));\r\n this.mobileLinks = this.createCollection(data, 'mobileLinks', jsonLink => new CommunityNavigationWidgetLinkModel(jsonLink));\r\n }\r\n\r\n protected override normalizeData(data: CommunityNavigationWidgetVMConfig) {\r\n super.normalizeData(data);\r\n\r\n data.isUserLoggedIn ??= data.IsUserLoggedIn;\r\n data.logOut ??= data.LogOut;\r\n data.mode ??= data.Mode;\r\n data.links ??= data.Links;\r\n data.mobileLinks ??= data.MobileLinks;\r\n }\r\n}\r\n\r\ninjectable()\r\nexport default class CommunityNavigationWidgetVM extends CommunityWidgetVM {\r\n private logOutLink = new CommunityNavigationWidgetLinkModel({ title: labels.LogOut, type: CommunityNavigationWidgetLinkType.logout, isProtected: true });\r\n\r\n private currentUserStatus: Subscribable\r\n private groups: Subscribable>\r\n private topics: Subscribable>\r\n\r\n private hasAccess: Subscribable\r\n private isLoggedIn: Subscribable\r\n\r\n static Model = CommunityNavigationWidgetModel\r\n\r\n mode: Subscribable\r\n\r\n links: Subscribable>\r\n mobileLinks: Subscribable>\r\n\r\n isDemo: Subscribable\r\n isMobile: Subscribable\r\n isDesktop: Subscribable\r\n showLogOutLink: Subscribable\r\n\r\n beforeInit: Action\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) model: CommunityNavigationWidgetModel,\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 super(model, info);\r\n\r\n this.isDemo = model.demo;\r\n\r\n this.mode = model.mode;\r\n this.showLogOutLink = model.showLogOutLink;\r\n\r\n this.isMobile = ko.pureComputed(() => this.checkIfMobile());\r\n this.isDesktop = this.isMobile.not();\r\n\r\n const accessManager = storage.get(CommunityAccessManager, { communityId });\r\n const access = accessManager.pluck(m => m.access, CommunityAccess.none);\r\n this.hasAccess = ko.pureComputed(() => this.isDemo() || allowedAccessTypes.includes(access()));\r\n\r\n const userManager = storage.get(CurrentUserManager, { discussionId });\r\n const user = userManager.pluck(m => m.person);\r\n this.currentUserStatus = user.pluck(u => u.status);\r\n \r\n \r\n const topicsManager = storage.get(CommunityTopicsManager, { discussionId });\r\n this.groups = topicsManager.pluck(m => m.groups, []);\r\n this.topics = topicsManager.pluck(m => m.topics, []);\r\n\r\n\r\n this.isLoggedIn = ko.pureComputed(() => this.isDemo() ? model.isUserLoggedIn() : user() != undefined);\r\n\r\n const links = ko.pureComputed(() => this.getLinks());\r\n\r\n this.links = links\r\n .filter(link => this.isLinkAllowed(link))\r\n .pluck(link => this.unwrapLink(link))\r\n .flatten()\r\n .mapSingle(links => groupsBuilder.build(links), null, true)\r\n .cache('title', (oldItem, newItem) => oldItem.update(newItem.toJson(false)))\r\n .extend({ deferred: true });\r\n \r\n const mobileLinks = ko.pureComputed(() => this.getMobileLinks());\r\n\r\n this.mobileLinks = mobileLinks\r\n .filter(link => this.isLinkAllowed(link))\r\n .pluck(link => this.unwrapLink(link))\r\n .flatten()\r\n .mapSingle(links => groupsBuilder.build(links), null, true)\r\n .cache('title', (oldItem, newItem) => oldItem.update(newItem.toJson(false)))\r\n .extend({ deferred: true });\r\n\r\n this.beforeInit = () => {\r\n effects.register((links, mobileLinks, isDemo) => {\r\n links.forEach(link => link.demo(isDemo));\r\n mobileLinks.forEach(link => link.demo(isDemo));\r\n }, [this.links, this.mobileLinks, this.isDemo]);\r\n }\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'css': {\r\n 'community__navigation': true\r\n }\r\n });\r\n }\r\n\r\n injectSettingsNodeInto(container: Node) {\r\n container.appendChild(DOMHelpers.createComponent('community-navigation-settings', { model: this }));\r\n }\r\n\r\n private checkIfMobile() {\r\n switch (this.mode()) {\r\n case modes.desktop: return false;\r\n case modes.mobile: return true;\r\n default: return device.isMobile();\r\n }\r\n }\r\n\r\n private getLinks() {\r\n let links = this.model.links();\r\n\r\n if (this.showLogOutLink())\r\n links = [...links, this.logOutLink];\r\n\r\n return links;\r\n }\r\n\r\n private getMobileLinks() {\r\n let links = this.model.mobileLinks();\r\n\r\n if (links.length == 0)\r\n links = this.model.links();\r\n\r\n if (this.showLogOutLink())\r\n links = [...links, this.logOutLink];\r\n\r\n return links;\r\n }\r\n\r\n private unwrapLink(link: CommunityNavigationWidgetLinkModel) {\r\n switch (link.type()) {\r\n case CommunityNavigationWidgetLinkType.activities: return this.unwrapActivitiesLink(link);\r\n case CommunityNavigationWidgetLinkType.activitiesGroup: return this.unwrapActivitiesGroupLink(link);\r\n case CommunityNavigationWidgetLinkType.activity: return this.unwrapActivityLink(link);\r\n case CommunityNavigationWidgetLinkType.todo: return this.unwrapToDoLink(link);\r\n default: return link;\r\n }\r\n }\r\n\r\n private unwrapActivitiesLink(link: CommunityNavigationWidgetLinkModel) {\r\n return this.groups().flatMap(group => {\r\n return group.topics().map(topic => {\r\n var adhocDiscussion = discussionId != topic.discussionId();\r\n \r\n return new CommunityNavigationWidgetLinkModel({\r\n title: ko.pureComputed(() => `${link.title()}/{group:${group.id()}}/{topic:${topic.id()}}`),\r\n route: ko.pureComputed(() => adhocDiscussion ? `gototaskfromcommunity/${topic.taskMemberCode()}#topic/${topic.discussionId()}/${topic.id()}` : `topic/${discussionId}/${topic.id()}`),\r\n topicId: topic.id,\r\n toDoCount: topic.todoCountForUI,\r\n css: link.css,\r\n type: adhocDiscussion ? CommunityNavigationWidgetLinkType.communityProject : CommunityNavigationWidgetLinkType.url\r\n });\r\n });\r\n });\r\n }\r\n\r\n private unwrapActivitiesGroupLink(link: CommunityNavigationWidgetLinkModel) {\r\n const group = this.groups().find(group => group.id() == link.topicId());\r\n\r\n if (group != undefined) {\r\n return group.topics().map(topic => {\r\n return new CommunityNavigationWidgetLinkModel({\r\n title: ko.pureComputed(() => `${link.title()}/{topic:${topic.id()}}`),\r\n route: ko.pureComputed(() =>`topic/${discussionId}/${topic.id()}`),\r\n topicId: topic.id,\r\n toDoCount: topic.todoCountForUI,\r\n css: link.css\r\n });\r\n });\r\n }\r\n\r\n return [];\r\n }\r\n\r\n private unwrapActivityLink(link: CommunityNavigationWidgetLinkModel) {\r\n var topic = this.topics().find(topic => topic.id() === link.topicId());\r\n\r\n if (topic != undefined) {\r\n return new CommunityNavigationWidgetLinkModel({\r\n title: link.title,\r\n route: ko.pureComputed(() =>`topic/${discussionId}/${topic?.id()}`),\r\n topicId: topic.id,\r\n toDoCount: topic.todoCountForUI,\r\n css: link.css\r\n });\r\n }\r\n\r\n return new Array();\r\n }\r\n\r\n private unwrapToDoLink(link: CommunityNavigationWidgetLinkModel) {\r\n return new CommunityNavigationWidgetLinkModel({\r\n title: link.title,\r\n type: link.type,\r\n toDoCount: this.topics.count(topic => topic.shouldBeAnswered() ? 1 : 0),\r\n css: link.css\r\n });\r\n }\r\n\r\n private isLinkAllowed(link: CommunityNavigationWidgetLinkModel) {\r\n return (this.hasAccess() || link.type() === CommunityNavigationWidgetLinkType.logout) &&\r\n link.isProtected() == this.isLoggedIn() &&\r\n (this.isDemo() || link.accessRestrictions().length == 0 || link.accessRestrictions().includes(this.currentUserStatus()));\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 });","import { wccModules } from 'enums/wccModules';\r\nimport { inject, injectable } from 'inversify';\r\nimport { Observable } from 'knockout';\r\nimport events from 'managers/events';\r\nimport overlayManager from 'managers/overlay';\r\nimport { EffectsContainer } from 'mixins/withEffects';\r\nimport { CommunityNavigationWidgetLayoutVMConfig } from './layout/layout';\r\nimport CommunityNavigationWidgetVM from './navigation';\r\nimport './settings.html';\r\n\r\ncomponents.registerLocal('community-navigation-layout', () => require('./layout/layout'));\r\n\r\n@injectable()\r\nexport default class CommunityNavigationWidgetSettingsVM {\r\n isUserLoggedIn: Observable\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) private widget: CommunityNavigationWidgetVM,\r\n @inject(wccModules.componentInfo) info: ko.components.ComponentInfo,\r\n @inject(wccModules.effects) private effects: EffectsContainer\r\n ) {\r\n this.isUserLoggedIn = widget.model.isUserLoggedIn;\r\n\r\n ko.applyBindingsToNode(info.element, {\r\n 'css': {\r\n 'community-navigation__settings': true\r\n }\r\n });\r\n }\r\n\r\n editLayout = () => {\r\n this.effects.register(async () => {\r\n const stage = await overlayManager.toOverlay({ id: 'wcc-components-community-navigation-settings-layout-dialog' }, {\r\n data: stage => ({\r\n layoutEditor: {\r\n navigation: this.widget.model,\r\n\r\n onSave: () => {\r\n stage.close();\r\n this.onChange();\r\n },\r\n\r\n onCancel: () => stage.close()\r\n }\r\n }),\r\n\r\n lock: true\r\n });\r\n\r\n return () => stage.close();\r\n });\r\n }\r\n\r\n toggleState = () => {\r\n this.isUserLoggedIn.toggle();\r\n }\r\n\r\n private onChange() {\r\n events.communityWidgetSettingsAreChanged.trigger(this.widget);\r\n }\r\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!./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!./multiselect.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 { ObservableArray, PureComputed, Subscribable, SubscribableOrValue } from \"knockout\";\r\nimport { EffectsContainer } from \"../../../mixins/withEffects\";\r\nimport DropdownVM, { Dropdown, DropdownItem, DropdownItemOrPredicate, JSONDropdown } from \"../base/base\";\r\nimport './multiselect.html';\r\n\r\nconst itemMaxWidth = 35;\n\ninterface JSONMultiSelectDropdown extends JSONDropdown {\n defaultTitle?: SubscribableOrValue\r\n showReset?: SubscribableOrValue\r\n}\n\nexport class MultiSelectDropdown extends Dropdown {\n selectedItems: ObservableArray>\n title: PureComputed\n\n defaultTitle: PureComputed\n showReset: PureComputed\n\n constructor(jsonModel?: JSONMultiSelectDropdown) {\r\n super(jsonModel);\r\n\r\n this.selectedItems = ko.observableArray().extend({ rateLimit: 0 });\n\n this.defaultTitle = ko.observable(jsonModel?.defaultTitle).unwrap().default('None');\n this.showReset = ko.observable(jsonModel?.showReset).unwrap().default(false);\n\n this.title = ko.pureComputed(() => this.getTitle());\r\n }\r\n\r\n toggle(itemOrPredicate: DropdownItemOrPredicate) {\n var item = this.findItem(itemOrPredicate);\n\n if (item) {\n if (!this.selectedItems().includes(item))\n this.selectedItems.push(item);\n else\n this.selectedItems.remove(item);\n }\n }\r\n\r\n select(itemOrPredicate: DropdownItemOrPredicate) {\n var item = this.findItem(itemOrPredicate);\n\n if (item && !this.selectedItems().includes(item))\n this.selectedItems.push(item);\n }\r\n\r\n deselect(itemOrPredicate: DropdownItemOrPredicate) {\n var item = this.findItem(itemOrPredicate);\n\n if (item)\n this.selectedItems.remove(item);\n }\r\n\r\n clear() {\n this.selectedItems([]);\n }\r\n\r\n private getTitle() {\n if (this.selectedItems().length === 0)\n return this.defaultTitle();\n\n return this.selectedItems().reduce((result, item, idx, list) => {\n if (idx > 0) {\n if (idx === list.length - 1)\n result += ' and ';\n else\n result += ', ';\n }\n\n var title = ko.unwrap(item.title) || '';\n\n if (title.length > itemMaxWidth)\n title = title.substr(0, itemMaxWidth - 3) + '...';\n\n result += title;\n\n return result;\n }, '');\n }\r\n}\r\n\r\n@injectable()\r\nexport default class MultiSelectDropdownVM extends DropdownVM {\r\n labels = labels\r\n\r\n headerNodes: JQuery\r\n itemNodes: JQuery\r\n\r\n defaultTitle: PureComputed\r\n selection: PureComputed\r\n\r\n items: Subscribable>\r\n selectedItems: ObservableArray\r\n\r\n showReset: PureComputed\r\n noneSelected: Subscribable\r\n\r\n dropdown: MultiSelectDropdown\r\n\r\n toggle = (itemOrPredicate: DropdownItemOrPredicate) => this.dropdown.toggle(itemOrPredicate)\r\n clear = () => this.dropdown.clear()\r\n\r\n constructor(\r\n @inject(wccModules.componentConfig) model: MultiSelectDropdown,\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\r\n this.headerNodes = $(info.templateNodes).filter('select-head').contents();\n this.itemNodes = $(info.templateNodes).filter('select-item').contents();\r\n\r\n if (!_(this.headerNodes).any())\n this.headerNodes = $('');\n\n if (!_(this.itemNodes).any())\n this.itemNodes = $('');\r\n\r\n this.defaultTitle = model.defaultTitle; \n this.selection = model.title;\r\n\r\n this.items = model.items;\n this.selectedItems = model.selectedItems;\n\n this.showReset = model.showReset;\n this.noneSelected = model.selectedItems.isEmpty();\r\n\r\n effects.register((items, selectedItems) => {\r\n selectedItems.forEach(selectedItem => {\r\n if (!items.includes(selectedItem))\r\n this.selectedItems.remove(selectedItem);\r\n });\r\n }, [this.items, this.selectedItems]);\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}","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}","export default class ActiveURLHashManager {\r\n static instance = new ActiveURLHashManager;\r\n\r\n hash = ko.observable(this.getHash());\r\n\r\n constructor() {\r\n $(window).on('hashchange', () => this.hash(this.getHash()));\r\n }\r\n\r\n private getHash() {\r\n return location.hash.substring(1);\r\n }\r\n}","import { wccModules } from 'enums/wccModules';\r\nimport { Subscribable } from 'knockout';\r\nimport Task from 'models/task';\r\nimport WCCError from 'models/wccError';\r\nimport { TasksService } from 'services/tasks';\r\nimport { createExtendedContainer } from '../configuration/inversify/container/extended';\r\nimport { CurrentUserManager } from './currentUser';\r\nimport { IWCCStorageManager } from './iStorage';\r\nimport TaskManager from './task';\r\n\r\nexport default class AdminAccessManager {\r\n private tasksService: TasksService\r\n\r\n private task: Subscribable\r\n private moderatorAccessTypes: Subscribable>\r\n private observerAccessTypes: Subscribable>\r\n private currentUserStatus: Subscribable\r\n\r\n dispose: Action\r\n\r\n hasAccess: Subscribable\r\n ready: Subscribable\r\n\r\n constructor() {\r\n const [container, disposeContainer] = createExtendedContainer();\r\n this.dispose = disposeContainer;\r\n\r\n this.tasksService = container.get(wccModules.tasksService);\r\n\r\n const storage = container.get(wccModules.storage);\r\n const { discussionId } = settings;\r\n\r\n const taskManager = storage.get(TaskManager, { taskId: discussionId });\r\n this.task = taskManager.pluck(m => m.task);\r\n const discussionReady = this.task.isNotNull();\r\n this.moderatorAccessTypes = this.task.pluck(t => t.moderatorAccessTypes, []);\r\n this.observerAccessTypes = this.task.pluck(t => t.observerAccessTypes, []);\r\n\r\n const currentUserManager = storage.get(CurrentUserManager, { discussionId });\r\n const currentUser = currentUserManager.pluck(m => m.person);\r\n const currentUserReady = currentUser.isNotNull();\r\n this.currentUserStatus = currentUser.pluck(u => u.status);\r\n\r\n this.hasAccess = ko.pureComputed(() => this.checkIfHasAccess());\r\n this.ready = ko.pureComputed(() => discussionReady() && currentUserReady());\r\n }\r\n\r\n async requestAccess() {\r\n try {\r\n if (!this.hasAccess())\r\n throw new WCCError(messages.PermissionDenied);\r\n\r\n const task = this.task();\r\n\r\n if (task == undefined)\r\n throw new WCCError(messages.UnknownError);\r\n\r\n const query = this.getQuery();\r\n\r\n if (query == undefined)\r\n throw new WCCError(messages.UnknownError);\r\n\r\n const response = await query.post({ TaskId: task.id(), AccountDNS: task.accountDNS() });\r\n const url = response.Data;\r\n\r\n if (!response.IsRequestSuccessful || response.Data == undefined)\r\n throw new WCCError(response.Message);\r\n\r\n $.fancybox.open(\r\n {\r\n type: 'html',\r\n content: '
' + labels.TheModObsToolsWillBeOpenedInANewWindow\r\n .replace('{0}', this.getTitle())\r\n .replace('{1}', url)\r\n .replace('{2}', ' target=\"_blank\" onclick=\"$.fancybox.close();\"') + '
'\r\n }, { padding: 20 });\r\n } catch (ex) {\r\n system.handleError(ex);\r\n }\r\n }\r\n\r\n checkIfHasAccess() {\r\n switch (this.currentUserStatus()) {\r\n case enums.MembershipStatusTypes.Moderator.value: return this.moderatorAccessTypes().length > 0;\r\n case enums.MembershipStatusTypes.Observer.value: return this.observerAccessTypes().length > 0;\r\n default: return false;\r\n }\r\n }\r\n\r\n getQuery() {\r\n switch (this.currentUserStatus()) {\r\n case enums.MembershipStatusTypes.Moderator.value: return this.tasksService.queries.moderatorLogin();\r\n case enums.MembershipStatusTypes.Observer.value: return this.tasksService.queries.observerLogin();\r\n }\r\n }\r\n\r\n getTitle() {\r\n switch (this.currentUserStatus()) {\r\n case enums.MembershipStatusTypes.Moderator.value: return labels.ModeratorTools;\r\n case enums.MembershipStatusTypes.Observer.value: return labels.ObserverTools;\r\n default: return '';\r\n }\r\n }\r\n}","import storageDefaults from 'decorators/storageDefaults';\r\nimport { wccModules } from 'enums/wccModules';\r\nimport { inject, injectable } from 'inversify';\r\nimport { IWCCStorageManager } from 'managers/iStorage';\r\nimport SignalREventsManager from 'managers/signalR/events';\r\nimport { EffectsContainer, withEffects } from 'mixins/withEffects';\r\nimport { ServicesContext } from 'services/context';\r\nimport SimpleTopicsManager from '../discussion/simpleTopics';\r\n\r\nconst { discussionId } = settings;\r\n\r\ninterface CommunityTopicsManagerConfig {\r\n discussionId: string\r\n searchString: string\r\n peopleTagsIDs: Array\r\n}\r\n\r\n@injectable()\r\n@storageDefaults(>{ discussionId, searchString: '', peopleTagsIDs: [] })\r\nexport default class CommunityTopicsManager extends SimpleTopicsManager {\r\n\r\n constructor(\r\n @inject(wccModules.managerConfig) config: CommunityTopicsManagerConfig,\r\n @inject(wccModules.servicesContext) ctx: ServicesContext,\r\n @inject(wccModules.storage) storage: IWCCStorageManager,\r\n @inject(wccModules.signalREvents) signalREvents: SignalREventsManager,\r\n @inject(wccModules.effects) effects: EffectsContainer\r\n ) {\r\n super(config, ctx, storage, signalREvents, effects);\r\n \r\n }\r\n\r\n protected override load() {\r\n\r\n // TODO - determine whether this is even needed... \r\n // For communityTopicManager, it is only used at the navigation level external to the discussion topic stuff.\r\n //if (this.searchString.length > 0 || this.peopleTagsIDs.length > 0) {\r\n // return this.ctx\r\n // .topicsService\r\n // .queries\r\n // .filteredSimpleTopics(this.discussionId)\r\n // .addArgs('$orderby=TopicOrder')\r\n // .important()\r\n // .toArrayPost({\r\n // searchString: this.searchString,\r\n // peopleTagsIDs: this.peopleTagsIDs\r\n // });\r\n //}\r\n\r\n return this.ctx\r\n .topicsService['queries']\r\n .simpleTopicsByDiscussionIdForCommunity(this.discussionId)\r\n .addArgs('$orderby=TopicOrder')\r\n .important()\r\n .toArray();\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}","define(['plugins/router'], router => {\n const { isAdmin } = settings;\n\n let fakeRouter = {\n navigate: _.noop,\r\n activeInstruction: ko.observable(null)\r\n };\n\n if (isAdmin)\n return fakeRouter;\n\n return router;\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-widget{font-family:\\\"Roboto\\\",sans-serif}.community-widget-cover{position:absolute;top:0;right:0;bottom:0;left:0;display:none}.community-widget__settings{display:flex;align-items:center;width: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, \".community__navigation__layout{position:relative;display:block;background-color:#fff;width:900px;max-width:90vw;min-height:400px}.community__navigation__layout__body__header{padding:20px 20px 0}.community__navigation__layout__setting{font-size:13px;margin-bottom:10px}.community__navigation__layout__body{padding:20px;min-height:350px}.community__navigation__layout__section{margin-bottom:20px}.community__navigation__layout__section:last-child{margin-bottom:0}.community__navigation__layout__section__title{margin-bottom:5px}.community__navigation__layout__link{position:relative;display:flex;justify-content:space-between;padding:5px}.community__navigation__layout__link .wcc-text-editor .wcc-text-editor__content{padding:0;height:21px;min-height:21px;border-color:#a0a0a0}.community__navigation__layout__link:nth-child(even){background-color:#ecece9}.community__navigation__layout__link+.community__navigation__layout__link .community__navigation__layout__link__controls--top{display:none}.community__navigation__layout__link__body{display:flex;flex-wrap:nowrap;align-items:center;width:100%}.community__navigation__layout__link__footer{display:flex;justify-content:flex-end;align-items:center;flex-shrink:0;margin-left:15px}.community__navigation__layout__link__footer__section{margin-right:10px}.community__navigation__layout__link__footer__section:last-child{margin-right:0}.community__navigation__layout__section__footer{margin-top:10px;margin-left:7px}.community__navigation__layout__section__control{font-size:12px;cursor:pointer;border-bottom:1px dotted transparent;color:#5ca2dd;border-bottom-color:#5ca2dd}.community__navigation__layout__section__control:focus,.community__navigation__layout__section__control:hover{outline:none;text-decoration:none}.community__navigation__layout__section__control:hover{color:#246faf;border-bottom-color:#246faf}.community__navigation__layout__link__block{margin-left:15px}.community__navigation__layout__link__block:first-child{margin-left:0}.community__navigation__layout__link__block--css{width:200px;flex-shrink:0}.community__navigation__layout__link__block--title{width:200px;flex-shrink:0}.community__navigation__layout__link__block--access{flex-shrink:0}.community__navigation__layout__link__block--type{flex-shrink:0}.community__navigation__layout__link__block--route{width:100%}.community__navigation__layout__link__route-editor{position:relative;margin-left:10px}.community__navigation__layout__link__route-editor:before{font-size:12px;color:#7a7a7a;position:absolute;top:0;left:-2px;bottom:0;display:flex;align-items:center;content:\\\"#\\\";transform:translateX(-100%)}.community__navigation__layout__link__select .dropdown-toggle{max-width:200px;white-space:nowrap;overflow:hidden}.community__navigation__layout__link__select li>a{max-width:300px;overflow:hidden}.community__navigation__layout__controls{display:flex;flex-wrap:nowrap;justify-content:space-between;align-items:center;background-color:#5ca2dd;padding:10px}.community__navigation__layout__controls__section{display:flex;flex-wrap:nowrap;align-items:center}.community__navigation__layout__controls__section--left{justify-content:flex-start}.community__navigation__layout__controls__section--left .community__navigation__layout__control{margin-right:15px}.community__navigation__layout__controls__section--left .community__navigation__layout__control:last-child{margin-right:15px}.community__navigation__layout__controls__section--right{justify-content:flex-end}.community__navigation__layout__controls__section--right .community__navigation__layout__control{margin-left:15px}.community__navigation__layout__controls__section--right .community__navigation__layout__control:last-child{margin-left:15px}\", \"\"]);\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, \".community__navigation__link{position:relative;display:inline-flex;justify-content:space-between;align-items:center;overflow:hidden}.community__navigation__link .wcc-badge{display:flex}.community__navigation__link.community__navigation__link--highlighted:before{position:absolute;top:50%;left:-5px;transform:translate(-2px, -50%);width:5px;height:5px;border-radius:100%;background-color:#ee7c0e}.community__navigation__link__content{flex-grow:1;overflow:hidden;text-overflow:ellipsis}.community__navigation__link__labels{flex-shrink:0;margin-left: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, \".community__navigation{display:block;position:relative;white-space:nowrap}.community-navigation__settings{display:flex;justify-content:flex-start;align-items:center}.community__navigation__link--logout{color:#f5332e}.community__desktop-navigation{display:block}.community__desktop-navigation .community__navigation__link--logout{color:#f5332e}.community__desktop-navigation__body{display:flex;flex-wrap:wrap;justify-content:flex-start;align-items:center}.community__desktop-navigation__group{display:inline-block;margin-right:15px;line-height:100%}.community__desktop-navigation__group .community__navigation__link{margin-right:0;width:100%}.community__desktop-navigation__link{font-family:\\\"Lato\\\",sans-serif;font-size:15px;cursor:pointer}.community__desktop-navigation__link .wcc-badge{margin:4px 4px 4px 0}community-navigation-desktop community-navigation-link{margin-right:15px}community-navigation-desktop community-navigation-link:last-child{margin-right:0}.community__mobile-navigation{display:block;text-align:right}.community__mobile-navigation__popup{width:100%;height:100%;padding-right:15%;overflow:auto;animation-duration:650ms}.community__mobile-navigation__popup .community__navigation__link--logout{color:#f5332e}.community__mobile-navigation__popup__body{background-color:#fff;min-height:100%}.community__mobile-navigation__item{display:block}.community__mobile-navigation__group{display:block}.community__mobile-navigation__group__body{margin-left:15px}.community__mobile-navigation__link{display:flex;justify-content:flex-start;align-items:center;padding:15px;margin-right:0;transition:background-color ease-in-out .4s;font-size:18px}.community__mobile-navigation__link .community__navigation__link__content{flex-grow:initial}.community__mobile-navigation__link .fa{margin-left:7px;vertical-align:middle;font-size:18px}.community__mobile-navigation__toggler{display:inline-block;margin:10px;font-size:21px;width:24px;height:20px;overflow:hidden;vertical-align:bottom}.community__mobile-navigation__toggler .glyphicons{display:inline-block;position:relative;left:-10px;top:-1px;margin:0 10px}.community__mobile-navigation__controls{text-align:right}.community__mobile-navigation__close-control{position:relative;display:inline-block;padding:22px}.community__mobile-navigation__close-control::before,.community__mobile-navigation__close-control::after{position:absolute;top:calc(50% - 1px);left:calc(50% - 8px);display:inline-block;content:\\\"\\\";pointer-events:none;background-color:currentColor;box-sizing:border-box;color:currentColor;opacity:.9;height:2px;width:22px}.community__mobile-navigation__close-control::before{transform:rotate(45deg);-moz-transform:rotate(45deg);-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg)}.community__mobile-navigation__close-control::after{transform:rotate(-45deg);-moz-transform:rotate(-45deg);-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg)}community-navigation-layout-tab{display:inline-block;margin-right:15px}.widget-layout-editor .ql-editor:before{top:4px;left:12px}.widget-layout-editor glyphicon,.widget-layout-editor fa-icon{color:#868686}.widget-layout-editor p{border-top:1px solid #c6c6c6;border-left:1px solid #c6c6c6;border-right:1px solid #c6c6c6;padding:7px 10px;margin:0 !important;font-size:13px;white-space:nowrap}.widget-layout-editor p:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.widget-layout-editor p:last-child{border-bottom:1px solid #c6c6c6;border-bottom-left-radius:4px;border-bottom-right-radius:4px}\", \"\"]);\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-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","// Module\nvar code = \"\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"\\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 = \"\\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 = \"\\r\\n\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"\\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;"],"sourceRoot":""}