vft 0.0.16 → 0.0.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. package/dist/index.css +1 -1
  2. package/es/component.mjs +21 -11
  3. package/es/component.mjs.map +1 -1
  4. package/es/components/back-top/back-top.vue2.mjs +16 -11
  5. package/es/components/back-top/back-top.vue2.mjs.map +1 -1
  6. package/es/components/context-menu/context-menu.vue2.mjs +26 -21
  7. package/es/components/context-menu/context-menu.vue2.mjs.map +1 -1
  8. package/es/components/footer-layout/footer-layout.vue.d.ts +13 -0
  9. package/es/components/footer-layout/footer-layout.vue.mjs +5 -0
  10. package/es/components/footer-layout/footer-layout.vue.mjs.map +1 -0
  11. package/es/components/footer-layout/footer-layout.vue2.mjs +51 -0
  12. package/es/components/footer-layout/footer-layout.vue2.mjs.map +1 -0
  13. package/es/components/footer-layout/index.d.ts +12 -0
  14. package/es/components/footer-layout/index.mjs +11 -0
  15. package/es/components/footer-layout/index.mjs.map +1 -0
  16. package/es/components/footer-layout/style/css.d.ts +0 -0
  17. package/es/components/footer-layout/style/css.mjs +3 -0
  18. package/es/components/footer-layout/style/css.mjs.map +1 -0
  19. package/es/components/footer-layout/style/index.d.ts +0 -0
  20. package/es/components/footer-layout/style/index.mjs +3 -0
  21. package/es/components/footer-layout/style/index.mjs.map +1 -0
  22. package/es/components/header-layout/header-layout.vue.d.ts +14 -0
  23. package/es/components/header-layout/header-layout.vue.mjs +5 -0
  24. package/es/components/header-layout/header-layout.vue.mjs.map +1 -0
  25. package/es/components/header-layout/header-layout.vue2.mjs +52 -0
  26. package/es/components/header-layout/header-layout.vue2.mjs.map +1 -0
  27. package/es/components/header-layout/index.d.ts +12 -0
  28. package/es/components/header-layout/index.mjs +11 -0
  29. package/es/components/header-layout/index.mjs.map +1 -0
  30. package/es/components/header-layout/style/css.d.ts +0 -0
  31. package/es/components/header-layout/style/css.mjs +3 -0
  32. package/es/components/header-layout/style/css.mjs.map +1 -0
  33. package/es/components/header-layout/style/index.d.ts +0 -0
  34. package/es/components/header-layout/style/index.mjs +3 -0
  35. package/es/components/header-layout/style/index.mjs.map +1 -0
  36. package/es/components/iframe-layout/iframe-layout.vue.d.ts +14 -0
  37. package/es/components/iframe-layout/iframe-layout.vue.mjs +5 -0
  38. package/es/components/iframe-layout/iframe-layout.vue.mjs.map +1 -0
  39. package/es/components/iframe-layout/iframe-layout.vue2.mjs +41 -0
  40. package/es/components/iframe-layout/iframe-layout.vue2.mjs.map +1 -0
  41. package/es/components/iframe-layout/iframe-page.vue.d.ts +13 -0
  42. package/es/components/iframe-layout/iframe-page.vue.mjs +5 -0
  43. package/es/components/iframe-layout/iframe-page.vue.mjs.map +1 -0
  44. package/es/components/iframe-layout/iframe-page.vue2.mjs +29 -0
  45. package/es/components/iframe-layout/iframe-page.vue2.mjs.map +1 -0
  46. package/es/components/iframe-layout/index.d.ts +12 -0
  47. package/es/components/iframe-layout/index.mjs +11 -0
  48. package/es/components/iframe-layout/index.mjs.map +1 -0
  49. package/es/components/iframe-layout/style/css.d.ts +0 -0
  50. package/es/components/iframe-layout/style/css.mjs +3 -0
  51. package/es/components/iframe-layout/style/css.mjs.map +1 -0
  52. package/es/components/iframe-layout/style/index.d.ts +0 -0
  53. package/es/components/iframe-layout/style/index.mjs +3 -0
  54. package/es/components/iframe-layout/style/index.mjs.map +1 -0
  55. package/es/components/index.d.ts +5 -0
  56. package/es/components/index.mjs +49 -39
  57. package/es/components/index.mjs.map +1 -1
  58. package/es/components/logo/index.d.ts +29 -0
  59. package/es/components/logo/index.mjs +11 -0
  60. package/es/components/logo/index.mjs.map +1 -0
  61. package/es/components/logo/logo.vue.d.ts +29 -0
  62. package/es/components/logo/logo.vue.mjs +5 -0
  63. package/es/components/logo/logo.vue.mjs.map +1 -0
  64. package/es/components/logo/logo.vue2.mjs +47 -0
  65. package/es/components/logo/logo.vue2.mjs.map +1 -0
  66. package/es/components/logo/style/css.d.ts +0 -0
  67. package/es/components/logo/style/css.mjs +3 -0
  68. package/es/components/logo/style/css.mjs.map +1 -0
  69. package/es/components/logo/style/index.d.ts +0 -0
  70. package/es/components/logo/style/index.mjs +3 -0
  71. package/es/components/logo/style/index.mjs.map +1 -0
  72. package/es/components/logo/types.d.ts +6 -0
  73. package/es/components/logo/types.mjs +2 -0
  74. package/es/components/logo/types.mjs.map +1 -0
  75. package/es/components/menu/menu-item.vue2.mjs +17 -12
  76. package/es/components/menu/menu-item.vue2.mjs.map +1 -1
  77. package/es/components/menu/sub-menu.vue2.mjs +32 -27
  78. package/es/components/menu/sub-menu.vue2.mjs.map +1 -1
  79. package/es/components/multiple-tabs/multiple-tabs.vue2.mjs +7 -2
  80. package/es/components/multiple-tabs/multiple-tabs.vue2.mjs.map +1 -1
  81. package/es/components/multiple-tabs/tab-content.vue2.mjs +12 -7
  82. package/es/components/multiple-tabs/tab-content.vue2.mjs.map +1 -1
  83. package/es/components/result/result.vue2.mjs +17 -12
  84. package/es/components/result/result.vue2.mjs.map +1 -1
  85. package/es/components/router-view-content/index.d.ts +52 -0
  86. package/es/components/router-view-content/index.mjs +11 -0
  87. package/es/components/router-view-content/index.mjs.map +1 -0
  88. package/es/components/router-view-content/router-view-content.vue.d.ts +54 -0
  89. package/es/components/router-view-content/router-view-content.vue.mjs +5 -0
  90. package/es/components/router-view-content/router-view-content.vue.mjs.map +1 -0
  91. package/es/components/router-view-content/router-view-content.vue2.mjs +58 -0
  92. package/es/components/router-view-content/router-view-content.vue2.mjs.map +1 -0
  93. package/es/components/tabs/tab-nav.vue2.mjs +7 -2
  94. package/es/components/tabs/tab-nav.vue2.mjs.map +1 -1
  95. package/es/index.mjs +97 -87
  96. package/es/index.mjs.map +1 -1
  97. package/es/package.json.mjs +1 -1
  98. package/es/style.css +1 -1
  99. package/es/theme-style/src/footer-layout.scss.mjs +5 -0
  100. package/es/theme-style/src/footer-layout.scss.mjs.map +1 -0
  101. package/es/theme-style/src/header-layout.scss.mjs +5 -0
  102. package/es/theme-style/src/header-layout.scss.mjs.map +1 -0
  103. package/es/theme-style/src/iframe-layout.scss.mjs +5 -0
  104. package/es/theme-style/src/iframe-layout.scss.mjs.map +1 -0
  105. package/es/theme-style/src/logo.scss.mjs +5 -0
  106. package/es/theme-style/src/logo.scss.mjs.map +1 -0
  107. package/lib/component.js +1 -1
  108. package/lib/component.js.map +1 -1
  109. package/lib/components/back-top/back-top.vue2.js +1 -1
  110. package/lib/components/back-top/back-top.vue2.js.map +1 -1
  111. package/lib/components/context-menu/context-menu.vue2.js +1 -1
  112. package/lib/components/context-menu/context-menu.vue2.js.map +1 -1
  113. package/lib/components/footer-layout/footer-layout.vue.d.ts +13 -0
  114. package/lib/components/footer-layout/footer-layout.vue.js +2 -0
  115. package/lib/components/footer-layout/footer-layout.vue.js.map +1 -0
  116. package/lib/components/footer-layout/footer-layout.vue2.js +2 -0
  117. package/lib/components/footer-layout/footer-layout.vue2.js.map +1 -0
  118. package/lib/components/footer-layout/index.d.ts +12 -0
  119. package/lib/components/footer-layout/index.js +2 -0
  120. package/lib/components/footer-layout/index.js.map +1 -0
  121. package/lib/components/footer-layout/style/css.d.ts +0 -0
  122. package/lib/components/footer-layout/style/css.js +2 -0
  123. package/lib/components/footer-layout/style/css.js.map +1 -0
  124. package/lib/components/footer-layout/style/index.d.ts +0 -0
  125. package/lib/components/footer-layout/style/index.js +2 -0
  126. package/lib/components/footer-layout/style/index.js.map +1 -0
  127. package/lib/components/header-layout/header-layout.vue.d.ts +14 -0
  128. package/lib/components/header-layout/header-layout.vue.js +2 -0
  129. package/lib/components/header-layout/header-layout.vue.js.map +1 -0
  130. package/lib/components/header-layout/header-layout.vue2.js +2 -0
  131. package/lib/components/header-layout/header-layout.vue2.js.map +1 -0
  132. package/lib/components/header-layout/index.d.ts +12 -0
  133. package/lib/components/header-layout/index.js +2 -0
  134. package/lib/components/header-layout/index.js.map +1 -0
  135. package/lib/components/header-layout/style/css.d.ts +0 -0
  136. package/lib/components/header-layout/style/css.js +2 -0
  137. package/lib/components/header-layout/style/css.js.map +1 -0
  138. package/lib/components/header-layout/style/index.d.ts +0 -0
  139. package/lib/components/header-layout/style/index.js +2 -0
  140. package/lib/components/header-layout/style/index.js.map +1 -0
  141. package/lib/components/iframe-layout/iframe-layout.vue.d.ts +14 -0
  142. package/lib/components/iframe-layout/iframe-layout.vue.js +2 -0
  143. package/lib/components/iframe-layout/iframe-layout.vue.js.map +1 -0
  144. package/lib/components/iframe-layout/iframe-layout.vue2.js +2 -0
  145. package/lib/components/iframe-layout/iframe-layout.vue2.js.map +1 -0
  146. package/lib/components/iframe-layout/iframe-page.vue.d.ts +13 -0
  147. package/lib/components/iframe-layout/iframe-page.vue.js +2 -0
  148. package/lib/components/iframe-layout/iframe-page.vue.js.map +1 -0
  149. package/lib/components/iframe-layout/iframe-page.vue2.js +2 -0
  150. package/lib/components/iframe-layout/iframe-page.vue2.js.map +1 -0
  151. package/lib/components/iframe-layout/index.d.ts +12 -0
  152. package/lib/components/iframe-layout/index.js +2 -0
  153. package/lib/components/iframe-layout/index.js.map +1 -0
  154. package/lib/components/iframe-layout/style/css.d.ts +0 -0
  155. package/lib/components/iframe-layout/style/css.js +2 -0
  156. package/lib/components/iframe-layout/style/css.js.map +1 -0
  157. package/lib/components/iframe-layout/style/index.d.ts +0 -0
  158. package/lib/components/iframe-layout/style/index.js +2 -0
  159. package/lib/components/iframe-layout/style/index.js.map +1 -0
  160. package/lib/components/index.d.ts +5 -0
  161. package/lib/components/index.js +1 -1
  162. package/lib/components/logo/index.d.ts +29 -0
  163. package/lib/components/logo/index.js +2 -0
  164. package/lib/components/logo/index.js.map +1 -0
  165. package/lib/components/logo/logo.vue.d.ts +29 -0
  166. package/lib/components/logo/logo.vue.js +2 -0
  167. package/lib/components/logo/logo.vue.js.map +1 -0
  168. package/lib/components/logo/logo.vue2.js +2 -0
  169. package/lib/components/logo/logo.vue2.js.map +1 -0
  170. package/lib/components/logo/style/css.d.ts +0 -0
  171. package/lib/components/logo/style/css.js +2 -0
  172. package/lib/components/logo/style/css.js.map +1 -0
  173. package/lib/components/logo/style/index.d.ts +0 -0
  174. package/lib/components/logo/style/index.js +2 -0
  175. package/lib/components/logo/style/index.js.map +1 -0
  176. package/lib/components/logo/types.d.ts +6 -0
  177. package/lib/components/logo/types.js +2 -0
  178. package/lib/components/logo/types.js.map +1 -0
  179. package/lib/components/menu/menu-item.vue2.js +1 -1
  180. package/lib/components/menu/menu-item.vue2.js.map +1 -1
  181. package/lib/components/menu/sub-menu.vue2.js +1 -1
  182. package/lib/components/menu/sub-menu.vue2.js.map +1 -1
  183. package/lib/components/multiple-tabs/multiple-tabs.vue2.js +1 -1
  184. package/lib/components/multiple-tabs/multiple-tabs.vue2.js.map +1 -1
  185. package/lib/components/multiple-tabs/tab-content.vue2.js +1 -1
  186. package/lib/components/multiple-tabs/tab-content.vue2.js.map +1 -1
  187. package/lib/components/result/result.vue2.js +1 -1
  188. package/lib/components/result/result.vue2.js.map +1 -1
  189. package/lib/components/router-view-content/index.d.ts +52 -0
  190. package/lib/components/router-view-content/index.js +2 -0
  191. package/lib/components/router-view-content/index.js.map +1 -0
  192. package/lib/components/router-view-content/router-view-content.vue.d.ts +54 -0
  193. package/lib/components/router-view-content/router-view-content.vue.js +2 -0
  194. package/lib/components/router-view-content/router-view-content.vue.js.map +1 -0
  195. package/lib/components/router-view-content/router-view-content.vue2.js +2 -0
  196. package/lib/components/router-view-content/router-view-content.vue2.js.map +1 -0
  197. package/lib/components/tabs/tab-nav.vue2.js +1 -1
  198. package/lib/components/tabs/tab-nav.vue2.js.map +1 -1
  199. package/lib/index.js +1 -1
  200. package/lib/index.js.map +1 -1
  201. package/lib/package.json.js +1 -1
  202. package/lib/theme-style/src/footer-layout.scss.js +2 -0
  203. package/lib/theme-style/src/footer-layout.scss.js.map +1 -0
  204. package/lib/theme-style/src/header-layout.scss.js +2 -0
  205. package/lib/theme-style/src/header-layout.scss.js.map +1 -0
  206. package/lib/theme-style/src/iframe-layout.scss.js +2 -0
  207. package/lib/theme-style/src/iframe-layout.scss.js.map +1 -0
  208. package/lib/theme-style/src/logo.scss.js +2 -0
  209. package/lib/theme-style/src/logo.scss.js.map +1 -0
  210. package/package.json +1 -1
  211. package/theme-style/index.css +1 -1
  212. package/theme-style/src/footer-layout.scss +34 -0
  213. package/theme-style/src/header-layout.scss +38 -0
  214. package/theme-style/src/iframe-layout.scss +8 -0
  215. package/theme-style/src/index.scss +4 -0
  216. package/theme-style/src/logo.scss +34 -0
  217. package/theme-style/vft-footer-layout.css +1 -0
  218. package/theme-style/vft-header-layout.css +1 -0
  219. package/theme-style/vft-iframe-layout.css +1 -0
  220. package/theme-style/vft-logo.css +1 -0
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("../../utils/vue/install.js");require("vue");require("@vue/shared");require("@vft/utils");const r=require("./iframe-layout.vue2.js"),e=t.withInstall(r.default);exports.VftIframeLayout=e;exports.default=e;
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../packages/components/iframe-layout/index.ts"],"sourcesContent":["import { withInstall } from '@vft-ui/utils'\n\nimport IframeLayout from './iframe-layout.vue'\n\nexport const VftIframeLayout = withInstall(IframeLayout)\n\nexport default VftIframeLayout\n"],"names":["VftIframeLayout","withInstall","IframeLayout"],"mappings":"iQAIaA,EAAkBC,cAAYC,EAAY,OAAA"}
File without changes
@@ -0,0 +1,2 @@
1
+ "use strict";require("vft/theme-style/base.css");require("vft/theme-style/vft-iframe-layout.css");
2
+ //# sourceMappingURL=css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"css.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
File without changes
@@ -0,0 +1,2 @@
1
+ "use strict";require("../../../theme-style/src/base.scss.js");require("../../../theme-style/src/iframe-layout.scss.js");
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -12,3 +12,8 @@ export * from './popover';
12
12
  export * from './menu';
13
13
  export * from './context-menu';
14
14
  export * from './multiple-tabs';
