niuma-ui 1.0.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 (220) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/LICENSE +202 -0
  3. package/NOTICE +25 -0
  4. package/README.en.md +99 -0
  5. package/README.md +161 -0
  6. package/package.json +106 -0
  7. package/src/__tests__/RsBadge.spec.ts +40 -0
  8. package/src/__tests__/RsBreadcrumb.spec.ts +172 -0
  9. package/src/__tests__/RsButton.spec.ts +108 -0
  10. package/src/__tests__/RsCalendarGrid.spec.ts +82 -0
  11. package/src/__tests__/RsCard.spec.ts +97 -0
  12. package/src/__tests__/RsCheckbox.spec.ts +36 -0
  13. package/src/__tests__/RsCodeEditor.spec.ts +111 -0
  14. package/src/__tests__/RsConfirmDialog.spec.ts +158 -0
  15. package/src/__tests__/RsContainer.spec.ts +89 -0
  16. package/src/__tests__/RsContextMenu.spec.ts +118 -0
  17. package/src/__tests__/RsDatePicker.spec.ts +88 -0
  18. package/src/__tests__/RsDateTimePicker.spec.ts +69 -0
  19. package/src/__tests__/RsDialog.spec.ts +404 -0
  20. package/src/__tests__/RsDrawer.spec.ts +145 -0
  21. package/src/__tests__/RsDropdown.spec.ts +135 -0
  22. package/src/__tests__/RsEmpty.spec.ts +99 -0
  23. package/src/__tests__/RsForm.spec.ts +173 -0
  24. package/src/__tests__/RsIcon.spec.ts +244 -0
  25. package/src/__tests__/RsInput.spec.ts +269 -0
  26. package/src/__tests__/RsInputNumber.spec.ts +118 -0
  27. package/src/__tests__/RsLabel.spec.ts +106 -0
  28. package/src/__tests__/RsLink.spec.ts +49 -0
  29. package/src/__tests__/RsLoading.spec.ts +84 -0
  30. package/src/__tests__/RsMarkdown.spec.ts +143 -0
  31. package/src/__tests__/RsMenu.spec.ts +119 -0
  32. package/src/__tests__/RsNewComponents.spec.ts +17 -0
  33. package/src/__tests__/RsPagination.spec.ts +158 -0
  34. package/src/__tests__/RsPopover.spec.ts +126 -0
  35. package/src/__tests__/RsScrollbar.spec.ts +53 -0
  36. package/src/__tests__/RsSelect.spec.ts +291 -0
  37. package/src/__tests__/RsSidebar.spec.ts +119 -0
  38. package/src/__tests__/RsSplitPane.spec.ts +177 -0
  39. package/src/__tests__/RsStatCard.spec.ts +79 -0
  40. package/src/__tests__/RsSteps.spec.ts +125 -0
  41. package/src/__tests__/RsTable.perf.spec.ts +103 -0
  42. package/src/__tests__/RsTable.spec.ts +1135 -0
  43. package/src/__tests__/RsTabs.spec.ts +328 -0
  44. package/src/__tests__/RsTerminal.spec.ts +218 -0
  45. package/src/__tests__/RsTimePicker.spec.ts +77 -0
  46. package/src/__tests__/RsToaster.spec.ts +95 -0
  47. package/src/__tests__/RsToolbar.spec.ts +75 -0
  48. package/src/__tests__/RsTooltip.spec.ts +111 -0
  49. package/src/__tests__/RsTree.spec.ts +572 -0
  50. package/src/__tests__/RsUpload.spec.ts +160 -0
  51. package/src/__tests__/RsVirtualList.spec.ts +77 -0
  52. package/src/__tests__/date-picker-utils.spec.ts +70 -0
  53. package/src/__tests__/dialog-viewport.spec.ts +38 -0
  54. package/src/__tests__/iso-local-datetime.spec.ts +58 -0
  55. package/src/__tests__/rs-clipboard.spec.ts +142 -0
  56. package/src/__tests__/setup.ts +12 -0
  57. package/src/__tests__/split-pane-utils.spec.ts +136 -0
  58. package/src/__tests__/table-drag.spec.ts +35 -0
  59. package/src/__tests__/table-edit-utils.spec.ts +194 -0
  60. package/src/__tests__/table-utils.spec.ts +286 -0
  61. package/src/__tests__/theme.spec.ts +22 -0
  62. package/src/__tests__/tree-utils.spec.ts +234 -0
  63. package/src/__tests__/useTableCellTooltip.spec.ts +101 -0
  64. package/src/components/RsAvatar.vue +115 -0
  65. package/src/components/RsBadge.vue +59 -0
  66. package/src/components/RsBreadcrumb.vue +65 -0
  67. package/src/components/RsBreadcrumbItems.vue +36 -0
  68. package/src/components/RsButton.vue +393 -0
  69. package/src/components/RsCalendarGrid.vue +284 -0
  70. package/src/components/RsCard.vue +237 -0
  71. package/src/components/RsCheckbox.vue +189 -0
  72. package/src/components/RsCodeBlock.vue +278 -0
  73. package/src/components/RsCodeEditor.vue +597 -0
  74. package/src/components/RsConfigProvider.vue +92 -0
  75. package/src/components/RsConfirmDialog.vue +178 -0
  76. package/src/components/RsContainer.vue +235 -0
  77. package/src/components/RsContextMenu.vue +238 -0
  78. package/src/components/RsContextMenuItems.vue +77 -0
  79. package/src/components/RsDatePicker.vue +756 -0
  80. package/src/components/RsDateTimePicker.vue +42 -0
  81. package/src/components/RsDialog.vue +486 -0
  82. package/src/components/RsDrawer.vue +175 -0
  83. package/src/components/RsDropdown.vue +252 -0
  84. package/src/components/RsDropdownItems.vue +90 -0
  85. package/src/components/RsEmpty.vue +107 -0
  86. package/src/components/RsForm.vue +131 -0
  87. package/src/components/RsIcon.vue +104 -0
  88. package/src/components/RsInput.vue +1101 -0
  89. package/src/components/RsInputNumber.vue +532 -0
  90. package/src/components/RsLabel.vue +54 -0
  91. package/src/components/RsLink.vue +106 -0
  92. package/src/components/RsLoading.vue +171 -0
  93. package/src/components/RsMarkdown.vue +329 -0
  94. package/src/components/RsMenu.vue +256 -0
  95. package/src/components/RsMenuItems.vue +125 -0
  96. package/src/components/RsMonacoEditor.vue +541 -0
  97. package/src/components/RsPagination.vue +184 -0
  98. package/src/components/RsPopover.vue +77 -0
  99. package/src/components/RsProseEditor.vue +160 -0
  100. package/src/components/RsScrollbar.vue +171 -0
  101. package/src/components/RsSelect.vue +1045 -0
  102. package/src/components/RsSidebar.vue +121 -0
  103. package/src/components/RsSidebarGroup.vue +32 -0
  104. package/src/components/RsSidebarItem.vue +72 -0
  105. package/src/components/RsSplitPane.vue +619 -0
  106. package/src/components/RsStatCard.vue +85 -0
  107. package/src/components/RsSteps.vue +138 -0
  108. package/src/components/RsTable.vue +2664 -0
  109. package/src/components/RsTableColgroup.vue +17 -0
  110. package/src/components/RsTableHeaderRow.vue +30 -0
  111. package/src/components/RsTabs.vue +951 -0
  112. package/src/components/RsTerminal.vue +697 -0
  113. package/src/components/RsTimePicker.vue +554 -0
  114. package/src/components/RsTimePickerColumns.vue +226 -0
  115. package/src/components/RsToaster.vue +396 -0
  116. package/src/components/RsToolbar.vue +135 -0
  117. package/src/components/RsTooltip.vue +142 -0
  118. package/src/components/RsTooltipProvider.vue +20 -0
  119. package/src/components/RsTree.vue +1248 -0
  120. package/src/components/RsUpload.vue +279 -0
  121. package/src/components/RsVirtualList.vue +217 -0
  122. package/src/components/avatar-utils.ts +19 -0
  123. package/src/components/breadcrumb-utils.ts +19 -0
  124. package/src/components/class-utils.ts +29 -0
  125. package/src/components/code-editor-utils.ts +106 -0
  126. package/src/components/code-mirror-completion.ts +40 -0
  127. package/src/components/code-mirror-diagnostics.ts +52 -0
  128. package/src/components/code-mirror-ghost.ts +158 -0
  129. package/src/components/code-mirror-inline-edit.ts +55 -0
  130. package/src/components/code-mirror-intel.ts +81 -0
  131. package/src/components/code-mirror-lang.ts +128 -0
  132. package/src/components/context-menu-utils.ts +20 -0
  133. package/src/components/date-picker-utils.ts +284 -0
  134. package/src/components/date-range-validation.ts +29 -0
  135. package/src/components/date-validation.ts +38 -0
  136. package/src/components/dialog-viewport.ts +48 -0
  137. package/src/components/dialog-window.ts +253 -0
  138. package/src/components/dropdown-utils.ts +31 -0
  139. package/src/components/form-utils.ts +77 -0
  140. package/src/components/input-number-utils.ts +128 -0
  141. package/src/components/input-rules.ts +84 -0
  142. package/src/components/loading-utils.ts +8 -0
  143. package/src/components/markdown-utils.ts +126 -0
  144. package/src/components/menu-utils.ts +48 -0
  145. package/src/components/overlay-utils.ts +47 -0
  146. package/src/components/pagination-utils.ts +38 -0
  147. package/src/components/popover-utils.ts +8 -0
  148. package/src/components/reka.ts +106 -0
  149. package/src/components/resolve-radius.ts +22 -0
  150. package/src/components/resolve-size.ts +29 -0
  151. package/src/components/scrollbar-utils.ts +10 -0
  152. package/src/components/select-utils.ts +72 -0
  153. package/src/components/split-pane-utils.ts +187 -0
  154. package/src/components/steps-utils.ts +22 -0
  155. package/src/components/table/RsTableBodyRow.vue +287 -0
  156. package/src/components/table/RsTableCell.vue +239 -0
  157. package/src/components/table/RsTableCellContent.ts +18 -0
  158. package/src/components/table/RsTableCellEditor.vue +351 -0
  159. package/src/components/table/RsTableEditGutter.vue +54 -0
  160. package/src/components/table/RsTableHeaderFilter.vue +107 -0
  161. package/src/components/table/RsTableRowStatus.vue +69 -0
  162. package/src/components/table/rs-table.css +1141 -0
  163. package/src/components/table/table-context-menu.ts +53 -0
  164. package/src/components/table/table-edit-utils.ts +496 -0
  165. package/src/components/table/table-keys.ts +12 -0
  166. package/src/components/table-drag.ts +215 -0
  167. package/src/components/table-utils.ts +950 -0
  168. package/src/components/tabs-utils.ts +107 -0
  169. package/src/components/terminal-utils.ts +301 -0
  170. package/src/components/terminal-wheel.ts +49 -0
  171. package/src/components/time-picker-utils.ts +167 -0
  172. package/src/components/time-range-validation.ts +23 -0
  173. package/src/components/time-validation.ts +20 -0
  174. package/src/components/tree-utils.ts +518 -0
  175. package/src/components/upload-utils.ts +55 -0
  176. package/src/components/virtual-list-utils.ts +17 -0
  177. package/src/composables/useClickOutside.ts +22 -0
  178. package/src/composables/useRsConfig.ts +91 -0
  179. package/src/composables/useRsI18n.ts +22 -0
  180. package/src/composables/useRsTabsNav.ts +187 -0
  181. package/src/composables/useRsToast.ts +48 -0
  182. package/src/composables/useTableCellTooltip.ts +239 -0
  183. package/src/composables/useTableEdit.ts +271 -0
  184. package/src/composables/useTableRowHighlight.ts +50 -0
  185. package/src/dev/vite-codemirror-deps.ts +20 -0
  186. package/src/icons/custom/api.ts +54 -0
  187. package/src/icons/custom/clickhouse.ts +52 -0
  188. package/src/icons/custom/dameng.ts +83 -0
  189. package/src/icons/custom/ftp.ts +61 -0
  190. package/src/icons/custom/kingbase.ts +52 -0
  191. package/src/icons/custom/mongodb.ts +50 -0
  192. package/src/icons/custom/mysql.ts +51 -0
  193. package/src/icons/custom/oracle.ts +52 -0
  194. package/src/icons/custom/redis.ts +51 -0
  195. package/src/icons/custom/sqlite.ts +50 -0
  196. package/src/icons/custom/sqlserver.ts +52 -0
  197. package/src/icons/custom/vastbase.ts +57 -0
  198. package/src/icons/lucide.ts +78 -0
  199. package/src/icons/registry.ts +35 -0
  200. package/src/index.ts +425 -0
  201. package/src/lib/iso-local-datetime.ts +152 -0
  202. package/src/lib/rs-dayjs.ts +56 -0
  203. package/src/locale/messages.ts +362 -0
  204. package/src/locale/types.ts +5 -0
  205. package/src/monaco/debug-decorations.css +20 -0
  206. package/src/monaco/debug-decorations.ts +70 -0
  207. package/src/monaco/index.ts +22 -0
  208. package/src/monaco/languages/index.ts +21 -0
  209. package/src/monaco/languages/mongodb-shell.ts +125 -0
  210. package/src/monaco/languages/types.ts +55 -0
  211. package/src/monaco/setup.ts +101 -0
  212. package/src/styles.css +1040 -0
  213. package/src/theme/apply.ts +12 -0
  214. package/src/theme/brand.example.css +37 -0
  215. package/src/theme/presets.ts +69 -0
  216. package/src/theme/types.ts +81 -0
  217. package/src/utils/rs-clipboard.ts +272 -0
  218. package/src/vite-env.d.ts +7 -0
  219. package/vite-plugins/monaco-zh-nls.ts +101 -0
  220. package/vite-plugins/silence-antlr-parse-console.ts +29 -0
