@dt-frames/ui 2.0.1 → 2.0.2

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/es/assets/data/icons/actions.d.ts +1 -0
  2. package/es/assets/data/icons/actions.ts +423 -0
  3. package/es/assets/data/icons/code.d.ts +1 -0
  4. package/es/assets/data/icons/code.ts +10 -0
  5. package/es/assets/data/icons/commuticate.d.ts +1 -0
  6. package/es/assets/data/icons/commuticate.ts +182 -0
  7. package/es/assets/data/icons/currency.d.ts +1 -0
  8. package/es/assets/data/icons/currency.ts +44 -0
  9. package/es/assets/data/icons/devices.d.ts +1 -0
  10. package/es/assets/data/icons/devices.ts +126 -0
  11. package/es/assets/data/icons/edit.d.ts +1 -0
  12. package/es/assets/data/icons/edit.ts +163 -0
  13. package/es/assets/data/icons/file.d.ts +1 -0
  14. package/es/assets/data/icons/file.ts +99 -0
  15. package/es/assets/data/icons/math.d.ts +1 -0
  16. package/es/assets/data/icons/math.ts +53 -0
  17. package/es/assets/data/icons/message.d.ts +1 -0
  18. package/es/assets/data/icons/message.ts +68 -0
  19. package/es/assets/data/icons/navigate.d.ts +1 -0
  20. package/es/assets/data/icons/navigate.ts +181 -0
  21. package/es/assets/data/icons/other.d.ts +1 -0
  22. package/es/assets/data/icons/other.ts +324 -0
  23. package/es/assets/data/index.d.ts +4 -0
  24. package/es/assets/data/index.ts +58 -0
  25. package/es/assets/icons/iconfont.css +7266 -0
  26. package/es/assets/icons/iconfont.eot +0 -0
  27. package/es/assets/icons/iconfont.svg +5445 -0
  28. package/es/assets/icons/iconfont.ttf +0 -0
  29. package/es/assets/icons/iconfont.woff +0 -0
  30. package/es/assets/icons/iconfont.woff2 +0 -0
  31. package/es/assets/imgs/header/avatar.png +0 -0
  32. package/es/assets/imgs/logo/logo.png +0 -0
  33. package/es/assets/imgs/table/empty.png +0 -0
  34. package/es/assets/locales/en.d.ts +101 -0
  35. package/es/assets/locales/en.ts +101 -0
  36. package/es/assets/locales/index.d.ts +2 -0
  37. package/es/assets/locales/index.ts +5 -0
  38. package/es/assets/locales/zh.d.ts +103 -0
  39. package/es/assets/locales/zh.ts +103 -0
  40. package/es/components/container/index.d.ts +93 -0
  41. package/es/components/container/index.js +288 -0
  42. package/es/components/container/index.less +64 -0
  43. package/es/components/container/src/components/bar.d.ts +14 -0
  44. package/es/components/container/src/components/scroll-bar.d.ts +70 -0
  45. package/es/components/container/src/hooks/scroll.d.ts +10 -0
  46. package/es/components/container/src/scroll-container.d.ts +76 -0
  47. package/es/components/container/src/slot-container.d.ts +18 -0
  48. package/es/components/container/src/types/scroll.type.d.ts +22 -0
  49. package/es/components/container/src/utils/scroll.d.ts +5 -0
  50. package/es/components/curd/index.d.ts +2 -0
  51. package/es/components/curd/index.js +3098 -0
  52. package/es/components/curd/src/components/Curd.d.ts +1451 -0
  53. package/es/components/curd/src/hooks/useCurd.d.ts +112 -0
  54. package/es/components/curd/src/props.d.ts +188 -0
  55. package/es/components/curd/src/types/curd.type.d.ts +19 -0
  56. package/es/components/drawer/index.d.ts +8041 -0
  57. package/es/components/drawer/index.js +837 -0
  58. package/es/components/drawer/index.less +10 -0
  59. package/es/components/drawer/src/components/DrawerFooter.d.ts +139 -0
  60. package/es/components/drawer/src/components/DrawerHeader.d.ts +13 -0
  61. package/es/components/drawer/src/hooks/useDrawer.d.ts +3 -0
  62. package/es/components/drawer/src/index.d.ts +8043 -0
  63. package/es/components/drawer/src/props.d.ts +64 -0
  64. package/es/components/drawer/src/types/index.type.d.ts +48 -0
  65. package/es/components/form/index.d.ts +3367 -0
  66. package/es/components/form/index.js +1895 -0
  67. package/es/components/form/index.less +141 -0
  68. package/es/components/form/src/components/FormButtons.d.ts +88 -0
  69. package/es/components/form/src/components/FormItem.d.ts +313 -0
  70. package/es/components/form/src/components/componentMap.d.ts +4 -0
  71. package/es/components/form/src/components/formIcon.d.ts +1231 -0
  72. package/es/components/form/src/components/formInputUseDialog.d.ts +911 -0
  73. package/es/components/form/src/components/index.d.ts +4 -0
  74. package/es/components/form/src/components/radioButton.d.ts +34 -0
  75. package/es/components/form/src/enums/index.d.ts +7 -0
  76. package/es/components/form/src/hooks/helper.d.ts +14 -0
  77. package/es/components/form/src/hooks/useForm.d.ts +6 -0
  78. package/es/components/form/src/hooks/useFormActions.d.ts +12 -0
  79. package/es/components/form/src/hooks/useFormEvent.d.ts +25 -0
  80. package/es/components/form/src/hooks/useFormValue.d.ts +3 -0
  81. package/es/components/form/src/hooks/useFormValues.d.ts +11 -0
  82. package/es/components/form/src/hooks/useLabelWidth.d.ts +22 -0
  83. package/es/components/form/src/index.d.ts +3113 -0
  84. package/es/components/form/src/props.d.ts +133 -0
  85. package/es/components/form/src/types/actions.type.d.ts +15 -0
  86. package/es/components/form/src/types/form.type.d.ts +70 -0
  87. package/es/components/icons/index.d.ts +3 -0
  88. package/es/components/icons/index.js +1969 -0
  89. package/es/components/icons/index.less +42 -0
  90. package/es/components/icons/src/pick-icon.d.ts +455 -0
  91. package/es/components/icons/src/svg-icon.d.ts +44 -0
  92. package/es/components/modal/index.d.ts +3 -0
  93. package/es/components/modal/index.js +1192 -0
  94. package/es/components/modal/index.less +54 -0
  95. package/es/components/modal/src/components/CloseIcon.d.ts +40 -0
  96. package/es/components/modal/src/components/Modal.d.ts +215 -0
  97. package/es/components/modal/src/components/ModalFooter.d.ts +139 -0
  98. package/es/components/modal/src/components/ModalWrap.d.ts +153 -0
  99. package/es/components/modal/src/hooks/useDrag.d.ts +7 -0
  100. package/es/components/modal/src/hooks/useFullScreen.d.ts +6 -0
  101. package/es/components/modal/src/hooks/useModal.d.ts +5 -0
  102. package/es/components/modal/src/index.d.ts +881 -0
  103. package/es/components/modal/src/props.d.ts +100 -0
  104. package/es/components/modal/src/types/modal.type.d.ts +17 -0
  105. package/es/components/source/hooks/useDownload.d.ts +8 -0
  106. package/es/components/source/hooks/useSource.d.ts +40 -0
  107. package/es/components/source/index.d.ts +2 -0
  108. package/es/components/source/index.js +331 -0
  109. package/es/components/source/types/source.type.d.ts +37 -0
  110. package/es/components/source/utils/index.d.ts +8 -0
  111. package/es/components/table/index.d.ts +3 -0
  112. package/es/components/table/index.js +4414 -0
  113. package/es/components/table/index.less +183 -0
  114. package/es/components/table/src/components/TableAction.d.ts +70 -0
  115. package/es/components/table/src/components/TableHeader.d.ts +1243 -0
  116. package/es/components/table/src/components/TableRender.d.ts +13 -0
  117. package/es/components/table/src/components/editTable/CellComponent.d.ts +22 -0
  118. package/es/components/table/src/components/editTable/EditTableCell.d.ts +93 -0
  119. package/es/components/table/src/components/editTable/componentMap.d.ts +4 -0
  120. package/es/components/table/src/components/editTable/index.d.ts +9 -0
  121. package/es/components/table/src/components/editTable/props.d.ts +27 -0
  122. package/es/components/table/src/components/tableSetting/Column.d.ts +69 -0
  123. package/es/components/table/src/components/tableSetting/Download.d.ts +1029 -0
  124. package/es/components/table/src/components/tableSetting/DownloadCtrl.d.ts +995 -0
  125. package/es/components/table/src/components/tableSetting/Fullscreen.d.ts +22 -0
  126. package/es/components/table/src/components/tableSetting/index.d.ts +1137 -0
  127. package/es/components/table/src/hooks/useColumns.d.ts +14 -0
  128. package/es/components/table/src/hooks/useCustomRow.d.ts +20 -0
  129. package/es/components/table/src/hooks/useDataSource.d.ts +16 -0
  130. package/es/components/table/src/hooks/useHeader.d.ts +8 -0
  131. package/es/components/table/src/hooks/useHeaderCode.d.ts +3 -0
  132. package/es/components/table/src/hooks/useLoading.d.ts +6 -0
  133. package/es/components/table/src/hooks/usePagination.d.ts +122 -0
  134. package/es/components/table/src/hooks/useRow.d.ts +5 -0
  135. package/es/components/table/src/hooks/useRowSelection.d.ts +12 -0
  136. package/es/components/table/src/hooks/useTable.d.ts +9 -0
  137. package/es/components/table/src/hooks/useTableInstance.d.ts +16 -0
  138. package/es/components/table/src/hooks/useTableScroll.d.ts +13 -0
  139. package/es/components/table/src/index.d.ts +990 -0
  140. package/es/components/table/src/props.d.ts +244 -0
  141. package/es/components/table/src/types/actions.type.d.ts +22 -0
  142. package/es/components/table/src/types/header.type.d.ts +23 -0
  143. package/es/components/table/src/types/table.type.d.ts +92 -0
  144. package/es/directives/icon.d.ts +2 -0
  145. package/es/directives/index.d.ts +7 -0
  146. package/es/directives/index.js +2015 -0
  147. package/es/directives/permission.d.ts +2 -0
  148. package/es/global.d.ts +7 -0
  149. package/es/index.d.ts +1 -0
  150. package/es/index.js +3242 -0
  151. package/es/theme/index.d.ts +10 -0
  152. package/es/theme/index.js +3242 -0
  153. package/es/theme/index.less +603 -0
  154. package/es/theme/src/components/content/index.d.ts +27 -0
  155. package/es/theme/src/components/feature/back-top.d.ts +5 -0
  156. package/es/theme/src/components/feature/index.d.ts +7 -0
  157. package/es/theme/src/components/footer/index.d.ts +31 -0
  158. package/es/theme/src/components/header/components/bread-crumb.d.ts +6 -0
  159. package/es/theme/src/components/header/components/fullscreen.d.ts +5 -0
  160. package/es/theme/src/components/header/components/index.d.ts +11 -0
  161. package/es/theme/src/components/header/components/lang-picker.d.ts +23 -0
  162. package/es/theme/src/components/header/components/logo.d.ts +36 -0
  163. package/es/theme/src/components/header/components/menu-filter.d.ts +22 -0
  164. package/es/theme/src/components/header/components/notify.d.ts +23 -0
  165. package/es/theme/src/components/header/components/setting-theme.d.ts +222 -0
  166. package/es/theme/src/components/header/components/size.d.ts +282 -0
  167. package/es/theme/src/components/header/components/theme-drawer/feature.d.ts +138 -0
  168. package/es/theme/src/components/header/components/theme-drawer/index.d.ts +3 -0
  169. package/es/theme/src/components/header/components/theme-drawer/menu-type.d.ts +16 -0
  170. package/es/theme/src/components/header/components/theme-drawer/select.d.ts +58 -0
  171. package/es/theme/src/components/header/components/theme-drawer/switch.d.ts +49 -0
  172. package/es/theme/src/components/header/components/trigger.d.ts +10 -0
  173. package/es/theme/src/components/header/components/user-info.d.ts +36 -0
  174. package/es/theme/src/components/header/helper/change-theme.d.ts +13 -0
  175. package/es/theme/src/components/header/helper/menu-tree.d.ts +3 -0
  176. package/es/theme/src/components/header/index.d.ts +698 -0
  177. package/es/theme/src/components/header/multiple-header.d.ts +787 -0
  178. package/es/theme/src/components/sider/components/basic-menu/basic-menu-item.d.ts +62 -0
  179. package/es/theme/src/components/sider/components/basic-menu/basic-menu.d.ts +207 -0
  180. package/es/theme/src/components/sider/components/basic-menu/basic-sub-menu-item.d.ts +127 -0
  181. package/es/theme/src/components/sider/components/basic-menu/menu-item-content.d.ts +26 -0
  182. package/es/theme/src/components/sider/components/drag-bar.d.ts +14 -0
  183. package/es/theme/src/components/sider/components/layout-menu.d.ts +22 -0
  184. package/es/theme/src/components/sider/components/props.d.ts +69 -0
  185. package/es/theme/src/components/sider/components/sider-trigger.d.ts +18 -0
  186. package/es/theme/src/components/sider/helper/sider.d.ts +12 -0
  187. package/es/theme/src/components/sider/helper/split-menu.d.ts +10 -0
  188. package/es/theme/src/components/sider/index.d.ts +70 -0
  189. package/es/theme/src/components/tabs/components/TabContent.d.ts +6 -0
  190. package/es/theme/src/components/tabs/components/TabRedo.d.ts +21 -0
  191. package/es/theme/src/components/tabs/components/index.d.ts +3 -0
  192. package/es/theme/src/components/tabs/hooks/useMultifyTabs.d.ts +7 -0
  193. package/es/theme/src/components/tabs/hooks/useTabDropdown.d.ts +6 -0
  194. package/es/theme/src/components/tabs/index.d.ts +63 -0
  195. package/es/theme/src/components/tabs/types/tabs.type.d.ts +7 -0
  196. package/es/theme/src/enums/index.d.ts +1 -0
  197. package/es/theme/src/enums/theme.enum.d.ts +33 -0
  198. package/es/theme/src/hooks/index.d.ts +6 -0
  199. package/es/theme/src/hooks/useDragLine.d.ts +2 -0
  200. package/es/theme/src/hooks/useHeader.d.ts +25 -0
  201. package/es/theme/src/hooks/useMenu.d.ts +27 -0
  202. package/es/theme/src/hooks/useMultifyTab.d.ts +7 -0
  203. package/es/theme/src/hooks/useOpenKeys.d.ts +7 -0
  204. package/es/theme/src/hooks/useTheme.d.ts +9 -0
  205. package/es/theme/src/index.d.ts +1644 -0
  206. package/es/theme/src/setting/theme.setting.d.ts +2 -0
  207. package/es/theme/src/stores/index.d.ts +3 -0
  208. package/es/theme/src/stores/routeReuse.store.d.ts +23 -0
  209. package/es/theme/src/stores/theme.store.d.ts +15 -0
  210. package/es/theme/src/types/index.d.ts +3 -0
  211. package/es/theme/src/types/menu.type.d.ts +15 -0
  212. package/es/theme/src/types/theme.type.d.ts +60 -0
  213. package/es/utils/withInstall.d.ts +4 -0
  214. package/index.d.ts +10 -0
  215. package/index.js +34 -0
  216. package/package.json +1 -5
  217. package/tailwind.config.cjs +11 -0
  218. package/tsconfig.json +41 -0
  219. package/tsconfig.node.json +9 -0
  220. package/vite.config.ts +78 -0