15
+ export * from './header-layout';
16
+ export * from './footer-layout';
17
+ export * from './iframe-layout';
18
+ export * from './router-view-content';
19
+ export * from './logo';
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./divider/index.js"),u=require("./icon/index.js"),i=require("./avatar/index.js"),s=require("./empty/index.js"),f=require("./result/index.js"),a=require("./exception/index.js"),t=require("./tabs/index.js"),p=require("./popper/index.js"),c=require("./collapse-transition/index.js"),V=require("./tooltip/index.js"),x=require("./popover/index.js"),e=require("./menu/index.js"),n=require("./context-menu/createContextMenu.js"),d=require("./context-menu/useContextMenu.js"),l=require("./multiple-tabs/index.js"),q=require("./empty/constants.js"),T=require("./tabs/types.js"),b=require("./popper/arrow.vue2.js"),_=require("./popper/trigger.vue2.js"),M=require("./popper/content.vue2.js"),y=require("./multiple-tabs/use/use-tab-dropdown.js"),r=require("./multiple-tabs/use/use-multiple-tabs.js");exports.VftDivider=o.VftDivider;exports.VftIcon=u.VftIcon;exports.VftAvatar=i.VftAvatar;exports.VftEmpty=s.VftEmpty;exports.VftResult=f.VftResult;exports.VftException=a.VftException;exports.VftTabPane=t.VftTabPane;exports.VftTabs=t.VftTabs;exports.VftPopper=p.VftPopper;exports.VftCollapseTransition=c.VftCollapseTransition;exports.VftTooltip=V.VftTooltip;exports.VftPopover=x.VftPopover;exports.VftMenu=e.VftMenu;exports.VftMenuItem=e.VftMenuItem;exports.VftMenuItemGroup=e.VftMenuItemGroup;exports.VftSubMenu=e.VftSubMenu;exports.createContextMenu=n.createContextMenu;exports.destroyContextMenu=n.destroyContextMenu;exports.useContextMenu=d.useContextMenu;exports.VftMultipleTabs=l.VftMultipleTabs;exports.EmptyEnum=q.EmptyEnum;exports.TabsRootContextKey=T.TabsRootContextKey;exports.VftPopperArrow=b.default;exports.VftPopperTrigger=_.default;exports.VftPopperContent=M.default;exports.useTabDropdown=y.useTabDropdown;exports.initAffixTabs=r.initAffixTabs;exports.useTabsDrag=r.useTabsDrag;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./divider/index.js"),u=require("./icon/index.js"),i=require("./avatar/index.js"),s=require("./empty/index.js"),f=require("./result/index.js"),a=require("./exception/index.js"),t=require("./tabs/index.js"),V=require("./popper/index.js"),c=require("./collapse-transition/index.js"),p=require("./tooltip/index.js"),d=require("./popover/index.js"),e=require("./menu/index.js"),r=require("./context-menu/createContextMenu.js"),x=require("./context-menu/useContextMenu.js"),q=require("./multiple-tabs/index.js"),l=require("./header-layout/index.js"),T=require("./footer-layout/index.js"),b=require("./iframe-layout/index.js"),_=require("./router-view-content/index.js"),y=require("./logo/index.js"),M=require("./empty/constants.js"),$=require("./tabs/types.js"),C=require("./popper/arrow.vue2.js"),g=require("./popper/trigger.vue2.js"),m=require("./popper/content.vue2.js"),v=require("./multiple-tabs/use/use-tab-dropdown.js"),n=require("./multiple-tabs/use/use-multiple-tabs.js");exports.VftDivider=o.VftDivider;exports.VftIcon=u.VftIcon;exports.VftAvatar=i.VftAvatar;exports.VftEmpty=s.VftEmpty;exports.VftResult=f.VftResult;exports.VftException=a.VftException;exports.VftTabPane=t.VftTabPane;exports.VftTabs=t.VftTabs;exports.VftPopper=V.VftPopper;exports.VftCollapseTransition=c.VftCollapseTransition;exports.VftTooltip=p.VftTooltip;exports.VftPopover=d.VftPopover;exports.VftMenu=e.VftMenu;exports.VftMenuItem=e.VftMenuItem;exports.VftMenuItemGroup=e.VftMenuItemGroup;exports.VftSubMenu=e.VftSubMenu;exports.createContextMenu=r.createContextMenu;exports.destroyContextMenu=r.destroyContextMenu;exports.useContextMenu=x.useContextMenu;exports.VftMultipleTabs=q.VftMultipleTabs;exports.VftHeaderLayout=l.VftHeaderLayout;exports.VftFooterLayout=T.VftFooterLayout;exports.VftIframeLayout=b.VftIframeLayout;exports.VftRouterViewContent=_.VftRouterViewContent;exports.VftLogo=y.VftLogo;exports.EmptyEnum=M.EmptyEnum;exports.TabsRootContextKey=$.TabsRootContextKey;exports.VftPopperArrow=C.default;exports.VftPopperTrigger=g.default;exports.VftPopperContent=m.default;exports.useTabDropdown=v.useTabDropdown;exports.initAffixTabs=n.initAffixTabs;exports.useTabsDrag=n.useTabsDrag;
2
2
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,29 @@
1
+ export declare const VftLogo: import("vft/es/utils").SFCWithInstall<import("vue").DefineComponent<{
2
+ title: {
3
+ type: import("vue").PropType<string>;
4
+ required: true;
5
+ };
6
+ logo: {
7
+ type: import("vue").PropType<string>;
8
+ required: true;
9
+ };
10
+ jumpPath: {
11
+ type: import("vue").PropType<string | undefined>;
12
+ required: false;
13
+ };
14
+ }, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
15
+ title: {
16
+ type: import("vue").PropType<string>;
17
+ required: true;
18
+ };
19
+ logo: {
20
+ type: import("vue").PropType<string>;
21
+ required: true;
22
+ };
23
+ jumpPath: {
24
+ type: import("vue").PropType<string | undefined>;
25
+ required: false;
26
+ };
27
+ }>>, {}>> & Record<string, any>;
28
+ export default VftLogo;
29
+ export * from './types';
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("../../utils/vue/install.js");require("vue");require("@vue/shared");require("@vft/utils");const r=require("./logo.vue2.js"),e=t.withInstall(r.default);exports.VftLogo=e;exports.default=e;
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../packages/components/logo/index.ts"],"sourcesContent":["import { withInstall } from '@vft-ui/utils';\n\nimport Logo from './logo.vue';\n\nexport const VftLogo = withInstall(Logo);\nexport default VftLogo;\n\nexport * from './types';\n"],"names":["VftLogo","withInstall","Logo"],"mappings":"wPAIaA,EAAUC,cAAYC,EAAI,OAAA"}
@@ -0,0 +1,29 @@
1
+ import type { PropType as __PropType } from 'vue';
2
+ declare const _sfc_main: import("vue").DefineComponent<{
3
+ title: {
4
+ type: __PropType<string>;
5
+ required: true;
6
+ };
7
+ logo: {
8
+ type: __PropType<string>;
9
+ required: true;
10
+ };
11
+ jumpPath: {
12
+ type: __PropType<string | undefined>;
13
+ required: false;
14
+ };
15
+ }, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
16
+ title: {
17
+ type: __PropType<string>;
18
+ required: true;
19
+ };
20
+ logo: {
21
+ type: __PropType<string>;
22
+ required: true;
23
+ };
24
+ jumpPath: {
25
+ type: __PropType<string | undefined>;
26
+ required: false;
27
+ };
28
+ }>>, {}>;
29
+ export default _sfc_main;
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./logo.vue2.js");exports.default=e.default;
2
+ //# sourceMappingURL=logo.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logo.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),s=require("@vft/router"),i=require("../../hooks/use-namespace/index.js");require("@popperjs/core");require("lodash");require("../../hooks/use-z-index/index.js");require("@vueuse/core");require("@vue/shared");require("@vft/utils");const c=["src"],o=i.useNamespace("logo"),a=e.defineComponent({name:o.b()}),m=e.defineComponent({...a,props:{title:null,logo:null,jumpPath:null},setup(t){const l=e.computed(()=>[o.b()]),{go:n}=s.useRouterHelper();function r(){t.jumpPath&&n(t.jumpPath)}const u=e.computed(()=>t.jumpPath?{}:o.cssVarBlock({cursor:"inital"}));return(d,g)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(l)),onClick:r,style:e.normalizeStyle(e.unref(u))},[e.createElementVNode("img",{class:e.normalizeClass(e.unref(o).e("img")),src:t.logo,alt:""},null,10,c),e.createElementVNode("div",{class:e.normalizeClass(["ml-2 truncate",e.unref(o).e("title")])},e.toDisplayString(t.title),3)],6))}});exports.default=m;
2
+ //# sourceMappingURL=logo.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logo.vue2.js","sources":["../../../../../packages/components/logo/logo.vue"],"sourcesContent":["<script lang=\"ts\">\nconst ns = /* hoist-static*/ useNamespace('logo')\n\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n\tname: ns.b()\n});</script>\n<script lang=\"ts\" setup>\nimport { computed } from 'vue';\nimport { useRouterHelper } from '@vft/router';\nimport { useNamespace } from '@vft-ui/hooks';\n\ninterface LogoProps {\n title: string;\n logo: string;\n /** 点击 logo 跳转路径 */\n jumpPath?: string;\n}\n\ndefineProps({\n \"title\": null,\n \"logo\": null,\n \"jumpPath\": null\n})\n\n\n\n;\n\nconst getLogoClass = computed(() => [ns.b()]);\n\nconst { go } = useRouterHelper();\n\nfunction onClickLogo () {\n if (__props.jumpPath) {\n go(__props.jumpPath);\n }\n}\n\nconst logoVars = computed(() => __props.jumpPath ? {} : ns.cssVarBlock({ cursor: 'inital' }));\n</script>\n\n<template>\n <div :class=\"getLogoClass\" @click=\"onClickLogo\" :style=\"logoVars\">\n <img :class=\"ns.e('img')\" :src=\"logo\" alt=\"\" />\n <div class=\"ml-2 truncate\" :class=\"ns.e('title')\">{{ title }}</div>\n </div>\n</template>\n"],"names":["ns","useNamespace","__default__","DO_defineComponent","getLogoClass","computed","go","useRouterHelper","onClickLogo","__props","logoVars"],"mappings":"yXACMA,EAAuBC,EAAAA,aAAa,MAAM,EAGhDC,EAA6BC,EAAAA,gBAAmB,CAC/C,KAAMH,EAAG,EAAE,CACZ,CAAC,gFAuBD,MAAMI,EAAeC,EAAAA,SAAS,IAAM,CAACL,EAAG,EAAG,CAAA,CAAC,EAEtC,CAAE,GAAAM,GAAOC,EAAAA,kBAEf,SAASC,GAAe,CAClBC,EAAQ,UACVH,EAAGG,EAAQ,QAAQ,CAEvB,CAEA,MAAMC,EAAWL,EAAAA,SAAS,IAAMI,EAAQ,SAAW,CAAA,EAAKT,EAAG,YAAY,CAAE,OAAQ,QAAA,CAAU,CAAC"}
File without changes
@@ -0,0 +1,2 @@
1
+ "use strict";require("vft/theme-style/base.css");require("vft/theme-style/vft-logo.css");
2
+ //# sourceMappingURL=css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"css.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
File without changes
@@ -0,0 +1,2 @@
1
+ "use strict";require("../../../theme-style/src/base.scss.js");require("../../../theme-style/src/logo.scss.js");
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ export interface LogoProps {
2
+ title: string;
3
+ logo: string;
4
+ /** 点击 logo 跳转路径 */
5
+ jumpPath?: string;
6
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),u=require("@vft/utils");require("@vue/shared");const x=require("../../utils/error.js"),c=require("../../hooks/use-namespace/index.js");require("@popperjs/core");require("lodash");require("../../hooks/use-z-index/index.js");require("@vueuse/core");const A=require("./use-menu.js"),y=require("../divider/index.js"),U=require("../icon/index.js");require("../avatar/index.js");require("../empty/index.js");require("../result/index.js");require("../exception/index.js");require("../tabs/index.js");require("../popper/index.js");require("../collapse-transition/index.js");const $=require("../tooltip/index.js");require("../popover/index.js");require("./index.js");require("@vft/use");require("../multiple-tabs/index.js");const E=["title"],a=c.useNamespace("menu-item"),I=e.defineComponent({name:a.b()}),S=e.defineComponent({...I,props:{index:null,route:null,disabled:{type:Boolean},icon:null,title:null,isAloneUse:{type:Boolean},divider:{type:Boolean},className:null,reverse:{type:Boolean}},emits:["click"],setup(n,{emit:C}){const s=e.getCurrentInstance(),V=c.useNamespace("menu"),o=c.useNamespace("menu-item"),t=n.isAloneUse?null:e.inject("rootMenu");!t&&!n.isAloneUse&&x.throwError(a.b(),"can not inject root menu");const{parentMenu:d,indexPath:m}=A.default(s,e.computed(()=>n.index)),r=n.isAloneUse?null:e.inject(`subMenu:${d.value.uid}`);!r&&!n.isAloneUse&&x.throwError(a.b(),"can not inject sub menu");const f=e.computed(()=>n.index===(t==null?void 0:t.activeIndex)),i=e.reactive({index:n.index,indexPath:m,active:f}),h=()=>{n.disabled||(t==null||t.handleMenuItemClick({index:n.index,indexPath:m.value,route:n.route}),C("click",i))},k=e.computed(()=>u.singleAttrToObj(n.icon,"icon")),q=e.computed(()=>u.renderTNode(s,"title"));return e.onMounted(()=>{n.isAloneUse||(r==null||r.addSubMenu(i),t==null||t.addMenuItem(i))}),e.onBeforeUnmount(()=>{n.isAloneUse||(r==null||r.removeSubMenu(i),t==null||t.removeMenuItem(i))}),(l,j)=>{var v,B,b,N,g;return e.openBlock(),e.createElementBlock(e.Fragment,null,[n.reverse&&n.divider?(e.openBlock(),e.createBlock(e.unref(y.VftDivider),{key:0,marginY:"0"})):e.createCommentVNode("",!0),e.createElementVNode("li",{class:e.normalizeClass([n.className,e.unref(o).b(),e.unref(o).is("active",n.isAloneUse?!1:e.unref(f)),e.unref(o).is("disabled",n.disabled)]),role:"menuitem",tabindex:"-1",onClick:h},[((B=(v=e.unref(d))==null?void 0:v.type)==null?void 0:B.name)==="vft-menu"&&((b=e.unref(t))!=null&&b.props.collapse)&&l.$slots.title?(e.openBlock(),e.createBlock(e.unref($.VftTooltip),{key:0,placement:"right","fallback-placements":["left"],persistent:""},{content:e.withCtx(()=>[e.renderSlot(l.$slots,"title")]),default:e.withCtx(()=>[e.createElementVNode("div",{class:e.normalizeClass(e.unref(V).be("tooltip","trigger"))},[e.renderSlot(l.$slots,"default")],2)]),_:3})):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[(N=l.$slots)!=null&&N.default?e.renderSlot(l.$slots,"default",{key:0}):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[(g=e.unref(k))!=null&&g.icon?(e.openBlock(),e.createBlock(e.unref(U.VftIcon),e.normalizeProps(e.mergeProps({key:0},e.unref(k))),null,16)):e.createCommentVNode("",!0),e.createElementVNode("span",{title:e.unref(q)},[e.createVNode(e.unref(u.VNode),{content:e.unref(q)},null,8,["content"])],8,E)],64))],64))],2),!n.reverse&&n.divider?(e.openBlock(),e.createBlock(e.unref(y.VftDivider),{key:1,marginY:"0"})):e.createCommentVNode("",!0)],64)}}});exports.default=S;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),u=require("@vft/utils");require("@vue/shared");const x=require("../../utils/error.js"),c=require("../../hooks/use-namespace/index.js");require("@popperjs/core");require("lodash");require("../../hooks/use-z-index/index.js");require("@vueuse/core");const A=require("./use-menu.js"),y=require("../divider/index.js"),U=require("../icon/index.js");require("../avatar/index.js");require("../empty/index.js");require("../result/index.js");require("../exception/index.js");require("../tabs/index.js");require("../popper/index.js");require("../collapse-transition/index.js");const $=require("../tooltip/index.js");require("../popover/index.js");require("./index.js");require("@vft/use");require("../multiple-tabs/index.js");require("../header-layout/index.js");require("../footer-layout/index.js");require("../iframe-layout/index.js");require("../router-view-content/index.js");require("../logo/index.js");const E=["title"],a=c.useNamespace("menu-item"),I=e.defineComponent({name:a.b()}),S=e.defineComponent({...I,props:{index:null,route:null,disabled:{type:Boolean},icon:null,title:null,isAloneUse:{type:Boolean},divider:{type:Boolean},className:null,reverse:{type:Boolean}},emits:["click"],setup(n,{emit:C}){const s=e.getCurrentInstance(),V=c.useNamespace("menu"),o=c.useNamespace("menu-item"),t=n.isAloneUse?null:e.inject("rootMenu");!t&&!n.isAloneUse&&x.throwError(a.b(),"can not inject root menu");const{parentMenu:d,indexPath:m}=A.default(s,e.computed(()=>n.index)),r=n.isAloneUse?null:e.inject(`subMenu:${d.value.uid}`);!r&&!n.isAloneUse&&x.throwError(a.b(),"can not inject sub menu");const f=e.computed(()=>n.index===(t==null?void 0:t.activeIndex)),i=e.reactive({index:n.index,indexPath:m,active:f}),h=()=>{n.disabled||(t==null||t.handleMenuItemClick({index:n.index,indexPath:m.value,route:n.route}),C("click",i))},q=e.computed(()=>u.singleAttrToObj(n.icon,"icon")),k=e.computed(()=>u.renderTNode(s,"title"));return e.onMounted(()=>{n.isAloneUse||(r==null||r.addSubMenu(i),t==null||t.addMenuItem(i))}),e.onBeforeUnmount(()=>{n.isAloneUse||(r==null||r.removeSubMenu(i),t==null||t.removeMenuItem(i))}),(l,j)=>{var v,B,b,N,g;return e.openBlock(),e.createElementBlock(e.Fragment,null,[n.reverse&&n.divider?(e.openBlock(),e.createBlock(e.unref(y.VftDivider),{key:0,marginY:"0"})):e.createCommentVNode("",!0),e.createElementVNode("li",{class:e.normalizeClass([n.className,e.unref(o).b(),e.unref(o).is("active",n.isAloneUse?!1:e.unref(f)),e.unref(o).is("disabled",n.disabled)]),role:"menuitem",tabindex:"-1",onClick:h},[((B=(v=e.unref(d))==null?void 0:v.type)==null?void 0:B.name)==="vft-menu"&&((b=e.unref(t))!=null&&b.props.collapse)&&l.$slots.title?(e.openBlock(),e.createBlock(e.unref($.VftTooltip),{key:0,placement:"right","fallback-placements":["left"],persistent:""},{content:e.withCtx(()=>[e.renderSlot(l.$slots,"title")]),default:e.withCtx(()=>[e.createElementVNode("div",{class:e.normalizeClass(e.unref(V).be("tooltip","trigger"))},[e.renderSlot(l.$slots,"default")],2)]),_:3})):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[(N=l.$slots)!=null&&N.default?e.renderSlot(l.$slots,"default",{key:0}):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[(g=e.unref(q))!=null&&g.icon?(e.openBlock(),e.createBlock(e.unref(U.VftIcon),e.normalizeProps(e.mergeProps({key:0},e.unref(q))),null,16)):e.createCommentVNode("",!0),e.createElementVNode("span",{title:e.unref(k)},[e.createVNode(e.unref(u.VNode),{content:e.unref(k)},null,8,["content"])],8,E)],64))],64))],2),!n.reverse&&n.divider?(e.openBlock(),e.createBlock(e.unref(y.VftDivider),{key:1,marginY:"0"})):e.createCommentVNode("",!0)],64)}}});exports.default=S;
2
2
  //# sourceMappingURL=menu-item.vue2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"menu-item.vue2.js","sources":["../../../../../packages/components/menu/menu-item.vue"],"sourcesContent":["<script lang=\"ts\">\nconst ns = /* hoist-static*/ useNamespace('menu-item')\n\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n name: ns.b()\n});</script>\n<script lang=\"ts\" setup>\nimport { renderTNode, singleAttrToObj, VNode } from '@vft/utils';\nimport { computed, getCurrentInstance, inject, onBeforeUnmount, onMounted, reactive } from 'vue';\nimport { throwError } from '@vft-ui/utils';\nimport { useNamespace } from '@vft-ui/hooks';\nimport { type RouteLocationRaw } from 'vue-router';\nimport useMenu from './use-menu';\nimport { VftIcon as Icon, type IconProps, VftTooltip as Tooltip, VftDivider } from '@vft-ui/components';\n\nimport type { MenuItemRegistered, MenuProvider, SubMenuProvider } from './types';\n\ninterface Props {\n /** 唯一标志 */\n index?: string;\n /** Vue Router 路径对象 */\n route?: RouteLocationRaw;\n /** 是否禁用 */\n disabled?: boolean;\n icon?: IconProps;\n title?: string;\n isAloneUse?: boolean;\n divider?: boolean;\n className?: string\n reverse?: boolean\n}\n\ndefineProps({\n \"index\": null,\n \"route\": null,\n \"disabled\": { type: Boolean, },\n \"icon\": null,\n \"title\": null,\n \"isAloneUse\": { type: Boolean, },\n \"divider\": { type: Boolean, },\n \"className\": null,\n \"reverse\": { type: Boolean, }\n})\n\n\n\nconst emit = defineEmits(['click']);\n\n;\n\nconst instance = getCurrentInstance()!;\n\nconst nsMenu = useNamespace('menu');\n\nconst nsMenuItem = useNamespace('menu-item');\n\n// 获取来自 menu.vue 中注入的数据\nconst rootMenu = !__props.isAloneUse ? inject<MenuProvider>('rootMenu') : null;\nif (!rootMenu && !__props.isAloneUse) throwError(ns.b(), 'can not inject root menu');\n\n// indexPath:当前 menu-item 对应的 index 和 vft-sub-menu 的 index,parentMenu 为 vft-sub-menu 组件\nconst { parentMenu, indexPath } = useMenu(\n instance,\n computed(() => __props.index!)\n);\n\n// 注入来自 sub-menu 中的 provide 数据\nconst subMenu = !__props.isAloneUse ? inject<SubMenuProvider>(`subMenu:${parentMenu.value.uid}`) : null;\nif (!subMenu && !__props.isAloneUse) throwError(ns.b(), 'can not inject sub menu');\n\n// 当前是否为 active\nconst active = computed(() => __props.index === rootMenu?.activeIndex);\n\nconst item: MenuItemRegistered = reactive({\n index: __props.index!,\n indexPath,\n active\n});\n\n// 点击具体菜单项\nconst handleClick = () => {\n if (!__props.disabled) {\n rootMenu?.handleMenuItemClick({\n index: __props.index!,\n indexPath: indexPath.value,\n route: __props.route\n });\n emit('click', item);\n }\n};\n\nconst _icon = computed(() => {\n return singleAttrToObj(__props.icon, 'icon') as IconProps;\n});\n\nconst title = computed(() => {\n return renderTNode(instance, 'title');\n});\n\nonMounted(() => {\n if (!__props.isAloneUse) {\n // 触发 sub-menu,vue 中的 addSubMenu\n subMenu?.addSubMenu(item);\n // 触发 menu.vue 中的 addMenuItem 更新 items\n rootMenu?.addMenuItem(item);\n }\n});\n\nonBeforeUnmount(() => {\n if (!__props.isAloneUse) {\n subMenu?.removeSubMenu(item);\n rootMenu?.removeMenuItem(item);\n }\n});\n</script>\n\n<template>\n <vft-divider v-if=\"reverse && divider\" marginY=\"0\" />\n <li :class=\"[className, nsMenuItem.b(), nsMenuItem.is('active', isAloneUse ? false : active), nsMenuItem.is('disabled', disabled)]\" role=\"menuitem\" tabindex=\"-1\" @click=\"handleClick\">\n <tooltip\n v-if=\"parentMenu?.type?.name === 'vft-menu' && rootMenu?.props.collapse && $slots.title\"\n placement=\"right\" :fallback-placements=\"['left']\" persistent>\n <template #content>\n <slot name=\"title\" />\n </template>\n <div :class=\"nsMenu.be('tooltip', 'trigger')\">\n <slot />\n </div>\n </tooltip>\n <template v-else>\n <slot v-if=\"$slots?.default\"/>\n <template v-else>\n <Icon v-if=\"_icon?.icon\" v-bind=\"_icon\" />\n <span :title=\"title\"><v-node :content=\"title\" /></span>\n </template>\n </template>\n </li>\n <vft-divider v-if=\"!reverse && divider\" marginY=\"0\" />\n</template>\n"],"names":["ns","useNamespace","__default__","DO_defineComponent","instance","getCurrentInstance","nsMenu","nsMenuItem","rootMenu","__props","inject","throwError","parentMenu","indexPath","useMenu","computed","subMenu","active","item","reactive","handleClick","emit","_icon","singleAttrToObj","title","renderTNode","onMounted","onBeforeUnmount"],"mappings":"g2BACMA,EAAuBC,EAAAA,aAAa,WAAW,EAGrDC,EAA6BC,EAAAA,gBAAmB,CAC9C,KAAMH,EAAG,EAAE,CACb,CAAC,gOA6CD,MAAMI,EAAWC,EAAAA,qBAEXC,EAASL,eAAa,MAAM,EAE5BM,EAAaN,eAAa,WAAW,EAGrCO,EAAYC,EAAQ,WAAgD,KAAnCC,EAAAA,OAAqB,UAAU,EAClE,CAACF,GAAY,CAACC,EAAQ,YAAuBE,EAAAA,WAAAX,EAAG,EAAE,EAAG,0BAA0B,EAG7E,KAAA,CAAE,WAAAY,EAAY,UAAAC,CAAA,EAAcC,EAAA,QAChCV,EACAW,WAAS,IAAMN,EAAQ,KAAM,CAAA,EAIzBO,EAAWP,EAAQ,WAA0E,KAA7DC,EAAAA,OAAwB,WAAWE,EAAW,MAAM,KAAK,EAC3F,CAACI,GAAW,CAACP,EAAQ,YAAuBE,EAAAA,WAAAX,EAAG,EAAE,EAAG,yBAAyB,EAGjF,MAAMiB,EAASF,EAAAA,SAAS,IAAMN,EAAQ,SAAUD,GAAA,YAAAA,EAAU,YAAW,EAE/DU,EAA2BC,EAAAA,SAAS,CACxC,MAAOV,EAAQ,MACf,UAAAI,EACA,OAAAI,CAAA,CACD,EAGKG,EAAc,IAAM,CACnBX,EAAQ,WACXD,GAAA,MAAAA,EAAU,oBAAoB,CAC5B,MAAOC,EAAQ,MACf,UAAWI,EAAU,MACrB,MAAOJ,EAAQ,KAAA,GAEjBY,EAAK,QAASH,CAAI,EACpB,EAGII,EAAQP,EAAAA,SAAS,IACdQ,kBAAgBd,EAAQ,KAAM,MAAM,CAC5C,EAEKe,EAAQT,EAAAA,SAAS,IACdU,EAAA,YAAYrB,EAAU,OAAO,CACrC,EAEDsB,OAAAA,EAAAA,UAAU,IAAM,CACTjB,EAAQ,aAEXO,GAAA,MAAAA,EAAS,WAAWE,GAEpBV,GAAA,MAAAA,EAAU,YAAYU,GACxB,CACD,EAEDS,EAAAA,gBAAgB,IAAM,CACflB,EAAQ,aACXO,GAAA,MAAAA,EAAS,cAAcE,GACvBV,GAAA,MAAAA,EAAU,eAAeU,GAC3B,CACD"}
