@robot-admin/naive-ui-components 0.4.5 → 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.
Files changed (181) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/dist/C_ActionBar-jZPsiXtT.css.map +1 -0
  3. package/dist/C_ActionBar.css +205 -0
  4. package/dist/C_AntV-D2Zp2qQF.css.map +1 -0
  5. package/dist/C_AntV.css +398 -0
  6. package/dist/C_Barcode-Do1Ozsmh.css.map +1 -0
  7. package/dist/C_Barcode.css +39 -0
  8. package/dist/C_Breadcrumb.cjs +1 -0
  9. package/dist/C_Breadcrumb.d.cts +2 -0
  10. package/dist/C_Breadcrumb.d.ts +3 -0
  11. package/dist/C_Breadcrumb.js +1 -0
  12. package/dist/C_Breadcrumb.js.map +1 -0
  13. package/dist/C_Breadcrumb2.js +2 -0
  14. package/dist/C_Breadcrumb2.js.map +1 -0
  15. package/dist/C_Captcha-CZmAETly.css.map +1 -0
  16. package/dist/C_Captcha.css +109 -0
  17. package/dist/C_Captcha.d.cts +1 -1
  18. package/dist/C_Captcha.d.ts +1 -1
  19. package/dist/C_Cascade-Dq0S5Jkm.css.map +1 -0
  20. package/dist/C_Cascade.css +10 -0
  21. package/dist/C_Cascade.d.cts +1 -1
  22. package/dist/C_Cascade.d.ts +1 -1
  23. package/dist/C_City-DNKv4MpH.css.map +1 -0
  24. package/dist/C_City.css +132 -0
  25. package/dist/C_City.d.cts +1 -1
  26. package/dist/C_City.d.ts +1 -1
  27. package/dist/C_Code-avZjAnHD.css.map +1 -0
  28. package/dist/C_Code.css +8 -0
  29. package/dist/C_Code.d.cts +1 -1
  30. package/dist/C_Code.d.ts +1 -1
  31. package/dist/C_CollapsePanel-BpofCDyl.css.map +1 -0
  32. package/dist/C_CollapsePanel.css +171 -0
  33. package/dist/C_Cron-DqHQ92LN.css.map +1 -0
  34. package/dist/C_Cron.css +307 -0
  35. package/dist/C_Date.d.cts +1 -1
  36. package/dist/C_Date.d.ts +1 -1
  37. package/dist/C_Draggable-r6nhx3yM.css.map +1 -0
  38. package/dist/C_Draggable.css +238 -0
  39. package/dist/C_Editor-D0_6UhIa.css.map +1 -0
  40. package/dist/C_Editor.css +52 -0
  41. package/dist/C_Editor.d.cts +1 -1
  42. package/dist/C_Editor.d.ts +1 -1
  43. package/dist/C_FilePreview-BVarVvnD.css.map +1 -0
  44. package/dist/C_FilePreview.css +507 -0
  45. package/dist/C_Form-BciQUPpS.css.map +1 -0
  46. package/dist/C_Form.css +976 -0
  47. package/dist/C_FormSearch-Bmd2CmG6.css.map +1 -0
  48. package/dist/C_FormSearch.css +177 -0
  49. package/dist/C_FormulaEditor-3WG2vtQl.css.map +1 -0
  50. package/dist/C_FormulaEditor.css +502 -0
  51. package/dist/C_FullCalendar-1U4VlG7X.css.map +1 -0
  52. package/dist/C_FullCalendar.css +7 -0
  53. package/dist/C_GlobalSearch-B6wK3m3k.css.map +1 -0
  54. package/dist/C_GlobalSearch.css +616 -0
  55. package/dist/C_Guide.d.cts +1 -1
  56. package/dist/C_Guide.d.ts +1 -1
  57. package/dist/C_Icon.d.cts +1 -1
  58. package/dist/C_Icon.d.ts +1 -1
  59. package/dist/C_ImageCropper-D3L2-J_J.css.map +1 -0
  60. package/dist/C_ImageCropper.css +129 -0
  61. package/dist/C_Language.d.cts +1 -1
  62. package/dist/C_Language.d.ts +1 -1
  63. package/dist/C_Map-BCJmDnJT.css.map +1 -0
  64. package/dist/C_Map.css +29 -0
  65. package/dist/C_Markdown-7iBnLDtL.css.map +1 -0
  66. package/dist/C_Markdown.css +112 -0
  67. package/dist/C_Markdown.d.cts +1 -1
  68. package/dist/C_Markdown.d.ts +1 -1
  69. package/dist/C_Menu.cjs +1 -0
  70. package/dist/C_Menu.d.cts +2 -0
  71. package/dist/C_Menu.d.ts +3 -0
  72. package/dist/C_Menu.js +1 -0
  73. package/dist/C_Menu.js.map +1 -0
  74. package/dist/C_Menu2.js +2 -0
  75. package/dist/C_Menu2.js.map +1 -0
  76. package/dist/C_NotificationCenter-DT6fQ79O.css.map +1 -0
  77. package/dist/C_NotificationCenter.css +466 -0
  78. package/dist/C_Progress.d.cts +1 -1
  79. package/dist/C_Progress.d.ts +1 -1
  80. package/dist/C_QRCode-DMxSyogU.css.map +1 -0
  81. package/dist/C_QRCode.css +51 -0
  82. package/dist/C_Signature-B5fFz6RD.css.map +1 -0
  83. package/dist/C_Signature.css +79 -0
  84. package/dist/C_SplitPane-DuyzUhKB.css.map +1 -0
  85. package/dist/C_SplitPane.css +152 -0
  86. package/dist/C_Steps-DGwXxS2Y.css.map +1 -0
  87. package/dist/C_Steps.css +171 -0
  88. package/dist/C_Steps.d.cts +1 -1
  89. package/dist/C_Steps.d.ts +1 -1
  90. package/dist/C_Table-Dcam_tRs.css.map +1 -0
  91. package/dist/C_Table.css +527 -0
  92. package/dist/C_TagsView-DX3LecK1.css.map +1 -0
  93. package/dist/C_TagsView-DqOTa8bL.css.map +1 -0
  94. package/dist/C_TagsView.cjs +1 -0
  95. package/dist/C_TagsView.css +194 -0
  96. package/dist/C_TagsView.d.cts +2 -0
  97. package/dist/C_TagsView.d.ts +3 -0
  98. package/dist/C_TagsView.js +1 -0
  99. package/dist/C_TagsView.js.map +1 -0
  100. package/dist/C_TagsView2.js +2 -0
  101. package/dist/C_TagsView2.js.map +1 -0
  102. package/dist/C_Theme.d.cts +1 -1
  103. package/dist/C_Theme.d.ts +1 -1
  104. package/dist/C_Time-CKb_fwdm.css.map +1 -0
  105. package/dist/C_Time.css +23 -0
  106. package/dist/C_Tree-B-Le4hjQ.css.map +1 -0
  107. package/dist/C_Tree.css +142 -0
  108. package/dist/C_Upload-S30RmC9t.css.map +1 -0
  109. package/dist/C_Upload.css +251 -0
  110. package/dist/C_VideoPlayer-Cdgv4Zq0.css.map +1 -0
  111. package/dist/C_VideoPlayer.css +355 -0
  112. package/dist/C_VideoPlayer.d.ts +1 -1
  113. package/dist/C_VtableGantt-DB87-jdS.css.map +1 -0
  114. package/dist/C_VtableGantt.css +89 -0
  115. package/dist/C_VtableGantt.d.cts +1 -1
  116. package/dist/C_VtableGantt.d.ts +1 -1
  117. package/dist/C_WaterFall-C4HDqf-a.css.map +1 -0
  118. package/dist/C_WaterFall.css +73 -0
  119. package/dist/C_WorkFlow-Cy3HWA6A.css.map +1 -0
  120. package/dist/C_WorkFlow.css +1166 -0
  121. package/dist/_shared.cjs +1 -0
  122. package/dist/_shared.d.cts +2 -0
  123. package/dist/_shared.d.ts +2 -0
  124. package/dist/_shared.js +1 -0
  125. package/dist/chunk.js +1 -1
  126. package/dist/constants.d.ts +3 -3
  127. package/dist/constants2.d.ts +4 -4
  128. package/dist/constants3.d.ts +4 -4
  129. package/dist/constants4.d.ts +3 -3
  130. package/dist/constants5.d.ts +6 -3814
  131. package/dist/data.d.ts +3 -3
  132. package/dist/index.cjs +1 -1
  133. package/dist/index.cjs.map +1 -1
  134. package/dist/index.d.cts +40 -36
  135. package/dist/index.d.ts +45 -36
  136. package/dist/index.js +1 -1
  137. package/dist/index.js.map +1 -1
  138. package/dist/index10.vue.d.ts +23 -65
  139. package/dist/index11.vue.d.ts +64 -18
  140. package/dist/index12.vue.d.ts +17 -72
  141. package/dist/index13.vue.d.ts +72 -46
  142. package/dist/index14.vue.d.ts +57 -23
  143. package/dist/index15.vue.d.ts +48 -11
  144. package/dist/index16.vue.d.ts +23 -652
  145. package/dist/index17.vue.d.ts +88 -0
  146. package/dist/index18.vue.d.ts +18 -0
  147. package/dist/index19.vue.d.ts +662 -0
  148. package/dist/index2.vue.d.ts +1 -1
  149. package/dist/index3.vue.d.ts +20 -37
  150. package/dist/index4.vue.d.ts +37 -23
  151. package/dist/index5.vue.d.ts +22 -26
  152. package/dist/index6.vue.d.ts +24 -37
  153. package/dist/index7.vue.d.ts +36 -44
  154. package/dist/index8.vue.d.ts +40 -25
  155. package/dist/index9.vue.d.ts +34 -23
  156. package/dist/menuAdapter.d.ts +167 -0
  157. package/dist/menuAdapter.js +2 -0
  158. package/dist/menuAdapter.js.map +1 -0
  159. package/dist/resolver.cjs +1 -1
  160. package/dist/resolver.cjs.map +1 -1
  161. package/dist/resolver.d.cts +8 -1
  162. package/dist/resolver.d.ts +8 -1
  163. package/dist/resolver.js +1 -1
  164. package/dist/resolver.js.map +1 -1
  165. package/dist/style.css +243 -47
  166. package/dist/useCalendarEvents.d.ts +1 -1
  167. package/dist/useCollapsePanel.d.ts +5 -5
  168. package/dist/useCropperCore.d.ts +4 -4
  169. package/dist/useDraggableLayout.d.ts +4 -4
  170. package/dist/useDynamicFormState.d.ts +6 -6
  171. package/dist/useEdgeInteraction.d.ts +2 -7283
  172. package/dist/useInfiniteScroll.d.ts +2 -2
  173. package/dist/useModalEdit.d.ts +8 -8
  174. package/dist/useQRCode.d.ts +1 -1
  175. package/dist/useSearchState.d.ts +1 -1
  176. package/dist/useSignatureHistory.d.ts +1 -1
  177. package/dist/useSplitResize.d.ts +6 -6
  178. package/dist/useTimeSelection.d.ts +2 -2
  179. package/dist/useTreeOperations.d.ts +3 -3
  180. package/dist/useWorkflowValidation.d.ts +4 -4
  181. package/package.json +34 -33
