4 lines
12 KiB
JavaScript
4 lines
12 KiB
JavaScript
import{v as L,d as le,g as ie,j as oe,k as ue,l as Q,o as _,a as O,p as P,B as V,q as te,s,C as M,D,P as ae,bG as de,x as ce,c as w,z as fe,S as ve,n as pe,T as U,h as me,m as ne,L as Y,Q as ge,a0 as he,a1 as ye,a4 as be,w as F,bt as xe,e as $,af as N,ac as E,W as ke,F as J,am as X,r as Ce,ab as Z,ag as Te,f as ee}from"./CAXEY8cS.js";import{f as G}from"./B_GNH4Js.js";import{R as Ke}from"./B3IStV0v.js";import Se from"./DxcerbLB.js";function Ae(f,K){const e=L(),b=(l,g)=>{if(K.multiple&&Array.isArray(f.value))if(K.selectionBehavior==="replace")f.value=[l],e.value=l;else{const S=f.value.findIndex(p=>g(p));S!==-1?f.value=f.value.filter((p,v)=>v!==S):f.value=[...f.value,l]}else K.selectionBehavior==="replace"?f.value={...l}:!Array.isArray(f.value)&&g(f.value)?f.value=void 0:f.value={...l};return f.value};function B(l,g,S,p){if(!e?.value||!K.multiple||!Array.isArray(f.value))return;const I=S().filter(A=>A.ref.dataset.disabled!=="").find(A=>A.ref===g)?.value;if(!I)return;let x=null;switch(l){case"prev":case"next":{x=G(p,e.value,I);break}case"first":{x=G(p,e.value,p?.[0]);break}case"last":{x=G(p,e.value,p?.[p.length-1]);break}}f.value=x}return{firstValue:e,onSelectItem:b,handleMultipleReplace:B}}function W(f){return f.reduce((K,e)=>(K.push(e),e.children&&K.push(...W(e.children)),K),[])}const[Ie,Ee]=fe("TreeRoot");var _e=le({__name:"TreeRoot",props:{modelValue:{type:null,required:!1},defaultValue:{type:null,required:!1},items:{type:Array,required:!1},expanded:{type:Array,required:!1},defaultExpanded:{type:Array,required:!1},getKey:{type:Function,required:!0},getChildren:{type:Function,required:!1,default:f=>f.children},selectionBehavior:{type:String,required:!1,default:"toggle"},multiple:{type:Boolean,required:!1,skipCheck:!0},dir:{type:String,required:!1},disabled:{type:Boolean,required:!1},propagateSelect:{type:Boolean,required:!1},bubbleSelect:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"ul"}},emits:["update:modelValue","update:expanded"],setup(f,{emit:K}){const e=f,b=K,{items:B,multiple:l,disabled:g,propagateSelect:S,dir:p,bubbleSelect:v}=ie(e),{handleTypeaheadSearch:I}=oe(),x=ue(p),A=L(),R=L(!1),q=ce(),d=Q(e,"modelValue",b,{defaultValue:e.defaultValue??(l.value?[]:void 0),passive:!0,deep:!0}),C=Q(e,"expanded",b,{defaultValue:e.defaultExpanded??[],passive:e.expanded===void 0,deep:!0}),{onSelectItem:a,handleMultipleReplace:i}=Ae(d,e),c=w(()=>l.value&&Array.isArray(d.value)?d.value.map(t=>e.getKey(t)):[e.getKey(d.value??{})]);function r(t,n=1,k){return t.reduce((y,T,j)=>{const H=e.getKey(T),z=e.getChildren(T),re=C.value.includes(H),se={_id:H,value:T,index:j,level:n,parentItem:k,hasChildren:!!z,bind:{value:T,level:n,"aria-setsize":t.length,"aria-posinset":j+1}};return y.push(se),z&&re&&y.push(...r(z,n+1,T)),y},[])}const u=w(()=>{const t=e.items;return C.value.map(n=>n),r(t??[])});function o(t){if(R.value)q.trigger(t);else{const n=A.value?.getItems()??[];I(t.key,n)}}function m(t){if(R.value)return;const n=ve[t.key];pe(()=>{i(n,U(),A.value?.getItems,u.value.map(k=>k.value))})}function h(t){if(t.parentItem!=null&&Array.isArray(d.value)&&e.multiple){const n=u.value.find(k=>t.parentItem!=null&&e.getKey(k.value)===e.getKey(t.parentItem));n!=null&&(e.getChildren(n.value)?.every(y=>d.value.find(T=>e.getKey(T)===e.getKey(y)))?d.value=[...d.value,n.value]:d.value=d.value.filter(y=>e.getKey(y)!==e.getKey(n.value)),h(n))}}return Ee({modelValue:d,selectedKeys:c,onSelect:t=>{const n=y=>e.getKey(y??{})===e.getKey(t),k=e.multiple&&Array.isArray(d.value)?d.value?.findIndex(n)!==-1:void 0;if(a(t,n),e.bubbleSelect&&e.multiple&&Array.isArray(d.value)){const y=u.value.find(T=>e.getKey(T.value)===e.getKey(t));y!=null&&h(y)}if(e.propagateSelect&&e.multiple&&Array.isArray(d.value)){const y=W(e.getChildren(t)??[]);k?d.value=[...d.value].filter(T=>!y.some(j=>e.getKey(T??{})===e.getKey(j))):d.value=[...d.value,...y]}},expanded:C,onToggle(t){if(!(t?e.getChildren(t):void 0))return;const k=e.getKey(t)??t;C.value.includes(k)?C.value=C.value.filter(y=>y!==k):C.value=[...C.value,k]},getKey:e.getKey,getChildren:e.getChildren,items:B,expandedItems:u,disabled:g,multiple:l,dir:x,propagateSelect:S,bubbleSelect:v,isVirtual:R,virtualKeydownHook:q,handleMultipleReplace:i}),(t,n)=>(_(),O(s(de),{ref_key:"rovingFocusGroupRef",ref:A,"as-child":"",orientation:"vertical",dir:s(x)},{default:P(()=>[V(s(ae),{role:"tree",as:t.as,"as-child":t.asChild,"aria-multiselectable":s(l)?!0:void 0,onKeydown:[o,M(D(m,["shift"]),["up","down"])]},{default:P(()=>[te(t.$slots,"default",{flattenItems:u.value,modelValue:s(d),expanded:s(C)})]),_:3},8,["as","as-child","aria-multiselectable","onKeydown"])]),_:3},8,["dir"]))}}),qe=_e;const we="tree.select",Be="tree.toggle";var Re=le({inheritAttrs:!1,__name:"TreeItem",props:{value:{type:null,required:!0},level:{type:Number,required:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"li"}},emits:["select","toggle"],setup(f,{expose:K,emit:e}){const b=f,B=e,l=Ie(),{getItems:g}=me(),S=w(()=>!!l.getChildren(b.value)),p=w(()=>{const a=l.getKey(b.value);return l.expanded.value.includes(a)}),v=w(()=>{const a=l.getKey(b.value);return l.selectedKeys.value.includes(a)}),I=w(()=>{if(l.bubbleSelect.value&&S.value&&Array.isArray(l.modelValue.value)){const a=W(l.getChildren(b.value)||[]);return a.some(i=>l.modelValue.value.find(c=>l.getKey(c)===l.getKey(i)))&&!a.every(i=>l.modelValue.value.find(c=>l.getKey(c)===l.getKey(i)))}else return l.propagateSelect.value&&v.value&&S.value&&Array.isArray(l.modelValue.value)?!W(l.getChildren(b.value)||[]).every(i=>l.modelValue.value.find(c=>l.getKey(c)===l.getKey(i))):void 0});function x(a){if(S.value)if(p.value){const i=g().map(m=>m.ref),c=U(),r=i.indexOf(c),o=[...i].slice(r).find(m=>Number(m.getAttribute("data-indent"))===b.level+1);o&&o.focus()}else C(a)}function A(a){if(p.value)C(a);else{const i=g().map(m=>m.ref),c=U(),r=i.indexOf(c),o=[...i].slice(0,r).reverse().find(m=>Number(m.getAttribute("data-indent"))===b.level-1);o&&o.focus()}}async function R(a){B("select",a),!a?.defaultPrevented&&l.onSelect(b.value)}async function q(a){B("toggle",a),!a?.defaultPrevented&&l.onToggle(b.value)}async function d(a){if(!a)return;const i={originalEvent:a,value:b.value,isExpanded:p.value,isSelected:v.value};Y(we,R,i)}async function C(a){if(!a)return;const i={originalEvent:a,value:b.value,isExpanded:p.value,isSelected:v.value};Y(Be,q,i)}return K({isExpanded:p,isSelected:v,isIndeterminate:I,handleToggle:()=>l.onToggle(b.value),handleSelect:()=>l.onSelect(b.value)}),(a,i)=>(_(),O(s(Ke),{"as-child":"",value:a.value,"allow-shift-key":""},{default:P(()=>[V(s(ae),ne(a.$attrs,{role:"treeitem",as:a.as,"as-child":a.asChild,"aria-selected":v.value,"aria-expanded":S.value?p.value:void 0,"aria-level":a.level,"data-indent":a.level,"data-selected":v.value?"":void 0,"data-expanded":p.value?"":void 0,onKeydown:[M(D(d,["self","prevent"]),["enter","space"]),i[0]||(i[0]=M(D(c=>s(l).dir.value==="ltr"?x(c):A(c),["prevent"]),["right"])),i[1]||(i[1]=M(D(c=>s(l).dir.value==="ltr"?A(c):x(c),["prevent"]),["left"]))],onClick:i[2]||(i[2]=D(c=>{d(c),C(c)},["stop"]))}),{default:P(()=>[te(a.$slots,"default",{isExpanded:p.value,isSelected:v.value,isIndeterminate:I.value,handleSelect:()=>s(l).onSelect(a.value),handleToggle:()=>s(l).onToggle(a.value)})]),_:3},16,["as","as-child","aria-selected","aria-expanded","aria-level","data-indent","data-selected","data-expanded","onKeydown"])]),_:3},8,["value"]))}}),Ve=Re;const Le={slots:{root:"relative lg:h-[450px] my-5 grid lg:grid-cols-3 border border-muted rounded-md",list:"isolate relative p-2 border-b lg:border-b-0 lg:border-e border-muted overflow-y-auto",item:"",listWithChildren:"ms-4.5 border-s border-default",itemWithChildren:"ps-1.5 -ms-px",link:"relative group peer w-full px-2.5 py-1.5 before:inset-y-px before:inset-x-0 flex items-center gap-1.5 text-sm before:absolute before:z-[-1] before:rounded-md focus:outline-none focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2",linkLeadingIcon:"size-4 shrink-0",linkLabel:"truncate",linkTrailing:"ms-auto inline-flex gap-1.5 items-center",linkTrailingIcon:"size-5 transform transition-transform duration-200 shrink-0 group-data-expanded:rotate-180",content:"overflow-hidden lg:col-span-2 flex flex-col [&>div]:my-0 [&>div]:flex-1 [&>div]:flex [&>div]:flex-col [&>div>div]:border-0 [&>div>pre]:border-b-0 [&>div>pre]:border-s-0 [&>div>pre]:border-e-0 [&>div>pre]:rounded-l-none [&>div>pre]:flex-1 [&>div]:overflow-y-auto"},variants:{active:{true:{link:"text-highlighted before:bg-elevated"},false:{link:["hover:text-highlighted hover:before:bg-elevated/50","transition-colors before:transition-colors"]}}}},je=Object.assign({inheritAttrs:!1},{__name:"ProseCodeTree",props:{items:{type:Array,required:!1},modelValue:{type:String,required:!1},defaultValue:{type:String,required:!1},expandAll:{type:Boolean,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1}},emits:["update:modelValue"],setup(f,{emit:K}){const e=f,b=K,B=ge(),l=he(),g=ye("prose.codeTree",e),[S,p]=be(),v=w(()=>X({extend:X(Le),...l.ui?.prose?.codeTree||{}})()),I=e.modelValue??e.defaultValue,x=L(I?{path:I}:void 0),A=L();F(x,r=>{r?.path!==e.modelValue&&b("update:modelValue",r?.path)}),F(()=>e.modelValue,r=>{if(r===x.value?.path)return;x.value=r?{path:r}:void 0;const u=i(r);for(const o of u)c.value.includes(o)||c.value.push(o)});const R=L(1),q=w(()=>(R.value,e.items||B.default?.()?.flatMap(a).filter(Boolean)||[])),d=w(()=>C(q.value));function C(r){const u=new Map,o=[];r.forEach(h=>{const t=h.label.split("/");let n="";t.forEach((k,y)=>{if(n=n?`${n}/${k}`:k,!u.has(n)){const T={label:k,path:n,...y<t.length-1&&{children:[]}};u.set(n,T),y===0?o.push(T):u.get(t.slice(0,y).join("/"))?.children?.push(T)}})});const m=h=>h.sort((t,n)=>!!t.children==!!n.children?t.label.localeCompare(n.label):n.children?1:-1).map(t=>({...t,children:t.children&&m(t.children)}));return m(o)}function a(r,u){return typeof r.type=="symbol"?r.children?.map(a):{label:r.props?.filename||r.props?.label||`${u}`,icon:r.props?.icon,component:r}}function i(r){if(e.expandAll){const o=new Set;return q.value.forEach(m=>{const h=m.label.split("/");for(let t=1;t<h.length;t++)o.add(h.slice(0,t).join("/"))}),Array.from(o)}if(!r)return[];const u=r.split("/");return u.slice(0,-1).map((o,m)=>u.slice(0,m+1).join("/"))}const c=L(i(x.value?.path));return F(q,(r,u)=>{if(!e.expandAll)return;const o=r.map(h=>h.label).join(`
|
|
`),m=u?.map(h=>h.label).join(`
|
|
`)??"";o!==m&&(c.value=i())}),F(x,r=>{const u=q.value.find(o=>r?.path===o.label);u?.component&&(A.value=u)},{immediate:!0}),xe(()=>R.value++),(r,u)=>(_(),$(J,null,[V(s(S),null,{default:P(({items:o,level:m})=>[(_(!0),$(J,null,Ce(o,(h,t)=>(_(),$("li",{key:`${m}-${t}`,role:"presentation",class:E(m>1?v.value.itemWithChildren({class:s(g)?.itemWithChildren}):v.value.item({class:s(g)?.item}))},[V(s(Ve),{level:m,value:h,"as-child":""},{default:P(({isExpanded:n,isSelected:k})=>[N("button",{type:"button",class:E(v.value.link({class:s(g)?.link,active:k}))},[h.children?.length?(_(),O(Z,{key:0,name:n?s(l).ui.icons.folderOpen:s(l).ui.icons.folder,class:E(v.value.linkLeadingIcon({class:s(g)?.linkLeadingIcon}))},null,8,["name","class"])):(_(),O(Se,{key:1,filename:h.label,class:E(v.value.linkLeadingIcon({class:s(g)?.linkLeadingIcon}))},null,8,["filename","class"])),N("span",{class:E(v.value.linkLabel({class:s(g)?.linkLabel}))},Te(h.label),3),h.children?.length?(_(),$("span",{key:2,class:E(v.value.linkTrailing({class:s(g)?.linkTrailing}))},[V(Z,{name:s(l).ui.icons.chevronDown,class:E(v.value.linkTrailingIcon({class:s(g)?.linkTrailingIcon}))},null,8,["name","class"])],2)):ee("",!0)],2),h.children?.length&&n?(_(),$("ul",{key:0,role:"group",class:E(v.value.listWithChildren({class:s(g)?.listWithChildren}))},[V(s(p),{items:h.children,level:m+1},null,8,["items","level"])],2)):ee("",!0)]),_:2},1032,["level","value"])],2))),128))]),_:1}),N("div",ne(r.$attrs,{class:v.value.root({class:[s(g)?.root,e.class]})}),[V(s(qe),{modelValue:x.value,"onUpdate:modelValue":u[0]||(u[0]=o=>x.value=o),expanded:c.value,"onUpdate:expanded":u[1]||(u[1]=o=>c.value=o),class:E(v.value.list({class:s(g)?.list})),items:d.value,"get-key":o=>o.path},{default:P(()=>[V(s(p),{items:d.value,level:1},null,8,["items"])]),_:1},8,["modelValue","expanded","class","items","get-key"]),N("div",{class:E(v.value.content({class:s(g)?.content}))},[(_(),O(ke(A.value?.component)))],2)],16)],64))}});export{je as default};
|