1
+ {"version":3,"file":"menu-item.vue2.js","sources":["../../../../../packages/components/menu/menu-item.vue"],"sourcesContent":["<script lang=\"ts\">\nconst ns = /* hoist-static*/ useNamespace('menu-item')\n\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n name: ns.b()\n});</script>\n<script lang=\"ts\" setup>\nimport { renderTNode, singleAttrToObj, VNode } from '@vft/utils';\nimport { computed, getCurrentInstance, inject, onBeforeUnmount, onMounted, reactive } from 'vue';\nimport { throwError } from '@vft-ui/utils';\nimport { useNamespace } from '@vft-ui/hooks';\nimport { type RouteLocationRaw } from 'vue-router';\nimport useMenu from './use-menu';\nimport { VftIcon as Icon, type IconProps, VftTooltip as Tooltip, VftDivider } from '@vft-ui/components';\n\nimport type { MenuItemRegistered, MenuProvider, SubMenuProvider } from './types';\n\ninterface Props {\n /** 唯一标志 */\n index?: string;\n /** Vue Router 路径对象 */\n route?: RouteLocationRaw;\n /** 是否禁用 */\n disabled?: boolean;\n icon?: IconProps;\n title?: string;\n isAloneUse?: boolean;\n divider?: boolean;\n className?: string\n reverse?: boolean\n}\n\ndefineProps({\n \"index\": null,\n \"route\": null,\n \"disabled\": { type: Boolean, },\n \"icon\": null,\n \"title\": null,\n \"isAloneUse\": { type: Boolean, },\n \"divider\": { type: Boolean, },\n \"className\": null,\n \"reverse\": { type: Boolean, }\n})\n\n\n\nconst emit = defineEmits(['click']);\n\n;\n\nconst instance = getCurrentInstance()!;\n\nconst nsMenu = useNamespace('menu');\n\nconst nsMenuItem = useNamespace('menu-item');\n\n// 获取来自 menu.vue 中注入的数据\nconst rootMenu = !__props.isAloneUse ? inject<MenuProvider>('rootMenu') : null;\nif (!rootMenu && !__props.isAloneUse) throwError(ns.b(), 'can not inject root menu');\n\n// indexPath:当前 menu-item 对应的 index 和 vft-sub-menu 的 index,parentMenu 为 vft-sub-menu 组件\nconst { parentMenu, indexPath } = useMenu(\n instance,\n computed(() => __props.index!)\n);\n\n// 注入来自 sub-menu 中的 provide 数据\nconst subMenu = !__props.isAloneUse ? inject<SubMenuProvider>(`subMenu:${parentMenu.value.uid}`) : null;\nif (!subMenu && !__props.isAloneUse) throwError(ns.b(), 'can not inject sub menu');\n\n// 当前是否为 active\nconst active = computed(() => __props.index === rootMenu?.activeIndex);\n\nconst item: MenuItemRegistered = reactive({\n index: __props.index!,\n indexPath,\n active\n});\n\n// 点击具体菜单项\nconst handleClick = () => {\n if (!__props.disabled) {\n rootMenu?.handleMenuItemClick({\n index: __props.index!,\n indexPath: indexPath.value,\n route: __props.route\n });\n emit('click', item);\n }\n};\n\nconst _icon = computed(() => {\n return singleAttrToObj(__props.icon, 'icon') as IconProps;\n});\n\nconst title = computed(() => {\n return renderTNode(instance, 'title');\n});\n\nonMounted(() => {\n if (!__props.isAloneUse) {\n // 触发 sub-menu,vue 中的 addSubMenu\n subMenu?.addSubMenu(item);\n // 触发 menu.vue 中的 addMenuItem 更新 items\n rootMenu?.addMenuItem(item);\n }\n});\n\nonBeforeUnmount(() => {\n if (!__props.isAloneUse) {\n subMenu?.removeSubMenu(item);\n rootMenu?.removeMenuItem(item);\n }\n});\n</script>\n\n<template>\n <vft-divider v-if=\"reverse && divider\" marginY=\"0\" />\n <li :class=\"[className, nsMenuItem.b(), nsMenuItem.is('active', isAloneUse ? false : active), nsMenuItem.is('disabled', disabled)]\" role=\"menuitem\" tabindex=\"-1\" @click=\"handleClick\">\n <tooltip\n v-if=\"parentMenu?.type?.name === 'vft-menu' && rootMenu?.props.collapse && $slots.title\"\n placement=\"right\" :fallback-placements=\"['left']\" persistent>\n <template #content>\n <slot name=\"title\" />\n </template>\n <div :class=\"nsMenu.be('tooltip', 'trigger')\">\n <slot />\n </div>\n </tooltip>\n <template v-else>\n <slot v-if=\"$slots?.default\"/>\n <template v-else>\n <Icon v-if=\"_icon?.icon\" v-bind=\"_icon\" />\n <span :title=\"title\"><v-node :content=\"title\" /></span>\n </template>\n </template>\n </li>\n <vft-divider v-if=\"!reverse && divider\" marginY=\"0\" />\n</template>\n"],"names":["ns","useNamespace","__default__","DO_defineComponent","instance","getCurrentInstance","nsMenu","nsMenuItem","rootMenu","__props","inject","throwError","parentMenu","indexPath","useMenu","computed","subMenu","active","item","reactive","handleClick","emit","_icon","singleAttrToObj","title","renderTNode","onMounted","onBeforeUnmount"],"mappings":"shCACMA,EAAuBC,EAAAA,aAAa,WAAW,EAGrDC,EAA6BC,EAAAA,gBAAmB,CAC9C,KAAMH,EAAG,EAAE,CACb,CAAC,gOA6CD,MAAMI,EAAWC,EAAAA,qBAEXC,EAASL,eAAa,MAAM,EAE5BM,EAAaN,eAAa,WAAW,EAGrCO,EAAYC,EAAQ,WAAgD,KAAnCC,EAAAA,OAAqB,UAAU,EAClE,CAACF,GAAY,CAACC,EAAQ,YAAuBE,EAAAA,WAAAX,EAAG,EAAE,EAAG,0BAA0B,EAG7E,KAAA,CAAE,WAAAY,EAAY,UAAAC,CAAA,EAAcC,EAAA,QAChCV,EACAW,WAAS,IAAMN,EAAQ,KAAM,CAAA,EAIzBO,EAAWP,EAAQ,WAA0E,KAA7DC,EAAAA,OAAwB,WAAWE,EAAW,MAAM,KAAK,EAC3F,CAACI,GAAW,CAACP,EAAQ,YAAuBE,EAAAA,WAAAX,EAAG,EAAE,EAAG,yBAAyB,EAGjF,MAAMiB,EAASF,EAAAA,SAAS,IAAMN,EAAQ,SAAUD,GAAA,YAAAA,EAAU,YAAW,EAE/DU,EAA2BC,EAAAA,SAAS,CACxC,MAAOV,EAAQ,MACf,UAAAI,EACA,OAAAI,CAAA,CACD,EAGKG,EAAc,IAAM,CACnBX,EAAQ,WACXD,GAAA,MAAAA,EAAU,oBAAoB,CAC5B,MAAOC,EAAQ,MACf,UAAWI,EAAU,MACrB,MAAOJ,EAAQ,KAAA,GAEjBY,EAAK,QAASH,CAAI,EACpB,EAGII,EAAQP,EAAAA,SAAS,IACdQ,kBAAgBd,EAAQ,KAAM,MAAM,CAC5C,EAEKe,EAAQT,EAAAA,SAAS,IACdU,EAAA,YAAYrB,EAAU,OAAO,CACrC,EAEDsB,OAAAA,EAAAA,UAAU,IAAM,CACTjB,EAAQ,aAEXO,GAAA,MAAAA,EAAS,WAAWE,GAEpBV,GAAA,MAAAA,EAAU,YAAYU,GACxB,CACD,EAEDS,EAAAA,gBAAgB,IAAM,CACflB,EAAQ,aACXO,GAAA,MAAAA,EAAS,cAAcE,GACvBV,GAAA,MAAAA,EAAU,eAAeU,GAC3B,CACD"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue");require("../divider/index.js");const N=require("../icon/index.js");require("../avatar/index.js");require("../empty/index.js");require("../result/index.js");require("../exception/index.js");require("../tabs/index.js");require("../popper/index.js");const Q=require("../collapse-transition/index.js"),W=require("../tooltip/index.js");require("../popover/index.js");require("./index.js");const O=require("@vft/utils");require("@vft/use");require("../multiple-tabs/index.js");const w=require("../../hooks/use-namespace/index.js");require("@popperjs/core");require("lodash");require("../../hooks/use-z-index/index.js");const R=require("@vueuse/core");require("@vue/shared");const D=require("../../utils/error.js"),X=require("./use-menu.js"),Y=require("./use-menu-css-var.js"),y=w.useNamespace("sub-menu"),_=e.defineComponent({name:y.b()}),ee=e.defineComponent({..._,props:{index:null,showTimeout:{default:300},hideTimeout:{default:300},popperClass:null,disabled:{type:Boolean},popperAppendToBody:{type:Boolean,default:void 0},popperOffset:{default:6},expandIcon:{default:{}},collapseIcon:{default:{}},title:null,icon:null,showArrow:{type:Boolean,default:!0},toolTipCfg:null},setup(t,{expose:H}){const v=e.getCurrentInstance(),{indexPath:h,parentMenu:S}=X.default(v,e.computed(()=>t.index)),a=w.useNamespace("menu"),s=w.useNamespace("sub-menu"),o=e.inject("rootMenu");o||D.throwError(y.b(),"can not inject root menu");const r=e.inject(`subMenu:${S.value.uid}`);r||D.throwError(y.b(),"can not inject sub menu");const x=e.ref({});let i;const I=e.ref(!1),L=e.ref(),k=e.ref(null),z=e.computed(()=>d.value==="horizontal"&&b.value?"bottom-start":"right-start"),b=e.computed(()=>r.level===0),g=e.computed(()=>t.popperAppendToBody===void 0?b.value:Boolean(t.popperAppendToBody)),U=e.computed(()=>o.props.collapse?`${a.namespace.value}-zoom-in-left`:`${a.namespace.value}-zoom-in-top`),Z=e.computed(()=>d.value==="horizontal"&&b.value?["bottom-start","bottom-end","top-start","top-end","right-start","left-start"]:["right-start","left-start","bottom-start","bottom-end","top-start","top-end"]),c=e.computed(()=>o.openedMenus.includes(t.index)),m=e.computed(()=>{let n=!1;return Object.values(x.value).forEach(l=>{l.active&&(n=!0)}),t.index===o.activeIndex&&(n=!0),n}),B=e.computed(()=>o.props.backgroundColor||""),A=e.computed(()=>o.props.activeTextColor||""),P=e.computed(()=>o.props.textColor||""),d=e.computed(()=>o.props.mode),M=e.reactive({index:t.index,indexPath:h,active:m}),$=e.computed(()=>d.value!=="horizontal"?{color:P.value}:{borderBottomColor:m.value?o.props.activeTextColor?A.value:"":"transparent",color:m.value?A.value:P.value}),G=()=>{var n,l,u;return(u=(l=(n=k.value)==null?void 0:n.popperRef)==null?void 0:l.popperInstanceRef)==null?void 0:u.destroy()},J=n=>{n||G()},j=()=>{o.props.menuTrigger==="hover"&&o.props.mode==="horizontal"||o.props.collapse&&o.props.mode==="vertical"||t.disabled||o.handleSubMenuClick({index:t.index,indexPath:h.value,active:m.value})},C=(n,l=t.showTimeout)=>{var u;n.type!=="focus"&&(o.props.menuTrigger==="click"&&o.props.mode==="horizontal"||!o.props.collapse&&o.props.mode==="vertical"||t.disabled||(r.mouseInChild.value=!0,i==null||i(),{stop:i}=R.useTimeoutFn(()=>{o.openMenu(t.index,h.value)},l),g.value&&((u=S.value.vnode.el)==null||u.dispatchEvent(new MouseEvent("mouseenter")))))},T=(n=!1)=>{var l,u;o.props.menuTrigger==="click"&&o.props.mode==="horizontal"||!o.props.collapse&&o.props.mode==="vertical"||(i==null||i(),r.mouseInChild.value=!1,{stop:i}=R.useTimeoutFn(()=>!I.value&&o.closeMenu(t.index,h.value),t.hideTimeout),g.value&&n&&((l=v.parent)==null?void 0:l.type.name)==="vft-sub-menu"&&((u=r.handleMouseleave)==null||u.call(r,!0)))};e.watch(()=>o.props.collapse,n=>J(Boolean(n)));{const n=u=>{x.value[u.index]=u},l=u=>{delete x.value[u.index]};e.provide(`subMenu:${v.uid}`,{addSubMenu:n,removeSubMenu:l,handleMouseleave:T,mouseInChild:I,level:r.level+1})}H({opened:c}),e.onMounted(()=>{o.addSubMenu(M),r.addSubMenu(M)}),e.onBeforeUnmount(()=>{r.removeSubMenu(M),o.removeSubMenu(M)});const p=e.useSlots(),K=e.computed(()=>d.value==="horizontal"&&b.value||d.value==="vertical"&&!o.props.collapse?{icon:"vi-arrow-down",size:20,...t.expandIcon}:{icon:"vi-arrow-right",size:18,...t.collapseIcon}),E=e.computed(()=>O.singleAttrToObj(t.icon,"icon")),F=e.computed(()=>O.renderTNode(v,"title"));return()=>{var V;const n=[(V=E.value)!=null&&V.icon?e.h(N.VftIcon,{...E.value}):null,e.h("span",{class:t.showArrow?s.e("text"):"",title:v.props.title},F.value),t.showArrow?e.h(N.VftIcon,{class:s.e("icon-arrow"),...K.value,style:{transform:c.value?"rotateZ(180deg)":"none"}}):!1],l=Y.useMenuCssVar(o.props,r.level+1),u=o.isMenuPopup?e.h(W.VftTooltip,{ref:k,visible:c.value,effect:"light",pure:!0,offset:t.popperOffset,showArrow:!1,persistent:!0,popperClass:t.popperClass,placement:z.value,teleported:g.value,fallbackPlacements:Z.value,transition:U.value,gpuAcceleration:!1,...t.toolTipCfg},{content:()=>{var f;return e.h("div",{class:[a.m(d.value),a.m("popup-container"),t.popperClass],onMouseenter:q=>C(q,100),onMouseleave:()=>T(!0),onFocus:q=>C(q,100)},[e.h("ul",{class:[a.b(),a.m("popup"),a.m(`popup-${z.value}`)],style:l.value},[(f=p.default)==null?void 0:f.call(p)])])},default:()=>e.h("div",{class:s.e("title"),style:[$.value,{backgroundColor:B.value}],onClick:j},n)}):e.h(e.Fragment,{},[F.value?e.h("div",{class:s.e("title"),style:[$.value,{backgroundColor:B.value}],ref:L,onClick:j},n):null,e.h(Q.VftCollapseTransition,{},{default:()=>{var f;return e.withDirectives(e.h("ul",{role:"menu",class:[a.b(),a.m("inline")],style:l.value},[(f=p.default)==null?void 0:f.call(p)]),[[e.vShow,c.value]])}})]);return e.h("li",{class:[s.b(),s.is("active",m.value),s.is("opened",c.value),s.is("disabled",t.disabled)],role:"menuitem",ariaHaspopup:!0,ariaExpanded:c.value,onMouseenter:C,onMouseleave:()=>T(!0),onFocus:C},[u])}}});exports.default=ee;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue");require("../divider/index.js");const N=require("../icon/index.js");require("../avatar/index.js");require("../empty/index.js");require("../result/index.js");require("../exception/index.js");require("../tabs/index.js");require("../popper/index.js");const Q=require("../collapse-transition/index.js"),W=require("../tooltip/index.js");require("../popover/index.js");require("./index.js");const O=require("@vft/utils");require("@vft/use");require("../multiple-tabs/index.js");require("../header-layout/index.js");require("../footer-layout/index.js");require("../iframe-layout/index.js");require("../router-view-content/index.js");require("../logo/index.js");const w=require("../../hooks/use-namespace/index.js");require("@popperjs/core");require("lodash");require("../../hooks/use-z-index/index.js");const R=require("@vueuse/core");require("@vue/shared");const D=require("../../utils/error.js"),X=require("./use-menu.js"),Y=require("./use-menu-css-var.js"),y=w.useNamespace("sub-menu"),_=e.defineComponent({name:y.b()}),ee=e.defineComponent({..._,props:{index:null,showTimeout:{default:300},hideTimeout:{default:300},popperClass:null,disabled:{type:Boolean},popperAppendToBody:{type:Boolean,default:void 0},popperOffset:{default:6},expandIcon:{default:{}},collapseIcon:{default:{}},title:null,icon:null,showArrow:{type:Boolean,default:!0},toolTipCfg:null},setup(t,{expose:H}){const v=e.getCurrentInstance(),{indexPath:h,parentMenu:S}=X.default(v,e.computed(()=>t.index)),a=w.useNamespace("menu"),s=w.useNamespace("sub-menu"),o=e.inject("rootMenu");o||D.throwError(y.b(),"can not inject root menu");const l=e.inject(`subMenu:${S.value.uid}`);l||D.throwError(y.b(),"can not inject sub menu");const q=e.ref({});let i;const I=e.ref(!1),L=e.ref(),k=e.ref(null),z=e.computed(()=>d.value==="horizontal"&&b.value?"bottom-start":"right-start"),b=e.computed(()=>l.level===0),x=e.computed(()=>t.popperAppendToBody===void 0?b.value:Boolean(t.popperAppendToBody)),U=e.computed(()=>o.props.collapse?`${a.namespace.value}-zoom-in-left`:`${a.namespace.value}-zoom-in-top`),Z=e.computed(()=>d.value==="horizontal"&&b.value?["bottom-start","bottom-end","top-start","top-end","right-start","left-start"]:["right-start","left-start","bottom-start","bottom-end","top-start","top-end"]),c=e.computed(()=>o.openedMenus.includes(t.index)),m=e.computed(()=>{let n=!1;return Object.values(q.value).forEach(r=>{r.active&&(n=!0)}),t.index===o.activeIndex&&(n=!0),n}),B=e.computed(()=>o.props.backgroundColor||""),A=e.computed(()=>o.props.activeTextColor||""),P=e.computed(()=>o.props.textColor||""),d=e.computed(()=>o.props.mode),M=e.reactive({index:t.index,indexPath:h,active:m}),$=e.computed(()=>d.value!=="horizontal"?{color:P.value}:{borderBottomColor:m.value?o.props.activeTextColor?A.value:"":"transparent",color:m.value?A.value:P.value}),G=()=>{var n,r,u;return(u=(r=(n=k.value)==null?void 0:n.popperRef)==null?void 0:r.popperInstanceRef)==null?void 0:u.destroy()},J=n=>{n||G()},j=()=>{o.props.menuTrigger==="hover"&&o.props.mode==="horizontal"||o.props.collapse&&o.props.mode==="vertical"||t.disabled||o.handleSubMenuClick({index:t.index,indexPath:h.value,active:m.value})},C=(n,r=t.showTimeout)=>{var u;n.type!=="focus"&&(o.props.menuTrigger==="click"&&o.props.mode==="horizontal"||!o.props.collapse&&o.props.mode==="vertical"||t.disabled||(l.mouseInChild.value=!0,i==null||i(),{stop:i}=R.useTimeoutFn(()=>{o.openMenu(t.index,h.value)},r),x.value&&((u=S.value.vnode.el)==null||u.dispatchEvent(new MouseEvent("mouseenter")))))},g=(n=!1)=>{var r,u;o.props.menuTrigger==="click"&&o.props.mode==="horizontal"||!o.props.collapse&&o.props.mode==="vertical"||(i==null||i(),l.mouseInChild.value=!1,{stop:i}=R.useTimeoutFn(()=>!I.value&&o.closeMenu(t.index,h.value),t.hideTimeout),x.value&&n&&((r=v.parent)==null?void 0:r.type.name)==="vft-sub-menu"&&((u=l.handleMouseleave)==null||u.call(l,!0)))};e.watch(()=>o.props.collapse,n=>J(Boolean(n)));{const n=u=>{q.value[u.index]=u},r=u=>{delete q.value[u.index]};e.provide(`subMenu:${v.uid}`,{addSubMenu:n,removeSubMenu:r,handleMouseleave:g,mouseInChild:I,level:l.level+1})}H({opened:c}),e.onMounted(()=>{o.addSubMenu(M),l.addSubMenu(M)}),e.onBeforeUnmount(()=>{l.removeSubMenu(M),o.removeSubMenu(M)});const p=e.useSlots(),K=e.computed(()=>d.value==="horizontal"&&b.value||d.value==="vertical"&&!o.props.collapse?{icon:"vi-arrow-down",size:20,...t.expandIcon}:{icon:"vi-arrow-right",size:18,...t.collapseIcon}),E=e.computed(()=>O.singleAttrToObj(t.icon,"icon")),F=e.computed(()=>O.renderTNode(v,"title"));return()=>{var V;const n=[(V=E.value)!=null&&V.icon?e.h(N.VftIcon,{...E.value}):null,e.h("span",{class:t.showArrow?s.e("text"):"",title:v.props.title},F.value),t.showArrow?e.h(N.VftIcon,{class:s.e("icon-arrow"),...K.value,style:{transform:c.value?"rotateZ(180deg)":"none"}}):!1],r=Y.useMenuCssVar(o.props,l.level+1),u=o.isMenuPopup?e.h(W.VftTooltip,{ref:k,visible:c.value,effect:"light",pure:!0,offset:t.popperOffset,showArrow:!1,persistent:!0,popperClass:t.popperClass,placement:z.value,teleported:x.value,fallbackPlacements:Z.value,transition:U.value,gpuAcceleration:!1,...t.toolTipCfg},{content:()=>{var f;return e.h("div",{class:[a.m(d.value),a.m("popup-container"),t.popperClass],onMouseenter:T=>C(T,100),onMouseleave:()=>g(!0),onFocus:T=>C(T,100)},[e.h("ul",{class:[a.b(),a.m("popup"),a.m(`popup-${z.value}`)],style:r.value},[(f=p.default)==null?void 0:f.call(p)])])},default:()=>e.h("div",{class:s.e("title"),style:[$.value,{backgroundColor:B.value}],onClick:j},n)}):e.h(e.Fragment,{},[F.value?e.h("div",{class:s.e("title"),style:[$.value,{backgroundColor:B.value}],ref:L,onClick:j},n):null,e.h(Q.VftCollapseTransition,{},{default:()=>{var f;return e.withDirectives(e.h("ul",{role:"menu",class:[a.b(),a.m("inline")],style:r.value},[(f=p.default)==null?void 0:f.call(p)]),[[e.vShow,c.value]])}})]);return e.h("li",{class:[s.b(),s.is("active",m.value),s.is("opened",c.value),s.is("disabled",t.disabled)],role:"menuitem",ariaHaspopup:!0,ariaExpanded:c.value,onMouseenter:C,onMouseleave:()=>g(!0),onFocus:C},[u])}}});exports.default=ee;
2
2
  //# sourceMappingURL=sub-menu.vue2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sub-menu.vue2.js","sources":["../../../../../packages/components/menu/sub-menu.vue"],"sourcesContent":["<script lang=\"tsx\">\nconst ns = /* hoist-static*/ useNamespace('sub-menu')\n\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n name: ns.b()\n});</script>\n<script lang=\"tsx\" setup>\nimport { type IconProps, type Placement, type ToolTipProps, VftCollapseTransition as CollapseTransition, VftIcon as Icon, VftTooltip as Tooltip } from '@vft-ui/components';\nimport { useNamespace } from '@vft-ui/hooks';\nimport { throwError } from '@vft-ui/utils';\nimport { renderTNode, singleAttrToObj } from '@vft/utils';\nimport { useTimeoutFn } from '@vueuse/core';\nimport type { CSSProperties, VNodeArrayChildren } from 'vue';\nimport { computed, Fragment, getCurrentInstance, h, inject, onBeforeUnmount, onMounted, provide, reactive, ref, useSlots, vShow, watch, withDirectives } from 'vue';\nimport type { MenuProvider, SubMenuProvider } from './types';\nimport useMenu from './use-menu';\nimport { useMenuCssVar } from './use-menu-css-var';\n\ninterface Props {\n /** 唯一标志 */\n index: string;\n /** 展开 sub-menu 的延时 */\n showTimeout?: number;\n /** 收起 sub-menu 的延时 */\n hideTimeout?: number;\n /** 为 popper 添加类名 */\n popperClass?: ClassType;\n /** 是否禁用 */\n disabled?: boolean;\n popperAppendToBody?: boolean;\n /** 弹出窗口偏移 */\n popperOffset?: number;\n expandIcon?: IconProps;\n collapseIcon?: IconProps;\n title?: string;\n icon?: IconProps | string;\n showArrow?: boolean;\n toolTipCfg?: ToolTipProps;\n}\n\ndefineProps({\n \"index\": null,\n \"showTimeout\": { default: 300 },\n \"hideTimeout\": { default: 300 },\n \"popperClass\": null,\n \"disabled\": { type: Boolean, },\n \"popperAppendToBody\": { type: Boolean, default: undefined },\n \"popperOffset\": { default: 6 },\n \"expandIcon\": { default: {} },\n \"collapseIcon\": { default: {} },\n \"title\": null,\n \"icon\": null,\n \"showArrow\": { type: Boolean, default: true },\n \"toolTipCfg\": null\n})\n\n\n\n;\n\nconst instance = getCurrentInstance()!;\n\n// 返回当前 sub-menu 对应的 indexPath 页面中对 submenu 定义的 index parentMenu -> vft-menu 组件\nconst { indexPath, parentMenu } = useMenu(instance, computed(() => __props.index));\n\nconst nsMenu = useNamespace('menu');\nconst nsSubMenu = useNamespace('sub-menu');\n\n// 接受 vft-menu 组件中注入的数据\nconst rootMenu = inject<MenuProvider>('rootMenu');\nif (!rootMenu) throwError(ns.b(), 'can not inject root menu');\n\n// 接受 vft-menu 组件中注入的数据 parentMenu.value!.uid 当前 sub-menu 组件对应的 menu.vue 组件\nconst subMenu = inject<SubMenuProvider>(`subMenu:${parentMenu.value!.uid}`);\nif (!subMenu) throwError(ns.b(), 'can not inject sub menu');\n\n/**\n * 格式如下\n * ```\n * {\n * 1-1:{index: '1-1', indexPath: ['mio', '1-1'], active: false},\n * 1-2:{index: '1-2', indexPath: ['mio', '1-2'], active: false}\n * }\n * ```\n * @param {MenuItemRegistered} item\n */\nconst subMenus = ref<MenuProvider['subMenus']>({});\n\nlet timeout: (() => void) | undefined;\nconst mouseInChild = ref(false);\n\n// sub-menu-title 的 ref\nconst verticalTitleRef = ref<HTMLDivElement>();\n// tooltip 的实例\nconst vPopper = ref(null);\n\n// toolTop 的展示位置\nconst currentPlacement = computed<Placement>(\n () => (mode.value === 'horizontal' && isFirstLevel.value ? 'bottom-start' : 'right-start'));\n\n// 是否为第一级的 subMenu\nconst isFirstLevel = computed(() => {\n return subMenu.level === 0;\n});\n\nconst appendToBody = computed(() => {\n return __props.popperAppendToBody === undefined ? isFirstLevel.value : Boolean(__props.popperAppendToBody);\n});\n\n// toolTip 弹出的动画名称\nconst menuTransitionName = computed(\n () => (rootMenu.props.collapse ? `${nsMenu.namespace.value}-zoom-in-left` : `${nsMenu.namespace.value}-zoom-in-top`));\n\nconst fallbackPlacements = computed<Placement[]>(() =>\n mode.value === 'horizontal' && isFirstLevel.value\n ? ['bottom-start', 'bottom-end', 'top-start', 'top-end', 'right-start', 'left-start']\n : ['right-start', 'left-start', 'bottom-start', 'bottom-end', 'top-start', 'top-end']\n);\n\n// 获取当前的 index 是否包含在 openedMenus 中,表示当前 sub-menu 是否已经展开,子节点就是通过这个使用 v-show 来显隐\nconst opened = computed(() => rootMenu.openedMenus.includes(__props.index));\n\nconst active = computed(() => {\n let isActive = false;\n Object.values(subMenus.value).forEach((subItem) => {\n if (subItem.active) {\n isActive = true;\n }\n });\n if (__props.index === rootMenu.activeIndex) {\n isActive = true;\n }\n return isActive;\n});\n\nconst backgroundColor = computed(() => rootMenu.props.backgroundColor || '');\n\nconst activeTextColor = computed(() => rootMenu.props.activeTextColor || '');\n\nconst textColor = computed(() => rootMenu.props.textColor || '');\n\nconst mode = computed(() => rootMenu.props.mode);\n\nconst item = reactive({\n index: __props.index,\n indexPath,\n active\n});\n\n//\nconst titleStyle = computed<CSSProperties>(() => {\n if (mode.value !== 'horizontal') {\n return {\n color: textColor.value\n };\n }\n return {\n borderBottomColor: active.value ? (rootMenu.props.activeTextColor ? activeTextColor.value : '') : 'transparent',\n color: active.value ? activeTextColor.value : textColor.value\n };\n});\n\n// 销毁 toolTip\nconst doDestroy = () => vPopper.value?.popperRef?.popperInstanceRef?.destroy();\n\n// 当菜单收缩展开时执行销毁 toolTip\nconst handleCollapseToggle = (value: boolean) => {\n if (!value) {\n doDestroy();\n }\n};\n\n// sub-menu 菜单点击事件\nconst handleClick = () => {\n // 以下几种情况不执行点击事件操作\n if ((rootMenu.props.menuTrigger === 'hover' && rootMenu.props.mode === 'horizontal') || (rootMenu.props.collapse && rootMenu.props.mode === 'vertical') || __props.disabled) return;\n\n // 调用 menn.vue 中的 handleSubMenuClick 点击事件,传入参数\n rootMenu.handleSubMenuClick({\n index: __props.index,\n indexPath: indexPath.value,\n active: active.value\n });\n};\n\n// 滑入 sub-menu 菜单事件\nconst handleMouseenter = (event: MouseEvent | FocusEvent, _showTimeout = __props.showTimeout) => {\n if (event.type === 'focus') {\n return;\n }\n if ((rootMenu.props.menuTrigger === 'click' && rootMenu.props.mode === 'horizontal') || (!rootMenu.props.collapse && rootMenu.props.mode === 'vertical') || __props.disabled) {\n return;\n }\n subMenu.mouseInChild.value = true;\n\n // 根据 _showTimeout 展开滑入的菜单子项\n timeout?.();\n ({ stop: timeout } = useTimeoutFn(() => {\n rootMenu.openMenu(__props.index, indexPath.value);\n }, _showTimeout));\n\n if (appendToBody.value) {\n parentMenu.value.vnode.el?.dispatchEvent(new MouseEvent('mouseenter'));\n }\n};\n\n// 离开滑入的菜单\nconst handleMouseleave = (deepDispatch = false) => {\n if ((rootMenu.props.menuTrigger === 'click' && rootMenu.props.mode === 'horizontal') || (!rootMenu.props.collapse && rootMenu.props.mode === 'vertical')) {\n return;\n }\n timeout?.();\n subMenu.mouseInChild.value = false;\n ({ stop: timeout } = useTimeoutFn(\n () => !mouseInChild.value && rootMenu.closeMenu(__props.index, indexPath.value),\n __props.hideTimeout));\n\n if (appendToBody.value && deepDispatch) {\n if (instance.parent?.type.name === 'vft-sub-menu') {\n subMenu.handleMouseleave?.(true);\n }\n }\n};\n\n// 监听菜单的收缩展开决定是否销毁 ToolTip\nwatch(\n () => rootMenu.props.collapse,\n (value) => handleCollapseToggle(Boolean(value))\n);\n\n// 以下代码在 menu-item.vue 中触发\n{\n /**\n * 此函数在 menu-item 中触发,items.value 默认为空对象\n * 最后添加后的 items 格式如下\n * ```\n * {\n * 1-1:{index: '1-1', indexPath: ['mio', '1-1'], active: false},\n * 1-2:{index: '1-2', indexPath: ['mio', '1-2'], active: false}\n * }\n * ```\n * @param {MenuItemRegistered} item\n */\n const addSubMenu: SubMenuProvider['addSubMenu'] = (item) => {\n subMenus.value[item.index] = item;\n };\n const removeSubMenu: SubMenuProvider['removeSubMenu'] = (item) => {\n delete subMenus.value[item.index];\n };\n provide<SubMenuProvider>(`subMenu:${instance.uid}`, {\n addSubMenu,\n removeSubMenu,\n handleMouseleave,\n mouseInChild,\n level: subMenu.level + 1\n });\n}\n\ndefineExpose({\n opened\n});\n\nonMounted(() => {\n rootMenu.addSubMenu(item);\n subMenu.addSubMenu(item);\n});\n\nonBeforeUnmount(() => {\n subMenu.removeSubMenu(item);\n rootMenu.removeSubMenu(item);\n});\n\nconst slots = useSlots();\n\n// 箭头设置\nconst subMenuIcon = computed(() => {\n // 水平模式第一级 或者 竖直非折叠\n return (mode.value === 'horizontal' && isFirstLevel.value) || (mode.value === 'vertical' && !rootMenu.props.collapse)\n ? { icon: 'vi-arrow-down', size: 20, ...__props.expandIcon } :\n { icon: 'vi-arrow-right', size: 18, ...__props.collapseIcon };\n});\n\nconst _icon = computed(() => {\n return singleAttrToObj(__props.icon, 'icon') as IconProps;\n});\n\nconst titleCon = computed(() => {\n return renderTNode(instance, 'title');\n});\n\ndefineRender(() => {\n // sub-menu 的标题以及展开箭头 icon 相关\n const titleTag: VNodeArrayChildren = [\n _icon.value?.icon ? h(Icon, { ..._icon.value }) : null,\n h(\n 'span',\n {\n class: __props.showArrow ? nsSubMenu.e('text') : '',\n title: instance.props.title\n },\n titleCon.value\n ),\n __props.showArrow ? h(\n Icon,\n {\n class: nsSubMenu.e('icon-arrow'),\n ...subMenuIcon.value,\n style: { transform: opened.value ? 'rotateZ(180deg)' : 'none' }\n }\n ) : false\n ];\n\n // 给 vft-menu class 这一栏加入 level 等级,以此来区分当前的 level: --vft-menu-level:2;\n const ulStyle = useMenuCssVar(rootMenu.props, subMenu.level + 1);\n\n /**\n * rootMenu.isMenuPopup 是否需要 tooltip 1.水平模式的菜单需要 2.竖直类型的菜单在收缩时需要\n * 如果需要 tooltip 用 h 函数渲染时,则采用 ElTooltip 组件\n * @type {VNode}\n */\n const child = rootMenu.isMenuPopup\n ? h(\n Tooltip,\n {\n ref: vPopper,\n visible: opened.value,\n effect: 'light',\n pure: true,\n offset: __props.popperOffset,\n showArrow: false,\n persistent: true,\n popperClass: __props.popperClass,\n placement: currentPlacement.value,\n teleported: appendToBody.value,\n fallbackPlacements: fallbackPlacements.value,\n transition: menuTransitionName.value,\n gpuAcceleration: false,\n ...__props.toolTipCfg\n },\n {\n content: () =>\n h(\n 'div',\n {\n class: [nsMenu.m(mode.value), nsMenu.m('popup-container'), __props.popperClass],\n onMouseenter: (evt: MouseEvent) => handleMouseenter(evt, 100),\n onMouseleave: () => handleMouseleave(true),\n onFocus: (evt: FocusEvent) => handleMouseenter(evt, 100)\n },\n [\n h(\n 'ul',\n {\n class: [nsMenu.b(), nsMenu.m('popup'), nsMenu.m(\n `popup-${currentPlacement.value}`)],\n style: ulStyle.value\n },\n [slots.default?.()]\n )\n ]\n ),\n default: () =>\n h(\n 'div',\n {\n class: nsSubMenu.e('title'),\n style: [titleStyle.value, { backgroundColor: backgroundColor.value }],\n onClick: handleClick\n },\n titleTag\n )\n }\n )\n :\n /**\n * Fragment 碎片化节点,可以让 dom 没有根节点\n *\n * 以下是无需 tooltip 渲染的组件,通常是侧边栏没有折叠的时候\n */\n h(Fragment, {}, [\n titleCon.value ? h(\n 'div',\n {\n class: nsSubMenu.e('title'),\n style: [titleStyle.value, { backgroundColor: backgroundColor.value }],\n ref: verticalTitleRef,\n onClick: handleClick\n },\n titleTag\n ) : null,\n h(\n CollapseTransition,\n {},\n {\n default: () =>\n withDirectives(\n h(\n 'ul',\n {\n role: 'menu',\n class: [nsMenu.b(), nsMenu.m('inline')],\n style: ulStyle.value\n },\n [slots.default?.()]\n ),\n [[vShow, opened.value]]\n )\n }\n )\n ]);\n\n return h(\n 'li',\n {\n class: [nsSubMenu.b(), nsSubMenu.is('active', active.value),\n nsSubMenu.is('opened', opened.value), nsSubMenu.is('disabled', __props.disabled)],\n role: 'menuitem',\n ariaHaspopup: true,\n ariaExpanded: opened.value,\n onMouseenter: handleMouseenter,\n onMouseleave: () => handleMouseleave(true),\n onFocus: handleMouseenter\n },\n [child]\n );\n});\n</script>\n"],"names":["ns","useNamespace","__default__","DO_defineComponent","name","b","instance","getCurrentInstance","indexPath","parentMenu","useMenu","computed","__props","index","nsMenu","nsSubMenu","rootMenu","inject","throwError","subMenu","value","uid","subMenus","ref","timeout","mouseInChild","verticalTitleRef","vPopper","currentPlacement","mode","isFirstLevel","level","appendToBody","popperAppendToBody","undefined","Boolean","menuTransitionName","props","collapse","namespace","fallbackPlacements","opened","openedMenus","includes","active","isActive","Object","values","forEach","subItem","activeIndex","backgroundColor","activeTextColor","textColor","item","reactive","titleStyle","color","borderBottomColor","doDestroy","popperRef","popperInstanceRef","destroy","handleCollapseToggle","handleClick","menuTrigger","disabled","handleSubMenuClick","handleMouseenter","event","_showTimeout","showTimeout","type","stop","useTimeoutFn","openMenu","vnode","el","dispatchEvent","MouseEvent","handleMouseleave","deepDispatch","closeMenu","hideTimeout","parent","watch","addSubMenu","removeSubMenu","provide","expose","onMounted","onBeforeUnmount","slots","useSlots","subMenuIcon","icon","size","expandIcon","collapseIcon","_icon","singleAttrToObj","titleCon","renderTNode","titleTag","h","Icon","class","showArrow","e","title","style","transform","ulStyle","useMenuCssVar","child","isMenuPopup","Tooltip","visible","effect","pure","offset","popperOffset","persistent","popperClass","placement","teleported","transition","gpuAcceleration","toolTipCfg","content","m","onMouseenter","evt","onMouseleave","onFocus","default","onClick","Fragment","CollapseTransition","withDirectives","role","vShow","is","ariaHaspopup","ariaExpanded"],"mappings":"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"}
