{"version":3,"sources":["webpack:///../../../src/components/VExpansionPanel/VExpansionPanels.ts","webpack:///./src/mixins/shared/navigatable/projectNavigatable.js","webpack:///../../../src/components/transitions/createTransition.ts","webpack:///../../../src/components/transitions/expand-transition.ts","webpack:///../../../src/components/transitions/index.ts","webpack:///../../../src/components/VGrid/VRow.ts","webpack:///../../../src/components/VSheet/index.ts","webpack:///../../../src/components/VIcon/VIcon.ts","webpack:///../../../src/mixins/routable/index.ts","webpack:///./src/mixins/shared/base/settings/buttonSettingsMixin.js","webpack:///../../../src/mixins/measurable/index.ts","webpack:///../../../src/mixins/registrable/index.ts","webpack:///./src/mixins/shared/user/userMixin.js","webpack:///../../../src/components/VProgressCircular/VProgressCircular.ts","webpack:///../../../src/components/VExpansionPanel/VExpansionPanelContent.ts","webpack:///../../../src/mixins/groupable/index.ts","webpack:///../../../src/directives/ripple/index.ts","webpack:///./src/mixins/shared/workflow/task/taskMixin.js","webpack:///../../../src/components/VItemGroup/VItemGroup.ts","webpack:///../../../src/components/VGrid/VCol.ts","webpack:///./src/mixins/shared/base/settings/deleteSettingsMixin.js","webpack:///../../../src/mixins/binds-attrs/index.ts","webpack:///./src/mixins/shared/navigatable/appModuleNavigatable.js","webpack:///../../../src/components/VSlideGroup/VSlideGroup.ts","webpack:///../../../src/components/VProgressCircular/index.ts","webpack:///../../../src/components/VBtn/VBtn.ts","webpack:///./src/mixins/shared/base/settings/menuItemSettingsMixin.js","webpack:///../../../src/mixins/comparable/index.ts","webpack:///./src/views/inbox/InboxDetails.vue","webpack:///src/views/inbox/InboxDetails.vue","webpack:///./src/views/inbox/InboxDetails.vue?46a6","webpack:///./src/views/inbox/InboxDetails.vue?8477","webpack:///./src/design/spacing/Spacing.js","webpack:///./src/mixins/shared/base/settings/userSettingsMixin.js","webpack:///../../../src/components/VSheet/VSheet.ts","webpack:///../../../src/directives/intersect/index.ts","webpack:///../../../src/components/VTabs/VTabsSlider.ts","webpack:///../../../src/components/VIcon/index.ts","webpack:///../../../src/mixins/bootable/index.ts","webpack:///../../../src/mixins/roundable/index.ts","webpack:///../../../src/mixins/proxyable/index.ts","webpack:///./src/mixins/shared/router/routerMixin.js","webpack:///../../../src/mixins/colorable/index.ts","webpack:///../../../src/components/VWindow/VWindow.ts","webpack:///../../../src/components/VTabs/VTabsItems.ts","webpack:///../../../src/mixins/sizeable/index.ts","webpack:///../../../src/components/VBtn/index.ts","webpack:///../../../src/directives/touch/index.ts","webpack:///../../../src/components/VExpansionPanel/VExpansionPanelHeader.ts","webpack:///../../../src/mixins/elevatable/index.ts","webpack:///../../../src/components/VExpansionPanel/VExpansionPanel.ts","webpack:///../../../src/components/VDivider/VDivider.ts","webpack:///../../../src/mixins/ssr-bootable/index.ts","webpack:///./src/model/action/actionModel.js","webpack:///../../src/util/mergeData.ts","webpack:///../../../src/directives/resize/index.ts","webpack:///./src/mixins/shared/navigatable/moduleItemNavigatable.js","webpack:///../../../src/mixins/mobile/index.ts","webpack:///./src/mixins/shared/navigatable/folderRecordNavigatable.js","webpack:///../../../src/mixins/toggleable/index.ts","webpack:///../../../src/components/VTabs/VTabsBar.ts","webpack:///../../../src/components/VTabs/VTabs.ts","webpack:///../../../src/mixins/positionable/index.ts","webpack:///./src/services/text/textService.js"],"names":["BaseItemGroup","extend","name","provide","expansionPanels","this","props","accordion","Boolean","disabled","flat","hover","focusable","inset","popout","readonly","tile","computed","classes","options","call","created","$attrs","hasOwnProperty","breaking","Array","isArray","value","length","methods","updateItem","item","index","getValue","nextValue","isActive","toggleMethod","nextIsActive","projectNavigatable","mixins","appMixin","routerMixin","userMixin","commandNavigateToProjectIconName","iconProjects","visibleJumpToProject","isAvailableProjectsModule","allowedAccessWFProjects","projectRouteLocation","projectId","createModuleItemContentRouteLocation","moduleNames","Projects","taskRouteLocation","taskId","Tasks","canNavigateToProject","canNavigateToModuleItemByModuleItemId","commandNavigateToProjectLabel","projectName","tooltipNavigateToProjectLabel","mergeTransitions","dest","transitions","concat","createSimpleTransition","origin","mode","functional","group","type","default","hideOnLeave","leaveAbsolute","String","render","h","context","tag","data","on","beforeEnter","el","style","transformOrigin","webkitTransformOrigin","leave","offsetTop","offsetLeft","offsetWidth","offsetHeight","_transitionInitialStyles","position","top","left","width","height","afterLeave","setProperty","mergeData","children","createJavascriptTransition","functions","expandedParentClass","x","sizeProperty","offsetProperty","upperFirst","_parent","parentNode","_initialStyle","transition","overflow","enter","initialStyle","offset","classList","add","requestAnimationFrame","afterEnter","resetStyles","enterCancelled","leaveCancelled","remove","size","VFabTransition","VFadeTransition","VScaleTransition","VScrollXTransition","VSlideXTransition","VExpandTransition","ExpandTransitionGenerator","VExpandXTransition","breakpoints","ALIGNMENT","makeProps","prefix","def","reduce","val","alignValidator","str","includes","alignProps","validator","justifyValidator","justifyProps","alignContentValidator","alignContentProps","propMap","align","Object","keys","justify","alignContent","classMap","breakpointClass","prop","className","breakpoint","replace","toLowerCase","cache","Map","Vue","dense","noGutters","cacheKey","get","forEach","push","set","staticClass","class","VSheet","SIZE_MAP","isFontAwesome5","iconType","some","isSvgPath","icon","test","VIcon","BindsAttrs","Colorable","Sizeable","Themeable","right","Number","required","medium","hasClickListener","listeners$","click","getIcon","iconName","$slots","text","trim","remapInternalIcon","getSize","sizes","xSmall","small","large","xLarge","explicitSize","find","key","convertToUnit","getDefaultData","attrs","undefined","attrs$","getSvgWrapperData","fontSize","wrapperData","applyColors","themeClasses","setTextColor","color","renderFontIcon","newChildren","delimiterIndex","indexOf","isMaterialIcon","slice","renderSvgIcon","svgData","xmlns","viewBox","role","d","renderSvgIconComponent","component","nativeOn","$_wrapperFor","domProps","textContent","innerHTML","directives","Ripple","activeClass","append","exact","exactPath","exactActiveClass","link","href","to","nuxt","ripple","target","proxyClass","computedRipple","_a","isClickable","isLink","$listeners","tabindex","styles","watch","$route","mounted","onRouteChange","generateRouteLink","ref","path","assign","$refs","$nextTick","getObjectValueByPath","toggle","mapGetters","createNamespacedHelpers","buttonSettingsMixin","publicAccessMixin","spacingDirection","direction","buttonColor","buttonTextStyleSetting","buttonOutlinedSetting","buttonRoundedSetting","buttonElevationSetting","buttonTextStyle","_this$publicAccess$bu","_this$publicAccess","isPublicAccess","publicAccess","buttons","textStyle","buttonOutlined","_this$publicAccess$bu2","_this$publicAccess2","outlined","buttonRounded","_this$publicAccess$bu3","_this$publicAccess3","rounded","buttonElevation","_this$publicAccess$bu4","_this$publicAccess4","_this$buttonElevation","elevation","mdButtonColor","Color","variantType","variantNumber","buttonColorClass","_this$publicAccess5","isEmpty","getClassColor","buttonRecommendedColorClass","Text","colorMD","grey","lighten","n2","getTextColorClass","buttonRecommendedSpacingClass","recommendedSpacingClass","buttonRecommendedTextStyle","false","buttonRecommendedClass","Spacing","spacingType","margin","size2","getClassSpacing","buttonRecommendedOutlined","maxHeight","maxWidth","minHeight","minWidth","measurableStyles","generateWarning","child","parent","consoleWarn","inject","namespace","defaultImpl","register","unregister","self","mapState","mapActions","principalMixin","currentUser","repositories","categoryTypes","actorName","userCategories","userFields","formFields","findUserField","findFormField","countUserFields","isPersistentField","isSystemField","countUserCategories","findCategory","isAllowedViewField","createRecordCategories","createRecordCategoriesByCategoryType","updateRecordCategories","updateRecordCategoriesByCategoryType","isAllowedModifyField","isAllowedSystemOperation","isUserLoggedIn","repository","systemOperations","accessWFProjects","allowedAccessClerkModule","accessClerkModule","setFormField","intersect","button","indeterminate","rotate","radius","isVisible","calculatedSize","circumference","Math","PI","normalizedValue","parseFloat","strokeDashArray","round","strokeDashOffset","strokeWidth","viewBoxSize","svgStyles","transform","genCircle","$createElement","fill","cx","cy","r","genSvg","genInfo","getSlot","onObserve","entries","observer","isIntersecting","baseMixins","Bootable","RegistrableInject","parentIsActive","expansionPanel","immediate","handler","oldVal","isBooted","registerContent","beforeDestroy","unregisterContent","showLazyContent","setBackgroundColor","open","factory","groupClasses","e","preventDefault","$emit","DELAY_RIPPLE","webkitTransform","isTouchEvent","constructor","isKeyboardEvent","calculate","localX","localY","getBoundingClientRect","touches","clientX","clientY","scale","_ripple","circle","clientWidth","center","sqrt","clientHeight","centerX","centerY","y","ripples","show","enabled","container","document","createElement","animation","appendChild","window","getComputedStyle","dataset","previousPosition","activated","performance","now","setTimeout","hide","getElementsByClassName","isHiding","diff","delay","max","removeChild","isRippleEnabled","rippleShow","element","currentTarget","touched","rippleStop","isTouch","centered","showTimerCommit","showTimer","rippleHide","clearTimeout","rippleCancelShow","keyboardRipple","keyboardRippleShow","keyCode","keyCodes","space","keyboardRippleHide","focusRippleHide","updateRipple","binding","wasEnabled","addEventListener","passive","removeListeners","removeEventListener","directive","node","unbind","update","oldValue","bind","mapMutations","taskMixin","components","TaskNotes","AssignUserDialog","iconMore","iconDotsHorizontal","iconCalendar","iconUser","iconAccount","iconManager","visibleDialogAssignUser","task","isReport","_this$task$taskId","_this$task","taskName","_this$task$name","_this$task2","taskTypeId","_this$task$typeId","_this$task3","typeId","userTaskType","findUserTaskType","_this$task$projectId","_this$task4","_this$task$projectNam","_this$task5","templateId","_this$task$templateId","_this$task6","templateName","_this$task7","subject","_this$task8","recordName","comment","_this$task9","notes","_this$task$notes","_this$task10","dueDate","_this$task11","_this$task12","toShortLocalString","isDue","_this$task$isDue","_this$task13","isOverdue","_this$task$isOverdue","_this$task14","isMilestone","_this$task$isMileston","_this$task15","priority","_this$task$priority","_this$task16","priorityText","_findTaskPriority$tex","_findTaskPriority","_this$task$priority2","_this$task17","findTaskPriority","assignmentMethod","_this$task18","assignmentMethodTypeText","assignee","_this$task$actorId","_this$task19","_this$task20","_this$task21","actorId","assignedTo","projectManager","_this$task$projectMan","_this$task22","taskCreated","_this$task23","toLocalDateTimeString","taskEffective","_this$task24","effective","taskStatus","_findTaskState","_this$task$status","_this$task25","findTaskState","status","statusChanged","taskDuration","_this$task26","duration","dueDateColorClass","dueDateTextClass","dueDateMessage","visibleNotes","_this$task$notes$leng","_this$task27","visibleReAssignButton","canReassignTask","assignUser","updateTaskAssignee","UPDATE_TASK_ASSIGNEE","showReAssignDialog","onCloseAssignUserTaskDialog","userName","userId","notify","operation","findProjectOperation","projectOperation","ReassignTask","action","label","payload","sendNotification","result","createActionResultSuccess","createActionResultError","toString","Comparable","Proxyable","mandatory","multiple","internalLazyValue","items","selectedIndex","selectedItem","selectedItems","filter","selectedValues","internalValue","v","valueComparator","intern","genData","i","onClick","updateInternalValue","$on","updateMandatory","_isDestroyed","splice","valueIndex","updateItemsState","updateMultiple","updateSingle","last","reverse","defaultValue","findIndex","isSame","itemGroup","breakpointProps","offsetProps","orderProps","col","order","cols","alignSelf","hasColClasses","startsWith","deleteSettingsMixin","deleteColor","mdDeleteColor","deleteColorClass","makeWatcher","property","attr","prototype","$delete","$data","$set","$watch","appModuleNavigatable","userSettingsMixin","appModules","modules","m","isAvailableModule","buildAppModuleRoute","moduleName","createAppModuleRoute","isAvailableApplicationModule","canNavigateToAppModule","appModuleName","$router","console","error","bias","c","abs","sign","calculateUpdatedOffset","selectedElement","widths","rtl","currentScrollOffset","content","totalWidth","wrapper","itemOffset","additionalOffset","min","calculateCenteredOffset","offsetCentered","BaseSlideGroup","Mobile","Resize","Touch","centerActive","nextIcon","prevIcon","showArrows","isOverflowing","resizeTimeout","startX","isSwipingHorizontal","isSwiping","scrollOffset","canTouch","__cachedNext","genTransition","__cachedPrev","hasAffixes","isMobile","hasNext","hasPrev","$vuetify","scroll","ResizeObserver","obs","onResize","observe","$el","disconnect","itemsLength","setWidths","onScroll","scrollLeft","onFocusin","composedPath","vm","genNext","slot","$scopedSlots","next","onAffixClick","genContent","focusin","genIcon","location","upperLocation","toUpperCase","hasAffix","genPrev","prev","genWrapper","start","overflowCheck","onTouchStart","move","onTouchMove","end","onTouchEnd","calculateNewOffset","newAbosluteOffset","scrollTo","touchstartX","diffX","touchmoveX","diffY","touchmoveY","touchstartY","documentElement","overflowY","maxScrollOffset","removeProperty","fn","stopPropagation","scrollIntoView","lastItemPosition","wrapperPosition","slideGroup","VProgressCircular","Routable","Positionable","GroupableFactory","ToggleableFactory","btnToggle","block","depressed","fab","loading","plain","retainFocusOnClick","absolute","bottom","isElevated","fixed","hasBg","isRound","elevationClasses","sizeableClasses","computedElevation","Elevatable","defaultRipple","breakingProps","original","replacement","detail","blur","genLoader","setColor","JSON","stringify","menuItemSettingsMixin","menuItemColor","mdMenuItemColor","menuItemColorClass","Function","deepEqual","callback","panel","expression","scopedSlots","_v","_c","_vm","titleClass","proxy","_s","labelCommandTaskAccept","onShowRejectUserTaskDialog","labelCommandTaskReject","_e","canTaskTake","iconTaskTake","labelTaskTake","onShowReleaseUserTaskDialog","labelTaskRelease","iconTaskReassign","labelTaskReassign","snackbarTop","model","inheritAttrs","snackbarableMixin","moduleItemNavigatable","folderRecordNavigatable","AcceptUserTaskDialog","RejectUserTaskDialog","BaseTooltipButton","FormTask","TaskBanner","BaseDropDownMenuButton","BaseMenuItem","TakeUserTaskDialog","ReleaseUserTaskDialog","TaskChart","visibleTaskTakeProgress","visibleTaskReleaseProgress","panelKey","visibleDialogTakeUserTask","visibleDialogReleaseUserTask","visibleDialogAcceptUserTask","visibleDialogRejectUserTask","iconRun","tasks","record","title","commandAccept","_this$userTaskType","commandReject","_this$userTaskType2","_this$commandAccept$l","_this$commandAccept","_this$commandReject$l","_this$commandReject","iconTaskAccept","_this$commandAccept2","iconTaskReject","_this$commandReject2","visibleTaskAccept","canTaskAccept","_this$principal$actor","_this$principal","canAcceptTask","principal","_findUserTaskCommand","findUserTaskCommand","userTaskCommandType","take","tooltipTaskTake","_findUserTaskCommand2","description","_findUserTaskCommand3","visibleTaskTake","canTakeTask","_findUserTaskCommand4","release","tooltipTaskRelease","_findUserTaskCommand5","iconTaskRelease","_findUserTaskCommand6","visibleTaskRelease","canTaskRelease","_this$principal$actor2","_this$principal2","canReleaseTask","_findUserTaskCommand7","reassign","tooltipTaskReassign","_findUserTaskCommand8","_findUserTaskCommand9","visibleTaskReassign","canTaskReassign","acceptColorClass","findCommandTaskAcceptColorClass","cancelColorClass","findCommandTaskRejectColorClass","visibleTaskReject","canTaskReject","_this$principal$actor3","_this$principal3","canRejectTask","tooltipAccept","_this$commandAccept3","userTaskLabel","tooltipReject","_this$commandReject3","commandSelectRecordIconName","_this$record$recordTy","_this$record","findRecordTypeIcon","recordTypeId","recordType","RECORD","taskDetailsHeader","acceptTask","rejectTask","takeTask","releaseTask","onShowTakeUserTaskDialog","onCloseTakeUserTaskDialog","note","cmd","showSnackbarError","onShowAcceptUserTaskDialog","onCloseAcceptUserTaskDialog","_taskType$commandAcce","_taskType$commandAcce2","taskType","log","$options","_this$tasks$length","_this$tasks","navigateToModuleItem","navigateToAppModule","onCloseRejectUserTaskDialog","_this$task$typeId2","_taskType$commandReje","_taskType$commandReje2","_this$tasks$length2","_this$tasks2","onCloseReleaseUserTaskDialog","onUserTaskReassign","commandSelectRecordLabel","_findRecordType","_record$recordTypeId","findRecordType","newTask","staticRenderFns","freeze","padding","size0","size1","size3","size4","size5","size6","size7","size8","size9","size10","size11","size12","size13","size14","size15","size16","n1","n3","n4","n5","n6","n7","n8","n9","n10","n11","n12","n13","n14","n15","n16","auto","leftRight","rightLeft","leftAndRight","topAndBottom","all","getMarginClass","xs","sm","md","lg","xl","_defineProperty","mapGettersUser","mapMutationsUser","setUsesAppTabs","SET_USES_APP_TABS","setUsesSidebarImage","SET_USES_SIDEBAR_IMAGE","setDrawerRight","SET_DRAWER_RIGHT","setAppBarCollapseOnScroll","SET_APP_BAR_COLLAPSE_ON_SCROLL","setEnableMiniDrawer","SET_DRAWER_ENABLE_MINI_DRAWER","setButtonTextStyle","SET_COMMAND_BUTTONS_TEXT_STYLE","setButtonOutlined","SET_COMMAND_BUTTONS_OUTLINED","setButtonRounded","SET_COMMAND_BUTTONS_ROUNDED","setButtonElevation","SET_COMMAND_BUTTONS_ELEVATION","setRecordsFetchCount","SET_RECORDS_FETCH_COUNT","setEnableModuleSearch","SET_ENABLE_MODULE_SEARCH","setEnableModuleCategory","SET_ENABLE_MODULE_CATEGORY","setEnableModuleTasks","SET_ENABLE_MODULE_TASKS","setEnableModuleProjects","SET_ENABLE_MODULE_PROJECTS","setEnableModuleAgenda","SET_ENABLE_MODULE_AGENDA","Measurable","Roundable","shaped","roundedClasses","inserted","vnode","modifiers","IntersectionObserver","_observe","_uid","entry","quiet","init","once","unobserve","Intersect","eager","hasContent","removed","composite","values","split","join","event","id","_this$$router$current","_id$toString","currentRoute","params","canNavigateToChildRecordById","expandedId","_this$$router$current2","_this$$router$current3","consoleError","isCssColor","colorName","colorModifier","windowGroup","continuous","showArrowsOnHover","touch","touchless","vertical","changedByDelimiters","internalHeight","transitionHeight","transitionCount","isReverse","computedTransition","axis","internalReverse","hasActiveItems","internalIndex","updateReverse","genDefaultSlot","genContainer","genControlIcons","lang","t","_b","VBtn","icons","getNextIndex","nextIndex","getPrevIndex","prevIndex","lastIndex","VWindow","isDark","rootIsDark","handleGesture","touchendX","touchendY","dirRatio","minDistance","offsetX","offsetY","up","down","touchstart","changedTouches","touchend","touchmove","createHandlers","parentElement","handlers","_touchHandlers","eventName","disableIconRotate","expandIcon","hideActions","hasMousedown","isDisabled","isReadonly","registerHeader","unregisterHeader","mousedown","mouseup","isNaN","parseInt","RegistrableProvide","header","orientation","setAttribute","actionResult","message","outcome","actionResultType","success","cancel","abort","actionResultTypes","findActionResultType","createActionResult","_findActionResultType","_findActionResultType2","_findActionResultType3","formatActionMessage","createActionResultAbort","pattern","styleList","styleProp","parseStyle","styleMap","s","camelize","mergeTarget","arguments","mergeClasses","mergeStyles","mergeListeners","source","wrapInArray","args","arg","_onResize","canNavigateToModuleItem","createModuleItemContentRoute","warn","mobileBreakpoint","mobile","mobileWidth","isNumber","deprecate","iconJumpToFolder","visibleJumpToFile","visibleFolder","folderModuleRecordRouteLocation","createModuleRecordRouteLocation","Folder","canNavigateToFolderModuleRecord","_record$id","_record$id2","_record$parentId","isRecordExpandable","canNavigateToFolderModuleRecordById","canNavigateToFolderModuleChildRecordById","parentId","tooltipNavigateToRecord","recordTypeName","Toggleable","SSRBootable","tabsBar","callSlider","newPath","oldPath","hasNew","hasOld","alignWithTitle","backgroundColor","fixedTabs","grow","hideSlider","iconsAndText","optional","sliderColor","sliderSize","slider","transitionTime","isReversed","sliderStyles","computedColor","appIsDark","activeTab","scrollHeight","scrollWidth","genBar","dark","light","change","VTabsBar","genSlider","genItems","VTabsItems","VTabsSlider","parseNodes","tab","componentOptions","Ctor","availableProps","selected","filterObjectOnKeys","bold","darken","displayTypes","subtitle1","fontEmphasis","regular","getClassText"],"mappings":"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","file":"js/chunk-3a54f445.e7b4e3e7.js","sourcesContent":["// Styles\nimport './VExpansionPanel.sass'\n\n// Components\nimport { BaseItemGroup, GroupableInstance } from '../VItemGroup/VItemGroup'\nimport VExpansionPanel from './VExpansionPanel'\n\n// Utilities\nimport { breaking } from '../../util/console'\n\n// Types\ninterface VExpansionPanelInstance extends InstanceType {}\n\n/* @vue/component */\nexport default BaseItemGroup.extend({\n name: 'v-expansion-panels',\n\n provide (): object {\n return {\n expansionPanels: this,\n }\n },\n\n props: {\n accordion: Boolean,\n disabled: Boolean,\n flat: Boolean,\n hover: Boolean,\n focusable: Boolean,\n inset: Boolean,\n popout: Boolean,\n readonly: Boolean,\n tile: Boolean,\n },\n\n computed: {\n classes (): object {\n return {\n ...BaseItemGroup.options.computed.classes.call(this),\n 'v-expansion-panels': true,\n 'v-expansion-panels--accordion': this.accordion,\n 'v-expansion-panels--flat': this.flat,\n 'v-expansion-panels--hover': this.hover,\n 'v-expansion-panels--focusable': this.focusable,\n 'v-expansion-panels--inset': this.inset,\n 'v-expansion-panels--popout': this.popout,\n 'v-expansion-panels--tile': this.tile,\n }\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('expand')) {\n breaking('expand', 'multiple', this)\n }\n\n /* istanbul ignore next */\n if (\n Array.isArray(this.value) &&\n this.value.length > 0 &&\n typeof this.value[0] === 'boolean'\n ) {\n breaking(':value=\"[true, false, true]\"', ':value=\"[0, 2]\"', this)\n }\n },\n\n methods: {\n updateItem (item: GroupableInstance & VExpansionPanelInstance, index: number) {\n const value = this.getValue(item, index)\n const nextValue = this.getValue(item, index + 1)\n\n item.isActive = this.toggleMethod(value)\n item.nextIsActive = this.toggleMethod(nextValue)\n },\n },\n})\n","// router\r\nimport { createModuleItemContentRouteLocation } from \"@/router/solution/solutionRoutes\";\r\n\r\n// model\r\nimport { moduleNames } from \"@/model/solution/moduleModel\";\r\n\r\n// design\r\nimport { iconProjects } from \"@/design/icon/iconConst\";\r\n\r\n// mixins\r\nimport { appMixin } from \"@/mixins/shared/base/app/appMixin\";\r\nimport { routerMixin } from \"@/mixins/shared/router/routerMixin\";\r\nimport { userMixin } from \"@/mixins/shared/user/userMixin\";\r\n\r\nexport const projectNavigatable = {\r\n mixins: [appMixin, routerMixin, userMixin],\r\n computed: {\r\n commandNavigateToProjectIconName() {\r\n return iconProjects;\r\n },\r\n /**\r\n * compute visibility of Jump To Project command\r\n * @return {boolean} if true Jump To Project command is visible\r\n */\r\n visibleJumpToProject() {\r\n return this.isAvailableProjectsModule && this.allowedAccessWFProjects;\r\n }\r\n },\r\n methods: {\r\n /**\r\n * project Route Location\r\n * @param {number} projectId project id\r\n * @return {{name: (String|string), params: {id: (Number|number)}}}\r\n */\r\n projectRouteLocation(projectId) {\r\n return createModuleItemContentRouteLocation(\r\n moduleNames.Projects,\r\n projectId\r\n );\r\n },\r\n\r\n /**\r\n * task Route Location\r\n * @param {number} taskId task id\r\n * @return {{name: (String|string), params: {id: (Number|number)}}}\r\n */\r\n taskRouteLocation(taskId) {\r\n return createModuleItemContentRouteLocation(moduleNames.Tasks, taskId);\r\n },\r\n\r\n /**\r\n /**\r\n * can Navigate To Project\r\n * @param {number} projectId project id\r\n * @return {boolean} true when can Navigate To Project\r\n */\r\n canNavigateToProject(projectId) {\r\n return (\r\n this.isAvailableProjectsModule &&\r\n this.allowedAccessWFProjects &&\r\n this.canNavigateToModuleItemByModuleItemId(\r\n moduleNames.Projects,\r\n projectId\r\n )\r\n );\r\n },\r\n\r\n /**\r\n * command Navigate To Project Label\r\n * @param {string} projectName project Name\r\n * @return {string} formatted command Navigate To Project Label\r\n */\r\n commandNavigateToProjectLabel(projectName) {\r\n return `Project: ${projectName ?? \"project\"}`;\r\n },\r\n\r\n /**\r\n * tooltip Navigate To Project Label\r\n * @param {string} projectName project Name\r\n * @return {string} formatted tooltip Navigate To Project Label\r\n */\r\n tooltipNavigateToProjectLabel(projectName) {\r\n return `Jump to Project: ${projectName ?? \"project\"}`;\r\n }\r\n }\r\n};\r\n","import { FunctionalComponentOptions, VNode, VNodeData } from 'vue'\nimport mergeData from '../../util/mergeData'\n\nfunction mergeTransitions (\n dest: Function | Function[] = [],\n ...transitions: (Function | Function[])[]\n) {\n /* eslint-disable-next-line no-array-constructor */\n return Array().concat(dest, ...transitions)\n}\n\nexport function createSimpleTransition (\n name: string,\n origin = 'top center 0',\n mode?: string\n): FunctionalComponentOptions {\n return {\n name,\n\n functional: true,\n\n props: {\n group: {\n type: Boolean,\n default: false,\n },\n hideOnLeave: {\n type: Boolean,\n default: false,\n },\n leaveAbsolute: {\n type: Boolean,\n default: false,\n },\n mode: {\n type: String,\n default: mode,\n },\n origin: {\n type: String,\n default: origin,\n },\n },\n\n render (h, context): VNode {\n const tag = `transition${context.props.group ? '-group' : ''}`\n const data: VNodeData = {\n props: {\n name,\n mode: context.props.mode,\n },\n on: {\n beforeEnter (el: HTMLElement) {\n el.style.transformOrigin = context.props.origin\n el.style.webkitTransformOrigin = context.props.origin\n },\n },\n }\n\n if (context.props.leaveAbsolute) {\n data.on!.leave = mergeTransitions(data.on!.leave, (el: HTMLElement) => {\n const { offsetTop, offsetLeft, offsetWidth, offsetHeight } = el\n el._transitionInitialStyles = {\n position: el.style.position,\n top: el.style.top,\n left: el.style.left,\n width: el.style.width,\n height: el.style.height,\n }\n el.style.position = 'absolute'\n el.style.top = offsetTop + 'px'\n el.style.left = offsetLeft + 'px'\n el.style.width = offsetWidth + 'px'\n el.style.height = offsetHeight + 'px'\n })\n data.on!.afterLeave = mergeTransitions(data.on!.afterLeave, (el?: HTMLElement) => {\n if (el && el._transitionInitialStyles) {\n const { position, top, left, width, height } = el._transitionInitialStyles\n delete el._transitionInitialStyles\n el.style.position = position || ''\n el.style.top = top || ''\n el.style.left = left || ''\n el.style.width = width || ''\n el.style.height = height || ''\n }\n })\n }\n if (context.props.hideOnLeave) {\n data.on!.leave = mergeTransitions(data.on!.leave, (el: HTMLElement) => {\n el.style.setProperty('display', 'none', 'important')\n })\n }\n\n return h(tag, mergeData(context.data, data), context.children)\n },\n }\n}\n\nexport function createJavascriptTransition (\n name: string,\n functions: Record,\n mode = 'in-out'\n): FunctionalComponentOptions {\n return {\n name,\n\n functional: true,\n\n props: {\n mode: {\n type: String,\n default: mode,\n },\n },\n\n render (h, context): VNode {\n return h(\n 'transition',\n mergeData(context.data, {\n props: { name },\n on: functions,\n }),\n context.children\n )\n },\n }\n}\n","import { upperFirst } from '../../util/helpers'\n\ninterface HTMLExpandElement extends HTMLElement {\n _parent?: (Node & ParentNode & HTMLElement) | null\n _initialStyle?: {\n transition: string\n overflow: string\n height?: string | null\n width?: string | null\n }\n}\n\nexport default function (expandedParentClass = '', x = false) {\n const sizeProperty = x ? 'width' : 'height' as 'width' | 'height'\n const offsetProperty = `offset${upperFirst(sizeProperty)}` as 'offsetHeight' | 'offsetWidth'\n\n return {\n beforeEnter (el: HTMLExpandElement) {\n el._parent = el.parentNode as (Node & ParentNode & HTMLElement) | null\n el._initialStyle = {\n transition: el.style.transition,\n overflow: el.style.overflow,\n [sizeProperty]: el.style[sizeProperty],\n }\n },\n\n enter (el: HTMLExpandElement) {\n const initialStyle = el._initialStyle!\n\n el.style.setProperty('transition', 'none', 'important')\n // Hide overflow to account for collapsed margins in the calculated height\n el.style.overflow = 'hidden'\n const offset = `${el[offsetProperty]}px`\n\n el.style[sizeProperty] = '0'\n\n void el.offsetHeight // force reflow\n\n el.style.transition = initialStyle.transition\n\n if (expandedParentClass && el._parent) {\n el._parent.classList.add(expandedParentClass)\n }\n\n requestAnimationFrame(() => {\n el.style[sizeProperty] = offset\n })\n },\n\n afterEnter: resetStyles,\n enterCancelled: resetStyles,\n\n leave (el: HTMLExpandElement) {\n el._initialStyle = {\n transition: '',\n overflow: el.style.overflow,\n [sizeProperty]: el.style[sizeProperty],\n }\n\n el.style.overflow = 'hidden'\n el.style[sizeProperty] = `${el[offsetProperty]}px`\n void el.offsetHeight // force reflow\n\n requestAnimationFrame(() => (el.style[sizeProperty] = '0'))\n },\n\n afterLeave,\n leaveCancelled: afterLeave,\n }\n\n function afterLeave (el: HTMLExpandElement) {\n if (expandedParentClass && el._parent) {\n el._parent.classList.remove(expandedParentClass)\n }\n resetStyles(el)\n }\n\n function resetStyles (el: HTMLExpandElement) {\n const size = el._initialStyle![sizeProperty]\n el.style.overflow = el._initialStyle!.overflow\n if (size != null) el.style[sizeProperty] = size\n delete el._initialStyle\n }\n}\n","import {\n createSimpleTransition,\n createJavascriptTransition,\n} from './createTransition'\n\nimport ExpandTransitionGenerator from './expand-transition'\n\n// Component specific transitions\nexport const VCarouselTransition = createSimpleTransition('carousel-transition')\nexport const VCarouselReverseTransition = createSimpleTransition('carousel-reverse-transition')\nexport const VTabTransition = createSimpleTransition('tab-transition')\nexport const VTabReverseTransition = createSimpleTransition('tab-reverse-transition')\nexport const VMenuTransition = createSimpleTransition('menu-transition')\nexport const VFabTransition = createSimpleTransition('fab-transition', 'center center', 'out-in')\n\n// Generic transitions\nexport const VDialogTransition = createSimpleTransition('dialog-transition')\nexport const VDialogBottomTransition = createSimpleTransition('dialog-bottom-transition')\nexport const VDialogTopTransition = createSimpleTransition('dialog-top-transition')\nexport const VFadeTransition = createSimpleTransition('fade-transition')\nexport const VScaleTransition = createSimpleTransition('scale-transition')\nexport const VScrollXTransition = createSimpleTransition('scroll-x-transition')\nexport const VScrollXReverseTransition = createSimpleTransition('scroll-x-reverse-transition')\nexport const VScrollYTransition = createSimpleTransition('scroll-y-transition')\nexport const VScrollYReverseTransition = createSimpleTransition('scroll-y-reverse-transition')\nexport const VSlideXTransition = createSimpleTransition('slide-x-transition')\nexport const VSlideXReverseTransition = createSimpleTransition('slide-x-reverse-transition')\nexport const VSlideYTransition = createSimpleTransition('slide-y-transition')\nexport const VSlideYReverseTransition = createSimpleTransition('slide-y-reverse-transition')\n\n// Javascript transitions\nexport const VExpandTransition = createJavascriptTransition('expand-transition', ExpandTransitionGenerator())\nexport const VExpandXTransition = createJavascriptTransition('expand-x-transition', ExpandTransitionGenerator('', true))\n\nexport default {\n $_vuetify_subcomponents: {\n VCarouselTransition,\n VCarouselReverseTransition,\n VDialogTransition,\n VDialogBottomTransition,\n VDialogTopTransition,\n VFabTransition,\n VFadeTransition,\n VMenuTransition,\n VScaleTransition,\n VScrollXTransition,\n VScrollXReverseTransition,\n VScrollYTransition,\n VScrollYReverseTransition,\n VSlideXTransition,\n VSlideXReverseTransition,\n VSlideYTransition,\n VSlideYReverseTransition,\n VTabReverseTransition,\n VTabTransition,\n VExpandTransition,\n VExpandXTransition,\n },\n}\n","import './VGrid.sass'\n\nimport Vue, { PropOptions } from 'vue'\nimport mergeData from '../../util/mergeData'\nimport { upperFirst } from '../../util/helpers'\n\n// no xs\nconst breakpoints = ['sm', 'md', 'lg', 'xl']\n\nconst ALIGNMENT = ['start', 'end', 'center']\n\nfunction makeProps (prefix: string, def: () => PropOptions) {\n return breakpoints.reduce((props, val) => {\n props[prefix + upperFirst(val)] = def()\n return props\n }, {} as Dictionary)\n}\n\nconst alignValidator = (str: any) => [...ALIGNMENT, 'baseline', 'stretch'].includes(str)\nconst alignProps = makeProps('align', () => ({\n type: String,\n default: null,\n validator: alignValidator,\n}))\n\nconst justifyValidator = (str: any) => [...ALIGNMENT, 'space-between', 'space-around'].includes(str)\nconst justifyProps = makeProps('justify', () => ({\n type: String,\n default: null,\n validator: justifyValidator,\n}))\n\nconst alignContentValidator = (str: any) => [...ALIGNMENT, 'space-between', 'space-around', 'stretch'].includes(str)\nconst alignContentProps = makeProps('alignContent', () => ({\n type: String,\n default: null,\n validator: alignContentValidator,\n}))\n\nconst propMap = {\n align: Object.keys(alignProps),\n justify: Object.keys(justifyProps),\n alignContent: Object.keys(alignContentProps),\n}\n\nconst classMap = {\n align: 'align',\n justify: 'justify',\n alignContent: 'align-content',\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: string) {\n let className = classMap[type]\n if (val == null) {\n return undefined\n }\n if (prop) {\n // alignSm -> Sm\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // .align-items-sm-center\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst cache = new Map()\n\nexport default Vue.extend({\n name: 'v-row',\n functional: true,\n props: {\n tag: {\n type: String,\n default: 'div',\n },\n dense: Boolean,\n noGutters: Boolean,\n align: {\n type: String,\n default: null,\n validator: alignValidator,\n },\n ...alignProps,\n justify: {\n type: String,\n default: null,\n validator: justifyValidator,\n },\n ...justifyProps,\n alignContent: {\n type: String,\n default: null,\n validator: alignContentValidator,\n },\n ...alignContentProps,\n },\n render (h, { props, data, children }) {\n // Super-fast memoization based on props, 5x faster than JSON.stringify\n let cacheKey = ''\n for (const prop in props) {\n cacheKey += String((props as any)[prop])\n }\n let classList = cache.get(cacheKey)\n\n if (!classList) {\n classList = []\n // Loop through `align`, `justify`, `alignContent` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n classList.push({\n 'no-gutters': props.noGutters,\n 'row--dense': props.dense,\n [`align-${props.align}`]: props.align,\n [`justify-${props.justify}`]: props.justify,\n [`align-content-${props.alignContent}`]: props.alignContent,\n })\n\n cache.set(cacheKey, classList)\n }\n\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'row',\n class: classList,\n }),\n children\n )\n },\n})\n","import VSheet from './VSheet'\n\nexport { VSheet }\nexport default VSheet\n","import './VIcon.sass'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Colorable from '../../mixins/colorable'\nimport Sizeable from '../../mixins/sizeable'\nimport Themeable from '../../mixins/themeable'\n\n// Util\nimport { convertToUnit, keys, remapInternalIcon } from '../../util/helpers'\n\n// Types\nimport Vue, { CreateElement, VNode, VNodeChildren, VNodeData } from 'vue'\nimport mixins from '../../util/mixins'\nimport { VuetifyIcon, VuetifyIconComponent } from 'vuetify/types/services/icons'\n\nenum SIZE_MAP {\n xSmall = '12px',\n small = '16px',\n default = '24px',\n medium = '28px',\n large = '36px',\n xLarge = '40px'\n}\n\nfunction isFontAwesome5 (iconType: string): boolean {\n return ['fas', 'far', 'fal', 'fab', 'fad', 'fak'].some(val => iconType.includes(val))\n}\n\nfunction isSvgPath (icon: string): boolean {\n return (/^[mzlhvcsqta]\\s*[-+.0-9][^mlhvzcsqta]+/i.test(icon) && /[\\dz]$/i.test(icon) && icon.length > 4)\n}\n\nconst VIcon = mixins(\n BindsAttrs,\n Colorable,\n Sizeable,\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-icon',\n\n props: {\n dense: Boolean,\n disabled: Boolean,\n left: Boolean,\n right: Boolean,\n size: [Number, String],\n tag: {\n type: String,\n required: false,\n default: 'i',\n },\n },\n\n computed: {\n medium () {\n return false\n },\n hasClickListener (): boolean {\n return Boolean(\n this.listeners$.click || this.listeners$['!click']\n )\n },\n },\n\n methods: {\n getIcon (): VuetifyIcon {\n let iconName = ''\n if (this.$slots.default) iconName = this.$slots.default[0].text!.trim()\n\n return remapInternalIcon(this, iconName)\n },\n getSize (): string | undefined {\n const sizes = {\n xSmall: this.xSmall,\n small: this.small,\n medium: this.medium,\n large: this.large,\n xLarge: this.xLarge,\n }\n\n const explicitSize = keys(sizes).find(key => sizes[key])\n\n return (\n (explicitSize && SIZE_MAP[explicitSize]) || convertToUnit(this.size)\n )\n },\n // Component data for both font icon and SVG wrapper span\n getDefaultData (): VNodeData {\n return {\n staticClass: 'v-icon notranslate',\n class: {\n 'v-icon--disabled': this.disabled,\n 'v-icon--left': this.left,\n 'v-icon--link': this.hasClickListener,\n 'v-icon--right': this.right,\n 'v-icon--dense': this.dense,\n },\n attrs: {\n 'aria-hidden': !this.hasClickListener,\n disabled: this.hasClickListener && this.disabled,\n type: this.hasClickListener ? 'button' : undefined,\n ...this.attrs$,\n },\n on: this.listeners$,\n }\n },\n getSvgWrapperData () {\n const fontSize = this.getSize()\n const wrapperData = {\n ...this.getDefaultData(),\n style: fontSize ? {\n fontSize,\n height: fontSize,\n width: fontSize,\n } : undefined,\n }\n this.applyColors(wrapperData)\n\n return wrapperData\n },\n applyColors (data: VNodeData): void {\n data.class = { ...data.class, ...this.themeClasses }\n this.setTextColor(this.color, data)\n },\n renderFontIcon (icon: string, h: CreateElement): VNode {\n const newChildren: VNodeChildren = []\n const data = this.getDefaultData()\n\n let iconType = 'material-icons'\n // Material Icon delimiter is _\n // https://material.io/icons/\n const delimiterIndex = icon.indexOf('-')\n const isMaterialIcon = delimiterIndex <= -1\n\n if (isMaterialIcon) {\n // Material icon uses ligatures.\n newChildren.push(icon)\n } else {\n iconType = icon.slice(0, delimiterIndex)\n if (isFontAwesome5(iconType)) iconType = ''\n }\n\n data.class[iconType] = true\n data.class[icon] = !isMaterialIcon\n\n const fontSize = this.getSize()\n if (fontSize) data.style = { fontSize }\n\n this.applyColors(data)\n\n return h(this.hasClickListener ? 'button' : this.tag, data, newChildren)\n },\n renderSvgIcon (icon: string, h: CreateElement): VNode {\n const svgData: VNodeData = {\n class: 'v-icon__svg',\n attrs: {\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: '0 0 24 24',\n role: 'img',\n 'aria-hidden': true,\n },\n }\n\n const size = this.getSize()\n if (size) {\n svgData.style = {\n fontSize: size,\n height: size,\n width: size,\n }\n }\n\n return h(this.hasClickListener ? 'button' : 'span', this.getSvgWrapperData(), [\n h('svg', svgData, [\n h('path', {\n attrs: {\n d: icon,\n },\n }),\n ]),\n ])\n },\n renderSvgIconComponent (\n icon: VuetifyIconComponent,\n h: CreateElement\n ): VNode {\n const data: VNodeData = {\n class: {\n 'v-icon__component': true,\n },\n }\n\n const size = this.getSize()\n if (size) {\n data.style = {\n fontSize: size,\n height: size,\n width: size,\n }\n }\n\n this.applyColors(data)\n\n const component = icon.component\n data.props = icon.props\n data.nativeOn = data.on\n\n return h(this.hasClickListener ? 'button' : 'span', this.getSvgWrapperData(), [\n h(component, data),\n ])\n },\n },\n\n render (h: CreateElement): VNode {\n const icon = this.getIcon()\n\n if (typeof icon === 'string') {\n if (isSvgPath(icon)) {\n return this.renderSvgIcon(icon, h)\n }\n return this.renderFontIcon(icon, h)\n }\n\n return this.renderSvgIconComponent(icon, h)\n },\n})\n\nexport default Vue.extend({\n name: 'v-icon',\n\n $_wrapperFor: VIcon,\n\n functional: true,\n\n render (h, { data, children }): VNode {\n let iconName = ''\n\n // Support usage of v-text and v-html\n if (data.domProps) {\n iconName = data.domProps.textContent ||\n data.domProps.innerHTML ||\n iconName\n\n // Remove nodes so it doesn't\n // overwrite our changes\n delete data.domProps.textContent\n delete data.domProps.innerHTML\n }\n\n return h(VIcon, data, iconName ? [iconName] : children)\n },\n})\n","import Vue, { VNodeData, PropType } from 'vue'\n\n// Directives\nimport Ripple, { RippleOptions } from '../../directives/ripple'\n\n// Utilities\nimport { getObjectValueByPath } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'routable',\n\n directives: {\n Ripple,\n },\n\n props: {\n activeClass: String,\n append: Boolean,\n disabled: Boolean,\n exact: {\n type: Boolean as PropType,\n default: undefined,\n },\n exactPath: Boolean,\n exactActiveClass: String,\n link: Boolean,\n href: [String, Object],\n to: [String, Object],\n nuxt: Boolean,\n replace: Boolean,\n ripple: {\n type: [Boolean, Object],\n default: null,\n },\n tag: String,\n target: String,\n },\n\n data: () => ({\n isActive: false,\n proxyClass: '',\n }),\n\n computed: {\n classes (): object {\n const classes: Record = {}\n\n if (this.to) return classes\n\n if (this.activeClass) classes[this.activeClass] = this.isActive\n if (this.proxyClass) classes[this.proxyClass] = this.isActive\n\n return classes\n },\n computedRipple (): RippleOptions | boolean {\n return this.ripple ?? (!this.disabled && this.isClickable)\n },\n isClickable (): boolean {\n if (this.disabled) return false\n\n return Boolean(\n this.isLink ||\n this.$listeners.click ||\n this.$listeners['!click'] ||\n this.$attrs.tabindex\n )\n },\n isLink (): boolean {\n return this.to || this.href || this.link\n },\n styles: () => ({}),\n },\n\n watch: {\n $route: 'onRouteChange',\n },\n\n mounted () {\n this.onRouteChange()\n },\n\n methods: {\n generateRouteLink () {\n let exact = this.exact\n let tag\n\n const data: VNodeData = {\n attrs: {\n tabindex: 'tabindex' in this.$attrs ? this.$attrs.tabindex : undefined,\n },\n class: this.classes,\n style: this.styles,\n props: {},\n directives: [{\n name: 'ripple',\n value: this.computedRipple,\n }],\n [this.to ? 'nativeOn' : 'on']: {\n ...this.$listeners,\n ...('click' in this ? { click: (this as any).click } : undefined), // #14447\n },\n ref: 'link',\n }\n\n if (typeof this.exact === 'undefined') {\n exact = this.to === '/' ||\n (this.to === Object(this.to) && this.to.path === '/')\n }\n\n if (this.to) {\n // Add a special activeClass hook\n // for component level styles\n let activeClass = this.activeClass\n let exactActiveClass = this.exactActiveClass || activeClass\n\n if (this.proxyClass) {\n activeClass = `${activeClass} ${this.proxyClass}`.trim()\n exactActiveClass = `${exactActiveClass} ${this.proxyClass}`.trim()\n }\n\n tag = this.nuxt ? 'nuxt-link' : 'router-link'\n Object.assign(data.props, {\n to: this.to,\n exact,\n exactPath: this.exactPath,\n activeClass,\n exactActiveClass,\n append: this.append,\n replace: this.replace,\n })\n } else {\n tag = (this.href && 'a') || this.tag || 'div'\n\n if (tag === 'a' && this.href) data.attrs!.href = this.href\n }\n\n if (this.target) data.attrs!.target = this.target\n\n return { tag, data }\n },\n onRouteChange () {\n if (!this.to || !this.$refs.link || !this.$route) return\n const activeClass = `${this.activeClass || ''} ${this.proxyClass || ''}`.trim()\n const exactActiveClass = `${this.exactActiveClass || ''} ${this.proxyClass || ''}`.trim() || activeClass\n\n const path = '_vnode.data.class.' + (this.exact ? exactActiveClass : activeClass)\n\n this.$nextTick(() => {\n /* istanbul ignore else */\n if (!getObjectValueByPath(this.$refs.link, path) === this.isActive) {\n this.toggle()\n }\n })\n },\n toggle () {\n this.isActive = !this.isActive\n },\n },\n})\n","// design\r\nimport {\r\n Color,\r\n colorMD,\r\n variantNumber,\r\n variantType\r\n} from \"@/design/colors/Color\";\r\nimport { Text } from \"@/design/text/Text\";\r\nimport {\r\n direction,\r\n size,\r\n Spacing,\r\n spacingType\r\n} from \"@/design/spacing/Spacing\";\r\n\r\n// utils\r\nimport { isEmpty } from \"@/utils\";\r\n\r\n// vuex\r\nimport { createNamespacedHelpers } from \"vuex\";\r\nconst { mapGetters } = createNamespacedHelpers(\"solution\");\r\n\r\n// mixins\r\nimport { publicAccessMixin } from \"@/mixins/public/publicAccessMixin\";\r\n\r\n/**\r\n * Button Settings Mixin encapsulate common functionality of components which leveraging v-btn\r\n */\r\nexport const buttonSettingsMixin = {\r\n mixins: [publicAccessMixin],\r\n data() {\r\n return {\r\n spacingDirection: direction\r\n };\r\n },\r\n computed: {\r\n ...mapGetters({\r\n buttonColor: \"buttonColor\",\r\n buttonTextStyleSetting: \"buttonTextStyle\",\r\n buttonOutlinedSetting: \"buttonOutlined\",\r\n buttonRoundedSetting: \"buttonRounded\",\r\n buttonElevationSetting: \"buttonElevation\"\r\n }),\r\n\r\n /**\r\n * determines whether to make the background transparent based on current settings\r\n * Note: When using the color prop, the color will be applied to the button text instead of the background.\r\n * @return {boolean|boolean} if true then Makes the background transparent\r\n */\r\n buttonTextStyle() {\r\n return this.isPublicAccess\r\n ? this.publicAccess?.buttons?.textStyle ?? true\r\n : this.buttonTextStyleSetting;\r\n },\r\n\r\n /**\r\n * determines whether to make the Outlined button based on current settings\r\n * @return {boolean|boolean} if true Makes the background transparent and applies a thin border.\r\n */\r\n buttonOutlined() {\r\n return this.isPublicAccess\r\n ? this.publicAccess?.buttons?.outlined ?? false\r\n : this.buttonOutlinedSetting;\r\n },\r\n\r\n /**\r\n * determines whether to make the Rounded button based on current settings\r\n * @return {boolean|boolean} if true Applies a large border radius on the button.\r\n */\r\n buttonRounded() {\r\n return this.isPublicAccess\r\n ? this.publicAccess?.buttons?.rounded ?? false\r\n : this.buttonRoundedSetting;\r\n },\r\n\r\n /**\r\n * determines whether to make the Elevation button based on current settings\r\n * @return {number|Number} if true Designates an elevation applied to the component between 0 and 24. You can find more information on the elevation page.\r\n */\r\n buttonElevation() {\r\n return this.isPublicAccess\r\n ? this.publicAccess?.buttons?.elevation ?? 0\r\n : this.buttonElevationSetting ?? 0;\r\n },\r\n\r\n /**\r\n * Get button Material Design color\r\n * @returns {Color}\r\n */\r\n mdButtonColor() {\r\n return new Color(\r\n this.buttonColor.name,\r\n this.buttonColor.variantType,\r\n this.buttonColor.variantNumber\r\n );\r\n },\r\n\r\n /**\r\n * Get button Color Class\r\n * @returns {string|*}\r\n */\r\n buttonColorClass() {\r\n if (this.isPublicAccess) {\r\n const color = this.publicAccess?.buttons?.color;\r\n return isEmpty(color) ? this.mdButtonColor.getClassColor() : color;\r\n }\r\n\r\n return this.mdButtonColor.getClassColor();\r\n },\r\n\r\n buttonRecommendedColorClass() {\r\n return this.buttonTextStyle\r\n ? undefined\r\n : new Text(\r\n new Color(colorMD.grey, variantType.lighten, variantNumber.n2)\r\n ).getTextColorClass();\r\n },\r\n\r\n /**\r\n * Get Recommended Spacing Class\r\n * @return {String|string}\r\n */\r\n buttonRecommendedSpacingClass() {\r\n return this.recommendedSpacingClass(direction.right);\r\n },\r\n\r\n /**\r\n * button Recommended Text Style\r\n * @return {false|Chai.Assertion|*|boolean}\r\n */\r\n buttonRecommendedTextStyle() {\r\n return this.buttonOutlined ? this.false : this.buttonTextStyle;\r\n }\r\n },\r\n methods: {\r\n /**\r\n * Get button's Recommended Class\r\n * @param {string} spacingDirection\r\n * @return {string}\r\n */\r\n buttonRecommendedClass(spacingDirection = undefined) {\r\n return spacingDirection\r\n ? `${this.recommendedSpacingClass(spacingDirection)} ${\r\n this.buttonRecommendedColorClass\r\n }`\r\n : this.buttonRecommendedColorClass;\r\n },\r\n /**\r\n * recommended Spacing Class\r\n * @param { string } direction\r\n * @return {String|string}\r\n */\r\n recommendedSpacingClass(direction) {\r\n return new Spacing(\r\n spacingType.margin,\r\n direction,\r\n size.size2\r\n ).getClassSpacing();\r\n },\r\n\r\n /**\r\n * button Recommended Outlined\r\n * @param { boolean } outlined\r\n */\r\n buttonRecommendedOutlined(outlined = true) {\r\n return outlined ? !!this.buttonTextStyle : this.buttonOutlined;\r\n }\r\n }\r\n};\r\n","// Helpers\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport Vue, { PropType } from 'vue'\n\nexport type NumberOrNumberString = PropType\n\nexport default Vue.extend({\n name: 'measurable',\n\n props: {\n height: [Number, String] as NumberOrNumberString,\n maxHeight: [Number, String] as NumberOrNumberString,\n maxWidth: [Number, String] as NumberOrNumberString,\n minHeight: [Number, String] as NumberOrNumberString,\n minWidth: [Number, String] as NumberOrNumberString,\n width: [Number, String] as NumberOrNumberString,\n },\n\n computed: {\n measurableStyles (): object {\n const styles: Record = {}\n\n const height = convertToUnit(this.height)\n const minHeight = convertToUnit(this.minHeight)\n const minWidth = convertToUnit(this.minWidth)\n const maxHeight = convertToUnit(this.maxHeight)\n const maxWidth = convertToUnit(this.maxWidth)\n const width = convertToUnit(this.width)\n\n if (height) styles.height = height\n if (minHeight) styles.minHeight = minHeight\n if (minWidth) styles.minWidth = minWidth\n if (maxHeight) styles.maxHeight = maxHeight\n if (maxWidth) styles.maxWidth = maxWidth\n if (width) styles.width = width\n\n return styles\n },\n },\n})\n","import Vue from 'vue'\nimport { VueConstructor } from 'vue/types/vue'\nimport { consoleWarn } from '../../util/console'\n\nfunction generateWarning (child: string, parent: string) {\n return () => consoleWarn(`The ${child} component must be used inside a ${parent}`)\n}\n\nexport type Registrable = VueConstructor : {\n register (...props: any[]): void\n unregister (self: any): void\n }\n}>\n\nexport function inject<\n T extends string, C extends VueConstructor | null = null\n> (namespace: T, child?: string, parent?: string): Registrable {\n const defaultImpl = child && parent ? {\n register: generateWarning(child, parent),\n unregister: generateWarning(child, parent),\n } : null\n\n return Vue.extend({\n name: 'registrable-inject',\n\n inject: {\n [namespace]: {\n default: defaultImpl,\n },\n },\n })\n}\n\nexport function provide (namespace: string, self = false) {\n return Vue.extend({\n name: 'registrable-provide',\n\n provide (): object {\n return {\n [namespace]: self ? this : {\n register: (this as any).register,\n unregister: (this as any).unregister,\n },\n }\n },\n })\n}\n","// vuex\r\nimport { createNamespacedHelpers } from \"vuex\";\r\nconst { mapState, mapGetters, mapActions } = createNamespacedHelpers(\"user\");\r\n\r\nimport { principalMixin } from \"@/mixins/shared/user/principalMixin\";\r\nimport { systemOperations } from \"@/model/user/userModel\";\r\n\r\n/**\r\n * Encapsulate Questys current user\r\n */\r\nexport const userMixin = {\r\n mixins: [principalMixin],\r\n computed: {\r\n ...mapState({\r\n currentUser: \"user\",\r\n repositories: \"repositories\",\r\n categoryTypes: \"categoryTypes\"\r\n }),\r\n ...mapGetters({\r\n actorName: \"actorName\",\r\n userCategories: \"categories\",\r\n userFields: \"fields\",\r\n formFields: \"formFields\",\r\n findUserField: \"findField\",\r\n findFormField: \"findFormField\",\r\n countUserFields: \"countFields\",\r\n isPersistentField: \"isPersistentField\",\r\n isSystemField: \"isSystemField\",\r\n countUserCategories: \"countCategories\",\r\n findCategory: \"findCategory\",\r\n isAllowedViewField: \"isAllowedViewField\",\r\n createRecordCategories: \"createRecordCategories\",\r\n createRecordCategoriesByCategoryType:\r\n \"createRecordCategoriesByCategoryType\",\r\n updateRecordCategories: \"updateRecordCategories\",\r\n updateRecordCategoriesByCategoryType:\r\n \"updateRecordCategoriesByCategoryType\",\r\n isAllowedModifyField: \"isAllowedModifyField\",\r\n isAllowedSystemOperation: \"isAllowedSystemOperation\",\r\n isUserLoggedIn: \"isUserLoggedIn\",\r\n repository: \"repository\"\r\n }),\r\n\r\n /**\r\n * compute whether current user is allowed Access WF Projects\r\n * @return {boolean} true if current user is allowed to Access/Mange workflow Projects\r\n */\r\n allowedAccessWFProjects() {\r\n return !!this.isAllowedSystemOperation(systemOperations.accessWFProjects);\r\n },\r\n\r\n /**\r\n * compute whether current user is allowed to access Agenda Clerk Module\r\n * @return {boolean} true if current user is allowed to access/Mange workflow Projects\r\n */\r\n allowedAccessClerkModule() {\r\n return !!this.isAllowedSystemOperation(\r\n systemOperations.accessClerkModule\r\n );\r\n }\r\n\r\n /**\r\n * insert here allowed systemOperations on demand\r\n * ...\r\n */\r\n },\r\n methods: {\r\n ...mapActions({ setFormField: \"setFormField\" })\r\n }\r\n};\r\n","// Styles\nimport './VProgressCircular.sass'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\n\n// Utils\nimport { convertToUnit, getSlot } from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeChildren } from 'vue'\n\n/* @vue/component */\nexport default Colorable.extend({\n name: 'v-progress-circular',\n\n directives: { intersect },\n\n props: {\n button: Boolean,\n indeterminate: Boolean,\n rotate: {\n type: [Number, String],\n default: 0,\n },\n size: {\n type: [Number, String],\n default: 32,\n },\n width: {\n type: [Number, String],\n default: 4,\n },\n value: {\n type: [Number, String],\n default: 0,\n },\n },\n\n data: () => ({\n radius: 20,\n isVisible: true,\n }),\n\n computed: {\n calculatedSize (): number {\n return Number(this.size) + (this.button ? 8 : 0)\n },\n\n circumference (): number {\n return 2 * Math.PI * this.radius\n },\n\n classes (): object {\n return {\n 'v-progress-circular--visible': this.isVisible,\n 'v-progress-circular--indeterminate': this.indeterminate,\n 'v-progress-circular--button': this.button,\n }\n },\n\n normalizedValue (): number {\n if (this.value < 0) {\n return 0\n }\n\n if (this.value > 100) {\n return 100\n }\n\n return parseFloat(this.value)\n },\n\n strokeDashArray (): number {\n return Math.round(this.circumference * 1000) / 1000\n },\n\n strokeDashOffset (): string {\n return ((100 - this.normalizedValue) / 100) * this.circumference + 'px'\n },\n\n strokeWidth (): number {\n return Number(this.width) / +this.size * this.viewBoxSize * 2\n },\n\n styles (): object {\n return {\n height: convertToUnit(this.calculatedSize),\n width: convertToUnit(this.calculatedSize),\n }\n },\n\n svgStyles (): object {\n return {\n transform: `rotate(${Number(this.rotate)}deg)`,\n }\n },\n\n viewBoxSize (): number {\n return this.radius / (1 - Number(this.width) / +this.size)\n },\n },\n\n methods: {\n genCircle (name: string, offset: string | number): VNode {\n return this.$createElement('circle', {\n class: `v-progress-circular__${name}`,\n attrs: {\n fill: 'transparent',\n cx: 2 * this.viewBoxSize,\n cy: 2 * this.viewBoxSize,\n r: this.radius,\n 'stroke-width': this.strokeWidth,\n 'stroke-dasharray': this.strokeDashArray,\n 'stroke-dashoffset': offset,\n },\n })\n },\n genSvg (): VNode {\n const children = [\n this.indeterminate || this.genCircle('underlay', 0),\n this.genCircle('overlay', this.strokeDashOffset),\n ] as VNodeChildren\n\n return this.$createElement('svg', {\n style: this.svgStyles,\n attrs: {\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: `${this.viewBoxSize} ${this.viewBoxSize} ${2 * this.viewBoxSize} ${2 * this.viewBoxSize}`,\n },\n }, children)\n },\n genInfo (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-circular__info',\n }, getSlot(this))\n },\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n this.isVisible = isIntersecting\n },\n },\n\n render (h): VNode {\n return h('div', this.setTextColor(this.color, {\n staticClass: 'v-progress-circular',\n attrs: {\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': 100,\n 'aria-valuenow': this.indeterminate ? undefined : this.normalizedValue,\n },\n class: this.classes,\n directives: [{\n name: 'intersect',\n value: this.onObserve,\n }],\n style: this.styles,\n on: this.$listeners,\n }), [\n this.genSvg(),\n this.genInfo(),\n ])\n },\n})\n","// Components\nimport VExpansionPanel from './VExpansionPanel'\nimport { VExpandTransition } from '../transitions'\n\n// Mixins\nimport Bootable from '../../mixins/bootable'\nimport Colorable from '../../mixins/colorable'\nimport { inject as RegistrableInject } from '../../mixins/registrable'\n\n// Utilities\nimport { getSlot } from '../../util/helpers'\nimport mixins, { ExtractVue } from '../../util/mixins'\n\n// Types\nimport Vue, { VNode, VueConstructor } from 'vue'\n\nconst baseMixins = mixins(\n Bootable,\n Colorable,\n RegistrableInject<'expansionPanel', VueConstructor>('expansionPanel', 'v-expansion-panel-content', 'v-expansion-panel')\n)\n\ninterface options extends ExtractVue {\n expansionPanel: InstanceType\n}\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-expansion-panel-content',\n\n data: () => ({\n isActive: false,\n }),\n\n computed: {\n parentIsActive (): boolean {\n return this.expansionPanel.isActive\n },\n },\n\n watch: {\n parentIsActive: {\n immediate: true,\n handler (val, oldVal) {\n if (val) this.isBooted = true\n\n if (oldVal == null) this.isActive = val\n else this.$nextTick(() => this.isActive = val)\n },\n },\n },\n\n created () {\n this.expansionPanel.registerContent(this)\n },\n\n beforeDestroy () {\n this.expansionPanel.unregisterContent()\n },\n\n render (h): VNode {\n return h(VExpandTransition, this.showLazyContent(() => [\n h('div', this.setBackgroundColor(this.color, {\n staticClass: 'v-expansion-panel-content',\n directives: [{\n name: 'show',\n value: this.isActive,\n }],\n }), [\n h('div', { class: 'v-expansion-panel-content__wrap' }, getSlot(this, 'default', { open: this.isActive })),\n ]),\n ]))\n },\n})\n","// Mixins\nimport { Registrable, inject as RegistrableInject } from '../registrable'\n\n// Utilities\nimport { ExtractVue } from '../../util/mixins'\nimport { VueConstructor } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\nexport type Groupable = VueConstructor> & {\n activeClass: string\n isActive: boolean\n disabled: boolean\n groupClasses: object\n toggle (e?: Event): void\n}>\n\nexport function factory (\n namespace: T,\n child?: string,\n parent?: string\n): Groupable {\n return RegistrableInject(namespace, child, parent).extend({\n name: 'groupable',\n\n props: {\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this[namespace]) return undefined\n\n return this[namespace].activeClass\n },\n } as any as PropValidator,\n disabled: Boolean,\n },\n\n data () {\n return {\n isActive: false,\n }\n },\n\n computed: {\n groupClasses (): object {\n if (!this.activeClass) return {}\n\n return {\n [this.activeClass]: this.isActive,\n }\n },\n },\n\n created () {\n this[namespace] && (this[namespace] as any).register(this)\n },\n\n beforeDestroy () {\n this[namespace] && (this[namespace] as any).unregister(this)\n },\n\n methods: {\n toggle (e?: Event) {\n if (this.disabled && e) {\n // Prevent keyboard actions\n // from children elements\n // within disabled tabs\n e.preventDefault()\n return\n }\n this.$emit('change')\n },\n },\n })\n}\n\n/* eslint-disable-next-line @typescript-eslint/no-redeclare */\nconst Groupable = factory('itemGroup')\n\nexport default Groupable\n","// Styles\nimport './VRipple.sass'\n\n// Utilities\nimport { consoleWarn } from '../../util/console'\nimport { keyCodes } from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeDirective } from 'vue'\n\ntype VuetifyRippleEvent = (MouseEvent | TouchEvent | KeyboardEvent) & { rippleStop?: boolean }\n\nconst DELAY_RIPPLE = 80\n\nfunction transform (el: HTMLElement, value: string) {\n el.style.transform = value\n el.style.webkitTransform = value\n}\n\nexport interface RippleOptions {\n class?: string\n center?: boolean\n circle?: boolean\n}\n\nfunction isTouchEvent (e: VuetifyRippleEvent): e is TouchEvent {\n return e.constructor.name === 'TouchEvent'\n}\n\nfunction isKeyboardEvent (e: VuetifyRippleEvent): e is KeyboardEvent {\n return e.constructor.name === 'KeyboardEvent'\n}\n\nconst calculate = (\n e: VuetifyRippleEvent,\n el: HTMLElement,\n value: RippleOptions = {}\n) => {\n let localX = 0\n let localY = 0\n\n if (!isKeyboardEvent(e)) {\n const offset = el.getBoundingClientRect()\n const target = isTouchEvent(e) ? e.touches[e.touches.length - 1] : e\n\n localX = target.clientX - offset.left\n localY = target.clientY - offset.top\n }\n\n let radius = 0\n let scale = 0.3\n if (el._ripple && el._ripple.circle) {\n scale = 0.15\n radius = el.clientWidth / 2\n radius = value.center ? radius : radius + Math.sqrt((localX - radius) ** 2 + (localY - radius) ** 2) / 4\n } else {\n radius = Math.sqrt(el.clientWidth ** 2 + el.clientHeight ** 2) / 2\n }\n\n const centerX = `${(el.clientWidth - (radius * 2)) / 2}px`\n const centerY = `${(el.clientHeight - (radius * 2)) / 2}px`\n\n const x = value.center ? centerX : `${localX - radius}px`\n const y = value.center ? centerY : `${localY - radius}px`\n\n return { radius, scale, x, y, centerX, centerY }\n}\n\nconst ripples = {\n /* eslint-disable max-statements */\n show (\n e: VuetifyRippleEvent,\n el: HTMLElement,\n value: RippleOptions = {}\n ) {\n if (!el._ripple || !el._ripple.enabled) {\n return\n }\n\n const container = document.createElement('span')\n const animation = document.createElement('span')\n\n container.appendChild(animation)\n container.className = 'v-ripple__container'\n\n if (value.class) {\n container.className += ` ${value.class}`\n }\n\n const { radius, scale, x, y, centerX, centerY } = calculate(e, el, value)\n\n const size = `${radius * 2}px`\n animation.className = 'v-ripple__animation'\n animation.style.width = size\n animation.style.height = size\n\n el.appendChild(container)\n\n const computed = window.getComputedStyle(el)\n if (computed && computed.position === 'static') {\n el.style.position = 'relative'\n el.dataset.previousPosition = 'static'\n }\n\n animation.classList.add('v-ripple__animation--enter')\n animation.classList.add('v-ripple__animation--visible')\n transform(animation, `translate(${x}, ${y}) scale3d(${scale},${scale},${scale})`)\n animation.dataset.activated = String(performance.now())\n\n setTimeout(() => {\n animation.classList.remove('v-ripple__animation--enter')\n animation.classList.add('v-ripple__animation--in')\n transform(animation, `translate(${centerX}, ${centerY}) scale3d(1,1,1)`)\n }, 0)\n },\n\n hide (el: HTMLElement | null) {\n if (!el || !el._ripple || !el._ripple.enabled) return\n\n const ripples = el.getElementsByClassName('v-ripple__animation')\n\n if (ripples.length === 0) return\n const animation = ripples[ripples.length - 1]\n\n if (animation.dataset.isHiding) return\n else animation.dataset.isHiding = 'true'\n\n const diff = performance.now() - Number(animation.dataset.activated)\n const delay = Math.max(250 - diff, 0)\n\n setTimeout(() => {\n animation.classList.remove('v-ripple__animation--in')\n animation.classList.add('v-ripple__animation--out')\n\n setTimeout(() => {\n const ripples = el.getElementsByClassName('v-ripple__animation')\n if (ripples.length === 1 && el.dataset.previousPosition) {\n el.style.position = el.dataset.previousPosition\n delete el.dataset.previousPosition\n }\n\n if (animation.parentNode?.parentNode === el) el.removeChild(animation.parentNode)\n }, 300)\n }, delay)\n },\n}\n\nfunction isRippleEnabled (value: any): value is true {\n return typeof value === 'undefined' || !!value\n}\n\nfunction rippleShow (e: VuetifyRippleEvent) {\n const value: RippleOptions = {}\n const element = e.currentTarget as HTMLElement\n\n if (!element || !element._ripple || element._ripple.touched || e.rippleStop) return\n\n // Don't allow the event to trigger ripples on any other elements\n e.rippleStop = true\n\n if (isTouchEvent(e)) {\n element._ripple.touched = true\n element._ripple.isTouch = true\n } else {\n // It's possible for touch events to fire\n // as mouse events on Android/iOS, this\n // will skip the event call if it has\n // already been registered as touch\n if (element._ripple.isTouch) return\n }\n value.center = element._ripple.centered || isKeyboardEvent(e)\n if (element._ripple.class) {\n value.class = element._ripple.class\n }\n\n if (isTouchEvent(e)) {\n // already queued that shows or hides the ripple\n if (element._ripple.showTimerCommit) return\n\n element._ripple.showTimerCommit = () => {\n ripples.show(e, element, value)\n }\n element._ripple.showTimer = window.setTimeout(() => {\n if (element && element._ripple && element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit()\n element._ripple.showTimerCommit = null\n }\n }, DELAY_RIPPLE)\n } else {\n ripples.show(e, element, value)\n }\n}\n\nfunction rippleHide (e: Event) {\n const element = e.currentTarget as HTMLElement | null\n if (!element || !element._ripple) return\n\n window.clearTimeout(element._ripple.showTimer)\n\n // The touch interaction occurs before the show timer is triggered.\n // We still want to show ripple effect.\n if (e.type === 'touchend' && element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit()\n element._ripple.showTimerCommit = null\n\n // re-queue ripple hiding\n element._ripple.showTimer = setTimeout(() => {\n rippleHide(e)\n })\n return\n }\n\n window.setTimeout(() => {\n if (element._ripple) {\n element._ripple.touched = false\n }\n })\n ripples.hide(element)\n}\n\nfunction rippleCancelShow (e: MouseEvent | TouchEvent) {\n const element = e.currentTarget as HTMLElement | undefined\n\n if (!element || !element._ripple) return\n\n if (element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit = null\n }\n\n window.clearTimeout(element._ripple.showTimer)\n}\n\nlet keyboardRipple = false\n\nfunction keyboardRippleShow (e: KeyboardEvent) {\n if (!keyboardRipple && (e.keyCode === keyCodes.enter || e.keyCode === keyCodes.space)) {\n keyboardRipple = true\n rippleShow(e)\n }\n}\n\nfunction keyboardRippleHide (e: KeyboardEvent) {\n keyboardRipple = false\n rippleHide(e)\n}\n\nfunction focusRippleHide (e: FocusEvent) {\n if (keyboardRipple === true) {\n keyboardRipple = false\n rippleHide(e)\n }\n}\n\nfunction updateRipple (el: HTMLElement, binding: VNodeDirective, wasEnabled: boolean) {\n const enabled = isRippleEnabled(binding.value)\n if (!enabled) {\n ripples.hide(el)\n }\n el._ripple = el._ripple || {}\n el._ripple.enabled = enabled\n const value = binding.value || {}\n if (value.center) {\n el._ripple.centered = true\n }\n if (value.class) {\n el._ripple.class = binding.value.class\n }\n if (value.circle) {\n el._ripple.circle = value.circle\n }\n if (enabled && !wasEnabled) {\n el.addEventListener('touchstart', rippleShow, { passive: true })\n el.addEventListener('touchend', rippleHide, { passive: true })\n el.addEventListener('touchmove', rippleCancelShow, { passive: true })\n el.addEventListener('touchcancel', rippleHide)\n\n el.addEventListener('mousedown', rippleShow)\n el.addEventListener('mouseup', rippleHide)\n el.addEventListener('mouseleave', rippleHide)\n\n el.addEventListener('keydown', keyboardRippleShow)\n el.addEventListener('keyup', keyboardRippleHide)\n\n el.addEventListener('blur', focusRippleHide)\n\n // Anchor tags can be dragged, causes other hides to fail - #1537\n el.addEventListener('dragstart', rippleHide, { passive: true })\n } else if (!enabled && wasEnabled) {\n removeListeners(el)\n }\n}\n\nfunction removeListeners (el: HTMLElement) {\n el.removeEventListener('mousedown', rippleShow)\n el.removeEventListener('touchstart', rippleShow)\n el.removeEventListener('touchend', rippleHide)\n el.removeEventListener('touchmove', rippleCancelShow)\n el.removeEventListener('touchcancel', rippleHide)\n el.removeEventListener('mouseup', rippleHide)\n el.removeEventListener('mouseleave', rippleHide)\n el.removeEventListener('keydown', keyboardRippleShow)\n el.removeEventListener('keyup', keyboardRippleHide)\n el.removeEventListener('dragstart', rippleHide)\n el.removeEventListener('blur', focusRippleHide)\n}\n\nfunction directive (el: HTMLElement, binding: VNodeDirective, node: VNode) {\n updateRipple(el, binding, false)\n\n if (process.env.NODE_ENV === 'development') {\n // warn if an inline element is used, waiting for el to be in the DOM first\n node.context && node.context.$nextTick(() => {\n const computed = window.getComputedStyle(el)\n if (computed && computed.display === 'inline') {\n const context = (node as any).fnOptions ? [(node as any).fnOptions, node.context] : [node.componentInstance]\n consoleWarn('v-ripple can only be used on block-level elements', ...context)\n }\n })\n }\n}\n\nfunction unbind (el: HTMLElement) {\n delete el._ripple\n removeListeners(el)\n}\n\nfunction update (el: HTMLElement, binding: VNodeDirective) {\n if (binding.value === binding.oldValue) {\n return\n }\n\n const wasEnabled = isRippleEnabled(binding.oldValue)\n updateRipple(el, binding, wasEnabled)\n}\n\nexport const Ripple = {\n bind: directive,\n unbind,\n update,\n}\n\nexport default Ripple\n","// vuex\r\nimport { createNamespacedHelpers } from \"vuex\";\r\nconst { mapActions, mapMutations } = createNamespacedHelpers(\"inbox\");\r\n\r\n// design\r\nimport {\r\n iconAccount,\r\n iconCalendar,\r\n iconDotsHorizontal,\r\n iconManager\r\n} from \"@/design/icon/iconConst\";\r\n\r\n// filters\r\nimport {\r\n toLocalDateTimeString,\r\n toShortLocalString\r\n} from \"@/filters/dateFilter\";\r\n\r\n// model\r\nimport {\r\n dueDateColorClass,\r\n dueDateMessage,\r\n dueDateTextClass,\r\n findTaskPriority,\r\n findTaskState,\r\n findUserTaskType\r\n} from \"@/model/workflow/task/taskModel\";\r\nimport {\r\n findProjectOperation,\r\n projectOperation\r\n} from \"@/model/workflow/project/projectModel\";\r\nimport {\r\n createActionResultError,\r\n createActionResultSuccess\r\n} from \"@/model/action/actionModel\";\r\nimport { UPDATE_TASK_ASSIGNEE } from \"@/store/inbox/mutation-types\";\r\nimport { canReassignTask } from \"@/services/inbox/taskService\";\r\n\r\nexport const taskMixin = {\r\n components: {\r\n TaskNotes: () => import(\"@/components/task/TaskNotes\"),\r\n AssignUserDialog: () =>\r\n import(\"@/components/task/dialogs/AssignUserDialog.vue\")\r\n },\r\n data() {\r\n return {\r\n iconMore: iconDotsHorizontal,\r\n iconCalendar: iconCalendar,\r\n iconUser: iconAccount,\r\n iconManager: iconManager,\r\n visibleDialogAssignUser: false\r\n };\r\n },\r\n props: {\r\n /**\r\n * @type {{taskId: number, typeId: number, actorId: number, actorName: string, userName: string, assignee: string, canReassign: boolean, canceledRecipients: string, comment: string, created: string, effective: string, dueDate: string, duration: string, isDue: boolean, isMilestone: boolean, isOverdue: boolean, priority: number, priorityText: string, recordId: number, recordTypeId: number, recordTypeName: string, projectManager: string, recordName: string, status: number, statusText: string, notes: {id: number, created: string, taskId: number, userId: number, userName: string}[]}}\r\n */\r\n task: undefined,\r\n\r\n /**\r\n * is Report\r\n */\r\n isReport: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n computed: {\r\n /**\r\n * User Task id\r\n * @return {Number|number}\r\n */\r\n taskId() {\r\n return this.task?.taskId ?? -1;\r\n },\r\n\r\n /**\r\n * User Task task name\r\n * @return {String|string}\r\n */\r\n taskName() {\r\n return this.task?.name ?? \"\";\r\n },\r\n\r\n /**\r\n * task Type Id\r\n * @return {*|number}\r\n */\r\n taskTypeId() {\r\n return this.task?.typeId ?? -1;\r\n },\r\n\r\n /**\r\n * user Task Type\r\n * @return {{id: number, name: string, commandAccept: {label: string, icon: string, color: {variantType: string, variantNumber: number, name: string}}, commandReject: {label: string, icon: string, color: {variantType: string, variantNumber: number, name: string}}}}\r\n */\r\n userTaskType() {\r\n return findUserTaskType(this.taskTypeId);\r\n },\r\n\r\n /**\r\n * task's Workflow Project id\r\n * @return {Number|number}\r\n */\r\n projectId() {\r\n return this.task?.projectId ?? -1;\r\n },\r\n\r\n /**\r\n * task's Workflow project Name\r\n * @return {String|string}\r\n */\r\n projectName() {\r\n return this.task?.projectName ?? \"\";\r\n },\r\n\r\n /**\r\n * task's Workflow Template id\r\n * @return {Number|number}\r\n */\r\n templateId() {\r\n return this.task?.templateId ?? -1;\r\n },\r\n\r\n /**\r\n * task's Workflow Template name\r\n * @return {String|string}\r\n */\r\n templateName() {\r\n return this.task?.templateName;\r\n },\r\n\r\n /**\r\n * Associated task's Workflow record name\r\n * @return {String|string}\r\n */\r\n subject() {\r\n return this.task?.recordName;\r\n },\r\n\r\n /**\r\n * comments\r\n */\r\n comment: {\r\n get() {\r\n return this.task?.comment;\r\n },\r\n set(value) {\r\n if (this.task) {\r\n this.task.comment = value;\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Task notes\r\n * @return {{id: number, created: string, taskId: number, userId: number, userName: string}[]}\r\n */\r\n notes() {\r\n return this.task?.notes ?? [];\r\n },\r\n\r\n /**\r\n * task due Date\r\n * @return {string|string}\r\n */\r\n dueDate() {\r\n return this.task?.dueDate ? toShortLocalString(this.task?.dueDate) : \"\";\r\n },\r\n\r\n /**\r\n * is Due?\r\n * @return {Boolean|boolean}\r\n */\r\n isDue() {\r\n return this.task?.isDue ?? false;\r\n },\r\n\r\n /**\r\n * is Task Overdue\r\n * @return {Boolean|boolean}\r\n */\r\n isOverdue() {\r\n return this.task?.isOverdue ?? false;\r\n },\r\n\r\n /**\r\n * is Task Milestone\r\n * @return {Boolean|boolean}\r\n */\r\n isMilestone() {\r\n return this.task?.isMilestone ?? false;\r\n },\r\n\r\n /**\r\n * task priority\r\n * @return {Number|number}\r\n */\r\n priority() {\r\n return this.task?.priority ?? -1;\r\n },\r\n\r\n /**\r\n * priority Text\r\n * @return {String} priority Text\r\n */\r\n priorityText() {\r\n return findTaskPriority(this.task?.priority ?? -1)?.text ?? \"\";\r\n },\r\n\r\n assignmentMethod() {\r\n return this.task?.assignmentMethodTypeText;\r\n },\r\n\r\n /**\r\n * Assignee\r\n * @return {String|string|undefined}\r\n */\r\n assignee() {\r\n const actorId = this.task?.actorId ?? -1;\r\n const actorName = this.task?.actorName;\r\n\r\n // make sure whether a user has been assigned (manually/auto/self)\r\n if (actorId > 0) {\r\n // a user has been assigned (manually/auto/self)\r\n return actorName;\r\n }\r\n\r\n return this.task?.assignedTo;\r\n },\r\n\r\n /**\r\n * name of project Manager\r\n * @return {String|string}\r\n */\r\n projectManager() {\r\n return this.task?.projectManager ?? \"\";\r\n },\r\n\r\n /**\r\n * task Created date and time\r\n * @return {*}\r\n */\r\n taskCreated() {\r\n return this.task?.created ? toLocalDateTimeString(this.task.created) : \"\";\r\n },\r\n\r\n /**\r\n * task Effective date and time\r\n * @return {*}\r\n */\r\n taskEffective() {\r\n return this.task?.effective\r\n ? toLocalDateTimeString(this.task.effective)\r\n : \"\";\r\n },\r\n\r\n /**\r\n * task status\r\n * @return {string} task status\r\n */\r\n taskStatus() {\r\n return findTaskState(this.task?.status ?? -1)?.name;\r\n },\r\n\r\n /**\r\n * status Changed\r\n * @return {string|string}\r\n */\r\n statusChanged() {\r\n return this.task.statusChanged\r\n ? toLocalDateTimeString(this.task.statusChanged)\r\n : \"\";\r\n },\r\n\r\n /**\r\n * task Duration\r\n * @return {string|undefined} task Duration\r\n */\r\n taskDuration() {\r\n return this.task?.duration;\r\n },\r\n\r\n /**\r\n *\r\n * @return {String|string|undefined}\r\n */\r\n dueDateColorClass() {\r\n return dueDateColorClass(this.task);\r\n },\r\n\r\n /**\r\n * due Date Class\r\n * @return {String|string|undefined}\r\n */\r\n dueDateTextClass() {\r\n return dueDateTextClass(this.task);\r\n },\r\n\r\n /**\r\n * due Date Message\r\n * @return {String|string}\r\n */\r\n dueDateMessage() {\r\n return dueDateMessage(this.task);\r\n },\r\n\r\n /**\r\n * visible Notes\r\n * @return {boolean} true if visible Notes\r\n */\r\n visibleNotes() {\r\n return !this.isReport && (this.task?.notes?.length ?? 0) > 0;\r\n },\r\n\r\n /**\r\n * visible ReAssign Button\r\n * @return {boolean} true if ReAssign Button is visible\r\n */\r\n visibleReAssignButton() {\r\n /**\r\n * handle report\r\n */\r\n if (this.isReport) {\r\n return false;\r\n }\r\n\r\n return canReassignTask(this.task);\r\n }\r\n },\r\n\r\n methods: {\r\n ...mapActions({\r\n assignUser: \"assignUser\"\r\n }),\r\n\r\n ...mapMutations({ updateTaskAssignee: UPDATE_TASK_ASSIGNEE }),\r\n\r\n /**\r\n * Show ReAssign Dialog\r\n */\r\n showReAssignDialog() {\r\n this.visibleDialogAssignUser = true;\r\n },\r\n\r\n /**\r\n * Close Dialog Assign User\r\n */\r\n onCloseAssignUserTaskDialog() {\r\n this.visibleDialogAssignUser = false;\r\n },\r\n\r\n /**\r\n * Event On Assign User\r\n * @param {String} userName\r\n * @param {Number} userId\r\n * @param {String} comment\r\n * @param {Boolean} notify\r\n * @return {Promise<{type: string, message: string, outcome: string}>}\r\n */\r\n async onUserAssignment(userName, userId, comment, notify) {\r\n try {\r\n const operation = findProjectOperation(projectOperation.ReassignTask);\r\n const action = `${operation?.label}`;\r\n\r\n const payload = {\r\n taskId: this.taskId,\r\n userId: userId ?? -1,\r\n comment: comment ?? \"\",\r\n sendNotification: notify ?? false\r\n };\r\n const result = await this.assignUser(payload);\r\n if (result) {\r\n return createActionResultSuccess(action);\r\n } else return createActionResultError(\"User Reassignment\");\r\n } catch (e) {\r\n return createActionResultError(e?.toString());\r\n }\r\n }\r\n }\r\n};\r\n","// Styles\nimport './VItemGroup.sass'\n\n// Mixins\nimport Comparable from '../../mixins/comparable'\nimport Groupable from '../../mixins/groupable'\nimport Proxyable from '../../mixins/proxyable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { consoleWarn } from '../../util/console'\nimport { getSlot } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue/types'\n\nexport type GroupableInstance = InstanceType & {\n id?: string\n to?: any\n value?: any\n }\n\nexport const BaseItemGroup = mixins(\n Comparable,\n Proxyable,\n Themeable\n).extend({\n name: 'base-item-group',\n\n props: {\n activeClass: {\n type: String,\n default: 'v-item--active',\n },\n mandatory: Boolean,\n max: {\n type: [Number, String],\n default: null,\n },\n multiple: Boolean,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n data () {\n return {\n // As long as a value is defined, show it\n // Otherwise, check if multiple\n // to determine which default to provide\n internalLazyValue: this.value !== undefined\n ? this.value\n : this.multiple ? [] : undefined,\n items: [] as GroupableInstance[],\n }\n },\n\n computed: {\n classes (): Record {\n return {\n 'v-item-group': true,\n ...this.themeClasses,\n }\n },\n selectedIndex (): number {\n return (this.selectedItem && this.items.indexOf(this.selectedItem)) || -1\n },\n selectedItem (): GroupableInstance | undefined {\n if (this.multiple) return undefined\n\n return this.selectedItems[0]\n },\n selectedItems (): GroupableInstance[] {\n return this.items.filter((item, index) => {\n return this.toggleMethod(this.getValue(item, index))\n })\n },\n selectedValues (): any[] {\n if (this.internalValue == null) return []\n\n return Array.isArray(this.internalValue)\n ? this.internalValue\n : [this.internalValue]\n },\n toggleMethod (): (v: any) => boolean {\n if (!this.multiple) {\n return (v: any) => this.valueComparator(this.internalValue, v)\n }\n\n const internalValue = this.internalValue\n if (Array.isArray(internalValue)) {\n return (v: any) => internalValue.some(intern => this.valueComparator(intern, v))\n }\n\n return () => false\n },\n },\n\n watch: {\n internalValue: 'updateItemsState',\n items: 'updateItemsState',\n },\n\n created () {\n if (this.multiple && !Array.isArray(this.internalValue)) {\n consoleWarn('Model must be bound to an array if the multiple property is true.', this)\n }\n },\n\n methods: {\n\n genData (): object {\n return {\n class: this.classes,\n }\n },\n getValue (item: GroupableInstance, i: number): unknown {\n return item.value === undefined\n ? i\n : item.value\n },\n onClick (item: GroupableInstance) {\n this.updateInternalValue(\n this.getValue(item, this.items.indexOf(item))\n )\n },\n register (item: GroupableInstance) {\n const index = this.items.push(item) - 1\n\n item.$on('change', () => this.onClick(item))\n\n // If no value provided and mandatory,\n // assign first registered item\n if (this.mandatory && !this.selectedValues.length) {\n this.updateMandatory()\n }\n\n this.updateItem(item, index)\n },\n unregister (item: GroupableInstance) {\n if (this._isDestroyed) return\n\n const index = this.items.indexOf(item)\n const value = this.getValue(item, index)\n\n this.items.splice(index, 1)\n\n const valueIndex = this.selectedValues.indexOf(value)\n\n // Items is not selected, do nothing\n if (valueIndex < 0) return\n\n // If not mandatory, use regular update process\n if (!this.mandatory) {\n return this.updateInternalValue(value)\n }\n\n // Remove the value\n if (this.multiple && Array.isArray(this.internalValue)) {\n this.internalValue = this.internalValue.filter(v => v !== value)\n } else {\n this.internalValue = undefined\n }\n\n // If mandatory and we have no selection\n // add the last item as value\n /* istanbul ignore else */\n if (!this.selectedItems.length) {\n this.updateMandatory(true)\n }\n },\n updateItem (item: GroupableInstance, index: number) {\n const value = this.getValue(item, index)\n\n item.isActive = this.toggleMethod(value)\n },\n // https://github.com/vuetifyjs/vuetify/issues/5352\n updateItemsState () {\n this.$nextTick(() => {\n if (this.mandatory &&\n !this.selectedItems.length\n ) {\n return this.updateMandatory()\n }\n\n // TODO: Make this smarter so it\n // doesn't have to iterate every\n // child in an update\n this.items.forEach(this.updateItem)\n })\n },\n updateInternalValue (value: any) {\n this.multiple\n ? this.updateMultiple(value)\n : this.updateSingle(value)\n },\n updateMandatory (last?: boolean) {\n if (!this.items.length) return\n\n const items = this.items.slice()\n\n if (last) items.reverse()\n\n const item = items.find(item => !item.disabled)\n\n // If no tabs are available\n // aborts mandatory value\n if (!item) return\n\n const index = this.items.indexOf(item)\n\n this.updateInternalValue(\n this.getValue(item, index)\n )\n },\n updateMultiple (value: any) {\n const defaultValue = Array.isArray(this.internalValue)\n ? this.internalValue\n : []\n const internalValue = defaultValue.slice()\n const index = internalValue.findIndex(val => this.valueComparator(val, value))\n\n if (\n this.mandatory &&\n // Item already exists\n index > -1 &&\n // value would be reduced below min\n internalValue.length - 1 < 1\n ) return\n\n if (\n // Max is set\n this.max != null &&\n // Item doesn't exist\n index < 0 &&\n // value would be increased above max\n internalValue.length + 1 > this.max\n ) return\n\n index > -1\n ? internalValue.splice(index, 1)\n : internalValue.push(value)\n\n this.internalValue = internalValue\n },\n updateSingle (value: any) {\n const isSame = this.valueComparator(this.internalValue, value)\n\n if (this.mandatory && isSame) return\n\n this.internalValue = isSame ? undefined : value\n },\n },\n\n render (h): VNode {\n return h(this.tag, this.genData(), getSlot(this))\n },\n})\n\nexport default BaseItemGroup.extend({\n name: 'v-item-group',\n\n provide (): object {\n return {\n itemGroup: this,\n }\n },\n})\n","import './VGrid.sass'\n\nimport Vue, { VNode, PropOptions } from 'vue'\nimport mergeData from '../../util/mergeData'\nimport { upperFirst } from '../../util/helpers'\n\n// no xs\nconst breakpoints = ['sm', 'md', 'lg', 'xl']\n\nconst breakpointProps = (() => {\n return breakpoints.reduce((props, val) => {\n props[val] = {\n type: [Boolean, String, Number],\n default: false,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst offsetProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['offset' + upperFirst(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst orderProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['order' + upperFirst(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst propMap = {\n col: Object.keys(breakpointProps),\n offset: Object.keys(offsetProps),\n order: Object.keys(orderProps),\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: boolean | string | number) {\n let className = type\n if (val == null || val === false) {\n return undefined\n }\n if (prop) {\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // Handling the boolean style prop when accepting [Boolean, String, Number]\n // means Vue will not convert to sm: true for us.\n // Since the default is false, an empty string indicates the prop's presence.\n if (type === 'col' && (val === '' || val === true)) {\n // .col-md\n return className.toLowerCase()\n }\n // .order-md-6\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst cache = new Map()\n\nexport default Vue.extend({\n name: 'v-col',\n functional: true,\n props: {\n cols: {\n type: [Boolean, String, Number],\n default: false,\n },\n ...breakpointProps,\n offset: {\n type: [String, Number],\n default: null,\n },\n ...offsetProps,\n order: {\n type: [String, Number],\n default: null,\n },\n ...orderProps,\n alignSelf: {\n type: String,\n default: null,\n validator: (str: any) => ['auto', 'start', 'end', 'center', 'baseline', 'stretch'].includes(str),\n },\n tag: {\n type: String,\n default: 'div',\n },\n },\n render (h, { props, data, children, parent }): VNode {\n // Super-fast memoization based on props, 5x faster than JSON.stringify\n let cacheKey = ''\n for (const prop in props) {\n cacheKey += String((props as any)[prop])\n }\n let classList = cache.get(cacheKey)\n\n if (!classList) {\n classList = []\n // Loop through `col`, `offset`, `order` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string | number | boolean = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n const hasColClasses = classList.some(className => className.startsWith('col-'))\n\n classList.push({\n // Default to .col if no other col-{bp}-* classes generated nor `cols` specified.\n col: !hasColClasses || !props.cols,\n [`col-${props.cols}`]: props.cols,\n [`offset-${props.offset}`]: props.offset,\n [`order-${props.order}`]: props.order,\n [`align-self-${props.alignSelf}`]: props.alignSelf,\n })\n\n cache.set(cacheKey, classList)\n }\n\n return h(props.tag, mergeData(data, { class: classList }), children)\n },\n})\n","// design\r\nimport { Color } from \"@/design/colors/Color\";\r\n\r\n// vuex\r\nimport { createNamespacedHelpers } from \"vuex\";\r\nconst { mapGetters } = createNamespacedHelpers(\"solution\");\r\n\r\n/**\r\n * Delete Settings Mixin encapsulate delete Settings logic\r\n */\r\nexport const deleteSettingsMixin = {\r\n computed: {\r\n ...mapGetters({\r\n deleteColor: \"deleteColor\"\r\n }),\r\n /**\r\n * Get Delete color (implementation of Material Design)\r\n * @returns {Color}\r\n */\r\n mdDeleteColor() {\r\n return new Color(\r\n this.deleteColor.name,\r\n this.deleteColor.variantType,\r\n this.deleteColor.variantNumber\r\n );\r\n },\r\n /**\r\n * Get Delete color class\r\n * @returns {string|*}\r\n */\r\n deleteColorClass() {\r\n return this.mdDeleteColor.getClassColor();\r\n }\r\n }\r\n};\r\n","import Vue from 'vue'\n\n/**\n * This mixin provides `attrs$` and `listeners$` to work around\n * vue bug https://github.com/vuejs/vue/issues/10115\n */\n\nfunction makeWatcher (property: string): ThisType & ((val: any, oldVal: any) => void) {\n return function (this: Vue, val, oldVal) {\n for (const attr in oldVal) {\n if (!Object.prototype.hasOwnProperty.call(val, attr)) {\n this.$delete(this.$data[property], attr)\n }\n }\n for (const attr in val) {\n this.$set(this.$data[property], attr, val[attr])\n }\n }\n}\n\nexport default Vue.extend({\n data: () => ({\n attrs$: {} as Dictionary,\n listeners$: {} as Dictionary,\n }),\n\n created () {\n // Work around unwanted re-renders: https://github.com/vuejs/vue/issues/10115\n // Make sure to use `attrs$` instead of `$attrs` (confusing right?)\n this.$watch('$attrs', makeWatcher('attrs$'), { immediate: true })\n this.$watch('$listeners', makeWatcher('listeners$'), { immediate: true })\n },\n})\n","// router\r\nimport { createAppModuleRoute } from \"@/router/solution/solutionRoutes\";\r\n\r\n// model\r\nimport { moduleNames } from \"@/model/solution/moduleModel\";\r\n\r\n// mixins\r\nimport { appMixin } from \"@/mixins/shared/base/app/appMixin\";\r\nimport { userSettingsMixin } from \"@/mixins/shared/base/settings/userSettingsMixin\";\r\nimport { publicAccessMixin } from \"@/mixins/public/publicAccessMixin\";\r\nimport { principalMixin } from \"@/mixins/shared/user/principalMixin\";\r\n\r\n/**\r\n * Application Module Navigatable mixin\r\n */\r\nexport const appModuleNavigatable = {\r\n mixins: [appMixin, userSettingsMixin, publicAccessMixin, principalMixin],\r\n data() {\r\n return {\r\n moduleNames: moduleNames\r\n };\r\n },\r\n computed: {\r\n /**\r\n * Get the list of Applications/Module-features available to current user\r\n * @returns {[{icon: string, name: string, title: string}]}\r\n */\r\n appModules() {\r\n return this.modules.filter(m => this.isAvailableModule(m.name));\r\n }\r\n },\r\n methods: {\r\n /**\r\n * Build Application Module Route\r\n * @param {String} moduleName\r\n * @returns {{name: String}}\r\n */\r\n buildAppModuleRoute: moduleName => createAppModuleRoute(moduleName),\r\n\r\n /**\r\n * is Available Application Module\r\n * @param {String|string} name Application Module\r\n * @return {Boolean|boolean} true if Application Module is Available\r\n */\r\n isAvailableModule(name) {\r\n return this.isAvailableApplicationModule(name);\r\n },\r\n\r\n /**\r\n * can Navigate To App Module\r\n * @param name App Module name\r\n * @return {boolean} true if can Navigate To App Module\r\n */\r\n canNavigateToAppModule(name) {\r\n return name !== this.appModuleName;\r\n },\r\n\r\n /**\r\n * navigate To App Module\r\n * @param {String|string} name App Module name\r\n * @return {Promise}\r\n */\r\n async navigateToAppModule(name) {\r\n try {\r\n await this.$router.push(createAppModuleRoute(name));\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n};\r\n","// Styles\nimport './VSlideGroup.sass'\n\n// Components\nimport VIcon from '../VIcon'\nimport { VFadeTransition } from '../transitions'\n\n// Extensions\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'\n\n// Mixins\nimport Mobile from '../../mixins/mobile'\n\n// Directives\nimport Resize from '../../directives/resize'\nimport Touch from '../../directives/touch'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\n\n// Types\nimport Vue, { VNode } from 'vue'\nimport { composedPath, getSlot } from '../../util/helpers'\n\ninterface TouchEvent {\n touchstartX: number\n touchstartY: number\n touchmoveX: number\n touchmoveY: number\n stopPropagation: Function\n}\n\ninterface Widths {\n content: number\n wrapper: number\n}\n\ninterface options extends Vue {\n $refs: {\n content: HTMLElement\n wrapper: HTMLElement\n }\n}\n\nfunction bias (val: number) {\n const c = 0.501\n const x = Math.abs(val)\n return Math.sign(val) * (x / ((1 / c - 2) * (1 - x) + 1))\n}\n\nexport function calculateUpdatedOffset (\n selectedElement: HTMLElement,\n widths: Widths,\n rtl: boolean,\n currentScrollOffset: number\n): number {\n const clientWidth = selectedElement.clientWidth\n const offsetLeft = rtl\n ? (widths.content - selectedElement.offsetLeft - clientWidth)\n : selectedElement.offsetLeft\n\n if (rtl) {\n currentScrollOffset = -currentScrollOffset\n }\n\n const totalWidth = widths.wrapper + currentScrollOffset\n const itemOffset = clientWidth + offsetLeft\n const additionalOffset = clientWidth * 0.4\n\n if (offsetLeft <= currentScrollOffset) {\n currentScrollOffset = Math.max(offsetLeft - additionalOffset, 0)\n } else if (totalWidth <= itemOffset) {\n currentScrollOffset = Math.min(currentScrollOffset - (totalWidth - itemOffset - additionalOffset), widths.content - widths.wrapper)\n }\n\n return rtl ? -currentScrollOffset : currentScrollOffset\n}\n\nexport function calculateCenteredOffset (\n selectedElement: HTMLElement,\n widths: Widths,\n rtl: boolean\n): number {\n const { offsetLeft, clientWidth } = selectedElement\n\n if (rtl) {\n const offsetCentered = widths.content - offsetLeft - clientWidth / 2 - widths.wrapper / 2\n return -Math.min(widths.content - widths.wrapper, Math.max(0, offsetCentered))\n } else {\n const offsetCentered = offsetLeft + clientWidth / 2 - widths.wrapper / 2\n return Math.min(widths.content - widths.wrapper, Math.max(0, offsetCentered))\n }\n}\n\nexport const BaseSlideGroup = mixins\n/* eslint-enable indent */\n>(\n BaseItemGroup,\n Mobile,\n /* @vue/component */\n).extend({\n name: 'base-slide-group',\n\n directives: {\n Resize,\n Touch,\n },\n\n props: {\n activeClass: {\n type: String,\n default: 'v-slide-item--active',\n },\n centerActive: Boolean,\n nextIcon: {\n type: String,\n default: '$next',\n },\n prevIcon: {\n type: String,\n default: '$prev',\n },\n showArrows: {\n type: [Boolean, String],\n validator: (v: any) => (\n typeof v === 'boolean' || [\n 'always',\n 'never',\n 'desktop',\n 'mobile',\n ].includes(v)\n ),\n },\n },\n\n data: () => ({\n isOverflowing: false,\n resizeTimeout: 0,\n startX: 0,\n isSwipingHorizontal: false,\n isSwiping: false,\n scrollOffset: 0,\n widths: {\n content: 0,\n wrapper: 0,\n },\n }),\n\n computed: {\n canTouch (): boolean {\n return typeof window !== 'undefined'\n },\n __cachedNext (): VNode {\n return this.genTransition('next')\n },\n __cachedPrev (): VNode {\n return this.genTransition('prev')\n },\n classes (): object {\n return {\n ...BaseItemGroup.options.computed.classes.call(this),\n 'v-slide-group': true,\n 'v-slide-group--has-affixes': this.hasAffixes,\n 'v-slide-group--is-overflowing': this.isOverflowing,\n }\n },\n hasAffixes (): Boolean {\n switch (this.showArrows) {\n // Always show arrows on desktop & mobile\n case 'always': return true\n\n // Always show arrows on desktop\n case 'desktop': return !this.isMobile\n\n // Show arrows on mobile when overflowing.\n // This matches the default 2.2 behavior\n case true: return this.isOverflowing || Math.abs(this.scrollOffset) > 0\n\n // Always show on mobile\n case 'mobile': return (\n this.isMobile ||\n (this.isOverflowing || Math.abs(this.scrollOffset) > 0)\n )\n\n // Always hide arrows\n case 'never': return false\n\n // https://material.io/components/tabs#scrollable-tabs\n // Always show arrows when\n // overflowed on desktop\n default: return (\n !this.isMobile &&\n (this.isOverflowing || Math.abs(this.scrollOffset) > 0)\n )\n }\n },\n hasNext (): boolean {\n if (!this.hasAffixes) return false\n\n const { content, wrapper } = this.widths\n\n // Check one scroll ahead to know the width of right-most item\n return content > Math.abs(this.scrollOffset) + wrapper\n },\n hasPrev (): boolean {\n return this.hasAffixes && this.scrollOffset !== 0\n },\n },\n\n watch: {\n internalValue: 'setWidths',\n // When overflow changes, the arrows alter\n // the widths of the content and wrapper\n // and need to be recalculated\n isOverflowing: 'setWidths',\n scrollOffset (val) {\n if (this.$vuetify.rtl) val = -val\n\n let scroll =\n val <= 0\n ? bias(-val)\n : val > this.widths.content - this.widths.wrapper\n ? -(this.widths.content - this.widths.wrapper) + bias(this.widths.content - this.widths.wrapper - val)\n : -val\n\n if (this.$vuetify.rtl) scroll = -scroll\n\n this.$refs.content.style.transform = `translateX(${scroll}px)`\n },\n },\n\n mounted () {\n if (typeof ResizeObserver !== 'undefined') {\n const obs = new ResizeObserver(() => {\n this.onResize()\n })\n obs.observe(this.$el)\n obs.observe(this.$refs.content)\n this.$on('hook:destroyed', () => {\n obs.disconnect()\n })\n } else {\n let itemsLength = 0\n this.$on('hook:beforeUpdate', () => {\n itemsLength = (this.$refs.content?.children || []).length\n })\n this.$on('hook:updated', () => {\n if (itemsLength === (this.$refs.content?.children || []).length) return\n this.setWidths()\n })\n }\n },\n\n methods: {\n onScroll () {\n this.$refs.wrapper.scrollLeft = 0\n },\n onFocusin (e: FocusEvent) {\n if (!this.isOverflowing) return\n\n // Focused element is likely to be the root of an item, so a\n // breadth-first search will probably find it in the first iteration\n for (const el of composedPath(e)) {\n for (const vm of this.items) {\n if (vm.$el === el) {\n this.scrollOffset = calculateUpdatedOffset(\n vm.$el as HTMLElement,\n this.widths,\n this.$vuetify.rtl,\n this.scrollOffset\n )\n return\n }\n }\n }\n },\n // Always generate next for scrollable hint\n genNext (): VNode | null {\n const slot = this.$scopedSlots.next\n ? this.$scopedSlots.next({})\n : getSlot(this, 'next') || this.__cachedNext\n\n return this.$createElement('div', {\n staticClass: 'v-slide-group__next',\n class: {\n 'v-slide-group__next--disabled': !this.hasNext,\n },\n on: {\n click: () => this.onAffixClick('next'),\n },\n key: 'next',\n }, [slot])\n },\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-slide-group__content',\n ref: 'content',\n on: {\n focusin: this.onFocusin,\n },\n }, getSlot(this))\n },\n genData (): object {\n return {\n class: this.classes,\n directives: [{\n name: 'resize',\n value: this.onResize,\n }],\n }\n },\n genIcon (location: 'prev' | 'next'): VNode | null {\n let icon = location\n\n if (this.$vuetify.rtl && location === 'prev') {\n icon = 'next'\n } else if (this.$vuetify.rtl && location === 'next') {\n icon = 'prev'\n }\n\n const upperLocation = `${location[0].toUpperCase()}${location.slice(1)}`\n const hasAffix = (this as any)[`has${upperLocation}`]\n\n if (\n !this.showArrows &&\n !hasAffix\n ) return null\n\n return this.$createElement(VIcon, {\n props: {\n disabled: !hasAffix,\n },\n }, (this as any)[`${icon}Icon`])\n },\n // Always generate prev for scrollable hint\n genPrev (): VNode | null {\n const slot = this.$scopedSlots.prev\n ? this.$scopedSlots.prev({})\n : getSlot(this, 'prev') || this.__cachedPrev\n\n return this.$createElement('div', {\n staticClass: 'v-slide-group__prev',\n class: {\n 'v-slide-group__prev--disabled': !this.hasPrev,\n },\n on: {\n click: () => this.onAffixClick('prev'),\n },\n key: 'prev',\n }, [slot])\n },\n genTransition (location: 'prev' | 'next') {\n return this.$createElement(VFadeTransition, [this.genIcon(location)])\n },\n genWrapper (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-slide-group__wrapper',\n directives: [{\n name: 'touch',\n value: {\n start: (e: TouchEvent) => this.overflowCheck(e, this.onTouchStart),\n move: (e: TouchEvent) => this.overflowCheck(e, this.onTouchMove),\n end: (e: TouchEvent) => this.overflowCheck(e, this.onTouchEnd),\n },\n }],\n ref: 'wrapper',\n on: {\n scroll: this.onScroll,\n },\n }, [this.genContent()])\n },\n calculateNewOffset (direction: 'prev' | 'next', widths: Widths, rtl: boolean, currentScrollOffset: number) {\n const sign = rtl ? -1 : 1\n const newAbosluteOffset = sign * currentScrollOffset +\n (direction === 'prev' ? -1 : 1) * widths.wrapper\n\n return sign * Math.max(Math.min(newAbosluteOffset, widths.content - widths.wrapper), 0)\n },\n onAffixClick (location: 'prev' | 'next') {\n this.$emit(`click:${location}`)\n this.scrollTo(location)\n },\n onResize () {\n /* istanbul ignore next */\n if (this._isDestroyed) return\n\n this.setWidths()\n },\n onTouchStart (e: TouchEvent) {\n const { content } = this.$refs\n\n this.startX = this.scrollOffset + e.touchstartX as number\n\n content.style.setProperty('transition', 'none')\n content.style.setProperty('willChange', 'transform')\n },\n onTouchMove (e: TouchEvent) {\n if (!this.canTouch) return\n\n if (!this.isSwiping) {\n // only calculate disableSwipeHorizontal during the first onTouchMove invoke\n // in order to ensure disableSwipeHorizontal value is consistent between onTouchStart and onTouchEnd\n const diffX = e.touchmoveX - e.touchstartX\n const diffY = e.touchmoveY - e.touchstartY\n this.isSwipingHorizontal = Math.abs(diffX) > Math.abs(diffY)\n this.isSwiping = true\n }\n\n if (this.isSwipingHorizontal) {\n // sliding horizontally\n this.scrollOffset = this.startX - e.touchmoveX\n // temporarily disable window vertical scrolling\n document.documentElement.style.overflowY = 'hidden'\n }\n },\n onTouchEnd () {\n if (!this.canTouch) return\n\n const { content, wrapper } = this.$refs\n const maxScrollOffset = content.clientWidth - wrapper.clientWidth\n\n content.style.setProperty('transition', null)\n content.style.setProperty('willChange', null)\n\n if (this.$vuetify.rtl) {\n /* istanbul ignore else */\n if (this.scrollOffset > 0 || !this.isOverflowing) {\n this.scrollOffset = 0\n } else if (this.scrollOffset <= -maxScrollOffset) {\n this.scrollOffset = -maxScrollOffset\n }\n } else {\n /* istanbul ignore else */\n if (this.scrollOffset < 0 || !this.isOverflowing) {\n this.scrollOffset = 0\n } else if (this.scrollOffset >= maxScrollOffset) {\n this.scrollOffset = maxScrollOffset\n }\n }\n\n this.isSwiping = false\n // rollback whole page scrolling to default\n document.documentElement.style.removeProperty('overflow-y')\n },\n overflowCheck (e: TouchEvent, fn: (e: TouchEvent) => void) {\n e.stopPropagation()\n this.isOverflowing && fn(e)\n },\n scrollIntoView /* istanbul ignore next */ () {\n if (!this.selectedItem && this.items.length) {\n const lastItemPosition = this.items[this.items.length - 1].$el.getBoundingClientRect()\n const wrapperPosition = this.$refs.wrapper.getBoundingClientRect()\n\n if (\n (this.$vuetify.rtl && wrapperPosition.right < lastItemPosition.right) ||\n (!this.$vuetify.rtl && wrapperPosition.left > lastItemPosition.left)\n ) {\n this.scrollTo('prev')\n }\n }\n\n if (!this.selectedItem) {\n return\n }\n\n if (\n this.selectedIndex === 0 ||\n (!this.centerActive && !this.isOverflowing)\n ) {\n this.scrollOffset = 0\n } else if (this.centerActive) {\n this.scrollOffset = calculateCenteredOffset(\n this.selectedItem.$el as HTMLElement,\n this.widths,\n this.$vuetify.rtl\n )\n } else if (this.isOverflowing) {\n this.scrollOffset = calculateUpdatedOffset(\n this.selectedItem.$el as HTMLElement,\n this.widths,\n this.$vuetify.rtl,\n this.scrollOffset\n )\n }\n },\n scrollTo /* istanbul ignore next */ (location: 'prev' | 'next') {\n this.scrollOffset = this.calculateNewOffset(location, {\n // Force reflow\n content: this.$refs.content ? this.$refs.content.clientWidth : 0,\n wrapper: this.$refs.wrapper ? this.$refs.wrapper.clientWidth : 0,\n }, this.$vuetify.rtl, this.scrollOffset)\n },\n setWidths () {\n window.requestAnimationFrame(() => {\n if (this._isDestroyed) return\n\n const { content, wrapper } = this.$refs\n\n this.widths = {\n content: content ? content.clientWidth : 0,\n wrapper: wrapper ? wrapper.clientWidth : 0,\n }\n\n // https://github.com/vuetifyjs/vuetify/issues/13212\n // We add +1 to the wrappers width to prevent an issue where the `clientWidth`\n // gets calculated wrongly by the browser if using a different zoom-level.\n this.isOverflowing = this.widths.wrapper + 1 < this.widths.content\n\n this.scrollIntoView()\n })\n },\n },\n\n render (h): VNode {\n return h('div', this.genData(), [\n this.genPrev(),\n this.genWrapper(),\n this.genNext(),\n ])\n },\n})\n\nexport default BaseSlideGroup.extend({\n name: 'v-slide-group',\n\n provide (): object {\n return {\n slideGroup: this,\n }\n },\n})\n","import VProgressCircular from './VProgressCircular'\n\nexport { VProgressCircular }\nexport default VProgressCircular\n","// Styles\nimport './VBtn.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Components\nimport VProgressCircular from '../VProgressCircular'\n\n// Mixins\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport { factory as ToggleableFactory } from '../../mixins/toggleable'\nimport Elevatable from '../../mixins/elevatable'\nimport Positionable from '../../mixins/positionable'\nimport Routable from '../../mixins/routable'\nimport Sizeable from '../../mixins/sizeable'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { breaking } from '../../util/console'\nimport { getSlot } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator, PropType } from 'vue/types/options'\nimport { RippleOptions } from '../../directives/ripple'\n\nconst baseMixins = mixins(\n VSheet,\n Routable,\n Positionable,\n Sizeable,\n GroupableFactory('btnToggle'),\n ToggleableFactory('inputValue')\n /* @vue/component */\n)\ninterface options extends ExtractVue {\n $el: HTMLElement\n}\n\nexport default baseMixins.extend().extend({\n name: 'v-btn',\n\n props: {\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this.btnToggle) return ''\n\n return this.btnToggle.activeClass\n },\n } as any as PropValidator,\n block: Boolean,\n depressed: Boolean,\n fab: Boolean,\n icon: Boolean,\n loading: Boolean,\n outlined: Boolean,\n plain: Boolean,\n retainFocusOnClick: Boolean,\n rounded: Boolean,\n tag: {\n type: String,\n default: 'button',\n },\n text: Boolean,\n tile: Boolean,\n type: {\n type: String,\n default: 'button',\n },\n value: null as any as PropType,\n },\n\n data: () => ({\n proxyClass: 'v-btn--active',\n }),\n\n computed: {\n classes (): any {\n return {\n 'v-btn': true,\n ...Routable.options.computed.classes.call(this),\n 'v-btn--absolute': this.absolute,\n 'v-btn--block': this.block,\n 'v-btn--bottom': this.bottom,\n 'v-btn--disabled': this.disabled,\n 'v-btn--is-elevated': this.isElevated,\n 'v-btn--fab': this.fab,\n 'v-btn--fixed': this.fixed,\n 'v-btn--has-bg': this.hasBg,\n 'v-btn--icon': this.icon,\n 'v-btn--left': this.left,\n 'v-btn--loading': this.loading,\n 'v-btn--outlined': this.outlined,\n 'v-btn--plain': this.plain,\n 'v-btn--right': this.right,\n 'v-btn--round': this.isRound,\n 'v-btn--rounded': this.rounded,\n 'v-btn--router': this.to,\n 'v-btn--text': this.text,\n 'v-btn--tile': this.tile,\n 'v-btn--top': this.top,\n ...this.themeClasses,\n ...this.groupClasses,\n ...this.elevationClasses,\n ...this.sizeableClasses,\n }\n },\n computedElevation (): string | number | undefined {\n if (this.disabled) return undefined\n\n return Elevatable.options.computed.computedElevation.call(this)\n },\n computedRipple (): RippleOptions | boolean {\n const defaultRipple = this.icon || this.fab ? { circle: true } : true\n if (this.disabled) return false\n else return this.ripple ?? defaultRipple\n },\n hasBg (): boolean {\n return !this.text && !this.plain && !this.outlined && !this.icon\n },\n isElevated (): boolean {\n return Boolean(\n !this.icon &&\n !this.text &&\n !this.outlined &&\n !this.depressed &&\n !this.disabled &&\n !this.plain &&\n (this.elevation == null || Number(this.elevation) > 0)\n )\n },\n isRound (): boolean {\n return Boolean(\n this.icon ||\n this.fab\n )\n },\n styles (): object {\n return {\n ...this.measurableStyles,\n }\n },\n },\n\n created () {\n const breakingProps = [\n ['flat', 'text'],\n ['outline', 'outlined'],\n ['round', 'rounded'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n methods: {\n click (e: MouseEvent): void {\n // TODO: Remove this in v3\n !this.retainFocusOnClick && !this.fab && e.detail && this.$el.blur()\n this.$emit('click', e)\n\n this.btnToggle && this.toggle()\n },\n genContent (): VNode {\n return this.$createElement('span', {\n staticClass: 'v-btn__content',\n }, getSlot(this))\n },\n genLoader (): VNode {\n return this.$createElement('span', {\n class: 'v-btn__loader',\n }, getSlot(this, 'loader') || [this.$createElement(VProgressCircular, {\n props: {\n indeterminate: true,\n size: 23,\n width: 2,\n },\n })])\n },\n },\n\n render (h): VNode {\n const children = [\n this.genContent(),\n this.loading && this.genLoader(),\n ]\n const { tag, data } = this.generateRouteLink()\n const setColor = this.hasBg\n ? this.setBackgroundColor\n : this.setTextColor\n\n if (tag === 'button') {\n data.attrs!.type = this.type\n data.attrs!.disabled = this.disabled\n }\n data.attrs!.value = ['string', 'number'].includes(typeof this.value)\n ? this.value\n : JSON.stringify(this.value)\n\n return h(tag, this.disabled ? data : setColor(this.color, data), children)\n },\n})\n","// design\r\nimport { Color } from \"@/design/colors/Color\";\r\n\r\n// vuex/store\r\nimport { createNamespacedHelpers } from \"vuex\";\r\nconst { mapGetters } = createNamespacedHelpers(\"solution\");\r\n\r\n/**\r\n * Menu Item Settings Mixin encapsulate Menu Item Settings logic\r\n */\r\nexport const menuItemSettingsMixin = {\r\n computed: {\r\n ...mapGetters({\r\n menuItemColor: \"menuItemColor\"\r\n }),\r\n /**\r\n * Get Material Design Menu Item Color\r\n * @returns {Color}\r\n */\r\n mdMenuItemColor() {\r\n return new Color(\r\n this.menuItemColor.name,\r\n this.menuItemColor.variantType,\r\n this.menuItemColor.variantNumber\r\n );\r\n },\r\n /**\r\n * Get menu Item color class\r\n * @returns {string|*}\r\n */\r\n menuItemColorClass() {\r\n return this.mdMenuItemColor.getClassColor();\r\n }\r\n }\r\n};\r\n","import Vue from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { deepEqual } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'comparable',\n props: {\n valueComparator: {\n type: Function,\n default: deepEqual,\n } as PropValidator,\n },\n})\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('v-expansion-panels',{key:_vm.panelKey,attrs:{\"focusable\":\"\"},model:{value:(_vm.panel),callback:function ($$v) {_vm.panel=$$v},expression:\"panel\"}},[_c('v-expansion-panel',[_c('v-expansion-panel-header',[_c('task-banner',{attrs:{\"task\":_vm.task}})],1),_c('v-expansion-panel-content',[_c('v-expansion-panels',[_c('v-expansion-panel',[_c('v-expansion-panel-header',{scopedSlots:_vm._u([{key:\"default\",fn:function({ open }){return [_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"4\"}},[_c('span',{class:_vm.titleClass},[_vm._v(\" Status \")])]),_c('v-col',{attrs:{\"cols\":\"8\"}},[_c('v-fade-transition',{attrs:{\"leave-absolute\":\"\"}},[(!open)?_c('span',[_c('span',{class:_vm.titleClass},[_vm._v(\" Timeline, Calendar \")])]):_vm._e()])],1)],1)]}}])}),_c('v-expansion-panel-content',[_c('task-chart',{attrs:{\"task\":_vm.task}})],1)],1),_c('v-expansion-panel',[_c('v-expansion-panel-header',[_c('span',{class:_vm.titleClass},[_vm._v(\" \"+_vm._s(_vm.taskDetailsHeader)+\" \")])]),_c('v-expansion-panel-content',[_c('form-task',{attrs:{\"task\":_vm.task,\"record\":_vm.record}})],1)],1)],1),_c('v-tabs',{staticClass:\"mt-3\",attrs:{\"show-arrows\":\"\",\"grow\":\"\"}},[_c('base-tooltip-button',{attrs:{\"disabled\":!_vm.canTaskAccept,\"color\":_vm.acceptColorClass},on:{\"click\":_vm.onShowAcceptUserTaskDialog},scopedSlots:_vm._u([{key:\"icon-name\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.iconTaskAccept)+\" \")]},proxy:true},{key:\"toolTip\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.tooltipAccept)+\" \")]},proxy:true}])},[_vm._v(\" \"+_vm._s(_vm.labelCommandTaskAccept)+\" \")]),_c('base-tooltip-button',{attrs:{\"disabled\":!_vm.canTaskReject,\"color\":_vm.cancelColorClass},on:{\"click\":_vm.onShowRejectUserTaskDialog},scopedSlots:_vm._u([{key:\"icon-name\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.iconTaskReject)+\" \")]},proxy:true},{key:\"toolTip\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.tooltipReject)+\" \")]},proxy:true}])},[_vm._v(\" \"+_vm._s(_vm.labelCommandTaskReject)+\" \")]),(_vm.visibleTaskAccept || _vm.visibleTaskReject)?_c('v-divider',{attrs:{\"vertical\":\"\"}}):_vm._e(),(_vm.visibleTaskTake)?_c('base-tooltip-button',{attrs:{\"disabled\":!_vm.canTaskTake},on:{\"click\":_vm.onShowTakeUserTaskDialog},scopedSlots:_vm._u([{key:\"icon-name\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.iconTaskTake)+\" \")]},proxy:true},{key:\"toolTip\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.tooltipTaskTake)+\" \")]},proxy:true}],null,false,310336771)},[_vm._v(\" \"+_vm._s(_vm.labelTaskTake)+\" \")]):_vm._e(),(_vm.visibleTaskRelease)?_c('base-tooltip-button',{attrs:{\"disabled\":!_vm.canTaskRelease,\"loading\":_vm.visibleTaskReleaseProgress},on:{\"click\":_vm.onShowReleaseUserTaskDialog},scopedSlots:_vm._u([{key:\"icon-name\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.iconTaskRelease)+\" \")]},proxy:true},{key:\"toolTip\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.tooltipTaskRelease)+\" \")]},proxy:true}],null,false,1820236131)},[_vm._v(\" \"+_vm._s(_vm.labelTaskRelease)+\" \")]):_vm._e(),(_vm.visibleTaskReassign)?_c('base-tooltip-button',{attrs:{\"disabled\":!_vm.canTaskReassign},on:{\"click\":_vm.onUserTaskReassign},scopedSlots:_vm._u([{key:\"icon-name\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.iconTaskReassign)+\" \")]},proxy:true},{key:\"toolTip\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.tooltipTaskReassign)+\" \")]},proxy:true}],null,false,1010105571)},[_vm._v(\" \"+_vm._s(_vm.labelTaskReassign)+\" \")]):_vm._e(),(\n _vm.visibleTaskAccept ||\n _vm.visibleTaskReject ||\n _vm.visibleTaskTake ||\n _vm.visibleTaskRelease\n )?_c('v-divider',{attrs:{\"vertical\":\"\"}}):_vm._e(),_c('base-drop-down-menu-button',{scopedSlots:_vm._u([{key:\"iconName\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.iconRun)+\" \")]},proxy:true},{key:\"default\",fn:function(){return [_vm._v(\" Jump to \")]},proxy:true},{key:\"commands\",fn:function(){return [_c('base-menu-item',{attrs:{\"to\":_vm.folderModuleRecordRouteLocation(_vm.record),\"disabled\":!_vm.canNavigateToFolderModuleRecord(_vm.record)},scopedSlots:_vm._u([{key:\"iconName\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.commandSelectRecordIconName)+\" \")]},proxy:true},{key:\"tooltipContent\",fn:function(){return [_c('div',[_vm._v(\" \"+_vm._s(_vm.commandSelectRecordLabel(_vm.record))+\" \")])]},proxy:true},{key:\"default\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.commandSelectRecordLabel(_vm.record))+\" \")]},proxy:true}])}),(_vm.visibleJumpToProject)?_c('base-menu-item',{attrs:{\"to\":_vm.projectRouteLocation(_vm.projectId),\"disabled\":!_vm.canNavigateToProject(_vm.projectId)},scopedSlots:_vm._u([{key:\"iconName\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.commandNavigateToProjectIconName)+\" \")]},proxy:true},{key:\"tooltipContent\",fn:function(){return [_c('div',[_vm._v(\" \"+_vm._s(_vm.commandNavigateToProjectLabel(_vm.projectName))+\" \")])]},proxy:true},{key:\"default\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.commandNavigateToProjectLabel(_vm.projectName))+\" \")]},proxy:true}],null,false,2461953413)}):_vm._e()]},proxy:true}])})],1)],1)],1)],1),_c('accept-user-task-dialog',{attrs:{\"task\":_vm.task,\"visible\":_vm.visibleDialogAcceptUserTask,\"perform-action\":_vm.performAcceptUserTask},on:{\"close\":_vm.onCloseAcceptUserTaskDialog}}),_c('reject-user-task-dialog',{attrs:{\"task\":_vm.task,\"visible\":_vm.visibleDialogRejectUserTask,\"perform-action\":_vm.performRejectUserTask},on:{\"close\":_vm.onCloseRejectUserTaskDialog}}),_c('take-user-task-dialog',{attrs:{\"task\":_vm.task,\"visible\":_vm.visibleDialogTakeUserTask,\"perform-action\":_vm.performTakeUserTask},on:{\"close\":_vm.onCloseTakeUserTaskDialog}}),_c('release-user-task-dialog',{attrs:{\"task\":_vm.task,\"visible\":_vm.visibleDialogReleaseUserTask,\"perform-action\":_vm.performReleaseUserTask},on:{\"close\":_vm.onCloseReleaseUserTaskDialog}}),_c('assign-user-dialog',{attrs:{\"task\":_vm.task,\"visible\":_vm.visibleDialogAssignUser,\"perform-action\":_vm.onUserAssignment},on:{\"close\":_vm.onCloseAssignUserTaskDialog}}),_c('snackbar',{attrs:{\"color\":_vm.snackbarColor,\"top\":_vm.snackbarTop},on:{\"close\":_vm.closeSnackbar},model:{value:(_vm.snackbarVisible),callback:function ($$v) {_vm.snackbarVisible=$$v},expression:\"snackbarVisible\"}},[_vm._v(_vm._s(_vm.snackbarText))])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\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/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InboxDetails.vue?vue&type=script&lang=js\"; 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/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InboxDetails.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./InboxDetails.vue?vue&type=template&id=771416d0\"\nimport script from \"./InboxDetails.vue?vue&type=script&lang=js\"\nexport * from \"./InboxDetails.vue?vue&type=script&lang=js\"\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","/**\r\n * Material Design Spacing Type\r\n *\r\n * @typedef {Object} spacingType\r\n *\r\n * @property {string} margin applies margin\r\n * @property {string} padding applies padding\r\n */\r\n/**\r\n * Spacing Type\r\n * @type {spacingType}\r\n */\r\nconst spacingType = Object.freeze({\r\n margin: \"m\",\r\n padding: \"p\"\r\n});\r\n\r\n/**\r\n * Material Design Spacing size\r\n *\r\n * @typedef {Object} size\r\n *\r\n * @property {string} size0 eliminates all margin or padding by setting it to 0\r\n * @property {string} size1 sets margin or padding to 4px\r\n * @property {string} size2 sets margin or padding to 8px\r\n * @property {string} size3 sets margin or padding to 12px\r\n * @property {string} size4 sets margin or padding to 16px\r\n * @property {string} size5 sets margin or padding to 20px\r\n * @property {string} size6 sets margin or padding to 24px\r\n * @property {string} size7 sets margin or padding to 28px\r\n * @property {string} size8 sets margin or padding to 32px\r\n * @property {string} size9 sets margin or padding to 36px\r\n * @property {string} size10 sets margin or padding to 40px\r\n * @property {string} size11 sets margin or padding to 44px\r\n * @property {string} size12 sets margin or padding to 48px\r\n * @property {string} size13 sets margin or padding to 52px\r\n * @property {string} size14 sets margin or padding to 56px\r\n * @property {string} size15 sets margin or padding to 60px\r\n * @property {string} size16 sets margin or padding to 64px\r\n * @property {string} n1 sets margin to -4px\r\n * @property {string} n2 sets margin to -8px\r\n * @property {string} n3 sets margin to -12px\r\n * @property {string} n4 sets margin to -16px\r\n * @property {string} n5 sets margin to -20px\r\n * @property {string} n6 sets margin to -24px\r\n * @property {string} n7 sets margin to -28px\r\n * @property {string} n8 sets margin to -32px\r\n * @property {string} n9 sets margin to -36px\r\n * @property {string} n10 sets margin to -40px\r\n * @property {string} n11 sets margin to -44px\r\n * @property {string} n12 sets margin to -48px\r\n * @property {string} n13 sets margin to -52px\r\n * @property {string} n14 sets margin to -56px\r\n * @property {string} n15 sets margin to -60px\r\n * @property {string} n16 sets margin to -64px\r\n * @property {string} auto sets the spacing to auto\r\n */\r\n/**\r\n * The size controls the increment of the property in 4px intervals\r\n * @type {size}\r\n */\r\nconst size = Object.freeze({\r\n size0: \"0\",\r\n size1: \"1\",\r\n size2: \"2\",\r\n size3: \"3\",\r\n size4: \"4\",\r\n size5: \"5\",\r\n size6: \"6\",\r\n size7: \"7\",\r\n size8: \"8\",\r\n size9: \"9\",\r\n size10: \"10\",\r\n size11: \"11\",\r\n size12: \"12\",\r\n size13: \"13\",\r\n size14: \"14\",\r\n size15: \"15\",\r\n size16: \"16\",\r\n n1: \"n1\",\r\n n2: \"n2\",\r\n n3: \"n3\",\r\n n4: \"n4\",\r\n n5: \"n5\",\r\n n6: \"n6\",\r\n n7: \"n7\",\r\n n8: \"n8\",\r\n n9: \"n9\",\r\n n10: \"n10\",\r\n n11: \"n11\",\r\n n12: \"n12\",\r\n n13: \"n13\",\r\n n14: \"n14\",\r\n n15: \"n15\",\r\n n16: \"n16\",\r\n auto: \"auto\"\r\n});\r\n\r\n/**\r\n * Material Design direction\r\n *\r\n * @typedef {Object} direction\r\n *\r\n * @property {string} top applies the spacing for margin-top and padding-top\r\n * @property {string} bottom applies the spacing for margin-bottom and padding-bottom\r\n * @property {string} left applies the spacing for margin-left and padding-left\r\n * @property {string} right applies the spacing for margin-right and padding-right\r\n * @property {string} leftRight applies the spacing for margin-left/padding-left (in LTR mode) and margin-right/padding-right (in RTL mode)\r\n * @property {string} rightLeft applies the spacing for margin-right/padding-right (in LTR mode) and margin-left/padding-left (in RTL mode)\r\n * @property {string} leftAndRight applies the spacing for both *-left and *-right\r\n * @property {string} topAndBottom applies the spacing for both *-top and *-bottom\r\n * @property {string} all applies the spacing for the property in all directions\r\n */\r\n/**\r\n * The direction designates the side the property applies to:\r\n * @type {direction}}\r\n */\r\nconst direction = Object.freeze({\r\n top: \"t\",\r\n bottom: \"b\",\r\n left: \"l\",\r\n right: \"r\",\r\n leftRight: \"s\",\r\n rightLeft: \"e\",\r\n leftAndRight: \"x\",\r\n topAndBottom: \"y\",\r\n all: \"a\"\r\n});\r\n\r\n/**\r\n * Material Design Breakpoints\r\n *\r\n * @typedef {Object} Breakpoints\r\n *\r\n * @property {string} xs Small to large phone\r\n * @property {string} sm Small to medium tablet\r\n * @property {string} md Large tablet to laptop\r\n * @property {string} lg Desktop\r\n * @property {string} xl 4k and ultra-wide\r\n */\r\n\r\n/**\r\n * @type {Breakpoints} breakpoints\r\n */\r\nconst breakpoints = Object.freeze({\r\n xs: \"xs\",\r\n sm: \"sm\",\r\n md: \"md\",\r\n lg: \"lg\",\r\n xl: \"xl\"\r\n});\r\n\r\n/**\r\n * get Margin Class\r\n * @param {string} direction\r\n * @param {string} size\r\n * @returns {string}\r\n */\r\nconst getMarginClass = (direction, size) =>\r\n new Spacing(spacingType.margin, direction, size).getClassSpacing();\r\n\r\n/**\r\n * get Padding Class\r\n * @param {string} direction\r\n * @param {string} size\r\n * @returns {string}\r\n */\r\nconst getPaddingClass = (direction, size) =>\r\n new Spacing(spacingType.padding, direction, size).getClassSpacing();\r\n\r\nclass Spacing {\r\n spacingType = spacingType.margin;\r\n direction = direction.all;\r\n size = size.size0;\r\n breakpoint = undefined;\r\n\r\n /**\r\n * Spacing constructor\r\n * @param {String|string} spacingType\r\n * @param {String|string} direction\r\n * @param {String|String} size\r\n */\r\n constructor(\r\n spacingType = spacingType.margin,\r\n direction = direction.all,\r\n size = size.auto\r\n ) {\r\n this.spacingType = spacingType;\r\n this.direction = direction;\r\n this.size = size;\r\n }\r\n\r\n /**\r\n * Get Class Spacing\r\n * Which applies spacing using Material Design spacings format\r\n * @returns {String|string}\r\n */\r\n getClassSpacing() {\r\n return this.breakpoint\r\n ? `${this.spacingType}${this.direction}-${this.breakpoint}-${this.size}`\r\n : `${this.spacingType}${this.direction}-${this.size}`;\r\n }\r\n}\r\n\r\nexport {\r\n spacingType,\r\n size,\r\n direction,\r\n breakpoints,\r\n Spacing,\r\n getMarginClass,\r\n getPaddingClass\r\n};\r\n","// mutation-types\r\nimport {\r\n SET_DRAWER_RIGHT,\r\n SET_USES_APP_TABS,\r\n SET_USES_SIDEBAR_IMAGE,\r\n SET_APP_BAR_COLLAPSE_ON_SCROLL,\r\n SET_DRAWER_ENABLE_MINI_DRAWER,\r\n SET_COMMAND_BUTTONS_TEXT_STYLE,\r\n SET_COMMAND_BUTTONS_OUTLINED,\r\n SET_COMMAND_BUTTONS_ROUNDED,\r\n SET_COMMAND_BUTTONS_ELEVATION,\r\n SET_RECORDS_FETCH_COUNT\r\n} from \"@/store/solution/mutation-types\";\r\n\r\nimport {\r\n SET_ENABLE_MODULE_CATEGORY,\r\n SET_ENABLE_MODULE_TASKS,\r\n SET_ENABLE_MODULE_PROJECTS,\r\n SET_ENABLE_MODULE_AGENDA,\r\n SET_ENABLE_MODULE_SEARCH\r\n} from \"@/store/user/mutation-types\";\r\n\r\n// vuex\r\nimport { createNamespacedHelpers } from \"vuex\";\r\nconst { mapGetters, mapMutations } = createNamespacedHelpers(\"solution\");\r\n\r\nconst {\r\n mapGetters: mapGettersUser,\r\n mapMutations: mapMutationsUser\r\n} = createNamespacedHelpers(\"user\");\r\n\r\n/**\r\n * User Settings Mixin - encapsulate user Settings functionality\r\n */\r\nexport const userSettingsMixin = {\r\n computed: {\r\n ...mapGetters([\r\n \"usesAppTabs\",\r\n \"appBarCollapseOnScroll\",\r\n \"usesSidebarImage\",\r\n \"visibleRightDrawer\",\r\n \"enableMiniDrawer\",\r\n \"buttonTextStyle\",\r\n \"buttonOutlined\",\r\n \"buttonRounded\",\r\n \"buttonElevation\",\r\n \"recordsFetchCount\"\r\n ]),\r\n ...mapGettersUser([\r\n \"modules\",\r\n \"isLicensedModule\",\r\n \"enableCategoryModule\",\r\n \"enableSearchModule\",\r\n \"enableTasksModule\",\r\n \"enableProjectsModule\",\r\n \"enableAgendaModule\",\r\n \"enableWebScan\",\r\n \"isEnabledModule\"\r\n ])\r\n },\r\n methods: {\r\n ...mapMutations({\r\n setUsesAppTabs: SET_USES_APP_TABS,\r\n setUsesSidebarImage: SET_USES_SIDEBAR_IMAGE,\r\n setDrawerRight: SET_DRAWER_RIGHT,\r\n setAppBarCollapseOnScroll: SET_APP_BAR_COLLAPSE_ON_SCROLL,\r\n setEnableMiniDrawer: SET_DRAWER_ENABLE_MINI_DRAWER,\r\n setButtonTextStyle: SET_COMMAND_BUTTONS_TEXT_STYLE,\r\n setButtonOutlined: SET_COMMAND_BUTTONS_OUTLINED,\r\n setButtonRounded: SET_COMMAND_BUTTONS_ROUNDED,\r\n setButtonElevation: SET_COMMAND_BUTTONS_ELEVATION,\r\n setRecordsFetchCount: SET_RECORDS_FETCH_COUNT\r\n }),\r\n ...mapMutationsUser({\r\n setEnableModuleSearch: SET_ENABLE_MODULE_SEARCH,\r\n setEnableModuleCategory: SET_ENABLE_MODULE_CATEGORY,\r\n setEnableModuleTasks: SET_ENABLE_MODULE_TASKS,\r\n setEnableModuleProjects: SET_ENABLE_MODULE_PROJECTS,\r\n setEnableModuleAgenda: SET_ENABLE_MODULE_AGENDA\r\n })\r\n }\r\n};\r\n","// Styles\nimport './VSheet.sass'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Colorable from '../../mixins/colorable'\nimport Elevatable from '../../mixins/elevatable'\nimport Measurable from '../../mixins/measurable'\nimport Roundable from '../../mixins/roundable'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n BindsAttrs,\n Colorable,\n Elevatable,\n Measurable,\n Roundable,\n Themeable\n).extend({\n name: 'v-sheet',\n\n props: {\n outlined: Boolean,\n shaped: Boolean,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-sheet': true,\n 'v-sheet--outlined': this.outlined,\n 'v-sheet--shaped': this.shaped,\n ...this.themeClasses,\n ...this.elevationClasses,\n ...this.roundedClasses,\n }\n },\n styles (): object {\n return this.measurableStyles\n },\n },\n\n render (h): VNode {\n const data = {\n class: this.classes,\n style: this.styles,\n on: this.listeners$,\n }\n\n return h(\n this.tag,\n this.setBackgroundColor(this.color, data),\n this.$slots.default\n )\n },\n})\n","import { VNodeDirective } from 'vue/types/vnode'\nimport { VNode } from 'vue'\n\ntype ObserveHandler = (\n entries: IntersectionObserverEntry[],\n observer: IntersectionObserver,\n isIntersecting: boolean,\n) => void\n\ninterface ObserveVNodeDirective extends Omit {\n value?: ObserveHandler | { handler: ObserveHandler, options?: IntersectionObserverInit }\n modifiers?: {\n once?: boolean\n quiet?: boolean\n }\n}\n\nfunction inserted (el: HTMLElement, binding: ObserveVNodeDirective, vnode: VNode) {\n if (typeof window === 'undefined' || !('IntersectionObserver' in window)) return\n\n const modifiers = binding.modifiers || {}\n const value = binding.value\n const { handler, options } = typeof value === 'object'\n ? value\n : { handler: value, options: {} }\n const observer = new IntersectionObserver((\n entries: IntersectionObserverEntry[] = [],\n observer: IntersectionObserver\n ) => {\n const _observe = el._observe?.[vnode.context!._uid]\n if (!_observe) return // Just in case, should never fire\n\n const isIntersecting = entries.some(entry => entry.isIntersecting)\n\n // If is not quiet or has already been\n // initted, invoke the user callback\n if (\n handler && (\n !modifiers.quiet ||\n _observe.init\n ) && (\n !modifiers.once ||\n isIntersecting ||\n _observe.init\n )\n ) {\n handler(entries, observer, isIntersecting)\n }\n\n if (isIntersecting && modifiers.once) unbind(el, binding, vnode)\n else _observe.init = true\n }, options)\n\n el._observe = Object(el._observe)\n el._observe![vnode.context!._uid] = { init: false, observer }\n\n observer.observe(el)\n}\n\nfunction unbind (el: HTMLElement, binding: ObserveVNodeDirective, vnode: VNode) {\n const observe = el._observe?.[vnode.context!._uid]\n if (!observe) return\n\n observe.observer.unobserve(el)\n delete el._observe![vnode.context!._uid]\n}\n\nexport const Intersect = {\n inserted,\n unbind,\n}\n\nexport default Intersect\n","// Mixins\nimport Colorable from '../../mixins/colorable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue/types'\n\n/* @vue/component */\nexport default mixins(Colorable).extend({\n name: 'v-tabs-slider',\n\n render (h): VNode {\n return h('div', this.setBackgroundColor(this.color, {\n staticClass: 'v-tabs-slider',\n }))\n },\n})\n","import VIcon from './VIcon'\n\nexport { VIcon }\nexport default VIcon\n","// Utilities\nimport { removed } from '../../util/console'\n\n// Types\nimport Vue, { VNode } from 'vue'\ninterface Toggleable extends Vue {\n isActive?: boolean\n}\n\n/**\n * Bootable\n * @mixin\n *\n * Used to add lazy content functionality to components\n * Looks for change in \"isActive\" to automatically boot\n * Otherwise can be set manually\n */\n/* @vue/component */\nexport default Vue.extend().extend({\n name: 'bootable',\n\n props: {\n eager: Boolean,\n },\n\n data: () => ({\n isBooted: false,\n }),\n\n computed: {\n hasContent (): boolean | undefined {\n return this.isBooted || this.eager || this.isActive\n },\n },\n\n watch: {\n isActive () {\n this.isBooted = true\n },\n },\n\n created () {\n /* istanbul ignore next */\n if ('lazy' in this.$attrs) {\n removed('lazy', this)\n }\n },\n\n methods: {\n showLazyContent (content?: () => VNode[]): VNode[] {\n return (this.hasContent && content) ? content() : [this.$createElement()]\n },\n },\n})\n","import Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'roundable',\n\n props: {\n rounded: [Boolean, String],\n tile: Boolean,\n },\n\n computed: {\n roundedClasses (): Record {\n const composite = []\n const rounded = typeof this.rounded === 'string'\n ? String(this.rounded)\n : this.rounded === true\n\n if (this.tile) {\n composite.push('rounded-0')\n } else if (typeof rounded === 'string') {\n const values = rounded.split(' ')\n\n for (const value of values) {\n composite.push(`rounded-${value}`)\n }\n } else if (rounded) {\n composite.push('rounded')\n }\n\n return composite.length > 0 ? {\n [composite.join(' ')]: true,\n } : {}\n },\n },\n})\n","import Vue, { VueConstructor } from 'vue'\n\nexport type Proxyable = VueConstructor>\n\nexport function factory (prop?: T, event?: string): Proxyable\nexport function factory (\n prop = 'value',\n event = 'change'\n) {\n return Vue.extend({\n name: 'proxyable',\n\n model: {\n prop,\n event,\n },\n\n props: {\n [prop]: {\n required: false,\n },\n },\n\n data () {\n return {\n internalLazyValue: this[prop] as unknown,\n }\n },\n\n computed: {\n internalValue: {\n get (): unknown {\n return this.internalLazyValue\n },\n set (val: any) {\n if (val === this.internalLazyValue) return\n\n this.internalLazyValue = val\n\n this.$emit(event, val)\n },\n },\n },\n\n watch: {\n [prop] (val) {\n this.internalLazyValue = val\n },\n },\n })\n}\n\n/* eslint-disable-next-line @typescript-eslint/no-redeclare */\nconst Proxyable = factory()\n\nexport default Proxyable\n","/**\r\n * Contains options (adhere to the DRY principle) & code re-usability\r\n * for components that needs router functionality\r\n */\r\nexport const routerMixin = {\r\n methods: {\r\n /**\r\n * can Navigate To Module Item By Module Item Id\r\n * @param {String|string} moduleName\r\n * @param {Number|number} id\r\n * @return {boolean} true if navigatable To Module Item By Module Item id\r\n */\r\n canNavigateToModuleItemByModuleItemId(moduleName, id) {\r\n return !(\r\n this.$router.currentRoute.name === moduleName &&\r\n this.$router.currentRoute.params?.id?.toString() ===\r\n (id?.toString() ?? \"\")\r\n );\r\n },\r\n\r\n /**\r\n * can Navigate To Module Child Record By id\r\n * @param {String|string} moduleName\r\n * @param {Number|number} id record id\r\n * @param {Number|number} expandedId record's parent id\r\n * @return {boolean}\r\n */\r\n canNavigateToChildRecordById(moduleName, id, expandedId) {\r\n return !(\r\n this.$router.currentRoute.name === moduleName &&\r\n this.$router.currentRoute.params?.id?.toString() === id.toString() &&\r\n this.$router.currentRoute.params?.expandedId?.toString() ===\r\n expandedId.toString()\r\n );\r\n }\r\n }\r\n};\r\n","import Vue from 'vue'\nimport { VNodeData } from 'vue/types/vnode'\nimport { consoleError } from '../../util/console'\nimport { isCssColor } from '../../util/colorUtils'\n\nexport default Vue.extend({\n name: 'colorable',\n\n props: {\n color: String,\n },\n\n methods: {\n setBackgroundColor (color?: string | false, data: VNodeData = {}): VNodeData {\n if (typeof data.style === 'string') {\n // istanbul ignore next\n consoleError('style must be an object', this)\n // istanbul ignore next\n return data\n }\n if (typeof data.class === 'string') {\n // istanbul ignore next\n consoleError('class must be an object', this)\n // istanbul ignore next\n return data\n }\n if (isCssColor(color)) {\n data.style = {\n ...data.style as object,\n 'background-color': `${color}`,\n 'border-color': `${color}`,\n }\n } else if (color) {\n data.class = {\n ...data.class,\n [color]: true,\n }\n }\n\n return data\n },\n\n setTextColor (color?: string | false, data: VNodeData = {}): VNodeData {\n if (typeof data.style === 'string') {\n // istanbul ignore next\n consoleError('style must be an object', this)\n // istanbul ignore next\n return data\n }\n if (typeof data.class === 'string') {\n // istanbul ignore next\n consoleError('class must be an object', this)\n // istanbul ignore next\n return data\n }\n if (isCssColor(color)) {\n data.style = {\n ...data.style as object,\n color: `${color}`,\n 'caret-color': `${color}`,\n }\n } else if (color) {\n const [colorName, colorModifier] = color.toString().trim().split(' ', 2) as (string | undefined)[]\n data.class = {\n ...data.class,\n [colorName + '--text']: true,\n }\n if (colorModifier) {\n data.class['text--' + colorModifier] = true\n }\n }\n return data\n },\n },\n})\n","// Styles\nimport './VWindow.sass'\n\n// Types\nimport { VNode, VNodeDirective } from 'vue/types/vnode'\nimport { PropType } from 'vue'\nimport { TouchHandlers } from 'vuetify/types'\n\n// Directives\nimport Touch from '../../directives/touch'\n\n// Components\nimport VBtn from '../VBtn'\nimport VIcon from '../VIcon'\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'\nimport { getSlot } from '../../util/helpers'\n\n/* @vue/component */\nexport default BaseItemGroup.extend({\n name: 'v-window',\n\n directives: { Touch },\n\n provide (): object {\n return {\n windowGroup: this,\n }\n },\n\n props: {\n activeClass: {\n type: String,\n default: 'v-window-item--active',\n },\n continuous: Boolean,\n mandatory: {\n type: Boolean,\n default: true,\n },\n nextIcon: {\n type: [Boolean, String],\n default: '$next',\n },\n prevIcon: {\n type: [Boolean, String],\n default: '$prev',\n },\n reverse: Boolean,\n showArrows: Boolean,\n showArrowsOnHover: Boolean,\n touch: Object as PropType,\n touchless: Boolean,\n value: {\n required: false,\n },\n vertical: Boolean,\n },\n\n data () {\n return {\n changedByDelimiters: false,\n internalHeight: undefined as undefined | string, // This can be fixed by child class.\n transitionHeight: undefined as undefined | string, // Intermediate height during transition.\n transitionCount: 0, // Number of windows in transition state.\n isBooted: false,\n isReverse: false,\n }\n },\n\n computed: {\n isActive (): boolean {\n return this.transitionCount > 0\n },\n classes (): object {\n return {\n ...BaseItemGroup.options.computed.classes.call(this),\n 'v-window--show-arrows-on-hover': this.showArrowsOnHover,\n }\n },\n computedTransition (): string {\n if (!this.isBooted) return ''\n\n const axis = this.vertical ? 'y' : 'x'\n const reverse = this.internalReverse ? !this.isReverse : this.isReverse\n const direction = reverse ? '-reverse' : ''\n\n return `v-window-${axis}${direction}-transition`\n },\n hasActiveItems (): boolean {\n return Boolean(\n this.items.find(item => !item.disabled)\n )\n },\n hasNext (): boolean {\n return this.continuous || this.internalIndex < this.items.length - 1\n },\n hasPrev (): boolean {\n return this.continuous || this.internalIndex > 0\n },\n internalIndex (): number {\n return this.items.findIndex((item, i) => {\n return this.internalValue === this.getValue(item, i)\n })\n },\n internalReverse (): boolean {\n return this.$vuetify.rtl ? !this.reverse : this.reverse\n },\n },\n\n watch: {\n internalIndex (val, oldVal) {\n this.isReverse = this.updateReverse(val, oldVal)\n },\n },\n\n mounted () {\n window.requestAnimationFrame(() => (this.isBooted = true))\n },\n\n methods: {\n genDefaultSlot () {\n return getSlot(this)\n },\n genContainer (): VNode {\n const children = [this.genDefaultSlot()]\n\n if (this.showArrows) {\n children.push(this.genControlIcons())\n }\n\n return this.$createElement('div', {\n staticClass: 'v-window__container',\n class: {\n 'v-window__container--is-active': this.isActive,\n },\n style: {\n height: this.internalHeight || this.transitionHeight,\n },\n }, children)\n },\n genIcon (\n direction: 'prev' | 'next',\n icon: string,\n click: () => void\n ) {\n const on = {\n click: (e: Event) => {\n e.stopPropagation()\n this.changedByDelimiters = true\n click()\n },\n }\n const attrs = {\n 'aria-label': this.$vuetify.lang.t(`$vuetify.carousel.${direction}`),\n }\n const children = this.$scopedSlots[direction]?.({\n on,\n attrs,\n }) ?? [this.$createElement(VBtn, {\n props: { icon: true },\n attrs,\n on,\n }, [\n this.$createElement(VIcon, {\n props: { large: true },\n }, icon),\n ])]\n\n return this.$createElement('div', {\n staticClass: `v-window__${direction}`,\n }, children)\n },\n genControlIcons () {\n const icons = []\n\n const prevIcon = this.$vuetify.rtl\n ? this.nextIcon\n : this.prevIcon\n\n /* istanbul ignore else */\n if (\n this.hasPrev &&\n prevIcon &&\n typeof prevIcon === 'string'\n ) {\n const icon = this.genIcon('prev', prevIcon, this.prev)\n icon && icons.push(icon)\n }\n\n const nextIcon = this.$vuetify.rtl\n ? this.prevIcon\n : this.nextIcon\n\n /* istanbul ignore else */\n if (\n this.hasNext &&\n nextIcon &&\n typeof nextIcon === 'string'\n ) {\n const icon = this.genIcon('next', nextIcon, this.next)\n icon && icons.push(icon)\n }\n\n return icons\n },\n getNextIndex (index: number): number {\n const nextIndex = (index + 1) % this.items.length\n const item = this.items[nextIndex]\n\n if (item.disabled) return this.getNextIndex(nextIndex)\n\n return nextIndex\n },\n getPrevIndex (index: number): number {\n const prevIndex = (index + this.items.length - 1) % this.items.length\n const item = this.items[prevIndex]\n\n if (item.disabled) return this.getPrevIndex(prevIndex)\n\n return prevIndex\n },\n next () {\n /* istanbul ignore if */\n if (!this.hasActiveItems || !this.hasNext) return\n\n const nextIndex = this.getNextIndex(this.internalIndex)\n const item = this.items[nextIndex]\n\n this.internalValue = this.getValue(item, nextIndex)\n },\n prev () {\n /* istanbul ignore if */\n if (!this.hasActiveItems || !this.hasPrev) return\n\n const lastIndex = this.getPrevIndex(this.internalIndex)\n const item = this.items[lastIndex]\n\n this.internalValue = this.getValue(item, lastIndex)\n },\n updateReverse (val: number, oldVal: number) {\n const itemsLength = this.items.length\n const lastIndex = itemsLength - 1\n\n if (itemsLength <= 2) return val < oldVal\n\n if (val === lastIndex && oldVal === 0) {\n return true\n } else if (val === 0 && oldVal === lastIndex) {\n return false\n } else {\n return val < oldVal\n }\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-window',\n class: this.classes,\n directives: [] as VNodeDirective[],\n }\n\n if (!this.touchless) {\n const value = this.touch || {\n left: () => {\n this.$vuetify.rtl ? this.prev() : this.next()\n },\n right: () => {\n this.$vuetify.rtl ? this.next() : this.prev()\n },\n end: (e: TouchEvent) => {\n e.stopPropagation()\n },\n start: (e: TouchEvent) => {\n e.stopPropagation()\n },\n }\n\n data.directives.push({\n name: 'touch',\n value,\n })\n }\n\n return h('div', data, [this.genContainer()])\n },\n})\n","// Extensions\nimport VWindow from '../VWindow/VWindow'\n\n// Types & Components\nimport { BaseItemGroup, GroupableInstance } from './../VItemGroup/VItemGroup'\n\n/* @vue/component */\nexport default VWindow.extend({\n name: 'v-tabs-items',\n\n props: {\n mandatory: {\n type: Boolean,\n default: false,\n },\n },\n\n computed: {\n classes (): object {\n return {\n ...VWindow.options.computed.classes.call(this),\n 'v-tabs-items': true,\n }\n },\n isDark (): boolean {\n return this.rootIsDark\n },\n },\n\n methods: {\n getValue (item: GroupableInstance, i: number) {\n return item.id || BaseItemGroup.options.methods.getValue.call(this, item, i)\n },\n },\n})\n","import Vue from 'vue'\n\nexport default Vue.extend({\n name: 'sizeable',\n\n props: {\n large: Boolean,\n small: Boolean,\n xLarge: Boolean,\n xSmall: Boolean,\n },\n\n computed: {\n medium (): boolean {\n return Boolean(\n !this.xSmall &&\n !this.small &&\n !this.large &&\n !this.xLarge\n )\n },\n sizeableClasses (): object {\n return {\n 'v-size--x-small': this.xSmall,\n 'v-size--small': this.small,\n 'v-size--default': this.medium,\n 'v-size--large': this.large,\n 'v-size--x-large': this.xLarge,\n }\n },\n },\n})\n","import VBtn from './VBtn'\n\nexport { VBtn }\nexport default VBtn\n","import { VNodeDirective, VNode } from 'vue/types/vnode'\nimport { keys } from '../../util/helpers'\nimport { TouchHandlers, TouchValue, TouchWrapper } from 'vuetify/types'\n\nexport interface TouchStoredHandlers {\n touchstart: (e: TouchEvent) => void\n touchend: (e: TouchEvent) => void\n touchmove: (e: TouchEvent) => void\n}\n\ninterface TouchVNodeDirective extends VNodeDirective {\n value?: TouchValue\n}\n\nconst handleGesture = (wrapper: TouchWrapper) => {\n const { touchstartX, touchendX, touchstartY, touchendY } = wrapper\n const dirRatio = 0.5\n const minDistance = 16\n wrapper.offsetX = touchendX - touchstartX\n wrapper.offsetY = touchendY - touchstartY\n\n if (Math.abs(wrapper.offsetY) < dirRatio * Math.abs(wrapper.offsetX)) {\n wrapper.left && (touchendX < touchstartX - minDistance) && wrapper.left(wrapper)\n wrapper.right && (touchendX > touchstartX + minDistance) && wrapper.right(wrapper)\n }\n\n if (Math.abs(wrapper.offsetX) < dirRatio * Math.abs(wrapper.offsetY)) {\n wrapper.up && (touchendY < touchstartY - minDistance) && wrapper.up(wrapper)\n wrapper.down && (touchendY > touchstartY + minDistance) && wrapper.down(wrapper)\n }\n}\n\nfunction touchstart (event: TouchEvent, wrapper: TouchWrapper) {\n const touch = event.changedTouches[0]\n wrapper.touchstartX = touch.clientX\n wrapper.touchstartY = touch.clientY\n\n wrapper.start &&\n wrapper.start(Object.assign(event, wrapper))\n}\n\nfunction touchend (event: TouchEvent, wrapper: TouchWrapper) {\n const touch = event.changedTouches[0]\n wrapper.touchendX = touch.clientX\n wrapper.touchendY = touch.clientY\n\n wrapper.end &&\n wrapper.end(Object.assign(event, wrapper))\n\n handleGesture(wrapper)\n}\n\nfunction touchmove (event: TouchEvent, wrapper: TouchWrapper) {\n const touch = event.changedTouches[0]\n wrapper.touchmoveX = touch.clientX\n wrapper.touchmoveY = touch.clientY\n\n wrapper.move && wrapper.move(Object.assign(event, wrapper))\n}\n\nfunction createHandlers (value: TouchHandlers): TouchStoredHandlers {\n const wrapper = {\n touchstartX: 0,\n touchstartY: 0,\n touchendX: 0,\n touchendY: 0,\n touchmoveX: 0,\n touchmoveY: 0,\n offsetX: 0,\n offsetY: 0,\n left: value.left,\n right: value.right,\n up: value.up,\n down: value.down,\n start: value.start,\n move: value.move,\n end: value.end,\n }\n\n return {\n touchstart: (e: TouchEvent) => touchstart(e, wrapper),\n touchend: (e: TouchEvent) => touchend(e, wrapper),\n touchmove: (e: TouchEvent) => touchmove(e, wrapper),\n }\n}\n\nfunction inserted (el: HTMLElement, binding: TouchVNodeDirective, vnode: VNode) {\n const value = binding.value!\n const target = value.parent ? el.parentElement : el\n const options = value.options || { passive: true }\n\n // Needed to pass unit tests\n if (!target) return\n\n const handlers = createHandlers(binding.value!)\n target._touchHandlers = Object(target._touchHandlers)\n target._touchHandlers![vnode.context!._uid] = handlers\n\n keys(handlers).forEach(eventName => {\n target.addEventListener(eventName, handlers[eventName] as EventListener, options)\n })\n}\n\nfunction unbind (el: HTMLElement, binding: TouchVNodeDirective, vnode: VNode) {\n const target = binding.value!.parent ? el.parentElement : el\n if (!target || !target._touchHandlers) return\n\n const handlers = target._touchHandlers[vnode.context!._uid]\n keys(handlers).forEach(eventName => {\n target.removeEventListener(eventName, handlers[eventName])\n })\n delete target._touchHandlers[vnode.context!._uid]\n}\n\nexport const Touch = {\n inserted,\n unbind,\n}\n\nexport default Touch\n","// Components\nimport { VFadeTransition } from '../transitions'\nimport VExpansionPanel from './VExpansionPanel'\nimport VIcon from '../VIcon'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport { inject as RegistrableInject } from '../../mixins/registrable'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Utilities\nimport { getSlot } from '../../util/helpers'\nimport mixins, { ExtractVue } from '../../util/mixins'\n\n// Types\nimport Vue, { VNode, VueConstructor } from 'vue'\n\nconst baseMixins = mixins(\n Colorable,\n RegistrableInject<'expansionPanel', VueConstructor>('expansionPanel', 'v-expansion-panel-header', 'v-expansion-panel')\n)\n\ninterface options extends ExtractVue {\n $el: HTMLElement\n expansionPanel: InstanceType\n}\n\nexport default baseMixins.extend().extend({\n name: 'v-expansion-panel-header',\n\n directives: { ripple },\n\n props: {\n disableIconRotate: Boolean,\n expandIcon: {\n type: String,\n default: '$expand',\n },\n hideActions: Boolean,\n ripple: {\n type: [Boolean, Object],\n default: false,\n },\n },\n\n data: () => ({\n hasMousedown: false,\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-expansion-panel-header--active': this.isActive,\n 'v-expansion-panel-header--mousedown': this.hasMousedown,\n }\n },\n isActive (): boolean {\n return this.expansionPanel.isActive\n },\n isDisabled (): boolean {\n return this.expansionPanel.isDisabled\n },\n isReadonly (): boolean {\n return this.expansionPanel.isReadonly\n },\n },\n\n created () {\n this.expansionPanel.registerHeader(this)\n },\n\n beforeDestroy () {\n this.expansionPanel.unregisterHeader()\n },\n\n methods: {\n onClick (e: MouseEvent) {\n this.$emit('click', e)\n },\n genIcon () {\n const icon = getSlot(this, 'actions', { open: this.isActive }) ||\n [this.$createElement(VIcon, this.expandIcon)]\n\n return this.$createElement(VFadeTransition, [\n this.$createElement('div', {\n staticClass: 'v-expansion-panel-header__icon',\n class: {\n 'v-expansion-panel-header__icon--disable-rotate': this.disableIconRotate,\n },\n directives: [{\n name: 'show',\n value: !this.isDisabled,\n }],\n }, icon),\n ])\n },\n },\n\n render (h): VNode {\n return h('button', this.setBackgroundColor(this.color, {\n staticClass: 'v-expansion-panel-header',\n class: this.classes,\n attrs: {\n tabindex: this.isDisabled ? -1 : null,\n type: 'button',\n 'aria-expanded': this.isActive,\n },\n directives: [{\n name: 'ripple',\n value: this.ripple,\n }],\n on: {\n ...this.$listeners,\n click: this.onClick,\n mousedown: () => (this.hasMousedown = true),\n mouseup: () => (this.hasMousedown = false),\n },\n }), [\n getSlot(this, 'default', { open: this.isActive }, true),\n this.hideActions || this.genIcon(),\n ])\n },\n})\n","import Vue from 'vue'\n\nexport default Vue.extend({\n name: 'elevatable',\n\n props: {\n elevation: [Number, String],\n },\n\n computed: {\n computedElevation (): string | number | undefined {\n return this.elevation\n },\n elevationClasses (): Record {\n const elevation = this.computedElevation\n\n if (elevation == null) return {}\n if (isNaN(parseInt(elevation))) return {}\n return { [`elevation-${this.elevation}`]: true }\n },\n },\n})\n","// Components\nimport VExpansionPanels from './VExpansionPanels'\nimport VExpansionPanelHeader from './VExpansionPanelHeader'\nimport VExpansionPanelContent from './VExpansionPanelContent'\n\n// Mixins\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport { provide as RegistrableProvide } from '../../mixins/registrable'\n\n// Utilities\nimport { getSlot } from '../../util/helpers'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\ntype VExpansionPanelHeaderInstance = InstanceType\ntype VExpansionPanelContentInstance = InstanceType\n\nexport default mixins(\n GroupableFactory<'expansionPanels', typeof VExpansionPanels>('expansionPanels', 'v-expansion-panel', 'v-expansion-panels'),\n RegistrableProvide('expansionPanel', true)\n /* @vue/component */\n).extend({\n name: 'v-expansion-panel',\n\n props: {\n disabled: Boolean,\n readonly: Boolean,\n },\n\n data () {\n return {\n content: null as VExpansionPanelContentInstance | null,\n header: null as VExpansionPanelHeaderInstance | null,\n nextIsActive: false,\n }\n },\n\n computed: {\n classes (): object {\n return {\n 'v-expansion-panel--active': this.isActive,\n 'v-expansion-panel--next-active': this.nextIsActive,\n 'v-expansion-panel--disabled': this.isDisabled,\n ...this.groupClasses,\n }\n },\n isDisabled (): boolean {\n return this.expansionPanels.disabled || this.disabled\n },\n isReadonly (): boolean {\n return this.expansionPanels.readonly || this.readonly\n },\n },\n\n methods: {\n registerContent (vm: VExpansionPanelContentInstance) {\n this.content = vm\n },\n unregisterContent () {\n this.content = null\n },\n registerHeader (vm: VExpansionPanelHeaderInstance) {\n this.header = vm\n vm.$on('click', this.onClick)\n },\n unregisterHeader () {\n this.header = null\n },\n onClick (e: MouseEvent) {\n if (e.detail) this.header!.$el.blur()\n\n this.$emit('click', e)\n\n this.isReadonly || this.isDisabled || this.toggle()\n },\n toggle () {\n this.$nextTick(() => this.$emit('change'))\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-expansion-panel',\n class: this.classes,\n attrs: {\n 'aria-expanded': String(this.isActive),\n },\n }, getSlot(this))\n },\n})\n","// Styles\nimport './VDivider.sass'\n\n// Types\nimport { VNode } from 'vue'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\n\nexport default Themeable.extend({\n name: 'v-divider',\n\n props: {\n inset: Boolean,\n vertical: Boolean,\n },\n\n render (h): VNode {\n // WAI-ARIA attributes\n let orientation\n if (!this.$attrs.role || this.$attrs.role === 'separator') {\n orientation = this.vertical ? 'vertical' : 'horizontal'\n }\n return h('hr', {\n class: {\n 'v-divider': true,\n 'v-divider--inset': this.inset,\n 'v-divider--vertical': this.vertical,\n ...this.themeClasses,\n },\n attrs: {\n role: 'separator',\n 'aria-orientation': orientation,\n ...this.$attrs,\n },\n on: this.$listeners,\n })\n },\n})\n","import Vue from 'vue'\n\n/**\n * SSRBootable\n *\n * @mixin\n *\n * Used in layout components (drawer, toolbar, content)\n * to avoid an entry animation when using SSR\n */\nexport default Vue.extend({\n name: 'ssr-bootable',\n\n data: () => ({\n isBooted: false,\n }),\n\n mounted () {\n // Use setAttribute instead of dataset\n // because dataset does not work well\n // with unit tests\n window.requestAnimationFrame(() => {\n this.$el.setAttribute('data-booted', 'true')\n this.isBooted = true\n })\n },\n})\n","/**\r\n * action Result Type template\r\n * @type {Readonly<{type: string, message: string}>}\r\n */\r\nconst actionResult = Object.freeze({\r\n type: \"type\",\r\n message: \"message\",\r\n outcome: \"outcome\"\r\n});\r\n\r\n/**\r\n * action Result Type name/key\r\n * @type {Readonly<{cancel: string, abort: string, success: string, error: string}>}\r\n */\r\nconst actionResultType = Object.freeze({\r\n success: \"success\",\r\n error: \"error\",\r\n cancel: \"cancel\",\r\n abort: \"abort\"\r\n});\r\n\r\n/**\r\n * action Result Types\r\n * @type {{name: string, outcome: string}[]}\r\n */\r\nconst actionResultTypes = Object.freeze([\r\n {\r\n name: actionResultType.success,\r\n outcome: \"succeeded\"\r\n },\r\n {\r\n name: actionResultType.error,\r\n outcome: \"failed\"\r\n },\r\n {\r\n name: actionResultType.cancel,\r\n outcome: \"canceled\"\r\n },\r\n {\r\n name: actionResultType.abort,\r\n outcome: \"aborted\"\r\n }\r\n]);\r\n\r\n/**\r\n * find Action Result Type\r\n * @param {string} name Action Result Type name\r\n * @return {{name: string, outcome: string, message: string}} Action Result Type\r\n */\r\nconst findActionResultType = name => {\r\n return actionResultTypes.find(el => el.name === name);\r\n};\r\n\r\n/**\r\n * create Action Result\r\n * @param {string} type Action Result type\r\n * @param {string} action Action name\r\n * @return {{type: string, message: string, outcome: string}} Action Result\r\n */\r\nconst createActionResult = (type, action) => {\r\n const outcome = findActionResultType(type)?.outcome ?? \"\";\r\n\r\n return {\r\n [actionResult.type]: type,\r\n [actionResult.message]: formatActionMessage(action, outcome),\r\n [actionResult.outcome]: findActionResultType(type)?.outcome\r\n };\r\n};\r\n\r\n/**\r\n * create Success Action Result\r\n * @param {string} action Action name\r\n * @return {{type: string, message: string, outcome: string}} Success Action Result\r\n */\r\nconst createActionResultSuccess = action => {\r\n return createActionResult(actionResultType.success, action);\r\n};\r\n\r\n/**\r\n * create Cancel Action Result\r\n * @param {string} action Action name\r\n * @return {{type: string, message: string, outcome: string}} Cancel Action Result\r\n */\r\nconst createActionResultCancel = action => {\r\n return createActionResult(actionResultType.cancel, action);\r\n};\r\n\r\n/**\r\n * create Error Action Result\r\n * @param {string} action Action name\r\n * @return {{type: string, message: string, outcome: string}} Error Action Result\r\n */\r\nconst createActionResultError = action => {\r\n return createActionResult(actionResultType.error, action);\r\n};\r\n\r\n/**\r\n * create Abort Action Result\r\n * @param {string} action Action name\r\n * @return {{type: string, message: string, outcome: string}} Abort Action Result\r\n */\r\nconst createActionResultAbort = action => {\r\n return createActionResult(actionResultType.abort, action);\r\n};\r\n\r\n/**\r\n * format Action Message\r\n * @param action Action name\r\n * @param outcome Action's outcome\r\n * @return {`${string} ${string}.`} formatted Action Message\r\n */\r\nconst formatActionMessage = (action, outcome) => {\r\n return `${action} ${outcome}.`;\r\n};\r\n\r\nexport {\r\n actionResult,\r\n actionResultType,\r\n actionResultTypes,\r\n createActionResult,\r\n createActionResultSuccess,\r\n createActionResultCancel,\r\n createActionResultError,\r\n createActionResultAbort,\r\n findActionResultType,\r\n formatActionMessage\r\n};\r\n","/**\n * @copyright 2017 Alex Regan\n * @license MIT\n * @see https://github.com/alexsasharegan/vue-functional-data-merge\n */\n/* eslint-disable max-statements */\nimport { VNodeData } from 'vue'\nimport { camelize, wrapInArray } from './helpers'\n\nconst pattern = {\n styleList: /;(?![^(]*\\))/g,\n styleProp: /:(.*)/,\n} as const\n\nfunction parseStyle (style: string) {\n const styleMap: Dictionary = {}\n\n for (const s of style.split(pattern.styleList)) {\n let [key, val] = s.split(pattern.styleProp)\n key = key.trim()\n if (!key) {\n continue\n }\n // May be undefined if the `key: value` pair is incomplete.\n if (typeof val === 'string') {\n val = val.trim()\n }\n styleMap[camelize(key)] = val\n }\n\n return styleMap\n}\n\n/**\n * Intelligently merges data for createElement.\n * Merges arguments left to right, preferring the right argument.\n * Returns new VNodeData object.\n */\nexport default function mergeData (...vNodeData: VNodeData[]): VNodeData\nexport default function mergeData (): VNodeData {\n const mergeTarget: VNodeData & Dictionary = {}\n let i: number = arguments.length\n let prop: string\n\n // Allow for variadic argument length.\n while (i--) {\n // Iterate through the data properties and execute merge strategies\n // Object.keys eliminates need for hasOwnProperty call\n for (prop of Object.keys(arguments[i])) {\n switch (prop) {\n // Array merge strategy (array concatenation)\n case 'class':\n case 'directives':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeClasses(mergeTarget[prop], arguments[i][prop])\n }\n break\n case 'style':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeStyles(mergeTarget[prop], arguments[i][prop])\n }\n break\n // Space delimited string concatenation strategy\n case 'staticClass':\n if (!arguments[i][prop]) {\n break\n }\n if (mergeTarget[prop] === undefined) {\n mergeTarget[prop] = ''\n }\n if (mergeTarget[prop]) {\n // Not an empty string, so concatenate\n mergeTarget[prop] += ' '\n }\n mergeTarget[prop] += arguments[i][prop].trim()\n break\n // Object, the properties of which to merge via array merge strategy (array concatenation).\n // Callback merge strategy merges callbacks to the beginning of the array,\n // so that the last defined callback will be invoked first.\n // This is done since to mimic how Object.assign merging\n // uses the last given value to assign.\n case 'on':\n case 'nativeOn':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeListeners(mergeTarget[prop], arguments[i][prop])\n }\n break\n // Object merge strategy\n case 'attrs':\n case 'props':\n case 'domProps':\n case 'scopedSlots':\n case 'staticStyle':\n case 'hook':\n case 'transition':\n if (!arguments[i][prop]) {\n break\n }\n if (!mergeTarget[prop]) {\n mergeTarget[prop] = {}\n }\n mergeTarget[prop] = { ...arguments[i][prop], ...mergeTarget[prop] }\n break\n // Reassignment strategy (no merge)\n default: // slot, key, ref, tag, show, keepAlive\n if (!mergeTarget[prop]) {\n mergeTarget[prop] = arguments[i][prop]\n }\n }\n }\n }\n\n return mergeTarget\n}\n\nexport function mergeStyles (\n target: undefined | string | object[] | object,\n source: undefined | string | object[] | object\n) {\n if (!target) return source\n if (!source) return target\n\n target = wrapInArray(typeof target === 'string' ? parseStyle(target) : target)\n\n return (target as object[]).concat(typeof source === 'string' ? parseStyle(source) : source)\n}\n\nexport function mergeClasses (target: any, source: any) {\n if (!source) return target\n if (!target) return source\n\n return target ? wrapInArray(target).concat(source) : source\n}\n\nexport function mergeListeners (...args: [\n { [key: string]: Function | Function[] } | undefined,\n { [key: string]: Function | Function[] } | undefined\n]) {\n if (!args[0]) return args[1]\n if (!args[1]) return args[0]\n\n const dest: { [key: string]: Function | Function[] } = {}\n\n for (let i = 2; i--;) {\n const arg = args[i]\n for (const event in arg) {\n if (!arg[event]) continue\n\n if (dest[event]) {\n // Merge current listeners before (because we are iterating backwards).\n // Note that neither \"target\" or \"source\" must be altered.\n dest[event] = ([] as Function[]).concat(arg[event], dest[event])\n } else {\n // Straight assign.\n dest[event] = arg[event]\n }\n }\n }\n\n return dest\n}\n","import { VNodeDirective } from 'vue/types/vnode'\nimport { VNode } from 'vue'\n\ninterface ResizeVNodeDirective extends VNodeDirective {\n value?: () => void\n options?: boolean | AddEventListenerOptions\n}\n\nfunction inserted (el: HTMLElement, binding: ResizeVNodeDirective, vnode: VNode) {\n const callback = binding.value!\n const options = binding.options || { passive: true }\n\n window.addEventListener('resize', callback, options)\n\n el._onResize = Object(el._onResize)\n el._onResize![vnode.context!._uid] = {\n callback,\n options,\n }\n\n if (!binding.modifiers || !binding.modifiers.quiet) {\n callback()\n }\n}\n\nfunction unbind (el: HTMLElement, binding: ResizeVNodeDirective, vnode: VNode) {\n if (!el._onResize?.[vnode.context!._uid]) return\n\n const { callback, options } = el._onResize[vnode.context!._uid]!\n\n window.removeEventListener('resize', callback, options)\n\n delete el._onResize[vnode.context!._uid]\n}\n\nexport const Resize = {\n inserted,\n unbind,\n}\n\nexport default Resize\n","// router\r\nimport { createModuleItemContentRouteLocation } from \"@/router/solution/solutionRoutes\";\r\n\r\n// mixins\r\nimport { appMixin } from \"@/mixins/shared/base/app/appMixin\";\r\nimport { routerMixin } from \"@/mixins/shared/router/routerMixin\";\r\n\r\n/**\r\n * Contains options (adhere to the DRY principle) & code re-usability\r\n * for components that needs Application module navigatable behavior\r\n */\r\nexport const moduleItemNavigatable = {\r\n mixins: [appMixin, routerMixin],\r\n methods: {\r\n /**\r\n * Navigate to Application Module Item\r\n * @param {Number|number} id Application Module Item id\r\n */\r\n async navigateToModuleItem(id) {\r\n if (!this.canNavigateToModuleItem(id)) {\r\n console.warn(\r\n `Couldn't navigate to ${this.appModuleName} Item by id:`,\r\n id\r\n );\r\n return;\r\n }\r\n\r\n try {\r\n await this.$router.push(this.createModuleItemContentRoute(id));\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n },\r\n\r\n /**\r\n * create Module Item Target Route\r\n * @param {Number|number} id Module Item id\r\n * @return {{name: (String|string), params: {id:number}}}\r\n */\r\n createModuleItemContentRoute(id) {\r\n return createModuleItemContentRouteLocation(this.appModuleName, id);\r\n },\r\n\r\n /**\r\n * can Navigate To Module Item\r\n * @param {Number|number} id Module Item id\r\n * @return {boolean} true if Navigatable To Module Item\r\n */\r\n canNavigateToModuleItem(id) {\r\n return this.canNavigateToModuleItemByModuleItemId(this.appModuleName, id);\r\n }\r\n }\r\n};\r\n","// Types\nimport { BreakpointName } from 'vuetify/types/services/breakpoint'\nimport { deprecate } from '../../util/console'\nimport Vue, { PropType } from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'mobile',\n\n props: {\n mobileBreakpoint: {\n type: [Number, String] as PropType,\n default (): number | BreakpointName | undefined {\n // Avoid destroying unit\n // tests for users\n return this.$vuetify\n ? this.$vuetify.breakpoint.mobileBreakpoint\n : undefined\n },\n validator: v => (\n !isNaN(Number(v)) ||\n ['xs', 'sm', 'md', 'lg', 'xl'].includes(String(v))\n ),\n },\n },\n\n computed: {\n isMobile (): boolean {\n const {\n mobile,\n width,\n name,\n mobileBreakpoint,\n } = this.$vuetify.breakpoint\n\n // Check if local mobileBreakpoint matches\n // the application's mobileBreakpoint\n if (mobileBreakpoint === this.mobileBreakpoint) return mobile\n\n const mobileWidth = parseInt(this.mobileBreakpoint, 10)\n const isNumber = !isNaN(mobileWidth)\n\n return isNumber\n ? width < mobileWidth\n : name === this.mobileBreakpoint\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('mobile-break-point')) {\n deprecate('mobile-break-point', 'mobile-breakpoint', this)\n }\n },\n})\n","// router\r\nimport { createModuleRecordRouteLocation } from \"@/router/solution/solutionRoutes\";\r\n\r\n// model\r\nimport { moduleNames } from \"@/model/solution/moduleModel\";\r\n\r\n// services\r\nimport { isRecordExpandable } from \"@/services/record/recordService\";\r\n\r\n// design\r\nimport { iconJumpToFolder } from \"@/design/icon/iconConst\";\r\n\r\n// mixins\r\nimport { appMixin } from \"@/mixins/shared/base/app/appMixin\";\r\nimport { routerMixin } from \"@/mixins/shared/router/routerMixin\";\r\nimport { findRecordType, recordType } from \"@/model/record/recordModel\";\r\nimport { publicAccessMixin } from \"@/mixins/public/publicAccessMixin\";\r\n\r\n/**\r\n * Contains options (adhere to the DRY principle) & code re-usability\r\n * for components that needs Folder module record navigatable behavior\r\n */\r\nexport const folderRecordNavigatable = {\r\n mixins: [appMixin, routerMixin, publicAccessMixin],\r\n computed: {\r\n commandSelectRecordIconName: () => iconJumpToFolder,\r\n /**\r\n * Visible Jump To File\r\n * @return {string|boolean}\r\n */\r\n visibleJumpToFile() {\r\n return this.isPublicAccess\r\n ? this.publicAccess.modules.visibleFolder\r\n : true;\r\n }\r\n },\r\n methods: {\r\n /**\r\n * build Folder Module Select Record Route\r\n * @param {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}} record\r\n * @return {{name: (String|string), params: {id}}|{name: (String|string), params: {id}}}\r\n */\r\n folderModuleRecordRouteLocation(record) {\r\n return createModuleRecordRouteLocation(moduleNames.Folder, record);\r\n },\r\n\r\n /**\r\n * can Navigate To Folder Module Record\r\n * @param {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}} record\r\n * @return {boolean|*}\r\n */\r\n canNavigateToFolderModuleRecord(record) {\r\n return isRecordExpandable(record)\r\n ? this.canNavigateToFolderModuleRecordById(record?.id ?? -1)\r\n : this.canNavigateToFolderModuleChildRecordById(\r\n record?.id ?? -1,\r\n record?.parentId ?? -1\r\n );\r\n },\r\n\r\n /**\r\n * can Navigate To Folder Module Child Record By id\r\n * @param {Number|number} id Record id\r\n * @param {Number|number} expandedId Record's parent id\r\n * @return {boolean}\r\n */\r\n canNavigateToFolderModuleChildRecordById(id, expandedId) {\r\n return this.canNavigateToChildRecordById(\r\n moduleNames.Folder,\r\n id,\r\n expandedId\r\n );\r\n },\r\n\r\n /**\r\n * can Navigate To Folder Module Item\r\n * @param {Number} id Folder's record id\r\n * @return {boolean}\r\n */\r\n canNavigateToFolderModuleRecordById(id) {\r\n return this.canNavigateToModuleItemByModuleItemId(moduleNames.Folder, id);\r\n },\r\n\r\n /**\r\n * tooltip Navigate To Record (select/expand) record\r\n * @param {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}} record\r\n * @return {string} tooltip Navigate (select/expand) record\r\n */\r\n tooltipNavigateToRecord(record) {\r\n const action = isRecordExpandable(record) ? \"Expand\" : \"Select\";\r\n return `${action} ${record?.recordType}`;\r\n },\r\n\r\n /**\r\n * command Select Record Label\r\n * @param {{recordType: string, name: string, recordTypeId: number}} record\r\n * @return {string}\r\n */\r\n commandSelectRecordLabel(record) {\r\n const recordTypeName = findRecordType(\r\n record?.recordTypeId ?? recordType.RECORD\r\n )?.name;\r\n return this.appModuleName === moduleNames.Folder\r\n ? `Select ${recordTypeName}`\r\n : `Jump to ${recordTypeName}`;\r\n }\r\n }\r\n};\r\n","import Vue, { VueConstructor } from 'vue'\n\nexport type Toggleable = VueConstructor>\n\nexport function factory (prop?: T, event?: string): Toggleable\nexport function factory (prop = 'value', event = 'input') {\n return Vue.extend({\n name: 'toggleable',\n\n model: { prop, event },\n\n props: {\n [prop]: { required: false },\n },\n\n data () {\n return {\n isActive: !!this[prop],\n }\n },\n\n watch: {\n [prop] (val) {\n this.isActive = !!val\n },\n isActive (val) {\n !!val !== this[prop] && this.$emit(event, val)\n },\n },\n })\n}\n\n/* eslint-disable-next-line @typescript-eslint/no-redeclare */\nconst Toggleable = factory()\n\nexport default Toggleable\n","// Extensions\nimport { BaseSlideGroup } from '../VSlideGroup/VSlideGroup'\n\n// Components\nimport VTab from './VTab'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\nimport SSRBootable from '../../mixins/ssr-bootable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { Route } from 'vue-router'\nimport { VNode } from 'vue'\n\ntype VTabInstance = InstanceType\n\nexport default mixins(\n BaseSlideGroup,\n SSRBootable,\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-tabs-bar',\n\n provide () {\n return {\n tabsBar: this,\n }\n },\n\n computed: {\n classes () {\n return {\n ...BaseSlideGroup.options.computed.classes.call(this),\n 'v-tabs-bar': true,\n 'v-tabs-bar--is-mobile': this.isMobile,\n // TODO: Remove this and move to v-slide-group\n 'v-tabs-bar--show-arrows': this.showArrows,\n ...this.themeClasses,\n }\n },\n },\n\n watch: {\n items: 'callSlider',\n internalValue: 'callSlider',\n $route: 'onRouteChange',\n },\n\n methods: {\n callSlider () {\n if (!this.isBooted) return\n\n this.$emit('call:slider')\n },\n genContent () {\n const render = BaseSlideGroup.options.methods.genContent.call(this)\n\n render.data = render.data || {}\n render.data.staticClass += ' v-tabs-bar__content'\n\n return render\n },\n onRouteChange (val: Route, oldVal: Route) {\n /* istanbul ignore next */\n if (this.mandatory) return\n\n const items = this.items as unknown as VTabInstance[]\n const newPath = val.path\n const oldPath = oldVal.path\n\n let hasNew = false\n let hasOld = false\n\n for (const item of items) {\n if (item.to === oldPath) hasOld = true\n else if (item.to === newPath) hasNew = true\n\n if (hasNew && hasOld) break\n }\n\n // If we have an old item and not a new one\n // it's assumed that the user navigated to\n // a path that is not present in the items\n if (!hasNew && hasOld) this.internalValue = undefined\n },\n },\n\n render (h): VNode {\n const render = BaseSlideGroup.options.render.call(this, h)\n\n render.data!.attrs = {\n role: 'tablist',\n }\n\n return render\n },\n})\n","// Styles\nimport './VTabs.sass'\n\n// Components\nimport VTabsBar from './VTabsBar'\nimport VTabsItems from './VTabsItems'\nimport VTabsSlider from './VTabsSlider'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Proxyable from '../../mixins/proxyable'\nimport Themeable from '../../mixins/themeable'\n\n// Directives\nimport Resize from '../../directives/resize'\n\n// Utilities\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport { ExtractVue } from './../../util/mixins'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue/types'\n\nconst baseMixins = mixins(\n Colorable,\n Proxyable,\n Themeable\n)\n\ninterface options extends ExtractVue {\n $refs: {\n items: InstanceType\n }\n}\n\nexport default baseMixins.extend().extend({\n name: 'v-tabs',\n\n directives: {\n Resize,\n },\n\n props: {\n activeClass: {\n type: String,\n default: '',\n },\n alignWithTitle: Boolean,\n backgroundColor: String,\n centerActive: Boolean,\n centered: Boolean,\n fixedTabs: Boolean,\n grow: Boolean,\n height: {\n type: [Number, String],\n default: undefined,\n },\n hideSlider: Boolean,\n iconsAndText: Boolean,\n mobileBreakpoint: [String, Number],\n nextIcon: {\n type: String,\n default: '$next',\n },\n optional: Boolean,\n prevIcon: {\n type: String,\n default: '$prev',\n },\n right: Boolean,\n showArrows: [Boolean, String],\n sliderColor: String,\n sliderSize: {\n type: [Number, String],\n default: 2,\n },\n vertical: Boolean,\n },\n\n data () {\n return {\n resizeTimeout: 0,\n slider: {\n height: null as null | number,\n left: null as null | number,\n right: null as null | number,\n top: null as null | number,\n width: null as null | number,\n },\n transitionTime: 300,\n }\n },\n\n computed: {\n classes (): object {\n return {\n 'v-tabs--align-with-title': this.alignWithTitle,\n 'v-tabs--centered': this.centered,\n 'v-tabs--fixed-tabs': this.fixedTabs,\n 'v-tabs--grow': this.grow,\n 'v-tabs--icons-and-text': this.iconsAndText,\n 'v-tabs--right': this.right,\n 'v-tabs--vertical': this.vertical,\n ...this.themeClasses,\n }\n },\n isReversed (): boolean {\n return this.$vuetify.rtl && this.vertical\n },\n sliderStyles (): object {\n return {\n height: convertToUnit(this.slider.height),\n left: this.isReversed ? undefined : convertToUnit(this.slider.left),\n right: this.isReversed ? convertToUnit(this.slider.right) : undefined,\n top: this.vertical ? convertToUnit(this.slider.top) : undefined,\n transition: this.slider.left != null ? null : 'none',\n width: convertToUnit(this.slider.width),\n }\n },\n computedColor (): string {\n if (this.color) return this.color\n else if (this.isDark && !this.appIsDark) return 'white'\n else return 'primary'\n },\n },\n\n watch: {\n alignWithTitle: 'callSlider',\n centered: 'callSlider',\n centerActive: 'callSlider',\n fixedTabs: 'callSlider',\n grow: 'callSlider',\n iconsAndText: 'callSlider',\n right: 'callSlider',\n showArrows: 'callSlider',\n vertical: 'callSlider',\n '$vuetify.application.left': 'onResize',\n '$vuetify.application.right': 'onResize',\n '$vuetify.rtl': 'onResize',\n },\n\n mounted () {\n if (typeof ResizeObserver !== 'undefined') {\n const obs = new ResizeObserver(() => {\n this.onResize()\n })\n obs.observe(this.$el)\n this.$on('hook:destroyed', () => {\n obs.disconnect()\n })\n }\n\n this.$nextTick(() => {\n window.setTimeout(this.callSlider, 30)\n })\n },\n\n methods: {\n callSlider () {\n if (\n this.hideSlider ||\n !this.$refs.items ||\n !this.$refs.items.selectedItems.length\n ) {\n this.slider.width = 0\n return false\n }\n\n this.$nextTick(() => {\n // Give screen time to paint\n const activeTab = this.$refs.items.selectedItems[0]\n /* istanbul ignore if */\n if (!activeTab || !activeTab.$el) {\n this.slider.width = 0\n this.slider.left = 0\n return\n }\n const el = activeTab.$el as HTMLElement\n\n this.slider = {\n height: !this.vertical ? Number(this.sliderSize) : el.scrollHeight,\n left: this.vertical ? 0 : el.offsetLeft,\n right: this.vertical ? 0 : el.offsetLeft + el.offsetWidth,\n top: el.offsetTop,\n width: this.vertical ? Number(this.sliderSize) : el.scrollWidth,\n }\n })\n\n return true\n },\n genBar (items: VNode[], slider: VNode | null) {\n const data = {\n style: {\n height: convertToUnit(this.height),\n },\n props: {\n activeClass: this.activeClass,\n centerActive: this.centerActive,\n dark: this.dark,\n light: this.light,\n mandatory: !this.optional,\n mobileBreakpoint: this.mobileBreakpoint,\n nextIcon: this.nextIcon,\n prevIcon: this.prevIcon,\n showArrows: this.showArrows,\n value: this.internalValue,\n },\n on: {\n 'call:slider': this.callSlider,\n change: (val: any) => {\n this.internalValue = val\n },\n },\n ref: 'items',\n }\n\n this.setTextColor(this.computedColor, data)\n this.setBackgroundColor(this.backgroundColor, data)\n\n return this.$createElement(VTabsBar, data, [\n this.genSlider(slider),\n items,\n ])\n },\n genItems (items: VNode | null, item: VNode[]) {\n // If user provides items\n // opt to use theirs\n if (items) return items\n\n // If no tabs are provided\n // render nothing\n if (!item.length) return null\n\n return this.$createElement(VTabsItems, {\n props: {\n value: this.internalValue,\n },\n on: {\n change: (val: any) => {\n this.internalValue = val\n },\n },\n }, item)\n },\n genSlider (slider: VNode | null) {\n if (this.hideSlider) return null\n\n if (!slider) {\n slider = this.$createElement(VTabsSlider, {\n props: { color: this.sliderColor },\n })\n }\n\n return this.$createElement('div', {\n staticClass: 'v-tabs-slider-wrapper',\n style: this.sliderStyles,\n }, [slider])\n },\n onResize () {\n if (this._isDestroyed) return\n\n clearTimeout(this.resizeTimeout)\n this.resizeTimeout = window.setTimeout(this.callSlider, 0)\n },\n parseNodes () {\n let items = null\n let slider = null\n const item = []\n const tab = []\n const slot = getSlot(this) || []\n const length = slot.length\n\n for (let i = 0; i < length; i++) {\n const vnode = slot[i]\n\n if (vnode.componentOptions) {\n switch (vnode.componentOptions.Ctor.options.name) {\n case 'v-tabs-slider': slider = vnode\n break\n case 'v-tabs-items': items = vnode\n break\n case 'v-tab-item': item.push(vnode)\n break\n // case 'v-tab' - intentionally omitted\n default: tab.push(vnode)\n }\n } else {\n tab.push(vnode)\n }\n }\n\n /**\n * tab: array of `v-tab`\n * slider: single `v-tabs-slider`\n * items: single `v-tabs-items`\n * item: array of `v-tab-item`\n */\n return { tab, slider, items, item }\n },\n },\n\n render (h): VNode {\n const { tab, slider, items, item } = this.parseNodes()\n\n return h('div', {\n staticClass: 'v-tabs',\n class: this.classes,\n directives: [{\n name: 'resize',\n modifiers: { quiet: true },\n value: this.onResize,\n }],\n }, [\n this.genBar(tab, slider),\n this.genItems(items, item),\n ])\n },\n})\n","import Vue from 'vue'\nimport { filterObjectOnKeys } from '../../util/helpers'\nimport { OptionsVue, VueConstructor } from 'vue/types/vue'\n\nconst availableProps = {\n absolute: Boolean,\n bottom: Boolean,\n fixed: Boolean,\n left: Boolean,\n right: Boolean,\n top: Boolean,\n}\ntype props = Record\n\nexport type Positionable = VueConstructor\n\nexport function factory (selected?: S[]): Positionable\nexport function factory (selected: undefined): OptionsVue\nexport function factory (selected: any[] = []): any {\n return Vue.extend({\n name: 'positionable',\n props: selected.length ? filterObjectOnKeys(availableProps, selected) : availableProps,\n })\n}\n\nexport default factory()\n\n// Add a `*` before the second `/`\n/* Tests /\nlet single = factory(['top']).extend({\n created () {\n this.top\n this.bottom\n this.absolute\n }\n})\n\nlet some = factory(['top', 'bottom']).extend({\n created () {\n this.top\n this.bottom\n this.absolute\n }\n})\n\nlet all = factory().extend({\n created () {\n this.top\n this.bottom\n this.absolute\n this.foobar\n }\n})\n/**/\n","import { displayTypes, fontEmphasis, Text } from \"@/design/text/Text\";\r\nimport {\r\n Color,\r\n colorMD,\r\n variantNumber,\r\n variantType\r\n} from \"@/design/colors/Color\";\r\n\r\n/**\r\n * title Class\r\n * @param {string} color material design color\r\n * @param {boolean} bold\r\n * @return {string} text class\r\n */\r\nconst titleClass = (color = colorMD.grey, bold = true) =>\r\n new Text(\r\n new Color(color, variantType.darken, variantNumber.n1),\r\n displayTypes.subtitle1,\r\n bold ? fontEmphasis.bold : fontEmphasis.regular\r\n ).getClassText();\r\n\r\nexport { titleClass };\r\n"],"sourceRoot":""}