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.
- package/CHANGELOG.md +29 -0
- package/LICENSE +202 -0
- package/NOTICE +25 -0
- package/README.en.md +99 -0
- package/README.md +161 -0
- package/package.json +106 -0
- package/src/__tests__/RsBadge.spec.ts +40 -0
- package/src/__tests__/RsBreadcrumb.spec.ts +172 -0
- package/src/__tests__/RsButton.spec.ts +108 -0
- package/src/__tests__/RsCalendarGrid.spec.ts +82 -0
- package/src/__tests__/RsCard.spec.ts +97 -0
- package/src/__tests__/RsCheckbox.spec.ts +36 -0
- package/src/__tests__/RsCodeEditor.spec.ts +111 -0
- package/src/__tests__/RsConfirmDialog.spec.ts +158 -0
- package/src/__tests__/RsContainer.spec.ts +89 -0
- package/src/__tests__/RsContextMenu.spec.ts +118 -0
- package/src/__tests__/RsDatePicker.spec.ts +88 -0
- package/src/__tests__/RsDateTimePicker.spec.ts +69 -0
- package/src/__tests__/RsDialog.spec.ts +404 -0
- package/src/__tests__/RsDrawer.spec.ts +145 -0
- package/src/__tests__/RsDropdown.spec.ts +135 -0
- package/src/__tests__/RsEmpty.spec.ts +99 -0
- package/src/__tests__/RsForm.spec.ts +173 -0
- package/src/__tests__/RsIcon.spec.ts +244 -0
- package/src/__tests__/RsInput.spec.ts +269 -0
- package/src/__tests__/RsInputNumber.spec.ts +118 -0
- package/src/__tests__/RsLabel.spec.ts +106 -0
- package/src/__tests__/RsLink.spec.ts +49 -0
- package/src/__tests__/RsLoading.spec.ts +84 -0
- package/src/__tests__/RsMarkdown.spec.ts +143 -0
- package/src/__tests__/RsMenu.spec.ts +119 -0
- package/src/__tests__/RsNewComponents.spec.ts +17 -0
- package/src/__tests__/RsPagination.spec.ts +158 -0
- package/src/__tests__/RsPopover.spec.ts +126 -0
- package/src/__tests__/RsScrollbar.spec.ts +53 -0
- package/src/__tests__/RsSelect.spec.ts +291 -0
- package/src/__tests__/RsSidebar.spec.ts +119 -0
- package/src/__tests__/RsSplitPane.spec.ts +177 -0
- package/src/__tests__/RsStatCard.spec.ts +79 -0
- package/src/__tests__/RsSteps.spec.ts +125 -0
- package/src/__tests__/RsTable.perf.spec.ts +103 -0
- package/src/__tests__/RsTable.spec.ts +1135 -0
- package/src/__tests__/RsTabs.spec.ts +328 -0
- package/src/__tests__/RsTerminal.spec.ts +218 -0
- package/src/__tests__/RsTimePicker.spec.ts +77 -0
- package/src/__tests__/RsToaster.spec.ts +95 -0
- package/src/__tests__/RsToolbar.spec.ts +75 -0
- package/src/__tests__/RsTooltip.spec.ts +111 -0
- package/src/__tests__/RsTree.spec.ts +572 -0
- package/src/__tests__/RsUpload.spec.ts +160 -0
- package/src/__tests__/RsVirtualList.spec.ts +77 -0
- package/src/__tests__/date-picker-utils.spec.ts +70 -0
- package/src/__tests__/dialog-viewport.spec.ts +38 -0
- package/src/__tests__/iso-local-datetime.spec.ts +58 -0
- package/src/__tests__/rs-clipboard.spec.ts +142 -0
- package/src/__tests__/setup.ts +12 -0
- package/src/__tests__/split-pane-utils.spec.ts +136 -0
- package/src/__tests__/table-drag.spec.ts +35 -0
- package/src/__tests__/table-edit-utils.spec.ts +194 -0
- package/src/__tests__/table-utils.spec.ts +286 -0
- package/src/__tests__/theme.spec.ts +22 -0
- package/src/__tests__/tree-utils.spec.ts +234 -0
- package/src/__tests__/useTableCellTooltip.spec.ts +101 -0
- package/src/components/RsAvatar.vue +115 -0
- package/src/components/RsBadge.vue +59 -0
- package/src/components/RsBreadcrumb.vue +65 -0
- package/src/components/RsBreadcrumbItems.vue +36 -0
- package/src/components/RsButton.vue +393 -0
- package/src/components/RsCalendarGrid.vue +284 -0
- package/src/components/RsCard.vue +237 -0
- package/src/components/RsCheckbox.vue +189 -0
- package/src/components/RsCodeBlock.vue +278 -0
- package/src/components/RsCodeEditor.vue +597 -0
- package/src/components/RsConfigProvider.vue +92 -0
- package/src/components/RsConfirmDialog.vue +178 -0
- package/src/components/RsContainer.vue +235 -0
- package/src/components/RsContextMenu.vue +238 -0
- package/src/components/RsContextMenuItems.vue +77 -0
- package/src/components/RsDatePicker.vue +756 -0
- package/src/components/RsDateTimePicker.vue +42 -0
- package/src/components/RsDialog.vue +486 -0
- package/src/components/RsDrawer.vue +175 -0
- package/src/components/RsDropdown.vue +252 -0
- package/src/components/RsDropdownItems.vue +90 -0
- package/src/components/RsEmpty.vue +107 -0
- package/src/components/RsForm.vue +131 -0
- package/src/components/RsIcon.vue +104 -0
- package/src/components/RsInput.vue +1101 -0
- package/src/components/RsInputNumber.vue +532 -0
- package/src/components/RsLabel.vue +54 -0
- package/src/components/RsLink.vue +106 -0
- package/src/components/RsLoading.vue +171 -0
- package/src/components/RsMarkdown.vue +329 -0
- package/src/components/RsMenu.vue +256 -0
- package/src/components/RsMenuItems.vue +125 -0
- package/src/components/RsMonacoEditor.vue +541 -0
- package/src/components/RsPagination.vue +184 -0
- package/src/components/RsPopover.vue +77 -0
- package/src/components/RsProseEditor.vue +160 -0
- package/src/components/RsScrollbar.vue +171 -0
- package/src/components/RsSelect.vue +1045 -0
- package/src/components/RsSidebar.vue +121 -0
- package/src/components/RsSidebarGroup.vue +32 -0
- package/src/components/RsSidebarItem.vue +72 -0
- package/src/components/RsSplitPane.vue +619 -0
- package/src/components/RsStatCard.vue +85 -0
- package/src/components/RsSteps.vue +138 -0
- package/src/components/RsTable.vue +2664 -0
- package/src/components/RsTableColgroup.vue +17 -0
- package/src/components/RsTableHeaderRow.vue +30 -0
- package/src/components/RsTabs.vue +951 -0
- package/src/components/RsTerminal.vue +697 -0
- package/src/components/RsTimePicker.vue +554 -0
- package/src/components/RsTimePickerColumns.vue +226 -0
- package/src/components/RsToaster.vue +396 -0
- package/src/components/RsToolbar.vue +135 -0
- package/src/components/RsTooltip.vue +142 -0
- package/src/components/RsTooltipProvider.vue +20 -0
- package/src/components/RsTree.vue +1248 -0
- package/src/components/RsUpload.vue +279 -0
- package/src/components/RsVirtualList.vue +217 -0
- package/src/components/avatar-utils.ts +19 -0
- package/src/components/breadcrumb-utils.ts +19 -0
- package/src/components/class-utils.ts +29 -0
- package/src/components/code-editor-utils.ts +106 -0
- package/src/components/code-mirror-completion.ts +40 -0
- package/src/components/code-mirror-diagnostics.ts +52 -0
- package/src/components/code-mirror-ghost.ts +158 -0
- package/src/components/code-mirror-inline-edit.ts +55 -0
- package/src/components/code-mirror-intel.ts +81 -0
- package/src/components/code-mirror-lang.ts +128 -0
- package/src/components/context-menu-utils.ts +20 -0
- package/src/components/date-picker-utils.ts +284 -0
- package/src/components/date-range-validation.ts +29 -0
- package/src/components/date-validation.ts +38 -0
- package/src/components/dialog-viewport.ts +48 -0
- package/src/components/dialog-window.ts +253 -0
- package/src/components/dropdown-utils.ts +31 -0
- package/src/components/form-utils.ts +77 -0
- package/src/components/input-number-utils.ts +128 -0
- package/src/components/input-rules.ts +84 -0
- package/src/components/loading-utils.ts +8 -0
- package/src/components/markdown-utils.ts +126 -0
- package/src/components/menu-utils.ts +48 -0
- package/src/components/overlay-utils.ts +47 -0
- package/src/components/pagination-utils.ts +38 -0
- package/src/components/popover-utils.ts +8 -0
- package/src/components/reka.ts +106 -0
- package/src/components/resolve-radius.ts +22 -0
- package/src/components/resolve-size.ts +29 -0
- package/src/components/scrollbar-utils.ts +10 -0
- package/src/components/select-utils.ts +72 -0
- package/src/components/split-pane-utils.ts +187 -0
- package/src/components/steps-utils.ts +22 -0
- package/src/components/table/RsTableBodyRow.vue +287 -0
- package/src/components/table/RsTableCell.vue +239 -0
- package/src/components/table/RsTableCellContent.ts +18 -0
- package/src/components/table/RsTableCellEditor.vue +351 -0
- package/src/components/table/RsTableEditGutter.vue +54 -0
- package/src/components/table/RsTableHeaderFilter.vue +107 -0
- package/src/components/table/RsTableRowStatus.vue +69 -0
- package/src/components/table/rs-table.css +1141 -0
- package/src/components/table/table-context-menu.ts +53 -0
- package/src/components/table/table-edit-utils.ts +496 -0
- package/src/components/table/table-keys.ts +12 -0
- package/src/components/table-drag.ts +215 -0
- package/src/components/table-utils.ts +950 -0
- package/src/components/tabs-utils.ts +107 -0
- package/src/components/terminal-utils.ts +301 -0
- package/src/components/terminal-wheel.ts +49 -0
- package/src/components/time-picker-utils.ts +167 -0
- package/src/components/time-range-validation.ts +23 -0
- package/src/components/time-validation.ts +20 -0
- package/src/components/tree-utils.ts +518 -0
- package/src/components/upload-utils.ts +55 -0
- package/src/components/virtual-list-utils.ts +17 -0
- package/src/composables/useClickOutside.ts +22 -0
- package/src/composables/useRsConfig.ts +91 -0
- package/src/composables/useRsI18n.ts +22 -0
- package/src/composables/useRsTabsNav.ts +187 -0
- package/src/composables/useRsToast.ts +48 -0
- package/src/composables/useTableCellTooltip.ts +239 -0
- package/src/composables/useTableEdit.ts +271 -0
- package/src/composables/useTableRowHighlight.ts +50 -0
- package/src/dev/vite-codemirror-deps.ts +20 -0
- package/src/icons/custom/api.ts +54 -0
- package/src/icons/custom/clickhouse.ts +52 -0
- package/src/icons/custom/dameng.ts +83 -0
- package/src/icons/custom/ftp.ts +61 -0
- package/src/icons/custom/kingbase.ts +52 -0
- package/src/icons/custom/mongodb.ts +50 -0
- package/src/icons/custom/mysql.ts +51 -0
- package/src/icons/custom/oracle.ts +52 -0
- package/src/icons/custom/redis.ts +51 -0
- package/src/icons/custom/sqlite.ts +50 -0
- package/src/icons/custom/sqlserver.ts +52 -0
- package/src/icons/custom/vastbase.ts +57 -0
- package/src/icons/lucide.ts +78 -0
- package/src/icons/registry.ts +35 -0
- package/src/index.ts +425 -0
- package/src/lib/iso-local-datetime.ts +152 -0
- package/src/lib/rs-dayjs.ts +56 -0
- package/src/locale/messages.ts +362 -0
- package/src/locale/types.ts +5 -0
- package/src/monaco/debug-decorations.css +20 -0
- package/src/monaco/debug-decorations.ts +70 -0
- package/src/monaco/index.ts +22 -0
- package/src/monaco/languages/index.ts +21 -0
- package/src/monaco/languages/mongodb-shell.ts +125 -0
- package/src/monaco/languages/types.ts +55 -0
- package/src/monaco/setup.ts +101 -0
- package/src/styles.css +1040 -0
- package/src/theme/apply.ts +12 -0
- package/src/theme/brand.example.css +37 -0
- package/src/theme/presets.ts +69 -0
- package/src/theme/types.ts +81 -0
- package/src/utils/rs-clipboard.ts +272 -0
- package/src/vite-env.d.ts +7 -0
- package/vite-plugins/monaco-zh-nls.ts +101 -0
- 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
|
+
}
|