@rzyuan/hrbac-share 0.1.7 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"share-state.d.ts","sourceRoot":"","sources":["../../src/core/share-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EAEpB,uBAAuB,EACvB,oBAAoB,EAErB,MAAM,UAAU,CAAA;AAQjB,MAAM,WAAW,4BAA4B;IAC3C,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,4BAA4B,EAAE,CAAA;CAC1C;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,CAErE;AAED,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,uBAAuB,EAAE,EACrC,WAAW,EAAE,oBAAoB,EAAE,GAClC,uBAAuB,EAAE,CAG3B;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,oBAAoB,EAAE,GAAG,oBAAoB,EAAE,CAUhG;AAED,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,uBAAuB,EAAE,EACrC,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,GAC3B,4BAA4B,EAAE,CAEhC"}
1
+ {"version":3,"file":"share-state.d.ts","sourceRoot":"","sources":["../../src/core/share-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EAEpB,uBAAuB,EACvB,oBAAoB,EAErB,MAAM,UAAU,CAAA;AAQjB,MAAM,WAAW,4BAA4B;IAC3C,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,4BAA4B,EAAE,CAAA;CAC1C;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,CAErE;AAED,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,uBAAuB,EAAE,EACrC,WAAW,EAAE,oBAAoB,EAAE,GAClC,uBAAuB,EAAE,CAG3B;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,oBAAoB,EAAE,GAAG,oBAAoB,EAAE,CAOhG;AAED,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,uBAAuB,EAAE,EACrC,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,GAC3B,4BAA4B,EAAE,CAEhC"}
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),m=require("element-plus"),L=require("@element-plus/icons-vue"),ae={SPACE:1,LINE:2,USER:3};function A(r){return`${r.subjectType}:${r.subjectId}`}function le(r,d){const l=new Set(d.map(A));return r.filter(c=>!l.has(A(c)))}function G(r){return[...r].sort((d,l)=>{if(d.role==="OWNER"&&l.role!=="OWNER")return-1;if(d.role!=="OWNER"&&l.role==="OWNER")return 1;const c=ae[d.subjectType]-ae[l.subjectType];return c!==0?c:d.subjectName.localeCompare(l.subjectName,"zh-CN")})}function re(r,d){return r.map(l=>se(l,d))}function se(r,d){var b;const l=(b=r.children)==null?void 0:b.map(N=>se(N,d)),c=!!(l!=null&&l.length),y=r.subjectType==="LINE"&&d.has(r.subjectId);return{value:r.subjectId,label:r.subjectName,disabled:c?!1:!!(r.disabled||y),isAdded:y,children:l}}const Re={class:"code-repository-share__header"},Be={class:"code-repository-share__header-main"},Ie={class:"code-repository-share__header-title"},Oe={class:"code-repository-share__header-subtitle"},Ae={class:"code-repository-share"},De={class:"code-repository-share__section"},Pe={class:"code-repository-share__section-head"},Le={class:"code-repository-share__section-label"},Me={class:"code-repository-share__add-row"},Ue={class:"code-repository-share__compound-field"},We={class:"code-repository-share__compound-left"},ze={class:"code-repository-share__empty"},Ke={class:"code-repository-share__candidate-name"},$e={key:0,class:"code-repository-share__candidate-status"},Fe={class:"code-repository-share__candidate-name"},Ge={key:0,class:"code-repository-share__candidate-status"},He={class:"code-repository-share__compound-right"},qe={class:"code-repository-share__collaborator-section"},Je={class:"code-repository-share__collaborator-title"},Ye={class:"code-repository-share__collaborator-list"},Qe={class:"code-repository-share__collaborator-list-inner"},Xe={class:"code-repository-share__collaborator-info"},Ze={class:"code-repository-share__collaborator-name-line"},et={class:"code-repository-share__collaborator-name"},tt={key:1,class:"code-repository-share__empty-state"},ot={class:"code-repository-share__dialog-header"},at={class:"code-repository-share__dialog-header-main"},lt={class:"code-repository-share__dialog-title"},rt={class:"code-repository-share__dialog-description"},st={class:"code-repository-share__dialog-footer"},nt={class:"code-repository-share__dialog-header"},dt={class:"code-repository-share__dialog-header-main"},ct={class:"code-repository-share__dialog-title"},it={class:"code-repository-share__dialog-description"},ut={class:"code-repository-share__dialog-description-target"},pt={class:"code-repository-share__transfer-content"},vt={class:"code-repository-share__transfer-option"},_t={class:"code-repository-share__transfer-option"},yt={class:"code-repository-share__dialog-footer"},ft="__remove__",mt="__transfer__",bt="__divider__",ht=e.defineComponent({__name:"HrbacShareDrawer",props:{modelValue:{type:Boolean},resource:{},adapter:{},readonly:{type:Boolean,default:!1},drawerSize:{default:"760px"},labels:{},subjectTypeOptions:{},roleOptions:{},allowTransferOwner:{type:Boolean,default:!0}},emits:["update:modelValue","saved"],setup(r,{emit:d}){const l=r,c=d,y={title:"分享设置",addSectionTitle:"添加方式",collaboratorTitle:"管理协作者",readonlyTip:"当前仅可查看协作者,暂无修改分享设置权限",emptyCollaborators:"暂无协作者",removeTitle:"确认移除协作者?",removeDescription:"移除后,该对象将无法继续访问资源:",transferTitle:"转移所有权",transferDescription:"转移后,新的所有者为:"},b=[{label:"按用户",value:"USER"},{label:"按条线",value:"LINE"},{label:"按空间",value:"SPACE"}],N=[{label:"可管理",value:"MANAGER"},{label:"可编辑",value:"EDITOR"},{label:"可查看",value:"VIEWER"}],E=e.ref(!1),n=e.ref(!1),T=e.ref(!1),v=e.ref("USER"),_=e.ref([]),h=e.ref([]),S=e.ref(0),x=e.ref("VIEWER"),C=e.ref([]),R=e.ref([]),u=e.ref(""),f=e.ref(!1),k=e.ref(!1),p=e.ref(null),D=e.ref("MANAGER"),B=e.ref("KEEP"),ne={multiple:!0,emitPath:!0,checkStrictly:!1,value:"value",label:"label",children:"children",expandTrigger:"hover"},w=e.computed(()=>({...y,...l.labels})),M=e.computed(()=>{var o;return(o=l.subjectTypeOptions)!=null&&o.length?l.subjectTypeOptions:b}),H=e.computed(()=>{var o;return(o=l.roleOptions)!=null&&o.length?l.roleOptions.map(t=>({...t,label:t.label||z(t.value)})):N}),q=e.computed(()=>H.value.filter(o=>o.value!=="OWNER")),de=e.computed(()=>{const o=[...q.value];return o.some(t=>t.value==="MANAGER")||o.unshift({label:z("MANAGER"),value:"MANAGER"}),o}),J=e.computed(()=>G(C.value)),ce=e.computed(()=>new Set(C.value.map(A))),ie=e.computed(()=>new Set(C.value.filter(o=>o.subjectType==="LINE").map(o=>o.subjectId))),ue=e.computed(()=>R.value.map(o=>({...o,disabled:o.disabled||ce.value.has(A(o))}))),pe=e.computed(()=>re(R.value,ie.value)),U=e.computed(()=>v.value==="LINE"?Array.from(new Set(h.value.map(o=>o[o.length-1]).filter(Boolean))):Array.from(new Set(_.value.filter(Boolean)))),ve=e.computed(()=>v.value==="USER"?"搜索用户":v.value==="LINE"?"搜索条线":"搜索空间"),W=e.computed(()=>{const o=u.value.trim().toLowerCase();return o?J.value.filter(t=>{var s;return t.subjectName.toLowerCase().includes(o)||t.subjectId.toLowerCase().includes(o)||((s=t.description)==null?void 0:s.toLowerCase().includes(o))}):J.value});e.watch(()=>l.modelValue,o=>{o&&(I(),O(""))},{immediate:!0}),e.watch(M,o=>{var t;o.some(s=>s.value===v.value)||(v.value=((t=o[0])==null?void 0:t.value)||"USER")},{immediate:!0});function Y(){c("update:modelValue",!1)}async function I(){E.value=!0;try{C.value=await l.adapter.listPermissions(l.resource.id)}catch(o){m.ElMessage.error(j(o,"协作者加载失败"))}finally{E.value=!1}}async function O(o){T.value=!0;try{R.value=await l.adapter.searchSubjects({subjectType:v.value,keyword:o,resourceId:l.resource.id})}catch(t){m.ElMessage.error(j(t,"候选对象加载失败"))}finally{T.value=!1}}function _e(){_.value=[],h.value=[],S.value+=1,O("")}async function ye(){if(U.value.length){n.value=!0;try{await Promise.all(U.value.map(o=>l.adapter.grantPermission({resourceId:l.resource.id,subjectType:v.value,subjectId:o,role:x.value}))),_.value=[],h.value=[],S.value+=1,m.ElMessage.success("协作者已添加"),c("saved"),await I(),await O("")}catch(o){m.ElMessage.error(j(o,"协作者添加失败"))}finally{n.value=!1}}}async function fe(o,t){if(t===ft){p.value=o,f.value=!0;return}if(t===mt){p.value=o,B.value="KEEP",D.value="MANAGER",k.value=!0;return}if(t!==bt&&!(t==="OWNER"||t===o.role)){n.value=!0;try{await l.adapter.updatePermissionRole({resourceId:l.resource.id,subjectType:o.subjectType,subjectId:o.subjectId,role:t}),m.ElMessage.success("权限已更新"),c("saved"),await I()}catch(s){m.ElMessage.error(j(s,"权限更新失败"))}finally{n.value=!1}}}function me(o,t){typeof t=="string"&&fe(o,t)}async function be(){if(p.value){n.value=!0;try{await l.adapter.revokePermission({resourceId:l.resource.id,subjectType:p.value.subjectType,subjectId:p.value.subjectId}),f.value=!1,p.value=null,m.ElMessage.success("协作者已移除"),c("saved"),await I(),await O("")}catch(o){m.ElMessage.error(j(o,"协作者移除失败"))}finally{n.value=!1}}}async function he(){if(!(!p.value||!l.adapter.transferOwner)){n.value=!0;try{await l.adapter.transferOwner({resourceId:l.resource.id,subjectType:p.value.subjectType,subjectId:p.value.subjectId,previousOwnerRole:B.value==="REMOVE"?void 0:D.value}),k.value=!1,p.value=null,m.ElMessage.success("所有权已转移"),c("saved"),await I()}catch(o){m.ElMessage.error(j(o,"所有权转移失败"))}finally{n.value=!1}}}function Q(o){var t;return((t=M.value.find(s=>s.value===o))==null?void 0:t.label.replace(/^按/,""))||o}function Ee(o){if(o.role==="OWNER")return[{label:"所有者",value:"OWNER",disabled:!0}];const t=H.value.filter(s=>s.value!=="OWNER");return t.some(s=>s.value===o.role)?t:[{label:z(o.role),value:o.role},...t]}function z(o){var t;return((t=N.find(s=>s.value===o))==null?void 0:t.label)||o}function Ve(o){return l.readonly||n.value||o.readonly===!0||o.role==="OWNER"}function Ne(o){return Ve(o)&&!K(o)&&!$(o)}function K(o){return!l.readonly&&!o.readonly&&o.role!=="OWNER"}function $(o){return l.allowTransferOwner&&!!l.adapter.transferOwner&&!l.readonly&&!o.readonly&&o.subjectType==="USER"&&o.role!=="OWNER"}function we(o){return K(o)||$(o)}function ge(o){return o==="USER"?"code-repository-share__type-tag--user":o==="SPACE"?"code-repository-share__type-tag--space":"code-repository-share__type-tag--line"}function Ce(o,t){const s=t.trim().toLowerCase();if(!s)return!0;const i=o.data,F=Array.isArray(o.pathLabels)?o.pathLabels:[];return[o.text,i==null?void 0:i.label,i==null?void 0:i.value,...F].filter(Boolean).join(" ").toLowerCase().includes(s)}function j(o,t){return o instanceof Error&&o.message?o.message:t}return(o,t)=>{const s=e.resolveComponent("el-icon"),i=e.resolveComponent("el-button"),F=e.resolveComponent("el-alert"),X=e.resolveComponent("el-radio-button"),Z=e.resolveComponent("el-radio-group"),ee=e.resolveComponent("el-tooltip"),g=e.resolveComponent("el-option"),P=e.resolveComponent("el-select"),ke=e.resolveComponent("el-cascader"),je=e.resolveComponent("el-input"),Te=e.resolveComponent("el-empty"),te=e.resolveComponent("el-dialog"),oe=e.resolveComponent("el-radio"),Se=e.resolveComponent("el-drawer"),xe=e.resolveDirective("loading");return e.openBlock(),e.createBlock(Se,{"model-value":r.modelValue,size:r.drawerSize,class:"code-repository-share-drawer","destroy-on-close":"","show-close":!1,onClose:Y},{header:e.withCtx(()=>[e.createElementVNode("div",Re,[e.createElementVNode("div",Be,[e.createElementVNode("div",Ie,e.toDisplayString(w.value.title),1),e.createElementVNode("div",Oe,[t[13]||(t[13]=e.createTextVNode(" 正在分享:",-1)),e.createElementVNode("span",null,e.toDisplayString(r.resource.name||"--"),1)])]),e.createVNode(i,{link:"",class:"code-repository-share__close-button","aria-label":"关闭分享抽屉",onClick:Y},{default:e.withCtx(()=>[e.createVNode(s,{size:16},{default:e.withCtx(()=>[e.createVNode(e.unref(L.Close))]),_:1})]),_:1})])]),default:e.withCtx(()=>[e.withDirectives((e.openBlock(),e.createElementBlock("div",Ae,[r.readonly?(e.openBlock(),e.createBlock(F,{key:0,title:w.value.readonlyTip,type:"info","show-icon":"",closable:!1,class:"code-repository-share__alert"},null,8,["title"])):e.createCommentVNode("",!0),e.createElementVNode("section",De,[e.createElementVNode("div",Pe,[e.createElementVNode("span",Le,e.toDisplayString(w.value.addSectionTitle),1),e.createVNode(Z,{modelValue:v.value,"onUpdate:modelValue":t[0]||(t[0]=a=>v.value=a),class:"code-repository-share__method-radio",disabled:r.readonly||n.value,onChange:_e},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(M.value,a=>(e.openBlock(),e.createBlock(X,{key:a.value,value:a.value},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(a.label),1)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue","disabled"])]),e.createElementVNode("div",Me,[e.createElementVNode("div",Ue,[e.createElementVNode("div",We,[v.value!=="LINE"?(e.openBlock(),e.createBlock(P,{key:0,modelValue:_.value,"onUpdate:modelValue":t[1]||(t[1]=a=>_.value=a),multiple:"",filterable:"",remote:"",clearable:"","collapse-tags":"","collapse-tags-tooltip":"","remote-method":O,loading:T.value,disabled:r.readonly||n.value,placeholder:ve.value,"reserve-keyword":!1,class:"code-repository-share__candidate-select"},{empty:e.withCtx(()=>[e.createElementVNode("div",ze,"暂无匹配"+e.toDisplayString(Q(v.value)),1)]),default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(ue.value,a=>(e.openBlock(),e.createBlock(g,{key:`${a.subjectType}:${a.subjectId}`,label:a.subjectName,value:a.subjectId,disabled:a.disabled},{default:e.withCtx(()=>[e.createVNode(ee,{disabled:!a.disabled,content:"已添加为协作者",placement:"right"},{default:e.withCtx(()=>[e.createElementVNode("div",{class:e.normalizeClass(["code-repository-share__candidate-option",{"is-added":a.disabled}])},[e.createElementVNode("span",Ke,e.toDisplayString(a.subjectName),1),a.disabled?(e.openBlock(),e.createElementBlock("span",$e," 已添加 ")):e.createCommentVNode("",!0)],2)]),_:2},1032,["disabled"])]),_:2},1032,["label","value","disabled"]))),128))]),_:1},8,["modelValue","loading","disabled","placeholder"])):(e.openBlock(),e.createBlock(ke,{key:S.value,modelValue:h.value,"onUpdate:modelValue":t[2]||(t[2]=a=>h.value=a),class:"code-repository-share__candidate-select code-repository-share__line-cascader add-member-line-cascader",style:{width:"100%"},placeholder:"请选择条线",options:pe.value,props:ne,disabled:r.readonly||n.value,filterable:"","filter-method":Ce,clearable:"","collapse-tags":"","collapse-tags-tooltip":"","show-all-levels":!0},{default:e.withCtx(({data:a})=>[e.createVNode(ee,{disabled:!a.isAdded,content:"已添加为协作者",placement:"right"},{default:e.withCtx(()=>[e.createElementVNode("div",{class:e.normalizeClass(["code-repository-share__candidate-option",{"is-added":a.isAdded}])},[e.createElementVNode("span",Fe,e.toDisplayString(a.label),1),a.isAdded?(e.openBlock(),e.createElementBlock("span",Ge," 已添加 ")):e.createCommentVNode("",!0)],2)]),_:2},1032,["disabled"])]),_:1},8,["modelValue","options","disabled"]))]),e.createElementVNode("div",He,[e.createVNode(P,{modelValue:x.value,"onUpdate:modelValue":t[3]||(t[3]=a=>x.value=a),disabled:r.readonly||n.value,class:"code-repository-share__add-role-select"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(q.value,a=>(e.openBlock(),e.createBlock(g,{key:a.value,label:a.label,value:a.value,disabled:a.disabled},null,8,["label","value","disabled"]))),128))]),_:1},8,["modelValue","disabled"])])]),e.createVNode(i,{type:"primary",class:"code-repository-share__add-button",loading:n.value,disabled:r.readonly||!U.value.length,onClick:ye},{default:e.withCtx(()=>[...t[14]||(t[14]=[e.createTextVNode(" 添加 ",-1)])]),_:1},8,["loading","disabled"])])]),e.createElementVNode("section",qe,[e.createElementVNode("div",Je,[e.createTextVNode(e.toDisplayString(w.value.collaboratorTitle)+" ",1),e.createElementVNode("span",null,"("+e.toDisplayString(W.value.length)+")",1)]),e.createVNode(je,{modelValue:u.value,"onUpdate:modelValue":t[4]||(t[4]=a=>u.value=a),modelModifiers:{trim:!0},clearable:"",class:"code-repository-share__collaborator-search",placeholder:"搜索空间名称、条线名称、用户姓名或账号"},{prefix:e.withCtx(()=>[e.createVNode(s,null,{default:e.withCtx(()=>[e.createVNode(e.unref(L.Search))]),_:1})]),_:1},8,["modelValue"]),e.createElementVNode("div",Ye,[W.value.length?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",Qe,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(W.value,a=>(e.openBlock(),e.createElementBlock("div",{key:`${a.subjectType}:${a.subjectId}`,class:"code-repository-share__collaborator-row"},[e.createElementVNode("div",Xe,[e.createElementVNode("div",Ze,[e.createElementVNode("span",{class:e.normalizeClass(["code-repository-share__type-tag",ge(a.subjectType)])},e.toDisplayString(Q(a.subjectType)||"--"),3),e.createElementVNode("span",et,e.toDisplayString(a.subjectName||"--"),1)])]),e.createVNode(P,{"model-value":a.role,size:"small",class:"code-repository-share__row-role-select","popper-class":"code-repository-share__role-dropdown",disabled:Ne(a),onChange:V=>me(a,V)},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Ee(a),V=>(e.openBlock(),e.createBlock(g,{key:V.value,label:V.label,value:V.value,disabled:V.disabled},null,8,["label","value","disabled"]))),128)),we(a)?(e.openBlock(),e.createBlock(g,{key:0,disabled:"",value:"__divider__"},{default:e.withCtx(()=>[...t[15]||(t[15]=[e.createElementVNode("div",{class:"code-repository-share__role-divider"},null,-1)])]),_:1})):e.createCommentVNode("",!0),$(a)?(e.openBlock(),e.createBlock(g,{key:1,label:"转移所有权",value:"__transfer__"})):e.createCommentVNode("",!0),K(a)?(e.openBlock(),e.createBlock(g,{key:2,label:"移除",value:"__remove__"},{default:e.withCtx(()=>[...t[16]||(t[16]=[e.createElementVNode("span",{class:"code-repository-share__danger-option"},"移除",-1)])]),_:1})):e.createCommentVNode("",!0)]),_:2},1032,["model-value","disabled","onChange"])]))),128))]),t[17]||(t[17]=e.createElementVNode("div",{class:"code-repository-share__collaborator-footer"},"已显示全部协作者",-1))],64)):(e.openBlock(),e.createElementBlock("div",tt,[e.createVNode(Te,{description:w.value.emptyCollaborators,"image-size":72},null,8,["description"])]))])])])),[[xe,E.value]]),e.createVNode(te,{modelValue:f.value,"onUpdate:modelValue":t[7]||(t[7]=a=>f.value=a),width:"460px",class:"code-repository-share__remove-dialog","destroy-on-close":"","show-close":!1,"append-to-body":""},{header:e.withCtx(()=>{var a;return[e.createElementVNode("div",ot,[e.createElementVNode("div",at,[e.createElementVNode("div",lt,e.toDisplayString(w.value.removeTitle),1),e.createElementVNode("div",rt," 移除后,"+e.toDisplayString(((a=p.value)==null?void 0:a.subjectName)||"--")+" 将失去当前资源的协作权限。 ",1)]),e.createVNode(i,{link:"",class:"code-repository-share__close-button","aria-label":"关闭移除确认",onClick:t[5]||(t[5]=V=>f.value=!1)},{default:e.withCtx(()=>[e.createVNode(s,{size:16},{default:e.withCtx(()=>[e.createVNode(e.unref(L.Close))]),_:1})]),_:1})])]}),footer:e.withCtx(()=>[e.createElementVNode("div",st,[e.createVNode(i,{onClick:t[6]||(t[6]=a=>f.value=!1)},{default:e.withCtx(()=>[...t[18]||(t[18]=[e.createTextVNode("取消",-1)])]),_:1}),e.createVNode(i,{type:"primary",class:"code-repository-share__danger-button",disabled:!p.value,loading:n.value,onClick:be},{default:e.withCtx(()=>[...t[19]||(t[19]=[e.createTextVNode(" 移除 ",-1)])]),_:1},8,["disabled","loading"])])]),_:1},8,["modelValue"]),e.createVNode(te,{modelValue:k.value,"onUpdate:modelValue":t[12]||(t[12]=a=>k.value=a),width:"600px",class:"code-repository-share__transfer-dialog","destroy-on-close":"","show-close":!1,"append-to-body":""},{header:e.withCtx(()=>{var a;return[e.createElementVNode("div",nt,[e.createElementVNode("div",dt,[e.createElementVNode("div",ct,e.toDisplayString(w.value.transferTitle),1),e.createElementVNode("div",it,[t[20]||(t[20]=e.createTextVNode(" 你将把所有权转移给 ",-1)),e.createElementVNode("span",ut,e.toDisplayString(((a=p.value)==null?void 0:a.subjectName)||"--"),1),t[21]||(t[21]=e.createTextVNode(" ,转移后你将不再是此资源的所有者。 ",-1))])]),e.createVNode(i,{link:"",class:"code-repository-share__close-button","aria-label":"关闭所有权转移确认",onClick:t[8]||(t[8]=V=>k.value=!1)},{default:e.withCtx(()=>[e.createVNode(s,{size:16},{default:e.withCtx(()=>[e.createVNode(e.unref(L.Close))]),_:1})]),_:1})])]}),footer:e.withCtx(()=>[e.createElementVNode("div",yt,[e.createVNode(i,{onClick:t[11]||(t[11]=a=>k.value=!1)},{default:e.withCtx(()=>[...t[26]||(t[26]=[e.createTextVNode("取消",-1)])]),_:1}),e.createVNode(i,{type:"primary",disabled:!p.value,loading:n.value,onClick:he},{default:e.withCtx(()=>[...t[27]||(t[27]=[e.createTextVNode(" 转移 ",-1)])]),_:1},8,["disabled","loading"])])]),default:e.withCtx(()=>[e.createElementVNode("div",pt,[t[25]||(t[25]=e.createElementVNode("div",{class:"code-repository-share__transfer-label"},"转移后",-1)),e.createVNode(Z,{modelValue:B.value,"onUpdate:modelValue":t[10]||(t[10]=a=>B.value=a),class:"code-repository-share__transfer-group"},{default:e.withCtx(()=>[e.createElementVNode("label",vt,[e.createVNode(oe,{value:"KEEP"},{default:e.withCtx(()=>[...t[22]||(t[22]=[e.createTextVNode("保留我的",-1)])]),_:1}),e.createVNode(P,{modelValue:D.value,"onUpdate:modelValue":t[9]||(t[9]=a=>D.value=a),class:"code-repository-share__transfer-select",disabled:B.value!=="KEEP"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(de.value,a=>(e.openBlock(),e.createBlock(g,{key:a.value,label:a.label,value:a.value,disabled:a.disabled},null,8,["label","value","disabled"]))),128))]),_:1},8,["modelValue","disabled"]),t[23]||(t[23]=e.createElementVNode("span",null,"权限",-1))]),e.createElementVNode("label",_t,[e.createVNode(oe,{value:"REMOVE"},{default:e.withCtx(()=>[...t[24]||(t[24]=[e.createTextVNode("不保留我的协作权限",-1)])]),_:1})])]),_:1},8,["modelValue"])])]),_:1},8,["modelValue"])]),_:1},8,["model-value","size"])}}}),Et=(r,d)=>{const l=r.__vccOpts||r;for(const[c,y]of d)l[c]=y;return l},Vt=Et(ht,[["__scopeId","data-v-fffe5d72"]]);function Nt(r){const d=e.ref(!1),l=e.ref(!1),c=e.ref(""),y=e.ref("USER"),b=e.ref([]),N=e.ref("VIEWER"),E=e.ref([]),n=e.ref([]),T=e.computed(()=>G(E.value)),v=e.computed(()=>le(n.value,E.value));async function _(){d.value=!0;try{E.value=await r.adapter.listPermissions(r.resourceId)}finally{d.value=!1}}async function h(){n.value=await r.adapter.searchSubjects({subjectType:y.value,keyword:c.value,resourceId:r.resourceId})}async function S(){if(b.value.length){l.value=!0;try{await Promise.all(b.value.map(u=>r.adapter.grantPermission({resourceId:r.resourceId,subjectType:y.value,subjectId:u,role:N.value}))),b.value=[],c.value="",await _(),await h()}finally{l.value=!1}}}async function x(u,f){l.value=!0;try{await r.adapter.updatePermissionRole({resourceId:r.resourceId,subjectType:u.subjectType,subjectId:u.subjectId,role:f}),await _()}finally{l.value=!1}}async function C(u){l.value=!0;try{await r.adapter.revokePermission({resourceId:r.resourceId,subjectType:u.subjectType,subjectId:u.subjectId}),await _(),await h()}finally{l.value=!1}}async function R(u,f="MANAGER"){if(r.adapter.transferOwner){l.value=!0;try{await r.adapter.transferOwner({resourceId:r.resourceId,subjectType:u.subjectType,subjectId:u.subjectId,previousOwnerRole:f}),await _()}finally{l.value=!1}}}return{loading:d,saving:l,keyword:c,subjectType:y,selectedSubjectIds:b,selectedRole:N,permissions:E,candidates:n,sortedPermissions:T,availableCandidates:v,loadPermissions:_,searchCandidates:h,grantSelected:S,updateRole:x,revoke:C,transferOwner:R}}exports.HrbacShareDrawer=Vt;exports.buildSubjectKey=A;exports.excludeExistingSubjects=le;exports.sortSharePermissions=G;exports.toLineCascaderOptions=re;exports.useHrbacShare=Nt;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),m=require("element-plus"),L=require("@element-plus/icons-vue"),ae={SPACE:1,LINE:2,USER:3};function A(r){return`${r.subjectType}:${r.subjectId}`}function le(r,c){const l=new Set(c.map(A));return r.filter(d=>!l.has(A(d)))}function G(r){return[...r].sort((c,l)=>{const d=ae[c.subjectType]-ae[l.subjectType];return d!==0?d:c.subjectName.localeCompare(l.subjectName,"zh-CN")})}function re(r,c){return r.map(l=>se(l,c))}function se(r,c){var b;const l=(b=r.children)==null?void 0:b.map(N=>se(N,c)),d=!!(l!=null&&l.length),y=r.subjectType==="LINE"&&c.has(r.subjectId);return{value:r.subjectId,label:r.subjectName,disabled:d?!1:!!(r.disabled||y),isAdded:y,children:l}}const Be={class:"code-repository-share__header"},Re={class:"code-repository-share__header-main"},Ie={class:"code-repository-share__header-title"},Oe={class:"code-repository-share__header-subtitle"},Ae={class:"code-repository-share"},De={class:"code-repository-share__section"},Pe={class:"code-repository-share__section-head"},Le={class:"code-repository-share__section-label"},Me={class:"code-repository-share__add-row"},Ue={class:"code-repository-share__compound-field"},ze={class:"code-repository-share__compound-left"},We={class:"code-repository-share__empty"},Ke={class:"code-repository-share__candidate-name"},$e={key:0,class:"code-repository-share__candidate-status"},Fe={class:"code-repository-share__candidate-name"},Ge={key:0,class:"code-repository-share__candidate-status"},He={class:"code-repository-share__compound-right"},qe={class:"code-repository-share__collaborator-section"},Je={class:"code-repository-share__collaborator-title"},Ye={class:"code-repository-share__collaborator-list"},Qe={class:"code-repository-share__collaborator-list-inner"},Xe={class:"code-repository-share__collaborator-info"},Ze={class:"code-repository-share__collaborator-name-line"},et={class:"code-repository-share__collaborator-name"},tt={key:1,class:"code-repository-share__empty-state"},ot={class:"code-repository-share__dialog-header"},at={class:"code-repository-share__dialog-header-main"},lt={class:"code-repository-share__dialog-title"},rt={class:"code-repository-share__dialog-description"},st={class:"code-repository-share__dialog-footer"},nt={class:"code-repository-share__dialog-header"},dt={class:"code-repository-share__dialog-header-main"},ct={class:"code-repository-share__dialog-title"},it={class:"code-repository-share__dialog-description"},ut={class:"code-repository-share__dialog-description-target"},pt={class:"code-repository-share__transfer-content"},vt={class:"code-repository-share__transfer-option"},_t={class:"code-repository-share__transfer-option"},yt={class:"code-repository-share__dialog-footer"},ft="__remove__",mt="__transfer__",bt="__divider__",ht=e.defineComponent({__name:"HrbacShareDrawer",props:{modelValue:{type:Boolean},resource:{},adapter:{},readonly:{type:Boolean,default:!1},drawerSize:{default:"760px"},labels:{},subjectTypeOptions:{},roleOptions:{},allowTransferOwner:{type:Boolean,default:!0}},emits:["update:modelValue","saved"],setup(r,{emit:c}){const l=r,d=c,y={title:"分享设置",addSectionTitle:"添加方式",collaboratorTitle:"管理协作者",readonlyTip:"当前仅可查看协作者,暂无修改分享设置权限",emptyCollaborators:"暂无协作者",removeTitle:"确认移除协作者?",removeDescription:"移除后,该对象将无法继续访问资源:",transferTitle:"转移所有权",transferDescription:"转移后,新的所有者为:"},b=[{label:"按用户",value:"USER"},{label:"按条线",value:"LINE"},{label:"按空间",value:"SPACE"}],N=[{label:"可管理",value:"MANAGER"},{label:"可编辑",value:"EDITOR"},{label:"可查看",value:"VIEWER"}],V=e.ref(!1),n=e.ref(!1),T=e.ref(!1),v=e.ref("USER"),_=e.ref([]),h=e.ref([]),S=e.ref(0),x=e.ref("VIEWER"),C=e.ref([]),B=e.ref([]),u=e.ref(""),f=e.ref(!1),k=e.ref(!1),p=e.ref(null),D=e.ref("MANAGER"),R=e.ref("KEEP"),ne={multiple:!0,emitPath:!0,checkStrictly:!1,value:"value",label:"label",children:"children",expandTrigger:"hover"},w=e.computed(()=>({...y,...l.labels})),M=e.computed(()=>{var o;return(o=l.subjectTypeOptions)!=null&&o.length?l.subjectTypeOptions:b}),H=e.computed(()=>{var o;return(o=l.roleOptions)!=null&&o.length?l.roleOptions.map(t=>({...t,label:t.label||W(t.value)})):N}),q=e.computed(()=>H.value.filter(o=>o.value!=="OWNER")),de=e.computed(()=>{const o=[...q.value];return o.some(t=>t.value==="MANAGER")||o.unshift({label:W("MANAGER"),value:"MANAGER"}),o}),J=e.computed(()=>G(C.value)),ce=e.computed(()=>new Set(C.value.map(A))),ie=e.computed(()=>new Set(C.value.filter(o=>o.subjectType==="LINE").map(o=>o.subjectId))),ue=e.computed(()=>B.value.map(o=>({...o,disabled:o.disabled||ce.value.has(A(o))}))),pe=e.computed(()=>re(B.value,ie.value)),U=e.computed(()=>v.value==="LINE"?Array.from(new Set(h.value.map(o=>o[o.length-1]).filter(Boolean))):Array.from(new Set(_.value.filter(Boolean)))),ve=e.computed(()=>v.value==="USER"?"搜索用户":v.value==="LINE"?"搜索条线":"搜索空间"),z=e.computed(()=>{const o=u.value.trim().toLowerCase();return o?J.value.filter(t=>{var s;return t.subjectName.toLowerCase().includes(o)||t.subjectId.toLowerCase().includes(o)||((s=t.description)==null?void 0:s.toLowerCase().includes(o))}):J.value});e.watch(()=>l.modelValue,o=>{o&&(I(),O(""))},{immediate:!0}),e.watch(M,o=>{var t;o.some(s=>s.value===v.value)||(v.value=((t=o[0])==null?void 0:t.value)||"USER")},{immediate:!0});function Y(){d("update:modelValue",!1)}async function I(){V.value=!0;try{C.value=await l.adapter.listPermissions(l.resource.id)}catch(o){m.ElMessage.error(j(o,"协作者加载失败"))}finally{V.value=!1}}async function O(o){T.value=!0;try{B.value=await l.adapter.searchSubjects({subjectType:v.value,keyword:o,resourceId:l.resource.id})}catch(t){m.ElMessage.error(j(t,"候选对象加载失败"))}finally{T.value=!1}}function _e(){_.value=[],h.value=[],S.value+=1,O("")}async function ye(){if(U.value.length){n.value=!0;try{await Promise.all(U.value.map(o=>l.adapter.grantPermission({resourceId:l.resource.id,subjectType:v.value,subjectId:o,role:x.value}))),_.value=[],h.value=[],S.value+=1,m.ElMessage.success("协作者已添加"),d("saved"),await I(),await O("")}catch(o){m.ElMessage.error(j(o,"协作者添加失败"))}finally{n.value=!1}}}async function fe(o,t){if(t===ft){p.value=o,f.value=!0;return}if(t===mt){p.value=o,R.value="KEEP",D.value="MANAGER",k.value=!0;return}if(t!==bt&&!(t==="OWNER"||t===o.role)){n.value=!0;try{await l.adapter.updatePermissionRole({resourceId:l.resource.id,subjectType:o.subjectType,subjectId:o.subjectId,role:t}),m.ElMessage.success("权限已更新"),d("saved"),await I()}catch(s){m.ElMessage.error(j(s,"权限更新失败"))}finally{n.value=!1}}}function me(o,t){typeof t=="string"&&fe(o,t)}async function be(){if(p.value){n.value=!0;try{await l.adapter.revokePermission({resourceId:l.resource.id,subjectType:p.value.subjectType,subjectId:p.value.subjectId}),f.value=!1,p.value=null,m.ElMessage.success("协作者已移除"),d("saved"),await I(),await O("")}catch(o){m.ElMessage.error(j(o,"协作者移除失败"))}finally{n.value=!1}}}async function he(){if(!(!p.value||!l.adapter.transferOwner)){n.value=!0;try{await l.adapter.transferOwner({resourceId:l.resource.id,subjectType:p.value.subjectType,subjectId:p.value.subjectId,previousOwnerRole:R.value==="REMOVE"?void 0:D.value}),k.value=!1,p.value=null,m.ElMessage.success("所有权已转移"),d("saved"),await I()}catch(o){m.ElMessage.error(j(o,"所有权转移失败"))}finally{n.value=!1}}}function Q(o){var t;return((t=M.value.find(s=>s.value===o))==null?void 0:t.label.replace(/^按/,""))||o}function Ve(o){if(o.role==="OWNER")return[{label:"所有者",value:"OWNER",disabled:!0}];const t=H.value.filter(s=>s.value!=="OWNER");return t.some(s=>s.value===o.role)?t:[{label:W(o.role),value:o.role},...t]}function W(o){var t;return((t=N.find(s=>s.value===o))==null?void 0:t.label)||o}function Ee(o){return l.readonly||n.value||o.readonly===!0||o.role==="OWNER"}function Ne(o){return Ee(o)&&!K(o)&&!$(o)}function K(o){return!l.readonly&&!o.readonly&&o.role!=="OWNER"}function $(o){return l.allowTransferOwner&&!!l.adapter.transferOwner&&!l.readonly&&!o.readonly&&o.subjectType==="USER"&&o.role!=="OWNER"}function we(o){return K(o)||$(o)}function ge(o){return o==="USER"?"code-repository-share__type-tag--user":o==="SPACE"?"code-repository-share__type-tag--space":"code-repository-share__type-tag--line"}function Ce(o,t){const s=t.trim().toLowerCase();if(!s)return!0;const i=o.data,F=Array.isArray(o.pathLabels)?o.pathLabels:[];return[o.text,i==null?void 0:i.label,i==null?void 0:i.value,...F].filter(Boolean).join(" ").toLowerCase().includes(s)}function j(o,t){return o instanceof Error&&o.message?o.message:t}return(o,t)=>{const s=e.resolveComponent("el-icon"),i=e.resolveComponent("el-button"),F=e.resolveComponent("el-alert"),X=e.resolveComponent("el-radio-button"),Z=e.resolveComponent("el-radio-group"),ee=e.resolveComponent("el-tooltip"),g=e.resolveComponent("el-option"),P=e.resolveComponent("el-select"),ke=e.resolveComponent("el-cascader"),je=e.resolveComponent("el-input"),Te=e.resolveComponent("el-empty"),te=e.resolveComponent("el-dialog"),oe=e.resolveComponent("el-radio"),Se=e.resolveComponent("el-drawer"),xe=e.resolveDirective("loading");return e.openBlock(),e.createBlock(Se,{"model-value":r.modelValue,size:r.drawerSize,class:"code-repository-share-drawer","destroy-on-close":"","show-close":!1,onClose:Y},{header:e.withCtx(()=>[e.createElementVNode("div",Be,[e.createElementVNode("div",Re,[e.createElementVNode("div",Ie,e.toDisplayString(w.value.title),1),e.createElementVNode("div",Oe,[t[13]||(t[13]=e.createTextVNode(" 正在分享:",-1)),e.createElementVNode("span",null,e.toDisplayString(r.resource.name||"--"),1)])]),e.createVNode(i,{link:"",class:"code-repository-share__close-button","aria-label":"关闭分享抽屉",onClick:Y},{default:e.withCtx(()=>[e.createVNode(s,{size:16},{default:e.withCtx(()=>[e.createVNode(e.unref(L.Close))]),_:1})]),_:1})])]),default:e.withCtx(()=>[e.withDirectives((e.openBlock(),e.createElementBlock("div",Ae,[r.readonly?(e.openBlock(),e.createBlock(F,{key:0,title:w.value.readonlyTip,type:"info","show-icon":"",closable:!1,class:"code-repository-share__alert"},null,8,["title"])):e.createCommentVNode("",!0),e.createElementVNode("section",De,[e.createElementVNode("div",Pe,[e.createElementVNode("span",Le,e.toDisplayString(w.value.addSectionTitle),1),e.createVNode(Z,{modelValue:v.value,"onUpdate:modelValue":t[0]||(t[0]=a=>v.value=a),class:"code-repository-share__method-radio",disabled:r.readonly||n.value,onChange:_e},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(M.value,a=>(e.openBlock(),e.createBlock(X,{key:a.value,value:a.value},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(a.label),1)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue","disabled"])]),e.createElementVNode("div",Me,[e.createElementVNode("div",Ue,[e.createElementVNode("div",ze,[v.value!=="LINE"?(e.openBlock(),e.createBlock(P,{key:0,modelValue:_.value,"onUpdate:modelValue":t[1]||(t[1]=a=>_.value=a),multiple:"",filterable:"",remote:"",clearable:"","collapse-tags":"","collapse-tags-tooltip":"","remote-method":O,loading:T.value,disabled:r.readonly||n.value,placeholder:ve.value,"reserve-keyword":!1,class:"code-repository-share__candidate-select"},{empty:e.withCtx(()=>[e.createElementVNode("div",We,"暂无匹配"+e.toDisplayString(Q(v.value)),1)]),default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(ue.value,a=>(e.openBlock(),e.createBlock(g,{key:`${a.subjectType}:${a.subjectId}`,label:a.subjectName,value:a.subjectId,disabled:a.disabled},{default:e.withCtx(()=>[e.createVNode(ee,{disabled:!a.disabled,content:"已添加为协作者",placement:"right"},{default:e.withCtx(()=>[e.createElementVNode("div",{class:e.normalizeClass(["code-repository-share__candidate-option",{"is-added":a.disabled}])},[e.createElementVNode("span",Ke,e.toDisplayString(a.subjectName),1),a.disabled?(e.openBlock(),e.createElementBlock("span",$e," 已添加 ")):e.createCommentVNode("",!0)],2)]),_:2},1032,["disabled"])]),_:2},1032,["label","value","disabled"]))),128))]),_:1},8,["modelValue","loading","disabled","placeholder"])):(e.openBlock(),e.createBlock(ke,{key:S.value,modelValue:h.value,"onUpdate:modelValue":t[2]||(t[2]=a=>h.value=a),class:"code-repository-share__candidate-select code-repository-share__line-cascader add-member-line-cascader",style:{width:"100%"},placeholder:"请选择条线",options:pe.value,props:ne,disabled:r.readonly||n.value,filterable:"","filter-method":Ce,clearable:"","collapse-tags":"","collapse-tags-tooltip":"","show-all-levels":!0},{default:e.withCtx(({data:a})=>[e.createVNode(ee,{disabled:!a.isAdded,content:"已添加为协作者",placement:"right"},{default:e.withCtx(()=>[e.createElementVNode("div",{class:e.normalizeClass(["code-repository-share__candidate-option",{"is-added":a.isAdded}])},[e.createElementVNode("span",Fe,e.toDisplayString(a.label),1),a.isAdded?(e.openBlock(),e.createElementBlock("span",Ge," 已添加 ")):e.createCommentVNode("",!0)],2)]),_:2},1032,["disabled"])]),_:1},8,["modelValue","options","disabled"]))]),e.createElementVNode("div",He,[e.createVNode(P,{modelValue:x.value,"onUpdate:modelValue":t[3]||(t[3]=a=>x.value=a),disabled:r.readonly||n.value,class:"code-repository-share__add-role-select"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(q.value,a=>(e.openBlock(),e.createBlock(g,{key:a.value,label:a.label,value:a.value,disabled:a.disabled},null,8,["label","value","disabled"]))),128))]),_:1},8,["modelValue","disabled"])])]),e.createVNode(i,{type:"primary",class:"code-repository-share__add-button",loading:n.value,disabled:r.readonly||!U.value.length,onClick:ye},{default:e.withCtx(()=>[...t[14]||(t[14]=[e.createTextVNode(" 添加 ",-1)])]),_:1},8,["loading","disabled"])])]),e.createElementVNode("section",qe,[e.createElementVNode("div",Je,[e.createTextVNode(e.toDisplayString(w.value.collaboratorTitle)+" ",1),e.createElementVNode("span",null,"("+e.toDisplayString(z.value.length)+")",1)]),e.createVNode(je,{modelValue:u.value,"onUpdate:modelValue":t[4]||(t[4]=a=>u.value=a),modelModifiers:{trim:!0},clearable:"",class:"code-repository-share__collaborator-search",placeholder:"搜索空间名称、条线名称、用户姓名或账号"},{prefix:e.withCtx(()=>[e.createVNode(s,null,{default:e.withCtx(()=>[e.createVNode(e.unref(L.Search))]),_:1})]),_:1},8,["modelValue"]),e.createElementVNode("div",Ye,[z.value.length?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",Qe,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(z.value,a=>(e.openBlock(),e.createElementBlock("div",{key:`${a.subjectType}:${a.subjectId}`,class:"code-repository-share__collaborator-row"},[e.createElementVNode("div",Xe,[e.createElementVNode("div",Ze,[e.createElementVNode("span",{class:e.normalizeClass(["code-repository-share__type-tag",ge(a.subjectType)])},e.toDisplayString(Q(a.subjectType)||"--"),3),e.createElementVNode("span",et,e.toDisplayString(a.subjectName||"--"),1)])]),e.createVNode(P,{"model-value":a.role,size:"small",class:"code-repository-share__row-role-select","popper-class":"code-repository-share__role-dropdown",disabled:Ne(a),onChange:E=>me(a,E)},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Ve(a),E=>(e.openBlock(),e.createBlock(g,{key:E.value,label:E.label,value:E.value,disabled:E.disabled},null,8,["label","value","disabled"]))),128)),we(a)?(e.openBlock(),e.createBlock(g,{key:0,disabled:"",value:"__divider__"},{default:e.withCtx(()=>[...t[15]||(t[15]=[e.createElementVNode("div",{class:"code-repository-share__role-divider"},null,-1)])]),_:1})):e.createCommentVNode("",!0),$(a)?(e.openBlock(),e.createBlock(g,{key:1,label:"转移所有权",value:"__transfer__"})):e.createCommentVNode("",!0),K(a)?(e.openBlock(),e.createBlock(g,{key:2,label:"移除",value:"__remove__"},{default:e.withCtx(()=>[...t[16]||(t[16]=[e.createElementVNode("span",{class:"code-repository-share__danger-option"},"移除",-1)])]),_:1})):e.createCommentVNode("",!0)]),_:2},1032,["model-value","disabled","onChange"])]))),128))]),t[17]||(t[17]=e.createElementVNode("div",{class:"code-repository-share__collaborator-footer"},"已显示全部协作者",-1))],64)):(e.openBlock(),e.createElementBlock("div",tt,[e.createVNode(Te,{description:w.value.emptyCollaborators,"image-size":72},null,8,["description"])]))])])])),[[xe,V.value]]),e.createVNode(te,{modelValue:f.value,"onUpdate:modelValue":t[7]||(t[7]=a=>f.value=a),width:"460px",class:"code-repository-share__remove-dialog","destroy-on-close":"","show-close":!1,"append-to-body":""},{header:e.withCtx(()=>{var a;return[e.createElementVNode("div",ot,[e.createElementVNode("div",at,[e.createElementVNode("div",lt,e.toDisplayString(w.value.removeTitle),1),e.createElementVNode("div",rt," 移除后,"+e.toDisplayString(((a=p.value)==null?void 0:a.subjectName)||"--")+" 将失去当前资源的协作权限。 ",1)]),e.createVNode(i,{link:"",class:"code-repository-share__close-button","aria-label":"关闭移除确认",onClick:t[5]||(t[5]=E=>f.value=!1)},{default:e.withCtx(()=>[e.createVNode(s,{size:16},{default:e.withCtx(()=>[e.createVNode(e.unref(L.Close))]),_:1})]),_:1})])]}),footer:e.withCtx(()=>[e.createElementVNode("div",st,[e.createVNode(i,{onClick:t[6]||(t[6]=a=>f.value=!1)},{default:e.withCtx(()=>[...t[18]||(t[18]=[e.createTextVNode("取消",-1)])]),_:1}),e.createVNode(i,{type:"primary",class:"code-repository-share__danger-button",disabled:!p.value,loading:n.value,onClick:be},{default:e.withCtx(()=>[...t[19]||(t[19]=[e.createTextVNode(" 移除 ",-1)])]),_:1},8,["disabled","loading"])])]),_:1},8,["modelValue"]),e.createVNode(te,{modelValue:k.value,"onUpdate:modelValue":t[12]||(t[12]=a=>k.value=a),width:"600px",class:"code-repository-share__transfer-dialog","destroy-on-close":"","show-close":!1,"append-to-body":""},{header:e.withCtx(()=>{var a;return[e.createElementVNode("div",nt,[e.createElementVNode("div",dt,[e.createElementVNode("div",ct,e.toDisplayString(w.value.transferTitle),1),e.createElementVNode("div",it,[t[20]||(t[20]=e.createTextVNode(" 你将把所有权转移给 ",-1)),e.createElementVNode("span",ut,e.toDisplayString(((a=p.value)==null?void 0:a.subjectName)||"--"),1),t[21]||(t[21]=e.createTextVNode(" ,转移后你将不再是此资源的所有者。 ",-1))])]),e.createVNode(i,{link:"",class:"code-repository-share__close-button","aria-label":"关闭所有权转移确认",onClick:t[8]||(t[8]=E=>k.value=!1)},{default:e.withCtx(()=>[e.createVNode(s,{size:16},{default:e.withCtx(()=>[e.createVNode(e.unref(L.Close))]),_:1})]),_:1})])]}),footer:e.withCtx(()=>[e.createElementVNode("div",yt,[e.createVNode(i,{onClick:t[11]||(t[11]=a=>k.value=!1)},{default:e.withCtx(()=>[...t[26]||(t[26]=[e.createTextVNode("取消",-1)])]),_:1}),e.createVNode(i,{type:"primary",disabled:!p.value,loading:n.value,onClick:he},{default:e.withCtx(()=>[...t[27]||(t[27]=[e.createTextVNode(" 转移 ",-1)])]),_:1},8,["disabled","loading"])])]),default:e.withCtx(()=>[e.createElementVNode("div",pt,[t[25]||(t[25]=e.createElementVNode("div",{class:"code-repository-share__transfer-label"},"转移后",-1)),e.createVNode(Z,{modelValue:R.value,"onUpdate:modelValue":t[10]||(t[10]=a=>R.value=a),class:"code-repository-share__transfer-group"},{default:e.withCtx(()=>[e.createElementVNode("label",vt,[e.createVNode(oe,{value:"KEEP"},{default:e.withCtx(()=>[...t[22]||(t[22]=[e.createTextVNode("保留我的",-1)])]),_:1}),e.createVNode(P,{modelValue:D.value,"onUpdate:modelValue":t[9]||(t[9]=a=>D.value=a),class:"code-repository-share__transfer-select",disabled:R.value!=="KEEP"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(de.value,a=>(e.openBlock(),e.createBlock(g,{key:a.value,label:a.label,value:a.value,disabled:a.disabled},null,8,["label","value","disabled"]))),128))]),_:1},8,["modelValue","disabled"]),t[23]||(t[23]=e.createElementVNode("span",null,"权限",-1))]),e.createElementVNode("label",_t,[e.createVNode(oe,{value:"REMOVE"},{default:e.withCtx(()=>[...t[24]||(t[24]=[e.createTextVNode("不保留我的协作权限",-1)])]),_:1})])]),_:1},8,["modelValue"])])]),_:1},8,["modelValue"])]),_:1},8,["model-value","size"])}}}),Vt=(r,c)=>{const l=r.__vccOpts||r;for(const[d,y]of c)l[d]=y;return l},Et=Vt(ht,[["__scopeId","data-v-fffe5d72"]]);function Nt(r){const c=e.ref(!1),l=e.ref(!1),d=e.ref(""),y=e.ref("USER"),b=e.ref([]),N=e.ref("VIEWER"),V=e.ref([]),n=e.ref([]),T=e.computed(()=>G(V.value)),v=e.computed(()=>le(n.value,V.value));async function _(){c.value=!0;try{V.value=await r.adapter.listPermissions(r.resourceId)}finally{c.value=!1}}async function h(){n.value=await r.adapter.searchSubjects({subjectType:y.value,keyword:d.value,resourceId:r.resourceId})}async function S(){if(b.value.length){l.value=!0;try{await Promise.all(b.value.map(u=>r.adapter.grantPermission({resourceId:r.resourceId,subjectType:y.value,subjectId:u,role:N.value}))),b.value=[],d.value="",await _(),await h()}finally{l.value=!1}}}async function x(u,f){l.value=!0;try{await r.adapter.updatePermissionRole({resourceId:r.resourceId,subjectType:u.subjectType,subjectId:u.subjectId,role:f}),await _()}finally{l.value=!1}}async function C(u){l.value=!0;try{await r.adapter.revokePermission({resourceId:r.resourceId,subjectType:u.subjectType,subjectId:u.subjectId}),await _(),await h()}finally{l.value=!1}}async function B(u,f="MANAGER"){if(r.adapter.transferOwner){l.value=!0;try{await r.adapter.transferOwner({resourceId:r.resourceId,subjectType:u.subjectType,subjectId:u.subjectId,previousOwnerRole:f}),await _()}finally{l.value=!1}}}return{loading:c,saving:l,keyword:d,subjectType:y,selectedSubjectIds:b,selectedRole:N,permissions:V,candidates:n,sortedPermissions:T,availableCandidates:v,loadPermissions:_,searchCandidates:h,grantSelected:S,updateRole:x,revoke:C,transferOwner:B}}exports.HrbacShareDrawer=Et;exports.buildSubjectKey=A;exports.excludeExistingSubjects=le;exports.sortSharePermissions=G;exports.toLineCascaderOptions=re;exports.useHrbacShare=Nt;
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { defineComponent as Ge, ref as i, computed as f, watch as be, resolveComponent as m, resolveDirective as He, openBlock as n, createBlock as w, withCtx as r, withDirectives as Fe, createElementBlock as j, createCommentVNode as x, createElementVNode as s, toDisplayString as y, createVNode as d, Fragment as L, renderList as B, createTextVNode as E, normalizeClass as te, unref as q } from "vue";
1
+ import { defineComponent as Ge, ref as i, computed as f, watch as be, resolveComponent as m, resolveDirective as He, openBlock as n, createBlock as w, withCtx as r, withDirectives as Fe, createElementBlock as j, createCommentVNode as B, createElementVNode as s, toDisplayString as y, createVNode as d, Fragment as L, renderList as M, createTextVNode as E, normalizeClass as te, unref as q } from "vue";
2
2
  import { ElMessage as C } from "element-plus";