1
+ {"version":3,"file":"sub-menu.vue2.js","sources":["../../../../../packages/components/menu/sub-menu.vue"],"sourcesContent":["<script lang=\"tsx\">\nconst ns = /* hoist-static*/ useNamespace('sub-menu')\n\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n name: ns.b()\n});</script>\n<script lang=\"tsx\" setup>\nimport { type IconProps, type Placement, type ToolTipProps, VftCollapseTransition as CollapseTransition, VftIcon as Icon, VftTooltip as Tooltip } from '@vft-ui/components';\nimport { useNamespace } from '@vft-ui/hooks';\nimport { throwError } from '@vft-ui/utils';\nimport { renderTNode, singleAttrToObj } from '@vft/utils';\nimport { useTimeoutFn } from '@vueuse/core';\nimport type { CSSProperties, VNodeArrayChildren } from 'vue';\nimport { computed, Fragment, getCurrentInstance, h, inject, onBeforeUnmount, onMounted, provide, reactive, ref, useSlots, vShow, watch, withDirectives } from 'vue';\nimport type { MenuProvider, SubMenuProvider } from './types';\nimport useMenu from './use-menu';\nimport { useMenuCssVar } from './use-menu-css-var';\n\ninterface Props {\n /** 唯一标志 */\n index: string;\n /** 展开 sub-menu 的延时 */\n showTimeout?: number;\n /** 收起 sub-menu 的延时 */\n hideTimeout?: number;\n /** 为 popper 添加类名 */\n popperClass?: ClassType;\n /** 是否禁用 */\n disabled?: boolean;\n popperAppendToBody?: boolean;\n /** 弹出窗口偏移 */\n popperOffset?: number;\n expandIcon?: IconProps;\n collapseIcon?: IconProps;\n title?: string;\n icon?: IconProps | string;\n showArrow?: boolean;\n toolTipCfg?: ToolTipProps;\n}\n\ndefineProps({\n \"index\": null,\n \"showTimeout\": { default: 300 },\n \"hideTimeout\": { default: 300 },\n \"popperClass\": null,\n \"disabled\": { type: Boolean, },\n \"popperAppendToBody\": { type: Boolean, default: undefined },\n \"popperOffset\": { default: 6 },\n \"expandIcon\": { default: {} },\n \"collapseIcon\": { default: {} },\n \"title\": null,\n \"icon\": null,\n \"showArrow\": { type: Boolean, default: true },\n \"toolTipCfg\": null\n})\n\n\n\n;\n\nconst instance = getCurrentInstance()!;\n\n// 返回当前 sub-menu 对应的 indexPath 页面中对 submenu 定义的 index parentMenu -> vft-menu 组件\nconst { indexPath, parentMenu } = useMenu(instance, computed(() => __props.index));\n\nconst nsMenu = useNamespace('menu');\nconst nsSubMenu = useNamespace('sub-menu');\n\n// 接受 vft-menu 组件中注入的数据\nconst rootMenu = inject<MenuProvider>('rootMenu');\nif (!rootMenu) throwError(ns.b(), 'can not inject root menu');\n\n// 接受 vft-menu 组件中注入的数据 parentMenu.value!.uid 当前 sub-menu 组件对应的 menu.vue 组件\nconst subMenu = inject<SubMenuProvider>(`subMenu:${parentMenu.value!.uid}`);\nif (!subMenu) throwError(ns.b(), 'can not inject sub menu');\n\n/**\n * 格式如下\n * ```\n * {\n * 1-1:{index: '1-1', indexPath: ['mio', '1-1'], active: false},\n * 1-2:{index: '1-2', indexPath: ['mio', '1-2'], active: false}\n * }\n * ```\n * @param {MenuItemRegistered} item\n */\nconst subMenus = ref<MenuProvider['subMenus']>({});\n\nlet timeout: (() => void) | undefined;\nconst mouseInChild = ref(false);\n\n// sub-menu-title 的 ref\nconst verticalTitleRef = ref<HTMLDivElement>();\n// tooltip 的实例\nconst vPopper = ref(null);\n\n// toolTop 的展示位置\nconst currentPlacement = computed<Placement>(\n () => (mode.value === 'horizontal' && isFirstLevel.value ? 'bottom-start' : 'right-start'));\n\n// 是否为第一级的 subMenu\nconst isFirstLevel = computed(() => {\n return subMenu.level === 0;\n});\n\nconst appendToBody = computed(() => {\n return __props.popperAppendToBody === undefined ? isFirstLevel.value : Boolean(__props.popperAppendToBody);\n});\n\n// toolTip 弹出的动画名称\nconst menuTransitionName = computed(\n () => (rootMenu.props.collapse ? `${nsMenu.namespace.value}-zoom-in-left` : `${nsMenu.namespace.value}-zoom-in-top`));\n\nconst fallbackPlacements = computed<Placement[]>(() =>\n mode.value === 'horizontal' && isFirstLevel.value\n ? ['bottom-start', 'bottom-end', 'top-start', 'top-end', 'right-start', 'left-start']\n : ['right-start', 'left-start', 'bottom-start', 'bottom-end', 'top-start', 'top-end']\n);\n\n// 获取当前的 index 是否包含在 openedMenus 中,表示当前 sub-menu 是否已经展开,子节点就是通过这个使用 v-show 来显隐\nconst opened = computed(() => rootMenu.openedMenus.includes(__props.index));\n\nconst active = computed(() => {\n let isActive = false;\n Object.values(subMenus.value).forEach((subItem) => {\n if (subItem.active) {\n isActive = true;\n }\n });\n if (__props.index === rootMenu.activeIndex) {\n isActive = true;\n }\n return isActive;\n});\n\nconst backgroundColor = computed(() => rootMenu.props.backgroundColor || '');\n\nconst activeTextColor = computed(() => rootMenu.props.activeTextColor || '');\n\nconst textColor = computed(() => rootMenu.props.textColor || '');\n\nconst mode = computed(() => rootMenu.props.mode);\n\nconst item = reactive({\n index: __props.index,\n indexPath,\n active\n});\n\n//\nconst titleStyle = computed<CSSProperties>(() => {\n if (mode.value !== 'horizontal') {\n return {\n color: textColor.value\n };\n }\n return {\n borderBottomColor: active.value ? (rootMenu.props.activeTextColor ? activeTextColor.value : '') : 'transparent',\n color: active.value ? activeTextColor.value : textColor.value\n };\n});\n\n// 销毁 toolTip\nconst doDestroy = () => vPopper.value?.popperRef?.popperInstanceRef?.destroy();\n\n// 当菜单收缩展开时执行销毁 toolTip\nconst handleCollapseToggle = (value: boolean) => {\n if (!value) {\n doDestroy();\n }\n};\n\n// sub-menu 菜单点击事件\nconst handleClick = () => {\n // 以下几种情况不执行点击事件操作\n if ((rootMenu.props.menuTrigger === 'hover' && rootMenu.props.mode === 'horizontal') || (rootMenu.props.collapse && rootMenu.props.mode === 'vertical') || __props.disabled) return;\n\n // 调用 menn.vue 中的 handleSubMenuClick 点击事件,传入参数\n rootMenu.handleSubMenuClick({\n index: __props.index,\n indexPath: indexPath.value,\n active: active.value\n });\n};\n\n// 滑入 sub-menu 菜单事件\nconst handleMouseenter = (event: MouseEvent | FocusEvent, _showTimeout = __props.showTimeout) => {\n if (event.type === 'focus') {\n return;\n }\n if ((rootMenu.props.menuTrigger === 'click' && rootMenu.props.mode === 'horizontal') || (!rootMenu.props.collapse && rootMenu.props.mode === 'vertical') || __props.disabled) {\n return;\n }\n subMenu.mouseInChild.value = true;\n\n // 根据 _showTimeout 展开滑入的菜单子项\n timeout?.();\n ({ stop: timeout } = useTimeoutFn(() => {\n rootMenu.openMenu(__props.index, indexPath.value);\n }, _showTimeout));\n\n if (appendToBody.value) {\n parentMenu.value.vnode.el?.dispatchEvent(new MouseEvent('mouseenter'));\n }\n};\n\n// 离开滑入的菜单\nconst handleMouseleave = (deepDispatch = false) => {\n if ((rootMenu.props.menuTrigger === 'click' && rootMenu.props.mode === 'horizontal') || (!rootMenu.props.collapse && rootMenu.props.mode === 'vertical')) {\n return;\n }\n timeout?.();\n subMenu.mouseInChild.value = false;\n ({ stop: timeout } = useTimeoutFn(\n () => !mouseInChild.value && rootMenu.closeMenu(__props.index, indexPath.value),\n __props.hideTimeout));\n\n if (appendToBody.value && deepDispatch) {\n if (instance.parent?.type.name === 'vft-sub-menu') {\n subMenu.handleMouseleave?.(true);\n }\n }\n};\n\n// 监听菜单的收缩展开决定是否销毁 ToolTip\nwatch(\n () => rootMenu.props.collapse,\n (value) => handleCollapseToggle(Boolean(value))\n);\n\n// 以下代码在 menu-item.vue 中触发\n{\n /**\n * 此函数在 menu-item 中触发,items.value 默认为空对象\n * 最后添加后的 items 格式如下\n * ```\n * {\n * 1-1:{index: '1-1', indexPath: ['mio', '1-1'], active: false},\n * 1-2:{index: '1-2', indexPath: ['mio', '1-2'], active: false}\n * }\n * ```\n * @param {MenuItemRegistered} item\n */\n const addSubMenu: SubMenuProvider['addSubMenu'] = (item) => {\n subMenus.value[item.index] = item;\n };\n const removeSubMenu: SubMenuProvider['removeSubMenu'] = (item) => {\n delete subMenus.value[item.index];\n };\n provide<SubMenuProvider>(`subMenu:${instance.uid}`, {\n addSubMenu,\n removeSubMenu,\n handleMouseleave,\n mouseInChild,\n level: subMenu.level + 1\n });\n}\n\ndefineExpose({\n opened\n});\n\nonMounted(() => {\n rootMenu.addSubMenu(item);\n subMenu.addSubMenu(item);\n});\n\nonBeforeUnmount(() => {\n subMenu.removeSubMenu(item);\n rootMenu.removeSubMenu(item);\n});\n\nconst slots = useSlots();\n\n// 箭头设置\nconst subMenuIcon = computed(() => {\n // 水平模式第一级 或者 竖直非折叠\n return (mode.value === 'horizontal' && isFirstLevel.value) || (mode.value === 'vertical' && !rootMenu.props.collapse)\n ? { icon: 'vi-arrow-down', size: 20, ...__props.expandIcon } :\n { icon: 'vi-arrow-right', size: 18, ...__props.collapseIcon };\n});\n\nconst _icon = computed(() => {\n return singleAttrToObj(__props.icon, 'icon') as IconProps;\n});\n\nconst titleCon = computed(() => {\n return renderTNode(instance, 'title');\n});\n\ndefineRender(() => {\n // sub-menu 的标题以及展开箭头 icon 相关\n const titleTag: VNodeArrayChildren = [\n _icon.value?.icon ? h(Icon, { ..._icon.value }) : null,\n h(\n 'span',\n {\n class: __props.showArrow ? nsSubMenu.e('text') : '',\n title: instance.props.title\n },\n titleCon.value\n ),\n __props.showArrow ? h(\n Icon,\n {\n class: nsSubMenu.e('icon-arrow'),\n ...subMenuIcon.value,\n style: { transform: opened.value ? 'rotateZ(180deg)' : 'none' }\n }\n ) : false\n ];\n\n // 给 vft-menu class 这一栏加入 level 等级,以此来区分当前的 level: --vft-menu-level:2;\n const ulStyle = useMenuCssVar(rootMenu.props, subMenu.level + 1);\n\n /**\n * rootMenu.isMenuPopup 是否需要 tooltip 1.水平模式的菜单需要 2.竖直类型的菜单在收缩时需要\n * 如果需要 tooltip 用 h 函数渲染时,则采用 ElTooltip 组件\n * @type {VNode}\n */\n const child = rootMenu.isMenuPopup\n ? h(\n Tooltip,\n {\n ref: vPopper,\n visible: opened.value,\n effect: 'light',\n pure: true,\n offset: __props.popperOffset,\n showArrow: false,\n persistent: true,\n popperClass: __props.popperClass,\n placement: currentPlacement.value,\n teleported: appendToBody.value,\n fallbackPlacements: fallbackPlacements.value,\n transition: menuTransitionName.value,\n gpuAcceleration: false,\n ...__props.toolTipCfg\n },\n {\n content: () =>\n h(\n 'div',\n {\n class: [nsMenu.m(mode.value), nsMenu.m('popup-container'), __props.popperClass],\n onMouseenter: (evt: MouseEvent) => handleMouseenter(evt, 100),\n onMouseleave: () => handleMouseleave(true),\n onFocus: (evt: FocusEvent) => handleMouseenter(evt, 100)\n },\n [\n h(\n 'ul',\n {\n class: [nsMenu.b(), nsMenu.m('popup'), nsMenu.m(\n `popup-${currentPlacement.value}`)],\n style: ulStyle.value\n },\n [slots.default?.()]\n )\n ]\n ),\n default: () =>\n h(\n 'div',\n {\n class: nsSubMenu.e('title'),\n style: [titleStyle.value, { backgroundColor: backgroundColor.value }],\n onClick: handleClick\n },\n titleTag\n )\n }\n )\n :\n /**\n * Fragment 碎片化节点,可以让 dom 没有根节点\n *\n * 以下是无需 tooltip 渲染的组件,通常是侧边栏没有折叠的时候\n */\n h(Fragment, {}, [\n titleCon.value ? h(\n 'div',\n {\n class: nsSubMenu.e('title'),\n style: [titleStyle.value, { backgroundColor: backgroundColor.value }],\n ref: verticalTitleRef,\n onClick: handleClick\n },\n titleTag\n ) : null,\n h(\n CollapseTransition,\n {},\n {\n default: () =>\n withDirectives(\n h(\n 'ul',\n {\n role: 'menu',\n class: [nsMenu.b(), nsMenu.m('inline')],\n style: ulStyle.value\n },\n [slots.default?.()]\n ),\n [[vShow, opened.value]]\n )\n }\n )\n ]);\n\n return h(\n 'li',\n {\n class: [nsSubMenu.b(), nsSubMenu.is('active', active.value),\n nsSubMenu.is('opened', opened.value), nsSubMenu.is('disabled', __props.disabled)],\n role: 'menuitem',\n ariaHaspopup: true,\n ariaExpanded: opened.value,\n onMouseenter: handleMouseenter,\n onMouseleave: () => handleMouseleave(true),\n onFocus: handleMouseenter\n },\n [child]\n );\n});\n</script>\n"],"names":["ns","useNamespace","__default__","DO_defineComponent","name","b","instance","getCurrentInstance","indexPath","parentMenu","useMenu","computed","__props","index","nsMenu","nsSubMenu","rootMenu","inject","throwError","subMenu","value","uid","subMenus","ref","timeout","mouseInChild","verticalTitleRef","vPopper","currentPlacement","mode","isFirstLevel","level","appendToBody","popperAppendToBody","undefined","Boolean","menuTransitionName","props","collapse","namespace","fallbackPlacements","opened","openedMenus","includes","active","isActive","Object","values","forEach","subItem","activeIndex","backgroundColor","activeTextColor","textColor","item","reactive","titleStyle","color","borderBottomColor","doDestroy","popperRef","popperInstanceRef","destroy","handleCollapseToggle","handleClick","menuTrigger","disabled","handleSubMenuClick","handleMouseenter","event","_showTimeout","showTimeout","type","stop","useTimeoutFn","openMenu","vnode","el","dispatchEvent","MouseEvent","handleMouseleave","deepDispatch","closeMenu","hideTimeout","parent","watch","addSubMenu","removeSubMenu","provide","expose","onMounted","onBeforeUnmount","slots","useSlots","subMenuIcon","icon","size","expandIcon","collapseIcon","_icon","singleAttrToObj","titleCon","renderTNode","titleTag","h","Icon","class","showArrow","e","title","style","transform","ulStyle","useMenuCssVar","child","isMenuPopup","Tooltip","visible","effect","pure","offset","popperOffset","persistent","popperClass","placement","teleported","transition","gpuAcceleration","toolTipCfg","content","m","onMouseenter","evt","onMouseleave","onFocus","default","onClick","Fragment","CollapseTransition","withDirectives","role","vShow","is","ariaHaspopup","ariaExpanded"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),s=require("@vft/router"),x=require("@vft/store"),w=require("@vft/use"),g=require("@vft/utils"),I=require("hotkeys-js"),q=require("vue-router"),K=require("../../hooks/use-namespace/index.js");require("@popperjs/core");require("lodash");require("../../hooks/use-z-index/index.js");require("@vueuse/core");require("@vue/shared");require("../divider/index.js");require("../icon/index.js");require("../avatar/index.js");require("../empty/index.js");require("../result/index.js");require("../exception/index.js");const y=require("../tabs/index.js");require("../popper/index.js");require("../collapse-transition/index.js");require("../tooltip/index.js");require("../popover/index.js");require("../menu/index.js");require("./index.js");const A=require("./tab-content.vue2.js"),R=require("./use/use-multiple-tabs.js"),C=K.useNamespace("multiple-tabs"),z=e.defineComponent({name:C.b()}),D=e.defineComponent({...z,props:{tabsStyle:null,contextMenuStyle:null,canDrag:{type:Boolean}},setup(m){const u=R.initAffixTabs();m.canDrag&&R.useTabsDrag(u);const f=x.useMultipleTabStore(),a=e.ref(""),l=e.ref(0),v=e.ref(),h=q.useRouter(),{go:b}=s.useRouterHelper(),d=e.computed(()=>f.getTabList.filter(t=>{var n;return!((n=t.meta)!=null&&n.hideTab)}));e.watchEffect(()=>{var t;if(a.value){const n=d.value.findIndex(r=>s.getRouterKeyPath(r)===a.value);n===-1?l.value=((t=d.value)==null?void 0:t.length)-1:l.value=n,l.value=l.value<(u==null?void 0:u.length)?(u==null?void 0:u.length)-1:l.value}}),q.onBeforeRouteLeave(()=>{v.value=e.unref(h.currentRoute)}),s.listenerRouteChange(t=>{if(!t)return;const{meta:n={}}=t,{currentActivePath:r,hideTab:o}=n,i=o?r:null,c=s.getRouterKeyPath(t);if(a.value!==c&&(a.value=c),i){let p=h.getRoutes().find(V=>V.path===r);p&&f.addTab(p,e.unref(v),l.value,t)}else f.addTab(e.unref(t),e.unref(v),l.value)});function _(t){var o,i;if(a.value===t.paneName)return;const n=d.value[t.attrs.index];a.value=t.paneName;const r=(i=(o=n==null?void 0:n.meta)==null?void 0:o.hideActiveRoute)==null?void 0:i.fullPath;b(r||n.fullPath||n.path)}function T(t){f.closeTabByKey(t,h)}const[S,P]=w.useRefs();function M(t){const n=t.pane.attrs.index,r=t.event;S.value[n].handleContext(r)}const k=e.computed(()=>{let t={padding:"4px 0 0","header-height":"26px","item-color":"#5C5C5C","item-bg-color":"#f8f8f8","font-size":"13px","item-padding":"0 10px","close-icon-left":"8px","item-distance":"10px","item-max-width":"348px","header-margin":"0 0 0 8px"};return{...g.generateCssVars(t,"tabs","vft"),...m.tabsStyle}}),{closeCurrent:B}=x.useTabs();I("command+e, ctrl+e",function(){return B(),!1});const N=e.computed(()=>({...g.generateCssVars({border:"1px solid #dcdfe6","sub-item-height":"40px","item-min-width":"150px"},"menu","vft"),...m.contextMenuStyle}));return(t,n)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(C).b()),style:e.normalizeStyle(e.unref(k))},[e.createVNode(e.unref(y.VftTabs),{"model-value":a.value,"onUpdate:modelValue":n[0]||(n[0]=r=>a.value=r),type:"card",onTabClick:_,onTabRemove:T,onTabContextMenu:M,closeIconCfg:{color:"white"}},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(d),(r,o)=>{var i;return e.openBlock(),e.createBlock(e.unref(y.VftTabPane),{key:e.unref(s.getRouterKeyPath)(r)+o,closable:!((i=r.meta)!=null&&i.affix),index:o,name:e.unref(s.getRouterKeyPath)(r)},{label:e.withCtx(()=>{var c;return[e.createVNode(A.default,{contextMenuStyle:e.unref(N),affixNum:(c=e.unref(u))==null?void 0:c.length,ref_for:!0,ref:e.unref(P)(o),tabItem:r},null,8,["contextMenuStyle","affixNum","tabItem"])]}),_:2},1032,["closable","index","name"])}),128))]),_:1},8,["model-value"])],6))}});exports.default=D;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),s=require("@vft/router"),q=require("@vft/store"),w=require("@vft/use"),x=require("@vft/utils"),I=require("hotkeys-js"),g=require("vue-router"),K=require("../../hooks/use-namespace/index.js");require("@popperjs/core");require("lodash");require("../../hooks/use-z-index/index.js");require("@vueuse/core");require("@vue/shared");require("../divider/index.js");require("../icon/index.js");require("../avatar/index.js");require("../empty/index.js");require("../result/index.js");require("../exception/index.js");const y=require("../tabs/index.js");require("../popper/index.js");require("../collapse-transition/index.js");require("../tooltip/index.js");require("../popover/index.js");require("../menu/index.js");require("./index.js");require("../header-layout/index.js");require("../footer-layout/index.js");require("../iframe-layout/index.js");require("../router-view-content/index.js");require("../logo/index.js");const A=require("./tab-content.vue2.js"),R=require("./use/use-multiple-tabs.js"),C=K.useNamespace("multiple-tabs"),z=e.defineComponent({name:C.b()}),D=e.defineComponent({...z,props:{tabsStyle:null,contextMenuStyle:null,canDrag:{type:Boolean}},setup(m){const u=R.initAffixTabs();m.canDrag&&R.useTabsDrag(u);const f=q.useMultipleTabStore(),a=e.ref(""),l=e.ref(0),v=e.ref(),h=g.useRouter(),{go:b}=s.useRouterHelper(),d=e.computed(()=>f.getTabList.filter(t=>{var r;return!((r=t.meta)!=null&&r.hideTab)}));e.watchEffect(()=>{var t;if(a.value){const r=d.value.findIndex(n=>s.getRouterKeyPath(n)===a.value);r===-1?l.value=((t=d.value)==null?void 0:t.length)-1:l.value=r,l.value=l.value<(u==null?void 0:u.length)?(u==null?void 0:u.length)-1:l.value}}),g.onBeforeRouteLeave(()=>{v.value=e.unref(h.currentRoute)}),s.listenerRouteChange(t=>{if(!t)return;const{meta:r={}}=t,{currentActivePath:n,hideTab:o}=r,i=o?n:null,c=s.getRouterKeyPath(t);if(a.value!==c&&(a.value=c),i){let p=h.getRoutes().find(V=>V.path===n);p&&f.addTab(p,e.unref(v),l.value,t)}else f.addTab(e.unref(t),e.unref(v),l.value)});function _(t){var o,i;if(a.value===t.paneName)return;const r=d.value[t.attrs.index];a.value=t.paneName;const n=(i=(o=r==null?void 0:r.meta)==null?void 0:o.hideActiveRoute)==null?void 0:i.fullPath;b(n||r.fullPath||r.path)}function T(t){f.closeTabByKey(t,h)}const[S,P]=w.useRefs();function M(t){const r=t.pane.attrs.index,n=t.event;S.value[r].handleContext(n)}const k=e.computed(()=>{let t={padding:"4px 0 0","header-height":"26px","item-color":"#5C5C5C","item-bg-color":"#f8f8f8","font-size":"13px","item-padding":"0 10px","close-icon-left":"8px","item-distance":"10px","item-max-width":"348px","header-margin":"0 0 0 8px"};return{...x.generateCssVars(t,"tabs","vft"),...m.tabsStyle}}),{closeCurrent:B}=q.useTabs();I("command+e, ctrl+e",function(){return B(),!1});const N=e.computed(()=>({...x.generateCssVars({border:"1px solid #dcdfe6","sub-item-height":"40px","item-min-width":"150px"},"menu","vft"),...m.contextMenuStyle}));return(t,r)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(C).b()),style:e.normalizeStyle(e.unref(k))},[e.createVNode(e.unref(y.VftTabs),{"model-value":a.value,"onUpdate:modelValue":r[0]||(r[0]=n=>a.value=n),type:"card",onTabClick:_,onTabRemove:T,onTabContextMenu:M,closeIconCfg:{color:"white"}},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(d),(n,o)=>{var i;return e.openBlock(),e.createBlock(e.unref(y.VftTabPane),{key:e.unref(s.getRouterKeyPath)(n)+o,closable:!((i=n.meta)!=null&&i.affix),index:o,name:e.unref(s.getRouterKeyPath)(n)},{label:e.withCtx(()=>{var c;return[e.createVNode(A.default,{contextMenuStyle:e.unref(N),affixNum:(c=e.unref(u))==null?void 0:c.length,ref_for:!0,ref:e.unref(P)(o),tabItem:n},null,8,["contextMenuStyle","affixNum","tabItem"])]}),_:2},1032,["closable","index","name"])}),128))]),_:1},8,["model-value"])],6))}});exports.default=D;
2
2
  //# sourceMappingURL=multiple-tabs.vue2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"multiple-tabs.vue2.js","sources":["../../../../../packages/components/multiple-tabs/multiple-tabs.vue"],"sourcesContent":["<script lang=\"ts\">\nconst ns = /* hoist-static*/ useNamespace('multiple-tabs')\n\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n name: ns.b()\n});</script>\n<script lang=\"ts\" setup>\nimport { getRouterKeyPath, listenerRouteChange, useRouterHelper } from '@vft/router';\nimport { useMultipleTabStore, useTabs } from '@vft/store';\nimport { useRefs } from '@vft/use';\nimport { generateCssVars } from '@vft/utils';\nimport hotkeys from 'hotkeys-js';\nimport { computed, ref, unref, watchEffect } from 'vue';\nimport type { RouteLocationNormalized, RouteMeta } from 'vue-router';\nimport { useRouter, onBeforeRouteLeave } from 'vue-router';\nimport { useNamespace } from '@vft-ui/hooks';\nimport { VftTabs, VftTabPane, type TabsPaneContext } from '@vft-ui/components';\n\nimport TabContent from './tab-content.vue';\nimport type { TabContentExpose } from './types';\nimport { initAffixTabs, useTabsDrag } from './use';\n\ninterface MultipleTabsProps {\n tabsStyle?: Record<string, Numberish>;\n contextMenuStyle?: Record<string, Numberish>;\n canDrag?: boolean;\n}\n\ndefineProps({\n \"tabsStyle\": null,\n \"contextMenuStyle\": null,\n \"canDrag\": { type: Boolean, }\n})\n\n\n\n;\n\nconst affixList = initAffixTabs();\n\nif (__props.canDrag) {\n useTabsDrag(affixList);\n}\n\nconst tabStore = useMultipleTabStore();\n\n// active path for tab\nconst activePathRef = ref('');\nconst activeIndex = ref(0);\nconst fromRoute = ref();\n\nconst router = useRouter();\nconst { go } = useRouterHelper();\n\n// get current tab list\nconst getTabsState = computed(() => {\n return tabStore.getTabList.filter((item) => {\n return !item.meta?.hideTab;\n });\n});\n\n\nwatchEffect(() => {\n if (activePathRef.value) {\n const _activeIndex = getTabsState.value.findIndex(item => {\n return getRouterKeyPath(item) === activePathRef.value;\n });\n if (_activeIndex === -1) {\n activeIndex.value = getTabsState.value?.length - 1;\n } else {\n activeIndex.value = _activeIndex;\n }\n activeIndex.value = activeIndex.value < affixList?.length ? affixList?.length - 1 : activeIndex.value;\n }\n});\n\nonBeforeRouteLeave(() => {\n fromRoute.value = unref(router.currentRoute);\n});\n\nlistenerRouteChange((route) => {\n if (!route) {\n return;\n }\n\n const { meta = {} } = route;\n const { currentActivePath, hideTab } = meta as RouteMeta;\n\n const isHide = !hideTab ? null : currentActivePath;\n\n // set current active tab value\n const activePath = getRouterKeyPath(route);\n\n if (activePathRef.value !== activePath) {\n activePathRef.value = activePath;\n }\n\n if (isHide) {\n // 如果当前 tab 是隐藏的,则从路由中根据 currentActivePath 寻找到此路由的信息,然后在 tabStore 添加此路由\n let findParentRoute = router.getRoutes().find((item) => item.path === currentActivePath);\n findParentRoute && tabStore.addTab(findParentRoute as unknown as RouteLocationNormalized, unref(fromRoute), activeIndex.value, route);\n } else {\n tabStore.addTab(unref(route), unref(fromRoute), activeIndex.value);\n }\n});\n\n// 点击 tab 根据 tab 传入的 path 路径,跳转到对应页面\nfunction handleClick (pane: TabsPaneContext) {\n if (activePathRef.value === pane.paneName) {\n \treturn;\n }\n const clickTab = getTabsState.value[pane.attrs.index];\n activePathRef.value = pane.paneName as string;\n const hideActiveRoutePath = (clickTab?.meta?.hideActiveRoute as RouteLocationNormalized)?.fullPath;\n if (hideActiveRoutePath) {\n go(hideActiveRoutePath);\n } else {\n go(clickTab.fullPath || clickTab.path);\n }\n}\n\n// click x close tab\nfunction handleRemove (targetPath: string) {\n tabStore.closeTabByKey(targetPath, router);\n}\n\nconst [refs, setRefs] = useRefs<TabContentExpose>();\n\nfunction handleContextMenu (data: {pane: {attrs: {index: number;};}; event: any;}) {\n const _index = data.pane.attrs.index;\n const _event = data.event;\n refs.value[_index].handleContext(_event);\n}\n\nconst _tabsStyle = computed(() => {\n let initTabStyle: Record<string, Numberish> = {\n padding: '4px 0 0',\n 'header-height': '26px',\n 'item-color': '#5C5C5C',\n 'item-bg-color': '#f8f8f8',\n 'font-size': '13px',\n 'item-padding': '0 10px',\n 'close-icon-left': '8px',\n 'item-distance': '10px',\n 'item-max-width': '348px',\n 'header-margin': '0 0 0 8px'\n };\n\n return { ...generateCssVars(initTabStyle, 'tabs', 'vft'), ...__props.tabsStyle };\n});\n\nconst { closeCurrent } = useTabs();\n\nhotkeys('command+e, ctrl+e', function () {\n closeCurrent();\n return false;\n});\n\nconst _contextMenuStyle = computed(() => {\n return {\n ...generateCssVars({\n border: '1px solid #dcdfe6',\n 'sub-item-height': '40px',\n 'item-min-width': '150px'\n }, 'menu', 'vft'),\n ...__props.contextMenuStyle\n };\n});\n</script>\n\n<template>\n <div :class=\"ns.b()\" :style=\"_tabsStyle\">\n <vft-tabs\n v-model:model-value=\"activePathRef\"\n type=\"card\"\n @tabClick=\"handleClick\"\n @tabRemove=\"handleRemove\"\n @tabContextMenu=\"handleContextMenu\"\n :closeIconCfg=\"{ color: 'white'}\"\n >\n <!--why key add index:key not update after sort -->\n <template v-for=\"(item, index) in getTabsState\" :key=\"getRouterKeyPath(item) + index\">\n <vft-tab-pane :closable=\"!(item.meta?.affix)\" :index=\"index\" :name=\"getRouterKeyPath(item)\">\n <template #label>\n <tab-content :contextMenuStyle=\"_contextMenuStyle\" :affixNum=\"affixList?.length\"\n :ref=\"setRefs(index)\" :tabItem=\"item\" />\n </template>\n </vft-tab-pane>\n </template>\n </vft-tabs>\n </div>\n</template>\n"],"names":["ns","useNamespace","__default__","DO_defineComponent","affixList","initAffixTabs","__props","useTabsDrag","tabStore","useMultipleTabStore","activePathRef","ref","activeIndex","fromRoute","router","useRouter","go","useRouterHelper","getTabsState","computed","item","_a","watchEffect","_activeIndex","getRouterKeyPath","onBeforeRouteLeave","unref","listenerRouteChange","route","meta","currentActivePath","hideTab","isHide","activePath","findParentRoute","handleClick","pane","clickTab","hideActiveRoutePath","_b","handleRemove","targetPath","refs","setRefs","useRefs","handleContextMenu","data","_index","_event","_tabsStyle","initTabStyle","generateCssVars","closeCurrent","useTabs","hotkeys","_contextMenuStyle"],"mappings":"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"}