@@ -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}=t;return{type:`component`,resolve:t=>{if(n.has(t))return{name:t,from:r?`${e}/${t}`:e}}}}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
@@ -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\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 } = options\n\n return {\n type: 'component' as const,\n resolve: (name: string) => {\n if (componentSet.has(name)) {\n return {\n name,\n from: importOnDemand ? `${PKG_NAME}/${name}` : PKG_NAME,\n }\n }\n },\n }\n}\n"],"mappings":"mEAoBA,MAAM,EAAW,mCAGJ,EAAiB,2aAwC7B,CAMK,EAAe,IAAI,IAAY,EAAe,CAiBpD,SAAgB,EACd,EAAuC,EAAE,CACzC,CACA,GAAM,CAAE,iBAAiB,IAAU,EAEnC,MAAO,CACL,KAAM,YACN,QAAU,GAAiB,CACzB,GAAI,EAAa,IAAI,EAAK,CACxB,MAAO,CACL,OACA,KAAM,EAAiB,GAAG,EAAS,GAAG,IAAS,EAChD,EAGN"}
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"}
@@ -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 {
@@ -29,6 +29,12 @@ interface RobotNaiveUiResolverOptions {
29
29
  * - true: `import { C_Form } from '@robot-admin/naive-ui-components/C_Form'`
30
30
  */
31
31
  importOnDemand?: boolean;
32
+ /**
33
+ * 按需导入组件样式(仅在 importOnDemand 为 true 时生效)
34
+ * - false (默认): 需手动导入 style.css 全量样式
35
+ * - true: 自动导入对应组件的独立样式 `@robot-admin/naive-ui-components/C_Form/style.css`
36
+ */
37
+ importStyle?: boolean;
32
38
  }
33
39
  /**
34
40
  * @robot-admin/naive-ui-components 组件自动导入解析器
@@ -41,6 +47,7 @@ declare function RobotNaiveUiResolver(options?: RobotNaiveUiResolverOptions): {
41
47
  resolve: (name: string) => {
42
48
  name: string;
43
49
  from: string;
50
+ sideEffects: string | undefined;
44
51
  } | undefined;
45
52
  };
46
53
  //#endregion
@@ -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 {
@@ -29,6 +29,12 @@ interface RobotNaiveUiResolverOptions {
29
29
  * - true: `import { C_Form } from '@robot-admin/naive-ui-components/C_Form'`
30
30
  */
31
31
  importOnDemand?: boolean;
32
+ /**
33
+ * 按需导入组件样式(仅在 importOnDemand 为 true 时生效)
34
+ * - false (默认): 需手动导入 style.css 全量样式
35
+ * - true: 自动导入对应组件的独立样式 `@robot-admin/naive-ui-components/C_Form/style.css`
36
+ */
37
+ importStyle?: boolean;
32
38
  }
