@lumal/core 0.0.1-beta → 0.0.3-beta
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.
- package/CHANGELOG.md +29 -0
- package/LICENSE +21 -21
- package/README.md +22 -13
- package/dist/auth.cjs +1 -1
- package/dist/auth.js +13 -29
- package/dist/components-DCp2KGvo.js +2254 -0
- package/dist/components-oqKxhgFp.cjs +2 -0
- package/dist/components.cjs +1 -1
- package/dist/components.js +3 -3
- package/dist/{composables-C9EuCUjj.js → composables-BxZG0_RZ.js} +53 -40
- package/dist/composables-Dsl-todB.cjs +1 -0
- package/dist/composables.cjs +1 -1
- package/dist/composables.js +18 -17
- package/dist/context-Bdx-ZJbt.js +13 -0
- package/dist/context-CWQ1OO16.cjs +1 -0
- package/dist/core.css +1 -1
- package/dist/createLumalApp-BxQL77Qt.js +38 -0
- package/dist/createLumalApp-C5o7gAlu.cjs +1 -0
- package/dist/{dictionary-B7tsaVqB.js → dictionary-DnRiNaKi.js} +1 -1
- package/dist/{dictionary-ClEWtQCU.cjs → dictionary-Dt70z10M.cjs} +1 -1
- package/dist/dictionary.cjs +1 -1
- package/dist/dictionary.js +3 -3
- package/dist/index.cjs +1 -1
- package/dist/index.js +15 -58
- package/dist/{layout-C8H9wuQa.js → layout-B7yJhQXN.js} +473 -429
- package/dist/layout-BgyM9WJi.cjs +1 -0
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +1 -1
- package/dist/minimal.cjs +1 -0
- package/dist/minimal.js +10 -0
- package/dist/{permission-CCkqvnWg.js → permission-CHw9eXd8.js} +24 -34
- package/dist/permission-CoqteYAi.cjs +1 -0
- package/dist/permission.cjs +1 -1
- package/dist/permission.js +4 -3
- package/dist/request.cjs +1 -1
- package/dist/request.js +103 -80
- package/dist/router.cjs +1 -1
- package/dist/router.js +24 -21
- package/dist/src/app/createLumalAdmin.d.ts +1 -1
- package/dist/src/app/createLumalAdmin.d.ts.map +1 -1
- package/dist/src/app/createLumalApp.d.ts +7 -0
- package/dist/src/app/createLumalApp.d.ts.map +1 -0
- package/dist/src/app/types.d.ts +5 -0
- package/dist/src/app/types.d.ts.map +1 -1
- package/dist/src/auth/createAuthSession.d.ts.map +1 -1
- package/dist/src/components/crud-table/LumalCrudTable.vue.d.ts.map +1 -1
- package/dist/src/components/crud-table/useCrudData.d.ts.map +1 -1
- package/dist/src/components/crud-table/useCrudDialog.d.ts +1 -1
- package/dist/src/components/crud-table/useCrudDialog.d.ts.map +1 -1
- package/dist/src/components/schema-form/LumalSchemaForm.vue.d.ts.map +1 -1
- package/dist/src/components/schema-table/LumalSchemaTable.vue.d.ts.map +1 -1
- package/dist/src/components/schema-table/cell.d.ts +1 -1
- package/dist/src/components/schema-table/cell.d.ts.map +1 -1
- package/dist/src/composables/usePagination.d.ts.map +1 -1
- package/dist/src/dictionary/index.d.ts +1 -1
- package/dist/src/dictionary/index.d.ts.map +1 -1
- package/dist/src/dictionary/normalize.d.ts +3 -1
- package/dist/src/dictionary/normalize.d.ts.map +1 -1
- package/dist/src/dictionary/store.d.ts.map +1 -1
- package/dist/src/layout/LumalGlobalSearch.vue.d.ts.map +1 -1
- package/dist/src/layout/LumalLayout.vue.d.ts +6 -2
- package/dist/src/layout/LumalLayout.vue.d.ts.map +1 -1
- package/dist/src/layout/LumalRouterView.vue.d.ts +2 -0
- package/dist/src/layout/LumalRouterView.vue.d.ts.map +1 -1
- package/dist/src/layout/LumalTabs.vue.d.ts.map +1 -1
- package/dist/src/minimal/index.d.ts +5 -0
- package/dist/src/minimal/index.d.ts.map +1 -0
- package/dist/src/request/client.d.ts.map +1 -1
- package/dist/src/request/types.d.ts +8 -2
- package/dist/src/request/types.d.ts.map +1 -1
- package/dist/src/router/index.d.ts.map +1 -1
- package/dist/src/utils/index.d.ts +1 -1
- package/dist/src/utils/index.d.ts.map +1 -1
- package/dist/src/utils/storage.d.ts +2 -0
- package/dist/src/utils/storage.d.ts.map +1 -1
- package/dist/storage-CCBa7Qh8.cjs +1 -0
- package/dist/storage-CorgkMJU.js +41 -0
- package/dist/utils.cjs +1 -1
- package/dist/utils.js +32 -54
- package/package.json +9 -3
- package/theme-chalk/index.scss +2 -2
- package/dist/components-DJiHYQQB.cjs +0 -2
- package/dist/components-DYmKh-eF.js +0 -2206
- package/dist/composables-C4twj5Ov.cjs +0 -1
- package/dist/layout-ZnyG9X3N.cjs +0 -1
- package/dist/permission-6sXtjGMS.cjs +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));const c=require("./_plugin-vue_export-helper-BTmtiIyf.cjs");let l=require("vue"),u=require("@lumal/icons-vue"),d=require("element-plus"),f=require("vue-router"),p=require("sortablejs");p=s(p,1);function m(e,t){return e.hidden?!1:e.path===t?!0:e.children?.some(e=>m(e,t))??!1}function h(e,t){for(let n of e){if(n.hidden)continue;if(n.path===t)return n;let e=h(n.children??[],t);if(e)return e}}function g(e,t){for(let n of e){if(n.hidden)continue;if(n.path===t)return[n];let e=g(n.children??[],t);if(e.length>0)return[n,...e]}return[]}function _(e){if(!e)return``;if(e.redirect)return e.redirect;let t=e.children?.filter(e=>!e.hidden)??[];return t.length===0?e.path:_(t[0])}function v(e,t){return e.find(e=>m(e,t))?.path??``}function y(e){let{activeTopMenuPath:t=``,layout:n}=e,r=e.menus.filter(e=>!e.hidden);return n===`sidebar-nav`?{sidebarMenus:r,topMenus:[]}:n===`top-nav`?{sidebarMenus:[],topMenus:r}:{sidebarMenus:(r.find(e=>e.path===t)??r.find(e=>m(e,t)))?.children?.filter(e=>!e.hidden)??[],topMenus:r}}var b={key:0,class:`lumal-breadcrumb`,"aria-label":`面包屑`},x={class:`lumal-breadcrumb__list`},S={key:1,class:`lumal-breadcrumb__current`,"aria-current":`page`},C=[`onClick`],w=(0,l.defineComponent)({__name:`LumalBreadcrumb`,props:{activeMenuPath:{default:``},activePath:{default:``},hideOnlyOne:{type:Boolean,default:!1},homePath:{default:``},homeTitle:{default:`首页`},menus:{default:()=>[]},showHome:{type:Boolean,default:!0},showIcon:{type:Boolean,default:!0}},emits:[`select`],setup(e,{emit:t}){let n=e,r=t,i=(0,l.inject)(f.routeLocationKey,void 0);function a(e){return{icon:e.icon,path:e.path,title:e.title}}let o=(0,l.computed)(()=>{let e=i?.matched??[];return e.flatMap((t,n)=>{let r=typeof t.meta.title==`string`?t.meta.title.trim():``;if(!r||t.meta.hideInBreadcrumb===!0)return[];let a=n===e.length-1;return[{icon:typeof t.meta.icon==`string`?t.meta.icon:void 0,path:a?i?.path??t.path:t.path,title:r}]})}),s=(0,l.computed)(()=>{let e=g(n.menus,n.activePath),t=(e.length>0?e:g(n.menus,n.activeMenuPath)).map(a),r=typeof i?.meta.title==`string`?i.meta.title:``,o=typeof i?.meta.icon==`string`?i.meta.icon:void 0,s=i?.meta.hideInBreadcrumb===!0;return s&&t.at(-1)?.path===n.activePath&&t.pop(),r&&!s&&n.activePath&&n.activePath===i?.path&&!t.some(e=>e.path===n.activePath)&&t.push({icon:o,path:n.activePath,title:r}),t}),c=(0,l.computed)(()=>o.value.length>0?o.value:s.value),d=(0,l.computed)(()=>{let e=n.homePath?g(n.menus,n.homePath).at(-1):void 0,t=n.menus.find(e=>!e.hidden),r=n.homePath||_(t);if(r)return{icon:e?.icon??t?.icon,path:r,title:e?.title??n.homeTitle}}),p=(0,l.computed)(()=>{let e=[...c.value],t=d.value;return n.showHome&&t&&!e.some(e=>e.path===t.path)&&e.unshift(t),e}),m=(0,l.computed)(()=>p.value.length>0&&!(n.hideOnlyOne&&c.value.length<=1));return(t,n)=>m.value?((0,l.openBlock)(),(0,l.createElementBlock)(`nav`,b,[(0,l.createElementVNode)(`ol`,x,[((0,l.openBlock)(!0),(0,l.createElementBlock)(l.Fragment,null,(0,l.renderList)(p.value,(t,n)=>((0,l.openBlock)(),(0,l.createElementBlock)(`li`,{key:`${t.path}:${n}`,class:`lumal-breadcrumb__item`},[n>0?((0,l.openBlock)(),(0,l.createBlock)((0,l.unref)(u.LumalIcon),{key:0,class:`lumal-breadcrumb__separator`,name:`lumal:chevron-right`,size:14})):(0,l.createCommentVNode)(``,!0),n===p.value.length-1?((0,l.openBlock)(),(0,l.createElementBlock)(`span`,S,[e.showIcon&&t.icon?((0,l.openBlock)(),(0,l.createBlock)((0,l.unref)(u.LumalIcon),{key:0,name:t.icon,size:15},null,8,[`name`])):(0,l.createCommentVNode)(``,!0),(0,l.createElementVNode)(`span`,null,(0,l.toDisplayString)(t.title),1)])):((0,l.openBlock)(),(0,l.createElementBlock)(`button`,{key:2,class:`lumal-breadcrumb__link`,type:`button`,onClick:e=>r(`select`,t.path)},[e.showIcon&&t.icon?((0,l.openBlock)(),(0,l.createBlock)((0,l.unref)(u.LumalIcon),{key:0,name:t.icon,size:15},null,8,[`name`])):(0,l.createCommentVNode)(``,!0),(0,l.createElementVNode)(`span`,null,(0,l.toDisplayString)(t.title),1)],8,C))]))),128))])])):(0,l.createCommentVNode)(``,!0)}}),T=c.t(w,[[`__scopeId`,`data-v-53a036d9`]]),E=(0,l.defineComponent)({__name:`LumalContent`,setup(e,{expose:t}){let n=(0,l.useTemplateRef)(`contentRef`);return t({getContentElement:()=>n.value?.$el,getContentInstance:()=>n.value}),(e,t)=>((0,l.openBlock)(),(0,l.createBlock)((0,l.unref)(d.ElMain),{ref_key:`contentRef`,ref:n,class:`lumal-content`},{default:(0,l.withCtx)(()=>[(0,l.renderSlot)(e.$slots,`default`,{},void 0,!0)]),_:3},512))}}),ee=c.t(E,[[`__scopeId`,`data-v-a0d6361c`]]),D={class:`lumal-global-search`},O={key:0},te=[`aria-labelledby`],k={class:`lumal-global-search__header`},ne=[`id`],A={class:`lumal-global-search__input-wrap`},j=[`aria-activedescendant`,`aria-controls`,`placeholder`],M=[`id`],N=[`id`,`aria-selected`],P=[`onMouseenter`,`onClick`],re={key:0,class:`lumal-global-search__empty`,role:`status`},F=`<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="11" cy="11" r="7" stroke="currentColor" stroke-width="1.8"/><path d="m16.2 16.2 4 4" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/></svg>`,ie=(0,l.defineComponent)({__name:`LumalGlobalSearch`,props:{maxResults:{default:12},menus:{default:()=>[]},placeholder:{default:`搜索菜单`},shortcut:{type:Boolean,default:!0}},emits:[`select`],setup(e,{expose:t,emit:n}){let r=e,i=n,a=`lumal-global-search-${(0,l.useId)()}`,o=(0,l.useTemplateRef)(`inputRef`),s=(0,l.useTemplateRef)(`triggerRef`),c=(0,l.useTemplateRef)(`dialogRef`),d=(0,l.ref)(!1),f=(0,l.ref)(``),p=(0,l.ref)(0),m;function h(e,t=[]){return e.flatMap(e=>{if(e.hidden)return[];let n=[...t,e.title];return[{item:e,trail:n},...h(e.children??[],n)]})}let g=(0,l.computed)(()=>h(r.menus)),_=(0,l.computed)(()=>{let e=f.value.trim().toLocaleLowerCase();return(e?g.value.filter(({item:t,trail:n})=>`${n.join(` `)} ${t.path}`.toLocaleLowerCase().includes(e)):g.value).slice(0,Math.max(1,r.maxResults))}),v=(0,l.computed)(()=>_.value[p.value]?`${a}-option-${p.value}`:void 0);function y(){d.value||(m=document.activeElement instanceof HTMLElement?document.activeElement:void 0,d.value=!0,f.value=``,p.value=0,(0,l.nextTick)(()=>o.value?.focus()))}function b(e=!0){d.value=!1,document.removeEventListener(`focusin`,x),e&&(0,l.nextTick)(()=>{d.value||(m?.isConnected?m:s.value)?.focus()})}function x(e){d.value&&c.value&&!c.value.contains(e.target)&&o.value?.focus()}function S(e){if(e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),b()),e.key!==`Tab`)return;let t=[...c.value?.querySelectorAll(`button, input, [tabindex]`)??[]].filter(e=>e.tabIndex>=0&&!e.matches(`:disabled`)&&!e.closest(`[hidden], [inert]`)),n=t[0],r=t.at(-1);(!n||(e.shiftKey?document.activeElement===n:document.activeElement===r))&&(e.preventDefault(),(e.shiftKey?r:n)?.focus())}function C(e){e&&(i(`select`,e.item.path,e.item),b())}function w(e){if(e.key===`Escape`){e.preventDefault(),b();return}if(_.value.length!==0){if(e.key===`ArrowDown`||e.key===`ArrowUp`){e.preventDefault();let t=e.key===`ArrowDown`?1:-1;p.value=(p.value+t+_.value.length)%_.value.length;return}e.key===`Enter`&&(e.preventDefault(),C(_.value[p.value]))}}function T(e){!r.shortcut||e.altKey||e.shiftKey||e.key.toLocaleLowerCase()!==`k`||!e.ctrlKey&&!e.metaKey||(e.preventDefault(),d.value?b():y())}return(0,l.watch)(_,()=>{p.value=0}),(0,l.watch)(d,e=>{e?document.addEventListener(`focusin`,x):document.removeEventListener(`focusin`,x)}),(0,l.onMounted)(()=>{window.addEventListener(`keydown`,T)}),(0,l.onBeforeUnmount)(()=>{window.removeEventListener(`keydown`,T),document.removeEventListener(`focusin`,x),d.value&&m?.isConnected&&m.focus()}),t({close:b,open:y}),(t,n)=>((0,l.openBlock)(),(0,l.createElementBlock)(`div`,D,[(0,l.createElementVNode)(`button`,{ref_key:`triggerRef`,ref:s,class:`lumal-global-search__trigger`,type:`button`,"aria-label":`打开全局搜索`,title:`全局搜索`,onClick:y},[(0,l.createVNode)((0,l.unref)(u.LumalIcon),{icon:F,size:17}),n[3]||=(0,l.createElementVNode)(`span`,{class:`lumal-global-search__trigger-label`},`搜索`,-1),e.shortcut?((0,l.openBlock)(),(0,l.createElementBlock)(`kbd`,O,`Ctrl K`)):(0,l.createCommentVNode)(``,!0)],512),((0,l.openBlock)(),(0,l.createBlock)(l.Teleport,{to:`body`},[d.value?((0,l.openBlock)(),(0,l.createElementBlock)(`div`,{key:0,class:`lumal-global-search__backdrop`,onMousedown:n[2]||=(0,l.withModifiers)(e=>b(),[`self`])},[(0,l.createElementVNode)(`section`,{ref_key:`dialogRef`,ref:c,class:`lumal-global-search__dialog`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`${a}-title`,onKeydown:S},[(0,l.createElementVNode)(`header`,k,[(0,l.createElementVNode)(`h2`,{id:`${a}-title`},` 全局搜索 `,8,ne),(0,l.createElementVNode)(`button`,{type:`button`,"aria-label":`关闭全局搜索`,title:`关闭`,onClick:n[0]||=e=>b()},[(0,l.createVNode)((0,l.unref)(u.LumalIcon),{name:`lumal:close`,size:17})])]),(0,l.createElementVNode)(`label`,A,[n[4]||=(0,l.createElementVNode)(`span`,{class:`lumal-global-search__sr-only`},`搜索菜单`,-1),(0,l.createVNode)((0,l.unref)(u.LumalIcon),{icon:F,size:18}),(0,l.withDirectives)((0,l.createElementVNode)(`input`,{ref_key:`inputRef`,ref:o,"onUpdate:modelValue":n[1]||=e=>f.value=e,role:`combobox`,autocomplete:`off`,"aria-activedescendant":v.value,"aria-autocomplete":`list`,"aria-controls":`${a}-results`,"aria-expanded":`true`,placeholder:e.placeholder,onKeydown:w},null,40,j),[[l.vModelText,f.value]])]),(0,l.createElementVNode)(`ul`,{id:`${a}-results`,class:`lumal-global-search__results`,role:`listbox`},[((0,l.openBlock)(!0),(0,l.createElementBlock)(l.Fragment,null,(0,l.renderList)(_.value,(e,t)=>((0,l.openBlock)(),(0,l.createElementBlock)(`li`,{id:`${a}-option-${t}`,key:e.item.path,role:`option`,"aria-selected":t===p.value},[(0,l.createElementVNode)(`button`,{type:`button`,class:(0,l.normalizeClass)({"is-active":t===p.value}),onMouseenter:e=>p.value=t,onClick:t=>C(e)},[e.item.icon?((0,l.openBlock)(),(0,l.createBlock)((0,l.unref)(u.LumalIcon),{key:0,name:e.item.icon,size:18},null,8,[`name`])):(0,l.createCommentVNode)(``,!0),(0,l.createElementVNode)(`span`,null,[(0,l.createElementVNode)(`strong`,null,(0,l.toDisplayString)(e.item.title),1),(0,l.createElementVNode)(`small`,null,(0,l.toDisplayString)(e.trail.join(` / `)),1)]),(0,l.createElementVNode)(`code`,null,(0,l.toDisplayString)(e.item.path),1)],42,P)],8,N))),128))],8,M),_.value.length===0?((0,l.openBlock)(),(0,l.createElementBlock)(`p`,re,` 未找到匹配菜单,请尝试其他关键词 `)):(0,l.createCommentVNode)(``,!0)],40,te)],32)):(0,l.createCommentVNode)(``,!0)]))]))}}),ae=c.t(ie,[[`__scopeId`,`data-v-d6fd5c73`]]),I={class:`lumal-header__left`},L={key:0,class:`lumal-header__title`},R={key:0,class:`lumal-header__breadcrumb`},oe={key:1,class:`lumal-header__navigation`,"aria-label":`主导航`},z={key:2,class:`lumal-header__actions`},B=(0,l.defineComponent)({__name:`LumalHeader`,props:{title:{},collapsed:{type:Boolean,default:!1},height:{default:`50px`},mobileOnlyToggle:{type:Boolean,default:!1},sidebarEnabled:{type:Boolean,default:!0},toggleAfterTitle:{type:Boolean,default:!1}},emits:[`toggleCollapse`],setup(e,{expose:t,emit:n}){let r=e,i=n,a=(0,l.useTemplateRef)(`headerRef`),o=(0,l.computed)(()=>r.collapsed?`展开侧边栏`:`收起侧边栏`);function s(){i(`toggleCollapse`)}return t({getHeaderElement:()=>a.value?.$el,getHeaderInstance:()=>a.value}),(t,n)=>((0,l.openBlock)(),(0,l.createBlock)((0,l.unref)(d.ElHeader),{ref_key:`headerRef`,ref:a,class:`lumal-header`,height:e.height},{default:(0,l.withCtx)(()=>[(0,l.createElementVNode)(`div`,I,[(0,l.renderSlot)(t.$slots,`logo`,{},()=>[e.title?((0,l.openBlock)(),(0,l.createElementBlock)(`span`,L,(0,l.toDisplayString)(e.title),1)):(0,l.createCommentVNode)(``,!0)],!0),e.sidebarEnabled?((0,l.openBlock)(),(0,l.createBlock)((0,l.unref)(d.ElButton),{key:0,class:(0,l.normalizeClass)([`lumal-header__toggle`,{"is-after-title":e.toggleAfterTitle,"is-mobile-only":e.mobileOnlyToggle}]),text:``,"aria-label":o.value,"data-action":`toggle-sidebar`,onClick:s},{default:(0,l.withCtx)(()=>[...n[0]||=[(0,l.createElementVNode)(`svg`,{"aria-hidden":`true`,viewBox:`0 0 24 24`},[(0,l.createElementVNode)(`path`,{d:`M4 7h16M4 12h16M4 17h16`})],-1)]]),_:1},8,[`class`,`aria-label`])):(0,l.createCommentVNode)(``,!0)]),t.$slots.breadcrumb?((0,l.openBlock)(),(0,l.createElementBlock)(`div`,R,[(0,l.renderSlot)(t.$slots,`breadcrumb`,{},void 0,!0)])):(0,l.createCommentVNode)(``,!0),t.$slots.navigation?((0,l.openBlock)(),(0,l.createElementBlock)(`nav`,oe,[(0,l.renderSlot)(t.$slots,`navigation`,{},void 0,!0)])):(0,l.createCommentVNode)(``,!0),t.$slots.actions?((0,l.openBlock)(),(0,l.createElementBlock)(`div`,z,[(0,l.renderSlot)(t.$slots,`actions`,{},void 0,!0)])):(0,l.createCommentVNode)(``,!0)]),_:3},8,[`height`]))}}),se=c.t(B,[[`__scopeId`,`data-v-e9574860`]]),V=[`aria-label`],H={key:0,"aria-hidden":`true`},U=(0,l.defineComponent)({__name:`LumalMenuBadge`,props:{badge:{default:``},label:{default:`菜单`},tone:{default:`primary`},type:{default:`text`}},setup(e){let t=e,n=(0,l.computed)(()=>t.type===`dot`||t.badge===0||!!t.badge),r=(0,l.computed)(()=>t.type===`dot`?`${t.label}有新内容`:`${t.label}:${t.badge}`);return(t,i)=>n.value?((0,l.openBlock)(),(0,l.createElementBlock)(`span`,{key:0,class:(0,l.normalizeClass)([`lumal-menu-badge`,[`is-${e.tone}`,{"is-dot":e.type===`dot`}]]),role:`status`,"aria-label":r.value},[e.type===`text`?((0,l.openBlock)(),(0,l.createElementBlock)(`span`,H,(0,l.toDisplayString)(e.badge),1)):(0,l.createCommentVNode)(``,!0)],10,V)):(0,l.createCommentVNode)(``,!0)}}),W=c.t(U,[[`__scopeId`,`data-v-0ca73e4b`]]),G={key:0,class:`lumal-sidebar-menu-item__icon`,"aria-hidden":`true`},K={class:`lumal-sidebar-menu-item__label`},q={class:`lumal-sidebar-menu-item__title`},J={key:1,class:`lumal-sidebar-menu-item__external`,"aria-hidden":`true`},Y=[`title`],ce={key:0,class:`lumal-sidebar-menu-item__icon`,"aria-hidden":`true`},le={class:`lumal-sidebar-menu-item__label`},X={class:`lumal-sidebar-menu-item__title`},Z={key:0,class:`lumal-sidebar-menu-item__icon`,"aria-hidden":`true`},ue={class:`lumal-sidebar-menu-item__label`},Q={class:`lumal-sidebar-menu-item__title`},de={key:1,class:`lumal-sidebar-menu-item__external`,"aria-hidden":`true`},fe=(0,l.defineComponent)({__name:`LumalSidebarMenuItem`,props:{activePath:{},collapsed:{type:Boolean},depth:{},item:{}},emits:[`select`],setup(e,{emit:t}){let n=e,r=t,i=(0,l.computed)(()=>n.item.children?.filter(e=>!e.hidden)??[]),a=(0,l.computed)(()=>i.value.length>0),o=(0,l.computed)(()=>!!n.item.externalLink&&n.item.externalTarget!==`_self`);function s(e){r(`select`,e)}return(t,n)=>{let r=(0,l.resolveComponent)(`LumalSidebarMenuItem`,!0);return a.value?((0,l.openBlock)(),(0,l.createBlock)((0,l.unref)(d.ElSubMenu),{key:0,class:`lumal-sidebar-menu-item`,index:e.item.path,title:e.collapsed?e.item.title:void 0},{title:(0,l.withCtx)(()=>[e.item.icon?((0,l.openBlock)(),(0,l.createElementBlock)(`i`,G,[(0,l.createVNode)((0,l.unref)(u.LumalIcon),{name:e.item.icon,size:16},null,8,[`name`])])):(0,l.createCommentVNode)(``,!0),(0,l.createElementVNode)(`span`,K,[(0,l.createElementVNode)(`span`,q,(0,l.toDisplayString)(e.item.title),1),(0,l.createVNode)(W,{badge:e.item.badge,label:e.item.title,tone:e.item.badgeTone,type:e.item.badgeType},null,8,[`badge`,`label`,`tone`,`type`])]),e.item.externalLink?((0,l.openBlock)(),(0,l.createElementBlock)(`span`,J,`↗`)):(0,l.createCommentVNode)(``,!0)]),default:(0,l.withCtx)(()=>[((0,l.openBlock)(!0),(0,l.createElementBlock)(l.Fragment,null,(0,l.renderList)(i.value,t=>((0,l.openBlock)(),(0,l.createBlock)(r,{key:t.path,item:t,"active-path":e.activePath,collapsed:e.collapsed,depth:(e.depth??0)+1,onSelect:s},null,8,[`item`,`active-path`,`collapsed`,`depth`]))),128))]),_:1},8,[`index`,`title`])):o.value?((0,l.openBlock)(),(0,l.createElementBlock)(`li`,{key:1,class:`el-menu-item lumal-sidebar-menu-item lumal-sidebar-menu-item--external`,role:`menuitem`,tabindex:`-1`,title:e.collapsed?e.item.title:void 0,onClick:n[0]||=t=>s(e.item.path)},[e.item.icon?((0,l.openBlock)(),(0,l.createElementBlock)(`i`,ce,[(0,l.createVNode)((0,l.unref)(u.LumalIcon),{name:e.item.icon,size:16},null,8,[`name`])])):(0,l.createCommentVNode)(``,!0),(0,l.createElementVNode)(`span`,le,[(0,l.createElementVNode)(`span`,X,(0,l.toDisplayString)(e.item.title),1),(0,l.createVNode)(W,{badge:e.item.badge,label:e.item.title,tone:e.item.badgeTone,type:e.item.badgeType},null,8,[`badge`,`label`,`tone`,`type`])]),n[2]||=(0,l.createElementVNode)(`span`,{class:`lumal-sidebar-menu-item__external`,"aria-hidden":`true`},`↗`,-1)],8,Y)):((0,l.openBlock)(),(0,l.createBlock)((0,l.unref)(d.ElMenuItem),{key:2,class:`lumal-sidebar-menu-item`,index:e.item.path,title:e.collapsed?e.item.title:void 0,onClick:n[1]||=t=>s(e.item.path)},{default:(0,l.withCtx)(()=>[e.item.icon?((0,l.openBlock)(),(0,l.createElementBlock)(`i`,Z,[(0,l.createVNode)((0,l.unref)(u.LumalIcon),{name:e.item.icon,size:16},null,8,[`name`])])):(0,l.createCommentVNode)(``,!0),(0,l.createElementVNode)(`span`,ue,[(0,l.createElementVNode)(`span`,Q,(0,l.toDisplayString)(e.item.title),1),(0,l.createVNode)(W,{badge:e.item.badge,label:e.item.title,tone:e.item.badgeTone,type:e.item.badgeType},null,8,[`badge`,`label`,`tone`,`type`])]),e.item.externalLink?((0,l.openBlock)(),(0,l.createElementBlock)(`span`,de,`↗`)):(0,l.createCommentVNode)(``,!0)]),_:1},8,[`index`,`title`]))}}}),pe=c.t(fe,[[`__scopeId`,`data-v-a5f8c946`]]),me=(0,l.defineComponent)({__name:`LumalSidebar`,props:{menus:{default:()=>[]},activePath:{default:``},ariaLabel:{default:`侧边导航`},collapsed:{type:Boolean,default:!1},width:{default:`280px`},collapsedWidth:{default:`64px`}},emits:[`select`],setup(e,{expose:t,emit:n}){let r=e,i=n,a=(0,l.useTemplateRef)(`asideRef`),o=(0,l.computed)(()=>r.collapsed?r.collapsedWidth:r.width);function s(e){i(`select`,e)}return t({getAsideElement:()=>a.value?.$el,getAsideInstance:()=>a.value}),(t,n)=>((0,l.openBlock)(),(0,l.createBlock)((0,l.unref)(d.ElAside),{ref_key:`asideRef`,ref:a,class:`lumal-sidebar`,width:o.value,"aria-label":e.ariaLabel},{default:(0,l.withCtx)(()=>[(0,l.createVNode)((0,l.unref)(d.ElScrollbar),{class:`lumal-sidebar__scrollbar`},{default:(0,l.withCtx)(()=>[(0,l.createVNode)((0,l.unref)(d.ElMenu),{class:`lumal-sidebar__menu`,collapse:e.collapsed,"default-active":e.activePath},{default:(0,l.withCtx)(()=>[((0,l.openBlock)(!0),(0,l.createElementBlock)(l.Fragment,null,(0,l.renderList)(e.menus.filter(e=>!e.hidden),t=>((0,l.openBlock)(),(0,l.createBlock)(pe,{key:t.path,item:t,"active-path":e.activePath,collapsed:e.collapsed,depth:0,onSelect:s},null,8,[`item`,`active-path`,`collapsed`]))),128))]),_:1},8,[`collapse`,`default-active`])]),_:1})]),_:1},8,[`width`,`aria-label`]))}}),he=c.t(me,[[`__scopeId`,`data-v-d9c4d4bc`]]),$=[`disabled`],ge=[`onContextmenu`],_e=[`aria-selected`,`tabindex`,`onClick`,`onKeydown`,`onMousedown`],ve=[`title`],ye=[`aria-label`,`onClick`],be=[`disabled`],xe=[`disabled`],Se=[`aria-expanded`],Ce=[`aria-label`],we=[`disabled`],Te=[`disabled`],Ee=[`disabled`],De=[`disabled`],Oe=[`disabled`],ke=[`disabled`],Ae=[`disabled`],je=[`disabled`],Me=[`disabled`],Ne=192,Pe=220,Fe=(0,l.defineComponent)({__name:`LumalTabs`,props:(0,l.mergeModels)({activePath:{default:``},draggable:{type:Boolean,default:!0},fullscreenTarget:{default:`[data-layout-fullscreen-target]`},middleClickToClose:{type:Boolean,default:!0},showIcon:{type:Boolean,default:!0},showMaximize:{type:Boolean,default:!0},showMore:{type:Boolean,default:!0},showRefresh:{type:Boolean,default:!0},styleType:{default:`chrome`},tabs:{default:()=>[]},visible:{type:Boolean,default:!0},wheelable:{type:Boolean,default:!0},standaloneMaximize:{type:Boolean,default:!1}},{activePath:{default:``},activePathModifiers:{}}),emits:(0,l.mergeModels)([`change`,`closeAll`,`closeLeft`,`closeOthers`,`closeRight`,`maximize`,`newWindow`,`pin`,`refresh`,`remove`,`reorder`],[`update:activePath`]),setup(e,{expose:t,emit:n}){let r=e,i=n,a=(0,l.useModel)(e,`activePath`),o=(0,l.useTemplateRef)(`tabsViewportRef`),s=(0,l.shallowRef)({path:``,style:{},visible:!1}),c=(0,l.shallowRef)({path:``,style:{},visible:!1}),d=(0,l.shallowRef)(!1),f=(0,l.shallowRef)(!1),m=(0,l.shallowRef)(!0),h=(0,l.shallowRef)(!1),g,_,v=null,y=(0,l.computed)(()=>s.value.visible?s.value:c.value),b=(0,l.computed)(()=>y.value.path),x=(0,l.shallowRef)(!0),S;function C(){x.value=!S||!S.matches}function w(){typeof window>`u`||typeof window.matchMedia!=`function`||(S=window.matchMedia(`(max-width: 768px)`),C(),typeof S.addEventListener==`function`?S.addEventListener(`change`,C):S.addListener?.(C))}function T(){typeof S?.removeEventListener==`function`?S.removeEventListener(`change`,C):S?.removeListener?.(C),S=void 0}let E=(0,l.computed)(()=>r.draggable&&x.value),ee=(0,l.computed)(()=>r.tabs.some(e=>e.closable!==!1&&e.pinned!==!0));function D(e){return r.tabs.length>1&&r.tabs.some(t=>t.path===e&&t.closable!==!1&&t.pinned!==!0)}function O(e,t){let n=r.tabs.findIndex(t=>t.path===e);return(t===`left`?r.tabs.slice(0,n):r.tabs.slice(n+1)).some(e=>e.closable!==!1&&e.pinned!==!0)}function te(e){return r.tabs.some(t=>t.path!==e&&t.closable!==!1&&t.pinned!==!0)}function k(e){return e===a.value}function ne(e){let t=r.tabs.find(t=>t.path===e);return!!t&&t.pinned!==!0&&t.closable!==!1}function A(e){let t=r.tabs.find(t=>t.path===e);return!!t&&t.pinned===!0&&t.closable!==!1}function j(e){let t=b.value;return e===`close`?!D(t):e===`close-left`||e===`close-right`?!t||!k(t)||!O(t,e===`close-left`?`left`:`right`):e===`close-others`?!t||!k(t)||!te(t):e===`close-all`?!ee.value:e===`refresh`?!t||!k(t):e===`pin`?!ne(t)&&!A(t):e===`new-window`&&!t}function M(e){return A(e)?`取消固定`:`固定`}function N(){return d.value?`还原`:`内容最大化`}function P(e){e!==a.value&&(a.value=e,i(`change`,e))}function re(e){D(e)&&i(`remove`,e)}function F(e){e&&k(e)&&i(`refresh`,e)}function ie(e,t){e.button!==1||!r.middleClickToClose||!D(t.path)||(e.preventDefault(),i(`remove`,t.path))}function ae(e,t){if(![`ArrowLeft`,`ArrowRight`,`End`,`Home`].includes(e.key)||r.tabs.length===0)return;e.preventDefault();let n=e.key===`Home`?0:e.key===`End`?r.tabs.length-1:e.key===`ArrowLeft`?(t-1+r.tabs.length)%r.tabs.length:(t+1)%r.tabs.length,i=r.tabs[n];i&&(P(i.path),(0,l.nextTick)(()=>{o.value?.querySelectorAll(`[role="tab"]`).item(n).focus()}))}function I(e,t){return{left:`${Math.max(8,Math.min(e,window.innerWidth-Ne-8))}px`,top:`${Math.max(8,Math.min(t,window.innerHeight-Pe-8))}px`}}function L(){s.value={...s.value,visible:!1},c.value={...c.value,visible:!1}}function R(e,t){e.preventDefault(),e.stopPropagation(),v=e.currentTarget,s.value={path:t,style:I(e.clientX,e.clientY),visible:!0},c.value={...c.value,visible:!1}}function oe(e){e.preventDefault(),e.stopPropagation();let t=a.value||r.tabs[0]?.path||``;v=e.currentTarget,c.value={path:t,style:I(e.clientX,e.clientY),visible:!0},s.value={...s.value,visible:!1}}function z(){v&&document.body.contains(v)&&(v.focus(),v=null)}function B(e){if(j(e))return;let t=b.value;L(),e===`close`?i(`remove`,t):e===`close-left`?i(`closeLeft`,t):e===`close-right`?i(`closeRight`,t):e===`close-others`?i(`closeOthers`,t):e===`close-all`?i(`closeAll`):e===`refresh`?i(`refresh`,t):e===`pin`?i(`pin`,t,!A(t)):e===`new-window`?i(`newWindow`,t):e===`maximize`&&J(),(0,l.nextTick)(z)}function se(e){if(e.key===`Escape`){e.preventDefault(),L(),(0,l.nextTick)(z);return}let t=Array.from(document.querySelectorAll(`[data-menu-active="true"] [role="menuitem"]:not(:disabled)`));if(t.length!==0&&(e.key===`ArrowDown`||e.key===`ArrowUp`||e.key===`Home`||e.key===`End`)){e.preventDefault();let n=t.findIndex(e=>e===document.activeElement),r;r=e.key===`ArrowDown`?n===-1?0:(n+1)%t.length:e.key===`ArrowUp`?n===-1?t.length-1:(n-1+t.length)%t.length:e.key===`Home`?0:t.length-1,t[r]?.focus()}}function V(){let e=o.value;e&&(f.value=e.scrollWidth>e.clientWidth+1,m.value=e.scrollLeft<=1,h.value=e.scrollLeft+e.clientWidth>=e.scrollWidth-1)}function H(){return window.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches?`auto`:`smooth`}function U(e){let t=o.value;t&&t.scrollBy({behavior:H(),left:(e===`left`?-1:1)*Math.max(160,t.clientWidth-120)})}function W(e){if(!r.wheelable)return;let t=o.value;!t||!f.value||(e.preventDefault(),t.scrollBy({left:Math.abs(e.deltaY)>Math.abs(e.deltaX)?e.deltaY:e.deltaX}))}async function G(){await(0,l.nextTick)(),(o.value?.querySelector(`[role="tab"][aria-selected="true"]`))?.scrollIntoView({behavior:H(),block:`nearest`,inline:`nearest`}),V()}function K(){let e=o.value?.querySelector(`.lumal-tabs__list`);if(!e||!E.value){q();return}_&&_.el===e||(q(),_=p.default.create(e,{animation:160,draggable:`.lumal-tabs__item`,filter:`.is-not-draggable`,ghostClass:`lumal-tabs__item--ghost`,chosenClass:`lumal-tabs__item--chosen`,onEnd:e=>{if(e.oldIndex===void 0||e.newIndex===void 0||e.oldIndex===e.newIndex)return;let t=r.tabs[e.oldIndex]?.path,n=r.tabs[e.newIndex]?.path;!t||!n||i(`reorder`,t,n)}}))}function q(){_?.destroy(),_=void 0}(0,l.watch)(E,e=>{e?(0,l.nextTick)(K):q()});function J(){if(r.standaloneMaximize){Y();return}d.value=!d.value,i(`maximize`,d.value)}async function Y(){let e=document.querySelector(r.fullscreenTarget);e instanceof HTMLElement&&(document.fullscreenElement?await document.exitFullscreen?.():await e.requestFullscreen?.())}function ce(){d.value=!!document.fullscreenElement&&r.standaloneMaximize,r.standaloneMaximize&&i(`maximize`,d.value)}function le(e){r.standaloneMaximize||(d.value=e)}t({getTabsElement:()=>o.value,refreshCurrent:()=>F(a.value),scrollTabs:U,toggleFullscreen:J,setMaximized:le}),(0,l.watch)(()=>[r.activePath,r.tabs.length],()=>void G(),{flush:`post`}),(0,l.watch)(()=>r.tabs,()=>void(0,l.nextTick)(V),{flush:`post`});function X(e){let t=e.target;t&&(t.closest?.(`.lumal-tabs-context-menu`)||t.closest?.(`[data-tab-menu-trigger]`)||L())}function Z(e){e.key===`Escape`&&y.value.visible&&(e.preventDefault(),L(),(0,l.nextTick)(z))}return(0,l.onMounted)(()=>{w(),document.addEventListener(`click`,X),document.addEventListener(`fullscreenchange`,ce),document.addEventListener(`keydown`,Z),V(),typeof ResizeObserver<`u`&&o.value&&(g=new ResizeObserver(V),g.observe(o.value)),E.value&&(0,l.nextTick)(K)}),(0,l.onBeforeUnmount)(()=>{T(),document.removeEventListener(`click`,X),document.removeEventListener(`fullscreenchange`,ce),document.removeEventListener(`keydown`,Z),g?.disconnect(),q()}),(t,n)=>e.visible&&e.tabs.length?((0,l.openBlock)(),(0,l.createElementBlock)(`div`,{key:0,class:(0,l.normalizeClass)([`lumal-tabs`,[`is-style-${e.styleType}`]])},[(0,l.withDirectives)((0,l.createElementVNode)(`button`,{class:`lumal-tabs__tool`,type:`button`,"aria-label":`向左滚动标签`,disabled:m.value,onClick:n[0]||=e=>U(`left`)},[(0,l.createVNode)((0,l.unref)(u.LumalIcon),{name:`lumal:chevron-left`,size:16})],8,$),[[l.vShow,f.value]]),(0,l.createElementVNode)(`div`,{ref_key:`tabsViewportRef`,ref:o,class:`lumal-tabs__viewport`,onScroll:V,onWheel:W},[(0,l.createVNode)(l.TransitionGroup,{name:`lumal-tab`,tag:`div`,class:`lumal-tabs__list`,role:`tablist`,"aria-label":`页面标签`},{default:(0,l.withCtx)(()=>[((0,l.openBlock)(!0),(0,l.createElementBlock)(l.Fragment,null,(0,l.renderList)(e.tabs,(t,n)=>((0,l.openBlock)(),(0,l.createElementBlock)(`div`,{key:t.path,class:(0,l.normalizeClass)([`lumal-tabs__item`,{"is-active":t.path===a.value,"is-pinned":t.pinned===!0,"is-not-draggable":t.pinned===!0||!E.value}]),onContextmenu:e=>R(e,t.path)},[(0,l.createElementVNode)(`button`,{class:`lumal-tabs__tab`,type:`button`,role:`tab`,"aria-selected":t.path===a.value,tabindex:t.path===a.value?0:-1,onClick:e=>P(t.path),onKeydown:e=>ae(e,n),onMousedown:e=>ie(e,t)},[t.pinned===!0?((0,l.openBlock)(),(0,l.createBlock)((0,l.unref)(u.LumalIcon),{key:0,class:`lumal-tabs__pin`,name:`lumal:pin`,size:14})):e.showIcon&&t.icon?((0,l.openBlock)(),(0,l.createBlock)((0,l.unref)(u.LumalIcon),{key:1,name:t.icon,size:14},null,8,[`name`])):(0,l.createCommentVNode)(``,!0),(0,l.createElementVNode)(`span`,{class:`lumal-tabs__label`,title:t.title},(0,l.toDisplayString)(t.title),9,ve)],40,_e),D(t.path)?((0,l.openBlock)(),(0,l.createElementBlock)(`button`,{key:0,class:`lumal-tabs__close`,type:`button`,"aria-label":`关闭${t.title}`,onClick:e=>re(t.path)},[(0,l.createVNode)((0,l.unref)(u.LumalIcon),{name:`lumal:close`,size:14})],8,ye)):(0,l.createCommentVNode)(``,!0)],42,ge))),128))]),_:1})],544),(0,l.withDirectives)((0,l.createElementVNode)(`button`,{class:`lumal-tabs__tool`,type:`button`,"aria-label":`向右滚动标签`,disabled:h.value,onClick:n[1]||=e=>U(`right`)},[(0,l.createVNode)((0,l.unref)(u.LumalIcon),{name:`lumal:chevron-right`,size:16})],8,be),[[l.vShow,f.value]]),e.showRefresh?((0,l.openBlock)(),(0,l.createElementBlock)(`button`,{key:0,class:`lumal-tabs__tool lumal-tabs__tool--refresh`,type:`button`,"aria-label":`刷新当前页面`,"data-action":`refresh-current-tab`,disabled:!a.value,onClick:n[2]||=e=>F(a.value)},[(0,l.createVNode)((0,l.unref)(u.LumalIcon),{name:`lumal:refresh`,size:16})],8,xe)):(0,l.createCommentVNode)(``,!0),e.showMore?((0,l.openBlock)(),(0,l.createElementBlock)(`button`,{key:1,class:`lumal-tabs__tool`,type:`button`,"aria-label":`更多操作`,"aria-haspopup":`menu`,"aria-expanded":c.value.visible,"data-tab-menu-trigger":``,onClick:n[3]||=e=>oe(e)},[(0,l.createVNode)((0,l.unref)(u.LumalIcon),{name:`lumal:more`,size:16})],8,Se)):(0,l.createCommentVNode)(``,!0),e.showMaximize?((0,l.openBlock)(),(0,l.createElementBlock)(`button`,{key:2,class:`lumal-tabs__tool lumal-tabs__tool--maximize`,type:`button`,"aria-label":d.value?`退出内容最大化`:`内容最大化`,"data-action":`maximize-content`,onClick:J},[(0,l.createVNode)((0,l.unref)(u.LumalIcon),{name:d.value?`lumal:restore`:`lumal:maximize`,size:16},null,8,[`name`])],8,Ce)):(0,l.createCommentVNode)(``,!0),((0,l.openBlock)(),(0,l.createBlock)(l.Teleport,{to:`body`},[s.value.visible||c.value.visible?((0,l.openBlock)(),(0,l.createElementBlock)(`div`,{key:0,class:`lumal-tabs-context-menu`,role:`menu`,"data-menu-active":!0,style:(0,l.normalizeStyle)(y.value.style),onClick:n[13]||=(0,l.withModifiers)(()=>{},[`stop`]),onKeydown:se},[(0,l.createElementVNode)(`button`,{type:`button`,role:`menuitem`,disabled:j(`refresh`),onClick:n[4]||=e=>B(`refresh`)},[(0,l.createVNode)((0,l.unref)(u.LumalIcon),{name:`lumal:refresh`,size:14}),n[14]||=(0,l.createElementVNode)(`span`,null,`重新加载`,-1)],8,we),(0,l.createElementVNode)(`button`,{type:`button`,role:`menuitem`,disabled:j(`pin`),onClick:n[5]||=e=>B(`pin`)},[(0,l.createVNode)((0,l.unref)(u.LumalIcon),{name:A(b.value)?`lumal:pin-off`:`lumal:pin`,size:14},null,8,[`name`]),(0,l.createElementVNode)(`span`,null,(0,l.toDisplayString)(M(b.value)),1)],8,Te),(0,l.createElementVNode)(`button`,{type:`button`,role:`menuitem`,disabled:j(`maximize`),onClick:n[6]||=e=>B(`maximize`)},[(0,l.createVNode)((0,l.unref)(u.LumalIcon),{name:d.value?`lumal:restore`:`lumal:maximize`,size:14},null,8,[`name`]),(0,l.createElementVNode)(`span`,null,(0,l.toDisplayString)(N()),1)],8,Ee),(0,l.createElementVNode)(`button`,{type:`button`,role:`menuitem`,disabled:j(`new-window`),onClick:n[7]||=e=>B(`new-window`)},[(0,l.createVNode)((0,l.unref)(u.LumalIcon),{name:`lumal:external-link`,size:14}),n[15]||=(0,l.createElementVNode)(`span`,null,`在新窗口打开`,-1)],8,De),n[21]||=(0,l.createElementVNode)(`span`,{class:`lumal-tabs-context-menu__divider`},null,-1),(0,l.createElementVNode)(`button`,{type:`button`,role:`menuitem`,disabled:j(`close`),onClick:n[8]||=e=>B(`close`)},[(0,l.createVNode)((0,l.unref)(u.LumalIcon),{name:`lumal:close`,size:14}),n[16]||=(0,l.createElementVNode)(`span`,null,`关闭`,-1)],8,Oe),(0,l.createElementVNode)(`button`,{type:`button`,role:`menuitem`,disabled:j(`close-left`),onClick:n[9]||=e=>B(`close-left`)},[(0,l.createVNode)((0,l.unref)(u.LumalIcon),{name:`lumal:chevron-left`,size:14}),n[17]||=(0,l.createElementVNode)(`span`,null,`关闭左侧`,-1)],8,ke),(0,l.createElementVNode)(`button`,{type:`button`,role:`menuitem`,disabled:j(`close-right`),onClick:n[10]||=e=>B(`close-right`)},[(0,l.createVNode)((0,l.unref)(u.LumalIcon),{name:`lumal:chevron-right`,size:14}),n[18]||=(0,l.createElementVNode)(`span`,null,`关闭右侧`,-1)],8,Ae),(0,l.createElementVNode)(`button`,{type:`button`,role:`menuitem`,disabled:j(`close-others`),onClick:n[11]||=e=>B(`close-others`)},[(0,l.createVNode)((0,l.unref)(u.LumalIcon),{name:`lumal:close`,size:14}),n[19]||=(0,l.createElementVNode)(`span`,null,`关闭其他`,-1)],8,je),(0,l.createElementVNode)(`button`,{type:`button`,role:`menuitem`,disabled:j(`close-all`),onClick:n[12]||=e=>B(`close-all`)},[(0,l.createVNode)((0,l.unref)(u.LumalIcon),{name:`lumal:close`,size:14}),n[20]||=(0,l.createElementVNode)(`span`,null,`关闭全部`,-1)],8,Me)],36)):(0,l.createCommentVNode)(``,!0)]))],2)):(0,l.createCommentVNode)(``,!0)}}),Ie=c.t(Fe,[[`__scopeId`,`data-v-5ebf2b13`]]),Le={class:`lumal-top-nav-menu-item__label`},Re={key:1,class:`lumal-top-nav-menu-item__external`,"aria-hidden":`true`},ze={class:`lumal-top-nav-menu-item__label`},Be={class:`lumal-top-nav-menu-item__label`},Ve={key:1,class:`lumal-top-nav-menu-item__external`,"aria-hidden":`true`},He=(0,l.defineComponent)({__name:`LumalTopNavMenuItem`,props:{activePath:{default:``},item:{}},emits:[`select`],setup(e,{emit:t}){let n=e,r=t,i=(0,l.computed)(()=>n.item.children?.filter(e=>!e.hidden)??[]),a=(0,l.computed)(()=>!!n.item.externalLink&&n.item.externalTarget!==`_self`),o=(0,l.computed)(()=>!!n.activePath&&m(n.item,n.activePath));function s(e){r(`select`,e)}return(t,n)=>{let r=(0,l.resolveComponent)(`LumalTopNavMenuItem`,!0);return i.value.length?((0,l.openBlock)(),(0,l.createBlock)((0,l.unref)(d.ElSubMenu),{key:0,index:e.item.path,class:(0,l.normalizeClass)({"is-active":o.value})},{title:(0,l.withCtx)(()=>[e.item.icon?((0,l.openBlock)(),(0,l.createBlock)((0,l.unref)(u.LumalIcon),{key:0,name:e.item.icon,size:16},null,8,[`name`])):(0,l.createCommentVNode)(``,!0),(0,l.createElementVNode)(`span`,Le,[(0,l.createElementVNode)(`span`,null,(0,l.toDisplayString)(e.item.title),1),(0,l.createVNode)(W,{badge:e.item.badge,label:e.item.title,tone:e.item.badgeTone,type:e.item.badgeType},null,8,[`badge`,`label`,`tone`,`type`])]),e.item.externalLink?((0,l.openBlock)(),(0,l.createElementBlock)(`span`,Re,`↗`)):(0,l.createCommentVNode)(``,!0)]),default:(0,l.withCtx)(()=>[((0,l.openBlock)(!0),(0,l.createElementBlock)(l.Fragment,null,(0,l.renderList)(i.value,t=>((0,l.openBlock)(),(0,l.createBlock)(r,{key:t.path,item:t,"active-path":e.activePath,onSelect:s},null,8,[`item`,`active-path`]))),128))]),_:1},8,[`index`,`class`])):a.value?((0,l.openBlock)(),(0,l.createElementBlock)(`li`,{key:1,class:(0,l.normalizeClass)([`el-menu-item lumal-top-nav-menu-item--external`,{"is-active":o.value}]),role:`menuitem`,tabindex:`-1`,onClick:n[0]||=t=>s(e.item.path)},[e.item.icon?((0,l.openBlock)(),(0,l.createBlock)((0,l.unref)(u.LumalIcon),{key:0,name:e.item.icon,size:16},null,8,[`name`])):(0,l.createCommentVNode)(``,!0),(0,l.createElementVNode)(`span`,ze,[(0,l.createElementVNode)(`span`,null,(0,l.toDisplayString)(e.item.title),1),(0,l.createVNode)(W,{badge:e.item.badge,label:e.item.title,tone:e.item.badgeTone,type:e.item.badgeType},null,8,[`badge`,`label`,`tone`,`type`])]),n[2]||=(0,l.createElementVNode)(`span`,{class:`lumal-top-nav-menu-item__external`,"aria-hidden":`true`},`↗`,-1)],2)):((0,l.openBlock)(),(0,l.createBlock)((0,l.unref)(d.ElMenuItem),{key:2,index:e.item.path,class:(0,l.normalizeClass)({"is-active":o.value}),onClick:n[1]||=t=>s(e.item.path)},{default:(0,l.withCtx)(()=>[e.item.icon?((0,l.openBlock)(),(0,l.createBlock)((0,l.unref)(u.LumalIcon),{key:0,name:e.item.icon,size:16},null,8,[`name`])):(0,l.createCommentVNode)(``,!0),(0,l.createElementVNode)(`span`,Be,[(0,l.createElementVNode)(`span`,null,(0,l.toDisplayString)(e.item.title),1),(0,l.createVNode)(W,{badge:e.item.badge,label:e.item.title,tone:e.item.badgeTone,type:e.item.badgeType},null,8,[`badge`,`label`,`tone`,`type`])]),e.item.externalLink?((0,l.openBlock)(),(0,l.createElementBlock)(`span`,Ve,`↗`)):(0,l.createCommentVNode)(``,!0)]),_:1},8,[`index`,`class`]))}}}),Ue=c.t(He,[[`__scopeId`,`data-v-f78b5b43`]]),We={class:`lumal-top-nav__label`},Ge={key:1,class:`lumal-top-nav__external`,"aria-hidden":`true`},Ke=(0,l.defineComponent)({__name:`LumalTopNav`,props:{activePath:{default:``},align:{default:`left`},maxWidth:{default:`100%`},menus:{default:()=>[]},mode:{default:`tree`}},emits:[`select`],setup(e,{expose:t,emit:n}){let r=e,i=n,a=(0,l.useTemplateRef)(`menuRef`),o=(0,l.computed)(()=>r.menus.filter(e=>!e.hidden));function s(e){return!!e.externalLink&&e.externalTarget!==`_self`}function c(e){return r.activePath?r.mode===`flat`?e.path===r.activePath:m(e,r.activePath):!1}function f(e){let t=c(e);return s(e)?{class:[`el-menu-item`,`lumal-top-nav__external-item`,{"is-active":t}],role:`menuitem`,tabindex:-1}:{class:{"is-active":t},index:e.path}}let p=(0,l.computed)(()=>({"--lumal-top-nav-max-width":typeof r.maxWidth==`number`?`${r.maxWidth}px`:r.maxWidth}));function h(e){i(`select`,e)}return t({getMenuElement:()=>a.value?.$el,getMenuInstance:()=>a.value}),(t,n)=>((0,l.openBlock)(),(0,l.createBlock)((0,l.unref)(d.ElMenu),{key:`top-nav:${e.mode}:${e.activePath}`,ref_key:`menuRef`,ref:a,class:(0,l.normalizeClass)([`lumal-top-nav`,`is-align-${e.align}`]),mode:`horizontal`,"default-active":e.activePath,ellipsis:!0,style:(0,l.normalizeStyle)(p.value)},{default:(0,l.withCtx)(()=>[((0,l.openBlock)(!0),(0,l.createElementBlock)(l.Fragment,null,(0,l.renderList)(e.mode===`tree`?o.value:[],t=>((0,l.openBlock)(),(0,l.createBlock)(Ue,{key:`tree:${t.path}`,item:t,"active-path":e.activePath,onSelect:h},null,8,[`item`,`active-path`]))),128)),((0,l.openBlock)(!0),(0,l.createElementBlock)(l.Fragment,null,(0,l.renderList)(e.mode===`flat`?o.value:[],e=>((0,l.openBlock)(),(0,l.createBlock)((0,l.resolveDynamicComponent)(s(e)?`li`:(0,l.unref)(d.ElMenuItem)),(0,l.mergeProps)({key:`flat:${e.path}`},{ref_for:!0},f(e),{onClick:t=>h(e.path)}),{default:(0,l.withCtx)(()=>[e.icon?((0,l.openBlock)(),(0,l.createBlock)((0,l.unref)(u.LumalIcon),{key:0,name:e.icon,size:16},null,8,[`name`])):(0,l.createCommentVNode)(``,!0),(0,l.createElementVNode)(`span`,We,[(0,l.createElementVNode)(`span`,null,(0,l.toDisplayString)(e.title),1),(0,l.createVNode)(W,{badge:e.badge,label:e.title,tone:e.badgeTone,type:e.badgeType},null,8,[`badge`,`label`,`tone`,`type`])]),e.externalLink?((0,l.openBlock)(),(0,l.createElementBlock)(`span`,Ge,`↗`)):(0,l.createCommentVNode)(``,!0)]),_:2},1040,[`onClick`]))),128))]),_:1},8,[`class`,`default-active`,`style`]))}}),qe=c.t(Ke,[[`__scopeId`,`data-v-1c664f72`]]),Je=1,Ye=50;function Xe(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Ze(e){return Xe(e)?typeof e.path==`string`&&typeof e.title==`string`:!1}function Qe(e){let t=Math.max(1,e.maxHistory??50),n=e.history.slice(0,t);return{v:1,tabs:e.tabs.map(e=>({closable:e.closable,icon:e.icon,path:e.path,pinned:e.pinned===!0,title:e.title})),history:n}}function $e(e){if(!e)return;let t;try{t=JSON.parse(e)}catch{return}return!Xe(t)||t.v!==1||!Array.isArray(t.tabs)||!Array.isArray(t.history)||!t.history.every(e=>typeof e==`string`)?void 0:{v:1,tabs:t.tabs.filter(Ze),history:t.history}}function et(e,t,n){try{return e.setItem(t,JSON.stringify(n)),!0}catch{return!1}}function tt(e,t){let n=null;try{n=e.getItem(t)}catch{return}let r=$e(n);if(n){if(!r){try{e.removeItem(t)}catch{}return}return r}}function nt(e,t){try{e.removeItem(t)}catch{}}function rt(e,t){let n=t.fixedTabs.map(e=>({...e,pinned:!0,closable:!1})),r=new Set(n.map(e=>e.path)),i=t.isValidPath??(()=>!0),a=[];if(e)for(let n of e.tabs){if(!n.path||!i(n.path)||r.has(n.path))continue;let e=t.resolveTab?.(n.path)??{};a.push({closable:n.closable!==!1,icon:n.icon,path:n.path,pinned:n.pinned===!0,title:n.title,...e})}let o=[...n,...a];if(t.currentPath){let e=t.resolveTab?.(t.currentPath)??{},n={closable:!0,icon:e.icon,path:t.currentPath,pinned:!1,title:e.title??t.currentTab?.title??t.currentPath,...t.currentTab??{},...e};r.has(t.currentPath)||o.some(e=>e.path===t.currentPath)||(o=[...o,n])}o=[...o].sort((e,t)=>{let n=+(e.pinned===!0);return+(t.pinned===!0)-n});let s=e?.history??[];return{tabs:o,history:s}}function it(e){return[...e].sort((e,t)=>{let n=+(e.pinned===!0);return+(t.pinned===!0)-n})}function at(e,t,n={}){let r=e.some(e=>e.path===t.path)?[...e]:[...e,t],i=n.maxCount??0;if(i<=0||r.length<=i)return r;let a=[...r];for(;a.length>i;){let e=a.findIndex(e=>e.closable!==!1&&e.pinned!==!0&&e.path!==t.path);if(e===-1)break;a.splice(e,1)}return a}function ot(e,t,n){if(t<=0||e.length<=t)return[...e];let r=[...e];for(;r.length>t;){let e=r.findIndex(e=>e.closable!==!1&&e.pinned!==!0&&e.path!==n);if(e===-1)break;r.splice(e,1)}return r}function st(e,t){return e.filter(e=>!(e.path===t&&e.closable!==!1&&e.pinned!==!0))}function ct(e,t){let n=e.findIndex(e=>e.path===t);return n<=0?[...e]:e.filter((e,t)=>t>=n||e.closable===!1||e.pinned===!0)}function lt(e,t){let n=e.findIndex(e=>e.path===t);return n===-1||n>=e.length-1?[...e]:e.filter((e,t)=>t<=n||e.closable===!1||e.pinned===!0)}function ut(e,t){return e.filter(e=>e.path===t||e.closable===!1||e.pinned===!0)}function dt(e){let t=e.filter(e=>e.closable===!1||e.pinned===!0);return t.length>0?t:e.length>0?[e[0]]:[]}function ft(e,t){let n=!1,r=e.map(e=>e.path===t?(n=!0,{...e,pinned:!0}):e);return n?it(r):r}function pt(e,t){return e.map(e=>e.path===t&&e.closable!==!1?{...e,pinned:!1}:e)}function mt(e){return e.closable===!1}function ht(e){return e.pinned===!0&&e.closable!==!1}function gt(e){return e.pinned!==!0&&e.closable!==!1}var _t=50;function vt(e,t,n={}){if(!t)return[...e];let r=n.maxCount??_t;return[t,...e.filter(e=>e!==t)].slice(0,Math.max(1,r))}function yt(e,t,n=[],r={}){if(e.length===0)return``;if(r.useHistory&&n.length>0){let r=new Set(e.map(e=>e.path));for(let e of n)if(e!==t&&r.has(e))return e}let i=r.priorClosedIndex??-1;if(i>=0){let t=e[i];if(t)return t.path;let n=e[i-1];if(n)return n.path}return e[0]?.path??``}function bt(e,t,n){let r=e.findIndex(e=>e.path===t),i=e.findIndex(e=>e.path===n);if(r===-1||i===-1||r===i||e[r].pinned===!0!=(e[i].pinned===!0))return[...e];let a=[...e],[o]=a.splice(r,1);return o&&a.splice(i,0,o),a}function xt(e,t={}){return t.enable===!1?[]:e.map(e=>e.path)}var St=(0,l.defineComponent)({__name:`LumalLayout`,props:(0,l.mergeModels)({title:{},menus:{default:()=>[]},preferences:{},tabs:{default:()=>[]},activeMenuPath:{default:``},activeTabPath:{default:``},routeDriven:{type:Boolean,default:!1},routeTabFilter:{},routeTabResolver:{},tabFallbackPath:{default:``},tabMaxCount:{},fixedTabs:{default:()=>[]},headerHeight:{default:`50px`},showHeader:{type:Boolean,default:!0},tabStorageKey:{default:``},isValidTabPath:{},resolveTabUrl:{}},{activeTabPath:{},activeTabPathModifiers:{}}),emits:(0,l.mergeModels)([`menuSelect`,`topMenuSelect`,`toggleSidebar`,`tabChange`,`tabCloseAll`,`tabCloseLeft`,`tabCloseOthers`,`tabCloseRight`,`tabRefresh`,`tabRemove`,`tabPin`,`tabReorder`,`tabMaximize`,`tabNewWindow`,`tabsChange`],[`update:activeTabPath`]),setup(e,{expose:t,emit:n}){let r=e,i=n,a=(0,l.useModel)(e,`activeTabPath`),o=(0,l.inject)(f.routeLocationKey,void 0),s=(0,l.inject)(f.routerKey,void 0),c=(0,l.useTemplateRef)(`layoutRef`),u=(0,l.useTemplateRef)(`tabsRef`),p=(0,l.shallowRef)(!1),m=(0,l.shallowRef)(!1),g=(0,l.shallowRef)(!1),b=(0,l.shallowRef)([]),x=(0,l.shallowRef)(``),S=(0,l.shallowRef)([]),C=(0,l.computed)(()=>r.tabMaxCount??r.preferences.tabbar.maxCount),w;function E(e){return e.meta.layout!==`public`&&e.meta.hideInTab!==!0&&!!e.meta.title}function D(e){let t=typeof e.meta.title==`string`?e.meta.title:void 0;if(t)return{closable:e.meta.affixTab!==!0,icon:typeof e.meta.icon==`string`?e.meta.icon:void 0,path:e.path,title:t}}function O(){return r.fixedTabs.map(e=>({...e,closable:!1,pinned:!0}))}function te(e){return{closable:e.closable!==!1,icon:e.icon,path:e.path,pinned:e.pinned===!0,title:e.title}}function k(){if(r.isValidTabPath)return r.isValidTabPath;if(!(!s||!r.routeDriven))return e=>{try{let t=s.resolve(e)?.matched??[],n=t[t.length-1];return n?n.meta?.layout!==`public`&&n.meta?.hideInTab!==!0:!1}catch{return!1}}}function ne(e){if(!(!s||!r.routeDriven))try{let t=s.resolve(e)?.matched??[],n=t[t.length-1],r=typeof n?.meta?.title==`string`?n.meta.title:void 0,i=typeof n?.meta?.icon==`string`?n.meta.icon:void 0;return!r&&!i?void 0:{icon:i,title:r}}catch{return}}function A(e){if(!r.routeDriven||!(r.routeTabFilter??E)(e))return;let t=(r.routeTabResolver??D)(e);if(!t)return;let n=O(),i=new Set(n.map(e=>e.path)),a=b.value.filter(e=>!i.has(e.path)),o=at([...n,...a],t,{maxCount:C.value});b.value=o,r.preferences.tabbar.visitHistory&&(S.value=vt(S.value,e.path)),Q()}function j(e){r.routeDriven&&s&&e&&e!==o?.path&&s.push(e)}function M(e){return r.tabFallbackPath?r.tabFallbackPath:e[0]?.path??``}let N=(0,l.computed)({get:()=>r.routeDriven?o?.path??r.activeTabPath:a.value??r.activeTabPath,set:e=>{r.routeDriven?j(e):a.value=e}}),P=(0,l.computed)(()=>r.routeDriven?b.value:r.tabs);(0,l.watch)(P,e=>i(`tabsChange`,[...e]),{immediate:!0});let re=(0,l.computed)(()=>P.value.length>0),F=(0,l.computed)(()=>r.preferences.sidebar.collapsed),ie=(0,l.computed)(()=>typeof o?.meta.activeMenu==`string`?o.meta.activeMenu:``),I=(0,l.computed)(()=>{let e=o?.path||N.value,t=ie.value;return t&&h(r.menus,t)?t:e&&h(r.menus,e)?e:r.activeMenuPath&&h(r.menus,r.activeMenuPath)?r.activeMenuPath:r.activeMenuPath||e}),L=(0,l.computed)(()=>o?.path||N.value||I.value),R=(0,l.computed)(()=>({enable:r.preferences.breadcrumb?.enable??!0,hideOnlyOne:r.preferences.breadcrumb?.hideOnlyOne??!1,showHome:r.preferences.breadcrumb?.showHome??!0,showIcon:r.preferences.breadcrumb?.showIcon??!0})),oe=(0,l.computed)(()=>r.preferences.header.globalSearch??!0),z=(0,l.computed)(()=>r.preferences.shortcutKeys?.globalSearch??!0),B=(0,l.computed)(()=>v(r.menus,I.value)),V=(0,l.computed)(()=>r.preferences.app.layout===`mixed-nav`&&r.preferences.sidebar.enable),H=(0,l.computed)(()=>V.value?r.menus.find(e=>!e.hidden&&e.path===x.value)?.path??B.value:B.value),U=(0,l.computed)(()=>{let e=y({activeTopMenuPath:H.value,layout:r.preferences.app.layout,menus:r.menus});return{...e,sidebarMenus:r.preferences.sidebar.enable?e.sidebarMenus:[]}}),W=(0,l.computed)(()=>U.value.sidebarMenus),G=(0,l.computed)(()=>U.value.topMenus),K=(0,l.computed)(()=>W.value.length>0),q=(0,l.computed)(()=>G.value.length>0),J=(0,l.computed)(()=>R.value.enable&&K.value&&!q.value),Y=(0,l.computed)(()=>V.value?`flat`:`tree`),ce=(0,l.computed)(()=>Y.value===`tree`?I.value:H.value),le=(0,l.computed)(()=>q.value?G.value:W.value),X=(0,l.computed)(()=>le.value.some(e=>!e.hidden));(0,l.watch)(()=>[o?.fullPath,I.value,r.menus,r.preferences.app.layout,r.preferences.sidebar.enable],()=>{x.value=B.value},{immediate:!0}),(0,l.watch)(()=>[r.preferences.app.dynamicTitle??!0,o?.meta.title,r.title],([e,t,n])=>{if(typeof document>`u`)return;let r=typeof t==`string`?t.trim():``,i=n?.trim()??``;if(!e){document.title=i;return}!r&&!i||(document.title=r&&i&&r!==i?`${r} - ${i}`:r||i)},{immediate:!0});let Z=!1;function ue(){if(r.tabStorageKey&&!(typeof sessionStorage>`u`))return{getItem:sessionStorage.getItem.bind(sessionStorage),removeItem:sessionStorage.removeItem.bind(sessionStorage),setItem:sessionStorage.setItem.bind(sessionStorage)}}function Q(){let e=ue();if(!Z||!r.preferences.tabbar.persist||!e||!r.tabStorageKey||!r.routeDriven)return;let t=Qe({tabs:b.value.map(te),history:S.value});et(e,r.tabStorageKey,t)}function de(){let e=ue();!e||!r.tabStorageKey||nt(e,r.tabStorageKey)}function fe(){if(!r.routeDriven)return;let e=ue();if(!e||!r.tabStorageKey)return;let t=tt(e,r.tabStorageKey),n=o?.path??``,i=rt(t,{currentPath:n,currentTab:o?(r.routeTabResolver??D)(o):void 0,fixedTabs:O(),isValidPath:k(),resolveTab:ne});b.value=ot(i.tabs,C.value,N.value),r.preferences.tabbar.visitHistory?(n&&i.history.unshift(n),S.value=vt(i.history,n||``)):S.value=[]}function pe(e){p.value=e?.matches??w?.matches??!1,p.value&&(m.value=!1)}(0,l.onMounted)(()=>{typeof window>`u`||typeof window.matchMedia!=`function`||(w=window.matchMedia(`(max-width: 768px)`),pe(),w.addEventListener?.(`change`,pe))}),(0,l.onBeforeUnmount)(()=>{w?.removeEventListener?.(`change`,pe)}),(0,l.watch)(()=>[r.routeDriven,C.value,r.fixedTabs],()=>{if(!r.routeDriven){b.value=[];return}let e=O(),t=new Set(e.map(e=>e.path)),n=[...e];for(let e of b.value.filter(e=>!t.has(e.path)))n=at(n,e,{maxCount:C.value});b.value=ot(it(n),C.value,N.value),Q()},{deep:!0,immediate:!0}),(0,l.watch)(()=>o?.fullPath,()=>{o&&A(o)},{immediate:!0}),r.preferences.tabbar.persist&&fe(),Z=!0,Q(),(0,l.watch)(()=>[r.routeDriven,r.tabStorageKey,r.preferences.tabbar.persist],(e,t)=>{let n=e[0],r=e[2],i=t?.[2];n&&r&&(e[1]!==t?.[1]||!i||!t?.[0])&&fe(),!r&&i&&de()},{immediate:!1});function me(){if(p.value){m.value=!m.value;return}i(`toggleSidebar`)}function $(e){m.value=!1,i(`menuSelect`,e)}function ge(e){let t=h(r.menus,e),n=t?.children?.filter(e=>!e.hidden)??[],a=!!t?.externalLink&&t?.externalTarget!==`_self`;V.value&&t&&(n.length>0||!a)&&(x.value=t.path),i(`topMenuSelect`,e),!(V.value&&n.length>0&&!r.preferences.sidebar.autoActivateChild)&&$(_(t)||e)}function _e(e){$(_(h(r.menus,e))||e)}function ve(e){i(`tabChange`,e)}function ye(e){if(r.routeDriven){let t=b.value.findIndex(t=>t.path===e),n=st(b.value,e);if(b.value=n,N.value===e){let i=r.preferences.tabbar.visitHistory;j(yt(n,e,S.value,{useHistory:i,priorClosedIndex:t})||M(n))}Q()}i(`tabRemove`,e)}function be(e){r.routeDriven&&(b.value=ct(b.value,e),j(e),Q()),i(`tabCloseLeft`,e)}function xe(e){r.routeDriven&&(b.value=lt(b.value,e),j(e),Q()),i(`tabCloseRight`,e)}function Se(e){r.routeDriven&&(b.value=ut(b.value,e),j(e),Q()),i(`tabCloseOthers`,e)}function Ce(){r.routeDriven&&(b.value=dt(b.value),j(M(b.value)),Q()),i(`tabCloseAll`)}function we(e,t){r.routeDriven&&(b.value=t?ft(b.value,e):pt(b.value,e),Q()),i(`tabPin`,e,t)}function Te(e,t){r.routeDriven&&(b.value=bt(b.value,e,t),Q()),i(`tabReorder`,e,t)}function Ee(e){let t=r.resolveTabUrl?r.resolveTabUrl(e):(()=>{if(s)try{return s.resolve(e)?.href??e}catch{return e}return e})();window.open(t,`_blank`,`noopener,noreferrer`),i(`tabNewWindow`,e)}function De(e){g.value=e,i(`tabMaximize`,e)}function Oe(e){e.key===`Escape`&&g.value&&(e.preventDefault(),u.value?.setMaximized(!1),De(!1))}return(0,l.watch)(g,e=>{typeof document>`u`||(e?document.addEventListener(`keydown`,Oe):document.removeEventListener(`keydown`,Oe))}),(0,l.onBeforeUnmount)(()=>{typeof document<`u`&&document.removeEventListener(`keydown`,Oe)}),t({getLayoutElement:()=>c.value?.$el,getLayoutInstance:()=>c.value,getTabs:()=>[...P.value],getVisitHistory:()=>[...S.value],resetTabs:()=>{b.value=dt(b.value),S.value=[],j(M(b.value)),Q()},resetTabSnapshot:()=>{de()}}),(t,n)=>((0,l.openBlock)(),(0,l.createBlock)((0,l.unref)(d.ElContainer),{ref_key:`layoutRef`,ref:c,class:(0,l.normalizeClass)([`lumal-layout`,{"is-sidebar-collapsed":F.value,"is-sidebar-hidden":!K.value,"is-mobile-menu-hidden":!m.value,"is-content-maximized":g.value}]),"data-layout":e.preferences.app.layout,direction:`vertical`},{default:(0,l.withCtx)(()=>[e.showHeader?(0,l.withDirectives)(((0,l.openBlock)(),(0,l.createBlock)(se,{key:0,title:e.title,collapsed:p.value?!m.value:F.value,height:e.headerHeight,"mobile-only-toggle":!K.value&&q.value,"sidebar-enabled":K.value||q.value,"toggle-after-title":K.value&&!p.value,onToggleCollapse:me},(0,l.createSlots)({_:2},[t.$slots.logo?{name:`logo`,fn:(0,l.withCtx)(()=>[(0,l.renderSlot)(t.$slots,`logo`,{},void 0,!0)]),key:`0`}:void 0,q.value?{name:`navigation`,fn:(0,l.withCtx)(()=>[(0,l.createVNode)(qe,{menus:G.value,"active-path":ce.value,align:e.preferences.header.menuAlign,"max-width":e.preferences.header.menuMaxWidth,mode:Y.value,onSelect:ge},null,8,[`menus`,`active-path`,`align`,`max-width`,`mode`])]),key:`1`}:void 0,J.value?{name:`breadcrumb`,fn:(0,l.withCtx)(()=>[(0,l.createVNode)(T,{class:`lumal-layout__header-breadcrumb`,"active-menu-path":I.value,"active-path":L.value,"hide-only-one":R.value.hideOnlyOne,menus:e.menus,"show-home":R.value.showHome,"show-icon":R.value.showIcon,onSelect:_e},null,8,[`active-menu-path`,`active-path`,`hide-only-one`,`menus`,`show-home`,`show-icon`])]),key:`2`}:void 0,oe.value||t.$slots.headerActions?{name:`actions`,fn:(0,l.withCtx)(()=>[oe.value?((0,l.openBlock)(),(0,l.createBlock)(ae,{key:0,menus:e.menus,shortcut:z.value,onSelect:_e},null,8,[`menus`,`shortcut`])):(0,l.createCommentVNode)(``,!0),(0,l.renderSlot)(t.$slots,`headerActions`,{},void 0,!0)]),key:`3`}:void 0]),1032,[`title`,`collapsed`,`height`,`mobile-only-toggle`,`sidebar-enabled`,`toggle-after-title`])),[[l.vShow,!g.value]]):(0,l.createCommentVNode)(``,!0),(0,l.createVNode)((0,l.unref)(d.ElContainer),{class:`lumal-layout__body`},{default:(0,l.withCtx)(()=>[X.value&&!g.value?((0,l.openBlock)(),(0,l.createElementBlock)(`button`,{key:0,class:`lumal-layout__sidebar-scrim`,type:`button`,"aria-label":`关闭侧边栏`,onClick:n[0]||=e=>m.value=!1})):(0,l.createCommentVNode)(``,!0),g.value?(0,l.createCommentVNode)(``,!0):((0,l.openBlock)(),(0,l.createBlock)(l.Transition,{key:1,name:`lumal-layout-sidebar`,appear:``},{default:(0,l.withCtx)(()=>[K.value?((0,l.openBlock)(),(0,l.createBlock)(he,{key:0,class:`lumal-layout__desktop-sidebar`,"aria-label":`主菜单`,menus:W.value,"active-path":I.value,collapsed:F.value,width:`${e.preferences.sidebar.width}px`,"collapsed-width":`64px`,onSelect:$},null,8,[`menus`,`active-path`,`collapsed`,`width`])):(0,l.createCommentVNode)(``,!0)]),_:1})),X.value&&!g.value?((0,l.openBlock)(),(0,l.createBlock)(he,{key:2,class:`lumal-layout__mobile-sidebar`,"aria-label":`移动菜单`,"aria-hidden":!m.value,inert:!m.value||void 0,menus:le.value,"active-path":I.value,collapsed:!1,width:`${e.preferences.sidebar.width}px`,"collapsed-width":`64px`,onSelect:$},null,8,[`aria-hidden`,`inert`,`menus`,`active-path`,`width`])):(0,l.createCommentVNode)(``,!0),(0,l.createVNode)((0,l.unref)(d.ElContainer),{class:`lumal-layout__main`,direction:`vertical`,"data-layout-fullscreen-target":``},{default:(0,l.withCtx)(()=>[R.value.enable&&!J.value&&!g.value?((0,l.openBlock)(),(0,l.createBlock)(T,{key:0,"active-menu-path":I.value,"active-path":L.value,"hide-only-one":R.value.hideOnlyOne,menus:e.menus,"show-home":R.value.showHome,"show-icon":R.value.showIcon,onSelect:_e},null,8,[`active-menu-path`,`active-path`,`hide-only-one`,`menus`,`show-home`,`show-icon`])):(0,l.createCommentVNode)(``,!0),re.value&&e.preferences.tabbar.enable?((0,l.openBlock)(),(0,l.createBlock)(Ie,{key:1,ref_key:`tabsRef`,ref:u,"active-path":N.value,"onUpdate:activePath":n[1]||=e=>N.value=e,tabs:P.value,"show-icon":e.preferences.tabbar.showIcon,"show-maximize":e.preferences.tabbar.showMaximize,"show-more":e.preferences.tabbar.showMore,"show-refresh":e.preferences.tabbar.showRefresh,draggable:e.preferences.tabbar.draggable,wheelable:e.preferences.tabbar.wheelable,"middle-click-to-close":e.preferences.tabbar.middleClickToClose,"style-type":e.preferences.tabbar.styleType,onChange:ve,onCloseAll:Ce,onCloseLeft:be,onCloseOthers:Se,onCloseRight:xe,onMaximize:De,onNewWindow:Ee,onPin:we,onRefresh:n[2]||=e=>i(`tabRefresh`,e),onRemove:ye,onReorder:Te},null,8,[`active-path`,`tabs`,`show-icon`,`show-maximize`,`show-more`,`show-refresh`,`draggable`,`wheelable`,`middle-click-to-close`,`style-type`])):(0,l.createCommentVNode)(``,!0),(0,l.createVNode)(ee,null,{default:(0,l.withCtx)(()=>[(0,l.renderSlot)(t.$slots,`default`,{tabs:P.value},void 0,!0)]),_:3})]),_:3})]),_:3})]),_:3},8,[`data-layout`,`class`]))}}),Ct=c.t(St,[[`__scopeId`,`data-v-bac59663`]]),wt={key:0,class:`lumal-router-view__progress`,"aria-hidden":`true`},Tt={key:1,class:`lumal-router-view__loading`,"aria-hidden":`true`},Et=(0,l.defineComponent)({__name:`LumalRouterView`,props:{viewKey:{default:`default`},transition:{type:Boolean,default:!1},transitionName:{default:`fade-side`},progress:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},cache:{type:Boolean,default:!1},cacheMax:{default:20},cacheKeys:{}},setup(e,{expose:t}){let n=e,r=(0,l.useTemplateRef)(`routerViewRef`),i=(0,l.inject)(f.routeLocationKey,void 0),a=(0,l.inject)(f.routerKey,void 0),o=(0,l.shallowRef)(!1),s=(0,l.computed)(()=>n.progress&&o.value),c=(0,l.computed)(()=>n.loading&&o.value),u=(0,l.computed)(()=>Number.isFinite(n.cacheMax)&&n.cacheMax>0?Math.max(1,Math.floor(n.cacheMax)):20),d=(0,l.computed)(()=>n.transition?n.transitionName:void 0),p=new Map,m=(0,l.shallowRef)(),h=(0,l.shallowRef)([]),g=0;(0,l.watch)([()=>n.viewKey,()=>n.cacheKeys?.slice(),()=>n.cache,u,()=>i?.meta.keepAlive],()=>{let e=n.cacheKeys?new Set(n.cacheKeys):void 0;for(let t of p.keys())(!n.cache||e&&!e.has(t)||t===n.viewKey&&i?.meta.keepAlive===!1)&&p.delete(t);let t=p.get(n.viewKey);if(n.cache&&i?.meta.keepAlive!==!1&&(!e||e.has(n.viewKey))){if(!t){let e=`LumalCachedView${++g}`;t={name:e,component:(0,l.defineComponent)({name:e,setup:(e,{slots:t})=>()=>t.default?.()})}}p.delete(n.viewKey),p.set(n.viewKey,t)}else t=void 0;for(;p.size>u.value;)p.delete(p.keys().next().value);m.value=t?.component,h.value=[...p.values()].map(e=>e.name)},{immediate:!0});let _,v=a?.beforeEach(e=>{_=e,o.value=!0}),y=a?.afterEach(e=>{_===e&&(o.value=!1)}),b=a?.onError((e,t)=>{_===t&&(o.value=!1)});return(0,l.onBeforeUnmount)(()=>{v?.(),y?.(),b?.(),p.clear()}),t({getRouterViewElement:()=>r.value}),(t,n)=>((0,l.openBlock)(),(0,l.createElementBlock)(`div`,{ref_key:`routerViewRef`,ref:r,class:`lumal-router-view`},[s.value?((0,l.openBlock)(),(0,l.createElementBlock)(`div`,wt,[...n[0]||=[(0,l.createElementVNode)(`span`,{class:`lumal-router-view__progress-bar`},null,-1)]])):(0,l.createCommentVNode)(``,!0),(0,l.createVNode)((0,l.unref)(f.RouterView),null,{default:(0,l.withCtx)(({Component:t})=>[(0,l.createVNode)(l.Transition,{appear:``,mode:`out-in`,name:d.value,css:e.transition},{default:(0,l.withCtx)(()=>[e.cache?((0,l.openBlock)(),(0,l.createBlock)(l.KeepAlive,{key:0,include:h.value,max:u.value},[m.value?((0,l.openBlock)(),(0,l.createBlock)((0,l.resolveDynamicComponent)(m.value),{key:e.viewKey},{default:(0,l.withCtx)(()=>[((0,l.openBlock)(),(0,l.createBlock)((0,l.resolveDynamicComponent)(t)))]),_:2},1024)):((0,l.openBlock)(),(0,l.createBlock)((0,l.resolveDynamicComponent)(t),{key:e.viewKey}))],1032,[`include`,`max`])):((0,l.openBlock)(),(0,l.createBlock)((0,l.resolveDynamicComponent)(t),{key:e.viewKey}))]),_:2},1032,[`name`,`css`])]),_:1}),c.value?((0,l.openBlock)(),(0,l.createElementBlock)(`div`,Tt,[...n[1]||=[(0,l.createElementVNode)(`span`,{class:`lumal-router-view__loading-dot`},null,-1)]])):(0,l.createCommentVNode)(``,!0)],512))}}),Dt=c.t(Et,[[`__scopeId`,`data-v-f438a089`]]);Object.defineProperty(exports,"A",{enumerable:!0,get:function(){return he}}),Object.defineProperty(exports,"B",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"C",{enumerable:!0,get:function(){return $e}}),Object.defineProperty(exports,"D",{enumerable:!0,get:function(){return et}}),Object.defineProperty(exports,"E",{enumerable:!0,get:function(){return Qe}}),Object.defineProperty(exports,"F",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"I",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"L",{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,"M",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(exports,"N",{enumerable:!0,get:function(){return ee}}),Object.defineProperty(exports,"O",{enumerable:!0,get:function(){return qe}}),Object.defineProperty(exports,"P",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"R",{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return nt}}),Object.defineProperty(exports,"T",{enumerable:!0,get:function(){return rt}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return yt}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return ht}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return Ye}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return ut}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return lt}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return mt}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return xt}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return bt}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return gt}}),Object.defineProperty(exports,"j",{enumerable:!0,get:function(){return se}}),Object.defineProperty(exports,"k",{enumerable:!0,get:function(){return Ie}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return st}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return vt}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return Ct}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return ot}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return ft}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return at}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return dt}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return Dt}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return ct}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return it}}),Object.defineProperty(exports,"w",{enumerable:!0,get:function(){return tt}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return Je}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return pt}}),Object.defineProperty(exports,"z",{enumerable:!0,get:function(){return _}});
|
package/dist/layout.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./layout-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./layout-BgyM9WJi.cjs");exports.DEFAULT_MAX_VISIT_HISTORY=e.b,exports.LumalBreadcrumb=e.P,exports.LumalContent=e.N,exports.LumalGlobalSearch=e.M,exports.LumalHeader=e.j,exports.LumalLayout=e.n,exports.LumalRouterView=e.t,exports.LumalSidebar=e.A,exports.LumalTabs=e.k,exports.LumalTopNav=e.O,exports.TAB_SNAPSHOT_VERSION=e.x,exports.appendTab=e.r,exports.canPinTab=e.i,exports.canUnpinTab=e.a,exports.clampTabCount=e.o,exports.clearTabSnapshot=e.S,exports.closeAllTabs=e.s,exports.closeOtherTabs=e.c,exports.closeTab=e.l,exports.closeTabsLeft=e.u,exports.closeTabsRight=e.d,exports.deserializeTabSnapshot=e.C,exports.findMenuItemByPath=e.F,exports.findMenuTrailByPath=e.I,exports.includesMenuPath=e.L,exports.isPermanentlyPinned=e.f,exports.pinTab=e.p,exports.pushVisitHistory=e.m,exports.readTabSnapshot=e.w,exports.reorderTab=e.h,exports.resolveActiveTopMenuPath=e.R,exports.resolveCachedTabPaths=e.g,exports.resolveNavigationTarget=e.z,exports.resolveNextActivePath=e._,exports.restoreTabsFromSnapshot=e.T,exports.serializeTabSnapshot=e.E,exports.sortTabsByPinned=e.v,exports.splitMenusByLayout=e.B,exports.unpinTab=e.y,exports.writeTabSnapshot=e.D;
|
package/dist/layout.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { A as e, B as t, C as n, D as r, E as i, F as a, I as o, L as s, M as c, N as l, O as u, P as d, R as f, S as p, T as m, _ as h, a as g, b as _, c as v, d as y, f as b, g as x, h as S, i as C, j as w, k as T, l as E, m as D, n as O, o as k, p as A, r as j, s as M, t as N, u as P, v as F, w as I, x as L, y as R, z } from "./layout-
|
|
1
|
+
import { A as e, B as t, C as n, D as r, E as i, F as a, I as o, L as s, M as c, N as l, O as u, P as d, R as f, S as p, T as m, _ as h, a as g, b as _, c as v, d as y, f as b, g as x, h as S, i as C, j as w, k as T, l as E, m as D, n as O, o as k, p as A, r as j, s as M, t as N, u as P, v as F, w as I, x as L, y as R, z } from "./layout-B7yJhQXN.js";
|
|
2
2
|
export { _ as DEFAULT_MAX_VISIT_HISTORY, d as LumalBreadcrumb, l as LumalContent, c as LumalGlobalSearch, w as LumalHeader, O as LumalLayout, N as LumalRouterView, e as LumalSidebar, T as LumalTabs, u as LumalTopNav, L as TAB_SNAPSHOT_VERSION, j as appendTab, C as canPinTab, g as canUnpinTab, k as clampTabCount, p as clearTabSnapshot, M as closeAllTabs, v as closeOtherTabs, E as closeTab, P as closeTabsLeft, y as closeTabsRight, n as deserializeTabSnapshot, a as findMenuItemByPath, o as findMenuTrailByPath, s as includesMenuPath, b as isPermanentlyPinned, A as pinTab, D as pushVisitHistory, I as readTabSnapshot, S as reorderTab, f as resolveActiveTopMenuPath, x as resolveCachedTabPaths, z as resolveNavigationTarget, h as resolveNextActivePath, m as restoreTabsFromSnapshot, i as serializeTabSnapshot, F as sortTabsByPinned, t as splitMenusByLayout, R as unpinTab, r as writeTabSnapshot };
|
package/dist/minimal.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./createLumalApp-C5o7gAlu.cjs");function t(t){return e.t({...t,dictionary:t.dictionary??!1})}exports.createLumalAdmin=t;
|
package/dist/minimal.js
ADDED
|
@@ -1,57 +1,47 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
var o = Symbol("lumal-permission-store");
|
|
4
|
-
function s(e) {
|
|
5
|
-
return r(o, e), e;
|
|
6
|
-
}
|
|
7
|
-
function c() {
|
|
8
|
-
let e = n(o, void 0);
|
|
9
|
-
if (!e) throw Error("[Lumal] PermissionStore 未注入,请先调用 providePermissionStore 或传入 createLumalAdmin.permissionStore。");
|
|
10
|
-
return e;
|
|
11
|
-
}
|
|
12
|
-
//#endregion
|
|
1
|
+
import { t as e } from "./context-Bdx-ZJbt.js";
|
|
2
|
+
import { computed as t, defineComponent as n, inject as r, renderSlot as i, shallowRef as a } from "vue";
|
|
13
3
|
//#region src/permission/guard.ts
|
|
14
|
-
function
|
|
4
|
+
function o(e, t, n) {
|
|
15
5
|
return (e.matched?.length ? e.matched : [e]).every((e) => {
|
|
16
6
|
let r = e.meta ?? {}, i = r.permissions ?? r.permission, a = r.roles ?? r.role;
|
|
17
7
|
return t.hasPermission(i, n.mode) && t.hasRole(a, n.roleMode);
|
|
18
8
|
});
|
|
19
9
|
}
|
|
20
|
-
function
|
|
10
|
+
function s(e, t) {
|
|
21
11
|
let n = e.meta?.requireLogin;
|
|
22
12
|
return n === !1 ? !1 : n === !0 || t;
|
|
23
13
|
}
|
|
24
|
-
function
|
|
14
|
+
function c(e, t, n) {
|
|
25
15
|
let r = e.fullPath ?? e.path;
|
|
26
16
|
return {
|
|
27
17
|
path: t,
|
|
28
18
|
query: r ? { [n]: r } : void 0
|
|
29
19
|
};
|
|
30
20
|
}
|
|
31
|
-
function
|
|
32
|
-
let r = new Set(n.whiteList ?? []), i = n.loginPath ?? "/login", a = n.redirectQueryKey ?? "redirect",
|
|
33
|
-
e.beforeEach((e) => e.path === i || e.path && r.has(e.path) ? !0 : n.isAuthenticated &&
|
|
21
|
+
function l(e, t, n = {}) {
|
|
22
|
+
let r = new Set(n.whiteList ?? []), i = n.loginPath ?? "/login", a = n.redirectQueryKey ?? "redirect", l = n.requireLoginByDefault ?? !1;
|
|
23
|
+
e.beforeEach((e) => e.path === i || e.path && r.has(e.path) ? !0 : n.isAuthenticated && s(e, l) && !n.isAuthenticated() ? c(e, i, a) : o(e, t, n) ? !0 : n.noAccessRedirect ?? !1);
|
|
34
24
|
}
|
|
35
25
|
//#endregion
|
|
36
26
|
//#region src/permission/helpers.ts
|
|
37
|
-
function
|
|
27
|
+
function u(e) {
|
|
38
28
|
return e ? Array.isArray(e) ? e : [e] : [];
|
|
39
29
|
}
|
|
40
|
-
function
|
|
41
|
-
let r =
|
|
30
|
+
function d(e, t, n = "some") {
|
|
31
|
+
let r = u(t);
|
|
42
32
|
if (r.length === 0) return !0;
|
|
43
33
|
let i = new Set(e), a = (e) => i.has(e);
|
|
44
34
|
return n === "every" ? r.every(a) : r.some(a);
|
|
45
35
|
}
|
|
46
|
-
function
|
|
47
|
-
return
|
|
36
|
+
function f(e, t, n = "some") {
|
|
37
|
+
return d(e, t, n);
|
|
48
38
|
}
|
|
49
|
-
function
|
|
50
|
-
return
|
|
39
|
+
function p(e, t, n = "some") {
|
|
40
|
+
return d(e, t, n);
|
|
51
41
|
}
|
|
52
42
|
//#endregion
|
|
53
43
|
//#region src/permission/LumalAccessControl.vue
|
|
54
|
-
var
|
|
44
|
+
var m = /* @__PURE__ */ n({
|
|
55
45
|
__name: "LumalAccessControl",
|
|
56
46
|
props: {
|
|
57
47
|
mode: {},
|
|
@@ -62,19 +52,19 @@ var _ = /* @__PURE__ */ t({
|
|
|
62
52
|
roles: {},
|
|
63
53
|
store: {}
|
|
64
54
|
},
|
|
65
|
-
setup(
|
|
66
|
-
let
|
|
55
|
+
setup(n) {
|
|
56
|
+
let a = n, o = r(e, void 0), s = t(() => a.store ?? o), c = t(() => {
|
|
67
57
|
let e = s.value;
|
|
68
58
|
if (!e) return !1;
|
|
69
|
-
let t =
|
|
70
|
-
return e.hasPermission(t,
|
|
59
|
+
let t = a.permission ?? a.permissions, n = a.role ?? a.roles;
|
|
60
|
+
return e.hasPermission(t, a.mode) && e.hasRole(n, a.roleMode);
|
|
71
61
|
});
|
|
72
62
|
return (e, t) => c.value ? i(e.$slots, "default", { key: 0 }) : i(e.$slots, "fallback", { key: 1 });
|
|
73
63
|
}
|
|
74
64
|
});
|
|
75
65
|
//#endregion
|
|
76
66
|
//#region src/permission/store.ts
|
|
77
|
-
function
|
|
67
|
+
function h(e = {}) {
|
|
78
68
|
let t = a([...e.permissions ?? []]), n = a([...e.roles ?? []]);
|
|
79
69
|
return {
|
|
80
70
|
get permissions() {
|
|
@@ -87,10 +77,10 @@ function v(e = {}) {
|
|
|
87
77
|
t.value = [], n.value = [];
|
|
88
78
|
},
|
|
89
79
|
hasPermission(e, n) {
|
|
90
|
-
return
|
|
80
|
+
return f(t.value, e, n);
|
|
91
81
|
},
|
|
92
82
|
hasRole(e, t) {
|
|
93
|
-
return
|
|
83
|
+
return p(n.value, e, t);
|
|
94
84
|
},
|
|
95
85
|
setPermissions(e) {
|
|
96
86
|
t.value = [...e];
|
|
@@ -101,4 +91,4 @@ function v(e = {}) {
|
|
|
101
91
|
};
|
|
102
92
|
}
|
|
103
93
|
//#endregion
|
|
104
|
-
export {
|
|
94
|
+
export { l as a, p as i, m as n, f as r, h as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require("./context-CWQ1OO16.cjs");let t=require("vue");function n(e,t,n){return(e.matched?.length?e.matched:[e]).every(e=>{let r=e.meta??{},i=r.permissions??r.permission,a=r.roles??r.role;return t.hasPermission(i,n.mode)&&t.hasRole(a,n.roleMode)})}function r(e,t){let n=e.meta?.requireLogin;return n===!1?!1:n===!0||t}function i(e,t,n){let r=e.fullPath??e.path;return{path:t,query:r?{[n]:r}:void 0}}function a(e,t,a={}){let o=new Set(a.whiteList??[]),s=a.loginPath??`/login`,c=a.redirectQueryKey??`redirect`,l=a.requireLoginByDefault??!1;e.beforeEach(e=>e.path===s||e.path&&o.has(e.path)?!0:a.isAuthenticated&&r(e,l)&&!a.isAuthenticated()?i(e,s,c):n(e,t,a)?!0:a.noAccessRedirect??!1)}function o(e){return e?Array.isArray(e)?e:[e]:[]}function s(e,t,n=`some`){let r=o(t);if(r.length===0)return!0;let i=new Set(e),a=e=>i.has(e);return n===`every`?r.every(a):r.some(a)}function c(e,t,n=`some`){return s(e,t,n)}function l(e,t,n=`some`){return s(e,t,n)}var u=(0,t.defineComponent)({__name:`LumalAccessControl`,props:{mode:{},permission:{},permissions:{},role:{},roleMode:{},roles:{},store:{}},setup(n){let r=n,i=(0,t.inject)(e.t,void 0),a=(0,t.computed)(()=>r.store??i),o=(0,t.computed)(()=>{let e=a.value;if(!e)return!1;let t=r.permission??r.permissions,n=r.role??r.roles;return e.hasPermission(t,r.mode)&&e.hasRole(n,r.roleMode)});return(e,n)=>o.value?(0,t.renderSlot)(e.$slots,`default`,{key:0}):(0,t.renderSlot)(e.$slots,`fallback`,{key:1})}});function d(e={}){let n=(0,t.shallowRef)([...e.permissions??[]]),r=(0,t.shallowRef)([...e.roles??[]]);return{get permissions(){return[...n.value]},get roles(){return[...r.value]},clear(){n.value=[],r.value=[]},hasPermission(e,t){return c(n.value,e,t)},hasRole(e,t){return l(r.value,e,t)},setPermissions(e){n.value=[...e]},setRoles(e){r.value=[...e]}}}Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return d}});
|
package/dist/permission.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./context-CWQ1OO16.cjs"),t=require("./directive-DSVr7QvO.cjs"),n=require("./permission-CoqteYAi.cjs");exports.LumalAccessControl=n.n,exports.createPermissionDirective=t.t,exports.createPermissionStore=n.t,exports.hasPermission=n.r,exports.hasRole=n.i,exports.permissionStoreKey=e.t,exports.providePermissionStore=e.n,exports.setupPermissionGuard=n.a,exports.usePermissionStore=e.r;
|
package/dist/permission.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as
|
|
3
|
-
|
|
1
|
+
import { n as e, r as t, t as n } from "./context-Bdx-ZJbt.js";
|
|
2
|
+
import { t as r } from "./directive-D-fB5qbY.js";
|
|
3
|
+
import { a as i, i as a, n as o, r as s, t as c } from "./permission-CHw9eXd8.js";
|
|
4
|
+
export { o as LumalAccessControl, r as createPermissionDirective, c as createPermissionStore, s as hasPermission, a as hasRole, n as permissionStoreKey, e as providePermissionStore, i as setupPermissionGuard, t as usePermissionStore };
|
package/dist/request.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(){let e=new Map;return{get:t=>e.get(t),set:(t,n)=>{e.set(t,n)},has:t=>e.has(t),delete:t=>{e.delete(t)},clear:()=>{e.clear()}}}var t=class extends Error{code;data;kind;originalError;response;status;constructor(e,t={}){super(e),this.name=`RequestError`,this.code=t.code,this.data=t.data,this.kind=t.kind??`business`,this.originalError=t.originalError,this.response=t.response,this.status=t.status}};function n(e){return/^https?:\/\//i.test(e)}function r(e,t){return!e||n(t)?t:`${e.replace(/\/+$/,``)}/${t.replace(/^\/+/,``)}`}function i(e,t){if(!t)return e;let r=new URL(e,n(e)?void 0:`http://lumal.local`);return Object.entries(t).forEach(([e,t])=>{(Array.isArray(t)?t:[t]).forEach(t=>{t!=null&&r.searchParams.append(e,String(t))})}),n(e)?r.toString():`${r.pathname}${r.search}${r.hash}`}function a(e){return e==null?!1:Array.isArray(e)?!0:!(typeof e!=`object`||typeof FormData<`u`&&e instanceof FormData||typeof URLSearchParams<`u`&&e instanceof URLSearchParams||typeof Blob<`u`&&e instanceof Blob||typeof ArrayBuffer<`u`&&e instanceof ArrayBuffer)}function o(e,t,n){if(!(e===`GET`||t===void 0))return a(t)?(n.has(`content-type`)||n.set(`content-type`,`application/json`),JSON.stringify(t)):t}async function s(e){if(e.status!==204)return(e.headers.get(`content-type`)??``).includes(`application/json`)?e.json():e.text()}async function c(e,t){if(e.has(`Authorization`)||!t.getToken)return;let n=await t.getToken();return n&&e.set(`Authorization`,`${t.tokenPrefix??`Bearer`} ${n}`),n}function l(e){return typeof ReadableStream>`u`||!(e instanceof ReadableStream)}function u(e,t){return!new Headers(t.headers).has(`Authorization`)&&(e===`GET`||t.retryOnAuthRefresh===!0)&&l(t.body)}function d(e,n){if(e instanceof t)return e;let r=n?.aborted===!0||typeof DOMException<`u`&&e instanceof DOMException&&e.name===`AbortError`;return new t(r?`请求已取消`:`网络连接失败`,{kind:r?`cancelled`:`network`,originalError:e})}var f=0;function
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(){let e=new Map;return{get:t=>e.get(t),set:(t,n)=>{e.set(t,n)},has:t=>e.has(t),delete:t=>{e.delete(t)},clear:()=>{e.clear()}}}var t=class extends Error{code;data;kind;originalError;response;status;constructor(e,t={}){super(e),this.name=`RequestError`,this.code=t.code,this.data=t.data,this.kind=t.kind??`business`,this.originalError=t.originalError,this.response=t.response,this.status=t.status}};function n(e){return/^https?:\/\//i.test(e)}function r(e,t){return!e||n(t)?t:`${e.replace(/\/+$/,``)}/${t.replace(/^\/+/,``)}`}function i(e,t){if(!t)return e;let r=new URL(e,n(e)?void 0:`http://lumal.local`);return Object.entries(t).forEach(([e,t])=>{(Array.isArray(t)?t:[t]).forEach(t=>{t!=null&&r.searchParams.append(e,String(t))})}),n(e)?r.toString():`${r.pathname}${r.search}${r.hash}`}function a(e){return e==null?!1:Array.isArray(e)?!0:!(typeof e!=`object`||typeof FormData<`u`&&e instanceof FormData||typeof URLSearchParams<`u`&&e instanceof URLSearchParams||typeof Blob<`u`&&e instanceof Blob||typeof ArrayBuffer<`u`&&e instanceof ArrayBuffer)}function o(e,t,n){if(!(e===`GET`||t===void 0))return a(t)?(n.has(`content-type`)||n.set(`content-type`,`application/json`),JSON.stringify(t)):t}async function s(e){if(e.status!==204)return(e.headers.get(`content-type`)??``).includes(`application/json`)?e.json():e.text()}async function c(e,t){if(e.has(`Authorization`)||!t.getToken)return;let n=await t.getToken();return n&&e.set(`Authorization`,`${t.tokenPrefix??`Bearer`} ${n}`),n}function l(e){return typeof ReadableStream>`u`||!(e instanceof ReadableStream)}function u(e,t){return!new Headers(t.headers).has(`Authorization`)&&(e===`GET`||t.retryOnAuthRefresh===!0)&&l(t.body)}function d(e,n){if(e instanceof t)return e;let r=n?.aborted===!0||typeof DOMException<`u`&&e instanceof DOMException&&e.name===`AbortError`;return new t(r?`请求已取消`:`网络连接失败`,{kind:r?`cancelled`:`network`,originalError:e})}var f=0,p=0;function m(e){if(e.requestId)return typeof e.requestId==`function`?e.requestId():(f+=1,`lumal-${f.toString(36)}-${f}`)}function h(n={}){let a=n.fetch??globalThis.fetch,l=new Set,f=n.cache??e(),h=globalThis.crypto?.randomUUID?.()??`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}-${++p}`,g=new Map,_=0,v=0,y,b,x=!1;function S(){v+=1,C()}function C(){_+=1,g.forEach((e,t)=>e.forEach(e=>t.delete(e))),g.clear()}async function w(e,p={}){let w=v,T=p.method??`GET`,E=i(r(n.baseURL,e),p.query),D=m(n),O=p.cache,k=O?.enabled===!0&&(T===`GET`||!!O.key),A=O?.cache??f,j;if(n.duplicateSubmit){let e=new Headers(p.headers),n=o(T,p.body,e);if(j=`${T}:${E}:${typeof n==`string`?n:``}`,l.has(j))throw new t(`Duplicate request`,{code:`DUPLICATE_REQUEST`,kind:`duplicate`});l.add(j)}try{return await M(0)}finally{j&&l.delete(j)}async function M(e){let r=new Headers(p.headers),i=await c(r,n);D&&r.set(n.requestIdHeader??`X-Request-Id`,D);let l={body:o(T,p.body,r),headers:r,method:T,signal:p.signal};await n.onRequest?.({init:l,requestId:D,url:E});let u=JSON.stringify([new Headers(l.headers).get(`Authorization`),n.getCacheScope?.()]);u!==y&&(C(),y=u);let f=_,m=JSON.stringify([h,f,O?.scope,O?.key??`${T}:${E}`]);if(p.signal?.aborted)throw d(p.signal.reason,p.signal);if(k&&w===v&&A.has(m))return A.get(m);let b;try{b=await a(E,l)}catch(e){let t=d(e,p.signal);throw await n.onRequestError?.({error:t,init:l,requestId:D,url:E}),t}let S;try{S=await s(b)}catch(e){let n=new t(`响应数据解析失败`,{kind:`http`,originalError:e,response:b,status:b.status});throw await P(n,l,b),n}let j={attempt:e,data:S,init:l,requestId:D,response:b,url:E};if(b.status===401)return N(new t(b.statusText||`会话已过期`,{data:S,kind:`session`,response:b,status:b.status}),j,i,e);if(!b.ok){let e=new t(b.statusText||`HTTP ${b.status}`,{data:S,kind:`http`,response:b,status:b.status});throw await P(e,l,b),e}try{let e=n.onResponse?await n.onResponse(j):S;if(x=!1,k&&f===_&&w===v){A.set(m,e);let t=g.get(A)??new Set;t.add(m),g.set(A,t)}return e}catch(n){if(n instanceof t&&n.kind===`session`)return N(n,j,i,e);let r=n instanceof t?n:new t(n instanceof Error?n.message:`业务响应处理失败`,{data:S,kind:`business`,originalError:n,response:b,status:b.status});throw await P(r,l,b),r}}async function N(e,r,i,a){if(a===0&&u(T,p)&&n.authRefresh){let o=await n.getToken?.();if(i&&o&&o!==i)return M(a+1);try{return b||=n.authRefresh.refresh(r).finally(()=>{b=void 0}),await b,x=!1,M(a+1)}catch(n){e=new t(e.message,{code:e.code,data:e.data,kind:`session`,originalError:n,response:e.response,status:e.status})}}throw x||(x=!0,S(),await n.onSessionExpired?.(r)),await P(e,r.init,r.response),e}async function P(e,t,r){await n.onResponseError?.({error:e,init:t,requestId:D,response:r,url:E})}}function T(e,t,n={}){let{data:r,fileField:i=`file`,...a}=n,o=new FormData;return(Array.isArray(t)?t:[t]).forEach(e=>{o.append(i,e)}),r&&Object.entries(r).forEach(([e,t])=>{t!=null&&o.append(e,String(t))}),w(e,{...a,body:o,method:`POST`})}return{clearCache:S,delete:(e,t)=>w(e,{...t,method:`DELETE`}),get:(e,t)=>w(e,{...t,method:`GET`}),patch:(e,t)=>w(e,{...t,method:`PATCH`}),post:(e,t)=>w(e,{...t,method:`POST`}),put:(e,t)=>w(e,{...t,method:`PUT`}),request:w,upload:T}}function g(e,n={}){let r=n.fieldNames?.code??`code`,i=n.fieldNames?.data??`data`,a=n.fieldNames?.message??`message`,o=n.successCodes??[0,200],s=n.sessionExpiredCodes??[],c=e[r];if(c===void 0)return e;if(!o.includes(c)){let r=String(e[a]??`请求失败`);if(n.onError)return n.onError(r,e);throw new t(r,{code:typeof c==`number`||typeof c==`string`?c:void 0,data:e,kind:s.includes(c)?`session`:`business`})}let l=e[i];return n.transform?n.transform(l,e):l}function _(e={}){return t=>g(t.data,e)}function v(e,n={}){let r=n.parseResponse?n.parseResponse(e):e;if(!r||typeof r!=`object`||Array.isArray(r))throw new t(`分页响应格式不正确`,{data:e,kind:`business`});let i=r,a=i[n.fieldNames?.items??`items`],o=i[n.fieldNames?.total??`total`],s=typeof o==`number`?o:Number(o);if(!Array.isArray(a)||!Number.isFinite(s))throw new t(`分页响应缺少有效的 items 或 total`,{data:e,kind:`business`});return{items:n.transform?a.map(n.transform):a,total:s}}exports.RequestError=t,exports.createRequestCache=e,exports.createRequestClient=h,exports.createStandardResponseParser=_,exports.parsePageResult=v,exports.parseStandardResponse=g;
|