1
+ {"version":3,"file":"multiple-tabs.vue2.js","sources":["../../../../../packages/components/multiple-tabs/multiple-tabs.vue"],"sourcesContent":["<script lang=\"ts\">\nconst ns = /* hoist-static*/ useNamespace('multiple-tabs')\n\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n name: ns.b()\n});</script>\n<script lang=\"ts\" setup>\nimport { getRouterKeyPath, listenerRouteChange, useRouterHelper } from '@vft/router';\nimport { useMultipleTabStore, useTabs } from '@vft/store';\nimport { useRefs } from '@vft/use';\nimport { generateCssVars } from '@vft/utils';\nimport hotkeys from 'hotkeys-js';\nimport { computed, ref, unref, watchEffect } from 'vue';\nimport type { RouteLocationNormalized, RouteMeta } from 'vue-router';\nimport { useRouter, onBeforeRouteLeave } from 'vue-router';\nimport { useNamespace } from '@vft-ui/hooks';\nimport { VftTabs, VftTabPane, type TabsPaneContext } from '@vft-ui/components';\n\nimport TabContent from './tab-content.vue';\nimport type { TabContentExpose } from './types';\nimport { initAffixTabs, useTabsDrag } from './use';\n\ninterface MultipleTabsProps {\n tabsStyle?: Record<string, Numberish>;\n contextMenuStyle?: Record<string, Numberish>;\n canDrag?: boolean;\n}\n\ndefineProps({\n \"tabsStyle\": null,\n \"contextMenuStyle\": null,\n \"canDrag\": { type: Boolean, }\n})\n\n\n\n;\n\nconst affixList = initAffixTabs();\n\nif (__props.canDrag) {\n useTabsDrag(affixList);\n}\n\nconst tabStore = useMultipleTabStore();\n\n// active path for tab\nconst activePathRef = ref('');\nconst activeIndex = ref(0);\nconst fromRoute = ref();\n\nconst router = useRouter();\nconst { go } = useRouterHelper();\n\n// get current tab list\nconst getTabsState = computed(() => {\n return tabStore.getTabList.filter((item) => {\n return !item.meta?.hideTab;\n });\n});\n\n\nwatchEffect(() => {\n if (activePathRef.value) {\n const _activeIndex = getTabsState.value.findIndex(item => {\n return getRouterKeyPath(item) === activePathRef.value;\n });\n if (_activeIndex === -1) {\n activeIndex.value = getTabsState.value?.length - 1;\n } else {\n activeIndex.value = _activeIndex;\n }\n activeIndex.value = activeIndex.value < affixList?.length ? affixList?.length - 1 : activeIndex.value;\n }\n});\n\nonBeforeRouteLeave(() => {\n fromRoute.value = unref(router.currentRoute);\n});\n\nlistenerRouteChange((route) => {\n if (!route) {\n return;\n }\n\n const { meta = {} } = route;\n const { currentActivePath, hideTab } = meta as RouteMeta;\n\n const isHide = !hideTab ? null : currentActivePath;\n\n // set current active tab value\n const activePath = getRouterKeyPath(route);\n\n if (activePathRef.value !== activePath) {\n activePathRef.value = activePath;\n }\n\n if (isHide) {\n // 如果当前 tab 是隐藏的,则从路由中根据 currentActivePath 寻找到此路由的信息,然后在 tabStore 添加此路由\n let findParentRoute = router.getRoutes().find((item) => item.path === currentActivePath);\n findParentRoute && tabStore.addTab(findParentRoute as unknown as RouteLocationNormalized, unref(fromRoute), activeIndex.value, route);\n } else {\n tabStore.addTab(unref(route), unref(fromRoute), activeIndex.value);\n }\n});\n\n// 点击 tab 根据 tab 传入的 path 路径,跳转到对应页面\nfunction handleClick (pane: TabsPaneContext) {\n if (activePathRef.value === pane.paneName) {\n \treturn;\n }\n const clickTab = getTabsState.value[pane.attrs.index];\n activePathRef.value = pane.paneName as string;\n const hideActiveRoutePath = (clickTab?.meta?.hideActiveRoute as RouteLocationNormalized)?.fullPath;\n if (hideActiveRoutePath) {\n go(hideActiveRoutePath);\n } else {\n go(clickTab.fullPath || clickTab.path);\n }\n}\n\n// click x close tab\nfunction handleRemove (targetPath: string) {\n tabStore.closeTabByKey(targetPath, router);\n}\n\nconst [refs, setRefs] = useRefs<TabContentExpose>();\n\nfunction handleContextMenu (data: {pane: {attrs: {index: number;};}; event: any;}) {\n const _index = data.pane.attrs.index;\n const _event = data.event;\n refs.value[_index].handleContext(_event);\n}\n\nconst _tabsStyle = computed(() => {\n let initTabStyle: Record<string, Numberish> = {\n padding: '4px 0 0',\n 'header-height': '26px',\n 'item-color': '#5C5C5C',\n 'item-bg-color': '#f8f8f8',\n 'font-size': '13px',\n 'item-padding': '0 10px',\n 'close-icon-left': '8px',\n 'item-distance': '10px',\n 'item-max-width': '348px',\n 'header-margin': '0 0 0 8px'\n };\n\n return { ...generateCssVars(initTabStyle, 'tabs', 'vft'), ...__props.tabsStyle };\n});\n\nconst { closeCurrent } = useTabs();\n\nhotkeys('command+e, ctrl+e', function () {\n closeCurrent();\n return false;\n});\n\nconst _contextMenuStyle = computed(() => {\n return {\n ...generateCssVars({\n border: '1px solid #dcdfe6',\n 'sub-item-height': '40px',\n 'item-min-width': '150px'\n }, 'menu', 'vft'),\n ...__props.contextMenuStyle\n };\n});\n</script>\n\n<template>\n <div :class=\"ns.b()\" :style=\"_tabsStyle\">\n <vft-tabs\n v-model:model-value=\"activePathRef\"\n type=\"card\"\n @tabClick=\"handleClick\"\n @tabRemove=\"handleRemove\"\n @tabContextMenu=\"handleContextMenu\"\n :closeIconCfg=\"{ color: 'white'}\"\n >\n <!--why key add index:key not update after sort -->\n <template v-for=\"(item, index) in getTabsState\" :key=\"getRouterKeyPath(item) + index\">\n <vft-tab-pane :closable=\"!(item.meta?.affix)\" :index=\"index\" :name=\"getRouterKeyPath(item)\">\n <template #label>\n <tab-content :contextMenuStyle=\"_contextMenuStyle\" :affixNum=\"affixList?.length\"\n :ref=\"setRefs(index)\" :tabItem=\"item\" />\n </template>\n </vft-tab-pane>\n </template>\n </vft-tabs>\n </div>\n</template>\n"],"names":["ns","useNamespace","__default__","DO_defineComponent","affixList","initAffixTabs","__props","useTabsDrag","tabStore","useMultipleTabStore","activePathRef","ref","activeIndex","fromRoute","router","useRouter","go","useRouterHelper","getTabsState","computed","item","_a","watchEffect","_activeIndex","getRouterKeyPath","onBeforeRouteLeave","unref","listenerRouteChange","route","meta","currentActivePath","hideTab","isHide","activePath","findParentRoute","handleClick","pane","clickTab","hideActiveRoutePath","_b","handleRemove","targetPath","refs","setRefs","useRefs","handleContextMenu","data","_index","_event","_tabsStyle","initTabStyle","generateCssVars","closeCurrent","useTabs","hotkeys","_contextMenuStyle"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue");require("@vft/utils");require("@vft/use");require("../divider/index.js");require("../icon/index.js");require("../avatar/index.js");require("../empty/index.js");require("../result/index.js");require("../exception/index.js");require("../tabs/index.js");require("../popper/index.js");require("../collapse-transition/index.js");require("../tooltip/index.js");require("../popover/index.js");require("../menu/index.js");require("./index.js");const s=require("../context-menu/useContextMenu.js"),c=require("./use/use-tab-dropdown.js");require("vue-router");require("@vft/store");const q=["title","onContextmenu"],m=e.defineComponent({__name:"tab-content",props:{tabItem:null,affixNum:null,contextMenuStyle:null},setup(t,{expose:i}){const[o]=s.useContextMenu(),n=e.computed(()=>t.tabItem.meta&&t.tabItem.meta.title),{getDropMenuList:l,handleContextMenu:a}=c.useTabDropdown(t.tabItem,t.affixNum);function u(r){a(t.tabItem)(r),o({event:r,styles:t.contextMenuStyle,items:l.value})}return i({handleContext:u}),(r,d)=>(e.openBlock(),e.createElementBlock("span",{title:e.unref(n),class:"vri-multiple-tabs__title",onContextmenu:e.withModifiers(u,["stop"])},e.toDisplayString(e.unref(n)),41,q))}});exports.default=m;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue");require("@vft/utils");require("@vft/use");require("../divider/index.js");require("../icon/index.js");require("../avatar/index.js");require("../empty/index.js");require("../result/index.js");require("../exception/index.js");require("../tabs/index.js");require("../popper/index.js");require("../collapse-transition/index.js");require("../tooltip/index.js");require("../popover/index.js");require("../menu/index.js");require("./index.js");require("../header-layout/index.js");require("../footer-layout/index.js");require("../iframe-layout/index.js");require("../router-view-content/index.js");require("../logo/index.js");const s=require("../context-menu/useContextMenu.js"),q=require("./use/use-tab-dropdown.js");require("vue-router");require("@vft/store");const c=["title","onContextmenu"],m=e.defineComponent({__name:"tab-content",props:{tabItem:null,affixNum:null,contextMenuStyle:null},setup(t,{expose:i}){const[o]=s.useContextMenu(),u=e.computed(()=>t.tabItem.meta&&t.tabItem.meta.title),{getDropMenuList:l,handleContextMenu:a}=q.useTabDropdown(t.tabItem,t.affixNum);function n(r){a(t.tabItem)(r),o({event:r,styles:t.contextMenuStyle,items:l.value})}return i({handleContext:n}),(r,f)=>(e.openBlock(),e.createElementBlock("span",{title:e.unref(u),class:"vft-multiple-tabs__title",onContextmenu:e.withModifiers(n,["stop"])},e.toDisplayString(e.unref(u)),41,c))}});exports.default=m;
2
2
  //# sourceMappingURL=tab-content.vue2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tab-content.vue2.js","sources":["../../../../../packages/components/multiple-tabs/tab-content.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed } from 'vue';\nimport { type RouteLocationNormalized } from 'vue-router';\nimport { useContextMenu } from '@vft-ui/components/context-menu';\nimport type { TabContentExpose } from './types';\nimport { useTabDropdown } from './use';\n\ninterface Props {\n tabItem: RouteLocationNormalized;\n affixNum: number;\n contextMenuStyle?: Record<string, Numberish>;\n}\n\ndefineProps({\n \"tabItem\": null,\n \"affixNum\": null,\n \"contextMenuStyle\": null\n})\n\nconst [createContextMenu] = useContextMenu();\n\nconst getTitle = computed(() => {\n return __props.tabItem.meta && (__props.tabItem.meta.title as string);\n});\n\nconst { getDropMenuList, handleContextMenu } = useTabDropdown(__props.tabItem, __props.affixNum);\n\nfunction handleContext(e: MouseEvent) {\n handleContextMenu(__props.tabItem)(e);\n createContextMenu({\n event: e,\n styles: __props.contextMenuStyle,\n items: getDropMenuList.value\n });\n}\n\ndefineExpose<TabContentExpose>({\n handleContext\n});\n</script>\n\n<template>\n <span :title=\"getTitle\" class=\"vri-multiple-tabs__title\" @contextmenu.stop=\"handleContext\">{{ getTitle }}</span>\n</template>\n"],"names":["createContextMenu","useContextMenu","getTitle","computed","__props","getDropMenuList","handleContextMenu","useTabDropdown","handleContext","e","expose"],"mappings":"w1BAmBM,KAAA,CAACA,CAAiB,EAAIC,EAAAA,iBAEtBC,EAAWC,EAAAA,SAAS,IACjBC,EAAQ,QAAQ,MAASA,EAAQ,QAAQ,KAAK,KACtD,EAEK,CAAE,gBAAAC,EAAiB,kBAAAC,GAAsBC,EAAAA,eAAeH,EAAQ,QAASA,EAAQ,QAAQ,EAE/F,SAASI,EAAcC,EAAe,CAClBH,EAAAF,EAAQ,OAAO,EAAEK,CAAC,EAClBT,EAAA,CAChB,MAAOS,EACP,OAAQL,EAAQ,iBAChB,MAAOC,EAAgB,KAAA,CACxB,CACH,CAE+B,OAAAK,EAAA,CAC7B,cAAAF,CAAA,CACD"}
1
+ {"version":3,"file":"tab-content.vue2.js","sources":["../../../../../packages/components/multiple-tabs/tab-content.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed } from 'vue';\nimport { type RouteLocationNormalized } from 'vue-router';\nimport { useContextMenu } from '@vft-ui/components/context-menu';\nimport type { TabContentExpose } from './types';\nimport { useTabDropdown } from './use';\n\ninterface Props {\n tabItem: RouteLocationNormalized;\n affixNum: number;\n contextMenuStyle?: Record<string, Numberish>;\n}\n\ndefineProps({\n \"tabItem\": null,\n \"affixNum\": null,\n \"contextMenuStyle\": null\n})\n\nconst [createContextMenu] = useContextMenu();\n\nconst getTitle = computed(() => {\n return __props.tabItem.meta && (__props.tabItem.meta.title as string);\n});\n\nconst { getDropMenuList, handleContextMenu } = useTabDropdown(__props.tabItem, __props.affixNum);\n\nfunction handleContext(e: MouseEvent) {\n handleContextMenu(__props.tabItem)(e);\n createContextMenu({\n event: e,\n styles: __props.contextMenuStyle,\n items: getDropMenuList.value\n });\n}\n\ndefineExpose<TabContentExpose>({\n handleContext\n});\n</script>\n\n<template>\n <span :title=\"getTitle\" class=\"vft-multiple-tabs__title\" @contextmenu.stop=\"handleContext\">{{ getTitle }}</span>\n</template>\n"],"names":["createContextMenu","useContextMenu","getTitle","computed","__props","getDropMenuList","handleContextMenu","useTabDropdown","handleContext","e","expose"],"mappings":"8gCAmBM,KAAA,CAACA,CAAiB,EAAIC,EAAAA,iBAEtBC,EAAWC,EAAAA,SAAS,IACjBC,EAAQ,QAAQ,MAASA,EAAQ,QAAQ,KAAK,KACtD,EAEK,CAAE,gBAAAC,EAAiB,kBAAAC,GAAsBC,EAAAA,eAAeH,EAAQ,QAASA,EAAQ,QAAQ,EAE/F,SAASI,EAAcC,EAAe,CAClBH,EAAAF,EAAQ,OAAO,EAAEK,CAAC,EAClBT,EAAA,CAChB,MAAOS,EACP,OAAQL,EAAQ,iBAChB,MAAOC,EAAgB,KAAA,CACxB,CACH,CAE+B,OAAAK,EAAA,CAC7B,cAAAF,CAAA,CACD"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),l=require("@vft/utils"),f=require("../../hooks/use-namespace/index.js");require("@popperjs/core");require("lodash");require("../../hooks/use-z-index/index.js");require("@vueuse/core");require("@vue/shared");require("../divider/index.js");const v=require("../icon/index.js");require("../avatar/index.js");require("../empty/index.js");require("./index.js");require("../exception/index.js");require("../tabs/index.js");require("../popper/index.js");require("../collapse-transition/index.js");require("../tooltip/index.js");require("../popover/index.js");require("../menu/index.js");require("@vft/use");require("../multiple-tabs/index.js");const n=f.useNamespace("result"),p=e.defineComponent({name:n.b()}),_=e.defineComponent({...p,props:{title:null,subTitle:null,icon:null},setup(a){var o,s;const q=e.getCurrentInstance(),r=e.useSlots(),t=e.computed(()=>l.singleAttrToObj(a.icon,"icon")),d=(o=t.value)!=null&&o.icon?e.h("div",{class:n.e("icon")},[e.h(v.VftIcon,{...t.value})]):(s=r.default)==null?void 0:s.call(r),i=u=>{const c=l.renderTNode(q,u);return c?e.h("div",{class:n.e(u)},[e.h("p",{},{default:()=>c})]):null};return()=>e.h("div",{class:n.b()},{default:()=>[d,i("title"),i("sub-title"),r.extra?e.h("div",{class:n.e("extra")},{default:()=>{var u;return(u=r.extra)==null?void 0:u.call(r)}}):null]})}});exports.default=_;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),l=require("@vft/utils"),f=require("../../hooks/use-namespace/index.js");require("@popperjs/core");require("lodash");require("../../hooks/use-z-index/index.js");require("@vueuse/core");require("@vue/shared");require("../divider/index.js");const v=require("../icon/index.js");require("../avatar/index.js");require("../empty/index.js");require("./index.js");require("../exception/index.js");require("../tabs/index.js");require("../popper/index.js");require("../collapse-transition/index.js");require("../tooltip/index.js");require("../popover/index.js");require("../menu/index.js");require("@vft/use");require("../multiple-tabs/index.js");require("../header-layout/index.js");require("../footer-layout/index.js");require("../iframe-layout/index.js");require("../router-view-content/index.js");require("../logo/index.js");const i=f.useNamespace("result"),p=e.defineComponent({name:i.b()}),_=e.defineComponent({...p,props:{title:null,subTitle:null,icon:null},setup(q){var o,s;const a=e.getCurrentInstance(),r=e.useSlots(),n=e.computed(()=>l.singleAttrToObj(q.icon,"icon")),d=(o=n.value)!=null&&o.icon?e.h("div",{class:i.e("icon")},[e.h(v.VftIcon,{...n.value})]):(s=r.default)==null?void 0:s.call(r),t=u=>{const c=l.renderTNode(a,u);return c?e.h("div",{class:i.e(u)},[e.h("p",{},{default:()=>c})]):null};return()=>e.h("div",{class:i.b()},{default:()=>[d,t("title"),t("sub-title"),r.extra?e.h("div",{class:i.e("extra")},{default:()=>{var u;return(u=r.extra)==null?void 0:u.call(r)}}):null]})}});exports.default=_;
2
2
  //# sourceMappingURL=result.vue2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"result.vue2.js","sources":["../../../../../packages/components/result/result.vue"],"sourcesContent":["<script lang=\"ts\">\nconst ns = /* hoist-static*/ useNamespace('result')\n\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n name: ns.b()\n});</script>\n<script setup lang=\"ts\">\nimport { renderTNode, singleAttrToObj } from '@vft/utils';\nimport { h, getCurrentInstance, computed, useSlots } from 'vue';\nimport { useNamespace } from '@vft-ui/hooks';\nimport { type IconProps, VftIcon } from '@vft-ui/components';\n\ninterface Props {\n title?: string | number;\n subTitle?: string | number;\n icon?: IconProps;\n}\n\ndefineProps({\n \"title\": null,\n \"subTitle\": null,\n \"icon\": null\n})\n\n\n\n;\n\nconst instance = getCurrentInstance()!;\n\nconst slots = useSlots();\n\nconst _icon = computed(() => {\n return singleAttrToObj(__props.icon, 'icon') as IconProps;\n});\n\nconst vIcon = _icon.value?.icon ? h('div', {\n class: ns.e('icon')\n}, [h(VftIcon, { ..._icon.value })]) : slots.default?.();\n\nconst vCon = (attrName: string) => {\n const nodeCon = renderTNode(instance, attrName);\n return nodeCon ? h(\n 'div',\n {\n class: ns.e(attrName)\n }, [h('p', {}, { default: () => nodeCon })]\n ) : null;\n};\n\ndefineRender(() => {\n return (\n h(\n 'div', { class: ns.b() }, {\n default: () => [\n vIcon,\n vCon('title'),\n vCon('sub-title'),\n slots.extra ? h('div', { class: ns.e('extra') }, { default: ()=> slots.extra?.() }) : null\n ]\n }\n )\n );\n});\n</script>\n"],"names":["ns","useNamespace","__default__","DO_defineComponent","instance","getCurrentInstance","slots","useSlots","_icon","computed","singleAttrToObj","__props","vIcon","_a","h","VftIcon","_b","vCon","attrName","nodeCon","renderTNode"],"mappings":"+vBACA,MAAMA,EAAuBC,EAAAA,aAAa,QAAQ,EAGlDC,EAA6BC,EAAAA,gBAAmB,CAC9C,KAAMH,EAAG,EAAE,CACb,CAAC,wFAuBD,MAAMI,EAAWC,EAAAA,qBAEXC,EAAQC,EAAAA,WAERC,EAAQC,EAAAA,SAAS,IACdC,kBAAgBC,EAAQ,KAAM,MAAM,CAC5C,EAEKC,GAAQC,EAAAL,EAAM,QAAN,MAAAK,EAAa,KAAOC,EAAAA,EAAE,MAAO,CACzC,MAAOd,EAAG,EAAE,MAAM,CACjB,EAAA,CAACc,EAAE,EAAAC,UAAS,CAAE,GAAGP,EAAM,KAAO,CAAA,CAAC,CAAC,GAAIQ,EAAAV,EAAM,UAAN,YAAAU,EAAA,KAAAV,GAEjCW,EAAQC,GAAqB,CAC3B,MAAAC,EAAUC,EAAAA,YAAYhB,EAAUc,CAAQ,EAC9C,OAAOC,EAAUL,EAAA,EACf,MACA,CACE,MAAOd,EAAG,EAAEkB,CAAQ,CACtB,EAAG,CAACJ,EAAAA,EAAE,IAAK,CAAC,EAAG,CAAE,QAAS,IAAMK,CAAQ,CAAC,CAAC,CACxC,EAAA,IAAA,EAGO,MAAA,IAETL,EAAA,EACE,MAAO,CAAE,MAAOd,EAAG,GAAI,EAAG,CACxB,QAAS,IAAM,CACbY,EACAK,EAAK,OAAO,EACZA,EAAK,WAAW,EAChBX,EAAM,MAAQQ,EAAA,EAAE,MAAO,CAAE,MAAOd,EAAG,EAAE,OAAO,CAAE,EAAG,CAAE,QAAS,IAAA,OAAK,OAAAa,EAAAP,EAAM,QAAN,YAAAO,EAAA,KAAAP,GAAiB,CAAA,EAAI,IACxF,CACF,CAAA"}