33
39
  /**
34
40
  * @robot-admin/naive-ui-components 组件自动导入解析器
@@ -41,6 +47,7 @@ declare function RobotNaiveUiResolver(options?: RobotNaiveUiResolverOptions): {
41
47
  resolve: (name: string) => {
42
48
  name: string;
43
49
  from: string;
50
+ sideEffects: string | undefined;
44
51
  } | undefined;
45
52
  };
46
53
  //#endregion
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}=t;return{type:`component`,resolve:t=>{if(n.has(t))return{name:t,from:r?`${e}/${t}`:e}}}}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
@@ -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\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 } = options\n\n return {\n type: 'component' as const,\n resolve: (name: string) => {\n if (componentSet.has(name)) {\n return {\n name,\n from: importOnDemand ? `${PKG_NAME}/${name}` : PKG_NAME,\n }\n }\n },\n }\n}\n"],"mappings":"AAoBA,MAAM,EAAW,mCAGJ,EAAiB,2aAwC7B,CAMK,EAAe,IAAI,IAAY,EAAe,CAiBpD,SAAgB,EACd,EAAuC,EAAE,CACzC,CACA,GAAM,CAAE,iBAAiB,IAAU,EAEnC,MAAO,CACL,KAAM,YACN,QAAU,GAAiB,CACzB,GAAI,EAAa,IAAI,EAAK,CACxB,MAAO,CACL,OACA,KAAM,EAAiB,GAAG,EAAS,GAAG,IAAS,EAChD,EAGN"}
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"}