shared-layout-components 1.0.15 → 1.0.16

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/README.md CHANGED
@@ -9,6 +9,7 @@
9
9
  - 💾 **状态持久化** - 基于 Pinia 的标签页状态管理,支持刷新保持
10
10
  - 🎨 **高度可定制** - 支持插槽自定义各区域内容
11
11
  - 📦 **按需引入** - 支持 UMD 和 ES Module 两种格式
12
+ - 🔄 **对等依赖** - 通过函数参数接收宿主应用的依赖实例,避免重复打包
12
13
 
13
14
  ## 组件列表
14
15
 
@@ -25,21 +26,32 @@
25
26
  npm install shared-layout-components
26
27
  ```
27
28
 
28
- ## 前置依赖
29
+ ## 前置依赖(对等依赖)
29
30
 
30
- 确保项目中已安装以下依赖:
31
+ 本库使用**对等依赖(peer dependencies)**方式管理依赖,需要在宿主应用中安装以下依赖:
32
+
33
+ ```bash
34
+ npm install vue@^3.3.4 vue-router@^4.0.0 pinia@^3.0.0 ant-design-vue@^4.2.6 @ant-design/icons-vue@^7.0.0
35
+ ```
31
36
 
32
37
  ```json
33
38
  {
34
39
  "vue": "^3.3.4",
35
40
  "vue-router": "^4.0.0",
36
- "ant-design-vue": "^4.2.6",
37
- "@ant-design/icons-vue": "^7.0.0",
38
41
  "pinia": "^3.0.0",
39
- "pinia-plugin-persistedstate": "^4.0.0"
42
+ "ant-design-vue": "^4.2.6",
43
+ "@ant-design/icons-vue": "^7.0.0"
40
44
  }
41
45
  ```
42
46
 
47
+ ### 可选依赖
48
+
49
+ | 依赖 | 说明 |
50
+ |------|------|
51
+ | `pinia-plugin-persistedstate` | 标签页状态持久化,不传则状态在页面刷新后丢失 |
52
+
53
+ **说明**:本库不会将依赖打包到构建产物中,而是通过函数参数从宿主应用接收实例,避免版本冲突和重复打包。
54
+
43
55
  ## 快速开始
44
56
 
45
57
  ### 1. 定义路由配置
@@ -75,23 +87,47 @@ import Antd from 'ant-design-vue';
75
87
  import 'ant-design-vue/dist/reset.css';
76
88
  import App from './App.vue';
77
89
  import { routes } from './router';
78
- import SharedLayoutComponents from 'shared-layout-components';
90
+
91
+ // 导入对等依赖模块
92
+ import * as VueRouter from 'vue-router';
93
+ import * as pinia from 'pinia';
94
+ import piniaPluginPersistedstate from 'pinia-plugin-persistedstate';
95
+
96
+ // 导入组件库
97
+ import { createSharedLayout } from 'shared-layout-components';
79
98
 
80
99
  const app = createApp(App);
81
100
 
82
- // 使用组件库,传入路由配置
83
- // 组件库会自动创建和管理路由、Pinia 实例
84
- app.use(SharedLayoutComponents, { routes });
85
- app.use(Antd);
101
+ // 创建并安装 Pinia(宿主应用自行管理)
102
+ const piniaInstance = pinia.createPinia();
103
+ piniaInstance.use(piniaPluginPersistedstate);
104
+ app.use(piniaInstance);
105
+
106
+ // 创建并安装 Vue Router(宿主应用自行管理)
107
+ const router = VueRouter.createRouter({
108
+ history: VueRouter.createWebHistory(),
109
+ routes
110
+ });
111
+ app.use(router);
112
+
113
+ // 使用组件库,传入宿主应用的依赖实例
114
+ const sharedLayout = createSharedLayout({
115
+ pinia, // 传入 pinia 模块
116
+ piniaPluginPersistedstate, // 传入持久化插件
117
+ router, // 传入已创建的路由实例
118
+ vueRouter: VueRouter // 传入 vue-router 模块
119
+ });
120
+ app.use(sharedLayout);
86
121
 
122
+ app.use(Antd);
87
123
  app.mount('#app');
88
124
  ```
89
125
 
90
126
  **说明**:
91
- - 组件库会自动创建和管理路由实例
92
- - 自动初始化 Pinia 并配置持久化插件
93
- - 无需手动创建 router 和 pinia
94
- - 只需提供路由配置即可
127
+ - 宿主应用需要自行创建并安装 router 和 pinia 实例
128
+ - 将依赖模块通过参数传递给组件库
129
+ - 组件库通过注入机制将依赖提供给内部组件使用
130
+ - 这种方式避免了依赖重复打包和版本冲突
95
131
 
96
132
  ### 3. 使用 PageLayout 组件
97
133
 
