@robot-admin/naive-ui-components 0.5.0 → 0.6.0
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/CHANGELOG.md +20 -0
- package/dist/C_Breadcrumb.cjs +1 -0
- package/dist/C_Breadcrumb.d.cts +2 -0
- package/dist/C_Breadcrumb.d.ts +3 -0
- package/dist/C_Breadcrumb.js +1 -0
- package/dist/C_Breadcrumb.js.map +1 -0
- package/dist/C_Breadcrumb2.js +2 -0
- package/dist/C_Breadcrumb2.js.map +1 -0
- package/dist/C_Captcha.d.cts +1 -1
- package/dist/C_Captcha.d.ts +1 -1
- package/dist/C_Cascade.d.cts +1 -1
- package/dist/C_Cascade.d.ts +1 -1
- package/dist/C_City.d.cts +1 -1
- package/dist/C_City.d.ts +1 -1
- package/dist/C_Code.d.cts +1 -1
- package/dist/C_Code.d.ts +1 -1
- package/dist/C_Date.d.cts +1 -1
- package/dist/C_Date.d.ts +1 -1
- package/dist/C_Editor.d.cts +1 -1
- package/dist/C_Editor.d.ts +1 -1
- package/dist/C_Guide.d.cts +1 -1
- package/dist/C_Guide.d.ts +1 -1
- package/dist/C_Icon.d.cts +1 -1
- package/dist/C_Icon.d.ts +1 -1
- package/dist/C_Language.d.cts +1 -1
- package/dist/C_Language.d.ts +1 -1
- package/dist/C_Markdown.d.cts +1 -1
- package/dist/C_Markdown.d.ts +1 -1
- package/dist/C_Menu.cjs +1 -0
- package/dist/C_Menu.d.cts +2 -0
- package/dist/C_Menu.d.ts +3 -0
- package/dist/C_Menu.js +1 -0
- package/dist/C_Menu.js.map +1 -0
- package/dist/C_Menu2.js +2 -0
- package/dist/C_Menu2.js.map +1 -0
- package/dist/C_Progress.d.cts +1 -1
- package/dist/C_Progress.d.ts +1 -1
- package/dist/C_Steps.d.cts +1 -1
- package/dist/C_Steps.d.ts +1 -1
- package/dist/C_TagsView-DX3LecK1.css.map +1 -0
- package/dist/C_TagsView-DqOTa8bL.css.map +1 -0
- package/dist/C_TagsView.cjs +1 -0
- package/dist/C_TagsView.css +194 -0
- package/dist/C_TagsView.d.cts +2 -0
- package/dist/C_TagsView.d.ts +3 -0
- package/dist/C_TagsView.js +1 -0
- package/dist/C_TagsView.js.map +1 -0
- package/dist/C_TagsView2.js +2 -0
- package/dist/C_TagsView2.js.map +1 -0
- package/dist/C_Theme.d.cts +1 -1
- package/dist/C_Theme.d.ts +1 -1
- package/dist/C_VtableGantt.d.cts +1 -1
- package/dist/C_VtableGantt.d.ts +1 -1
- package/dist/_shared.cjs +1 -0
- package/dist/_shared.d.cts +2 -0
- package/dist/_shared.d.ts +2 -0
- package/dist/_shared.js +1 -0
- package/dist/constants2.d.ts +1 -1
- package/dist/constants4.d.ts +3 -3
- package/dist/constants5.d.ts +2 -2
- package/dist/data.d.ts +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +40 -36
- package/dist/index.d.ts +44 -36
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.vue.d.ts +1 -1
- package/dist/index10.vue.d.ts +23 -65
- package/dist/index11.vue.d.ts +64 -18
- package/dist/index12.vue.d.ts +17 -72
- package/dist/index13.vue.d.ts +72 -46
- package/dist/index14.vue.d.ts +57 -23
- package/dist/index15.vue.d.ts +48 -11
- package/dist/index16.vue.d.ts +23 -652
- package/dist/index17.vue.d.ts +88 -0
- package/dist/index18.vue.d.ts +18 -0
- package/dist/index19.vue.d.ts +662 -0
- package/dist/index2.vue.d.ts +1 -1
- package/dist/index3.vue.d.ts +20 -37
- package/dist/index4.vue.d.ts +37 -23
- package/dist/index5.vue.d.ts +22 -26
- package/dist/index6.vue.d.ts +24 -37
- package/dist/index7.vue.d.ts +36 -44
- package/dist/index8.vue.d.ts +39 -24
- package/dist/index9.vue.d.ts +34 -23
- package/dist/menuAdapter.d.ts +167 -0
- package/dist/menuAdapter.js +2 -0
- package/dist/menuAdapter.js.map +1 -0
- package/dist/resolver.cjs +1 -1
- package/dist/resolver.cjs.map +1 -1
- package/dist/resolver.d.cts +1 -1
- package/dist/resolver.d.ts +1 -1
- package/dist/resolver.js +1 -1
- package/dist/resolver.js.map +1 -1
- package/dist/style.css +197 -1
- package/dist/useCalendarEvents.d.ts +1 -1
- package/dist/useCollapsePanel.d.ts +4 -4
- package/dist/useCropperCore.d.ts +5 -5
- package/dist/useDraggableLayout.d.ts +8 -8
- package/dist/useDynamicFormState.d.ts +8 -8
- package/dist/useInfiniteScroll.d.ts +2 -2
- package/dist/useModalEdit.d.ts +4 -4
- package/dist/useQRCode.d.ts +2 -2
- package/dist/useSignatureHistory.d.ts +2 -2
- package/dist/useSplitResize.d.ts +5 -5
- package/dist/useTimeSelection.d.ts +2 -2
- package/dist/useTreeOperations.d.ts +4 -4
- package/dist/useWorkflowValidation.d.ts +2 -2
- package/package.json +3 -2
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { VNode } from "vue";
|
|
2
|
+
import { MenuOption } from "naive-ui/es";
|
|
3
|
+
|
|
4
|
+
//#region src/components/_shared/types.d.ts
|
|
5
|
+
/**
|
|
6
|
+
* 路由项 — 组件库统一的路由/菜单数据结构
|
|
7
|
+
*
|
|
8
|
+
* 设计原则:
|
|
9
|
+
* - 顶层字段与 Vue Router `RouteRecordRaw` 对齐
|
|
10
|
+
* - `meta` 字段采用 Admin 生态公约(title / icon / hidden / affix / keepAlive)
|
|
11
|
+
* - 同时兼容后端直接返回的 JSON 路由表(path + meta 即可)
|
|
12
|
+
*
|
|
13
|
+
* @example Vue Router 格式
|
|
14
|
+
* ```ts
|
|
15
|
+
* const route: RouteItem = {
|
|
16
|
+
* path: '/dashboard',
|
|
17
|
+
* name: 'Dashboard',
|
|
18
|
+
* meta: { title: '仪表盘', icon: 'mdi:monitor-dashboard' },
|
|
19
|
+
* children: [...]
|
|
20
|
+
* }
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* @example 后端 JSON 格式
|
|
24
|
+
* ```ts
|
|
25
|
+
* const menuFromApi: RouteItem = {
|
|
26
|
+
* path: '/system/user',
|
|
27
|
+
* meta: { title: '用户管理', icon: 'mdi:account' }
|
|
28
|
+
* }
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
interface RouteItem {
|
|
32
|
+
/** 路由路径(必须) */
|
|
33
|
+
path: string;
|
|
34
|
+
/** 路由名称 */
|
|
35
|
+
name?: string;
|
|
36
|
+
/** 重定向路径 */
|
|
37
|
+
redirect?: string;
|
|
38
|
+
/** 组件名称或路径(用于动态导入) */
|
|
39
|
+
component?: string | (() => Promise<any>);
|
|
40
|
+
/** 菜单/路由元数据 */
|
|
41
|
+
meta?: RouteMeta;
|
|
42
|
+
/** 子路由 */
|
|
43
|
+
children?: RouteItem[];
|
|
44
|
+
/** 菜单项类型:'group' 分组 | 'divider' 分割线 */
|
|
45
|
+
type?: 'group' | 'divider';
|
|
46
|
+
/** 是否禁用 */
|
|
47
|
+
disabled?: boolean;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* 路由元数据 — 兼容 Vue Router RouteMeta 扩展标准
|
|
51
|
+
*
|
|
52
|
+
* 参考:
|
|
53
|
+
* - Vue Router: https://router.vuejs.org/guide/advanced/meta.html
|
|
54
|
+
* - Vben Admin / Naive Admin Pro / Ant Design Pro Vue 的公约字段
|
|
55
|
+
*/
|
|
56
|
+
interface RouteMeta {
|
|
57
|
+
/** 页面/菜单标题 */
|
|
58
|
+
title?: string;
|
|
59
|
+
/** 图标名称(Iconify 格式如 'mdi:home',或自定义) */
|
|
60
|
+
icon?: string | (() => VNode);
|
|
61
|
+
/** 是否在菜单中隐藏 */
|
|
62
|
+
hidden?: boolean;
|
|
63
|
+
/** 是否固定在标签栏 */
|
|
64
|
+
affix?: boolean;
|
|
65
|
+
/** 是否缓存页面(keep-alive) */
|
|
66
|
+
keepAlive?: boolean;
|
|
67
|
+
/** 是否全屏显示(不显示 header/sidebar) */
|
|
68
|
+
full?: boolean;
|
|
69
|
+
/** 外部链接 URL */
|
|
70
|
+
link?: string;
|
|
71
|
+
/** 排序权重 */
|
|
72
|
+
orderNo?: number;
|
|
73
|
+
/** 扩展属性 */
|
|
74
|
+
[key: string]: any;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* 标签项 — C_TagsView 使用的标签数据结构
|
|
78
|
+
*/
|
|
79
|
+
interface TagItem {
|
|
80
|
+
/** 路由路径 */
|
|
81
|
+
path: string;
|
|
82
|
+
/** 显示标题(已翻译) */
|
|
83
|
+
title: string;
|
|
84
|
+
/** 原始标题(未翻译,用于语言切换后重新翻译) */
|
|
85
|
+
originalTitle?: string;
|
|
86
|
+
/** 图标名 */
|
|
87
|
+
icon?: string;
|
|
88
|
+
/** 元数据 */
|
|
89
|
+
meta?: {
|
|
90
|
+
/** 是否固定在标签栏 */affix?: boolean;
|
|
91
|
+
[key: string]: any;
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* 面包屑项 — C_Breadcrumb 使用的数据结构
|
|
96
|
+
*/
|
|
97
|
+
interface BreadcrumbItem {
|
|
98
|
+
/** 路径 key */
|
|
99
|
+
key: string;
|
|
100
|
+
/** 显示文本 */
|
|
101
|
+
label: string;
|
|
102
|
+
/** 图标名称 */
|
|
103
|
+
icon?: string;
|
|
104
|
+
/** 子级列表(用于下拉) */
|
|
105
|
+
children?: BreadcrumbItem[];
|
|
106
|
+
}
|
|
107
|
+
//#endregion
|
|
108
|
+
//#region src/components/_shared/menuAdapter.d.ts
|
|
109
|
+
/**
|
|
110
|
+
* 菜单适配器配置
|
|
111
|
+
*/
|
|
112
|
+
interface MenuAdapterConfig {
|
|
113
|
+
/**
|
|
114
|
+
* 标签文本格式化函数(用于 i18n)
|
|
115
|
+
* 默认:原样返回 title
|
|
116
|
+
*/
|
|
117
|
+
labelFormatter?: (title: string) => string;
|
|
118
|
+
/**
|
|
119
|
+
* 获取菜单项的唯一 key
|
|
120
|
+
* 默认:`normalizePath(route.path)`
|
|
121
|
+
*/
|
|
122
|
+
getKey?: (route: RouteItem) => string;
|
|
123
|
+
/**
|
|
124
|
+
* 获取显示文本
|
|
125
|
+
* 默认:`route.meta?.title || route.name || ''`
|
|
126
|
+
*/
|
|
127
|
+
getLabel?: (route: RouteItem) => string;
|
|
128
|
+
/**
|
|
129
|
+
* 路由过滤器 — return false 排除该项
|
|
130
|
+
* 默认:排除 `meta.hidden === true`
|
|
131
|
+
*/
|
|
132
|
+
filter?: (route: RouteItem) => boolean;
|
|
133
|
+
/**
|
|
134
|
+
* 自定义图标渲染
|
|
135
|
+
* 默认:字符串 → Iconify Icon;函数 → 直接调用
|
|
136
|
+
*/
|
|
137
|
+
renderIcon?: (icon: string | (() => VNode) | undefined) => (() => VNode) | undefined;
|
|
138
|
+
/**
|
|
139
|
+
* 是否递归处理 children
|
|
140
|
+
* 默认:true
|
|
141
|
+
*/
|
|
142
|
+
recursive?: boolean;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* 将路由数据转换为 NMenu 的 MenuOption[]
|
|
146
|
+
*
|
|
147
|
+
* 支持的输入格式:
|
|
148
|
+
* 1. **Vue Router RouteRecordRaw** — 直接传 `router.getRoutes()` 或手写路由表
|
|
149
|
+
* 2. **后端 JSON 路由表** — `{ path, meta: { title, icon }, children }`
|
|
150
|
+
* 3. **自定义格式** — 通过 config 完全自定义 key/label/icon 的取值逻辑
|
|
151
|
+
*
|
|
152
|
+
* @param routes 路由数据数组
|
|
153
|
+
* @param config 适配器配置
|
|
154
|
+
* @returns NMenu 可直接使用的 MenuOption[]
|
|
155
|
+
*/
|
|
156
|
+
declare function createMenuOptions(routes: RouteItem[], config?: MenuAdapterConfig): MenuOption[];
|
|
157
|
+
/**
|
|
158
|
+
* 将路由树扁平化为一维数组(常用于搜索、快捷导航)
|
|
159
|
+
*
|
|
160
|
+
* @param routes 路由数据数组
|
|
161
|
+
* @param filter 过滤器(默认排除 hidden)
|
|
162
|
+
* @returns 扁平化后的路由数组
|
|
163
|
+
*/
|
|
164
|
+
declare function flattenRoutes(routes: RouteItem[], filter?: (route: RouteItem) => boolean): RouteItem[];
|
|
165
|
+
//#endregion
|
|
166
|
+
export { RouteItem as a, BreadcrumbItem as i, createMenuOptions as n, RouteMeta as o, flattenRoutes as r, TagItem as s, MenuAdapterConfig as t };
|
|
167
|
+
//# sourceMappingURL=menuAdapter.d.ts.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{h as e}from"vue";import{Icon as t}from"@iconify/vue";const n=e=>e.startsWith(`/`)?e:`/${e}`,r=e=>e.path?n(e.path):``,i=e=>e.meta?.title||e.name||``,a=e=>!e.meta?.hidden,o=n=>{if(n){if(typeof n==`string`)return()=>e(`span`,{class:`inline-flex items-center n-icon`},[e(t,{icon:n})]);if(typeof n==`function`)return n}};function s(e,t={}){let{labelFormatter:n=e=>e,getKey:s=r,getLabel:c=i,filter:l=a,renderIcon:u=o,recursive:d=!0}=t,f=e=>e.filter(l).map(e=>{let t=e.meta?.icon||e.icon,r=d&&e.children?.length?f(e.children):void 0;return{key:s(e),label:n(c(e)),disabled:e.disabled||!1,icon:u(t),...e.type&&{type:e.type},...r?.length&&{children:r}}});return f(e)}function c(e,t=a){let n=[],r=e=>{for(let i of e)t(i)&&n.push(i),i.children?.length&&r(i.children)};return r(e),n}export{c as n,s as t};
|
|
2
|
+
//# sourceMappingURL=menuAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menuAdapter.js","names":[],"sources":["../src/components/_shared/menuAdapter.ts"],"sourcesContent":["/**\n * 菜单适配器 — 将路由数据转换为 NMenu 的 MenuOption[]\n *\n * 设计理念:\n * - 开箱即用:`createMenuOptions(routes)` 零配置即可生成菜单\n * - 完全可控:通过 `MenuAdapterConfig` 定制每一步转换逻辑\n * - i18n 解耦:`labelFormatter` 回调注入翻译函数,不绑定任何 i18n 方案\n *\n * @example 基础用法\n * ```ts\n * import { createMenuOptions } from '@robot-admin/naive-ui-components'\n *\n * const menuOptions = createMenuOptions(routes)\n * ```\n *\n * @example 带 i18n + 过滤\n * ```ts\n * const menuOptions = createMenuOptions(routes, {\n * labelFormatter: t, // vue-i18n 的 t 函数\n * filter: route => !route.meta?.hidden,\n * })\n * ```\n *\n * @example 自定义 key 取值\n * ```ts\n * const menuOptions = createMenuOptions(routes, {\n * getKey: route => route.name || route.path,\n * })\n * ```\n */\n\nimport { h, type VNode } from 'vue'\nimport { Icon } from '@iconify/vue'\nimport type { MenuOption } from 'naive-ui/es'\nimport type { RouteItem } from './types'\n\n/**\n * 菜单适配器配置\n */\nexport interface MenuAdapterConfig {\n /**\n * 标签文本格式化函数(用于 i18n)\n * 默认:原样返回 title\n */\n labelFormatter?: (title: string) => string\n\n /**\n * 获取菜单项的唯一 key\n * 默认:`normalizePath(route.path)`\n */\n getKey?: (route: RouteItem) => string\n\n /**\n * 获取显示文本\n * 默认:`route.meta?.title || route.name || ''`\n */\n getLabel?: (route: RouteItem) => string\n\n /**\n * 路由过滤器 — return false 排除该项\n * 默认:排除 `meta.hidden === true`\n */\n filter?: (route: RouteItem) => boolean\n\n /**\n * 自定义图标渲染\n * 默认:字符串 → Iconify Icon;函数 → 直接调用\n */\n renderIcon?: (\n icon: string | (() => VNode) | undefined\n ) => (() => VNode) | undefined\n\n /**\n * 是否递归处理 children\n * 默认:true\n */\n recursive?: boolean\n}\n\n// ====== 内置默认值 ======\n\nconst normalizePath = (path: string): string =>\n path.startsWith('/') ? path : `/${path}`\n\nconst defaultGetKey = (route: RouteItem): string =>\n route.path ? normalizePath(route.path) : ''\n\nconst defaultGetLabel = (route: RouteItem): string =>\n route.meta?.title || route.name || ''\n\nconst defaultFilter = (route: RouteItem): boolean => !route.meta?.hidden\n\nconst defaultRenderIcon = (\n icon: string | (() => VNode) | undefined\n): (() => VNode) | undefined => {\n if (!icon) return undefined\n if (typeof icon === 'string') {\n return () =>\n h('span', { class: 'inline-flex items-center n-icon' }, [\n h(Icon, { icon }),\n ])\n }\n if (typeof icon === 'function') return icon\n return undefined\n}\n\n/**\n * 将路由数据转换为 NMenu 的 MenuOption[]\n *\n * 支持的输入格式:\n * 1. **Vue Router RouteRecordRaw** — 直接传 `router.getRoutes()` 或手写路由表\n * 2. **后端 JSON 路由表** — `{ path, meta: { title, icon }, children }`\n * 3. **自定义格式** — 通过 config 完全自定义 key/label/icon 的取值逻辑\n *\n * @param routes 路由数据数组\n * @param config 适配器配置\n * @returns NMenu 可直接使用的 MenuOption[]\n */\nexport function createMenuOptions(\n routes: RouteItem[],\n config: MenuAdapterConfig = {}\n): MenuOption[] {\n const {\n labelFormatter = (s: string) => s,\n getKey = defaultGetKey,\n getLabel = defaultGetLabel,\n filter = defaultFilter,\n renderIcon = defaultRenderIcon,\n recursive = true,\n } = config\n\n const convert = (items: RouteItem[]): MenuOption[] => {\n return items.filter(filter).map(item => {\n const icon = item.meta?.icon || (item as any).icon\n const children =\n recursive && item.children?.length ? convert(item.children) : undefined\n\n return {\n key: getKey(item),\n label: labelFormatter(getLabel(item)),\n disabled: item.disabled || false,\n icon: renderIcon(icon),\n ...(item.type && { type: item.type }),\n ...(children?.length && { children }),\n }\n }) as MenuOption[]\n }\n\n return convert(routes)\n}\n\n/**\n * 将路由树扁平化为一维数组(常用于搜索、快捷导航)\n *\n * @param routes 路由数据数组\n * @param filter 过滤器(默认排除 hidden)\n * @returns 扁平化后的路由数组\n */\nexport function flattenRoutes(\n routes: RouteItem[],\n filter: (route: RouteItem) => boolean = defaultFilter\n): RouteItem[] {\n const result: RouteItem[] = []\n const walk = (items: RouteItem[]) => {\n for (const item of items) {\n if (filter(item)) {\n result.push(item)\n }\n if (item.children?.length) {\n walk(item.children)\n }\n }\n }\n walk(routes)\n return result\n}\n"],"mappings":"4DAiFA,MAAM,EAAiB,GACrB,EAAK,WAAW,IAAI,CAAG,EAAO,IAAI,IAE9B,EAAiB,GACrB,EAAM,KAAO,EAAc,EAAM,KAAK,CAAG,GAErC,EAAmB,GACvB,EAAM,MAAM,OAAS,EAAM,MAAQ,GAE/B,EAAiB,GAA8B,CAAC,EAAM,MAAM,OAE5D,EACJ,GAC8B,CACzB,KACL,IAAI,OAAO,GAAS,SAClB,UACE,EAAE,OAAQ,CAAE,MAAO,kCAAmC,CAAE,CACtD,EAAE,EAAM,CAAE,OAAM,CAAC,CAClB,CAAC,CAEN,GAAI,OAAO,GAAS,WAAY,OAAO,IAgBzC,SAAgB,EACd,EACA,EAA4B,EAAE,CAChB,CACd,GAAM,CACJ,iBAAkB,GAAc,EAChC,SAAS,EACT,WAAW,EACX,SAAS,EACT,aAAa,EACb,YAAY,IACV,EAEE,EAAW,GACR,EAAM,OAAO,EAAO,CAAC,IAAI,GAAQ,CACtC,IAAM,EAAO,EAAK,MAAM,MAAS,EAAa,KACxC,EACJ,GAAa,EAAK,UAAU,OAAS,EAAQ,EAAK,SAAS,CAAG,IAAA,GAEhE,MAAO,CACL,IAAK,EAAO,EAAK,CACjB,MAAO,EAAe,EAAS,EAAK,CAAC,CACrC,SAAU,EAAK,UAAY,GAC3B,KAAM,EAAW,EAAK,CACtB,GAAI,EAAK,MAAQ,CAAE,KAAM,EAAK,KAAM,CACpC,GAAI,GAAU,QAAU,CAAE,WAAU,CACrC,EACD,CAGJ,OAAO,EAAQ,EAAO,CAUxB,SAAgB,EACd,EACA,EAAwC,EAC3B,CACb,IAAM,EAAsB,EAAE,CACxB,EAAQ,GAAuB,CACnC,IAAK,IAAM,KAAQ,EACb,EAAO,EAAK,EACd,EAAO,KAAK,EAAK,CAEf,EAAK,UAAU,QACjB,EAAK,EAAK,SAAS,EAKzB,OADA,EAAK,EAAO,CACL"}
|
package/dist/resolver.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=`@robot-admin/naive-ui-components`,t=`C_ActionBar.C_AntV.C_Barcode.C_Captcha.C_Cascade.C_City.C_Code.C_CollapsePanel.C_Cron.C_Date.C_Draggable.C_Editor.C_FilePreview.C_Form.C_FormSearch.C_FormulaEditor.C_FullCalendar.C_GlobalSearch.C_Guide.C_Icon.C_ImageCropper.C_Language.C_Map.C_Markdown.C_NotificationCenter.C_Progress.C_QRCode.C_Signature.C_SplitPane.C_Steps.C_Table.C_Theme.C_Time.C_Tree.C_Upload.C_VideoPlayer.C_VtableGantt.C_WaterFall.C_WorkFlow`.split(`.`),n=new Set(t);function r(t={}){let{importOnDemand:r=!1,importStyle:i=!1}=t;return{type:`component`,resolve:t=>{if(n.has(t))return{name:t,from:r?`${e}/${t}`:e,sideEffects:r&&i?`${e}/${t}/style.css`:void 0}}}}exports.RobotNaiveUiResolver=r,exports.componentNames=t;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=`@robot-admin/naive-ui-components`,t=`C_ActionBar.C_AntV.C_Barcode.C_Breadcrumb.C_Captcha.C_Cascade.C_City.C_Code.C_CollapsePanel.C_Cron.C_Date.C_Draggable.C_Editor.C_FilePreview.C_Form.C_FormSearch.C_FormulaEditor.C_FullCalendar.C_GlobalSearch.C_Guide.C_Icon.C_ImageCropper.C_Language.C_Map.C_Markdown.C_Menu.C_NotificationCenter.C_Progress.C_QRCode.C_Signature.C_SplitPane.C_Steps.C_Table.C_TagsView.C_Theme.C_Time.C_Tree.C_Upload.C_VideoPlayer.C_VtableGantt.C_WaterFall.C_WorkFlow`.split(`.`),n=new Set(t);function r(t={}){let{importOnDemand:r=!1,importStyle:i=!1}=t;return{type:`component`,resolve:t=>{if(n.has(t))return{name:t,from:r?`${e}/${t}`:e,sideEffects:r&&i?`${e}/${t}/style.css`:void 0}}}}exports.RobotNaiveUiResolver=r,exports.componentNames=t;
|
|
2
2
|
//# sourceMappingURL=resolver.cjs.map
|
package/dist/resolver.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver.cjs","names":[],"sources":["../src/resolver.ts"],"sourcesContent":["/**\n * @robot-admin/naive-ui-components Resolver\n * 用于 unplugin-vue-components 的自动导入解析器\n *\n * @example\n * ```ts\n * // vite.config.ts\n * import Components from 'unplugin-vue-components/vite'\n * import { RobotNaiveUiResolver } from '@robot-admin/naive-ui-components/resolver'\n *\n * export default defineConfig({\n * plugins: [\n * Components({\n * resolvers: [RobotNaiveUiResolver()]\n * })\n * ]\n * })\n * ```\n */\n\nconst PKG_NAME = '@robot-admin/naive-ui-components'\n\n/** 组件库包含的所有组件名称 */\nexport const componentNames = [\n 'C_ActionBar',\n 'C_AntV',\n 'C_Barcode',\n 'C_Captcha',\n 'C_Cascade',\n 'C_City',\n 'C_Code',\n 'C_CollapsePanel',\n 'C_Cron',\n 'C_Date',\n 'C_Draggable',\n 'C_Editor',\n 'C_FilePreview',\n 'C_Form',\n 'C_FormSearch',\n 'C_FormulaEditor',\n 'C_FullCalendar',\n 'C_GlobalSearch',\n 'C_Guide',\n 'C_Icon',\n 'C_ImageCropper',\n 'C_Language',\n 'C_Map',\n 'C_Markdown',\n 'C_NotificationCenter',\n 'C_Progress',\n 'C_QRCode',\n 'C_Signature',\n 'C_SplitPane',\n 'C_Steps',\n 'C_Table',\n 'C_Theme',\n 'C_Time',\n 'C_Tree',\n 'C_Upload',\n 'C_VideoPlayer',\n 'C_VtableGantt',\n 'C_WaterFall',\n 'C_WorkFlow',\n] as const\n\n/** 组件名称类型 */\nexport type ComponentName = (typeof componentNames)[number]\n\n/** 组件名称集合(快速查找) */\nconst componentSet = new Set<string>(componentNames)\n\nexport interface RobotNaiveUiResolverOptions {\n /**\n * 按需导入:从子路径解析单个组件,减少打包体积\n * - false (默认): `import { C_Form } from '@robot-admin/naive-ui-components'`\n * - true: `import { C_Form } from '@robot-admin/naive-ui-components/C_Form'`\n */\n importOnDemand?: boolean\n /**\n * 按需导入组件样式(仅在 importOnDemand 为 true 时生效)\n * - false (默认): 需手动导入 style.css 全量样式\n * - true: 自动导入对应组件的独立样式 `@robot-admin/naive-ui-components/C_Form/style.css`\n */\n importStyle?: boolean\n}\n\n/**\n * @robot-admin/naive-ui-components 组件自动导入解析器\n *\n * 匹配组件库中所有 C_ 前缀的组件,自动解析导入路径。\n * 类似于 NaiveUiResolver、ElementPlusResolver 等成熟解析器的设计。\n */\nexport function RobotNaiveUiResolver(\n options: RobotNaiveUiResolverOptions = {}\n) {\n const { importOnDemand = false, importStyle = false } = options\n\n return {\n type: 'component' as const,\n resolve: (name: string) => {\n if (componentSet.has(name)) {\n const from = importOnDemand ? `${PKG_NAME}/${name}` : PKG_NAME\n const sideEffects =\n importOnDemand && importStyle\n ? `${PKG_NAME}/${name}/style.css`\n : undefined\n return {\n name,\n from,\n sideEffects,\n }\n }\n },\n }\n}\n"],"mappings":"mEAoBA,MAAM,EAAW,mCAGJ,EAAiB,
|
|
1
|
+
{"version":3,"file":"resolver.cjs","names":[],"sources":["../src/resolver.ts"],"sourcesContent":["/**\n * @robot-admin/naive-ui-components Resolver\n * 用于 unplugin-vue-components 的自动导入解析器\n *\n * @example\n * ```ts\n * // vite.config.ts\n * import Components from 'unplugin-vue-components/vite'\n * import { RobotNaiveUiResolver } from '@robot-admin/naive-ui-components/resolver'\n *\n * export default defineConfig({\n * plugins: [\n * Components({\n * resolvers: [RobotNaiveUiResolver()]\n * })\n * ]\n * })\n * ```\n */\n\nconst PKG_NAME = '@robot-admin/naive-ui-components'\n\n/** 组件库包含的所有组件名称 */\nexport const componentNames = [\n 'C_ActionBar',\n 'C_AntV',\n 'C_Barcode',\n 'C_Breadcrumb',\n 'C_Captcha',\n 'C_Cascade',\n 'C_City',\n 'C_Code',\n 'C_CollapsePanel',\n 'C_Cron',\n 'C_Date',\n 'C_Draggable',\n 'C_Editor',\n 'C_FilePreview',\n 'C_Form',\n 'C_FormSearch',\n 'C_FormulaEditor',\n 'C_FullCalendar',\n 'C_GlobalSearch',\n 'C_Guide',\n 'C_Icon',\n 'C_ImageCropper',\n 'C_Language',\n 'C_Map',\n 'C_Markdown',\n 'C_Menu',\n 'C_NotificationCenter',\n 'C_Progress',\n 'C_QRCode',\n 'C_Signature',\n 'C_SplitPane',\n 'C_Steps',\n 'C_Table',\n 'C_TagsView',\n 'C_Theme',\n 'C_Time',\n 'C_Tree',\n 'C_Upload',\n 'C_VideoPlayer',\n 'C_VtableGantt',\n 'C_WaterFall',\n 'C_WorkFlow',\n] as const\n\n/** 组件名称类型 */\nexport type ComponentName = (typeof componentNames)[number]\n\n/** 组件名称集合(快速查找) */\nconst componentSet = new Set<string>(componentNames)\n\nexport interface RobotNaiveUiResolverOptions {\n /**\n * 按需导入:从子路径解析单个组件,减少打包体积\n * - false (默认): `import { C_Form } from '@robot-admin/naive-ui-components'`\n * - true: `import { C_Form } from '@robot-admin/naive-ui-components/C_Form'`\n */\n importOnDemand?: boolean\n /**\n * 按需导入组件样式(仅在 importOnDemand 为 true 时生效)\n * - false (默认): 需手动导入 style.css 全量样式\n * - true: 自动导入对应组件的独立样式 `@robot-admin/naive-ui-components/C_Form/style.css`\n */\n importStyle?: boolean\n}\n\n/**\n * @robot-admin/naive-ui-components 组件自动导入解析器\n *\n * 匹配组件库中所有 C_ 前缀的组件,自动解析导入路径。\n * 类似于 NaiveUiResolver、ElementPlusResolver 等成熟解析器的设计。\n */\nexport function RobotNaiveUiResolver(\n options: RobotNaiveUiResolverOptions = {}\n) {\n const { importOnDemand = false, importStyle = false } = options\n\n return {\n type: 'component' as const,\n resolve: (name: string) => {\n if (componentSet.has(name)) {\n const from = importOnDemand ? `${PKG_NAME}/${name}` : PKG_NAME\n const sideEffects =\n importOnDemand && importStyle\n ? `${PKG_NAME}/${name}/style.css`\n : undefined\n return {\n name,\n from,\n sideEffects,\n }\n }\n },\n }\n}\n"],"mappings":"mEAoBA,MAAM,EAAW,mCAGJ,EAAiB,0cA2C7B,CAMK,EAAe,IAAI,IAAY,EAAe,CAuBpD,SAAgB,EACd,EAAuC,EAAE,CACzC,CACA,GAAM,CAAE,iBAAiB,GAAO,cAAc,IAAU,EAExD,MAAO,CACL,KAAM,YACN,QAAU,GAAiB,CACzB,GAAI,EAAa,IAAI,EAAK,CAMxB,MAAO,CACL,OACA,KAPW,EAAiB,GAAG,EAAS,GAAG,IAAS,EAQpD,YANA,GAAkB,EACd,GAAG,EAAS,GAAG,EAAK,YACpB,IAAA,GAKL,EAGN"}
|
package/dist/resolver.d.cts
CHANGED
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
* ```
|
|
20
20
|
*/
|
|
21
21
|
/** 组件库包含的所有组件名称 */
|
|
22
|
-
declare const componentNames: readonly ["C_ActionBar", "C_AntV", "C_Barcode", "C_Captcha", "C_Cascade", "C_City", "C_Code", "C_CollapsePanel", "C_Cron", "C_Date", "C_Draggable", "C_Editor", "C_FilePreview", "C_Form", "C_FormSearch", "C_FormulaEditor", "C_FullCalendar", "C_GlobalSearch", "C_Guide", "C_Icon", "C_ImageCropper", "C_Language", "C_Map", "C_Markdown", "C_NotificationCenter", "C_Progress", "C_QRCode", "C_Signature", "C_SplitPane", "C_Steps", "C_Table", "C_Theme", "C_Time", "C_Tree", "C_Upload", "C_VideoPlayer", "C_VtableGantt", "C_WaterFall", "C_WorkFlow"];
|
|
22
|
+
declare const componentNames: readonly ["C_ActionBar", "C_AntV", "C_Barcode", "C_Breadcrumb", "C_Captcha", "C_Cascade", "C_City", "C_Code", "C_CollapsePanel", "C_Cron", "C_Date", "C_Draggable", "C_Editor", "C_FilePreview", "C_Form", "C_FormSearch", "C_FormulaEditor", "C_FullCalendar", "C_GlobalSearch", "C_Guide", "C_Icon", "C_ImageCropper", "C_Language", "C_Map", "C_Markdown", "C_Menu", "C_NotificationCenter", "C_Progress", "C_QRCode", "C_Signature", "C_SplitPane", "C_Steps", "C_Table", "C_TagsView", "C_Theme", "C_Time", "C_Tree", "C_Upload", "C_VideoPlayer", "C_VtableGantt", "C_WaterFall", "C_WorkFlow"];
|
|
23
23
|
/** 组件名称类型 */
|
|
24
24
|
type ComponentName = (typeof componentNames)[number];
|
|
25
25
|
interface RobotNaiveUiResolverOptions {
|
package/dist/resolver.d.ts
CHANGED
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
* ```
|
|
20
20
|
*/
|
|
21
21
|
/** 组件库包含的所有组件名称 */
|
|
22
|
-
declare const componentNames: readonly ["C_ActionBar", "C_AntV", "C_Barcode", "C_Captcha", "C_Cascade", "C_City", "C_Code", "C_CollapsePanel", "C_Cron", "C_Date", "C_Draggable", "C_Editor", "C_FilePreview", "C_Form", "C_FormSearch", "C_FormulaEditor", "C_FullCalendar", "C_GlobalSearch", "C_Guide", "C_Icon", "C_ImageCropper", "C_Language", "C_Map", "C_Markdown", "C_NotificationCenter", "C_Progress", "C_QRCode", "C_Signature", "C_SplitPane", "C_Steps", "C_Table", "C_Theme", "C_Time", "C_Tree", "C_Upload", "C_VideoPlayer", "C_VtableGantt", "C_WaterFall", "C_WorkFlow"];
|
|
22
|
+
declare const componentNames: readonly ["C_ActionBar", "C_AntV", "C_Barcode", "C_Breadcrumb", "C_Captcha", "C_Cascade", "C_City", "C_Code", "C_CollapsePanel", "C_Cron", "C_Date", "C_Draggable", "C_Editor", "C_FilePreview", "C_Form", "C_FormSearch", "C_FormulaEditor", "C_FullCalendar", "C_GlobalSearch", "C_Guide", "C_Icon", "C_ImageCropper", "C_Language", "C_Map", "C_Markdown", "C_Menu", "C_NotificationCenter", "C_Progress", "C_QRCode", "C_Signature", "C_SplitPane", "C_Steps", "C_Table", "C_TagsView", "C_Theme", "C_Time", "C_Tree", "C_Upload", "C_VideoPlayer", "C_VtableGantt", "C_WaterFall", "C_WorkFlow"];
|
|
23
23
|
/** 组件名称类型 */
|
|
24
24
|
type ComponentName = (typeof componentNames)[number];
|
|
25
25
|
interface RobotNaiveUiResolverOptions {
|
package/dist/resolver.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=`@robot-admin/naive-ui-components`,t=`C_ActionBar.C_AntV.C_Barcode.C_Captcha.C_Cascade.C_City.C_Code.C_CollapsePanel.C_Cron.C_Date.C_Draggable.C_Editor.C_FilePreview.C_Form.C_FormSearch.C_FormulaEditor.C_FullCalendar.C_GlobalSearch.C_Guide.C_Icon.C_ImageCropper.C_Language.C_Map.C_Markdown.C_NotificationCenter.C_Progress.C_QRCode.C_Signature.C_SplitPane.C_Steps.C_Table.C_Theme.C_Time.C_Tree.C_Upload.C_VideoPlayer.C_VtableGantt.C_WaterFall.C_WorkFlow`.split(`.`),n=new Set(t);function r(t={}){let{importOnDemand:r=!1,importStyle:i=!1}=t;return{type:`component`,resolve:t=>{if(n.has(t))return{name:t,from:r?`${e}/${t}`:e,sideEffects:r&&i?`${e}/${t}/style.css`:void 0}}}}export{r as RobotNaiveUiResolver,t as componentNames};
|
|
1
|
+
const e=`@robot-admin/naive-ui-components`,t=`C_ActionBar.C_AntV.C_Barcode.C_Breadcrumb.C_Captcha.C_Cascade.C_City.C_Code.C_CollapsePanel.C_Cron.C_Date.C_Draggable.C_Editor.C_FilePreview.C_Form.C_FormSearch.C_FormulaEditor.C_FullCalendar.C_GlobalSearch.C_Guide.C_Icon.C_ImageCropper.C_Language.C_Map.C_Markdown.C_Menu.C_NotificationCenter.C_Progress.C_QRCode.C_Signature.C_SplitPane.C_Steps.C_Table.C_TagsView.C_Theme.C_Time.C_Tree.C_Upload.C_VideoPlayer.C_VtableGantt.C_WaterFall.C_WorkFlow`.split(`.`),n=new Set(t);function r(t={}){let{importOnDemand:r=!1,importStyle:i=!1}=t;return{type:`component`,resolve:t=>{if(n.has(t))return{name:t,from:r?`${e}/${t}`:e,sideEffects:r&&i?`${e}/${t}/style.css`:void 0}}}}export{r as RobotNaiveUiResolver,t as componentNames};
|
|
2
2
|
//# sourceMappingURL=resolver.js.map
|
package/dist/resolver.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver.js","names":[],"sources":["../src/resolver.ts"],"sourcesContent":["/**\n * @robot-admin/naive-ui-components Resolver\n * 用于 unplugin-vue-components 的自动导入解析器\n *\n * @example\n * ```ts\n * // vite.config.ts\n * import Components from 'unplugin-vue-components/vite'\n * import { RobotNaiveUiResolver } from '@robot-admin/naive-ui-components/resolver'\n *\n * export default defineConfig({\n * plugins: [\n * Components({\n * resolvers: [RobotNaiveUiResolver()]\n * })\n * ]\n * })\n * ```\n */\n\nconst PKG_NAME = '@robot-admin/naive-ui-components'\n\n/** 组件库包含的所有组件名称 */\nexport const componentNames = [\n 'C_ActionBar',\n 'C_AntV',\n 'C_Barcode',\n 'C_Captcha',\n 'C_Cascade',\n 'C_City',\n 'C_Code',\n 'C_CollapsePanel',\n 'C_Cron',\n 'C_Date',\n 'C_Draggable',\n 'C_Editor',\n 'C_FilePreview',\n 'C_Form',\n 'C_FormSearch',\n 'C_FormulaEditor',\n 'C_FullCalendar',\n 'C_GlobalSearch',\n 'C_Guide',\n 'C_Icon',\n 'C_ImageCropper',\n 'C_Language',\n 'C_Map',\n 'C_Markdown',\n 'C_NotificationCenter',\n 'C_Progress',\n 'C_QRCode',\n 'C_Signature',\n 'C_SplitPane',\n 'C_Steps',\n 'C_Table',\n 'C_Theme',\n 'C_Time',\n 'C_Tree',\n 'C_Upload',\n 'C_VideoPlayer',\n 'C_VtableGantt',\n 'C_WaterFall',\n 'C_WorkFlow',\n] as const\n\n/** 组件名称类型 */\nexport type ComponentName = (typeof componentNames)[number]\n\n/** 组件名称集合(快速查找) */\nconst componentSet = new Set<string>(componentNames)\n\nexport interface RobotNaiveUiResolverOptions {\n /**\n * 按需导入:从子路径解析单个组件,减少打包体积\n * - false (默认): `import { C_Form } from '@robot-admin/naive-ui-components'`\n * - true: `import { C_Form } from '@robot-admin/naive-ui-components/C_Form'`\n */\n importOnDemand?: boolean\n /**\n * 按需导入组件样式(仅在 importOnDemand 为 true 时生效)\n * - false (默认): 需手动导入 style.css 全量样式\n * - true: 自动导入对应组件的独立样式 `@robot-admin/naive-ui-components/C_Form/style.css`\n */\n importStyle?: boolean\n}\n\n/**\n * @robot-admin/naive-ui-components 组件自动导入解析器\n *\n * 匹配组件库中所有 C_ 前缀的组件,自动解析导入路径。\n * 类似于 NaiveUiResolver、ElementPlusResolver 等成熟解析器的设计。\n */\nexport function RobotNaiveUiResolver(\n options: RobotNaiveUiResolverOptions = {}\n) {\n const { importOnDemand = false, importStyle = false } = options\n\n return {\n type: 'component' as const,\n resolve: (name: string) => {\n if (componentSet.has(name)) {\n const from = importOnDemand ? `${PKG_NAME}/${name}` : PKG_NAME\n const sideEffects =\n importOnDemand && importStyle\n ? `${PKG_NAME}/${name}/style.css`\n : undefined\n return {\n name,\n from,\n sideEffects,\n }\n }\n },\n }\n}\n"],"mappings":"AAoBA,MAAM,EAAW,mCAGJ,EAAiB,
|
|
1
|
+
{"version":3,"file":"resolver.js","names":[],"sources":["../src/resolver.ts"],"sourcesContent":["/**\n * @robot-admin/naive-ui-components Resolver\n * 用于 unplugin-vue-components 的自动导入解析器\n *\n * @example\n * ```ts\n * // vite.config.ts\n * import Components from 'unplugin-vue-components/vite'\n * import { RobotNaiveUiResolver } from '@robot-admin/naive-ui-components/resolver'\n *\n * export default defineConfig({\n * plugins: [\n * Components({\n * resolvers: [RobotNaiveUiResolver()]\n * })\n * ]\n * })\n * ```\n */\n\nconst PKG_NAME = '@robot-admin/naive-ui-components'\n\n/** 组件库包含的所有组件名称 */\nexport const componentNames = [\n 'C_ActionBar',\n 'C_AntV',\n 'C_Barcode',\n 'C_Breadcrumb',\n 'C_Captcha',\n 'C_Cascade',\n 'C_City',\n 'C_Code',\n 'C_CollapsePanel',\n 'C_Cron',\n 'C_Date',\n 'C_Draggable',\n 'C_Editor',\n 'C_FilePreview',\n 'C_Form',\n 'C_FormSearch',\n 'C_FormulaEditor',\n 'C_FullCalendar',\n 'C_GlobalSearch',\n 'C_Guide',\n 'C_Icon',\n 'C_ImageCropper',\n 'C_Language',\n 'C_Map',\n 'C_Markdown',\n 'C_Menu',\n 'C_NotificationCenter',\n 'C_Progress',\n 'C_QRCode',\n 'C_Signature',\n 'C_SplitPane',\n 'C_Steps',\n 'C_Table',\n 'C_TagsView',\n 'C_Theme',\n 'C_Time',\n 'C_Tree',\n 'C_Upload',\n 'C_VideoPlayer',\n 'C_VtableGantt',\n 'C_WaterFall',\n 'C_WorkFlow',\n] as const\n\n/** 组件名称类型 */\nexport type ComponentName = (typeof componentNames)[number]\n\n/** 组件名称集合(快速查找) */\nconst componentSet = new Set<string>(componentNames)\n\nexport interface RobotNaiveUiResolverOptions {\n /**\n * 按需导入:从子路径解析单个组件,减少打包体积\n * - false (默认): `import { C_Form } from '@robot-admin/naive-ui-components'`\n * - true: `import { C_Form } from '@robot-admin/naive-ui-components/C_Form'`\n */\n importOnDemand?: boolean\n /**\n * 按需导入组件样式(仅在 importOnDemand 为 true 时生效)\n * - false (默认): 需手动导入 style.css 全量样式\n * - true: 自动导入对应组件的独立样式 `@robot-admin/naive-ui-components/C_Form/style.css`\n */\n importStyle?: boolean\n}\n\n/**\n * @robot-admin/naive-ui-components 组件自动导入解析器\n *\n * 匹配组件库中所有 C_ 前缀的组件,自动解析导入路径。\n * 类似于 NaiveUiResolver、ElementPlusResolver 等成熟解析器的设计。\n */\nexport function RobotNaiveUiResolver(\n options: RobotNaiveUiResolverOptions = {}\n) {\n const { importOnDemand = false, importStyle = false } = options\n\n return {\n type: 'component' as const,\n resolve: (name: string) => {\n if (componentSet.has(name)) {\n const from = importOnDemand ? `${PKG_NAME}/${name}` : PKG_NAME\n const sideEffects =\n importOnDemand && importStyle\n ? `${PKG_NAME}/${name}/style.css`\n : undefined\n return {\n name,\n from,\n sideEffects,\n }\n }\n },\n }\n}\n"],"mappings":"AAoBA,MAAM,EAAW,mCAGJ,EAAiB,0cA2C7B,CAMK,EAAe,IAAI,IAAY,EAAe,CAuBpD,SAAgB,EACd,EAAuC,EAAE,CACzC,CACA,GAAM,CAAE,iBAAiB,GAAO,cAAc,IAAU,EAExD,MAAO,CACL,KAAM,YACN,QAAU,GAAiB,CACzB,GAAI,EAAa,IAAI,EAAK,CAMxB,MAAO,CACL,OACA,KAPW,EAAiB,GAAG,EAAS,GAAG,IAAS,EAQpD,YANA,GAAkB,EACd,GAAG,EAAS,GAAG,EAAK,YACpB,IAAA,GAKL,EAGN"}
|