1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["build/vue3/RepositoriesCells-CgL0d8So.js","build/vue3/index-DcY7R8-_.js","build/vue3/store-C-c52px1.js","build/vue3/vendor-misc-Bow5DPa_.js","build/vue3/vendor-dayjs-obnBCfXI.js","build/vue3/vendor-misc-CpXrOrr9.css","build/vue3/vendor-vue-zafmy1Eo.js","build/vue3/vendor-apexcharts-CrOqk0DB.js","build/vue3/vendor-lodash-es-D-s8Hyik.js","build/vue3/store-BWNv-sTh.css","build/vue3/vendor-quasar-wwnQ4koZ.js","build/vue3/[email protected]","build/vue3/index-Bi47xxLg.css","build/vue3/useScanProgress-DRl0q7UF.js","build/vue3/useUrl-Dzdw24ee.js","build/vue3/RepoLink-Cs2X6FW2.js","build/vue3/RepoLink-CcsD3BWZ.css","build/vue3/TableScanProgress-BPAZtDwT.js","build/vue3/BaseCircularProgress-BTEA-Jew.js","build/vue3/TableScanProgress-aGjMrZE6.css","build/vue3/VulnerabilityPriority-DMh9FXfR.js","build/vue3/ListIconVulnerability-VJQa-Rom.js","build/vue3/IconVulnerability-C-0ptlu6.js","build/vue3/IconVulnerability-KBJAakPe.css","build/vue3/VulnerabilityStatuses-CQpYjuRx.js","build/vue3/VulnerabilityStatus-DcPt45DP.js","build/vue3/VulnerabilityStatus-B0jN13dt.css","build/vue3/VulnerabilityStatuses-DeW_VzLX.css","build/vue3/TriggeringRulesSummary-DZ058LgY.js","build/vue3/LinkInbound-CZUhyjZr.js","build/vue3/LinkInbound-BgRTlB9C.css","build/vue3/PopupLinkListInbound-DeBv2yPv.js","build/vue3/PopupLinkListInbound-C1eGFoaf.css","build/vue3/TriggeringRulesSummary-CmdwO5Lx.css","build/vue3/RepositoriesCells-Be5HtTsn.css","build/vue3/VulnerabilitiesCells-DbtTwPuK.js","build/vue3/LicenseRisks-BnMyw0pl.js","build/vue3/useDataFormatting-FpM_6SY5.js","build/vue3/LicenseRisks-BbMMqNJO.css","build/vue3/ReachabilityAnalysis-CBnSGWwd.js","build/vue3/ExploitText-CFnPP8KD.js","build/vue3/ExploitText-D3odcGfK.css","build/vue3/VulnerabilityStatusText-BPpK1heW.js","build/vue3/useDateDistance-BJg3Ek6q.js","build/vue3/VulnerabilityStatusText-DzxBzn5r.css","build/vue3/HumanDate-Bz01HfU3.js","build/vue3/VulnerabilitiesCells-BB9hLQav.css","build/vue3/MalwareCells-BK37C1HA.js","build/vue3/MalwareCells--LXPI-1f.css","build/vue3/DependenciesCells-CG6esgbT.js","build/vue3/VersionStatusTooltip-Bhe2Iolu.js","build/vue3/VersionStatusTooltip-BimBwqKv.css","build/vue3/DependenciesCells-B3VN87hS.css"])))=>i.map(i=>d[i]); 2import{_ as I,R as F,g,p as z,t as S,w as K,aH as q,P as Y,m as C,aI as w,z as Q,b}from"./store-C-c52px1.js";import{g as j,R as O,n as J,c as Z,q as W,y as f,b as X}from"./index-DcY7R8-_.js";import"./vendor-quasar-wwnQ4koZ.js";import{A as $}from"./AddButton-D5kAiruV.js";import{a0 as a,o as p,d as c,a1 as u,b as d,a4 as l,$ as E,c as G,r as ee,_ as m,a3 as B,Z as te,a7 as re,a2 as oe,ae as se,a9 as ne,f as v}from"./vendor-misc-Bow5DPa_.js";import{m as D,u as y,f as M,d as P}from"./vendor-vue-zafmy1Eo.js";import{B as ae}from"./BaseHeader-BP4fdIvd.js";import{S as ie,T as ue}from"./TablePage-BAYMXGFB.js";import{D as pe}from"./DeleteConfirmationModal-CwyyVoxB.js";import{H as le}from"./HeaderTag-neMvUAHv.js";import{I as ce}from"./ItemTime-8tPbilSF.js";import{G as de,a as he,O as me}from"./GroupModal-CDR7Je5K.js";import{u as ge}from"./useDateDistance-BJg3Ek6q.js";import{u as _e}from"./useSuccess-D6SS0OMu.js";import"./vendor-dayjs-obnBCfXI.js";import"./vendor-lodash-es-D-s8Hyik.js";import"./[email protected]";import"./vendor-apexcharts-CrOqk0DB.js";import"./useScanProgress-DRl0q7UF.js";import"./TableWithTabs-o5hUyDc1.js";import"./index-8NKgtWak.js";import"./VulnerabilityStatus-DcPt45DP.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{};e.SENTRY_RELEASE={id:"70522bc38938e7bde7d7dcba336ae7b1d545a39d"};var t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="d9771d1c-1f1d-4dce-9d3a-60551f37bc66",e._sentryDebugIdIdentifier="sentry-dbid-d9771d1c-1f1d-4dce-9d3a-60551f37bc66")}catch{}})();const be={name:"GroupsAction",components:{RbacNoAccessTooltip:O,BaseButton:j},props:{group:{type:Object,default:()=>({})}},emits:["editGroup","deleteGroup"],data(){return{rbacActionEnum:F.manageRepoGroups}},computed:{...D({usersRepositories:"user/repositoriesArray"}),repositoryIds(){return this.usersRepositories?.map(e=>e.id)}},methods:{editGroup(){this.$emit("editGroup")},deleteGroup(){this.$emit("deleteGroup")}}},fe={class:"groups-action"};function Ge(e,t,s,i,r,o){const _=a("BaseButton"),R=a("RbacNoAccessTooltip");return p(),c(R,{class:"groups-action__no-edit-access-tooltip",currentActionName:r.rbacActionEnum,requiredAccessRepositoryIds:o.repositoryIds,forceNoAccess:s.group?.vulns===null,productPermissionJunction:"SOME"},{default:u(({hasAccess:h})=>[d("div",fe,[l(_,{"aria-label":"Edit group",round:"",ghost:"",icon:"u-pen",iconSize:"16",color:"font-secondary",roundHoverBgColor:"var(--c-light-black)",disabled:!h,class:E(["groups-action__actions-icon",{"groups-action__actions-icon--disabled":!h}]),onClick:o.editGroup},null,8,["disabled","class","onClick"]),l(_,{"aria-label":"Delete group",round:"",ghost:"",icon:"u-trash-alt",iconSize:"16",color:"font-secondary",roundHoverBgColor:"var(--c-light-black)",disabled:!h,class:E(["groups-action__actions-icon",{"groups-action__actions-icon--disabled":!h}]),onClick:o.deleteGroup},null,8,["disabled","class","onClick"])])]),_:1},8,["currentActionName","requiredAccessRepositoryIds","forceNoAccess"])}const ve=I(be,[["render",Ge]]),Re=["Repositories","Vulnerabilities","Malware","Depen
2dencies"],Se=40,ye=100,Ee=500,De={name:"GroupsView",components:{HeaderTag:le,BaseDropdown:W,TablePage:ue,Onboarding:me,BaseTooltip:Z,AddButton:$,GroupModal:he,GroupCardList:de,BaseHeader:ae,Icon:J,ScanProgressDescription:ie,ItemTime:ce,RbacNoAccessTooltip:O,RepositoriesCells:v(()=>b(()=>import("./RepositoriesCells-CgL0d8So.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34]))),VulnerabilitiesCells:v(()=>b(()=>import("./VulnerabilitiesCells-DbtTwPuK.js"),__vite__mapDeps([35,10,3,4,5,1,2,6,7,8,9,11,12,36,37,38,39,15,16,40,41,24,25,26,27,42,43,44,45,22,23,46]))),MalwareCells:v(()=>b(()=>import("./MalwareCells-BK37C1HA.js").then(e=>e.a),__vite__mapDeps([47,10,3,4,5,1,2,6,7,8,9,11,12,15,16,24,25,26,27,42,43,44,45,22,23,48]))),DependenciesCells:v(()=>b(()=>import("./DependenciesCells-CG6esgbT.js"),__vite__mapDeps([49,10,3,4,5,6,7,1,2,8,9,11,12,50,51,37,15,16,20,21,22,23,24,25,26,27,28,29,30,31,32,33,52]))),GroupsAction:ve,DeleteConfirmationModal:pe},setup(){const{notifySuccess:e}=_e(),{notifyError:t}=X();return{notifySuccess:e,notifyError:t}},data(){const{humanDate:e}=ge();return{tableView:"repositories-"+y.v4(),tableRoute:"app.service.groups.tabsAndTitle",routeArgs:{group:this.$route.params.id},modalOpen:!1,noRepos:null,noSearchMatches:!1,onboardingModalOpen:!1,hoverMenu:!1,menu:!1,newGroupModalOpen:!1,refreshKey:y.v4(),groups:[],groupDetail:null,editingGroup:!1,groupBeingEdited:null,breadcrumbsRetriesCount:0,latestScan:{date:null,commitUrl:null},humanDate:e,dialog:!1,activeGroup:{},hoverTimeout:null}},computed:{...P("repositories",["hasRepositoriesResponse"]),...P("page",["customBreadcrumbs"]),...D("repositories",["hasGithubRepositories"]),...D(["currentTab"]),currentGroupId(){return this.$route.params.id},currentLocale(){return this.$route.params.locale},groupPath(){return this.$route.query.groupPath},shouldShowScanProgress(){return this.latestScan?.date&&this.latestScan?.commitUrl},hasGroups(){return this.groups.length>0},addRepositoryLink(){const e=new URL(window.location.href),t=this.hasGithubRepositories?"scan":"integrate";return e.searchParams.set("onboardingPage",t),e.toString()},tableCellsComponent(){const e=Number(this.currentTab)||0;return Re[e]+"Cells"},integrationsLink(){return Q.docs.integration.more},hasOnboardingQueryParam(){return this.hasQueryParam("onboardingPage=")},dropdownItems(){return[{name:this.translate("app.table.group_text"),action:this.openNewGroupModal,icon:"m-folder",divide:!0},{name:this.translate("app.table.repo_text"),action:this.openOnboardingModal,icon:"m-ad
2d",link:this.addRepositoryLink}]},headerMetaItems(){return{created:{type:this.translate("app.group.created"),date:this.groupDetail?.created_at},updated:{type:this.translate("app.group.updated"),date:this.groupDetail?.updated_at}}},fontSize(){const e=this.groupDetail?.vulns||0;return e>=1e3?"24px":e>=100?"32px":"36px"},getCurrentGroup(){return f.repositoryGroups?.find(e=>Number(e.value)===Number(this.currentGroupId))},deleteDialogDescription(){return[this.translate("app.group.delete.paragraph",{name:this.groupDetail?.name})]}},watch:{hoverMenu(e){this.clearHoverTimeout(),this.hoverTimeout=setTimeout(()=>{this.hoverMenu===e&&(this.menu=e)},ye)}},async created(){await this.initializeComponent()},mounted(){C.$on(w,this.onEditGroup)},beforeUnmount(){C.$off(w,this.onEditGroup),this.clearHoverTimeout()},beforeMount(){this.setupPageConfiguration()},methods:{...M("page",["SET_TITLE","SET_CUSTOM_BREADCRUMBS"]),...M("repositories",["SET_HAS_REPOSITORIES_RESPONSE"]),async initializeComponent(){try{await this.fetchLatestScan()}catch(e){console.error("Failed to initialize component:",e)}},setupPageConfiguration(){this.fetchHasGithubRepositories(),this.setPageTitle(),this.getCurrentGroups(),this.setBreadcrumbs()},setPageTitle(){const e=`${this.translate("app.page.title")} | ${Y}`;this.SET_TITLE(e)},clearHoverTimeout(){this.hoverTimeout&&(clearTimeout(this.hoverTimeout),this.hoverTimeout=null)},async fetchHasGithubRepositories(){if(!this.hasRepositoriesResponse)try{const e=await q();this.SET_HAS_REPOSITORIES_RESPONSE(e)}catch(e){console.error("Failed to fetch GitHub repositories:",e)}},toggleDeleteDialog(){this.dialog=!this.dialog},toggleMenu(){this.menu=!this.menu},handleMenuEvent(e){this.menu=e},handleHoverMenu(e){this.hoverMenu=e},setBreadcrumbs(){if(!f.repositoryGroupsHasBeenFetched){this.retrySetBreadcrumbs();return}const e=this.buildBreadcrumbs();this.SET_CUSTOM_BREADCRUMBS(e)},retrySetBreadcrumbs(){if(this.breadcrumbsRetriesCount>=Se){console.error("Failed to set breadcrumbs: Repository groups data is not available after multiple retries.");return}this.breadcrumbsRetriesCount++,setTimeout(()=>{this.setBreadcrumbs()},Ee)},buildBreadcrumbs(){const e=[{link:`/app/${this.currentLocale}/repositories`,text:this.translate("app.repositories")}],t=this.groupPath?this.buildBreadcrumbsFromPath(this.groupPath):[this.createTopLevelBreadcrumb()];return e.push(...t.filter(Boolean)),e},buildBreadcrumbsFromPath(e){const t=f.repositoryGroups,s=this.parseGroupPathIds(e);return s.map((i,r)=>{const o=this.findGroupById(t,i);return o?this.createBreadcrumbForGroup(o,s,r):(console.error(`Group with ID ${i} from groupPath not found.`),null)})},parseGroupPathIds(e){return e.split(",").filter(t=>!!t)},findGroupById(e,t){return e?.find(s=>Number(s.value)===Number(t))},createBreadcrumbForGroup(e,t,s){const i=s===t.length-1,r=this.getBreadcrumbText(e,i),o=t.slice(0,s+1).join(",");return{link:i?null:`/app/${this.currentLocale}/groups/browse/${e.value}?groupPath=${o},`,text:r}},getBreadcrumbText(e,t){return t&&this.groupDetail?.name?this.groupDetail.name:e.label},createTopLevelBreadcrumb(){const e=this.findGroupById(f.repositoryGroups,this.currentGroupId);return e?{link:null,text:this.groupDetail?.name||e.label}:(console.error(`Could not find the current group with ID: ${this.currentGroupId}`),null)},hasQueryParam(e){const t=window.location.href.split("&");return t.length>1&&t[1]?.includes(e)},openOnboardingModal(){K("add_repository_button","click")},updateTableRefreshKey(){this.refreshKey=y.v4()},getCurrentGroups(){const e=g("app.service.groups.get_groups",{current:this.currentGroupId,groupPath:this.groupPath});S(e,t=>{this.groups=t.groups||[],this.getCurrentGroupsDetails(),this.updateTableRefreshKey()},t=>{console.error("Failed to get current groups:",t)})},async fetchLatestScan(){try{const e=g("app.service.scan.get_latest_scan");S(e,t=>{this.latestScan=t.latestScan||{date:null,commitUrl:null}},t=>{console.error("Failed to fetch latest scan:",t)})}catch(e){console.error("Error in fetchLatestScan:",e)}},openNewGroupModal(){this.resetGroupModalState(),this.newGroupModalOpen=!0},openEditGroupModal(e){this.groupBeingEdited=e||this.groupDetail,this.editingGroup=!0,this.newGroupModalOpen=!0},resetGroupModalState(){this.editingGroup=!1,this.groupBeingEdited=null},getCurrentGroupsDetails(){const{parentGroupPath:e,currentGroupDepth:t}=this.parseCurrentGroupPath(),s=g("app.service.groups.get_groups",{current:t,groupPath:e});S(s,i=>
2{this.handleGetGroupDetailsSuccess(i)},i=>{console.error("Failed to get group details:",i)})},parseCurrentGroupPath(){const e=this.groupPath||"",t=e.split(",");t.splice(-1,1);const s=t.length-2,i=t[s]||"/";return{parentGroupPath:e.slice(0,-2)||"",currentGroupDepth:i}},handleGetGroupDetailsSuccess(e){this.groupDetail=e.groups?.find(t=>t.id===Number(this.currentGroupId))||null,this.setBreadcrumbs()},deleteGroup(){const e={group:this.groupDetail.id,parent:this.getParentForDeletion()};z(g("app.service.groups.delete_group"),e,this.handleDeleteSuccess,t=>{this.notifyError(t)})},getParentForDeletion(){return this.$route.name==="Groups"&&this.currentGroupId?this.currentGroupId:"/"},handleDeleteSuccess(e){this.notifySuccess(e.message),this.getCurrentGroups(),this.redirectToRepositories()},redirectToRepositories(){const e=g("app.service.repositories");window.location.replace(e)},onEditGroup(){const e=this.getCurrentGroup;if(!e){console.error("Current group not found for editing");return}this.openEditGroupModal({id:e.value,name:e.label})}}},Te={class:"groups-view"},Ce={class:"groups-view__icon-container"},we={key:0,class:"groups-view__simple-text groups-view__simple-text--bottom"},Be={class:"groups-view__simple-text groups-view__simple-text--bottom"},Me={key:2};function Pe(e,t,s,i,r,o){const _=a("ItemTime"),R=a("GroupsAction"),h=a("Icon"),A=a("BaseHeader"),k=a("GroupCardList"),L=a("AddButton"),N=a("BaseDropdown"),T=a("BaseTooltip"),H=a("TablePage"),U=a("Onboarding"),x=a("GroupModal"),V=a("DeleteConfirmationModal");return p(),G("div",Te,[(p(),c(H,{key:r.refreshKey,noRepos:r.noRepos,noSearchMatches:r.noSearchMatches,tableView:r.tableView,tableRoute:r.tableRoute,showHeader:!1,routeArgs:r.routeArgs,showScanProgressDescription:!0,"onUpdate:noRepos":t[0]||(t[0]=n=>r.noRepos=n),"onUpdate:noSearchMatches":t[1]||(t[1]=n=>r.noSearchMatches=n)},{"between-title-and-table":u(()=>[l(A,{class:E(["groups-view__header",{"groups-view__margin":o.hasGroups}]),title:r.groupDetail?.name,subTitle:"Group",showEndDivider:!1},{others:u(()=>[(p(!0),G(oe,null,se(o.headerMetaItems,n=>(p(),c(_,ne({key:n.type},{ref_for:!0},n),null,16))),128))]),actions:u(()=>[l(R,{onEditGroup:o.openEditGroupModal,onDeleteGroup:o.toggleDeleteDialog},null,8,["onEditGroup","onDeleteGroup"])]),"end-of-header":u(()=>[d("div",{class:"groups-view__vulns-container",style:te({fontSize:o.fontSize})},[re(m(r.groupDetail?.vulns)+" ",1),d("div",Ce,[l(h,{class:"groups-view__bug-icon",name:"m-bug_report"})])],4)]),_:1},8,["class","title"])]),"groups-section":u(()=>[o.hasGroups?(p(),c(k,{key:0,class:"groups-view__cards",groups:r.groups,onUpdateGroups:o.getCurrentGroups,onEditGroup:o.openEditGroupModal},null,8,["groups","onUpdateGroups","onEditGroup"])):B("",!0)]),"top-right":u(()=>[l(T,{size:"xs",prevent:r.menu},{trigger:u(()=>[d("div",null,[l(L,{class:"add-repository",type:"button",onClick:o.toggleMenu},null,8,["onClick"]),o.dropdownItems?(p(),c(N,{key:0,menuOpen:r.menu,"font-weight":600,listItems:o.dropdownItems,noParentEvent:"",onMenuEvent:o.handleMenuEvent,onHover:o.handleHoverMenu},null,8,["menuOpen","listItems","onMenuEvent","onHover"])):B("",!0)])]),default:u(()=>[d("div",null,m(e.translate("app.table.add_repo_or_group")),1)]),_:1},8,["prevent"])]),"no-data":u(()=>[r.noSearchMatches?(p(),G("div",we,m(e.translate("app.table.repositories.no_search_matches")),1)):r.noRepos?(p(),c(T,{key:1},{trigger:u(()=>[d("div",Be,m(e.translate("app.table.no_repos_show")),1)]),default:u(()=>[d("div",null,m(e.translate("app.table.scan_try_updating")),1)]),_:1})):(p(),G("div",Me,m(e.translate("app.table.loading")),1))]),cells:u(({props:n})=>[(p(),c(ee(o.tableCellsComponent),{props:n},null,8,["props"]))]),_:1},8,["noRepos","noSearchMatches","tableView","tableRoute","routeArgs"])),l(U,{modalOpen:r.onboardingModalOpen,onStartedScan:o.updateTableRefreshKey,"onUpdate:modalOpen":t[2]||(t[2]=n=>r.onboardingModalOpen=n)},null,8,["modalOpen","onStartedScan"]),l(x,{modalOpen:r.newGroupModalOpen,editing:r.editingGroup,group:r.groupBeingEdited,onUpdateGroups:o.getCurrentGroups,"onUpdate:modalOpen":t[3]||(t[3]=n=>r.newGroupModalOpen=n)},null,8,["modalOpen","editing","group","onUpdateGroups"]),l(V,{isOpen:r.dialog,title:e.translate("app.table.group_card.delete"),description:o.deleteDialogDescription,onConfirm:o.deleteGroup,"onUpdate:isOpen":t[4]||(t[4]=n=>r.dialog=n)},null,8,["isOpen","title","description","onConfirm"])])}const et=I(De,[["render",Pe]]);export{et as default}; 3//# sourceMappingURL=GroupsView-B6KwgOqK.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.