1
+ {"version":3,"file":"result.vue2.js","sources":["../../../../../packages/components/result/result.vue"],"sourcesContent":["<script lang=\"ts\">\nconst ns = /* hoist-static*/ useNamespace('result')\n\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n name: ns.b()\n});</script>\n<script setup lang=\"ts\">\nimport { renderTNode, singleAttrToObj } from '@vft/utils';\nimport { h, getCurrentInstance, computed, useSlots } from 'vue';\nimport { useNamespace } from '@vft-ui/hooks';\nimport { type IconProps, VftIcon } from '@vft-ui/components';\n\ninterface Props {\n title?: string | number;\n subTitle?: string | number;\n icon?: IconProps;\n}\n\ndefineProps({\n \"title\": null,\n \"subTitle\": null,\n \"icon\": null\n})\n\n\n\n;\n\nconst instance = getCurrentInstance()!;\n\nconst slots = useSlots();\n\nconst _icon = computed(() => {\n return singleAttrToObj(__props.icon, 'icon') as IconProps;\n});\n\nconst vIcon = _icon.value?.icon ? h('div', {\n class: ns.e('icon')\n}, [h(VftIcon, { ..._icon.value })]) : slots.default?.();\n\nconst vCon = (attrName: string) => {\n const nodeCon = renderTNode(instance, attrName);\n return nodeCon ? h(\n 'div',\n {\n class: ns.e(attrName)\n }, [h('p', {}, { default: () => nodeCon })]\n ) : null;\n};\n\ndefineRender(() => {\n return (\n h(\n 'div', { class: ns.b() }, {\n default: () => [\n vIcon,\n vCon('title'),\n vCon('sub-title'),\n slots.extra ? h('div', { class: ns.e('extra') }, { default: ()=> slots.extra?.() }) : null\n ]\n }\n )\n );\n});\n</script>\n"],"names":["ns","useNamespace","__default__","DO_defineComponent","instance","getCurrentInstance","slots","useSlots","_icon","computed","singleAttrToObj","__props","vIcon","_a","h","VftIcon","_b","vCon","attrName","nodeCon","renderTNode"],"mappings":"q7BACA,MAAMA,EAAuBC,EAAAA,aAAa,QAAQ,EAGlDC,EAA6BC,EAAAA,gBAAmB,CAC9C,KAAMH,EAAG,EAAE,CACb,CAAC,wFAuBD,MAAMI,EAAWC,EAAAA,qBAEXC,EAAQC,EAAAA,WAERC,EAAQC,EAAAA,SAAS,IACdC,kBAAgBC,EAAQ,KAAM,MAAM,CAC5C,EAEKC,GAAQC,EAAAL,EAAM,QAAN,MAAAK,EAAa,KAAOC,EAAAA,EAAE,MAAO,CACzC,MAAOd,EAAG,EAAE,MAAM,CACjB,EAAA,CAACc,EAAE,EAAAC,UAAS,CAAE,GAAGP,EAAM,KAAO,CAAA,CAAC,CAAC,GAAIQ,EAAAV,EAAM,UAAN,YAAAU,EAAA,KAAAV,GAEjCW,EAAQC,GAAqB,CAC3B,MAAAC,EAAUC,EAAAA,YAAYhB,EAAUc,CAAQ,EAC9C,OAAOC,EAAUL,EAAA,EACf,MACA,CACE,MAAOd,EAAG,EAAEkB,CAAQ,CACtB,EAAG,CAACJ,EAAAA,EAAE,IAAK,CAAC,EAAG,CAAE,QAAS,IAAMK,CAAQ,CAAC,CAAC,CACxC,EAAA,IAAA,EAGO,MAAA,IAETL,EAAA,EACE,MAAO,CAAE,MAAOd,EAAG,GAAI,EAAG,CACxB,QAAS,IAAM,CACbY,EACAK,EAAK,OAAO,EACZA,EAAK,WAAW,EAChBX,EAAM,MAAQQ,EAAA,EAAE,MAAO,CAAE,MAAOd,EAAG,EAAE,OAAO,CAAE,EAAG,CAAE,QAAS,IAAA,OAAK,OAAAa,EAAAP,EAAM,QAAN,YAAAO,EAAA,KAAAP,GAAiB,CAAA,EAAI,IACxF,CACF,CAAA"}