@@ -141,6 +177,19 @@ const menuData = ref([
141
177
 
142
178
  ## API
143
179
 
180
+ ### createSharedLayout(options)
181
+
182
+ 创建组件库插件,需要在宿主应用中调用。
183
+
184
+ | 参数 | 说明 | 类型 | 必需 |
185
+ | --- | --- | --- | --- |
186
+ | pinia | Pinia 模块(`import * as pinia from 'pinia'`) | `Object` | 是 |
187
+ | piniaPluginPersistedstate | Pinia 持久化插件 | `Object` | 否 |
188
+ | router | 已创建的 Vue Router 实例 | `Object` | 否 |
189
+ | vueRouter | Vue Router 模块(`import * as VueRouter from 'vue-router'`) | `Object` | 否 |
190
+ | routes | 路由配置数组(如未传入 router 则需要) | `Array` | 否 |
191
+ | routerOptions | 路由选项 | `Object` | 否 |
192
+
144
193
  ### PageLayout Props
145
194
 
146
195
  | 参数 | 说明 | 类型 | 默认值 |
@@ -227,11 +276,12 @@ const tab = {
227
276
 
228
277
  ## 状态管理
229
278
 
230
- 组件内部使用 Pinia 管理标签页状态,通过 `useTabsStore` 可访问:
279
+ 组件内部使用 Pinia 管理标签页状态,通过 `getStores` 可访问:
231
280
 
232
281
  ```js
233
- import { useTabsStore } from 'shared-layout-components';
282
+ import { getStores } from 'shared-layout-components';
234
283
 
284
+ const { useTabsStore } = getStores();
235
285
  const tabsStore = useTabsStore();
236
286
 
237
287
  // 获取当前标签页列表
@@ -261,6 +311,7 @@ npm run build
261
311
 
262
312
  ```bash
263
313
  # 构建并发布
314
+ npm run prepublishOnly
264
315
  npm publish
265
316
  ```
266
317
 
package/dist/index.esm.js CHANGED
@@ -1 +1 @@
1
- import{createPinia as e,defineStore as t}from"pinia";import{default as n}from"pinia-plugin-persistedstate";import{Fragment as a,computed as r,createBlock as u,createCommentVNode as i,createElementBlock as o,createElementVNode as l,createVNode as c,normalizeClass as s,openBlock as f,ref as d,renderList as b,renderSlot as v,resolveComponent as y,toDisplayString as m,unref as p,watch as h,withCtx as A,withModifiers as g}from"vue";import{EnvironmentOutlined as T,LeftOutlined as k,RightOutlined as w}from"@ant-design/icons-vue";import{createRouter as S,createWebHistory as C}from"vue-router";var D={262(e,t){t.A=(e,t)=>{const n=e.__vccOpts||e;for(const[e,a]of t)n[e]=a;return n}}},E={};function O(e){var t=E[e];if(void 0!==t)return t.exports;var n=E[e]={exports:{}};return D[e](n,n.exports,O),n.exports}function K(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=B(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 u,i=!0,o=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){o=!0,u=e},f:function(){try{i||null==n.return||n.return()}finally{if(o)throw u}}}}function B(e,t){if(e){if("string"==typeof e)return L(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)?L(e,t):void 0}}function L(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}O.d=(e,t)=>{for(var n in t)O.o(t,n)&&!O.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},O.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var P={class:"system-title"},x={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,t){var n=t.expose,a=t.emit,i=e,b=a,v=(r(function(){return i.systemTitle}),d(i.collapsed)),A=d([]),g=d([]);h(function(){return i.collapsed},function(e){v.value=e}),h(v,function(e){b("update:collapsed",e)}),h(function(){return i.activeKey},function(e){if(e){A.value=[e];var t=function(e,n){var a,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,u=K(e);try{for(u.s();!(a=u.n()).done;){var i=a.value;if(i.key===n)return r;if(i.children){var o=t(i.children,n,i.key);if(null!==o)return o}}}catch(e){u.e(e)}finally{u.f()}return null},n=i.menuData.length>0?i.menuData:T,a=t(n,e);a&&!g.value.includes(a)&&(g.value=[].concat(function(e){if(Array.isArray(e))return L(e)}(r=g.value)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(r)||B(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=[],S=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=S(e.children)),t})},C=r(function(){var e=i.menuData.length>0?i.menuData:T;return S(e)}),D=function(){v.value=!v.value},E=function(e){var t=e.key,n=(e.item,function(e,t){var a,r=K(e);try{for(r.s();!(a=r.n()).done;){var u=a.value;if(u.key===t)return u;if(u.children){var i=n(u.children,t);if(i)return i}}}catch(e){r.e(e)}finally{r.f()}return null}),a=i.menuData.length>0?i.menuData:T,r=n(a,t);r&&(b("menu-click",r),b("update:activeKey",t))},O=function(e){g.value=e};return h(A,function(e){if(e.length>0){var t=e[0];b("update:activeKey",t)}},{immediate:!1}),n({toggleCollapse:D,expandMenu:function(e){g.value.includes(e)||g.value.push(e)},collapseMenu:function(e){var t=g.value.indexOf(e);t>-1&&g.value.splice(t,1)}}),function(e,t){var n=y("a-menu");return f(),o("div",{class:s(["sidebar",{collapsed:v.value}])},[l("div",P,[l("h1",null,m(i.systemTitle),1)]),l("div",x,[c(n,{selectedKeys:A.value,"onUpdate:selectedKeys":t[0]||(t[0]=function(e){return A.value=e}),openKeys:g.value,"onUpdate:openKeys":t[1]||(t[1]=function(e){return g.value=e}),mode:"inline","inline-collapsed":v.value,items:C.value,onClick:E,onOpenChange:O},null,8,["selectedKeys","openKeys","inline-collapsed","items"])]),l("div",{class:"collapse-btn",onClick:D},[v.value?(f(),u(p(w),{key:1})):(f(),u(p(k),{key:0}))])],2)}}};var V=O(262);const I=(0,V.A)(R,[["__scopeId","data-v-3166c85e"]]);var U={class:"tabs-wrapper"},j={class:"tabs-container"},M=["onClick"],N={class:"tab-title"},J=["onClick"];const Z=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,u=e,c=n,v=d(u.activeTab),y=[],p=r(function(){return u.tabs.length>0?u.tabs:y});return h(function(){return u.activeTab},function(e){e&&e!==v.value&&(v.value=e)},{immediate:!0}),h(p,function(e){e.length>0&&!v.value&&!u.activeTab&&(v.value=e[0].key,c("update:activeTab",e[0].key))},{immediate:!0}),function(e,t){return f(),o("div",U,[l("div",j,[(f(!0),o(a,null,b(p.value,function(e){return f(),o("div",{key:e.key,class:s(["tab-item",{active:v.value===e.key}]),onClick:function(t){return function(e){v.value=e.key,c("update:activeTab",e.key),c("tab-click",e)}(e)}},[l("span",N,m(e.title),1),!1!==e.closable&&p.value.length>1?(f(),o("span",{key:0,class:"tab-close",onClick:g(function(t){return function(e){c("tab-close",e)}(e)},["stop"])}," × ",8,J)):i("",!0)],10,M)}),128))])])}}}),F=(0,V.A)(Z,[["__scopeId","data-v-dca4842a"]]);var W={class:"breadcrumb-wrapper"},z={class:"breadcrumb-content"},Q={key:0,class:"breadcrumb-current"},Y=["onClick"],X={class:"breadcrumb-extra"};const q=Object.assign({name:"BreadCrumb"},{__name:"BreadCrumb",props:{items:{type:Array,default:function(){return[]}}},emits:["click"],setup:function(e,t){var n=t.emit,i=e,s=n,d=r(function(){return i.items.length>0?i.items:[]});return function(e,t){var n=y("a-breadcrumb-item"),r=y("a-breadcrumb");return f(),o("div",W,[l("div",z,[c(p(T),{class:"breadcrumb-icon"}),c(r,null,{default:A(function(){return[(f(!0),o(a,null,b(d.value,function(e,t){return f(),u(n,{key:t},{default:A(function(){return[t===d.value.length-1?(f(),o("span",Q,m(e.title),1)):(f(),o("a",{key:1,onClick:function(n){return function(e,t){s("click",{item:e,index:t})}(e,t)}},m(e.title),9,Y))]}),_:2},1024)}),128))]}),_:1})]),l("div",X,[v(e.$slots,"default")])])}}}),G=(0,V.A)(q,[["__scopeId","data-v-06ed9d84"]]);var H=t("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}});function _(e){return _="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},_(e)}function $(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 ee(e,t,n){return(t=function(e){var t=function(e){if("object"!=_(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=_(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==_(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var te=null,ne=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return te=S(function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?$(Object(n),!0).forEach(function(t){ee(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):$(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({history:C(t.basePath||""),routes:e},t)),te},ae=function(){return te},re=function(){return te?te.currentRoute:null};function ue(e){return function(e){if(Array.isArray(e))return le(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||oe(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 ie(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=oe(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 u,i=!0,o=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){o=!0,u=e},f:function(){try{i||null==n.return||n.return()}finally{if(o)throw u}}}}function oe(e,t){if(e){if("string"==typeof e)return le(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)?le(e,t):void 0}}function le(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 ce={key:1,class:"page-layout--breadcrumb"},se={class:"page-layout--content"};const fe=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,s=e,b=a,m=ae(),p=re(),g=null,T=function(){return g||(g=H()),g},k=d(!1),w=r({get:function(){return T().currentTab},set:function(e){T().currentTab=e}}),S=r(function(){return T().tabs});h(function(){return s.defaultTabs},function(e){e&&e.length>0&&e.forEach(function(e){T().addTab(e,!1)})},{immediate:!1,deep:!0});var C=r(function(){return T().currentTabData}),D=function(e,t){var n,a=ie(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 u=D(r.children,t);if(u)return u}}}catch(e){a.e(e)}finally{a.f()}return null},E=function(e,t){var n,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],r=ie(e);try{for(r.s();!(n=r.n()).done;){var u=n.value;if(u.key===t)return[].concat(ue(a),[{title:u.title||u.label,path:u.path,key:u.key}]);if(u.children&&u.children.length>0){var i=E(u.children,t,[].concat(ue(a),[{title:u.title||u.label,path:u.path,key:u.key}]));if(i)return i}}}catch(e){r.e(e)}finally{r.f()}return null},O=function(e,t){var n,a=ie(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 u=O(r.children,t);if(u)return u}}}catch(e){a.e(e)}finally{a.f()}return null};h(function(){var e;return null==p||null===(e=p.value)||void 0===e?void 0:e.path},function(e){if(s.enableRouterSync&&e&&"/"!==e){var t=D(s.menuData,e);t&&V(t)}},{immediate:!0});var K=r(function(){if(w.value===s.homeBreadcrumb.key)return[s.homeBreadcrumb];if(s.menuData&&s.menuData.length>0){var e=E(s.menuData,w.value);if(e)return e}var t=S.value.find(function(e){return e.key===w.value});return t?[s.homeBreadcrumb,{title:t.title,key:t.key}]:[s.homeBreadcrumb]}),B=function(e){b("menu-click",e),s.autoAddTab&&(T().addTab({key:e.key,title:e.title||e.label,closable:!0,path:e.path}),b("update:activeTab",e.key)),console.log("router",m),console.log("item.path",e.path),s.enableRouterSync&&m&&e.path&&m.push(e.path)},L=function(e){if(T().setCurrentTab(e),b("update:activeTab",e),b("tab-change",e),s.enableRouterSync&&m){var t=S.value.find(function(t){return t.key===e});console.log("tab",t),null!=t&&t.path&&m.push(t.path)}},P=function(e){b("tab-click",e)},x=function(e){if(T().removeTab(e.key),b("update:activeTab",w.value),b("tab-close",e),s.enableRouterSync&&m){var t=T().currentTabData;null!=t&&t.path&&m.push(t.path)}},R=function(e){b("breadcrumb-click",e)},V=function(e){var t=O(s.menuData,e);t&&s.autoAddTab&&(T().addTab({key:t.key,title:t.title||t.label,closable:!0,path:t.path}),b("update:activeTab",e))};return n({addTab:function(e){T().addTab(e),b("update:activeTab",e.key)},removeTab:function(e){T().removeTab(e),b("update:activeTab",w.value)},getCurrentTab:function(){return T().currentTabData},addTabByMenuKey:V,findMenuItem:O,findMenuKeyByPath:D,tabsList:S,currentTab:w,currentTabData:C,breadcrumbList:K,clearTabs:function(){return T().clearTabs()}}),function(t,n){var a=y("a-layout-sider"),r=y("a-layout");return f(),u(r,{class:"page-layout"},{default:A(function(){return[c(a,{class:"page-layout--sider"},{default:A(function(){return[v(t.$slots,"sidebar",{},function(){return[e.showSidebar?(f(),u(I,{key:0,collapsed:k.value,"onUpdate:collapsed":n[0]||(n[0]=function(e){return k.value=e}),menuData:e.menuData,systemTitle:e.systemTitle,activeKey:w.value,onMenuClick:B},null,8,["collapsed","menuData","systemTitle","activeKey"])):i("",!0)]})]}),_:3}),c(r,{class:"page-layout--main"},{default:A(function(){return[e.showTabs?v(t.$slots,"tabs",{key:0,tabs:S.value,activeTab:w.value},function(){return[c(F,{tabs:S.value,activeTab:w.value,"onUpdate:activeTab":L,onTabClick:P,onTabClose:x},null,8,["tabs","activeTab"])]}):i("",!0),e.showBreadcrumb?(f(),o("div",ce,[c(G,{items:K.value,onClick:R},{default:A(function(){return[v(t.$slots,"breadcrumbExtra",{},function(){return[n[1]||(n[1]=l("div",{class:"breadcrumb-extra"},[l("div",{class:"extra-item"},[l("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:""}),l("p",null,"AI助手")]),l("div",{class:"extra-item"},[l("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:""}),l("p",null,"帮助文档")])],-1))]})]}),_:3},8,["items"])])):i("",!0),l("div",se,[v(t.$slots,"default",{activeTab:w.value,tabData:C.value})])]}),_:3})]}),_:3})}}}),de=(0,V.A)(fe,[["__scopeId","data-v-4483cf27"]]);var be=[de,I,G,F],ve=function(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!ve.installed){if(ve.installed=!0,!t.config.globalProperties.$pinia){var r=function(){var t=e();return t.use(n),t}();t.use(r)}if(a.routes&&a.routes.length>0){var u=ne(a.routes,a.routerOptions||{});t.use(u)}be.forEach(function(e){t.component(e.name,e)})}};"undefined"!=typeof window&&window.Vue&&ve(window.Vue);const ye={install:ve,PageLayout:de,SidebarLayout:I,BreadCrumb:G,Tabs:F};export{G as BreadCrumb,de as PageLayout,I as SidebarLayout,F as Tabs,ne as createAppRouter,ye as default,re as getCurrentRoute,ae as getRouter,H as useTabsStore};
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};
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("pinia"),require("pinia-plugin-persistedstate"),require("vue"),require("vue-router")):"function"==typeof define&&define.amd?define(["@ant-design/icons-vue","pinia","pinia-plugin-persistedstate","vue","vue-router"],t):"object"==typeof exports?exports.SharedLayoutComponents=t(require("@ant-design/icons-vue"),require("pinia"),require("pinia-plugin-persistedstate"),require("vue"),require("vue-router")):e.SharedLayoutComponents=t(e.icons,e.pinia,e.piniaPluginPersistedstate,e.Vue,e.VueRouter)}(this,(e,t,n,r,a)=>(()=>{"use strict";var o={262(e,t){t.A=(e,t)=>{const n=e.__vccOpts||e;for(const[e,r]of t)n[e]=r;return n}},166(t){t.exports=e},144(e){e.exports=t},282(e){e.exports=n},594(e){e.exports=r},269(e){e.exports=a}},u={};function i(e){var t=u[e];if(void 0!==t)return t.exports;var n=u[e]={exports:{}};return o[e](n,n.exports,i),n.exports}i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var l={};i.d(l,{default:()=>_});var c=i(144),s=i(282),d=i.n(s),f=i(594),p=i(166);function m(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=v(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}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 v(e,t){if(e){if("string"==typeof e)return b(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)?b(e,t):void 0}}function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var y={class:"system-title"},h={class:"menu-wrapper"};const g={__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,r=t.emit,a=e,o=r,u=((0,f.computed)(function(){return a.systemTitle}),(0,f.ref)(a.collapsed)),i=(0,f.ref)([]),l=(0,f.ref)([]);(0,f.watch)(function(){return a.collapsed},function(e){u.value=e}),(0,f.watch)(u,function(e){o("update:collapsed",e)}),(0,f.watch)(function(){return a.activeKey},function(e){if(e){i.value=[e];var t=function(e,n){var r,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,o=m(e);try{for(o.s();!(r=o.n()).done;){var u=r.value;if(u.key===n)return a;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=a.menuData.length>0?a.menuData:c,r=t(n,e);r&&!l.value.includes(r)&&(l.value=[].concat(function(e){if(Array.isArray(e))return b(e)}(o=l.value)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(o)||v(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.")}(),[r]))}var o},{immediate:!0});var c=[],s=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=s(e.children)),t})},d=(0,f.computed)(function(){var e=a.menuData.length>0?a.menuData:c;return s(e)}),g=function(){u.value=!u.value},k=function(e){var t=e.key,n=(e.item,function(e,t){var r,a=m(e);try{for(a.s();!(r=a.n()).done;){var o=r.value;if(o.key===t)return o;if(o.children){var u=n(o.children,t);if(u)return u}}}catch(e){a.e(e)}finally{a.f()}return null}),r=a.menuData.length>0?a.menuData:c,u=n(r,t);u&&(o("menu-click",u),o("update:activeKey",t))},A=function(e){l.value=e};return(0,f.watch)(i,function(e){if(e.length>0){var t=e[0];o("update:activeKey",t)}},{immediate:!1}),n({toggleCollapse:g,expandMenu:function(e){l.value.includes(e)||l.value.push(e)},collapseMenu:function(e){var t=l.value.indexOf(e);t>-1&&l.value.splice(t,1)}}),function(e,t){var n=(0,f.resolveComponent)("a-menu");return(0,f.openBlock)(),(0,f.createElementBlock)("div",{class:(0,f.normalizeClass)(["sidebar",{collapsed:u.value}])},[(0,f.createElementVNode)("div",y,[(0,f.createElementVNode)("h1",null,(0,f.toDisplayString)(a.systemTitle),1)]),(0,f.createElementVNode)("div",h,[(0,f.createVNode)(n,{selectedKeys:i.value,"onUpdate:selectedKeys":t[0]||(t[0]=function(e){return i.value=e}),openKeys:l.value,"onUpdate:openKeys":t[1]||(t[1]=function(e){return l.value=e}),mode:"inline","inline-collapsed":u.value,items:d.value,onClick:k,onOpenChange:A},null,8,["selectedKeys","openKeys","inline-collapsed","items"])]),(0,f.createElementVNode)("div",{class:"collapse-btn",onClick:g},[u.value?((0,f.openBlock)(),(0,f.createBlock)((0,f.unref)(p.RightOutlined),{key:1})):((0,f.openBlock)(),(0,f.createBlock)((0,f.unref)(p.LeftOutlined),{key:0}))])],2)}}};var k=i(262);const A=(0,k.A)(g,[["__scopeId","data-v-3166c85e"]]);var T={class:"tabs-wrapper"},w={class:"tabs-container"},S=["onClick"],E={class:"tab-title"},B=["onClick"];const C=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,r=e,a=n,o=(0,f.ref)(r.activeTab),u=[],i=(0,f.computed)(function(){return r.tabs.length>0?r.tabs:u});return(0,f.watch)(function(){return r.activeTab},function(e){e&&e!==o.value&&(o.value=e)},{immediate:!0}),(0,f.watch)(i,function(e){e.length>0&&!o.value&&!r.activeTab&&(o.value=e[0].key,a("update:activeTab",e[0].key))},{immediate:!0}),function(e,t){return(0,f.openBlock)(),(0,f.createElementBlock)("div",T,[(0,f.createElementVNode)("div",w,[((0,f.openBlock)(!0),(0,f.createElementBlock)(f.Fragment,null,(0,f.renderList)(i.value,function(e){return(0,f.openBlock)(),(0,f.createElementBlock)("div",{key:e.key,class:(0,f.normalizeClass)(["tab-item",{active:o.value===e.key}]),onClick:function(t){return function(e){o.value=e.key,a("update:activeTab",e.key),a("tab-click",e)}(e)}},[(0,f.createElementVNode)("span",E,(0,f.toDisplayString)(e.title),1),!1!==e.closable&&i.value.length>1?((0,f.openBlock)(),(0,f.createElementBlock)("span",{key:0,class:"tab-close",onClick:(0,f.withModifiers)(function(t){return function(e){a("tab-close",e)}(e)},["stop"])}," × ",8,B)):(0,f.createCommentVNode)("",!0)],10,S)}),128))])])}}}),V=(0,k.A)(C,[["__scopeId","data-v-dca4842a"]]);var D={class:"breadcrumb-wrapper"},x={class:"breadcrumb-content"},N={key:0,class:"breadcrumb-current"},O=["onClick"],L={class:"breadcrumb-extra"};const K=Object.assign({name:"BreadCrumb"},{__name:"BreadCrumb",props:{items:{type:Array,default:function(){return[]}}},emits:["click"],setup:function(e,t){var n=t.emit,r=e,a=n,o=(0,f.computed)(function(){return r.items.length>0?r.items:[]});return function(e,t){var n=(0,f.resolveComponent)("a-breadcrumb-item"),r=(0,f.resolveComponent)("a-breadcrumb");return(0,f.openBlock)(),(0,f.createElementBlock)("div",D,[(0,f.createElementVNode)("div",x,[(0,f.createVNode)((0,f.unref)(p.EnvironmentOutlined),{class:"breadcrumb-icon"}),(0,f.createVNode)(r,null,{default:(0,f.withCtx)(function(){return[((0,f.openBlock)(!0),(0,f.createElementBlock)(f.Fragment,null,(0,f.renderList)(o.value,function(e,t){return(0,f.openBlock)(),(0,f.createBlock)(n,{key:t},{default:(0,f.withCtx)(function(){return[t===o.value.length-1?((0,f.openBlock)(),(0,f.createElementBlock)("span",N,(0,f.toDisplayString)(e.title),1)):((0,f.openBlock)(),(0,f.createElementBlock)("a",{key:1,onClick:function(n){return function(e,t){a("click",{item:e,index:t})}(e,t)}},(0,f.toDisplayString)(e.title),9,O))]}),_:2},1024)}),128))]}),_:1})]),(0,f.createElementVNode)("div",L,[(0,f.renderSlot)(e.$slots,"default")])])}}}),P=(0,k.A)(K,[["__scopeId","data-v-06ed9d84"]]);var R=(0,c.defineStore)("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,r=Math.min(t,this.tabs.length-1);this.currentTab=(null===(n=this.tabs[r])||void 0===n?void 0:n.key)||""}},setCurrentTab:function(e){this.currentTab=e},clearTabs:function(){this.tabs=[],this.currentTab=""}},persist:{storage:sessionStorage}}),j=i(269);function I(e){return I="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},I(e)}function U(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function M(e,t,n){return(t=function(e){var t=function(e){if("object"!=I(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=I(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==I(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var q=null;function J(e){return function(e){if(Array.isArray(e))return z(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||F(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 Z(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=F(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}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 F(e,t){if(e){if("string"==typeof e)return z(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)?z(e,t):void 0}}function z(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var W={key:1,class:"page-layout--breadcrumb"},Q={class:"page-layout--content"};const Y=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,r=t.emit,a=e,o=r,u=q,i=q?q.currentRoute:null,l=null,c=function(){return l||(l=R()),l},s=(0,f.ref)(!1),d=(0,f.computed)({get:function(){return c().currentTab},set:function(e){c().currentTab=e}}),p=(0,f.computed)(function(){return c().tabs});(0,f.watch)(function(){return a.defaultTabs},function(e){e&&e.length>0&&e.forEach(function(e){c().addTab(e,!1)})},{immediate:!1,deep:!0});var m=(0,f.computed)(function(){return c().currentTabData}),v=function(e,t){var n,r=Z(e);try{for(r.s();!(n=r.n()).done;){var a=n.value;if(a.path===t)return a.key;if(a.children&&a.children.length>0){var o=v(a.children,t);if(o)return o}}}catch(e){r.e(e)}finally{r.f()}return null},b=function(e,t){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],a=Z(e);try{for(a.s();!(n=a.n()).done;){var o=n.value;if(o.key===t)return[].concat(J(r),[{title:o.title||o.label,path:o.path,key:o.key}]);if(o.children&&o.children.length>0){var u=b(o.children,t,[].concat(J(r),[{title:o.title||o.label,path:o.path,key:o.key}]));if(u)return u}}}catch(e){a.e(e)}finally{a.f()}return null},y=function(e,t){var n,r=Z(e);try{for(r.s();!(n=r.n()).done;){var a=n.value;if(a.key===t)return a;if(a.children&&a.children.length>0){var o=y(a.children,t);if(o)return o}}}catch(e){r.e(e)}finally{r.f()}return null};(0,f.watch)(function(){var e;return null==i||null===(e=i.value)||void 0===e?void 0:e.path},function(e){if(a.enableRouterSync&&e&&"/"!==e){var t=v(a.menuData,e);t&&E(t)}},{immediate:!0});var h=(0,f.computed)(function(){if(d.value===a.homeBreadcrumb.key)return[a.homeBreadcrumb];if(a.menuData&&a.menuData.length>0){var e=b(a.menuData,d.value);if(e)return e}var t=p.value.find(function(e){return e.key===d.value});return t?[a.homeBreadcrumb,{title:t.title,key:t.key}]:[a.homeBreadcrumb]}),g=function(e){o("menu-click",e),a.autoAddTab&&(c().addTab({key:e.key,title:e.title||e.label,closable:!0,path:e.path}),o("update:activeTab",e.key)),console.log("router",u),console.log("item.path",e.path),a.enableRouterSync&&u&&e.path&&u.push(e.path)},k=function(e){if(c().setCurrentTab(e),o("update:activeTab",e),o("tab-change",e),a.enableRouterSync&&u){var t=p.value.find(function(t){return t.key===e});console.log("tab",t),null!=t&&t.path&&u.push(t.path)}},T=function(e){o("tab-click",e)},w=function(e){if(c().removeTab(e.key),o("update:activeTab",d.value),o("tab-close",e),a.enableRouterSync&&u){var t=c().currentTabData;null!=t&&t.path&&u.push(t.path)}},S=function(e){o("breadcrumb-click",e)},E=function(e){var t=y(a.menuData,e);t&&a.autoAddTab&&(c().addTab({key:t.key,title:t.title||t.label,closable:!0,path:t.path}),o("update:activeTab",e))};return n({addTab:function(e){c().addTab(e),o("update:activeTab",e.key)},removeTab:function(e){c().removeTab(e),o("update:activeTab",d.value)},getCurrentTab:function(){return c().currentTabData},addTabByMenuKey:E,findMenuItem:y,findMenuKeyByPath:v,tabsList:p,currentTab:d,currentTabData:m,breadcrumbList:h,clearTabs:function(){return c().clearTabs()}}),function(t,n){var r=(0,f.resolveComponent)("a-layout-sider"),a=(0,f.resolveComponent)("a-layout");return(0,f.openBlock)(),(0,f.createBlock)(a,{class:"page-layout"},{default:(0,f.withCtx)(function(){return[(0,f.createVNode)(r,{class:"page-layout--sider"},{default:(0,f.withCtx)(function(){return[(0,f.renderSlot)(t.$slots,"sidebar",{},function(){return[e.showSidebar?((0,f.openBlock)(),(0,f.createBlock)(A,{key:0,collapsed:s.value,"onUpdate:collapsed":n[0]||(n[0]=function(e){return s.value=e}),menuData:e.menuData,systemTitle:e.systemTitle,activeKey:d.value,onMenuClick:g},null,8,["collapsed","menuData","systemTitle","activeKey"])):(0,f.createCommentVNode)("",!0)]})]}),_:3}),(0,f.createVNode)(a,{class:"page-layout--main"},{default:(0,f.withCtx)(function(){return[e.showTabs?(0,f.renderSlot)(t.$slots,"tabs",{key:0,tabs:p.value,activeTab:d.value},function(){return[(0,f.createVNode)(V,{tabs:p.value,activeTab:d.value,"onUpdate:activeTab":k,onTabClick:T,onTabClose:w},null,8,["tabs","activeTab"])]}):(0,f.createCommentVNode)("",!0),e.showBreadcrumb?((0,f.openBlock)(),(0,f.createElementBlock)("div",W,[(0,f.createVNode)(P,{items:h.value,onClick:S},{default:(0,f.withCtx)(function(){return[(0,f.renderSlot)(t.$slots,"breadcrumbExtra",{},function(){return[n[1]||(n[1]=(0,f.createElementVNode)("div",{class:"breadcrumb-extra"},[(0,f.createElementVNode)("div",{class:"extra-item"},[(0,f.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,f.createElementVNode)("p",null,"AI助手")]),(0,f.createElementVNode)("div",{class:"extra-item"},[(0,f.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,f.createElementVNode)("p",null,"帮助文档")])],-1))]})]}),_:3},8,["items"])])):(0,f.createCommentVNode)("",!0),(0,f.createElementVNode)("div",Q,[(0,f.renderSlot)(t.$slots,"default",{activeTab:d.value,tabData:m.value})])]}),_:3})]}),_:3})}}}),X=(0,k.A)(Y,[["__scopeId","data-v-4483cf27"]]);var G=[X,A,P,V],H=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!H.installed){if(H.installed=!0,!e.config.globalProperties.$pinia){var n=function(){var e=(0,c.createPinia)();return e.use(d()),e}();e.use(n)}if(t.routes&&t.routes.length>0){var r=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return q=(0,j.createRouter)(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){M(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:(0,j.createWebHistory)(t.basePath||""),routes:e},t)),q}(t.routes,t.routerOptions||{});e.use(r)}G.forEach(function(t){e.component(t.name,t)})}};"undefined"!=typeof window&&window.Vue&&H(window.Vue);const _={install:H,PageLayout:X,SidebarLayout:A,BreadCrumb:P,Tabs:V};return l.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:()=>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})());
package/dist/styles.css CHANGED
@@ -231,12 +231,12 @@
231
231
  color: #B3B3B3;
232
232
  }
233
233
 
234
- .page-layout[data-v-4483cf27] {
234
+ .page-layout[data-v-1e044ec7] {
235
235
  height: 100%;
236
236
  background-color: #F5F7FA;
237
237
  overflow: hidden;
238
238
  }
239
- .page-layout .page-layout--sider[data-v-4483cf27] {
239
+ .page-layout .page-layout--sider[data-v-1e044ec7] {
240
240
  width: auto !important;
241
241
  max-width: none !important;
242
242
  min-width: auto !important;
@@ -245,23 +245,23 @@
245
245
  height: 100%;
246
246
  overflow-y: auto;
247
247
  }
248
- .page-layout .page-layout--main[data-v-4483cf27] {
248
+ .page-layout .page-layout--main[data-v-1e044ec7] {
249
249
  display: flex;
250
250
  flex-direction: column;
251
251
  height: 100%;
252
252
  background: #FFFFFF;
253
253
  overflow: hidden;
254
254
  }
255
- .page-layout .page-layout--breadcrumb[data-v-4483cf27] {
255
+ .page-layout .page-layout--breadcrumb[data-v-1e044ec7] {
256
256
  flex-shrink: 0;
257
257
  padding: 0 24px;
258
258
  background: #fff;
259
259
  }
260
- .page-layout .page-layout--breadcrumb .breadcrumb-extra[data-v-4483cf27] {
260
+ .page-layout .page-layout--breadcrumb .breadcrumb-extra[data-v-1e044ec7] {
261
261
  display: flex;
262
262
  align-items: center;
263
263
  }
264
- .page-layout .page-layout--breadcrumb .breadcrumb-extra .extra-item[data-v-4483cf27] {
264
+ .page-layout .page-layout--breadcrumb .breadcrumb-extra .extra-item[data-v-1e044ec7] {
265
265
  display: flex;
266
266
  align-items: center;
267
267
  font-size: 12px;
@@ -270,15 +270,15 @@
270
270
  margin-left: 10px;
271
271
  cursor: pointer;
272
272
  }
273
- .page-layout .page-layout--breadcrumb .breadcrumb-extra .extra-item img[data-v-4483cf27] {
273
+ .page-layout .page-layout--breadcrumb .breadcrumb-extra .extra-item img[data-v-1e044ec7] {
274
274
  width: 12px;
275
275
  height: 12px;
276
276
  margin-right: 3px;
277
277
  }
278
- .page-layout .page-layout--breadcrumb .breadcrumb-extra .extra-item p[data-v-4483cf27] {
278
+ .page-layout .page-layout--breadcrumb .breadcrumb-extra .extra-item p[data-v-1e044ec7] {
279
279
  margin-bottom: 0;
280
280
  }
281
- .page-layout .page-layout--content[data-v-4483cf27] {
281
+ .page-layout .page-layout--content[data-v-1e044ec7] {
282
282
  flex: 1;
283
283
  overflow: auto;
284
284
  padding: 0;
package/package.json CHANGED
@@ -1 +1,76 @@
1
- {"name":"shared-layout-components","version":"1.0.15","description":"基于 Vue3 和 Ant Design Vue 的公共布局组件库","main":"dist/index.umd.js","module":"dist/index.esm.js","unpkg":"dist/index.umd.js","jsdelivr":"dist/index.umd.js","types":"dist/types/index.d.ts","keywords":["vue3","components","layout","ant-design-vue","sidebar","tabs","breadcrumb","admin"],"author":"","license":"MIT","files":["dist","README.md"],"scripts":{"build":"cross-env NODE_ENV=production webpack --config webpack.config.js","dev":"webpack serve --config webpack.dev.config.js","lint":"eslint src/**/*.{js,vue}","prepublishOnly":"npx rimraf dist && npm run build"},"peerDependencies":{"@ant-design/icons-vue":"^7.0.0","ant-design-vue":"^4.2.6","vue":"^3.3.4","vue-router":"^4.0.0","pinia":"^3.0.4","pinia-plugin-persistedstate":"^4.0.0"},"devDependencies":{"@ant-design/icons-vue":"^7.0.0","@babel/core":"^7.23.5","@babel/preset-env":"^7.23.5","ant-design-vue":"^4.2.6","babel-loader":"^9.1.3","core-js":"^3.33.3","cross-env":"^7.0.3","css-loader":"^6.8.1","html-webpack-plugin":"^5.6.6","less":"^4.2.0","less-loader":"^11.1.4","mini-css-extract-plugin":"^2.7.6","pinia":"^3.0.4","pinia-plugin-persistedstate":"^4.7.1","style-loader":"^3.3.3","vue":"^3.3.4","vue-loader":"^17.3.1","vue-router":"^4.6.4","webpack":"^5.89.0","webpack-cli":"^5.1.4","webpack-dev-server":"^4.15.1"},"repository":{"type":"git","url":""},"bugs":{"url":""},"homepage":""}
1
+ {
2
+ "name": "shared-layout-components",
3
+ "version": "1.0.16",
4
+ "description": "基于 Vue3 和 Ant Design Vue 的公共布局组件库",
5
+ "main": "dist/index.umd.js",
6
+ "module": "dist/index.esm.js",
7
+ "unpkg": "dist/index.umd.js",
8
+ "jsdelivr": "dist/index.umd.js",
9
+ "types": "dist/types/index.d.ts",
10
+ "keywords": [
11
+ "vue3",
12
+ "components",
13
+ "layout",
14
+ "ant-design-vue",
15
+ "sidebar",
16
+ "tabs",
17
+ "breadcrumb",
18
+ "admin"
19
+ ],
20
+ "author": "",
21
+ "license": "MIT",
22
+ "files": [
23
+ "dist",
24
+ "README.md"
25
+ ],
26
+ "scripts": {
27
+ "build": "cross-env NODE_ENV=production webpack --config webpack.config.js",
28
+ "dev": "webpack serve --config webpack.dev.config.js",
29
+ "lint": "eslint src/**/*.{js,vue}",
30
+ "prepublishOnly": "npx rimraf dist && npm run build"
31
+ },
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
+ "@ant-design/icons-vue": "^7.0.0",
38
+ "pinia-plugin-persistedstate": "^4.0.0"
39
+ },
40
+ "peerDependenciesMeta": {
41
+ "pinia-plugin-persistedstate": {
42
+ "optional": true
43
+ }
44
+ },
45
+ "devDependencies": {
46
+ "@ant-design/icons-vue": "^7.0.0",
47
+ "@babel/core": "^7.23.5",
48
+ "@babel/preset-env": "^7.23.5",
49
+ "ant-design-vue": "^4.2.6",
50
+ "babel-loader": "^9.1.3",
51
+ "core-js": "^3.33.3",
52
+ "cross-env": "^7.0.3",
53
+ "css-loader": "^6.8.1",
54
+ "html-webpack-plugin": "^5.6.6",
55
+ "less": "^4.2.0",
56
+ "less-loader": "^11.1.4",
57
+ "mini-css-extract-plugin": "^2.7.6",
58
+ "pinia": "^3.0.4",
59
+ "pinia-plugin-persistedstate": "^4.7.1",
60
+ "style-loader": "^3.3.3",
61
+ "vue": "^3.3.4",
62
+ "vue-loader": "^17.3.1",
63
+ "vue-router": "^4.6.4",
64
+ "webpack": "^5.89.0",
65
+ "webpack-cli": "^5.1.4",
66
+ "webpack-dev-server": "^4.15.1"
67
+ },
68
+ "repository": {
69
+ "type": "git",
70
+ "url": ""
71
+ },
72
+ "bugs": {
73
+ "url": ""
74
+ },
75
+ "homepage": ""
76
+ }