@ditari/bsui 5.0.12 → 5.0.13

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 (35) hide show
  1. package/dist/cjs/components/dic/DicReplace.cjs +1 -0
  2. package/dist/cjs/components/dic/DicReplace.cjs.map +1 -1
  3. package/dist/cjs/components/layout/Layout.vue2.cjs +52 -48
  4. package/dist/cjs/components/layout/Layout.vue2.cjs.map +1 -1
  5. package/dist/cjs/components/layout/List.cjs +54 -46
  6. package/dist/cjs/components/layout/List.cjs.map +1 -1
  7. package/dist/cjs/components/layout/Show.cjs +41 -34
  8. package/dist/cjs/components/layout/Show.cjs.map +1 -1
  9. package/dist/cjs/components/layout/components/menu/Menu.cjs +18 -10
  10. package/dist/cjs/components/layout/components/menu/Menu.cjs.map +1 -1
  11. package/dist/cjs/components/tab/Search.cjs +6 -2
  12. package/dist/cjs/components/tab/Search.cjs.map +1 -1
  13. package/dist/css/components/tab/style/index.css +1 -1
  14. package/dist/css/index.css +1 -1
  15. package/dist/esm/components/dic/DicReplace.mjs +1 -0
  16. package/dist/esm/components/dic/DicReplace.mjs.map +1 -1
  17. package/dist/esm/components/layout/Layout.vue2.mjs +53 -49
  18. package/dist/esm/components/layout/Layout.vue2.mjs.map +1 -1
  19. package/dist/esm/components/layout/List.mjs +55 -47
  20. package/dist/esm/components/layout/List.mjs.map +1 -1
  21. package/dist/esm/components/layout/Show.mjs +43 -36
  22. package/dist/esm/components/layout/Show.mjs.map +1 -1
  23. package/dist/esm/components/layout/components/menu/Menu.mjs +18 -10
  24. package/dist/esm/components/layout/components/menu/Menu.mjs.map +1 -1
  25. package/dist/esm/components/tab/Search.mjs +6 -2
  26. package/dist/esm/components/tab/Search.mjs.map +1 -1
  27. package/dist/style/tab/style/index.scss +1 -1
  28. package/dist/types/components/dic/DicReplace.d.ts.map +1 -1
  29. package/dist/types/components/layout/Layout.vue.d.ts +24 -7
  30. package/dist/types/components/layout/Layout.vue.d.ts.map +1 -1
  31. package/dist/types/components/layout/List.d.ts.map +1 -1
  32. package/dist/types/components/layout/Show.d.ts.map +1 -1
  33. package/dist/types/components/layout/components/menu/Menu.d.ts +3 -1
  34. package/dist/types/components/layout/components/menu/Menu.d.ts.map +1 -1
  35. package/package.json +3 -3
@@ -31,7 +31,10 @@ var __async = (__this, __arguments, generator) => {
31
31
  };