@@ -0,0 +1,3242 @@
1
+ import { BackTop, Breadcrumb, Empty, InputSearch, Popover, Avatar, Tooltip, Select, Switch, Divider, Button, Drawer, MenuItem, SubMenu, Menu, LayoutHeader, LayoutSider, MenuDivider, Dropdown, TabPane, Tabs, LayoutContent, Layout, ConfigProvider } from "ant-design-vue/es";
2
+ import "ant-design-vue/es/config-provider/style";
3
+ import "ant-design-vue/es/layout/style";
4
+ import { toRaw, unref as unref$1, computed as computed$1, onMounted as onMounted$1, nextTick as nextTick$1, defineComponent as defineComponent$1, openBlock, createBlock, createCommentVNode, createElementBlock, createElementVNode, normalizeClass, normalizeStyle, withDirectives, toDisplayString, vShow, ref as ref$1, watchEffect, createVNode, withCtx, Fragment, renderList, isRef, resolveDirective, getCurrentInstance, inject, onUnmounted, h as h$1, resolveDynamicComponent, renderSlot, mergeProps, createTextVNode, watch as watch$1, normalizeProps, guardReactiveProps, resolveComponent, reactive, toRef, withModifiers, createSlots, Transition, KeepAlive } from "vue";
5
+ import { useRouter as useRouter$1, RouterView } from "vue-router";
6
+ import { DtCache, CacheKey, deepMerge, Pages, useGo, useRedo, Language, isObject, useTimeoutFn, useI18n, isBoolean, localeList, changeLocale, off, on, getParentSlots, isFunction, copyText, isUrl, openWindow, isNullAndUnDef, menuList2Map, useApp, withInstall as withInstall$1 } from "@dt-frames/core";
7
+ import { defineStore } from "pinia";
8
+ import { trim } from "lodash-es";
9
+ import { useDebounceFn, useFullscreen, useThrottleFn } from "@vueuse/core";
10
+ import "ant-design-vue/es/back-top/style";
11
+ import "ant-design-vue/es/popover/style";
12
+ import "ant-design-vue/es/input/style";
13
+ import "ant-design-vue/es/empty/style";
14
+ import { Popover as Popover$1, Modal, LayoutFooter } from "ant-design-vue";
15
+ import "ant-design-vue/es/button/style";
16
+ import zhCN from "ant-design-vue/es/locale/zh_CN";
17
+ import en from "ant-design-vue/es/locale/en_US";
18
+ import require$$0 from "dayjs";
19
+ import "dayjs/locale/zh-cn";
20
+ var Theme = /* @__PURE__ */ ((Theme2) => {
21
+ Theme2["DARK"] = "dark";
22
+ Theme2["LIGHT"] = "light";
23
+ return Theme2;
24
+ })(Theme || {});
25
+ var MenuType = /* @__PURE__ */ ((MenuType2) => {
26
+ MenuType2["SIDE"] = "sidebar";
27
+ MenuType2["TOP_MENU"] = "top-menu";
28
+ MenuType2["MIX"] = "mix";
29
+ return MenuType2;
30
+ })(MenuType || {});
31
+ var MenuMode = /* @__PURE__ */ ((MenuMode2) => {
32
+ MenuMode2["INLINE"] = "inline";
33
+ MenuMode2["HORIZONTAL"] = "horizontal";
34
+ MenuMode2["VERTICAL"] = "vertical";
35
+ return MenuMode2;
36
+ })(MenuMode || {});
37
+ var ContentMode = /* @__PURE__ */ ((ContentMode2) => {
38
+ ContentMode2["FULL"] = "full";
39
+ ContentMode2["FIXED"] = "fixed";
40
+ return ContentMode2;
41
+ })(ContentMode || {});
42
+ var MenuSplitTye = /* @__PURE__ */ ((MenuSplitTye2) => {
43
+ MenuSplitTye2[MenuSplitTye2["NONE"] = 0] = "NONE";
44
+ MenuSplitTye2[MenuSplitTye2["TOP"] = 1] = "TOP";
45
+ MenuSplitTye2[MenuSplitTye2["LEFT"] = 2] = "LEFT";
46
+ return MenuSplitTye2;
47
+ })(MenuSplitTye || {});
48
+ var UiSize = /* @__PURE__ */ ((UiSize2) => {
49
+ UiSize2["LARGE"] = "large";
50
+ UiSize2["MIDDLE"] = "middle";
51
+ UiSize2["SMALL"] = "small";
52
+ return UiSize2;
53
+ })(UiSize || {});
54
+ const defaultThemeConf = {
55
+ content: {
56
+ contentMode: ContentMode.FULL
57
+ },
58
+ headOptions: {
59
+ fixed: true,
60
+ theme: Theme.LIGHT,
61
+ showLogo: true,
62
+ showBackToTop: true,
63
+ useLockPage: true,
64
+ size: UiSize.SMALL,
65
+ showSize: true,
66
+ showBreadCrumb: true,
67
+ showFullScreen: true,
68
+ showSearch: true,
69
+ showNotice: true,
70
+ showLocaleSwitch: true,
71
+ showSettingTheme: true,
72
+ showLoginOut: true
73
+ },
74
+ menuOptions: {
75
+ fixed: true,
76
+ theme: Theme.DARK,
77
+ collapsed: false,
78
+ collapsedShowTitle: false,
79
+ canDrag: true,
80
+ show: true,
81
+ hidden: false,
82
+ split: false,
83
+ menuWidth: 240,
84
+ trigger: true,
85
+ type: MenuType.SIDE,
86
+ mode: MenuMode.INLINE
87
+ },
88
+ footerOptions: {
89
+ show: false,
90
+ height: 48,
91
+ title: "Copyright(C) 2021 by www.ithinkdt.com. All rights reserved.",
92
+ subTitle: "Privacy Statement"
93
+ },
94
+ routeReuse: {
95
+ show: true,
96
+ cache: true,
97
+ canDrag: true,
98
+ showQuick: true,
99
+ showRedo: true,
100
+ showFold: true
101
+ }
102
+ };
103
+ const useThemeStore = defineStore({
104
+ id: "dt-theme",
105
+ state: () => ({
106
+ themeConf: DtCache.getLocal(CacheKey.THEME) ?? defaultThemeConf,
107
+ pageLoading: false
108
+ }),
109
+ getters: {
110
+ getThemeConf() {
111
+ return this.themeConf;
112
+ },
113
+ getHeaderConf() {
114
+ return this.themeConf.headOptions;
115
+ },
116
+ getMenuConf() {
117
+ return this.themeConf.menuOptions;
118
+ },
119
+ getFooterConf() {
120
+ return this.themeConf.footerOptions;
121
+ },
122
+ getRouteReuseConf() {
123
+ return this.themeConf.routeReuse;
124
+ },
125
+ getPageLoading() {
126
+ return this.pageLoading;
127
+ }
128
+ },
129
+ actions: {
130
+ setThemeConf(options = {}) {
131
+ let newThemeConf = deepMerge(this.themeConf, options);
132
+ this.themeConf = deepMerge(defaultThemeConf, newThemeConf);
133
+ DtCache.setLocal(CacheKey.THEME, this.themeConf);
134
+ }
135
+ }
136
+ });
137
+ const useRouteReuseStore = defineStore({
138
+ id: "route-reuse",
139
+ state: () => ({
140
+ cacheTabList: /* @__PURE__ */ new Set(),
141
+ tabList: DtCache.getLocal(CacheKey.THEME)?.routeReuse?.cache ? DtCache.getLocal(CacheKey.ROUTE_REUSE) || [] : [],
142
+ lastDragEndIndex: 0
143
+ }),
144
+ getters: {
145
+ getTabList() {
146
+ return this.tabList;
147
+ },
148
+ getCachedTabList() {
149
+ return Array.from(this.cacheTabList);
150
+ },
151
+ getLastDragEndIndex() {
152
+ return this.lastDragEndIndex;
153
+ }
154
+ },
155
+ actions: {
156
+ async addTab(route) {
157
+ const { path, name, fullPath, params, query, meta } = route;
158
+ if (path === Pages.NOT_FOUND || path === Pages.LOGIN || path === Pages.BASE_PAGE) {
159
+ return;
160
+ }
161
+ let updateIndex = -1;
162
+ const tabHasExits = this.tabList.some((tab, index2) => {
163
+ updateIndex = index2;
164
+ return (tab.fullPath || tab.path) === (fullPath || path);
165
+ });
166
+ if (tabHasExits) {
167
+ const curTab = toRaw(this.tabList)[updateIndex];
168
+ curTab.params = params || curTab.params;
169
+ curTab.query = query || curTab.query;
170
+ curTab.fullPath = fullPath || curTab.fullPath;
171
+ this.tabList.splice(updateIndex, 1, curTab);
172
+ } else {
173
+ this.tabList.push(JSON.parse(JSON.stringify(route)));
174
+ }
175
+ this.updateCacheTab();
176
+ },
177
+ closeTab(path, router) {
178
+ const go = useGo(router);
179
+ const index2 = this.tabList.findIndex((item) => item.path === path);
180
+ let page;
181
+ if (index2 === 0) {
182
+ if (this.tabList.length !== 1) {
183
+ page = this.tabList[index2 + 1];
184
+ }
185
+ } else {
186
+ page = this.tabList[index2 - 1];
187
+ }
188
+ this.bulkCloseTabs([path]);
189
+ this.updateCacheTab();
190
+ path === router.currentRoute.value.path && go(page.path);
191
+ },
192
+ closeAllTab(currentRoute, router) {
193
+ const go = useGo(router);
194
+ let filterTabList = this.tabList.filter((item) => item?.meta?.affix ?? false);
195
+ const route = filterTabList.length > 0 ? filterTabList[filterTabList.length - 1] : unref$1(currentRoute);
196
+ this.tabList = [route];
197
+ this.updateCacheTab();
198
+ go(route.path);
199
+ },
200
+ closeLeftTabs(path) {
201
+ const index2 = this.tabList.findIndex((item) => item.path === path);
202
+ if (index2 > 0) {
203
+ const leftTabs = this.tabList.slice(0, index2);
204
+ const pathList = [];
205
+ for (const item of leftTabs) {
206
+ const affix = item?.meta?.affix ?? false;
207
+ if (!affix) {
208
+ pathList.push(item.fullPath);
209
+ }
210
+ }
211
+ this.bulkCloseTabs(pathList);
212
+ }
213
+ this.updateCacheTab();
214
+ },
215
+ closeRightTabs(path) {
216
+ const index2 = this.tabList.findIndex((item) => item.path === path);
217
+ if (index2 >= 0 && index2 < this.tabList.length - 1) {
218
+ const rightTabs = this.tabList.slice(index2 + 1, this.tabList.length);
219
+ const pathList = [];
220
+ for (const item of rightTabs) {
221
+ const affix = item?.meta?.affix ?? false;
222
+ if (!affix) {
223
+ pathList.push(item.fullPath);
224
+ }
225
+ }
226
+ this.bulkCloseTabs(pathList);
227
+ }
228
+ this.updateCacheTab();
229
+ },
230
+ closeOtherTabs(path) {
231
+ const pathList = [];
232
+ for (let item of this.tabList) {
233
+ const affix = item?.meta?.affix ?? false;
234
+ if (item.path !== path && !affix) {
235
+ pathList.push(item.path);
236
+ }
237
+ }
238
+ this.bulkCloseTabs(pathList);
239
+ this.updateCacheTab();
240
+ },
241
+ bulkCloseTabs(pathList) {
242
+ this.tabList = this.tabList.filter((item) => !pathList.includes(item.fullPath));
243
+ },
244
+ updateCacheTab() {
245
+ const cacheTab = DtCache.getLocal(CacheKey.THEME)?.routeReuse?.cache;
246
+ cacheTab && DtCache.setLocal(CacheKey.ROUTE_REUSE, this.tabList);
247
+ const cacheMap = /* @__PURE__ */ new Set();
248
+ for (const tab of this.tabList) {
249
+ if (tab.meta?.hideTab) {
250
+ continue;
251
+ }
252
+ const name = tab.name;
253
+ cacheMap.add(name);
254
+ }
255
+ this.cacheTabList = cacheMap;
256
+ },
257
+ async refreshPage(router) {
258
+ const findTab = this.getCachedTabList.find((item) => item === unref$1(router.currentRoute).name);
259
+ if (findTab) {
260
+ this.cacheTabList.delete(findTab.toString());
261
+ }
262
+ const redo = useRedo(router);
263
+ await redo();
264
+ },
265
+ sortTabs(oldIndex, newIndex) {
266
+ const currentTab = this.tabList[oldIndex];
267
+ this.tabList.splice(oldIndex, 1);
268
+ this.tabList.splice(newIndex, 0, currentTab);
269
+ this.lastDragEndIndex = this.lastDragEndIndex + 1;
270
+ }
271
+ }
272
+ });
273
+ function useMenu() {
274
+ const { getMenuConf, setThemeConf } = useThemeStore();
275
+ const getCollapsedShowTitle = computed$1(() => getMenuConf.collapsedShowTitle);
276
+ const getIsSidebarType = computed$1(() => getMenuConf.type === MenuType.SIDE);
277
+ const getMenuFixed = computed$1(() => getMenuConf.fixed);
278
+ const getShowMenu = computed$1(() => getMenuConf.show);
279
+ const getShowSidebar = computed$1(() => {
280
+ return unref$1(getSplit) || unref$1(getShowMenu) && unref$1(getMenuMode) !== MenuMode.HORIZONTAL;
281
+ });
282
+ const getMenuHidden = computed$1(() => getMenuConf.hidden);
283
+ const getMenuTheme = computed$1(() => getMenuConf.theme);
284
+ const getTrigger = computed$1(() => getMenuConf.trigger);
285
+ const getCanDrag = computed$1(() => getMenuConf.canDrag);
286
+ const getIsMixMode = computed$1(() => {
287
+ return unref$1(getMenuMode) === MenuMode.INLINE && unref$1(getMenuType) === MenuType.MIX;
288
+ });
289
+ const getMenuWidth = computed$1(() => unref$1(getIsMixMode) ? Number(getMenuConf.menuWidth) - 40 : getMenuConf.menuWidth);
290
+ const getLogoWidth = computed$1(() => getMenuConf.menuWidth);
291
+ const getMenuType = computed$1(() => getMenuConf.type);
292
+ const getIsTopMenu = computed$1(() => unref$1(getMenuType) === MenuType.TOP_MENU);
293
+ const getMenuMode = computed$1(() => getMenuConf.mode);
294
+ const getSplit = computed$1(() => getMenuConf.split);
295
+ const getCollapsed = computed$1(() => getMenuConf.collapsed);
296
+ const getIsHorizontal = computed$1(() => unref$1(getMenuMode) === MenuMode.HORIZONTAL);
297
+ const setThemeStore = (conf = {}) => setThemeConf(conf);
298
+ const toggleCollapsed = () => setThemeStore({
299
+ menuOptions: {
300
+ collapsed: !unref$1(getCollapsed)
301
+ }
302
+ });
303
+ const getMiniWidthNumber = computed$1(() => getMenuConf.collapsedShowTitle ? 80 : 48);
304
+ const getRealWidth = computed$1(() => {
305
+ return unref$1(getCollapsed) ? unref$1(getMiniWidthNumber) : unref$1(getMenuWidth);
306
+ });
307
+ const getCalcContentWidth = computed$1(() => {
308
+ const width = unref$1(getIsTopMenu) || !unref$1(getShowMenu) || unref$1(getSplit) && unref$1(getMenuHidden) ? 0 : unref$1(getRealWidth);
309
+ return `calc(100% - ${unref$1(width)}px)`;
310
+ });
311
+ return {
312
+ getCollapsedShowTitle,
313
+ getIsSidebarType,
314
+ getMenuFixed,
315
+ getShowMenu,
316
+ getShowSidebar,
317
+ getMenuHidden,
318
+ getMenuTheme,
319
+ getTrigger,
320
+ getMenuWidth,
321
+ getLogoWidth,
322
+ getMenuType,
323
+ getIsTopMenu,
324
+ getMenuMode,
325
+ getSplit,
326
+ getCollapsed,
327
+ getIsHorizontal,
328
+ getMiniWidthNumber,
329
+ getRealWidth,
330
+ getCalcContentWidth,
331
+ getIsMixMode,
332
+ getCanDrag,
333
+ toggleCollapsed,
334
+ setThemeStore
335
+ };
336
+ }
337
+ function useMultipleTab() {
338
+ const { getRouteReuseConf } = useThemeStore();
339
+ const getShowMultipleTab = computed(() => getRouteReuseConf.show);
340
+ const getShowQuick = computed(() => getRouteReuseConf.showQuick);
341
+ const getShowRedo = computed(() => getRouteReuseConf.showRedo);
342
+ const getCanCache = computed(() => getRouteReuseConf.cache);
343
+ const getCanDrag = computed(() => getRouteReuseConf.canDrag);
344
+ return {
345
+ getShowMultipleTab,
346
+ getShowQuick,
347
+ getShowRedo,
348
+ getCanCache,
349
+ getCanDrag
350
+ };
351
+ }
352
+ function useHeader() {
353
+ const HEADER_HEIGHT = 48;
354
+ const TABS_HEIGHT = 33;
355
+ const { getHeaderConf = {} } = useThemeStore();
356
+ const {
357
+ getIsSidebarType,
358
+ getMenuType,
359
+ getShowMenu,
360
+ getMenuHidden,
361
+ getTrigger,
362
+ getMenuMode,
363
+ getSplit,
364
+ getIsTopMenu,
365
+ getIsMixMode
366
+ } = useMenu();
367
+ const { getShowMultipleTab } = useMultipleTab();
368
+ const getHeaderTheme = computed$1(() => getHeaderConf.theme);
369
+ const getFixed = computed$1(() => getHeaderConf.fixed);
370
+ const getShowHeaderLogo = computed$1(() => unref$1(getShowLogo) && !unref$1(getIsSidebarType));
371
+ const getShowSearch = computed$1(() => getHeaderConf.showSearch);
372
+ const getShowHeaderTrigger = computed$1(() => {
373
+ if (unref$1(getMenuType) === MenuType.TOP_MENU || !unref$1(getShowMenu) || unref$1(getMenuHidden)) {
374
+ return false;
375
+ }
376
+ return unref$1(getTrigger);
377
+ });
378
+ const getShowBreadCrumb = computed$1(() => getHeaderConf.showBreadCrumb);
379
+ const getShowBread = computed$1(
380
+ () => unref$1(getMenuMode) !== MenuMode.HORIZONTAL && !unref$1(getSplit) && unref$1(getShowBreadCrumb)
381
+ );
382
+ const getShowTopMenu = computed$1(() => unref$1(getMenuMode) === MenuMode.HORIZONTAL || unref$1(getSplit));
383
+ const getShowNotice = computed$1(() => getHeaderConf.showNotice);
384
+ const getShowFullScreen = computed$1(() => getHeaderConf.showFullScreen);
385
+ const getShowLocale = computed$1(() => getHeaderConf.showLocaleSwitch);
386
+ const getShowSettingTheme = computed$1(() => getHeaderConf.showSettingTheme);
387
+ const getShowFullHeaderRef = computed$1(() => {
388
+ return !unref$1(getIsSidebarType) && !unref$1(getIsTopMenu);
389
+ });
390
+ const getHeaderHeight = computed$1(() => {
391
+ let height = 0;
392
+ height += HEADER_HEIGHT;
393
+ if (unref$1(getShowMultipleTab) && !unref$1(getSplit)) {
394
+ height += TABS_HEIGHT;
395
+ }
396
+ return height;
397
+ });
398
+ const getTabsHeight = computed$1(() => TABS_HEIGHT);
399
+ const getShowInsetHeaderRef = computed$1(() => {
400
+ return unref$1(getIsSidebarType) || unref$1(getIsTopMenu);
401
+ });
402
+ const getShowBackToTop = computed$1(() => getHeaderConf.showBackToTop);
403
+ const getIsZH = computed$1(() => {
404
+ let local = DtCache.getLocal(CacheKey.LOCALE);
405
+ if (!local)
406
+ return true;
407
+ return local === Language.ZH;
408
+ });
409
+ const getUiSize = computed$1(() => getHeaderConf?.size ?? UiSize.SMALL);
410
+ const getShowUiSize = computed$1(() => getHeaderConf?.showSize);
411
+ const getShowLogo = computed$1(() => getHeaderConf.showLogo);
412
+ const getShowLoginOut = computed$1(() => getHeaderConf.showLoginOut);
413
+ const loginOutClick = getHeaderConf.logoutClick;
414
+ return {
415
+ getHeaderTheme,
416
+ getFixed,
417
+ getShowSearch,
418
+ getShowHeaderLogo,
419
+ getShowHeaderTrigger,
420
+ getShowBread,
421
+ getShowTopMenu,
422
+ getShowFullScreen,
423
+ getShowLocale,
424
+ getShowSettingTheme,
425
+ getShowNotice,
426
+ getShowFullHeaderRef,
427
+ getHeaderHeight,
428
+ getTabsHeight,
429
+ getShowInsetHeaderRef,
430
+ getShowBackToTop,
431
+ getIsZH,
432
+ getUiSize,
433
+ getShowLogo,
434
+ getShowLoginOut,
435
+ getShowUiSize,
436
+ loginOutClick
437
+ };
438
+ }
439
+ function useTheme() {
440
+ const { getThemeConf, getPageLoading } = useThemeStore();
441
+ const getLayoutContentMode = computed$1(() => getThemeConf.content.contentMode);
442
+ const getFooter = computed$1(() => getThemeConf.footerOptions || {});
443
+ const getShowFooter = computed$1(() => isObject(getThemeConf.footerOptions) ? getThemeConf.footerOptions.show : true);
444
+ const getContentMode = computed$1(() => getThemeConf.content.contentMode);
445
+ const getOpenPageLoading = computed$1(() => getPageLoading);
446
+ return {
447
+ getLayoutContentMode,
448
+ getPageLoading,
449
+ getFooter,
450
+ getShowFooter,
451
+ getContentMode,
452
+ getOpenPageLoading
453
+ };
454
+ }
455
+ function deleteChildrenProp(menu) {
456
+ let obj = { ...menu };
457
+ delete obj.children;
458
+ return obj;
459
+ }
460
+ function getBreadCrumb(path, menus) {
461
+ const _menus = menus || DtCache.getLocal(CacheKey.MENUS)?.children || [];
462
+ let routes = [];
463
+ let getParentByPath = (menu, path2 = "") => {
464
+ if (menu.children && menu.children.length) {
465
+ menu.children.forEach((subMenu) => {
466
+ subMenu.parentMenus = [...menu.parentMenus].concat([deleteChildrenProp(subMenu)]);
467
+ getParentByPath(subMenu, path2);
468
+ });
469
+ }
470
+ if (menu.url === path2) {
471
+ routes = menu.parentMenus;
472
+ }
473
+ };
474
+ _menus.forEach((menu) => {
475
+ menu.parentMenus = [deleteChildrenProp(menu)];
476
+ getParentByPath(menu, path);
477
+ });
478
+ return routes;
479
+ }
480
+ function getFilterMenu(filter = "", flag = false) {
481
+ let _menus = [];
482
+ if (!trim(filter) && !flag)
483
+ return _menus;
484
+ let getTargetMenus = (menusArr) => {
485
+ menusArr.forEach((menu) => {
486
+ if (menu.children && menu.children.length) {
487
+ getTargetMenus(menu.children);
488
+ } else if (menu.label.indexOf(filter) !== -1 || flag && !trim(filter)) {
489
+ _menus.push(menu);
490
+ }
491
+ });
492
+ };
493
+ getTargetMenus(DtCache.getLocal(CacheKey.MENUS)?.children);
494
+ return _menus;
495
+ }
496
+ function useOpenKeys(menuState, menus, type) {
497
+ async function setOpenKeys(path) {
498
+ if (type === MenuType.TOP_MENU)
499
+ return;
500
+ useTimeoutFn(
501
+ () => {
502
+ if (menus?.length === 0) {
503
+ menuState.openKeys = [];
504
+ return;
505
+ }
506
+ const parentNodes = getBreadCrumb(path, menus);
507
+ menuState.openKeys = parentNodes.map((it) => it.id);
508
+ },
509
+ 20,
510
+ true
511
+ );
512
+ }
513
+ const getOpenKeys = computed$1(() => menuState.openKeys);
514
+ function resetKeys() {
515
+ menuState.selectedKeys = [];
516
+ menuState.openKeys = [];
517
+ }
518
+ function handleOpenChange(openKeys) {
519
+ menuState.openKeys = openKeys;
520
+ }
521
+ return {
522
+ getOpenKeys,
523
+ setOpenKeys,
524
+ resetKeys,
525
+ handleOpenChange
526
+ };
527
+ }
528
+ function useDragLine(siderRef, dragBarRef) {
529
+ const { getMiniWidthNumber, getCollapsed, setThemeStore } = useMenu();
530
+ onMounted$1(() => {
531
+ nextTick$1(() => {
532
+ const exec = useDebounceFn(changeWrapWidth, 80);
533
+ exec();
534
+ });
535
+ });
536
+ function getEl(elRef) {
537
+ const el = unref$1(elRef);
538
+ if (!el)
539
+ return null;
540
+ if (Reflect.has(el, "$el")) {
541
+ return unref$1(elRef)?.$el;
542
+ }
543
+ return unref$1(elRef);
544
+ }
545
+ function handleMouseMove(ele, wrap, clientX) {
546
+ document.onmousemove = function(innerE) {
547
+ innerE = innerE || window.event;
548
+ let iT = ele.left + (innerE.clientX - clientX);
549
+ const maxT = 800;
550
+ const minT = unref$1(getMiniWidthNumber);
551
+ iT < 0 && (iT = 0);
552
+ iT > maxT && (iT = maxT);
553
+ iT < minT && (iT = minT);
554
+ ele.style.left = wrap.style.width = iT + "px";
555
+ return false;
556
+ };
557
+ }
558
+ function removeMouseup(ele) {
559
+ const wrap = getEl(siderRef);
560
+ document.onmouseup = function() {
561
+ document.onmousemove = null;
562
+ document.onmouseup = null;
563
+ wrap.style.transition = "width 0.2s";
564
+ const width = parseInt(wrap.style.width);
565
+ setThemeStore({
566
+ menuOptions: {
567
+ menuWidth: width
568
+ }
569
+ });
570
+ ele.releaseCapture?.();
571
+ };
572
+ }
573
+ function changeWrapWidth() {
574
+ const ele = getEl(dragBarRef);
575
+ if (!ele)
576
+ return;
577
+ const wrap = getEl(siderRef);
578
+ if (!wrap)
579
+ return;
580
+ ele.onmousedown = (e) => {
581
+ wrap.style.transition = "unset";
582
+ const clientX = e?.clientX;
583
+ ele.left = ele.offsetLeft;
584
+ handleMouseMove(ele, wrap, clientX);
585
+ removeMouseup(ele);
586
+ ele.setCapture?.();
587
+ return false;
588
+ };
589
+ }
590
+ }
591
+ const _sfc_main$y = /* @__PURE__ */ defineComponent$1({
592
+ __name: "back-top",
593
+ setup(__props) {
594
+ const getTarget = () => document.getElementById("dt-layout-content");
595
+ const { getShowBackToTop } = useHeader();
596
+ return (_ctx, _cache) => {
597
+ const _component_ABackTop = BackTop;
598
+ return unref$1(getShowBackToTop) ? (openBlock(), createBlock(_component_ABackTop, {
599
+ key: 0,
600
+ target: getTarget,
601
+ visibilityHeight: 300
602
+ })) : createCommentVNode("", true);
603
+ };
604
+ }
605
+ });
606
+ const _sfc_main$x = /* @__PURE__ */ defineComponent$1({
607
+ __name: "index",
608
+ setup(__props) {
609
+ return (_ctx, _cache) => {
610
+ return openBlock(), createBlock(_sfc_main$y);
611
+ };
612
+ }
613
+ });
614
+ const _sfc_main$w = /* @__PURE__ */ defineComponent$1({
615
+ __name: "fullscreen",
616
+ setup(__props) {
617
+ const { toggle, isFullscreen } = useFullscreen();
618
+ return (_ctx, _cache) => {
619
+ return openBlock(), createElementBlock("span", {
620
+ class: "dt_header_icon text-lg text-gray-800 cursor-pointer px-3 hover:bg-gray-500 hover:bg-opacity-50 transition-all duration-300",
621
+ onClick: _cache[0] || (_cache[0] = (...args) => unref$1(toggle) && unref$1(toggle)(...args))
622
+ }, [
623
+ createElementVNode("i", {
624
+ class: normalizeClass(["i block", !unref$1(isFullscreen) ? "ic:baseline-fullscreen" : "ic:baseline-fullscreen-exit"])
625
+ }, null, 2)
626
+ ]);
627
+ };
628
+ }
629
+ });
630
+ const DtLogo = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAA5CAYAAACMGIOFAAAACXBIWXMAAAsTAAALEwEAmpwYAAAzfGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAxOS0wNS0wNlQxMToyNzoyOCswODowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMS0xMC0yNFQxNDozMToxNiswODowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjEtMTAtMjRUMTQ6MzE6MTYrMDg6MDAiIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NWU1YmFlNWUtOTQzOS1lYjQ4LWJiMjEtZjZjM2UwOWYxODM2IiB4bXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6ZGU4M2YxYWYtODBkMS1kMTRlLTg5ZWMtNGE1MjUzNzFkZTcwIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6OTg1ODkwODQtMjkyYi01ODRiLTkzODAtNWJmY2E3NjJmYzk5Ij4gPHBob3Rvc2hvcDpEb2N1bWVudEFuY2VzdG9ycz4gPHJkZjpCYWc+IDxyZGY6bGk+MDBCQTBEMEExQ0M5RDAwNTMxNTlBMjBGRTcxOTA2RTg8L3JkZjpsaT4gPHJkZjpsaT4wMTQwNjdEM0ZDNjM5OTM3RTc4QkFCNDFBMzdCNzMwNTwvcmRmOmxpPiA8cmRmOmxpPjAyRDI2REY0MDMxREJFOUM5N0Q5Mzg1RjE5QTUwMUQ0PC9yZGY6bGk+IDxyZGY6bGk+MDcxNDVGQzc5RjkxODMwQjNGRUNFOUZCODNEMDZDN0M8L3JkZjpsaT4gPHJkZjpsaT4wRDgyMkI0MThFM0E2RjZCMjBDMEM2NjkwOUI0QTc5QTwvcmRmOmxpPiA8cmRmOmxpPjBGOUM0NTJBMkZGQTE3QzU4RTQ5MzVFQUU3RUJEQzI1PC9yZGY6bGk+IDxyZGY6bGk+MTY2N0I2OTg3MUJGRjQ4MThEODU5RENGMjIzOTUyMjg8L3JkZjpsaT4gPHJkZjpsaT4xOTNFMUQ2M0ExRDJEN0VBN0U0MTFBMzlBQzNENkJBMzwvcmRmOmxpPiA8cmRmOmxpPjIwNjY1MENBM0RBNUM2OURFQjZCRjAyMTQ3MEUzM0Y1PC9yZGY6bGk+IDxyZGY6bGk+MjE1QzM3NDMwNUM1MUVDQ0FENUM1RDUzQThCMEMwMkI8L3JkZjpsaT4gPHJkZjpsaT4yMThDREMzM0Y0OTE1NTMzQzRFQjMwRUIzQTU3MjM1RjwvcmRmOmxpPiA8cmRmOmxpPjI0N0QxRUVDRThCMjkzOTJCNzQ3RjVCMzQ3Rjc5RDRGPC9yZGY6bGk+IDxyZGY6bGk+MkVDOURBNDM2NEQ2RTBCRjYwNzExRDJFOUY1OEM4ODg8L3JkZjpsaT4gPHJkZjpsaT4zNzEyQTgyQjE3NEM0OUMwMDg2MTUxMEJBODEzMDlBOTwvcmRmOmxpPiA8cmRmOmxpPjNEQjIwQTEwQzQyQjZGMkZEMEMwQkYyNUZDNEU5NzFFPC9yZGY6bGk+IDxyZGY6bGk+NDFDMTBEM0IzRUFBQTUwQjI5ODRBNzY1MEM5QzQzMTc8L3JkZjpsaT4gPHJkZjpsaT40OTQxN0MwQjQxMDgxRkJDRDQxNjAwQTM1QUE0MkEwMzwvcmRmOmxpPiA8cmRmOmxpPjRCQUVBREUyQjhFMTk4MTA2MkM5RjQzMTFCREI5Njg5PC9yZGY6bGk+IDxyZGY6bGk+NEU5NTUxOEI4OUI2MjEwOTRFNDdGMEU3MUQ4MUYxRjQ8L3JkZjpsaT4gPHJkZjpsaT41NDlEOUJFODJBRjc3NzVFOTMzRDc3QjJDOEY4N0QwMDwvcmRmOmxpPiA8cmRmOmxpPjU1NTQ4QzhDN0VEODdCRDI2MUI1RTNDRTBCQzdGNUM3PC9yZGY6bGk+IDxyZGY6bGk+NTg0RjVFMjNEMEFFMDA0NUQ4OENBM0I3MTUxNDQyODk8L3JkZjpsaT4gPHJkZjpsaT41OUVDMTdCMzk5Q0Y3QzFDQkJEN0FBMDUwODYyMzY1OTwvcmRmOmxpPiA8cmRmOmxpPjVDRUFCMzA0QUVFMTUyMzVGMDM3Mjg1NTdDMjFCQTBBPC9yZGY6bGk+IDxyZGY6bGk+NUUwRkI3MDI4QjU5NDlBNEFDRkU0NjIwNjRCQjVFNTc8L3JkZjpsaT4gPHJkZjpsaT42NzlCNDI1OEZGQjVDQTZBQUM2MDgzQkJBQTNFMDYwRTwvcmRmOmxpPiA8cmRmOmxpPjZDMDkzMzdDRjQxRTU3NTQ2NTFFMTJCNkRDMTU5OTcyPC9yZGY6bGk+IDxyZGY6bGk+NzU1RTZBRjM1MzM3ODA5MkM3NzlCNDE1MDAwRDg0RkE8L3JkZjpsaT4gPHJkZjpsaT43OUJDMjI2N0QxODVCOTM4MTA4RDQ2N0ZBNEI0QzVBOTwvcmRmOmxpPiA8cmRmOmxpPjdDMTMzQkQ1NDA3MzQ3RTVBREJFMzJBNDlCODIzRUFEPC9yZGY6bGk+IDxyZGY6bGk+ODE2QzZGQUI0NTQ4NzMyNjU5NTc2NkNCNEYzNDFEQUQ8L3JkZjpsaT4gPHJkZjpsaT44MzZFNkZCNjlEMDk4Njg5RDc4RDdEQjlEQjhDREExRTwvcmRmOmxpPiA8cmRmOmxpPjg1QTM5MUEyMkM2NEY1Q0IwQTM3QTg2MzZFNTRGOUY2PC9yZGY6bGk+IDxyZGY6bGk+OEE0QkZEOTQzQUZGOTlEMDdEREU1MUYwMDFDNEE5REE8L3JkZjpsaT4gPHJkZjpsaT45NEMzMkU2QTE1MTdCNzBBNDM5ODVBQTc2NTM0NEI2OTwvcmRmOmxpPiA8cmRmOmxpPkFCMzlENjBENTExNEVFOEE4RkJBREUyRTkyMEM0NUExPC9yZGY6bGk+IDxyZGY6bGk+QjIwMUZGOTM3QzYwNzkxMEY4MUY5REJERkNDRkZGRTk8L3JkZjpsaT4gPHJkZjpsaT5CRTYxMzMxREQ1MkI2MjlFNjgwNUVCMzQ3MkRFRTJEMjwvcmRmOmxpPiA8cmRmOmxpPkJFQzM4NTRBODA1RkQ1NkM3RThEMkUxN0M0NzA5ODkwPC9yZGY6bGk+IDxyZGY6bGk+Qzg5NkI0OTZGMTgyREU1MTgzNTg3MEIwOTM0MUQ4RTg8L3JkZjpsaT4gPHJkZjpsaT5DQkJEN0U5OEM1MEI0RTE0RDA0MkNFNTMzQUE1QTgyMDwvcmRmOmxpPiA8cmRmOmxpPkQ5NjQzNUIwNkRFNTQ2OTg4MDUyMjVDNERBRkUzOEIyPC9yZGY6bGk+IDxyZGY6bGk+RTJCNTc3NDY4ODE4NEI2Mzk4OTE0RTI4MkQ5RThFODQ8L3JkZjpsaT4gPHJkZjpsaT5FNDJCMEFDNjg1OTAyMTcyQzIxNjEyQkJGMjFGRjg0QjwvcmRmOmxpPiA8cmRmOmxpPkU1QjQzNTBCREVFMTQ1NUMxM0UxNTU1NEM2MEY2QjQ0PC9yZGY6bGk+IDxyZGY6bGk+RUI3NzhBRjNENDVERUNBQkFCRUEwRkZDQTg4QTEyNDM8L3JkZjpsaT4gPHJkZjpsaT5GNTY3RjdBNDRCNTJFQUMwNTYxNkVBODdGRjlEMzMxQzwvcmRmOmxpPiA8cmRmOmxpPkY1RjgzQTQyMzI4N0E0MUUyMTM5ODdDNTRERjhFOUQ3PC9yZGY6bGk+IDxyZGY6bGk+RkVBQkZDQTQyQzY1N0ZFN0Y1MjEzOEQ0NkQyRTQ2MjM8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6MDQ3NzM4NzYtZTg2Zi0xMWU3LTg4MmMtYWRiZmQ5NWE3NjU0PC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjA4ZjFmZmI5LWM1MWUtMTE3OS1iNTJlLWFkNGFiZjVjNmRhZDwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDowYjM2MmY4Yi1hY2I2LTExZTUtOGZmZS1lMzQ2MTgxMGQzZTk8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6MTAwMDFlZTUtZGVmNy03MjRiLTg3OTctZDg4YjE0ZWI3YjExPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjE0Y2YxMGI4LWNlOTItMTE3OS04ZDJhLWIzNjcyY2QwOWI2MzwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDoxNzM4ZDA5ZS05YTk4LTExZTUtOTE3ZS1kNGExOTRhYWE2N2U8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6MWZkODY3YmItYzJlOC0xMTc5LWFkOTYtZjBjODUzNzZkYjFkPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjIxMzMzNjE3LWNjYWItMDg0OS04YWFmLWE0MzQwY2ZiZGVmZjwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDoyNGI4YzllYS05MDU3LTExZTYtODBkYi04ZTk5ZjZiZDFiNTY8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6MmRmNzZkN2YtOWMyMy0xMWU1LWJlOTUtZDNiYjFlNDBhYmZhPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjM0NDUxNTQyLTlhYjQtMTFlNS05MTdlLWQ0YTE5NGFhYTY3ZTwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDozNTU4NmExZi00M2FiLTExNzktYTg2Ny1hMmFiMmIxYjU2OTY8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6Mzg2ZDAwYzAtNmRjMi0xMTc3LWFiNjUtYTIwYWMzNDdjYzI2PC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjNhNDdmMTQxLWJlNmItZjE0My1hMzM3LTM4ZmIwZGQzMzljYjwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDozYjk1ZmY2Zi1hYjAwLTExNzktOGEyYS1lYmY4MzMyOTc0NTc8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6NDVjOGUzYjMtYjg5Mi00ZTQwLTg3YjUtYWIwNTk0NmFjMDE2PC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjQ4YTI0ZDkyLWUyMzMtMjM0NC1iNTQ1LWE3OTA3MDY1MjJiMzwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo0YmNiZWZkMS04MTBlLTJkNGEtYTA4NS04MGVmYmMwZjJiODA8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6NTUzNTRjMmEtYzMyOC0xMTc5LWFkOTYtZjBjODUzNzZkYjFkPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjcxODQ0ZWUwLWMwY2MtMTE3OS05ODliLWNlNWRkM2Y3NmNhYjwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo3MzFhNjYwZC1jY2Q4LWNiNDQtOWZkYS1jOTY1NjAwYTlmOTI8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6NzdiYjEwZmYtYjI4ZC0xMWU4LThiN2UtZjE3MTY4ZDMxZTljPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjgyNGIxODI5LTliYTUtMTFlNS1hZmM2LTg3NjcxZTA3ZTBjNDwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo4MzQ2YzY1NC1kMzM0LTEwNDMtYjZjNS1kYTM3N2QwYWIyNTg8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6OTgyODRiN2UtOWIzNi0xMWU1LTkxN2UtZDRhMTk0YWFhNjdlPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjlkNDM5Y2UwLWIyM2UtMTFlNS05MTYxLWY5ZDdjYzE1OTQzMjwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo5ZWQ1MWIzNS1hYzM2LTExNzktYmE0ZS1kZjIxY2JlNzI1Yjk8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6YTE2NTQzNjYtODg0ZS0xMWU1LThjOTAtYzY5MjYzYzdiOTYxPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmEzMzUzZGI3LWE4MDItOTc0Mi1iZmYzLTI0Mzk4YjY5OTI5ZTwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDphZDM0MWU1Ni1iMjczLTE2NDktODY2ZC0xN2E5MjcxZjExODg8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6YmExNjlmMjMtOTA1OC0xMWU2LTgwZGItOGU5OWY2YmQxYjU2PC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmJlNjYzNjRhLWUwM2YtNWU0OS05YmY0LWM0YjIwMTc3NTliNTwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDpiZTY2YzcxYy1hYTQ1LTExZTUtYmY4Yi1hZWNlNTk4MWMzNmQ8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6Yzc5Yzc3YzYtOWMxOS0xMWU1LWJlOTUtZDNiYjFlNDBhYmZhPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmNjZDJjZGNhLTQ2OWUtMTE3OS1iYzUzLWRmNDJmNjRkYjZhYzwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDpkZDE2YWYyNi1iNGI2LTExNzktODkwYi05YjY5NDhiZDgzZTk8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6ZTNmZmVlNjgtM2MxMi03MzQzLWE1NTItOTAxYmFkMTViOGMwPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmVhOGYyYzNkLTkwNTMtMTFlNi04MGRiLThlOTlmNmJkMWI1NjwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDpmMTc1NDg3ZC05YjcwLTExZTUtYWU3Mi1lYmI4OWUwZmQwZWY8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6Zjg4Y2M5NGQtYzcwZS0xMTc5LWJjNzQtYzljNmY5NjcyYTQ0PC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmY5MTdmNjM5LTkwNGUtMTFlNi05MThjLWZmZjgyYjQxY2YyZTwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDpmYWU1ZDczNy05YTIzLTExZTUtOTJlNC04YzM5MzI2N2QwMWM8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjAwMWU2NDI1LWI5ZTgtMWQ0My1hY2EzLWQwMzM3MDM4NGFjYzwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6MDE4MDExNzQwNzIwNjgxMTgwODNBMzJBMUI2ODVERTQ8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjAyZDdmMjgzLTE0ZTUtNDAyOS1hZWZhLThmMGIwOTk0NWQyMDwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6MDUyN2I1ODctZGRiZi1jNzQ2LWI3YzYtZGQ5MDlhNzhhZDllPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDowRUVEMzFGQkQxQjBFMjExQjc5OUFEQTUzNjYzOTg5NTwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6MGNkOWFiZWMtM2UyOC1hZjQ3LTk1NjctZjBlY2EwZTU4MGFkPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDoxMDdGMjg5NDUxNTAxMUU4QkNGOEU4NzI4QzNERDBCMDwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6MTBjZGNiZGMtY2M2NS00ZWJmLWEzZmEtMWZmNjIyMTc2ODZjPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDoxM2Q2YjY5My0zM2QwLWZmNDctOTk1Yy0yZGRkYzQ0NTgxMTI8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjFGRjAyMjJBNzI3RkUzMTE4QTIyRkI5QzU1Rjk3RkVGPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDoxY2MzNWUzOC0yMTY3LTk4NDgtOTNhOC05ZmMyNTAxNGMzMzM8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjI2NzdiOWEzLTQxZDItMzE0NC1iNTI0LWQ3N2U1YTYyZGI0MDwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6MjZlYjJmNWItNWViYy00ODk3LWEyZmItYjc0MGQ5ZTMwZDc2PC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDoyQkU5QjkyOUIyNkExMUU1QjIxNjhFODMzRDJENUU0RjwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6MmEyYTA2OWEtNjEwNS00NzM3LWE0ZjktNmJiNWEwNzI2ZjdhPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDoyYzRhZDFjYy1lNzUwLTFlNDctYTlmMi0xNTEwZTFiMDRiOTM8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjJkZWZlNGVjLTdjYzctYmU0OS1iYzg5LTQ5OGUzZmQ1ZjVmZjwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6MzRDNjBDN0JCMkQwMTFFNTg4NUM5MjhFNTk3ODMxQ0Y8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjM2Y2ViMGI3LTU4MTktNTQ0NC1iN2NmLWU2OWEyODBmNWFhMTwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6M0VBQzJERDc1MzUxRTgxMTk3NkFGMzlCNEI2QUZCRjg8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjNhNWFiMjgwLTQwZmUtNGY1ZS05ZmE2LTcxNjE2YjczODEyYjwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6M2Q1Njg0OTgtOTg0ZC00NThhLWIyNDktZWFjYzMyMjUyYTIwPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDo0MTk0ZmE2Mi1jYWRlLThmNDktYTIxNy1lY2E3ZWUzZDIyYTA8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjQ0MzMyRjU5QjI2MDExRTU4RDNGOEJEQUJDMENEMEFDPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDo0NmVkZjRlNC05MTUyLTVlNGItODA4Ny1kYTQzN2JjNWRjM2M8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjQ4RTNEMDA3MDgyMDY4MTE4MjJBRDdEMjNEMDQ0QTk1PC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDo1Y2EzNTUzMS1lOTZmLTRjMjAtOWViYi01M2U3NTJkMDMxYWQ8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjVlODc5ZTZmLWE3MjMtMjI0Ny1iOGQ4LWE5MDI4YzY4YmQyZjwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6NjViOTJlMzAtNWU0NC0wNjRmLTk3YWQtMzg2YWI5ZTQ3NzEwPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDo2ODc0QjFFNzZBMjA2ODExODIyQUM2N0Y1OEJFQTE3OTwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6NjliYWZkZWItNDM4NS04MjQ4LTk2NDgtMTIyN2YxMTE2ZTViPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDo2QTc0QjFFNzZBMjA2ODExODIyQUM2N0Y1OEJFQTE3OTwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6NkZENTNBMzgwQTIwNjgxMTgyMkFDRjE5MTgwRTgxQjI8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjZlYjFkY2Y1LTliNjctOWQ0NC05MWJmLWZmODQzYWNmMTZmMTwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6NzI2MGY1YjQtY2MxNy1kZjRlLWIwMWUtZjEzYWQyMWQwODkwPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDo3NDljYmFlOC0xNTRmLTM5NDAtOWVlNi0yMmQxZjgwZmEzYTE8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjc3OUQyNjQwQjI1QjExRTU5M0MxRDg5NTlDNDg0NDg1PC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDo3YTE1ZGNmMS1kYTE4LTQ3YzUtYWI0ZS1iOTQ4NTUyOTAyNjc8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjdhOTJkNDBiLTY5ZTctNDlhMy04ZDIzLTIzZjNkNzc0ZmVkYTwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6N2MwMmQ3YjEtMDNkYS00Zjg1LTk5YzAtMDBiM2YwMzI5MDNmPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDo3ZGRjODNmMS1jYTIxLTlhNDMtYWFlMS1kMjhkZTkyMjc3OWQ8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjhEMzA2NTQ0OTYxQjExRTQ4OTM3REM3Rjg4OUZGMDQzPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDo4RkNCRUNBRkIyNkMxMUU1OUExNDgwMjUxQTI3MzQzNjwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6OGM2NWIxOTYtOWNhNC1mNDQ0LTlkMzQtZDM1MzM4YTllMjE1PC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDo4Y2M3ODA2MS0yNzk2LTRlYTAtYTVhZC1hNjk3ZDRjMjA3OGU8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjkzNTk1Mzc0LTc5MjUtM2U0ZC1iMDRjLTk2YzU2OTY1NGNkYjwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6OTU5NkI5OTE3NzIwNjgxMTgyMkFDNjdGNThCRUExNzk8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjlGMUZFMkJFRTNDMEU1MTE5QUU5OUNFNTZGNjc4NzY3PC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDpCQkFFMjI5OEYxMTlFOTExODhFMjgzQjVGRjY0QkU5MjwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6QzM3MTlGNDQwMkM0RTUxMUJBNDE4NUE1ODhCNTEwODc8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOkM5NjUwQ0I5MDcyMDY4MTE4MDgzQTE1REU3MzQzNjUyPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDpENTNBODdBQzQxNjdFNDExQkZERUY2ODdGMzU2NEY5NzwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6REJDMjdENjQyRTZCRTUxMTlGQkVGMkREMkU4REFDRUY8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOkRFQjkwOEE1OEI3OEU1MTE5MTk5OUVFQkJCRDI4M0UyPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDpGODdGMTE3NDA3MjA2ODExODIyQUNCNkU2OTFDMjRGRjwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6YTIyZmVmZDItNTM0MS05NDQ4LWFiNDQtYWJhZjhmNDgxOTlhPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDphMjk1Y2U2Ny1iOWIxLThhNGUtOGZmYS02YjJjOTIxMDlmMTY8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOmE2NDcwMTE5LTg3ZWUtOGU0ZC04ODZlLTM1MDUwY2Y3YTBjYzwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6YTdiMjA5MmItMDg2Zi02NTQ3LWJhNTUtNzEzN2ZhOTRmZjVjPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDphN2M2ZjA0NS1lNTE3LTVlNGUtOTUzZi1mY2I3ODMyMzZkMDY8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOmE4NGU1MWFmLWJhZTYtNGNiOS05ZGQ3LTZmOTJjYWVjZDQ1NDwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6YWVkZjcwYWMtOGExNy05OTQ1LTgxYzctM2FmNWFlM2UwM2VhPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDpiMjljYzBmMi05MTg1LTQ0ZjEtOWU5YS1kMzhkMTkwMmU5OGQ8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOmJhMGJjNGViLTJjYzgtMTg0ZC1iN2Q1LTE2MzQxM2JkY2I5MjwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6YmMxYzdmNWYtNTMzMy1kZDQ3LTg1NmMtMDFlNTJhN2NiMWY4PC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDpiZTE0OWFhNy0zZDM4LTc5NGEtOWVhMi0xYWFiMDAxNGMwNzY8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOmJmYWIwNDVmLTQ4MTItNDdlNi05N2NlLWNjNzk1NmUzYTFhNzwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6YzIxNWY4ODUtNGI4Ny01YjQxLTg1M2YtM2Q5NmRlNWMxOThlPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDpjNWIxODhiNC1hZTMzLTRiODctYmRjZC05M2U5Yzk0MWM1YjA8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOmM5YTI2YzkyLTQ1MTgtNGI1YS04NjIwLWIxYjExMTZlMGZkZDwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6Y2YwMDViZTUtNWYzZi1mMTQ1LWI5OGEtYTU2YjU1NTk4YzkyPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDpkZDliOTBkMi01MjcyLTQyOWUtODQ2Zi1mMTMxMmE0ODNlNjE8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOmU1NmQyNjUyLWM3YzQtMzk0ZC05MzA4LTlmM2Q5YmQzMGU1MDwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6ZTcwNTM5OWQtNDY0ZS00M2ZmLWE1MmMtY2RjOGE4YmY3ZWE2PC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDplZDAxYWNlYS0xNDYwLTYxNGQtODdlNC1mMmEzNDM1NjA3Njk8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOmVlNDYzYjU0LTRjMjItNGMyZC1hZjQwLTdlN2U0Yzc2YTcwMDwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6ZWVlNzBjZjMtZDRiZC05MjQxLThiNzAtN2NjYmFkMzViZGU2PC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDplZmQ5MzI1Mi01MjBkLWYxNDEtOTAxMy0wZGI3MTBhZWRmNzU8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOmY1YjljZjZkLTM2YjgtYTc0MS1iMGZmLTE3ZGU0YzQwNjZjNjwvcmRmOmxpPiA8L3JkZjpCYWc+IDwvcGhvdG9zaG9wOkRvY3VtZW50QW5jZXN0b3JzPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjk4NTg5MDg0LTI5MmItNTg0Yi05MzgwLTViZmNhNzYyZmM5OSIgc3RFdnQ6d2hlbj0iMjAxOS0wNS0wNlQxMToyNzoyOCswODowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDplY2UyZWZjMi01NDlkLTBkNDgtYTExNi1kZTI1ZmU1NzNkYzkiIHN0RXZ0OndoZW49IjIwMTktMDUtMDZUMTE6NDM6MjQrMDg6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE5IChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NDQ5NDBhMmEtNzEwNy00YmFlLThjOTMtY2ZjNGRkM2UyYjc2IiBzdEV2dDp3aGVuPSIyMDE5LTA3LTAyVDEyOjIwOjE5KzA4OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKE1hY2ludG9zaCkiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNvbnZlcnRlZCIgc3RFdnQ6cGFyYW1ldGVycz0iZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iZGVyaXZlZCIgc3RFdnQ6cGFyYW1ldGVycz0iY29udmVydGVkIGZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmciLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjZlYjlkOTFjLTI5NDAtNGMwZS1iMjEwLTg3NGMwNmY5NzBkMyIgc3RFdnQ6d2hlbj0iMjAxOS0wNy0wMlQxMjoyMDoxOSswODowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo1ZTViYWU1ZS05NDM5LWViNDgtYmIyMS1mNmMzZTA5ZjE4MzYiIHN0RXZ0OndoZW49IjIwMjEtMTAtMjRUMTQ6MzE6MTYrMDg6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMS4wIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NDQ5NDBhMmEtNzEwNy00YmFlLThjOTMtY2ZjNGRkM2UyYjc2IiBzdFJlZjpkb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6NWJmZGU1MDUtMmVkMy1lZjQxLWFiYjgtNWRjYTRhNjUxZjVlIiBzdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6OTg1ODkwODQtMjkyYi01ODRiLTkzODAtNWJmY2E3NjJmYzk5Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+UQTyIAAAAptJREFUaN7l2ktoE0EYwPH/xtRXbRupRlsQ04JoRRQE8aQiYhHFg+JFRD1oC4oVfJx6UDwIRSsURYUiorWCiohaRSz0IIoExMfBS7A+wEIjqXFpFySm6XrYTTEmpunuJu7OfJdsJjNf8svMJDPsKLqu82covWpmQWliDHgF3ARuAKqdZHpjIOO5D3eED1gNnAcGgHPAHCeTuy3KgaPAB/PRLyIyHQGzR18CS0RFpmOVOV+3i4wEmAXcBY6LjARQgLPACZGR6TgFHPAEUkGnpixKtf+7leYXgK2uRU5XErTVtvJ1WYjI0gYuLThkJc0UoAsIFVLZX+re6wrtZVPl0/GyZ9paO38x14D1gO6antxc9SQDGBudS3d8l52U64B9rhquO2ffGr9WUwF2f7nOcKrSbtrTQIWjwzVYBg0zrH2aqcoYfSMbePtzBZ1DzUST85z47oLAYRObe5pMdheyoxo6661tVEJvFIZTRRkkg+aP0C8370LsRg2wzbHhOpCAB/Hs8uXlUDfNuA6PwLdkdp1kcXeqB4HbjiDDGoQ1Jau8faFOXdC47ogq9Kol7801Zo8OirCsy7e2bRRl7ZovtsiA3JjLJBoyACwSHQmwUgbkYhmQ9TIga2VAzpcBWSEDskoG5EwZkKMyIDUZkDEZkP0yICMyIN/LgHwhOvIj8El05P1chaIhu0VHvgbeiY5s/9cLoiAjwB3Rkccwjq4Ji3wEPM5XwevIGNA8USUvI3VgPzlu8IiEbAUeFlLRq8iLQFuhlb2I7ABaJtPA57E5eBI4wgTndv4Ov0eAKrAH6LHS2As9+RzjTlWP1QRuRv4AmjBOXX22k8iNw1UDLgNngCEnEroJGQeumLuJmJOJ/zdSB/qAq8A9IFGMN/kNt6GNd9kLeHQAAAAASUVORK5CYII=";
631
+ const _hoisted_1$i = ["src"];
632
+ const _sfc_main$v = /* @__PURE__ */ defineComponent$1({
633
+ __name: "logo",
634
+ props: {
635
+ theme: { type: String, validator: (v) => ["light", "dark"].includes(v) },
636
+ showTitle: { type: Boolean, default: true }
637
+ },
638
+ setup(__props) {
639
+ const props = __props;
640
+ const { t } = useI18n("UI");
641
+ const title = t("COMPANY_NAME");
642
+ const { getLogoWidth } = useMenu();
643
+ const getLogoClass = computed$1(() => {
644
+ return `${props.theme} dt-logo px-2.5 text-sm flex items-center pl-2.5 cursor-pointer text-center transition-all duration-200 ease-in-out `;
645
+ });
646
+ return (_ctx, _cache) => {
647
+ return openBlock(), createElementBlock("div", {
648
+ class: normalizeClass(unref$1(getLogoClass)),
649
+ style: normalizeStyle({
650
+ minWidth: `${unref$1(getLogoWidth)}px`
651
+ })
652
+ }, [
653
+ createElementVNode("img", { src: unref$1(DtLogo) }, null, 8, _hoisted_1$i),
654
+ withDirectives(createElementVNode("div", { class: "dt-logo__title text-base font-bold transition-all duration-500 pl-3" }, toDisplayString(unref$1(title)), 513), [
655
+ [vShow, __props.showTitle]
656
+ ])
657
+ ], 6);
658
+ };
659
+ }
660
+ });
661
+ const _sfc_main$u = /* @__PURE__ */ defineComponent$1({
662
+ __name: "trigger",
663
+ props: { theme: String },
664
+ setup(__props) {
665
+ const props = __props;
666
+ const { getCollapsed, toggleCollapsed } = useMenu();
667
+ return (_ctx, _cache) => {
668
+ return openBlock(), createElementBlock("div", {
669
+ class: normalizeClass(["flex w-12 h-full cursor-pointer items-center justify-center", props.theme]),
670
+ onClick: _cache[0] || (_cache[0] = (...args) => unref$1(toggleCollapsed) && unref$1(toggleCollapsed)(...args))
671
+ }, [
672
+ createElementVNode("i", {
673
+ class: normalizeClass(["i leading-none", unref$1(getCollapsed) ? "ic:baseline-format-indent-increase" : "ic:baseline-format-indent-decrease"])
674
+ }, null, 2)
675
+ ], 2);
676
+ };
677
+ }
678
+ });
679
+ const _default = "";
680
+ const index$b = "";
681
+ const index$a = "";
682
+ const index$9 = "";
683
+ const index$8 = "";
684
+ const index$7 = "";
685
+ const _hoisted_1$h = { class: "dt-breadcrumb" };
686
+ const _sfc_main$t = /* @__PURE__ */ defineComponent$1({
687
+ __name: "bread-crumb",
688
+ setup(__props) {
689
+ const { getIsZH } = useHeader();
690
+ let routes = ref$1([]);
691
+ const { currentRoute = null } = useRouter$1();
692
+ watchEffect(() => {
693
+ if (!currentRoute || currentRoute.value.path === "/")
694
+ return;
695
+ routes.value = getBreadCrumb(currentRoute.value.path);
696
+ });
697
+ return (_ctx, _cache) => {
698
+ const _component_ABreadcrumb = Breadcrumb;
699
+ return openBlock(), createElementBlock("div", _hoisted_1$h, [
700
+ createVNode(_component_ABreadcrumb, { routes: unref$1(routes) }, {
701
+ itemRender: withCtx(({ route }) => [
702
+ createElementVNode("span", null, toDisplayString((unref$1(getIsZH) ? route.label : route.enLabel) || route.meta?.title), 1)
703
+ ]),
704
+ _: 1
705
+ }, 8, ["routes"])
706
+ ]);
707
+ };
708
+ }
709
+ });
710
+ const _hoisted_1$g = {
711
+ key: 0,
712
+ class: "dt-menu-filter h-7 pr-2"
713
+ };
714
+ const _hoisted_2$8 = ["onClick"];
715
+ const _hoisted_3$5 = {
716
+ key: 0,
717
+ class: "flex items-center justify-center h-full overflow-hidden"
718
+ };
719
+ const _sfc_main$s = /* @__PURE__ */ defineComponent$1({
720
+ __name: "menu-filter",
721
+ setup(__props) {
722
+ const { t } = useI18n("UI");
723
+ const menuList = ref([]);
724
+ const router = useRouter$1();
725
+ const filter = ref("");
726
+ const { getShowSearch, getIsZH } = useHeader();
727
+ const isUseDef = computed(() => {
728
+ return isBoolean(getShowSearch.value);
729
+ });
730
+ function visibleChange(e) {
731
+ if (e) {
732
+ filterMenu();
733
+ } else {
734
+ filter.value = null;
735
+ }
736
+ }
737
+ function filterMenu() {
738
+ menuList.value = getFilterMenu(filter.value, true);
739
+ }
740
+ function navigation(url) {
741
+ router.push(url);
742
+ setTimeout(() => {
743
+ filter.value = "";
744
+ menuList.value = [];
745
+ });
746
+ }
747
+ return (_ctx, _cache) => {
748
+ const _component_AEmpty = Empty;
749
+ const _component_AInputSearch = InputSearch;
750
+ const _component_APopover = Popover;
751
+ return unref$1(isUseDef) ? (openBlock(), createElementBlock("div", _hoisted_1$g, [
752
+ createVNode(_component_APopover, {
753
+ placement: "bottom",
754
+ overlayClassName: "dt-menu-filter__popover",
755
+ trigger: "focus",
756
+ onVisibleChange: visibleChange
757
+ }, {
758
+ content: withCtx(() => [
759
+ (openBlock(true), createElementBlock(Fragment, null, renderList(unref$1(menuList), (menu) => {
760
+ return openBlock(), createElementBlock("p", {
761
+ onClick: ($event) => navigation(menu.url),
762
+ class: "px-5 leading-9 border-gray-200 border-dashed border-b m-0 cursor-pointer transition-all duration-300 text-13"
763
+ }, toDisplayString(unref$1(getIsZH) ? menu.label : menu.enLabel), 9, _hoisted_2$8);
764
+ }), 256)),
765
+ !unref$1(menuList).length ? (openBlock(), createElementBlock("div", _hoisted_3$5, [
766
+ createVNode(_component_AEmpty, {
767
+ description: "\u6682\u65E0\u6570\u636E",
768
+ imageStyle: { width: "100%" }
769
+ })
770
+ ])) : createCommentVNode("", true)
771
+ ]),
772
+ default: withCtx(() => [
773
+ createVNode(_component_AInputSearch, {
774
+ value: unref$1(filter),
775
+ "onUpdate:value": _cache[0] || (_cache[0] = ($event) => isRef(filter) ? filter.value = $event : null),
776
+ placeholder: unref$1(t)("FILTER_MORE"),
777
+ onInput: filterMenu,
778
+ size: unref$1(UiSize).SMALL
779
+ }, null, 8, ["value", "placeholder", "size"])
780
+ ]),
781
+ _: 1
782
+ })
783
+ ])) : createCommentVNode("", true);
784
+ };
785
+ }
786
+ });
787
+ const _hoisted_1$f = { class: "lang m-0" };
788
+ const _hoisted_2$7 = ["onClick"];
789
+ const _hoisted_3$4 = {
790
+ class: "pr-2",
791
+ size: 16
792
+ };
793
+ const _hoisted_4$2 = /* @__PURE__ */ createElementVNode("span", { class: "dt_header_icon text-lg text-gray-800 cursor-pointer px-3 hover:bg-gray-500 hover:bg-opacity-50 transition-all duration-300" }, [
794
+ /* @__PURE__ */ createElementVNode("i", { class: "block i ic:baseline-language" })
795
+ ], -1);
796
+ const _sfc_main$r = /* @__PURE__ */ defineComponent$1({
797
+ __name: "lang-picker",
798
+ props: {
799
+ reload: { type: Boolean }
800
+ },
801
+ setup(__props) {
802
+ const props = __props;
803
+ const visible = ref$1(false);
804
+ let currentLang = DtCache.getLocal(CacheKey.LOCALE);
805
+ async function toggleLang(lang) {
806
+ visible.value = false;
807
+ if (lang !== currentLang) {
808
+ currentLang = lang;
809
+ await changeLocale(lang);
810
+ props.reload && location.reload();
811
+ }
812
+ }
813
+ return (_ctx, _cache) => {
814
+ const _component_APopover = Popover;
815
+ const _directive_icon = resolveDirective("icon");
816
+ return openBlock(), createBlock(_component_APopover, {
817
+ placement: "bottom",
818
+ visible: visible.value,
819
+ "onUpdate:visible": _cache[0] || (_cache[0] = ($event) => visible.value = $event),
820
+ overlayClassName: "dt-lang-picker__popover",
821
+ trigger: "click"
822
+ }, {
823
+ content: withCtx(() => [
824
+ createElementVNode("ul", _hoisted_1$f, [
825
+ (openBlock(true), createElementBlock(Fragment, null, renderList(unref$1(localeList), (it) => {
826
+ return openBlock(), createElementBlock("li", {
827
+ onClick: ($event) => toggleLang(it.event),
828
+ class: normalizeClass(["px-4 my-1 leading-9 flex border-gray-200 cursor-pointer hover:bg-gray-100 transition-all duration-300 text-13", it.event === unref$1(currentLang) ? "active bg-gray-100" : ""])
829
+ }, [
830
+ withDirectives(createElementVNode("span", _hoisted_3$4, null, 512), [
831
+ [_directive_icon, it.icon]
832
+ ]),
833
+ createElementVNode("span", null, toDisplayString(it.text), 1)
834
+ ], 10, _hoisted_2$7);
835
+ }), 256))
836
+ ])
837
+ ]),
838
+ default: withCtx(() => [
839
+ _hoisted_4$2
840
+ ]),
841
+ _: 1
842
+ }, 8, ["visible"]);
843
+ };
844
+ }
845
+ });
846
+ const isServer = typeof window === "undefined";
847
+ const BAR_MAP = {
848
+ vertical: {
849
+ offset: "offsetHeight",
850
+ scroll: "scrollTop",
851
+ scrollSize: "scrollHeight",
852
+ size: "height",
853
+ key: "vertical",
854
+ axis: "Y",
855
+ client: "clientY",
856
+ direction: "top"
857
+ },
858
+ horizontal: {
859
+ offset: "offsetWidth",
860
+ scroll: "scrollLeft",
861
+ scrollSize: "scrollWidth",
862
+ size: "width",
863
+ key: "horizontal",
864
+ axis: "X",
865
+ client: "clientX",
866
+ direction: "left"
867
+ }
868
+ };
869
+ function renderThumbStyle({ move, size, bar }) {
870
+ const style = {};
871
+ const translate = `translate${bar.axis}(${move}%)`;
872
+ style[bar.size] = size;
873
+ style.transform = translate;
874
+ style.msTransform = translate;
875
+ style.webkitTransform = translate;
876
+ return style;
877
+ }
878
+ function resizeHandler(entries) {
879
+ for (const entry of entries) {
880
+ const listeners = entry.target.__resizeListeners__ || [];
881
+ if (listeners.length) {
882
+ listeners.forEach((fn) => {
883
+ fn();
884
+ });
885
+ }
886
+ }
887
+ }
888
+ function addResizeListener(element, fn) {
889
+ if (isServer)
890
+ return;
891
+ if (!element.__resizeListeners__) {
892
+ element.__resizeListeners__ = [];
893
+ element.__ro__ = new ResizeObserver(resizeHandler);
894
+ element.__ro__.observe(element);
895
+ }
896
+ element.__resizeListeners__.push(fn);
897
+ }
898
+ function removeResizeListener(element, fn) {
899
+ if (!element || !element.__resizeListeners__)
900
+ return;
901
+ element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);
902
+ if (!element.__resizeListeners__.length) {
903
+ element.__ro__.disconnect();
904
+ }
905
+ }
906
+ const Bar = defineComponent$1({
907
+ name: "Bar",
908
+ props: {
909
+ vertical: Boolean,
910
+ size: String,
911
+ move: Number
912
+ },
913
+ setup(props) {
914
+ const instance = getCurrentInstance();
915
+ const thumb = ref$1();
916
+ const wrap = inject("scroll-bar-wrap", {});
917
+ const bar = computed$1(() => {
918
+ return BAR_MAP[props.vertical ? "vertical" : "horizontal"];
919
+ });
920
+ const barStore = ref$1({});
921
+ const cursorDown = ref$1();
922
+ const clickThumbHandler = (e) => {
923
+ if (e.ctrlKey || e.button === 2) {
924
+ return;
925
+ }
926
+ window.getSelection()?.removeAllRanges();
927
+ startDrag(e);
928
+ barStore.value[bar.value.axis] = e.currentTarget[bar.value.offset] - (e[bar.value.client] - e.currentTarget.getBoundingClientRect()[bar.value.direction]);
929
+ };
930
+ const clickTrackHandler = (e) => {
931
+ const offset = Math.abs(
932
+ e.target.getBoundingClientRect()[bar.value.direction] - e[bar.value.client]
933
+ );
934
+ const thumbHalf = thumb.value[bar.value.offset] / 2;
935
+ const thumbPositionPercentage = (offset - thumbHalf) * 100 / instance?.vnode.el?.[bar.value.offset];
936
+ wrap.value[bar.value.scroll] = thumbPositionPercentage * wrap.value[bar.value.scrollSize] / 100;
937
+ };
938
+ const startDrag = (e) => {
939
+ e.stopImmediatePropagation();
940
+ cursorDown.value = true;
941
+ on(document, "mousemove", mouseMoveDocumentHandler);
942
+ on(document, "mouseup", mouseUpDocumentHandler);
943
+ document.onselectstart = () => false;
944
+ };
945
+ const mouseMoveDocumentHandler = (e) => {
946
+ if (cursorDown.value === false)
947
+ return;
948
+ const prevPage = barStore.value[bar.value.axis];
949
+ if (!prevPage)
950
+ return;
951
+ const offset = (instance?.vnode.el?.getBoundingClientRect()[bar.value.direction] - e[bar.value.client]) * -1;
952
+ const thumbClickPosition = thumb.value[bar.value.offset] - prevPage;
953
+ const thumbPositionPercentage = (offset - thumbClickPosition) * 100 / instance?.vnode.el?.[bar.value.offset];
954
+ wrap.value[bar.value.scroll] = thumbPositionPercentage * wrap.value[bar.value.scrollSize] / 100;
955
+ };
956
+ function mouseUpDocumentHandler() {
957
+ cursorDown.value = false;
958
+ barStore.value[bar.value.axis] = 0;
959
+ off(document, "mousemove", mouseMoveDocumentHandler);
960
+ document.onselectstart = null;
961
+ }
962
+ onUnmounted(() => {
963
+ off(document, "mouseup", mouseUpDocumentHandler);
964
+ });
965
+ return () => h$1(
966
+ "div",
967
+ {
968
+ class: ["scrollbar__bar", "is-" + bar.value.key],
969
+ onMousedown: clickTrackHandler
970
+ },
971
+ h$1("div", {
972
+ ref: thumb,
973
+ class: "scrollbar__thumb",
974
+ onMousedown: clickThumbHandler,
975
+ style: renderThumbStyle({
976
+ size: props.size,
977
+ move: props.move,
978
+ bar: bar.value
979
+ })
980
+ })
981
+ );
982
+ }
983
+ });
984
+ const _hoisted_1$e = { class: "scrollbar relative h-full overflow-hidden" };
985
+ const _sfc_main$q = /* @__PURE__ */ defineComponent$1({
986
+ __name: "scroll-bar",
987
+ props: {
988
+ wrapClass: {
989
+ type: [String, Array],
990
+ default: ""
991
+ },
992
+ wrapStyle: Array,
993
+ viewClass: {
994
+ type: [String, Array],
995
+ default: ""
996
+ },
997
+ viewStyle: {
998
+ type: [String, Array],
999
+ default: ""
1000
+ },
1001
+ noresize: Boolean,
1002
+ tag: {
1003
+ type: String,
1004
+ default: "div"
1005
+ }
1006
+ },
1007
+ setup(__props) {
1008
+ const props = __props;
1009
+ const sizeWidth = ref("0");
1010
+ const sizeHeight = ref("0");
1011
+ const moveX = ref(0);
1012
+ const moveY = ref(0);
1013
+ const wrap = ref();
1014
+ const resize = ref();
1015
+ provide("scroll-bar-wrap", wrap);
1016
+ const style = computed(() => {
1017
+ let rsStyle = {};
1018
+ if (Array.isArray(props.wrapStyle)) {
1019
+ props.wrapStyle.forEach((it) => {
1020
+ if (it)
1021
+ rsStyle = Object.assign({}, rsStyle, it);
1022
+ });
1023
+ }
1024
+ return rsStyle;
1025
+ });
1026
+ const handleScroll = () => {
1027
+ moveY.value = unref(wrap).scrollTop * 100 / unref(wrap).clientHeight;
1028
+ moveX.value = unref(wrap).scrollLeft * 100 / unref(wrap).clientWidth;
1029
+ };
1030
+ const update = () => {
1031
+ if (!unref(wrap))
1032
+ return;
1033
+ const heightPercentage = unref(wrap).clientHeight * 100 / unref(wrap).scrollHeight;
1034
+ const widthPercentage = unref(wrap).clientWidth * 100 / unref(wrap).scrollWidth;
1035
+ sizeHeight.value = heightPercentage < 100 ? heightPercentage + "%" : "";
1036
+ sizeWidth.value = widthPercentage < 100 ? widthPercentage + "%" : "";
1037
+ };
1038
+ onMounted(() => {
1039
+ nextTick(update);
1040
+ if (!props.noresize) {
1041
+ addResizeListener(unref(resize), update);
1042
+ addResizeListener(unref(wrap), update);
1043
+ addEventListener("resize", update);
1044
+ }
1045
+ });
1046
+ onBeforeUnmount(() => {
1047
+ if (!props.noresize) {
1048
+ removeResizeListener(unref(resize), update);
1049
+ removeResizeListener(unref(wrap), update);
1050
+ removeEventListener("resize", update);
1051
+ }
1052
+ });
1053
+ return (_ctx, _cache) => {
1054
+ return openBlock(), createElementBlock("div", _hoisted_1$e, [
1055
+ createElementVNode("div", {
1056
+ ref_key: "wrap",
1057
+ ref: wrap,
1058
+ class: normalizeClass([[__props.wrapClass, "scrollbar__wrap--hidden-default"], "h-full overflow-auto"]),
1059
+ style: normalizeStyle(unref$1(style)),
1060
+ onScroll: handleScroll
1061
+ }, [
1062
+ (openBlock(), createBlock(resolveDynamicComponent(__props.tag), {
1063
+ class: normalizeClass(["box-border", __props.viewClass]),
1064
+ ref_key: "resize",
1065
+ ref: resize,
1066
+ style: normalizeStyle(__props.viewStyle)
1067
+ }, {
1068
+ default: withCtx(() => [
1069
+ renderSlot(_ctx.$slots, "default")
1070
+ ]),
1071
+ _: 3
1072
+ }, 8, ["class", "style"]))
1073
+ ], 38),
1074
+ createVNode(unref$1(Bar), {
1075
+ move: unref$1(moveX),
1076
+ size: unref$1(sizeWidth)
1077
+ }, null, 8, ["move", "size"]),
1078
+ createVNode(unref$1(Bar), {
1079
+ vertical: "",
1080
+ move: unref$1(moveY),
1081
+ size: unref$1(sizeHeight)
1082
+ }, null, 8, ["move", "size"])
1083
+ ]);
1084
+ };
1085
+ }
1086
+ });
1087
+ const _sfc_main$p = /* @__PURE__ */ defineComponent$1({
1088
+ __name: "scroll-container",
1089
+ setup(__props) {
1090
+ const scrollbarRef = ref(null);
1091
+ return (_ctx, _cache) => {
1092
+ return openBlock(), createBlock(_sfc_main$q, mergeProps({
1093
+ ref_key: "scrollbarRef",
1094
+ ref: scrollbarRef
1095
+ }, _ctx.$attrs, { class: "w-full h-full" }), {
1096
+ default: withCtx(() => [
1097
+ renderSlot(_ctx.$slots, "default")
1098
+ ]),
1099
+ _: 3
1100
+ }, 16);
1101
+ };
1102
+ }
1103
+ });
1104
+ const _sfc_main$o = defineComponent({
1105
+ name: "slot-container",
1106
+ props: {
1107
+ template: {
1108
+ type: Function
1109
+ },
1110
+ data: {
1111
+ type: Object
1112
+ }
1113
+ },
1114
+ setup(props) {
1115
+ return () => {
1116
+ return h("div", [props.template(props.data)]);
1117
+ };
1118
+ }
1119
+ });
1120
+ const withInstall = (comp) => {
1121
+ comp.install = (app) => {
1122
+ app.component(comp.name, comp);
1123
+ };
1124
+ return comp;
1125
+ };
1126
+ const DtScrollContainer = withInstall(_sfc_main$p);
1127
+ const DtSlotContainer = withInstall(_sfc_main$o);
1128
+ const _hoisted_1$d = { class: "dt_header_icon text-lg text-gray-800 cursor-pointer px-3 hover:bg-gray-500 hover:bg-opacity-50 transition-all duration-300 relative" };
1129
+ const _sfc_main$n = /* @__PURE__ */ defineComponent$1({
1130
+ __name: "notify",
1131
+ setup(__props) {
1132
+ const slots = getParentSlots(null, "dt-theme");
1133
+ return (_ctx, _cache) => {
1134
+ const _component_APopover = Popover;
1135
+ const _directive_icon = resolveDirective("icon");
1136
+ return openBlock(), createBlock(_component_APopover, {
1137
+ trigger: "click",
1138
+ overlayClassName: "dt-notify__popover"
1139
+ }, {
1140
+ content: withCtx(() => [
1141
+ unref$1(slots).notify ? (openBlock(), createBlock(unref$1(DtSlotContainer), {
1142
+ key: 0,
1143
+ template: unref$1(slots).notify
1144
+ }, null, 8, ["template"])) : createCommentVNode("", true)
1145
+ ]),
1146
+ default: withCtx(() => [
1147
+ createElementVNode("span", _hoisted_1$d, [
1148
+ withDirectives(createElementVNode("span", null, null, 512), [
1149
+ [_directive_icon, "ant-design:bell-outlined"]
1150
+ ]),
1151
+ unref$1(slots).notifyBadge ? (openBlock(), createBlock(unref$1(DtSlotContainer), {
1152
+ key: 0,
1153
+ template: unref$1(slots).notifyBadge
1154
+ }, null, 8, ["template"])) : createCommentVNode("", true)
1155
+ ])
1156
+ ]),
1157
+ _: 1
1158
+ });
1159
+ };
1160
+ }
1161
+ });
1162
+ const _hoisted_1$c = { class: "lang m-0" };
1163
+ const _hoisted_2$6 = ["onClick"];
1164
+ const _hoisted_3$3 = /* @__PURE__ */ createElementVNode("span", { class: "dt_header_icon text-lg text-gray-800 cursor-pointer px-3 hover:bg-gray-500 hover:bg-opacity-50 transition-all duration-300" }, [
1165
+ /* @__PURE__ */ createElementVNode("i", { class: "block i ic:baseline-format-size" })
1166
+ ], -1);
1167
+ const _sfc_main$m = /* @__PURE__ */ defineComponent$1({
1168
+ __name: "size",
1169
+ setup(__props) {
1170
+ const { t } = useI18n("UI");
1171
+ const { setThemeConf } = useThemeStore();
1172
+ const { getUiSize } = useHeader();
1173
+ const sizeList = [
1174
+ {
1175
+ text: t("LARGE_SIZE"),
1176
+ event: UiSize.LARGE
1177
+ },
1178
+ {
1179
+ text: t("MIDDLE_SIZE"),
1180
+ event: UiSize.MIDDLE
1181
+ },
1182
+ {
1183
+ text: t("SMALL_SIZE"),
1184
+ event: UiSize.SMALL
1185
+ }
1186
+ ];
1187
+ const visible = ref$1(false);
1188
+ async function toggleLang(size) {
1189
+ visible.value = false;
1190
+ setThemeConf({
1191
+ headOptions: {
1192
+ size
1193
+ }
1194
+ });
1195
+ }
1196
+ return (_ctx, _cache) => {
1197
+ return openBlock(), createBlock(unref$1(Popover$1), {
1198
+ placement: "bottom",
1199
+ visible: visible.value,
1200
+ "onUpdate:visible": _cache[0] || (_cache[0] = ($event) => visible.value = $event),
1201
+ overlayClassName: "dt-size__popover",
1202
+ trigger: "click"
1203
+ }, {
1204
+ content: withCtx(() => [
1205
+ createElementVNode("ul", _hoisted_1$c, [
1206
+ (openBlock(), createElementBlock(Fragment, null, renderList(sizeList, (it) => {
1207
+ return createElementVNode("li", {
1208
+ onClick: ($event) => toggleLang(it.event),
1209
+ class: normalizeClass(["px-4 my-1 leading-9 flex border-gray-200 cursor-pointer hover:bg-gray-100 transition-all duration-300 text-13", it.event === unref$1(getUiSize) ? "active bg-gray-100" : ""])
1210
+ }, [
1211
+ createElementVNode("span", null, toDisplayString(it.text), 1)
1212
+ ], 10, _hoisted_2$6);
1213
+ }), 64))
1214
+ ])
1215
+ ]),
1216
+ default: withCtx(() => [
1217
+ _hoisted_3$3
1218
+ ]),
1219
+ _: 1
1220
+ }, 8, ["visible"]);
1221
+ };
1222
+ }
1223
+ });
1224
+ const index$6 = "";
1225
+ const _imports_0 = "data:image/png;base64,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";
1226
+ const _hoisted_1$b = { class: "m-0" };
1227
+ const _hoisted_2$5 = {
1228
+ class: "pr-2",
1229
+ size: 16
1230
+ };
1231
+ const _hoisted_3$2 = { class: "dt_header_icon h-12 text-lg text-gray-800 cursor-pointer px-3 hover:bg-gray-500 hover:bg-opacity-50 transition-all duration-300 flex items-center" };
1232
+ const _hoisted_4$1 = /* @__PURE__ */ createElementVNode("img", { src: _imports_0 }, null, -1);
1233
+ const _hoisted_5 = { class: "pl-2 text-13" };
1234
+ const _sfc_main$l = /* @__PURE__ */ defineComponent$1({
1235
+ __name: "user-info",
1236
+ setup(__props) {
1237
+ const { t } = useI18n("UI");
1238
+ const go = useGo();
1239
+ const { getShowLoginOut, loginOutClick } = useHeader();
1240
+ const slots = getParentSlots(null, "dt-theme");
1241
+ const getUserInfo = DtCache.getLocal(CacheKey.USER_INFO);
1242
+ function signOut() {
1243
+ if (loginOutClick && isFunction(loginOutClick)) {
1244
+ loginOutClick();
1245
+ } else {
1246
+ go(Pages.LOGIN);
1247
+ }
1248
+ }
1249
+ return (_ctx, _cache) => {
1250
+ const _component_AAvatar = Avatar;
1251
+ const _component_APopover = Popover;
1252
+ const _directive_icon = resolveDirective("icon");
1253
+ return openBlock(), createBlock(_component_APopover, {
1254
+ placement: "bottom",
1255
+ overlayClassName: "dt-user-info__popover",
1256
+ trigger: "click"
1257
+ }, {
1258
+ content: withCtx(() => [
1259
+ createElementVNode("div", _hoisted_1$b, [
1260
+ unref$1(slots).userInfo ? (openBlock(), createBlock(unref$1(DtSlotContainer), {
1261
+ key: 0,
1262
+ template: unref$1(slots).userInfo
1263
+ }, null, 8, ["template"])) : createCommentVNode("", true),
1264
+ unref$1(getShowLoginOut) ? (openBlock(), createElementBlock("div", {
1265
+ key: 1,
1266
+ onClick: _cache[0] || (_cache[0] = ($event) => signOut()),
1267
+ class: "px-4 my-1 leading-9 flex border-gray-200 cursor-pointer hover:bg-gray-100 transition-all duration-300 text-13"
1268
+ }, [
1269
+ withDirectives(createElementVNode("span", _hoisted_2$5, null, 512), [
1270
+ [_directive_icon, "ant-design:logout-outlined"]
1271
+ ]),
1272
+ createElementVNode("span", null, toDisplayString(unref$1(t)("LOGIN_OUT")), 1)
1273
+ ])) : createCommentVNode("", true)
1274
+ ])
1275
+ ]),
1276
+ default: withCtx(() => [
1277
+ createElementVNode("div", _hoisted_3$2, [
1278
+ createVNode(_component_AAvatar, { size: 28 }, {
1279
+ icon: withCtx(() => [
1280
+ _hoisted_4$1
1281
+ ]),
1282
+ _: 1
1283
+ }),
1284
+ createElementVNode("span", _hoisted_5, toDisplayString(unref$1(getUserInfo)?.userNo), 1)
1285
+ ])
1286
+ ]),
1287
+ _: 1
1288
+ });
1289
+ };
1290
+ }
1291
+ });
1292
+ const index$5 = "";
1293
+ const index$4 = "";
1294
+ var HandlerEnum = /* @__PURE__ */ ((HandlerEnum2) => {
1295
+ HandlerEnum2[HandlerEnum2["CHANGE_LAYOUT"] = 0] = "CHANGE_LAYOUT";
1296
+ HandlerEnum2[HandlerEnum2["SHOW_BREADCRUMB"] = 1] = "SHOW_BREADCRUMB";
1297
+ HandlerEnum2[HandlerEnum2["SHOW_SEARCH"] = 2] = "SHOW_SEARCH";
1298
+ HandlerEnum2[HandlerEnum2["SHOW_SIZE"] = 3] = "SHOW_SIZE";
1299
+ HandlerEnum2[HandlerEnum2["SHOW_NOTICY"] = 4] = "SHOW_NOTICY";
1300
+ HandlerEnum2[HandlerEnum2["SHOW_FULL_SCREEN"] = 5] = "SHOW_FULL_SCREEN";
1301
+ HandlerEnum2[HandlerEnum2["SHOW_LOCAL"] = 6] = "SHOW_LOCAL";
1302
+ HandlerEnum2[HandlerEnum2["SHOW_ROUTE_REUSE"] = 7] = "SHOW_ROUTE_REUSE";
1303
+ HandlerEnum2[HandlerEnum2["SHOW_FOOTER"] = 8] = "SHOW_FOOTER";
1304
+ HandlerEnum2[HandlerEnum2["CONTENT_MODE"] = 9] = "CONTENT_MODE";
1305
+ return HandlerEnum2;
1306
+ })(HandlerEnum || {});
1307
+ function changeTheme(event, value = {}) {
1308
+ let conf = {};
1309
+ switch (event) {
1310
+ case 0:
1311
+ const { mode, type, split, headTheme, menuTheme } = value;
1312
+ conf = {
1313
+ headOptions: {
1314
+ theme: headTheme
1315
+ },
1316
+ menuOptions: {
1317
+ mode,
1318
+ type,
1319
+ split,
1320
+ theme: menuTheme,
1321
+ show: true
1322
+ }
1323
+ };
1324
+ break;
1325
+ case 1:
1326
+ conf = {
1327
+ headOptions: {
1328
+ showBreadCrumb: value
1329
+ }
1330
+ };
1331
+ break;
1332
+ case 2:
1333
+ conf = {
1334
+ headOptions: {
1335
+ showSearch: value
1336
+ }
1337
+ };
1338
+ break;
1339
+ case 4:
1340
+ conf = {
1341
+ headOptions: {
1342
+ showNotice: value
1343
+ }
1344
+ };
1345
+ break;
1346
+ case 3:
1347
+ conf = {
1348
+ headOptions: {
1349
+ showSize: value
1350
+ }
1351
+ };
1352
+ break;
1353
+ case 5:
1354
+ conf = {
1355
+ headOptions: {
1356
+ showFullScreen: value
1357
+ }
1358
+ };
1359
+ break;
1360
+ case 6:
1361
+ conf = {
1362
+ headOptions: {
1363
+ showLocaleSwitch: value
1364
+ }
1365
+ };
1366
+ break;
1367
+ case 7:
1368
+ conf = {
1369
+ routeReuse: {
1370
+ show: value
1371
+ }
1372
+ };
1373
+ break;
1374
+ case 8:
1375
+ conf = {
1376
+ footerOptions: {
1377
+ show: value
1378
+ }
1379
+ };
1380
+ break;
1381
+ case 9:
1382
+ conf = {
1383
+ content: {
1384
+ contentMode: value
1385
+ }
1386
+ };
1387
+ break;
1388
+ }
1389
+ useThemeStore().setThemeConf(conf);
1390
+ }
1391
+ const _hoisted_1$a = { class: "flex flex-row justify-center dt-menu-type" };
1392
+ const _hoisted_2$4 = ["onClick"];
1393
+ const _hoisted_3$1 = /* @__PURE__ */ createElementVNode("div", { class: "dt-menu-type__item" }, null, -1);
1394
+ const _hoisted_4 = [
1395
+ _hoisted_3$1
1396
+ ];
1397
+ const _sfc_main$k = /* @__PURE__ */ defineComponent$1({
1398
+ __name: "menu-type",
1399
+ setup(__props) {
1400
+ const { getMenuType, getMenuMode } = useMenu();
1401
+ const menuTypeList = [
1402
+ {
1403
+ title: "\u5DE6\u4FA7\u83DC\u5355\u6A21\u5F0F",
1404
+ headTheme: Theme.LIGHT,
1405
+ menuTheme: Theme.DARK,
1406
+ mode: MenuMode.INLINE,
1407
+ type: MenuType.SIDE,
1408
+ split: false
1409
+ },
1410
+ {
1411
+ title: "\u83DC\u5355\u6DF7\u5408\u6A21\u5F0F",
1412
+ headTheme: Theme.DARK,
1413
+ menuTheme: Theme.LIGHT,
1414
+ mode: MenuMode.INLINE,
1415
+ type: MenuType.MIX,
1416
+ split: true
1417
+ },
1418
+ {
1419
+ title: "\u9876\u90E8\u83DC\u5355\u6A21\u5F0F",
1420
+ headTheme: Theme.DARK,
1421
+ menuTheme: Theme.LIGHT,
1422
+ mode: MenuMode.HORIZONTAL,
1423
+ type: MenuType.TOP_MENU,
1424
+ split: false
1425
+ }
1426
+ ];
1427
+ function changeMenuType(item) {
1428
+ changeTheme(HandlerEnum.CHANGE_LAYOUT, item);
1429
+ }
1430
+ return (_ctx, _cache) => {
1431
+ const _component_ATooltip = Tooltip;
1432
+ return openBlock(), createElementBlock("div", _hoisted_1$a, [
1433
+ (openBlock(), createElementBlock(Fragment, null, renderList(menuTypeList, (item) => {
1434
+ return createVNode(_component_ATooltip, {
1435
+ key: item.title,
1436
+ title: item.title,
1437
+ placement: "bottom"
1438
+ }, {
1439
+ default: withCtx(() => [
1440
+ createElementVNode("div", {
1441
+ onClick: ($event) => changeMenuType(item),
1442
+ class: normalizeClass([
1443
+ `dt-menu-type__list p-3 relative w-14 h-12 mr-4 overflow-hidden cursor-pointer bg-slate-100 rounded shadow-sm
1444
+ shadow-gray-200`,
1445
+ `dt-menu-type__item--${item.type}`,
1446
+ {
1447
+ [`dt-menu-type__item--active`]: unref$1(getMenuType) === item.type && unref$1(getMenuMode) === item.mode
1448
+ }
1449
+ ])
1450
+ }, _hoisted_4, 10, _hoisted_2$4)
1451
+ ]),
1452
+ _: 2
1453
+ }, 1032, ["title"]);
1454
+ }), 64))
1455
+ ]);
1456
+ };
1457
+ }
1458
+ });
1459
+ const index$3 = "";
1460
+ const index$2 = "";
1461
+ const _hoisted_1$9 = { class: "flex justify-between mb-5" };
1462
+ const _sfc_main$j = /* @__PURE__ */ defineComponent$1({
1463
+ __name: "select",
1464
+ props: {
1465
+ event: { type: Number },
1466
+ disabled: { type: Boolean },
1467
+ title: { type: String },
1468
+ def: { type: [String, Number] },
1469
+ initValue: { type: [String, Number] },
1470
+ options: {
1471
+ type: Array,
1472
+ default: () => []
1473
+ }
1474
+ },
1475
+ setup(__props) {
1476
+ const props = __props;
1477
+ const getBindValue = computed(() => {
1478
+ return props.def ? { value: props.def, defaultValue: props.initValue || props.def } : {};
1479
+ });
1480
+ function handleChange(val) {
1481
+ props.event && changeTheme(props.event, val);
1482
+ }
1483
+ return (_ctx, _cache) => {
1484
+ const _component_ASelect = Select;
1485
+ return openBlock(), createElementBlock("div", _hoisted_1$9, [
1486
+ createElementVNode("span", null, toDisplayString(__props.title), 1),
1487
+ createVNode(_component_ASelect, mergeProps(unref$1(getBindValue), {
1488
+ disabled: __props.disabled,
1489
+ size: "small",
1490
+ class: "w-32",
1491
+ options: __props.options,
1492
+ onChange: handleChange
1493
+ }), null, 16, ["disabled", "options"])
1494
+ ]);
1495
+ };
1496
+ }
1497
+ });
1498
+ const index$1 = "";
1499
+ const _hoisted_1$8 = { class: "flex justify-between mb-5" };
1500
+ const _sfc_main$i = /* @__PURE__ */ defineComponent$1({
1501
+ __name: "switch",
1502
+ props: {
1503
+ event: {
1504
+ type: Number
1505
+ },
1506
+ disabled: { type: Boolean },
1507
+ title: { type: String },
1508
+ def: {
1509
+ type: Boolean
1510
+ }
1511
+ },
1512
+ setup(__props) {
1513
+ const props = __props;
1514
+ const { t } = useI18n("UI");
1515
+ const getBindValue = computed(() => {
1516
+ return props.def ? { checked: props.def } : {};
1517
+ });
1518
+ function handleChange(e) {
1519
+ props.event && changeTheme(props.event, e);
1520
+ }
1521
+ return (_ctx, _cache) => {
1522
+ const _component_ASwitch = Switch;
1523
+ return openBlock(), createElementBlock("div", _hoisted_1$8, [
1524
+ createElementVNode("span", null, toDisplayString(__props.title), 1),
1525
+ createVNode(_component_ASwitch, mergeProps(unref$1(getBindValue), {
1526
+ disabled: __props.disabled,
1527
+ checkedChildren: unref$1(t)("ON"),
1528
+ unCheckedChildren: unref$1(t)("OFF"),
1529
+ onChange: handleChange
1530
+ }), null, 16, ["disabled", "checkedChildren", "unCheckedChildren"])
1531
+ ]);
1532
+ };
1533
+ }
1534
+ });
1535
+ const _sfc_main$h = /* @__PURE__ */ defineComponent$1({
1536
+ __name: "feature",
1537
+ setup(__props) {
1538
+ const { t } = useI18n("UI");
1539
+ const {
1540
+ getShowBread,
1541
+ getShowSearch,
1542
+ getShowUiSize,
1543
+ getShowNotice,
1544
+ getShowFullScreen,
1545
+ getShowLocale
1546
+ } = useHeader();
1547
+ const { getShowMultipleTab } = useMultipleTab();
1548
+ const { getShowFooter, getContentMode } = useTheme();
1549
+ const switchItems = [
1550
+ {
1551
+ title: t("BREAD_CURB"),
1552
+ event: HandlerEnum.SHOW_BREADCRUMB,
1553
+ def: getShowBread
1554
+ },
1555
+ {
1556
+ title: t("MENU_FILTER"),
1557
+ event: HandlerEnum.SHOW_SEARCH,
1558
+ def: getShowSearch
1559
+ },
1560
+ {
1561
+ title: t("NOTICE"),
1562
+ event: HandlerEnum.SHOW_NOTICY,
1563
+ def: getShowNotice
1564
+ },
1565
+ {
1566
+ title: t("SIZE"),
1567
+ event: HandlerEnum.SHOW_SIZE,
1568
+ def: getShowUiSize
1569
+ },
1570
+ {
1571
+ title: t("SHOW_FULLE"),
1572
+ event: HandlerEnum.SHOW_FULL_SCREEN,
1573
+ def: getShowFullScreen
1574
+ },
1575
+ {
1576
+ title: t("LOCAL"),
1577
+ event: HandlerEnum.SHOW_LOCAL,
1578
+ def: getShowLocale
1579
+ },
1580
+ {
1581
+ title: t("ROUTE_REUSE"),
1582
+ event: HandlerEnum.SHOW_ROUTE_REUSE,
1583
+ def: getShowMultipleTab
1584
+ },
1585
+ {
1586
+ title: t("SHOW_FOOTER"),
1587
+ event: HandlerEnum.SHOW_FOOTER,
1588
+ def: getShowFooter
1589
+ }
1590
+ ];
1591
+ const selectItems = [
1592
+ {
1593
+ title: t("CONTENT_FIXED_WIDTH"),
1594
+ event: HandlerEnum.CONTENT_MODE,
1595
+ def: getContentMode,
1596
+ options: [
1597
+ {
1598
+ value: ContentMode.FULL,
1599
+ label: t("FULL")
1600
+ },
1601
+ {
1602
+ value: ContentMode.FIXED,
1603
+ label: t("FIXED")
1604
+ }
1605
+ ]
1606
+ }
1607
+ ];
1608
+ return (_ctx, _cache) => {
1609
+ return openBlock(), createElementBlock(Fragment, null, [
1610
+ (openBlock(), createElementBlock(Fragment, null, renderList(switchItems, (item) => {
1611
+ return createVNode(_sfc_main$i, {
1612
+ key: item.title,
1613
+ title: item.title,
1614
+ event: item.event,
1615
+ def: unref$1(item.def)
1616
+ }, null, 8, ["title", "event", "def"]);
1617
+ }), 64)),
1618
+ (openBlock(), createElementBlock(Fragment, null, renderList(selectItems, (item) => {
1619
+ return createVNode(_sfc_main$j, {
1620
+ key: item.title,
1621
+ title: item.title,
1622
+ event: item.event,
1623
+ def: unref$1(item.def),
1624
+ options: item.options
1625
+ }, null, 8, ["title", "event", "def", "options"]);
1626
+ }), 64))
1627
+ ], 64);
1628
+ };
1629
+ }
1630
+ });
1631
+ const _hoisted_1$7 = { class: "mt-5" };
1632
+ const _hoisted_2$3 = { class: "dt-setting-theme__tips p-3 text-12 bg-gray-100 rounded" };
1633
+ const _sfc_main$g = /* @__PURE__ */ defineComponent$1({
1634
+ __name: "setting-theme",
1635
+ setup(__props) {
1636
+ const { t } = useI18n("UI");
1637
+ const visible = ref(false);
1638
+ const {
1639
+ getShowBread,
1640
+ getShowSearch,
1641
+ getShowUiSize,
1642
+ getShowNotice,
1643
+ getShowFullScreen,
1644
+ getShowLocale
1645
+ } = useHeader();
1646
+ const { getShowMultipleTab } = useMultipleTab();
1647
+ const { getShowFooter, getContentMode } = useTheme();
1648
+ const { getMenuType, getMenuMode } = useMenu();
1649
+ const defaultConf = getConfig();
1650
+ function getConfig() {
1651
+ return {
1652
+ contentMode: unref(getContentMode),
1653
+ menuOptions: {
1654
+ mode: unref(getMenuMode),
1655
+ type: unref(getMenuType),
1656
+ split: unref(getMenuType) === MenuType.MIX ? true : false
1657
+ },
1658
+ headOptions: {
1659
+ showBreadCrumb: unref(getShowBread),
1660
+ showSearch: unref(getShowSearch),
1661
+ notice: unref(getShowNotice),
1662
+ showFullScreen: unref(getShowFullScreen),
1663
+ showLocaleSwitch: unref(getShowLocale)
1664
+ },
1665
+ mulTabsOptions: {
1666
+ show: unref(getShowMultipleTab)
1667
+ },
1668
+ footerOptions: {
1669
+ show: unref(getShowFooter)
1670
+ }
1671
+ };
1672
+ }
1673
+ function copy() {
1674
+ const afterUpdateConfig = getConfig();
1675
+ let copyObj = {};
1676
+ const isDiff = (newVal, oldVal) => newVal !== oldVal ? newVal : null;
1677
+ const isSameObj = (val1, val2) => JSON.stringify(val1) === JSON.stringify(val2);
1678
+ const getDiff = (target, orgTarget) => {
1679
+ let obj = {};
1680
+ for (let it in target) {
1681
+ if (isDiff(target[it], orgTarget[it]) !== null) {
1682
+ obj[it] = target[it];
1683
+ }
1684
+ }
1685
+ return obj;
1686
+ };
1687
+ for (let it in afterUpdateConfig) {
1688
+ if (!isSameObj(afterUpdateConfig[it], defaultConf[it])) {
1689
+ copyObj[it] = getDiff(afterUpdateConfig[it], defaultConf[it]);
1690
+ }
1691
+ }
1692
+ if (Object.keys(copyObj).length) {
1693
+ if (copyText(JSON.stringify(copyObj).replaceAll('"', ""))) {
1694
+ Modal.success({
1695
+ centered: true,
1696
+ okText: "\u786E\u5B9A",
1697
+ title: "\u64CD\u4F5C\u6210\u529F",
1698
+ content: "\u590D\u5236\u6210\u529F,\u8BF7\u5230 src/core/settings/theme.ts \u4E2D\u4FEE\u6539\u914D\u7F6E\uFF01"
1699
+ });
1700
+ }
1701
+ } else {
1702
+ Modal.info({
1703
+ centered: true,
1704
+ okText: "\u786E\u5B9A",
1705
+ title: "\u62F7\u8D1D\u63D0\u793A",
1706
+ content: "\u672A\u68C0\u6D4B\u5230\u4FEE\u6539\u4EFB\u4F55\u914D\u7F6E\u4FE1\u606F!"
1707
+ });
1708
+ }
1709
+ }
1710
+ function reset() {
1711
+ useThemeStore().setThemeConf(defaultConf);
1712
+ }
1713
+ return (_ctx, _cache) => {
1714
+ const _component_ADivider = Divider;
1715
+ const _component_AButton = Button;
1716
+ const _component_ADrawer = Drawer;
1717
+ const _directive_icon = resolveDirective("icon");
1718
+ return openBlock(), createElementBlock(Fragment, null, [
1719
+ createElementVNode("span", {
1720
+ onClick: _cache[0] || (_cache[0] = ($event) => visible.value = true),
1721
+ class: "dt_header_icon text-lg text-gray-800 cursor-pointer px-3 hover:bg-gray-500 hover:bg-opacity-50 transition-all duration-300 relative"
1722
+ }, [
1723
+ withDirectives(createElementVNode("span", null, null, 512), [
1724
+ [_directive_icon, "ant-design:setting-outlined"]
1725
+ ])
1726
+ ]),
1727
+ createVNode(_component_ADrawer, {
1728
+ visible: unref$1(visible),
1729
+ "onUpdate:visible": _cache[1] || (_cache[1] = ($event) => isRef(visible) ? visible.value = $event : null),
1730
+ title: unref$1(t)("PROJECT_SETTING"),
1731
+ placement: "right",
1732
+ width: "320"
1733
+ }, {
1734
+ default: withCtx(() => [
1735
+ createVNode(_component_ADivider, null, {
1736
+ default: withCtx(() => [
1737
+ createTextVNode(toDisplayString(unref$1(t)("NAV_MODE")), 1)
1738
+ ]),
1739
+ _: 1
1740
+ }),
1741
+ createVNode(unref$1(_sfc_main$k)),
1742
+ createVNode(_component_ADivider, null, {
1743
+ default: withCtx(() => [
1744
+ createTextVNode(toDisplayString(unref$1(t)("PAGE_SHOW")), 1)
1745
+ ]),
1746
+ _: 1
1747
+ }),
1748
+ createVNode(unref$1(_sfc_main$h)),
1749
+ createVNode(_component_ADivider),
1750
+ createElementVNode("div", _hoisted_1$7, [
1751
+ createVNode(_component_AButton, {
1752
+ onClick: copy,
1753
+ class: "mb-3",
1754
+ type: "primary",
1755
+ block: ""
1756
+ }, {
1757
+ default: withCtx(() => [
1758
+ createTextVNode(toDisplayString(unref$1(t)("COPY")), 1)
1759
+ ]),
1760
+ _: 1
1761
+ }),
1762
+ createVNode(_component_AButton, {
1763
+ onClick: reset,
1764
+ class: "mb-3",
1765
+ block: ""
1766
+ }, {
1767
+ default: withCtx(() => [
1768
+ createTextVNode(toDisplayString(unref$1(t)("RESET")), 1)
1769
+ ]),
1770
+ _: 1
1771
+ })
1772
+ ]),
1773
+ createElementVNode("div", _hoisted_2$3, toDisplayString(unref$1(t)("DRAWER_TIPS")), 1)
1774
+ ]),
1775
+ _: 1
1776
+ }, 8, ["visible", "title"])
1777
+ ], 64);
1778
+ };
1779
+ }
1780
+ });
1781
+ function useSplitMenu(splitType) {
1782
+ const menusRef = ref$1([]);
1783
+ const { currentRoute } = useRouter$1();
1784
+ const { menusMap } = getMenusMap();
1785
+ const { getIsHorizontal, getSplit } = useMenu();
1786
+ const throttleHandleSplitLeftMenu = useThrottleFn(handleSplitLeftMenu, 50);
1787
+ const splitNotLeft = computed$1(
1788
+ () => unref$1(splitType) !== MenuSplitTye.LEFT && !unref$1(getIsHorizontal)
1789
+ );
1790
+ const getSplitLeft = computed$1(
1791
+ () => !unref$1(getSplit) || unref$1(splitType) !== MenuSplitTye.LEFT
1792
+ );
1793
+ const getSplitTop = computed$1(
1794
+ () => unref$1(splitType) === MenuSplitTye.TOP
1795
+ );
1796
+ const normalType = computed$1(
1797
+ () => !unref$1(getSplit) || unref$1(splitType) === MenuSplitTye.NONE
1798
+ );
1799
+ watch$1(
1800
+ [() => unref$1(currentRoute)?.path, () => unref$1(splitType)],
1801
+ ([path]) => {
1802
+ if (unref$1(splitNotLeft))
1803
+ return;
1804
+ throttleHandleSplitLeftMenu(path);
1805
+ },
1806
+ {
1807
+ immediate: true
1808
+ }
1809
+ );
1810
+ watch$1(
1811
+ () => getSplit.value,
1812
+ () => {
1813
+ if (unref$1(splitNotLeft))
1814
+ return;
1815
+ getMenus2();
1816
+ }
1817
+ );
1818
+ function handleSplitLeftMenu(path) {
1819
+ if (unref$1(getSplitLeft))
1820
+ return;
1821
+ menusRef.value = menusMap.filter((it) => it.includesPath.includes(path))[0]?.children;
1822
+ }
1823
+ async function getMenus2() {
1824
+ if (unref$1(normalType)) {
1825
+ menusRef.value = DtCache.getLocal(CacheKey.MENUS)?.children;
1826
+ return;
1827
+ }
1828
+ if (unref$1(getSplitTop)) {
1829
+ menusRef.value = await getShallowMenus();
1830
+ }
1831
+ }
1832
+ getMenus2();
1833
+ return { menusRef };
1834
+ }
1835
+ function getMenus() {
1836
+ return DtCache.getLocal(CacheKey.MENUS)?.children;
1837
+ }
1838
+ function getFirstMenuPath(item) {
1839
+ let isFind = false, path = "";
1840
+ const getPath = (menu) => {
1841
+ if (isFind)
1842
+ return;
1843
+ if (menu.children && menu.children.length) {
1844
+ menu.children.forEach((node) => getPath(node));
1845
+ } else {
1846
+ path = menu.url;
1847
+ isFind = true;
1848
+ }
1849
+ };
1850
+ getPath(item);
1851
+ return path;
1852
+ }
1853
+ function getMenusMap() {
1854
+ const menus = getMenus();
1855
+ const menusMap = [];
1856
+ const getPaths = (menu, path) => {
1857
+ if (menu.children && menu.children.length) {
1858
+ menu.children.forEach((node) => getPaths(node, path));
1859
+ } else {
1860
+ path.push(menu.url);
1861
+ }
1862
+ return path;
1863
+ };
1864
+ menus.map((item) => {
1865
+ item.url = getFirstMenuPath(item);
1866
+ menusMap.push({
1867
+ parentPath: item.url,
1868
+ children: item.children || [],
1869
+ includesPath: getPaths(item, [])
1870
+ });
1871
+ });
1872
+ return { menusMap };
1873
+ }
1874
+ function getShallowMenus() {
1875
+ const menus = getMenus();
1876
+ const shallowMenuList = menus.map((item) => {
1877
+ item.url = getFirstMenuPath(item);
1878
+ return { ...item, children: void 0 };
1879
+ });
1880
+ return shallowMenuList;
1881
+ }
1882
+ const BasicMenu = {
1883
+ items: {
1884
+ type: Array
1885
+ },
1886
+ collapsedShowTitle: Boolean,
1887
+ inlineIndent: {
1888
+ default: 20
1889
+ },
1890
+ mode: {
1891
+ type: String,
1892
+ default: MenuMode.INLINE
1893
+ },
1894
+ type: {
1895
+ type: String,
1896
+ default: MenuType.SIDE
1897
+ },
1898
+ theme: {
1899
+ default: Theme.DARK
1900
+ },
1901
+ inlineCollapsed: Boolean,
1902
+ isHorizontal: Boolean,
1903
+ beforeClickFn: {
1904
+ type: Function
1905
+ },
1906
+ mixSider: Boolean
1907
+ };
1908
+ const ItemProp = {
1909
+ item: {
1910
+ type: Object,
1911
+ default: {}
1912
+ },
1913
+ theme: {
1914
+ type: String,
1915
+ default: Theme.DARK
1916
+ },
1917
+ isHorizontal: Boolean,
1918
+ showTitle: Boolean,
1919
+ beforeClickFn: {
1920
+ type: Function
1921
+ }
1922
+ };
1923
+ const contentProps = {
1924
+ item: {
1925
+ type: Object,
1926
+ default: {}
1927
+ },
1928
+ showTitle: Boolean,
1929
+ level: Number,
1930
+ isHorizontal: Boolean
1931
+ };
1932
+ ({
1933
+ items: {
1934
+ type: Array,
1935
+ default: () => []
1936
+ },
1937
+ collapse: Boolean,
1938
+ mixSider: Boolean,
1939
+ theme: {
1940
+ default: Theme.DARK
1941
+ },
1942
+ collapsedShowTitle: Boolean,
1943
+ beforeClickFn: {
1944
+ type: Function
1945
+ },
1946
+ isSplitMenu: Boolean
1947
+ });
1948
+ const _sfc_main$f = /* @__PURE__ */ defineComponent$1({
1949
+ __name: "menu-item-content",
1950
+ props: contentProps,
1951
+ setup(__props) {
1952
+ const { getIsZH, getUiSize } = useHeader();
1953
+ return (_ctx, _cache) => {
1954
+ return openBlock(), createElementBlock("span", {
1955
+ class: normalizeClass(["dt-basic-menu-item-content-flex items-center dt-menu-item h-full", unref$1(getUiSize)])
1956
+ }, [
1957
+ createElementVNode("i", {
1958
+ class: normalizeClass(["menu-icon i", _ctx.item.icon])
1959
+ }, null, 2),
1960
+ createElementVNode("span", null, toDisplayString(unref$1(getIsZH) ? _ctx.item.label : _ctx.item.enLabel), 1)
1961
+ ], 2);
1962
+ };
1963
+ }
1964
+ });
1965
+ const _sfc_main$e = /* @__PURE__ */ defineComponent$1({
1966
+ __name: "basic-menu-item",
1967
+ props: ItemProp,
1968
+ setup(__props) {
1969
+ const props = __props;
1970
+ return (_ctx, _cache) => {
1971
+ const _component_AMenuItem = MenuItem;
1972
+ return openBlock(), createBlock(_component_AMenuItem, {
1973
+ key: _ctx.item.url
1974
+ }, {
1975
+ default: withCtx(() => [
1976
+ createVNode(_sfc_main$f, normalizeProps(guardReactiveProps(props)), null, 16)
1977
+ ]),
1978
+ _: 1
1979
+ });
1980
+ };
1981
+ }
1982
+ });
1983
+ const _sfc_main$d = /* @__PURE__ */ defineComponent$1({
1984
+ __name: "basic-sub-menu-item",
1985
+ props: ItemProp,
1986
+ setup(__props) {
1987
+ const props = __props;
1988
+ const { getShowMenu } = useMenu();
1989
+ const {
1990
+ theme,
1991
+ item
1992
+ } = props;
1993
+ const menuHasChildren = (menu) => {
1994
+ return !!menu.children && menu.children.length > 0;
1995
+ };
1996
+ return (_ctx, _cache) => {
1997
+ const _component_BasicSubMenuItem = resolveComponent("BasicSubMenuItem", true);
1998
+ const _component_ASubMenu = SubMenu;
1999
+ return openBlock(), createElementBlock(Fragment, null, [
2000
+ !menuHasChildren(unref$1(item)) && unref$1(getShowMenu) ? (openBlock(), createBlock(_sfc_main$e, normalizeProps(mergeProps({ key: 0 }, props)), null, 16)) : createCommentVNode("", true),
2001
+ menuHasChildren(unref$1(item)) && unref$1(getShowMenu) ? (openBlock(), createBlock(_component_ASubMenu, {
2002
+ class: normalizeClass([unref$1(theme)]),
2003
+ key: unref$1(item).id,
2004
+ popupClassName: "app-top-menu-popup"
2005
+ }, {
2006
+ title: withCtx(() => [
2007
+ createVNode(_sfc_main$f, mergeProps(props, { item: unref$1(item) }), null, 16, ["item"])
2008
+ ]),
2009
+ default: withCtx(() => [
2010
+ (openBlock(true), createElementBlock(Fragment, null, renderList(unref$1(item).children, (childrenItem) => {
2011
+ return openBlock(), createBlock(_component_BasicSubMenuItem, mergeProps({
2012
+ key: childrenItem.id
2013
+ }, props, { item: childrenItem }), null, 16, ["item"]);
2014
+ }), 128))
2015
+ ]),
2016
+ _: 1
2017
+ }, 8, ["class"])) : createCommentVNode("", true)
2018
+ ], 64);
2019
+ };
2020
+ }
2021
+ });
2022
+ const _sfc_main$c = /* @__PURE__ */ defineComponent$1({
2023
+ __name: "basic-menu",
2024
+ props: BasicMenu,
2025
+ emits: ["menuClick"],
2026
+ setup(__props, { emit: emits }) {
2027
+ const {
2028
+ theme,
2029
+ items,
2030
+ mode,
2031
+ type,
2032
+ isHorizontal,
2033
+ inlineIndent,
2034
+ mixSider,
2035
+ beforeClickFn
2036
+ } = __props;
2037
+ const { getSplit } = useMenu();
2038
+ const { currentRoute } = useRouter$1();
2039
+ const menuState = reactive({
2040
+ defaultSelectedKeys: [],
2041
+ openKeys: [],
2042
+ selectedKeys: [],
2043
+ collapsedOpenKeys: []
2044
+ });
2045
+ const { handleOpenChange, setOpenKeys, getOpenKeys } = useOpenKeys(
2046
+ menuState,
2047
+ items,
2048
+ type
2049
+ );
2050
+ watch$1(
2051
+ () => currentRoute.value.path,
2052
+ (val) => {
2053
+ if (val === "/")
2054
+ return;
2055
+ handleMenuChange(val);
2056
+ },
2057
+ {
2058
+ immediate: true
2059
+ }
2060
+ );
2061
+ async function handleMenuChange(path) {
2062
+ setOpenKeys(path);
2063
+ if (isHorizontal && unref$1(getSplit)) {
2064
+ const parentPath = getBreadCrumb(path, items);
2065
+ menuState.selectedKeys = [parentPath?.[0]?.url];
2066
+ } else {
2067
+ const parentPaths = await getBreadCrumb(path);
2068
+ menuState.selectedKeys = parentPaths.reduce((keys, it) => {
2069
+ it.url && keys.push(it.url);
2070
+ return keys;
2071
+ }, []);
2072
+ }
2073
+ }
2074
+ const { getCollapsed } = useMenu();
2075
+ const getInlineCollapsed = computed$1(() => {
2076
+ const isInline = unref$1(mode) === MenuMode.INLINE;
2077
+ if (isInline) {
2078
+ return mixSider ? false : unref$1(getCollapsed);
2079
+ }
2080
+ return false;
2081
+ });
2082
+ async function handleMenuClick(item) {
2083
+ if (beforeClickFn && isFunction(beforeClickFn)) {
2084
+ const flag = await beforeClickFn(item.key);
2085
+ if (!flag)
2086
+ return;
2087
+ }
2088
+ emits("menuClick", item.key);
2089
+ menuState.selectedKeys = [item.key];
2090
+ }
2091
+ return (_ctx, _cache) => {
2092
+ const _component_AMenu = Menu;
2093
+ return openBlock(), createBlock(_component_AMenu, {
2094
+ theme: _ctx.theme,
2095
+ selectedKeys: menuState.selectedKeys,
2096
+ defaultSelectedKeys: menuState.defaultSelectedKeys,
2097
+ openKeys: menuState.openKeys,
2098
+ inlineIndent: _ctx.inlineIndent,
2099
+ subMenuOpenDelay: 0.2,
2100
+ mode: _ctx.mode,
2101
+ collapsible: "",
2102
+ onClick: handleMenuClick,
2103
+ onOpenChange: unref$1(handleOpenChange),
2104
+ collapsed: unref$1(getInlineCollapsed),
2105
+ class: normalizeClass(unref$1(getSplit) ? "dt-split-menu" : "")
2106
+ }, {
2107
+ default: withCtx(() => [
2108
+ (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.items, (item) => {
2109
+ return openBlock(), createBlock(_sfc_main$d, {
2110
+ key: item.id,
2111
+ item,
2112
+ theme: _ctx.theme,
2113
+ isHorizontal: _ctx.isHorizontal
2114
+ }, null, 8, ["item", "theme", "isHorizontal"]);
2115
+ }), 128))
2116
+ ]),
2117
+ _: 1
2118
+ }, 8, ["theme", "selectedKeys", "defaultSelectedKeys", "openKeys", "inlineIndent", "subMenuOpenDelay", "mode", "onOpenChange", "collapsed", "class"]);
2119
+ };
2120
+ }
2121
+ });
2122
+ const _sfc_main$b = defineComponent$1({
2123
+ name: "LayoutMenu",
2124
+ props: {
2125
+ theme: String,
2126
+ splitType: {
2127
+ type: Number,
2128
+ default: MenuSplitTye.NONE
2129
+ },
2130
+ isHorizontal: Boolean,
2131
+ menuMode: String
2132
+ },
2133
+ setup(props) {
2134
+ const {
2135
+ getMenuType,
2136
+ getMenuMode,
2137
+ getMenuTheme,
2138
+ getCollapsed,
2139
+ getCollapsedShowTitle,
2140
+ getIsHorizontal,
2141
+ getIsSidebarType,
2142
+ getSplit
2143
+ } = useMenu();
2144
+ const {
2145
+ getShowLogo
2146
+ } = useHeader();
2147
+ const {
2148
+ menusRef
2149
+ } = useSplitMenu(toRef(props, "splitType"));
2150
+ const slots = getParentSlots(null, "dt-theme");
2151
+ const getComputedTheme = computed$1(() => props.theme || unref$1(getMenuTheme));
2152
+ const getComputedMenuMode = computed$1(() => props.menuMode || unref$1(getMenuMode));
2153
+ const getIsShowLogo = computed$1(() => unref$1(getShowLogo) && unref$1(getIsSidebarType));
2154
+ const getUseScroll = computed$1(() => {
2155
+ return !unref$1(getIsHorizontal) && (unref$1(getIsSidebarType) || props.splitType === MenuSplitTye.LEFT || props.splitType === MenuSplitTye.NONE);
2156
+ });
2157
+ const getLogoClass = computed$1(() => [`dt-menu-logo`, unref$1(getComputedTheme)]);
2158
+ const getMenuProps = computed$1(() => {
2159
+ const menus = unref$1(menusRef);
2160
+ return {
2161
+ menus,
2162
+ beforeClickFn: beforeMenuClickFn,
2163
+ items: menus,
2164
+ theme: unref$1(getComputedTheme),
2165
+ collapse: unref$1(getCollapsed),
2166
+ collapsedShowTitle: unref$1(getCollapsedShowTitle),
2167
+ onMenuClick: handleMenuClick
2168
+ };
2169
+ });
2170
+ const go = useGo();
2171
+ function beforeMenuClickFn(path) {
2172
+ if (!isUrl(path)) {
2173
+ return true;
2174
+ }
2175
+ openWindow(path);
2176
+ return false;
2177
+ }
2178
+ function handleMenuClick(path) {
2179
+ go(path);
2180
+ }
2181
+ function renderHeader() {
2182
+ if (slots.logo) {
2183
+ return createVNode(DtSlotContainer, {
2184
+ "template": slots.logo,
2185
+ "data": {
2186
+ theme: unref$1(getComputedTheme),
2187
+ collapsed: unref$1(getCollapsed)
2188
+ }
2189
+ }, null);
2190
+ }
2191
+ if (!unref$1(getIsShowLogo))
2192
+ return null;
2193
+ return createVNode(_sfc_main$v, {
2194
+ "showTitle": !unref$1(getCollapsed),
2195
+ "class": unref$1(getLogoClass),
2196
+ "theme": unref$1(getComputedTheme)
2197
+ }, null);
2198
+ }
2199
+ function renderFooter() {
2200
+ if (unref$1(getMenuType) === MenuType.SIDE || unref$1(getMenuType) === MenuType.MIX && props.splitType === 2) {
2201
+ return slots.menuFooter ? createVNode(DtSlotContainer, {
2202
+ "template": slots.menuFooter,
2203
+ "data": {
2204
+ theme: unref$1(getComputedTheme),
2205
+ collapsed: unref$1(getCollapsed)
2206
+ }
2207
+ }, null) : null;
2208
+ }
2209
+ return null;
2210
+ }
2211
+ function renderMenu() {
2212
+ const {
2213
+ menus,
2214
+ ...menuProps
2215
+ } = unref$1(getMenuProps);
2216
+ if (!menus || !menus.length)
2217
+ return null;
2218
+ return createVNode(_sfc_main$c, mergeProps(menuProps, {
2219
+ "isHorizontal": props.isHorizontal,
2220
+ "type": unref$1(getMenuType),
2221
+ "showLogo": unref$1(getIsShowLogo),
2222
+ "mode": unref$1(getComputedMenuMode),
2223
+ "items": menus
2224
+ }), null);
2225
+ }
2226
+ return () => {
2227
+ return createVNode(Fragment, null, [renderHeader(), unref$1(getUseScroll) ? createVNode(DtScrollContainer, null, {
2228
+ default: () => renderMenu()
2229
+ }) : renderMenu(), renderFooter()]);
2230
+ };
2231
+ }
2232
+ });
2233
+ const _hoisted_1$6 = { class: "dt-header-left flex h-full items-center" };
2234
+ const _hoisted_2$2 = {
2235
+ key: 0,
2236
+ class: "flex-1 h-full min-w-0 items-center"
2237
+ };
2238
+ const _sfc_main$a = /* @__PURE__ */ defineComponent$1({
2239
+ __name: "index",
2240
+ props: {
2241
+ fixed: Boolean
2242
+ },
2243
+ setup(__props) {
2244
+ const props = __props;
2245
+ const { getSplit } = useMenu();
2246
+ const {
2247
+ getHeaderTheme,
2248
+ getShowHeaderLogo,
2249
+ getShowHeaderTrigger,
2250
+ getShowBread,
2251
+ getShowLocale,
2252
+ getShowFullScreen,
2253
+ getShowSettingTheme,
2254
+ getShowNotice,
2255
+ getShowTopMenu,
2256
+ getShowSearch,
2257
+ getShowUiSize
2258
+ } = useHeader();
2259
+ const getSplitType = computed$1(() => {
2260
+ return unref$1(getSplit) ? MenuSplitTye.TOP : MenuSplitTye.NONE;
2261
+ });
2262
+ const getMenuMode = computed$1(() => {
2263
+ return unref$1(getSplit) ? MenuMode.HORIZONTAL : null;
2264
+ });
2265
+ const getHeaderCls = computed$1(() => {
2266
+ let theme = unref$1(getHeaderTheme);
2267
+ let cls = "dt-header flex p-0 items-center justify-between ";
2268
+ if (props.fixed) {
2269
+ cls += "fixed top-0 left-0 w-full z-10 ";
2270
+ }
2271
+ cls += `dt-header--${theme}`;
2272
+ return cls;
2273
+ });
2274
+ return (_ctx, _cache) => {
2275
+ const _component_ALayoutHeader = LayoutHeader;
2276
+ return openBlock(), createBlock(_component_ALayoutHeader, {
2277
+ class: normalizeClass([unref$1(getHeaderCls), "flex items-center justify-between"])
2278
+ }, {
2279
+ default: withCtx(() => [
2280
+ createElementVNode("div", _hoisted_1$6, [
2281
+ unref$1(getShowHeaderLogo) ? (openBlock(), createBlock(unref$1(_sfc_main$v), {
2282
+ key: 0,
2283
+ theme: unref$1(getHeaderTheme),
2284
+ class: "dt-header-logo"
2285
+ }, null, 8, ["theme"])) : createCommentVNode("", true),
2286
+ unref$1(getShowHeaderTrigger) && !unref$1(getSplit) ? (openBlock(), createBlock(unref$1(_sfc_main$u), {
2287
+ key: 1,
2288
+ theme: unref$1(getHeaderTheme)
2289
+ }, null, 8, ["theme"])) : createCommentVNode("", true),
2290
+ unref$1(getShowBread) ? (openBlock(), createBlock(unref$1(_sfc_main$t), { key: 2 })) : createCommentVNode("", true)
2291
+ ]),
2292
+ unref$1(getShowTopMenu) ? (openBlock(), createElementBlock("div", _hoisted_2$2, [
2293
+ createVNode(_sfc_main$b, {
2294
+ isHorizontal: true,
2295
+ theme: unref$1(getHeaderTheme),
2296
+ splitType: unref$1(getSplitType),
2297
+ menuMode: unref$1(getMenuMode)
2298
+ }, null, 8, ["theme", "splitType", "menuMode"])
2299
+ ])) : createCommentVNode("", true),
2300
+ createElementVNode("div", {
2301
+ class: "dt-header-action flex items-center",
2302
+ style: normalizeStyle({
2303
+ "padding-right": unref$1(getShowSettingTheme) ? "" : "20px"
2304
+ })
2305
+ }, [
2306
+ unref$1(getShowSearch) ? (openBlock(), createBlock(unref$1(_sfc_main$s), { key: 0 })) : createCommentVNode("", true),
2307
+ unref$1(getShowNotice) ? (openBlock(), createBlock(unref$1(_sfc_main$n), { key: 1 })) : createCommentVNode("", true),
2308
+ unref$1(getShowUiSize) ? (openBlock(), createBlock(unref$1(_sfc_main$m), { key: 2 })) : createCommentVNode("", true),
2309
+ unref$1(getShowFullScreen) ? (openBlock(), createBlock(unref$1(_sfc_main$w), { key: 3 })) : createCommentVNode("", true),
2310
+ unref$1(getShowLocale) ? (openBlock(), createBlock(unref$1(_sfc_main$r), {
2311
+ key: 4,
2312
+ reload: true
2313
+ })) : createCommentVNode("", true),
2314
+ createVNode(unref$1(_sfc_main$l)),
2315
+ unref$1(getShowSettingTheme) ? (openBlock(), createBlock(unref$1(_sfc_main$g), { key: 5 })) : createCommentVNode("", true)
2316
+ ], 4)
2317
+ ]),
2318
+ _: 1
2319
+ }, 8, ["class"]);
2320
+ };
2321
+ }
2322
+ });
2323
+ function useMenuSwitch() {
2324
+ const brokenRef = ref(false);
2325
+ const { getMiniWidthNumber } = useMenu();
2326
+ const getCollapsedWidth = computed(() => {
2327
+ return unref(brokenRef) ? 0 : unref(getMiniWidthNumber);
2328
+ });
2329
+ function onBreakPointChange(broken) {
2330
+ brokenRef.value = broken;
2331
+ }
2332
+ return { getCollapsedWidth, onBreakPointChange };
2333
+ }
2334
+ function useTrigger() {
2335
+ const { getTrigger, getSplit } = useMenu();
2336
+ const getShowTrigger = computed(() => {
2337
+ const trigger = unref(getTrigger);
2338
+ return trigger && unref(getSplit);
2339
+ });
2340
+ const getTriggerAttr = computed(() => {
2341
+ if (unref(getShowTrigger)) {
2342
+ return {};
2343
+ }
2344
+ return {
2345
+ trigger: null
2346
+ };
2347
+ });
2348
+ return { getTriggerAttr, getShowTrigger };
2349
+ }
2350
+ const _sfc_main$9 = /* @__PURE__ */ defineComponent$1({
2351
+ __name: "sider-trigger",
2352
+ props: {
2353
+ type: {
2354
+ type: String,
2355
+ default: null
2356
+ }
2357
+ },
2358
+ setup(__props) {
2359
+ const { getCollapsed, toggleCollapsed } = useMenu();
2360
+ return (_ctx, _cache) => {
2361
+ return openBlock(), createElementBlock("div", {
2362
+ onClick: _cache[0] || (_cache[0] = withModifiers(
2363
+ (...args) => unref$1(toggleCollapsed) && unref$1(toggleCollapsed)(...args),
2364
+ ["stop"]
2365
+ ))
2366
+ }, [
2367
+ createElementVNode("i", {
2368
+ class: normalizeClass(["i", unref$1(getCollapsed) ? "ant-design:double-right-outlined" : "ant-design:double-left-outlined"])
2369
+ }, null, 2)
2370
+ ]);
2371
+ };
2372
+ }
2373
+ });
2374
+ const _sfc_main$8 = /* @__PURE__ */ defineComponent$1({
2375
+ __name: "drag-bar",
2376
+ setup(__props) {
2377
+ const { getCollapsed, getCanDrag, getMenuWidth } = useMenu();
2378
+ const getDragBarStyle = computed$1(() => {
2379
+ if (!unref$1(getCollapsed)) {
2380
+ return { left: `${unref$1(getMenuWidth)}px` };
2381
+ }
2382
+ return {};
2383
+ });
2384
+ const getClass = computed$1(() => {
2385
+ return [
2386
+ "dt-darg-bar",
2387
+ {
2388
+ "dt-darg-bar--hide": !unref$1(getCanDrag)
2389
+ }
2390
+ ];
2391
+ });
2392
+ return (_ctx, _cache) => {
2393
+ return openBlock(), createElementBlock("div", {
2394
+ class: normalizeClass(unref$1(getClass)),
2395
+ style: normalizeStyle(unref$1(getDragBarStyle))
2396
+ }, null, 6);
2397
+ };
2398
+ }
2399
+ });
2400
+ const _sfc_main$7 = /* @__PURE__ */ defineComponent$1({
2401
+ __name: "index",
2402
+ setup(__props) {
2403
+ const {
2404
+ getMenuFixed,
2405
+ getSplit,
2406
+ getMenuHidden,
2407
+ getMenuWidth,
2408
+ getCollapsed,
2409
+ getMenuTheme,
2410
+ getRealWidth,
2411
+ getIsMixMode
2412
+ } = useMenu();
2413
+ const {
2414
+ getCollapsedWidth,
2415
+ onBreakPointChange
2416
+ } = useMenuSwitch();
2417
+ const {
2418
+ getTriggerAttr,
2419
+ getShowTrigger
2420
+ } = useTrigger();
2421
+ const dragBarRef = ref(null);
2422
+ const sideRef = ref(null);
2423
+ const hiddenDomStyle = computed(() => {
2424
+ const width = `${unref(getRealWidth)}px`;
2425
+ return {
2426
+ width,
2427
+ overflow: "hidden",
2428
+ flex: `0 0 ${width}`,
2429
+ maxWidth: width,
2430
+ minWidth: width,
2431
+ transition: "all 0.2s"
2432
+ };
2433
+ });
2434
+ const showClassSideBarRef = computed(() => {
2435
+ const {
2436
+ menusRef
2437
+ } = useSplitMenu(getSplitType);
2438
+ if (!unref(menusRef)?.length)
2439
+ return false;
2440
+ return unref(getSplit) ? !unref(getMenuHidden) : true;
2441
+ });
2442
+ useDragLine(sideRef, dragBarRef);
2443
+ const getSiderClass = computed(() => {
2444
+ let cls = `dt-sideBar overflow-hidden z-10 `;
2445
+ if (unref(getMenuFixed)) {
2446
+ cls += `dt-sideBar--fixed t-0 l-0 h-full `;
2447
+ }
2448
+ if (unref(getIsMixMode)) {
2449
+ cls += "dt-sideBar--mix ";
2450
+ }
2451
+ return cls;
2452
+ });
2453
+ const getSplitType = computed(() => {
2454
+ return unref(getSplit) ? MenuSplitTye.LEFT : MenuSplitTye.NONE;
2455
+ });
2456
+ const getMode = computed(() => {
2457
+ return unref(getSplit) ? MenuMode.INLINE : null;
2458
+ });
2459
+ const renderTrigger = h(_sfc_main$9);
2460
+ return (_ctx, _cache) => {
2461
+ const _component_ALayoutSider = LayoutSider;
2462
+ return openBlock(), createElementBlock(Fragment, null, [unref$1(getMenuFixed) ? withDirectives((openBlock(), createElementBlock("div", {
2463
+ key: 0,
2464
+ style: normalizeStyle(unref$1(hiddenDomStyle))
2465
+ }, null, 4)), [[vShow, unref$1(showClassSideBarRef)]]) : createCommentVNode("", true), withDirectives(createVNode(_component_ALayoutSider, mergeProps({
2466
+ ref_key: "sideRef",
2467
+ ref: sideRef,
2468
+ collapsible: "",
2469
+ breakpoint: "lg",
2470
+ class: unref$1(getSiderClass),
2471
+ width: unref$1(getMenuWidth),
2472
+ collapsed: unref$1(getCollapsed),
2473
+ collapsedWidth: unref$1(getCollapsedWidth),
2474
+ onBreakpoint: unref$1(onBreakPointChange),
2475
+ theme: unref$1(getMenuTheme),
2476
+ trigger: unref$1(renderTrigger)
2477
+ }, unref$1(getTriggerAttr)), {
2478
+ default: withCtx(() => [createVNode(_sfc_main$b, {
2479
+ theme: unref$1(getMenuTheme),
2480
+ menuMode: unref$1(getMode),
2481
+ splitType: unref$1(getSplitType)
2482
+ }, null, 8, ["theme", "menuMode", "splitType"]), createVNode(_sfc_main$8, {
2483
+ ref_key: "dragBarRef",
2484
+ ref: dragBarRef
2485
+ }, null, 512)]),
2486
+ _: 1
2487
+ }, 16, ["class", "width", "collapsed", "collapsedWidth", "onBreakpoint", "theme", "trigger"]), [[vShow, unref$1(showClassSideBarRef)]])], 64);
2488
+ };
2489
+ }
2490
+ });
2491
+ const index = "";
2492
+ const _hoisted_1$5 = /* @__PURE__ */ createElementVNode("i", { class: "block i ic:baseline-autorenew" }, null, -1);
2493
+ const _hoisted_2$1 = [
2494
+ _hoisted_1$5
2495
+ ];
2496
+ const _sfc_main$6 = /* @__PURE__ */ defineComponent$1({
2497
+ __name: "TabRedo",
2498
+ setup(__props) {
2499
+ const tabStore = useRouteReuseStore();
2500
+ const router = useRouter();
2501
+ function handleRedo() {
2502
+ tabStore.refreshPage(router);
2503
+ }
2504
+ return (_ctx, _cache) => {
2505
+ return openBlock(), createElementBlock("span", {
2506
+ onClick: handleRedo,
2507
+ class: "inline-block w-9 h-9 leading-9 -mt-0.5 text-zinc-600 text-center cursor-pointer border-l border-zinc-300 hover:text-zinc-900"
2508
+ }, _hoisted_2$1);
2509
+ };
2510
+ }
2511
+ });
2512
+ function useTabDropdown() {
2513
+ const router = useRouter$1();
2514
+ const { currentRoute } = router;
2515
+ const tabStore = useRouteReuseStore();
2516
+ const state = reactive({
2517
+ current: null,
2518
+ currentIndex: 0
2519
+ });
2520
+ const getDropMenuList = computed$1(() => {
2521
+ const { t } = useI18n("UI");
2522
+ const { path, meta } = unref$1(currentRoute);
2523
+ const curItem = state.current;
2524
+ const isCurItem = curItem ? curItem.path === path : false;
2525
+ const index2 = state.currentIndex;
2526
+ const closeLeftDisabled = index2 === 0 || !isCurItem;
2527
+ const disabled = tabStore.getTabList.length === 1;
2528
+ const closeRightDisabled = !isCurItem || index2 === tabStore.getTabList.length - 1 && tabStore.getLastDragEndIndex >= 0;
2529
+ const dropMenuList = [
2530
+ {
2531
+ icon: "ic:baseline-close",
2532
+ text: t("CLOSE_CURRENT_TAG"),
2533
+ onClick: () => tabStore.closeTab(path, router),
2534
+ disabled: !!meta?.affix || disabled,
2535
+ divider: true
2536
+ },
2537
+ {
2538
+ icon: "mdi:arrow-collapse-left",
2539
+ text: t("CLOSE_LEFT_TAGS"),
2540
+ onClick: () => tabStore.closeLeftTabs(path),
2541
+ disabled: closeLeftDisabled,
2542
+ divider: false
2543
+ },
2544
+ {
2545
+ icon: "mdi:arrow-collapse-right",
2546
+ text: t("CLOSE_RIGHT_TAGS"),
2547
+ onClick: () => tabStore.closeRightTabs(path),
2548
+ disabled: closeRightDisabled,
2549
+ divider: true
2550
+ },
2551
+ {
2552
+ icon: "ic:baseline-sync-alt",
2553
+ text: t("CLOSE_OTHER_TAGS"),
2554
+ onClick: () => tabStore.closeOtherTabs(path),
2555
+ disabled: disabled || !isCurItem
2556
+ },
2557
+ {
2558
+ icon: "ic:baseline-horizontal-rule",
2559
+ text: t("CLOSE_ALL_TAGE"),
2560
+ onClick: () => tabStore.closeAllTab(currentRoute, router),
2561
+ disabled
2562
+ }
2563
+ ];
2564
+ return dropMenuList;
2565
+ });
2566
+ function handleContext(e) {
2567
+ e?.preventDefault();
2568
+ const { path } = unref$1(currentRoute);
2569
+ const index2 = tabStore.getTabList.findIndex((tab) => tab.path === path);
2570
+ state.current = unref$1(currentRoute);
2571
+ state.currentIndex = index2;
2572
+ }
2573
+ function handleMenuEvent(item) {
2574
+ item.onClick?.();
2575
+ }
2576
+ return {
2577
+ getDropMenuList,
2578
+ handleContext,
2579
+ handleMenuEvent
2580
+ };
2581
+ }
2582
+ const _hoisted_1$4 = /* @__PURE__ */ createElementVNode("i", { class: "block i ic:baseline-keyboard-arrow-down" }, null, -1);
2583
+ const _hoisted_2 = [
2584
+ _hoisted_1$4
2585
+ ];
2586
+ const _hoisted_3 = { class: "text-13" };
2587
+ const _sfc_main$5 = /* @__PURE__ */ defineComponent$1({
2588
+ __name: "TabContent",
2589
+ setup(__props) {
2590
+ const { getDropMenuList, handleContext, handleMenuEvent } = useTabDropdown();
2591
+ return (_ctx, _cache) => {
2592
+ const _component_AMenuItem = MenuItem;
2593
+ const _component_AMenuDivider = MenuDivider;
2594
+ const _component_AMenu = Menu;
2595
+ const _component_ADropdown = Dropdown;
2596
+ return openBlock(), createBlock(_component_ADropdown, {
2597
+ placement: "bottomRight",
2598
+ trigger: ["click"],
2599
+ overlayClassName: "dt-reuse-tabs__dropdown"
2600
+ }, {
2601
+ overlay: withCtx(() => [
2602
+ createVNode(_component_AMenu, null, {
2603
+ default: withCtx(() => [
2604
+ (openBlock(true), createElementBlock(Fragment, null, renderList(unref$1(getDropMenuList), (item, index2) => {
2605
+ return openBlock(), createElementBlock(Fragment, { key: index2 }, [
2606
+ createVNode(_component_AMenuItem, {
2607
+ onClick: ($event) => unref$1(handleMenuEvent)(item),
2608
+ disabled: item.disabled
2609
+ }, {
2610
+ default: withCtx(() => [
2611
+ createElementVNode("i", {
2612
+ class: normalizeClass(["i pr-4", item.icon])
2613
+ }, null, 2),
2614
+ createElementVNode("span", _hoisted_3, toDisplayString(item.text), 1)
2615
+ ]),
2616
+ _: 2
2617
+ }, 1032, ["onClick", "disabled"]),
2618
+ item.divider ? (openBlock(), createBlock(_component_AMenuDivider, {
2619
+ key: `d-${index2}`
2620
+ })) : createCommentVNode("", true)
2621
+ ], 64);
2622
+ }), 128))
2623
+ ]),
2624
+ _: 1
2625
+ })
2626
+ ]),
2627
+ default: withCtx(() => [
2628
+ createElementVNode("span", {
2629
+ onClick: _cache[0] || (_cache[0] = (...args) => unref$1(handleContext) && unref$1(handleContext)(...args)),
2630
+ class: "inline-block w-9 h-9 leading-9 -mt-0.5 text-zinc-600 text-center cursor-pointer border-l border-zinc-300 hover:text-zinc-900"
2631
+ }, _hoisted_2)
2632
+ ]),
2633
+ _: 1
2634
+ });
2635
+ };
2636
+ }
2637
+ });
2638
+ function initAffixTabs() {
2639
+ const affixList = ref$1([]);
2640
+ const tabStore = useRouteReuseStore();
2641
+ const router = useRouter$1();
2642
+ const filterAffixTabs = (routes = []) => {
2643
+ return routes && routes.reduce((tabs, route) => {
2644
+ if (route.meta && route.meta.affix) {
2645
+ tabs.push(toRaw(route));
2646
+ }
2647
+ return tabs;
2648
+ }, []);
2649
+ };
2650
+ const addAffixTabs = () => {
2651
+ const affixTabs = filterAffixTabs(router.getRoutes());
2652
+ affixList.value = affixTabs;
2653
+ for (const tab of affixTabs) {
2654
+ tabStore.addTab({
2655
+ meta: tab.meta,
2656
+ name: tab.name,
2657
+ path: tab.path
2658
+ });
2659
+ }
2660
+ };
2661
+ let isAddAffix = false;
2662
+ if (!isAddAffix) {
2663
+ addAffixTabs();
2664
+ isAddAffix = true;
2665
+ }
2666
+ return affixList.value.map((item) => item.meta?.title).filter(Boolean);
2667
+ }
2668
+ function useSortable(el, options) {
2669
+ function initSortable() {
2670
+ nextTick$1(async () => {
2671
+ if (!el)
2672
+ return;
2673
+ const Sortable = (await import("sortablejs")).default;
2674
+ Sortable.create(unref$1(el), {
2675
+ animation: 500,
2676
+ delay: 400,
2677
+ delayOnTouchOnly: true,
2678
+ ...options
2679
+ });
2680
+ });
2681
+ }
2682
+ return { initSortable };
2683
+ }
2684
+ function useTabsDrag(affixList) {
2685
+ const tabStore = useRouteReuseStore();
2686
+ const { getCanDrag } = useMultipleTab();
2687
+ nextTick$1(() => {
2688
+ if (!unref$1(getCanDrag))
2689
+ return;
2690
+ const el = document.querySelectorAll(`.dt-reuse-tabs .ant-tabs-nav-list`)?.[0];
2691
+ const { initSortable } = useSortable(el, {
2692
+ filter: (e) => {
2693
+ const text = e?.target?.innerText;
2694
+ if (!text)
2695
+ return false;
2696
+ return affixList.includes(text);
2697
+ },
2698
+ onEnd: (evt) => {
2699
+ const { oldIndex, newIndex } = evt;
2700
+ if (isNullAndUnDef(oldIndex) || isNullAndUnDef(newIndex) || oldIndex === newIndex)
2701
+ return;
2702
+ tabStore.sortTabs(oldIndex, newIndex);
2703
+ }
2704
+ });
2705
+ initSortable();
2706
+ });
2707
+ }
2708
+ const _hoisted_1$3 = { class: "dt-reuse-tabs leading-8 border-b border-solid border-gray-200" };
2709
+ const _sfc_main$4 = /* @__PURE__ */ defineComponent$1({
2710
+ __name: "index",
2711
+ setup(__props) {
2712
+ const { t } = useI18n("UI");
2713
+ const router = useRouter();
2714
+ const go = useGo(router);
2715
+ const tabStore = useRouteReuseStore();
2716
+ const { getShowQuick, getShowRedo } = useMultipleTab();
2717
+ const menuLabelMap = menuList2Map();
2718
+ const activeKeyRef = ref(null);
2719
+ const getTabsState = computed(() => {
2720
+ return tabStore.getTabList.filter((item) => !item.meta?.hideTab);
2721
+ });
2722
+ const unClose = computed(() => unref(getTabsState).length === 1);
2723
+ function handleChange(activeKey) {
2724
+ activeKeyRef.value = activeKey;
2725
+ go(activeKey);
2726
+ }
2727
+ function handleEdit(targetKey) {
2728
+ if (unref(unClose))
2729
+ return;
2730
+ tabStore.closeTab(targetKey, router);
2731
+ }
2732
+ const affixTextList = initAffixTabs();
2733
+ useTabsDrag(affixTextList);
2734
+ watch(
2735
+ () => router.currentRoute.value.path,
2736
+ (v) => {
2737
+ if (v === "/" || v === "/login")
2738
+ return;
2739
+ const { meta = {} } = unref(router.currentRoute);
2740
+ const { hideTab = false } = meta;
2741
+ if (activeKeyRef.value !== v) {
2742
+ activeKeyRef.value = v;
2743
+ }
2744
+ if (!hideTab) {
2745
+ tabStore.addTab(unref(router.currentRoute));
2746
+ }
2747
+ },
2748
+ {
2749
+ immediate: true
2750
+ }
2751
+ );
2752
+ return (_ctx, _cache) => {
2753
+ const _component_ATabPane = TabPane;
2754
+ const _component_ATabs = Tabs;
2755
+ return openBlock(), createElementBlock("div", _hoisted_1$3, [
2756
+ createVNode(_component_ATabs, {
2757
+ type: "editable-card",
2758
+ size: "small",
2759
+ animated: false,
2760
+ hideAdd: true,
2761
+ tabBarGutter: 3,
2762
+ activeKey: unref$1(activeKeyRef),
2763
+ onChange: handleChange,
2764
+ onEdit: handleEdit,
2765
+ class: "h-8"
2766
+ }, createSlots({
2767
+ default: withCtx(() => [
2768
+ (openBlock(true), createElementBlock(Fragment, null, renderList(unref$1(getTabsState), (item) => {
2769
+ return openBlock(), createBlock(_component_ATabPane, {
2770
+ key: item.query ? item.fullPath : item.path,
2771
+ closable: !(item && item.meta && item.meta.affix)
2772
+ }, {
2773
+ tab: withCtx(() => [
2774
+ createElementVNode("span", null, toDisplayString(unref$1(menuLabelMap).get(item.path) || unref$1(t)("UNKNOWN_ROUTE")), 1)
2775
+ ]),
2776
+ _: 2
2777
+ }, 1032, ["closable"]);
2778
+ }), 128))
2779
+ ]),
2780
+ _: 2
2781
+ }, [
2782
+ unref$1(getShowRedo) || unref$1(getShowQuick) ? {
2783
+ name: "rightExtra",
2784
+ fn: withCtx(() => [
2785
+ unref$1(getShowRedo) ? (openBlock(), createBlock(unref$1(_sfc_main$6), { key: 0 })) : createCommentVNode("", true),
2786
+ unref$1(getShowQuick) ? (openBlock(), createBlock(unref$1(_sfc_main$5), { key: 1 })) : createCommentVNode("", true)
2787
+ ]),
2788
+ key: "0"
2789
+ } : void 0
2790
+ ]), 1032, ["activeKey"])
2791
+ ]);
2792
+ };
2793
+ }
2794
+ });
2795
+ const _sfc_main$3 = /* @__PURE__ */ defineComponent$1({
2796
+ __name: "multiple-header",
2797
+ setup(__props) {
2798
+ const {
2799
+ getHeaderHeight,
2800
+ getFixed,
2801
+ getShowFullHeaderRef,
2802
+ getHeaderTheme,
2803
+ getShowInsetHeaderRef,
2804
+ getTabsHeight
2805
+ } = useHeader();
2806
+ const { getCalcContentWidth, getIsMixMode, getIsTopMenu, getSplit } = useMenu();
2807
+ const { getShowMultipleTab } = useMultipleTab();
2808
+ const getPlaceholderDomStyle = computed$1(() => {
2809
+ let height = unref$1(getHeaderHeight);
2810
+ if (unref$1(getIsMixMode)) {
2811
+ height = unref$1(getShowMultipleTab) ? unref$1(getTabsHeight) : 0;
2812
+ }
2813
+ return {
2814
+ height: `${height}px`
2815
+ };
2816
+ });
2817
+ const getSplitType = computed$1(() => {
2818
+ return unref$1(getSplit) ? MenuSplitTye.LEFT : MenuSplitTye.NONE;
2819
+ });
2820
+ const { menusRef } = useSplitMenu(getSplitType);
2821
+ const getWrapStyle = computed$1(() => {
2822
+ const style = {};
2823
+ if (unref$1(getSplit) && !unref$1(menusRef)?.length) {
2824
+ style.width = "100%";
2825
+ } else if (unref$1(getFixed)) {
2826
+ style.width = unref$1(getCalcContentWidth);
2827
+ }
2828
+ if (unref$1(getShowFullHeaderRef))
2829
+ style.top = "48px";
2830
+ return style;
2831
+ });
2832
+ const getClass = computed$1(() => {
2833
+ let cls = "transition-width duration-200 flex-auto";
2834
+ if (unref$1(getFixed)) {
2835
+ cls += " fixed top-0 right-0 w-full";
2836
+ }
2837
+ return cls;
2838
+ });
2839
+ return (_ctx, _cache) => {
2840
+ return openBlock(), createElementBlock("div", null, [
2841
+ unref$1(getFixed) ? (openBlock(), createElementBlock("div", {
2842
+ key: 0,
2843
+ style: normalizeStyle(unref$1(getPlaceholderDomStyle))
2844
+ }, null, 4)) : createCommentVNode("", true),
2845
+ createElementVNode("div", {
2846
+ style: normalizeStyle(unref$1(getWrapStyle)),
2847
+ class: normalizeClass(unref$1(getClass))
2848
+ }, [
2849
+ unref$1(getShowInsetHeaderRef) ? (openBlock(), createBlock(_sfc_main$a, { key: 0 })) : createCommentVNode("", true),
2850
+ unref$1(getShowMultipleTab) ? (openBlock(), createBlock(_sfc_main$4, { key: 1 })) : createCommentVNode("", true)
2851
+ ], 6)
2852
+ ]);
2853
+ };
2854
+ }
2855
+ });
2856
+ const _hoisted_1$2 = { class: "pr-2.5" };
2857
+ const _sfc_main$2 = /* @__PURE__ */ defineComponent$1({
2858
+ __name: "index",
2859
+ setup(__props) {
2860
+ const { getFooter } = useTheme();
2861
+ const { title, subTitle, height } = unref$1(getFooter);
2862
+ const footerOptions = computed$1(() => {
2863
+ return {
2864
+ lineHeight: `${height - 1}px`,
2865
+ height: `${height}px`,
2866
+ padding: "0",
2867
+ width: `100%`,
2868
+ color: "rgb(156,163,175)"
2869
+ };
2870
+ });
2871
+ return (_ctx, _cache) => {
2872
+ return openBlock(), createBlock(unref$1(LayoutFooter), {
2873
+ class: "text-center p-0 w-full block border-t border-gray-200",
2874
+ style: normalizeStyle(unref$1(footerOptions))
2875
+ }, {
2876
+ default: withCtx(() => [
2877
+ createElementVNode("span", _hoisted_1$2, toDisplayString(unref$1(title)), 1),
2878
+ createElementVNode("span", null, toDisplayString(unref$1(subTitle)), 1)
2879
+ ]),
2880
+ _: 1
2881
+ }, 8, ["style"]);
2882
+ };
2883
+ }
2884
+ });
2885
+ const _hoisted_1$1 = ["loading"];
2886
+ const _sfc_main$1 = /* @__PURE__ */ defineComponent$1({
2887
+ __name: "index",
2888
+ setup(__props) {
2889
+ const { getTransitionMode } = useApp();
2890
+ const { getLayoutContentMode, getPageLoading, getOpenPageLoading } = useTheme();
2891
+ const { getCanCache } = useMultipleTab();
2892
+ const tabStore = useRouteReuseStore();
2893
+ function getTransitionName(route) {
2894
+ return route.meta.transitionName || unref(getTransitionMode);
2895
+ }
2896
+ const getCaches = computed(() => {
2897
+ return tabStore.getCachedTabList;
2898
+ });
2899
+ return (_ctx, _cache) => {
2900
+ const _component_router_view = resolveComponent("router-view");
2901
+ const _component_ALayoutContent = LayoutContent;
2902
+ return openBlock(), createElementBlock("div", {
2903
+ id: "dt-layout-content",
2904
+ class: normalizeClass([["dt-layout-content", unref$1(getLayoutContentMode)], "relative flex-auto overflow-x-hidden min-h-0 flex"]),
2905
+ loading: unref$1(getPageLoading) && unref$1(getOpenPageLoading)
2906
+ }, [
2907
+ createVNode(_component_ALayoutContent, null, {
2908
+ default: withCtx(() => [
2909
+ createVNode(_component_router_view, null, {
2910
+ default: withCtx(({ Component, route }) => [
2911
+ createVNode(Transition, {
2912
+ name: getTransitionName(route)
2913
+ }, {
2914
+ default: withCtx(() => [
2915
+ !route.meta.hideTab && unref$1(getCanCache) ? (openBlock(), createBlock(KeepAlive, {
2916
+ key: 0,
2917
+ include: unref$1(getCaches)
2918
+ }, [
2919
+ (openBlock(), createBlock(resolveDynamicComponent(Component), {
2920
+ key: route.path
2921
+ }))
2922
+ ], 1032, ["include"])) : (openBlock(), createBlock(resolveDynamicComponent(Component), { key: 1 }))
2923
+ ]),
2924
+ _: 2
2925
+ }, 1032, ["name"])
2926
+ ]),
2927
+ _: 1
2928
+ })
2929
+ ]),
2930
+ _: 1
2931
+ })
2932
+ ], 10, _hoisted_1$1);
2933
+ };
2934
+ }
2935
+ });
2936
+ var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
2937
+ var esUs = { exports: {} };
2938
+ (function(module, exports) {
2939
+ !function(e, s) {
2940
+ module.exports = s(require$$0);
2941
+ }(commonjsGlobal, function(e) {
2942
+ function s(e2) {
2943
+ return e2 && "object" == typeof e2 && "default" in e2 ? e2 : { default: e2 };
2944
+ }
2945
+ var o = s(e), d = { name: "es-us", weekdays: "domingo_lunes_martes_mi\xE9rcoles_jueves_viernes_s\xE1bado".split("_"), weekdaysShort: "dom._lun._mar._mi\xE9._jue._vie._s\xE1b.".split("_"), weekdaysMin: "do_lu_ma_mi_ju_vi_s\xE1".split("_"), months: "enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"), monthsShort: "ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"), relativeTime: { future: "en %s", past: "hace %s", s: "unos segundos", m: "un minuto", mm: "%d minutos", h: "una hora", hh: "%d horas", d: "un d\xEDa", dd: "%d d\xEDas", M: "un mes", MM: "%d meses", y: "un a\xF1o", yy: "%d a\xF1os" }, ordinal: function(e2) {
2946
+ return e2 + "\xBA";
2947
+ }, formats: { LT: "h:mm A", LTS: "h:mm:ss A", L: "MM/DD/YYYY", LL: "D [de] MMMM [de] YYYY", LLL: "D [de] MMMM [de] YYYY h:mm A", LLLL: "dddd, D [de] MMMM [de] YYYY h:mm A" } };
2948
+ return o.default.locale(d, null, true), d;
2949
+ });
2950
+ })(esUs);
2951
+ const _hoisted_1 = { class: "dt-theme w-full h-full" };
2952
+ const _sfc_main = /* @__PURE__ */ defineComponent$1({
2953
+ __name: "index",
2954
+ setup(__props) {
2955
+ const { currentRoute } = useRouter$1();
2956
+ const { getShowFullHeaderRef, getIsZH, getHeaderHeight, getUiSize } = useHeader();
2957
+ const { getSplit, getShowMenu, getShowSidebar } = useMenu();
2958
+ const { getFooter, getShowFooter } = useTheme();
2959
+ const { height } = unref$1(getFooter);
2960
+ require$$0.locale(unref$1(getIsZH) ? "zh-cn" : "en");
2961
+ const layoutClass = computed$1(() => {
2962
+ let cls = "ant-layout";
2963
+ if (unref$1(getShowMenu)) {
2964
+ cls += " flex flex-auto min-h-0 flex-row";
2965
+ }
2966
+ return cls;
2967
+ });
2968
+ const layoutOption = computed$1(() => {
2969
+ if (unref$1(getSplit)) {
2970
+ return {
2971
+ paddingTop: unref$1(getHeaderHeight) + "px",
2972
+ background: "#f0f2f5"
2973
+ };
2974
+ }
2975
+ });
2976
+ const getContentStyle = computed$1(() => {
2977
+ return {
2978
+ flex: unref$1(getSplit) ? `0 0 calc(100% - ${unref$1(getShowFooter) || 0}px)` : `0 0 calc(100% - ${unref$1(getShowFooter) ? height : 0}px - ${unref$1(getHeaderHeight)}px)`,
2979
+ overflowY: "auto"
2980
+ };
2981
+ });
2982
+ return (_ctx, _cache) => {
2983
+ const _component_ALayout = Layout;
2984
+ const _component_AConfigProvider = ConfigProvider;
2985
+ return openBlock(), createElementBlock("div", _hoisted_1, [
2986
+ createVNode(_component_AConfigProvider, {
2987
+ locale: unref$1(getIsZH) ? unref$1(zhCN) : unref$1(en),
2988
+ "component-size": unref$1(getUiSize)
2989
+ }, {
2990
+ default: withCtx(() => [
2991
+ unref$1(currentRoute)?.name && unref$1(currentRoute).meta?.requiresAuth !== false ? (openBlock(), createBlock(_component_ALayout, {
2992
+ key: 0,
2993
+ class: "w-full h-full flex"
2994
+ }, {
2995
+ default: withCtx(() => [
2996
+ createVNode(_sfc_main$x),
2997
+ unref$1(getShowFullHeaderRef) ? (openBlock(), createBlock(_sfc_main$a, {
2998
+ key: 0,
2999
+ fixed: ""
3000
+ })) : createCommentVNode("", true),
3001
+ createVNode(_component_ALayout, {
3002
+ class: normalizeClass(unref$1(layoutClass)),
3003
+ style: normalizeStyle(unref$1(layoutOption))
3004
+ }, {
3005
+ default: withCtx(() => [
3006
+ unref$1(getShowSidebar) ? (openBlock(), createBlock(_sfc_main$7, { key: 0 })) : createCommentVNode("", true),
3007
+ createVNode(_component_ALayout, { class: "dt-theme-main flex w-full h-ful" }, {
3008
+ default: withCtx(() => [
3009
+ createVNode(_sfc_main$3),
3010
+ createVNode(_sfc_main$1, {
3011
+ style: normalizeStyle(unref$1(getContentStyle))
3012
+ }, null, 8, ["style"]),
3013
+ unref$1(getFooter) && unref$1(getFooter)["show"] ? (openBlock(), createBlock(_sfc_main$2, { key: 0 })) : createCommentVNode("", true)
3014
+ ]),
3015
+ _: 1
3016
+ })
3017
+ ]),
3018
+ _: 1
3019
+ }, 8, ["class", "style"])
3020
+ ]),
3021
+ _: 1
3022
+ })) : (openBlock(), createBlock(unref$1(RouterView), { key: 1 }))
3023
+ ]),
3024
+ _: 1
3025
+ }, 8, ["locale", "component-size"])
3026
+ ]);
3027
+ };
3028
+ }
3029
+ });
3030
+ const EN = {
3031
+ "UI": {
3032
+ "ADD": "Add ",
3033
+ "DELETE_CONFIRM": "Delete Confirm",
3034
+ "CONFIRM_DELETE": "Confirm that you want to delete the selected data\uFF1F",
3035
+ "NEED_CURD": "Missing curd function configuration, pass the curd parameter returned by useSource to the useCurd configuration option!",
3036
+ "EDIT": "Edit ",
3037
+ "EMPTY": "No Selected Data Yet!",
3038
+ "EMPTY_URL": "Request Url Can Not Empty!",
3039
+ "MULTIFY_DELETE_CONFIRM": "Batch Deletion Confirmation",
3040
+ "CONFIRM_MULTIFY_DELETE": "Confirm that you want to delete the selected data in batches?",
3041
+ "ADVANCED": "Retract",
3042
+ "EXPAND": "Expand",
3043
+ "SELECT_ICON": "Select Icon",
3044
+ "MUSE_FUNCTION": "openDialog must be a fouction",
3045
+ "NEED_RENDER": "Configure the render function",
3046
+ "SEARCH": "Search",
3047
+ "RESET": "Reset",
3048
+ "PLEASE_INPUT": "Please Input",
3049
+ "PLEASE_SELECT": "Please Select",
3050
+ "PLEASE_SET_ICON": "Please Set The Icon",
3051
+ "INPUT_FILTER": "Enter Filter Criteria",
3052
+ "EXIT_FULLSCREEN": "Exit Full Screen",
3053
+ "FULLSCREEN": "Full Screen",
3054
+ "SAVE": "Save",
3055
+ "CLOSE": "Close",
3056
+ "ADD_SUCCESS": "Add Success!",
3057
+ "UPDATE_SUCCESS": "Update data successfully!",
3058
+ "MULTIFY": "Batch",
3059
+ "DELETE_SUCCESS": "Successfully delete!",
3060
+ "COLUMN_CONTROL": "Column Control",
3061
+ "COLUMN_SHOW": "Column Show",
3062
+ "INDEX": "Serial Number",
3063
+ "CHECKBOX": "Checkbox",
3064
+ "FIXED_TO_LEFT": "Fixed to the left",
3065
+ "FIXED_TO_RIGHT": "Fixed to the right",
3066
+ "EXPORT": "Export",
3067
+ "EXPORT_CURRENT_PAGE": "Export the current page",
3068
+ "EXPORT_SELECT_COLUMN": "Export Selected columns",
3069
+ "EXPORT_ALL": "Export all columns",
3070
+ "SELECT_ALL": "Select All",
3071
+ "SETTING_EXPORT_COLUMN": "Setting the export column",
3072
+ "NO_EXPORT_COLUMN": "There are no exported columns!",
3073
+ "NUMBER": "Number",
3074
+ "ACTIONS": "Actions",
3075
+ "TOTAL_PAGE": "Total {total}",
3076
+ "FILTER": "Filter",
3077
+ "EXPAND_ALL": "Expand All",
3078
+ "COLLAPSE_ALL": "Collapse All",
3079
+ "SELECT_ALL1": "Select All",
3080
+ "CANCEL_SELECT_ALL": "Cancel Select All",
3081
+ "LEVEL_CONNECTION": "Level Connection",
3082
+ "LEVEL_SOLATE": "Independent Hierarchy",
3083
+ "LOADING": "Loading...",
3084
+ "SUPPORT_FILES": "Support {message} format",
3085
+ "MAX_SIZE": "Not exceeding {maxSize}M",
3086
+ "MAX_NUMBER": "A maximum of {maxNumber} files can be selected",
3087
+ "SUPPORT_TYPES": "Upload Types: pptx\u3001doc\u3001jpg\u3001jpeg\u3001png\u3001bmp\u3001gif\u3001xls\u3001xlsx\u3001txt\u3001rar\u3001zip\u30017z\u3001tar\u3001gz",
3088
+ "FILE_UPLOAD": "Files Upload",
3089
+ "FILE_NAME": "File Name",
3090
+ "FILE_STATUS": "Upload Status",
3091
+ "PREVIEW": "Preview",
3092
+ "DELETE": "Delete",
3093
+ "HISTORY_UPLOAD": "History Upload",
3094
+ "MAX_MB": "Only files up to {maxSize}MB can be uploaded!",
3095
+ "PRE_UPLOAD": "To Upload",
3096
+ "COMPANY_NAME": "Longi Co overseas tax system",
3097
+ "FILTER_MORE": "Menu Search...",
3098
+ "LARGE_SIZE": "Large Size",
3099
+ "MIDDLE_SIZE": "Middle Size",
3100
+ "SMALL_SIZE": "Small Size",
3101
+ "MODIFY_PASSWORD": "Modify Password",
3102
+ "LOGIN_OUT": "Log out",
3103
+ "CLOSE_CURRENT_TAG": "Close the current tab",
3104
+ "CLOSE_LEFT_TAGS": "Close the left tab",
3105
+ "CLOSE_RIGHT_TAGS": "Close the right tab",
3106
+ "CLOSE_OTHER_TAGS": "Close other tabs",
3107
+ "CLOSE_ALL_TAGE": "Close All",
3108
+ "SETTING_THEME": "Style Settings",
3109
+ "PROJECT_SETTING": "Project Configuration",
3110
+ "NAV_MODE": "Navigation bar mode",
3111
+ "PAGE_SHOW": "Interface Display",
3112
+ "COPY": "Copy",
3113
+ "DRAWER_TIPS": "The function mainly real-time preview layout effect, more complete configuration in the SRC/core/Settings/theme.ts. The layout preview function will be turned off in production.",
3114
+ "FULL": "Flow-based",
3115
+ "FIXED": "Fixed width",
3116
+ "BREAD_CURB": "Bread crumbs",
3117
+ "MENU_FILTER": "Menu search",
3118
+ "NOTICE": "Notification",
3119
+ "SIZE": "Size",
3120
+ "SHOW_FULLE": "Page full screen",
3121
+ "LOCAL": "Internationalization",
3122
+ "ROUTE_REUSE": "Routing reuse",
3123
+ "SHOW_FOOTER": "Show Footer",
3124
+ "CONTENT_FIXED_WIDTH": "Content area width",
3125
+ "ON": "On",
3126
+ "OFF": "Off",
3127
+ "UNKNOWN_ROUTE": "Unknown route",
3128
+ "COPY_SUCCESS": "Copy Success\uFF01"
3129
+ }
3130
+ };
3131
+ const ZH = {
3132
+ "UI": {
3133
+ "ADD": "\u65B0\u589E",
3134
+ "DELETE_CONFIRM": "\u5220\u9664\u786E\u8BA4",
3135
+ "CONFIRM_DELETE": "\u786E\u8BA4\u8981\u5220\u9664\u9009\u4E2D\u7684\u6570\u636E\uFF1F",
3136
+ "NEED_CURD": "\u7F3A\u5C11curd\u51FD\u6570\u914D\u7F6E, \u8BF7\u5C06useSource\u4E2D\u8FD4\u56DE\u7684curd\u53C2\u6570\u4F20\u5165useCurd\u914D\u7F6E\u9879\u4E2D!",
3137
+ "EDIT": "\u7F16\u8F91",
3138
+ "EMPTY": "\u6682\u65E0\u9009\u4E2D\u7684\u6570\u636E!",
3139
+ "EMPTY_URL": "\u8BF7\u6C42url\u4E0D\u80FD\u4E3A\u7A7A!",
3140
+ "MULTIFY_DELETE_CONFIRM": "\u6279\u91CF\u5220\u9664\u786E\u8BA4",
3141
+ "CONFIRM_MULTIFY_DELETE": "\u786E\u8BA4\u8981\u6279\u91CF\u5220\u9664\u9009\u4E2D\u7684\u6570\u636E\uFF1F",
3142
+ "ADVANCED": "\u6536\u8D77",
3143
+ "EXPAND": "\u5C55\u5F00",
3144
+ "SELECT_ICON": "\u9009\u62E9\u5B57\u4F53\u56FE\u6807",
3145
+ "MUSE_FUNCTION": "openDialog\u5FC5\u987B\u662F\u51FD\u6570",
3146
+ "NEED_RENDER": "\u8BF7\u914D\u7F6Erender\u51FD\u6570",
3147
+ "SEARCH": "\u67E5\u8BE2",
3148
+ "RESET": "\u91CD\u7F6E",
3149
+ "PLEASE_INPUT": "\u8BF7\u8F93\u5165",
3150
+ "PLEASE_SELECT": "\u8BF7\u9009\u62E9",
3151
+ "PLEASE_SET_ICON": "\u8BF7\u8BBE\u7F6E\u56FE\u6807",
3152
+ "INPUT_FILTER": "\u8BF7\u8F93\u5165\u8FC7\u6EE4\u6761\u4EF6",
3153
+ "EXIT_FULLSCREEN": "\u9000\u51FA\u5168\u5C4F",
3154
+ "FULLSCREEN": "\u5168\u5C4F",
3155
+ "SAVE": "\u4FDD\u5B58",
3156
+ "CLOSE": "\u5173\u95ED",
3157
+ "ADD_SUCCESS": "\u65B0\u589E\u6210\u529F\uFF01",
3158
+ "UPDATE_SUCCESS": "\u66F4\u65B0\u6570\u636E\u6210\u529F\uFF01",
3159
+ "MULTIFY": "\u6279\u91CF",
3160
+ "DELETE_SUCCESS": "\u5220\u9664\u6210\u529F\uFF01",
3161
+ "COLUMN_CONTROL": "\u5217\u63A7\u5236",
3162
+ "COLUMN_SHOW": "\u5217\u5C55\u793A",
3163
+ "INDEX": "\u5E8F\u5217\u53F7",
3164
+ "CHECKBOX": "\u590D\u9009\u6846",
3165
+ "FIXED_TO_LEFT": "\u56FA\u5B9A\u5230\u5DE6\u4FA7",
3166
+ "FIXED_TO_RIGHT": "\u56FA\u5B9A\u5230\u53F3\u4FA7",
3167
+ "EXPORT": "\u5BFC\u51FA",
3168
+ "DOWNLOAD_TEMPLATE": "\u6A21\u677F\u4E0B\u8F7D",
3169
+ "EXPORT_CURRENT_PAGE": "\u5BFC\u51FA\u5F53\u524D\u9875",
3170
+ "EXPORT_SELECT_COLUMN": "\u5BFC\u51FA\u9009\u4E2D\u5217",
3171
+ "EXPORT_ALL": "\u5BFC\u51FA\u6240\u6709\u5217",
3172
+ "SELECT_ALL": "\u5168\u9009",
3173
+ "SETTING_EXPORT_COLUMN": "\u8BBE\u7F6E\u5BFC\u51FA\u5217",
3174
+ "NO_EXPORT_COLUMN": "\u6682\u65E0\u53EF\u5BFC\u51FA\u7684\u5217\uFF01",
3175
+ "NUMBER": "\u5E8F\u53F7",
3176
+ "ACTIONS": "\u64CD\u4F5C",
3177
+ "TOTAL_PAGE": "\u603B\u5171{total}\u6761",
3178
+ "FILTER": "\u8FC7\u6EE4",
3179
+ "EXPAND_ALL": "\u5C55\u5F00\u5168\u90E8",
3180
+ "COLLAPSE_ALL": "\u6298\u53E0\u5168\u90E8",
3181
+ "SELECT_ALL1": "\u9009\u62E9\u5168\u90E8",
3182
+ "CANCEL_SELECT_ALL": "\u53D6\u6D88\u9009\u62E9",
3183
+ "LEVEL_CONNECTION": "\u5C42\u7EA7\u5173\u8054",
3184
+ "LEVEL_SOLATE": "\u5C42\u7EA7\u72EC\u7ACB",
3185
+ "LOADING": "\u52A0\u8F7D\u4E2D...",
3186
+ "SUPPORT_FILES": "\u652F\u6301{message}\u683C\u5F0F",
3187
+ "MAX_SIZE": "\u4E0D\u8D85\u8FC7{maxSize}M",
3188
+ "MAX_NUMBER": "\u6700\u591A\u53EF\u9009\u62E9{maxNumber}\u4E2A\u6587\u4EF6",
3189
+ "SUPPORT_TYPES": "\u8BF7\u4E0A\u4F20pptx\u3001doc\u3001jpg\u3001jpeg\u3001png\u3001bmp\u3001gif\u3001xls\u3001xlsx\u3001txt\u3001rar\u3001zip\u30017z\u3001tar\u3001gz\u683C\u5F0F\u6587\u4EF6",
3190
+ "FILE_UPLOAD": "\u6587\u4EF6\u4E0A\u4F20",
3191
+ "FILE_NAME": "\u6587\u4EF6\u540D\u79F0",
3192
+ "FILE_STATUS": "\u4E0A\u4F20\u72B6\u6001",
3193
+ "PREVIEW": "\u9884\u89C8",
3194
+ "DELETE": "\u5220\u9664",
3195
+ "HISTORY_UPLOAD": "\u5386\u53F2\u4E0A\u4F20",
3196
+ "MAX_MB": "\u53EA\u80FD\u4E0A\u4F20\u4E0D\u8D85\u8FC7{maxSize}MB\u7684\u6587\u4EF6!",
3197
+ "PRE_UPLOAD": "\u5F85\u4E0A\u4F20",
3198
+ "COMPANY_NAME": "\u5B89\u5FBD\u6DF1\u8FEA\u4E2D\u53F0\u7CFB\u7EDF\u6A21\u677F",
3199
+ "FILTER_MORE": "\u83DC\u5355\u68C0\u7D22...",
3200
+ "LARGE_SIZE": "\u5927\u5C3A\u5BF8",
3201
+ "MIDDLE_SIZE": "\u4E2D\u5C3A\u5BF8",
3202
+ "SMALL_SIZE": "\u5C0F\u5C3A\u5BF8",
3203
+ "MODIFY_PASSWORD": "\u4FEE\u6539\u5BC6\u7801",
3204
+ "LOGIN_OUT": "\u9000\u51FA\u7CFB\u7EDF",
3205
+ "CLOSE_CURRENT_TAG": "\u5173\u95ED\u5F53\u524D\u6807\u7B7E\u9875",
3206
+ "CLOSE_LEFT_TAGS": "\u5173\u95ED\u5DE6\u4FA7\u6807\u7B7E\u9875",
3207
+ "CLOSE_RIGHT_TAGS": "\u5173\u95ED\u53F3\u4FA7\u6807\u7B7E\u9875",
3208
+ "CLOSE_OTHER_TAGS": "\u5173\u95ED\u5176\u4ED6\u6807\u7B7E\u9875",
3209
+ "CLOSE_ALL_TAGE": "\u5173\u95ED\u5168\u90E8\u6807\u7B7E\u9875",
3210
+ "SETTING_THEME": "\u98CE\u683C\u8BBE\u7F6E",
3211
+ "PROJECT_SETTING": "\u9879\u76EE\u914D\u7F6E",
3212
+ "NAV_MODE": "\u5BFC\u822A\u680F\u6A21\u5F0F",
3213
+ "PAGE_SHOW": "\u754C\u9762\u663E\u793A",
3214
+ "COPY": "\u62F7\u8D1D",
3215
+ "DRAWER_TIPS": "\u8BE5\u529F\u80FD\u4E3B\u8981\u5B9E\u65F6\u9884\u89C8\u5404\u79CD\u5E03\u5C40\u6548\u679C\uFF0C\u66F4\u591A\u5B8C\u6574\u914D\u7F6E\u5728 src/core/settings/theme.ts \u4E2D\u8BBE\u7F6E\uFF0C\u5728\u751F\u4EA7\u73AF\u5883\u8BE5\u5E03\u5C40\u9884\u89C8\u529F\u80FD\u5C06\u88AB\u5173\u95ED\u3002",
3216
+ "FULL": "\u6D41\u5F0F",
3217
+ "FIXED": "\u5B9A\u5BBD",
3218
+ "BREAD_CURB": "\u9762\u5305\u5C51",
3219
+ "MENU_FILTER": "\u83DC\u5355\u68C0\u7D22",
3220
+ "NOTICE": "\u901A\u77E5\u516C\u544A",
3221
+ "SIZE": "\u5143\u7D20\u5C3A\u5BF8",
3222
+ "SHOW_FULLE": "\u9875\u9762\u5168\u5C4F",
3223
+ "LOCAL": "\u56FD\u9645\u5316",
3224
+ "ROUTE_REUSE": "\u8DEF\u7531\u590D\u7528",
3225
+ "SHOW_FOOTER": "\u663E\u793A\u5E95\u90E8",
3226
+ "CONTENT_FIXED_WIDTH": "\u5185\u5BB9\u533A\u57DF\u5BBD\u5EA6",
3227
+ "ON": "\u5F00",
3228
+ "OFF": "\u5173",
3229
+ "DOWNLOAD": "\u4E0B\u8F7D",
3230
+ "UNKNOWN_ROUTE": "\u672A\u77E5\u8DEF\u7531",
3231
+ "COPY_SUCCESS": "\u62F7\u8D1D\u6210\u529F\uFF01"
3232
+ }
3233
+ };
3234
+ const uiLang = (lang) => lang === Language.ZH ? ZH : EN;
3235
+ const DtTheme = withInstall$1(_sfc_main);
3236
+ export {
3237
+ DtTheme,
3238
+ defaultThemeConf,
3239
+ uiLang,
3240
+ useRouteReuseStore,
3241
+ useThemeStore
3242
+ };