{"version":3,"sources":["webpack:///./src/utility/ValidationRules.ts","webpack:///./src/views/login/ForgotPassword.vue?cea8","webpack:///./src/views/login/ForgotPassword.vue","webpack:///./src/views/login/ForgotPassword.vue?434f","webpack:///./src/views/login/ForgotPassword.vue?abac","webpack:///./src/app.user/components/DownloadFileButton.vue?1c32","webpack:///./src/app.user/components/DownloadFileButton.vue","webpack:///./src/app.user/components/DownloadFileButton.vue?f4a7","webpack:///./src/app.user/components/DownloadFileButton.vue?7632","webpack:///./src/models/entities/file/index.ts","webpack:///./src/models/entities/version.ts","webpack:///./src/models/index.ts","webpack:///./src/models/entities/property/SelectedProperty.ts","webpack:///./src/components/Toast.vue?6417","webpack:///./src/components/Toast.vue","webpack:///./src/components/Toast.vue?3b80","webpack:///./src/components/Toast.vue?4b1a","webpack:///./src/models/entities/metadata/CreateEditMetadataModel.ts","webpack:///./src/models/entities/package/index.ts","webpack:///./src/views/Loader.vue?52f0","webpack:///./src/views/Loader.vue","webpack:///./src/views/Loader.vue?feae","webpack:///./src/views/Loader.vue?e6b3","webpack:///./src/app.admin/eventBus.ts","webpack:///./src/app.user/components/LinkTextAndPopUp/LinkText.vue?f0d6","webpack:///./src/app.user/components/LinkTextAndPopUp/LinkText.vue?89d0","webpack:///./src/app.user/components/LinkTextAndPopUp/LinkText.vue?fd6e","webpack:///./src/app.user/components/LinkTextAndPopUp/LinkText.vue?c598","webpack:///./src/app.user/components/LinkTextAndPopUp/PopUpCard.vue?5cb8","webpack:///./src/app.user/components/LinkTextAndPopUp/PopUpCard.vue?ac81","webpack:///./src/app.user/components/LinkTextAndPopUp/PopUpCard.vue?017a","webpack:///./src/app.user/components/LinkTextAndPopUp/PopUpCard.vue?d5e7","webpack:///./src/components/LoginForm.vue?f685","webpack:///./src/components/LoginForm.vue","webpack:///./src/components/LoginForm.vue?4aa0","webpack:///./src/components/LoginForm.vue?6d4e","webpack:///./src/components/RegistrationForm.vue?8e1a","webpack:///./src/components/RegistrationForm.vue","webpack:///./src/components/RegistrationForm.vue?db4e","webpack:///./src/components/RegistrationForm.vue?78f6","webpack:///./src/models/entities/property/createEditPropertyRequest.ts","webpack:///./src/views/login/VerifyAndSetPassword.vue?d7a5","webpack:///./src/views/login/VerifyAndSetPassword.vue","webpack:///./src/views/login/VerifyAndSetPassword.vue?7b4e","webpack:///./src/views/login/VerifyAndSetPassword.vue?19bc","webpack:///./src/components/MarkdownItVue.vue?0efd","webpack:///./src/app.user/components/MbdGuidelinesTile.vue?599e","webpack:///./src/models/clonedEditModel.ts","webpack:///./src/models/JwtValues.ts","webpack:///./src/views/login/LoginTabs.vue?d5d0","webpack:///./src/models/entities/standard/index.ts","webpack:///./src/models/entities/property/propertyValue.ts","webpack:///./src/models/entities/progress/index.ts","webpack:///./src/app.user/eventBus.ts","webpack:///./src/components/LoginForm.vue?9ea2","webpack:///./src/models/entities/property/SelectedProperties.ts","webpack:///./src/_common/enums.ts","webpack:///./src/app.user/components/LinkTextAndPopUp/PopUpCard.vue?8419","webpack:///./src/models/entities/file/CreateEditFileModel.ts","webpack:///./src/app.user/components/LinkTextAndPopUp/LinkText.vue?8e65","webpack:///./src/models/entities/mbdGuideline/createEditGuidelineRequest.ts","webpack:///./src/models/entities/metadata/index.ts","webpack:///./src/directives/if-perm.ts","webpack:///./src/components/RegistrationForm.vue?78d0","webpack:///./src/views/login/ResetPassword.vue?e78e","webpack:///./src/views/login/ResetPassword.vue","webpack:///./src/views/login/ResetPassword.vue?a1c2","webpack:///./src/views/login/ResetPassword.vue?376d","webpack:///./src/views/login/LoginTabs.vue?41cc","webpack:///./src/views/login/LoginTabs.vue?de95","webpack:///./src/views/login/LoginTabs.vue?890a","webpack:///./src/views/login/LoginTabs.vue?9327","webpack:///./src/store/modules/authStore.ts","webpack:///./src/app.admin/store/modules/tagsStore.ts","webpack:///./src/app.admin/store/modules/filesStore.ts","webpack:///./src/app.admin/store/modules/packagesStore.ts","webpack:///./src/app.admin/store/modules/standardsStore.ts","webpack:///./src/app.admin/store/modules/mbdGuidelinesStore.ts","webpack:///./src/app.admin/store/modules/courseStore.ts","webpack:///./src/app.admin/store/modules/fileSystemStore.ts","webpack:///./src/app.admin/store/modules/filteredDataStore.ts","webpack:///./src/views/login/LoginLayout.vue?7ea3","webpack:///./src/views/login/LoginLayout.vue?fb07","webpack:///./src/views/login/LoginLayout.vue?8737","webpack:///./src/views/login/LoginLayout.vue?0e2a","webpack:///./src/models/entities/metadata/CreateEditMetadataRequest.ts","webpack:///./src/models/entities/course/CreateEditCourseModel.ts","webpack:///./src/app.admin/store/modules/propertiesStore.ts","webpack:///./src/models/entities/fileSystem/index.ts","webpack:///./src/app.user/components/MbdGuidelineSideTile.vue?b2ac","webpack:///./src/models/entities/file/FileUploadData.ts","webpack:///./src/models/entities/course/CreateEditVimeoVideoRequest.ts","webpack:///./src/app.user/views/TermsOfUse.vue?0940","webpack:///./src/app.user/views/TermsOfUse.vue","webpack:///./src/models/entities/file/CreateEditFileRequest.ts","webpack:///./src/models/entities/mbdGuideline/createEditMbdGuidelineModel.ts","webpack:///./src/models/entities/property/property.ts","webpack:///./src/views/login/LoginLayout.vue?06db","webpack:///./src/models/entities/package/CreatePackageRequest.ts","webpack:///./src/models/entities/course/index.ts","webpack:///./src/utility/ApiService.ts","webpack:///./src/models/entities/property/index.ts","webpack:///./src/store/store.ts","webpack:///./src/app.user/components/DocumentCard.vue?1035","webpack:///./src/app.user/components/DocumentCard.vue","webpack:///./src/app.user/components/DocumentCard.vue?247e","webpack:///./src/app.user/components/DocumentCard.vue?32eb","webpack:///./src/app.user/components/DocumentDialog.vue?0620","webpack:///./src/app.user/components/DocumentDialog.vue","webpack:///./src/app.user/components/DocumentDialog.vue?b3e8","webpack:///./src/app.user/components/DocumentDialog.vue?e9ce","webpack:///./src/app.user/components/IconImage.vue?da8d","webpack:///./src/app.user/components/IconImage.vue","webpack:///./src/app.user/components/IconImage.vue?4e99","webpack:///./src/app.user/components/IconImage.vue?f3a7","webpack:///./src/app.user/components/MbdGuidelineSideTile.vue?87e9","webpack:///./src/app.user/components/MbdGuidelineSideTile.vue?f161","webpack:///./src/app.user/components/MbdGuidelineSideTile.vue?bf5d","webpack:///./src/app.user/components/MbdGuidelineSideTile.vue?52ab","webpack:///./src/app.user/components/MbdGuidelinesTile.vue?d071","webpack:///./src/app.user/components/MbdGuidelinesTile.vue","webpack:///./src/app.user/components/MbdGuidelinesTile.vue?7c7a","webpack:///./src/app.user/components/MbdGuidelinesTile.vue?5ed0","webpack:///./src/models/responses/vimeo/index.ts","webpack:///./src/_common/permission.enums.ts","webpack:///./src/models/editModel.ts","webpack:///./src/models/entities/course/CreateEditVimeoVideoModel.ts","webpack:///./src/_common/ApiRoutes.ts","webpack:///./src/_helpers/http.helpers.ts","webpack:///./src/_helpers/search.helpers.ts","webpack:///./src/_helpers/parsing.helpers.ts","webpack:///./src/_helpers/api.helpers.ts","webpack:///./src/utility/RoutingService.ts","webpack:///./src/_helpers/router.manager.ts","webpack:///./src/utility/JwtService.ts","webpack:///./src/models/entities/mbdGuideline/index.ts","webpack:///./src/models/entities/course/CreateEditCourseRequest.ts","webpack:///./src/models/entities/index.ts","webpack:///./src/models/responses/index.ts","webpack:///./src/utility/Utilities.ts","webpack:///./src/_common/index.ts","webpack:///./src/store/modules/stateStore.ts","webpack:///./src/store/modules/searchStore.ts","webpack:///./src/store/modules/globalDataStore.ts","webpack:///./src/components/MarkdownItVue.vue?1af0","webpack:///./src/components/MarkdownItVue.vue","webpack:///./src/components/MarkdownItVue.vue?06a8","webpack:///./src/components/MarkdownItVue.vue?291e"],"names":["emailRegex","required","value","hasElements","length","email","test","version","includes","split","some","x","isNaN","Number","maxLength","numeric","parseInt","render","_vm","this","_h","$createElement","_c","_self","attrs","staticClass","_v","_s","on","$event","backToLogin","ref","nativeOn","type","indexOf","_k","keyCode","key","sendPasswordReset","model","callback","$$v","validForm","expression","emailRules","loading","staticRenderFns","authStore","emailSent","ClearErrors","$router","push","name","$refs","form","validate","RequestPasswordReset","success","component","VAlert","VBtn","VCard","VCardActions","VCardText","VCol","VForm","VIcon","VRow","VTextField","VToolbar","_t","color","preventDefault","stopPropagation","download","apply","arguments","wrapCallWithResult","ApiService","Get","ApiRoutes","Global","Identity","GetUser","TokenValues","userId","user","User","Content","GetFileDownloadUrl","fileId","result","CreateFileProgress","username","$emit","window","open","newProgress","wrapCall","Post","Progress","String","default","Version","majorVersion","minorVersion","other","parseFloat","SelectedProperty","propertyId","clone","singleSelect","multiSelect","paired","undefined","enabled","mouseover","message","clearSnackbar","snackbarTimeRemaining","timeRemaining","interval","enableSnackbar","timeout","setInterval","clearInterval","Boolean","VProgressLinear","VSnackbar","VSpacer","CreateEditMetadataModel","tagIds","selectedProperties","selectedStandards","selectedMbdGuidelines","newPropertyId","tags","map","tag","id","mbdGuidelines","standards","getPropertyValues","Clone","output","multiSelectValues","grouped","Object","values","forEach","group","prop","valueIds","validateValue","valueId","singleSelectValues","valuePairs","validatePairedValue","principlePropertyId","principleId","principleValueId","requiredId","requiredValueId","properties","Error","requiredPropertyId","staticStyle","progressBar","initProgress","stateStore","val","oldval","setTimeout","SetRouteSteps","SetLoading","routeSteps","routeStepsComplete","EventBus","addHoverListener","domProps","linked","text","guidelinesStore","linkItems","document","getElementsByClassName","dictionaryContainer","dictionaryCard","mouseArray","Array","mouseCardArray","mouseDocumentArray","drag","arr","imageArr","newText","i","slice","replace","substring","dictionaryCardAccess","sortedTerms","imageArray","removeTags","termArray","toString","count","check","RegExp","Name","matchedText","a","b","Link","charAt","newerText","addTags","addEventListener","e","allTrue","j","matches","classList","add","textContent","toUpperCase","coords","getCoords","style","left","top","offsetHeight","remove","elem","box","getBoundingClientRect","body","docEl","documentElement","scrollTop","pageYOffset","scrollLeft","pageXOffset","clientTop","clientLeft","screen","width","Math","round","permissions","DictionaryCardAccess","GuidelinesArray","terms","term","Citations","ID","Definition","Description","Entries","Other_Names","Term","replaceAll","sort","close","definition","link","element","pos1","pos2","pos3","pos4","dragMouseDown","event","clientX","clientY","onmouseup","closeDragElement","onmousemove","elementDrag","offsetTop","offsetLeft","onmousedown","$on","data","dragElement","toLowerCase","login","hasFieldError","getFieldError","passwordRules","password","hasUnverifiedEmailError","sendEmailVerification","tab","AdminPanel","Login","routePath","localStorage","getItem","userIsAdmin","currentRoute","path","location","href","SendEmailVerification","SetSuccessToastMessage","ToggleSuccessToast","fieldErrors","Errors","FieldErrors","HasErrors","error","code","UnverifiedEmail","Authenticated","authenticated","_e","accountCreated","register","rules","firstName","lastName","organization","passwordRequires","verifyPasswordRule","passwordcheck","Register","CreateEditPropertyRequest","selectionType","standalone","CreateEditPairedPropertyRequest","requiredProperty","setPassword","verificationComplete","verifyPassword","token","hasQueryParams","SetPassword","SetSuccessToast","$route","query","ConfirmEmail","ClonedEditModel","original","isNew","editing","modified","deleted","new","temp","previousValue","JSON","stringify","JwtValues","expiration","exp","issuedAt","iat","tokenId","jti","notBefore","nbf","subject","sub","roles","role","isArray","now","floor","Date","PropertyValue","childValues","SelectedProperties","property","set","index","splice","pairs","item","isPaired","ids","isSingle","isMulti","concat","SelectionType","ErrorResponseType","AuthError","FileScanStatusEnum","FileUploadStatusEnum","FileStatusEnum","CreateEditFileModel","title","originalName","fileExtension","fileType","notes","contentAccessLevel","thumbnailId","sourceFiles","selectedFolder","metadata","extension","folder","FromResponse","sections","CreateEditGuidelineRequest","category","ruleStatement","whyStatement","agnosticInstructions","instructions","hasPermDirective","inserted","el","binding","vnode","ok","errorState","errorMessage","userPerms","permValues","enumValue","permIndex","arg","setAttribute","elm","parentElement","removeChild","hasContentAccessDirective","accessLevelNames","contentEnum","permEnum","permExists","resetPassword","passwordReset","ResetPassword","newPassword","components","LoginForm","AuthStore","jwtValues","errors","checkingSession","status","promise","checkSessionPromise","saveToken","getTokenPayload","destroyToken","dispatch","setErrors","getTokenObj","context","commit","EnsureTokenIsSet","expired","CheckSession","setAuthenticated","CheckSessionPromise","checkPromise","Promise","resolve","resolver","setCheckingSession","ValidateSession","valid","RefreshSession","clearToken","Fatal","setToken","refreshToken","router","history","current","setFieldErrors","CreateUser","EditUser","ReSendEmailVerification","assessment","score","percent","bonus","answers","SendAssessment","sublevel","SendDowngradeUserEmail","from","hasOwnProperty","keys","rawError","namespaced","dynamic","store","_tags","_tagNamesLookup","_tagUsageCounts","tagsObj","withCounts","wrapCallAndSetValue","Admin","Tags","GetAllQuery","setTags","setTagUsageCounts","setTagNamesLookup","changes","SubmitAggregateChanges","_filesList","_files","items","files","file","delete","findIndex","newFile","Files","CreateFile","EditFile","setFile","wrapCallAndPerformAction","Delete","DeleteFile","removeFile","GetById","GetEditDataById","editModel","GetAll","setFiles","GetList","setList","packagesList","packages","packageId","newPackage","Packages","CreatePackage","packageModel","EditPackage","RemovePackage","SetPackage","SetPackages","SetList","standardsNamesLookup","standardBodies","standard","standardBody","Standards","setStandardsDictionary","setStandardsNamesLookup","GetMany","setManyStandards","setStandard","StandardBodies","setStandardBody","setStandardBodiesDictionary","Add","Edit","removeStandard","removeStandardBody","guidelines","categories","guidelineId","guideline","MbdGuideline","setGuideline","GetAllGuidelines","setGuidelines","GetInstructionsByGuideline","setGuidelineInstructions","GetAllCategories","setCategories","newGuideline","CreateGuideline","EditGuideline","removeGuideline","courses","newCourse","Course","Create","setCourse","courseModel","course","removeCourse","courseId","setCourses","fileSystem","folderOnlyFileSystem","flattenedFileSystem","children","parent","child","parentChildIndex","destination","dir","FileSystem","GetRoot","setKeyedItems","setRootFolders","setRootFolderOnlyFolders","filter","GetFolder","setFolderChildren","GetFolderFolders","requestData","RenameFolder","setItemName","RenameFile","destinationId","wrapCallAndPerformAsyncAction","MoveFile","fetchFolder","fetchRootFolders","MoveFolder","parentFolderId","CreateFolder","addDirectoryToFolder","CreateRootFolder","addRootDirectory","searchStore","coursesStore","_filteredFiles","_filteredSimpleFiles","_filteredPackages","_filteredSimplePackages","_filteredCourses","_filteredGuidelines","search","tagsFilter","propertiesFilter","setFilteredFiles","filterArgs","entityFilterParams","filtered","setFilteredSimpleFiles","filesList","setFilteredPackages","setFilteredSimplePackages","PackagesList","setFilteredCourses","Courses","setFilteredGuidelines","noTerms","selectTermsOfUse","closeContact","directives","rawName","mobile","class","mobileNav","toggleMobileNav","onRouteChange","hasErrors","invalidToken","_l","slide","image","getFullYear","showTerms","windowWidth","innerWidth","slides","routeName","termsAndContact","loginAlert","checkScreen","verifiedEmail","fromLink","IconImage","TermsOfUse","VAppBar","VAppBarNavIcon","VCarousel","VCarouselItem","VContainer","VDivider","VFooter","VImg","VMain","VToolbarItems","CreateEditMetadataRequest","propertyValueIds","pairedProperties","standardIds","mbdGuidelineIds","pairedPropertyValueIds","CreateEditCourseModel","description","videos","video","videoModel","PropertiesStore","Properties","response","propertiesRecord","instance","hasRequiredProperty","static","removeProperty","setProperty","CreatePaired","EditPaired","FileUploadData","progressSampleSize","progressIndex","progressItems","shift","time","size","uploaded","toFixed","start","end","timeRange","dataRange","bytesPerMs","CreateEditVimeoVideoRequest","vimeoId","FromModel","script","VResponsive","CreateEditFileRequest","folderId","sourceFileIds","checksum","CreateEditMdbGuidelineModel","categoryId","Property","isStatic","MultiSelect","SingleSelect","CreatePackageRequest","uri","params","WrapApiCall","get","postMultipart","post","onProgress","postWithProgress","uploadData","cancelToken","formData","FormData","append","progressEvent","loaded","upload","Validate","jwtValidated","jwtValid","tokens","Refresh","jwtRefreshCompleted","jwtRefreshFailed","HandleGlobalError","VerifyEmailAndSetupAccount","Offline","Unauthorized","NotFound","console","r","httpCall","LocalSessionCheck","ShouldDelayCall","DelayCall","ShouldCancelCalls","reject","groupEnd","requestQueue","use","STORE","state","fatalError","getters","hasFatalError","mutations","setFatalError","actions","setError","errorResponse","Store","cardClicked","cardType","VSkeletonLoader","syncedDialog","VCardTitle","VDialog","to","getStyle","src","routeToGuideline","guidelineSideItems","scrollItem","contains","scrollIntoView","scrollTo","pushState","decodeURIComponent","newValue","oldValue","scrollToGuideline","searchTerm","sortByCategory","highlight","instruction","scopedSlots","_u","fn","cadSystem","cadSystemVersion","proxy","guidelineItems","guidelineCategory","MarkdownItVue","LinkText","VList","VListGroup","VListItem","VListItemContent","VListItemTitle","PermissionsEnum","ContentAccessLevelsEnum","FreeAccess","Free","SubscriberL1Access","SubscriptionL1","Internal","contentLevelToPermMap","EditModel","parse","CreateEditVimeoVideoModel","videoPicturesId","vimeoVideoId","vimeoPicturesId","BaseUrl","origin","ApiPrefix","ApiVersion","ApiBaseUrl","AdminApiBaseUrl","AdminBaseUrls","TagBase","TagsBase","PropertyBase","PropertiesBase","FileSystemBase","FileBase","FilesBase","PackageBase","PackagesBase","StandardBase","StandardsBase","StandardBodyBase","StandardBodiesBase","MbdGuidelineBase","MbdGuidelinesBase","CourseBase","CoursesBase","ThumbnailBase","AdminThumbnailBase","ThumbnailsBase","UserManagement","VimeoBase","WooBase","GlobalBaseUrls","IdentityBase","ProgressBase","AdminBaseUrl","Search","CadToolkits","ExploreMbe","Training","GetFileInfo","GetSpecialContentNames","GetCourse","GetCourseModule","moduleId","GetGuideline","GetCategories","tagId","FindDuplicate","ChecksumExists","GetDownloadUrl","GetDependents","UploadFile","ReUploadFile","GetPaginatedList","page","fileCount","sortBy","standardId","standardBodyId","GetModuleById","GetImageById","GetUsers","GetRoleNames","GetRoles","GetPermissions","ActivateUser","DeActivateUser","UpdateUserRole","DeleteUser","UpdateUserSpecialContent","EditSpecialContent","specialContentID","DeleteSpecialContent","AddSpecialContent","CreateRole","EditRole","roleName","DeleteRole","AddPermToRole","permId","RemovePermFromRole","ChangeRoleLevel","level","GetDeniedUsers","CreateDeniedUser","RemoveDeniedUser","MiscData","GetContentAccessLevels","Vimeo","GetVideosList","GetVideosListWithQuery","Woo","GetNewUsersList","Thumbnails","userID","SendPasswordReset","GetAllLastLogIns","GetUserLastLogIn","CreateCourseProgress","CreateModuleProgress","EditCourseProgress","EditModuleProgress","EditFileProgress","GetAllUserProgress","GetAllUserFileProgress","GetCourseProgress","GetModuleProgress","GetFileProgress","GetUrl","HttpHelper","contentType","getToken","encode","join","formatQueryParams","headers","getHeaders","progressCallback","onUploadProgress","put","encodeURIComponent","filterObject","excludedKeys","maxDepth","filterArray","array","filterEntityCollectionByIds","exclusive","filterEntityCollectionByNames","names","principleValue","filterEntities","args","itemSearchProp","searchFlags","filterFlags","searchLower","getSearchFlagExclusions","searchItem","exclusiveTags","include","exclusiveProperties","flags","flag","props","existing","parseVersions","func","apiFunc","setFunc","actionFunc","modifyFunc","OSCAR_PATH","getPath","oscarPath","savePath","setItem","destroyPath","removeItem","route","meta","propsResults","matched","record","find","routeRecord","_stateStore","_searchStore","_authStore","beforeEach","next","SetRouteStepsComplete","getRouteActionsCount","IterateRouteStepsComplete","RoutingService","fullPath","nav","beforeResolve","startsWith","setPrevPath","shouldClearSearch","ClearSearch","promises","routePromise","resolveRouteActions","all","setToolbarState","toMeta","fromMeta","isSearch","toolbar","searchKey","config","sortByOptions","SetSortByOptions","ClearSortByOptions","SetSearchFlags","ClearSearchFlags","SetSearchFilterFlags","ClearSearchFilterFlags","routeParams","startRouteActions","blockingPromises","propsPromises","testProp","trackAllRouteActions","handleRoutePropPromises","waitForRouteActions","simple","action","routeAction","blocking","withOptions","optionAction","param","withQuery","queryAction","paramKeys","withRouteParams","paramsAction","promisesItems","propPromise","then","steps","TOKEN_KEY","tokenJson","payload","CreateEditCourseRequest","nameof","formatFileSize","formatTransferRate","bytes","bits","indexOfByKey","list","arrayPropsToHashByPropAction","keyProp","valueProp","arrayPropsToHashByProp","arrayToHashByProp","arrayToHashByPropAndAction","arrayToHash","groupArray","dec2hex","dec","substr","generateId","len","Uint8Array","crypto","getRandomValues","capitalizeFirstLetter","str","_successToastMessage","_successToast","_successToastTimeout","_globalLoading","_loading","_routeSteps","_routeStepsComplete","_prevPath","_currentTab","_itemsPerPage","setSuccessToastMessage","setSuccessToastTimeout","toggleSuccessToast","setSuccessToast","setRouteStepsComplete","setLoading","setRouteSteps","_search","_searchFilterFlags","date","_searchFlags","_sortBy","_sortByOptions","_sortDesc","_tagsFilterHash","_exclusiveTags","_propertiesFilterHash","_exclusiveProperties","setSortBy","setSortByOptions","setSortDesc","setSearchFilterFlags","setSearchFlags","setSearch","_setTagsFilter","_setExclusiveTags","tagActiveInFilter","_addTagToFilter","_setPropertiesFilter","_setExclusiveProperties","propertyActiveInFilter","_addPropertyToFilter","searchFilterFlags","tagsFilterHash","propertiesFilterHash","contentAccessLevels","setContentAccessValues","dynamicComponent","DEFAULT_OPTIONS_LINK_ATTRIBUTES","target","rel","DEFAULT_OPTIONS_TASKLISTS","DEFAULT_OPTIONS_TOC","tocFirstLevel","tocLastLevel","htmlContent","markdownIt","linkify","idx","nesting","tokenParams","info","trim","oldVal","$nextTick","content","template","immediate"],"mappings":"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","file":"js/chunk-common.js","sourcesContent":["const emailRegex = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n\r\n\r\nexport default {\r\n required: (value: any) => !!value || 'Required',\r\n hasElements: (value: []) => value.length > 0 || 'Must select a value',\r\n email: (value: string) => emailRegex.test(value) || 'Invalid Email Address',\r\n version: (value: string) => {\r\n if (!value) { return 'Required'; }\r\n if (!value.includes('.')) { return 'Expects x.x Format'; }\r\n if (value.split('.').length !== 2) { return 'Invalid Format'; }\r\n if (value.split('.').some((x) => x === '')) { return 'Invalid Format'; }\r\n if (value.split('.').some((x) => isNaN(Number(x)))) { return 'Expects Numerics'; }\r\n\r\n return true;\r\n },\r\n maxLength: (maxLength: number) => {\r\n return (value: string) => value.length <= maxLength || `Max ${maxLength} characters`;\r\n },\r\n numeric: (value: string) => !Number.isNaN(Number.parseInt(value, 10)) || 'Must be Numeric'\r\n};\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.emailSent)?_c('v-card',{attrs:{\"flat\":\"\",\"tile\":\"\"}},[_c('v-toolbar',{staticClass:\"d-flex justify-center\",attrs:{\"flat\":\"\",\"tile\":\"\",\"dense\":\"\",\"height\":\"48px\",\"max-height\":\"48px\"}},[_c('span',{staticClass:\"headline\"},[_vm._v(\"Forgot Password\")])]),_c('v-card-text',[_c('v-alert',{attrs:{\"type\":\"success\",\"prominent\":\"\"}},[_c('div',{staticClass:\"title\"},[_vm._v(\"Password Reset Sent\")]),_c('div',[_vm._v(\"If this account exists, an email has been sent to \"+_vm._s(_vm.email)+\". Please click the link in the email to reset your password\")])])],1),_c('v-card-actions',{staticClass:\"px-6 pt-0 justify-center\"},[_c('v-col',{staticClass:\"pt-0\",attrs:{\"cols\":\"12\"}},[_c('v-row',[_c('v-btn',{staticClass:\"white--text elevation-0 px-4\",attrs:{\"color\":\"success\",\"block\":\"\",\"tile\":\"\"},on:{\"click\":function($event){return _vm.backToLogin()}}},[_c('v-icon',[_vm._v(\"mdi-arrow-left\")]),_vm._v(\" Back to login \")],1)],1)],1)],1)],1):_c('v-card',{attrs:{\"flat\":\"\",\"tile\":\"\"}},[_c('v-toolbar',{staticClass:\"d-flex justify-center\",attrs:{\"flat\":\"\",\"tile\":\"\",\"dense\":\"\",\"height\":\"48px\",\"max-height\":\"48px\"}},[_c('span',{staticClass:\"headline\"},[_vm._v(\"Forgot Password\")])]),_c('v-card-text',[_c('v-form',{ref:\"form\",attrs:{\"lazyValidation\":true},nativeOn:{\"keypress\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.sendPasswordReset()}},model:{value:(_vm.validForm),callback:function ($$v) {_vm.validForm=$$v},expression:\"validForm\"}},[_c('v-text-field',{attrs:{\"label\":\"Email\",\"name\":\"Email\",\"prepend-icon\":\"mdi-account\",\"type\":\"email\",\"rules\":_vm.emailRules,\"validate-on-blur\":true},model:{value:(_vm.email),callback:function ($$v) {_vm.email=$$v},expression:\"email\"}})],1)],1),_c('v-card-actions',{staticClass:\"px-6 pt-0 justify-center\"},[_c('v-col',{staticClass:\"pt-0\",attrs:{\"cols\":\"12\"}},[_c('v-row',[_c('v-btn',{staticClass:\"white--text elevation-0\",attrs:{\"color\":\"secondary\",\"block\":\"\",\"tile\":\"\",\"loading\":_vm.loading},on:{\"click\":function($event){return _vm.sendPasswordReset()}}},[_vm._v(\" Reset Password \")])],1),_c('v-row',{attrs:{\"justify\":\"center\"}},[_c('a',{staticClass:\"py-4 caption grey--text text--darken-1\",on:{\"click\":function($event){return _vm.backToLogin()}}},[_vm._v(\" Back to login \")])])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Emit, Watch } from 'vue-property-decorator';\r\nimport { getModule } from 'vuex-module-decorators';\r\nimport rules from '@/utility/ValidationRules';\r\nimport { AuthStore } from '@/store/modules';\r\nimport { LoginForm, RegistrationForm } from '@/components';\r\n\r\nconst authStore = getModule(AuthStore);\r\n\r\n@Component\r\nexport default class ForgotPassword extends Vue {\r\n private email = '';\r\n\r\n private emailRules = [\r\n rules.required,\r\n rules.email\r\n ];\r\n private emailSent = false;\r\n private loading = false;\r\n private validForm = false;\r\n\r\n private backToLogin() {\r\n authStore.ClearErrors();\r\n this.$router.push({name: 'Login'});\r\n }\r\n\r\n private async sendPasswordReset() {\r\n if ((this.$refs.form as any).validate()) {\r\n this.loading = true;\r\n\r\n const success = await authStore.RequestPasswordReset(this.email);\r\n\r\n if (success) {\r\n this.emailSent = true;\r\n }\r\n this.loading = false;\r\n }\r\n\r\n }\r\n\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ForgotPassword.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ForgotPassword.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ForgotPassword.vue?vue&type=template&id=7a00b0aa&\"\nimport script from \"./ForgotPassword.vue?vue&type=script&lang=ts&\"\nexport * from \"./ForgotPassword.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAlert } from 'vuetify/lib/components/VAlert';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\ninstallComponents(component, {VAlert,VBtn,VCard,VCardActions,VCardText,VCol,VForm,VIcon,VRow,VTextField,VToolbar})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"display-contents\"},[_vm._t(\"default\",function(){return [_c('v-btn',{attrs:{\"icon\":\"\",\"color\":_vm.color,\"title\":\"Download File\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.download.apply(null, arguments)}}},[_c('v-icon',[_vm._v(\"mdi-download\")])],1)]},{\"click\":_vm.download})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Emit, Watch } from 'vue-property-decorator';\r\nimport { FilesStore } from '@/app.admin/store/modules';\r\nimport { getModule } from 'vuex-module-decorators';\r\nimport ApiService from '@/utility/ApiService';\r\nimport ApiRoutes from '@/_common/ApiRoutes';\r\nimport { ApiHelpers } from '@/_helpers';\r\nimport {CreateEditFileProgressRequest} from '@/models/entities/progress';\r\nimport { ApiResponse } from '@/models';\r\nimport { BasicUserResponse } from '@/app.admin/models';\r\nimport AuthStore from '@/store/modules/authStore';\r\nimport { EventBus } from '@/app.user/eventBus';\r\n\r\nconst filesStore = getModule(FilesStore);\r\nconst authStore = getModule(AuthStore);\r\n\r\n@Component\r\nexport default class DownloadFileButton extends Vue {\r\n @Prop({required: true, type: String}) public fileId!: string;\r\n @Prop({required: true, type: String}) public fileName!: string;\r\n @Prop({required: false, default: ''}) public color!: string;\r\n\r\n private async download() {\r\n const user = await ApiHelpers.wrapCallWithResult( async () =>\r\n await ApiService.Get(ApiRoutes.Global.Identity.GetUser(authStore.TokenValues!.userId))\r\n );\r\n const result = await ApiHelpers.wrapCallWithResult(\r\n async () => await ApiService.Get(ApiRoutes.User.Content.GetFileDownloadUrl(this.fileId))\r\n );\r\n\r\n if (result) {\r\n if (user) {\r\n await this.CreateFileProgress({username: user!.username, fileId: this.fileId});\r\n }\r\n EventBus.$emit('file-downloaded', this.fileId);\r\n window.open(result, '_self');\r\n }\r\n }\r\n\r\n public async CreateFileProgress(newProgress: CreateEditFileProgressRequest): Promise> {\r\n return await ApiHelpers.wrapCall(\r\n async () => await ApiService.Post(ApiRoutes.Global.Progress.CreateFileProgress, newProgress)\r\n );\r\n // ToDo: Add File entity and set that if success\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DownloadFileButton.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DownloadFileButton.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DownloadFileButton.vue?vue&type=template&id=a2d8ec2e&\"\nimport script from \"./DownloadFileButton.vue?vue&type=script&lang=ts&\"\nexport * from \"./DownloadFileButton.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VBtn,VIcon})\n","export * from './CreateEditFileRequest';\r\nexport * from './FileUploadData';\r\nexport * from './simpleFile';\r\nexport * from './fileResponse';\r\nexport * from './fileType';\r\nexport * from './duplicateFileResponse';\r\nexport * from './fileStatus';\r\n\r\nexport * from './CreateEditFileModel';\r\nexport * from './FileEditResponse';\r\nexport * from './FileDependentResponse';\r\nexport * from './FilePagination';\r\n","export interface IVersion {\r\n majorVersion: number;\r\n minorVersion: number;\r\n previousEntityId?: string;\r\n}\r\n\r\nexport class Version implements IVersion {\r\n public majorVersion: number;\r\n public minorVersion: number;\r\n public previousEntityId?: string;\r\n\r\n constructor(majorVersion: number, minorVersion: number) {\r\n this.majorVersion = majorVersion;\r\n this.minorVersion = minorVersion;\r\n }\r\n\r\n get number() {\r\n if (this.majorVersion === 0) {\r\n return Number.parseFloat(`0.${this.minorVersion}`);\r\n }\r\n return Number.parseFloat(`${this.majorVersion}.${this.minorVersion}`);\r\n }\r\n\r\n public greaterThan(other: Version) {\r\n if (other.majorVersion === this.majorVersion) {\r\n return other.minorVersion <= this.minorVersion;\r\n }\r\n return other.majorVersion <= this.majorVersion;\r\n }\r\n}\r\n","export * from './entities';\r\nexport * from './responses';\r\n\r\n\r\n\r\nexport * from './JwtValues';\r\nexport * from './searchFilter';\r\nexport * from './editModel';\r\nexport * from './clonedEditModel';\r\n\r\n","import { SingleSelectValues, MultiSelectValues, PairedValues } from './SelectionInterfaces';\r\nimport { ICloneable } from '@/models/interfaces';\r\n\r\nexport class SelectedProperty implements ICloneable {\r\n public key: string; // Used to distinguish in v-for\r\n public propertyId: string;\r\n\r\n public singleSelect?: SingleSelectValues;\r\n public multiSelect?: MultiSelectValues;\r\n public paired?: PairedValues;\r\n\r\n constructor(key: string, propertyId: string) {\r\n this.key = key;\r\n this.propertyId = propertyId;\r\n }\r\n\r\n get isSingle() {\r\n return this.singleSelect !== undefined;\r\n }\r\n get isMulti() {\r\n return this.multiSelect !== undefined;\r\n }\r\n get isPaired() {\r\n return this.paired !== undefined;\r\n }\r\n\r\n public Clone() {\r\n const clone = new SelectedProperty(this.key, this.propertyId);\r\n\r\n clone.singleSelect = this.singleSelect;\r\n clone.multiSelect = this.multiSelect;\r\n clone.paired = this.paired;\r\n\r\n return clone;\r\n }\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-snackbar',{staticClass:\"relative\",attrs:{\"timeout\":-1,\"color\":_vm.color,\"top\":true,\"type\":_vm.type},model:{value:(_vm.enabled),callback:function ($$v) {_vm.enabled=$$v},expression:\"enabled\"}},[_c('v-row',{attrs:{\"align\":\"center\"},on:{\"mouseenter\":function($event){_vm.mouseover = true},\"mouseleave\":function($event){_vm.mouseover = false}}},[_vm._t(\"icon\"),_c('span',{staticClass:\"pl-2\"},[_vm._v(_vm._s(_vm.message))]),_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"blue-grey lighten-5\",\"text\":\"\"},on:{\"click\":function($event){return _vm.clearSnackbar()}}},[_vm._v(\" Close \")])],2),_c('v-progress-linear',{attrs:{\"color\":\"blue-grey darken-2\",\"height\":\"3\",\"absolute\":\"\",\"bottom\":\"\"},model:{value:(_vm.snackbarTimeRemaining),callback:function ($$v) {_vm.snackbarTimeRemaining=$$v},expression:\"snackbarTimeRemaining\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Emit, Watch } from 'vue-property-decorator';\r\n\r\n@Component\r\nexport default class ToastComponent extends Vue {\r\n @Prop({required: true, default: false}) public value!: boolean;\r\n @Prop({required: true, default: 6000}) public timeout!: number;\r\n @Prop({required: true }) public message!: string;\r\n @Prop({required: true }) public type!: string;\r\n @Prop({required: false, default: ''}) public color!: string;\r\n @Prop({required: false, default: false, type: Boolean}) public top!: boolean;\r\n\r\n public mouseover = false;\r\n\r\n set enabled(enabled: boolean) {\r\n this.$emit('input', enabled);\r\n }\r\n\r\n get enabled() {\r\n return this.value;\r\n }\r\n\r\n // Not exact, since this doesn't callback perfectly. But it works\r\n @Watch('enabled')\r\n public onEnabledChange() {\r\n if (this.enabled) {\r\n this.enableSnackbar();\r\n }\r\n\r\n }\r\n\r\n public timeRemaining = 0;\r\n public interval: number = 0;\r\n\r\n get snackbarTimeRemaining() {\r\n if (this.timeRemaining <= 0) {\r\n return 0;\r\n }\r\n return 100 - ((this.timeRemaining / this.timeout) * 100);\r\n }\r\n\r\n\r\n // Not exact, since this doesn't callback perfectly. But it works\r\n public enableSnackbar() {\r\n this.timeRemaining = this.timeout;\r\n\r\n this.interval = setInterval(() => {\r\n if (this.mouseover) {\r\n return;\r\n }\r\n\r\n this.timeRemaining -= this.timeout / 50;\r\n if (this.timeRemaining <= 0) {\r\n this.clearSnackbar();\r\n }\r\n }, this.timeout / 50);\r\n }\r\n\r\n public clearSnackbar() {\r\n this.enabled = false;\r\n clearInterval(this.interval);\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Toast.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Toast.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Toast.vue?vue&type=template&id=3548f634&\"\nimport script from \"./Toast.vue?vue&type=script&lang=ts&\"\nexport * from \"./Toast.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VProgressLinear } from 'vuetify/lib/components/VProgressLinear';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSnackbar } from 'vuetify/lib/components/VSnackbar';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VProgressLinear,VRow,VSnackbar,VSpacer})\n","import { SelectedProperties, SelectedProperty, EntityPropertyValue, EntityPropertyValuePair } from '@/models';\r\nimport { ICloneable } from '@/models/interfaces';\r\nimport validationRules from '@/utility/ValidationRules';\r\nimport { groupArray } from '@/utility/Utilities';\r\nimport { MetadataEditResponse } from './MetadataEditResponse';\r\n\r\n// The translated model for editing metadata\r\n// Or if the model has not been filled in from a response, for creating metadata\r\nexport class CreateEditMetadataModel implements ICloneable {\r\n\r\n public tagIds: string[] = [];\r\n public selectedProperties: SelectedProperties = new SelectedProperties(); // Combined properties & paired properties\r\n\r\n public selectedStandards: string[] = [];\r\n public selectedMbdGuidelines: string[] = [];\r\n\r\n // Used in properties input to trigger watch to add new property\r\n public newPropertyId: string = '';\r\n\r\n // Adds a new object that will contain the property and it's values to the appropriate properties array\r\n // Called when a property is selected from the dropdown\r\n public onPropertySelect(propertyId: string) {\r\n this.newPropertyId = propertyId;\r\n }\r\n\r\n public FromResponse(model: MetadataEditResponse) {\r\n this.tagIds = model.tags.map((tag) => tag.id);\r\n\r\n this.selectedMbdGuidelines = model.mbdGuidelines ? model.mbdGuidelines.map((x) => x.id) : [];\r\n this.selectedStandards = model.standards ? model.standards.map((x) => x.id) : [];\r\n\r\n this.selectedProperties = this.getPropertyValues(model);\r\n }\r\n\r\n public Clone() {\r\n const clone = new CreateEditMetadataModel();\r\n\r\n clone.tagIds = this.tagIds;\r\n clone.selectedProperties = this.selectedProperties.Clone();\r\n clone.selectedStandards = this.selectedStandards;\r\n clone.selectedMbdGuidelines = this.selectedMbdGuidelines;\r\n clone.newPropertyId = this.newPropertyId;\r\n\r\n return clone;\r\n }\r\n\r\n private getPropertyValues(model: MetadataEditResponse) {\r\n const output: SelectedProperty[] = [];\r\n const selectedProperties = new SelectedProperties();\r\n\r\n if (model.multiSelectValues && model.multiSelectValues.length > 0) {\r\n const grouped = groupArray(model.multiSelectValues, 'propertyId');\r\n Object.values(grouped).forEach((group) => {\r\n const prop = new SelectedProperty(group[0].id, group[0].propertyId!);\r\n const valueIds: string[] = [];\r\n group.forEach((value) => {\r\n this.validateValue(value);\r\n valueIds.push(value.valueId!);\r\n });\r\n prop.multiSelect = { valueIds: valueIds };\r\n\r\n output.push(prop);\r\n });\r\n\r\n }\r\n\r\n if (model.singleSelectValues && model.singleSelectValues.length > 0) {\r\n model.singleSelectValues.forEach((value) => {\r\n this.validateValue(value);\r\n const prop = new SelectedProperty(value.id, value.propertyId!);\r\n\r\n prop.singleSelect = { valueId: value.valueId };\r\n output.push(prop);\r\n });\r\n }\r\n\r\n if (model.valuePairs && model.valuePairs.length > 0) {\r\n model.valuePairs.forEach((value) => {\r\n this.validatePairedValue(value);\r\n const prop = new SelectedProperty(value.id, value.principlePropertyId!);\r\n\r\n prop.paired = {\r\n principleId: value.principleValueId,\r\n requiredId: value.requiredValueId\r\n };\r\n output.push(prop);\r\n });\r\n }\r\n\r\n selectedProperties.properties = output;\r\n return selectedProperties;\r\n }\r\n\r\n // Call one group at a time\r\n private validateValue(value: EntityPropertyValue) {\r\n if (value.valueId === undefined) {\r\n throw new Error('PropertyValue valueId is undefined');\r\n }\r\n if (value.propertyId === undefined) {\r\n throw new Error('PropertyValue propertyId is undefined');\r\n }\r\n }\r\n\r\n private validatePairedValue(value: EntityPropertyValuePair) {\r\n if (value.principleValueId === undefined) {\r\n throw new Error('PropertyValuePair principleValueId is undefined');\r\n }\r\n if (value.requiredValueId === undefined) {\r\n throw new Error('PropertyValuePair requiredValueId is undefined');\r\n }\r\n if (value.principlePropertyId === undefined) {\r\n throw new Error('PropertyValuePair principlePropertyId is undefined');\r\n }\r\n if (value.requiredPropertyId === undefined) {\r\n throw new Error('PropertyValuePair requiredPropertyId is undefined');\r\n }\r\n }\r\n}\r\n","export * from './CreatePackageRequest';\r\nexport * from './packageResponse';\r\nexport * from './simplePackage';\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticStyle:{\"display\":\"contents\"}},[_c('v-progress-linear',{staticClass:\"z-index-100\",attrs:{\"active\":_vm.progressBar,\"color\":_vm.color,\"absolute\":\"\",\"top\":\"\",\"height\":\"3\",\"value\":_vm.initProgress}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Emit, Watch } from 'vue-property-decorator';\r\nimport { StateStore } from '@/store/modules';\r\nimport { getModule } from 'vuex-module-decorators';\r\n\r\nconst stateStore = getModule(StateStore);\r\n\r\n/**\r\n * Handles the top loading bar during route changes\r\n */\r\n@Component\r\nexport default class LoaderView extends Vue {\r\n @Prop({required: false, type: String, default: 'primary'}) public color!: string;\r\n\r\n private progressBar = false;\r\n\r\n @Watch('loading')\r\n public onLoadingChange(val: boolean, oldval: boolean) { // Delay so progress bar can complete cleanly\r\n if (val === oldval) {\r\n return;\r\n }\r\n\r\n if (val === false) {\r\n // Delay progress bar hiding for a short bit\r\n setTimeout(() => {\r\n this.progressBar = false;\r\n // Delay clearing route steps to avoid interrupting bar exit animation\r\n setTimeout(() => {\r\n stateStore.SetRouteSteps(0);\r\n }, 500);\r\n }, 500);\r\n } else {\r\n this.progressBar = true;\r\n }\r\n }\r\n\r\n get loading() {\r\n return stateStore.loading;\r\n }\r\n\r\n set loading(value: boolean) {\r\n stateStore.SetLoading(value);\r\n }\r\n\r\n get routeSteps() {\r\n return stateStore.routeSteps;\r\n }\r\n\r\n get routeStepsComplete() {\r\n if (stateStore.routeStepsComplete === 0 && this.progressBar) { // Progress bar is not gone yet\r\n return this.routeSteps;\r\n }\r\n return stateStore.routeStepsComplete;\r\n }\r\n\r\n get initProgress() {\r\n if (this.routeSteps === 0) {\r\n return 0;\r\n }\r\n return (this.routeStepsComplete / this.routeSteps) * 100;\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Loader.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Loader.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Loader.vue?vue&type=template&id=16ff5cdd&\"\nimport script from \"./Loader.vue?vue&type=script&lang=ts&\"\nexport * from \"./Loader.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VProgressLinear } from 'vuetify/lib/components/VProgressLinear';\ninstallComponents(component, {VProgressLinear})\n","import Vue from 'vue';\r\n// tslint:disable-next-line: variable-name\r\nexport const EventBus = new Vue();\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"popup-container\",on:{\"mouseenter\":function($event){return _vm.addHoverListener()}}},[_c('p',{attrs:{\"id\":\"description\"},domProps:{\"innerHTML\":_vm._s(_vm.linked(_vm.text))}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\r\nimport { Component, Vue, Prop } from 'vue-property-decorator';\r\nimport dictionary from '@/app.user/_common/Dictionary.json';\r\nimport { AuthStore } from '@/store/modules';\r\nimport { getModule } from 'vuex-module-decorators';\r\n\r\nimport { ApiHelpers } from '@/_helpers';\r\nimport ApiService from '@/utility/ApiService';\r\nimport ApiRoutes from '@/_common/ApiRoutes';\r\nimport { BasicUserResponse } from '@/app.admin/models';\r\nimport { MbdGuidelinesStore } from '@/app.admin/store/modules';\r\nimport { PermissionsEnum } from '@/_common/permission.enums';\r\nimport { EventBus } from '@/app.admin/eventBus';\r\n\r\nconst guidelinesStore = getModule(MbdGuidelinesStore);\r\nconst authStore = getModule(AuthStore);\r\n\r\n@Component\r\nexport default class LinkText extends Vue {\r\n @Prop({required: true}) public text!: string;\r\n @Prop({required: false}) public query!: string;\r\n\r\n get dictionaryCardAccess() {\r\n if (!authStore.TokenValues) {\r\n return false;\r\n }\r\n return authStore.TokenValues!.permissions.indexOf(PermissionsEnum[PermissionsEnum.DictionaryCardAccess]) !== -1;\r\n }\r\n\r\n get guidelines() {\r\n return guidelinesStore.GuidelinesArray;\r\n }\r\n\r\n get sortedTerms() {\r\n const terms = Array();\r\n // const guides = guidelinesStore.GuidelinesArray;\r\n\r\n // for (let i = 0; i < guides.length; i++) {\r\n // terms.push({Name: guides[i].name, Definition: guides[i].ruleStatement,\r\n // Link: '{{baseURL}}' + guides[i].id});\r\n // }\r\n for (const term in dictionary.Citations) {\r\n if (dictionary.Citations) {\r\n terms.push({Name: dictionary.Citations[term].ID, Definition: dictionary.Citations[term].Description, Link: 'http://dictionary.action-engineering.com/referencesview/' + dictionary.Citations[term].ID.replace(' ', '%20')});\r\n }\r\n }\r\n for (const term in dictionary.Entries) {\r\n if (dictionary.Entries) {\r\n if (dictionary.Entries[term].Other_Names !== '') {\r\n for (let i = 0; i < dictionary.Entries[term].Other_Names.split(',').length; i++) {\r\n terms.push({Name: dictionary.Entries[term].Other_Names.split(',')[i], Definition: dictionary.Entries[term].Definition, Link: 'https://dictionary.action-engineering.com/showdefinition/' + dictionary.Entries[term].Term.replaceAll(' ', '%20')});\r\n }\r\n }\r\n terms.push({Name: dictionary.Entries[term].Term, Definition: dictionary.Entries[term].Definition, Link: 'https://dictionary.action-engineering.com/showdefinition/' + dictionary.Entries[term].Term.replaceAll(' ', '%20')});\r\n }\r\n }\r\n return terms.sort((a: any, b: any) => b.Name.length - a.Name.length);\r\n }\r\n\r\n // removes images from text so that text can be manipulated without ruining images\r\n private removeTags(text: string) {\r\n const arr = text.split('<');\r\n const imageArr = Array();\r\n let newText = text;\r\n // if arr is less than or equal to one, there are no images so return text as it is\r\n if (arr.length <= 1) {\r\n return [text, []];\r\n }\r\n // if arr is greater than one, every index after 0 starts with an image, so slice to first '>'\r\n // return array with new text with images replaced and imageArray with image texts\r\n if (arr.length > 1) {\r\n for (let i = 0; i < arr.length - 1; i++) {\r\n imageArr.push('<' + arr[i + 1].slice(0, arr[i + 1].indexOf('>')) + '>');\r\n }\r\n for (let i = 0; i < imageArr.length; i++) {\r\n newText = newText.replace(imageArr[i], '***' + [i] + '***');\r\n }\r\n for (let i = 0; i < imageArr.length; i++) {\r\n if (imageArr[i].substring(0, 4) === ' {\r\n count += 1;\r\n termArray.push([matchedText.substring(1, matchedText.length - 1), this.sortedTerms[i].Link]);\r\n return matchedText.charAt(0) + '' +\r\n 'LinkedTerm' + count + '' + matchedText.charAt(matchedText.length - 1);\r\n });\r\n check = new RegExp('[^a-z]' + this.sortedTerms[i].Name + '[^a-z]', 'ig');\r\n // this is seaching for the term (matchedText) in the newTest and replace them with the link\r\n newText = newText.replace(check, (matchedText, a, b) => {\r\n count += 1;\r\n termArray.push([matchedText.substring(1, matchedText.length - 1), this.sortedTerms[i].Link]);\r\n return matchedText.charAt(0) + '' +\r\n 'LinkedTerm' + count + '' + matchedText.charAt(matchedText.length - 1);\r\n });\r\n }\r\n\r\n newText = newText.substring(1, newText.length);\r\n // adds links to text\r\n for (let i = termArray.length; i >= 0; i--) {\r\n let check = 'ThisWillBeALink' + [i];\r\n newText = newText.replace(check, (matchedText, a, b) => {\r\n return termArray[i][1];\r\n }\r\n );\r\n check = 'LinkedTerm' + [i];\r\n newText = newText.replace(check, (matchedText, a, b) => {\r\n return termArray[i][0];\r\n }\r\n );\r\n }\r\n // add images back to text and return text\r\n const newerText = this.addTags(newText, imageArray![1]);\r\n return newerText;\r\n }\r\n\r\n // start links and cards\r\n private linkItems: any = document.getElementsByClassName('linkedText');\r\n private dictionaryContainer: any = document.getElementsByClassName('popup-container');\r\n private dictionaryCard: any = document.getElementsByClassName('popup-card');\r\n // position of the mouse in the description div\r\n private mouseArray = Array(0, 0);\r\n // position of the mouse in the definition card\r\n private mouseCardArray = Array(0, 0);\r\n // position of the mouse in the document\r\n private mouseDocumentArray = Array(0, 0);\r\n private drag: boolean = false;\r\n\r\n private async addHoverListener() {\r\n await setTimeout(() => {\r\n if (this.dictionaryContainer[0] !== undefined) {\r\n this.dictionaryContainer[0].addEventListener('mouseout', (e: any) => {\r\n let allTrue: number = this.linkItems.length + 1;\r\n setTimeout(() => {\r\n for (let j = 0; j < this.linkItems.length; j++) {\r\n if (this.linkItems[j].matches(':hover') === false) {\r\n allTrue -= 1;\r\n }\r\n }\r\n if (this.dictionaryCard[0] !== undefined) {\r\n if (this.dictionaryCard[0].matches(':hover') === false) {\r\n allTrue -= 1;\r\n }\r\n }\r\n\r\n if (allTrue === 0) {\r\n this.dictionaryCard[0].classList.add('hidden');\r\n }\r\n }, 500);\r\n });\r\n }\r\n for (let i = 0; i < this.linkItems.length; i++) {\r\n this.linkItems[i].addEventListener('mouseover', (e: any) => {\r\n EventBus.$emit('hoverName', this.linkItems[i].textContent.substring(0, 1).toUpperCase() +\r\n this.linkItems[i].textContent.substring(1, this.linkItems[i].textContent.length));\r\n if (this.dictionaryCard[0] !== undefined) {\r\n const coords = this.getCoords(this.linkItems[i]);\r\n this.dictionaryCard[0].style.left = (coords.left).toString() + 'px';\r\n this.dictionaryCard[0].style.top = (coords.top - this.dictionaryCard[0].offsetHeight).toString() + 'px';\r\n setTimeout(() => {\r\n this.dictionaryCard[0].classList.remove('hidden');\r\n }, 300);\r\n }\r\n });\r\n this.linkItems[i].addEventListener('mouseout', (e: any) => {\r\n let allTrue: number = this.linkItems.length + 1;\r\n setTimeout(() => {\r\n for (let j = 0; j < this.linkItems.length; j++) {\r\n if (this.linkItems[j].matches(':hover') === false) {\r\n allTrue -= 1;\r\n }\r\n }\r\n if (this.dictionaryCard[0] !== undefined) {\r\n if (this.dictionaryCard[0].matches(':hover') === false) {\r\n allTrue -= 1;\r\n }\r\n }\r\n\r\n if (allTrue === 0) {\r\n this.dictionaryCard[0].classList.add('hidden');\r\n }\r\n }, 500);\r\n });\r\n }\r\n this.dictionaryCard[0].addEventListener('mouseout', (e: any) => {\r\n let allTrue: number = this.linkItems.length + 1;\r\n setTimeout(() => {\r\n for (let j = 0; j < this.linkItems.length; j++) {\r\n if (this.linkItems[j].matches(':hover') === false) {\r\n allTrue -= 1;\r\n }\r\n }\r\n if (this.dictionaryCard[0] !== undefined) {\r\n if (this.dictionaryCard[0].matches(':hover') === false) {\r\n allTrue -= 1;\r\n }\r\n }\r\n\r\n if (allTrue === 0) {\r\n this.dictionaryCard[0].classList.add('hidden');\r\n }\r\n }, 500);\r\n });\r\n }, 0);\r\n }\r\n\r\n private getCoords(elem: any) {\r\n const box = elem.getBoundingClientRect();\r\n\r\n const body = document.body;\r\n const docEl = document.documentElement;\r\n\r\n const scrollTop = window.pageYOffset || docEl.scrollTop || body.scrollTop;\r\n const scrollLeft = window.pageXOffset || docEl.scrollLeft || body.scrollLeft;\r\n\r\n const clientTop = docEl.clientTop || body.clientTop || 0;\r\n const clientLeft = docEl.clientLeft || body.clientLeft || 0;\r\n\r\n const top = box.top + scrollTop - clientTop;\r\n let left = box.left + scrollLeft - clientLeft;\r\n\r\n if ((screen.width - left) < 380) {\r\n left = left - (380 - (screen.width - left));\r\n }\r\n\r\n return { top: Math.round(top), left: Math.round(left) };\r\n}\r\n\r\n // when x is clicked definition card is closed\r\n private closeHover() {\r\n this.dictionaryCard[0].classList.add('hidden');\r\n }\r\n // end links and cards\r\n\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LinkText.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LinkText.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./LinkText.vue?vue&type=template&id=cf8aee5e&\"\nimport script from \"./LinkText.vue?vue&type=script&lang=ts&\"\nexport * from \"./LinkText.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./LinkText.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticClass:\"popup-card hidden\",staticStyle:{\"background-color\":\"#DADAE0\",\"border-radius\":\"0px\",\"position\":\"absolute\",\"height\":\"auto\",\"width\":\"350px\",\"cursor\":\"pointer\"},attrs:{\"elevation\":\"0\"}},[_c('div',{staticStyle:{\"background-color\":\"#32779A\",\"color\":\"white\",\"width\":\"100%\",\"height\":\"100%\"}},[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-row',{staticStyle:{\"margin-top\":\"-20px\",\"margin-bottom\":\"-35px\"}},[_c('v-col',{attrs:{\"cols\":\"11\"}},[_c('p',[_vm._v(_vm._s(_vm.name))])]),_c('v-col',{attrs:{\"cols\":\"1\"}},[_c('button',{on:{\"click\":function($event){return _vm.close()}}},[_vm._v(\"✖\")])])],1)],1)],1),_c('div',{staticStyle:{\"margin\":\"10px\"}},[_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.definition)}}),_c('a',{attrs:{\"href\":_vm.link,\"target\":\"_blank\",\"rel\":\"noopener noreferrer\"}},[_c('button',[_vm._v(\"Learn More\")])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Prop } from 'vue-property-decorator';\r\nimport dictionary from '@/app.user/_common/Dictionary.json';\r\nimport { MbdGuidelinesStore } from '@/app.admin/store/modules';\r\nimport { getModule } from 'vuex-module-decorators';\r\nimport { EventBus } from '@/app.admin/eventBus';\r\n\r\nconst guidelinesStore = getModule(MbdGuidelinesStore);\r\n\r\n@Component\r\nexport default class PopUpCard extends Vue {\r\n\r\n private dictionaryCard: any = document.getElementsByClassName('popup-card');\r\n private term: string = '';\r\n get guidelines() {\r\n return guidelinesStore.GuidelinesArray;\r\n }\r\n\r\n get sortedTerms() {\r\n const terms = Array();\r\n // const guides = guidelinesStore.GuidelinesArray;\r\n\r\n // for (let i = 0; i < guides.length; i++) {\r\n // terms.push({Name: guides[i].name, Definition: guides[i].ruleStatement,\r\n // Link: '{{baseURL}}' + guides[i].id});\r\n // }\r\n\r\n for (const term in dictionary.Citations) {\r\n if (dictionary.Citations) {\r\n terms.push({Name: dictionary.Citations[term].ID, Definition: dictionary.Citations[term].Description, Link: 'http://dictionary.action-engineering.com/referencesview/' + dictionary.Citations[term].ID.replace(' ', '%20')});\r\n }\r\n }\r\n for (const term in dictionary.Entries) {\r\n if (dictionary.Entries) {\r\n if (dictionary.Entries[term].Other_Names !== '') {\r\n for (let i = 0; i < dictionary.Entries[term].Other_Names.split(',').length; i++) {\r\n terms.push({Name: dictionary.Entries[term].Other_Names.split(',')[i], Definition: dictionary.Entries[term].Definition, Link: 'https://dictionary.action-engineering.com/showdefinition/' + dictionary.Entries[term].Term.replaceAll(' ', '%20')});\r\n }\r\n }\r\n terms.push({Name: dictionary.Entries[term].Term, Definition: dictionary.Entries[term].Definition, Link: 'https://dictionary.action-engineering.com/showdefinition/' + dictionary.Entries[term].Term.replaceAll(' ', '%20')});\r\n }\r\n }\r\n return terms.sort((a: any, b: any) => b.Name.length - a.Name.length);\r\n }\r\n\r\n get name() {\r\n for (let i = 0; i < this.sortedTerms.length; i++) {\r\n if (this.term.toLowerCase() === this.sortedTerms[i].Name.toLowerCase()) {\r\n return this.sortedTerms[i].Name;\r\n }\r\n if (this.term.toLowerCase().substring(0, this.term.length - 1) === this.sortedTerms[i].Name.toLowerCase()) {\r\n return this.sortedTerms[i].Name;\r\n }\r\n }\r\n }\r\n\r\n get definition() {\r\n for (let i = 0; i < this.sortedTerms.length; i++) {\r\n if (this.term.toLowerCase() === this.sortedTerms[i].Name.toLowerCase()) {\r\n return this.sortedTerms[i].Definition;\r\n }\r\n if (this.term.toLowerCase().substring(0, this.term.length - 1) === this.sortedTerms[i].Name.toLowerCase()) {\r\n return this.sortedTerms[i].Definition;\r\n }\r\n }\r\n }\r\n\r\n get link() {\r\n for (let i = 0; i < this.sortedTerms.length; i++) {\r\n if (this.term.toLowerCase() === this.sortedTerms[i].Name.toLowerCase()) {\r\n return this.sortedTerms[i].Link;\r\n }\r\n if (this.term.toLowerCase().substring(0, this.term.length - 1) === this.sortedTerms[i].Name.toLowerCase()) {\r\n return this.sortedTerms[i].Link;\r\n }\r\n }\r\n }\r\n\r\n private close() {\r\n this.dictionaryCard[0].classList.add('hidden');\r\n }\r\n\r\n // making dictionaryCard draggable\r\n\r\n private dragElement(element: any) {\r\n let pos1 = 0;\r\n let pos2 = 0;\r\n let pos3 = 0;\r\n let pos4 = 0;\r\n if (element !== undefined) {\r\n // if present, the header is where you move the DIV from:\r\n element.onmousedown = dragMouseDown;\r\n } else {\r\n // otherwise, move the DIV from anywhere inside the DIV:\r\n element.onmousedown = dragMouseDown;\r\n }\r\n\r\n function dragMouseDown(e: any) {\r\n e = e || window.event;\r\n e.preventDefault();\r\n // get the mouse cursor position at startup:\r\n pos3 = e.clientX;\r\n pos4 = e.clientY;\r\n document.onmouseup = closeDragElement;\r\n // call a function whenever the cursor moves:\r\n document.onmousemove = elementDrag;\r\n }\r\n\r\n function elementDrag(e: any) {\r\n e = e || window.event;\r\n e.preventDefault();\r\n // calculate the new cursor position:\r\n pos1 = pos3 - e.clientX;\r\n pos2 = pos4 - e.clientY;\r\n pos3 = e.clientX;\r\n pos4 = e.clientY;\r\n // set the element's new position:\r\n element.style.top = (element.offsetTop - pos2) + 'px';\r\n element.style.left = (element.offsetLeft - pos1) + 'px';\r\n }\r\n\r\n function closeDragElement() {\r\n // stop moving when mouse button is released:\r\n document.onmouseup = null;\r\n document.onmousemove = null;\r\n }\r\n }\r\n\r\n private created() {\r\n EventBus.$on('hoverName', (data: any) => {\r\n this.term = data;\r\n });\r\n }\r\n\r\n private mounted() {\r\n this.dragElement(this.dictionaryCard[0]);\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PopUpCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PopUpCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PopUpCard.vue?vue&type=template&id=57a6ca72&\"\nimport script from \"./PopUpCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./PopUpCard.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PopUpCard.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VCard,VCol,VRow})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{attrs:{\"flat\":\"\",\"tile\":\"\"}},[_c('v-card-text',[_c('v-form',{ref:\"form\",attrs:{\"lazyValidation\":true},nativeOn:{\"keypress\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.login()}},model:{value:(_vm.validForm),callback:function ($$v) {_vm.validForm=$$v},expression:\"validForm\"}},[_c('v-text-field',{attrs:{\"label\":\"Email\",\"name\":\"Email\",\"prepend-icon\":\"mdi-account\",\"type\":\"email\",\"rules\":_vm.emailRules,\"validate-on-blur\":true,\"error\":_vm.hasFieldError('Email'),\"error-messages\":_vm.getFieldError('Email')},model:{value:(_vm.username),callback:function ($$v) {_vm.username=$$v},expression:\"username\"}}),_c('v-text-field',{attrs:{\"id\":\"password\",\"label\":\"Password\",\"name\":\"password\",\"prepend-icon\":\"mdi-lock\",\"type\":\"password\",\"rules\":_vm.passwordRules,\"validate-on-blur\":true,\"error\":_vm.hasFieldError('Email'),\"error-messages\":_vm.getFieldError('Email')},model:{value:(_vm.password),callback:function ($$v) {_vm.password=$$v},expression:\"password\"}})],1)],1),_c('v-card-actions',{staticClass:\"px-6 justify-center\"},[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-row',[(!_vm.hasUnverifiedEmailError)?_c('v-btn',{staticClass:\"white--text elevation-0\",attrs:{\"color\":\"secondary\",\"block\":\"\",\"tile\":\"\",\"loading\":_vm.loading},on:{\"click\":function($event){return _vm.login()}}},[_vm._v(\" Login \")]):_c('v-btn',{staticClass:\"white--text elevation-0\",attrs:{\"color\":\"cyan darken-1\",\"block\":\"\",\"tile\":\"\",\"loading\":_vm.loading},on:{\"click\":function($event){return _vm.sendEmailVerification()}}},[_vm._v(\" Resend Email Verification \")])],1),_c('v-row',{staticClass:\"justify-center pt-2\"},[_c('router-link',{staticClass:\"caption grey--text text--darken-1\",attrs:{\"to\":{name: 'ForgotPassword'}}},[_vm._v(\"Forgot password?\")])],1),_c('v-row',[_c('span',{staticClass:\"grey--text text--darken-1\",staticStyle:{\"margin-top\":\"20px\",\"margin-bottom\":\"5px\",\"font-size\":\"11pt\"}},[_vm._v(\"Don't have an OSCAR account?\")])]),_c('v-row',[_c('v-btn',{staticClass:\"white--text elevation-0\",staticStyle:{\"margin-bottom\":\"20px\"},attrs:{\"color\":\"primary\",\"block\":\"\",\"tile\":\"\",\"href\":\"https://www.action-engineering.com/oscar/oscar-subscriptions/\"}},[_vm._v(\" Sign Up \")])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Emit, Watch } from 'vue-property-decorator';\r\nimport { AuthStore, StateStore } from '@/store/modules';\r\nimport { getModule } from 'vuex-module-decorators';\r\nimport rules from '@/utility/ValidationRules';\r\nimport { AuthError } from '@/_common';\r\nimport { PermissionsEnum } from '@/_common/permission.enums';\r\n\r\nconst authStore = getModule(AuthStore);\r\nconst stateStore = getModule(StateStore);\r\n\r\n@Component\r\nexport default class LoginForm extends Vue {\r\n // private email = '';\r\n private username = ''; // is actually email, need to change fields\r\n private password = '';\r\n\r\n private emailRules = [\r\n rules.required,\r\n rules.email\r\n ];\r\n\r\n private passwordRules = [\r\n rules.required\r\n ];\r\n\r\n private validForm = true;\r\n private loading = false;\r\n private tab = 0;\r\n\r\n private userIsAdmin() {\r\n if (!authStore.TokenValues) {\r\n return false;\r\n }\r\n return authStore.TokenValues!.permissions.indexOf(PermissionsEnum[PermissionsEnum.AdminPanel]) !== -1;\r\n }\r\n\r\n private async login() {\r\n if ((this.$refs.form as any).validate()) {\r\n await authStore.ClearErrors();\r\n\r\n this.loading = true;\r\n const success = await authStore.Login({username: this.username, password: this.password});\r\n const routePath: any = localStorage.getItem('oscar_path') || undefined;\r\n if (success) {\r\n if (routePath !== undefined) {\r\n this.$router.push(routePath);\r\n } else if (!this.userIsAdmin()) {\r\n window.location.href = '/';\r\n } else if (this.$router.currentRoute.name === 'Login') {\r\n this.$router.push({name: 'Home'});\r\n } else {\r\n this.$router.replace(this.$router.currentRoute.path);\r\n }\r\n } else {\r\n this.loading = false; // Only stop loading if there was an issue\r\n }\r\n }\r\n }\r\n\r\n private async sendEmailVerification() {\r\n if ((this.$refs.form as any).validate()) {\r\n this.loading = true;\r\n const success = await authStore.SendEmailVerification({email: this.username});\r\n\r\n if (success) {\r\n stateStore.SetSuccessToastMessage(`Verification email has been sent to ${this.username}`);\r\n stateStore.ToggleSuccessToast(true);\r\n authStore.ClearErrors();\r\n }\r\n\r\n this.loading = false; // Only stop loading if there was an issue\r\n }\r\n }\r\n\r\n get errors() {\r\n return authStore.Errors;\r\n }\r\n\r\n get fieldErrors() {\r\n return authStore.FieldErrors;\r\n }\r\n\r\n get hasUnverifiedEmailError() {\r\n if (authStore.HasErrors) {\r\n return authStore.Errors.some((error) => {\r\n return error.code === AuthError.UnverifiedEmail;\r\n });\r\n }\r\n\r\n return false;\r\n }\r\n\r\n get authenticated() {\r\n return authStore.Authenticated;\r\n }\r\n\r\n get component() {\r\n if (this.authenticated) {\r\n return 'layout';\r\n }\r\n return 'login';\r\n }\r\n\r\n private hasFieldError(name: string) {\r\n if (this.fieldErrors === undefined) {\r\n return false;\r\n }\r\n\r\n if (this.fieldErrors[name] === undefined) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private getFieldError(name: string) {\r\n if (!this.hasFieldError(name)) {\r\n return '';\r\n }\r\n return this.fieldErrors[name].message;\r\n }\r\n\r\n\r\n}\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./LoginForm.vue?vue&type=template&id=7f624022&\"\nimport script from \"./LoginForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./LoginForm.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./LoginForm.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCol,VForm,VRow,VTextField})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticClass:\"vertical-fluid\",attrs:{\"flat\":\"\",\"tile\":\"\"}},[(_vm.accountCreated)?_c('v-card-text',{staticClass:\"d-flex flex-column vertical-fluid justify-center\"},[_c('v-alert',{attrs:{\"type\":\"success\",\"prominent\":\"\"}},[_c('div',{staticClass:\"title\"},[_vm._v(\"Account Sucessfully Created\")]),_c('div',[_vm._v(\"A verification email has been sent to \"+_vm._s(_vm.email)+\", please click the link in the email to activate your account\")])]),_c('v-row',{staticClass:\"px-4\"},[_c('v-btn',{staticClass:\"white--text elevation-0\",attrs:{\"color\":\"cyan darken-1\",\"block\":\"\",\"tile\":\"\",\"loading\":_vm.loading},on:{\"click\":function($event){return _vm.sendEmailVerification()}}},[_vm._v(\" Resend Email Verification \")])],1)],1):_vm._e(),(!_vm.accountCreated)?_c('v-card-text',{staticClass:\"pb-0\"},[_c('v-form',{ref:\"form\",attrs:{\"aria-autocomplete\":\"off\",\"lazyValidation\":true},nativeOn:{\"keypress\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.register()}},model:{value:(_vm.validForm),callback:function ($$v) {_vm.validForm=$$v},expression:\"validForm\"}},[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"pr-3\",attrs:{\"cols\":\"12\",\"sm\":\"6\"}},[_c('v-text-field',{attrs:{\"disabled\":_vm.loading || _vm.accountCreated,\"color\":\"orange darken-1\",\"autocomplete\":\"first-name\",\"label\":\"First Name\",\"name\":\"firstName\",\"prepend-icon\":\"mdi-account-details\",\"type\":\"text\",\"auto\":\"\",\"rules\":[_vm.rules.required],\"validate-on-blur\":true,\"error\":_vm.hasFieldError('firstName'),\"error-messages\":_vm.getFieldError('firstName')},model:{value:(_vm.firstName),callback:function ($$v) {_vm.firstName=$$v},expression:\"firstName\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"6\"}},[_c('v-text-field',{attrs:{\"disabled\":_vm.loading || _vm.accountCreated,\"color\":\"orange darken-1\",\"autocomplete\":\"last-name\",\"label\":\"Last Name\",\"name\":\"lastName\",\"prepend-icon\":\"mdi-account-details\",\"type\":\"text\",\"auto\":\"\",\"rules\":[_vm.rules.required],\"validate-on-blur\":true,\"error\":_vm.hasFieldError('lastName'),\"error-messages\":_vm.getFieldError('lastName')},model:{value:(_vm.lastName),callback:function ($$v) {_vm.lastName=$$v},expression:\"lastName\"}})],1)],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-text-field',{attrs:{\"disabled\":_vm.loading || _vm.accountCreated,\"color\":\"orange darken-1\",\"autocomplete\":\"organization\",\"label\":\"Organization\",\"name\":\"Organization\",\"prepend-icon\":\"mdi-domain\",\"type\":\"text\",\"auto\":\"\",\"rules\":[_vm.rules.required],\"validate-on-blur\":true,\"error\":_vm.hasFieldError('organization'),\"error-messages\":_vm.getFieldError('organization')},model:{value:(_vm.organization),callback:function ($$v) {_vm.organization=$$v},expression:\"organization\"}})],1)],1),_c('v-text-field',{attrs:{\"disabled\":_vm.loading || _vm.accountCreated,\"color\":\"orange darken-1\",\"autocomplete\":\"email\",\"label\":\"Email\",\"name\":\"Email\",\"prepend-icon\":\"mdi-email\",\"type\":\"email\",\"rules\":_vm.emailRules,\"validate-on-blur\":true,\"error\":_vm.hasFieldError('Email'),\"error-messages\":_vm.getFieldError('Email')},model:{value:(_vm.email),callback:function ($$v) {_vm.email=$$v},expression:\"email\"}}),_c('v-text-field',{attrs:{\"disabled\":_vm.loading || _vm.accountCreated,\"color\":\"orange darken-1\",\"autocomplete\":\"new-password\",\"id\":\"password\",\"label\":\"Password (At least 12 characters and one digit)\",\"name\":\"password\",\"prepend-icon\":\"mdi-lock\",\"type\":\"password\",\"rules\":[_vm.rules.required, _vm.passwordRequires],\"validate-on-blur\":true,\"error\":_vm.hasFieldError('Password'),\"error-messages\":_vm.getFieldError('Password')},model:{value:(_vm.password),callback:function ($$v) {_vm.password=$$v},expression:\"password\"}}),_c('v-text-field',{attrs:{\"disabled\":_vm.loading || _vm.accountCreated,\"color\":\"orange darken-1\",\"autocomplete\":\"confirm-password\",\"id\":\"passwordcheck\",\"label\":\"Confirm Password\",\"name\":\"passwordcheck\",\"prepend-icon\":\"mdi-lock\",\"type\":\"password\",\"rules\":[_vm.rules.required, _vm.verifyPasswordRule],\"validate-on-blur\":true,\"error\":_vm.hasFieldError('passwordcheck'),\"error-messages\":_vm.getFieldError('passwordcheck')},model:{value:(_vm.passwordcheck),callback:function ($$v) {_vm.passwordcheck=$$v},expression:\"passwordcheck\"}})],1)],1):_vm._e(),(!_vm.accountCreated)?_c('v-card-actions',{staticClass:\"px-6 justify-center\"},[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-row',[_c('v-btn',{staticClass:\"white--text elevation-0\",attrs:{\"color\":\"orange darken-2\",\"block\":\"\",\"tile\":\"\",\"loading\":_vm.loading},on:{\"click\":function($event){return _vm.register()}}},[_vm._v(\" Create Account \")])],1)],1)],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Emit, Watch } from 'vue-property-decorator';\r\nimport { AuthStore, StateStore } from '@/store/modules';\r\nimport { getModule } from 'vuex-module-decorators';\r\nimport rules from '@/utility/ValidationRules';\r\nimport ApiService from '@/utility/ApiService';\r\nimport ApiRoutes from '@/_common/ApiRoutes';\r\n\r\nconst authStore = getModule(AuthStore);\r\nconst stateStore = getModule(StateStore);\r\n\r\n@Component\r\nexport default class RegistrationForm extends Vue {\r\n private email = '';\r\n private username = '';\r\n private firstName = '';\r\n private lastName = '';\r\n private organization = '';\r\n private password = '';\r\n private passwordcheck = '';\r\n\r\n private emailRules = [\r\n rules.required,\r\n rules.email\r\n ];\r\n\r\n private rules = rules;\r\n\r\n private validForm = true;\r\n private loading = false;\r\n private accountCreated = false; // Used to change button state\r\n\r\n private async register() {\r\n if ((this.$refs.form as any).validate()) {\r\n if (this.password === this.passwordcheck) {\r\n this.loading = true;\r\n\r\n if (this.username === '') {\r\n this.username = this.email;\r\n }\r\n\r\n const success = await authStore.Register({\r\n username: this.username,\r\n organization: this.organization,\r\n firstName: this.firstName,\r\n lastName: this.lastName,\r\n email: this.email,\r\n password: this.password\r\n });\r\n this.loading = false;\r\n\r\n if (success) {\r\n this.accountCreated = true;\r\n /*this.$nextTick(() => {\r\n if (this.$router.currentRoute.name === 'Login') {\r\n this.$router.push({name: 'Home'});\r\n } else {\r\n this.$router.replace(this.$router.currentRoute.path);\r\n }\r\n });*/\r\n }\r\n }\r\n }\r\n }\r\n private async sendEmailVerification() {\r\n this.loading = true;\r\n const success = await authStore.SendEmailVerification({email: this.email});\r\n\r\n\r\n if (success) {\r\n stateStore.SetSuccessToastMessage(`Verification email has been sent to ${this.email}`);\r\n stateStore.ToggleSuccessToast(true);\r\n authStore.ClearErrors();\r\n }\r\n\r\n this.loading = false;\r\n }\r\n\r\n get errors() {\r\n return authStore.Errors;\r\n }\r\n\r\n get fieldErrors() {\r\n return authStore.FieldErrors;\r\n }\r\n\r\n get hasErrors() {\r\n return authStore.HasErrors;\r\n }\r\n\r\n get authenticated() {\r\n return authStore.Authenticated;\r\n }\r\n\r\n get component() {\r\n if (this.authenticated) {\r\n return 'layout';\r\n }\r\n return 'login';\r\n }\r\n\r\n private verifyPasswordRule(value: string) {\r\n return this.passwordcheck === this.password || 'Passwords Must Match';\r\n }\r\n\r\n private passwordRequires(value: string) {\r\n return this.password.length > 12 || 'Password Must Be At Least 12 Characters And Must Have At Least One Digit (0-9)';\r\n }\r\n\r\n private hasFieldError(name: string) {\r\n return this.getFieldError(name) !== '';\r\n }\r\n\r\n private getFieldError(name: string) {\r\n if (this.fieldErrors === undefined) {\r\n return '';\r\n }\r\n\r\n if (this.fieldErrors[name] === undefined) {\r\n return '';\r\n }\r\n\r\n return this.fieldErrors[name].message;\r\n }\r\n}\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RegistrationForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RegistrationForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RegistrationForm.vue?vue&type=template&id=49cc1603&\"\nimport script from \"./RegistrationForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./RegistrationForm.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RegistrationForm.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAlert } from 'vuetify/lib/components/VAlert';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VAlert,VBtn,VCard,VCardActions,VCardText,VCol,VForm,VRow,VTextField})\n","import { AggregateChangeRequest, SimpleEntityChangeSetRequest } from '@/models/requests';\r\nimport { SimpleEntity } from '../simpleEntity';\r\n\r\nexport class CreateEditPropertyRequest {\r\n public id: string;\r\n public name: string;\r\n public selectionType: string;\r\n public standalone: boolean;\r\n\r\n public values?: AggregateChangeRequest;\r\n\r\n constructor(id: string, name: string, selectionType: string, standalone: boolean, values?: AggregateChangeRequest) {\r\n this.id = id;\r\n this.name = name;\r\n this.selectionType = selectionType;\r\n this.standalone = standalone;\r\n this.values = values;\r\n }\r\n}\r\n\r\n// tslint:disable-next-line: max-classes-per-file\r\nexport class CreateEditPairedPropertyRequest {\r\n public id: string;\r\n public name: string;\r\n public selectionType: string;\r\n public standalone: boolean;\r\n\r\n public requiredProperty: CreateEditPropertyRequest;\r\n\r\n public values: AggregateChangeRequest;\r\n\r\n constructor(id: string,\r\n name: string,\r\n selectionType: string,\r\n standalone: boolean,\r\n requiredProperty: CreateEditPropertyRequest,\r\n values: AggregateChangeRequest) {\r\n this.id = id;\r\n this.name = name;\r\n this.selectionType = selectionType;\r\n this.standalone = standalone;\r\n this.requiredProperty = requiredProperty;\r\n this.values = values;\r\n }\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.hasQueryParams)?_c('v-card',{attrs:{\"flat\":\"\",\"tile\":\"\"}},[_c('v-toolbar',{staticClass:\"d-flex justify-center\",attrs:{\"flat\":\"\",\"tile\":\"\",\"dense\":\"\",\"height\":\"48px\",\"max-height\":\"48px\"}},[_c('span',{staticClass:\"headline\"},[_vm._v(\"Complete Account Setup\")])]),_c('v-card-text',[_c('p',[_vm._v(\"Please set a password for your account\")]),_c('v-form',{ref:\"form\",attrs:{\"lazyValidation\":true},nativeOn:{\"keypress\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.setPassword()}},model:{value:(_vm.validForm),callback:function ($$v) {_vm.validForm=$$v},expression:\"validForm\"}},[_c('v-text-field',{attrs:{\"disabled\":_vm.loading || _vm.verificationComplete,\"color\":\"orange darken-1\",\"autocomplete\":\"new-password\",\"id\":\"password\",\"label\":\"Password\",\"name\":\"password\",\"prepend-icon\":\"mdi-lock\",\"type\":\"password\",\"rules\":[_vm.rules.required],\"validate-on-blur\":true},model:{value:(_vm.password),callback:function ($$v) {_vm.password=$$v},expression:\"password\"}}),_c('v-text-field',{attrs:{\"disabled\":_vm.loading || _vm.verificationComplete,\"color\":\"orange darken-1\",\"autocomplete\":\"new-password\",\"id\":\"verifyPassword\",\"label\":\"Verify Password\",\"name\":\"verifyPassword\",\"prepend-icon\":\"mdi-lock\",\"type\":\"password\",\"rules\":[_vm.rules.required, _vm.verifyPasswordRule],\"validate-on-blur\":true},model:{value:(_vm.verifyPassword),callback:function ($$v) {_vm.verifyPassword=$$v},expression:\"verifyPassword\"}})],1)],1),_c('v-card-actions',{staticClass:\"px-6 pt-0 justify-center\"},[_c('v-col',{staticClass:\"pt-0\",attrs:{\"cols\":\"12\"}},[_c('v-row',[_c('v-btn',{staticClass:\"white--text elevation-0\",attrs:{\"color\":\"orange darken-1\",\"block\":\"\",\"tile\":\"\",\"loading\":_vm.loading},on:{\"click\":function($event){return _vm.setPassword()}}},[_vm._v(\" Set Password & Verify Account \")])],1),_c('v-row',{attrs:{\"justify\":\"center\"}},[_c('a',{staticClass:\"py-4 caption grey--text text--darken-1\",on:{\"click\":function($event){return _vm.backToLogin()}}},[_vm._v(\" Back to login \")])])],1)],1)],1):_c('v-card',{attrs:{\"flat\":\"\",\"tile\":\"\"}},[_c('v-card-text',[_c('v-alert',{attrs:{\"type\":\"error\",\"prominent\":\"\",\"outlined\":\"\",\"color\":\"#37474f\"}},[_vm._v(\" If you already have a password, continue to \"),_c('a',{attrs:{\"href\":\"https://oscar.action-engineering.com/#/login\"}},[_vm._v(\"login\")]),_vm._v(\".\"),_c('br'),_c('br'),_vm._v(\"If you need a password for a new account or have forgotten your password, visit \"),_c('a',{attrs:{\"href\":\"https://oscar.action-engineering.com/#/login/forgotPassword\"}},[_vm._v(\"here\")]),_vm._v(\".\"),_c('br'),_c('br'),_vm._v(\"If this issue persists, please email OSCAR Support at \"),_c('a',{attrs:{\"href\":\"mailto:oscar@action-engineering.com?subject=Expired Link\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\"}},[_vm._v(\"oscar@action-engineering.com\")]),_vm._v(\". \")])],1),_c('v-card-actions',{staticClass:\"px-6 pt-0 justify-center\"},[_c('router-link',{staticClass:\"py-4 caption grey--text text--darken-1\",attrs:{\"to\":{name: 'Login'}}},[_vm._v(\" Back to login \")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Emit, Watch } from 'vue-property-decorator';\r\nimport { getModule } from 'vuex-module-decorators';\r\nimport rules from '@/utility/ValidationRules';\r\nimport { AuthStore, StateStore } from '@/store/modules';\r\nimport { LoginForm, RegistrationForm } from '@/components';\r\nimport ApiService from '@/utility/ApiService';\r\n\r\nconst authStore = getModule(AuthStore);\r\nconst stateStore = getModule(StateStore);\r\n\r\n@Component\r\nexport default class VerifyAndSetPassword extends Vue {\r\n private password = '';\r\n private verifyPassword = '';\r\n private userId: string | null = null;\r\n private token: string | null = null;\r\n\r\n private verificationComplete = false;\r\n private loading = false;\r\n private validForm = false;\r\n\r\n private rules = rules;\r\n\r\n private verifyPasswordRule(value: string) {\r\n return this.verifyPassword === this.password || 'Passwords Must Match';\r\n }\r\n\r\n get hasQueryParams() {\r\n return this.userId && this.token;\r\n }\r\n\r\n private backToLogin() {\r\n authStore.ClearErrors();\r\n this.$router.push({name: 'Login'});\r\n }\r\n\r\n private async setPassword() {\r\n if ((this.$refs.form as any).validate() && this.hasQueryParams) {\r\n authStore.ClearErrors();\r\n this.loading = true;\r\n const success = await authStore.SetPassword({userId: this.userId!, password: this.password});\r\n\r\n if (success) {\r\n this.verificationComplete = true;\r\n\r\n stateStore.SetSuccessToast({message: 'Account setup completed sucessfully, Please Login', timeout: 4000});\r\n authStore.ClearErrors();\r\n\r\n this.$router.push({name: 'Login'});\r\n } else {\r\n this.loading = false;\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n private async beforeMount() {\r\n if (this.$route.query.user) {\r\n this.userId = this.$route.query.user as string;\r\n }\r\n if (this.$route.query.code) {\r\n this.token = this.$route.query.code as string;\r\n\r\n this.loading = true;\r\n const success = await authStore.ConfirmEmail({userId: this.userId!, token: this.token!});\r\n\r\n if (!success) {\r\n this.token = null;\r\n }\r\n\r\n this.loading = false;\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VerifyAndSetPassword.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VerifyAndSetPassword.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./VerifyAndSetPassword.vue?vue&type=template&id=810e94f8&\"\nimport script from \"./VerifyAndSetPassword.vue?vue&type=script&lang=ts&\"\nexport * from \"./VerifyAndSetPassword.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAlert } from 'vuetify/lib/components/VAlert';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\ninstallComponents(component, {VAlert,VBtn,VCard,VCardActions,VCardText,VCol,VForm,VRow,VTextField,VToolbar})\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MarkdownItVue.vue?vue&type=style&index=0&lange=scss&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MarkdownItVue.vue?vue&type=style&index=0&lange=scss&lang=css&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MbdGuidelinesTile.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MbdGuidelinesTile.vue?vue&type=style&index=0&lang=scss&\"","import { ICloneable } from './interfaces';\r\n\r\n/**\r\n * @summary An edit model used to house original and modified values of an object\r\n * @description This requires T to implement ICloneable, and as such all computed values & functions are preserved\r\n */\r\nexport class ClonedEditModel> {\r\n // These are for external state management\r\n public editing: boolean = false;\r\n public modified: boolean = false;\r\n public deleted: boolean = false;\r\n public new: boolean;\r\n\r\n /** The original item, this will never change. */\r\n public original: T;\r\n\r\n /** The temporary working value, this is what should be edited directly. */\r\n public temp: T;\r\n\r\n /** The committed, modified value. This is what should be referenced for display. */\r\n public value: T;\r\n\r\n /** The previous value before the last value was committed. Essentially a history value. */\r\n public previousValue: T;\r\n\r\n constructor(original: T, isNew = false) {\r\n this.original = original;\r\n this.new = isNew;\r\n this.value = original.Clone();\r\n this.temp = original.Clone();\r\n this.previousValue = original.Clone();\r\n }\r\n\r\n /** Commits the current value to the previousValue field and the temp value to the value field */\r\n public commit() {\r\n this.previousValue = this.value.Clone();\r\n this.value = this.temp.Clone();\r\n }\r\n\r\n /** Reset the temp variable to the current value, such as after cancelling an edit */\r\n public resetTemp() {\r\n this.temp = this.value.Clone();\r\n }\r\n\r\n /** Restores the previously set value to previousValue, such as when a commit has to be reverted */\r\n public restorePreviousValue() {\r\n if (JSON.stringify(this.previousValue) === JSON.stringify(this.original)) {\r\n this.modified = false;\r\n }\r\n this.value = this.previousValue.Clone();\r\n }\r\n\r\n /** Restores the entire object back to it's original value */\r\n public restore() {\r\n this.value = this.original.Clone();\r\n this.previousValue = this.original.Clone();\r\n this.temp = this.original.Clone();\r\n this.modified = false;\r\n }\r\n}\r\n","// The payload values of the JWT itself\r\nexport class JwtValues {\r\n public email: string;\r\n public expiration: number;\r\n public issuedAt: number;\r\n public tokenId: string;\r\n public notBefore: number;\r\n public subject: string;\r\n public userId: string;\r\n\r\n /** Array of Role Ids/Names (Enum Values) */\r\n public roles: string[];\r\n\r\n /** Array of Permission Ids/Names (Enum Values) */\r\n public permissions: string[];\r\n\r\n constructor(values: RawJwtValues) {\r\n this.email = values.email;\r\n this.expiration = values.exp;\r\n this.issuedAt = values.iat;\r\n this.tokenId = values.jti;\r\n this.notBefore = values.nbf;\r\n this.subject = values.sub;\r\n this.userId = values.userId;\r\n\r\n this.roles = [];\r\n this.permissions = [];\r\n\r\n if (typeof(values.role) === 'string') {\r\n this.roles = [];\r\n this.roles.push(values.role);\r\n } else if (Array.isArray(values.role)) {\r\n this.roles = values.role;\r\n }\r\n\r\n if (typeof(values.permissions) === 'string') {\r\n this.permissions = [];\r\n this.permissions.push(values.permissions);\r\n } else if (Array.isArray(values.permissions)) {\r\n this.permissions = values.permissions;\r\n }\r\n }\r\n\r\n // Current datetime in unix time\r\n get now() {\r\n return Math.floor(Date.now() / 1000);\r\n }\r\n\r\n public expired() {\r\n if (this.now > this.expiration) {\r\n return true;\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginTabs.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginTabs.vue?vue&type=style&index=0&lang=css&\"","export * from './standard';\r\nexport * from './standardBody';\r\n","import { INamedEntity } from '../';\r\n\r\nexport class PropertyValue implements INamedEntity {\r\n public id: string;\r\n public name: string;\r\n public childValues: PropertyValue[];\r\n\r\n constructor(id: string, name: string, childValues: PropertyValue[]) {\r\n this.id = id;\r\n this.name = name;\r\n this.childValues = childValues;\r\n }\r\n\r\n get hasChildren(): boolean {\r\n return this.childValues.length > 0;\r\n }\r\n}\r\n","export * from './CourseProgress';\r\nexport * from './ModuleProgress';\r\nexport * from './FileProgress';\r\nexport * from './CreateEditCourseProgressRequest';\r\nexport * from './CreateEditModuleProgressRequest';\r\nexport * from './CreateEditFileProgressRequest';\r\n","import Vue from 'vue';\r\n// tslint:disable-next-line: variable-name\r\nexport const EventBus = new Vue();\r\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=style&index=0&lang=scss&\"","import { PropertyValuePairIds, SelectedProperty } from '@/models/entities';\r\nimport Vue from 'vue';\r\nimport { ICloneable } from '@/models/interfaces';\r\n\r\n// Used when selecting properties & values in a form\r\n// Such as for a File or a Package\r\nexport class SelectedProperties implements ICloneable {\r\n public properties: SelectedProperty[] = [];\r\n\r\n // Converts the selected values into a format used in requests\r\n get pairedPropertyValueIds() {\r\n const pairs: PropertyValuePairIds[] = [];\r\n\r\n this.properties.forEach((item) => {\r\n if (item.isPaired && item.paired) {\r\n const prop = item.paired;\r\n if (prop.principleId !== '' && prop.requiredId !== '') {\r\n pairs.push({principleId: prop.principleId , requiredId: prop.requiredId});\r\n }\r\n }\r\n });\r\n return pairs;\r\n }\r\n\r\n // Converts the selected values into a format used in requests\r\n get propertyValueIds() {\r\n let ids: string[] = [];\r\n\r\n this.properties.forEach((item) => {\r\n if (item.isSingle && item.singleSelect) {\r\n ids.push(item.singleSelect.valueId);\r\n } else if (item.isMulti && item.multiSelect) {\r\n ids = ids.concat(item.multiSelect.valueIds);\r\n }\r\n });\r\n\r\n return ids;\r\n }\r\n\r\n public add(property: SelectedProperty) {\r\n Vue.set(this.properties, this.properties.length, property);\r\n }\r\n\r\n public removeAt(index: number) {\r\n this.properties.splice(index, 1);\r\n }\r\n\r\n public Clone() {\r\n const clone = new SelectedProperties();\r\n this.properties.forEach((value) => {\r\n clone.properties.push(value.Clone());\r\n });\r\n return clone;\r\n }\r\n}\r\n","enum SelectionType {\r\n SingleSelect = 'Single Select',\r\n MultiSelect = 'Multi Select'\r\n}\r\n\r\nenum ErrorResponseType {\r\n Validation = 1,\r\n Auth = 2,\r\n Unauthorized = 3,\r\n Server = 4,\r\n Fatal = 5,\r\n Offline = 6,\r\n NotFound = 7\r\n}\r\n\r\nenum AuthError {\r\n LoginError = 100,\r\n InvalidCredentials = 101,\r\n UnverifiedEmail = 102,\r\n\r\n RegistrationError = 200,\r\n UserAlreadyExists = 201,\r\n\r\n EmailVerificationError = 300,\r\n VerifyEmail_AccountDoesNotExist = 301,\r\n VerifyEmail_InvalidAccount = 302,\r\n EmailAlreadyVerified = 303,\r\n\r\n TokenRefreshError = 400,\r\n JwtNotExpired = 401,\r\n RefreshTokenDoesNotExist = 402,\r\n RefreshTokenExpired = 403,\r\n RefreshTokenInvalidated = 404,\r\n RefreshTokenUsed = 405,\r\n RefreshTokenToJwtMismatch = 406,\r\n}\r\n\r\nenum FileScanStatusEnum {\r\n None = 0,\r\n Scanning = 1,\r\n Clean = 2,\r\n Error = 3,\r\n Infected = 4\r\n}\r\n\r\nenum FileUploadStatusEnum {\r\n None = 0,\r\n Uploading = 1,\r\n Uploaded = 2,\r\n Error = 3\r\n}\r\n\r\nenum FileStatusEnum {\r\n None = 0, // Should not be used, would be a failure state\r\n NoData = 1, // No data exists\r\n Pending = 2, // Data Uploaded to Webserver, not scanning or uploaded to S3. Should rarely be visible. Also a catch all for any intermediate steps.\r\n Scanning = 3, // Scanning for viruses\r\n Uploading = 4, // Uploading to S3\r\n Ok = 5, // All processing complete, no issues\r\n Error = 6, // File is in an error state for one reason or another, refer to Upload or scan status for specific error\r\n}\r\n\r\nexport {\r\n SelectionType,\r\n AuthError,\r\n ErrorResponseType,\r\n FileScanStatusEnum,\r\n FileUploadStatusEnum,\r\n FileStatusEnum\r\n};\r\n\r\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PopUpCard.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PopUpCard.vue?vue&type=style&index=0&lang=css&\"","import { Version, SelectedProperties, SimpleEntity, SelectedProperty } from '@/models';\r\nimport validationRules from '@/utility/ValidationRules';\r\nimport { FileEditResponse } from './FileEditResponse';\r\nimport { groupArray } from '@/utility/Utilities';\r\nimport { EntityPropertyValue, EntityPropertyValuePair } from '../property';\r\nimport { FileSystemItem } from '../fileSystem';\r\nimport { CreateEditMetadataModel } from '../metadata';\r\n\r\nexport class CreateEditFileModel { // Cannot import from index due to circular dependency issues, for some reason\r\n public id: string = '';\r\n public name: string = '';\r\n public title: string = '';\r\n public originalName: string = '';\r\n public fileExtension: string = '';\r\n public fileType: string = '';\r\n public version: Version = new Version(1, 0);\r\n public notes: string = '';\r\n\r\n public contentAccessLevel: string = '';\r\n\r\n public thumbnailId: string | null = null;\r\n\r\n public metadata: CreateEditMetadataModel;\r\n\r\n public sourceFiles: SimpleEntity[] = []; // selected related files\r\n\r\n // Used to maintain easier state for folder\r\n public selectedFolder: FileSystemItem | null = null;\r\n\r\n get sourceFileIds() {\r\n return this.sourceFiles.map((val) => {\r\n return val.id;\r\n });\r\n }\r\n\r\n // Gets a string from the version object\r\n get versionStr(): string {\r\n return `${this.version.majorVersion}.${this.version.minorVersion}`;\r\n }\r\n\r\n // Sets the version object\r\n set versionStr(value) {\r\n if (validationRules.version(value) === true) {\r\n const sections = value.split('.');\r\n this.version.majorVersion = Number(sections[0]);\r\n this.version.minorVersion = Number(sections[1]);\r\n }\r\n }\r\n\r\n constructor() {\r\n this.metadata = new CreateEditMetadataModel();\r\n }\r\n\r\n public FromResponse(model: FileEditResponse) {\r\n this.id = model.id;\r\n this.name = model.name;\r\n this.title = model.title;\r\n this.originalName = model.originalName;\r\n this.fileExtension = model.fileType.extension;\r\n this.fileType = model.fileType.name;\r\n this.version = model.version;\r\n this.notes = model.notes ?? '';\r\n\r\n this.contentAccessLevel = model.contentAccessLevel;\r\n\r\n this.thumbnailId = model.thumbnailId;\r\n\r\n this.selectedFolder = model.folder ? model.folder : null;\r\n\r\n this.sourceFiles = model.sourceFiles;\r\n\r\n this.metadata = new CreateEditMetadataModel();\r\n this.metadata.FromResponse(model.metadata);\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LinkText.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LinkText.vue?vue&type=style&index=0&lang=css&\"","import { SimpleEntity, CadSystemInstruction, CreateEditMdbGuidelineModel } from '..';\r\n\r\nexport class CreateEditGuidelineRequest {\r\n public id: string = '';\r\n public name: string;\r\n public category: SimpleEntity | null = null;\r\n\r\n public ruleStatement: string = '';\r\n public whyStatement: string = '';\r\n public agnosticInstructions: string = '';\r\n\r\n public contentAccessLevel: string = '';\r\n\r\n public instructions: CadSystemInstruction[] = [];\r\n\r\n constructor(name: string,\r\n category: SimpleEntity,\r\n ruleStatement: string,\r\n whyStatement: string,\r\n agnosticInstructions: string,\r\n instructions: CadSystemInstruction[],\r\n contentAccessLevel: string = '') {\r\n this.name = name;\r\n this.category = category;\r\n this.ruleStatement = ruleStatement;\r\n this.whyStatement = whyStatement;\r\n this.agnosticInstructions = agnosticInstructions;\r\n this.instructions = instructions;\r\n this.contentAccessLevel = contentAccessLevel;\r\n }\r\n\r\n /** Creates the Request from the CreateEdit Model */\r\n public static FromModel(model: CreateEditMdbGuidelineModel) {\r\n\r\n const output = new CreateEditGuidelineRequest(\r\n model.name,\r\n model.category!,\r\n model.ruleStatement,\r\n model.whyStatement,\r\n model.agnosticInstructions,\r\n model.instructions,\r\n model.contentAccessLevel\r\n );\r\n\r\n output.id = model.id;\r\n return output;\r\n }\r\n}\r\n","export * from './CreateEditMetadataModel';\r\nexport * from './MetadataEditResponse';\r\nexport * from './MetadataResponse';\r\nexport * from './CreateEditMetadataRequest';\r\n","import { DirectiveOptions } from 'vue';\r\nimport { AuthStore } from '@/store/modules';\r\nimport { getModule } from 'vuex-module-decorators';\r\nimport { PermissionsEnum, ContentAccessLevelsEnum, contentLevelToPermMap } from '@/_common/permission.enums';\r\nimport { indexOfByKey } from '@/utility/Utilities';\r\n\r\nconst authStore = getModule(AuthStore);\r\n\r\nconst hasPermDirective: DirectiveOptions = {\r\n inserted(el, binding, vnode) {\r\n let ok = false;\r\n let errorState = false;\r\n let errorMessage = '';\r\n const userPerms = authStore.TokenValues?.permissions;\r\n\r\n let permValues: string[] = []; // We will assume support for arrays of perms\r\n\r\n if (typeof(binding.value) === 'string') {\r\n permValues.push(binding.value);\r\n } else if (Array.isArray(binding.value)) {\r\n permValues = binding.value;\r\n } else {\r\n errorState = true;\r\n errorMessage = 'Provided directive value is invalid. Expected one of string or string[]';\r\n }\r\n\r\n if (!errorState) {\r\n for (let i = 0; i < permValues.length; i++) {\r\n const enumValue: PermissionsEnum = PermissionsEnum[permValues[i] as keyof typeof PermissionsEnum];\r\n if (!enumValue) {\r\n errorState = true;\r\n errorMessage = `Cannot find permission \"${permValues[i]}\" `;\r\n break;\r\n }\r\n\r\n const permIndex = userPerms?.indexOf(permValues[i]);\r\n\r\n if (permIndex !== -1) {\r\n ok = true;\r\n break;\r\n }\r\n }\r\n }\r\n if (!ok || errorState) {\r\n if (binding.arg === 'disable') {\r\n el.setAttribute('style', 'cursor: not-allowed; pointer-events: none; opacity: 0.4;');\r\n } else {\r\n vnode.elm?.parentElement?.removeChild(vnode.elm);\r\n }\r\n }\r\n\r\n if (errorState) {\r\n throw new Error(errorMessage);\r\n }\r\n },\r\n};\r\n\r\nconst hasContentAccessDirective: DirectiveOptions = {\r\n inserted(el, binding, vnode) {\r\n let ok = false;\r\n let errorState = false;\r\n let errorMessage = '';\r\n const userPerms = authStore.TokenValues?.permissions;\r\n\r\n let accessLevelNames: string[] = []; // We will assume support for arrays\r\n\r\n if (typeof(binding.value) === 'string') {\r\n accessLevelNames.push(binding.value);\r\n } else if (Array.isArray(binding.value)) {\r\n accessLevelNames = binding.value;\r\n } else {\r\n errorState = true;\r\n errorMessage = 'Provided directive value is invalid. Expected one of string or string[]';\r\n }\r\n\r\n if (accessLevelNames.includes('Free') && !accessLevelNames.includes('SubscriptionL1')) {\r\n accessLevelNames.push('SubscriptionL1');\r\n }\r\n if (accessLevelNames.includes('SubscriptionL1') && !accessLevelNames.includes('Internal')) {\r\n accessLevelNames.push('Internal');\r\n }\r\n\r\n if (!errorState) {\r\n for (let i = 0; i < accessLevelNames.length; i++) {\r\n const contentEnum = ContentAccessLevelsEnum[accessLevelNames[i] as keyof typeof ContentAccessLevelsEnum];\r\n if (!contentEnum) {\r\n errorState = true;\r\n errorMessage = `Cannot find Content Access Level \"${accessLevelNames[i]}\" `;\r\n break;\r\n }\r\n\r\n // Get associated Permission enum\r\n const permEnum = contentLevelToPermMap[contentEnum];\r\n\r\n if (!permEnum) {\r\n errorState = true;\r\n errorMessage = `Cannot find Permission associated with Content Access Level \"${accessLevelNames[i]}\" `;\r\n break;\r\n }\r\n\r\n const permExists = userPerms?.indexOf(PermissionsEnum[permEnum].toString()) !== -1;\r\n\r\n if (permExists) {\r\n ok = true;\r\n break;\r\n }\r\n }\r\n }\r\n if (!ok || errorState) {\r\n if (binding.arg === 'disable') {\r\n el.setAttribute('style', 'cursor: not-allowed; pointer-events: none; opacity: 0.4;');\r\n } else {\r\n vnode.elm?.parentElement?.removeChild(vnode.elm);\r\n }\r\n }\r\n\r\n if (errorState) {\r\n throw new Error(errorMessage);\r\n }\r\n },\r\n};\r\n\r\nexport {\r\n hasPermDirective,\r\n hasContentAccessDirective\r\n};\r\n\r\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RegistrationForm.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RegistrationForm.vue?vue&type=style&index=0&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.hasQueryParams)?_c('v-card',{attrs:{\"flat\":\"\",\"tile\":\"\"}},[_c('v-toolbar',{staticClass:\"d-flex justify-center\",attrs:{\"flat\":\"\",\"tile\":\"\",\"dense\":\"\",\"height\":\"48px\",\"max-height\":\"48px\"}},[_c('span',{staticClass:\"headline\"},[_vm._v(\"Reset Password\")])]),_c('v-card-text',[_c('v-form',{ref:\"form\",attrs:{\"lazyValidation\":true},nativeOn:{\"keypress\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.resetPassword()}},model:{value:(_vm.validForm),callback:function ($$v) {_vm.validForm=$$v},expression:\"validForm\"}},[_c('v-text-field',{attrs:{\"disabled\":_vm.loading || _vm.passwordReset,\"color\":\"orange darken-1\",\"autocomplete\":\"new-password\",\"id\":\"password\",\"label\":\"New Password\",\"name\":\"password\",\"prepend-icon\":\"mdi-lock\",\"type\":\"password\",\"rules\":[_vm.rules.required],\"validate-on-blur\":true},model:{value:(_vm.password),callback:function ($$v) {_vm.password=$$v},expression:\"password\"}}),_c('v-text-field',{attrs:{\"disabled\":_vm.loading || _vm.passwordReset,\"color\":\"orange darken-1\",\"autocomplete\":\"new-password\",\"id\":\"verifyPassword\",\"label\":\"Verify Password\",\"name\":\"verifyPassword\",\"prepend-icon\":\"mdi-lock\",\"type\":\"password\",\"rules\":[_vm.rules.required, _vm.verifyPasswordRule],\"validate-on-blur\":true},model:{value:(_vm.verifyPassword),callback:function ($$v) {_vm.verifyPassword=$$v},expression:\"verifyPassword\"}})],1)],1),_c('v-card-actions',{staticClass:\"px-6 pt-0 justify-center\"},[_c('v-col',{staticClass:\"pt-0\",attrs:{\"cols\":\"12\"}},[_c('v-row',[_c('v-btn',{staticClass:\"white--text elevation-0\",attrs:{\"color\":\"orange darken-1\",\"block\":\"\",\"tile\":\"\",\"loading\":_vm.loading},on:{\"click\":function($event){return _vm.resetPassword()}}},[_vm._v(\" Reset Password \")])],1),_c('v-row',{attrs:{\"justify\":\"center\"}},[_c('a',{staticClass:\"py-4 caption grey--text text--darken-1\",on:{\"click\":function($event){return _vm.backToLogin()}}},[_vm._v(\" Back to login \")])])],1)],1)],1):_c('v-card',{attrs:{\"flat\":\"\",\"tile\":\"\"}},[_c('v-card-text',[_c('v-alert',{attrs:{\"type\":\"error\",\"prominent\":\"\",\"outlined\":\"\",\"color\":\"#37474f\"}},[_vm._v(\" If you already have a password, continue to \"),_c('a',{attrs:{\"href\":\"https://oscar.action-engineering.com/#/login\"}},[_vm._v(\"login\")]),_vm._v(\".\"),_c('br'),_c('br'),_vm._v(\"If you need a password for a new account or have forgotten your password, visit \"),_c('a',{attrs:{\"href\":\"https://oscar.action-engineering.com/#/login/forgotPassword\"}},[_vm._v(\"here\")]),_vm._v(\".\"),_c('br'),_c('br'),_vm._v(\"If this issue persists, please email OSCAR Support at \"),_c('a',{attrs:{\"href\":\"mailto:oscar@action-engineering.com?subject=Expired Link\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\"}},[_vm._v(\"oscar@action-engineering.com\")]),_vm._v(\". \")])],1),_c('v-card-actions',{staticClass:\"px-6 pt-0 justify-center\"},[_c('router-link',{staticClass:\"py-4 caption grey--text text--darken-1\",attrs:{\"to\":{name: 'Login'}}},[_vm._v(\" Back to login \")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Emit, Watch } from 'vue-property-decorator';\r\nimport { getModule } from 'vuex-module-decorators';\r\nimport rules from '@/utility/ValidationRules';\r\nimport { AuthStore, StateStore } from '@/store/modules';\r\nimport { LoginForm, RegistrationForm } from '@/components';\r\n\r\nconst authStore = getModule(AuthStore);\r\nconst stateStore = getModule(StateStore);\r\n\r\n@Component\r\nexport default class ForgotPassword extends Vue {\r\n private password = '';\r\n private verifyPassword = '';\r\n private userId: string | null = null;\r\n private token: string | null = null;\r\n\r\n private passwordReset = false;\r\n private loading = false;\r\n private validForm = false;\r\n\r\n private rules = rules;\r\n private verifyPasswordRule(value: string) {\r\n return this.verifyPassword === this.password || 'Passwords Must Match';\r\n }\r\n\r\n get hasQueryParams() {\r\n return this.userId && this.token;\r\n }\r\n\r\n private backToLogin() {\r\n authStore.ClearErrors();\r\n this.$router.push({name: 'Login'});\r\n }\r\n\r\n private async resetPassword() {\r\n if ((this.$refs.form as any).validate() && this.hasQueryParams) {\r\n authStore.ClearErrors();\r\n this.loading = true;\r\n const success = await authStore.ResetPassword({userId: this.userId!, token: this.token!, newPassword: this.password});\r\n\r\n if (success) {\r\n this.passwordReset = true;\r\n\r\n stateStore.SetSuccessToastMessage(`Password Sucessfully Reset, Please Login`);\r\n stateStore.ToggleSuccessToast(true);\r\n authStore.ClearErrors();\r\n\r\n this.$router.push({name: 'Login'});\r\n } else {\r\n this.loading = false;\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n private beforeMount() {\r\n if (this.$route.query.user) {\r\n this.userId = this.$route.query.user as string;\r\n }\r\n if (this.$route.query.code) {\r\n this.token = this.$route.query.code as string;\r\n }\r\n }\r\n\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ResetPassword.vue?vue&type=template&id=4cabb46c&\"\nimport script from \"./ResetPassword.vue?vue&type=script&lang=ts&\"\nexport * from \"./ResetPassword.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAlert } from 'vuetify/lib/components/VAlert';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\ninstallComponents(component, {VAlert,VBtn,VCard,VCardActions,VCardText,VCol,VForm,VRow,VTextField,VToolbar})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('login-form')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\nimport { Component, Prop, Vue, Emit, Watch } from 'vue-property-decorator';\nimport { getModule } from 'vuex-module-decorators';\nimport rules from '@/utility/ValidationRules';\nimport { AuthStore, StateStore } from '@/store/modules';\nimport { LoginForm, RegistrationForm } from '@/components';\n\nconst authStore = getModule(AuthStore);\n\n@Component({\n components: {\n LoginForm\n }\n})\nexport default class LoginTabs extends Vue {\n private tab = 0;\n\n get sliderColor() {\n if (this.tab === 0) {\n return 'primary--text text--darken-1';\n } else if (this.tab === 1) {\n return 'orange--text text--darken-1';\n }\n }\n\n @Watch('tab')\n private onTabChanged(val: number) {\n authStore.ClearErrors();\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginTabs.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginTabs.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./LoginTabs.vue?vue&type=template&id=1697059a&\"\nimport script from \"./LoginTabs.vue?vue&type=script&lang=ts&\"\nexport * from \"./LoginTabs.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./LoginTabs.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import store from '@/store/store';\r\nimport { Module, VuexModule, Mutation, Action, MutationAction } from 'vuex-module-decorators';\r\nimport JwtService from '@/utility/JwtService';\r\nimport ApiService from '@/utility/ApiService';\r\nimport { JwtValues, ErrorResponse } from '@/models';\r\nimport { ErrorResponseType } from '@/_common/enums';\r\nimport { AccountRegistrationRequest, CreateUserRequest } from '@/models/requests';\r\n\r\n@Module({ namespaced: true, name: 'Auth', dynamic: true, store: store })\r\nexport default class AuthStore extends VuexModule {\r\n private authenticated = false;\r\n private token: TokenObj | null = null;\r\n private jwtValues: JwtValues | null = null;\r\n\r\n private errors: ErrorResponse[] = [];\r\n private fieldErrors: { [field: string]: ErrorResponse } = {};\r\n\r\n // State management to handle multiple CheckSession callers\r\n private checkingSession = false;\r\n private checkSessionPromise?: Promise;\r\n\r\n get Errors() {\r\n const errors: ErrorResponse[] = Array.from(this.errors);\r\n\r\n for (const key in this.fieldErrors) {\r\n if (this.fieldErrors.hasOwnProperty(key)) {\r\n errors.push(this.fieldErrors[key]);\r\n }\r\n }\r\n return errors; }\r\n\r\n get FieldErrors() {\r\n return this.fieldErrors;\r\n }\r\n\r\n get HasErrors() {\r\n return (this.errors && this.errors.length > 0)\r\n || this.fieldErrors && Object.keys(this.fieldErrors).length > 0 ;\r\n }\r\n\r\n get Token(): TokenObj | null {\r\n return this.token;\r\n }\r\n\r\n get TokenValues(): JwtValues | null {\r\n return this.jwtValues;\r\n }\r\n\r\n get Authenticated(): boolean {\r\n return this.authenticated;\r\n }\r\n\r\n get CheckSessionPromise() {\r\n if (!this.checkSessionPromise) {\r\n return Promise.resolve();\r\n }\r\n return this.checkSessionPromise;\r\n }\r\n\r\n // Used only for internal state management\r\n @Mutation\r\n private setCheckingSession({status, promise}: {status: boolean, promise?: Promise}) {\r\n this.checkingSession = status;\r\n this.checkSessionPromise = promise;\r\n }\r\n\r\n @Mutation\r\n private setErrors(errors: ErrorResponse[]) {\r\n this.errors = errors;\r\n }\r\n\r\n @Mutation\r\n private setFieldErrors(errors: { [field: string]: ErrorResponse } | undefined) {\r\n if (errors !== undefined) {\r\n this.fieldErrors = errors;\r\n } else {\r\n this.fieldErrors = {};\r\n }\r\n }\r\n\r\n @Mutation\r\n private setToken(token: TokenObj) {\r\n JwtService.saveToken(token);\r\n this.token = token;\r\n try {\r\n this.jwtValues = new JwtValues(JwtService.getTokenPayload(token.token));\r\n } catch { // Token failed to parse\r\n JwtService.destroyToken();\r\n store.dispatch('setFatalError', 'A Critical Error Has Ocurred. Please refresh the page');\r\n }\r\n }\r\n\r\n @Mutation\r\n private clearToken() {\r\n JwtService.destroyToken();\r\n this.token = null;\r\n this.jwtValues = null;\r\n }\r\n\r\n @Mutation\r\n private setAuthenticated(authenticated: boolean) {\r\n this.authenticated = authenticated;\r\n }\r\n\r\n @Action\r\n public async ClearErrors() {\r\n this.setErrors([]);\r\n }\r\n\r\n @Action({rawError: true})\r\n public async EnsureTokenIsSet() {\r\n const token = JwtService.getTokenObj();\r\n\r\n // Tokens are the same, return\r\n if (JSON.stringify(this.token) === JSON.stringify((token))) {\r\n return;\r\n // Vuex has token, localStorage does not. Keep Vuex\r\n } else if (this.token !== null && token === null) {\r\n this.context.commit('setToken', this.token);\r\n // Else set Vuex token with localStorage token\r\n } else {\r\n this.context.commit('setToken', token);\r\n }\r\n }\r\n\r\n @Action\r\n public async FetchAndSetToken() {\r\n const token = JwtService.getTokenObj();\r\n\r\n if (token !== null) {\r\n this.context.commit('setAuthenticated', true);\r\n this.context.commit('setToken', token);\r\n }\r\n }\r\n\r\n // Performs a simple local-only auth check.\r\n // Used during route change while the remote auth runs\r\n @Action({rawError: true})\r\n public async LocalSessionCheck() {\r\n await this.EnsureTokenIsSet();\r\n if (this.token === null) {\r\n this.context.commit('setAuthenticated', false);\r\n return;\r\n }\r\n\r\n if (this.jwtValues !== null) {\r\n\r\n // Token expired, do a full session check\r\n if (this.jwtValues.expired()) {\r\n await this.CheckSession();\r\n } else { // Token not expired, set authenticated\r\n this.setAuthenticated(true);\r\n }\r\n }\r\n }\r\n\r\n /*\r\n Can be safely called multiple times by multiple callers.\r\n Will await all callers until check is complete.\r\n */\r\n @Action({rawError: true})\r\n public async CheckSession() {\r\n\r\n // Avoid multiple callers\r\n if (this.checkingSession) {\r\n await this.CheckSessionPromise;\r\n return;\r\n }\r\n\r\n // Create promise that all callers can be awaited on\r\n let resolver!: (value?: unknown) => void;\r\n const checkPromise = new Promise((resolve) => {\r\n resolver = resolve;\r\n });\r\n this.setCheckingSession({status: true, promise: checkPromise});\r\n\r\n await this.EnsureTokenIsSet();\r\n\r\n if (this.token === null) {\r\n this.setAuthenticated(false);\r\n this.setCheckingSession({status: false});\r\n resolver();\r\n return;\r\n }\r\n\r\n const valid = await ApiService.ValidateSession();\r\n\r\n // Token not valid, attempt to refresh.\r\n if (!valid) {\r\n const result = await ApiService.RefreshSession(this.token);\r\n\r\n // Refresh failed, user is no longer authenticated\r\n if (result.errors && result.errors.errors.length > 0) {\r\n this.setAuthenticated(false);\r\n this.clearToken();\r\n\r\n if (result.errors.type === ErrorResponseType.Fatal) {\r\n store.dispatch('setFatalError', result.errors.errors[0]);\r\n } else {\r\n this.setErrors([{message: 'Your session has expired, please log back in'}]);\r\n }\r\n } else {\r\n this.setToken({token: result.token!, refreshToken: result.refreshToken!});\r\n this.setAuthenticated(true);\r\n this.setErrors([]);\r\n }\r\n } else { // Token valid, set authenticated state and continue\r\n this.setAuthenticated(true);\r\n }\r\n resolver();\r\n this.setCheckingSession({status: false});\r\n }\r\n\r\n @Action\r\n public async Logout(router: any) {\r\n if ( router.history.current.path !== '/') {\r\n await router.push('/');\r\n }\r\n this.clearToken();\r\n this.setAuthenticated(false);\r\n // HDB replaced go with push (5/22/23)\r\n await router.push('/login');\r\n }\r\n\r\n @Action({rawError: true})\r\n public async Login({username, password}: {username: string, password: string}) {\r\n const result = await ApiService.Login(username, password);\r\n\r\n if (result.token && result.refreshToken) {\r\n this.context.commit('setToken', {token: result.token, refreshToken: result.refreshToken});\r\n\r\n this.context.commit('setAuthenticated', true);\r\n this.setErrors([]);\r\n return true;\r\n } else {\r\n if ( result.errors) {\r\n this.setErrors(result.errors.errors);\r\n this.setFieldErrors(result.errors.fieldErrors);\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n @Action({rawError: true})\r\n public async Register(model: AccountRegistrationRequest) {\r\n const result = await ApiService.Register(model);\r\n\r\n if (!result.errors) {\r\n this.setErrors([]);\r\n return true;\r\n } else {\r\n if (result.errors) {\r\n this.setErrors(result.errors.errors);\r\n this.setFieldErrors(result.errors.fieldErrors);\r\n }\r\n return false;\r\n }\r\n }\r\n\r\n @Action({rawError: true})\r\n public async CreateUser(model: CreateUserRequest) {\r\n const result = await ApiService.CreateUser(model);\r\n\r\n if (!result.errors) {\r\n this.setErrors([]);\r\n return true;\r\n } else {\r\n if (result.errors) {\r\n this.setErrors(result.errors.errors);\r\n this.setFieldErrors(result.errors.fieldErrors);\r\n }\r\n return false;\r\n }\r\n }\r\n\r\n @Action({rawError: true})\r\n public async EditUser(model: CreateUserRequest) {\r\n const result = await ApiService.EditUser(model);\r\n\r\n if (!result.errors) {\r\n this.setErrors([]);\r\n return true;\r\n } else {\r\n if (result.errors) {\r\n this.setErrors(result.errors.errors);\r\n this.setFieldErrors(result.errors.fieldErrors);\r\n }\r\n return false;\r\n }\r\n }\r\n\r\n @Action({rawError: true})\r\n public async SendEmailVerification({email}: {email: string}) {\r\n const result = await ApiService.SendEmailVerification(email);\r\n\r\n if (!result.errors) {\r\n this.setErrors([]);\r\n return true;\r\n } else {\r\n if (result.errors) {\r\n this.setErrors(result.errors.errors.concat(this.errors));\r\n this.setFieldErrors(result.errors.fieldErrors);\r\n }\r\n return false;\r\n }\r\n }\r\n\r\n @Action({rawError: true})\r\n public async ReSendEmailVerification({email}: {email: string}) {\r\n const result = await ApiService.ReSendEmailVerification(email);\r\n\r\n if (!result.errors) {\r\n this.setErrors([]);\r\n return true;\r\n } else {\r\n if (result.errors) {\r\n this.setErrors(result.errors.errors.concat(this.errors));\r\n this.setFieldErrors(result.errors.fieldErrors);\r\n }\r\n return false;\r\n }\r\n }\r\n\r\n @Action({rawError: true})\r\n public async sendAssessment({username, email, assessment, score, percent, bonus, answers}:\r\n {username: string, email: string, assessment: string, score: string, percent: string, bonus: string, answers: string}) {\r\n const result = await ApiService.SendAssessment(username, email, assessment, score, percent, bonus, answers);\r\n\r\n if (!result.errors) {\r\n this.setErrors([]);\r\n return true;\r\n } else {\r\n if (result.errors) {\r\n this.setErrors(result.errors.errors.concat(this.errors));\r\n this.setFieldErrors(result.errors.fieldErrors);\r\n }\r\n return false;\r\n }\r\n }\r\n\r\n @Action({rawError: true})\r\n public async RequestPasswordReset(email: string) {\r\n const result = await ApiService.RequestPasswordReset(email);\r\n\r\n if (!result.errors) {\r\n this.setErrors([]);\r\n return true;\r\n } else {\r\n if (result.errors) {\r\n this.setErrors(result.errors.errors.concat(this.errors));\r\n this.setFieldErrors(result.errors.fieldErrors);\r\n }\r\n return false;\r\n }\r\n }\r\n\r\n @Action({rawError: true})\r\n public async SendDowngradeUserEmail({email, sublevel}: {email: string, sublevel: string}) {\r\n const result = await ApiService.SendDowngradeUserEmail(email, sublevel);\r\n\r\n if (!result.errors) {\r\n this.setErrors([]);\r\n return true;\r\n } else {\r\n if (result.errors) {\r\n this.setErrors(result.errors.errors.concat(this.errors));\r\n this.setFieldErrors(result.errors.fieldErrors);\r\n }\r\n return false;\r\n }\r\n }\r\n\r\n @Action\r\n public async ResetPassword({userId, token, newPassword}: {userId: string, token: string, newPassword: string}) {\r\n const result = await ApiService.ResetPassword(userId, token, newPassword);\r\n\r\n if (!result.errors) {\r\n this.setErrors([]);\r\n return true;\r\n } else {\r\n if (result.errors) {\r\n this.setErrors(result.errors.errors.concat(this.errors));\r\n this.setFieldErrors(result.errors.fieldErrors);\r\n }\r\n return false;\r\n }\r\n }\r\n\r\n @Action\r\n public async SetPassword({userId, password}: {userId: string, password: string}) {\r\n const result = await ApiService.SetPassword(userId, password);\r\n\r\n if (!result.errors) {\r\n this.setErrors([]);\r\n return true;\r\n } else {\r\n if (result.errors) {\r\n this.setErrors(result.errors.errors.concat(this.errors));\r\n this.setFieldErrors(result.errors.fieldErrors);\r\n }\r\n return false;\r\n }\r\n }\r\n\r\n @Action\r\n public async ConfirmEmail({userId, token}: {userId: string, token: string}) {\r\n const result = await ApiService.ConfirmEmail(userId, token);\r\n\r\n if (!result.errors) {\r\n this.setErrors([]);\r\n return true;\r\n } else {\r\n if (result.errors) {\r\n this.setErrors(result.errors.errors.concat(this.errors));\r\n this.setFieldErrors(result.errors.fieldErrors);\r\n }\r\n return false;\r\n }\r\n }\r\n}\r\n","import ApiRoutes from '@/_common/ApiRoutes';\r\nimport { Module, VuexModule, Mutation, Action, MutationAction } from 'vuex-module-decorators';\r\nimport { Tag } from '@/models/entities';\r\nimport ApiService from '@/utility/ApiService';\r\n\r\nimport store from '@/store/store';\r\nimport { arrayPropsToHashByProp, arrayPropsToHashByPropAction } from '@/utility/Utilities';\r\nimport { ApiHelpers } from '@/_helpers';\r\nimport { TagsAggregateChangeRequest } from '@/models/requests';\r\n\r\n@Module({ namespaced: true, name: 'Tags', dynamic: true, store: store })\r\nexport default class TagsStore extends VuexModule {\r\n private _tags: Record = {};\r\n private _tagNamesLookup: Record = {};\r\n private _tagUsageCounts: Record = {};\r\n\r\n\r\n get tagNamesLookup(): Record {\r\n return this._tagNamesLookup;\r\n }\r\n\r\n get tagUsageCounts(): Record {\r\n return this._tagUsageCounts;\r\n }\r\n\r\n get Tags(): Tag[] {\r\n return Object.values(this._tags);\r\n }\r\n\r\n get tag(): (id: string) => Tag {\r\n return (id: string) => {\r\n return this._tags[id];\r\n };\r\n }\r\n\r\n /*@Mutation\r\n public setTags(tags: Record) {\r\n this.tags = tags;\r\n }*/\r\n\r\n @Mutation\r\n public setTagNamesLookup(values: Record) {\r\n this._tagNamesLookup = values;\r\n }\r\n\r\n @Mutation\r\n public setTagUsageCounts(values: Record) {\r\n this._tagUsageCounts = values;\r\n }\r\n\r\n @Mutation\r\n public setTags(tags: Tag[]) {\r\n const tagsObj: Record = {};\r\n tags.forEach((tag) => {\r\n tagsObj[tag.id] = tag;\r\n });\r\n\r\n this._tags = tagsObj;\r\n }\r\n\r\n @Action\r\n public SetTagUsageCounts(values: Record) {\r\n this._tagUsageCounts = values;\r\n }\r\n\r\n @Action\r\n public async fetchAll(withCounts: boolean = false) {\r\n return await ApiHelpers.wrapCallAndSetValue(\r\n async () => await ApiService.Get(ApiRoutes.Admin.Tags.GetAllQuery(withCounts)),\r\n\r\n (values) => {\r\n this.setTags(values);\r\n this.setTagUsageCounts(arrayPropsToHashByProp(values, 'id', 'count'));\r\n this.setTagNamesLookup(arrayPropsToHashByPropAction(values, 'name', 'name', (name: string) => name.toLowerCase()));\r\n }\r\n );\r\n }\r\n\r\n @Action\r\n public async SubmitAggregateChanges(changes: TagsAggregateChangeRequest) {\r\n return await ApiHelpers.wrapCall(\r\n async () => await ApiService.Post(ApiRoutes.Admin.Tags.SubmitAggregateChanges, changes)\r\n );\r\n }\r\n\r\n /*@Action\r\n public async EditTags(tags: Tag[]) {\r\n return await ApiHelpers.wrapCall(\r\n async () => await ApiService.Post(ApiRoutes.Admin.Tags.EditMany, tags)\r\n );\r\n }\r\n\r\n @Action\r\n public async DeleteTags(tags: Tag[]) {\r\n return await ApiHelpers.wrapCall(\r\n async () => await ApiService.Post(ApiRoutes.Admin.Tags.DeleteMany, tags)\r\n );\r\n }*/\r\n}\r\n","import Vue from 'vue';\r\nimport ApiRoutes from '@/_common/ApiRoutes';\r\nimport { Module, VuexModule, Mutation, Action, MutationAction } from 'vuex-module-decorators';\r\n\r\nimport { CreateEditFileRequest, JwtValues } from '@/models';\r\nimport ApiService from '@/utility/ApiService';\r\nimport { ApiResponse } from '@/models/responses';\r\n\r\nimport store from '@/store/store';\r\nimport { SimpleFile, FileResponse, FileEditResponse, FilePagination} from '@/models/entities';\r\nimport { parseVersions, ApiHelpers } from '@/_helpers';\r\nimport { CreateEditFileModel } from '@/models/entities/file';\r\n\r\n@Module({ namespaced: true, name: 'Files', dynamic: true, store: store })\r\nexport default class FilesStore extends VuexModule {\r\n\r\n private _filesList: SimpleFile[] = [];\r\n private _files: Record = {};\r\n\r\n get file() {\r\n return (fileId: string) => {\r\n return this._files[fileId];\r\n };\r\n }\r\n\r\n get files() {\r\n return Object.values(this._files);\r\n }\r\n\r\n get filesList() {\r\n return this._filesList;\r\n }\r\n\r\n @Mutation\r\n private setList(items: SimpleFile[]) {\r\n this._filesList = items;\r\n }\r\n\r\n @Mutation\r\n private setFiles(files: FileResponse[]) {\r\n files.forEach((item) => {\r\n Vue.set(this._files, item.id, item);\r\n });\r\n }\r\n\r\n @Mutation\r\n private setFile(file: FileResponse) {\r\n Vue.set(this._files, file.id, file);\r\n }\r\n\r\n @Mutation\r\n private removeFile(fileId: string) {\r\n Vue.delete(this._files, fileId);\r\n const index = this._filesList.findIndex((x) => x.id === fileId);\r\n if (index !== -1) {\r\n Vue.delete(this._filesList, index);\r\n }\r\n }\r\n\r\n @Action\r\n public async CreateFile(newFile: CreateEditFileRequest): Promise> {\r\n\r\n return await ApiHelpers.wrapCall(\r\n async () => await ApiService.Post(ApiRoutes.Admin.Files.CreateFile, newFile)\r\n );\r\n // ToDo: Add File entity and set that if success\r\n }\r\n\r\n @Action({rawError: true})\r\n public async EditFile(file: CreateEditFileRequest): Promise {\r\n if (!file.id) {\r\n throw Error('Cannot edit file because the file model has no Id');\r\n }\r\n\r\n return ApiHelpers.wrapCallAndSetValue(\r\n async () => await ApiService.Post(ApiRoutes.Admin.Files.EditFile(file.id), file),\r\n (value) => {\r\n this.setFile(value);\r\n }\r\n );\r\n }\r\n\r\n @Action\r\n public async DeleteFile(fileId: string) {\r\n if (!fileId) {\r\n throw Error('Cannot delete file because the package model has no Id');\r\n }\r\n\r\n return await ApiHelpers.wrapCallAndPerformAction(\r\n async () => await ApiService.Delete(ApiRoutes.Admin.Files.DeleteFile(fileId)),\r\n () => {\r\n this.removeFile(fileId);\r\n }\r\n );\r\n }\r\n\r\n @Action\r\n public async fetchFile(fileId: string) {\r\n return await ApiHelpers.wrapCallAndSetValue(\r\n async () => await ApiService.Get(ApiRoutes.Admin.Files.GetById(fileId)) ,\r\n (value) => this.setFile(value)\r\n );\r\n }\r\n\r\n @Action\r\n public async fetchFileEditData(fileId: string) {\r\n return await ApiHelpers.wrapCallAndSetValue(\r\n async () => await ApiService.Get(ApiRoutes.Admin.Files.GetEditDataById(fileId)) ,\r\n (value) => {\r\n const editModel = new CreateEditFileModel();\r\n editModel.FromResponse(value);\r\n }\r\n );\r\n }\r\n\r\n @Action\r\n public async fetchFiles() {\r\n return await ApiHelpers.wrapCallAndSetValue(\r\n async () => await ApiService.Get(ApiRoutes.Admin.Files.GetAll) ,\r\n (values) => {\r\n parseVersions(values);\r\n this.setFiles(values);\r\n }\r\n );\r\n }\r\n\r\n @Action // Fetches a list of SimpleFile[] from the server\r\n public async fetchList() {\r\n return await ApiHelpers.wrapCallAndSetValue(\r\n async () => await ApiService.Get(ApiRoutes.Admin.Files.GetList) ,\r\n (values) => {\r\n parseVersions(values);\r\n this.setList(values);\r\n }\r\n );\r\n }\r\n}\r\n\r\n","import Vue from 'vue';\r\nimport axios from 'axios';\r\nimport ApiRoutes from '@/_common/ApiRoutes';\r\nimport { Module, VuexModule, Mutation, Action, MutationAction } from 'vuex-module-decorators';\r\n\r\nimport ApiService from '@/utility/ApiService';\r\nimport { ApiResponse } from '@/models/responses';\r\n\r\nimport store from '@/store/store';\r\nimport { CreatePackageRequest, SimplePackage, PackageResponse, Version } from '@/models/entities';\r\nimport { parseVersion, parseVersions, ApiHelpers } from '@/_helpers';\r\n\r\n@Module({ namespaced: true, name: 'Packages', dynamic: true, store: store })\r\nexport default class PackagesStore extends VuexModule {\r\n\r\n private packagesList: SimplePackage[] = [];\r\n private packages: Record = {};\r\n\r\n get Package() {\r\n return (packageId: string) => {\r\n return this.packages[packageId];\r\n };\r\n }\r\n\r\n get Packages() {\r\n return Object.values(this.packages);\r\n }\r\n\r\n get PackagesList() {\r\n return this.packagesList;\r\n }\r\n\r\n @Mutation\r\n private SetList(items: SimplePackage[]) {\r\n this.packagesList = items;\r\n }\r\n\r\n @Mutation\r\n private SetPackages(files: PackageResponse[]) {\r\n files.forEach((item) => {\r\n Vue.set(this.packages, item.id, item);\r\n });\r\n }\r\n\r\n @Mutation\r\n private SetPackage(file: PackageResponse) {\r\n Vue.set(this.packages, file.id, file);\r\n }\r\n\r\n @Mutation\r\n private RemovePackage(packageId: string) {\r\n Vue.delete(this.packages, packageId);\r\n const index = this.packagesList.findIndex((x) => x.id === packageId);\r\n if (index !== -1) {\r\n Vue.delete(this.packagesList, index);\r\n }\r\n }\r\n\r\n\r\n @Action\r\n public async CreatePackage(newPackage: CreatePackageRequest): Promise> {\r\n return await ApiHelpers.wrapCall(\r\n async () => await ApiService.Post(ApiRoutes.Admin.Packages.CreatePackage, newPackage)\r\n );\r\n }\r\n\r\n @Action\r\n public async EditPackage(packageModel: CreatePackageRequest): Promise> {\r\n if (!packageModel.id) {\r\n throw Error('Cannot edit package because the package model has no Id');\r\n }\r\n\r\n return await ApiHelpers.wrapCall(\r\n async () => await ApiService.Post(ApiRoutes.Admin.Packages.EditPackage(packageModel.id), packageModel)\r\n );\r\n }\r\n\r\n @Action\r\n public async DeletePackage(packageId: string) {\r\n if (!packageId) {\r\n throw Error('Cannot delete package because the package model has no Id');\r\n }\r\n\r\n return await ApiHelpers.wrapCallAndPerformAction(\r\n async () => await ApiService.Delete(ApiRoutes.Admin.Packages.Delete(packageId)),\r\n () => {\r\n this.RemovePackage(packageId);\r\n }\r\n );\r\n }\r\n\r\n @Action // Fetches a single PackageResponse from the server\r\n public async fetchPackage(packageId: string) {\r\n return await ApiHelpers.wrapCallAndSetValue(\r\n async () => await ApiService.Get(ApiRoutes.Admin.Packages.GetById(packageId)) ,\r\n (value) => {\r\n parseVersion(value);\r\n this.SetPackage(value);\r\n }\r\n );\r\n }\r\n\r\n @Action\r\n public async fetchPackages() {\r\n return await ApiHelpers.wrapCallAndSetValue(\r\n async () => await ApiService.Get(ApiRoutes.Admin.Packages.GetAll) ,\r\n (values) => {\r\n parseVersions(values);\r\n this.SetPackages(values);\r\n }\r\n );\r\n }\r\n\r\n @Action // Fetches a list of SimplePackage[] from the server\r\n public async fetchList() {\r\n return await ApiHelpers.wrapCallAndSetValue(\r\n async () => await ApiService.Get(ApiRoutes.Admin.Packages.GetList) ,\r\n (values) => {\r\n parseVersions(values);\r\n this.SetList(values);\r\n }\r\n );\r\n }\r\n}\r\n","import Vue from 'vue';\r\nimport axios from 'axios';\r\nimport ApiRoutes from '@/_common/ApiRoutes';\r\nimport { Module, VuexModule, Mutation, Action, MutationAction } from 'vuex-module-decorators';\r\nimport { StandardBody, Standard } from '@/models/entities';\r\nimport ApiService from '@/utility/ApiService';\r\n\r\nimport store from '@/store/store';\r\nimport { ApiHelpers } from '@/_helpers';\r\nimport { arrayToHashByProp, arrayPropsToHashByProp } from '@/utility/Utilities';\r\n\r\n@Module({ namespaced: true, name: 'Standards', dynamic: true, store: store })\r\nexport default class StandardsStore extends VuexModule {\r\n private standards: Record = {};\r\n private standardsNamesLookup: Record = {};\r\n private standardBodies: Record = {};\r\n\r\n get StandardsArray(): Standard[] {\r\n return Object.values(this.standards);\r\n }\r\n\r\n get KeyedStandards(): Record {\r\n return this.standards;\r\n }\r\n\r\n get StandardsNamesLookup(): Record {\r\n return this.standardsNamesLookup;\r\n }\r\n\r\n get Standard() {\r\n return (key: string): Standard => {\r\n return this.standards[key];\r\n };\r\n }\r\n\r\n get StandardBodiesArray(): StandardBody[] {\r\n return Object.values(this.standardBodies);\r\n }\r\n\r\n get KeyedStandardBodies(): Record {\r\n return this.standardBodies;\r\n }\r\n\r\n get StandardBody() {\r\n return (key: string): StandardBody => {\r\n return this.standardBodies[key];\r\n };\r\n }\r\n\r\n\r\n @Mutation\r\n private setStandardsDictionary(standards: Record) {\r\n this.standards = standards;\r\n }\r\n\r\n @Mutation\r\n private setManyStandards(standards: Standard[]) {\r\n for (let i = 0; i < standards.length; i++) {\r\n Vue.set(this.standards, standards[i].id, standards[i]);\r\n }\r\n this.standardsNamesLookup = arrayPropsToHashByProp(Object.values(this.standards), 'id', 'name');\r\n }\r\n\r\n @Mutation\r\n private setStandard(standard: Standard) {\r\n Vue.set(this.standards, standard.id, standard);\r\n this.standardsNamesLookup = arrayPropsToHashByProp(Object.values(this.standards), 'id', 'name');\r\n }\r\n\r\n @Mutation\r\n private removeStandard(standard: Standard) {\r\n Vue.delete(this.standards, standard.id);\r\n this.standardsNamesLookup = arrayPropsToHashByProp(Object.values(this.standards), 'id', 'name');\r\n }\r\n\r\n @Mutation\r\n private setStandardsNamesLookup(standardsNamesLookup: Record) {\r\n this.standardsNamesLookup = standardsNamesLookup;\r\n }\r\n\r\n @Mutation\r\n private setStandardBodiesDictionary(standardBodies: Record) {\r\n this.standardBodies = standardBodies;\r\n }\r\n\r\n @Mutation\r\n private setStandardBody(standardBody: StandardBody) {\r\n Vue.set(this.standardBodies, standardBody.id, standardBody);\r\n }\r\n\r\n @Mutation\r\n private removeStandardBody(standardBody: StandardBody) {\r\n Vue.delete(this.standardBodies, standardBody.id);\r\n }\r\n\r\n @Action({rawError: true})\r\n public async fetchStandards() {\r\n return await ApiHelpers.wrapCallAndSetValue(\r\n async () => await ApiService.Get(ApiRoutes.Admin.Standards.GetAll) ,\r\n (values) => {\r\n this.setStandardsDictionary(arrayToHashByProp(values, 'id'));\r\n this.setStandardsNamesLookup(arrayPropsToHashByProp(values, 'id', 'name'));\r\n }\r\n );\r\n }\r\n\r\n @Action({rawError: true})\r\n public async fetchManyStandards(ids: string[]) {\r\n return await ApiHelpers.wrapCallAndSetValue(\r\n async () => await ApiService.Post(ApiRoutes.Admin.Standards.GetMany, {ids: ids}) ,\r\n (values) => {\r\n this.setManyStandards(values);\r\n }\r\n );\r\n }\r\n\r\n @Action\r\n public async fetchStandard(id: string) {\r\n return await ApiHelpers.wrapCallAndSetValue(\r\n async () => await ApiService.Get(ApiRoutes.Admin.Standards.GetById(id)) ,\r\n (value) => {\r\n this.setStandard(value);\r\n }\r\n );\r\n }\r\n\r\n @Action\r\n public async fetchStandardBody(id: string) {\r\n return await ApiHelpers.wrapCallAndSetValue(\r\n async () => await ApiService.Get(ApiRoutes.Admin.StandardBodies.GetById(id)) ,\r\n (value) => {\r\n this.setStandardBody(value);\r\n }\r\n );\r\n }\r\n\r\n @Action({rawError: true})\r\n public async fetchStandardBodies() {\r\n return await ApiHelpers.wrapCallAndSetValue(\r\n async () => await ApiService.Get(ApiRoutes.Admin.StandardBodies.GetAll) ,\r\n (values) => {\r\n this.setStandardBodiesDictionary(arrayToHashByProp(values, 'id'));\r\n }\r\n );\r\n }\r\n\r\n @Action({rawError: true})\r\n public async addStandard(standard: Standard) {\r\n return await ApiHelpers.wrapCallAndSetValue(\r\n async () => await ApiService.Post(ApiRoutes.Admin.Standards.Add, standard) ,\r\n (value) => {\r\n this.setStandard(value);\r\n }\r\n );\r\n }\r\n\r\n @Action({rawError: true})\r\n public async updateStandard(standard: Standard) {\r\n if (!standard.id) {\r\n throw new Error('Standard Id must be set to persist changes');\r\n }\r\n return await ApiHelpers.wrapCallAndSetValue(\r\n async () => await ApiService.Post(ApiRoutes.Admin.Standards.Edit(standard.id), standard) ,\r\n (value) => {\r\n this.setStandard(value);\r\n }\r\n );\r\n }\r\n\r\n @Action({rawError: true})\r\n public async RemoveStandard(standard: Standard) {\r\n if (!standard.id) {\r\n throw new Error('Standard Id must be set to persist changes');\r\n }\r\n return await ApiHelpers.wrapCallAndPerformAction(\r\n async () => await ApiService.Delete(ApiRoutes.Admin.Standards.Delete(standard.id)) ,\r\n () => {\r\n this.removeStandard(standard);\r\n }\r\n );\r\n }\r\n\r\n @Action\r\n public async AddStandardBody(standardBody: StandardBody) {\r\n return await ApiHelpers.wrapCallAndSetValue(\r\n async () => await ApiService.Post(ApiRoutes.Admin.StandardBodies.Add, standardBody) ,\r\n (value) => {\r\n this.setStandardBody(value);\r\n }\r\n );\r\n }\r\n\r\n @Action\r\n public async UpdateStandardBody(standardBody: StandardBody) {\r\n if (!standardBody.id) {\r\n throw new Error('StandardBody Id must be set to persist changes');\r\n }\r\n return await ApiHelpers.wrapCallAndSetValue(\r\n async () => await ApiService.Post(ApiRoutes.Admin.StandardBodies.Edit(standardBody.id), standardBody) ,\r\n (value) => {\r\n this.setStandardBody(value);\r\n }\r\n );\r\n }\r\n\r\n @Action\r\n public async RemoveStandardBody(standardBody: StandardBody) {\r\n if (!standardBody.id) {\r\n throw new Error('StandardBody Id must be set to persist changes');\r\n }\r\n return await ApiHelpers.wrapCallAndPerformAction(\r\n async () => await ApiService.Delete(ApiRoutes.Admin.StandardBodies.Delete(standardBody.id)) ,\r\n () => {\r\n this.removeStandardBody(standardBody);\r\n }\r\n );\r\n }\r\n}\r\n","import Vue from 'vue';\r\nimport axios from 'axios';\r\nimport ApiRoutes from '@/_common/ApiRoutes';\r\nimport { Module, VuexModule, Mutation, Action, MutationAction} from 'vuex-module-decorators';\r\nimport { MbdGuideline, SimpleEntity, CreateEditGuidelineRequest } from '@/models/entities';\r\nimport ApiService from '@/utility/ApiService';\r\n\r\nimport store from '@/store/store';\r\nimport { ApiHelpers } from '@/_helpers';\r\nimport { arrayToHashByProp } from '@/utility/Utilities';\r\nimport { ApiResponse, CadSystemInstruction } from '@/models';\r\nimport { AggregateChangeRequest } from '@/models/requests';\r\n\r\n@Module({ namespaced: true, name: 'MbdGuidelines', dynamic: true, store: store })\r\nexport default class MbdGuidelinesStore extends VuexModule {\r\n private guidelines: Record = {};\r\n private categories: Record = {};\r\n\r\n get GuidelinesArray(): MbdGuideline[] {\r\n return Object.values(this.guidelines);\r\n }\r\n\r\n get KeyedGuidelines(): Record {\r\n return this.guidelines;\r\n }\r\n\r\n get Guideline() {\r\n return (key: string): MbdGuideline => {\r\n return this.guidelines[key];\r\n };\r\n }\r\n\r\n get CategoriesArray(): SimpleEntity[] {\r\n return Object.values(this.categories);\r\n }\r\n\r\n get KeyedCategories(): Record {\r\n return this.categories;\r\n }\r\n\r\n get Category() {\r\n return (key: string): SimpleEntity => {\r\n return this.categories[key];\r\n };\r\n }\r\n\r\n /*get InstructionsArray(): CadSystemInstructions[] {\r\n return Object.values(this.instructions);\r\n }\r\n\r\n get KeyedInstructions(): Record {\r\n return this.instructions;\r\n }\r\n\r\n get Instruction() {\r\n return (key: string): CadSystemInstructions => {\r\n return this.instructions[key];\r\n };\r\n }*/\r\n\r\n\r\n @Mutation\r\n private setGuidelines(guidelines: Record) {\r\n this.guidelines = guidelines;\r\n }\r\n\r\n @Mutation\r\n private setGuidelineInstructions(instructions: CadSystemInstruction[], guidelineId: string) {\r\n if (this.guidelines[guidelineId] === undefined) {\r\n throw new Error('Cannot set instructions for Guideline ' + guidelineId + ' Guideline not in store');\r\n }\r\n this.guidelines[guidelineId].instructions = instructions;\r\n }\r\n\r\n @Mutation\r\n private setGuideline(guideline: MbdGuideline) {\r\n this.guidelines[guideline.id] = guideline;\r\n }\r\n\r\n @Mutation\r\n private setCategories(categories: Record) {\r\n this.categories = categories;\r\n }\r\n\r\n @Mutation\r\n private setInstruction(guideline: MbdGuideline) {\r\n this.guidelines[guideline.id] = guideline;\r\n }\r\n\r\n @Mutation\r\n private removeGuideline(guideline: MbdGuideline) {\r\n Vue.delete(this.guidelines, guideline.id);\r\n }\r\n\r\n @Action\r\n public async fetchGuideline(id: string) {\r\n return await ApiHelpers.wrapCallAndSetValue(\r\n async () => await ApiService.Get(ApiRoutes.Admin.MbdGuideline.GetById(id)) ,\r\n (value) => {\r\n this.setGuideline(value);\r\n }\r\n );\r\n }\r\n\r\n @Action\r\n public async fetchGuidelines() {\r\n return await ApiHelpers.wrapCallAndSetValue(\r\n async () => await ApiService.Get(ApiRoutes.User.MbdGuideline.GetAllGuidelines) ,\r\n (values) => {\r\n this.setGuidelines(arrayToHashByProp(values, 'id'));\r\n }\r\n );\r\n }\r\n\r\n @Action\r\n public async fetchInstructionsForGuideline(guidelineId: string) {\r\n return await ApiHelpers.wrapCallAndSetValue(\r\n async () => await ApiService.Get(ApiRoutes.Admin.MbdGuideline.GetInstructionsByGuideline(guidelineId)) ,\r\n (values) => {\r\n this.setGuidelineInstructions(values, guidelineId);\r\n }\r\n );\r\n }\r\n /*@Action\r\n public async fetchGuidelineList() {\r\n return await ApiHelpers.wrapCallAndSetValue(\r\n async () => await ApiService.Get(ApiRoutes.Admin.MbdGuideline.GetList) ,\r\n (value) => {\r\n this.setGuideline(value);\r\n }\r\n );\r\n }*/\r\n\r\n @Action\r\n public async fetchCategories() {\r\n return await ApiHelpers.wrapCallAndSetValue(\r\n async () => await ApiService.Get(ApiRoutes.Admin.MbdGuideline.GetAllCategories) ,\r\n (values) => {\r\n this.setCategories(arrayToHashByProp(values, 'id'));\r\n }\r\n );\r\n }\r\n\r\n @Action\r\n public async createGuideline(newGuideline: CreateEditGuidelineRequest): Promise> {\r\n return await ApiHelpers.wrapCall(\r\n async () => await ApiService.Post(ApiRoutes.Admin.MbdGuideline.CreateGuideline, newGuideline)\r\n );\r\n }\r\n\r\n @Action\r\n public async editGuideline(guideline: CreateEditGuidelineRequest): Promise> {\r\n if (!guideline.id) {\r\n throw Error('Cannot edit guideline because the guideline model has no Id');\r\n }\r\n\r\n return await ApiHelpers.wrapCall(\r\n async () => await ApiService.Post(ApiRoutes.Admin.MbdGuideline.EditGuideline(guideline.id), guideline)\r\n );\r\n }\r\n\r\n @Action\r\n public async SubmitAggregateCategoryChanges(changes: AggregateChangeRequest): Promise> {\r\n return await ApiHelpers.wrapCall(\r\n async () => await ApiService.Post(ApiRoutes.Admin.MbdGuideline.SubmitAggregateChanges, changes)\r\n );\r\n }\r\n\r\n @Action\r\n public async RemoveGuideline(guideline: MbdGuideline) {\r\n if (!guideline.id) {\r\n throw new Error('Guideline Id must be set to persist changes');\r\n }\r\n return await ApiHelpers.wrapCallAndPerformAction(\r\n async () => await ApiService.Delete(ApiRoutes.Admin.MbdGuideline.Delete(guideline.id)) ,\r\n () => {\r\n this.removeGuideline(guideline);\r\n }\r\n );\r\n }\r\n}\r\n","import Vue from 'vue';\r\nimport ApiRoutes from '@/_common/ApiRoutes';\r\nimport { Module, VuexModule, Mutation, Action } from 'vuex-module-decorators';\r\n\r\nimport ApiService from '@/utility/ApiService';\r\n\r\nimport store from '@/store/store';\r\nimport { CourseResponse, CreateEditCourseRequest } from '@/models/entities';\r\nimport { ApiHelpers } from '@/_helpers';\r\n\r\n@Module({ namespaced: true, name: 'Courses', dynamic: true, store: store })\r\nexport default class CoursesStore extends VuexModule {\r\n\r\n private courses: Record = {};\r\n\r\n get Course() {\r\n return (courseId: string) => {\r\n return this.courses[courseId];\r\n };\r\n }\r\n\r\n get Courses() {\r\n return Object.values(this.courses);\r\n }\r\n\r\n @Mutation\r\n private setCourses(items: CourseResponse[]) {\r\n items.forEach((item) => {\r\n Vue.set(this.courses, item.id, item);\r\n });\r\n }\r\n\r\n @Mutation\r\n private setCourse(item: CourseResponse) {\r\n Vue.set(this.courses, item.id, item);\r\n }\r\n\r\n @Mutation\r\n private removeCourse(id: string) {\r\n Vue.delete(this.courses, id);\r\n }\r\n\r\n\r\n @Action({rawError: true})\r\n public async CreateCourse(newCourse: CreateEditCourseRequest) {\r\n return await ApiHelpers.wrapCallAndSetValue(\r\n async () => await ApiService.Post(ApiRoutes.Admin.Course.Create, newCourse),\r\n (value) => {\r\n this.setCourse(value);\r\n }\r\n );\r\n }\r\n\r\n @Action({rawError: true})\r\n public async EditCourse(courseModel: CreateEditCourseRequest) {\r\n if (!courseModel.id) {\r\n throw Error('Cannot edit course because the course model has no Id');\r\n }\r\n\r\n return await ApiHelpers.wrapCallAndSetValue(\r\n async () => await ApiService.Post(ApiRoutes.Admin.Course.Edit(courseModel.id), courseModel),\r\n (value) => {\r\n this.setCourse(value);\r\n }\r\n );\r\n }\r\n\r\n @Action({rawError: true})\r\n public async RemoveCourse(course: CourseResponse) {\r\n return await ApiHelpers.wrapCallAndPerformAction(\r\n async () => await ApiService.Delete(ApiRoutes.Admin.Course.Delete(course.id)),\r\n () => {\r\n this.removeCourse(course.id);\r\n }\r\n );\r\n }\r\n\r\n @Action({rawError: true}) // Fetches a single PackageResponse from the server\r\n public async fetchCourse(courseId: string) {\r\n return await ApiHelpers.wrapCallAndSetValue(\r\n async () => await ApiService.Get(ApiRoutes.Admin.Course.GetById(courseId)) ,\r\n (value) => {\r\n this.setCourse(value);\r\n }\r\n );\r\n }\r\n\r\n @Action({rawError: true})\r\n public async fetchCourses() {\r\n return await ApiHelpers.wrapCallAndSetValue(\r\n async () => await ApiService.Get(ApiRoutes.Admin.Course.GetAll) ,\r\n (values) => {\r\n this.setCourses(values);\r\n }\r\n );\r\n }\r\n}\r\n","import Vue from 'vue';\r\nimport axios from 'axios';\r\nimport ApiRoutes from '@/_common/ApiRoutes';\r\nimport { Module, VuexModule, Mutation, Action, MutationAction } from 'vuex-module-decorators';\r\nimport { StandardBody, Standard, FileSystemItem } from '@/models/entities';\r\nimport ApiService from '@/utility/ApiService';\r\n\r\nimport store from '@/store/store';\r\nimport { ApiHelpers } from '@/_helpers';\r\nimport { arrayToHashByProp, arrayPropsToHashByProp, generateId } from '@/utility/Utilities';\r\nimport { Folder } from '@/models/entities/fileSystem/folder';\r\nimport { ItemListEditBase } from '@/app.admin/components';\r\n\r\n@Module({ namespaced: true, name: 'FileSystem', dynamic: true, store: store })\r\nexport default class FileSystemStore extends VuexModule {\r\n private fileSystem: FileSystemItem[] = [];\r\n private folderOnlyFileSystem: FileSystemItem[] = [];\r\n private flattenedFileSystem: Record = {}; // Used to find specific items by key (path)\r\n\r\n get FileSystem() {\r\n return this.fileSystem;\r\n }\r\n\r\n get RootFolders() {\r\n return Object.values(this.fileSystem);\r\n }\r\n\r\n get FolderOnlyRoot() {\r\n return this.folderOnlyFileSystem;\r\n }\r\n\r\n\r\n @Mutation\r\n private setRootFolders(items: FileSystemItem[]) {\r\n this.fileSystem = items;\r\n }\r\n\r\n @Mutation\r\n private setKeyedItems(items: Record) {\r\n Object.keys(items).forEach((key) => {\r\n Vue.set(this.flattenedFileSystem, key, items[key]);\r\n });\r\n }\r\n\r\n @Mutation\r\n private setFolderChildren(data: {folder: FileSystemItem, children?: FileSystemItem[]}) {\r\n data.folder.children = data.children;\r\n }\r\n\r\n @Mutation\r\n private setRootFolderOnlyFolders(items: FileSystemItem[]) {\r\n this.folderOnlyFileSystem = items;\r\n }\r\n\r\n @Mutation\r\n private addDirectoryToFolder(data: {parent: FileSystemItem, child: FileSystemItem}) {\r\n Vue.set(data.parent.children!, data.parent.children!.length, data.child);\r\n }\r\n\r\n @Mutation\r\n private setItemName(data: { item: FileSystemItem, name: string}) {\r\n data.item.name = data.name;\r\n }\r\n\r\n @Mutation\r\n private moveItem(data: { item: FileSystemItem, destination: FileSystemItem}) {\r\n if (data.item.parent) {\r\n const parentChildIndex = data.item.parent.children!.findIndex((x) => x.path === data.item.path);\r\n if (parentChildIndex === -1) {\r\n throw new Error('Invalid State: Item does not exist in parents children');\r\n }\r\n data.item.parent.children!.splice(parentChildIndex, 1);\r\n data.destination.children!.push(data.item);\r\n } else {\r\n const parentChildIndex = this.fileSystem!.findIndex((x) => x.path === data.item.path);\r\n if (parentChildIndex === -1) {\r\n throw new Error('Invalid State: Item does not exist in parents children');\r\n }\r\n this.fileSystem.splice(parentChildIndex, 1);\r\n data.destination.children!.push(data.item);\r\n }\r\n }\r\n\r\n @Mutation\r\n private addRootDirectory(dir: FileSystemItem) {\r\n Vue.set(this.fileSystem, dir.id, dir);\r\n Vue.set(this.folderOnlyFileSystem, this.folderOnlyFileSystem.length, dir);\r\n }\r\n\r\n @Action\r\n public async fetchRootFolders() {\r\n return await ApiHelpers.wrapCallAndSetValue(\r\n async () => await ApiService.Get(ApiRoutes.Admin.FileSystem.GetRoot) ,\r\n (values) => {\r\n this.setKeyedItems(arrayToHashByProp(values, 'path'));\r\n this.setRootFolders(values);\r\n this.setRootFolderOnlyFolders(values.filter((x) => x.type === 'folder'));\r\n }\r\n );\r\n }\r\n\r\n @Action({rawError: true})\r\n public async fetchFolder(folder: FileSystemItem) {\r\n return await ApiHelpers.wrapCallAndSetValue(\r\n async () => await ApiService.Get(ApiRoutes.Admin.FileSystem.GetFolder(folder.id)),\r\n (value) => {\r\n value.children?.forEach((item) => item.parent = folder);\r\n if (value.children) {\r\n this.setKeyedItems(arrayToHashByProp(value.children, 'path'));\r\n }\r\n\r\n this.setFolderChildren({folder: folder, children: value.children});\r\n }\r\n );\r\n }\r\n\r\n @Action({rawError: true})\r\n public async fetchFolderOnlyFolder(folder: FileSystemItem) {\r\n return await ApiHelpers.wrapCallAndSetValue(\r\n async () => await ApiService.Get(ApiRoutes.Admin.FileSystem.GetFolderFolders(folder.id)),\r\n (value) => {\r\n value.children?.forEach((item) => item.parent = folder);\r\n this.setFolderChildren({folder: folder, children: value.children});\r\n }\r\n );\r\n }\r\n\r\n @Action\r\n public async RenameFolder(data: {folder: FileSystemItem, name: string}) {\r\n const requestData = {id: data.folder.id, name: data.name};\r\n\r\n return await ApiHelpers.wrapCallAndSetValue(\r\n async () => await ApiService.Post(ApiRoutes.Admin.FileSystem.RenameFolder(data.folder.id), requestData),\r\n (value) => {\r\n value.children?.forEach((item) => item.parent = data.folder);\r\n if (value.children) {\r\n this.setKeyedItems(arrayToHashByProp(value.children, 'path'));\r\n }\r\n this.setItemName({item: data.folder, name: value.name});\r\n this.setFolderChildren({folder: data.folder, children: value.children});\r\n }\r\n );\r\n }\r\n\r\n\r\n @Action({rawError: true})\r\n public async RenameFile(data: {file: FileSystemItem, name: string}) {\r\n const requestData = {id: data.file.id, name: data.name};\r\n\r\n return await ApiHelpers.wrapCallAndPerformAction(\r\n async () => await ApiService.Post(ApiRoutes.Admin.Files.RenameFile(data.file.id), requestData),\r\n () => {\r\n this.setItemName({item: data.file, name: data.name});\r\n }\r\n );\r\n }\r\n\r\n @Action({rawError: true}) // TODO: handle moving to root\r\n public async MoveFile(data: {item: FileSystemItem, destination: FileSystemItem}) {\r\n const requestData = {id: data.item.id, destinationId: data.destination.id};\r\n\r\n return await ApiHelpers.wrapCallAndPerformAsyncAction(\r\n async () => await ApiService.Post(ApiRoutes.Admin.Files.MoveFile(data.item.id), requestData),\r\n async () => {\r\n // Reload state of new parentFolder, and previous folder to keep client state synced\r\n await this.fetchFolder(data.destination);\r\n if (data.item.parent) {\r\n await this.fetchFolder(data.item.parent);\r\n } else {\r\n await this.fetchRootFolders();\r\n }\r\n }\r\n );\r\n }\r\n\r\n @Action({rawError: true}) // TODO: handle moving to root\r\n public async MoveFolder(data: {item: FileSystemItem, destination: FileSystemItem}) {\r\n const requestData = {id: data.item.id, destinationId: data.destination.id};\r\n\r\n return await ApiHelpers.wrapCallAndPerformAsyncAction(\r\n async () => await ApiService.Post(ApiRoutes.Admin.FileSystem.MoveFolder(data.item.id), requestData),\r\n async () => {\r\n // Reload state of new parentFolder, and previous folder to keep client state synced\r\n await this.fetchFolder(data.destination);\r\n if (data.item.parent) {\r\n await this.fetchFolder(data.item.parent);\r\n } else {\r\n await this.fetchRootFolders();\r\n }\r\n }\r\n );\r\n }\r\n\r\n @Action({rawError: true})\r\n public async AddDirectory(data: {parent: FileSystemItem, name: string}) {\r\n const requestData = {parentFolderId: data.parent.id, name: data.name};\r\n\r\n return await ApiHelpers.wrapCallAndSetValue(\r\n async () => await ApiService.Post(ApiRoutes.Admin.FileSystem.CreateFolder(data.parent.id), requestData),\r\n (value) => {\r\n this.addDirectoryToFolder({\r\n parent: data.parent,\r\n child: value\r\n });\r\n }\r\n );\r\n }\r\n\r\n @Action({rawError: true})\r\n public async AddRootDirectory(name: string) {\r\n const requestData = {parentFolderId: null, name: name};\r\n\r\n return await ApiHelpers.wrapCallAndSetValue(\r\n async () => await ApiService.Post(ApiRoutes.Admin.FileSystem.CreateRootFolder, requestData),\r\n (value) => {\r\n this.addRootDirectory(value);\r\n }\r\n );\r\n }\r\n}\r\n","import Vue from 'vue';\r\nimport ApiRoutes from '@/_common/ApiRoutes';\r\nimport { Module, VuexModule, Mutation, Action, getModule } from 'vuex-module-decorators';\r\n\r\nimport {FilesStore, PackagesStore, CoursesStore, MbdGuidelinesStore} from '.';\r\nimport { SearchStore } from '@/store/modules';\r\nimport store from '@/store/store';\r\nimport { SimpleFile, FileResponse, PackageResponse, SimplePackage, CourseResponse, MbdGuideline } from '@/models/entities';\r\nimport { parseVersions, filterEntities } from '@/_helpers';\r\nimport { EntityFilterParams } from '@/models/interfaces';\r\n\r\nconst searchStore = getModule(SearchStore);\r\nconst filesStore = getModule(FilesStore);\r\nconst packagesStore = getModule(PackagesStore);\r\nconst coursesStore = getModule(CoursesStore);\r\nconst guidelinesStore = getModule(MbdGuidelinesStore);\r\n\r\n@Module({ namespaced: true, name: 'FilteredData', dynamic: true, store: store })\r\nexport default class FilteredDataStore extends VuexModule {\r\n\r\n\r\n //#region Files\r\n\r\n public _filteredFiles: FileResponse[] = [];\r\n public _filteredSimpleFiles: SimpleFile[] = [];\r\n\r\n get filteredFiles() {\r\n return this._filteredFiles;\r\n }\r\n\r\n get filteredSimpleFiles() {\r\n return this._filteredSimpleFiles;\r\n }\r\n\r\n @Mutation\r\n private setFilteredFiles(files: FileResponse[]) {\r\n this._filteredFiles = files;\r\n }\r\n\r\n @Mutation\r\n private setFilteredSimpleFiles(files: SimpleFile[]) {\r\n this._filteredSimpleFiles = files;\r\n }\r\n\r\n\r\n @Action\r\n public async GetFilteredFiles() {\r\n if (!searchStore.search && searchStore.tagsFilter.length === 0 && searchStore.propertiesFilter.length === 0) {\r\n this.setFilteredFiles(filesStore.files);\r\n return filesStore.files;\r\n }\r\n\r\n const filterArgs = searchStore.entityFilterParams;\r\n filterArgs.items = filesStore.files;\r\n\r\n const filtered = filterEntities(filterArgs);\r\n\r\n this.setFilteredFiles(filtered);\r\n return filtered;\r\n }\r\n\r\n // @Action\r\n // public async GetFilteredSimpleFilesPaginated() {\r\n // if (!searchStore.search && searchStore.tagsFilter.length === 0) {\r\n // this.setFilteredSimpleFiles(filesStore.paginatedFiles);\r\n // return filesStore.filesList;\r\n // }\r\n\r\n // const filterArgs = searchStore.entityFilterParams;\r\n // filterArgs.items = filesStore.filesList;\r\n\r\n // const filtered = filterEntities(filterArgs);\r\n\r\n // this.setFilteredSimpleFiles(filtered);\r\n // return filtered;\r\n // }\r\n\r\n @Action\r\n public async GetFilteredSimpleFiles() {\r\n if (!searchStore.search && searchStore.tagsFilter.length === 0 && searchStore.propertiesFilter.length === 0) {\r\n this.setFilteredSimpleFiles(filesStore.filesList);\r\n return filesStore.filesList;\r\n }\r\n\r\n const filterArgs = searchStore.entityFilterParams;\r\n filterArgs.items = filesStore.filesList;\r\n\r\n const filtered = filterEntities(filterArgs);\r\n\r\n this.setFilteredSimpleFiles(filtered);\r\n return filtered;\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Packages\r\n\r\n public _filteredPackages: PackageResponse[] = [];\r\n public _filteredSimplePackages: SimplePackage[] = [];\r\n\r\n get filteredPackages() {\r\n return this._filteredPackages;\r\n }\r\n\r\n get filteredSimplePackages() {\r\n return this._filteredSimplePackages;\r\n }\r\n\r\n @Mutation\r\n private setFilteredPackages(files: PackageResponse[]) {\r\n this._filteredPackages = files;\r\n }\r\n\r\n @Mutation\r\n private setFilteredSimplePackages(files: SimplePackage[]) {\r\n this._filteredSimplePackages = files;\r\n }\r\n\r\n\r\n @Action\r\n public async GetFilteredPackages() {\r\n if (!searchStore.search && searchStore.tagsFilter.length === 0 && searchStore.propertiesFilter.length === 0) {\r\n this.setFilteredPackages(packagesStore.Packages);\r\n return packagesStore.Packages;\r\n }\r\n\r\n const filterArgs = searchStore.entityFilterParams;\r\n filterArgs.items = packagesStore.Packages;\r\n\r\n const filtered = filterEntities(filterArgs);\r\n\r\n this.setFilteredPackages(filtered);\r\n return filtered;\r\n }\r\n\r\n @Action\r\n public async GetFilteredSimplePackages() {\r\n if (!searchStore.search && searchStore.tagsFilter.length === 0 && searchStore.propertiesFilter.length === 0) {\r\n this.setFilteredSimplePackages(packagesStore.PackagesList);\r\n return packagesStore.PackagesList;\r\n }\r\n\r\n const filterArgs = searchStore.entityFilterParams;\r\n filterArgs.items = packagesStore.PackagesList;\r\n\r\n const filtered = filterEntities(filterArgs);\r\n\r\n this.setFilteredSimplePackages(filtered);\r\n return filtered;\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Courses\r\n\r\n public _filteredCourses: CourseResponse[] = [];\r\n\r\n get filteredCourses() {\r\n return this._filteredCourses;\r\n }\r\n\r\n @Mutation\r\n private setFilteredCourses(courses: CourseResponse[]) {\r\n this._filteredCourses = courses;\r\n }\r\n\r\n @Action\r\n public async GetFilteredCourses() {\r\n if (!searchStore.search && searchStore.tagsFilter.length === 0 && searchStore.propertiesFilter.length === 0) {\r\n this.setFilteredCourses(coursesStore.Courses);\r\n return coursesStore.Courses;\r\n }\r\n const filterArgs = searchStore.entityFilterParams;\r\n\r\n filterArgs.items = coursesStore.Courses;\r\n const filtered = filterEntities(filterArgs);\r\n this.setFilteredCourses(filtered);\r\n return filtered;\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Guidelines\r\n\r\n public _filteredGuidelines: MbdGuideline[] = [];\r\n\r\n get filteredGuidelines() {\r\n return this._filteredGuidelines;\r\n }\r\n\r\n @Mutation\r\n private setFilteredGuidelines(guidelines: MbdGuideline[]) {\r\n this._filteredGuidelines = guidelines;\r\n }\r\n\r\n @Action\r\n public async GetFilteredGuidelines() {\r\n if (!searchStore.search && searchStore.tagsFilter.length === 0 && searchStore.propertiesFilter.length === 0) {\r\n this.setFilteredGuidelines(guidelinesStore.GuidelinesArray);\r\n return guidelinesStore.GuidelinesArray;\r\n }\r\n\r\n const filterArgs = searchStore.entityFilterParams;\r\n filterArgs.items = guidelinesStore.GuidelinesArray;\r\n\r\n const filtered = filterEntities(filterArgs);\r\n\r\n this.setFilteredGuidelines(filtered);\r\n return filtered;\r\n }\r\n\r\n //#endregion\r\n}\r\n\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-col',{attrs:{\"cols\":\"auto\"}},[(_vm.showTerms)?_c('v-row',{staticClass:\"primary termsAndContact fixedTerms\"},[(_vm.selectTermsOfUse)?_c('button',{staticClass:\"mr-3 secondary--text text--lighten-2 footer-btn\",on:{\"click\":function($event){return _vm.noTerms()}}},[_vm._v(\"Home\")]):_c('button',{staticClass:\"mr-3 secondary--text text--lighten-2 footer-btn\",on:{\"click\":function($event){_vm.selectTermsOfUse = true}}},[_vm._v(\"Terms of Use\")]),_c('button',{staticClass:\"footer-btn\"},[_c('a',{staticClass:\"mr-3 secondary--text text--lighten-2\",attrs:{\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"href\":\"https://www.action-engineering.com/privacy-policy/\"}},[_vm._v(\"Privacy Policy\")])]),_c('v-btn',{staticClass:\"contact-btn\",attrs:{\"href\":\"mailto:OSCAR@action-engineering.com\",\"color\":\"secondary\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-email\")]),_vm._v(\"Contact Us\")],1),_c('button',{staticClass:\"secondary--text contact-exit-button\",on:{\"click\":function($event){return _vm.closeContact()}}},[_vm._v(\"✖\")])],1):_vm._e()],1),_c('v-app-bar',{attrs:{\"dark\":\"\",\"app\":\"\",\"color\":\"primary\",\"clipped-left\":\"\"}},[_c('v-img',{staticClass:\"cursor-pointer\",staticStyle:{\"margin-left\":\"10px\"},attrs:{\"src\":\"\\\\OSCAR Logo White.svg\",\"contain\":\"\",\"width\":\"10vw\",\"min-height\":\"50px\",\"min-width\":\"150px\",\"max-height\":\"50px\",\"max-width\":\"200px\"},on:{\"click\":function($event){return _vm.$router.push({name: 'Home'})}}}),_c('v-spacer'),_c('v-toolbar-items',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.mobile),expression:\"!mobile\"}]},[_c('v-btn',{attrs:{\"text\":\"\",\"tile\":\"\",\"to\":\"/login\"},on:{\"click\":function($event){return _vm.noTerms()}}},[_vm._v(\"Home\")]),_c('v-btn',{attrs:{\"text\":\"\",\"tile\":\"\",\"href\":\"http://dictionary.action-engineering.com\"}},[_vm._v(\"Dictionary\"),_c('span',{staticStyle:{\"margin-top\":\"-30px\",\"margin-left\":\"-30px\",\"font-size\":\"11px\",\"color\":\"#ff4500\"}},[_vm._v(\"beta!\")])]),_c('v-btn',{attrs:{\"text\":\"\",\"tile\":\"\",\"href\":\"https://www.action-engineering.com/oscar/oscar-subscriptions/\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\"}},[_vm._v(\"Pricing\")])],1),_c('div',{staticClass:\"icon\"},[_c('v-app-bar-nav-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.mobile),expression:\"mobile\"}],staticClass:\"smooth-nav\",class:{'icon-active': _vm.mobileNav},on:{\"click\":_vm.toggleMobileNav}})],1)],1),_c('transition',{attrs:{\"name\":\"mobile-nav\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.mobileNav),expression:\"mobileNav\"}],staticClass:\"login-dropdown-nav\"},[_c('v-btn',{staticStyle:{\"padding\":\"30px\",\"color\":\"white\"},attrs:{\"text\":\"\",\"tile\":\"\",\"to\":\"/login\"},on:{\"click\":function($event){_vm.noTerms(), _vm.onRouteChange()}}},[_vm._v(\"Home\")]),_c('v-btn',{staticStyle:{\"padding\":\"30px\",\"color\":\"white\"},attrs:{\"text\":\"\",\"tile\":\"\",\"href\":\"http://dictionary.action-engineering.com\"},on:{\"click\":function($event){return _vm.onRouteChange()}}},[_vm._v(\"Dictionary\"),_c('span',{staticStyle:{\"margin-top\":\"-30px\",\"margin-left\":\"-30px\",\"font-size\":\"11px\",\"color\":\"#ff4500\"}},[_vm._v(\"beta!\")])]),_c('v-btn',{staticStyle:{\"padding\":\"30px\",\"color\":\"white\"},attrs:{\"text\":\"\",\"tile\":\"\",\"href\":\"https://www.action-engineering.com/oscar/oscar-subscriptions/\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\"},on:{\"click\":function($event){return _vm.onRouteChange()}}},[_vm._v(\"Pricing\")])],1)]),_c('v-main',{staticStyle:{\"min-height\":\"100vh\",\"margin-bottom\":\"185px\"}},[_c('v-container',{staticClass:\"fill-height align-start\",attrs:{\"fluid\":\"\"}},[(_vm.loginAlert)?_c('v-row',{attrs:{\"justify\":\"center\"}},[_c('v-card',{staticStyle:{\"padding\":\"5px 10vw\",\"border-radius\":\"0\",\"cursor\":\"default\"},attrs:{\"color\":\"#F8991D\"}},[_c('span',{staticStyle:{\"color\":\"white\",\"font-size\":\"20px\"}},[_vm._v(\"You must be logged in the view this page.\")])])],1):_vm._e(),_c('v-row',{staticClass:\"d-flex flex-row-reverse\",attrs:{\"justify\":\"space-evenly\"}},[_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"8\",\"md\":\"4\",\"lg\":\"4\",\"xl\":\"3\"}},[_c('v-card',{staticClass:\"d-flex flex-column\",class:{'no-bottom-radius': _vm.hasErrors},attrs:{\"width\":\"100%\",\"max-height\":\"475px\",\"tile\":\"\"}},[(_vm.hasErrors && _vm.invalidToken)?_c('v-alert',{staticClass:\"no-bottom-radius\",attrs:{\"width\":\"100%\",\"type\":\"error\",\"color\":\"#075C75\",\"prominent\":\"\",\"transition\":\"scale-transition\",\"tile\":\"\",\"dense\":\"\"}},[_c('ul',_vm._l((_vm.errors),function(error,index){return _c('li',{key:index},[_vm._v(_vm._s(_vm.errorMessage(error.message)))])}),0)]):(_vm.hasErrors && !_vm.invalidToken)?_c('v-alert',{staticClass:\"no-bottom-radius\",attrs:{\"width\":\"100%\",\"type\":\"error\",\"prominent\":\"\",\"transition\":\"scale-transition\",\"tile\":\"\",\"dense\":\"\"}},[_c('ul',_vm._l((_vm.errors),function(error,index){return _c('li',{key:index},[_vm._v(_vm._s(_vm.errorMessage(error.message)))])}),0)]):_vm._e(),_c('router-view'),_c('v-spacer')],1)],1),_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"12\",\"md\":\"8\",\"lg\":\"8\",\"xl\":\"9\"}},[(_vm.selectTermsOfUse)?_c('v-card',[_c('button',{staticStyle:{\"margin-left\":\"97%\",\"margin-top\":\"10px\"},on:{\"click\":function($event){return _vm.noTerms()}}},[_vm._v(\"✖\")]),_c('terms-of-use')],1):_c('v-carousel',{attrs:{\"hide-delimiter-background\":\"\",\"show-arrows-on-hover\":\"\",\"cycle\":\"\",\"interval\":6000}},_vm._l((_vm.slides),function(slide,index){return _c('v-carousel-item',{key:index,attrs:{\"title\":slide.title}},[_c('v-img',{attrs:{\"contain\":\"\",\"height\":\"100%\",\"src\":slide.image}})],1)}),1)],1)],1),_c('v-divider',{staticClass:\"mx-auto my-2\",attrs:{\"inset\":\"\"}}),(!_vm.selectTermsOfUse)?_c('v-row',{staticClass:\"mt-3 mb-3\",attrs:{\"justify\":\"space-evenly\"}},[_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"12\",\"md\":\"4\",\"lg\":\"4\",\"xl\":\"3\"}},[_c('v-card',{staticClass:\"px-6 pt-6 rounded-lg\",attrs:{\"elevation\":\"5\",\"height\":\"100%\"}},[_c('v-row',{attrs:{\"justify\":\"center\"}},[_c('icon-image',{staticStyle:{\"cursor\":\"default\"},attrs:{\"color\":\"secondary\",\"size\":\"100px\",\"src\":\"/images/Explore-MBE-Icon-Link 200x200.png\"}})],1),_c('v-row',{staticClass:\"display-1 my-2\",attrs:{\"justify\":\"center\"}},[_c('div',{staticClass:\"secondary--text\",staticStyle:{\"cursor\":\"default\"}},[_vm._v(\"Explore MBD\")])]),_c('v-row',{staticClass:\"text-center\",attrs:{\"justify\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"10\"}},[_c('p',{staticStyle:{\"cursor\":\"default\"}},[_vm._v(\"Introductory content and Action Engineering publications to get you started on your MBD journey\")])])],1)],1)],1),_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"12\",\"md\":\"4\",\"lg\":\"4\",\"xl\":\"3\"}},[_c('v-card',{staticClass:\"px-6 pt-6 rounded-lg\",attrs:{\"elevation\":\"5\",\"height\":\"100%\"}},[_c('v-row',{attrs:{\"justify\":\"center\"}},[_c('icon-image',{staticStyle:{\"cursor\":\"default\"},attrs:{\"color\":\"secondary\",\"size\":\"100px\",\"src\":\"/images/Training-Icon-Link 200x200.png\"}})],1),_c('v-row',{staticClass:\"display-1 my-2\",attrs:{\"justify\":\"center\"}},[_c('div',{staticClass:\"secondary--text\",staticStyle:{\"cursor\":\"default\"}},[_vm._v(\"Training\")])]),_c('v-row',{staticClass:\"text-center\",attrs:{\"justify\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"10\"}},[_c('p',{staticStyle:{\"cursor\":\"default\"}},[_vm._v(\"Video courses and how-to guides to support the entire model-based enterprise\")])])],1)],1)],1),_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"12\",\"md\":\"4\",\"lg\":\"4\",\"xl\":\"3\"}},[_c('v-card',{staticClass:\"px-6 pt-6 rounded-lg\",attrs:{\"elevation\":\"5\",\"height\":\"100%\"}},[_c('v-row',{attrs:{\"justify\":\"center\"}},[_c('icon-image',{staticStyle:{\"cursor\":\"default\"},attrs:{\"color\":\"secondary\",\"size\":\"100px\",\"src\":\"/images/CAD-Toolkit-Icon-Link 200x200.png\"}})],1),_c('v-row',{staticClass:\"display-1 my-2\",attrs:{\"justify\":\"center\"}},[_c('div',{staticClass:\"display-1 secondary--text\",staticStyle:{\"cursor\":\"default\"}},[_vm._v(\"CAD Toolkit\")])]),_c('v-row',{staticClass:\"text-center\",attrs:{\"justify\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"10\"}},[_c('p',{staticStyle:{\"cursor\":\"default\"}},[_vm._v(\"3D CAD models and templates in a variety of CAD systems\")])])],1)],1)],1)],1):_vm._e(),(!_vm.selectTermsOfUse)?_c('v-row',{staticStyle:{\"height\":\"500px\"},attrs:{\"justify\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"11\"}},[_c('iframe',{staticStyle:{\"width\":\"100%\",\"height\":\"100%\"},attrs:{\"src\":\"https://player.vimeo.com/video/738013101?h=f43999e1b4\",\"frameborder\":\"0\",\"allow\":\"fullscreen;\",\"allowfullscreen\":\"\",\"title\":\"OSCAR Introduction\"}})])],1):_vm._e()],1)],1),_c('v-footer',{staticStyle:{\"padding\":\"15px\"},attrs:{\"color\":\"primary\"}},[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('a',{attrs:{\"href\":\"https://www.action-engineering.com/\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\"}},[_c('v-img',{attrs:{\"max-width\":\"110px\",\"src\":\"/images/AE Logo White.png\"}})],1)]),_c('v-col',{staticClass:\"copy-text\",attrs:{\"cols\":\"auto\",\"align-self\":\"end\"}},[_c('v-row',[_c('span',{staticClass:\"white--text\"},[_vm._v(\"© \"+_vm._s(new Date().getFullYear())+\" Action Engineering, LLC \")])])],1),_c('v-spacer'),_c('v-col',{attrs:{\"cols\":\"auto\"}},[(!_vm.showTerms)?_c('v-row',{staticClass:\"primary termsAndContact\"},[(_vm.selectTermsOfUse)?_c('button',{staticClass:\"mr-3 secondary--text text--lighten-2 footer-btn\",staticStyle:{\"margin-bottom\":\"5px\"},on:{\"click\":function($event){_vm.selectTermsOfUse = false}}},[_vm._v(\"Home\")]):_c('button',{staticClass:\"mr-3 secondary--text text--lighten-2 footer-btn\",staticStyle:{\"margin-botom\":\"5px\"},on:{\"click\":function($event){_vm.selectTermsOfUse = true}}},[_vm._v(\"Terms of Use\")]),_c('button',{staticClass:\"footer-btn\"},[_c('a',{staticClass:\"mr-3 secondary--text text--lighten-2\",attrs:{\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"href\":\"https://www.action-engineering.com/privacy-policy/\"}},[_vm._v(\"Privacy Policy\")])]),_c('v-btn',{staticClass:\"contact-btn\",attrs:{\"href\":\"mailto:OSCAR@action-engineering.com\",\"color\":\"secondary\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-email\")]),_vm._v(\"Contact Us\")],1)],1):_vm._e()],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Emit, Watch } from 'vue-property-decorator';\r\nimport { AuthStore, StateStore } from '@/store/modules';\r\nimport { getModule } from 'vuex-module-decorators';\r\nimport rules from '@/utility/ValidationRules';\r\nimport { LoginForm, RegistrationForm } from '@/components';\r\nimport { IconImage } from '@/app.user/components';\r\nimport TermsOfUse from '@/app.user/views/TermsOfUse.vue';\r\n\r\nconst authStore = getModule(AuthStore);\r\nconst stateStore = getModule(StateStore);\r\n\r\n@Component({\r\n components: {\r\n LoginForm,\r\n IconImage,\r\n TermsOfUse\r\n }\r\n})\r\nexport default class LoginLayout extends Vue {\r\n\r\n private mobile = false;\r\n private mobileNav = false;\r\n private windowWidth = window.innerWidth;\r\n\r\n private slides = [\r\n {title: 'CAD Toolkit', routeName: 'CadToolkit', image: '/images/HomepageSlider-CADToolkit.png'},\r\n {title: 'Training', routeName: 'Training', image: '/images/HomepageSlider-Training.png'},\r\n {title: 'Explore MBD', routeName: 'ExploreMBD', image: '/images/HomepageSlider-ExploreMBD.png'},\r\n ];\r\n\r\n private tab = 0;\r\n\r\n get sliderColor() {\r\n if (this.tab === 0) {\r\n return 'primary--text text--darken-1';\r\n } else if (this.tab === 1) {\r\n return 'orange--text text--darken-1';\r\n }\r\n }\r\n\r\n // Height of the errors toolbar section\r\n get errorsHeight() {\r\n return this.errors.length * 36;\r\n }\r\n\r\n // Extra height to add to the card for errors space\r\n get cardExtraErrorsHeight() {\r\n if (this.errors.length > 1) {\r\n return (this.errors.length - 1) * 36;\r\n }\r\n return 0;\r\n }\r\n\r\n /*get hasSuccessMessage() {\r\n if (this.$route.query.verifiedEmail) {\r\n return this.$route.query.verifiedEmail == 'true';\r\n }\r\n\r\n if (this.$route.query)\r\n return this.$route.query.verifiedEmail && this.$route.query.verifiedEmail == 'true';\r\n }\r\n\r\n get sucessMessage() {\r\n if (this.$route.query.verifiedEmail) {\r\n if (this.$route.query.verifiedEmail == 'true') {\r\n return 'Email Sucessfully Verified, Please Login';\r\n }\r\n }\r\n }*/\r\n\r\n @Watch('tab')\r\n private onTabChanged(val: number) {\r\n authStore.ClearErrors();\r\n }\r\n\r\n get errors() {\r\n return authStore.Errors;\r\n }\r\n\r\n get fieldErrors() {\r\n return authStore.FieldErrors;\r\n }\r\n\r\n get hasErrors() {\r\n return authStore.HasErrors;\r\n }\r\n\r\n get authenticated() {\r\n return authStore.Authenticated;\r\n }\r\n\r\n get component() {\r\n if (this.authenticated) {\r\n return 'layout';\r\n }\r\n return 'login';\r\n }\r\n\r\n get invalidToken() {\r\n return this.errors.length === 1 && this.errors[0].message === 'Invalid token.';\r\n }\r\n\r\n private errorMessage(error: string) {\r\n if (error === 'Invalid token.') {\r\n return 'Expired link';\r\n } else {\r\n return error;\r\n }\r\n }\r\n\r\n private hasFieldError(name: string) {\r\n if (this.fieldErrors === undefined) {\r\n return false;\r\n }\r\n\r\n if (this.fieldErrors[name] === undefined) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private getFieldError(name: string) {\r\n if (!this.hasFieldError(name)) {\r\n return '';\r\n }\r\n return this.fieldErrors[name].message;\r\n }\r\n\r\n private termsAndContact = document.getElementsByClassName('termsAndContact');\r\n private showTerms: boolean = true;\r\n\r\n private closeContact() {\r\n return this.showTerms = false;\r\n }\r\n\r\n private selectTermsOfUse: boolean = false;\r\n\r\n private noTerms() {\r\n return this.selectTermsOfUse = false;\r\n }\r\n\r\n private loginAlert: boolean = false;\r\n private routePath: any = localStorage.getItem('oscar_path') || undefined;\r\n\r\n private fromLink() {\r\n if (this.routePath !== undefined) {\r\n if (this.routePath.length > 1) {\r\n this.loginAlert = true;\r\n return this.loginAlert;\r\n } else {\r\n this.loginAlert = false;\r\n return this.loginAlert;\r\n }\r\n }\r\n }\r\n\r\n private checkScreen() {\r\n this.windowWidth = window.innerWidth;\r\n if (this.windowWidth <= 520) {\r\n this.mobile = true;\r\n return;\r\n }\r\n this.mobile = false;\r\n this.mobileNav = false;\r\n return;\r\n }\r\n\r\n private toggleMobileNav() {\r\n this.mobileNav = !this.mobileNav;\r\n }\r\n\r\n private onRouteChange() {\r\n this.mobileNav = false;\r\n }\r\n\r\n private created() {\r\n window.addEventListener('resize', this.checkScreen);\r\n this.checkScreen();\r\n }\r\n\r\n private mounted() {\r\n // tslint:disable-next-line:triple-equals\r\n if (this.$route.query.verifiedEmail && this.$route.query.verifiedEmail == 'true') {\r\n stateStore.SetSuccessToastMessage('Email Sucessfully Verified, Your account will be activated shortly.');\r\n stateStore.ToggleSuccessToast(true);\r\n }\r\n this.fromLink();\r\n }\r\n}\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginLayout.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginLayout.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./LoginLayout.vue?vue&type=template&id=654a7fd5&\"\nimport script from \"./LoginLayout.vue?vue&type=script&lang=ts&\"\nexport * from \"./LoginLayout.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./LoginLayout.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAlert } from 'vuetify/lib/components/VAlert';\nimport { VAppBar } from 'vuetify/lib/components/VAppBar';\nimport { VAppBarNavIcon } from 'vuetify/lib/components/VAppBar';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCarousel } from 'vuetify/lib/components/VCarousel';\nimport { VCarouselItem } from 'vuetify/lib/components/VCarousel';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VFooter } from 'vuetify/lib/components/VFooter';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VMain } from 'vuetify/lib/components/VMain';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbarItems } from 'vuetify/lib/components/VToolbar';\ninstallComponents(component, {VAlert,VAppBar,VAppBarNavIcon,VBtn,VCard,VCarousel,VCarouselItem,VCol,VContainer,VDivider,VFooter,VIcon,VImg,VMain,VRow,VSpacer,VToolbarItems})\n","import { PropertyValuePairIds, CreateEditMetadataModel } from '..';\r\n\r\n// The translated model for editing metadata\r\n// Or if the model has not been filled in from a response, for creating metadata\r\nexport class CreateEditMetadataRequest {\r\n\r\n public id: string = '';\r\n public tagIds: string[];\r\n\r\n public propertyValueIds: string[];\r\n public pairedProperties: PropertyValuePairIds[];\r\n\r\n public standardIds: string[];\r\n public mbdGuidelineIds: string[];\r\n\r\n constructor(\r\n standards: string[],\r\n mbdGuidelines: string[],\r\n tagIds: string[] = [],\r\n propertyValueIds: string[] = [],\r\n pairedProperties: PropertyValuePairIds[] = []) {\r\n this.standardIds = standards;\r\n this.mbdGuidelineIds = mbdGuidelines;\r\n\r\n this.tagIds = tagIds;\r\n this.propertyValueIds = propertyValueIds;\r\n this.pairedProperties = pairedProperties;\r\n }\r\n\r\n /** Creates the Request from the CreateEdit Model */\r\n public static FromModel(model: CreateEditMetadataModel) {\r\n return new CreateEditMetadataRequest(\r\n model.selectedStandards,\r\n model.selectedMbdGuidelines,\r\n model.tagIds,\r\n model.selectedProperties.propertyValueIds,\r\n model.selectedProperties.pairedPropertyValueIds);\r\n }\r\n}\r\n","import { CreateEditMetadataModel } from '@/models/entities/metadata/CreateEditMetadataModel';\r\nimport { CourseEditResponse } from './CourseEditResponse';\r\nimport { CreateEditVimeoVideoModel } from './CreateEditVimeoVideoModel';\r\nimport { FileData } from '@/models/interfaces';\r\n\r\nexport class CreateEditCourseModel {\r\n\r\n public id: string = '';\r\n public name: string = '';\r\n public description: string = '';\r\n public notes: string = '';\r\n public thumbnailId: string | null = null;\r\n public contentAccessLevel: string = '';\r\n public videos: CreateEditVimeoVideoModel[] = [];\r\n public metadata: CreateEditMetadataModel;\r\n\r\n constructor() {\r\n this.metadata = new CreateEditMetadataModel();\r\n }\r\n\r\n public FromResponse(model: CourseEditResponse) {\r\n this.id = model.id;\r\n this.name = model.name;\r\n this.description = model.description;\r\n this.notes = model.notes;\r\n this.thumbnailId = model.thumbnailId ?? null;\r\n this.contentAccessLevel = model.contentAccessLevel;\r\n this.metadata = new CreateEditMetadataModel();\r\n this.metadata.FromResponse(model.metadata);\r\n\r\n model.videos.forEach((video) => {\r\n const videoModel = new CreateEditVimeoVideoModel();\r\n videoModel.FromResponse(video);\r\n this.videos.push(videoModel);\r\n });\r\n }\r\n}\r\n","import Vue from 'vue';\r\nimport axios from 'axios';\r\nimport ApiRoutes from '@/_common/ApiRoutes';\r\nimport { Module, VuexModule, Mutation, Action, MutationAction } from 'vuex-module-decorators';\r\nimport { Property } from '@/models/entities';\r\nimport ApiService from '@/utility/ApiService';\r\n\r\nimport { getModule } from 'vuex-module-decorators';\r\nimport store from '@/store/store';\r\nimport { CreateEditPropertyRequest, CreateEditPairedPropertyRequest } from '@/models/entities/property/createEditPropertyRequest';\r\nimport { ApiHelpers } from '@/_helpers';\r\n\r\n\r\n@Module({ namespaced: true, name: 'Properties', dynamic: true, store: store })\r\nexport default class PropertiesStore extends VuexModule {\r\n private properties: Record = {};\r\n\r\n get PropertiesArray(): Property[] {\r\n return Object.values(this.properties);\r\n }\r\n\r\n get KeyedProperties(): Record {\r\n return this.properties;\r\n }\r\n\r\n get Property() {\r\n return (key: string): Property => {\r\n return this.properties[key];\r\n };\r\n }\r\n\r\n // Gets all properties that are flagged as \"Standalone\"\r\n get StandaloneProperties(): Property[] {\r\n const output: Property[] = [];\r\n for (const id in this.properties) {\r\n if (this.properties[id].standalone) {\r\n output.push(this.properties[id]);\r\n }\r\n }\r\n return output;\r\n }\r\n\r\n @Mutation\r\n public setPropertiesDictionary(properties: Record) {\r\n this.properties = properties;\r\n }\r\n\r\n @Mutation\r\n public setProperty(property: Property) {\r\n Vue.set(this.properties, property.id, property);\r\n }\r\n\r\n @Mutation\r\n public removeProperty(property: Property) {\r\n Vue.delete(this.properties, property.id);\r\n }\r\n\r\n @Action\r\n public async fetchProperties() {\r\n const response = await ApiService.Get(ApiRoutes.Admin.Properties.GetAll);\r\n const propertiesRecord: Record = {};\r\n\r\n if (response.success && response.result) {\r\n response.result.forEach((prop) => {\r\n const instance = new Property(\r\n prop.id,\r\n prop.name,\r\n prop.standalone,\r\n prop.selectionType,\r\n prop.values,\r\n prop.hasRequiredProperty,\r\n prop.requiredProperty,\r\n prop.requiredPropertyId,\r\n prop.static);\r\n\r\n propertiesRecord[instance.id] = instance;\r\n });\r\n this.context.commit('setPropertiesDictionary', propertiesRecord);\r\n return;\r\n }\r\n\r\n if (!response.success) {\r\n store.dispatch('setErrors', response.errors);\r\n } else {\r\n // Success but no results?\r\n throw new Error('Unknown error occurred, could not retrieve properties');\r\n }\r\n }\r\n\r\n @Action\r\n public async RemoveProperty(property: Property) {\r\n if (!property.id) {\r\n throw new Error('Property Id must be set to persist changes');\r\n }\r\n return await ApiHelpers.wrapCallAndPerformAction(\r\n async () => await ApiService.Delete(ApiRoutes.Admin.Properties.Delete(property.id)) ,\r\n () => {\r\n this.removeProperty(property);\r\n }\r\n );\r\n }\r\n\r\n @Action\r\n public async CreateProperty(model: CreateEditPropertyRequest) {\r\n return await ApiHelpers.wrapCallAndSetValue(\r\n async () => await ApiService.Post(ApiRoutes.Admin.Properties.Create, model),\r\n (value) => {\r\n this.setProperty(value);\r\n }\r\n );\r\n }\r\n\r\n @Action\r\n public async CreatePairedProperty(model: CreateEditPairedPropertyRequest) {\r\n return await ApiHelpers.wrapCallAndSetValue(\r\n async () => await ApiService.Post(ApiRoutes.Admin.Properties.CreatePaired, model),\r\n (value) => {\r\n this.setProperty(value);\r\n }\r\n );\r\n }\r\n\r\n @Action\r\n public async EditProperty(model: CreateEditPropertyRequest) {\r\n if (!model.id) {\r\n throw new Error('Cannot edit property with a missing Id');\r\n }\r\n return await ApiHelpers.wrapCallAndSetValue(\r\n async () => await ApiService.Post(ApiRoutes.Admin.Properties.Edit(model.id), model),\r\n (value) => {\r\n this.setProperty(value);\r\n }\r\n );\r\n }\r\n\r\n @Action\r\n public async EditPairedProperty(model: CreateEditPairedPropertyRequest) {\r\n if (!model.id) {\r\n throw new Error('Cannot edit property with a missing Id');\r\n }\r\n return await ApiHelpers.wrapCallAndSetValue(\r\n async () => await ApiService.Post(ApiRoutes.Admin.Properties.EditPaired(model.id), model),\r\n (value) => {\r\n this.setProperty(value);\r\n }\r\n );\r\n }\r\n}\r\n","export * from './folder';\r\nexport * from './fileSystemItem';\r\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MbdGuidelineSideTile.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MbdGuidelineSideTile.vue?vue&type=style&index=0&lang=css&\"","interface UploadProgress {\r\n time: number;\r\n value: number;\r\n}\r\n\r\n\r\nexport class FileUploadData {\r\n public file: File;\r\n\r\n private progressSampleSize = 50;\r\n private progressIndex = 0;\r\n private progressItems: UploadProgress[] = [];\r\n\r\n constructor(file: File) {\r\n this.file = file;\r\n }\r\n\r\n // Set a rolling set of progress items\r\n set uploaded(value: number) {\r\n if (this.progressItems.length < this.progressSampleSize) {\r\n this.progressItems.push({ time: Date.now(), value: value });\r\n } else {\r\n this.progressItems.shift();\r\n this.progressItems.push({ time: Date.now(), value: value });\r\n }\r\n }\r\n\r\n get uploaded() {\r\n if (this.progressItems.length === 0) {\r\n return 0;\r\n }\r\n\r\n return this.progressItems[this.progressItems.length - 1].value;\r\n }\r\n\r\n\r\n\r\n /*----- Status/Info Getters -----*/\r\n\r\n get type() {\r\n return this.file.type;\r\n }\r\n\r\n get size() {\r\n return this.file.size;\r\n }\r\n\r\n get name() {\r\n return this.file.name;\r\n }\r\n\r\n get progress() {\r\n if (this.uploaded === 0) {\r\n return 0;\r\n }\r\n\r\n return ((this.uploaded / this.file.size) * 100).toFixed(2); // 0.00 -> 100.00\r\n }\r\n\r\n // Calculate the data transfer rate as a delta between progress items\r\n get speed() {\r\n if (this.progressItems.length === 0) {\r\n return 0;\r\n }\r\n\r\n const start = this.progressItems[0]; // Get first item\r\n const end = this.progressItems[this.progressItems.length - 1]; // Get last item\r\n\r\n const timeRange = end.time - start.time;\r\n const dataRange = end.value - start.value;\r\n\r\n const bytesPerMs = dataRange / timeRange;\r\n\r\n return Math.round((bytesPerMs * 1000)); // Bytes per second\r\n }\r\n}\r\n","import { CreateEditMetadataRequest } from '../metadata';\r\nimport { CreateEditVimeoVideoModel } from './CreateEditVimeoVideoModel';\r\n\r\nexport class CreateEditVimeoVideoRequest {\r\n public id: string = '';\r\n\r\n public vimeoId: number;\r\n\r\n public name: string;\r\n public description: string; // Short Description\r\n public notes: string; // Rich text\r\n public metadata: CreateEditMetadataRequest;\r\n\r\n public index: number;\r\n\r\n constructor(name: string, description: string, notes: string, index: number, vimeoId: number, metadata: CreateEditMetadataRequest) {\r\n this.name = name;\r\n this.description = description;\r\n this.notes = notes;\r\n this.index = index;\r\n this.vimeoId = vimeoId;\r\n this.metadata = metadata;\r\n }\r\n\r\n /** Creates the Request from the CreateEdit Model */\r\n public static FromModel(model: CreateEditVimeoVideoModel) {\r\n const output = new CreateEditVimeoVideoRequest(\r\n model.name,\r\n model.description,\r\n model.notes,\r\n model.index,\r\n model.vimeoId,\r\n CreateEditMetadataRequest.FromModel(model.metadata));\r\n output.id = model.id;\r\n return output;\r\n }\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-responsive',{staticClass:\"mx-auto\"},[_c('v-container',[_c('div',{staticClass:\"text-center\"},[_c('h1',{staticClass:\"h1 mb-2 grey--text text--darken-4\"},[_vm._v(\"Terms Of Use\")])]),_c('p',[_vm._v(\" This Agreement sets forth the terms and conditions under which Action Engineering, LLC permits access to this Site to you, the Customer. Subject to these Terms of Use and our policies, Action Engineering hereby grants a limited, personal, nonexclusive, nontransferable, revocable license to access the Site and related documentation. You may only use the Site for your own use within your own organization. In its sole discretion, Action Engineering may make any changes to the Site that it deems necessary to maintain or enhance the quality or delivery of Action Engineering’s products or services to its customers or to comply with applicable law. By using, visiting, or browsing the Site, you accept and agree to be bound by these Terms of Use. From time to time, we may restrict access to some parts of our Site, or the entire Site. We will not be liable if for any reason our Site is unavailable at any time or for any period. \")]),_c('p',[_vm._v(\" Customer represents and warrants that it will not (a) use the Site in a manner contrary to the permitted uses in Table 1; (b) use the Site in a manner that is prohibited by any law or regulation, or to facilitate the violation of any law or regulation; (c) take any steps to reverse engineer the source code to the Site; (d) use information from the Site to create training for your own supply chain; nor (e) violate or tamper with the security of any Action Engineering computer equipment or program. Action Engineering has the right to terminate your access to the Site if we determine that you have failed to comply with any of the provisions of these Terms of Use. \")]),_c('p',[_c('strong',[_vm._v(\"Table 1\")]),_c('br'),_vm._v(\" Customer MAY (within your own organization) or MAY NOT _______ (“Action”) this information contained on the Site. \"),_c('table',{attrs:{\"border\":\"1\",\"cellspacing\":\"0\",\"cellpadding\":\"0\"}},[_c('tbody',[_c('tr',[_c('td',{staticStyle:{\"padding\":\"5px\"}},[_c('strong',[_vm._v(\"“Action”\")])]),_c('td',{staticStyle:{\"padding\":\"5px\"},attrs:{\"align\":\"center\"}},[_c('strong',[_vm._v(\"Training Videos\")])]),_c('td',{staticStyle:{\"padding\":\"5px\"},attrs:{\"align\":\"center\"}},[_c('strong',[_vm._v(\"Template Files*\")])]),_c('td',{staticStyle:{\"padding\":\"5px\"},attrs:{\"align\":\"center\"}},[_c('strong',[_vm._v(\"Non-Template Files (PDF)\")])])]),_c('tr',[_c('td',{staticStyle:{\"padding\":\"5px\"}},[_vm._v(\"Download\")]),_c('td',{staticStyle:{\"padding\":\"5px\"},attrs:{\"align\":\"center\"}},[_vm._v(\"May Not\")]),_c('td',{staticStyle:{\"padding\":\"5px\"},attrs:{\"align\":\"center\"}},[_vm._v(\"May\")]),_c('td',{staticStyle:{\"padding\":\"5px\"},attrs:{\"align\":\"center\"}},[_vm._v(\"May\")])]),_c('tr',[_c('td',{staticStyle:{\"padding\":\"5px\"}},[_vm._v(\"Modify\")]),_c('td',{staticStyle:{\"padding\":\"5px\"},attrs:{\"align\":\"center\"}},[_vm._v(\"May Not\")]),_c('td',{staticStyle:{\"padding\":\"5px\"},attrs:{\"align\":\"center\"}},[_vm._v(\"May\")]),_c('td',{staticStyle:{\"padding\":\"5px\"},attrs:{\"align\":\"center\"}},[_vm._v(\"May Not\")])]),_c('tr',[_c('td',{staticStyle:{\"padding\":\"5px\"}},[_vm._v(\"Copy, Reproduce, Duplicate\")]),_c('td',{staticStyle:{\"padding\":\"5px\"},attrs:{\"align\":\"center\"}},[_vm._v(\"May Not\")]),_c('td',{staticStyle:{\"padding\":\"5px\"},attrs:{\"align\":\"center\"}},[_vm._v(\"May\")]),_c('td',{staticStyle:{\"padding\":\"5px\"},attrs:{\"align\":\"center\"}},[_vm._v(\"May\")])]),_c('tr',[_c('td',{staticStyle:{\"padding\":\"5px\"}},[_vm._v(\"Distribute, Transmit\")]),_c('td',{staticStyle:{\"padding\":\"5px\"},attrs:{\"align\":\"center\"}},[_vm._v(\"May Not\")]),_c('td',{staticStyle:{\"padding\":\"5px\"},attrs:{\"align\":\"center\"}},[_vm._v(\"May\")]),_c('td',{staticStyle:{\"padding\":\"5px\"},attrs:{\"align\":\"center\"}},[_vm._v(\"May\")])]),_c('tr',[_c('td',{staticStyle:{\"padding\":\"5px\"}},[_vm._v(\"Display\")]),_c('td',{staticStyle:{\"padding\":\"5px\"},attrs:{\"align\":\"center\"}},[_vm._v(\"May\")]),_c('td',{staticStyle:{\"padding\":\"5px\"},attrs:{\"align\":\"center\"}},[_vm._v(\"May\")]),_c('td',{staticStyle:{\"padding\":\"5px\"},attrs:{\"align\":\"center\"}},[_vm._v(\"May\")])]),_c('tr',[_c('td',{staticStyle:{\"padding\":\"5px\"}},[_vm._v(\"Publish\")]),_c('td',{staticStyle:{\"padding\":\"5px\"},attrs:{\"align\":\"center\"}},[_vm._v(\"May Not\")]),_c('td',{staticStyle:{\"padding\":\"5px\"},attrs:{\"align\":\"center\"}},[_vm._v(\"May\")]),_c('td',{staticStyle:{\"padding\":\"5px\"},attrs:{\"align\":\"center\"}},[_vm._v(\"May\")])]),_c('tr',[_c('td',{staticStyle:{\"padding\":\"5px\"}},[_vm._v(\"Create derivative works from\")]),_c('td',{staticStyle:{\"padding\":\"5px\"},attrs:{\"align\":\"center\"}},[_vm._v(\"May Not\")]),_c('td',{staticStyle:{\"padding\":\"5px\"},attrs:{\"align\":\"center\"}},[_vm._v(\"May\")]),_c('td',{staticStyle:{\"padding\":\"5px\"},attrs:{\"align\":\"center\"}},[_vm._v(\"May Not\")])]),_c('tr',[_c('td',{staticStyle:{\"padding\":\"5px\"}},[_vm._v(\"License\")]),_c('td',{staticStyle:{\"padding\":\"5px\"},attrs:{\"align\":\"center\"}},[_vm._v(\"May Not\")]),_c('td',{staticStyle:{\"padding\":\"5px\"},attrs:{\"align\":\"center\"}},[_vm._v(\"May Not\")]),_c('td',{staticStyle:{\"padding\":\"5px\"},attrs:{\"align\":\"center\"}},[_vm._v(\"May Not\")])]),_c('tr',[_c('td',{staticStyle:{\"padding\":\"5px\"}},[_vm._v(\"Offer for sale\")]),_c('td',{staticStyle:{\"padding\":\"5px\"},attrs:{\"align\":\"center\"}},[_vm._v(\"May Not\")]),_c('td',{staticStyle:{\"padding\":\"5px\"},attrs:{\"align\":\"center\"}},[_vm._v(\"May Not\")]),_c('td',{staticStyle:{\"padding\":\"5px\"},attrs:{\"align\":\"center\"}},[_vm._v(\"May Not\")])])])]),_vm._v(\" *Filename extensions for Template Files include: PRT, SLDPRT, PRTDOT, ASM, ASMDOT, PPTX, ZIP \")]),_c('p',[_vm._v(\" Accessing the Site does not give you ownership of any intellectual property rights in our services or the content you access. All right, title, and interest in and to the Site including all material therein, and all copyrights, patents, trademarks, service marks, or other intellectual property or proprietary rights relating thereto, belong exclusively to Action Engineering. \")]),_c('p',[_vm._v(\" THE SITE AND ALL INCLUDED CONTENT ARE PROVIDED ON AN “AS IS” BASIS WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS OR IMPLIED. ACTION ENGINEERING SPECIFICALLY DISCLAIMS ANY AND ALL WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT, AND ANY WARRANTIES ARISING OUT OF COURSE OF DEALING OR USAGE OF TRADE. ACTION ENGINEERING FURTHER DISCLAIMS ANY AND ALL LIABILITY RELATED TO YOUR ACCESS OR USE OF THE SERVICES OR ANY RELATED CONTENT. YOU ACKNOWLEDGE AND AGREE THAT ANY ACCESS TO OR USE OF THE SERVICES OR SUCH CONTENT IS AT YOUR OWN RISK. \")])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./TermsOfUse.vue?vue&type=template&id=ecc2ae1a&\"\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VResponsive } from 'vuetify/lib/components/VResponsive';\ninstallComponents(component, {VContainer,VResponsive})\n","import { Version, FileType, PropertyValuePairIds, CreateEditMetadataRequest} from '@/models/entities';\r\nimport { CreateEditFileModel } from './CreateEditFileModel';\r\n\r\nexport class CreateEditFileRequest {\r\n public id: string = '';\r\n public name: string;\r\n public title: string;\r\n public originalName: string;\r\n public fileType: FileType;\r\n public version: Version | undefined;\r\n public checksum?: string;\r\n\r\n public contentAccessLevel: string;\r\n\r\n public thumbnailId: string | null = null;\r\n\r\n public metadata: CreateEditMetadataRequest;\r\n\r\n\r\n public folderId?: string;\r\n\r\n public sourceFileIds: string[];\r\n\r\n\r\n public notes: string;\r\n\r\n constructor(\r\n name: string,\r\n originalName: string,\r\n fileExtension: string,\r\n fileType: string,\r\n metadata: CreateEditMetadataRequest,\r\n thumbnailId: string | null,\r\n contentAccessLevel: string = '',\r\n folderId?: string,\r\n version?: Version,\r\n notes: string = '',\r\n title: string = '',\r\n sourceFileIds: string[] = [],\r\n checksum?: string,\r\n ) {\r\n this.name = name;\r\n this.originalName = originalName;\r\n\r\n this.folderId = folderId;\r\n this.version = version;\r\n\r\n this.notes = notes;\r\n this.title = title;\r\n this.sourceFileIds = sourceFileIds;\r\n this.thumbnailId = thumbnailId ?? null;\r\n\r\n this.contentAccessLevel = contentAccessLevel;\r\n\r\n this.fileType = {name: fileType, extension: fileExtension};\r\n this.checksum = checksum;\r\n this.metadata = metadata;\r\n }\r\n\r\n /** Creates the Request from the CreateEdit Model */\r\n public static FromModel(model: CreateEditFileModel, checksum?: string) {\r\n const metadata = CreateEditMetadataRequest.FromModel(model.metadata);\r\n\r\n const sourceFiles = model.sourceFiles.map((val) => val.id);\r\n\r\n const output = new CreateEditFileRequest(\r\n model.name,\r\n model.originalName,\r\n model.fileExtension,\r\n model.fileType,\r\n metadata,\r\n model.thumbnailId,\r\n model.contentAccessLevel,\r\n model.selectedFolder?.id,\r\n model.version,\r\n model.notes,\r\n model.title,\r\n sourceFiles ? sourceFiles : [],\r\n checksum);\r\n\r\n output.id = model.id;\r\n return output;\r\n }\r\n}\r\n","import { SimpleEntity, CadSystemInstruction, MbdGuidelineEditResponse } from '@/models';\r\n\r\nexport class CreateEditMdbGuidelineModel { // Cannot import from index due to circular dependency issues, for some reason\r\n public id: string = '';\r\n public name: string = '';\r\n\r\n public category: SimpleEntity | null = null;\r\n public categoryId: string = '';\r\n\r\n public ruleStatement: string = '';\r\n public whyStatement: string = '';\r\n public agnosticInstructions: string = '';\r\n\r\n public contentAccessLevel: string = '';\r\n\r\n public instructions: CadSystemInstruction[] = [];\r\n\r\n public FromResponse(model: MbdGuidelineEditResponse) {\r\n this.id = model.id;\r\n this.name = model.name;\r\n this.category = model.category;\r\n\r\n this.ruleStatement = model.ruleStatement;\r\n this.whyStatement = model.whyStatement;\r\n this.agnosticInstructions = model.agnosticInstructions;\r\n\r\n this.contentAccessLevel = model.contentAccessLevel;\r\n\r\n this.instructions = model.instructions;\r\n }\r\n}\r\n","import { PropertyValue } from './propertyValue';\r\nimport { SelectionType } from '@/_common/enums';\r\n\r\nexport class Property {\r\n public id: string;\r\n public name: string;\r\n public standalone: boolean;\r\n public static: boolean;\r\n\r\n public requiredProperty: Property | null;\r\n public requiredPropertyId: string | null;\r\n\r\n public selectionType: string;\r\n public values: PropertyValue[];\r\n\r\n public hasRequiredProperty: boolean;\r\n\r\n constructor(id: string,\r\n name: string,\r\n standalone: boolean,\r\n selectionType: string,\r\n values: PropertyValue[],\r\n hasRequiredProperty: boolean,\r\n requiredProperty?: Property | null,\r\n requiredPropertyId?: string | null,\r\n isStatic: boolean = false) {\r\n this.id = id;\r\n this.name = name;\r\n this.standalone = standalone;\r\n this.requiredProperty = requiredProperty ? requiredProperty : null;\r\n this.requiredPropertyId = requiredPropertyId ? requiredPropertyId : null;\r\n this.selectionType = selectionType;\r\n this.values = values;\r\n this.hasRequiredProperty = hasRequiredProperty;\r\n this.static = isStatic;\r\n }\r\n\r\n get isMultiSelect() {\r\n return this.selectionType === SelectionType.MultiSelect;\r\n }\r\n\r\n get isSingleSelect() {\r\n return this.selectionType === SelectionType.SingleSelect;\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginLayout.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginLayout.vue?vue&type=style&index=0&lang=css&\"","import { Version, PropertyValuePairIds } from '@/models/entities';\r\nimport { CreateEditMetadataRequest } from '@/models/entities/metadata';\r\nimport { CreateEditPackageModel } from './CreateEditPackageModel';\r\n\r\nexport class CreatePackageRequest {\r\n public id: string = '';\r\n public name: string;\r\n public title: string;\r\n public notes: string;\r\n public version: Version | undefined;\r\n public thumbnailId: string | null;\r\n public contentAccessLevel: string;\r\n\r\n public metadata: CreateEditMetadataRequest;\r\n\r\n public sourceFileIds: string[];\r\n\r\n constructor(\r\n name: string,\r\n metadata: CreateEditMetadataRequest,\r\n thumbnailId: string | null,\r\n contentAccessLevel: string = '',\r\n version?: Version,\r\n notes: string = '',\r\n title: string = '',\r\n sourceFileIds: string[] = []) {\r\n this.name = name;\r\n this.metadata = metadata;\r\n this.thumbnailId = thumbnailId ?? null;\r\n this.contentAccessLevel = contentAccessLevel;\r\n this.version = version;\r\n this.notes = notes;\r\n this.title = title;\r\n this.sourceFileIds = sourceFileIds;\r\n }\r\n\r\n\r\n /** Creates the Request from the CreateEdit Model */\r\n public static FromModel(model: CreateEditPackageModel) {\r\n const metadata = CreateEditMetadataRequest.FromModel(model.metadata);\r\n const sourceFileIds = model.sourceFiles.map((val) => val.id);\r\n\r\n const output = new CreatePackageRequest(\r\n model.name,\r\n metadata,\r\n model.thumbnailId,\r\n model.contentAccessLevel,\r\n model.version,\r\n model.notes,\r\n model.title,\r\n sourceFileIds ?? []);\r\n\r\n output.id = model.id;\r\n return output;\r\n }\r\n}\r\n","export * from './CourseEditResponse';\r\nexport * from './CourseResponse';\r\nexport * from './CreateEditCourseModel';\r\nexport * from './VimeoVideo';\r\nexport * from './CreateEditVimeoVideoModel';\r\nexport * from './VimeoVideoEditResponse';\r\n\r\nexport * from './CreateEditCourseRequest';\r\nexport * from './CreateEditVimeoVideoRequest';\r\n\r\n","import Vue from 'vue';\r\nimport axios, { AxiosResponse, CancelTokenSource } from 'axios';\r\nimport Http from '@/_helpers/http.helpers';\r\nimport ApiRoutes from '@/_common/ApiRoutes';\r\nimport { ErrorResponseType } from '@/_common/enums';\r\nimport { ErrorsResponse, AuthResponse, ApiResponse } from '@/models/responses';\r\nimport { JwtValues, FileUploadData } from '@/models';\r\nimport { AuthStore } from '@/store/modules';\r\nimport { AccountRegistrationRequest, CreateUserRequest } from '@/models/requests';\r\n\r\ninterface UploadProgress {\r\n total: number;\r\n loaded: number;\r\n speed: number;\r\n}\r\n\r\n// tslint:disable: no-console\r\nexport default class ApiService {\r\n\r\n private static jwtValidated: boolean = false;\r\n private static jwtValid: boolean = false;\r\n\r\n private static jwtRefreshCompleted: boolean = false;\r\n private static jwtRefreshFailed: boolean = false;\r\n\r\n private static requestQueue: Array<() => Promise>> = [];\r\n private static authStore: AuthStore;\r\n\r\n public static SetAuthStore(authStore: AuthStore) {\r\n this.authStore = authStore;\r\n }\r\n\r\n public static async Get(uri: string, params?: GetParams): Promise> {\r\n return await this.WrapApiCall(async () => await Http.get(uri, params));\r\n }\r\n\r\n public static async Delete(uri: string): Promise> {\r\n return await this.WrapApiCall(async () => await Http.delete(uri));\r\n }\r\n\r\n\r\n public static async PostMultipart(uri: string, data: any): Promise> {\r\n return await this.WrapApiCall(async () => await Http.postMultipart(uri, data));\r\n }\r\n\r\n public static async Post(uri: string, data: any): Promise> {\r\n return await this.WrapApiCall(async () => await Http.post(uri, data));\r\n }\r\n\r\n public static async PostWithProgress(\r\n uri: string,\r\n data: any,\r\n onProgress: (progressEvent: ProgressEvent) => void): Promise> {\r\n return await this.WrapApiCall(async () => await Http.postWithProgress(uri, data, onProgress));\r\n }\r\n\r\n public static async Upload(uri: string, uploadData: FileUploadData, cancelToken: CancelTokenSource)\r\n : Promise> {\r\n\r\n const formData = new FormData();\r\n formData.append('file', uploadData.file);\r\n\r\n const onProgress = (progressEvent: ProgressEvent) => {\r\n uploadData.uploaded = progressEvent.loaded;\r\n };\r\n\r\n return await this.WrapApiCall(async () => await Http.upload(uri, formData, cancelToken, onProgress));\r\n }\r\n\r\n // Checks if the users session is valid by pinging a secured endpoint.\r\n // Relies on the token being set in localStorage first\r\n public static async ValidateSession(): Promise {\r\n // Do not use WrapApiCall for this\r\n try {\r\n await Http.post(ApiRoutes.Global.Identity.Validate, {});\r\n this.jwtValidated = true;\r\n this.jwtValid = true;\r\n return true;\r\n } catch (errorResponse) {\r\n this.jwtValidated = true;\r\n this.jwtValid = false;\r\n return false;\r\n }\r\n }\r\n\r\n public static async RefreshSession(tokens: TokenObj): Promise {\r\n // Do not use WrapApiCall for this\r\n try {\r\n const response = await Http.post(ApiRoutes.Global.Identity.Refresh, tokens);\r\n\r\n this.jwtValid = true;\r\n this.jwtRefreshCompleted = true;\r\n return {\r\n token: response.data.token,\r\n refreshToken: response.data.refreshToken\r\n };\r\n } catch (errorResponse) {\r\n this.jwtValidated = true;\r\n this.jwtValid = false;\r\n this.jwtRefreshCompleted = true;\r\n this.jwtRefreshFailed = true;\r\n\r\n const errors: string[] = errorResponse.response.data.errors;\r\n return {\r\n errors: this.HandleGlobalError(errorResponse.response)\r\n };\r\n }\r\n }\r\n\r\n public static async Login(username: string, password: string): Promise {\r\n try {\r\n const response = await Http.post(ApiRoutes.Global.Identity.Login, {email: username, password: password});\r\n this.jwtValidated = true;\r\n this.jwtValid = true;\r\n return {\r\n token: response.data.token,\r\n refreshToken: response.data.refreshToken\r\n };\r\n } catch (errorResponse) {\r\n return {\r\n errors: this.HandleGlobalError(errorResponse.response)\r\n };\r\n }\r\n }\r\n\r\n public static async Register(model: AccountRegistrationRequest): Promise {\r\n try {\r\n const response = await Http.post(ApiRoutes.Global.Identity.Register, model);\r\n return {\r\n token: response.data.token,\r\n refreshToken: response.data.refreshToken\r\n };\r\n } catch (errorResponse) {\r\n return {\r\n errors: this.HandleGlobalError(errorResponse.response)\r\n };\r\n }\r\n }\r\n\r\n public static async CreateUser(model: CreateUserRequest): Promise {\r\n try {\r\n const response = await Http.post(ApiRoutes.Global.Identity.CreateUser, model);\r\n return {\r\n token: response.data.token,\r\n refreshToken: response.data.refreshToken\r\n };\r\n } catch (errorResponse) {\r\n return {\r\n errors: this.HandleGlobalError(errorResponse.response)\r\n };\r\n }\r\n }\r\n\r\n public static async EditUser(model: CreateUserRequest): Promise {\r\n try {\r\n const response = await Http.post(ApiRoutes.Global.Identity.EditUser, model);\r\n return {\r\n token: response.data.token,\r\n refreshToken: response.data.refreshToken\r\n };\r\n } catch (errorResponse) {\r\n return {\r\n errors: this.HandleGlobalError(errorResponse.response)\r\n };\r\n }\r\n }\r\n\r\n public static async SendEmailVerification(email: string): Promise {\r\n\r\n try {\r\n const response = await Http.post(ApiRoutes.Global.Identity.SendEmailVerification, {email: email});\r\n return {\r\n success: true\r\n };\r\n } catch (errorResponse) {\r\n return {\r\n errors: this.HandleGlobalError(errorResponse.response),\r\n success: false\r\n };\r\n }\r\n }\r\n\r\n public static async ReSendEmailVerification(email: string): Promise {\r\n\r\n try {\r\n const response = await Http.post(ApiRoutes.Global.Identity.ReSendEmailVerification, {email: email});\r\n return {\r\n success: true\r\n };\r\n } catch (errorResponse) {\r\n return {\r\n errors: this.HandleGlobalError(errorResponse.response),\r\n success: false\r\n };\r\n }\r\n }\r\n\r\n public static async SendAssessment(\r\n username: string, email: string, assessment: string, score: string, percent: string, bonus: string, answers: string): Promise {\r\n\r\n try {\r\n const response = await Http.post(ApiRoutes.Global.Identity.SendAssessment,\r\n {username: username, email: email, assessment: assessment, score: score, percent: percent, bonus: bonus, answers: answers});\r\n return {\r\n success: true\r\n };\r\n } catch (errorResponse) {\r\n return {\r\n errors: this.HandleGlobalError(errorResponse.response),\r\n success: false\r\n };\r\n }\r\n }\r\n\r\n public static async RequestPasswordReset(email: string): Promise {\r\n\r\n try {\r\n const response = await Http.post(ApiRoutes.Global.Identity.RequestPasswordReset, {email: email});\r\n return {\r\n success: true\r\n };\r\n } catch (errorResponse) {\r\n return {\r\n errors: this.HandleGlobalError(errorResponse.response),\r\n success: false\r\n };\r\n }\r\n }\r\n\r\n public static async SendDowngradeUserEmail(email: string, sublevel: string): Promise {\r\n\r\n try {\r\n const response = await Http.post(ApiRoutes.Global.Identity.SendDowngradeUserEmail, {email: email, sublevel: sublevel});\r\n return {\r\n success: true\r\n };\r\n } catch (errorResponse) {\r\n return {\r\n errors: this.HandleGlobalError(errorResponse.response),\r\n success: false\r\n };\r\n }\r\n }\r\n\r\n public static async ResetPassword(userId: string, token: string, newPassword: string): Promise {\r\n\r\n try {\r\n const response = await Http.post(ApiRoutes.Global.Identity.ResetPassword, {userId: userId, token: token, newPassword: newPassword});\r\n return {\r\n success: true\r\n };\r\n } catch (errorResponse) {\r\n return {\r\n errors: this.HandleGlobalError(errorResponse.response),\r\n success: false\r\n };\r\n }\r\n }\r\n\r\n public static async SetPassword(userId: string, password: string): Promise {\r\n try {\r\n const response = await Http.post(ApiRoutes.Global.Identity.VerifyEmailAndSetupAccount,\r\n {userId: userId, password: password});\r\n return {\r\n success: true\r\n };\r\n } catch (errorResponse) {\r\n return {\r\n errors: this.HandleGlobalError(errorResponse.response),\r\n success: false\r\n };\r\n }\r\n }\r\n\r\n public static async ConfirmEmail(userId: string, token: string): Promise {\r\n try {\r\n const response = await Http.post(ApiRoutes.Global.Identity.ConfirmEmail,\r\n {userId: userId, token: token});\r\n return {\r\n success: true\r\n };\r\n } catch (errorResponse) {\r\n return {\r\n errors: this.HandleGlobalError(errorResponse.response),\r\n success: false\r\n };\r\n }\r\n }\r\n\r\n // Handles global API errors\r\n // Any error that is returned with a non-200 status code\r\n public static HandleGlobalError(response: AxiosResponse): ErrorsResponse {\r\n // Offline, can't connect to server\r\n if (response === undefined) {\r\n return {\r\n type: ErrorResponseType.Offline,\r\n errors: [{message: 'Unable to connect to server'}]\r\n };\r\n }\r\n if (response.status === 401) {\r\n // Do something with the unauthorized error like attempting to refresh session?\r\n return {\r\n type: ErrorResponseType.Unauthorized,\r\n errors: [{message: 'Unauthorized, please refresh the page'}]\r\n };\r\n }\r\n\r\n if (response.status === 403) {\r\n if (response.data) {\r\n return {\r\n type: ErrorResponseType.Unauthorized,\r\n errors: [response.data]\r\n };\r\n }\r\n\r\n return {\r\n type: ErrorResponseType.Unauthorized,\r\n errors: [{message: 'Not authorized to access this resource'}]\r\n };\r\n }\r\n\r\n if (response.status === 404) {\r\n if (response.data) {\r\n return {\r\n type: ErrorResponseType.NotFound,\r\n errors: [response.data]\r\n };\r\n } else {\r\n return {\r\n type: ErrorResponseType.NotFound,\r\n errors: [{message: 'Not Found'}]\r\n };\r\n }\r\n\r\n }\r\n\r\n if (response.status === 500) {\r\n return {\r\n type: ErrorResponseType.Fatal,\r\n errors: [{message: 'An Unexpected Failure Has Occurred. Please try again later.'}]\r\n };\r\n }\r\n\r\n // Error without the standard errors response\r\n if (response.data === undefined) {\r\n console.error('Unknown Error Response, Data is Undefined', response);\r\n throw new Error('Unknown Error Response Type, Data is Undefined');\r\n }\r\n\r\n // Response is one of the recognized error types\r\n if (response.data.type in ErrorResponseType) {\r\n return response.data as ErrorsResponse;\r\n }\r\n\r\n console.error('Unknown Error Response Type', response);\r\n throw new Error('Unknown Error Response Type');\r\n }\r\n\r\n private static ShouldDelayCall() {\r\n if (!this.jwtValidated) { return true; } // JWT Validation Not Done\r\n if (!this.jwtValid ) { return true; } // JWT Validation done, JWT invalid\r\n if (!this.jwtRefreshCompleted && !this.jwtValid) { return true; } // Refresh attempt has not been made yet, JWT is currently invalid\r\n\r\n // JWT is valid, OR Validation complete and JWT is invalid\r\n // Next step should determine if calls should be cancelled\r\n return false;\r\n }\r\n\r\n private static ShouldCancelCalls() {\r\n if (this.jwtValidated && this.jwtValid) { return false; } // JWT valid, continue\r\n if (this.jwtRefreshFailed) { return true; } // Refresh failed, user is logged out\r\n return false;\r\n }\r\n\r\n private static async DelayCall() {\r\n return new Promise((r) => setTimeout(r, 10));\r\n }\r\n\r\n private static async WrapApiCall(httpCall: () => Promise>): Promise> {\r\n await this.authStore.LocalSessionCheck(); // Local check before continuing\r\n\r\n while (this.ShouldDelayCall()) {\r\n await this.DelayCall();\r\n }\r\n\r\n if (this.ShouldCancelCalls()) {\r\n return Promise.reject('Cancelling API calls, session invalid');\r\n }\r\n\r\n try {\r\n const response = await httpCall();\r\n return {\r\n result: response.data,\r\n success: true\r\n };\r\n } catch (errorResponse) {\r\n console.group('API Call Error');\r\n console.error('An API call error has occurred');\r\n console.error(errorResponse);\r\n console.error(errorResponse.response);\r\n console.groupEnd();\r\n\r\n return {\r\n errors: this.HandleGlobalError(errorResponse.response),\r\n success: false\r\n };\r\n }\r\n }\r\n}\r\n","export * from './SelectedProperty';\r\nexport * from './SelectedProperties';\r\nexport * from './SelectionInterfaces';\r\nexport * from './property';\r\nexport * from './propertyValue';\r\nexport * from './simplePropertyValue';\r\nexport * from './simplePropertyValuePair';\r\nexport * from './propertyValuePairIds';\r\n\r\nexport * from './entityPropertyValue';\r\nexport * from './entityPropertyValuePair';\r\n\r\nexport * from './createEditPropertyRequest';\r\n","import Vue from 'vue';\r\nimport Vuex, { StoreOptions, GetterTree } from 'vuex';\r\nimport { ErrorsResponse, ErrorResponse } from '@/models/responses';\r\n\r\nVue.use(Vuex);\r\n\r\nconst STORE: StoreOptions = {\r\n state: {\r\n errors: [],\r\n fatalError: '',\r\n },\r\n getters: {\r\n errors: (state) => state.errors,\r\n fatalError: (state) => state.fatalError,\r\n hasFatalError: (state) => {\r\n return (state.fatalError !== undefined)\r\n && (state.fatalError !== null)\r\n && (state.fatalError.length > 0);\r\n }\r\n },\r\n mutations: {\r\n setErrors(state: State, errors: ErrorResponse[]) {\r\n state.errors = errors;\r\n },\r\n setFatalError(state: State, message: string) {\r\n state.fatalError = message;\r\n },\r\n },\r\n actions: {\r\n setError(context, error: string) {\r\n context.commit('setErrors', [error]);\r\n },\r\n\r\n setErrors(context, errorResponse: ErrorsResponse) {\r\n const errors: ErrorResponse[] = Array.from(errorResponse.errors);\r\n\r\n for (const key in errorResponse.fieldErrors) {\r\n if (errorResponse.fieldErrors.hasOwnProperty(key)) {\r\n errors.push(errorResponse.fieldErrors[key]);\r\n }\r\n }\r\n\r\n context.commit('setErrors', errors);\r\n },\r\n\r\n setFatalError(context, message: string) {\r\n context.commit('setFatalError', message);\r\n },\r\n },\r\n};\r\n\r\nexport default new Vuex.Store(STORE);\r\n\r\ninterface State {\r\n errors: ErrorResponse[];\r\n fatalError: string;\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{on:{\"click\":function($event){return _vm.cardClicked(_vm.cardType)}}},[_c('v-card-text',{staticClass:\"py-2\"},[_c('v-row',{staticClass:\"flex-nowrap\"},[_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-skeleton-loader',{attrs:{\"boilerplate\":\"\",\"type\":\"image\",\"height\":\"100px\",\"width\":\"100px\"}})],1),_c('v-col',{staticClass:\"flex-grow-1\",attrs:{\"cols\":\"auto\"}},[_c('v-row',{staticClass:\"mb-3\",attrs:{\"no-gutters\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('h2',{staticClass:\"grey--text text--darken-2\"},[_vm._v(\"Document Title\")])]),_c('v-spacer'),_c('v-col',{staticClass:\"mt-n2\",attrs:{\"cols\":\"auto\"}},[(_vm.cardType == 'document')?_c('v-btn',[_c('v-icon',[_vm._v(\"mdi-download\")]),_vm._v(\" Download \")],1):_vm._e(),(_vm.cardType == 'video')?_c('v-btn',[_c('v-icon',[_vm._v(\"mdi-play\")]),_vm._v(\" Play \")],1):_vm._e()],1)],1),_c('v-row',{staticClass:\"mt-2\",attrs:{\"no-gutters\":\"\"}},[_c('v-skeleton-loader',{attrs:{\"boilerplate\":\"\",\"type\":\"paragraph\",\"width\":\"100%\"}}),_c('v-skeleton-loader',{attrs:{\"boilerplate\":\"\",\"type\":\"text\",\"width\":\"100%\"}}),_c('v-skeleton-loader',{staticClass:\"mx-1 mt-1\",attrs:{\"boilerplate\":\"\",\"type\":\"text\",\"tile\":\"\",\"width\":\"60px\"}}),_c('v-skeleton-loader',{staticClass:\"mx-1 mt-1\",attrs:{\"boilerplate\":\"\",\"type\":\"text\",\"tile\":\"\",\"width\":\"60px\"}}),_c('v-skeleton-loader',{staticClass:\"mx-1 mt-1\",attrs:{\"boilerplate\":\"\",\"type\":\"text\",\"tile\":\"\",\"width\":\"60px\"}}),_c('v-skeleton-loader',{staticClass:\"mx-1 mt-1\",attrs:{\"boilerplate\":\"\",\"type\":\"text\",\"tile\":\"\",\"width\":\"60px\"}}),_c('v-skeleton-loader',{staticClass:\"mx-1 mt-1\",attrs:{\"boilerplate\":\"\",\"type\":\"text\",\"tile\":\"\",\"width\":\"60px\"}})],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Prop } from 'vue-property-decorator';\r\n\r\n@Component\r\nexport default class DocumentCard extends Vue {\r\n @Prop({required: true, type: String}) public cardType!: string; // document, or video\r\n\r\n private cardClicked(type: string) {\r\n this.$emit('clicked');\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DocumentCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DocumentCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DocumentCard.vue?vue&type=template&id=a29cce56&\"\nimport script from \"./DocumentCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./DocumentCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCard,VCardText,VCol,VIcon,VRow,VSkeletonLoader,VSpacer})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"max-width\":\"700px\"},model:{value:(_vm.syncedDialog),callback:function ($$v) {_vm.syncedDialog=$$v},expression:\"syncedDialog\"}},[_c('v-card',[_c('v-card-title',[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-skeleton-loader',{attrs:{\"boilerplate\":\"\",\"type\":\"image\",\"height\":\"100px\",\"width\":\"100px\"}})],1),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('h2',{staticClass:\"grey--text text--darken-2\"},[_vm._v(\"Document Title\")])]),_c('v-spacer'),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',[_c('v-icon',[_vm._v(\"mdi-download\")]),_vm._v(\" Download \")],1)],1)],1)],1),_c('v-card-text',[_c('v-skeleton-loader',{attrs:{\"boilerplate\":\"\",\"type\":\"paragraph\",\"width\":\"100%\"}}),_c('v-skeleton-loader',{attrs:{\"boilerplate\":\"\",\"type\":\"paragraph\",\"width\":\"100%\"}})],1),_c('v-card-text',[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-skeleton-loader',{staticClass:\"mx-1 mt-1\",attrs:{\"boilerplate\":\"\",\"type\":\"text\",\"tile\":\"\",\"width\":\"60px\"}}),_c('v-skeleton-loader',{staticClass:\"mx-1 mt-1\",attrs:{\"boilerplate\":\"\",\"type\":\"text\",\"tile\":\"\",\"width\":\"60px\"}}),_c('v-skeleton-loader',{staticClass:\"mx-1 mt-1\",attrs:{\"boilerplate\":\"\",\"type\":\"text\",\"tile\":\"\",\"width\":\"60px\"}}),_c('v-skeleton-loader',{staticClass:\"mx-1 mt-1\",attrs:{\"boilerplate\":\"\",\"type\":\"text\",\"tile\":\"\",\"width\":\"60px\"}}),_c('v-skeleton-loader',{staticClass:\"mx-1 mt-1\",attrs:{\"boilerplate\":\"\",\"type\":\"text\",\"tile\":\"\",\"width\":\"60px\"}})],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-skeleton-loader',{staticClass:\"mx-1 mt-1\",attrs:{\"boilerplate\":\"\",\"type\":\"text\",\"tile\":\"\",\"width\":\"60px\"}}),_c('v-skeleton-loader',{staticClass:\"mx-1 mt-1\",attrs:{\"boilerplate\":\"\",\"type\":\"text\",\"tile\":\"\",\"width\":\"60px\"}}),_c('v-skeleton-loader',{staticClass:\"mx-1 mt-1\",attrs:{\"boilerplate\":\"\",\"type\":\"text\",\"tile\":\"\",\"width\":\"60px\"}})],1)],1),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.syncedDialog = false}}},[_vm._v(\" Close \")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, PropSync } from 'vue-property-decorator';\r\n\r\n@Component\r\nexport default class DocumentDialog extends Vue {\r\n @PropSync('dialog', {required: true, type: Boolean}) private syncedDialog!: string; // document, or video\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DocumentDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DocumentDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DocumentDialog.vue?vue&type=template&id=b789a23a&\"\nimport script from \"./DocumentDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./DocumentDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VCol,VDialog,VIcon,VRow,VSkeletonLoader,VSpacer})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.to)?_c('v-card',{style:(_vm.getStyle()),attrs:{\"tile\":\"\",\"flat\":\"\",\"color\":_vm.color,\"width\":_vm.size,\"height\":_vm.size},on:{\"click\":function($event){return _vm.$emit('click')}}}):_c('v-card',{style:(_vm.getStyle()),attrs:{\"tile\":\"\",\"flat\":\"\",\"color\":_vm.color,\"width\":_vm.size,\"height\":_vm.size,\"to\":_vm.to},on:{\"click\":function($event){return _vm.$emit('click')}}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\r\nimport { Component, Vue, Prop } from 'vue-property-decorator';\r\nimport { EventBus } from '@/app.user/eventBus';\r\n\r\n\r\n@Component\r\nexport default class IconImage extends Vue {\r\n @Prop({required: true, type: String}) public src!: string;\r\n @Prop({required: false, type: String}) public color!: string;\r\n @Prop({required: false, type: String, default: '100px'}) public size!: string;\r\n @Prop({required: false}) public to!: string | object;\r\n\r\n private getStyle() {\r\n // console.log(`mask: url(\"${this.src}\");`)\r\n return `mask: url(\"${this.src}\"); mask-size: cover; -webkit-mask: url(\"${this.src}\"); -webkit-mask-size: cover;`;\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IconImage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IconImage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./IconImage.vue?vue&type=template&id=9b38c566&\"\nimport script from \"./IconImage.vue?vue&type=script&lang=ts&\"\nexport * from \"./IconImage.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\ninstallComponents(component, {VCard})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-card',{staticClass:\"guideline-side-tile\",staticStyle:{\"border-radius\":\"0\",\"overflow-y\":\"scroll\",\"height\":\"70vh\",\"background-color\":\"#ccc\",\"border\":\"1px solid #32779A\"},attrs:{\"elevation\":\"0\"}},_vm._l((_vm.categories),function(category){return _c('div',{key:category.id},[_c('div',{staticClass:\"guideline-side-tile-category\",attrs:{\"id\":category.id}},[_vm._v(\" \"+_vm._s(category.name)+\" \")]),_vm._l((_vm.guidelines),function(guideline){return _c('div',{key:guideline.id},[(guideline.category.name === category.name)?_c('div',{staticClass:\"guideline-side-tile-guideline guideline-side-scroll-items\",attrs:{\"id\":guideline.id}},[_c('div',{staticClass:\"guideline-side-tile-text\",on:{\"click\":function($event){return _vm.routeToGuideline(guideline.id)}}},[_vm._v(\" \"+_vm._s(guideline.name)+\" \")])]):_vm._e()])})],2)}),0)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Emit, Watch } from 'vue-property-decorator';\r\nimport { MbdGuideline } from '@/models';\r\nimport { SimpleEntity } from '@/models/entities';\r\nimport { getModule } from 'vuex-module-decorators';\r\nimport { MbdGuidelinesStore } from '@/app.admin/store/modules';\r\nimport { EventBus } from '@/app.user/eventBus';\r\n\r\nconst guidelinesStore = getModule(MbdGuidelinesStore);\r\n\r\n@Component\r\nexport default class MbdGuidelineSideTile extends Vue {\r\n @Prop({required: true}) public guidelines!: MbdGuideline[];\r\n @Prop({required: true}) public guideline!: MbdGuideline;\r\n @Prop({required: true}) public categories!: SimpleEntity[];\r\n\r\n private guidelineSideItems: any = document.getElementsByClassName('guideline-side-scroll-items');\r\n private scrollItem: any = document.getElementsByClassName('guideline-side-tile');\r\n\r\n private scrollToGuideline(id: string) {\r\n for (let i = 0; i < this.guidelineSideItems.length; i++) {\r\n if (this.guidelineSideItems[i].classList.contains('selected-guideline-side-tile')) {\r\n this.guidelineSideItems[i].classList.remove('selected-guideline-side-tile');\r\n }\r\n if (this.guidelineSideItems[i].id === id) {\r\n this.guidelineSideItems[i].classList.add('selected-guideline-side-tile');\r\n this.guidelineSideItems[i].scrollIntoView();\r\n window.scrollTo(0, 0);\r\n }\r\n }\r\n }\r\n\r\n private routeToGuideline(guidelineId: string) {\r\n if (guidelineId !== '') {\r\n history.pushState({}, '', '/#/mbd-guidelines/' + decodeURIComponent(guidelineId));\r\n EventBus.$emit('change-guidelineId', guidelineId);\r\n } else if (guidelineId === '') {\r\n history.pushState({}, '', '/#/mbd-guidelines');\r\n }\r\n }\r\n\r\n @Watch('guideline')\r\n private onGuidelineChange(newValue: string, oldValue: string) {\r\n if (newValue === oldValue) {\r\n return;\r\n } else {\r\n if (newValue === '') {\r\n for (let i = 0; i < this.guidelineSideItems.length; i++) {\r\n if (this.guidelineSideItems[i].classList.contains('selected-guideline-side-tile')) {\r\n this.guidelineSideItems[i].classList.remove('selected-guideline-side-tile');\r\n }\r\n }\r\n this.scrollItem[0].scrollTo(0, 0);\r\n window.scrollTo(0, 0);\r\n } else {\r\n this.scrollToGuideline(newValue);\r\n }\r\n }\r\n }\r\n}\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MbdGuidelineSideTile.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MbdGuidelineSideTile.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MbdGuidelineSideTile.vue?vue&type=template&id=342692cb&\"\nimport script from \"./MbdGuidelineSideTile.vue?vue&type=script&lang=ts&\"\nexport * from \"./MbdGuidelineSideTile.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./MbdGuidelineSideTile.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\ninstallComponents(component, {VCard})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-card',{staticClass:\"guideline-tile\",attrs:{\"elevation\":\"0\"}},_vm._l((_vm.categories),function(category){return _c('div',{key:category.id},[(_vm.searchTerm == '')?_c('div',{staticClass:\"guideline-tile-category\"},[_vm._v(\" \"+_vm._s(category.name)+\" \")]):_vm._e(),_vm._l((_vm.guidelines),function(guideline){return _c('div',{key:guideline.id},[(_vm.sortByCategory(guideline.category.name, category.name))?_c('div',{staticClass:\"guideline-tile-body guideline-title-scroll-items\",attrs:{\"id\":guideline.id}},[_c('div',{staticClass:\"guideline-tile-title\",on:{\"click\":function($event){return _vm.routeToGuideline(guideline.id)}}},[_c('span',{staticClass:\"guideline-tile-title-text\",domProps:{\"innerHTML\":_vm._s(_vm.highlight(guideline.name))}}),_c('br'),_c('span',{staticClass:\"guideline-tile-title-category\",attrs:{\"title\":\"Category\"},domProps:{\"innerHTML\":_vm._s(_vm.highlight(category.name))}})]),_c('div',{staticStyle:{\"padding-left\":\"20px\",\"padding-right\":\"20px\",\"background-color\":\"white\"}},[_c('div',[_c('span',{staticClass:\"guideline-tile-text\"},[_vm._v(\"Rule\")]),_c('div',{staticStyle:{\"font-size\":\"1.1em\"}},[_c('link-text',{attrs:{\"text\":_vm.highlight(guideline.ruleStatement)}})],1)]),_c('div',[_c('span',{staticClass:\"guideline-tile-text\"},[_vm._v(\"Why\")]),_c('div',{staticStyle:{\"font-size\":\"1.1em\"}},[_c('link-text',{attrs:{\"text\":_vm.highlight(guideline.whyStatement)}})],1)]),(guideline.agnosticInstructions)?_c('div',[_c('span',{staticClass:\"guideline-tile-text\"},[_vm._v(\"Agnostic Instructions\")]),_c('div',{staticStyle:{\"font-size\":\"1.1em\"}},[_c('link-text',{attrs:{\"text\":_vm.highlight(guideline.agnosticInstructions)}})],1)]):_vm._e(),(guideline.instructions.length > 0)?_c('div',[_c('span',{staticClass:\"guideline-tile-text\"},[_vm._v(\"Instructions:\")]),_c('v-list',{attrs:{\"dense\":\"\"}},_vm._l((guideline.instructions),function(instruction){return _c('v-list-group',{key:instruction.id,scopedSlots:_vm._u([{key:\"activator\",fn:function(){return [_c('v-list-item-content',{staticStyle:{\"font-size\":\"1.1em\"}},[_c('v-list-item-title',{domProps:{\"innerHTML\":_vm._s(_vm.highlight(instruction.cadSystem.name + ' v' + instruction.cadSystemVersion.name))}})],1)]},proxy:true}],null,true)},[_c('v-list-item',[_c('v-list-item',{staticStyle:{\"font-size\":\"1.1em\"}},[_c('link-text',{attrs:{\"text\":_vm.highlight(instruction.instructions)}})],1)],1)],1)}),1)],1):_vm._e()])]):_vm._e()])})],2)}),0)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Emit, Watch } from 'vue-property-decorator';\r\nimport { MbdGuideline } from '@/models/entities/mbdGuideline';\r\nimport MarkdownItVue from '@/components/MarkdownItVue.vue';\r\nimport { MbdGuidelinesStore } from '@/app.admin/store/modules';\r\nimport { getModule } from 'vuex-module-decorators';\r\nimport {LinkText} from '@/app.user/components/LinkTextAndPopUp';\r\nimport { EventBus } from '@/app.user/eventBus';\r\n\r\nconst guidelinesStore = getModule(MbdGuidelinesStore);\r\n\r\n@Component({\r\n components: {\r\n MarkdownItVue,\r\n LinkText\r\n }\r\n})\r\n\r\nexport default class MbdGuidelinesTile extends Vue {\r\n @Prop({required: true}) public guidelines!: MbdGuideline[];\r\n @Prop({required: true}) public guideline!: string;\r\n @Prop({required: true}) public categories!: any;\r\n @Prop({required: true}) public searchTerm!: string;\r\n\r\n private sortByCategory(guidelineCategory: string, category: string) {\r\n if (guidelineCategory === category || this.searchTerm.length > 0) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n private isHtml(item: string) {\r\n return item[0] === '<';\r\n }\r\n\r\n private guidelineItems: any = document.getElementsByClassName('guideline-title-scroll-items');\r\n private scrollItem: any = document.getElementsByClassName('guideline-tile');\r\n\r\n private scrollToGuideline(id: string) {\r\n for (let i = 0; i < this.guidelineItems.length; i++) {\r\n if (this.guidelineItems[i].classList.contains('selected-guideline-tile')) {\r\n this.guidelineItems[i].classList.remove('selected-guideline-tile');\r\n }\r\n if (this.guidelineItems[i].id === id) {\r\n this.guidelineItems[i].classList.add('selected-guideline-tile');\r\n\r\n this.guidelineItems[i].scrollIntoView();\r\n window.scrollTo(0, 0);\r\n }\r\n }\r\n }\r\n\r\n // removes images from text so that text can be manipulated without ruining images\r\n private removeTags(text: string) {\r\n const arr = text.split('<');\r\n const imageArr = Array();\r\n let newText = text;\r\n // if arr is less than or equal to one, there are no images so return text as it is\r\n if (arr.length <= 1) {\r\n return [text, []];\r\n }\r\n // if arr is greater than one, every index after 0 starts with an image, so slice to first '>'\r\n // return array with new text with images replaced and imageArray with image texts\r\n if (arr.length > 1) {\r\n for (let i = 0; i < arr.length - 1; i++) {\r\n imageArr.push('<' + arr[i + 1].slice(0, arr[i + 1].indexOf('>')) + '>');\r\n }\r\n for (let i = 0; i < imageArr.length; i++) {\r\n newText = newText.replace(imageArr[i], '***' + [i] + '***');\r\n }\r\n return [newText, imageArr];\r\n }\r\n }\r\n\r\n // adds images back to text\r\n // takes in the text and an array of images\r\n private addTags(text: string, arr: any) {\r\n let newText = text;\r\n // for each item in image array, replace image string in the newText with the image at that index\r\n // return new text\r\n for (let i = 0; i < arr.length; i++) {\r\n newText = newText.replace('***' + [i] + '***', arr[i]);\r\n }\r\n return newText;\r\n }\r\n\r\n // highlights searched text\r\n private highlight(text: string) {\r\n // if no query return text\r\n if (!this.searchTerm) {\r\n return text;\r\n }\r\n // remove images from text\r\n const imageArray = this.removeTags(text);\r\n\r\n let newText = imageArray![0].toString();\r\n const check = new RegExp(this.searchTerm, 'ig');\r\n newText = newText.toString().replace(check, (matchedText, a, b) => {\r\n return '' + matchedText + '';\r\n });\r\n const newerText = this.addTags(newText, imageArray![1]);\r\n return newerText;\r\n }\r\n\r\n private routeToGuideline(guidelineId: string) {\r\n if (guidelineId !== '') {\r\n history.pushState({}, '', '/#/mbd-guidelines/' + decodeURIComponent(guidelineId));\r\n EventBus.$emit('change-guidelineId', guidelineId);\r\n } else if (guidelineId === '') {\r\n history.pushState({}, '', '/#/mbd-guidelines');\r\n }\r\n }\r\n\r\n @Watch('guideline')\r\n private onGuidelineChange(newValue: string, oldValue: string) {\r\n if (newValue === oldValue) {\r\n return;\r\n } else {\r\n if (newValue === '') {\r\n for (let i = 0; i < this.guidelineItems.length; i++) {\r\n if (this.guidelineItems[i].classList.contains('selected-guideline-tile')) {\r\n this.guidelineItems[i].classList.remove('selected-guideline-tile');\r\n }\r\n }\r\n this.scrollItem[0].scrollTo(0, 0);\r\n window.scrollTo(0, 0);\r\n } else {\r\n this.scrollToGuideline(newValue);\r\n }\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MbdGuidelinesTile.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MbdGuidelinesTile.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MbdGuidelinesTile.vue?vue&type=template&id=9c244728&\"\nimport script from \"./MbdGuidelinesTile.vue?vue&type=script&lang=ts&\"\nexport * from \"./MbdGuidelinesTile.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./MbdGuidelinesTile.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListGroup } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\ninstallComponents(component, {VCard,VList,VListGroup,VListItem,VListItemContent,VListItemTitle})\n","export * from './VideoInfoResponse';\r\n","enum PermissionsEnum {\r\n // Access\r\n Login = 0x10,\r\n AdminPanel = 0x11,\r\n\r\n // Content Levels\r\n FreeAccess = 0x60,\r\n SubscriberL1Access = 0x61,\r\n Internal = 0x62,\r\n\r\n // Features\r\n ExploreMbdAccess = 0x80,\r\n CadToolkitAccess = 0x81,\r\n TrainingAccess = 0x82,\r\n CoursesAccess = 0x83,\r\n FileDownloadAccess = 0x84,\r\n OnlyFreeFileDownloadAccess = 0x85,\r\n DictionaryCardAccess = 0x86,\r\n MbdGuidelinesAccess = 0x87,\r\n ProgressCheckmarkAccess = 0x88,\r\n\r\n}\r\n\r\nenum ContentAccessLevelsEnum {\r\n None = 0,\r\n Free = 1,\r\n SubscriptionL1 = 2,\r\n Internal = 100,\r\n}\r\n\r\nconst permToContentLevelMap: Record = {\r\n [PermissionsEnum.FreeAccess]: ContentAccessLevelsEnum.Free,\r\n [PermissionsEnum.SubscriberL1Access]: ContentAccessLevelsEnum.SubscriptionL1,\r\n [PermissionsEnum.Internal]: ContentAccessLevelsEnum.Internal,\r\n};\r\n\r\nconst contentLevelToPermMap: Record = {\r\n [ContentAccessLevelsEnum.Free]: PermissionsEnum.FreeAccess,\r\n [ContentAccessLevelsEnum.SubscriptionL1]: PermissionsEnum.SubscriberL1Access,\r\n [ContentAccessLevelsEnum.Internal]: PermissionsEnum.Internal,\r\n};\r\n\r\nexport {\r\n PermissionsEnum,\r\n ContentAccessLevelsEnum,\r\n permToContentLevelMap,\r\n contentLevelToPermMap\r\n};\r\n\r\n","/**\r\n * @summary An edit model used to house original and modified values of an object\r\n * @description This can only function on simple objects that can be easily deep copied.\r\n * Computed fields and functions are lost. Use CloneableEditModel if you need to maintain functions.\r\n */\r\nexport class EditModel {\r\n // These are for external state management\r\n public editing: boolean = false;\r\n public modified: boolean = false;\r\n public deleted: boolean = false;\r\n public new: boolean;\r\n\r\n /** The original item, this will never change. */\r\n public original: T;\r\n\r\n /** The temporary working value, this is what should be edited directly. */\r\n public temp: T;\r\n\r\n /** The committed, modified value. This is what should be referenced for display. */\r\n public value: T;\r\n\r\n /** The previous value before the last value was committed. Essentially a history value. */\r\n public previousValue: T;\r\n\r\n constructor(original: T, isNew = false) {\r\n this.original = original;\r\n this.new = isNew;\r\n this.value = JSON.parse(JSON.stringify(original));\r\n this.temp = JSON.parse(JSON.stringify(original));\r\n this.previousValue = JSON.parse(JSON.stringify(original));\r\n }\r\n\r\n /** Commits the current value to the previousValue field and the temp value to the value field */\r\n public commit() {\r\n this.previousValue = JSON.parse(JSON.stringify(this.value));\r\n this.value = JSON.parse(JSON.stringify(this.temp));\r\n }\r\n\r\n /** Reset the temp variable to the current value, such as after cancelling an edit */\r\n public resetTemp() {\r\n this.temp = JSON.parse(JSON.stringify(this.value));\r\n }\r\n\r\n /** Restores the previously set value to previousValue, such as when a commit has to be reverted */\r\n public restorePreviousValue() {\r\n if (JSON.stringify(this.previousValue) === JSON.stringify(this.original)) {\r\n this.modified = false;\r\n }\r\n this.value = JSON.parse(JSON.stringify(this.previousValue));\r\n }\r\n\r\n /** Restores the entire object back to it's original value */\r\n public restore() {\r\n this.value = JSON.parse(JSON.stringify(this.original));\r\n this.previousValue = JSON.parse(JSON.stringify(this.original));\r\n this.temp = JSON.parse(JSON.stringify(this.original));\r\n this.modified = false;\r\n }\r\n}\r\n","import { CreateEditMetadataModel } from '../metadata';\r\nimport { VimeoVideoEditResponse } from './VimeoVideoEditResponse';\r\n\r\nexport class CreateEditVimeoVideoModel {\r\n public id: string = '';\r\n\r\n public vimeoId: number = 0;\r\n public videoPicturesId: number = 0;\r\n\r\n public name: string = '';\r\n public description: string = '';\r\n public notes: string = '';\r\n public metadata: CreateEditMetadataModel;\r\n\r\n public index: number = -1;\r\n\r\n constructor() {\r\n this.metadata = new CreateEditMetadataModel();\r\n }\r\n\r\n public FromResponse(model: VimeoVideoEditResponse) {\r\n this.id = model.id;\r\n this.name = model.name;\r\n this.description = model.description;\r\n this.notes = model.notes;\r\n this.vimeoId = model.vimeoVideoId;\r\n this.videoPicturesId = model.vimeoPicturesId;\r\n this.index = model.index;\r\n this.metadata = new CreateEditMetadataModel();\r\n this.metadata.FromResponse(model.metadata);\r\n }\r\n\r\n public Clone() {\r\n const clone = new CreateEditVimeoVideoModel();\r\n\r\n clone.id = this.id;\r\n clone.name = this.name;\r\n clone.description = this.description;\r\n clone.notes = this.notes;\r\n clone.vimeoId = this.vimeoId;\r\n clone.videoPicturesId = this.videoPicturesId;\r\n clone.index = this.index;\r\n clone.metadata = this.metadata.Clone();\r\n\r\n return clone;\r\n }\r\n}\r\n","// tslint:disable: variable-name\r\n\r\nconst BaseUrl = window.location.origin;\r\nconst ApiPrefix = '/api';\r\nconst ApiVersion = '/v1';\r\nconst ApiBaseUrl = BaseUrl + ApiPrefix + ApiVersion;\r\n\r\nconst AdminApiBaseUrl = ApiBaseUrl + '/admin';\r\n\r\nconst AdminBaseUrls = {\r\n TagBase: `${AdminApiBaseUrl}/tag`,\r\n TagsBase: `${AdminApiBaseUrl}/tags`,\r\n\r\n PropertyBase: `${AdminApiBaseUrl}/property`,\r\n PropertiesBase: `${AdminApiBaseUrl}/properties`,\r\n\r\n FileSystemBase: `${AdminApiBaseUrl}/filesystem`,\r\n\r\n FileBase: `${AdminApiBaseUrl}/file`,\r\n FilesBase: `${AdminApiBaseUrl}/files`,\r\n\r\n PackageBase: `${AdminApiBaseUrl}/package`,\r\n PackagesBase: `${AdminApiBaseUrl}/packages`,\r\n\r\n StandardBase: `${AdminApiBaseUrl}/standard`,\r\n StandardsBase: `${AdminApiBaseUrl}/standards`,\r\n\r\n StandardBodyBase: `${AdminApiBaseUrl}/standardBody`,\r\n StandardBodiesBase: `${AdminApiBaseUrl}/standardBodies`,\r\n\r\n MbdGuidelineBase: `${AdminApiBaseUrl}/mbdGuideline`,\r\n MbdGuidelinesBase: `${AdminApiBaseUrl}/mbdGuidelines`,\r\n\r\n CourseBase: `${AdminApiBaseUrl}/course`,\r\n CoursesBase: `${AdminApiBaseUrl}/courses`,\r\n\r\n ThumbnailBase: `${ApiBaseUrl}/thumbnail`,\r\n AdminThumbnailBase: `${AdminApiBaseUrl}/thumbnail`,\r\n ThumbnailsBase: `${ApiBaseUrl}/thumbnails`,\r\n\r\n UserManagement: `${AdminApiBaseUrl}/usermanagement`,\r\n\r\n VimeoBase: `${AdminApiBaseUrl}/vimeo`,\r\n\r\n WooBase: `${AdminApiBaseUrl}/woo`,\r\n};\r\n\r\nconst UserBaseUrls = {\r\n\r\n};\r\n\r\nconst GlobalBaseUrls = {\r\n ThumbnailBase: `${ApiBaseUrl}/thumbnail`,\r\n IdentityBase: `${ApiBaseUrl}/identity`,\r\n ProgressBase: `${ApiBaseUrl}/progress`\r\n};\r\n\r\nconst ApiRoutes = {\r\n ApiBaseUrl: ApiBaseUrl,\r\n AdminBaseUrl: AdminApiBaseUrl,\r\n\r\n User: {\r\n Content: {\r\n Search: `${ApiBaseUrl}/content/search`,\r\n CadToolkits: `${ApiBaseUrl}/content/cadtoolkit`,\r\n ExploreMbe: `${ApiBaseUrl}/content/explorembe`,\r\n Training: `${ApiBaseUrl}/content/training`,\r\n GetFileDownloadUrl: (fileId: string ) => `${ApiBaseUrl}/content/file/${fileId}/download`,\r\n GetFileInfo: (fileId: string ) => `${ApiBaseUrl}/content/file/${fileId}`,\r\n GetSpecialContentNames: `${ApiBaseUrl}/content/specialcontentnames`,\r\n },\r\n Course: {\r\n GetCourse: (courseId: string ) => `${ApiBaseUrl}/content/course/${courseId}`,\r\n GetCourseModule: (courseId: string, moduleId: string ) => `${ApiBaseUrl}/content/course/${courseId}/module/${moduleId}`,\r\n },\r\n MbdGuideline: {\r\n GetGuideline: (guidelineId: string) => `${ApiBaseUrl}/content/guideline/${guidelineId}`,\r\n GetAllGuidelines: `${ApiBaseUrl}/content/guidelines`,\r\n GetCategories: `${ApiBaseUrl}/content/categories`,\r\n }\r\n },\r\n Admin: {\r\n Tags: {\r\n GetAll: AdminBaseUrls.TagsBase,\r\n GetAllQuery: (withCounts: boolean) => `${AdminBaseUrls.TagsBase}?withCounts=${withCounts}`,\r\n GetById: (tagId: string) => `${AdminBaseUrls.TagBase}/${tagId}`,\r\n SubmitAggregateChanges: `${AdminBaseUrls.TagsBase}/submit_changes`,\r\n },\r\n Properties: {\r\n GetAll: AdminBaseUrls.PropertiesBase,\r\n GetById: (propertyId: string ) => `${AdminBaseUrls.PropertyBase}/${propertyId}`,\r\n Delete: (propertyId: string ) => `${AdminBaseUrls.PropertyBase}/${propertyId}`,\r\n Create: AdminBaseUrls.PropertyBase,\r\n CreatePaired: `${AdminBaseUrls.PropertyBase}/paired`,\r\n Edit: (propertyId: string ) => `${AdminBaseUrls.PropertyBase}/${propertyId}`,\r\n EditPaired: (propertyId: string ) => `${AdminBaseUrls.PropertyBase}/paired/${propertyId}`,\r\n },\r\n FileSystem: {\r\n GetRoot: AdminBaseUrls.FileSystemBase,\r\n GetFolder: (folderId: string ) => `${AdminBaseUrls.FileSystemBase}/${folderId}?includeFiles=true`,\r\n GetFolderFolders: (folderId: string) => `${AdminBaseUrls.FileSystemBase}/${folderId}?includeFiles=false`,\r\n RenameFolder: (folderId: string) => `${AdminBaseUrls.FileSystemBase}/${folderId}/rename`,\r\n MoveFolder: (folderId: string) => `${AdminBaseUrls.FileSystemBase}/${folderId}/move`,\r\n CreateFolder: (folderId: string) => `${AdminBaseUrls.FileSystemBase}/${folderId}`,\r\n CreateRootFolder: `${AdminBaseUrls.FileSystemBase}/folder`,\r\n },\r\n Files: {\r\n FindDuplicate: AdminBaseUrls.FileBase + '/isDuplicate',\r\n ChecksumExists: (checksum: string ) => `${AdminBaseUrls.FileBase}/checksum/${checksum}/exists`,\r\n GetAll: AdminBaseUrls.FilesBase,\r\n GetList: `${AdminBaseUrls.FilesBase}/list`,\r\n GetById: (fileId: string ) => `${AdminBaseUrls.FileBase}/${fileId}`,\r\n GetDownloadUrl: (fileId: string ) => `${AdminBaseUrls.FileBase}/${fileId}/downloadUrl`,\r\n GetEditDataById: (fileId: string ) => `${AdminBaseUrls.FileBase}/${fileId}/edit`,\r\n EditFile: (fileId: string ) => `${AdminBaseUrls.FileBase}/${fileId}/edit`,\r\n GetDependents: (fileId: string ) => `${AdminBaseUrls.FileBase}/${fileId}/dependents`,\r\n DeleteFile: (fileId: string ) => `${AdminBaseUrls.FileBase}/${fileId}`,\r\n RenameFile: (fileId: string) => `${AdminBaseUrls.FileBase}/${fileId}/rename`,\r\n MoveFile: (fileId: string) => `${AdminBaseUrls.FileBase}/${fileId}/move`,\r\n CreateFile: AdminBaseUrls.FileBase,\r\n UploadFile: (fileId: string ) => `${AdminBaseUrls.FileBase}/${fileId}/upload`,\r\n ReUploadFile: (fileId: string ) => `${AdminBaseUrls.FileBase}/${fileId}/upload/replace`,\r\n GetPaginatedList: (page: string, fileCount: string, sortBy: string) => `${AdminBaseUrls.FilesBase}/${page}/paginated_list/${fileCount}/${sortBy}`,\r\n },\r\n Packages: {\r\n GetAll: AdminBaseUrls.PackagesBase,\r\n GetList: `${AdminBaseUrls.PackagesBase}/list`,\r\n GetById: (packageId: string ) => `${AdminBaseUrls.PackageBase}/${packageId}`,\r\n Delete: (packageId: string ) => `${AdminBaseUrls.PackageBase}/${packageId}`,\r\n GetEditDataById: (packageId: string ) => `${AdminBaseUrls.PackageBase}/${packageId}/edit`,\r\n CreatePackage: AdminBaseUrls.PackageBase,\r\n EditPackage: (packageId: string ) => `${AdminBaseUrls.PackageBase}/${packageId}/edit`,\r\n },\r\n Standards: {\r\n GetAll: AdminBaseUrls.StandardsBase,\r\n GetMany: AdminBaseUrls.StandardsBase,\r\n GetById: (standardId: string ) => `${AdminBaseUrls.StandardBase}/${standardId}`,\r\n Add: AdminBaseUrls.StandardBase,\r\n Edit: (standardId: string ) => `${AdminBaseUrls.StandardBase}/${standardId}/edit`,\r\n Delete: (standardId: string ) => `${AdminBaseUrls.StandardBase}/${standardId}`,\r\n },\r\n StandardBodies: {\r\n GetAll: AdminBaseUrls.StandardBodiesBase,\r\n GetById: (standardBodyId: string ) => `${AdminBaseUrls.StandardBodyBase}/${standardBodyId}`,\r\n Add: AdminBaseUrls.StandardBodyBase,\r\n Edit: (standardBodyId: string ) => `${AdminBaseUrls.StandardBodyBase}/${standardBodyId}/edit`,\r\n Delete: (standardBodyId: string ) => `${AdminBaseUrls.StandardBodyBase}/${standardBodyId}`,\r\n },\r\n MbdGuideline: {\r\n GetAll: AdminBaseUrls.MbdGuidelinesBase,\r\n GetList: `${AdminBaseUrls.MbdGuidelinesBase}/list`,\r\n GetInstructionsByGuideline: (guidelineId: string ) => `${AdminBaseUrls.MbdGuidelineBase}/${guidelineId}/instructions`,\r\n GetAllCategories: `${AdminBaseUrls.MbdGuidelinesBase}/categories`,\r\n GetById: (guidelineId: string ) => `${AdminBaseUrls.MbdGuidelineBase}/${guidelineId}`,\r\n CreateGuideline: AdminBaseUrls.MbdGuidelineBase,\r\n EditGuideline: (guidelineId: string ) => `${AdminBaseUrls.MbdGuidelineBase}/${guidelineId}/edit`,\r\n SubmitAggregateChanges: `${AdminBaseUrls.MbdGuidelinesBase}/categories/edit`,\r\n Delete: (guidelineId: string) => `${AdminBaseUrls.MbdGuidelineBase}/${guidelineId}`,\r\n },\r\n Course: {\r\n GetAll: AdminBaseUrls.CoursesBase,\r\n GetById: (courseId: string ) => `${AdminBaseUrls.CourseBase}/${courseId}`,\r\n GetModuleById: (courseId: string, moduleId: string ) => `${AdminBaseUrls.CourseBase}/${courseId}/module/${moduleId}`,\r\n Delete: (courseId: string ) => `${AdminBaseUrls.CourseBase}/${courseId}`,\r\n GetEditDataById: (courseId: string ) => `${AdminBaseUrls.CourseBase}/${courseId}/edit`,\r\n GetImageById: (courseId: string ) => `${AdminBaseUrls.CourseBase}/${courseId}/image`,\r\n Create: AdminBaseUrls.CourseBase,\r\n Edit: (courseId: string ) => `${AdminBaseUrls.CourseBase}/${courseId}/edit`,\r\n },\r\n UserManagement: {\r\n GetUsers: `${AdminBaseUrls.UserManagement}/users`,\r\n GetRoleNames: `${AdminBaseUrls.UserManagement}/roles/names`,\r\n GetRoles: `${AdminBaseUrls.UserManagement}/roles`,\r\n GetPermissions: `${AdminBaseUrls.UserManagement}/permissions`,\r\n GetUser: (username: string) => `${AdminBaseUrls.UserManagement}/user/${username}`,\r\n ActivateUser: (username: string) => `${AdminBaseUrls.UserManagement}/user/${username}/activate`,\r\n DeActivateUser: (username: string) => `${AdminBaseUrls.UserManagement}/user/${username}/deactivate`,\r\n UpdateUserRole: (username: string) => `${AdminBaseUrls.UserManagement}/user/${username}/role`,\r\n DeleteUser: (username: string) => `${AdminBaseUrls.UserManagement}/user/${username}`, // DELETE\r\n GetSpecialContentNames: `${AdminBaseUrls.UserManagement}/specialcontent/names`,\r\n UpdateUserSpecialContent: (username: string) => `${AdminBaseUrls.UserManagement}/user/${username}/specialcontent`,\r\n EditSpecialContent: (specialContentID: string) => `${AdminBaseUrls.UserManagement}/specialcontent/${specialContentID}`, // POST\r\n DeleteSpecialContent: (specialContentID: string) => `${AdminBaseUrls.UserManagement}/specialcontent/${specialContentID}`, // DELETE\r\n AddSpecialContent: `${AdminBaseUrls.UserManagement}/specialcontent`, // POST\r\n CreateRole: `${AdminBaseUrls.UserManagement}/role`, // POST\r\n EditRole: (roleName: string) => `${AdminBaseUrls.UserManagement}/role/${roleName}`, // POST\r\n DeleteRole: (roleName: string) => `${AdminBaseUrls.UserManagement}/role/${roleName}`, // DELETE\r\n AddPermToRole: (roleName: string, permId: string) => `${AdminBaseUrls.UserManagement}/role/${roleName}/perms/${permId}`, // POST\r\n RemovePermFromRole: (roleName: string, permId: string) => `${AdminBaseUrls.UserManagement}/role/${roleName}/perms/${permId}`, // DELETE\r\n ChangeRoleLevel: (roleName: string, level: number) => `${AdminBaseUrls.UserManagement}/role/${roleName}/level/${level}`, // POST\r\n\r\n GetDeniedUsers: `${AdminBaseUrls.UserManagement}/denied-users`,\r\n CreateDeniedUser: `${AdminBaseUrls.UserManagement}/denied-users/create`,\r\n RemoveDeniedUser: (email: string) => `${AdminBaseUrls.UserManagement}/denied-users/${email}/remove`\r\n },\r\n MiscData: {\r\n GetContentAccessLevels: `${AdminApiBaseUrl}/contentAccess/levels`\r\n },\r\n Vimeo: {\r\n GetVideosList: `${AdminBaseUrls.VimeoBase}/videos`,\r\n GetVideosListWithQuery: (query: string) => `${AdminBaseUrls.VimeoBase}/videos/query/${query}`\r\n },\r\n Woo: {\r\n GetNewUsersList: `${AdminBaseUrls.WooBase}/users`\r\n },\r\n Thumbnails: {\r\n GetAll: AdminBaseUrls.ThumbnailsBase,\r\n Get: (thumbnailId: string ) => `${AdminBaseUrls.ThumbnailBase}/${thumbnailId}`,\r\n Create: AdminBaseUrls.AdminThumbnailBase,\r\n },\r\n },\r\n Global: {\r\n Identity: {\r\n Register: `${GlobalBaseUrls.IdentityBase}/register`,\r\n CreateUser: `${GlobalBaseUrls.IdentityBase}/createuser`,\r\n EditUser: `${GlobalBaseUrls.IdentityBase}/edituser`,\r\n Login: `${GlobalBaseUrls.IdentityBase}/login`,\r\n GetUser: (userID: string) => `${GlobalBaseUrls.IdentityBase}/user/${userID}`,\r\n Validate: `${GlobalBaseUrls.IdentityBase}/validate`,\r\n Refresh: `${GlobalBaseUrls.IdentityBase}/refresh`,\r\n SendEmailVerification: `${GlobalBaseUrls.IdentityBase}/send_email_verification`,\r\n ReSendEmailVerification: `${GlobalBaseUrls.IdentityBase}/resend_email_verification`,\r\n SendPasswordReset: `${GlobalBaseUrls.IdentityBase}/send_password_reset`,\r\n RequestPasswordReset: `${GlobalBaseUrls.IdentityBase}/request_password_reset`,\r\n SendDowngradeUserEmail: `${GlobalBaseUrls.IdentityBase}/send_downgrade_user_email`,\r\n ResetPassword: `${GlobalBaseUrls.IdentityBase}/reset_password`,\r\n VerifyEmailAndSetupAccount: `${GlobalBaseUrls.IdentityBase}/verify_and_setup`,\r\n ConfirmEmail: `${GlobalBaseUrls.IdentityBase}/confirm_email`,\r\n SendAssessment: `${GlobalBaseUrls.IdentityBase}/send_assessment`,\r\n GetAllLastLogIns: `${GlobalBaseUrls.IdentityBase}/last_log_ins`,\r\n GetUserLastLogIn: (username: string) => `${GlobalBaseUrls.IdentityBase}/last_log_in/${username}`\r\n },\r\n Progress: {\r\n CreateCourseProgress: `${GlobalBaseUrls.ProgressBase}/create_course`,\r\n CreateModuleProgress: `${GlobalBaseUrls.ProgressBase}/create_module`,\r\n CreateFileProgress: `${GlobalBaseUrls.ProgressBase}/create_file`,\r\n EditCourseProgress: `${GlobalBaseUrls.ProgressBase}/edit_course`,\r\n EditModuleProgress: `${GlobalBaseUrls.ProgressBase}/edit_module`,\r\n EditFileProgress: `${GlobalBaseUrls.ProgressBase}/edit_file`,\r\n GetAllUserProgress: (username: string) => `${GlobalBaseUrls.ProgressBase}/username/${username}`,\r\n GetAllUserFileProgress: (username: string) => `${GlobalBaseUrls.ProgressBase}/username/${username}/file`,\r\n GetCourseProgress: (username: string, courseId: string) => `${GlobalBaseUrls.ProgressBase}/username/${username}/course/${courseId}`,\r\n GetModuleProgress: (username: string, courseId: string, moduleId: string) => `${GlobalBaseUrls.ProgressBase}/username/${username}/course/${courseId}/module/${moduleId}`,\r\n GetFileProgress: (username: string, fileId: string) => `${GlobalBaseUrls.ProgressBase}/username/${username}/file/${fileId}`,\r\n },\r\n Thumbnails: {\r\n GetUrl: (thumbnailId: string ) => `${GlobalBaseUrls.ThumbnailBase}/${thumbnailId}/url`,\r\n }\r\n },\r\n\r\n\r\n};\r\n\r\nexport default ApiRoutes;\r\n","import axios, { CancelTokenSource } from 'axios';\r\nimport JwtService from '@/utility/JwtService';\r\n\r\nexport default class HttpHelper {\r\n public static encode = encodeURIComponent;\r\n\r\n public static getHeaders(contentType: string = 'application/json'): object {\r\n return {\r\n 'Authorization': `Bearer ${JwtService.getToken()}`,\r\n 'Content-Type': contentType\r\n };\r\n }\r\n\r\n public static formatQueryParams(params: GetParams) {\r\n return Object.keys(params).map((key: string) => {\r\n return `${this.encode(key)}=${this.encode(params[key])}`;\r\n }).join('&');\r\n }\r\n\r\n public static async get(uri: string, params?: GetParams) {\r\n if (params && Object.keys(params).length > 0) {\r\n uri = `${uri}?${this.formatQueryParams(params)}`;\r\n }\r\n\r\n return await axios.get(`${uri}`, {\r\n headers: this.getHeaders()\r\n });\r\n }\r\n\r\n public static async upload(\r\n uri: string,\r\n data: FormData,\r\n cancelToken: CancelTokenSource,\r\n progressCallback: (progressEvent: ProgressEvent) => void) {\r\n return await axios.post(`${uri}`, data, {\r\n headers: {\r\n 'Authorization': `Bearer ${JwtService.getToken()}`,\r\n 'Content-Type': 'multipart/form-data'\r\n },\r\n cancelToken: cancelToken.token,\r\n onUploadProgress: progressCallback\r\n });\r\n }\r\n\r\n public static async postMultipart(uri: string, data: any) {\r\n return await axios.post(`${uri}`, data, {\r\n headers: this.getHeaders('multipart/form-data'),\r\n });\r\n }\r\n\r\n public static async post(uri: string, data: any) {\r\n return await axios.post(`${uri}`, data, {\r\n headers: this.getHeaders(),\r\n });\r\n }\r\n\r\n public static async postWithProgress(uri: string, data: any, progressCallback: (progressEvent: ProgressEvent) => void) {\r\n return await axios.post(`${uri}`, data, {\r\n headers: this.getHeaders(),\r\n onUploadProgress: progressCallback\r\n });\r\n }\r\n\r\n public static async update(uri: string, data: any) {\r\n return await axios.put(`${uri}`, data, {\r\n headers: this.getHeaders(),\r\n });\r\n }\r\n\r\n public static async put(uri: string, data: any) {\r\n return await axios.put(`${uri}`, data, {\r\n headers: this.getHeaders()\r\n });\r\n }\r\n\r\n public static async delete(uri: string) {\r\n return await axios.delete(uri, {\r\n headers: this.getHeaders()\r\n });\r\n }\r\n}\r\n","import { SearchFlag, ExclusionFlag, SearchFilters, EntityFilterParams } from '@/models/interfaces';\r\n\r\nconst filterObject = (item: any, search: string, excludedKeys: Record = {}, level = 0): boolean => {\r\n const keys = Object.keys(item);\r\n\r\n for (let i = 0; i < keys.length; i++) {\r\n const key = keys[i];\r\n\r\n // key is excluded, and current depth is deeper that the keys max depth\r\n if (key in excludedKeys && level <= excludedKeys[key].maxDepth) {\r\n continue;\r\n }\r\n\r\n if (typeof item[key] === 'string') {\r\n if ((item[key] as string).toLowerCase().includes(search)) {\r\n return true;\r\n }\r\n } else if (Array.isArray(item[key])) {\r\n if (filterArray(item[key] as any[], search, excludedKeys, level + 1)) {\r\n return true;\r\n }\r\n } else if (typeof item[key] === 'object') {\r\n if (filterObject(item[key], search, excludedKeys, level + 1)) {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n};\r\n\r\nconst filterArray = (array: any[], search: string, excludedKeys: Record = {}, level = 0): boolean => {\r\n\r\n for (let i = 0; i < array.length; i++) {\r\n const element = array[i];\r\n if (typeof element === 'string') {\r\n if ((element as string).toLowerCase().includes(search)) {\r\n return true;\r\n }\r\n } else if (Array.isArray(element)) {\r\n if (filterArray(element as any[], search, excludedKeys, level + 1)) {\r\n return true;\r\n }\r\n } else if (typeof element === 'object') {\r\n if (filterObject(element, search, excludedKeys, level + 1)) {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n};\r\n\r\n// any == true: Returns true on first match\r\n// any = false: Returns true only if all match\r\n/*const filterArrayByArray = (array: any[], comparedTo: any[], prop: string, any: boolean = true) => {\r\n for (let i = 0; i < array.length; i++) {\r\n for (let j = 0; j < comparedTo.length; j++) {\r\n if (filterObject(array[i], ))\r\n }\r\n }\r\n}*/\r\n\r\nconst filterEntityCollectionByIds = (item: any, prop: string, ids: Record, exclusive: boolean) => {\r\n if (Object.keys(ids).length > 0) {\r\n\r\n // Item property doesn't exist, or has no items\r\n if ((!item[prop] || item[prop].length === 0) && exclusive) {\r\n if (exclusive) { // Exclusive filter, item doesn't have id, exclude\r\n return false;\r\n }\r\n return true; // Non-exclusive filter, item doesn't have id, include\r\n }\r\n\r\n for (let i = 0; i < item[prop].length; i++) {\r\n if (item[prop][i].id in ids) {\r\n if (exclusive) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n if (exclusive) {\r\n return false; // No match found, skip this item\r\n }\r\n }\r\n return true; // No tag filters, return true\r\n};\r\n// // start here.\r\nconst filterEntityCollectionByNames = (item: any, prop: string, names: Record, exclusive: boolean) => {\r\n if (Object.keys(names).length > 0) {\r\n // Item property doesn't exist, or has no items\r\n if ((!item[prop] || item[prop].length === 0) && exclusive) {\r\n if (exclusive) { // Exclusive filter, item doesn't have id, exclude\r\n return false;\r\n }\r\n return true; // Non-exclusive filter, item doesn't have id, include\r\n }\r\n\r\n for (let i = 0; i < item[prop].length; i++) {\r\n if (item[prop][i].value in names || item[prop][i].principleValue in names) {\r\n if (exclusive) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n if (exclusive) {\r\n return false; // No match found, skip this item\r\n }\r\n }\r\n return true; // No tag filters, return true\r\n};\r\n\r\nconst filterBySearch = (array: any[], search: string, excludedKeys: Record = {}) => {\r\n const output: any[] = [];\r\n const searchLower = search.toLowerCase();\r\n\r\n array.forEach((item) => {\r\n // Only search if search input exists\r\n if (search !== null && search !== undefined && search !== '') {\r\n if (filterObject(item, searchLower, excludedKeys)) {\r\n output.push(item);\r\n }\r\n }\r\n });\r\n\r\n return output;\r\n};\r\n\r\n// itemSearchProp is for search a property of an item, not the item itself, it does not change what is returned\r\nconst filterEntities = (args: EntityFilterParams, itemSearchProp?: string) => {\r\n const items = args.items;\r\n const search = args.search;\r\n const searchFlags = args.searchFlags;\r\n const filterFlags = args.filterFlags;\r\n\r\n const output: any[] = [];\r\n const searchLower = search.toLowerCase();\r\n const excludedKeys = getSearchFlagExclusions(searchFlags);\r\n\r\n items.forEach((item) => {\r\n\r\n let searchItem = item;\r\n if (itemSearchProp) {\r\n searchItem = item[itemSearchProp];\r\n }\r\n\r\n if (filterFlags.tags) {\r\n if (!args.tagsFilter || args.exclusiveTags === undefined) {\r\n throw Error('Missing required argument to filter tags');\r\n }\r\n if (Object.keys(args.tagsFilter).length > 0 && searchItem.metadata) { // Only filter if there are tags in the filter\r\n const include = filterEntityCollectionByIds(searchItem.metadata, 'tags', args.tagsFilter, args.exclusiveTags);\r\n if (include) {\r\n output.push(item);\r\n return;\r\n }\r\n }\r\n }\r\n\r\n if (filterFlags.properties) {\r\n if (!args.propertiesFilter || args.exclusiveProperties === undefined) {\r\n throw Error('Missing required argument to filter properties');\r\n }\r\n if (Object.keys(args.propertiesFilter).length > 0 && searchItem.metadata) {\r\n const include = filterEntityCollectionByNames(searchItem.metadata, 'propertyValues', args.propertiesFilter, args.exclusiveProperties);\r\n if (include) {\r\n output.push(item);\r\n return;\r\n }\r\n }\r\n }\r\n\r\n if (filterFlags.properties) {\r\n if (!args.propertiesFilter || args.exclusiveProperties === undefined) {\r\n throw Error('Missing required argument to filter properties');\r\n }\r\n if (Object.keys(args.propertiesFilter).length > 0 && searchItem.metadata) {\r\n const include = filterEntityCollectionByNames(searchItem.metadata, 'propertyValuePairs',\r\n args.propertiesFilter, args.exclusiveProperties);\r\n if (include) {\r\n output.push(item);\r\n return;\r\n }\r\n }\r\n }\r\n\r\n // Only search if search input exists\r\n if (search !== null && search !== undefined && search !== '') {\r\n if (filterObject(searchItem, searchLower, excludedKeys)) {\r\n output.push(item);\r\n }\r\n }\r\n });\r\n\r\n return output;\r\n};\r\n\r\nconst getSearchFlagExclusions = (flags: SearchFlag[]) => {\r\n const excludedKeys: Record = {\r\n id : {value: 'id', maxDepth: 100}\r\n };\r\n\r\n flags.forEach((flag) => {\r\n const maxDepth = flag.maxDepth === undefined ? 0 : flag.maxDepth;\r\n if (!flag.value) {\r\n if (typeof flag.props === 'string') {\r\n excludedKeys[flag.props] = {value: flag.props, maxDepth: maxDepth};\r\n } else { // Array\r\n flag.props.forEach((prop) => {\r\n excludedKeys[prop] = {value: prop, maxDepth: maxDepth};\r\n });\r\n }\r\n }\r\n });\r\n\r\n return excludedKeys;\r\n};\r\n\r\nexport {\r\n filterObject,\r\n filterArray,\r\n filterBySearch,\r\n filterEntities,\r\n filterEntityCollectionByIds,\r\n getSearchFlagExclusions\r\n};\r\n","import { Version } from '@/models';\r\nimport { IHasVersion } from '@/models/interfaces';\r\n\r\n\r\n/**\r\n * Parses and replaces the version portion of the response with a Version class\r\n */\r\nconst parseVersion = (item: IHasVersion) => {\r\n const existing = item.version;\r\n item.version = new Version(existing.majorVersion, existing.minorVersion);\r\n};\r\n\r\n/**\r\n * Parses and replaces the version portion of the response with a Version class\r\n */\r\nconst parseVersions = (items: IHasVersion[]) => {\r\n items.forEach((item) => {\r\n parseVersion(item);\r\n });\r\n};\r\n\r\nexport {\r\n parseVersion,\r\n parseVersions\r\n};\r\n","import { ApiResponse } from '@/models';\r\nimport store from '@/store/store';\r\n\r\nexport class ApiHelpers {\r\n\r\n /**\r\n * Wraps the API call and returns the APIResponse\r\n * @param func\r\n */\r\n public static async wrapCall(func: () => Promise>): Promise> {\r\n const response = await func();\r\n if (!response.success) {\r\n store.dispatch('setErrors', response.errors);\r\n }\r\n return response;\r\n }\r\n\r\n /**\r\n * Wraps the API call and returns the result or undefined\r\n * @param func\r\n */\r\n public static async wrapCallWithResult(func: () => Promise>): Promise {\r\n const response = await func();\r\n if (!response.success || !response.result) {\r\n store.dispatch('setErrors', response.errors);\r\n return;\r\n } else {\r\n return response.result;\r\n }\r\n }\r\n\r\n public static async wrapCallAndSetValue(apiFunc: () => Promise>, setFunc: (value: TResult) => void)\r\n : Promise {\r\n const response = await apiFunc();\r\n\r\n if (!response.success || !response.result) {\r\n if (response.errors === undefined) {\r\n throw new Error('Error Response is undefined, was this call supposed to receive a result?');\r\n }\r\n store.dispatch('setErrors', response.errors);\r\n return false;\r\n } else {\r\n setFunc(response.result);\r\n return true;\r\n }\r\n }\r\n\r\n public static async wrapCallAndPerformAction(apiFunc: () => Promise, actionFunc: () => void)\r\n : Promise {\r\n const response = await apiFunc();\r\n\r\n if (!response.success) {\r\n store.dispatch('setErrors', response.errors);\r\n return false;\r\n } else {\r\n actionFunc();\r\n return true;\r\n }\r\n }\r\n\r\n public static async wrapCallAndPerformAsyncAction(apiFunc: () => Promise, actionFunc: () => Promise)\r\n : Promise {\r\n const response = await apiFunc();\r\n\r\n if (!response.success) {\r\n store.dispatch('setErrors', response.errors);\r\n return false;\r\n } else {\r\n await actionFunc();\r\n return true;\r\n }\r\n }\r\n\r\n /**\r\n * Wraps an API call and returns the result of a modification function\r\n * Handles api errors\r\n */\r\n public static async wrapCallAndModifyValue(\r\n apiFunc: () => Promise>,\r\n modifyFunc: (value: TResult) => TReturn)\r\n : Promise {\r\n const response = await apiFunc();\r\n\r\n if (!response.success || !response.result) {\r\n store.dispatch('setErrors', response.errors);\r\n return;\r\n } else {\r\n return modifyFunc(response.result);\r\n }\r\n }\r\n}\r\n","const OSCAR_PATH = 'oscar_path';\r\n\r\nexport const getPath = () => {\r\n const oscarPath = window.localStorage.getItem(OSCAR_PATH);\r\n\r\n if (!oscarPath) {\r\n return '';\r\n }\r\n return oscarPath;\r\n};\r\n\r\nexport const savePath = (path: string) => {\r\n window.localStorage.setItem(OSCAR_PATH, path);\r\n};\r\n\r\nexport const destroyPath = () => {\r\n window.localStorage.removeItem(OSCAR_PATH);\r\n};\r\n\r\nexport default { getPath, savePath, destroyPath };\r\n","import { NavigationGuard, Route, RawLocation } from 'vue-router';\r\nimport { StateStore, SearchStore, AuthStore } from '@/store/modules';\r\nimport { getModule } from 'vuex-module-decorators';\r\nimport { RouteMeta, ToolbarConfig, RouteAction, PropsPromise } from '@/models/interfaces';\r\nimport { Dictionary, RouteRecord } from 'vue-router/types/router';\r\nimport RoutingService from '@/utility/RoutingService';\r\n\r\n// const stateStore = getModule(StateStore);\r\n// const searchStore = getModule(SearchStore);\r\n// const authStore = getModule(AuthStore);\r\n\r\n/**\r\n * Contains hooks and all their supporting logic to handle complex data retrieval rules, and progress reporting management for routes\r\n */\r\nexport class RouteManager {\r\n\r\n private static _stateStore: StateStore | null = null;\r\n static get stateStore() {\r\n if (!this._stateStore) {\r\n this._stateStore = getModule(StateStore);\r\n }\r\n\r\n return this._stateStore;\r\n }\r\n\r\n private static _searchStore: SearchStore | null = null;\r\n static get searchStore() {\r\n if (!this._searchStore) {\r\n this._searchStore = getModule(SearchStore);\r\n }\r\n\r\n return this._searchStore;\r\n }\r\n\r\n private static _authStore: AuthStore | null = null;\r\n static get authStore() {\r\n if (!this._authStore) {\r\n this._authStore = getModule(AuthStore);\r\n }\r\n\r\n return this._authStore;\r\n }\r\n\r\n\r\n\r\n public static beforeEach: NavigationGuard = async (to: Route, from: Route, next) => {\r\n if (RouteManager.stateStore.routeStepsComplete !== 0 ) {\r\n await RouteManager.stateStore.SetRouteStepsComplete(0);\r\n }\r\n await RouteManager.stateStore.SetRouteSteps(RouteManager.getRouteActionsCount(to.meta));\r\n await RouteManager.stateStore.SetLoading(true);\r\n\r\n // If not authenticated, do a full session check\r\n if (!RouteManager.authStore.Authenticated) {\r\n await RouteManager.authStore.CheckSession();\r\n } else { // Else only do a simple one\r\n await RouteManager.authStore.LocalSessionCheck();\r\n }\r\n await RouteManager.stateStore.IterateRouteStepsComplete();\r\n\r\n if (!RouteManager.authStore.Authenticated) {\r\n\r\n // If this is a login route, skip all actions to avoid infinite loop back to login\r\n if (to.name === 'Login' || to.name === 'ForgotPassword' || to.name === 'ResetPassword' || to.name === 'VerifyAndSetPassword') {\r\n next();\r\n return;\r\n }\r\n RoutingService.savePath(to.fullPath);\r\n next('/login'); // Redirect to login if not authenticated\r\n } else {\r\n\r\n if (to.meta.nav && to.meta.nav.title) {\r\n document.title = to.meta.nav.title;\r\n }\r\n RoutingService.destroyPath();\r\n next();\r\n }\r\n }\r\n\r\n public static beforeResolve: NavigationGuard = async (to, from, next) => {\r\n if (!from.fullPath.startsWith('/course/') || !to.fullPath.startsWith('/course/')) {\r\n RouteManager.stateStore.setPrevPath(from.fullPath);\r\n }\r\n\r\n if (RouteManager.shouldClearSearch(to.meta, from.meta)) {\r\n RouteManager.searchStore.ClearSearch();\r\n }\r\n\r\n const promises: Promise[] = [];\r\n\r\n to.matched.forEach(async (route) => {\r\n let routePromise;\r\n // Don't try and queue up requests if not logged in\r\n if (RouteManager.authStore.Authenticated && route.meta.actions) {\r\n routePromise = RouteManager.resolveRouteActions(route, to.params, to.query);\r\n } else {\r\n RouteManager.stateStore.IterateRouteStepsComplete();\r\n routePromise = RouteManager.stateStore.SetLoading(false);\r\n }\r\n\r\n promises.push(routePromise);\r\n });\r\n\r\n await Promise.all(promises);\r\n\r\n RouteManager.setToolbarState(to.meta);\r\n next();\r\n }\r\n\r\n /**\r\n * Handles the assignment of a data result to a prop on a route component\r\n */\r\n public static handlePropsAssignment(route: Route, routeName: string) {\r\n if (!route.meta.actions) {\r\n throw new Error(`RouteMeta.actions is undefined in route props for '${routeName}'`);\r\n }\r\n if (!route.meta.actions.propsResults) {\r\n throw new Error(`RouteMeta.actions.propsResults is undefined in route props for '${routeName}'`);\r\n }\r\n\r\n if (!route.matched || route.matched.length <= 1) {\r\n return route.meta.actions.propsResults;\r\n }\r\n\r\n const record = route.matched.find((routeRecord) => routeRecord.name === routeName);\r\n\r\n if (!record) {\r\n throw new Error(`Unable to find matching RouteRecord for route: '${routeName}'`);\r\n }\r\n\r\n return record.meta.actions.propsResults;\r\n }\r\n\r\n /**\r\n * Determines if search queries should be cleared on this route change\r\n */\r\n private static shouldClearSearch = (toMeta: any, fromMeta: any) => {\r\n if (toMeta && toMeta.isSearch) {\r\n return false;\r\n }\r\n\r\n if (!toMeta || !fromMeta) { // Going to or from non-search, clear to be safe\r\n return true;\r\n }\r\n\r\n if (!toMeta.toolbar || !toMeta.toolbar.search) { // Going to a non-search route, clear search to be safe\r\n return true;\r\n }\r\n\r\n if (toMeta.toolbar && toMeta.toolbar.search && fromMeta.toolbar && fromMeta.toolbar.search) {\r\n if (fromMeta.toolbar.searchKey !== toMeta.toolbar.searchKey) {\r\n return true; // Going from one type of search to another, clear\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Sets toolbar sorting and searching state in the SearchStore.\r\n */\r\n private static setToolbarState = (toMeta: RouteMeta) => {\r\n if (toMeta && toMeta.toolbar && toMeta.toolbar.search) {\r\n const config: ToolbarConfig = toMeta.toolbar;\r\n\r\n // Set Sort By Options\r\n if (config.sortByOptions && config.sortByOptions.length > 0) {\r\n RouteManager.searchStore.SetSortByOptions(config.sortByOptions);\r\n } else {\r\n RouteManager.searchStore.ClearSortByOptions();\r\n }\r\n\r\n // Set Search Flags\r\n if (config.searchFlags && config.searchFlags.length > 0) {\r\n RouteManager.searchStore.SetSearchFlags(config.searchFlags);\r\n } else {\r\n RouteManager.searchStore.ClearSearchFlags();\r\n }\r\n\r\n // Set Filter Flags\r\n if (config.filterFlags) {\r\n RouteManager.searchStore.SetSearchFilterFlags(config.filterFlags);\r\n } else {\r\n RouteManager.searchStore.ClearSearchFilterFlags();\r\n }\r\n } else {\r\n RouteManager.searchStore.ClearSortByOptions();\r\n RouteManager.searchStore.ClearSearchFlags();\r\n RouteManager.searchStore.ClearSearchFilterFlags();\r\n }\r\n }\r\n\r\n /**\r\n * Kicks off and the async & sync route action resolutions\r\n */\r\n // tslint:disable-next-line: max-line-length\r\n private static resolveRouteActions = async (to: Route | RouteRecord, routeParams: Dictionary, query: Dictionary) => {\r\n const meta: RouteMeta = to.meta;\r\n\r\n if (!meta.actions) {\r\n return;\r\n }\r\n\r\n RouteManager.startRouteActions(meta, routeParams, query);\r\n\r\n const blockingPromises = meta.actions.blockingPromises;\r\n const propsPromises = meta.actions.propsPromises;\r\n const promises = meta.actions.promises;\r\n routeParams.testProp = 'more testing';\r\n\r\n await RouteManager.stateStore.IterateRouteStepsComplete(); // Got to basic step 2/2, all route actions fired\r\n\r\n RouteManager.trackAllRouteActions(promises, blockingPromises, propsPromises);\r\n await RouteManager.handleRoutePropPromises(meta, propsPromises);\r\n await RouteManager.waitForRouteActions(blockingPromises);\r\n RouteManager.waitForRouteActions(promises);\r\n }\r\n\r\n /**\r\n * Parses & initializes the route actions and starts their execution\r\n */\r\n private static startRouteActions = (meta: RouteMeta, params: Dictionary, query: Dictionary) => {\r\n const actions = meta.actions;\r\n\r\n if (!actions) {\r\n return;\r\n }\r\n\r\n if (!actions.promises) {\r\n actions.promises = [];\r\n }\r\n if (!actions.blockingPromises) {\r\n actions.blockingPromises = [];\r\n }\r\n if (!actions.propsPromises) {\r\n actions.propsPromises = []; // Blocking by default\r\n }\r\n\r\n // Get data from normal endpoints\r\n if (actions.simple && actions.simple.length > 0) {\r\n actions.simple.forEach((action: any) => {\r\n if (typeof action === 'function') {\r\n const func = action as () => Promise;\r\n actions.promises!.push(func());\r\n } else { // Is obj\r\n const routeAction = action as RouteAction;\r\n if (routeAction.prop) { // Is a props promise\r\n actions.propsPromises!.push({\r\n prop: routeAction.prop,\r\n promise: routeAction.action()\r\n });\r\n } else if (routeAction.blocking) {\r\n actions.blockingPromises!.push(routeAction.action());\r\n } else {\r\n actions.promises!.push(routeAction.action());\r\n }\r\n }\r\n });\r\n }\r\n\r\n // Get data with options or manual query params\r\n if (actions.withOptions && actions.withOptions.length > 0) {\r\n actions.withOptions.forEach((optionAction) => {\r\n if (optionAction.prop) {\r\n actions.propsPromises!.push({\r\n prop: optionAction.prop,\r\n promise: optionAction.action(optionAction.param)\r\n });\r\n } else if (optionAction.blocking) {\r\n actions.blockingPromises!.push(optionAction.action(optionAction.param));\r\n } else {\r\n actions.promises!.push(optionAction.action(optionAction.param));\r\n }\r\n });\r\n }\r\n\r\n // Get data with query params\r\n if (actions.withQuery && actions.withQuery.length > 0) {\r\n actions.withQuery.forEach((queryAction) => {\r\n let promise: Promise;\r\n\r\n if (typeof(queryAction.paramKeys) === 'string') { // Single query param\r\n promise = queryAction.action(query[queryAction.paramKeys]);\r\n\r\n } else if (Array.isArray(queryAction.paramKeys)) { // Multiple query params\r\n const args = queryAction.paramKeys.map((value) => query[value]);\r\n promise = queryAction.action.apply(null, args);\r\n\r\n } else {\r\n throw new Error('Expected query paramKeys of type string or array, got neither');\r\n }\r\n\r\n if (queryAction.prop) {\r\n actions.propsPromises!.push({\r\n prop: queryAction.prop,\r\n promise: promise\r\n });\r\n } else if (queryAction.blocking) {\r\n actions.blockingPromises!.push(promise);\r\n } else {\r\n actions.promises!.push(promise);\r\n }\r\n });\r\n }\r\n\r\n // Get data with route params\r\n if (actions.withRouteParams && actions.withRouteParams.length > 0) {\r\n if (!params) {\r\n throw Error('Missing params for requiredParamsData fetch');\r\n }\r\n\r\n actions.withRouteParams.forEach((paramsAction) => {\r\n let promise: Promise;\r\n if (typeof(paramsAction.params) === 'string') {\r\n promise = paramsAction.action(params[paramsAction.params]);\r\n } else if (Array.isArray(paramsAction.params)) {\r\n const args = paramsAction.params.map((value) => params[value]);\r\n promise = paramsAction.action.apply(null, args);\r\n } else {\r\n throw new Error('Expected params of type string or array, got neither');\r\n }\r\n\r\n if (paramsAction.prop) {\r\n actions.propsPromises!.push({\r\n prop: paramsAction.prop,\r\n promise: promise\r\n });\r\n } else if (paramsAction.blocking) {\r\n actions.blockingPromises!.push(promise);\r\n } else {\r\n actions.promises!.push(promise);\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Tracks all actions (blocking or not) steps in order to manage loading state\r\n */\r\n private static trackAllRouteActions = async (promises?: Promise[], blockingPromises?: Promise[],\r\n propsPromises?: PropsPromise[]) => {\r\n if (blockingPromises) {\r\n await Promise.all(blockingPromises);\r\n }\r\n\r\n if (propsPromises) {\r\n const promisesItems: Promise[] = [];\r\n propsPromises.forEach((propPromise) => {\r\n promisesItems.push(propPromise.promise);\r\n });\r\n\r\n await Promise.all(promisesItems);\r\n }\r\n\r\n if (promises) {\r\n await Promise.all(promises);\r\n }\r\n\r\n await RouteManager.stateStore.SetLoading(false);\r\n }\r\n\r\n /**\r\n * Waits for a set of actions to complete and iterates the loading steps as they resolve\r\n */\r\n private static waitForRouteActions = async (promises?: Promise[]) => {\r\n if (!promises) {\r\n return;\r\n }\r\n\r\n for (let i = 0; i < promises.length; i++) {\r\n promises[i].then(() => {\r\n RouteManager.stateStore.IterateRouteStepsComplete();\r\n });\r\n }\r\n\r\n await Promise.all(promises);\r\n }\r\n\r\n /**\r\n * Handles route actions that are PropsPromise.\r\n */\r\n private static handleRoutePropPromises = async (meta: RouteMeta, propsPromises?: PropsPromise[]) => {\r\n if (!meta) {\r\n throw new Error('Cannot handle undefined or empty route meta');\r\n }\r\n if (!meta.actions) {\r\n throw new Error('Cannot handle undefined or empty RouteMeta actions');\r\n }\r\n if (!propsPromises || propsPromises.length === 0) {\r\n // tslint:disable-next-line: no-console\r\n console.error('Props promises is undefined or empty', propsPromises);\r\n return;\r\n // throw new Error('Cannot handle undefined or empty Props promises');\r\n }\r\n\r\n const promises: Promise[] = [];\r\n const values: Record = {};\r\n\r\n propsPromises.forEach((propPromise) => {\r\n promises.push(propPromise.promise);\r\n propPromise.promise.then((value) => {\r\n values[propPromise.prop] = value;\r\n RouteManager.stateStore.IterateRouteStepsComplete();\r\n });\r\n });\r\n\r\n await Promise.all(promises);\r\n\r\n meta.actions.propsResults = values;\r\n return values;\r\n }\r\n\r\n /**\r\n * Calculates the number of steps this route change needs to resolve\r\n */\r\n private static getRouteActionsCount = (meta: RouteMeta) => {\r\n let steps = 2;\r\n const actions = meta.actions;\r\n\r\n if (!actions) {\r\n return steps;\r\n }\r\n\r\n // Get data from normal endpoints\r\n if (actions.simple && actions.simple.length > 0) {\r\n steps += actions.simple.length;\r\n }\r\n\r\n // Get data with query params\r\n if (actions.withOptions && actions.withOptions.length > 0) {\r\n steps += actions.withOptions.length;\r\n }\r\n\r\n // Get data with route params\r\n if (actions.withRouteParams && actions.withRouteParams.length > 0) {\r\n steps += actions.withRouteParams.length;\r\n }\r\n\r\n return steps;\r\n }\r\n\r\n}\r\n","import * as jwtJsDecode from 'jwt-js-decode';\r\nimport { BasicUserResponse } from '@/app.admin/models';\r\n\r\nconst TOKEN_KEY = 'oscar_token';\r\n\r\n// Gets the JWT & Refresh Token as an Object\r\nexport const getTokenObj = (): TokenObj | null => {\r\n const tokenJson = window.localStorage.getItem(TOKEN_KEY);\r\n\r\n if (!tokenJson) {\r\n return null;\r\n }\r\n\r\n try {\r\n return JSON.parse(tokenJson);\r\n } catch { // Could not parse, destroy and return\r\n destroyToken();\r\n return null;\r\n }\r\n};\r\n\r\n// Gets the JWT itself\r\nexport const getToken = () => {\r\n const tokenJson = window.localStorage.getItem(TOKEN_KEY);\r\n\r\n if (!tokenJson) {\r\n return '';\r\n }\r\n const tokens: TokenObj = JSON.parse(tokenJson);\r\n return tokens.token;\r\n};\r\n\r\nexport const saveToken = (token: TokenObj) => {\r\n const tokenJson = JSON.stringify(token);\r\n\r\n window.localStorage.setItem(TOKEN_KEY, tokenJson);\r\n};\r\n\r\nexport const destroyToken = () => {\r\n window.localStorage.removeItem(TOKEN_KEY);\r\n};\r\n\r\nexport const getTokenPayload = (token: string): RawJwtValues => {\r\n return jwtJsDecode.jwtDecode(token).payload as RawJwtValues;\r\n};\r\n\r\nexport default { getTokenObj, getToken, saveToken, destroyToken, getTokenPayload };\r\n","export * from './cadSystemInstruction';\r\nexport * from './createEditMbdGuidelineModel';\r\nexport * from './mbdGuideline';\r\nexport * from './createEditGuidelineRequest';\r\n","import { Version, FileType, PropertyValuePairIds, CreateEditMetadataRequest} from '@/models/entities';\r\nimport { CreateEditVimeoVideoRequest } from './CreateEditVimeoVideoRequest';\r\nimport { CreateEditCourseModel } from './CreateEditCourseModel';\r\nimport { FileData } from '@/models/interfaces';\r\n\r\nexport class CreateEditCourseRequest {\r\n [index: string]: any;\r\n\r\n public id: string = '';\r\n public name: string;\r\n public description: string;\r\n public notes: string;\r\n public thumbnailId: string | null;\r\n public contentAccessLevel: string;\r\n public videos: CreateEditVimeoVideoRequest[] = [];\r\n public metadata: CreateEditMetadataRequest;\r\n\r\n constructor(\r\n name: string,\r\n description: string,\r\n notes: string,\r\n thumbnailId: string | null,\r\n videos: CreateEditVimeoVideoRequest[],\r\n metadata: CreateEditMetadataRequest,\r\n contentAccessLevel: string = '') {\r\n this.name = name;\r\n this.description = description;\r\n this.notes = notes;\r\n this.thumbnailId = thumbnailId;\r\n this.contentAccessLevel = contentAccessLevel;\r\n this.videos = videos;\r\n this.metadata = metadata;\r\n }\r\n\r\n /** Creates the Request from the CreateEdit Model */\r\n public static FromModel(model: CreateEditCourseModel) {\r\n const videos = model.videos.map((video) => CreateEditVimeoVideoRequest.FromModel(video));\r\n const metadata = CreateEditMetadataRequest.FromModel(model.metadata);\r\n\r\n const output = new CreateEditCourseRequest(\r\n model.name,\r\n model.description,\r\n model.notes,\r\n model.thumbnailId,\r\n videos,\r\n metadata,\r\n model.contentAccessLevel);\r\n\r\n output.id = model.id;\r\n return output;\r\n }\r\n}\r\n","export * from './tag';\r\nexport * from './property';\r\nexport * from './simpleEntity';\r\nexport * from './version';\r\nexport * from './iNamedEntity';\r\n\r\n// Folders\r\n\r\nexport * from './package';\r\nexport * from './property';\r\nexport * from './file';\r\nexport * from './mbdGuideline';\r\nexport * from './standard';\r\nexport * from './fileSystem';\r\nexport * from './metadata';\r\nexport * from './course';\r\nexport * from './progress';\r\n","export * from './errorsResponse';\r\nexport * from './errorResponse';\r\nexport * from './authResponse';\r\nexport * from './apiResponse';\r\n\r\n\r\nexport * from './vimeo';\r\n","const nameof = (name: Extract): string => name;\r\n\r\nconst formatFileSize = (size: number) => {\r\n if (size > 1024 * 1024 * 1024 * 1024) {\r\n return (size / 1024 / 1024 / 1024 / 1024).toFixed(2) + ' TB';\r\n } else if (size > 1024 * 1024 * 1024) {\r\n return (size / 1024 / 1024 / 1024).toFixed(2) + ' GB';\r\n } else if (size > 1024 * 1024) {\r\n return (size / 1024 / 1024).toFixed(2) + ' MB';\r\n } else if (size > 1024) {\r\n return (size / 1024).toFixed(2) + ' KB';\r\n }\r\n return size.toString() + ' B';\r\n};\r\n\r\nconst formatTransferRate = (bytes: number) => {\r\n const bits = bytes * 8;\r\n if (bits > 1024 * 1024 * 1024 * 1024) {\r\n return (bits / 1024 / 1024 / 1024 / 1024).toFixed(2) + ' Tb';\r\n } else if (bits > 1024 * 1024 * 1024) {\r\n return (bits / 1024 / 1024 / 1024).toFixed(2) + ' Gb';\r\n } else if (bits > 1024 * 1024) {\r\n return (bits / 1024 / 1024).toFixed(2) + ' Mb';\r\n } else if (bits > 1024) {\r\n return (bits / 1024).toFixed(2) + ' Kb';\r\n }\r\n return bits.toString() + ' b';\r\n};\r\n\r\n/**\r\n * Finds the index of an item by it's key & value\r\n * @param list The array of values\r\n * @param key The name of the objects key\r\n * @param value The key value to look for\r\n * @returns The index of the item, or -1\r\n */\r\nconst indexOfByKey = (list: any[], key: any, value: any) => {\r\n for (let i = 0; i < list.length; i++) {\r\n if (list[i][key] === value) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n};\r\n\r\nconst arrayPropsToHashByPropAction = (list: any[], keyProp: string, valueProp: string, action: (value: any) => any) => {\r\n const record: Record = {};\r\n\r\n list.forEach((value: any) => {\r\n let key: string = '';\r\n if (typeof value[keyProp] === 'string') {\r\n key = action(value[keyProp]);\r\n } else if (typeof value[keyProp] === 'number') {\r\n key = action(value[keyProp].toString());\r\n } else {\r\n throw new Error('Unsupported key type');\r\n }\r\n\r\n\r\n record[key] = value[valueProp];\r\n });\r\n\r\n return record;\r\n};\r\n\r\n// Creates a record of the specified key prop and value prop\r\nconst arrayPropsToHashByProp = (list: any[], keyProp: string, valueProp: string) => {\r\n const record: Record = {};\r\n\r\n list.forEach((value: any) => {\r\n let key: string = '';\r\n if (typeof value[keyProp] === 'string') {\r\n key = value[keyProp];\r\n } else if (typeof value[keyProp] === 'number') {\r\n key = value[keyProp].toString();\r\n } else {\r\n throw new Error('Unsupported key type');\r\n }\r\n\r\n\r\n record[key] = value[valueProp];\r\n });\r\n\r\n return record;\r\n};\r\n\r\nconst arrayToHashByProp = (list: any[], prop: string) => {\r\n const record: Record = {};\r\n\r\n list.forEach((value: any) => {\r\n let key: string = '';\r\n if (typeof value[prop] === 'string') {\r\n key = value[prop];\r\n } else if (typeof value[prop] === 'number') {\r\n key = value[prop].toString();\r\n } else {\r\n throw new Error('Unsupported key type: ' + typeof value[prop]);\r\n }\r\n\r\n\r\n record[key] = value;\r\n });\r\n\r\n return record;\r\n};\r\n\r\n// Creates a hash with the key being the value of the `prop`, the key is manipulated by the `action`\r\nconst arrayToHashByPropAndAction = (list: any[], prop: string, action: (key: any) => any) => {\r\n const record: Record = {};\r\n\r\n list.forEach((value: any) => {\r\n let key: string = '';\r\n if (typeof value[prop] === 'string') {\r\n key = value[prop];\r\n } else if (typeof value[prop] === 'number') {\r\n key = value[prop].toString();\r\n } else {\r\n throw new Error('Unsupported key type');\r\n }\r\n\r\n\r\n record[action(key)] = value;\r\n });\r\n\r\n return record;\r\n};\r\n\r\nconst arrayToHash = (list: string[] | number[]) => {\r\n const record: Record = {};\r\n\r\n list.forEach((value: string | number) => {\r\n if (typeof value === 'number') {\r\n record[value.toString()] = value;\r\n return;\r\n }\r\n record[value] = value;\r\n });\r\n\r\n return record;\r\n};\r\n\r\nconst arrayToMap = (list: string[] | number[]) => {\r\n const map: Map = new Map();\r\n\r\n list.forEach((value: string | number) => {\r\n map.set(value, value);\r\n });\r\n\r\n return map;\r\n};\r\n\r\n\r\nconst groupArray = (list: T[], prop: string) => {\r\n const record: Record = {};\r\n\r\n list.forEach((value) => {\r\n if (!((value[prop] as any) in record)) {\r\n record[value[prop]] = [];\r\n }\r\n\r\n record[value[prop]].push(value);\r\n });\r\n\r\n return record;\r\n};\r\n\r\n// https://stackoverflow.com/a/27747377\r\n// dec2hex :: Integer -> String\r\n// i.e. 0-255 -> '00'-'ff'\r\nconst dec2hex = (dec: number) => {\r\n return ('0' + dec.toString(16)).substr(-2);\r\n};\r\n\r\n// https://stackoverflow.com/a/27747377\r\n// generateId :: Integer -> String\r\nconst generateId = (len: number) => {\r\n const arr = new Uint8Array((len || 40) / 2);\r\n window.crypto.getRandomValues(arr);\r\n return Array.from(arr, dec2hex).join('');\r\n};\r\n\r\nfunction capitalizeFirstLetter(str: string) {\r\n return str[0].toUpperCase() + str.slice(1);\r\n }\r\n\r\nconst simpleDeepCopy = (item: any) => {\r\n const seen: any[] = [];\r\n const stringified = JSON.stringify(item, (key, val) => {\r\n if (val != null && typeof val === 'object') {\r\n if (seen.indexOf(val) >= 0) {\r\n return;\r\n }\r\n seen.push(val);\r\n }\r\n return val;\r\n });\r\n return JSON.parse(stringified);\r\n};\r\n\r\nexport {\r\n nameof,\r\n groupArray,\r\n formatFileSize,\r\n formatTransferRate,\r\n indexOfByKey,\r\n arrayToHash,\r\n arrayToMap,\r\n arrayPropsToHashByPropAction,\r\n arrayPropsToHashByProp,\r\n arrayToHashByProp,\r\n arrayToHashByPropAndAction,\r\n generateId,\r\n capitalizeFirstLetter,\r\n simpleDeepCopy\r\n};\r\n","export * from './enums';\r\n","// tslint:disable: variable-name\r\n\r\nimport { Module, VuexModule, Mutation, Action, MutationAction } from 'vuex-module-decorators';\r\nimport store from '@/store/store';\r\n\r\n// Global application states\r\n@Module({ namespaced: true, name: 'State', dynamic: true, store: store })\r\nexport default class StateStore extends VuexModule {\r\n\r\n //#region Toast\r\n\r\n private _successToastMessage = '';\r\n private _successToast = false;\r\n private _successToastTimeout = 6000;\r\n\r\n get successToastMessage() {\r\n return this._successToastMessage;\r\n }\r\n\r\n get successToast() {\r\n return this._successToast;\r\n }\r\n\r\n get successToastTimeout() {\r\n return this._successToastTimeout;\r\n }\r\n\r\n @Mutation\r\n private setSuccessToastMessage(value: string) {\r\n this._successToastMessage = value;\r\n }\r\n\r\n @Mutation\r\n private toggleSuccessToast(value: boolean) {\r\n this._successToast = value;\r\n }\r\n\r\n @Mutation\r\n private setSuccessToastTimeout(value: number) {\r\n this._successToastTimeout = value;\r\n }\r\n\r\n @Mutation\r\n private setSuccessToast(data: {message: string, timeout: number}) {\r\n this._successToastTimeout = data.timeout;\r\n this._successToastMessage = data.message;\r\n this._successToast = true;\r\n }\r\n\r\n @Action\r\n public async SetSuccessToastMessage(value: string) {\r\n this.setSuccessToastMessage(value);\r\n }\r\n\r\n @Action\r\n public async SetSuccessToastTimeout(value: number) {\r\n this.setSuccessToastTimeout(value);\r\n }\r\n\r\n @Action\r\n public async ToggleSuccessToast(value: boolean) {\r\n this.toggleSuccessToast(value);\r\n if (!value) {\r\n this.setSuccessToastMessage('');\r\n }\r\n }\r\n\r\n @Action\r\n public async SetSuccessToast(data: {message: string, timeout: number}) {\r\n this.setSuccessToast(data);\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Loading & Steps\r\n\r\n private _globalLoading = false; // Global loading state, unused atm\r\n private _loading: boolean = false;\r\n private _routeSteps: number = 0;\r\n private _routeStepsComplete: number = 0;\r\n private _prevPath: string = '';\r\n private _currentTab: number = 0;\r\n private _itemsPerPage: number = JSON.parse(localStorage.getItem('itemsPerPage') || '20');\r\n\r\n get loading() {\r\n return this._loading;\r\n }\r\n\r\n get routeSteps() {\r\n return this._routeSteps;\r\n }\r\n\r\n get routeStepsComplete() {\r\n return this._routeStepsComplete;\r\n }\r\n\r\n get prevPath() {\r\n return this._prevPath;\r\n }\r\n\r\n get currentTab() {\r\n return this._currentTab;\r\n }\r\n\r\n get itemsPerPage() {\r\n return this._itemsPerPage;\r\n }\r\n\r\n @Mutation\r\n public setPrevPath(value: string) {\r\n this._prevPath = value;\r\n }\r\n\r\n @Mutation\r\n public setCurrentTab(value: number) {\r\n this._currentTab = value;\r\n }\r\n\r\n @Mutation\r\n public setItemsPerPage(value: number) {\r\n this._itemsPerPage = value;\r\n localStorage.setItem('itemsPerPage', JSON.stringify(value));\r\n }\r\n\r\n @Mutation\r\n private setLoading(value: boolean) {\r\n this._loading = value;\r\n }\r\n\r\n @Mutation\r\n private setRouteSteps(value: number) {\r\n this._routeSteps = value;\r\n }\r\n\r\n @Mutation\r\n private setRouteStepsComplete(value: number) {\r\n this._routeStepsComplete = value;\r\n }\r\n\r\n @Action\r\n public async SetLoading(value: boolean) {\r\n if (value && this._routeSteps !== 0) {\r\n this.setRouteStepsComplete(0);\r\n }\r\n\r\n this.setLoading(value);\r\n }\r\n\r\n @Action\r\n public SetRouteSteps(value: number) {\r\n this.setRouteSteps(value);\r\n }\r\n\r\n @Action\r\n public AddRouteSteps(value: number) {\r\n this.setRouteSteps(this.routeSteps + value);\r\n }\r\n\r\n @Action\r\n public SetRouteStepsComplete(value: number) {\r\n this.setRouteStepsComplete(value);\r\n }\r\n\r\n @Action\r\n public IterateRouteStepsComplete() {\r\n this.setRouteStepsComplete(this._routeStepsComplete + 1);\r\n }\r\n\r\n //#endregion\r\n}\r\n","// tslint:disable: variable-name\r\n\r\nimport Vue from 'vue';\r\nimport { Module, VuexModule, Mutation, Action, MutationAction } from 'vuex-module-decorators';\r\nimport store from '@/store/store';\r\nimport { arrayToHash } from '@/utility/Utilities';\r\nimport { SortByOption, SearchFilters, SearchFlag, EntityFilterParams } from '@/models/interfaces';\r\n\r\n@Module({ namespaced: true, name: 'Search', dynamic: true, store: store })\r\nexport default class SearchStore extends VuexModule {\r\n public _search: string = '';\r\n public _searchFilterFlags: SearchFilters = {\r\n tags: false,\r\n date: false,\r\n properties: false\r\n };\r\n\r\n public _searchFlags: SearchFlag[] = [];\r\n\r\n public _sortBy: SortByOption = { text: '', prop: '' };\r\n public _sortByOptions: SortByOption[] = [];\r\n public _sortDesc: boolean = false;\r\n\r\n public _tagsFilterHash: Record = {};\r\n public _exclusiveTags: boolean = true;\r\n\r\n public _propertiesFilterHash: Record = {};\r\n public _exclusiveProperties: boolean = true;\r\n\r\n /**\r\n * Gets the filter params for filtering entities\r\n * Notes that the items prop is empty and needs to be filled in\r\n */\r\n get entityFilterParams(): EntityFilterParams {\r\n return {\r\n items: [],\r\n search: this.search,\r\n searchFlags: this.searchFlags,\r\n filterFlags: this.searchFilterFlags,\r\n tagsFilter: this.tagsFilterHash,\r\n exclusiveTags: this.exclusiveTags,\r\n propertiesFilter: this.propertiesFilterHash,\r\n exclusiveProperties: this.exclusiveProperties\r\n };\r\n }\r\n\r\n get search() {\r\n return this._search;\r\n }\r\n\r\n get searchFilterFlags() {\r\n return this._searchFilterFlags;\r\n }\r\n\r\n get searchFlags() {\r\n return this._searchFlags;\r\n }\r\n\r\n get sortBy() {\r\n return this._sortBy;\r\n }\r\n\r\n get sortByOptions() {\r\n return this._sortByOptions;\r\n }\r\n\r\n\r\n get sortDesc() {\r\n return this._sortDesc;\r\n }\r\n\r\n get tagsFilter() {\r\n return Object.values(this._tagsFilterHash);\r\n }\r\n\r\n get tagsFilterHash() {\r\n return this._tagsFilterHash;\r\n }\r\n\r\n get exclusiveTags() {\r\n return this._exclusiveTags;\r\n }\r\n\r\n get propertiesFilter() {\r\n return Object.values(this._propertiesFilterHash);\r\n }\r\n\r\n get propertiesFilterHash() {\r\n return this._propertiesFilterHash;\r\n }\r\n\r\n get exclusiveProperties() {\r\n return this._exclusiveProperties;\r\n }\r\n\r\n /* ---- Tags Getters ---- */\r\n\r\n get tagActiveInFilter() {\r\n return (id: string) => {\r\n return id in this._tagsFilterHash;\r\n };\r\n }\r\n\r\n get propertyActiveInFilter() {\r\n return (name: string) => {\r\n return name in this._propertiesFilterHash;\r\n };\r\n }\r\n\r\n //#region Sorting\r\n @Mutation\r\n private setSortBy(value: SortByOption) {\r\n this._sortBy = value;\r\n }\r\n\r\n @Mutation\r\n private setSortByOptions(value: SortByOption[]) {\r\n this._sortByOptions = value;\r\n }\r\n\r\n @Mutation\r\n private setSortDesc(value: boolean) {\r\n this._sortDesc = value;\r\n }\r\n\r\n @Action\r\n public async SetSortBy(value?: SortByOption) {\r\n if (!value) {\r\n value = { text: '', prop: ''};\r\n }\r\n this.setSortBy(value);\r\n }\r\n\r\n @Action\r\n public async SetSortByOptions(value: SortByOption[]) {\r\n this.setSortByOptions(value);\r\n }\r\n\r\n @Action\r\n public async ClearSortByOptions() {\r\n this.setSortByOptions([]);\r\n }\r\n\r\n @Action\r\n public async SetSortDesc(value: boolean) {\r\n this.setSortDesc(value);\r\n }\r\n //#endregion\r\n\r\n //#region Search\r\n @Mutation\r\n private setSearch(value: string) {\r\n this._search = value;\r\n }\r\n\r\n @Mutation\r\n private setSearchFilterFlags(value: SearchFilters) {\r\n this._searchFilterFlags = value;\r\n }\r\n\r\n @Mutation\r\n private setSearchFlags(value: SearchFlag[]) {\r\n this._searchFlags = value;\r\n }\r\n\r\n @Action\r\n public async ClearSearchFilterFlags() {\r\n this.setSearchFilterFlags({tags: false, properties: false, date: false});\r\n }\r\n\r\n @Action\r\n public async ClearSearchFlags() {\r\n this.setSearchFlags([]);\r\n }\r\n\r\n @Action\r\n public async ClearSearch() {\r\n this.setSearch('');\r\n }\r\n\r\n @Action\r\n public async SetSearch(value: string) {\r\n this.setSearch(value);\r\n }\r\n\r\n @Action\r\n public async SetSearchFilterFlags(value: SearchFilters) {\r\n this.setSearchFilterFlags(value);\r\n }\r\n\r\n @Action\r\n public async SetSearchFlags(value: SearchFlag[]) {\r\n this.setSearchFlags(value);\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Tags\r\n @Mutation\r\n private _setTagsFilter(value: string[]) {\r\n this._tagsFilterHash = arrayToHash(value);\r\n }\r\n\r\n @Mutation\r\n private _setExclusiveTags(value: boolean) {\r\n this._exclusiveTags = value;\r\n }\r\n\r\n @Mutation\r\n private _addTagToFilter(id: string) {\r\n Vue.set(this._tagsFilterHash, id, id);\r\n }\r\n\r\n @Action\r\n public async SetTagsFilter(value: string[]) {\r\n this._setTagsFilter(value);\r\n }\r\n\r\n @Action\r\n public async SetExclusiveTags(value: boolean) {\r\n this._setExclusiveTags(value);\r\n }\r\n\r\n @Action\r\n public async addOrRemoveTagFilter(id: string) {\r\n if (!this.tagActiveInFilter(id)) {\r\n this._addTagToFilter(id);\r\n }\r\n }\r\n //#endregion\r\n\r\n //#region Properties\r\n @Mutation\r\n private _setPropertiesFilter(value: string[]) {\r\n this._propertiesFilterHash = arrayToHash(value);\r\n }\r\n\r\n @Mutation\r\n private _setExclusiveProperties(value: boolean) {\r\n this._exclusiveProperties = value;\r\n }\r\n\r\n @Mutation\r\n private _addPropertyToFilter(name: string) {\r\n Vue.set(this._tagsFilterHash, name, name);\r\n }\r\n\r\n @Action\r\n public async SetPropertiesFilter(value: string[]) {\r\n this._setPropertiesFilter(value);\r\n }\r\n\r\n @Action\r\n public async SetExclusiveProperties(value: boolean) {\r\n this._setExclusiveProperties(value);\r\n }\r\n\r\n @Action\r\n public async addOrRemovePropertyFilter(name: string) {\r\n if (!this.propertyActiveInFilter(name)) {\r\n this._addPropertyToFilter(name);\r\n }\r\n }\r\n//#endregion\r\n\r\n}\r\n","import store from '@/store/store';\r\nimport { Module, VuexModule, Mutation, Action, MutationAction } from 'vuex-module-decorators';\r\nimport JwtService from '@/utility/JwtService';\r\nimport ApiService from '@/utility/ApiService';\r\nimport { JwtValues, ErrorResponse } from '@/models';\r\nimport { ErrorResponseType } from '@/_common/enums';\r\nimport { AccountRegistrationRequest } from '@/models/requests';\r\nimport { indexOfByKey } from '@/utility/Utilities';\r\nimport { ApiHelpers } from '@/_helpers';\r\nimport ApiRoutes from '@/_common/ApiRoutes';\r\nimport { ContentLevelResponse } from '@/models/permissions';\r\n\r\n@Module({ namespaced: true, name: 'Global', dynamic: true, store: store })\r\nexport default class GlobalDataStore extends VuexModule {\r\n private contentAccessLevels: ContentLevelResponse[] = [];\r\n\r\n get ContentAccessLevels() {\r\n return this.contentAccessLevels;\r\n }\r\n\r\n get ContentAccessLevel() {\r\n return (level: number) => {\r\n const index = indexOfByKey(this.contentAccessLevels, 'level', level);\r\n if (index === -1) {\r\n throw new Error(`Content access level for level ${level} not found`);\r\n }\r\n };\r\n }\r\n\r\n // Used only for internal state management\r\n @Mutation\r\n private setContentAccessValues(values: ContentLevelResponse[]) {\r\n this.contentAccessLevels = values;\r\n }\r\n\r\n @Action\r\n public async FetchContentAccessValues() {\r\n return await ApiHelpers.wrapCallAndSetValue(async () =>\r\n await ApiService.Get(ApiRoutes.Admin.MiscData.GetContentAccessLevels),\r\n (values) => {\r\n this.setContentAccessValues(values);\r\n }\r\n );\r\n }\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(_vm.dynamicComponent,{tag:\"component\",staticClass:\"vuetify-md-body\"})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\r\nimport MarkdownIt from 'markdown-it';\r\nimport MarkdownItSubscript from 'markdown-it-sub';\r\nimport MarkdownItSuperscript from 'markdown-it-sup';\r\nimport MarkdownItFootnote from 'markdown-it-footnote';\r\nimport MarkdownItDeflist from 'markdown-it-deflist';\r\nimport MarkdownItAbbreviation from 'markdown-it-abbr';\r\nimport MarkdownItInsert from 'markdown-it-ins';\r\nimport MarkdownItMark from 'markdown-it-mark';\r\nimport MarkdownItTasklists from 'markdown-it-task-lists';\r\nimport MarkdownItContainer from 'markdown-it-container';\r\nimport MarkdownItToc from 'markdown-it-toc-and-anchor';\r\nimport MarkdownItSourceMap from 'markdown-it-source-map';\r\nimport MarkdownItLinkAttributes from 'markdown-it-link-attributes';\r\nconst DEFAULT_OPTIONS_LINK_ATTRIBUTES = {\r\n attrs: {\r\n target: '_blank',\r\n rel: 'noopener'\r\n }\r\n};\r\nconst DEFAULT_OPTIONS_TASKLISTS = null;\r\nconst DEFAULT_OPTIONS_TOC = {\r\n tocFirstLevel: 2,\r\n tocLastLevel: 5,\r\n};\r\n\r\nimport { Component, Prop, Vue, Emit, Watch } from 'vue-property-decorator';\r\nimport { VAlert } from 'vuetify/lib';\r\n\r\n@Component({\r\n components: {\r\n VAlert\r\n }\r\n})\r\nexport default class MarkdownItVue extends Vue {\r\n @Prop({type: String, required: true}) public content!: string;\r\n public htmlContent: string = '';\r\n\r\n @Watch('content', { immediate: true })\r\n public onContentChanged(val: string, oldVal: string) {\r\n this.$nextTick(() => {\r\n this.htmlContent = this.markdownIt.render(val);\r\n });\r\n }\r\n\r\n private beforeMount() {\r\n this.htmlContent = this.markdownIt.render(this.content);\r\n }\r\n\r\n get dynamicComponent() {\r\n return {\r\n template: `
${this.htmlContent}
`\r\n };\r\n }\r\n\r\n public markdownIt = new MarkdownIt({linkify: true})\r\n .use(MarkdownItSubscript)\r\n .use(MarkdownItSuperscript)\r\n .use(MarkdownItFootnote)\r\n .use(MarkdownItDeflist)\r\n .use(MarkdownItAbbreviation)\r\n .use(MarkdownItInsert)\r\n .use(MarkdownItMark)\r\n .use(MarkdownItSourceMap)\r\n .use(MarkdownItLinkAttributes, DEFAULT_OPTIONS_LINK_ATTRIBUTES)\r\n .use(MarkdownItTasklists, DEFAULT_OPTIONS_TASKLISTS)\r\n .use(MarkdownItToc, DEFAULT_OPTIONS_TOC)\r\n .use(MarkdownItContainer, 'alert', {\r\n // validate: function(params: any) {\r\n // return params.trim() === 'warning'\r\n // },\r\n render: (tokens: any, idx: any) => {\r\n if (tokens[idx].nesting === 1) {\r\n const tokenParams: string[] = tokens[idx].info.trim().split(' ');\r\n const type = tokenParams.length > 1 ? tokenParams[1] : 'info'; // alert type\r\n let params = ''; // component params\r\n\r\n // If there are more than two params, then combine those for the component\r\n // tokenParams defualt will be ['alert']\r\n if (params.length > 2) {\r\n tokenParams.splice(0, 2); // Remove first two args\r\n params = tokenParams.join(' ');\r\n } else {\r\n params = 'outlined dense';\r\n }\r\n\r\n return ``;\r\n } else {\r\n return '';\r\n }\r\n }\r\n });\r\n}\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MarkdownItVue.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MarkdownItVue.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MarkdownItVue.vue?vue&type=template&id=23715d93&\"\nimport script from \"./MarkdownItVue.vue?vue&type=script&lang=ts&\"\nexport * from \"./MarkdownItVue.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./MarkdownItVue.vue?vue&type=style&index=0&lange=scss&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}