32
32
  var Menu = /* @__PURE__ */ vue.defineComponent({
33
33
  name: "DMenu",
34
- setup() {
34
+ emits: ["menuChange"],
35
+ setup(_, {
36
+ emit
37
+ }) {
35
38
  const {
36
39
  layout,
37
40
  modeConfig
@@ -137,16 +140,21 @@ var Menu = /* @__PURE__ */ vue.defineComponent({
137
140
  };
138
141
  const onClick2 = ({
139
142
  key,
140
- keyPath
143
+ keyPath,
144
+ item
141
145
  }) => {
142
- openKeys2.value = keyPath;
143
- selectedKeys2.value = [key];
144
- if (route.path !== key) {
145
- router.push(key).then((r) => {
146
- if (r) {
147
- console.warn(r);
148
- }
149
- });
146
+ if (item.isFrame && item.isFrame === "0") {
147
+ emit("menuChange", item);
148
+ } else {
149
+ openKeys2.value = keyPath;
150
+ selectedKeys2.value = [key];
151
+ if (route.path !== key) {
152
+ router.push(key).then((r) => {
153
+ if (r) {
154
+ console.warn(r);
155
+ }
156
+ });
157
+ }
150
158
  }
151
159
  };
152
160
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.cjs","sources":["../../../../../../src/components/layout/components/menu/Menu.tsx"],"sourcesContent":["import { computed, defineComponent, watch } from \"vue\";\r\nimport { useRoute, useRouter } from \"vue-router\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport {\r\n useAppStore,\r\n useMenuStore,\r\n useNoStore\r\n} from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\n\r\nexport default defineComponent({\r\n name: \"DMenu\",\r\n setup() {\r\n const { layout, modeConfig } =\r\n storeToRefs(useAppStore());\r\n const { menuList } = storeToRefs(useNoStore());\r\n const { menuWrapperStyle } = useStyle();\r\n const { openKeys, selectedKeys, onClick } = useMenu();\r\n\r\n function useStyle() {\r\n const menuWrapperStyle = computed(\r\n () => css`\r\n flex: 1;\r\n overflow: hidden;\r\n\r\n .ant-menu {\r\n height: 100%;\r\n overflow: scroll;\r\n -ms-overflow-style: none; /* 对 IE 和 Edge 生效 */\r\n scrollbar-width: none; /* 对 Firefox 生效 */\r\n\r\n ${modeConfig.value.mode === \"light\"\r\n ? \"background:transparent;\"\r\n : \"\"}\r\n /* Webkit 浏览器 */\r\n ::-webkit-scrollbar {\r\n display: none;\r\n }\r\n }\r\n `\r\n );\r\n return {\r\n menuWrapperStyle\r\n };\r\n }\r\n\r\n function useMenu() {\r\n const { openKeys, selectedKeys, data } =\r\n storeToRefs(useMenuStore());\r\n const route = useRoute();\r\n const router = useRouter();\r\n\r\n /**\r\n * 在标签切换的时候,路由会变化,需要动态关联左侧菜单的选中状态\r\n */\r\n watch(\r\n () => route.fullPath,\r\n async path => {\r\n const flag = selectedKeys.value.some(\r\n (item: string) => item === path\r\n );\r\n if (!flag) {\r\n const rs = _findMatchedMenuKey(\r\n path,\r\n data.value as never\r\n );\r\n if (rs) {\r\n if (!layout.value.collapsed) {\r\n if (rs?.parentKey) {\r\n openKeys.value = [rs.parentKey];\r\n } else {\r\n openKeys.value = [rs!.matchedKey];\r\n }\r\n }\r\n selectedKeys.value = [rs!.matchedKey];\r\n }\r\n }\r\n }\r\n );\r\n\r\n watch(\r\n () => layout.value.collapsed,\r\n val => {\r\n const path = selectedKeys.value[0];\r\n const rs = _findMatchedMenuKey(\r\n path,\r\n data.value as never\r\n );\r\n if (val) {\r\n openKeys.value = [];\r\n } else {\r\n if (rs?.parentKey) {\r\n openKeys.value = [rs.parentKey];\r\n } else {\r\n openKeys.value = [rs!.matchedKey];\r\n }\r\n }\r\n }\r\n );\r\n\r\n const _findMatchedMenuKey = (\r\n path: string,\r\n menuItems: { key: string; children?: never[] }[],\r\n parentKey: string = \"\"\r\n ): {\r\n matchedKey: string;\r\n parentKey: string;\r\n } | null => {\r\n // 遍历菜单项\r\n for (const item of menuItems) {\r\n // 完全匹配\r\n if (item.key === path) {\r\n return { matchedKey: item.key, parentKey };\r\n }\r\n\r\n // 如果当前菜单项有 children,递归查找\r\n if (item.children && item.children.length > 0) {\r\n const result = _findMatchedMenuKey(\r\n path,\r\n item.children,\r\n item.key\r\n );\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n\r\n // 匹配路径前缀(确保只匹配最深层的菜单项)\r\n if (path.startsWith(item.key)) {\r\n // 如果路径以该菜单项的 key 开头,且该菜单项没有子菜单,直接返回匹配的菜单\r\n if (\r\n !item.children ||\r\n item.children.length === 0\r\n ) {\r\n return { matchedKey: item.key, parentKey };\r\n }\r\n // 如果是父菜单且有子菜单,继续递归寻找匹配的子菜单\r\n const result = _findMatchedMenuKey(\r\n path,\r\n item.children,\r\n item.key\r\n );\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n }\r\n\r\n // 如果没有找到匹配的菜单项,返回 null\r\n return null;\r\n };\r\n\r\n const onClick = ({\r\n key,\r\n keyPath\r\n }: {\r\n item: string;\r\n key: string;\r\n keyPath: string[];\r\n }) => {\r\n openKeys.value = keyPath;\r\n selectedKeys.value = [key];\r\n\r\n // 判断目标路由和当前路由是否相等;\r\n // 不相等的时候再跳转\r\n if (route.path !== key) {\r\n router.push(key).then(r => {\r\n if (r) {\r\n console.warn(r);\r\n }\r\n });\r\n }\r\n };\r\n\r\n return {\r\n openKeys,\r\n selectedKeys,\r\n data,\r\n onClick\r\n };\r\n }\r\n\r\n return () => (\r\n <div class={menuWrapperStyle.value}>\r\n <a-menu\r\n v-model:open-keys={openKeys.value}\r\n v-model:selected-keys={selectedKeys.value}\r\n items={menuList.value}\r\n mode=\"inline\"\r\n triggerSubMenuAction={\"hover\"}\r\n onClick={onClick}\r\n ></a-menu>\r\n </div>\r\n );\r\n }\r\n});\r\n"],"names":["defineComponent","name","setup","layout","modeConfig","storeToRefs","useAppStore","menuList","useNoStore","menuWrapperStyle","useStyle","openKeys","selectedKeys","onClick","useMenu","computed","css","value","mode","data","useMenuStore","route","useRoute","router","useRouter","watch","fullPath","path","flag","some","item","rs","_findMatchedMenuKey","collapsed","parentKey","matchedKey","val","menuItems","key","children","length","result","startsWith","keyPath","push","then","r","console","warn","_createVNode","_resolveComponent","$event"],"mappings":"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"}
1
+ {"version":3,"file":"Menu.cjs","sources":["../../../../../../src/components/layout/components/menu/Menu.tsx"],"sourcesContent":["import { computed, defineComponent, watch } from \"vue\";\r\nimport { useRoute, useRouter } from \"vue-router\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport {\r\n useAppStore,\r\n useMenuStore,\r\n useNoStore\r\n} from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\n\r\nexport default defineComponent({\r\n name: \"DMenu\",\r\n emits: [\"menuChange\"],\r\n setup(_, { emit }) {\r\n const { layout, modeConfig } =\r\n storeToRefs(useAppStore());\r\n const { menuList } = storeToRefs(useNoStore());\r\n const { menuWrapperStyle } = useStyle();\r\n const { openKeys, selectedKeys, onClick } = useMenu();\r\n\r\n function useStyle() {\r\n const menuWrapperStyle = computed(\r\n () => css`\r\n flex: 1;\r\n overflow: hidden;\r\n\r\n .ant-menu {\r\n height: 100%;\r\n overflow: scroll;\r\n -ms-overflow-style: none; /* 对 IE 和 Edge 生效 */\r\n scrollbar-width: none; /* 对 Firefox 生效 */\r\n\r\n ${modeConfig.value.mode === \"light\"\r\n ? \"background:transparent;\"\r\n : \"\"}\r\n /* Webkit 浏览器 */\r\n ::-webkit-scrollbar {\r\n display: none;\r\n }\r\n }\r\n `\r\n );\r\n return {\r\n menuWrapperStyle\r\n };\r\n }\r\n\r\n function useMenu() {\r\n const { openKeys, selectedKeys, data } =\r\n storeToRefs(useMenuStore());\r\n const route = useRoute();\r\n const router = useRouter();\r\n\r\n /**\r\n * 在标签切换的时候,路由会变化,需要动态关联左侧菜单的选中状态\r\n */\r\n watch(\r\n () => route.fullPath,\r\n async path => {\r\n const flag = selectedKeys.value.some(\r\n (item: string) => item === path\r\n );\r\n if (!flag) {\r\n const rs = _findMatchedMenuKey(\r\n path,\r\n data.value as never\r\n );\r\n if (rs) {\r\n if (!layout.value.collapsed) {\r\n if (rs?.parentKey) {\r\n openKeys.value = [rs.parentKey];\r\n } else {\r\n openKeys.value = [rs!.matchedKey];\r\n }\r\n }\r\n selectedKeys.value = [rs!.matchedKey];\r\n }\r\n }\r\n }\r\n );\r\n\r\n watch(\r\n () => layout.value.collapsed,\r\n val => {\r\n const path = selectedKeys.value[0];\r\n const rs = _findMatchedMenuKey(\r\n path,\r\n data.value as never\r\n );\r\n if (val) {\r\n openKeys.value = [];\r\n } else {\r\n if (rs?.parentKey) {\r\n openKeys.value = [rs.parentKey];\r\n } else {\r\n openKeys.value = [rs!.matchedKey];\r\n }\r\n }\r\n }\r\n );\r\n\r\n const _findMatchedMenuKey = (\r\n path: string,\r\n menuItems: { key: string; children?: never[] }[],\r\n parentKey: string = \"\"\r\n ): {\r\n matchedKey: string;\r\n parentKey: string;\r\n } | null => {\r\n // 遍历菜单项\r\n for (const item of menuItems) {\r\n // 完全匹配\r\n if (item.key === path) {\r\n return { matchedKey: item.key, parentKey };\r\n }\r\n\r\n // 如果当前菜单项有 children,递归查找\r\n if (item.children && item.children.length > 0) {\r\n const result = _findMatchedMenuKey(\r\n path,\r\n item.children,\r\n item.key\r\n );\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n\r\n // 匹配路径前缀(确保只匹配最深层的菜单项)\r\n if (path.startsWith(item.key)) {\r\n // 如果路径以该菜单项的 key 开头,且该菜单项没有子菜单,直接返回匹配的菜单\r\n if (\r\n !item.children ||\r\n item.children.length === 0\r\n ) {\r\n return { matchedKey: item.key, parentKey };\r\n }\r\n // 如果是父菜单且有子菜单,继续递归寻找匹配的子菜单\r\n const result = _findMatchedMenuKey(\r\n path,\r\n item.children,\r\n item.key\r\n );\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n }\r\n\r\n // 如果没有找到匹配的菜单项,返回 null\r\n return null;\r\n };\r\n\r\n const onClick = ({\r\n key,\r\n keyPath,\r\n item\r\n }: {\r\n item: { isFrame: string };\r\n key: string;\r\n keyPath: string[];\r\n }) => {\r\n if (item.isFrame && item.isFrame === \"0\") {\r\n emit(\"menuChange\", item);\r\n } else {\r\n openKeys.value = keyPath;\r\n selectedKeys.value = [key];\r\n if (route.path !== key) {\r\n // 判断目标路由和当前路由是否相等;\r\n // 不相等的时候再跳转\r\n router.push(key).then(r => {\r\n if (r) {\r\n console.warn(r);\r\n }\r\n });\r\n }\r\n }\r\n };\r\n\r\n return {\r\n openKeys,\r\n selectedKeys,\r\n data,\r\n onClick\r\n };\r\n }\r\n\r\n return () => (\r\n <div class={menuWrapperStyle.value}>\r\n <a-menu\r\n v-model:open-keys={openKeys.value}\r\n v-model:selected-keys={selectedKeys.value}\r\n items={menuList.value}\r\n mode=\"inline\"\r\n triggerSubMenuAction={\"hover\"}\r\n onClick={onClick}\r\n ></a-menu>\r\n </div>\r\n );\r\n }\r\n});\r\n"],"names":["defineComponent","name","emits","setup","_","emit","layout","modeConfig","storeToRefs","useAppStore","menuList","useNoStore","menuWrapperStyle","useStyle","openKeys","selectedKeys","onClick","useMenu","computed","css","value","mode","data","useMenuStore","route","useRoute","router","useRouter","watch","fullPath","path","flag","some","item","rs","_findMatchedMenuKey","collapsed","parentKey","matchedKey","val","menuItems","key","children","length","result","startsWith","keyPath","isFrame","push","then","r","console","warn","_createVNode","_resolveComponent","$event"],"mappings":"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"}
@@ -115,7 +115,7 @@ var Search = /* @__PURE__ */ vue.defineComponent({
115
115
  position: sticky;
116
116
  top: 0;
117
117
  padding: 10px;
118
- background: ${token.value.colorBgContainer};
118
+ background: ${token.value.colorPrimary};
119
119
  }
120
120
 
121
121
  ul {
@@ -228,7 +228,11 @@ var Search = /* @__PURE__ */ vue.defineComponent({
228
228
  "trigger": "click",
229
229
  "overlayClassName": "search-popover-wrapper"
230
230
  }, {
231
- default: () => vue.createVNode("div", null, [vue.createVNode(vue.resolveComponent("a-button"), {
231
+ default: () => vue.createVNode("div", {
232
+ "style": {
233
+ marginRight: "5px"
234
+ }
235
+ }, [vue.createVNode(vue.resolveComponent("a-button"), {
232
236
  "style": {
233
237
  borderRadius: "10px"
234
238
  },
@@ -1 +1 @@
1
- {"version":3,"file":"Search.cjs","sources":["../../../../src/components/tab/Search.tsx"],"sourcesContent":["import {\r\n computed,\r\n ComputedRef,\r\n defineComponent,\r\n h,\r\n ref,\r\n watch\r\n} from \"vue\";\r\nimport { useRouter } from \"vue-router\";\r\nimport { theme } from \"ant-design-vue\";\r\nimport {\r\n useMagicKeys,\r\n useWindowScroll\r\n} from \"@vueuse/core\";\r\n\r\nimport {\r\n CloseOutlined,\r\n DownOutlined,\r\n SearchOutlined,\r\n UnorderedListOutlined\r\n} from \"@ant-design/icons-vue\";\r\nimport {\r\n type NavTabsState,\r\n useNavTabStore\r\n} from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\nimport type { GlobalToken } from \"ant-design-vue/es/theme/interface\";\r\nimport dayjs from \"dayjs\";\r\n\r\nexport default defineComponent({\r\n name: \"Search\",\r\n setup() {\r\n const router = useRouter();\r\n\r\n const { useToken } = theme;\r\n const { token }: { token: ComputedRef<GlobalToken> } =\r\n useToken();\r\n\r\n const { getList, deleteTabs } = useNavTabStore();\r\n // 用来监听 Ctrl + Shift + S\r\n const keys = useMagicKeys();\r\n const shiftCtrlA = keys[\"Shift+Ctrl+S\"];\r\n const open = ref(false);\r\n const { y } = useWindowScroll();\r\n\r\n const navTabList = computed(() => {\r\n return getList!.sort(\r\n (a, b) => (b.openTime || 0) - (a.openTime || 0)\r\n );\r\n });\r\n\r\n // 添加搜索相关状态\r\n const searchKewords = ref(\"\"); // 搜索输入框的值\r\n const filteredNavTabList = computed(() => {\r\n const list = getList!.sort(\r\n (a, b) => (b.openTime || 0) - (a.openTime || 0)\r\n );\r\n\r\n if (!searchKewords.value) {\r\n return list; // 如果没有搜索词,返回完整列表\r\n }\r\n\r\n const query = searchKewords.value.toLowerCase();\r\n return list.filter(item => {\r\n const fullPathMatch = item.fullPath\r\n ?.toLowerCase()\r\n .includes(query);\r\n\r\n const title: string =\r\n (item.meta?.title as string) || \"\";\r\n\r\n const titleMatch = title\r\n .toLowerCase()\r\n .includes(query);\r\n \r\n return fullPathMatch || titleMatch;\r\n });\r\n });\r\n\r\n watch(shiftCtrlA, v => {\r\n if (v) {\r\n open.value = !open.value;\r\n }\r\n });\r\n\r\n watch(\r\n () => open.value,\r\n () => {\r\n searchKewords.value = \"\";\r\n }\r\n );\r\n\r\n watch(\r\n () => y.value,\r\n val => {\r\n if (val > 0) {\r\n open.value = false;\r\n }\r\n }\r\n );\r\n\r\n const onCloseTab = (path: string) => {\r\n deleteTabs(path);\r\n };\r\n\r\n const searchStyle = computed(\r\n () => css`\r\n padding: 10px;\r\n border-bottom: 1px solid ${token.value.colorBorder};\r\n\r\n .tip-txt {\r\n color: ${token.value.colorPrimary};\r\n }\r\n `\r\n );\r\n\r\n const searchListStyle = computed(\r\n () => css`\r\n position: relative;\r\n display: flex;\r\n flex-direction: column;\r\n max-height: 400px;\r\n overflow-y: overlay;\r\n user-select: none;\r\n\r\n /* 整个滚动条 */\r\n\r\n ::-webkit-scrollbar {\r\n width: 4px; /* 垂直滚动条的宽度 */\r\n height: 4px; /* 水平滚动条的高度 */\r\n }\r\n\r\n /* 滚动条轨道 */\r\n\r\n ::-webkit-scrollbar-track {\r\n background: transparent; /* 轨道背景色 */\r\n border-radius: 0; /* 轨道圆角 */\r\n }\r\n\r\n /* 滚动条滑块 */\r\n\r\n ::-webkit-scrollbar-thumb {\r\n //background: #888; /* 滑块背景色 */\r\n // border-radius: 6px; /* 滑块圆角 */\r\n border: 3px solid\r\n ${token.value.colorPrimaryBorder}; /* 滑块边框 */\r\n }\r\n\r\n /* 滚动条滑块悬停效果 */\r\n\r\n ::-webkit-scrollbar-thumb:hover {\r\n background: red; /* 滑块悬停背景色 */\r\n }\r\n\r\n .search-title {\r\n position: sticky;\r\n top: 0;\r\n padding: 10px;\r\n background: ${token.value.colorBgContainer};\r\n }\r\n\r\n ul {\r\n margin: 0;\r\n padding: 0;\r\n list-style: none;\r\n min-width: 400px;\r\n\r\n li {\r\n display: flex;\r\n align-items: center;\r\n padding: 4px 10px;\r\n width: 400px;\r\n cursor: pointer;\r\n\r\n &:hover {\r\n background-color: ${token.value\r\n .colorBgLayout};\r\n\r\n .close-wrapper {\r\n display: block;\r\n }\r\n }\r\n\r\n .icon {\r\n width: 42px;\r\n height: 42px;\r\n border-radius: 10px;\r\n background-color: ${token.value.colorPrimary};\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n }\r\n\r\n .content {\r\n padding-left: 10px;\r\n\r\n .time-ago {\r\n display: flex;\r\n align-items: center;\r\n font-size: 12px;\r\n\r\n .hostname {\r\n max-width: 180px;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n }\r\n\r\n .split {\r\n width: 4px;\r\n height: 4px;\r\n display: inline-block;\r\n background-color: ${token.value\r\n .colorPrimary};\r\n border-radius: 10px;\r\n margin: 0 6px;\r\n }\r\n }\r\n }\r\n\r\n .close-wrapper {\r\n display: none;\r\n flex: 1;\r\n text-align: right;\r\n\r\n .close-btn {\r\n display: inline-block;\r\n width: 22px;\r\n height: 22px;\r\n border-radius: 50%;\r\n text-align: center;\r\n\r\n &:hover {\r\n // background-color: ${token.value\r\n .colorBgLayout};\r\n }\r\n }\r\n }\r\n }\r\n }\r\n `\r\n );\r\n\r\n function timeAgo(providedTime: number) {\r\n const now = dayjs();\r\n const diffInSeconds = now.diff(\r\n providedTime,\r\n \"second\"\r\n ); // 计算时间差(秒)\r\n const diffInMinutes = now.diff(\r\n providedTime,\r\n \"minute\"\r\n ); // 计算时间差(分钟)\r\n const diffInHours = now.diff(providedTime, \"hour\"); // 计算时间差(小时)\r\n\r\n if (diffInMinutes < 1) {\r\n return `${diffInSeconds} 秒前`;\r\n } else if (diffInHours < 1) {\r\n return `${diffInMinutes} 分钟前`;\r\n } else {\r\n return `${diffInHours} 小时前`;\r\n }\r\n }\r\n\r\n const onJump = (item: NavTabsState) => {\r\n if (item.fullPath) {\r\n router.push(item.fullPath);\r\n }\r\n open.value = false;\r\n };\r\n\r\n const closeBtnStatus = (item: NavTabsState) => {\r\n // 如果meta有设置keepOpen则隐藏关闭按钮\r\n if (item.meta?.keepOpen) {\r\n return false;\r\n } else {\r\n // 如果只有一个标签,则隐藏关闭按钮\r\n return navTabList.value.length !== 1;\r\n }\r\n };\r\n\r\n return () => (\r\n <div>\r\n <a-popover\r\n v-model:open={open.value}\r\n placement={\"bottomRight\"}\r\n trigger={\"click\"}\r\n overlayClassName={\"search-popover-wrapper\"}\r\n >\r\n {{\r\n default: () => (\r\n <div>\r\n <a-button\r\n style={{ borderRadius: \"10px\" }}\r\n icon={h(DownOutlined)}\r\n title={\"搜索标签页\"}\r\n />\r\n </div>\r\n ),\r\n content: () => (\r\n <>\r\n <div class={searchStyle.value}>\r\n <a-input\r\n v-model:value={searchKewords.value}\r\n placeholder={\"搜索标签页\"}\r\n bordered={false}\r\n >\r\n {{\r\n prefix: () => <SearchOutlined />,\r\n suffix: () => (\r\n <span class={\"tip-txt\"}>\r\n Ctrl+Shift+S\r\n </span>\r\n )\r\n }}\r\n </a-input>\r\n </div>\r\n <div class={searchListStyle.value}>\r\n <span class={\"search-title\"}>\r\n 打开的标签页\r\n </span>\r\n <ul>\r\n {filteredNavTabList.value.map(item => (\r\n <li onClick={() => onJump(item)}>\r\n <div class={\"icon\"}>\r\n <UnorderedListOutlined />\r\n </div>\r\n <div class={\"content\"}>\r\n <div class={\"title\"}>\r\n {item.meta?.title}\r\n </div>\r\n <div class={\"time-ago\"}>\r\n <span class={\"hostname\"}>\r\n {window.location.hostname +\r\n \"\" +\r\n item.path}\r\n </span>\r\n <span class={\"split\"}></span>\r\n <span class={\"time\"}>\r\n {timeAgo(item.openTime ?? 0)}\r\n </span>\r\n </div>\r\n </div>\r\n {closeBtnStatus(item) && (\r\n <div class={\"close-wrapper\"}>\r\n <span\r\n class={\"close-btn\"}\r\n onClick={() =>\r\n onCloseTab(\r\n item.fullPath || \"\"\r\n )\r\n }\r\n >\r\n <CloseOutlined />\r\n </span>\r\n </div>\r\n )}\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n </>\r\n )\r\n }}\r\n </a-popover>\r\n </div>\r\n );\r\n }\r\n});\r\n"],"names":["defineComponent","name","setup","router","useRouter","useToken","theme","token","getList","deleteTabs","useNavTabStore","keys","useMagicKeys","shiftCtrlA","open","ref","y","useWindowScroll","navTabList","computed","sort","a","b","openTime","searchKewords","filteredNavTabList","list","value","query","toLowerCase","filter","item","fullPathMatch","fullPath","includes","title","meta","titleMatch","watch","v","val","onCloseTab","path","searchStyle","css","colorBorder","colorPrimary","searchListStyle","colorPrimaryBorder","colorBgContainer","colorBgLayout","timeAgo","providedTime","now","dayjs","diffInSeconds","diff","diffInMinutes","diffInHours","onJump","push","closeBtnStatus","keepOpen","length","_createVNode","_resolveComponent","$event","default","borderRadius","h","DownOutlined","content","_Fragment","prefix","SearchOutlined","suffix","_createTextVNode","map","onClick","UnorderedListOutlined","window","location","hostname","CloseOutlined"],"mappings":"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"}
1
+ {"version":3,"file":"Search.cjs","sources":["../../../../src/components/tab/Search.tsx"],"sourcesContent":["import {\r\n computed,\r\n ComputedRef,\r\n defineComponent,\r\n h,\r\n ref,\r\n watch\r\n} from \"vue\";\r\nimport { useRouter } from \"vue-router\";\r\nimport { theme } from \"ant-design-vue\";\r\nimport {\r\n useMagicKeys,\r\n useWindowScroll\r\n} from \"@vueuse/core\";\r\n\r\nimport {\r\n CloseOutlined,\r\n DownOutlined,\r\n SearchOutlined,\r\n UnorderedListOutlined\r\n} from \"@ant-design/icons-vue\";\r\nimport {\r\n type NavTabsState,\r\n useNavTabStore\r\n} from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\nimport type { GlobalToken } from \"ant-design-vue/es/theme/interface\";\r\nimport dayjs from \"dayjs\";\r\n\r\nexport default defineComponent({\r\n name: \"Search\",\r\n setup() {\r\n const router = useRouter();\r\n\r\n const { useToken } = theme;\r\n const { token }: { token: ComputedRef<GlobalToken> } =\r\n useToken();\r\n\r\n const { getList, deleteTabs } = useNavTabStore();\r\n // 用来监听 Ctrl + Shift + S\r\n const keys = useMagicKeys();\r\n const shiftCtrlA = keys[\"Shift+Ctrl+S\"];\r\n const open = ref(false);\r\n const { y } = useWindowScroll();\r\n\r\n const navTabList = computed(() => {\r\n return getList!.sort(\r\n (a, b) => (b.openTime || 0) - (a.openTime || 0)\r\n );\r\n });\r\n\r\n // 添加搜索相关状态\r\n const searchKewords = ref(\"\"); // 搜索输入框的值\r\n const filteredNavTabList = computed(() => {\r\n const list = getList!.sort(\r\n (a, b) => (b.openTime || 0) - (a.openTime || 0)\r\n );\r\n\r\n if (!searchKewords.value) {\r\n return list; // 如果没有搜索词,返回完整列表\r\n }\r\n\r\n const query = searchKewords.value.toLowerCase();\r\n return list.filter(item => {\r\n const fullPathMatch = item.fullPath\r\n ?.toLowerCase()\r\n .includes(query);\r\n\r\n const title: string =\r\n (item.meta?.title as string) || \"\";\r\n\r\n const titleMatch = title\r\n .toLowerCase()\r\n .includes(query);\r\n\r\n return fullPathMatch || titleMatch;\r\n });\r\n });\r\n\r\n watch(shiftCtrlA, v => {\r\n if (v) {\r\n open.value = !open.value;\r\n }\r\n });\r\n\r\n watch(\r\n () => open.value,\r\n () => {\r\n searchKewords.value = \"\";\r\n }\r\n );\r\n\r\n watch(\r\n () => y.value,\r\n val => {\r\n if (val > 0) {\r\n open.value = false;\r\n }\r\n }\r\n );\r\n\r\n const onCloseTab = (path: string) => {\r\n deleteTabs(path);\r\n };\r\n\r\n const searchStyle = computed(\r\n () => css`\r\n padding: 10px;\r\n border-bottom: 1px solid ${token.value.colorBorder};\r\n\r\n .tip-txt {\r\n color: ${token.value.colorPrimary};\r\n }\r\n `\r\n );\r\n\r\n const searchListStyle = computed(\r\n () => css`\r\n position: relative;\r\n display: flex;\r\n flex-direction: column;\r\n max-height: 400px;\r\n overflow-y: overlay;\r\n user-select: none;\r\n\r\n /* 整个滚动条 */\r\n\r\n ::-webkit-scrollbar {\r\n width: 4px; /* 垂直滚动条的宽度 */\r\n height: 4px; /* 水平滚动条的高度 */\r\n }\r\n\r\n /* 滚动条轨道 */\r\n\r\n ::-webkit-scrollbar-track {\r\n background: transparent; /* 轨道背景色 */\r\n border-radius: 0; /* 轨道圆角 */\r\n }\r\n\r\n /* 滚动条滑块 */\r\n\r\n ::-webkit-scrollbar-thumb {\r\n //background: #888; /* 滑块背景色 */\r\n // border-radius: 6px; /* 滑块圆角 */\r\n border: 3px solid\r\n ${token.value.colorPrimaryBorder}; /* 滑块边框 */\r\n }\r\n\r\n /* 滚动条滑块悬停效果 */\r\n\r\n ::-webkit-scrollbar-thumb:hover {\r\n background: red; /* 滑块悬停背景色 */\r\n }\r\n\r\n .search-title {\r\n position: sticky;\r\n top: 0;\r\n padding: 10px;\r\n background: ${token.value.colorPrimary};\r\n }\r\n\r\n ul {\r\n margin: 0;\r\n padding: 0;\r\n list-style: none;\r\n min-width: 400px;\r\n\r\n li {\r\n display: flex;\r\n align-items: center;\r\n padding: 4px 10px;\r\n width: 400px;\r\n cursor: pointer;\r\n\r\n &:hover {\r\n background-color: ${token.value\r\n .colorBgLayout};\r\n\r\n .close-wrapper {\r\n display: block;\r\n }\r\n }\r\n\r\n .icon {\r\n width: 42px;\r\n height: 42px;\r\n border-radius: 10px;\r\n background-color: ${token.value.colorPrimary};\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n }\r\n\r\n .content {\r\n padding-left: 10px;\r\n\r\n .time-ago {\r\n display: flex;\r\n align-items: center;\r\n font-size: 12px;\r\n\r\n .hostname {\r\n max-width: 180px;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n }\r\n\r\n .split {\r\n width: 4px;\r\n height: 4px;\r\n display: inline-block;\r\n background-color: ${token.value\r\n .colorPrimary};\r\n border-radius: 10px;\r\n margin: 0 6px;\r\n }\r\n }\r\n }\r\n\r\n .close-wrapper {\r\n display: none;\r\n flex: 1;\r\n text-align: right;\r\n\r\n .close-btn {\r\n display: inline-block;\r\n width: 22px;\r\n height: 22px;\r\n border-radius: 50%;\r\n text-align: center;\r\n\r\n &:hover {\r\n // background-color: ${token.value\r\n .colorBgLayout};\r\n }\r\n }\r\n }\r\n }\r\n }\r\n `\r\n );\r\n\r\n function timeAgo(providedTime: number) {\r\n const now = dayjs();\r\n const diffInSeconds = now.diff(\r\n providedTime,\r\n \"second\"\r\n ); // 计算时间差(秒)\r\n const diffInMinutes = now.diff(\r\n providedTime,\r\n \"minute\"\r\n ); // 计算时间差(分钟)\r\n const diffInHours = now.diff(providedTime, \"hour\"); // 计算时间差(小时)\r\n\r\n if (diffInMinutes < 1) {\r\n return `${diffInSeconds} 秒前`;\r\n } else if (diffInHours < 1) {\r\n return `${diffInMinutes} 分钟前`;\r\n } else {\r\n return `${diffInHours} 小时前`;\r\n }\r\n }\r\n\r\n const onJump = (item: NavTabsState) => {\r\n if (item.fullPath) {\r\n router.push(item.fullPath);\r\n }\r\n open.value = false;\r\n };\r\n\r\n const closeBtnStatus = (item: NavTabsState) => {\r\n // 如果meta有设置keepOpen则隐藏关闭按钮\r\n if (item.meta?.keepOpen) {\r\n return false;\r\n } else {\r\n // 如果只有一个标签,则隐藏关闭按钮\r\n return navTabList.value.length !== 1;\r\n }\r\n };\r\n\r\n return () => (\r\n <div>\r\n <a-popover\r\n v-model:open={open.value}\r\n placement={\"bottomRight\"}\r\n trigger={\"click\"}\r\n overlayClassName={\"search-popover-wrapper\"}\r\n >\r\n {{\r\n default: () => (\r\n <div style={{ marginRight: \"5px\" }}>\r\n <a-button\r\n style={{ borderRadius: \"10px\" }}\r\n icon={h(DownOutlined)}\r\n title={\"搜索标签页\"}\r\n />\r\n </div>\r\n ),\r\n content: () => (\r\n <>\r\n <div class={searchStyle.value}>\r\n <a-input\r\n v-model:value={searchKewords.value}\r\n placeholder={\"搜索标签页\"}\r\n bordered={false}\r\n >\r\n {{\r\n prefix: () => <SearchOutlined />,\r\n suffix: () => (\r\n <span class={\"tip-txt\"}>\r\n Ctrl+Shift+S\r\n </span>\r\n )\r\n }}\r\n </a-input>\r\n </div>\r\n <div class={searchListStyle.value}>\r\n <span class={\"search-title\"}>\r\n 打开的标签页\r\n </span>\r\n <ul>\r\n {filteredNavTabList.value.map(item => (\r\n <li onClick={() => onJump(item)}>\r\n <div class={\"icon\"}>\r\n <UnorderedListOutlined />\r\n </div>\r\n <div class={\"content\"}>\r\n <div class={\"title\"}>\r\n {item.meta?.title}\r\n </div>\r\n <div class={\"time-ago\"}>\r\n <span class={\"hostname\"}>\r\n {window.location.hostname +\r\n \"\" +\r\n item.path}\r\n </span>\r\n <span class={\"split\"}></span>\r\n <span class={\"time\"}>\r\n {timeAgo(item.openTime ?? 0)}\r\n </span>\r\n </div>\r\n </div>\r\n {closeBtnStatus(item) && (\r\n <div class={\"close-wrapper\"}>\r\n <span\r\n class={\"close-btn\"}\r\n onClick={() =>\r\n onCloseTab(\r\n item.fullPath || \"\"\r\n )\r\n }\r\n >\r\n <CloseOutlined />\r\n </span>\r\n </div>\r\n )}\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n </>\r\n )\r\n }}\r\n </a-popover>\r\n </div>\r\n );\r\n }\r\n});\r\n"],"names":["defineComponent","name","setup","router","useRouter","useToken","theme","token","getList","deleteTabs","useNavTabStore","keys","useMagicKeys","shiftCtrlA","open","ref","y","useWindowScroll","navTabList","computed","sort","a","b","openTime","searchKewords","filteredNavTabList","list","value","query","toLowerCase","filter","item","fullPathMatch","fullPath","includes","title","meta","titleMatch","watch","v","val","onCloseTab","path","searchStyle","css","colorBorder","colorPrimary","searchListStyle","colorPrimaryBorder","colorBgLayout","timeAgo","providedTime","now","dayjs","diffInSeconds","diff","diffInMinutes","diffInHours","onJump","push","closeBtnStatus","keepOpen","length","_createVNode","_resolveComponent","$event","default","marginRight","borderRadius","h","DownOutlined","content","_Fragment","prefix","SearchOutlined","suffix","_createTextVNode","map","onClick","UnorderedListOutlined","window","location","hostname","CloseOutlined"],"mappings":";;;;;;;;;;;;;;AA6BA,6BAA+BA,mBAAA,CAAA;AAAA,EAC7BC,IAAM,EAAA,QAAA;AAAA,EACNC,KAAQ,GAAA;AACN,IAAA,MAAMC,SAASC,mBAAU,EAAA;AAEzB,IAAM,MAAA;AAAA,MAAEC;AAAAA,KAAaC,GAAAA,kBAAAA;AACrB,IAAM,MAAA;AAAA,MAAEC;AAAAA,QACNF,QAAS,EAAA;AAEX,IAAM,MAAA;AAAA,MAAEG,OAAAA;AAAAA,MAASC;AAAAA,QAAeC,oBAAe,EAAA;AAE/C,IAAA,MAAMC,OAAOC,iBAAa,EAAA;AAC1B,IAAMC,MAAAA,UAAAA,GAAaF,KAAK,cAAc,CAAA;AACtC,IAAMG,MAAAA,IAAAA,GAAOC,QAAI,KAAK,CAAA;AACtB,IAAM,MAAA;AAAA,MAAEC;AAAAA,QAAMC,oBAAgB,EAAA;AAE9B,IAAMC,MAAAA,UAAAA,GAAaC,aAAS,MAAM;AAChC,MAAOX,OAAAA,OAAAA,CAASY,IACd,CAAA,CAACC,CAAGC,EAAAA,CAAAA,KAAAA,CAAOA,EAAEC,QAAY,IAAA,CAAA,KAAMF,CAAEE,CAAAA,QAAAA,IAAY,CAC/C,CAAA,CAAA;AAAA,KACD,CAAA;AAGD,IAAMC,MAAAA,aAAAA,GAAgBT,QAAI,EAAE,CAAA;AAC5B,IAAMU,MAAAA,kBAAAA,GAAqBN,aAAS,MAAM;AACxC,MAAMO,MAAAA,IAAAA,GAAOlB,OAASY,CAAAA,IAAAA,CACpB,CAACC,CAAAA,EAAGC,CAAOA,KAAAA,CAAAA,CAAAA,CAAEC,QAAY,IAAA,CAAA,KAAMF,CAAEE,CAAAA,QAAAA,IAAY,CAC/C,CAAA,CAAA;AAEA,MAAI,IAAA,CAACC,cAAcG,KAAO,EAAA;AACxB,QAAOD,OAAAA,IAAAA;AAAAA;AAGT,MAAME,MAAAA,KAAAA,GAAQJ,aAAcG,CAAAA,KAAAA,CAAME,WAAY,EAAA;AAC9C,MAAOH,OAAAA,IAAAA,CAAKI,OAAOC,CAAQ,IAAA,KAAA;AA/DjC,QAAA,IAAA,EAAA,EAAA,EAAA;AAgEQ,QAAA,MAAMC,aAAgBD,GAAAA,CAAAA,EAAAA,GAAAA,IAAAA,CAAKE,QAALF,KAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAClBF,cACDK,QAASN,CAAAA,KAAAA,CAAAA;AAEZ,QAAA,MAAMO,KACHJ,GAAAA,CAAAA,CAAAA,EAAAA,GAAAA,IAAAA,CAAKK,IAALL,KAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAWI,KAAoB,KAAA,EAAA;AAElC,QAAA,MAAME,UAAaF,GAAAA,KAAAA,CAChBN,WAAY,EAAA,CACZK,SAASN,KAAK,CAAA;AAEjB,QAAA,OAAOI,aAAiBK,IAAAA,UAAAA;AAAAA,OACzB,CAAA;AAAA,KACF,CAAA;AAEDC,IAAAA,SAAAA,CAAMzB,YAAY0B,CAAK,CAAA,KAAA;AACrB,MAAA,IAAIA,CAAG,EAAA;AACLzB,QAAKa,IAAAA,CAAAA,KAAAA,GAAQ,CAACb,IAAKa,CAAAA,KAAAA;AAAAA;AACrB,KACD,CAAA;AAEDW,IACEA,SAAA,CAAA,MAAMxB,IAAKa,CAAAA,KAAAA,EACX,MAAM;AACJH,MAAAA,aAAAA,CAAcG,KAAQ,GAAA,EAAA;AAAA,KAE1B,CAAA;AAEAW,IACEA,SAAA,CAAA,MAAMtB,CAAEW,CAAAA,KAAAA,EACRa,CAAO,GAAA,KAAA;AACL,MAAA,IAAIA,MAAM,CAAG,EAAA;AACX1B,QAAAA,IAAAA,CAAKa,KAAQ,GAAA,KAAA;AAAA;AACf,KAEJ,CAAA;AAEA,IAAA,MAAMc,aAAcC,CAAiB,IAAA,KAAA;AACnCjC,MAAAA,UAAAA,CAAWiC,IAAI,CAAA;AAAA,KACjB;AAEA,IAAMC,MAAAA,WAAAA,GAAcxB,aAClB,MAAMyB,OAAAA;AAAAA;AAAAA,iCAEuBrC,EAAAA,KAAAA,CAAMoB,MAAMkB,WAAW,CAAA;;AAAA;AAAA,iBAGvCtC,EAAAA,KAAAA,CAAMoB,MAAMmB,YAAY,CAAA;AAAA;AAAA,MAGvC,CAAA,CAAA;AAEA,IAAMC,MAAAA,eAAAA,GAAkB5B,aACtB,MAAMyB,OAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;;AAAAA;;AAAAA;AAAAA;AAAAA;AAAAA;;AAAAA;;AAAAA;AAAAA;AAAAA;AAAAA;;AAAAA;;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,YA4BErC,EAAAA,KAAAA,CAAMoB,MAAMqB,kBAAkB,CAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,sBAapBzC,EAAAA,KAAAA,CAAMoB,MAAMmB,YAAY,CAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA,gCAiBdvC,EAAAA,KAAAA,CAAMoB,MACvBsB,aAAa,CAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,gCAWI1C,EAAAA,KAAAA,CAAMoB,MAAMmB,YAAY,CAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,oCAwBpBvC,EAAAA,KAAAA,CAAMoB,MACvBmB,YAAY,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA,uCAoBQvC,EAAAA,KAAAA,CAAMoB,MAC1BsB,aAAa,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAO9B,CAAA,CAAA;AAEA,IAAA,SAASC,QAAQC,YAAsB,EAAA;AACrC,MAAA,MAAMC,MAAMC,iBAAM,EAAA;AAClB,MAAA,MAAMC,aAAgBF,GAAAA,GAAAA,CAAIG,IACxBJ,CAAAA,YAAAA,EACA,QACF,CAAA;AACA,MAAA,MAAMK,aAAgBJ,GAAAA,GAAAA,CAAIG,IACxBJ,CAAAA,YAAAA,EACA,QACF,CAAA;AACA,MAAA,MAAMM,WAAcL,GAAAA,GAAAA,CAAIG,IAAKJ,CAAAA,YAAAA,EAAc,MAAM,CAAA;AAEjD,MAAA,IAAIK,gBAAgB,CAAG,EAAA;AACrB,QAAA,OAAO,GAAGF,aAAa,CAAA,aAAA,CAAA;AAAA,OACzB,MAAA,IAAWG,cAAc,CAAG,EAAA;AAC1B,QAAA,OAAO,GAAGD,aAAa,CAAA,mBAAA,CAAA;AAAA,OAClB,MAAA;AACL,QAAA,OAAO,GAAGC,WAAW,CAAA,mBAAA,CAAA;AAAA;AACvB;AAGF,IAAA,MAAMC,SAAU3B,CAAuB,IAAA,KAAA;AACrC,MAAA,IAAIA,KAAKE,QAAU,EAAA;AACjB9B,QAAOwD,MAAAA,CAAAA,IAAAA,CAAK5B,KAAKE,QAAQ,CAAA;AAAA;AAE3BnB,MAAAA,IAAAA,CAAKa,KAAQ,GAAA,KAAA;AAAA,KACf;AAEA,IAAA,MAAMiC,iBAAkB7B,CAAuB,IAAA,KAAA;AA9QnD,MAAA,IAAA,EAAA;AAgRM,MAAIA,IAAAA,CAAAA,EAAAA,GAAAA,IAAAA,CAAKK,IAALL,KAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAW8B,QAAU,EAAA;AACvB,QAAO,OAAA,KAAA;AAAA,OACF,MAAA;AAEL,QAAO3C,OAAAA,UAAAA,CAAWS,MAAMmC,MAAW,KAAA,CAAA;AAAA;AACrC,KACF;AAEA,IAAO,OAAA,MAAAC,gBAAAA,KAAAA,EAAAA,IAAAA,EAAAA,CAAAA,eAAAC,CAAAA,oBAAAA,CAAA,WAAA,CAAA,EAAA;AAAA,MAAA,QAGalD,IAAKa,CAAAA,KAAAA;AAAAA,MAAK,eAAA,EAAAsC,CAAVnD,MAAAA,KAAAA,IAAAA,CAAKa,KAAKsC,GAAAA,MAAAA;AAAAA,MAAA,WACb,EAAA,aAAA;AAAA,MAAa,SACf,EAAA,OAAA;AAAA,MAAO,kBACE,EAAA;AAAA,KAAwB,EAAA;AAAA,MAGxCC,OAAAA,EAASA,MAAAH,eAAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OACK,EAAA;AAAA,UAAEI,WAAa,EAAA;AAAA;AAAM,OAACJ,EAAAA,CAAAA,eAAAC,CAAAA,oBAAAA,CAAA,UAAA,CAAA,EAAA;AAAA,QAAA,OAEvB,EAAA;AAAA,UAAEI,YAAc,EAAA;AAAA,SAAO;AAAA,QAAC,MAAA,EACzBC,MAAEC,qBAAY,CAAA;AAAA,QAAC,OACd,EAAA;AAAA,OAAO,EAGnB,IAAA,CAAA,CAAA,CAAA;AAAA,MACDC,SAASA,MAAAR,eAAAA,CAAAS,qBAAAT,gBAAA,KAAA,EAAA;AAAA,QAAA,SAEOpB,WAAYhB,CAAAA;AAAAA,OAAKoC,EAAAA,CAAAA,eAAAC,CAAAA,oBAAAA,CAAA,SAAA,CAAA,EAAA;AAAA,QAAA,SAEVxC,aAAcG,CAAAA,KAAAA;AAAAA,QAAK,gBAAA,EAAAsC,CAAnBzC,MAAAA,KAAAA,aAAAA,CAAcG,KAAKsC,GAAAA,MAAAA;AAAAA,QAAA,aACrB,EAAA,gCAAA;AAAA,QAAO,UACV,EAAA;AAAA,OAAK,EAAA;AAAA,QAGbQ,MAAQA,EAAAA,MAAAV,eAAAW,CAAAA,uBAAAA,EAAwB,MAAA,IAAA,CAAA;AAAA,QAChCC,MAAAA,EAAQA,MAAAZ,eAAAA,CAAA,MAAA,EAAA;AAAA,UAAA,OACO,EAAA;AAAA,SAAS,EAAA,CAAAa,mBAAA,CAAA,cAAA,CAAA,CAAA;AAAA,OAGvB,CAAA,CAAA,CAAA,EAAAb,gBAAA,KAAA,EAAA;AAAA,QAAA,SAIKhB,eAAgBpB,CAAAA;AAAAA,OAAK,EAAA,CAAAoC,eAAAA,CAAA,MAAA,EAAA;AAAA,QAAA,OAClB,EAAA;AAAA,OAAc,EAAA,CAAAa,mBAAA,CAAA,sCAAA,CAAA,CAAA,CAAA,EAAAb,eAAA,CAAA,IAAA,EAAA,IAAA,EAAA,CAIxBtC,kBAAmBE,CAAAA,KAAAA,CAAMkD,IAAI9C,CAAI,IAAA,KAAA;AAjUtD,QAAA,IAAA,EAAA,EAAA,EAAA;AAiUsDgC,QAAAA,OAAAA,eAAAA,CAAA,IAAA,EAAA;AAAA,UAAA,SAAA,EACnBe,MAAMpB,MAAAA,CAAO3B,IAAI;AAAA,SAAC,EAAA,CAAAgC,eAAAA,CAAA,KAAA,EAAA;AAAA,UAAA,OACjB,EAAA;AAAA,SAAM,EAAA,CAAAA,eAAAA,CAAAgB,8BAAA,EAAA,IAAA,EAAA,IAAA,CAAA,CAAA,CAAAhB,EAAAA,eAAAA,CAAA,KAAA,EAAA;AAAA,UAAA,OAGN,EAAA;AAAA,SAAS,EAAA,CAAAA,eAAAA,CAAA,KAAA,EAAA;AAAA,UAAA,OACP,EAAA;AAAA,SAAO,EAAA,EAChBhC,EAAKK,GAAAA,IAAAA,CAAAA,IAAAA,KAALL,mBAAWI,KAAK,EAAA4B,EAAAA,eAAAA,CAAA,KAAA,EAAA;AAAA,UAAA,OAEP,EAAA;AAAA,SAAU,EAAA,CAAAA,eAAAA,CAAA,MAAA,EAAA;AAAA,UAAA,OACP,EAAA;AAAA,SAAU,EAAA,CACpBiB,MAAAA,CAAOC,QAASC,CAAAA,QAAAA,GACf,EACAnD,GAAAA,IAAAA,CAAKW,IAAI,CAAA,CAAAqB,EAAAA,eAAAA,CAAA,MAAA,EAAA;AAAA,UAAA,OAEA,EAAA;AAAA,SAAO,EAAA,IAAA,CAAAA,EAAAA,eAAAA,CAAA,MAAA,EAAA;AAAA,UAAA,OACP,EAAA;AAAA,WAAM,CAChBb,OAAAA,CAAAA,CAAQnB,UAAKR,QAALQ,KAAAA,IAAAA,GAAAA,EAAAA,GAAiB,CAAC,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAIjC6B,eAAe7B,IAAI,CAAA,IAACgC,gBAAA,KAAA,EAAA;AAAA,UAAA,OACP,EAAA;AAAA,SAAe,EAAA,CAAAA,eAAAA,CAAA,MAAA,EAAA;AAAA,UAAA,OAEhB,EAAA,WAAA;AAAA,UAAW,SACTe,EAAAA,MACPrC,UACEV,CAAAA,IAAAA,CAAKE,YAAY,EACnB;AAAA,SAAC,EAAA,CAAA8B,eAAAA,CAAAoB,sBAAA,EAAA,IAAA,EAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAMR;OAEJ,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,KAQjB,CAAA,CAAA,CAAA;AAAA;AAEL,CAAC,CAAA;;;;"}
@@ -1 +1 @@
1
- .d-tabs-nav{flex:1;overflow:hidden}.d-tabs-nav .ant-tabs-nav{margin-bottom:0 !important}.d-tabs-nav .ant-tabs-nav:before{border-bottom-width:0}.d-tabs-nav .ant-tabs-nav-operations{display:none !important}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab{position:relative;transition:none !important;border:0;background:rgba(0,0,0,0)}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:first-child{margin-left:20px}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:first-child .tab-dividers::before{opacity:0}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:nth-last-child(2){margin-right:20px}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:before,.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:after{position:absolute;bottom:-1px;content:"";width:30px;height:30px;border-radius:100%;box-shadow:0 0 0 40px rgba(0,0,0,0)}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:before{left:-30px;clip-path:inset(50% -10px 0 50%)}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:after{right:-30px;clip-path:inset(50% 50% 0 -10px)}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab.ant-tabs-tab-active{border-radius:10px 10px 0 0 !important;background:var(--active-tab-color)}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab.ant-tabs-tab-active .tab-dividers::before{opacity:0}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab.ant-tabs-tab-active:before,.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab.ant-tabs-tab-active:after{z-index:10;box-shadow:0 0 0 30px var(--active-tab-color)}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:hover:not(.ant-tabs-tab-active) .tab-hover-bg{position:absolute;display:flex;flex-direction:column;justify-content:center;top:0;right:0;bottom:0;left:0;z-index:-1}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:hover:not(.ant-tabs-tab-active) .tab-hover-bg:before{content:"";width:100%;height:25px;border-radius:6px}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:hover:not(.ant-tabs-tab-active) .tab-dividers::before{opacity:0}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:hover:not(.ant-tabs-tab-active)+.ant-tabs-tab .tab-dividers::before{opacity:0}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:not(.ant-tabs-tab-active) .close-btn{color:#fff}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:not(.ant-tabs-tab-active) .tab-item{color:#fff}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab-active+.ant-tabs-tab .tab-dividers::before{opacity:0}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab-btn{display:flex;align-items:center}.d-tabs-nav .tab-close{position:absolute;top:0;right:0;bottom:0;padding:4px;display:flex;align-items:center;justify-content:center}.d-tabs-nav .tab-close .close-btn{display:flex;align-items:center;justify-content:center;width:20px;height:20px;z-index:20}.d-tabs-nav .tab-close .anticon{margin:0}.d-tabs-nav .tab-item{padding-right:30px}.d-tabs-nav .tab-dividers{position:absolute;z-index:0;height:14px;left:-2px}.d-tabs-nav .tab-dividers::before{content:"";display:block;position:absolute;top:0;left:1px;bottom:0;width:1px;opacity:1;background-color:var(--splitColor);border-radius:10px;transition:opacity .2s ease,background-color .3s}.search-popover-wrapper .ant-popover-inner{padding:0}
1
+ .d-tabs-nav{flex:1;overflow:hidden}.d-tabs-nav .ant-tabs-nav{margin-bottom:0 !important}.d-tabs-nav .ant-tabs-nav:before{border-bottom-width:0}.d-tabs-nav .ant-tabs-nav-operations{display:none !important}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab{position:relative;transition:none !important;border:0;background:rgba(0,0,0,0)}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:first-child{margin-left:20px}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:first-child .tab-dividers::before{opacity:0}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:nth-last-child(2){margin-right:20px}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:before,.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:after{position:absolute;bottom:-1px;content:"";width:30px;height:20px;border-radius:100%;box-shadow:0 0 0 40px rgba(0,0,0,0)}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:before{left:-30px;clip-path:inset(50% -10px 0 50%)}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:after{right:-30px;clip-path:inset(50% 50% 0 -10px)}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab.ant-tabs-tab-active{border-radius:10px 10px 0 0 !important;background:var(--active-tab-color)}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab.ant-tabs-tab-active .tab-dividers::before{opacity:0}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab.ant-tabs-tab-active:before,.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab.ant-tabs-tab-active:after{z-index:10;box-shadow:0 0 0 30px var(--active-tab-color)}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:hover:not(.ant-tabs-tab-active) .tab-hover-bg{position:absolute;display:flex;flex-direction:column;justify-content:center;top:0;right:0;bottom:0;left:0;z-index:-1}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:hover:not(.ant-tabs-tab-active) .tab-hover-bg:before{content:"";width:100%;height:25px;border-radius:6px}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:hover:not(.ant-tabs-tab-active) .tab-dividers::before{opacity:0}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:hover:not(.ant-tabs-tab-active)+.ant-tabs-tab .tab-dividers::before{opacity:0}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:not(.ant-tabs-tab-active) .close-btn{color:#fff}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:not(.ant-tabs-tab-active) .tab-item{color:#fff}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab-active+.ant-tabs-tab .tab-dividers::before{opacity:0}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab-btn{display:flex;align-items:center}.d-tabs-nav .tab-close{position:absolute;top:0;right:0;bottom:0;padding:4px;display:flex;align-items:center;justify-content:center}.d-tabs-nav .tab-close .close-btn{display:flex;align-items:center;justify-content:center;width:20px;height:20px;z-index:20}.d-tabs-nav .tab-close .anticon{margin:0}.d-tabs-nav .tab-item{padding-right:30px}.d-tabs-nav .tab-dividers{position:absolute;z-index:0;height:14px;left:-2px}.d-tabs-nav .tab-dividers::before{content:"";display:block;position:absolute;top:0;left:1px;bottom:0;width:1px;opacity:1;background-color:var(--splitColor);border-radius:10px;transition:opacity .2s ease,background-color .3s}.search-popover-wrapper .ant-popover-inner{padding:0}
@@ -1 +1 @@
1
- .d-tabs-nav{flex:1;overflow:hidden}.d-tabs-nav .ant-tabs-nav{margin-bottom:0 !important}.d-tabs-nav .ant-tabs-nav:before{border-bottom-width:0}.d-tabs-nav .ant-tabs-nav-operations{display:none !important}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab{position:relative;transition:none !important;border:0;background:rgba(0,0,0,0)}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:first-child{margin-left:20px}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:first-child .tab-dividers::before{opacity:0}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:nth-last-child(2){margin-right:20px}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:before,.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:after{position:absolute;bottom:-1px;content:"";width:30px;height:30px;border-radius:100%;box-shadow:0 0 0 40px rgba(0,0,0,0)}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:before{left:-30px;clip-path:inset(50% -10px 0 50%)}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:after{right:-30px;clip-path:inset(50% 50% 0 -10px)}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab.ant-tabs-tab-active{border-radius:10px 10px 0 0 !important;background:var(--active-tab-color)}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab.ant-tabs-tab-active .tab-dividers::before{opacity:0}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab.ant-tabs-tab-active:before,.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab.ant-tabs-tab-active:after{z-index:10;box-shadow:0 0 0 30px var(--active-tab-color)}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:hover:not(.ant-tabs-tab-active) .tab-hover-bg{position:absolute;display:flex;flex-direction:column;justify-content:center;top:0;right:0;bottom:0;left:0;z-index:-1}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:hover:not(.ant-tabs-tab-active) .tab-hover-bg:before{content:"";width:100%;height:25px;border-radius:6px}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:hover:not(.ant-tabs-tab-active) .tab-dividers::before{opacity:0}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:hover:not(.ant-tabs-tab-active)+.ant-tabs-tab .tab-dividers::before{opacity:0}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:not(.ant-tabs-tab-active) .close-btn{color:#fff}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:not(.ant-tabs-tab-active) .tab-item{color:#fff}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab-active+.ant-tabs-tab .tab-dividers::before{opacity:0}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab-btn{display:flex;align-items:center}.d-tabs-nav .tab-close{position:absolute;top:0;right:0;bottom:0;padding:4px;display:flex;align-items:center;justify-content:center}.d-tabs-nav .tab-close .close-btn{display:flex;align-items:center;justify-content:center;width:20px;height:20px;z-index:20}.d-tabs-nav .tab-close .anticon{margin:0}.d-tabs-nav .tab-item{padding-right:30px}.d-tabs-nav .tab-dividers{position:absolute;z-index:0;height:14px;left:-2px}.d-tabs-nav .tab-dividers::before{content:"";display:block;position:absolute;top:0;left:1px;bottom:0;width:1px;opacity:1;background-color:var(--splitColor);border-radius:10px;transition:opacity .2s ease,background-color .3s}.search-popover-wrapper .ant-popover-inner{padding:0}.ant-pro-drawer-setting-handle{position:fixed;inset-block-start:240px;inset-inline-end:0;z-index:10;display:flex;align-items:center;justify-content:center;width:48px;height:48px;font-size:16px;text-align:center;backdrop-filter:saturate(180%) blur(20px);cursor:pointer;pointer-events:auto}.ant-pro-drawer-setting-handle .icon{color:#fff}.ant-pro-drawer-setting-handle-icon-dark{color:#e5e0d8}.ant-pro-drawer-setting-theme-color{margin-top:16px;overflow:hidden}.ant-pro-drawer-setting-theme-color-block{float:left;width:20px;height:20px;margin-top:8px;margin-right:8px;font-weight:700;display:flex;color:#fff;align-items:center;justify-content:center;border-radius:2px;cursor:pointer}.ant-pro-drawer-setting-block-checkbox{display:flex;min-height:42px}.ant-pro-drawer-setting-block-checkbox-selectIcon{position:absolute;right:6px;bottom:4px;font-weight:700;font-size:14px;pointer-events:none}.ant-pro-drawer-setting-block-checkbox-item{position:relative;width:44px;height:36px;margin-right:16px;overflow:hidden;background-color:#f0f2f5;border-radius:4px;box-shadow:0 1px 2.5px 0 rgba(0,0,0,.18);cursor:pointer}.ant-pro-drawer-setting-block-checkbox-item::before{position:absolute;top:0;left:0;width:33%;height:100%;background-color:#fff;content:""}.ant-pro-drawer-setting-block-checkbox-item::after{position:absolute;top:0;left:0;width:100%;height:25%;background-color:#fff;content:""}.ant-pro-drawer-setting-block-checkbox-item-dark{background-color:rgba(0,21,41,.85)}.ant-pro-drawer-setting-block-checkbox-item-dark::before{background-color:rgba(0,21,41,.65);content:""}.ant-pro-drawer-setting-block-checkbox-item-dark::after{background-color:rgba(0,21,41,.85)}.ant-pro-drawer-setting-block-checkbox-item-light::before{background-color:#fff;content:""}.ant-pro-drawer-setting-block-checkbox-item-light::after{background-color:#fff}.ant-pro-drawer-setting-block-checkbox-item-inverted::before,.ant-pro-drawer-setting-block-checkbox-item-side::before{z-index:1;background-color:#001529;content:""}.ant-pro-drawer-setting-block-checkbox-item-inverted::after,.ant-pro-drawer-setting-block-checkbox-item-side::after{background-color:#fff}.ant-pro-drawer-setting-block-checkbox-item-top::before{background-color:rgba(0,0,0,0);content:""}.ant-pro-drawer-setting-block-checkbox-item-top::after{background-color:#001529}.ant-pro-drawer-setting-block-checkbox-item-mix::before{background-color:#fff;content:""}.ant-pro-drawer-setting-block-checkbox-item-mix::after{background-color:#001529}.ant-pro-drawer-setting-block-checkbox-theme-item{background:#2a2c2c;box-shadow:rgba(13,13,13,.18) 0px 1px 2.5px 0px}.ant-pro-drawer-setting-block-checkbox-theme-item-light::before,.ant-pro-drawer-setting-block-checkbox-theme-item-light::after{background-color:#242525}.ant-pro-drawer-setting-block-checkbox-theme-item-dark::before,.ant-pro-drawer-setting-block-checkbox-theme-item-dark::after{background-color:rgba(15,28,41,.65)}.ant-pro-drawer-setting-block-checkbox-theme-item-side::before,.ant-pro-drawer-setting-block-checkbox-theme-item-inverted::before{background-color:#0f1c29}.ant-pro-drawer-setting-block-checkbox-theme-item-side::after,.ant-pro-drawer-setting-block-checkbox-theme-item-inverted::after{background-color:#242525}.ant-pro-drawer-setting-block-checkbox-theme-item-mix::before{background-color:#242525}html::-webkit-scrollbar,body::-webkit-scrollbar{width:0 !important;display:none}.main-enter-active{transition:.2s}.main-leave-active{transition:.15s}.main-enter-from{opacity:0;margin-left:-20px}.main-leave-to{opacity:0;margin-left:20px}
1
+ .d-tabs-nav{flex:1;overflow:hidden}.d-tabs-nav .ant-tabs-nav{margin-bottom:0 !important}.d-tabs-nav .ant-tabs-nav:before{border-bottom-width:0}.d-tabs-nav .ant-tabs-nav-operations{display:none !important}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab{position:relative;transition:none !important;border:0;background:rgba(0,0,0,0)}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:first-child{margin-left:20px}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:first-child .tab-dividers::before{opacity:0}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:nth-last-child(2){margin-right:20px}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:before,.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:after{position:absolute;bottom:-1px;content:"";width:30px;height:20px;border-radius:100%;box-shadow:0 0 0 40px rgba(0,0,0,0)}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:before{left:-30px;clip-path:inset(50% -10px 0 50%)}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:after{right:-30px;clip-path:inset(50% 50% 0 -10px)}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab.ant-tabs-tab-active{border-radius:10px 10px 0 0 !important;background:var(--active-tab-color)}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab.ant-tabs-tab-active .tab-dividers::before{opacity:0}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab.ant-tabs-tab-active:before,.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab.ant-tabs-tab-active:after{z-index:10;box-shadow:0 0 0 30px var(--active-tab-color)}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:hover:not(.ant-tabs-tab-active) .tab-hover-bg{position:absolute;display:flex;flex-direction:column;justify-content:center;top:0;right:0;bottom:0;left:0;z-index:-1}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:hover:not(.ant-tabs-tab-active) .tab-hover-bg:before{content:"";width:100%;height:25px;border-radius:6px}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:hover:not(.ant-tabs-tab-active) .tab-dividers::before{opacity:0}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:hover:not(.ant-tabs-tab-active)+.ant-tabs-tab .tab-dividers::before{opacity:0}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:not(.ant-tabs-tab-active) .close-btn{color:#fff}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab:not(.ant-tabs-tab-active) .tab-item{color:#fff}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab-active+.ant-tabs-tab .tab-dividers::before{opacity:0}.d-tabs-nav .ant-tabs-nav-list .ant-tabs-tab-btn{display:flex;align-items:center}.d-tabs-nav .tab-close{position:absolute;top:0;right:0;bottom:0;padding:4px;display:flex;align-items:center;justify-content:center}.d-tabs-nav .tab-close .close-btn{display:flex;align-items:center;justify-content:center;width:20px;height:20px;z-index:20}.d-tabs-nav .tab-close .anticon{margin:0}.d-tabs-nav .tab-item{padding-right:30px}.d-tabs-nav .tab-dividers{position:absolute;z-index:0;height:14px;left:-2px}.d-tabs-nav .tab-dividers::before{content:"";display:block;position:absolute;top:0;left:1px;bottom:0;width:1px;opacity:1;background-color:var(--splitColor);border-radius:10px;transition:opacity .2s ease,background-color .3s}.search-popover-wrapper .ant-popover-inner{padding:0}.ant-pro-drawer-setting-handle{position:fixed;inset-block-start:240px;inset-inline-end:0;z-index:10;display:flex;align-items:center;justify-content:center;width:48px;height:48px;font-size:16px;text-align:center;backdrop-filter:saturate(180%) blur(20px);cursor:pointer;pointer-events:auto}.ant-pro-drawer-setting-handle .icon{color:#fff}.ant-pro-drawer-setting-handle-icon-dark{color:#e5e0d8}.ant-pro-drawer-setting-theme-color{margin-top:16px;overflow:hidden}.ant-pro-drawer-setting-theme-color-block{float:left;width:20px;height:20px;margin-top:8px;margin-right:8px;font-weight:700;display:flex;color:#fff;align-items:center;justify-content:center;border-radius:2px;cursor:pointer}.ant-pro-drawer-setting-block-checkbox{display:flex;min-height:42px}.ant-pro-drawer-setting-block-checkbox-selectIcon{position:absolute;right:6px;bottom:4px;font-weight:700;font-size:14px;pointer-events:none}.ant-pro-drawer-setting-block-checkbox-item{position:relative;width:44px;height:36px;margin-right:16px;overflow:hidden;background-color:#f0f2f5;border-radius:4px;box-shadow:0 1px 2.5px 0 rgba(0,0,0,.18);cursor:pointer}.ant-pro-drawer-setting-block-checkbox-item::before{position:absolute;top:0;left:0;width:33%;height:100%;background-color:#fff;content:""}.ant-pro-drawer-setting-block-checkbox-item::after{position:absolute;top:0;left:0;width:100%;height:25%;background-color:#fff;content:""}.ant-pro-drawer-setting-block-checkbox-item-dark{background-color:rgba(0,21,41,.85)}.ant-pro-drawer-setting-block-checkbox-item-dark::before{background-color:rgba(0,21,41,.65);content:""}.ant-pro-drawer-setting-block-checkbox-item-dark::after{background-color:rgba(0,21,41,.85)}.ant-pro-drawer-setting-block-checkbox-item-light::before{background-color:#fff;content:""}.ant-pro-drawer-setting-block-checkbox-item-light::after{background-color:#fff}.ant-pro-drawer-setting-block-checkbox-item-inverted::before,.ant-pro-drawer-setting-block-checkbox-item-side::before{z-index:1;background-color:#001529;content:""}.ant-pro-drawer-setting-block-checkbox-item-inverted::after,.ant-pro-drawer-setting-block-checkbox-item-side::after{background-color:#fff}.ant-pro-drawer-setting-block-checkbox-item-top::before{background-color:rgba(0,0,0,0);content:""}.ant-pro-drawer-setting-block-checkbox-item-top::after{background-color:#001529}.ant-pro-drawer-setting-block-checkbox-item-mix::before{background-color:#fff;content:""}.ant-pro-drawer-setting-block-checkbox-item-mix::after{background-color:#001529}.ant-pro-drawer-setting-block-checkbox-theme-item{background:#2a2c2c;box-shadow:rgba(13,13,13,.18) 0px 1px 2.5px 0px}.ant-pro-drawer-setting-block-checkbox-theme-item-light::before,.ant-pro-drawer-setting-block-checkbox-theme-item-light::after{background-color:#242525}.ant-pro-drawer-setting-block-checkbox-theme-item-dark::before,.ant-pro-drawer-setting-block-checkbox-theme-item-dark::after{background-color:rgba(15,28,41,.65)}.ant-pro-drawer-setting-block-checkbox-theme-item-side::before,.ant-pro-drawer-setting-block-checkbox-theme-item-inverted::before{background-color:#0f1c29}.ant-pro-drawer-setting-block-checkbox-theme-item-side::after,.ant-pro-drawer-setting-block-checkbox-theme-item-inverted::after{background-color:#242525}.ant-pro-drawer-setting-block-checkbox-theme-item-mix::before{background-color:#242525}html::-webkit-scrollbar,body::-webkit-scrollbar{width:0 !important;display:none}.main-enter-active{transition:.2s}.main-leave-active{transition:.15s}.main-enter-from{opacity:0;margin-left:-20px}.main-leave-to{opacity:0;margin-left:20px}
@@ -69,6 +69,7 @@ var DicReplace = /* @__PURE__ */ defineComponent({
69
69
  }
70
70
  });
71
71
  }
72
+ loadDicData().then(() => console.log("success load dic"));
72
73
  watch(() => props.value, (val) => {
73
74
  replace(val);
74
75
  }, {
@@ -1 +1 @@
1
- {"version":3,"file":"DicReplace.mjs","sources":["../../../../src/components/dic/DicReplace.tsx"],"sourcesContent":["/**\n * 字典替换\n * 根据字典名字及对应的value替换成中文或者人能看懂的文字\n * @author 余春林\n */\nimport {\n defineComponent,\n inject,\n onActivated,\n onMounted,\n ref,\n watch\n} from \"vue\";\nimport { useRoute } from \"vue-router\";\n\nimport {\n useDicStore,\n useKeepAliveStore\n} from \"@ditari/store\";\n\nexport default defineComponent({\n name: \"DicRep\",\n props: {\n // 字典名称\n name: {\n type: String,\n default: \"\"\n },\n // 值\n value: {\n type: String,\n default: \"\"\n }\n },\n setup(props) {\n const { get: keepNames } = useKeepAliveStore();\n const { getDicTextByValue } = useDicStore();\n const route = useRoute();\n // 判断使用组件的页面是否被缓存\n const isKeepAlive = keepNames.some(\n (name: string) => name === route.name\n );\n const dicValueTxt = ref<string>(\"\");\n\n // 注入 fetchDic,提供默认值\n const fetchDic = inject<\n (name: string) => Promise<unknown[]>\n >(\"fetchDic\", async (name: string) => {\n console.warn(\n `fetchDic 未注入,使用默认实现,name: ${name}`\n );\n return [];\n });\n\n onActivated(async () => {\n // 缓存页面被激活的时候调用\n await loadDicData();\n });\n\n onMounted(async () => {\n if (!isKeepAlive) {\n // 未缓存页面 挂载的时候调用\n await loadDicData();\n }\n });\n\n // 请求字典数据的函数\n async function loadDicData() {\n try {\n // 调用注入进来的fetchDic方法\n await fetchDic(props.name);\n replace(props.value);\n } catch (error) {\n console.error(\"获取字典数据失败:\", error);\n }\n }\n\n watch(\n () => props.value,\n (val: string) => {\n replace(val);\n },\n {\n immediate: true\n }\n );\n\n function replace(val: string) {\n const value = val;\n const name = props.name;\n dicValueTxt.value = getDicTextByValue(name, value);\n }\n\n return () => (\n <span class={\"d-dic\"}>{dicValueTxt.value}</span>\n );\n }\n});\n"],"names":["name","props","type","String","default","value","setup","get","keepNames","useKeepAliveStore","getDicTextByValue","useDicStore","route","useRoute","isKeepAlive","some","dicValueTxt","ref","fetchDic","inject","console","warn","onActivated","loadDicData","onMounted","replace","error","watch","val","immediate","_createVNode"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAoBA,iCAA+B,eAAA,CAAA;AAAA,EAC7BA,IAAM,EAAA,QAAA;AAAA,EACNC,KAAO,EAAA;AAAA;AAAA,IAELD,IAAM,EAAA;AAAA,MACJE,IAAMC,EAAAA,MAAAA;AAAAA,MACNC,OAAS,EAAA;AAAA,KACX;AAAA;AAAA,IAEAC,KAAO,EAAA;AAAA,MACLH,IAAMC,EAAAA,MAAAA;AAAAA,MACNC,OAAS,EAAA;AAAA;AACX,GACF;AAAA,EACAE,MAAML,KAAO,EAAA;AACX,IAAM,MAAA;AAAA,MAAEM,GAAKC,EAAAA;AAAAA,QAAcC,iBAAkB,EAAA;AAC7C,IAAM,MAAA;AAAA,MAAEC;AAAAA,QAAsBC,WAAY,EAAA;AAC1C,IAAA,MAAMC,QAAQC,QAAS,EAAA;AAEvB,IAAA,MAAMC,cAAcN,SAAUO,CAAAA,IAAAA,CAC3Bf,CAAiBA,IAAAA,KAAAA,IAAAA,KAASY,MAAMZ,IACnC,CAAA;AACA,IAAMgB,MAAAA,WAAAA,GAAcC,IAAY,EAAE,CAAA;AAGlC,IAAA,MAAMC,QAAWC,GAAAA,MAAAA,CAEf,UAAY,EAAA,CAAOnB,IAAiB,KAAA,OAAA,CAAA,IAAA,EAAA,IAAA,EAAA,aAAA;AACpCoB,MAAQC,OAAAA,CAAAA,IAAAA,CACN,CAA6BrB,iFAAAA,EAAAA,IAAI,CACnC,CAAA,CAAA;AACA,MAAA,OAAO,EAAE;AAAA,KACV,CAAA,CAAA;AAEDsB,IAAAA,WAAAA,CAAY,MAAY,OAAA,CAAA,IAAA,EAAA,IAAA,EAAA,aAAA;AAEtB,MAAA,MAAMC,WAAY,EAAA;AAAA,KACnB,CAAA,CAAA;AAEDC,IAAAA,SAAAA,CAAU,MAAY,OAAA,CAAA,IAAA,EAAA,IAAA,EAAA,aAAA;AACpB,MAAA,IAAI,CAACV,WAAa,EAAA;AAEhB,QAAA,MAAMS,WAAY,EAAA;AAAA;AACpB,KACD,CAAA,CAAA;AAGD,IAAA,SAAeA,WAAc,GAAA;AAAA,MAAA,OAAA,OAAA,CAAA,IAAA,EAAA,IAAA,EAAA,aAAA;AAC3B,QAAI,IAAA;AAEF,UAAML,MAAAA,QAAAA,CAASjB,MAAMD,IAAI,CAAA;AACzByB,UAAAA,OAAAA,CAAQxB,MAAMI,KAAK,CAAA;AAAA,iBACZqB,KAAO,EAAA;AACdN,UAAQM,OAAAA,CAAAA,KAAAA,CAAM,qDAAaA,KAAK,CAAA;AAAA;AAClC,OACF,CAAA;AAAA;AAEAC,IACE,KAAA,CAAA,MAAM1B,KAAMI,CAAAA,KAAAA,EACXuB,CAAgB,GAAA,KAAA;AACfH,MAAAA,OAAAA,CAAQG,GAAG,CAAA;AAAA,KAEb,EAAA;AAAA,MACEC,SAAW,EAAA;AAAA,KAEf,CAAA;AAEA,IAAA,SAASJ,QAAQG,GAAa,EAAA;AAC5B,MAAA,MAAMvB,KAAQuB,GAAAA,GAAAA;AACd,MAAA,MAAM5B,OAAOC,KAAMD,CAAAA,IAAAA;AACnBgB,MAAYX,WAAAA,CAAAA,KAAAA,GAAQK,iBAAkBV,CAAAA,IAAAA,EAAMK,KAAK,CAAA;AAAA;AAGnD,IAAO,OAAA,MAAAyB,YAAA,MAAA,EAAA;AAAA,MAAA,OACQ,EAAA;AAAA,KAAUd,EAAAA,CAAAA,WAAYX,CAAAA,KAAK,CACzC,CAAA;AAAA;AAEL,CAAC,CAAA;;;;"}
1
+ {"version":3,"file":"DicReplace.mjs","sources":["../../../../src/components/dic/DicReplace.tsx"],"sourcesContent":["/**\n * 字典替换\n * 根据字典名字及对应的value替换成中文或者人能看懂的文字\n * @author 余春林\n */\nimport {\n defineComponent,\n inject,\n onActivated,\n onMounted,\n ref,\n watch\n} from \"vue\";\nimport { useRoute } from \"vue-router\";\n\nimport {\n useDicStore,\n useKeepAliveStore\n} from \"@ditari/store\";\n\nexport default defineComponent({\n name: \"DicRep\",\n props: {\n // 字典名称\n name: {\n type: String,\n default: \"\"\n },\n // 值\n value: {\n type: String,\n default: \"\"\n }\n },\n setup(props) {\n const { get: keepNames } = useKeepAliveStore();\n const { getDicTextByValue } = useDicStore();\n const route = useRoute();\n // 判断使用组件的页面是否被缓存\n const isKeepAlive = keepNames.some(\n (name: string) => name === route.name\n );\n const dicValueTxt = ref<string>(\"\");\n\n // 注入 fetchDic,提供默认值\n const fetchDic = inject<\n (name: string) => Promise<unknown[]>\n >(\"fetchDic\", async (name: string) => {\n console.warn(\n `fetchDic 未注入,使用默认实现,name: ${name}`\n );\n return [];\n });\n\n onActivated(async () => {\n // 缓存页面被激活的时候调用\n await loadDicData();\n });\n\n onMounted(async () => {\n if (!isKeepAlive) {\n // 未缓存页面 挂载的时候调用\n await loadDicData();\n }\n });\n\n // 请求字典数据的函数\n async function loadDicData() {\n try {\n // 调用注入进来的fetchDic方法\n await fetchDic(props.name);\n replace(props.value);\n } catch (error) {\n console.error(\"获取字典数据失败:\", error);\n }\n }\n\n loadDicData().then(() =>\n console.log(\"success load dic\")\n );\n\n watch(\n () => props.value,\n (val: string) => {\n replace(val);\n },\n {\n immediate: true\n }\n );\n\n function replace(val: string) {\n const value = val;\n const name = props.name;\n dicValueTxt.value = getDicTextByValue(name, value);\n }\n\n return () => (\n <span class={\"d-dic\"}>{dicValueTxt.value}</span>\n );\n }\n});\n"],"names":["name","props","type","String","default","value","setup","get","keepNames","useKeepAliveStore","getDicTextByValue","useDicStore","route","useRoute","isKeepAlive","some","dicValueTxt","ref","fetchDic","inject","console","warn","onActivated","loadDicData","onMounted","replace","error","then","log","watch","val","immediate","_createVNode"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAoBA,iCAA+B,eAAA,CAAA;AAAA,EAC7BA,IAAM,EAAA,QAAA;AAAA,EACNC,KAAO,EAAA;AAAA;AAAA,IAELD,IAAM,EAAA;AAAA,MACJE,IAAMC,EAAAA,MAAAA;AAAAA,MACNC,OAAS,EAAA;AAAA,KACX;AAAA;AAAA,IAEAC,KAAO,EAAA;AAAA,MACLH,IAAMC,EAAAA,MAAAA;AAAAA,MACNC,OAAS,EAAA;AAAA;AACX,GACF;AAAA,EACAE,MAAML,KAAO,EAAA;AACX,IAAM,MAAA;AAAA,MAAEM,GAAKC,EAAAA;AAAAA,QAAcC,iBAAkB,EAAA;AAC7C,IAAM,MAAA;AAAA,MAAEC;AAAAA,QAAsBC,WAAY,EAAA;AAC1C,IAAA,MAAMC,QAAQC,QAAS,EAAA;AAEvB,IAAA,MAAMC,cAAcN,SAAUO,CAAAA,IAAAA,CAC3Bf,CAAiBA,IAAAA,KAAAA,IAAAA,KAASY,MAAMZ,IACnC,CAAA;AACA,IAAMgB,MAAAA,WAAAA,GAAcC,IAAY,EAAE,CAAA;AAGlC,IAAA,MAAMC,QAAWC,GAAAA,MAAAA,CAEf,UAAY,EAAA,CAAOnB,IAAiB,KAAA,OAAA,CAAA,IAAA,EAAA,IAAA,EAAA,aAAA;AACpCoB,MAAQC,OAAAA,CAAAA,IAAAA,CACN,CAA6BrB,iFAAAA,EAAAA,IAAI,CACnC,CAAA,CAAA;AACA,MAAA,OAAO,EAAE;AAAA,KACV,CAAA,CAAA;AAEDsB,IAAAA,WAAAA,CAAY,MAAY,OAAA,CAAA,IAAA,EAAA,IAAA,EAAA,aAAA;AAEtB,MAAA,MAAMC,WAAY,EAAA;AAAA,KACnB,CAAA,CAAA;AAEDC,IAAAA,SAAAA,CAAU,MAAY,OAAA,CAAA,IAAA,EAAA,IAAA,EAAA,aAAA;AACpB,MAAA,IAAI,CAACV,WAAa,EAAA;AAEhB,QAAA,MAAMS,WAAY,EAAA;AAAA;AACpB,KACD,CAAA,CAAA;AAGD,IAAA,SAAeA,WAAc,GAAA;AAAA,MAAA,OAAA,OAAA,CAAA,IAAA,EAAA,IAAA,EAAA,aAAA;AAC3B,QAAI,IAAA;AAEF,UAAML,MAAAA,QAAAA,CAASjB,MAAMD,IAAI,CAAA;AACzByB,UAAAA,OAAAA,CAAQxB,MAAMI,KAAK,CAAA;AAAA,iBACZqB,KAAO,EAAA;AACdN,UAAQM,OAAAA,CAAAA,KAAAA,CAAM,qDAAaA,KAAK,CAAA;AAAA;AAClC,OACF,CAAA;AAAA;AAEAH,IAAAA,WAAAA,GAAcI,IAAK,CAAA,MACjBP,OAAQQ,CAAAA,GAAAA,CAAI,kBAAkB,CAChC,CAAA;AAEAC,IACE,KAAA,CAAA,MAAM5B,KAAMI,CAAAA,KAAAA,EACXyB,CAAgB,GAAA,KAAA;AACfL,MAAAA,OAAAA,CAAQK,GAAG,CAAA;AAAA,KAEb,EAAA;AAAA,MACEC,SAAW,EAAA;AAAA,KAEf,CAAA;AAEA,IAAA,SAASN,QAAQK,GAAa,EAAA;AAC5B,MAAA,MAAMzB,KAAQyB,GAAAA,GAAAA;AACd,MAAA,MAAM9B,OAAOC,KAAMD,CAAAA,IAAAA;AACnBgB,MAAYX,WAAAA,CAAAA,KAAAA,GAAQK,iBAAkBV,CAAAA,IAAAA,EAAMK,KAAK,CAAA;AAAA;AAGnD,IAAO,OAAA,MAAA2B,YAAA,MAAA,EAAA;AAAA,MAAA,OACQ,EAAA;AAAA,KAAUhB,EAAAA,CAAAA,WAAYX,CAAAA,KAAK,CACzC,CAAA;AAAA;AAEL,CAAC,CAAA;;;;"}
@@ -1,4 +1,4 @@
1
- import { defineComponent, watch, ref, provide, computed, resolveComponent, createElementBlock, openBlock, Fragment, createVNode, unref, withCtx, normalizeClass, createElementVNode, renderSlot } from 'vue';
1
+ import { defineComponent, watch, ref, provide, computed, resolveComponent, createElementBlock, openBlock, Fragment, createVNode, createBlock, createCommentVNode, normalizeClass, unref, withCtx, createElementVNode, renderSlot } from 'vue';
2
2
  import { useRoute } from 'vue-router';
3
3
  import { storeToRefs } from 'pinia';
4
4
  import Menu from './components/menu/Menu.mjs';
@@ -17,12 +17,17 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
17
17
  props: {
18
18
  watermark: { type: Object, required: false, default: () => ({
19
19
  content: ""
20
- }) }
20
+ }) },
21
+ isSettings: { type: Boolean, required: false, default: true }
21
22
  },
22
- setup(__props) {
23
+ emits: ["menuChange"],
24
+ setup(__props, { emit: __emit }) {
23
25
  const props = __props;
26
+ const emits = __emit;
24
27
  const { layout, modeConfig, sideTokenStyle } = storeToRefs(useAppStore());
25
28
  const route = useRoute();
29
+ useWatermark();
30
+ const { onMenuChange } = useMenu();
26
31
  const {
27
32
  layoutStyle,
28
33
  siderStyle,
@@ -30,7 +35,6 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
30
35
  rightContentStyle
31
36
  } = useStyle();
32
37
  useKeepAlive();
33
- const { watermarkContent } = useWatermark();
34
38
  function useKeepAlive() {
35
39
  const { save } = useKeepAliveStore();
36
40
  watch(
@@ -44,21 +48,20 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
44
48
  );
45
49
  }
46
50
  function useWatermark() {
47
- const watermarkContent2 = ref("");
48
- provide("watermarkContent", watermarkContent2);
51
+ const watermarkContent = ref("");
52
+ provide("watermarkContent", watermarkContent);
49
53
  watch(
50
54
  () => props.watermark,
51
55
  (val) => {
52
- watermarkContent2.value = val.content || "";
56
+ watermarkContent.value = val.content || "";
53
57
  },
54
58
  { deep: true, immediate: true }
55
59
  );
56
- return {
57
- watermarkContent: watermarkContent2
58
- };
59
60
  }
60
61
  function useStyle() {
61
- const layoutStyle2 = css``;
62
+ const layoutStyle2 = css`
63
+ height: 100vh;
64
+ `;
62
65
  const transitionStyle = css`
63
66
  transition: margin-left 0.4s
64
67
  cubic-bezier(0.22, 1.2, 0.36, 1);
@@ -101,62 +104,63 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
101
104
  rightContentStyle: rightContentStyle2
102
105
  };
103
106
  }
107
+ function useMenu() {
108
+ const onMenuChange2 = (item) => {
109
+ emits("menuChange", item);
110
+ };
111
+ return {
112
+ onMenuChange: onMenuChange2
113
+ };
114
+ }
104
115
  return (_ctx, _cache) => {
105
116
  const _component_a_layout_sider = resolveComponent("a-layout-sider");
106
117
  const _component_a_layout_content = resolveComponent("a-layout-content");
107
118
  const _component_a_layout = resolveComponent("a-layout");
108
- const _component_a_watermark = resolveComponent("a-watermark");
109
119
  const _component_a_back_top = resolveComponent("a-back-top");
110
120
  return openBlock(), createElementBlock(
111
121
  Fragment,
112
122
  null,
113
123
  [
114
- createVNode(_component_a_watermark, { content: unref(watermarkContent) }, {
124
+ createVNode(_component_a_layout, {
125
+ class: normalizeClass(unref(layoutStyle))
126
+ }, {
115
127
  default: withCtx(() => [
128
+ createVNode(_component_a_layout_sider, {
129
+ collapsed: unref(layout).collapsed,
130
+ "onUpdate:collapsed": _cache[0] || (_cache[0] = ($event) => unref(layout).collapsed = $event),
131
+ theme: "light",
132
+ collapsible: "",
133
+ trigger: null,
134
+ class: normalizeClass(unref(siderStyle))
135
+ }, {
136
+ default: withCtx(() => [
137
+ createElementVNode("div", _hoisted_1, [
138
+ renderSlot(_ctx.$slots, "logo"),
139
+ createVNode(unref(Menu), { onMenuChange: unref(onMenuChange) }, null, 8, ["onMenuChange"])
140
+ ])
141
+ ]),
142
+ _: 3
143
+ /* FORWARDED */
144
+ }, 8, ["collapsed", "class"]),
116
145
  createVNode(_component_a_layout, {
117
- class: normalizeClass(unref(layoutStyle))
146
+ class: normalizeClass(unref(rightStyle))
118
147
  }, {
119
148
  default: withCtx(() => [
120
- createVNode(_component_a_layout_sider, {
121
- collapsed: unref(layout).collapsed,
122
- "onUpdate:collapsed": _cache[0] || (_cache[0] = ($event) => unref(layout).collapsed = $event),
123
- theme: "light",
124
- collapsible: "",
125
- trigger: null,
126
- class: normalizeClass(unref(siderStyle))
127
- }, {
149
+ createVNode(_sfc_main$1, null, {
128
150
  default: withCtx(() => [
129
- createElementVNode("div", _hoisted_1, [
130
- renderSlot(_ctx.$slots, "logo"),
131
- createVNode(unref(Menu))
132
- ])
151
+ renderSlot(_ctx.$slots, "headerRight")
133
152
  ]),
134
153
  _: 3
135
154
  /* FORWARDED */
136
- }, 8, ["collapsed", "class"]),
137
- createVNode(_component_a_layout, {
138
- class: normalizeClass(unref(rightStyle))
155
+ }),
156
+ createVNode(_component_a_layout_content, {
157
+ class: normalizeClass(unref(rightContentStyle))
139
158
  }, {
140
159
  default: withCtx(() => [
141
- createVNode(_sfc_main$1, null, {
142
- default: withCtx(() => [
143
- renderSlot(_ctx.$slots, "headerRight")
144
- ]),
145
- _: 3
146
- /* FORWARDED */
147
- }),
148
- createVNode(_component_a_layout_content, {
149
- class: normalizeClass(unref(rightContentStyle))
150
- }, {
151
- default: withCtx(() => [
152
- createVNode(_sfc_main$2)
153
- ]),
154
- _: 1
155
- /* STABLE */
156
- }, 8, ["class"])
160
+ createVNode(_sfc_main$2)
157
161
  ]),
158
- _: 3
159
- /* FORWARDED */
162
+ _: 1
163
+ /* STABLE */
160
164
  }, 8, ["class"])
161
165
  ]),
162
166
  _: 3
@@ -165,8 +169,8 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
165
169
  ]),
166
170
  _: 3
167
171
  /* FORWARDED */
168
- }, 8, ["content"]),
169
- createVNode(unref(SettingDrawer)),
172
+ }, 8, ["class"]),
173
+ __props.isSettings ? (openBlock(), createBlock(unref(SettingDrawer), { key: 0 })) : createCommentVNode("v-if", true),
170
174
  createVNode(_component_a_back_top)
171
175
  ],
172
176
  64
@@ -1 +1 @@
1
- {"version":3,"file":"Layout.vue2.mjs","sources":["../../../../src/components/layout/Layout.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed, provide, ref, watch } from \"vue\";\r\nimport { useRoute } from \"vue-router\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport DMenu from \"./components/menu/Menu\";\r\nimport SettingDrawer from \"./components/settings/SettingDrawer\";\r\nimport {\r\n useAppStore,\r\n useKeepAliveStore\r\n} from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\n\r\nimport HeaderLayout from \"./components/layout/HeaderLayout.vue\";\r\nimport RouterContent from \"./components/layout/RouterContent.vue\";\r\n\r\nconst props = defineProps({\n watermark: { type: Object, required: false, default: () => ({\r\n content: \"\"\r\n }) }\n});\r\n\r\nconst { layout, modeConfig, sideTokenStyle } =\r\n storeToRefs(useAppStore());\r\nconst route = useRoute();\r\n\r\nconst {\r\n layoutStyle,\r\n siderStyle,\r\n rightStyle,\r\n rightContentStyle\r\n} = useStyle();\r\nuseKeepAlive();\r\n\r\nconst { watermarkContent } = useWatermark();\r\n\r\nfunction useKeepAlive() {\r\n // 保存需要被缓存的标签\r\n const { save } = useKeepAliveStore();\r\n\r\n watch(\r\n () => route.path,\r\n () => {\r\n save(route);\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n}\r\n\r\nfunction useWatermark() {\r\n const watermarkContent = ref(\"\");\r\n provide(\"watermarkContent\", watermarkContent);\r\n // 监听 watermark 的变化\r\n watch(\r\n () => props.watermark,\r\n val => {\r\n watermarkContent.value = val.content || \"\";\r\n },\r\n { deep: true, immediate: true }\r\n );\r\n return {\r\n watermarkContent\r\n };\r\n}\r\n\r\nfunction useStyle() {\r\n const layoutStyle = css``;\r\n\r\n const transitionStyle = css`\r\n transition: margin-left 0.4s\r\n cubic-bezier(0.22, 1.2, 0.36, 1);\r\n `;\r\n\r\n const left = computed(\r\n () =>\r\n `${layout.value.collapsed ? layout.value.collapsedWidth : layout.value.sideWidth}px`\r\n );\r\n\r\n const siderStyle = computed(\r\n () => css`\r\n position: fixed !important;\r\n top: 0;\r\n bottom: 0;\r\n left: 0;\r\n z-index: 1;\r\n width: ${layout.value.sideWidth}px;\r\n\r\n .app-side {\r\n height: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n ${modeConfig.value.mode === \"light\"\r\n ? `background:${sideTokenStyle.value.bgColor};`\r\n : \"\"}\r\n }\r\n `\r\n );\r\n\r\n const rightStyle = computed(\r\n () => css`\r\n margin-left: ${left.value};\r\n ${transitionStyle}\r\n `\r\n );\r\n\r\n const rightContentStyle = computed(\r\n () => css`\r\n padding-top: ${layout.value.headerHeight}px;\r\n `\r\n );\r\n\r\n return {\r\n layoutStyle,\r\n siderStyle,\r\n rightStyle,\r\n rightContentStyle\r\n };\r\n}\r\n</script>\r\n\r\n<template>\r\n <a-watermark :content=\"watermarkContent\">\r\n <a-layout :class=\"layoutStyle\">\r\n <a-layout-sider\r\n v-model:collapsed=\"layout.collapsed\"\r\n theme=\"light\"\r\n collapsible\r\n :trigger=\"null\"\r\n :class=\"siderStyle\"\r\n >\r\n <div class=\"app-side\">\r\n <slot name=\"logo\"></slot>\r\n <d-menu />\r\n </div>\r\n </a-layout-sider>\r\n <a-layout :class=\"rightStyle\">\r\n <header-layout>\r\n <slot name=\"headerRight\"></slot>\r\n </header-layout>\r\n <a-layout-content :class=\"rightContentStyle\">\r\n <RouterContent />\r\n </a-layout-content>\r\n </a-layout>\r\n </a-layout>\r\n </a-watermark>\r\n <SettingDrawer />\r\n <a-back-top></a-back-top>\r\n</template>\r\n\r\n<style scoped></style>\r\n"],"names":["watermarkContent","layoutStyle","siderStyle","rightStyle","rightContentStyle"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAgBA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAMd,IAAA,MAAM,EAAE,MAAQ,EAAA,UAAA,EAAY,gBAC1B,GAAA,WAAA,CAAY,aAAa,CAAA;AAC3B,IAAA,MAAM,QAAQ,QAAS,EAAA;AAEvB,IAAM,MAAA;AAAA,MACJ,WAAA;AAAA,MACA,UAAA;AAAA,MACA,UAAA;AAAA,MACA;AAAA,QACE,QAAS,EAAA;AACb,IAAa,YAAA,EAAA;AAEb,IAAM,MAAA,EAAE,gBAAiB,EAAA,GAAI,YAAa,EAAA;AAE1C,IAAA,SAAS,YAAe,GAAA;AAEtB,MAAM,MAAA,EAAE,IAAK,EAAA,GAAI,iBAAkB,EAAA;AAEnC,MAAA,KAAA;AAAA,QACE,MAAM,KAAM,CAAA,IAAA;AAAA,QACZ,MAAM;AACJ,UAAA,IAAA,CAAK,KAAK,CAAA;AAAA,SACZ;AAAA,QACA;AAAA,UACE,SAAW,EAAA;AAAA;AACb,OACF;AAAA;AAGF,IAAA,SAAS,YAAe,GAAA;AACtB,MAAMA,MAAAA,iBAAAA,GAAmB,IAAI,EAAE,CAAA;AAC/B,MAAA,OAAA,CAAQ,oBAAoBA,iBAAgB,CAAA;AAE5C,MAAA,KAAA;AAAA,QACE,MAAM,KAAM,CAAA,SAAA;AAAA,QACZ,CAAO,GAAA,KAAA;AACL,UAAAA,iBAAAA,CAAiB,KAAQ,GAAA,GAAA,CAAI,OAAW,IAAA,EAAA;AAAA,SAC1C;AAAA,QACA,EAAE,IAAA,EAAM,IAAM,EAAA,SAAA,EAAW,IAAK;AAAA,OAChC;AACA,MAAO,OAAA;AAAA,QACL,gBAAAA,EAAAA;AAAA,OACF;AAAA;AAGF,IAAA,SAAS,QAAW,GAAA;AAClB,MAAA,MAAMC,YAAc,GAAA,GAAA,CAAA,CAAA;AAEpB,MAAA,MAAM,eAAkB,GAAA,GAAA;AAAA;AAAA;AAAA,EAAA,CAAA;AAKxB,MAAA,MAAM,IAAO,GAAA,QAAA;AAAA,QACX,MACE,CAAG,EAAA,MAAA,CAAO,KAAM,CAAA,SAAA,GAAY,OAAO,KAAM,CAAA,cAAA,GAAiB,MAAO,CAAA,KAAA,CAAM,SAAS,CAAA,EAAA;AAAA,OACpF;AAEA,MAAA,MAAMC,WAAa,GAAA,QAAA;AAAA,QACjB,MAAM,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAMK,EAAA,MAAA,CAAO,MAAM,SAAS,CAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,QAM3B,EAAA,UAAA,CAAW,MAAM,IAAS,KAAA,OAAA,GACxB,cAAc,cAAe,CAAA,KAAA,CAAM,OAAO,CAAA,CAAA,CAAA,GAC1C,EAAE;AAAA;AAAA,IAAA;AAAA,OAGZ;AAEA,MAAA,MAAMC,WAAa,GAAA,QAAA;AAAA,QACjB,MAAM,GAAA;AAAA,mBAAA,EACW,KAAK,KAAK,CAAA;AAAA,MAAA,EACvB,eAAe;AAAA,IAAA;AAAA,OAErB;AAEA,MAAA,MAAMC,kBAAoB,GAAA,QAAA;AAAA,QACxB,MAAM,GAAA;AAAA,mBACW,EAAA,MAAA,CAAO,MAAM,YAAY,CAAA;AAAA,IAAA;AAAA,OAE5C;AAEA,MAAO,OAAA;AAAA,QACL,WAAAH,EAAAA,YAAAA;AAAA,QACA,UAAAC,EAAAA,WAAAA;AAAA,QACA,UAAAC,EAAAA,WAAAA;AAAA,QACA,iBAAAC,EAAAA;AAAA,OACF;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Layout.vue2.mjs","sources":["../../../../src/components/layout/Layout.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed, provide, ref, watch } from \"vue\";\r\nimport { useRoute } from \"vue-router\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport DMenu from \"./components/menu/Menu\";\r\nimport SettingDrawer from \"./components/settings/SettingDrawer\";\r\nimport {\r\n useAppStore,\r\n useKeepAliveStore\r\n} from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\n\r\nimport HeaderLayout from \"./components/layout/HeaderLayout.vue\";\r\nimport RouterContent from \"./components/layout/RouterContent.vue\";\r\n\r\nconst props = defineProps({\n watermark: { type: Object, required: false, default: () => ({\r\n content: \"\"\r\n }) },\n isSettings: { type: Boolean, required: false, default: true }\n});\r\nconst emits = defineEmits([\"menuChange\"]);\r\n\r\nconst { layout, modeConfig, sideTokenStyle } =\r\n storeToRefs(useAppStore());\r\nconst route = useRoute();\r\nuseWatermark();\r\nconst { onMenuChange } = useMenu();\r\n\r\nconst {\r\n layoutStyle,\r\n siderStyle,\r\n rightStyle,\r\n rightContentStyle\r\n} = useStyle();\r\nuseKeepAlive();\r\n\r\nfunction useKeepAlive() {\r\n // 保存需要被缓存的标签\r\n const { save } = useKeepAliveStore();\r\n\r\n watch(\r\n () => route.path,\r\n () => {\r\n save(route);\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n}\r\n\r\nfunction useWatermark() {\r\n const watermarkContent = ref(\"\");\r\n provide(\"watermarkContent\", watermarkContent);\r\n // 监听 watermark 的变化\r\n watch(\r\n () => props.watermark,\r\n val => {\r\n watermarkContent.value = val.content || \"\";\r\n },\r\n { deep: true, immediate: true }\r\n );\r\n}\r\n\r\nfunction useStyle() {\r\n const layoutStyle = css`\r\n height: 100vh;\r\n `;\r\n\r\n const transitionStyle = css`\r\n transition: margin-left 0.4s\r\n cubic-bezier(0.22, 1.2, 0.36, 1);\r\n `;\r\n\r\n const left = computed(\r\n () =>\r\n `${layout.value.collapsed ? layout.value.collapsedWidth : layout.value.sideWidth}px`\r\n );\r\n\r\n const siderStyle = computed(\r\n () => css`\r\n position: fixed !important;\r\n top: 0;\r\n bottom: 0;\r\n left: 0;\r\n z-index: 1;\r\n width: ${layout.value.sideWidth}px;\r\n\r\n .app-side {\r\n height: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n ${modeConfig.value.mode === \"light\"\r\n ? `background:${sideTokenStyle.value.bgColor};`\r\n : \"\"}\r\n }\r\n `\r\n );\r\n\r\n const rightStyle = computed(\r\n () => css`\r\n margin-left: ${left.value};\r\n ${transitionStyle}\r\n `\r\n );\r\n\r\n const rightContentStyle = computed(\r\n () => css`\r\n padding-top: ${layout.value.headerHeight}px;\r\n `\r\n );\r\n\r\n return {\r\n layoutStyle,\r\n siderStyle,\r\n rightStyle,\r\n rightContentStyle\r\n };\r\n}\r\n\r\nfunction useMenu() {\r\n const onMenuChange = (item: never) => {\r\n emits(\"menuChange\", item);\r\n };\r\n\r\n return {\r\n onMenuChange\r\n };\r\n}\r\n</script>\r\n\r\n<template>\r\n <a-layout :class=\"layoutStyle\">\r\n <a-layout-sider\r\n v-model:collapsed=\"layout.collapsed\"\r\n theme=\"light\"\r\n collapsible\r\n :trigger=\"null\"\r\n :class=\"siderStyle\"\r\n >\r\n <div class=\"app-side\">\r\n <slot name=\"logo\"></slot>\r\n <d-menu @menu-change=\"onMenuChange\" />\r\n </div>\r\n </a-layout-sider>\r\n <a-layout :class=\"rightStyle\">\r\n <header-layout>\r\n <slot name=\"headerRight\"></slot>\r\n </header-layout>\r\n <a-layout-content :class=\"rightContentStyle\">\r\n <RouterContent />\r\n </a-layout-content>\r\n </a-layout>\r\n </a-layout>\r\n\r\n <SettingDrawer v-if=\"isSettings\" />\r\n <a-back-top></a-back-top>\r\n</template>\r\n\r\n<style scoped></style>\r\n"],"names":["layoutStyle","siderStyle","rightStyle","rightContentStyle","onMenuChange"],"mappings":"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"}