3
3
  import { Search as Je, Close as re } from "@element-plus/icons-vue";
4
4
  const he = {
@@ -9,29 +9,27 @@ const he = {
9
9
  function Q(t) {
10
10
  return `${t.subjectType}:${t.subjectId}`;
11
11
  }
12
- function Ye(t, v) {
13
- const o = new Set(v.map(Q));
14
- return t.filter((p) => !o.has(Q(p)));
12
+ function Ye(t, p) {
13
+ const o = new Set(p.map(Q));
14
+ return t.filter((v) => !o.has(Q(v)));
15
15
  }
16
16
  function me(t) {
17
- return [...t].sort((v, o) => {
18
- if (v.role === "OWNER" && o.role !== "OWNER") return -1;
19
- if (v.role !== "OWNER" && o.role === "OWNER") return 1;
20
- const p = he[v.subjectType] - he[o.subjectType];
21
- return p !== 0 ? p : v.subjectName.localeCompare(o.subjectName, "zh-CN");
17
+ return [...t].sort((p, o) => {
18
+ const v = he[p.subjectType] - he[o.subjectType];
19
+ return v !== 0 ? v : p.subjectName.localeCompare(o.subjectName, "zh-CN");
22
20
  });
23
21
  }
24
- function qe(t, v) {
25
- return t.map((o) => ge(o, v));
22
+ function qe(t, p) {
23
+ return t.map((o) => ge(o, p));
26
24
  }
27
- function ge(t, v) {
25
+ function ge(t, p) {
28
26
  var S;
29
- const o = (S = t.children) == null ? void 0 : S.map((k) => ge(k, v)), p = !!(o != null && o.length), T = t.subjectType === "LINE" && v.has(t.subjectId);
27
+ const o = (S = t.children) == null ? void 0 : S.map((k) => ge(k, p)), v = !!(o != null && o.length), R = t.subjectType === "LINE" && p.has(t.subjectId);
30
28
  return {
31
29
  value: t.subjectId,
32
30
  label: t.subjectName,
33
- disabled: p ? !1 : !!(t.disabled || T),
34
- isAdded: T,
31
+ disabled: v ? !1 : !!(t.disabled || R),
32
+ isAdded: R,
35
33
  children: o
36
34
  };
37
35
  }
@@ -44,7 +42,7 @@ const Qe = { class: "code-repository-share__header" }, Xe = { class: "code-repos
44
42
  }, pa = { class: "code-repository-share__compound-right" }, _a = { class: "code-repository-share__collaborator-section" }, ya = { class: "code-repository-share__collaborator-title" }, fa = { class: "code-repository-share__collaborator-list" }, ba = { class: "code-repository-share__collaborator-list-inner" }, ha = { class: "code-repository-share__collaborator-info" }, ma = { class: "code-repository-share__collaborator-name-line" }, ga = { class: "code-repository-share__collaborator-name" }, wa = {
45
43
  key: 1,
46
44
  class: "code-repository-share__empty-state"
47
- }, ja = { class: "code-repository-share__dialog-header" }, Ea = { class: "code-repository-share__dialog-header-main" }, Ra = { class: "code-repository-share__dialog-title" }, Ta = { class: "code-repository-share__dialog-description" }, Ia = { class: "code-repository-share__dialog-footer" }, Ca = { class: "code-repository-share__dialog-header" }, Sa = { class: "code-repository-share__dialog-header-main" }, Oa = { class: "code-repository-share__dialog-title" }, Na = { class: "code-repository-share__dialog-description" }, Va = { class: "code-repository-share__dialog-description-target" }, ka = { class: "code-repository-share__transfer-content" }, Aa = { class: "code-repository-share__transfer-option" }, Pa = { class: "code-repository-share__transfer-option" }, La = { class: "code-repository-share__dialog-footer" }, Ua = "__remove__", Da = "__transfer__", Wa = "__divider__", xa = /* @__PURE__ */ Ge({
45
+ }, ja = { class: "code-repository-share__dialog-header" }, Ea = { class: "code-repository-share__dialog-header-main" }, Ta = { class: "code-repository-share__dialog-title" }, Ra = { class: "code-repository-share__dialog-description" }, Ia = { class: "code-repository-share__dialog-footer" }, Ca = { class: "code-repository-share__dialog-header" }, Sa = { class: "code-repository-share__dialog-header-main" }, Va = { class: "code-repository-share__dialog-title" }, Oa = { class: "code-repository-share__dialog-description" }, Na = { class: "code-repository-share__dialog-description-target" }, ka = { class: "code-repository-share__transfer-content" }, Aa = { class: "code-repository-share__transfer-option" }, Pa = { class: "code-repository-share__transfer-option" }, La = { class: "code-repository-share__dialog-footer" }, Ua = "__remove__", Da = "__transfer__", xa = "__divider__", Ba = /* @__PURE__ */ Ge({
48
46
  __name: "HrbacShareDrawer",
49
47
  props: {
50
48
  modelValue: { type: Boolean },
@@ -58,8 +56,8 @@ const Qe = { class: "code-repository-share__header" }, Xe = { class: "code-repos
58
56
  allowTransferOwner: { type: Boolean, default: !0 }
59
57
  },
60
58
  emits: ["update:modelValue", "saved"],
61
- setup(t, { emit: v }) {
62
- const o = t, p = v, T = {
59
+ setup(t, { emit: p }) {
60
+ const o = t, v = p, R = {
63
61
  title: "分享设置",
64
62
  addSectionTitle: "添加方式",
65
63
  collaboratorTitle: "管理协作者",
@@ -77,7 +75,7 @@ const Qe = { class: "code-repository-share__header" }, Xe = { class: "code-repos
77
75
  { label: "可管理", value: "MANAGER" },
78
76
  { label: "可编辑", value: "EDITOR" },
79
77
  { label: "可查看", value: "VIEWER" }
80
- ], N = i(!1), c = i(!1), M = i(!1), g = i("USER"), R = i([]), O = i([]), z = i(0), K = i("VIEWER"), U = i([]), $ = i([]), b = i(""), I = i(!1), D = i(!1), h = i(null), J = i("MANAGER"), G = i("KEEP"), we = {
78
+ ], O = i(!1), c = i(!1), z = i(!1), g = i("USER"), T = i([]), V = i([]), W = i(0), K = i("VIEWER"), U = i([]), $ = i([]), b = i(""), I = i(!1), D = i(!1), h = i(null), J = i("MANAGER"), G = i("KEEP"), we = {
81
79
  multiple: !0,
82
80
  emitPath: !0,
83
81
  checkStrictly: !1,
@@ -85,7 +83,7 @@ const Qe = { class: "code-repository-share__header" }, Xe = { class: "code-repos
85
83
  label: "label",
86
84
  children: "children",
87
85
  expandTrigger: "hover"
88
- }, A = f(() => ({ ...T, ...o.labels })), X = f(() => {
86
+ }, A = f(() => ({ ...R, ...o.labels })), X = f(() => {
89
87
  var a;
90
88
  return (a = o.subjectTypeOptions) != null && a.length ? o.subjectTypeOptions : S;
91
89
  }), de = f(() => {
@@ -97,12 +95,12 @@ const Qe = { class: "code-repository-share__header" }, Xe = { class: "code-repos
97
95
  }), ne = f(() => de.value.filter((a) => a.value !== "OWNER")), je = f(() => {
98
96
  const a = [...ne.value];
99
97
  return a.some((e) => e.value === "MANAGER") || a.unshift({ label: ae("MANAGER"), value: "MANAGER" }), a;
100
- }), ie = f(() => me(U.value)), Ee = f(() => new Set(U.value.map(Q))), Re = f(() => new Set(
98
+ }), ie = f(() => me(U.value)), Ee = f(() => new Set(U.value.map(Q))), Te = f(() => new Set(
101
99
  U.value.filter((a) => a.subjectType === "LINE").map((a) => a.subjectId)
102
- )), Te = f(() => $.value.map((a) => ({
100
+ )), Re = f(() => $.value.map((a) => ({
103
101
  ...a,
104
102
  disabled: a.disabled || Ee.value.has(Q(a))
105
- }))), Ie = f(() => qe($.value, Re.value)), Z = f(() => g.value === "LINE" ? Array.from(new Set(O.value.map((a) => a[a.length - 1]).filter(Boolean))) : Array.from(new Set(R.value.filter(Boolean)))), Ce = f(() => g.value === "USER" ? "搜索用户" : g.value === "LINE" ? "搜索条线" : "搜索空间"), ee = f(() => {
103
+ }))), Ie = f(() => qe($.value, Te.value)), Z = f(() => g.value === "LINE" ? Array.from(new Set(V.value.map((a) => a[a.length - 1]).filter(Boolean))) : Array.from(new Set(T.value.filter(Boolean)))), Ce = f(() => g.value === "USER" ? "搜索用户" : g.value === "LINE" ? "搜索条线" : "搜索空间"), ee = f(() => {
106
104
  const a = b.value.trim().toLowerCase();
107
105
  return a ? ie.value.filter((e) => {
108
106
  var u;
@@ -116,20 +114,20 @@ const Qe = { class: "code-repository-share__header" }, Xe = { class: "code-repos
116
114
  a.some((u) => u.value === g.value) || (g.value = ((e = a[0]) == null ? void 0 : e.value) || "USER");
117
115
  }, { immediate: !0 });
118
116
  function ue() {
119
- p("update:modelValue", !1);
117
+ v("update:modelValue", !1);
120
118
  }
121
119
  async function H() {
122
- N.value = !0;
120
+ O.value = !0;
123
121
  try {
124
122
  U.value = await o.adapter.listPermissions(o.resource.id);
125
123
  } catch (a) {
126
- C.error(W(a, "协作者加载失败"));
124
+ C.error(x(a, "协作者加载失败"));
127
125
  } finally {
128
- N.value = !1;
126
+ O.value = !1;
129
127
  }
130
128
  }
131
129
  async function F(a) {
132
- M.value = !0;
130
+ z.value = !0;
133
131
  try {
134
132
  $.value = await o.adapter.searchSubjects({
135
133
  subjectType: g.value,
@@ -137,15 +135,15 @@ const Qe = { class: "code-repository-share__header" }, Xe = { class: "code-repos
137
135
  resourceId: o.resource.id
138
136
  });
139
137
  } catch (e) {
140
- C.error(W(e, "候选对象加载失败"));
138
+ C.error(x(e, "候选对象加载失败"));
141
139
  } finally {
142
- M.value = !1;
140
+ z.value = !1;
143
141
  }
144
142
  }
145
143
  function Se() {
146
- R.value = [], O.value = [], z.value += 1, F("");
144
+ T.value = [], V.value = [], W.value += 1, F("");
147
145
  }
148
- async function Oe() {
146
+ async function Ve() {
149
147
  if (Z.value.length) {
150
148
  c.value = !0;
151
149
  try {
@@ -154,15 +152,15 @@ const Qe = { class: "code-repository-share__header" }, Xe = { class: "code-repos
154
152
  subjectType: g.value,
155
153
  subjectId: a,
156
154
  role: K.value
157
- }))), R.value = [], O.value = [], z.value += 1, C.success("协作者已添加"), p("saved"), await H(), await F("");
155
+ }))), T.value = [], V.value = [], W.value += 1, C.success("协作者已添加"), v("saved"), await H(), await F("");
158
156
  } catch (a) {
159
- C.error(W(a, "协作者添加失败"));
157
+ C.error(x(a, "协作者添加失败"));
160
158
  } finally {
161
159
  c.value = !1;
162
160
  }
163
161
  }
164
162
  }
165
- async function Ne(a, e) {
163
+ async function Oe(a, e) {
166
164
  if (e === Ua) {
167
165
  h.value = a, I.value = !0;
168
166
  return;
@@ -171,7 +169,7 @@ const Qe = { class: "code-repository-share__header" }, Xe = { class: "code-repos
171
169
  h.value = a, G.value = "KEEP", J.value = "MANAGER", D.value = !0;
172
170
  return;
173
171
  }
174
- if (e !== Wa && !(e === "OWNER" || e === a.role)) {
172
+ if (e !== xa && !(e === "OWNER" || e === a.role)) {
175
173
  c.value = !0;
176
174
  try {
177
175
  await o.adapter.updatePermissionRole({
@@ -179,16 +177,16 @@ const Qe = { class: "code-repository-share__header" }, Xe = { class: "code-repos
179
177
  subjectType: a.subjectType,
180
178
  subjectId: a.subjectId,
181
179
  role: e
182
- }), C.success("权限已更新"), p("saved"), await H();
180
+ }), C.success("权限已更新"), v("saved"), await H();
183
181
  } catch (u) {
184
- C.error(W(u, "权限更新失败"));
182
+ C.error(x(u, "权限更新失败"));
185
183
  } finally {
186
184
  c.value = !1;
187
185
  }
188
186
  }
189
187
  }
190
- function Ve(a, e) {
191
- typeof e == "string" && Ne(a, e);
188
+ function Ne(a, e) {
189
+ typeof e == "string" && Oe(a, e);
192
190
  }
193
191
  async function ke() {
194
192
  if (h.value) {
@@ -198,9 +196,9 @@ const Qe = { class: "code-repository-share__header" }, Xe = { class: "code-repos
198
196
  resourceId: o.resource.id,
199
197
  subjectType: h.value.subjectType,
200
198
  subjectId: h.value.subjectId
201
- }), I.value = !1, h.value = null, C.success("协作者已移除"), p("saved"), await H(), await F("");
199
+ }), I.value = !1, h.value = null, C.success("协作者已移除"), v("saved"), await H(), await F("");
202
200
  } catch (a) {
203
- C.error(W(a, "协作者移除失败"));
201
+ C.error(x(a, "协作者移除失败"));
204
202
  } finally {
205
203
  c.value = !1;
206
204
  }
@@ -215,9 +213,9 @@ const Qe = { class: "code-repository-share__header" }, Xe = { class: "code-repos
215
213
  subjectType: h.value.subjectType,
216
214
  subjectId: h.value.subjectId,
217
215
  previousOwnerRole: G.value === "REMOVE" ? void 0 : J.value
218
- }), D.value = !1, h.value = null, C.success("所有权已转移"), p("saved"), await H();
216
+ }), D.value = !1, h.value = null, C.success("所有权已转移"), v("saved"), await H();
219
217
  } catch (a) {
220
- C.error(W(a, "所有权转移失败"));
218
+ C.error(x(a, "所有权转移失败"));
221
219
  } finally {
222
220
  c.value = !1;
223
221
  }
@@ -254,10 +252,10 @@ const Qe = { class: "code-repository-share__header" }, Xe = { class: "code-repos
254
252
  function De(a) {
255
253
  return le(a) || oe(a);
256
254
  }
257
- function We(a) {
255
+ function xe(a) {
258
256
  return a === "USER" ? "code-repository-share__type-tag--user" : a === "SPACE" ? "code-repository-share__type-tag--space" : "code-repository-share__type-tag--line";
259
257
  }
260
- function xe(a, e) {
258
+ function Be(a, e) {
261
259
  const u = e.trim().toLowerCase();
262
260
  if (!u) return !0;
263
261
  const _ = a.data, se = Array.isArray(a.pathLabels) ? a.pathLabels : [];
@@ -268,11 +266,11 @@ const Qe = { class: "code-repository-share__header" }, Xe = { class: "code-repos
268
266
  ...se
269
267
  ].filter(Boolean).join(" ").toLowerCase().includes(u);
270
268
  }
271
- function W(a, e) {
269
+ function x(a, e) {
272
270
  return a instanceof Error && a.message ? a.message : e;
273
271
  }
274
272
  return (a, e) => {
275
- const u = m("el-icon"), _ = m("el-button"), se = m("el-alert"), ve = m("el-radio-button"), pe = m("el-radio-group"), _e = m("el-tooltip"), P = m("el-option"), Y = m("el-select"), Be = m("el-cascader"), Me = m("el-input"), ze = m("el-empty"), ye = m("el-dialog"), fe = m("el-radio"), Ke = m("el-drawer"), $e = He("loading");
273
+ const u = m("el-icon"), _ = m("el-button"), se = m("el-alert"), ve = m("el-radio-button"), pe = m("el-radio-group"), _e = m("el-tooltip"), P = m("el-option"), Y = m("el-select"), Me = m("el-cascader"), ze = m("el-input"), We = m("el-empty"), ye = m("el-dialog"), fe = m("el-radio"), Ke = m("el-drawer"), $e = He("loading");
276
274
  return n(), w(Ke, {
277
275
  "model-value": t.modelValue,
278
276
  size: t.drawerSize,
@@ -317,7 +315,7 @@ const Qe = { class: "code-repository-share__header" }, Xe = { class: "code-repos
317
315
  "show-icon": "",
318
316
  closable: !1,
319
317
  class: "code-repository-share__alert"
320
- }, null, 8, ["title"])) : x("", !0),
318
+ }, null, 8, ["title"])) : B("", !0),
321
319
  s("section", la, [
322
320
  s("div", oa, [
323
321
  s("span", sa, y(A.value.addSectionTitle), 1),
@@ -329,7 +327,7 @@ const Qe = { class: "code-repository-share__header" }, Xe = { class: "code-repos
329
327
  onChange: Se
330
328
  }, {
331
329
  default: r(() => [
332
- (n(!0), j(L, null, B(X.value, (l) => (n(), w(ve, {
330
+ (n(!0), j(L, null, M(X.value, (l) => (n(), w(ve, {
333
331
  key: l.value,
334
332
  value: l.value
335
333
  }, {
@@ -347,8 +345,8 @@ const Qe = { class: "code-repository-share__header" }, Xe = { class: "code-repos
347
345
  s("div", da, [
348
346
  g.value !== "LINE" ? (n(), w(Y, {
349
347
  key: 0,
350
- modelValue: R.value,
351
- "onUpdate:modelValue": e[1] || (e[1] = (l) => R.value = l),
348
+ modelValue: T.value,
349
+ "onUpdate:modelValue": e[1] || (e[1] = (l) => T.value = l),
352
350
  multiple: "",
353
351
  filterable: "",
354
352
  remote: "",
@@ -356,7 +354,7 @@ const Qe = { class: "code-repository-share__header" }, Xe = { class: "code-repos
356
354
  "collapse-tags": "",
357
355
  "collapse-tags-tooltip": "",
358
356
  "remote-method": F,
359
- loading: M.value,
357
+ loading: z.value,
360
358
  disabled: t.readonly || c.value,
361
359
  placeholder: Ce.value,
362
360
  "reserve-keyword": !1,
@@ -366,7 +364,7 @@ const Qe = { class: "code-repository-share__header" }, Xe = { class: "code-repos
366
364
  s("div", na, "暂无匹配" + y(ce(g.value)), 1)
367
365
  ]),
368
366
  default: r(() => [
369
- (n(!0), j(L, null, B(Te.value, (l) => (n(), w(P, {
367
+ (n(!0), j(L, null, M(Re.value, (l) => (n(), w(P, {
370
368
  key: `${l.subjectType}:${l.subjectId}`,
371
369
  label: l.subjectName,
372
370
  value: l.subjectId,
@@ -383,7 +381,7 @@ const Qe = { class: "code-repository-share__header" }, Xe = { class: "code-repos
383
381
  class: te(["code-repository-share__candidate-option", { "is-added": l.disabled }])
384
382
  }, [
385
383
  s("span", ia, y(l.subjectName), 1),
386
- l.disabled ? (n(), j("span", ua, " 已添加 ")) : x("", !0)
384
+ l.disabled ? (n(), j("span", ua, " 已添加 ")) : B("", !0)
387
385
  ], 2)
388
386
  ]),
389
387
  _: 2
@@ -393,10 +391,10 @@ const Qe = { class: "code-repository-share__header" }, Xe = { class: "code-repos
393
391
  }, 1032, ["label", "value", "disabled"]))), 128))
394
392
  ]),
395
393
  _: 1
396
- }, 8, ["modelValue", "loading", "disabled", "placeholder"])) : (n(), w(Be, {
397
- key: z.value,
398
- modelValue: O.value,
399
- "onUpdate:modelValue": e[2] || (e[2] = (l) => O.value = l),
394
+ }, 8, ["modelValue", "loading", "disabled", "placeholder"])) : (n(), w(Me, {
395
+ key: W.value,
396
+ modelValue: V.value,
397
+ "onUpdate:modelValue": e[2] || (e[2] = (l) => V.value = l),
400
398
  class: "code-repository-share__candidate-select code-repository-share__line-cascader add-member-line-cascader",
401
399
  style: { width: "100%" },
402
400
  placeholder: "请选择条线",
@@ -404,7 +402,7 @@ const Qe = { class: "code-repository-share__header" }, Xe = { class: "code-repos
404
402
  props: we,
405
403
  disabled: t.readonly || c.value,
406
404
  filterable: "",
407
- "filter-method": xe,
405
+ "filter-method": Be,
408
406
  clearable: "",
409
407
  "collapse-tags": "",
410
408
  "collapse-tags-tooltip": "",
@@ -421,7 +419,7 @@ const Qe = { class: "code-repository-share__header" }, Xe = { class: "code-repos
421
419
  class: te(["code-repository-share__candidate-option", { "is-added": l.isAdded }])
422
420
  }, [
423
421
  s("span", ca, y(l.label), 1),
424
- l.isAdded ? (n(), j("span", va, " 已添加 ")) : x("", !0)
422
+ l.isAdded ? (n(), j("span", va, " 已添加 ")) : B("", !0)
425
423
  ], 2)
426
424
  ]),
427
425
  _: 2
@@ -438,7 +436,7 @@ const Qe = { class: "code-repository-share__header" }, Xe = { class: "code-repos
438
436
  class: "code-repository-share__add-role-select"
439
437
  }, {
440
438
  default: r(() => [
441
- (n(!0), j(L, null, B(ne.value, (l) => (n(), w(P, {
439
+ (n(!0), j(L, null, M(ne.value, (l) => (n(), w(P, {
442
440
  key: l.value,
443
441
  label: l.label,
444
442
  value: l.value,
@@ -454,7 +452,7 @@ const Qe = { class: "code-repository-share__header" }, Xe = { class: "code-repos
454
452
  class: "code-repository-share__add-button",
455
453
  loading: c.value,
456
454
  disabled: t.readonly || !Z.value.length,
457
- onClick: Oe
455
+ onClick: Ve
458
456
  }, {
459
457
  default: r(() => [...e[14] || (e[14] = [
460
458
  E(" 添加 ", -1)
@@ -468,7 +466,7 @@ const Qe = { class: "code-repository-share__header" }, Xe = { class: "code-repos
468
466
  E(y(A.value.collaboratorTitle) + " ", 1),
469
467
  s("span", null, "(" + y(ee.value.length) + ")", 1)
470
468
  ]),
471
- d(Me, {
469
+ d(ze, {
472
470
  modelValue: b.value,
473
471
  "onUpdate:modelValue": e[4] || (e[4] = (l) => b.value = l),
474
472
  modelModifiers: { trim: !0 },
@@ -489,14 +487,14 @@ const Qe = { class: "code-repository-share__header" }, Xe = { class: "code-repos
489
487
  s("div", fa, [
490
488
  ee.value.length ? (n(), j(L, { key: 0 }, [
491
489
  s("div", ba, [
492
- (n(!0), j(L, null, B(ee.value, (l) => (n(), j("div", {
490
+ (n(!0), j(L, null, M(ee.value, (l) => (n(), j("div", {
493
491
  key: `${l.subjectType}:${l.subjectId}`,
494
492
  class: "code-repository-share__collaborator-row"
495
493
  }, [
496
494
  s("div", ha, [
497
495
  s("div", ma, [
498
496
  s("span", {
499
- class: te(["code-repository-share__type-tag", We(l.subjectType)])
497
+ class: te(["code-repository-share__type-tag", xe(l.subjectType)])
500
498
  }, y(ce(l.subjectType) || "--"), 3),
501
499
  s("span", ga, y(l.subjectName || "--"), 1)
502
500
  ])
@@ -507,14 +505,14 @@ const Qe = { class: "code-repository-share__header" }, Xe = { class: "code-repos
507
505
  class: "code-repository-share__row-role-select",
508
506
  "popper-class": "code-repository-share__role-dropdown",
509
507
  disabled: Ue(l),
510
- onChange: (V) => Ve(l, V)
508
+ onChange: (N) => Ne(l, N)
511
509
  }, {
512
510
  default: r(() => [
513
- (n(!0), j(L, null, B(Pe(l), (V) => (n(), w(P, {
514
- key: V.value,
515
- label: V.label,
516
- value: V.value,
517
- disabled: V.disabled
511
+ (n(!0), j(L, null, M(Pe(l), (N) => (n(), w(P, {
512
+ key: N.value,
513
+ label: N.label,
514
+ value: N.value,
515
+ disabled: N.disabled
518
516
  }, null, 8, ["label", "value", "disabled"]))), 128)),
519
517
  De(l) ? (n(), w(P, {
520
518
  key: 0,
@@ -525,12 +523,12 @@ const Qe = { class: "code-repository-share__header" }, Xe = { class: "code-repos
525
523
  s("div", { class: "code-repository-share__role-divider" }, null, -1)
526
524
  ])]),
527
525
  _: 1
528
- })) : x("", !0),
526
+ })) : B("", !0),
529
527
  oe(l) ? (n(), w(P, {
530
528
  key: 1,
531
529
  label: "转移所有权",
532
530
  value: "__transfer__"
533
- })) : x("", !0),
531
+ })) : B("", !0),
534
532
  le(l) ? (n(), w(P, {
535
533
  key: 2,
536
534
  label: "移除",
@@ -540,7 +538,7 @@ const Qe = { class: "code-repository-share__header" }, Xe = { class: "code-repos
540
538
  s("span", { class: "code-repository-share__danger-option" }, "移除", -1)
541
539
  ])]),
542
540
  _: 1
543
- })) : x("", !0)
541
+ })) : B("", !0)
544
542
  ]),
545
543
  _: 2
546
544
  }, 1032, ["model-value", "disabled", "onChange"])
@@ -548,7 +546,7 @@ const Qe = { class: "code-repository-share__header" }, Xe = { class: "code-repos
548
546
  ]),
549
547
  e[17] || (e[17] = s("div", { class: "code-repository-share__collaborator-footer" }, "已显示全部协作者", -1))
550
548
  ], 64)) : (n(), j("div", wa, [
551
- d(ze, {
549
+ d(We, {
552
550
  description: A.value.emptyCollaborators,
553
551
  "image-size": 72
554
552
  }, null, 8, ["description"])
@@ -556,7 +554,7 @@ const Qe = { class: "code-repository-share__header" }, Xe = { class: "code-repos
556
554
  ])
557
555
  ])
558
556
  ])), [
559
- [$e, N.value]
557
+ [$e, O.value]
560
558
  ]),
561
559
  d(ye, {
562
560
  modelValue: I.value,
@@ -572,14 +570,14 @@ const Qe = { class: "code-repository-share__header" }, Xe = { class: "code-repos
572
570
  return [
573
571
  s("div", ja, [
574
572
  s("div", Ea, [
575
- s("div", Ra, y(A.value.removeTitle), 1),
576
- s("div", Ta, " 移除后," + y(((l = h.value) == null ? void 0 : l.subjectName) || "--") + " 将失去当前资源的协作权限。 ", 1)
573
+ s("div", Ta, y(A.value.removeTitle), 1),
574
+ s("div", Ra, " 移除后," + y(((l = h.value) == null ? void 0 : l.subjectName) || "--") + " 将失去当前资源的协作权限。 ", 1)
577
575
  ]),
578
576
  d(_, {
579
577
  link: "",
580
578
  class: "code-repository-share__close-button",
581
579
  "aria-label": "关闭移除确认",
582
- onClick: e[5] || (e[5] = (V) => I.value = !1)
580
+ onClick: e[5] || (e[5] = (N) => I.value = !1)
583
581
  }, {
584
582
  default: r(() => [
585
583
  d(u, { size: 16 }, {
@@ -634,10 +632,10 @@ const Qe = { class: "code-repository-share__header" }, Xe = { class: "code-repos
634
632
  return [
635
633
  s("div", Ca, [
636
634
  s("div", Sa, [
637
- s("div", Oa, y(A.value.transferTitle), 1),
638
- s("div", Na, [
635
+ s("div", Va, y(A.value.transferTitle), 1),
636
+ s("div", Oa, [
639
637
  e[20] || (e[20] = E(" 你将把所有权转移给 ", -1)),
640
- s("span", Va, y(((l = h.value) == null ? void 0 : l.subjectName) || "--"), 1),
638
+ s("span", Na, y(((l = h.value) == null ? void 0 : l.subjectName) || "--"), 1),
641
639
  e[21] || (e[21] = E(" ,转移后你将不再是此资源的所有者。 ", -1))
642
640
  ])
643
641
  ]),
@@ -645,7 +643,7 @@ const Qe = { class: "code-repository-share__header" }, Xe = { class: "code-repos
645
643
  link: "",
646
644
  class: "code-repository-share__close-button",
647
645
  "aria-label": "关闭所有权转移确认",
648
- onClick: e[8] || (e[8] = (V) => D.value = !1)
646
+ onClick: e[8] || (e[8] = (N) => D.value = !1)
649
647
  }, {
650
648
  default: r(() => [
651
649
  d(u, { size: 16 }, {
@@ -706,7 +704,7 @@ const Qe = { class: "code-repository-share__header" }, Xe = { class: "code-repos
706
704
  disabled: G.value !== "KEEP"
707
705
  }, {
708
706
  default: r(() => [
709
- (n(!0), j(L, null, B(je.value, (l) => (n(), w(P, {
707
+ (n(!0), j(L, null, M(je.value, (l) => (n(), w(P, {
710
708
  key: l.value,
711
709
  label: l.label,
712
710
  value: l.value,
@@ -737,39 +735,39 @@ const Qe = { class: "code-repository-share__header" }, Xe = { class: "code-repos
737
735
  }, 8, ["model-value", "size"]);
738
736
  };
739
737
  }
740
- }), Ba = (t, v) => {
738
+ }), Ma = (t, p) => {
741
739
  const o = t.__vccOpts || t;
742
- for (const [p, T] of v)
743
- o[p] = T;
740
+ for (const [v, R] of p)
741
+ o[v] = R;
744
742
  return o;
745
- }, $a = /* @__PURE__ */ Ba(xa, [["__scopeId", "data-v-fffe5d72"]]);
743
+ }, $a = /* @__PURE__ */ Ma(Ba, [["__scopeId", "data-v-fffe5d72"]]);
746
744
  function Ga(t) {
747
- const v = i(!1), o = i(!1), p = i(""), T = i("USER"), S = i([]), k = i("VIEWER"), N = i([]), c = i([]), M = f(() => me(N.value)), g = f(() => Ye(c.value, N.value));
748
- async function R() {
749
- v.value = !0;
745
+ const p = i(!1), o = i(!1), v = i(""), R = i("USER"), S = i([]), k = i("VIEWER"), O = i([]), c = i([]), z = f(() => me(O.value)), g = f(() => Ye(c.value, O.value));
746
+ async function T() {
747
+ p.value = !0;
750
748
  try {
751
- N.value = await t.adapter.listPermissions(t.resourceId);
749
+ O.value = await t.adapter.listPermissions(t.resourceId);
752
750
  } finally {
753
- v.value = !1;
751
+ p.value = !1;
754
752
  }
755
753
  }
756
- async function O() {
754
+ async function V() {
757
755
  c.value = await t.adapter.searchSubjects({
758
- subjectType: T.value,
759
- keyword: p.value,
756
+ subjectType: R.value,
757
+ keyword: v.value,
760
758
  resourceId: t.resourceId
761
759
  });
762
760
  }
763
- async function z() {
761
+ async function W() {
764
762
  if (S.value.length) {
765
763
  o.value = !0;
766
764
  try {
767
765
  await Promise.all(S.value.map((b) => t.adapter.grantPermission({
768
766
  resourceId: t.resourceId,
769
- subjectType: T.value,
767
+ subjectType: R.value,
770
768
  subjectId: b,
771
769
  role: k.value
772
- }))), S.value = [], p.value = "", await R(), await O();
770
+ }))), S.value = [], v.value = "", await T(), await V();
773
771
  } finally {
774
772
  o.value = !1;
775
773
  }
@@ -783,7 +781,7 @@ function Ga(t) {
783
781
  subjectType: b.subjectType,
784
782
  subjectId: b.subjectId,
785
783
  role: I
786
- }), await R();
784
+ }), await T();
787
785
  } finally {
788
786
  o.value = !1;
789
787
  }
@@ -795,7 +793,7 @@ function Ga(t) {
795
793
  resourceId: t.resourceId,
796
794
  subjectType: b.subjectType,
797
795
  subjectId: b.subjectId
798
- }), await R(), await O();
796
+ }), await T(), await V();
799
797
  } finally {
800
798
  o.value = !1;
801
799
  }
@@ -809,26 +807,26 @@ function Ga(t) {
809
807
  subjectType: b.subjectType,
810
808
  subjectId: b.subjectId,
811
809
  previousOwnerRole: I
812
- }), await R();
810
+ }), await T();
813
811
  } finally {
814
812
  o.value = !1;
815
813
  }
816
814
  }
817
815
  }
818
816
  return {
819
- loading: v,
817
+ loading: p,
820
818
  saving: o,
821
- keyword: p,
822
- subjectType: T,
819
+ keyword: v,
820
+ subjectType: R,
823
821
  selectedSubjectIds: S,
824
822
  selectedRole: k,
825
- permissions: N,
823
+ permissions: O,
826
824
  candidates: c,
827
- sortedPermissions: M,
825
+ sortedPermissions: z,
828
826
  availableCandidates: g,
829
- loadPermissions: R,
830
- searchCandidates: O,
831
- grantSelected: z,
827
+ loadPermissions: T,
828
+ searchCandidates: V,
829
+ grantSelected: W,
832
830
  updateRole: K,
833
831
  revoke: U,
834
832
  transferOwner: $
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rzyuan/hrbac-share",
3
- "version": "0.1.7",
3
+ "version": "0.1.8",
4
4
  "description": "Vue HRBAC share drawer with adapter-based permission operations.",
5
5
  "type": "module",
6
6
  "license": "MIT",