@@ -0,0 +1,55 @@
1
+ /** Monaco 内置语言与扩展方言 ID。后续 SQL / YAML 方言在 languages/ 下新增并在此登记。 */
2
+ export type MonacoBuiltinLanguage =
3
+ | 'json'
4
+ | 'javascript'
5
+ | 'typescript'
6
+ | 'sql'
7
+ | 'yaml'
8
+ | 'plaintext'
9
+
10
+ /** SQL 方言 languageId(业务侧注册:Worker 或 Bridge LSP)。
11
+ * 新增方言时在此扩展;Worker 方言另在 setupMonacoWorkers 挂对应 worker。
12
+ */
13
+ export type MonacoSqlLanguageId =
14
+ | 'pgsql'
15
+ | 'mysql'
16
+ | 'genericsql'
17
+ | 'dameng'
18
+ | 'kingbase'
19
+ | 'clickhouse'
20
+ | 'sqlite'
21
+ | 'sqlserver'
22
+ | 'oracle'
23
+
24
+ /** 编辑器 language prop 可传入的全部语言 ID。 */
25
+ export type MonacoLanguage = MonacoBuiltinLanguage | 'mongodb-shell' | MonacoSqlLanguageId
26
+
27
+ /** Vastbase / PostgreSQL 在 Monaco 中的 languageId(与 LanguageIdEnum.PG 一致)。 */
28
+ export const MONACO_PGSQL_LANGUAGE = 'pgsql' as const
29
+
30
+ /** MySQL 在 Monaco 中的 languageId(与 LanguageIdEnum.MYSQL 一致)。 */
31
+ export const MONACO_MYSQL_LANGUAGE = 'mysql' as const
32
+
33
+ /** Dameng 在 Monaco 中的 languageId(Bridge LSP)。 */
34
+ export const MONACO_DAMENG_LANGUAGE = 'dameng' as const
35
+
36
+ /** Kingbase 在 Monaco 中的 languageId(Bridge LSP)。 */
37
+ export const MONACO_KINGBASE_LANGUAGE = 'kingbase' as const
38
+
39
+ /** ClickHouse 在 Monaco 中的 languageId(Bridge LSP)。 */
40
+ export const MONACO_CLICKHOUSE_LANGUAGE = 'clickhouse' as const
41
+
42
+ /** SQLite 在 Monaco 中的 languageId(Bridge LSP)。 */
43
+ export const MONACO_SQLITE_LSP_LANGUAGE = 'sqlite' as const
44
+
45
+ /** SQL Server 在 Monaco 中的 languageId(Bridge LSP)。 */
46
+ export const MONACO_SQLSERVER_LANGUAGE = 'sqlserver' as const
47
+
48
+ /** Oracle 在 Monaco 中的 languageId(Bridge LSP)。 */
49
+ export const MONACO_ORACLE_LANGUAGE = 'oracle' as const
50
+
51
+ /** Generic SQL / 旧 Worker 在 Monaco 中的 languageId(与 LanguageIdEnum.GENERIC 一致)。 */
52
+ export const MONACO_GENERIC_SQL_LANGUAGE = 'genericsql' as const
53
+
54
+ /** @deprecated 使用 MONACO_GENERIC_SQL_LANGUAGE;Wire ID 同为 genericsql */
55
+ export const MONACO_SQLITE_LANGUAGE = MONACO_GENERIC_SQL_LANGUAGE
@@ -0,0 +1,101 @@
1
+ const hoverContainerPatchKey = '__rsHoverFixedContainerPatch'
2
+
3
+ type HoverShowOptions = { container?: HTMLElement }
4
+ type HoverServiceProto = {
5
+ [hoverContainerPatchKey]?: boolean
6
+ _showHover?(
7
+ hover: unknown,
8
+ options: HoverShowOptions | undefined,
9
+ focus: boolean,
10
+ ): unknown
11
+ }
12
+
13
+ type WorkerCtor = new () => Worker
14
+
15
+ /** 各 label 只动态 import 一次 Worker 构造器;实例按需 new。 */
16
+ const workerCtorCache = new Map<string, Promise<WorkerCtor>>()
17
+
18
+ function loadWorkerCtor(
19
+ key: string,
20
+ loader: () => Promise<{ default?: WorkerCtor } | WorkerCtor>,
21
+ ): Promise<WorkerCtor> {
22
+ let pending = workerCtorCache.get(key)
23
+ if (!pending) {
24
+ pending = loader().then((mod) => {
25
+ const Ctor =
26
+ typeof mod === 'function'
27
+ ? mod
28
+ : (mod as { default?: WorkerCtor }).default
29
+ if (typeof Ctor !== 'function') {
30
+ throw new Error(`[monaco] Worker constructor missing for "${key}"`)
31
+ }
32
+ return Ctor
33
+ })
34
+ workerCtorCache.set(key, pending)
35
+ }
36
+ return pending
37
+ }
38
+
39
+ /**
40
+ * Find Widget 按钮的 hover tooltip 默认挂在编辑器容器内并以 absolute 定位。
41
+ * 外层若有 overflow:hidden / 滚动容器,tooltip 会被裁剪或坐标偏移。
42
+ * 改为挂到 document.body 并走 fixed 定位(Monaco ContextView 内置逻辑)。
43
+ */
44
+ function patchMonacoHoverContainer(HoverService: {
45
+ prototype: HoverServiceProto
46
+ }): void {
47
+ const proto = HoverService.prototype
48
+ if (proto[hoverContainerPatchKey] || !proto._showHover) return
49
+
50
+ const original = proto._showHover
51
+ proto._showHover = function (
52
+ hover: unknown,
53
+ options: HoverShowOptions | undefined,
54
+ focus: boolean,
55
+ ) {
56
+ if (options) {
57
+ options.container = document.body
58
+ }
59
+ return original.call(this, hover, options, focus)
60
+ }
61
+ proto[hoverContainerPatchKey] = true
62
+ }
63
+
64
+ async function ensureHoverPatch(): Promise<void> {
65
+ // @ts-expect-error Monaco 内部 ESM 路径无类型声明
66
+ const mod = await import('monaco-editor/esm/vs/platform/hover/browser/hoverService.js')
67
+ patchMonacoHoverContainer(mod.HoverService)
68
+ }
69
+
70
+ /**
71
+ * 配置 Monaco Editor Web Worker 环境(仅注册工厂,不预创建线程、不预拉 Worker 脚本)。
72
+ *
73
+ * SQL 方言不再使用 monaco-sql-languages Worker:
74
+ * MySQL → Bridge LSP;其余方言静默内置 `sql`(仅 editor.worker)。
75
+ *
76
+ * 必须在任何 Monaco Editor 实例创建前调用一次(通常在应用入口 main.ts 顶部)。
77
+ */
78
+ export function setupMonacoWorkers(): void {
79
+ if (typeof window === 'undefined') return
80
+
81
+ void ensureHoverPatch()
82
+
83
+ window.MonacoEnvironment = {
84
+ getWorker(_workerId: string, label: string): Promise<Worker> {
85
+ if (label === 'json') {
86
+ return loadWorkerCtor('json', () =>
87
+ import('monaco-editor/esm/vs/language/json/json.worker?worker'),
88
+ ).then((Ctor) => new Ctor())
89
+ }
90
+ if (label === 'typescript' || label === 'javascript') {
91
+ return loadWorkerCtor('typescript', () =>
92
+ import('monaco-editor/esm/vs/language/typescript/ts.worker?worker'),
93
+ ).then((Ctor) => new Ctor())
94
+ }
95
+ // 任意遗留 pgsql/mysql/genericsql label 也回落到 editor.worker(静默)
96
+ return loadWorkerCtor('editor', () =>
97
+ import('monaco-editor/esm/vs/editor/editor.worker?worker'),
98
+ ).then((Ctor) => new Ctor())
99
+ },
100
+ }
101
+ }