@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.
Files changed (62) hide show
  1. package/README.md +3 -3
  2. package/dist/components/config-providers/ConfigProviders.vue.d.ts +2 -2
  3. package/dist/components/config-providers/index.d.ts +16 -7
  4. package/dist/components/copy-button/CopyButton.js +3 -3
  5. package/dist/components/copy-button/CopyButton.vue.d.ts +4 -4
  6. package/dist/components/copy-button/index.d.ts +6 -3
  7. package/dist/components/data-table-plus/DataTablePlus.js +74 -125
  8. package/dist/components/data-table-plus/DataTablePlus.vue.d.ts +16 -81
  9. package/dist/components/data-table-plus/index.d.ts +52 -32
  10. package/dist/components/index.d.ts +2 -4
  11. package/dist/components/loading-provider/LoadingProvider.js +2 -2
  12. package/dist/components/loading-provider/LoadingProvider.vue.d.ts +2 -2
  13. package/dist/components/loading-provider/index.d.ts +19 -10
  14. package/dist/components/loading-provider/index.js +5 -2
  15. package/dist/components/preset-form/PresetForm.js +42 -21
  16. package/dist/components/preset-form/PresetForm.vue.d.ts +17 -17
  17. package/dist/components/preset-form/_utils.js +23 -8
  18. package/dist/components/preset-form/index.d.ts +32 -13
  19. package/dist/components/preset-input/PresetInput.vue.d.ts +3 -3
  20. package/dist/components/preset-input/index.d.ts +30 -20
  21. package/dist/components/preset-picker/PresetPicker.js +31 -34
  22. package/dist/components/preset-picker/PresetPicker.vue.d.ts +5 -10
  23. package/dist/components/preset-picker/index.d.ts +45 -31
  24. package/dist/components/preset-select/PresetSelect.js +23 -59
  25. package/dist/components/preset-select/PresetSelect.vue.d.ts +34 -38
  26. package/dist/components/preset-select/index.d.ts +56 -22
  27. package/dist/components/remote-request/RemoteRequest.js +7 -7
  28. package/dist/components/remote-request/RemoteRequest.vue.d.ts +7 -7
  29. package/dist/components/remote-request/index.d.ts +30 -8
  30. package/dist/components/search-input/SearchInput.js +1 -1
  31. package/dist/components/search-input/SearchInput.vue.d.ts +4 -4
  32. package/dist/components/search-input/index.d.ts +10 -7
  33. package/dist/components/toggle-input/ToggleInput.vue.d.ts +4 -4
  34. package/dist/components/tooltip-button/TooltipButton.vue.d.ts +4 -4
  35. package/dist/components/tooltip-button/index.d.ts +5 -2
  36. package/dist/components/transition/index.d.ts +4 -1
  37. package/dist/components.d.ts +2 -4
  38. package/dist/components.js +2 -3
  39. package/dist/composables/_helper.d.ts +7 -4
  40. package/dist/composables/_helper.js +47 -0
  41. package/dist/composables/index.d.ts +1 -1
  42. package/dist/composables/use-data-request.d.ts +27 -20
  43. package/dist/composables/use-data-request.js +23 -4
  44. package/dist/composables/use-loading.d.ts +6 -0
  45. package/dist/composables/use-loading.js +8 -2
  46. package/dist/composables/use-naive-form.d.ts +23 -15
  47. package/dist/composables/use-naive-form.js +49 -40
  48. package/dist/composables/use-naive-menu.d.ts +104 -0
  49. package/dist/composables/use-naive-menu.js +133 -0
  50. package/dist/composables/use-naive-theme.d.ts +27 -14
  51. package/dist/composables/use-naive-theme.js +22 -4
  52. package/dist/index.d.ts +2 -2
  53. package/dist/index.js +2 -2
  54. package/package.json +5 -7
  55. package/dist/components/_utils/prismjs.js +0 -16
  56. package/dist/components/icons/MageArrowUp.js +0 -29
  57. package/dist/components/type-writer/TypeWriter.js +0 -75
  58. package/dist/components/type-writer/TypeWriter.vue.d.ts +0 -22
  59. package/dist/components/type-writer/index.d.ts +0 -13
  60. package/dist/components/type-writer/type-writer.cssr.js +0 -27
  61. package/dist/composables/use-auto-menu.d.ts +0 -74
  62. 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
- /** 语言名称 */name: string; /** 日期本地化配置 */
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
- /** 语言代码引用 */language: Ref<T | undefined, T | undefined>; /** 暗黑模式引用 */
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, UseAutoMenuReturn, UseDataRequestOptions, UseDataRequestPagination, UseDataRequestReturns, UseNaiveFormClearRules, UseNaiveFormOptions, UseNaiveFormReturns, UseNaiveFormRules, UseNaiveThemeOptions, UseNaiveThemeReturns, useAutoMenu, useDataRequest, useLoading, useNaiveForm, useNaiveTheme };
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 { useAutoMenu, useDataRequest, useLoading, useNaiveForm, useNaiveTheme };
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.75",
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/markdown-it": "0.0.12",
50
- "@oiij/css-render": "0.0.10",
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/markdown-it": "0.0.12",
66
- "@oiij/css-render": "0.0.10",
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 };