shared-layout-components 1.0.17 → 1.0.18

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/dist/index.esm.js CHANGED
@@ -1 +1 @@
1
- import{Fragment as e,computed as t,createBlock as n,createCommentVNode as a,createElementBlock as r,createElementVNode as o,createVNode as u,getCurrentInstance as i,inject as l,normalizeClass as c,onMounted as s,openBlock as f,ref as d,renderList as v,renderSlot as y,resolveComponent as b,toDisplayString as p,unref as m,watch as h,withCtx as g,withModifiers as A}from"vue";import{EnvironmentOutlined as T,LeftOutlined as k,RightOutlined as S}from"@ant-design/icons-vue";var w={262(e,t){t.A=(e,t)=>{const n=e.__vccOpts||e;for(const[e,a]of t)n[e]=a;return n}}},D={};function P(e){var t=D[e];if(void 0!==t)return t.exports;var n=D[e]={exports:{}};return w[e](n,n.exports,P),n.exports}function C(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=L(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var a=0,r=function(){};return{s:r,n:function(){return a>=e.length?{done:!0}:{done:!1,value:e[a++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,u=!0,i=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return u=e.done,e},e:function(e){i=!0,o=e},f:function(){try{u||null==n.return||n.return()}finally{if(i)throw o}}}}function L(e,t){if(e){if("string"==typeof e)return E(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?E(e,t):void 0}}function E(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}P.d=(e,t)=>{for(var n in t)P.o(t,n)&&!P.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},P.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var K={class:"system-title"},O={class:"menu-wrapper"};const R={__name:"SidebarLayout",props:{activeKey:{type:String,default:""},menuData:{type:Array,default:function(){return[]}},collapsed:{type:Boolean,default:!1},systemTitle:{type:String,default:"XXXXXX系统名称"}},emits:["menu-click","update:activeKey","update:collapsed"],setup:function(e,a){var i=a.expose,l=a.emit,s=e,v=l,y=(t(function(){return s.systemTitle}),d(s.collapsed)),g=d([]),A=d([]);h(function(){return s.collapsed},function(e){y.value=e}),h(y,function(e){v("update:collapsed",e)}),h(function(){return s.activeKey},function(e){if(e){g.value=[e];var t=function(e,n){var a,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,o=C(e);try{for(o.s();!(a=o.n()).done;){var u=a.value;if(u.key===n)return r;if(u.children){var i=t(u.children,n,u.key);if(null!==i)return i}}}catch(e){o.e(e)}finally{o.f()}return null},n=s.menuData.length>0?s.menuData:T,a=t(n,e);a&&!A.value.includes(a)&&(A.value=[].concat(function(e){if(Array.isArray(e))return E(e)}(r=A.value)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(r)||L(r)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),[a]))}var r},{immediate:!0});var T=[],w=function(e){return e.map(function(e){var t={key:e.key,label:e.label||e.title,title:e.title||e.label,path:e.path,external:e.external};return e.children&&e.children.length>0&&(t.children=w(e.children)),t})},D=t(function(){var e=s.menuData.length>0?s.menuData:T;return w(e)}),P=function(){y.value=!y.value},R=function(e){var t=e.key,n=(e.item,function(e,t){var a,r=C(e);try{for(r.s();!(a=r.n()).done;){var o=a.value;if(o.key===t)return o;if(o.children){var u=n(o.children,t);if(u)return u}}}catch(e){r.e(e)}finally{r.f()}return null}),a=s.menuData.length>0?s.menuData:T,r=n(a,t);r&&(v("menu-click",r),v("update:activeKey",t))},B=function(e){A.value=e};return h(g,function(e){if(e.length>0){var t=e[0];v("update:activeKey",t)}},{immediate:!1}),i({toggleCollapse:P,expandMenu:function(e){A.value.includes(e)||A.value.push(e)},collapseMenu:function(e){var t=A.value.indexOf(e);t>-1&&A.value.splice(t,1)}}),function(e,t){var a=b("a-menu");return f(),r("div",{class:c(["sidebar",{collapsed:y.value}])},[o("div",K,[o("h1",null,p(s.systemTitle),1)]),o("div",O,[u(a,{selectedKeys:g.value,"onUpdate:selectedKeys":t[0]||(t[0]=function(e){return g.value=e}),openKeys:A.value,"onUpdate:openKeys":t[1]||(t[1]=function(e){return A.value=e}),mode:"inline","inline-collapsed":y.value,items:D.value,onClick:R,onOpenChange:B},null,8,["selectedKeys","openKeys","inline-collapsed","items"])]),o("div",{class:"collapse-btn",onClick:P},[y.value?(f(),n(m(S),{key:1})):(f(),n(m(k),{key:0}))])],2)}}};var B=P(262);const I=(0,B.A)(R,[["__scopeId","data-v-3166c85e"]]);var x={class:"tabs-wrapper"},M={class:"tabs-container"},V=["onClick"],j={class:"tab-title"},U=["onClick"];const N=Object.assign({name:"Tabs"},{__name:"Tabs",props:{tabs:{type:Array,default:function(){return[]}},activeTab:{type:String,default:""}},emits:["update:activeTab","tab-click","tab-close"],setup:function(n,u){var i=u.emit,l=n,s=i,y=d(l.activeTab),b=[],m=t(function(){return l.tabs.length>0?l.tabs:b});return h(function(){return l.activeTab},function(e){e&&e!==y.value&&(y.value=e)},{immediate:!0}),h(m,function(e){e.length>0&&!y.value&&!l.activeTab&&(y.value=e[0].key,s("update:activeTab",e[0].key))},{immediate:!0}),function(t,n){return f(),r("div",x,[o("div",M,[(f(!0),r(e,null,v(m.value,function(e){return f(),r("div",{key:e.key,class:c(["tab-item",{active:y.value===e.key}]),onClick:function(t){return function(e){y.value=e.key,s("update:activeTab",e.key),s("tab-click",e)}(e)}},[o("span",j,p(e.title),1),!1!==e.closable&&m.value.length>1?(f(),r("span",{key:0,class:"tab-close",onClick:A(function(t){return function(e){s("tab-close",e)}(e)},["stop"])}," × ",8,U)):a("",!0)],10,V)}),128))])])}}}),J=(0,B.A)(N,[["__scopeId","data-v-dca4842a"]]);var Z={class:"breadcrumb-wrapper"},W={class:"breadcrumb-content"},F={key:0,class:"breadcrumb-current"},z=["onClick"],Q={class:"breadcrumb-extra"};const Y=Object.assign({name:"BreadCrumb"},{__name:"BreadCrumb",props:{items:{type:Array,default:function(){return[]}}},emits:["click"],setup:function(a,i){var l=i.emit,c=a,s=l,d=t(function(){return c.items.length>0?c.items:[]});return function(t,a){var i=b("a-breadcrumb-item"),l=b("a-breadcrumb");return f(),r("div",Z,[o("div",W,[u(m(T),{class:"breadcrumb-icon"}),u(l,null,{default:g(function(){return[(f(!0),r(e,null,v(d.value,function(e,t){return f(),n(i,{key:t},{default:g(function(){return[t===d.value.length-1?(f(),r("span",F,p(e.title),1)):(f(),r("a",{key:1,onClick:function(n){return function(e,t){s("click",{item:e,index:t})}(e,t)}},p(e.title),9,z))]}),_:2},1024)}),128))]}),_:1})]),o("div",Q,[y(t.$slots,"default")])])}}}),X=(0,B.A)(Y,[["__scopeId","data-v-06ed9d84"]]);var q={useTabsStore:Symbol("useTabsStore"),routerManager:Symbol("routerManager"),piniaInstance:Symbol("piniaInstance")};function G(e){return function(e){if(Array.isArray(e))return $(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||_(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function H(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=_(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var a=0,r=function(){};return{s:r,n:function(){return a>=e.length?{done:!0}:{done:!1,value:e[a++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,u=!0,i=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return u=e.done,e},e:function(e){i=!0,o=e},f:function(){try{u||null==n.return||n.return()}finally{if(i)throw o}}}}function _(e,t){if(e){if("string"==typeof e)return $(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?$(e,t):void 0}}function $(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var ee={key:1,class:"page-layout--breadcrumb"},te={class:"page-layout--content"};const ne=Object.assign({name:"PageLayout"},{__name:"PageLayout",props:{showSidebar:{type:Boolean,default:!0},menuData:{type:Array,default:function(){return[]}},systemTitle:{type:String,default:"管理系统"},showTabs:{type:Boolean,default:!0},defaultTabs:{type:Array,default:function(){return[]}},showBreadcrumb:{type:Boolean,default:!0},homeBreadcrumb:{type:Object,default:function(){return{}}},autoAddTab:{type:Boolean,default:!0},enableRouterSync:{type:Boolean,default:!0}},emits:["menu-click","tab-change","tab-click","tab-close","breadcrumb-click","update:activeTab"],setup:function(e,c){var v=c.expose,p=c.emit,m=e,A=p,T=l(q.useTabsStore),k=l(q.routerManager),S=l(q.piniaInstance);console.log("[PageLayout] inject 结果:",{useTabsStore:T,routerManager:k,piniaInstance:S}),console.log("[PageLayout] injectionKeys:",q),i();var w=null,D=function(){if(!w){if(!T)return console.error("[shared-layout-components/PageLayout] 未找到 useTabsStore,请确保通过 app.use() 正确安装组件库"),null;try{w=T()}catch(e){return console.error("[shared-layout-components/PageLayout] 获取 tabsStore 失败:",e),null}}return w},P=t(function(){var e;return(null==k||null===(e=k.getRouter)||void 0===e?void 0:e.call(k))||null}),C=t(function(){var e;return(null==k||null===(e=k.getCurrentRoute)||void 0===e?void 0:e.call(k))||null}),L=d(!1),E=t({get:function(){var e;return(null===(e=D())||void 0===e?void 0:e.currentTab)||""},set:function(e){var t=D();t&&(t.currentTab=e)}}),K=t(function(){var e;return(null===(e=D())||void 0===e?void 0:e.tabs)||[]});h(function(){return m.defaultTabs},function(e){if(e&&e.length>0){var t=D();t&&(e.forEach(function(e){t.addTab(e,!1)}),!t.currentTab&&e[0]&&t.setCurrentTab(e[0].key))}},{immediate:!0,deep:!0});var O=function(){var e;if(m.enableRouterSync){var t=D();if(t){var n=(null===(e=C.value)||void 0===e?void 0:e.value)||C.value,a=null==n?void 0:n.path;if(console.log("[PageLayout] syncRouteToTab - 当前路由:",a,"当前路由对象:",n),console.log("[PageLayout] 当前 tabs:",t.tabs,"currentTab:",t.currentTab),a){var r=t.tabs.find(function(e){return e.path===a});if(r)return console.log("[PageLayout] tab 已存在:",r),void(t.currentTab!==r.key&&t.setCurrentTab(r.key));if(m.autoAddTab&&m.menuData&&m.menuData.length>0){console.log("[PageLayout] 查找 menuKey,menuData:",m.menuData,"currentPath:",a);var o=B(m.menuData,a);console.log("[PageLayout] 查找到的 menuKey:",o),o&&F(o)}}else console.log("[PageLayout] 路由路径为空,跳过")}else console.error("[PageLayout] store 未初始化")}else console.log("[PageLayout] enableRouterSync 为 false,跳过")};h(function(){var e,t=(null===(e=C.value)||void 0===e?void 0:e.value)||C.value;return null==t?void 0:t.path},function(e,t){console.log("[PageLayout] 路由变化:",t,"->",e),e&&e!==t&&O()}),s(function(){console.log("[PageLayout] onMounted - 开始同步路由到 tab"),setTimeout(function(){O()},0)});var R=t(function(){var e;return(null===(e=D())||void 0===e?void 0:e.currentTabData)||null}),B=function(e,t){var n,a=H(e);try{for(a.s();!(n=a.n()).done;){var r=n.value;if(r.path===t)return r.key;if(r.children&&r.children.length>0){var o=B(r.children,t);if(o)return o}}}catch(e){a.e(e)}finally{a.f()}return null},x=function(e,t){var n,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],r=H(e);try{for(r.s();!(n=r.n()).done;){var o=n.value;if(o.key===t)return[].concat(G(a),[{title:o.title||o.label,path:o.path,key:o.key}]);if(o.children&&o.children.length>0){var u=x(o.children,t,[].concat(G(a),[{title:o.title||o.label,path:o.path,key:o.key}]));if(u)return u}}}catch(e){r.e(e)}finally{r.f()}return null},M=function(e,t){var n,a=H(e);try{for(a.s();!(n=a.n()).done;){var r=n.value;if(r.key===t)return r;if(r.children&&r.children.length>0){var o=M(r.children,t);if(o)return o}}}catch(e){a.e(e)}finally{a.f()}return null},V=t(function(){var e;if(E.value===m.homeBreadcrumb.key)return[m.homeBreadcrumb];if(E.value&&m.menuData&&m.menuData.length>0){var t=x(m.menuData,E.value);if(t)return t}var n=null==C||null===(e=C.value)||void 0===e?void 0:e.path;if(n&&"/"!==n&&m.menuData&&m.menuData.length>0){var a=B(m.menuData,n);if(a){var r=x(m.menuData,a);if(r)return r}}var o=K.value.find(function(e){return e.key===E.value});return o?[m.homeBreadcrumb,{title:o.title,key:o.key}]:[m.homeBreadcrumb]}),j=function(e){A("menu-click",e);var t=D();m.autoAddTab&&t&&(t.addTab({key:e.key,title:e.title||e.label,closable:!0,path:e.path}),A("update:activeTab",e.key)),m.enableRouterSync&&P.value&&e.path&&P.value.push(e.path)},U=function(e){var t=D();if(t&&t.setCurrentTab(e),A("update:activeTab",e),A("tab-change",e),m.enableRouterSync&&P.value){var n=K.value.find(function(t){return t.key===e});null!=n&&n.path&&P.value.push(n.path)}},N=function(e){A("tab-click",e)},Z=function(e){var t=D();if(t&&t.removeTab(e.key),A("update:activeTab",E.value),A("tab-close",e),m.enableRouterSync&&P.value){var n,a=null===(n=D())||void 0===n?void 0:n.currentTabData;null!=a&&a.path&&P.value.push(a.path)}},W=function(e){A("breadcrumb-click",e)},F=function(e){var t=M(m.menuData,e),n=D();t&&m.autoAddTab&&n&&(n.addTab({key:t.key,title:t.title||t.label,closable:!0,path:t.path}),A("update:activeTab",e))};return v({addTab:function(e){var t=D();t&&(t.addTab(e),A("update:activeTab",e.key))},removeTab:function(e){var t=D();t&&(t.removeTab(e),A("update:activeTab",E.value))},getCurrentTab:function(){var e;return(null===(e=D())||void 0===e?void 0:e.currentTabData)||null},addTabByMenuKey:F,findMenuItem:M,findMenuKeyByPath:B,tabsList:K,currentTab:E,currentTabData:R,breadcrumbList:V,clearTabs:function(){var e;return null===(e=D())||void 0===e?void 0:e.clearTabs()}}),function(t,i){var l=b("a-layout-sider"),c=b("a-layout");return f(),n(c,{class:"page-layout"},{default:g(function(){return[u(l,{class:"page-layout--sider"},{default:g(function(){return[y(t.$slots,"sidebar",{},function(){return[e.showSidebar?(f(),n(I,{key:0,collapsed:L.value,"onUpdate:collapsed":i[0]||(i[0]=function(e){return L.value=e}),menuData:e.menuData,systemTitle:e.systemTitle,activeKey:E.value,onMenuClick:j},null,8,["collapsed","menuData","systemTitle","activeKey"])):a("",!0)]})]}),_:3}),u(c,{class:"page-layout--main"},{default:g(function(){return[e.showTabs?y(t.$slots,"tabs",{key:0,tabs:K.value,activeTab:E.value},function(){return[u(J,{tabs:K.value,activeTab:E.value,"onUpdate:activeTab":U,onTabClick:N,onTabClose:Z},null,8,["tabs","activeTab"])]}):a("",!0),e.showBreadcrumb?(f(),r("div",ee,[u(X,{items:V.value,onClick:W},{default:g(function(){return[y(t.$slots,"breadcrumbExtra",{},function(){return[i[1]||(i[1]=o("div",{class:"breadcrumb-extra"},[o("div",{class:"extra-item"},[o("img",{src:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAYCAYAAAAPtVbGAAAEzklEQVR4AZRWWyisaxj+zVqr1TrPXkU5tWcicjdCxMWeES6EbeLGqU3OSQslJZkZRcqFJRdOiUlySNi4EpmSIqfZKUoyU05xYY1DIcl+ni8zjWFZe0/z/t/7fd97Pv2/THrht7y8rK6qqmouLS21pKWl3ScmJgooKCi4z83NXa+vr+9ZX19XvyBCXD2r5EH4XGVl5dzMzEzZxsaGgtSvX7+2Ei4uLiSz2awaHR3Nrq2tnYMhcz09PYKGdK7wRElHR4eurq6OwtU+Pj42WG1oamrSDAwMuI2NjSkJxNvb2zVardb46tUrKwxRQ6FlcnJS56qA+0dKIFDX2dmp50VFRUVLX1+fsrCwUB8WFmbimTPwrKamJhtKNSEhIQbe6fHLy8t7osihhB6srq7qP3/+bIuPj9dkZGSUubm52cj8EoDGSsOQtxwvLy9pZ2dHPzg4WObMI5REREQopqam9CQqKSnJKS4uNjkT/Rc8Li6ul4pI29/f3zw9Pa0iThBKfH19ew4PDyVPT09DamrqOC9c4f7+Xk4L4bGewL0rDRUlJSW1UNbs7Gyz/V7W1dWl3t3dVUORcNt+4bxWV1ersrKyLCiAZoSGedOBL9mZxo6Xl5frg4KCbEtLS2pWKc9lJycnfxFBHn4aosvLy7GtrS15TEyMTaVSmUkPT0TJwiudwWBwJBs5snl7extZ5mtra6KHZGgmFZny8/ONXF0Bsc1eWFhQ0NPGxsbg0NDQFtLAe/nm5mYyPNNPTEzoEZ5snhPsId/e3v6Te9mbN29UAQEBEix41hMUhLCSJQsaq5+fH/mkm5ubLwiLCRGwYrVFR0c7+GGImUV0fHwsvJUhFNLV1ZVVcLo87F6QAXlhLyiOjo6+kOz29vY3KLWhcTXop2DgDhnAbSgi6ezsTE5aUV1EngMkV+QLJd4Lxm+gsTQ0NHzHKl1fX//OvKCaLLDcQpznzvDx40exlRF59+6dcEucPDygQA1BaicvaFXvp0+fRFg+fPjA/QP14wUK5Uw8Ro5oZpm7u7sVIZDs5WYnZ9Wx3h+8YChycJeDMcOwSaenpz9VsrKyokLSJRgiKlEGL/6mVnu5QZAESxSLi4vZ9OLr169GntkBs0mg9niLjcsDuRRhDgwM/IdXMpYbQiDNz89/g3BhHaZs8vv3700KhaL8mRFj8/f3N8EAhk3OlXsIE6GBDAUmsggzGlPkT8bSDA8PN7HZMHNEuaanp38fGhrStLa2CiIIcPxRAGbeoQk1xLlyD1woQWOyXxQwchxnDLMkqgveGGCRBOKytrY20aUOqf8TiYyMFIIRBREVsgsl9CYhIcHARA8PD4+NjIw8O5fI8CuIjY0dp8EHBwcqhE4oEkrIiKrhy8lwfn4uNxqNY3yB8fxXQEEIkQ7Dswy4CiGyeXh4mBl+Vhn5HUq4aW9v10O4KFG+wJKTky2YTT1gfhRC7OUseeRDx+nM2YXXQDOacj0zM/PH27dvRd/ZK/aREiqiR3t7e0pOW6wKCMoG8xy/VqiUgML4UVRUNAcD9Pv7+3KEyKTVao1KpdLM0saYF2GCJ39Q5hMlPMSXiLW7uzsYPSE+FsjM87u7OwWBeFRUlBWjvwVh0mA6a/i+Ry6D4ZUyJSUFOrVG9Bh7Tv4vAAAA//+JkNwrAAAABklEQVQDAEMWYUbEMf08AAAAAElFTkSuQmCC",alt:""}),o("p",null,"AI助手")]),o("div",{class:"extra-item"},[o("img",{src:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADaUlEQVR4AYxWXVIaQRDunkSSt+AN8AZ4guAJoieIvkj5FHlJyUIVWKW7vumbBaYKPYF4AswJ5AZyA3lMljCd71tcXPnTqWlmdqb765/pnsHJitZsdvJBdNWoRe1eELUeg7BlpFrYeqphDeNhM7osrICQhQooRIA4Fz+J+aaYFdV0qKr3JFHtm1nJRM5jc4/g7VBmkaI5BfWz9o+RuQcCEMyp31qLcxunwf7maXV/K6UwKCuEd2BiF7y7UPRQDVuHs0rA87LEcHhvF7BsSGCCnVQP7pvNveEL18vsJCh3w6PyDkB2RGWo8IgYkmnYm3zRcmE4RAYeVhN4svP2LxV58VtQMiBG1pNEAeNn3pqASsDPqgcDzKe9Hl2VEOceD5jEeT26LE0ZMKFMqgSeNIiJZUQQvyP50DCRPKhCRixNO6zZ9uZ7iHOJZwIJxrzkzfW4N2XEhLJO/B6meWB2MIqjJgjvitpdhJhyMUuqcg6LhgjbBs+EMeeca6AEJMvP0CqyDZglprlDxmwLmpleY3jVm6ftopgUTLVL69JNzgFwg+/8UdSZqwOV8TH2JF6LD52ofuPHIutltDZQkaF4+S0zTZ37wiX3YZTnmKWPfz/3KadOvzoxK9KlLEM6Z3qeBuX1sLb/yrskrGI85EH4c7+f8qcj5UR0AC8LzkTmLJAVjeCxuJ4wdCKVpayoC+wVHH7e3bPgYv54YVhn0Jyo0JV3eYHUa9Bygoe1A9aNvNFwIyBWYCowpTCu7mbIOO2/BxzxZ930HSqYGZL/9+lPcTW6iKmvOB1X3uKrhy0YIuLN7lxulLuggKGaOa6isHpwzUJaxTPZ0+8cYVDXMaWYpnSpPnO/kCklhjDAo1OL2p10bdEYRJe7XhBK1WsWpCPTWMZ7LAxvbunDQT6SqS1NCGaZiGsoitM/V3OigJogfAwq4OHoTRjxlen0NKyWN3gXZZanU8qk9eFFjp8xJVFALlTsBdMP80TJ7E2J9aW9jus8BScG6iM5VwpMFfCD6Qf3KqA86DY4a91Ww19JRnA/SzwTAuNMeh7XuZok1z0xsnyvFHCDnozVb5rIDS65bZXxbfrIEIwUhO2HUS5+JDCTg0lCmazlxCLNKeAi4wfmXa9+A55UCCBmRYKRhAeNfxaC6yIX59b5TlCGsrP0HwAA//9BECN1AAAABklEQVQDAF7M7K1fqR9uAAAAAElFTkSuQmCC",alt:""}),o("p",null,"帮助文档")])],-1))]})]}),_:3},8,["items"])])):a("",!0),o("div",te,[y(t.$slots,"default",{activeTab:E.value,tabData:R.value})])]}),_:3})]}),_:3})}}}),ae=(0,B.A)(ne,[["__scopeId","data-v-1e044ec7"]]);var re=function(e,t){if(!e||!e.defineStore)throw new Error("[shared-layout-components] 请传入有效的 pinia 模块,需要包含 defineStore 方法");var n=e.defineStore,a=e.setActivePinia,r=n("pageLayoutTabs",{state:function(){return{tabs:[],currentTab:""}},getters:{currentTabData:function(e){return e.tabs.find(function(t){return t.key===e.currentTab})||null}},actions:{addTab:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this.tabs.find(function(t){return t.key===e.key})||this.tabs.push(e),t&&(this.currentTab=e.key)},removeTab:function(e){var t=this.tabs.findIndex(function(t){return t.key===e});if(t>-1&&(this.tabs.splice(t,1),this.currentTab===e)){var n,a=Math.min(t,this.tabs.length-1);this.currentTab=(null===(n=this.tabs[a])||void 0===n?void 0:n.key)||""}},setCurrentTab:function(e){this.currentTab=e},clearTabs:function(){this.tabs=[],this.currentTab=""}},persist:{storage:sessionStorage}});return{useTabsStore:function(){return t&&a&&a(t),r.apply(void 0,arguments)},useTabsStoreRaw:r}};function oe(e){return oe="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},oe(e)}function ue(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,a)}return n}function ie(e,t,n){return(t=function(e){var t=function(e){if("object"!=oe(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=oe(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==oe(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var le=null,ce=null,se=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return e&&(ce=e),t&&(le=t),{createRouter:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!ce)throw new Error("[shared-layout-components] 请先传入 vue-router 模块或提供已有的路由实例");var n=ce,a=n.createRouter,r=n.createWebHistory;if(!a||!r)throw new Error("[shared-layout-components] 传入的 vue-router 模块无效,需要包含 createRouter 和 createWebHistory");return le=a(function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ue(Object(n),!0).forEach(function(t){ie(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ue(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({history:r(t.basePath||""),routes:e},t))},getRouter:function(){return le},getCurrentRoute:function(){return le?le.currentRoute:null},push:function(e){le?le.push(e):console.warn("[shared-layout-components] 路由实例未创建")},replace:function(e){le?le.replace(e):console.warn("[shared-layout-components] 路由实例未创建")}}},fe=[ae,I,X,J],de=null,ve=null,ye=null,be=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{install:function(t){if(!this.installed){this.installed=!0;var n=e.pinia,a=e.piniaInstance,r=e.piniaPluginPersistedstate,o=e.router,u=e.vueRouter,i=e.routes,l=e.routerOptions,c=void 0===l?{}:l;if(!(ye=a))if(t.config.globalProperties.$pinia)ye=t.config.globalProperties.$pinia;else{if(!n)throw new Error("[shared-layout-components] 请传入 piniaInstance 或通过 app.use(pinia) 预先安装 pinia");var s=n.createPinia,f=n.setActivePinia;ye=s(),r&&r.default&&ye.use(r.default),t.use(ye),f&&f(ye)}if(!n)throw new Error("[shared-layout-components] 请传入 pinia 模块(包含 defineStore 等)以便创建 stores");if(de=re(n,ye),console.log("[shared-layout] stores 创建成功:",de),t.provide(q.useTabsStore,de.useTabsStore),t.provide(q.piniaInstance,ye),console.log("[shared-layout] provide 完成, injectionKeys:",q),o)ve=se(null,o);else if(u&&(ve=se(u),i&&i.length>0)){var d=ve.createRouter(i,c);t.use(d)}ve&&t.provide(q.routerManager,ve),fe.forEach(function(e){t.component(e.name,e)}),t.config.globalProperties.$sharedLayout={stores:de,routerManager:ve}}}}};"undefined"!=typeof window&&window.Vue&&console.warn("[shared-layout-components] 请使用 app.use() 方式安装组件库");const pe={install:function(e){be(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).install(e)},PageLayout:ae,SidebarLayout:I,BreadCrumb:X,Tabs:J};var me=function(){if(!de)throw new Error("[shared-layout-components] 请先调用 app.use() 安装组件库");return de},he=function(){return ve};export{X as BreadCrumb,ae as PageLayout,I as SidebarLayout,J as Tabs,se as createRouterManager,be as createSharedLayout,re as createStores,pe as default,he as getRouterManager,me as getStores,q as injectionKeys};
1
+ import{Fragment as e,computed as t,createBlock as n,createCommentVNode as a,createElementBlock as r,createElementVNode as o,createVNode as u,getCurrentInstance as i,inject as l,normalizeClass as c,onMounted as s,openBlock as f,ref as d,renderList as v,renderSlot as y,resolveComponent as b,toDisplayString as p,unref as m,watch as h,withCtx as g,withModifiers as A}from"vue";import{EnvironmentOutlined as T,LeftOutlined as k,RightOutlined as S}from"@ant-design/icons-vue";var w={262(e,t){t.A=(e,t)=>{const n=e.__vccOpts||e;for(const[e,a]of t)n[e]=a;return n}}},D={};function P(e){var t=D[e];if(void 0!==t)return t.exports;var n=D[e]={exports:{}};return w[e](n,n.exports,P),n.exports}function C(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=L(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var a=0,r=function(){};return{s:r,n:function(){return a>=e.length?{done:!0}:{done:!1,value:e[a++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,u=!0,i=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return u=e.done,e},e:function(e){i=!0,o=e},f:function(){try{u||null==n.return||n.return()}finally{if(i)throw o}}}}function L(e,t){if(e){if("string"==typeof e)return E(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?E(e,t):void 0}}function E(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}P.d=(e,t)=>{for(var n in t)P.o(t,n)&&!P.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},P.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var K={class:"sidebar-content"},O={class:"system-title"},R={class:"menu-wrapper"};const B={__name:"SidebarLayout",props:{activeKey:{type:String,default:""},menuData:{type:Array,default:function(){return[]}},collapsed:{type:Boolean,default:!1},systemTitle:{type:String,default:"XXXXXX系统名称"}},emits:["menu-click","update:activeKey","update:collapsed"],setup:function(e,a){var i=a.expose,l=a.emit,s=e,v=l,y=(t(function(){return s.systemTitle}),d(s.collapsed)),g=d([]),A=d([]);h(function(){return s.collapsed},function(e){y.value=e}),h(y,function(e){v("update:collapsed",e)}),h(function(){return s.activeKey},function(e){if(e){g.value=[e];var t=function(e,n){var a,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,o=C(e);try{for(o.s();!(a=o.n()).done;){var u=a.value;if(u.key===n)return r;if(u.children){var i=t(u.children,n,u.key);if(null!==i)return i}}}catch(e){o.e(e)}finally{o.f()}return null},n=s.menuData.length>0?s.menuData:T,a=t(n,e);a&&!A.value.includes(a)&&(A.value=[].concat(function(e){if(Array.isArray(e))return E(e)}(r=A.value)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(r)||L(r)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),[a]))}var r},{immediate:!0});var T=[],w=function(e){return e.map(function(e){var t={key:e.key,label:e.label||e.title,title:e.title||e.label,path:e.path,external:e.external};return e.children&&e.children.length>0&&(t.children=w(e.children)),t})},D=t(function(){var e=s.menuData.length>0?s.menuData:T;return w(e)}),P=function(){y.value=!y.value},B=function(e){var t=e.key,n=(e.item,function(e,t){var a,r=C(e);try{for(r.s();!(a=r.n()).done;){var o=a.value;if(o.key===t)return o;if(o.children){var u=n(o.children,t);if(u)return u}}}catch(e){r.e(e)}finally{r.f()}return null}),a=s.menuData.length>0?s.menuData:T,r=n(a,t);r&&(v("menu-click",r),v("update:activeKey",t))},I=function(e){A.value=e};return h(g,function(e){if(e.length>0){var t=e[0];v("update:activeKey",t)}},{immediate:!1}),i({toggleCollapse:P,expandMenu:function(e){A.value.includes(e)||A.value.push(e)},collapseMenu:function(e){var t=A.value.indexOf(e);t>-1&&A.value.splice(t,1)}}),function(e,t){var a=b("a-menu");return f(),r("div",{class:c(["sidebar",{collapsed:y.value}])},[o("div",K,[o("div",O,[o("h1",null,p(s.systemTitle),1)]),o("div",R,[u(a,{selectedKeys:g.value,"onUpdate:selectedKeys":t[0]||(t[0]=function(e){return g.value=e}),openKeys:A.value,"onUpdate:openKeys":t[1]||(t[1]=function(e){return A.value=e}),mode:"inline","inline-collapsed":y.value,items:D.value,onClick:B,onOpenChange:I},null,8,["selectedKeys","openKeys","inline-collapsed","items"])]),o("div",{class:"collapse-btn",onClick:P},[y.value?(f(),n(m(S),{key:1})):(f(),n(m(k),{key:0}))])]),t[2]||(t[2]=o("div",{class:"sidebar-placeholder"},null,-1))],2)}}};var I=P(262);const x=(0,I.A)(B,[["__scopeId","data-v-256567b4"]]);var M={class:"tabs-wrapper"},V={class:"tabs-container"},j=["onClick"],U={class:"tab-title"},N=["onClick"];const J=Object.assign({name:"Tabs"},{__name:"Tabs",props:{tabs:{type:Array,default:function(){return[]}},activeTab:{type:String,default:""}},emits:["update:activeTab","tab-click","tab-close"],setup:function(n,u){var i=u.emit,l=n,s=i,y=d(l.activeTab),b=[],m=t(function(){return l.tabs.length>0?l.tabs:b});return h(function(){return l.activeTab},function(e){e&&e!==y.value&&(y.value=e)},{immediate:!0}),h(m,function(e){e.length>0&&!y.value&&!l.activeTab&&(y.value=e[0].key,s("update:activeTab",e[0].key))},{immediate:!0}),function(t,n){return f(),r("div",M,[o("div",V,[(f(!0),r(e,null,v(m.value,function(e){return f(),r("div",{key:e.key,class:c(["tab-item",{active:y.value===e.key}]),onClick:function(t){return function(e){y.value=e.key,s("update:activeTab",e.key),s("tab-click",e)}(e)}},[o("span",U,p(e.title),1),!1!==e.closable&&m.value.length>1?(f(),r("span",{key:0,class:"tab-close",onClick:A(function(t){return function(e){s("tab-close",e)}(e)},["stop"])}," × ",8,N)):a("",!0)],10,j)}),128))])])}}}),Z=(0,I.A)(J,[["__scopeId","data-v-dca4842a"]]);var W={class:"breadcrumb-wrapper"},F={class:"breadcrumb-content"},z={key:0,class:"breadcrumb-current"},Q=["onClick"],Y={class:"breadcrumb-extra"};const X=Object.assign({name:"BreadCrumb"},{__name:"BreadCrumb",props:{items:{type:Array,default:function(){return[]}}},emits:["click"],setup:function(a,i){var l=i.emit,c=a,s=l,d=t(function(){return c.items.length>0?c.items:[]});return function(t,a){var i=b("a-breadcrumb-item"),l=b("a-breadcrumb");return f(),r("div",W,[o("div",F,[u(m(T),{class:"breadcrumb-icon"}),u(l,null,{default:g(function(){return[(f(!0),r(e,null,v(d.value,function(e,t){return f(),n(i,{key:t},{default:g(function(){return[t===d.value.length-1?(f(),r("span",z,p(e.title),1)):(f(),r("a",{key:1,onClick:function(n){return function(e,t){s("click",{item:e,index:t})}(e,t)}},p(e.title),9,Q))]}),_:2},1024)}),128))]}),_:1})]),o("div",Y,[y(t.$slots,"default")])])}}}),q=(0,I.A)(X,[["__scopeId","data-v-06ed9d84"]]);var G={useTabsStore:Symbol("useTabsStore"),routerManager:Symbol("routerManager"),piniaInstance:Symbol("piniaInstance")};function H(e){return function(e){if(Array.isArray(e))return ee(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||$(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=$(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var a=0,r=function(){};return{s:r,n:function(){return a>=e.length?{done:!0}:{done:!1,value:e[a++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,u=!0,i=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return u=e.done,e},e:function(e){i=!0,o=e},f:function(){try{u||null==n.return||n.return()}finally{if(i)throw o}}}}function $(e,t){if(e){if("string"==typeof e)return ee(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ee(e,t):void 0}}function ee(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var te={key:1,class:"page-layout--breadcrumb"},ne={class:"page-layout--content"};const ae=Object.assign({name:"PageLayout"},{__name:"PageLayout",props:{showSidebar:{type:Boolean,default:!0},menuData:{type:Array,default:function(){return[]}},systemTitle:{type:String,default:"管理系统"},showTabs:{type:Boolean,default:!0},defaultTabs:{type:Array,default:function(){return[]}},showBreadcrumb:{type:Boolean,default:!0},homeBreadcrumb:{type:Object,default:function(){return{}}},autoAddTab:{type:Boolean,default:!0},enableRouterSync:{type:Boolean,default:!0}},emits:["menu-click","tab-change","tab-click","tab-close","breadcrumb-click","update:activeTab"],setup:function(e,c){var v=c.expose,p=c.emit,m=e,A=p,T=l(G.useTabsStore),k=l(G.routerManager),S=l(G.piniaInstance);console.log("[PageLayout] inject 结果:",{useTabsStore:T,routerManager:k,piniaInstance:S}),console.log("[PageLayout] injectionKeys:",G),i();var w=null,D=function(){if(!w){if(!T)return console.error("[shared-layout-components/PageLayout] 未找到 useTabsStore,请确保通过 app.use() 正确安装组件库"),null;try{w=T()}catch(e){return console.error("[shared-layout-components/PageLayout] 获取 tabsStore 失败:",e),null}}return w},P=t(function(){var e;return(null==k||null===(e=k.getRouter)||void 0===e?void 0:e.call(k))||null}),C=t(function(){var e;return(null==k||null===(e=k.getCurrentRoute)||void 0===e?void 0:e.call(k))||null}),L=d(!1),E=t({get:function(){var e;return(null===(e=D())||void 0===e?void 0:e.currentTab)||""},set:function(e){var t=D();t&&(t.currentTab=e)}}),K=t(function(){var e;return(null===(e=D())||void 0===e?void 0:e.tabs)||[]});h(function(){return m.defaultTabs},function(e){if(e&&e.length>0){var t=D();t&&(e.forEach(function(e){t.addTab(e,!1)}),!t.currentTab&&e[0]&&t.setCurrentTab(e[0].key))}},{immediate:!0,deep:!0});var O=function(){var e;if(m.enableRouterSync){var t=D();if(t){var n=(null===(e=C.value)||void 0===e?void 0:e.value)||C.value,a=null==n?void 0:n.path;if(console.log("[PageLayout] syncRouteToTab - 当前路由:",a,"当前路由对象:",n),console.log("[PageLayout] 当前 tabs:",t.tabs,"currentTab:",t.currentTab),a){var r=t.tabs.find(function(e){return e.path===a});if(r)return console.log("[PageLayout] tab 已存在:",r),void(t.currentTab!==r.key&&t.setCurrentTab(r.key));if(m.autoAddTab&&m.menuData&&m.menuData.length>0){console.log("[PageLayout] 查找 menuKey,menuData:",m.menuData,"currentPath:",a);var o=B(m.menuData,a);console.log("[PageLayout] 查找到的 menuKey:",o),o&&F(o)}}else console.log("[PageLayout] 路由路径为空,跳过")}else console.error("[PageLayout] store 未初始化")}else console.log("[PageLayout] enableRouterSync 为 false,跳过")};h(function(){var e,t=(null===(e=C.value)||void 0===e?void 0:e.value)||C.value;return null==t?void 0:t.path},function(e,t){console.log("[PageLayout] 路由变化:",t,"->",e),e&&e!==t&&O()}),s(function(){console.log("[PageLayout] onMounted - 开始同步路由到 tab"),setTimeout(function(){O()},0)});var R=t(function(){var e;return(null===(e=D())||void 0===e?void 0:e.currentTabData)||null}),B=function(e,t){var n,a=_(e);try{for(a.s();!(n=a.n()).done;){var r=n.value;if(r.path===t)return r.key;if(r.children&&r.children.length>0){var o=B(r.children,t);if(o)return o}}}catch(e){a.e(e)}finally{a.f()}return null},I=function(e,t){var n,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],r=_(e);try{for(r.s();!(n=r.n()).done;){var o=n.value;if(o.key===t)return[].concat(H(a),[{title:o.title||o.label,path:o.path,key:o.key}]);if(o.children&&o.children.length>0){var u=I(o.children,t,[].concat(H(a),[{title:o.title||o.label,path:o.path,key:o.key}]));if(u)return u}}}catch(e){r.e(e)}finally{r.f()}return null},M=function(e,t){var n,a=_(e);try{for(a.s();!(n=a.n()).done;){var r=n.value;if(r.key===t)return r;if(r.children&&r.children.length>0){var o=M(r.children,t);if(o)return o}}}catch(e){a.e(e)}finally{a.f()}return null},V=t(function(){var e;if(E.value===m.homeBreadcrumb.key)return[m.homeBreadcrumb];if(E.value&&m.menuData&&m.menuData.length>0){var t=I(m.menuData,E.value);if(t)return t}var n=null==C||null===(e=C.value)||void 0===e?void 0:e.path;if(n&&"/"!==n&&m.menuData&&m.menuData.length>0){var a=B(m.menuData,n);if(a){var r=I(m.menuData,a);if(r)return r}}var o=K.value.find(function(e){return e.key===E.value});return o?[m.homeBreadcrumb,{title:o.title,key:o.key}]:[m.homeBreadcrumb]}),j=function(e){A("menu-click",e);var t=D();m.autoAddTab&&t&&(t.addTab({key:e.key,title:e.title||e.label,closable:!0,path:e.path}),A("update:activeTab",e.key)),m.enableRouterSync&&P.value&&e.path&&P.value.push(e.path)},U=function(e){var t=D();if(t&&t.setCurrentTab(e),A("update:activeTab",e),A("tab-change",e),m.enableRouterSync&&P.value){var n=K.value.find(function(t){return t.key===e});null!=n&&n.path&&P.value.push(n.path)}},N=function(e){A("tab-click",e)},J=function(e){var t=D();if(t&&t.removeTab(e.key),A("update:activeTab",E.value),A("tab-close",e),m.enableRouterSync&&P.value){var n,a=null===(n=D())||void 0===n?void 0:n.currentTabData;null!=a&&a.path&&P.value.push(a.path)}},W=function(e){A("breadcrumb-click",e)},F=function(e){var t=M(m.menuData,e),n=D();t&&m.autoAddTab&&n&&(n.addTab({key:t.key,title:t.title||t.label,closable:!0,path:t.path}),A("update:activeTab",e))};return v({addTab:function(e){var t=D();t&&(t.addTab(e),A("update:activeTab",e.key))},removeTab:function(e){var t=D();t&&(t.removeTab(e),A("update:activeTab",E.value))},getCurrentTab:function(){var e;return(null===(e=D())||void 0===e?void 0:e.currentTabData)||null},addTabByMenuKey:F,findMenuItem:M,findMenuKeyByPath:B,tabsList:K,currentTab:E,currentTabData:R,breadcrumbList:V,clearTabs:function(){var e;return null===(e=D())||void 0===e?void 0:e.clearTabs()}}),function(t,i){var l=b("a-layout-sider"),c=b("a-layout");return f(),n(c,{class:"page-layout"},{default:g(function(){return[u(l,{class:"page-layout--sider"},{default:g(function(){return[y(t.$slots,"sidebar",{},function(){return[e.showSidebar?(f(),n(x,{key:0,collapsed:L.value,"onUpdate:collapsed":i[0]||(i[0]=function(e){return L.value=e}),menuData:e.menuData,systemTitle:e.systemTitle,activeKey:E.value,onMenuClick:j},null,8,["collapsed","menuData","systemTitle","activeKey"])):a("",!0)]})]}),_:3}),u(c,{class:"page-layout--main"},{default:g(function(){return[e.showTabs?y(t.$slots,"tabs",{key:0,tabs:K.value,activeTab:E.value},function(){return[u(Z,{tabs:K.value,activeTab:E.value,"onUpdate:activeTab":U,onTabClick:N,onTabClose:J},null,8,["tabs","activeTab"])]}):a("",!0),e.showBreadcrumb?(f(),r("div",te,[u(q,{items:V.value,onClick:W},{default:g(function(){return[y(t.$slots,"breadcrumbExtra",{},function(){return[i[1]||(i[1]=o("div",{class:"breadcrumb-extra"},[o("div",{class:"extra-item"},[o("img",{src:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAYCAYAAAAPtVbGAAAEzklEQVR4AZRWWyisaxj+zVqr1TrPXkU5tWcicjdCxMWeES6EbeLGqU3OSQslJZkZRcqFJRdOiUlySNi4EpmSIqfZKUoyU05xYY1DIcl+ni8zjWFZe0/z/t/7fd97Pv2/THrht7y8rK6qqmouLS21pKWl3ScmJgooKCi4z83NXa+vr+9ZX19XvyBCXD2r5EH4XGVl5dzMzEzZxsaGgtSvX7+2Ei4uLiSz2awaHR3Nrq2tnYMhcz09PYKGdK7wRElHR4eurq6OwtU+Pj42WG1oamrSDAwMuI2NjSkJxNvb2zVardb46tUrKwxRQ6FlcnJS56qA+0dKIFDX2dmp50VFRUVLX1+fsrCwUB8WFmbimTPwrKamJhtKNSEhIQbe6fHLy8t7osihhB6srq7qP3/+bIuPj9dkZGSUubm52cj8EoDGSsOQtxwvLy9pZ2dHPzg4WObMI5REREQopqam9CQqKSnJKS4uNjkT/Rc8Li6ul4pI29/f3zw9Pa0iThBKfH19ew4PDyVPT09DamrqOC9c4f7+Xk4L4bGewL0rDRUlJSW1UNbs7Gyz/V7W1dWl3t3dVUORcNt+4bxWV1ersrKyLCiAZoSGedOBL9mZxo6Xl5frg4KCbEtLS2pWKc9lJycnfxFBHn4aosvLy7GtrS15TEyMTaVSmUkPT0TJwiudwWBwJBs5snl7extZ5mtra6KHZGgmFZny8/ONXF0Bsc1eWFhQ0NPGxsbg0NDQFtLAe/nm5mYyPNNPTEzoEZ5snhPsId/e3v6Te9mbN29UAQEBEix41hMUhLCSJQsaq5+fH/mkm5ubLwiLCRGwYrVFR0c7+GGImUV0fHwsvJUhFNLV1ZVVcLo87F6QAXlhLyiOjo6+kOz29vY3KLWhcTXop2DgDhnAbSgi6ezsTE5aUV1EngMkV+QLJd4Lxm+gsTQ0NHzHKl1fX//OvKCaLLDcQpznzvDx40exlRF59+6dcEucPDygQA1BaicvaFXvp0+fRFg+fPjA/QP14wUK5Uw8Ro5oZpm7u7sVIZDs5WYnZ9Wx3h+8YChycJeDMcOwSaenpz9VsrKyokLSJRgiKlEGL/6mVnu5QZAESxSLi4vZ9OLr169GntkBs0mg9niLjcsDuRRhDgwM/IdXMpYbQiDNz89/g3BhHaZs8vv3700KhaL8mRFj8/f3N8EAhk3OlXsIE6GBDAUmsggzGlPkT8bSDA8PN7HZMHNEuaanp38fGhrStLa2CiIIcPxRAGbeoQk1xLlyD1woQWOyXxQwchxnDLMkqgveGGCRBOKytrY20aUOqf8TiYyMFIIRBREVsgsl9CYhIcHARA8PD4+NjIw8O5fI8CuIjY0dp8EHBwcqhE4oEkrIiKrhy8lwfn4uNxqNY3yB8fxXQEEIkQ7Dswy4CiGyeXh4mBl+Vhn5HUq4aW9v10O4KFG+wJKTky2YTT1gfhRC7OUseeRDx+nM2YXXQDOacj0zM/PH27dvRd/ZK/aREiqiR3t7e0pOW6wKCMoG8xy/VqiUgML4UVRUNAcD9Pv7+3KEyKTVao1KpdLM0saYF2GCJ39Q5hMlPMSXiLW7uzsYPSE+FsjM87u7OwWBeFRUlBWjvwVh0mA6a/i+Ry6D4ZUyJSUFOrVG9Bh7Tv4vAAAA//+JkNwrAAAABklEQVQDAEMWYUbEMf08AAAAAElFTkSuQmCC",alt:""}),o("p",null,"AI助手")]),o("div",{class:"extra-item"},[o("img",{src:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADaUlEQVR4AYxWXVIaQRDunkSSt+AN8AZ4guAJoieIvkj5FHlJyUIVWKW7vumbBaYKPYF4AswJ5AZyA3lMljCd71tcXPnTqWlmdqb765/pnsHJitZsdvJBdNWoRe1eELUeg7BlpFrYeqphDeNhM7osrICQhQooRIA4Fz+J+aaYFdV0qKr3JFHtm1nJRM5jc4/g7VBmkaI5BfWz9o+RuQcCEMyp31qLcxunwf7maXV/K6UwKCuEd2BiF7y7UPRQDVuHs0rA87LEcHhvF7BsSGCCnVQP7pvNveEL18vsJCh3w6PyDkB2RGWo8IgYkmnYm3zRcmE4RAYeVhN4svP2LxV58VtQMiBG1pNEAeNn3pqASsDPqgcDzKe9Hl2VEOceD5jEeT26LE0ZMKFMqgSeNIiJZUQQvyP50DCRPKhCRixNO6zZ9uZ7iHOJZwIJxrzkzfW4N2XEhLJO/B6meWB2MIqjJgjvitpdhJhyMUuqcg6LhgjbBs+EMeeca6AEJMvP0CqyDZglprlDxmwLmpleY3jVm6ftopgUTLVL69JNzgFwg+/8UdSZqwOV8TH2JF6LD52ofuPHIutltDZQkaF4+S0zTZ37wiX3YZTnmKWPfz/3KadOvzoxK9KlLEM6Z3qeBuX1sLb/yrskrGI85EH4c7+f8qcj5UR0AC8LzkTmLJAVjeCxuJ4wdCKVpayoC+wVHH7e3bPgYv54YVhn0Jyo0JV3eYHUa9Bygoe1A9aNvNFwIyBWYCowpTCu7mbIOO2/BxzxZ930HSqYGZL/9+lPcTW6iKmvOB1X3uKrhy0YIuLN7lxulLuggKGaOa6isHpwzUJaxTPZ0+8cYVDXMaWYpnSpPnO/kCklhjDAo1OL2p10bdEYRJe7XhBK1WsWpCPTWMZ7LAxvbunDQT6SqS1NCGaZiGsoitM/V3OigJogfAwq4OHoTRjxlen0NKyWN3gXZZanU8qk9eFFjp8xJVFALlTsBdMP80TJ7E2J9aW9jus8BScG6iM5VwpMFfCD6Qf3KqA86DY4a91Ww19JRnA/SzwTAuNMeh7XuZok1z0xsnyvFHCDnozVb5rIDS65bZXxbfrIEIwUhO2HUS5+JDCTg0lCmazlxCLNKeAi4wfmXa9+A55UCCBmRYKRhAeNfxaC6yIX59b5TlCGsrP0HwAA//9BECN1AAAABklEQVQDAF7M7K1fqR9uAAAAAElFTkSuQmCC",alt:""}),o("p",null,"帮助文档")])],-1))]})]}),_:3},8,["items"])])):a("",!0),o("div",ne,[y(t.$slots,"default",{activeTab:E.value,tabData:R.value})])]}),_:3})]}),_:3})}}}),re=(0,I.A)(ae,[["__scopeId","data-v-1cae8d24"]]);var oe=function(e,t){if(!e||!e.defineStore)throw new Error("[shared-layout-components] 请传入有效的 pinia 模块,需要包含 defineStore 方法");var n=e.defineStore,a=e.setActivePinia,r=n("pageLayoutTabs",{state:function(){return{tabs:[],currentTab:""}},getters:{currentTabData:function(e){return e.tabs.find(function(t){return t.key===e.currentTab})||null}},actions:{addTab:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this.tabs.find(function(t){return t.key===e.key})||this.tabs.push(e),t&&(this.currentTab=e.key)},removeTab:function(e){var t=this.tabs.findIndex(function(t){return t.key===e});if(t>-1&&(this.tabs.splice(t,1),this.currentTab===e)){var n,a=Math.min(t,this.tabs.length-1);this.currentTab=(null===(n=this.tabs[a])||void 0===n?void 0:n.key)||""}},setCurrentTab:function(e){this.currentTab=e},clearTabs:function(){this.tabs=[],this.currentTab=""}},persist:{storage:sessionStorage}});return{useTabsStore:function(){return t&&a&&a(t),r.apply(void 0,arguments)},useTabsStoreRaw:r}};function ue(e){return ue="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ue(e)}function ie(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,a)}return n}function le(e,t,n){return(t=function(e){var t=function(e){if("object"!=ue(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=ue(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==ue(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var ce=null,se=null,fe=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return e&&(se=e),t&&(ce=t),{createRouter:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!se)throw new Error("[shared-layout-components] 请先传入 vue-router 模块或提供已有的路由实例");var n=se,a=n.createRouter,r=n.createWebHistory;if(!a||!r)throw new Error("[shared-layout-components] 传入的 vue-router 模块无效,需要包含 createRouter 和 createWebHistory");return ce=a(function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ie(Object(n),!0).forEach(function(t){le(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ie(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({history:r(t.basePath||""),routes:e},t))},getRouter:function(){return ce},getCurrentRoute:function(){return ce?ce.currentRoute:null},push:function(e){ce?ce.push(e):console.warn("[shared-layout-components] 路由实例未创建")},replace:function(e){ce?ce.replace(e):console.warn("[shared-layout-components] 路由实例未创建")}}},de=[re,x,q,Z],ve=null,ye=null,be=null,pe=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{install:function(t){if(!this.installed){this.installed=!0;var n=e.pinia,a=e.piniaInstance,r=e.piniaPluginPersistedstate,o=e.router,u=e.vueRouter,i=e.routes,l=e.routerOptions,c=void 0===l?{}:l;if(!(be=a))if(t.config.globalProperties.$pinia)be=t.config.globalProperties.$pinia;else{if(!n)throw new Error("[shared-layout-components] 请传入 piniaInstance 或通过 app.use(pinia) 预先安装 pinia");var s=n.createPinia,f=n.setActivePinia;be=s(),r&&r.default&&be.use(r.default),t.use(be),f&&f(be)}if(!n)throw new Error("[shared-layout-components] 请传入 pinia 模块(包含 defineStore 等)以便创建 stores");if(ve=oe(n,be),console.log("[shared-layout] stores 创建成功:",ve),t.provide(G.useTabsStore,ve.useTabsStore),t.provide(G.piniaInstance,be),console.log("[shared-layout] provide 完成, injectionKeys:",G),o)ye=fe(null,o);else if(u&&(ye=fe(u),i&&i.length>0)){var d=ye.createRouter(i,c);t.use(d)}ye&&t.provide(G.routerManager,ye),de.forEach(function(e){t.component(e.name,e)}),t.config.globalProperties.$sharedLayout={stores:ve,routerManager:ye}}}}};"undefined"!=typeof window&&window.Vue&&console.warn("[shared-layout-components] 请使用 app.use() 方式安装组件库");const me={install:function(e){pe(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).install(e)},PageLayout:re,SidebarLayout:x,BreadCrumb:q,Tabs:Z};var he=function(){if(!ve)throw new Error("[shared-layout-components] 请先调用 app.use() 安装组件库");return ve},ge=function(){return ye};export{q as BreadCrumb,re as PageLayout,x as SidebarLayout,Z as Tabs,fe as createRouterManager,pe as createSharedLayout,oe as createStores,me as default,ge as getRouterManager,he as getStores,G as injectionKeys};
package/dist/index.umd.js CHANGED
@@ -1 +1 @@
1
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("@ant-design/icons-vue"),require("vue")):"function"==typeof define&&define.amd?define(["@ant-design/icons-vue","vue"],t):"object"==typeof exports?exports.SharedLayoutComponents=t(require("@ant-design/icons-vue"),require("vue")):e.SharedLayoutComponents=t(e.icons,e.Vue)}(this,(e,t)=>(()=>{"use strict";var n={262(e,t){t.A=(e,t)=>{const n=e.__vccOpts||e;for(const[e,a]of t)n[e]=a;return n}},166(t){t.exports=e},594(e){e.exports=t}},a={};function r(e){var t=a[e];if(void 0!==t)return t.exports;var o=a[e]={exports:{}};return n[e](o,o.exports,r),o.exports}r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var o={};r.d(o,{default:()=>X});var u=r(594),l=r(166);function i(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=c(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var a=0,r=function(){};return{s:r,n:function(){return a>=e.length?{done:!0}:{done:!1,value:e[a++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,u=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return u=e.done,e},e:function(e){l=!0,o=e},f:function(){try{u||null==n.return||n.return()}finally{if(l)throw o}}}}function c(e,t){if(e){if("string"==typeof e)return s(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var d={class:"system-title"},f={class:"menu-wrapper"};const v={__name:"SidebarLayout",props:{activeKey:{type:String,default:""},menuData:{type:Array,default:function(){return[]}},collapsed:{type:Boolean,default:!1},systemTitle:{type:String,default:"XXXXXX系统名称"}},emits:["menu-click","update:activeKey","update:collapsed"],setup:function(e,t){var n=t.expose,a=t.emit,r=e,o=a,v=((0,u.computed)(function(){return r.systemTitle}),(0,u.ref)(r.collapsed)),p=(0,u.ref)([]),y=(0,u.ref)([]);(0,u.watch)(function(){return r.collapsed},function(e){v.value=e}),(0,u.watch)(v,function(e){o("update:collapsed",e)}),(0,u.watch)(function(){return r.activeKey},function(e){if(e){p.value=[e];var t=function(e,n){var a,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,o=i(e);try{for(o.s();!(a=o.n()).done;){var u=a.value;if(u.key===n)return r;if(u.children){var l=t(u.children,n,u.key);if(null!==l)return l}}}catch(e){o.e(e)}finally{o.f()}return null},n=r.menuData.length>0?r.menuData:m,a=t(n,e);a&&!y.value.includes(a)&&(y.value=[].concat(function(e){if(Array.isArray(e))return s(e)}(o=y.value)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(o)||c(o)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),[a]))}var o},{immediate:!0});var m=[],b=function(e){return e.map(function(e){var t={key:e.key,label:e.label||e.title,title:e.title||e.label,path:e.path,external:e.external};return e.children&&e.children.length>0&&(t.children=b(e.children)),t})},h=(0,u.computed)(function(){var e=r.menuData.length>0?r.menuData:m;return b(e)}),g=function(){v.value=!v.value},k=function(e){var t=e.key,n=(e.item,function(e,t){var a,r=i(e);try{for(r.s();!(a=r.n()).done;){var o=a.value;if(o.key===t)return o;if(o.children){var u=n(o.children,t);if(u)return u}}}catch(e){r.e(e)}finally{r.f()}return null}),a=r.menuData.length>0?r.menuData:m,u=n(a,t);u&&(o("menu-click",u),o("update:activeKey",t))},A=function(e){y.value=e};return(0,u.watch)(p,function(e){if(e.length>0){var t=e[0];o("update:activeKey",t)}},{immediate:!1}),n({toggleCollapse:g,expandMenu:function(e){y.value.includes(e)||y.value.push(e)},collapseMenu:function(e){var t=y.value.indexOf(e);t>-1&&y.value.splice(t,1)}}),function(e,t){var n=(0,u.resolveComponent)("a-menu");return(0,u.openBlock)(),(0,u.createElementBlock)("div",{class:(0,u.normalizeClass)(["sidebar",{collapsed:v.value}])},[(0,u.createElementVNode)("div",d,[(0,u.createElementVNode)("h1",null,(0,u.toDisplayString)(r.systemTitle),1)]),(0,u.createElementVNode)("div",f,[(0,u.createVNode)(n,{selectedKeys:p.value,"onUpdate:selectedKeys":t[0]||(t[0]=function(e){return p.value=e}),openKeys:y.value,"onUpdate:openKeys":t[1]||(t[1]=function(e){return y.value=e}),mode:"inline","inline-collapsed":v.value,items:h.value,onClick:k,onOpenChange:A},null,8,["selectedKeys","openKeys","inline-collapsed","items"])]),(0,u.createElementVNode)("div",{class:"collapse-btn",onClick:g},[v.value?((0,u.openBlock)(),(0,u.createBlock)((0,u.unref)(l.RightOutlined),{key:1})):((0,u.openBlock)(),(0,u.createBlock)((0,u.unref)(l.LeftOutlined),{key:0}))])],2)}}};var p=r(262);const y=(0,p.A)(v,[["__scopeId","data-v-3166c85e"]]);var m={class:"tabs-wrapper"},b={class:"tabs-container"},h=["onClick"],g={class:"tab-title"},k=["onClick"];const A=Object.assign({name:"Tabs"},{__name:"Tabs",props:{tabs:{type:Array,default:function(){return[]}},activeTab:{type:String,default:""}},emits:["update:activeTab","tab-click","tab-close"],setup:function(e,t){var n=t.emit,a=e,r=n,o=(0,u.ref)(a.activeTab),l=[],i=(0,u.computed)(function(){return a.tabs.length>0?a.tabs:l});return(0,u.watch)(function(){return a.activeTab},function(e){e&&e!==o.value&&(o.value=e)},{immediate:!0}),(0,u.watch)(i,function(e){e.length>0&&!o.value&&!a.activeTab&&(o.value=e[0].key,r("update:activeTab",e[0].key))},{immediate:!0}),function(e,t){return(0,u.openBlock)(),(0,u.createElementBlock)("div",m,[(0,u.createElementVNode)("div",b,[((0,u.openBlock)(!0),(0,u.createElementBlock)(u.Fragment,null,(0,u.renderList)(i.value,function(e){return(0,u.openBlock)(),(0,u.createElementBlock)("div",{key:e.key,class:(0,u.normalizeClass)(["tab-item",{active:o.value===e.key}]),onClick:function(t){return function(e){o.value=e.key,r("update:activeTab",e.key),r("tab-click",e)}(e)}},[(0,u.createElementVNode)("span",g,(0,u.toDisplayString)(e.title),1),!1!==e.closable&&i.value.length>1?((0,u.openBlock)(),(0,u.createElementBlock)("span",{key:0,class:"tab-close",onClick:(0,u.withModifiers)(function(t){return function(e){r("tab-close",e)}(e)},["stop"])}," × ",8,k)):(0,u.createCommentVNode)("",!0)],10,h)}),128))])])}}}),T=(0,p.A)(A,[["__scopeId","data-v-dca4842a"]]);var w={class:"breadcrumb-wrapper"},S={class:"breadcrumb-content"},E={key:0,class:"breadcrumb-current"},C=["onClick"],B={class:"breadcrumb-extra"};const D=Object.assign({name:"BreadCrumb"},{__name:"BreadCrumb",props:{items:{type:Array,default:function(){return[]}}},emits:["click"],setup:function(e,t){var n=t.emit,a=e,r=n,o=(0,u.computed)(function(){return a.items.length>0?a.items:[]});return function(e,t){var n=(0,u.resolveComponent)("a-breadcrumb-item"),a=(0,u.resolveComponent)("a-breadcrumb");return(0,u.openBlock)(),(0,u.createElementBlock)("div",w,[(0,u.createElementVNode)("div",S,[(0,u.createVNode)((0,u.unref)(l.EnvironmentOutlined),{class:"breadcrumb-icon"}),(0,u.createVNode)(a,null,{default:(0,u.withCtx)(function(){return[((0,u.openBlock)(!0),(0,u.createElementBlock)(u.Fragment,null,(0,u.renderList)(o.value,function(e,t){return(0,u.openBlock)(),(0,u.createBlock)(n,{key:t},{default:(0,u.withCtx)(function(){return[t===o.value.length-1?((0,u.openBlock)(),(0,u.createElementBlock)("span",E,(0,u.toDisplayString)(e.title),1)):((0,u.openBlock)(),(0,u.createElementBlock)("a",{key:1,onClick:function(n){return function(e,t){r("click",{item:e,index:t})}(e,t)}},(0,u.toDisplayString)(e.title),9,C))]}),_:2},1024)}),128))]}),_:1})]),(0,u.createElementVNode)("div",B,[(0,u.renderSlot)(e.$slots,"default")])])}}}),L=(0,p.A)(D,[["__scopeId","data-v-06ed9d84"]]);var P={useTabsStore:Symbol("useTabsStore"),routerManager:Symbol("routerManager"),piniaInstance:Symbol("piniaInstance")};function V(e){return function(e){if(Array.isArray(e))return N(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||K(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function x(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=K(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var a=0,r=function(){};return{s:r,n:function(){return a>=e.length?{done:!0}:{done:!1,value:e[a++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,u=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return u=e.done,e},e:function(e){l=!0,o=e},f:function(){try{u||null==n.return||n.return()}finally{if(l)throw o}}}}function K(e,t){if(e){if("string"==typeof e)return N(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?N(e,t):void 0}}function N(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var O={key:1,class:"page-layout--breadcrumb"},R={class:"page-layout--content"};const I=Object.assign({name:"PageLayout"},{__name:"PageLayout",props:{showSidebar:{type:Boolean,default:!0},menuData:{type:Array,default:function(){return[]}},systemTitle:{type:String,default:"管理系统"},showTabs:{type:Boolean,default:!0},defaultTabs:{type:Array,default:function(){return[]}},showBreadcrumb:{type:Boolean,default:!0},homeBreadcrumb:{type:Object,default:function(){return{}}},autoAddTab:{type:Boolean,default:!0},enableRouterSync:{type:Boolean,default:!0}},emits:["menu-click","tab-change","tab-click","tab-close","breadcrumb-click","update:activeTab"],setup:function(e,t){var n=t.expose,a=t.emit,r=e,o=a,l=(0,u.inject)(P.useTabsStore),i=(0,u.inject)(P.routerManager),c=(0,u.inject)(P.piniaInstance);console.log("[PageLayout] inject 结果:",{useTabsStore:l,routerManager:i,piniaInstance:c}),console.log("[PageLayout] injectionKeys:",P),(0,u.getCurrentInstance)();var s=null,d=function(){if(!s){if(!l)return console.error("[shared-layout-components/PageLayout] 未找到 useTabsStore,请确保通过 app.use() 正确安装组件库"),null;try{s=l()}catch(e){return console.error("[shared-layout-components/PageLayout] 获取 tabsStore 失败:",e),null}}return s},f=(0,u.computed)(function(){var e;return(null==i||null===(e=i.getRouter)||void 0===e?void 0:e.call(i))||null}),v=(0,u.computed)(function(){var e;return(null==i||null===(e=i.getCurrentRoute)||void 0===e?void 0:e.call(i))||null}),p=(0,u.ref)(!1),m=(0,u.computed)({get:function(){var e;return(null===(e=d())||void 0===e?void 0:e.currentTab)||""},set:function(e){var t=d();t&&(t.currentTab=e)}}),b=(0,u.computed)(function(){var e;return(null===(e=d())||void 0===e?void 0:e.tabs)||[]});(0,u.watch)(function(){return r.defaultTabs},function(e){if(e&&e.length>0){var t=d();t&&(e.forEach(function(e){t.addTab(e,!1)}),!t.currentTab&&e[0]&&t.setCurrentTab(e[0].key))}},{immediate:!0,deep:!0});var h=function(){var e;if(r.enableRouterSync){var t=d();if(t){var n=(null===(e=v.value)||void 0===e?void 0:e.value)||v.value,a=null==n?void 0:n.path;if(console.log("[PageLayout] syncRouteToTab - 当前路由:",a,"当前路由对象:",n),console.log("[PageLayout] 当前 tabs:",t.tabs,"currentTab:",t.currentTab),a){var o=t.tabs.find(function(e){return e.path===a});if(o)return console.log("[PageLayout] tab 已存在:",o),void(t.currentTab!==o.key&&t.setCurrentTab(o.key));if(r.autoAddTab&&r.menuData&&r.menuData.length>0){console.log("[PageLayout] 查找 menuKey,menuData:",r.menuData,"currentPath:",a);var u=k(r.menuData,a);console.log("[PageLayout] 查找到的 menuKey:",u),u&&N(u)}}else console.log("[PageLayout] 路由路径为空,跳过")}else console.error("[PageLayout] store 未初始化")}else console.log("[PageLayout] enableRouterSync 为 false,跳过")};(0,u.watch)(function(){var e,t=(null===(e=v.value)||void 0===e?void 0:e.value)||v.value;return null==t?void 0:t.path},function(e,t){console.log("[PageLayout] 路由变化:",t,"->",e),e&&e!==t&&h()}),(0,u.onMounted)(function(){console.log("[PageLayout] onMounted - 开始同步路由到 tab"),setTimeout(function(){h()},0)});var g=(0,u.computed)(function(){var e;return(null===(e=d())||void 0===e?void 0:e.currentTabData)||null}),k=function(e,t){var n,a=x(e);try{for(a.s();!(n=a.n()).done;){var r=n.value;if(r.path===t)return r.key;if(r.children&&r.children.length>0){var o=k(r.children,t);if(o)return o}}}catch(e){a.e(e)}finally{a.f()}return null},A=function(e,t){var n,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],r=x(e);try{for(r.s();!(n=r.n()).done;){var o=n.value;if(o.key===t)return[].concat(V(a),[{title:o.title||o.label,path:o.path,key:o.key}]);if(o.children&&o.children.length>0){var u=A(o.children,t,[].concat(V(a),[{title:o.title||o.label,path:o.path,key:o.key}]));if(u)return u}}}catch(e){r.e(e)}finally{r.f()}return null},w=function(e,t){var n,a=x(e);try{for(a.s();!(n=a.n()).done;){var r=n.value;if(r.key===t)return r;if(r.children&&r.children.length>0){var o=w(r.children,t);if(o)return o}}}catch(e){a.e(e)}finally{a.f()}return null},S=(0,u.computed)(function(){var e;if(m.value===r.homeBreadcrumb.key)return[r.homeBreadcrumb];if(m.value&&r.menuData&&r.menuData.length>0){var t=A(r.menuData,m.value);if(t)return t}var n=null==v||null===(e=v.value)||void 0===e?void 0:e.path;if(n&&"/"!==n&&r.menuData&&r.menuData.length>0){var a=k(r.menuData,n);if(a){var o=A(r.menuData,a);if(o)return o}}var u=b.value.find(function(e){return e.key===m.value});return u?[r.homeBreadcrumb,{title:u.title,key:u.key}]:[r.homeBreadcrumb]}),E=function(e){o("menu-click",e);var t=d();r.autoAddTab&&t&&(t.addTab({key:e.key,title:e.title||e.label,closable:!0,path:e.path}),o("update:activeTab",e.key)),r.enableRouterSync&&f.value&&e.path&&f.value.push(e.path)},C=function(e){var t=d();if(t&&t.setCurrentTab(e),o("update:activeTab",e),o("tab-change",e),r.enableRouterSync&&f.value){var n=b.value.find(function(t){return t.key===e});null!=n&&n.path&&f.value.push(n.path)}},B=function(e){o("tab-click",e)},D=function(e){var t=d();if(t&&t.removeTab(e.key),o("update:activeTab",m.value),o("tab-close",e),r.enableRouterSync&&f.value){var n,a=null===(n=d())||void 0===n?void 0:n.currentTabData;null!=a&&a.path&&f.value.push(a.path)}},K=function(e){o("breadcrumb-click",e)},N=function(e){var t=w(r.menuData,e),n=d();t&&r.autoAddTab&&n&&(n.addTab({key:t.key,title:t.title||t.label,closable:!0,path:t.path}),o("update:activeTab",e))};return n({addTab:function(e){var t=d();t&&(t.addTab(e),o("update:activeTab",e.key))},removeTab:function(e){var t=d();t&&(t.removeTab(e),o("update:activeTab",m.value))},getCurrentTab:function(){var e;return(null===(e=d())||void 0===e?void 0:e.currentTabData)||null},addTabByMenuKey:N,findMenuItem:w,findMenuKeyByPath:k,tabsList:b,currentTab:m,currentTabData:g,breadcrumbList:S,clearTabs:function(){var e;return null===(e=d())||void 0===e?void 0:e.clearTabs()}}),function(t,n){var a=(0,u.resolveComponent)("a-layout-sider"),r=(0,u.resolveComponent)("a-layout");return(0,u.openBlock)(),(0,u.createBlock)(r,{class:"page-layout"},{default:(0,u.withCtx)(function(){return[(0,u.createVNode)(a,{class:"page-layout--sider"},{default:(0,u.withCtx)(function(){return[(0,u.renderSlot)(t.$slots,"sidebar",{},function(){return[e.showSidebar?((0,u.openBlock)(),(0,u.createBlock)(y,{key:0,collapsed:p.value,"onUpdate:collapsed":n[0]||(n[0]=function(e){return p.value=e}),menuData:e.menuData,systemTitle:e.systemTitle,activeKey:m.value,onMenuClick:E},null,8,["collapsed","menuData","systemTitle","activeKey"])):(0,u.createCommentVNode)("",!0)]})]}),_:3}),(0,u.createVNode)(r,{class:"page-layout--main"},{default:(0,u.withCtx)(function(){return[e.showTabs?(0,u.renderSlot)(t.$slots,"tabs",{key:0,tabs:b.value,activeTab:m.value},function(){return[(0,u.createVNode)(T,{tabs:b.value,activeTab:m.value,"onUpdate:activeTab":C,onTabClick:B,onTabClose:D},null,8,["tabs","activeTab"])]}):(0,u.createCommentVNode)("",!0),e.showBreadcrumb?((0,u.openBlock)(),(0,u.createElementBlock)("div",O,[(0,u.createVNode)(L,{items:S.value,onClick:K},{default:(0,u.withCtx)(function(){return[(0,u.renderSlot)(t.$slots,"breadcrumbExtra",{},function(){return[n[1]||(n[1]=(0,u.createElementVNode)("div",{class:"breadcrumb-extra"},[(0,u.createElementVNode)("div",{class:"extra-item"},[(0,u.createElementVNode)("img",{src:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAYCAYAAAAPtVbGAAAEzklEQVR4AZRWWyisaxj+zVqr1TrPXkU5tWcicjdCxMWeES6EbeLGqU3OSQslJZkZRcqFJRdOiUlySNi4EpmSIqfZKUoyU05xYY1DIcl+ni8zjWFZe0/z/t/7fd97Pv2/THrht7y8rK6qqmouLS21pKWl3ScmJgooKCi4z83NXa+vr+9ZX19XvyBCXD2r5EH4XGVl5dzMzEzZxsaGgtSvX7+2Ei4uLiSz2awaHR3Nrq2tnYMhcz09PYKGdK7wRElHR4eurq6OwtU+Pj42WG1oamrSDAwMuI2NjSkJxNvb2zVardb46tUrKwxRQ6FlcnJS56qA+0dKIFDX2dmp50VFRUVLX1+fsrCwUB8WFmbimTPwrKamJhtKNSEhIQbe6fHLy8t7osihhB6srq7qP3/+bIuPj9dkZGSUubm52cj8EoDGSsOQtxwvLy9pZ2dHPzg4WObMI5REREQopqam9CQqKSnJKS4uNjkT/Rc8Li6ul4pI29/f3zw9Pa0iThBKfH19ew4PDyVPT09DamrqOC9c4f7+Xk4L4bGewL0rDRUlJSW1UNbs7Gyz/V7W1dWl3t3dVUORcNt+4bxWV1ersrKyLCiAZoSGedOBL9mZxo6Xl5frg4KCbEtLS2pWKc9lJycnfxFBHn4aosvLy7GtrS15TEyMTaVSmUkPT0TJwiudwWBwJBs5snl7extZ5mtra6KHZGgmFZny8/ONXF0Bsc1eWFhQ0NPGxsbg0NDQFtLAe/nm5mYyPNNPTEzoEZ5snhPsId/e3v6Te9mbN29UAQEBEix41hMUhLCSJQsaq5+fH/mkm5ubLwiLCRGwYrVFR0c7+GGImUV0fHwsvJUhFNLV1ZVVcLo87F6QAXlhLyiOjo6+kOz29vY3KLWhcTXop2DgDhnAbSgi6ezsTE5aUV1EngMkV+QLJd4Lxm+gsTQ0NHzHKl1fX//OvKCaLLDcQpznzvDx40exlRF59+6dcEucPDygQA1BaicvaFXvp0+fRFg+fPjA/QP14wUK5Uw8Ro5oZpm7u7sVIZDs5WYnZ9Wx3h+8YChycJeDMcOwSaenpz9VsrKyokLSJRgiKlEGL/6mVnu5QZAESxSLi4vZ9OLr169GntkBs0mg9niLjcsDuRRhDgwM/IdXMpYbQiDNz89/g3BhHaZs8vv3700KhaL8mRFj8/f3N8EAhk3OlXsIE6GBDAUmsggzGlPkT8bSDA8PN7HZMHNEuaanp38fGhrStLa2CiIIcPxRAGbeoQk1xLlyD1woQWOyXxQwchxnDLMkqgveGGCRBOKytrY20aUOqf8TiYyMFIIRBREVsgsl9CYhIcHARA8PD4+NjIw8O5fI8CuIjY0dp8EHBwcqhE4oEkrIiKrhy8lwfn4uNxqNY3yB8fxXQEEIkQ7Dswy4CiGyeXh4mBl+Vhn5HUq4aW9v10O4KFG+wJKTky2YTT1gfhRC7OUseeRDx+nM2YXXQDOacj0zM/PH27dvRd/ZK/aREiqiR3t7e0pOW6wKCMoG8xy/VqiUgML4UVRUNAcD9Pv7+3KEyKTVao1KpdLM0saYF2GCJ39Q5hMlPMSXiLW7uzsYPSE+FsjM87u7OwWBeFRUlBWjvwVh0mA6a/i+Ry6D4ZUyJSUFOrVG9Bh7Tv4vAAAA//+JkNwrAAAABklEQVQDAEMWYUbEMf08AAAAAElFTkSuQmCC",alt:""}),(0,u.createElementVNode)("p",null,"AI助手")]),(0,u.createElementVNode)("div",{class:"extra-item"},[(0,u.createElementVNode)("img",{src:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADaUlEQVR4AYxWXVIaQRDunkSSt+AN8AZ4guAJoieIvkj5FHlJyUIVWKW7vumbBaYKPYF4AswJ5AZyA3lMljCd71tcXPnTqWlmdqb765/pnsHJitZsdvJBdNWoRe1eELUeg7BlpFrYeqphDeNhM7osrICQhQooRIA4Fz+J+aaYFdV0qKr3JFHtm1nJRM5jc4/g7VBmkaI5BfWz9o+RuQcCEMyp31qLcxunwf7maXV/K6UwKCuEd2BiF7y7UPRQDVuHs0rA87LEcHhvF7BsSGCCnVQP7pvNveEL18vsJCh3w6PyDkB2RGWo8IgYkmnYm3zRcmE4RAYeVhN4svP2LxV58VtQMiBG1pNEAeNn3pqASsDPqgcDzKe9Hl2VEOceD5jEeT26LE0ZMKFMqgSeNIiJZUQQvyP50DCRPKhCRixNO6zZ9uZ7iHOJZwIJxrzkzfW4N2XEhLJO/B6meWB2MIqjJgjvitpdhJhyMUuqcg6LhgjbBs+EMeeca6AEJMvP0CqyDZglprlDxmwLmpleY3jVm6ftopgUTLVL69JNzgFwg+/8UdSZqwOV8TH2JF6LD52ofuPHIutltDZQkaF4+S0zTZ37wiX3YZTnmKWPfz/3KadOvzoxK9KlLEM6Z3qeBuX1sLb/yrskrGI85EH4c7+f8qcj5UR0AC8LzkTmLJAVjeCxuJ4wdCKVpayoC+wVHH7e3bPgYv54YVhn0Jyo0JV3eYHUa9Bygoe1A9aNvNFwIyBWYCowpTCu7mbIOO2/BxzxZ930HSqYGZL/9+lPcTW6iKmvOB1X3uKrhy0YIuLN7lxulLuggKGaOa6isHpwzUJaxTPZ0+8cYVDXMaWYpnSpPnO/kCklhjDAo1OL2p10bdEYRJe7XhBK1WsWpCPTWMZ7LAxvbunDQT6SqS1NCGaZiGsoitM/V3OigJogfAwq4OHoTRjxlen0NKyWN3gXZZanU8qk9eFFjp8xJVFALlTsBdMP80TJ7E2J9aW9jus8BScG6iM5VwpMFfCD6Qf3KqA86DY4a91Ww19JRnA/SzwTAuNMeh7XuZok1z0xsnyvFHCDnozVb5rIDS65bZXxbfrIEIwUhO2HUS5+JDCTg0lCmazlxCLNKeAi4wfmXa9+A55UCCBmRYKRhAeNfxaC6yIX59b5TlCGsrP0HwAA//9BECN1AAAABklEQVQDAF7M7K1fqR9uAAAAAElFTkSuQmCC",alt:""}),(0,u.createElementVNode)("p",null,"帮助文档")])],-1))]})]}),_:3},8,["items"])])):(0,u.createCommentVNode)("",!0),(0,u.createElementVNode)("div",R,[(0,u.renderSlot)(t.$slots,"default",{activeTab:m.value,tabData:g.value})])]}),_:3})]}),_:3})}}}),j=(0,p.A)(I,[["__scopeId","data-v-1e044ec7"]]);function M(e){return M="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},M(e)}function U(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,a)}return n}function J(e,t,n){return(t=function(e){var t=function(e){if("object"!=M(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=M(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==M(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Z=null,F=null,W=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return e&&(F=e),t&&(Z=t),{createRouter:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!F)throw new Error("[shared-layout-components] 请先传入 vue-router 模块或提供已有的路由实例");var n=F,a=n.createRouter,r=n.createWebHistory;if(!a||!r)throw new Error("[shared-layout-components] 传入的 vue-router 模块无效,需要包含 createRouter 和 createWebHistory");return Z=a(function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?U(Object(n),!0).forEach(function(t){J(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):U(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({history:r(t.basePath||""),routes:e},t))},getRouter:function(){return Z},getCurrentRoute:function(){return Z?Z.currentRoute:null},push:function(e){Z?Z.push(e):console.warn("[shared-layout-components] 路由实例未创建")},replace:function(e){Z?Z.replace(e):console.warn("[shared-layout-components] 路由实例未创建")}}},q=[j,y,L,T],z=null,Q=null,Y=null;"undefined"!=typeof window&&window.Vue&&console.warn("[shared-layout-components] 请使用 app.use() 方式安装组件库");const X={install:function(e){(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{install:function(t){if(!this.installed){this.installed=!0;var n=e.pinia,a=e.piniaInstance,r=e.piniaPluginPersistedstate,o=e.router,u=e.vueRouter,l=e.routes,i=e.routerOptions,c=void 0===i?{}:i;if(!(Y=a))if(t.config.globalProperties.$pinia)Y=t.config.globalProperties.$pinia;else{if(!n)throw new Error("[shared-layout-components] 请传入 piniaInstance 或通过 app.use(pinia) 预先安装 pinia");var s=n.createPinia,d=n.setActivePinia;Y=s(),r&&r.default&&Y.use(r.default),t.use(Y),d&&d(Y)}if(!n)throw new Error("[shared-layout-components] 请传入 pinia 模块(包含 defineStore 等)以便创建 stores");if(z=function(e,t){if(!e||!e.defineStore)throw new Error("[shared-layout-components] 请传入有效的 pinia 模块,需要包含 defineStore 方法");var n=e.defineStore,a=e.setActivePinia,r=n("pageLayoutTabs",{state:function(){return{tabs:[],currentTab:""}},getters:{currentTabData:function(e){return e.tabs.find(function(t){return t.key===e.currentTab})||null}},actions:{addTab:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this.tabs.find(function(t){return t.key===e.key})||this.tabs.push(e),t&&(this.currentTab=e.key)},removeTab:function(e){var t=this.tabs.findIndex(function(t){return t.key===e});if(t>-1&&(this.tabs.splice(t,1),this.currentTab===e)){var n,a=Math.min(t,this.tabs.length-1);this.currentTab=(null===(n=this.tabs[a])||void 0===n?void 0:n.key)||""}},setCurrentTab:function(e){this.currentTab=e},clearTabs:function(){this.tabs=[],this.currentTab=""}},persist:{storage:sessionStorage}});return{useTabsStore:function(){return t&&a&&a(t),r.apply(void 0,arguments)},useTabsStoreRaw:r}}(n,Y),console.log("[shared-layout] stores 创建成功:",z),t.provide(P.useTabsStore,z.useTabsStore),t.provide(P.piniaInstance,Y),console.log("[shared-layout] provide 完成, injectionKeys:",P),o)Q=W(null,o);else if(u&&(Q=W(u),l&&l.length>0)){var f=Q.createRouter(l,c);t.use(f)}Q&&t.provide(P.routerManager,Q),q.forEach(function(e){t.component(e.name,e)}),t.config.globalProperties.$sharedLayout={stores:z,routerManager:Q}}}}})(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).install(e)},PageLayout:j,SidebarLayout:y,BreadCrumb:L,Tabs:T};return o.default})());
1
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("@ant-design/icons-vue"),require("vue")):"function"==typeof define&&define.amd?define(["@ant-design/icons-vue","vue"],t):"object"==typeof exports?exports.SharedLayoutComponents=t(require("@ant-design/icons-vue"),require("vue")):e.SharedLayoutComponents=t(e.icons,e.Vue)}(this,(e,t)=>(()=>{"use strict";var n={262(e,t){t.A=(e,t)=>{const n=e.__vccOpts||e;for(const[e,a]of t)n[e]=a;return n}},166(t){t.exports=e},594(e){e.exports=t}},a={};function r(e){var t=a[e];if(void 0!==t)return t.exports;var o=a[e]={exports:{}};return n[e](o,o.exports,r),o.exports}r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var o={};r.d(o,{default:()=>G});var u=r(594),l=r(166);function i(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=c(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var a=0,r=function(){};return{s:r,n:function(){return a>=e.length?{done:!0}:{done:!1,value:e[a++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,u=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return u=e.done,e},e:function(e){l=!0,o=e},f:function(){try{u||null==n.return||n.return()}finally{if(l)throw o}}}}function c(e,t){if(e){if("string"==typeof e)return s(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var d={class:"sidebar-content"},f={class:"system-title"},v={class:"menu-wrapper"};const p={__name:"SidebarLayout",props:{activeKey:{type:String,default:""},menuData:{type:Array,default:function(){return[]}},collapsed:{type:Boolean,default:!1},systemTitle:{type:String,default:"XXXXXX系统名称"}},emits:["menu-click","update:activeKey","update:collapsed"],setup:function(e,t){var n=t.expose,a=t.emit,r=e,o=a,p=((0,u.computed)(function(){return r.systemTitle}),(0,u.ref)(r.collapsed)),y=(0,u.ref)([]),m=(0,u.ref)([]);(0,u.watch)(function(){return r.collapsed},function(e){p.value=e}),(0,u.watch)(p,function(e){o("update:collapsed",e)}),(0,u.watch)(function(){return r.activeKey},function(e){if(e){y.value=[e];var t=function(e,n){var a,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,o=i(e);try{for(o.s();!(a=o.n()).done;){var u=a.value;if(u.key===n)return r;if(u.children){var l=t(u.children,n,u.key);if(null!==l)return l}}}catch(e){o.e(e)}finally{o.f()}return null},n=r.menuData.length>0?r.menuData:b,a=t(n,e);a&&!m.value.includes(a)&&(m.value=[].concat(function(e){if(Array.isArray(e))return s(e)}(o=m.value)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(o)||c(o)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),[a]))}var o},{immediate:!0});var b=[],h=function(e){return e.map(function(e){var t={key:e.key,label:e.label||e.title,title:e.title||e.label,path:e.path,external:e.external};return e.children&&e.children.length>0&&(t.children=h(e.children)),t})},g=(0,u.computed)(function(){var e=r.menuData.length>0?r.menuData:b;return h(e)}),k=function(){p.value=!p.value},A=function(e){var t=e.key,n=(e.item,function(e,t){var a,r=i(e);try{for(r.s();!(a=r.n()).done;){var o=a.value;if(o.key===t)return o;if(o.children){var u=n(o.children,t);if(u)return u}}}catch(e){r.e(e)}finally{r.f()}return null}),a=r.menuData.length>0?r.menuData:b,u=n(a,t);u&&(o("menu-click",u),o("update:activeKey",t))},T=function(e){m.value=e};return(0,u.watch)(y,function(e){if(e.length>0){var t=e[0];o("update:activeKey",t)}},{immediate:!1}),n({toggleCollapse:k,expandMenu:function(e){m.value.includes(e)||m.value.push(e)},collapseMenu:function(e){var t=m.value.indexOf(e);t>-1&&m.value.splice(t,1)}}),function(e,t){var n=(0,u.resolveComponent)("a-menu");return(0,u.openBlock)(),(0,u.createElementBlock)("div",{class:(0,u.normalizeClass)(["sidebar",{collapsed:p.value}])},[(0,u.createElementVNode)("div",d,[(0,u.createElementVNode)("div",f,[(0,u.createElementVNode)("h1",null,(0,u.toDisplayString)(r.systemTitle),1)]),(0,u.createElementVNode)("div",v,[(0,u.createVNode)(n,{selectedKeys:y.value,"onUpdate:selectedKeys":t[0]||(t[0]=function(e){return y.value=e}),openKeys:m.value,"onUpdate:openKeys":t[1]||(t[1]=function(e){return m.value=e}),mode:"inline","inline-collapsed":p.value,items:g.value,onClick:A,onOpenChange:T},null,8,["selectedKeys","openKeys","inline-collapsed","items"])]),(0,u.createElementVNode)("div",{class:"collapse-btn",onClick:k},[p.value?((0,u.openBlock)(),(0,u.createBlock)((0,u.unref)(l.RightOutlined),{key:1})):((0,u.openBlock)(),(0,u.createBlock)((0,u.unref)(l.LeftOutlined),{key:0}))])]),t[2]||(t[2]=(0,u.createElementVNode)("div",{class:"sidebar-placeholder"},null,-1))],2)}}};var y=r(262);const m=(0,y.A)(p,[["__scopeId","data-v-256567b4"]]);var b={class:"tabs-wrapper"},h={class:"tabs-container"},g=["onClick"],k={class:"tab-title"},A=["onClick"];const T=Object.assign({name:"Tabs"},{__name:"Tabs",props:{tabs:{type:Array,default:function(){return[]}},activeTab:{type:String,default:""}},emits:["update:activeTab","tab-click","tab-close"],setup:function(e,t){var n=t.emit,a=e,r=n,o=(0,u.ref)(a.activeTab),l=[],i=(0,u.computed)(function(){return a.tabs.length>0?a.tabs:l});return(0,u.watch)(function(){return a.activeTab},function(e){e&&e!==o.value&&(o.value=e)},{immediate:!0}),(0,u.watch)(i,function(e){e.length>0&&!o.value&&!a.activeTab&&(o.value=e[0].key,r("update:activeTab",e[0].key))},{immediate:!0}),function(e,t){return(0,u.openBlock)(),(0,u.createElementBlock)("div",b,[(0,u.createElementVNode)("div",h,[((0,u.openBlock)(!0),(0,u.createElementBlock)(u.Fragment,null,(0,u.renderList)(i.value,function(e){return(0,u.openBlock)(),(0,u.createElementBlock)("div",{key:e.key,class:(0,u.normalizeClass)(["tab-item",{active:o.value===e.key}]),onClick:function(t){return function(e){o.value=e.key,r("update:activeTab",e.key),r("tab-click",e)}(e)}},[(0,u.createElementVNode)("span",k,(0,u.toDisplayString)(e.title),1),!1!==e.closable&&i.value.length>1?((0,u.openBlock)(),(0,u.createElementBlock)("span",{key:0,class:"tab-close",onClick:(0,u.withModifiers)(function(t){return function(e){r("tab-close",e)}(e)},["stop"])}," × ",8,A)):(0,u.createCommentVNode)("",!0)],10,g)}),128))])])}}}),w=(0,y.A)(T,[["__scopeId","data-v-dca4842a"]]);var S={class:"breadcrumb-wrapper"},E={class:"breadcrumb-content"},C={key:0,class:"breadcrumb-current"},B=["onClick"],D={class:"breadcrumb-extra"};const V=Object.assign({name:"BreadCrumb"},{__name:"BreadCrumb",props:{items:{type:Array,default:function(){return[]}}},emits:["click"],setup:function(e,t){var n=t.emit,a=e,r=n,o=(0,u.computed)(function(){return a.items.length>0?a.items:[]});return function(e,t){var n=(0,u.resolveComponent)("a-breadcrumb-item"),a=(0,u.resolveComponent)("a-breadcrumb");return(0,u.openBlock)(),(0,u.createElementBlock)("div",S,[(0,u.createElementVNode)("div",E,[(0,u.createVNode)((0,u.unref)(l.EnvironmentOutlined),{class:"breadcrumb-icon"}),(0,u.createVNode)(a,null,{default:(0,u.withCtx)(function(){return[((0,u.openBlock)(!0),(0,u.createElementBlock)(u.Fragment,null,(0,u.renderList)(o.value,function(e,t){return(0,u.openBlock)(),(0,u.createBlock)(n,{key:t},{default:(0,u.withCtx)(function(){return[t===o.value.length-1?((0,u.openBlock)(),(0,u.createElementBlock)("span",C,(0,u.toDisplayString)(e.title),1)):((0,u.openBlock)(),(0,u.createElementBlock)("a",{key:1,onClick:function(n){return function(e,t){r("click",{item:e,index:t})}(e,t)}},(0,u.toDisplayString)(e.title),9,B))]}),_:2},1024)}),128))]}),_:1})]),(0,u.createElementVNode)("div",D,[(0,u.renderSlot)(e.$slots,"default")])])}}}),L=(0,y.A)(V,[["__scopeId","data-v-06ed9d84"]]);var P={useTabsStore:Symbol("useTabsStore"),routerManager:Symbol("routerManager"),piniaInstance:Symbol("piniaInstance")};function N(e){return function(e){if(Array.isArray(e))return O(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||K(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function x(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=K(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var a=0,r=function(){};return{s:r,n:function(){return a>=e.length?{done:!0}:{done:!1,value:e[a++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,u=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return u=e.done,e},e:function(e){l=!0,o=e},f:function(){try{u||null==n.return||n.return()}finally{if(l)throw o}}}}function K(e,t){if(e){if("string"==typeof e)return O(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?O(e,t):void 0}}function O(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var R={key:1,class:"page-layout--breadcrumb"},I={class:"page-layout--content"};const j=Object.assign({name:"PageLayout"},{__name:"PageLayout",props:{showSidebar:{type:Boolean,default:!0},menuData:{type:Array,default:function(){return[]}},systemTitle:{type:String,default:"管理系统"},showTabs:{type:Boolean,default:!0},defaultTabs:{type:Array,default:function(){return[]}},showBreadcrumb:{type:Boolean,default:!0},homeBreadcrumb:{type:Object,default:function(){return{}}},autoAddTab:{type:Boolean,default:!0},enableRouterSync:{type:Boolean,default:!0}},emits:["menu-click","tab-change","tab-click","tab-close","breadcrumb-click","update:activeTab"],setup:function(e,t){var n=t.expose,a=t.emit,r=e,o=a,l=(0,u.inject)(P.useTabsStore),i=(0,u.inject)(P.routerManager),c=(0,u.inject)(P.piniaInstance);console.log("[PageLayout] inject 结果:",{useTabsStore:l,routerManager:i,piniaInstance:c}),console.log("[PageLayout] injectionKeys:",P),(0,u.getCurrentInstance)();var s=null,d=function(){if(!s){if(!l)return console.error("[shared-layout-components/PageLayout] 未找到 useTabsStore,请确保通过 app.use() 正确安装组件库"),null;try{s=l()}catch(e){return console.error("[shared-layout-components/PageLayout] 获取 tabsStore 失败:",e),null}}return s},f=(0,u.computed)(function(){var e;return(null==i||null===(e=i.getRouter)||void 0===e?void 0:e.call(i))||null}),v=(0,u.computed)(function(){var e;return(null==i||null===(e=i.getCurrentRoute)||void 0===e?void 0:e.call(i))||null}),p=(0,u.ref)(!1),y=(0,u.computed)({get:function(){var e;return(null===(e=d())||void 0===e?void 0:e.currentTab)||""},set:function(e){var t=d();t&&(t.currentTab=e)}}),b=(0,u.computed)(function(){var e;return(null===(e=d())||void 0===e?void 0:e.tabs)||[]});(0,u.watch)(function(){return r.defaultTabs},function(e){if(e&&e.length>0){var t=d();t&&(e.forEach(function(e){t.addTab(e,!1)}),!t.currentTab&&e[0]&&t.setCurrentTab(e[0].key))}},{immediate:!0,deep:!0});var h=function(){var e;if(r.enableRouterSync){var t=d();if(t){var n=(null===(e=v.value)||void 0===e?void 0:e.value)||v.value,a=null==n?void 0:n.path;if(console.log("[PageLayout] syncRouteToTab - 当前路由:",a,"当前路由对象:",n),console.log("[PageLayout] 当前 tabs:",t.tabs,"currentTab:",t.currentTab),a){var o=t.tabs.find(function(e){return e.path===a});if(o)return console.log("[PageLayout] tab 已存在:",o),void(t.currentTab!==o.key&&t.setCurrentTab(o.key));if(r.autoAddTab&&r.menuData&&r.menuData.length>0){console.log("[PageLayout] 查找 menuKey,menuData:",r.menuData,"currentPath:",a);var u=k(r.menuData,a);console.log("[PageLayout] 查找到的 menuKey:",u),u&&K(u)}}else console.log("[PageLayout] 路由路径为空,跳过")}else console.error("[PageLayout] store 未初始化")}else console.log("[PageLayout] enableRouterSync 为 false,跳过")};(0,u.watch)(function(){var e,t=(null===(e=v.value)||void 0===e?void 0:e.value)||v.value;return null==t?void 0:t.path},function(e,t){console.log("[PageLayout] 路由变化:",t,"->",e),e&&e!==t&&h()}),(0,u.onMounted)(function(){console.log("[PageLayout] onMounted - 开始同步路由到 tab"),setTimeout(function(){h()},0)});var g=(0,u.computed)(function(){var e;return(null===(e=d())||void 0===e?void 0:e.currentTabData)||null}),k=function(e,t){var n,a=x(e);try{for(a.s();!(n=a.n()).done;){var r=n.value;if(r.path===t)return r.key;if(r.children&&r.children.length>0){var o=k(r.children,t);if(o)return o}}}catch(e){a.e(e)}finally{a.f()}return null},A=function(e,t){var n,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],r=x(e);try{for(r.s();!(n=r.n()).done;){var o=n.value;if(o.key===t)return[].concat(N(a),[{title:o.title||o.label,path:o.path,key:o.key}]);if(o.children&&o.children.length>0){var u=A(o.children,t,[].concat(N(a),[{title:o.title||o.label,path:o.path,key:o.key}]));if(u)return u}}}catch(e){r.e(e)}finally{r.f()}return null},T=function(e,t){var n,a=x(e);try{for(a.s();!(n=a.n()).done;){var r=n.value;if(r.key===t)return r;if(r.children&&r.children.length>0){var o=T(r.children,t);if(o)return o}}}catch(e){a.e(e)}finally{a.f()}return null},S=(0,u.computed)(function(){var e;if(y.value===r.homeBreadcrumb.key)return[r.homeBreadcrumb];if(y.value&&r.menuData&&r.menuData.length>0){var t=A(r.menuData,y.value);if(t)return t}var n=null==v||null===(e=v.value)||void 0===e?void 0:e.path;if(n&&"/"!==n&&r.menuData&&r.menuData.length>0){var a=k(r.menuData,n);if(a){var o=A(r.menuData,a);if(o)return o}}var u=b.value.find(function(e){return e.key===y.value});return u?[r.homeBreadcrumb,{title:u.title,key:u.key}]:[r.homeBreadcrumb]}),E=function(e){o("menu-click",e);var t=d();r.autoAddTab&&t&&(t.addTab({key:e.key,title:e.title||e.label,closable:!0,path:e.path}),o("update:activeTab",e.key)),r.enableRouterSync&&f.value&&e.path&&f.value.push(e.path)},C=function(e){var t=d();if(t&&t.setCurrentTab(e),o("update:activeTab",e),o("tab-change",e),r.enableRouterSync&&f.value){var n=b.value.find(function(t){return t.key===e});null!=n&&n.path&&f.value.push(n.path)}},B=function(e){o("tab-click",e)},D=function(e){var t=d();if(t&&t.removeTab(e.key),o("update:activeTab",y.value),o("tab-close",e),r.enableRouterSync&&f.value){var n,a=null===(n=d())||void 0===n?void 0:n.currentTabData;null!=a&&a.path&&f.value.push(a.path)}},V=function(e){o("breadcrumb-click",e)},K=function(e){var t=T(r.menuData,e),n=d();t&&r.autoAddTab&&n&&(n.addTab({key:t.key,title:t.title||t.label,closable:!0,path:t.path}),o("update:activeTab",e))};return n({addTab:function(e){var t=d();t&&(t.addTab(e),o("update:activeTab",e.key))},removeTab:function(e){var t=d();t&&(t.removeTab(e),o("update:activeTab",y.value))},getCurrentTab:function(){var e;return(null===(e=d())||void 0===e?void 0:e.currentTabData)||null},addTabByMenuKey:K,findMenuItem:T,findMenuKeyByPath:k,tabsList:b,currentTab:y,currentTabData:g,breadcrumbList:S,clearTabs:function(){var e;return null===(e=d())||void 0===e?void 0:e.clearTabs()}}),function(t,n){var a=(0,u.resolveComponent)("a-layout-sider"),r=(0,u.resolveComponent)("a-layout");return(0,u.openBlock)(),(0,u.createBlock)(r,{class:"page-layout"},{default:(0,u.withCtx)(function(){return[(0,u.createVNode)(a,{class:"page-layout--sider"},{default:(0,u.withCtx)(function(){return[(0,u.renderSlot)(t.$slots,"sidebar",{},function(){return[e.showSidebar?((0,u.openBlock)(),(0,u.createBlock)(m,{key:0,collapsed:p.value,"onUpdate:collapsed":n[0]||(n[0]=function(e){return p.value=e}),menuData:e.menuData,systemTitle:e.systemTitle,activeKey:y.value,onMenuClick:E},null,8,["collapsed","menuData","systemTitle","activeKey"])):(0,u.createCommentVNode)("",!0)]})]}),_:3}),(0,u.createVNode)(r,{class:"page-layout--main"},{default:(0,u.withCtx)(function(){return[e.showTabs?(0,u.renderSlot)(t.$slots,"tabs",{key:0,tabs:b.value,activeTab:y.value},function(){return[(0,u.createVNode)(w,{tabs:b.value,activeTab:y.value,"onUpdate:activeTab":C,onTabClick:B,onTabClose:D},null,8,["tabs","activeTab"])]}):(0,u.createCommentVNode)("",!0),e.showBreadcrumb?((0,u.openBlock)(),(0,u.createElementBlock)("div",R,[(0,u.createVNode)(L,{items:S.value,onClick:V},{default:(0,u.withCtx)(function(){return[(0,u.renderSlot)(t.$slots,"breadcrumbExtra",{},function(){return[n[1]||(n[1]=(0,u.createElementVNode)("div",{class:"breadcrumb-extra"},[(0,u.createElementVNode)("div",{class:"extra-item"},[(0,u.createElementVNode)("img",{src:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAYCAYAAAAPtVbGAAAEzklEQVR4AZRWWyisaxj+zVqr1TrPXkU5tWcicjdCxMWeES6EbeLGqU3OSQslJZkZRcqFJRdOiUlySNi4EpmSIqfZKUoyU05xYY1DIcl+ni8zjWFZe0/z/t/7fd97Pv2/THrht7y8rK6qqmouLS21pKWl3ScmJgooKCi4z83NXa+vr+9ZX19XvyBCXD2r5EH4XGVl5dzMzEzZxsaGgtSvX7+2Ei4uLiSz2awaHR3Nrq2tnYMhcz09PYKGdK7wRElHR4eurq6OwtU+Pj42WG1oamrSDAwMuI2NjSkJxNvb2zVardb46tUrKwxRQ6FlcnJS56qA+0dKIFDX2dmp50VFRUVLX1+fsrCwUB8WFmbimTPwrKamJhtKNSEhIQbe6fHLy8t7osihhB6srq7qP3/+bIuPj9dkZGSUubm52cj8EoDGSsOQtxwvLy9pZ2dHPzg4WObMI5REREQopqam9CQqKSnJKS4uNjkT/Rc8Li6ul4pI29/f3zw9Pa0iThBKfH19ew4PDyVPT09DamrqOC9c4f7+Xk4L4bGewL0rDRUlJSW1UNbs7Gyz/V7W1dWl3t3dVUORcNt+4bxWV1ersrKyLCiAZoSGedOBL9mZxo6Xl5frg4KCbEtLS2pWKc9lJycnfxFBHn4aosvLy7GtrS15TEyMTaVSmUkPT0TJwiudwWBwJBs5snl7extZ5mtra6KHZGgmFZny8/ONXF0Bsc1eWFhQ0NPGxsbg0NDQFtLAe/nm5mYyPNNPTEzoEZ5snhPsId/e3v6Te9mbN29UAQEBEix41hMUhLCSJQsaq5+fH/mkm5ubLwiLCRGwYrVFR0c7+GGImUV0fHwsvJUhFNLV1ZVVcLo87F6QAXlhLyiOjo6+kOz29vY3KLWhcTXop2DgDhnAbSgi6ezsTE5aUV1EngMkV+QLJd4Lxm+gsTQ0NHzHKl1fX//OvKCaLLDcQpznzvDx40exlRF59+6dcEucPDygQA1BaicvaFXvp0+fRFg+fPjA/QP14wUK5Uw8Ro5oZpm7u7sVIZDs5WYnZ9Wx3h+8YChycJeDMcOwSaenpz9VsrKyokLSJRgiKlEGL/6mVnu5QZAESxSLi4vZ9OLr169GntkBs0mg9niLjcsDuRRhDgwM/IdXMpYbQiDNz89/g3BhHaZs8vv3700KhaL8mRFj8/f3N8EAhk3OlXsIE6GBDAUmsggzGlPkT8bSDA8PN7HZMHNEuaanp38fGhrStLa2CiIIcPxRAGbeoQk1xLlyD1woQWOyXxQwchxnDLMkqgveGGCRBOKytrY20aUOqf8TiYyMFIIRBREVsgsl9CYhIcHARA8PD4+NjIw8O5fI8CuIjY0dp8EHBwcqhE4oEkrIiKrhy8lwfn4uNxqNY3yB8fxXQEEIkQ7Dswy4CiGyeXh4mBl+Vhn5HUq4aW9v10O4KFG+wJKTky2YTT1gfhRC7OUseeRDx+nM2YXXQDOacj0zM/PH27dvRd/ZK/aREiqiR3t7e0pOW6wKCMoG8xy/VqiUgML4UVRUNAcD9Pv7+3KEyKTVao1KpdLM0saYF2GCJ39Q5hMlPMSXiLW7uzsYPSE+FsjM87u7OwWBeFRUlBWjvwVh0mA6a/i+Ry6D4ZUyJSUFOrVG9Bh7Tv4vAAAA//+JkNwrAAAABklEQVQDAEMWYUbEMf08AAAAAElFTkSuQmCC",alt:""}),(0,u.createElementVNode)("p",null,"AI助手")]),(0,u.createElementVNode)("div",{class:"extra-item"},[(0,u.createElementVNode)("img",{src:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADaUlEQVR4AYxWXVIaQRDunkSSt+AN8AZ4guAJoieIvkj5FHlJyUIVWKW7vumbBaYKPYF4AswJ5AZyA3lMljCd71tcXPnTqWlmdqb765/pnsHJitZsdvJBdNWoRe1eELUeg7BlpFrYeqphDeNhM7osrICQhQooRIA4Fz+J+aaYFdV0qKr3JFHtm1nJRM5jc4/g7VBmkaI5BfWz9o+RuQcCEMyp31qLcxunwf7maXV/K6UwKCuEd2BiF7y7UPRQDVuHs0rA87LEcHhvF7BsSGCCnVQP7pvNveEL18vsJCh3w6PyDkB2RGWo8IgYkmnYm3zRcmE4RAYeVhN4svP2LxV58VtQMiBG1pNEAeNn3pqASsDPqgcDzKe9Hl2VEOceD5jEeT26LE0ZMKFMqgSeNIiJZUQQvyP50DCRPKhCRixNO6zZ9uZ7iHOJZwIJxrzkzfW4N2XEhLJO/B6meWB2MIqjJgjvitpdhJhyMUuqcg6LhgjbBs+EMeeca6AEJMvP0CqyDZglprlDxmwLmpleY3jVm6ftopgUTLVL69JNzgFwg+/8UdSZqwOV8TH2JF6LD52ofuPHIutltDZQkaF4+S0zTZ37wiX3YZTnmKWPfz/3KadOvzoxK9KlLEM6Z3qeBuX1sLb/yrskrGI85EH4c7+f8qcj5UR0AC8LzkTmLJAVjeCxuJ4wdCKVpayoC+wVHH7e3bPgYv54YVhn0Jyo0JV3eYHUa9Bygoe1A9aNvNFwIyBWYCowpTCu7mbIOO2/BxzxZ930HSqYGZL/9+lPcTW6iKmvOB1X3uKrhy0YIuLN7lxulLuggKGaOa6isHpwzUJaxTPZ0+8cYVDXMaWYpnSpPnO/kCklhjDAo1OL2p10bdEYRJe7XhBK1WsWpCPTWMZ7LAxvbunDQT6SqS1NCGaZiGsoitM/V3OigJogfAwq4OHoTRjxlen0NKyWN3gXZZanU8qk9eFFjp8xJVFALlTsBdMP80TJ7E2J9aW9jus8BScG6iM5VwpMFfCD6Qf3KqA86DY4a91Ww19JRnA/SzwTAuNMeh7XuZok1z0xsnyvFHCDnozVb5rIDS65bZXxbfrIEIwUhO2HUS5+JDCTg0lCmazlxCLNKeAi4wfmXa9+A55UCCBmRYKRhAeNfxaC6yIX59b5TlCGsrP0HwAA//9BECN1AAAABklEQVQDAF7M7K1fqR9uAAAAAElFTkSuQmCC",alt:""}),(0,u.createElementVNode)("p",null,"帮助文档")])],-1))]})]}),_:3},8,["items"])])):(0,u.createCommentVNode)("",!0),(0,u.createElementVNode)("div",I,[(0,u.renderSlot)(t.$slots,"default",{activeTab:y.value,tabData:g.value})])]}),_:3})]}),_:3})}}}),M=(0,y.A)(j,[["__scopeId","data-v-1cae8d24"]]);function U(e){return U="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},U(e)}function J(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,a)}return n}function Z(e,t,n){return(t=function(e){var t=function(e){if("object"!=U(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=U(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==U(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var F=null,W=null,q=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return e&&(W=e),t&&(F=t),{createRouter:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!W)throw new Error("[shared-layout-components] 请先传入 vue-router 模块或提供已有的路由实例");var n=W,a=n.createRouter,r=n.createWebHistory;if(!a||!r)throw new Error("[shared-layout-components] 传入的 vue-router 模块无效,需要包含 createRouter 和 createWebHistory");return F=a(function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?J(Object(n),!0).forEach(function(t){Z(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):J(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({history:r(t.basePath||""),routes:e},t))},getRouter:function(){return F},getCurrentRoute:function(){return F?F.currentRoute:null},push:function(e){F?F.push(e):console.warn("[shared-layout-components] 路由实例未创建")},replace:function(e){F?F.replace(e):console.warn("[shared-layout-components] 路由实例未创建")}}},z=[M,m,L,w],Q=null,Y=null,X=null;"undefined"!=typeof window&&window.Vue&&console.warn("[shared-layout-components] 请使用 app.use() 方式安装组件库");const G={install:function(e){(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{install:function(t){if(!this.installed){this.installed=!0;var n=e.pinia,a=e.piniaInstance,r=e.piniaPluginPersistedstate,o=e.router,u=e.vueRouter,l=e.routes,i=e.routerOptions,c=void 0===i?{}:i;if(!(X=a))if(t.config.globalProperties.$pinia)X=t.config.globalProperties.$pinia;else{if(!n)throw new Error("[shared-layout-components] 请传入 piniaInstance 或通过 app.use(pinia) 预先安装 pinia");var s=n.createPinia,d=n.setActivePinia;X=s(),r&&r.default&&X.use(r.default),t.use(X),d&&d(X)}if(!n)throw new Error("[shared-layout-components] 请传入 pinia 模块(包含 defineStore 等)以便创建 stores");if(Q=function(e,t){if(!e||!e.defineStore)throw new Error("[shared-layout-components] 请传入有效的 pinia 模块,需要包含 defineStore 方法");var n=e.defineStore,a=e.setActivePinia,r=n("pageLayoutTabs",{state:function(){return{tabs:[],currentTab:""}},getters:{currentTabData:function(e){return e.tabs.find(function(t){return t.key===e.currentTab})||null}},actions:{addTab:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this.tabs.find(function(t){return t.key===e.key})||this.tabs.push(e),t&&(this.currentTab=e.key)},removeTab:function(e){var t=this.tabs.findIndex(function(t){return t.key===e});if(t>-1&&(this.tabs.splice(t,1),this.currentTab===e)){var n,a=Math.min(t,this.tabs.length-1);this.currentTab=(null===(n=this.tabs[a])||void 0===n?void 0:n.key)||""}},setCurrentTab:function(e){this.currentTab=e},clearTabs:function(){this.tabs=[],this.currentTab=""}},persist:{storage:sessionStorage}});return{useTabsStore:function(){return t&&a&&a(t),r.apply(void 0,arguments)},useTabsStoreRaw:r}}(n,X),console.log("[shared-layout] stores 创建成功:",Q),t.provide(P.useTabsStore,Q.useTabsStore),t.provide(P.piniaInstance,X),console.log("[shared-layout] provide 完成, injectionKeys:",P),o)Y=q(null,o);else if(u&&(Y=q(u),l&&l.length>0)){var f=Y.createRouter(l,c);t.use(f)}Y&&t.provide(P.routerManager,Y),z.forEach(function(e){t.component(e.name,e)}),t.config.globalProperties.$sharedLayout={stores:Q,routerManager:Y}}}}})(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).install(e)},PageLayout:M,SidebarLayout:m,BreadCrumb:L,Tabs:w};return o.default})());
package/dist/styles.css CHANGED
@@ -1,4 +1,8 @@
1
- .sidebar[data-v-3166c85e] {
1
+ .sidebar[data-v-256567b4] {
2
+ display: flex;
3
+ height: 100%;
4
+ }
5
+ .sidebar .sidebar-content[data-v-256567b4] {
2
6
  width: 210px;
3
7
  min-height: 100%;
4
8
  background: #fff;
@@ -6,14 +10,18 @@
6
10
  flex-direction: column;
7
11
  transition: width 0.3s;
8
12
  border-right: 1px solid #EFF3F8;
9
- margin-right: 16px;
10
13
  position: relative;
11
14
  z-index: 1;
12
15
  }
13
- .sidebar.collapsed[data-v-3166c85e] {
16
+ .sidebar .sidebar-placeholder[data-v-256567b4] {
17
+ width: 16px;
18
+ height: 36px;
19
+ border-bottom: 1px solid #EFF3F8;
20
+ }
21
+ .sidebar.collapsed[data-v-256567b4] {
14
22
  width: 0px;
15
23
  }
16
- .sidebar .system-title[data-v-3166c85e] {
24
+ .sidebar .system-title[data-v-256567b4] {
17
25
  height: 36px;
18
26
  display: flex;
19
27
  align-items: center;
@@ -22,7 +30,7 @@
22
30
  padding: 0 16px;
23
31
  flex-shrink: 0;
24
32
  }
25
- .sidebar .system-title h1[data-v-3166c85e] {
33
+ .sidebar .system-title h1[data-v-256567b4] {
26
34
  font-size: 14px;
27
35
  font-weight: 600;
28
36
  color: #181818;
@@ -31,27 +39,27 @@
31
39
  overflow: hidden;
32
40
  text-overflow: ellipsis;
33
41
  }
34
- .sidebar .menu-wrapper[data-v-3166c85e] {
42
+ .sidebar .menu-wrapper[data-v-256567b4] {
35
43
  flex: 1;
36
44
  overflow-y: auto;
37
45
  overflow-x: hidden;
38
46
  }
39
- .sidebar .menu-wrapper[data-v-3166c85e]::-webkit-scrollbar {
47
+ .sidebar .menu-wrapper[data-v-256567b4]::-webkit-scrollbar {
40
48
  width: 6px;
41
49
  }
42
- .sidebar .menu-wrapper[data-v-3166c85e]::-webkit-scrollbar-thumb {
50
+ .sidebar .menu-wrapper[data-v-256567b4]::-webkit-scrollbar-thumb {
43
51
  background: #c1c1c1;
44
52
  border-radius: 3px;
45
53
  }
46
- .sidebar .menu-wrapper[data-v-3166c85e]::-webkit-scrollbar-track {
54
+ .sidebar .menu-wrapper[data-v-256567b4]::-webkit-scrollbar-track {
47
55
  background: #f1f1f1;
48
56
  }
49
- .sidebar .menu-wrapper[data-v-3166c85e] .ant-menu {
57
+ .sidebar .menu-wrapper[data-v-256567b4] .ant-menu {
50
58
  border-right: none;
51
59
  border-inline-end: none !important;
52
60
  }
53
- .sidebar .menu-wrapper[data-v-3166c85e] .ant-menu .ant-menu-item,
54
- .sidebar .menu-wrapper[data-v-3166c85e] .ant-menu .ant-menu-submenu-title {
61
+ .sidebar .menu-wrapper[data-v-256567b4] .ant-menu .ant-menu-item,
62
+ .sidebar .menu-wrapper[data-v-256567b4] .ant-menu .ant-menu-submenu-title {
55
63
  height: 50px;
56
64
  line-height: 50px;
57
65
  margin: 0;
@@ -59,17 +67,17 @@
59
67
  color: #333333;
60
68
  font-size: 14px;
61
69
  }
62
- .sidebar .menu-wrapper[data-v-3166c85e] .ant-menu .ant-menu-sub .ant-menu-item-only-child {
70
+ .sidebar .menu-wrapper[data-v-256567b4] .ant-menu .ant-menu-sub .ant-menu-item-only-child {
63
71
  color: #666666;
64
72
  font-size: 12px;
65
73
  }
66
- .sidebar .menu-wrapper[data-v-3166c85e] .ant-menu .ant-menu-sub .ant-menu-item-selected {
74
+ .sidebar .menu-wrapper[data-v-256567b4] .ant-menu .ant-menu-sub .ant-menu-item-selected {
67
75
  color: #181818;
68
76
  }
69
- .sidebar .menu-wrapper[data-v-3166c85e] .ant-menu .ant-menu-sub .ant-menu-item-selected .ant-menu-title-content {
77
+ .sidebar .menu-wrapper[data-v-256567b4] .ant-menu .ant-menu-sub .ant-menu-item-selected .ant-menu-title-content {
70
78
  position: relative;
71
79
  }
72
- .sidebar .menu-wrapper[data-v-3166c85e] .ant-menu .ant-menu-sub .ant-menu-item-selected .ant-menu-title-content::before {
80
+ .sidebar .menu-wrapper[data-v-256567b4] .ant-menu .ant-menu-sub .ant-menu-item-selected .ant-menu-title-content::before {
73
81
  content: '';
74
82
  width: 7px;
75
83
  height: 7px;
@@ -80,25 +88,25 @@
80
88
  left: -16px;
81
89
  top: 21px;
82
90
  }
83
- .sidebar .menu-wrapper[data-v-3166c85e] .ant-menu .ant-menu-item:hover {
91
+ .sidebar .menu-wrapper[data-v-256567b4] .ant-menu .ant-menu-item:hover {
84
92
  border-radius: 0;
85
93
  }
86
- .sidebar .menu-wrapper[data-v-3166c85e] .ant-menu .ant-menu-item-selected {
94
+ .sidebar .menu-wrapper[data-v-256567b4] .ant-menu .ant-menu-item-selected {
87
95
  background: #FEF0E6;
88
96
  color: #FE6A08;
89
97
  border-radius: 0 !important;
90
98
  }
91
- .sidebar .menu-wrapper[data-v-3166c85e] .ant-menu .ant-menu-item-selected::after {
99
+ .sidebar .menu-wrapper[data-v-256567b4] .ant-menu .ant-menu-item-selected::after {
92
100
  border-right: 3px solid #FE6A08;
93
101
  }
94
- .sidebar .menu-wrapper[data-v-3166c85e] .ant-menu .ant-menu-submenu-selected > .ant-menu-submenu-title {
102
+ .sidebar .menu-wrapper[data-v-256567b4] .ant-menu .ant-menu-submenu-selected > .ant-menu-submenu-title {
95
103
  color: #FE6A08;
96
104
  }
97
- .sidebar .menu-wrapper[data-v-3166c85e] .ant-menu .ant-menu-item-active,
98
- .sidebar .menu-wrapper[data-v-3166c85e] .ant-menu .ant-menu-submenu-title:hover {
105
+ .sidebar .menu-wrapper[data-v-256567b4] .ant-menu .ant-menu-item-active,
106
+ .sidebar .menu-wrapper[data-v-256567b4] .ant-menu .ant-menu-submenu-title:hover {
99
107
  color: #FE6A08;
100
108
  }
101
- .sidebar .collapse-btn[data-v-3166c85e] {
109
+ .sidebar .collapse-btn[data-v-256567b4] {
102
110
  position: absolute;
103
111
  right: -16px;
104
112
  top: 50%;
@@ -115,10 +123,10 @@
115
123
  justify-content: center;
116
124
  cursor: pointer;
117
125
  }
118
- .sidebar .collapse-btn[data-v-3166c85e]:hover {
126
+ .sidebar .collapse-btn[data-v-256567b4]:hover {
119
127
  background: #f5f5f5;
120
128
  }
121
- .sidebar .collapse-btn[data-v-3166c85e] .anticon {
129
+ .sidebar .collapse-btn[data-v-256567b4] .anticon {
122
130
  font-size: 12px;
123
131
  color: #999;
124
132
  }
@@ -231,12 +239,12 @@
231
239
  color: #B3B3B3;
232
240
  }
233
241
 
234
- .page-layout[data-v-1e044ec7] {
242
+ .page-layout[data-v-1cae8d24] {
235
243
  height: 100%;
236
244
  background-color: #F5F7FA;
237
245
  overflow: hidden;
238
246
  }
239
- .page-layout .page-layout--sider[data-v-1e044ec7] {
247
+ .page-layout .page-layout--sider[data-v-1cae8d24] {
240
248
  width: auto !important;
241
249
  max-width: none !important;
242
250
  min-width: auto !important;
@@ -245,23 +253,23 @@
245
253
  height: 100%;
246
254
  overflow-y: auto;
247
255
  }
248
- .page-layout .page-layout--main[data-v-1e044ec7] {
256
+ .page-layout .page-layout--main[data-v-1cae8d24] {
249
257
  display: flex;
250
258
  flex-direction: column;
251
259
  height: 100%;
252
260
  background: #FFFFFF;
253
261
  overflow: hidden;
254
262
  }
255
- .page-layout .page-layout--breadcrumb[data-v-1e044ec7] {
263
+ .page-layout .page-layout--breadcrumb[data-v-1cae8d24] {
256
264
  flex-shrink: 0;
257
265
  padding: 0 24px;
258
266
  background: #fff;
259
267
  }
260
- .page-layout .page-layout--breadcrumb .breadcrumb-extra[data-v-1e044ec7] {
268
+ .page-layout .page-layout--breadcrumb .breadcrumb-extra[data-v-1cae8d24] {
261
269
  display: flex;
262
270
  align-items: center;
263
271
  }
264
- .page-layout .page-layout--breadcrumb .breadcrumb-extra .extra-item[data-v-1e044ec7] {
272
+ .page-layout .page-layout--breadcrumb .breadcrumb-extra .extra-item[data-v-1cae8d24] {
265
273
  display: flex;
266
274
  align-items: center;
267
275
  font-size: 12px;
@@ -270,15 +278,15 @@
270
278
  margin-left: 10px;
271
279
  cursor: pointer;
272
280
  }
273
- .page-layout .page-layout--breadcrumb .breadcrumb-extra .extra-item img[data-v-1e044ec7] {
281
+ .page-layout .page-layout--breadcrumb .breadcrumb-extra .extra-item img[data-v-1cae8d24] {
274
282
  width: 12px;
275
283
  height: 12px;
276
284
  margin-right: 3px;
277
285
  }
278
- .page-layout .page-layout--breadcrumb .breadcrumb-extra .extra-item p[data-v-1e044ec7] {
286
+ .page-layout .page-layout--breadcrumb .breadcrumb-extra .extra-item p[data-v-1cae8d24] {
279
287
  margin-bottom: 0;
280
288
  }
281
- .page-layout .page-layout--content[data-v-1e044ec7] {
289
+ .page-layout .page-layout--content[data-v-1cae8d24] {
282
290
  flex: 1;
283
291
  overflow: auto;
284
292
  padding: 0;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shared-layout-components",
3
- "version": "1.0.17",
3
+ "version": "1.0.18",
4
4
  "description": "基于 Vue3 和 Ant Design Vue 的公共布局组件库",
5
5
  "main": "dist/index.umd.js",
6
6
  "module": "dist/index.esm.js",
@@ -30,12 +30,12 @@
30
30
  "prepublishOnly": "npx rimraf dist && npm run build"
31
31
  },
32
32
  "peerDependencies": {
33
- "vue": "^3.3.4",
34
- "vue-router": "^4.0.0",
35
- "pinia": "^3.0.4",
36
- "ant-design-vue": "^4.2.6",
37
33
  "@ant-design/icons-vue": "^7.0.0",
38
- "pinia-plugin-persistedstate": "^4.0.0"
34
+ "ant-design-vue": "^4.2.6",
35
+ "pinia": "^3.0.4",
36
+ "pinia-plugin-persistedstate": "^4.0.0",
37
+ "vue": "^3.3.4",
38
+ "vue-router": "^4.0.0"
39
39
  },
40
40
  "peerDependenciesMeta": {
41
41
  "pinia-plugin-persistedstate": {
@@ -72,5 +72,8 @@
72
72
  "bugs": {
73
73
  "url": ""
74
74
  },
75
- "homepage": ""
75
+ "homepage": "",
76
+ "dependencies": {
77
+ "shared-layout-components": "^1.0.17"
78
+ }
76
79
  }