@oiij/naive-ui 0.0.75 → 0.0.77
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/components/config-providers/ConfigProviders.vue.d.ts +2 -2
- package/dist/components/config-providers/index.d.ts +16 -7
- package/dist/components/copy-button/CopyButton.js +3 -3
- package/dist/components/copy-button/CopyButton.vue.d.ts +4 -4
- package/dist/components/copy-button/index.d.ts +6 -3
- package/dist/components/data-table-plus/DataTablePlus.js +74 -125
- package/dist/components/data-table-plus/DataTablePlus.vue.d.ts +16 -81
- package/dist/components/data-table-plus/index.d.ts +52 -32
- package/dist/components/index.d.ts +2 -4
- package/dist/components/loading-provider/LoadingProvider.js +2 -2
- package/dist/components/loading-provider/LoadingProvider.vue.d.ts +2 -2
- package/dist/components/loading-provider/index.d.ts +19 -10
- package/dist/components/loading-provider/index.js +5 -2
- package/dist/components/preset-form/PresetForm.js +42 -21
- package/dist/components/preset-form/PresetForm.vue.d.ts +17 -17
- package/dist/components/preset-form/_utils.js +23 -8
- package/dist/components/preset-form/index.d.ts +32 -13
- package/dist/components/preset-input/PresetInput.vue.d.ts +3 -3
- package/dist/components/preset-input/index.d.ts +30 -20
- package/dist/components/preset-picker/PresetPicker.js +31 -34
- package/dist/components/preset-picker/PresetPicker.vue.d.ts +5 -10
- package/dist/components/preset-picker/index.d.ts +45 -31
- package/dist/components/preset-select/PresetSelect.js +23 -59
- package/dist/components/preset-select/PresetSelect.vue.d.ts +34 -38
- package/dist/components/preset-select/index.d.ts +56 -22
- package/dist/components/remote-request/RemoteRequest.js +7 -7
- package/dist/components/remote-request/RemoteRequest.vue.d.ts +7 -7
- package/dist/components/remote-request/index.d.ts +30 -8
- package/dist/components/search-input/SearchInput.js +1 -1
- package/dist/components/search-input/SearchInput.vue.d.ts +4 -4
- package/dist/components/search-input/index.d.ts +10 -7
- package/dist/components/toggle-input/ToggleInput.vue.d.ts +4 -4
- package/dist/components/tooltip-button/TooltipButton.vue.d.ts +4 -4
- package/dist/components/tooltip-button/index.d.ts +5 -2
- package/dist/components/transition/index.d.ts +4 -1
- package/dist/components.d.ts +2 -4
- package/dist/components.js +2 -3
- package/dist/composables/_helper.d.ts +7 -4
- package/dist/composables/_helper.js +47 -0
- package/dist/composables/index.d.ts +1 -1
- package/dist/composables/use-data-request.d.ts +27 -20
- package/dist/composables/use-data-request.js +23 -4
- package/dist/composables/use-loading.d.ts +6 -0
- package/dist/composables/use-loading.js +8 -2
- package/dist/composables/use-naive-form.d.ts +23 -15
- package/dist/composables/use-naive-form.js +49 -40
- package/dist/composables/use-naive-menu.d.ts +104 -0
- package/dist/composables/use-naive-menu.js +133 -0
- package/dist/composables/use-naive-theme.d.ts +27 -14
- package/dist/composables/use-naive-theme.js +22 -4
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/package.json +5 -7
- package/dist/components/_utils/prismjs.js +0 -16
- package/dist/components/icons/MageArrowUp.js +0 -29
- package/dist/components/type-writer/TypeWriter.js +0 -75
- package/dist/components/type-writer/TypeWriter.vue.d.ts +0 -22
- package/dist/components/type-writer/index.d.ts +0 -13
- package/dist/components/type-writer/type-writer.cssr.js +0 -27
- package/dist/composables/use-auto-menu.d.ts +0 -74
- package/dist/composables/use-auto-menu.js +0 -129
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { computed, toValue } from "vue";
|
|
2
|
+
|
|
3
|
+
//#region src/composables/use-naive-menu.ts
|
|
4
|
+
function getConfigValue(route, config, returnType, defaultValue) {
|
|
5
|
+
if (!config) return defaultValue;
|
|
6
|
+
if (typeof config === "function") return config(route);
|
|
7
|
+
if (returnType === "meta") return route.meta?.[config] ?? defaultValue;
|
|
8
|
+
return route?.[config] ?? defaultValue;
|
|
9
|
+
}
|
|
10
|
+
function createConfigMenuOption(route, options) {
|
|
11
|
+
const { labelField, keyField, iconField, renderIcon } = options ?? {};
|
|
12
|
+
const labelValue = getConfigValue(route, labelField, "meta");
|
|
13
|
+
const keyValue = getConfigValue(route, keyField, "route");
|
|
14
|
+
const iconValue = getConfigValue(route, iconField, "meta");
|
|
15
|
+
return {
|
|
16
|
+
label: labelValue ?? route.meta?.title ?? route.name ?? route.path,
|
|
17
|
+
key: keyValue ?? route.name?.toString() ?? route.path?.toString(),
|
|
18
|
+
icon: iconValue ? () => renderIcon?.(iconValue) : void 0,
|
|
19
|
+
meta: route.meta
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function shouldHide(route, hidden) {
|
|
23
|
+
if (!hidden) return false;
|
|
24
|
+
const result = getConfigValue(route, hidden, "meta");
|
|
25
|
+
return typeof result === "boolean" ? result : !!result;
|
|
26
|
+
}
|
|
27
|
+
function isRoot(route, root) {
|
|
28
|
+
if (!root) return false;
|
|
29
|
+
const result = getConfigValue(route, root, "meta");
|
|
30
|
+
return typeof result === "boolean" ? result : !!result;
|
|
31
|
+
}
|
|
32
|
+
function routes2menu(routes, options) {
|
|
33
|
+
const { hidden, root, createMenuOption } = options ?? {};
|
|
34
|
+
const menuOptions = [];
|
|
35
|
+
for (const route of routes ?? []) {
|
|
36
|
+
if (shouldHide(route, hidden)) continue;
|
|
37
|
+
const menu = typeof createMenuOption === "function" ? createMenuOption(route) : createConfigMenuOption(route, options);
|
|
38
|
+
if (route.children?.length) {
|
|
39
|
+
const rootChildren = route.children.filter((child) => isRoot(child, root));
|
|
40
|
+
const normalChildren = route.children.filter((child) => !isRoot(child, root));
|
|
41
|
+
if (normalChildren.length) menu.children = routes2menu(normalChildren, options);
|
|
42
|
+
if (rootChildren.length) {
|
|
43
|
+
const rootMenuOptions = rootChildren.filter((child) => !shouldHide(child, hidden)).map((child) => typeof createMenuOption === "function" ? createMenuOption(child) : createConfigMenuOption(child, options));
|
|
44
|
+
menuOptions.push(...rootMenuOptions);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
menuOptions.push(menu);
|
|
48
|
+
}
|
|
49
|
+
return menuOptions;
|
|
50
|
+
}
|
|
51
|
+
function flattenDeepMenuOptions(menuOptions) {
|
|
52
|
+
return menuOptions.reduce((flattened, menu) => {
|
|
53
|
+
flattened.push(menu);
|
|
54
|
+
if (menu.children?.length) flattened.push(...flattenDeepMenuOptions(menu.children));
|
|
55
|
+
return flattened;
|
|
56
|
+
}, []);
|
|
57
|
+
}
|
|
58
|
+
function deepUpRouteParentMeta(routes, parentField, parentFilePath, parent) {
|
|
59
|
+
return routes.map((route) => {
|
|
60
|
+
const emptyPathChild = route.children?.find((f) => f.path === parentFilePath);
|
|
61
|
+
if (emptyPathChild) {
|
|
62
|
+
if (typeof parent === "function") {
|
|
63
|
+
const parentMeta = parent(route);
|
|
64
|
+
route.meta = {
|
|
65
|
+
...route.meta,
|
|
66
|
+
...parentMeta
|
|
67
|
+
};
|
|
68
|
+
} else if (parentField) {
|
|
69
|
+
const parentMeta = emptyPathChild.meta?.[parentField];
|
|
70
|
+
route.meta = {
|
|
71
|
+
...route.meta,
|
|
72
|
+
...parentMeta
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (route.children?.length) route.children = deepUpRouteParentMeta(route.children, parentField, parentFilePath, parent);
|
|
77
|
+
return route;
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* 自动菜单组合函数
|
|
82
|
+
* 将路由配置转换为菜单配置,并提供扁平化的菜单选项
|
|
83
|
+
* @param routes 路由配置数组,可以是响应式或普通数组
|
|
84
|
+
* @param options 配置选项
|
|
85
|
+
* @returns 包含菜单选项和扁平化菜单选项的对象
|
|
86
|
+
* @example
|
|
87
|
+
* ```ts
|
|
88
|
+
* // 基本使用
|
|
89
|
+
* const { menuOptions, flattenedMenuOptions } = useNaiveMenu(routes)
|
|
90
|
+
*
|
|
91
|
+
* // 带配置选项(使用函数)
|
|
92
|
+
* const { menuOptions, flattenedMenuOptions } = useNaiveMenu(routes, {
|
|
93
|
+
* hidden: (route) => route.meta?.hidden,
|
|
94
|
+
* root: (route) => route.meta?.root,
|
|
95
|
+
* labelField: 'title',
|
|
96
|
+
* keyField: 'name',
|
|
97
|
+
* iconField: 'icon',
|
|
98
|
+
* renderIcon: (icon) => h('i', { class: icon })
|
|
99
|
+
* })
|
|
100
|
+
*
|
|
101
|
+
* // 带配置选项(使用字符串)
|
|
102
|
+
* const { menuOptions, flattenedMenuOptions } = useNaiveMenu(routes, {
|
|
103
|
+
* hidden: 'hidden',
|
|
104
|
+
* root: 'root',
|
|
105
|
+
* labelField: 'title',
|
|
106
|
+
* keyField: 'name',
|
|
107
|
+
* iconField: 'icon'
|
|
108
|
+
* })
|
|
109
|
+
* ```
|
|
110
|
+
*/
|
|
111
|
+
function useNaiveMenu(routes, options) {
|
|
112
|
+
const { hidden = "hidden", root = "root", labelField = "title", keyField = "name", iconField = "icon", renderIcon, createMenuOption, parentField = "parent", parentFilePath = "", parent } = options ?? {};
|
|
113
|
+
const menuOptions = computed(() => {
|
|
114
|
+
return routes2menu(deepUpRouteParentMeta(toValue(routes), parentField, parentFilePath, parent), {
|
|
115
|
+
hidden,
|
|
116
|
+
root,
|
|
117
|
+
labelField,
|
|
118
|
+
keyField,
|
|
119
|
+
iconField,
|
|
120
|
+
renderIcon,
|
|
121
|
+
createMenuOption
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
return {
|
|
125
|
+
menuOptions,
|
|
126
|
+
flattenedMenuOptions: computed(() => {
|
|
127
|
+
return flattenDeepMenuOptions(menuOptions.value);
|
|
128
|
+
})
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
//#endregion
|
|
133
|
+
export { useNaiveMenu };
|
|
@@ -4,13 +4,9 @@ import { GlobalThemeOverrides, NDateLocale, zhCN } from "naive-ui";
|
|
|
4
4
|
import * as naive_ui_es_themes_interface0 from "naive-ui/es/themes/interface";
|
|
5
5
|
|
|
6
6
|
//#region src/composables/use-naive-theme.d.ts
|
|
7
|
-
/**
|
|
8
|
-
* 语言包类型
|
|
9
|
-
* @template T 语言代码类型
|
|
10
|
-
*/
|
|
11
7
|
type Locales<T extends string = string> = Record<T, {
|
|
12
|
-
|
|
13
|
-
dateLocale: NDateLocale;
|
|
8
|
+
name: string;
|
|
9
|
+
dateLocale: NDateLocale;
|
|
14
10
|
locale: typeof zhCN;
|
|
15
11
|
}>;
|
|
16
12
|
/**
|
|
@@ -30,11 +26,28 @@ type UseNaiveThemeOptions<T extends string> = {
|
|
|
30
26
|
* @template T 语言代码类型
|
|
31
27
|
* @param options 配置选项
|
|
32
28
|
* @returns 主题管理对象
|
|
29
|
+
* @example
|
|
30
|
+
* ```ts
|
|
31
|
+
* const {
|
|
32
|
+
* language,
|
|
33
|
+
* darkMode,
|
|
34
|
+
* theme,
|
|
35
|
+
* themeColors,
|
|
36
|
+
* themeOverrides,
|
|
37
|
+
* locale,
|
|
38
|
+
* setColor
|
|
39
|
+
* } = useNaiveTheme({
|
|
40
|
+
* language: 'zh-CN',
|
|
41
|
+
* darkMode: false,
|
|
42
|
+
* colors: { primary: '#1890ff' },
|
|
43
|
+
* globalThemeOverrides: { common: { fontSize: '14px' } }
|
|
44
|
+
* })
|
|
45
|
+
* ```
|
|
33
46
|
*/
|
|
34
47
|
declare function useNaiveTheme<T extends string>(options?: UseNaiveThemeOptions<T>): {
|
|
35
|
-
|
|
36
|
-
darkMode: Ref<boolean | undefined, boolean | undefined>;
|
|
37
|
-
theme: ComputedRef<naive_ui_es_themes_interface0.BuiltInGlobalTheme | undefined>;
|
|
48
|
+
language: Ref<T | undefined, T | undefined>;
|
|
49
|
+
darkMode: Ref<boolean | undefined, boolean | undefined>;
|
|
50
|
+
theme: ComputedRef<naive_ui_es_themes_interface0.BuiltInGlobalTheme | undefined>;
|
|
38
51
|
colors: Ref<{
|
|
39
52
|
primary?: string | undefined;
|
|
40
53
|
info?: string | undefined;
|
|
@@ -47,17 +60,17 @@ declare function useNaiveTheme<T extends string>(options?: UseNaiveThemeOptions<
|
|
|
47
60
|
success?: string | undefined;
|
|
48
61
|
warning?: string | undefined;
|
|
49
62
|
error?: string | undefined;
|
|
50
|
-
}>;
|
|
63
|
+
}>;
|
|
51
64
|
themeColors: ComputedRef<{
|
|
52
65
|
primary?: string | undefined;
|
|
53
66
|
info?: string | undefined;
|
|
54
67
|
success?: string | undefined;
|
|
55
68
|
warning?: string | undefined;
|
|
56
69
|
error?: string | undefined;
|
|
57
|
-
}>;
|
|
58
|
-
themeOverrides: ComputedRef<GlobalThemeOverrides>;
|
|
59
|
-
locales: Locales<T>;
|
|
60
|
-
locale: ComputedRef<Locales<T>[T]>;
|
|
70
|
+
}>;
|
|
71
|
+
themeOverrides: ComputedRef<GlobalThemeOverrides>;
|
|
72
|
+
locales: Locales<T>;
|
|
73
|
+
locale: ComputedRef<Locales<T>[T]>;
|
|
61
74
|
setColor: (v: Partial<Colors>) => void;
|
|
62
75
|
};
|
|
63
76
|
/**
|
|
@@ -3,9 +3,6 @@ import { computed, ref, toValue, watchEffect } from "vue";
|
|
|
3
3
|
import { darkTheme, dateEnUS, dateZhCN, enUS, zhCN } from "naive-ui";
|
|
4
4
|
|
|
5
5
|
//#region src/composables/use-naive-theme.ts
|
|
6
|
-
/**
|
|
7
|
-
* 默认语言包映射
|
|
8
|
-
*/
|
|
9
6
|
const naiveLocaleMap = {
|
|
10
7
|
"zh-CN": {
|
|
11
8
|
name: "简体中文",
|
|
@@ -23,6 +20,23 @@ const naiveLocaleMap = {
|
|
|
23
20
|
* @template T 语言代码类型
|
|
24
21
|
* @param options 配置选项
|
|
25
22
|
* @returns 主题管理对象
|
|
23
|
+
* @example
|
|
24
|
+
* ```ts
|
|
25
|
+
* const {
|
|
26
|
+
* language,
|
|
27
|
+
* darkMode,
|
|
28
|
+
* theme,
|
|
29
|
+
* themeColors,
|
|
30
|
+
* themeOverrides,
|
|
31
|
+
* locale,
|
|
32
|
+
* setColor
|
|
33
|
+
* } = useNaiveTheme({
|
|
34
|
+
* language: 'zh-CN',
|
|
35
|
+
* darkMode: false,
|
|
36
|
+
* colors: { primary: '#1890ff' },
|
|
37
|
+
* globalThemeOverrides: { common: { fontSize: '14px' } }
|
|
38
|
+
* })
|
|
39
|
+
* ```
|
|
26
40
|
*/
|
|
27
41
|
function useNaiveTheme(options) {
|
|
28
42
|
const { language, darkMode, colors, globalThemeOverrides, locales, darkColors } = options ?? {};
|
|
@@ -51,7 +65,11 @@ function useNaiveTheme(options) {
|
|
|
51
65
|
});
|
|
52
66
|
/**
|
|
53
67
|
* 设置主题颜色
|
|
54
|
-
* @param v 颜色配置
|
|
68
|
+
* @param v - 颜色配置
|
|
69
|
+
* @example
|
|
70
|
+
* ```ts
|
|
71
|
+
* setColor({ primary: '#1890ff' })
|
|
72
|
+
* ```
|
|
55
73
|
*/
|
|
56
74
|
function setColor(v) {
|
|
57
75
|
colorsRef.value = {
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { UseAutoMenuReturn, useAutoMenu } from "./composables/use-auto-menu.js";
|
|
2
1
|
import { DataObject, DataRequestFields, UseDataRequestOptions, UseDataRequestPagination, UseDataRequestReturns, useDataRequest } from "./composables/use-data-request.js";
|
|
3
2
|
import { useLoading } from "./composables/use-loading.js";
|
|
4
3
|
import { UseNaiveFormClearRules, UseNaiveFormOptions, UseNaiveFormReturns, UseNaiveFormRules, useNaiveForm } from "./composables/use-naive-form.js";
|
|
4
|
+
import { UseNaiveMenuOptions, UseNaiveMenuReturn, useNaiveMenu } from "./composables/use-naive-menu.js";
|
|
5
5
|
import { UseNaiveThemeOptions, UseNaiveThemeReturns, useNaiveTheme } from "./composables/use-naive-theme.js";
|
|
6
6
|
import "./composables/index.js";
|
|
7
|
-
export { DataObject, DataRequestFields,
|
|
7
|
+
export { DataObject, DataRequestFields, UseDataRequestOptions, UseDataRequestPagination, UseDataRequestReturns, UseNaiveFormClearRules, UseNaiveFormOptions, UseNaiveFormReturns, UseNaiveFormRules, UseNaiveMenuOptions, UseNaiveMenuReturn, UseNaiveThemeOptions, UseNaiveThemeReturns, useDataRequest, useLoading, useNaiveForm, useNaiveMenu, useNaiveTheme };
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { useAutoMenu } from "./composables/use-auto-menu.js";
|
|
2
1
|
import { useDataRequest } from "./composables/use-data-request.js";
|
|
3
2
|
import { useLoading } from "./composables/use-loading.js";
|
|
4
3
|
import { useNaiveForm } from "./composables/use-naive-form.js";
|
|
4
|
+
import { useNaiveMenu } from "./composables/use-naive-menu.js";
|
|
5
5
|
import { useNaiveTheme } from "./composables/use-naive-theme.js";
|
|
6
6
|
|
|
7
|
-
export {
|
|
7
|
+
export { useDataRequest, useLoading, useNaiveForm, useNaiveMenu, useNaiveTheme };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oiij/naive-ui",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.77",
|
|
5
5
|
"description": "Some Composable Functions And Components for Vue 3",
|
|
6
6
|
"author": "oiij",
|
|
7
7
|
"license": "MIT",
|
|
@@ -46,9 +46,8 @@
|
|
|
46
46
|
"vue-component-type-helpers": "^3.2.4",
|
|
47
47
|
"vue-hooks-plus": "^2.4.1",
|
|
48
48
|
"vue-router": "^5.0.2",
|
|
49
|
-
"@oiij/
|
|
50
|
-
"@oiij/css-render": "0.0.
|
|
51
|
-
"@oiij/use": "0.0.44"
|
|
49
|
+
"@oiij/use": "0.0.46",
|
|
50
|
+
"@oiij/css-render": "0.0.11"
|
|
52
51
|
},
|
|
53
52
|
"devDependencies": {
|
|
54
53
|
"@types/prismjs": "^1.26.5",
|
|
@@ -62,9 +61,8 @@
|
|
|
62
61
|
"vue-component-type-helpers": "^3.2.4",
|
|
63
62
|
"vue-hooks-plus": "^2.4.1",
|
|
64
63
|
"vue-router": "^5.0.2",
|
|
65
|
-
"@oiij/
|
|
66
|
-
"@oiij/
|
|
67
|
-
"@oiij/use": "0.0.44"
|
|
64
|
+
"@oiij/css-render": "0.0.11",
|
|
65
|
+
"@oiij/use": "0.0.46"
|
|
68
66
|
},
|
|
69
67
|
"publishConfig": {
|
|
70
68
|
"access": "public"
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import Prism from "prismjs";
|
|
2
|
-
|
|
3
|
-
//#region src/components/_utils/prismjs.ts
|
|
4
|
-
if (typeof document !== "undefined") Prism.highlightAll();
|
|
5
|
-
function highlight(code, lang) {
|
|
6
|
-
try {
|
|
7
|
-
const grammar = Prism.languages[lang];
|
|
8
|
-
if (grammar) return `<pre class="language-${lang}"><code class="language-${lang}">${Prism.highlight(code, grammar || Prism.languages.text, lang)}</code></pre>`;
|
|
9
|
-
return code;
|
|
10
|
-
} catch {
|
|
11
|
-
return code;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
//#endregion
|
|
16
|
-
export { highlight };
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import export_helper_default from "../../_virtual/_/plugin-vue/export-helper.js";
|
|
2
|
-
import { createCommentVNode, createElementBlock, createElementVNode, openBlock } from "vue";
|
|
3
|
-
|
|
4
|
-
//#region src/components/icons/MageArrowUp.vue
|
|
5
|
-
const _sfc_main = { name: "MageArrowUp" };
|
|
6
|
-
const _hoisted_1 = {
|
|
7
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
8
|
-
width: "1em",
|
|
9
|
-
height: "1em",
|
|
10
|
-
viewBox: "0 0 24 24"
|
|
11
|
-
};
|
|
12
|
-
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
13
|
-
return openBlock(), createElementBlock("svg", _hoisted_1, [createCommentVNode(" Icon from Mage Icons by MageIcons - https://github.com/Mage-Icons/mage-icons/blob/main/License.txt "), _cache[0] || (_cache[0] = createElementVNode("g", {
|
|
14
|
-
fill: "none",
|
|
15
|
-
stroke: "#757575",
|
|
16
|
-
"stroke-linecap": "round",
|
|
17
|
-
"stroke-width": "1.5"
|
|
18
|
-
}, [createElementVNode("path", {
|
|
19
|
-
"stroke-miterlimit": "10",
|
|
20
|
-
d: "M12 4v16"
|
|
21
|
-
}), createElementVNode("path", {
|
|
22
|
-
"stroke-linejoin": "round",
|
|
23
|
-
d: "M19.66 11.033L13.089 4.46a1.53 1.53 0 0 0-2.176 0L4.34 11.033"
|
|
24
|
-
})], -1))]);
|
|
25
|
-
}
|
|
26
|
-
var MageArrowUp_default = /* @__PURE__ */ export_helper_default(_sfc_main, [["render", _sfc_render]]);
|
|
27
|
-
|
|
28
|
-
//#endregion
|
|
29
|
-
export { MageArrowUp_default as default };
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { highlight } from "../_utils/prismjs.js";
|
|
2
|
-
import { cName, typeWriterCssr } from "./type-writer.cssr.js";
|
|
3
|
-
import { computed, createBlock, createElementVNode, defineComponent, normalizeClass, normalizeStyle, openBlock, unref, withCtx } from "vue";
|
|
4
|
-
import { useStyle } from "@oiij/css-render";
|
|
5
|
-
import { NEl } from "naive-ui";
|
|
6
|
-
import { useMarkdownIt } from "@oiij/markdown-it";
|
|
7
|
-
import { useTypeWriter } from "@oiij/use";
|
|
8
|
-
|
|
9
|
-
//#region src/components/type-writer/TypeWriter.vue
|
|
10
|
-
const _hoisted_1 = ["innerHTML"];
|
|
11
|
-
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
12
|
-
__name: "TypeWriter",
|
|
13
|
-
props: {
|
|
14
|
-
value: {},
|
|
15
|
-
typing: {
|
|
16
|
-
type: Boolean,
|
|
17
|
-
default: true
|
|
18
|
-
},
|
|
19
|
-
markdown: { type: Boolean },
|
|
20
|
-
step: {},
|
|
21
|
-
interval: {},
|
|
22
|
-
suffix: { default: "|" }
|
|
23
|
-
},
|
|
24
|
-
emits: [
|
|
25
|
-
"start",
|
|
26
|
-
"update",
|
|
27
|
-
"stop"
|
|
28
|
-
],
|
|
29
|
-
setup(__props, { emit: __emit }) {
|
|
30
|
-
const emit = __emit;
|
|
31
|
-
useStyle(cName, typeWriterCssr());
|
|
32
|
-
const { typedValue, isTyping, onStat, onUpdate, onStop } = useTypeWriter(computed(() => __props.value ?? ""), {
|
|
33
|
-
step: __props.step,
|
|
34
|
-
interval: __props.interval,
|
|
35
|
-
enabled: __props.typing
|
|
36
|
-
});
|
|
37
|
-
onStat(() => {
|
|
38
|
-
emit("start");
|
|
39
|
-
});
|
|
40
|
-
onUpdate((v) => {
|
|
41
|
-
emit("update", v);
|
|
42
|
-
});
|
|
43
|
-
onStop((v) => {
|
|
44
|
-
emit("stop", v);
|
|
45
|
-
});
|
|
46
|
-
const { html } = useMarkdownIt(void 0, {
|
|
47
|
-
value: typedValue,
|
|
48
|
-
markdownItOptions: {
|
|
49
|
-
html: true,
|
|
50
|
-
linkify: true,
|
|
51
|
-
typographer: true,
|
|
52
|
-
breaks: true,
|
|
53
|
-
highlight
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
const renderValue = computed(() => __props.markdown ? html.value : typedValue.value);
|
|
57
|
-
return (_ctx, _cache) => {
|
|
58
|
-
return openBlock(), createBlock(unref(NEl), {
|
|
59
|
-
tag: "div",
|
|
60
|
-
class: normalizeClass([unref(cName)])
|
|
61
|
-
}, {
|
|
62
|
-
default: withCtx(() => [createElementVNode("div", {
|
|
63
|
-
class: normalizeClass([unref(isTyping) && !__props.markdown ? `${unref(cName)}__cursor` : void 0, __props.markdown ? `${unref(cName)}__markdown` : void 0]),
|
|
64
|
-
style: normalizeStyle([!__props.markdown ? { "--cursor-content": `'${__props.suffix}'` } : void 0]),
|
|
65
|
-
innerHTML: renderValue.value
|
|
66
|
-
}, null, 14, _hoisted_1)]),
|
|
67
|
-
_: 1
|
|
68
|
-
}, 8, ["class"]);
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
});
|
|
72
|
-
var TypeWriter_default = _sfc_main;
|
|
73
|
-
|
|
74
|
-
//#endregion
|
|
75
|
-
export { TypeWriter_default as default };
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { TypeWriterProps } from "./index.js";
|
|
2
|
-
import * as vue75 from "vue";
|
|
3
|
-
|
|
4
|
-
//#region src/components/type-writer/TypeWriter.vue.d.ts
|
|
5
|
-
declare const __VLS_export: vue75.DefineComponent<TypeWriterProps, {}, {}, {}, {}, vue75.ComponentOptionsMixin, vue75.ComponentOptionsMixin, {} & {
|
|
6
|
-
start: () => any;
|
|
7
|
-
update: (v: {
|
|
8
|
-
index: number;
|
|
9
|
-
value: string;
|
|
10
|
-
}) => any;
|
|
11
|
-
stop: (v: string) => any;
|
|
12
|
-
}, string, vue75.PublicProps, Readonly<TypeWriterProps> & Readonly<{
|
|
13
|
-
onStart?: (() => any) | undefined;
|
|
14
|
-
onUpdate?: ((v: {
|
|
15
|
-
index: number;
|
|
16
|
-
value: string;
|
|
17
|
-
}) => any) | undefined;
|
|
18
|
-
onStop?: ((v: string) => any) | undefined;
|
|
19
|
-
}>, {}, {}, {}, {}, string, vue75.ComponentProvideOptions, false, {}, any>;
|
|
20
|
-
declare const _default: typeof __VLS_export;
|
|
21
|
-
//#endregion
|
|
22
|
-
export { _default };
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { _default } from "./TypeWriter.vue.js";
|
|
2
|
-
|
|
3
|
-
//#region src/components/type-writer/index.d.ts
|
|
4
|
-
type TypeWriterProps = {
|
|
5
|
-
value?: string;
|
|
6
|
-
typing?: boolean;
|
|
7
|
-
markdown?: boolean;
|
|
8
|
-
step?: number;
|
|
9
|
-
interval?: number;
|
|
10
|
-
suffix?: string;
|
|
11
|
-
};
|
|
12
|
-
//#endregion
|
|
13
|
-
export { TypeWriterProps };
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { cssr, namespace, plugin } from "../_utils/cssr-bem.js";
|
|
2
|
-
|
|
3
|
-
//#region src/components/type-writer/type-writer.cssr.ts
|
|
4
|
-
const prismjsDark = `
|
|
5
|
-
code[class*=language-],pre[class*=language-]{background:#282c34;color:#abb2bf;text-shadow:0 1px rgba(0,0,0,.3);font-family:"Fira Code","Fira Mono",Menlo,Consolas,"DejaVu Sans Mono",monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;line-height:1.5;-moz-tab-size:2;-o-tab-size:2;tab-size:2;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-]::-moz-selection,code[class*=language-] ::-moz-selection,pre[class*=language-] ::-moz-selection{background:#3e4451;color:inherit;text-shadow:none}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-] ::selection{background:#3e4451;color:inherit;text-shadow:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;border-radius:.3em}:not(pre)>code[class*=language-]{padding:.2em .3em;border-radius:.3em;white-space:normal}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}.token.comment,.token.prolog,.token.cdata{color:#5c6370}.token.doctype,.token.punctuation,.token.entity{color:#abb2bf}.token.attr-name,.token.class-name,.token.boolean,.token.constant,.token.number,.token.atrule{color:#d19a66}.token.keyword{color:#c678dd}.token.property,.token.tag,.token.symbol,.token.deleted,.token.important{color:#e06c75}.token.selector,.token.string,.token.char,.token.builtin,.token.inserted,.token.regex,.token.attr-value,.token.attr-value>.token.punctuation{color:#98c379}.token.variable,.token.operator,.token.function{color:#61afef}.token.url{color:#56b6c2}.token.attr-value>.token.punctuation.attr-equals,.token.special-attr>.token.attr-value>.token.value.css{color:#abb2bf}.language-css .token.selector{color:#e06c75}.language-css .token.property{color:#abb2bf}.language-css .token.function,.language-css .token.url>.token.function{color:#56b6c2}.language-css .token.url>.token.string.url{color:#98c379}.language-css .token.important,.language-css .token.atrule .token.rule{color:#c678dd}.language-javascript .token.operator{color:#c678dd}.language-javascript .token.template-string>.token.interpolation>.token.interpolation-punctuation.punctuation{color:#be5046}.language-json .token.operator{color:#abb2bf}.language-json .token.null.keyword{color:#d19a66}.language-markdown .token.url,.language-markdown .token.url>.token.operator,.language-markdown .token.url-reference.url>.token.string{color:#abb2bf}.language-markdown .token.url>.token.content{color:#61afef}.language-markdown .token.url>.token.url,.language-markdown .token.url-reference.url{color:#56b6c2}.language-markdown .token.blockquote.punctuation,.language-markdown .token.hr.punctuation{color:#5c6370;font-style:italic}.language-markdown .token.code-snippet{color:#98c379}.language-markdown .token.bold .token.content{color:#d19a66}.language-markdown .token.italic .token.content{color:#c678dd}.language-markdown .token.strike .token.content,.language-markdown .token.strike .token.punctuation,.language-markdown .token.list.punctuation,.language-markdown .token.title.important>.token.punctuation{color:#e06c75}.token.bold{font-weight:700}.token.comment,.token.italic{font-style:italic}.token.entity{cursor:help}.token.namespace{opacity:.8}.token.token.tab:not(:empty):before,.token.token.cr:before,.token.token.lf:before,.token.token.space:before{color:rgba(171,178,191,.15);text-shadow:none}div.code-toolbar>.toolbar.toolbar>.toolbar-item{margin-right:.4em}div.code-toolbar>.toolbar.toolbar>.toolbar-item>button,div.code-toolbar>.toolbar.toolbar>.toolbar-item>a,div.code-toolbar>.toolbar.toolbar>.toolbar-item>span{background:#3a3f4b;color:#828997;padding:.1em .4em;border-radius:.3em}div.code-toolbar>.toolbar.toolbar>.toolbar-item>button:hover,div.code-toolbar>.toolbar.toolbar>.toolbar-item>button:focus,div.code-toolbar>.toolbar.toolbar>.toolbar-item>a:hover,div.code-toolbar>.toolbar.toolbar>.toolbar-item>a:focus,div.code-toolbar>.toolbar.toolbar>.toolbar-item>span:hover,div.code-toolbar>.toolbar.toolbar>.toolbar-item>span:focus{background:#3e4451;color:#abb2bf}.line-highlight.line-highlight{background:rgba(153,187,255,.04)}.line-highlight.line-highlight:before,.line-highlight.line-highlight[data-end]:after{background:#3a3f4b;color:#abb2bf;padding:.1em .6em;border-radius:.3em;box-shadow:0 2px 0 0 rgba(0,0,0,.2)}pre[id].linkable-line-numbers.linkable-line-numbers span.line-numbers-rows>span:hover:before{background-color:rgba(153,187,255,.04)}.line-numbers.line-numbers .line-numbers-rows,.command-line .command-line-prompt{border-right-color:rgba(171,178,191,.15)}.line-numbers .line-numbers-rows>span:before,.command-line .command-line-prompt>span:before{color:#636d83}.rainbow-braces .token.token.punctuation.brace-level-1,.rainbow-braces .token.token.punctuation.brace-level-5,.rainbow-braces .token.token.punctuation.brace-level-9{color:#e06c75}.rainbow-braces .token.token.punctuation.brace-level-2,.rainbow-braces .token.token.punctuation.brace-level-6,.rainbow-braces .token.token.punctuation.brace-level-10{color:#98c379}.rainbow-braces .token.token.punctuation.brace-level-3,.rainbow-braces .token.token.punctuation.brace-level-7,.rainbow-braces .token.token.punctuation.brace-level-11{color:#61afef}.rainbow-braces .token.token.punctuation.brace-level-4,.rainbow-braces .token.token.punctuation.brace-level-8,.rainbow-braces .token.token.punctuation.brace-level-12{color:#c678dd}pre.diff-highlight>code .token.token.deleted:not(.prefix),pre>code.diff-highlight .token.token.deleted:not(.prefix){background-color:rgba(255,82,102,.15)}pre.diff-highlight>code .token.token.deleted:not(.prefix)::-moz-selection,pre.diff-highlight>code .token.token.deleted:not(.prefix) ::-moz-selection,pre>code.diff-highlight .token.token.deleted:not(.prefix)::-moz-selection,pre>code.diff-highlight .token.token.deleted:not(.prefix) ::-moz-selection{background-color:rgba(251,86,105,.25)}pre.diff-highlight>code .token.token.deleted:not(.prefix)::selection,pre.diff-highlight>code .token.token.deleted:not(.prefix) ::selection,pre>code.diff-highlight .token.token.deleted:not(.prefix)::selection,pre>code.diff-highlight .token.token.deleted:not(.prefix) ::selection{background-color:rgba(251,86,105,.25)}pre.diff-highlight>code .token.token.inserted:not(.prefix),pre>code.diff-highlight .token.token.inserted:not(.prefix){background-color:rgba(26,255,91,.15)}pre.diff-highlight>code .token.token.inserted:not(.prefix)::-moz-selection,pre.diff-highlight>code .token.token.inserted:not(.prefix) ::-moz-selection,pre>code.diff-highlight .token.token.inserted:not(.prefix)::-moz-selection,pre>code.diff-highlight .token.token.inserted:not(.prefix) ::-moz-selection{background-color:rgba(56,224,98,.25)}pre.diff-highlight>code .token.token.inserted:not(.prefix)::selection,pre.diff-highlight>code .token.token.inserted:not(.prefix) ::selection,pre>code.diff-highlight .token.token.inserted:not(.prefix)::selection,pre>code.diff-highlight .token.token.inserted:not(.prefix) ::selection{background-color:rgba(56,224,98,.25)}.prism-previewer.prism-previewer:before,.prism-previewer-gradient.prism-previewer-gradient div{border-color:#262931}.prism-previewer-color.prism-previewer-color:before,.prism-previewer-gradient.prism-previewer-gradient div,.prism-previewer-easing.prism-previewer-easing:before{border-radius:.3em}.prism-previewer.prism-previewer:after{border-top-color:#262931}.prism-previewer-flipped.prism-previewer-flipped.after{border-bottom-color:#262931}.prism-previewer-angle.prism-previewer-angle:before,.prism-previewer-time.prism-previewer-time:before,.prism-previewer-easing.prism-previewer-easing{background:#31363f}.prism-previewer-angle.prism-previewer-angle circle,.prism-previewer-time.prism-previewer-time circle{stroke:#abb2bf;stroke-opacity:1}.prism-previewer-easing.prism-previewer-easing circle,.prism-previewer-easing.prism-previewer-easing path,.prism-previewer-easing.prism-previewer-easing line{stroke:#abb2bf}.prism-previewer-easing.prism-previewer-easing circle{fill:transparent}
|
|
6
|
-
`;
|
|
7
|
-
const prismjsLight = `
|
|
8
|
-
code[class*=language-],pre[class*=language-]{background:#fafafa;color:#383a42;font-family:"Fira Code","Fira Mono",Menlo,Consolas,"DejaVu Sans Mono",monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;line-height:1.5;-moz-tab-size:2;-o-tab-size:2;tab-size:2;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-]::-moz-selection,code[class*=language-] ::-moz-selection,pre[class*=language-] ::-moz-selection{background:#e5e5e6;color:inherit}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-] ::selection{background:#e5e5e6;color:inherit}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;border-radius:.3em}:not(pre)>code[class*=language-]{padding:.2em .3em;border-radius:.3em;white-space:normal}.token.comment,.token.prolog,.token.cdata{color:#a0a1a7}.token.doctype,.token.punctuation,.token.entity{color:#383a42}.token.attr-name,.token.class-name,.token.boolean,.token.constant,.token.number,.token.atrule{color:#b76b01}.token.keyword{color:#a626a4}.token.property,.token.tag,.token.symbol,.token.deleted,.token.important{color:#e45649}.token.selector,.token.string,.token.char,.token.builtin,.token.inserted,.token.regex,.token.attr-value,.token.attr-value>.token.punctuation{color:#50a14f}.token.variable,.token.operator,.token.function{color:#4078f2}.token.url{color:#0184bc}.token.attr-value>.token.punctuation.attr-equals,.token.special-attr>.token.attr-value>.token.value.css{color:#383a42}.language-css .token.selector{color:#e45649}.language-css .token.property{color:#383a42}.language-css .token.function,.language-css .token.url>.token.function{color:#0184bc}.language-css .token.url>.token.string.url{color:#50a14f}.language-css .token.important,.language-css .token.atrule .token.rule{color:#a626a4}.language-javascript .token.operator{color:#a626a4}.language-javascript .token.template-string>.token.interpolation>.token.interpolation-punctuation.punctuation{color:#ca1243}.language-json .token.operator{color:#383a42}.language-json .token.null.keyword{color:#b76b01}.language-markdown .token.url,.language-markdown .token.url>.token.operator,.language-markdown .token.url-reference.url>.token.string{color:#383a42}.language-markdown .token.url>.token.content{color:#4078f2}.language-markdown .token.url>.token.url,.language-markdown .token.url-reference.url{color:#0184bc}.language-markdown .token.blockquote.punctuation,.language-markdown .token.hr.punctuation{color:#a0a1a7;font-style:italic}.language-markdown .token.code-snippet{color:#50a14f}.language-markdown .token.bold .token.content{color:#b76b01}.language-markdown .token.italic .token.content{color:#a626a4}.language-markdown .token.strike .token.content,.language-markdown .token.strike .token.punctuation,.language-markdown .token.list.punctuation,.language-markdown .token.title.important>.token.punctuation{color:#e45649}.token.bold{font-weight:700}.token.comment,.token.italic{font-style:italic}.token.entity{cursor:help}.token.namespace{opacity:.8}.token.token.tab:not(:empty):before,.token.token.cr:before,.token.token.lf:before,.token.token.space:before{color:rgba(56,58,66,.2)}div.code-toolbar>.toolbar.toolbar>.toolbar-item{margin-right:.4em}div.code-toolbar>.toolbar.toolbar>.toolbar-item>button,div.code-toolbar>.toolbar.toolbar>.toolbar-item>a,div.code-toolbar>.toolbar.toolbar>.toolbar-item>span{background:#e5e5e6;color:#696c77;padding:.1em .4em;border-radius:.3em}div.code-toolbar>.toolbar.toolbar>.toolbar-item>button:hover,div.code-toolbar>.toolbar.toolbar>.toolbar-item>button:focus,div.code-toolbar>.toolbar.toolbar>.toolbar-item>a:hover,div.code-toolbar>.toolbar.toolbar>.toolbar-item>a:focus,div.code-toolbar>.toolbar.toolbar>.toolbar-item>span:hover,div.code-toolbar>.toolbar.toolbar>.toolbar-item>span:focus{background:#c6c7c7;color:#383a42}.line-highlight.line-highlight{background:rgba(56,58,66,.05)}.line-highlight.line-highlight:before,.line-highlight.line-highlight[data-end]:after{background:#e5e5e6;color:#383a42;padding:.1em .6em;border-radius:.3em;box-shadow:0 2px 0 0 rgba(0,0,0,.2)}pre[id].linkable-line-numbers.linkable-line-numbers span.line-numbers-rows>span:hover:before{background-color:rgba(56,58,66,.05)}.line-numbers.line-numbers .line-numbers-rows,.command-line .command-line-prompt{border-right-color:rgba(56,58,66,.2)}.line-numbers .line-numbers-rows>span:before,.command-line .command-line-prompt>span:before{color:#9d9d9f}.rainbow-braces .token.token.punctuation.brace-level-1,.rainbow-braces .token.token.punctuation.brace-level-5,.rainbow-braces .token.token.punctuation.brace-level-9{color:#e45649}.rainbow-braces .token.token.punctuation.brace-level-2,.rainbow-braces .token.token.punctuation.brace-level-6,.rainbow-braces .token.token.punctuation.brace-level-10{color:#50a14f}.rainbow-braces .token.token.punctuation.brace-level-3,.rainbow-braces .token.token.punctuation.brace-level-7,.rainbow-braces .token.token.punctuation.brace-level-11{color:#4078f2}.rainbow-braces .token.token.punctuation.brace-level-4,.rainbow-braces .token.token.punctuation.brace-level-8,.rainbow-braces .token.token.punctuation.brace-level-12{color:#a626a4}pre.diff-highlight>code .token.token.deleted:not(.prefix),pre>code.diff-highlight .token.token.deleted:not(.prefix){background-color:rgba(255,82,102,.15)}pre.diff-highlight>code .token.token.deleted:not(.prefix)::-moz-selection,pre.diff-highlight>code .token.token.deleted:not(.prefix) ::-moz-selection,pre>code.diff-highlight .token.token.deleted:not(.prefix)::-moz-selection,pre>code.diff-highlight .token.token.deleted:not(.prefix) ::-moz-selection{background-color:rgba(251,86,105,.25)}pre.diff-highlight>code .token.token.deleted:not(.prefix)::selection,pre.diff-highlight>code .token.token.deleted:not(.prefix) ::selection,pre>code.diff-highlight .token.token.deleted:not(.prefix)::selection,pre>code.diff-highlight .token.token.deleted:not(.prefix) ::selection{background-color:rgba(251,86,105,.25)}pre.diff-highlight>code .token.token.inserted:not(.prefix),pre>code.diff-highlight .token.token.inserted:not(.prefix){background-color:rgba(26,255,91,.15)}pre.diff-highlight>code .token.token.inserted:not(.prefix)::-moz-selection,pre.diff-highlight>code .token.token.inserted:not(.prefix) ::-moz-selection,pre>code.diff-highlight .token.token.inserted:not(.prefix)::-moz-selection,pre>code.diff-highlight .token.token.inserted:not(.prefix) ::-moz-selection{background-color:rgba(56,224,98,.25)}pre.diff-highlight>code .token.token.inserted:not(.prefix)::selection,pre.diff-highlight>code .token.token.inserted:not(.prefix) ::selection,pre>code.diff-highlight .token.token.inserted:not(.prefix)::selection,pre>code.diff-highlight .token.token.inserted:not(.prefix) ::selection{background-color:rgba(56,224,98,.25)}.prism-previewer.prism-previewer:before,.prism-previewer-gradient.prism-previewer-gradient div{border-color:hsl(0,0,95%)}.prism-previewer-color.prism-previewer-color:before,.prism-previewer-gradient.prism-previewer-gradient div,.prism-previewer-easing.prism-previewer-easing:before{border-radius:.3em}.prism-previewer.prism-previewer:after{border-top-color:hsl(0,0,95%)}.prism-previewer-flipped.prism-previewer-flipped.after{border-bottom-color:hsl(0,0,95%)}.prism-previewer-angle.prism-previewer-angle:before,.prism-previewer-time.prism-previewer-time:before,.prism-previewer-easing.prism-previewer-easing{background:#fff}.prism-previewer-angle.prism-previewer-angle circle,.prism-previewer-time.prism-previewer-time circle{stroke:#383a42;stroke-opacity:1}.prism-previewer-easing.prism-previewer-easing circle,.prism-previewer-easing.prism-previewer-easing path,.prism-previewer-easing.prism-previewer-easing line{stroke:#383a42}.prism-previewer-easing.prism-previewer-easing circle{fill:transparent}
|
|
9
|
-
`;
|
|
10
|
-
const { c, cB, cE } = {
|
|
11
|
-
...cssr,
|
|
12
|
-
...plugin
|
|
13
|
-
};
|
|
14
|
-
const cName = `${namespace}-type-writer`;
|
|
15
|
-
function typeWriterCssr() {
|
|
16
|
-
return c([cB("type-writer", { overflowX: "auto" }, [cE("cursor::after", {
|
|
17
|
-
content: `var(--cursor-content)`,
|
|
18
|
-
marginLeft: `2px`,
|
|
19
|
-
display: `inline-block`
|
|
20
|
-
}), cE("markdown", `${prismjsLight}`, [c("pre", {
|
|
21
|
-
backgroundColor: `var(--tag-color)`,
|
|
22
|
-
borderRadius: `var(--border-radius)`
|
|
23
|
-
})])]), c(".dark", [cB("type-writer", [cE("markdown", `${prismjsDark}`)])])]);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
//#endregion
|
|
27
|
-
export { cName, typeWriterCssr };
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import * as vue0 from "vue";
|
|
2
|
-
import { MaybeRefOrGetter, VNode } from "vue";
|
|
3
|
-
import { MenuOption } from "naive-ui";
|
|
4
|
-
import { RouteRecordRaw } from "vue-router";
|
|
5
|
-
|
|
6
|
-
//#region src/composables/use-auto-menu.d.ts
|
|
7
|
-
/**
|
|
8
|
-
* 配置选项接口
|
|
9
|
-
*/
|
|
10
|
-
type Options = {
|
|
11
|
-
/**
|
|
12
|
-
* 隐藏条件,可以是函数或字符串
|
|
13
|
-
* - 如果是函数,返回 true 时路由将不显示在菜单中
|
|
14
|
-
* - 如果是字符串,则从 route.meta 中获取对应属性的值
|
|
15
|
-
*/
|
|
16
|
-
hide?: ((route: RouteRecordRaw) => boolean | string) | string;
|
|
17
|
-
/**
|
|
18
|
-
* 根路由判断,可以是函数或字符串
|
|
19
|
-
* - 如果是函数,返回 true 时路由将作为顶级菜单
|
|
20
|
-
* - 如果是字符串,则从 route.meta 中获取对应属性的值
|
|
21
|
-
*/
|
|
22
|
-
root?: ((route: RouteRecordRaw) => boolean | string) | string;
|
|
23
|
-
/**
|
|
24
|
-
* 标签生成,可以是函数或字符串
|
|
25
|
-
* - 如果是函数,使用函数返回值作为菜单项的显示文本
|
|
26
|
-
* - 如果是字符串,则从 route.meta 中获取对应属性的值
|
|
27
|
-
*/
|
|
28
|
-
label?: ((route: RouteRecordRaw) => string) | string;
|
|
29
|
-
/**
|
|
30
|
-
* 键生成,可以是函数或字符串
|
|
31
|
-
* - 如果是函数,使用函数返回值作为菜单项的唯一标识
|
|
32
|
-
* - 如果是字符串,则从 route.meta 中获取对应属性的值
|
|
33
|
-
*/
|
|
34
|
-
key?: ((route: RouteRecordRaw) => string) | string;
|
|
35
|
-
/**
|
|
36
|
-
* 图标渲染函数,用于自定义路由图标
|
|
37
|
-
*/
|
|
38
|
-
icon?: (route: RouteRecordRaw) => VNode | string | undefined | null;
|
|
39
|
-
};
|
|
40
|
-
/**
|
|
41
|
-
* 自动菜单组合函数
|
|
42
|
-
* @param routes 路由配置数组
|
|
43
|
-
* @param options 配置选项
|
|
44
|
-
* @returns 包含菜单选项和扁平化菜单选项的对象
|
|
45
|
-
*
|
|
46
|
-
* @example
|
|
47
|
-
* // 基本使用
|
|
48
|
-
* const { menuOptions, flattenedMenuOptions } = useAutoMenu(routes)
|
|
49
|
-
*
|
|
50
|
-
* // 带配置选项(使用函数)
|
|
51
|
-
* const { menuOptions, flattenedMenuOptions } = useAutoMenu(routes, {
|
|
52
|
-
* hide: (route) => route.meta?.hidden,
|
|
53
|
-
* root: (route) => route.meta?.root,
|
|
54
|
-
* label: (route) => route.meta?.title ?? route.name,
|
|
55
|
-
* key: (route) => route.path,
|
|
56
|
-
* icon: (route) => route.meta?.icon
|
|
57
|
-
* })
|
|
58
|
-
*
|
|
59
|
-
* // 带配置选项(使用字符串)
|
|
60
|
-
* const { menuOptions, flattenedMenuOptions } = useAutoMenu(routes, {
|
|
61
|
-
* hide: 'hidden',
|
|
62
|
-
* root: 'root',
|
|
63
|
-
* label: 'title',
|
|
64
|
-
* key: 'path',
|
|
65
|
-
* icon: (route) => route.meta?.icon
|
|
66
|
-
* })
|
|
67
|
-
*/
|
|
68
|
-
declare function useAutoMenu(routes: MaybeRefOrGetter<RouteRecordRaw[]>, options?: Options): {
|
|
69
|
-
menuOptions: vue0.ComputedRef<MenuOption[]>;
|
|
70
|
-
flattenedMenuOptions: vue0.ComputedRef<MenuOption[]>;
|
|
71
|
-
};
|
|
72
|
-
type UseAutoMenuReturn = ReturnType<typeof useAutoMenu>;
|
|
73
|
-
//#endregion
|
|
74
|
-
export { UseAutoMenuReturn, useAutoMenu };
|