niuma-ui 2.0.4 → 2.1.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 +67 -0
- package/NOTICE +0 -1
- package/README.md +3 -3
- package/README.zh-CN.md +3 -3
- package/dist/components/_shared/index.d.ts +2 -2
- package/dist/components/_shared/src/overlay-utils.d.ts +44 -1
- package/dist/components/_shared/src/overlay-utils.js +87 -2
- package/dist/components/alert/index.d.ts +1 -0
- package/dist/components/alert/src/RsAlert.css +120 -65
- package/dist/components/alert/src/RsAlert.d.ts +24 -5
- package/dist/components/alert/src/RsAlert.impl.js +108 -36
- package/dist/components/alert/src/RsAlert.js +1 -1
- package/dist/components/alert/src/alert-utils.d.ts +37 -0
- package/dist/components/alert/src/alert-utils.js +71 -0
- package/dist/components/auto-complete/src/RsAutoComplete.d.ts +1 -1
- package/dist/components/button/src/RsButton.css +75 -72
- package/dist/components/button/src/RsButton.d.ts +1 -4
- package/dist/components/button/src/RsButton.impl.js +3 -7
- package/dist/components/button/src/RsButton.js +1 -1
- package/dist/components/card/src/RsCard.d.ts +1 -1
- package/dist/components/code-block/index.d.ts +1 -0
- package/dist/components/code-block/src/RsCodeBlock.css +93 -52
- package/dist/components/code-block/src/RsCodeBlock.d.ts +36 -9
- package/dist/components/code-block/src/RsCodeBlock.impl.js +203 -84
- package/dist/components/code-block/src/RsCodeBlock.js +1 -1
- package/dist/components/code-block/src/code-block-highlight.d.ts +4 -0
- package/dist/components/code-block/src/code-block-highlight.js +34 -0
- package/dist/components/code-block/src/code-block-utils.d.ts +23 -0
- package/dist/components/code-block/src/code-block-utils.js +71 -0
- package/dist/components/code-editor/index.d.ts +1 -1
- package/dist/components/code-editor/src/RsCodeEditor.css +118 -92
- package/dist/components/code-editor/src/RsCodeEditor.d.ts +14 -3
- package/dist/components/code-editor/src/RsCodeEditor.impl.js +261 -94
- package/dist/components/code-editor/src/RsCodeEditor.js +1 -1
- package/dist/components/code-editor/src/code-editor-utils.d.ts +15 -0
- package/dist/components/code-editor/src/code-editor-utils.js +36 -1
- package/dist/components/code-editor/src/code-mirror-completion.d.ts +1 -1
- package/dist/components/code-editor/src/code-mirror-completion.js +8 -5
- package/dist/components/code-editor/src/code-mirror-diagnostics.d.ts +2 -3
- package/dist/components/code-editor/src/code-mirror-diagnostics.js +3 -4
- package/dist/components/code-editor/src/code-mirror-ghost.d.ts +1 -1
- package/dist/components/code-editor/src/code-mirror-ghost.js +12 -3
- package/dist/components/code-editor/src/code-mirror-inline-edit.js +8 -3
- package/dist/components/code-editor/src/code-mirror-intel.d.ts +2 -2
- package/dist/components/code-editor/src/code-mirror-intel.js +50 -39
- package/dist/components/code-editor/src/code-mirror-lang.js +4 -0
- package/dist/components/code-editor/src/code-mirror-session.d.ts +13 -0
- package/dist/components/code-editor/src/code-mirror-session.js +30 -0
- package/dist/components/config-provider/src/RsConfigProvider.css +1 -1
- package/dist/components/config-provider/src/RsConfigProvider.d.ts +2 -2
- package/dist/components/config-provider/src/RsConfigProvider.impl.js +7 -16
- package/dist/components/config-provider/src/RsConfigProvider.js +1 -1
- package/dist/components/context-menu/index.d.ts +1 -1
- package/dist/components/context-menu/src/RsContextMenu.css +115 -89
- package/dist/components/context-menu/src/RsContextMenu.d.ts +32 -11
- package/dist/components/context-menu/src/RsContextMenu.impl.js +795 -48
- package/dist/components/context-menu/src/RsContextMenuItems.d.ts +25 -1
- package/dist/components/context-menu/src/RsContextMenuItems.impl.js +110 -61
- package/dist/components/context-menu/src/context-menu-utils.d.ts +89 -3
- package/dist/components/context-menu/src/context-menu-utils.js +168 -3
- package/dist/components/date-picker/src/RsDatePicker.d.ts +2 -2
- package/dist/components/date-picker/src/RsDateTimePicker.d.ts +2 -2
- package/dist/components/descriptions/index.d.ts +1 -1
- package/dist/components/descriptions/src/RsDescriptions.css +38 -11
- package/dist/components/descriptions/src/RsDescriptions.d.ts +20 -4
- package/dist/components/descriptions/src/RsDescriptions.impl.js +89 -19
- package/dist/components/descriptions/src/RsDescriptionsItem.impl.js +13 -6
- package/dist/components/descriptions/src/descriptions-utils.d.ts +19 -0
- package/dist/components/descriptions/src/descriptions-utils.js +39 -1
- package/dist/components/dialog/index.d.ts +1 -1
- package/dist/components/dialog/src/RsConfirmDialog.css +47 -21
- package/dist/components/dialog/src/RsConfirmDialog.d.ts +19 -7
- package/dist/components/dialog/src/RsConfirmDialog.impl.js +349 -119
- package/dist/components/dialog/src/RsConfirmDialog.js +2 -1
- package/dist/components/dialog/src/RsDialog.css +102 -109
- package/dist/components/dialog/src/RsDialog.d.ts +34 -24
- package/dist/components/dialog/src/RsDialog.impl.js +410 -177
- package/dist/components/dialog/src/RsDialog.js +2 -1
- package/dist/components/dialog/src/dialog-utils.d.ts +40 -1
- package/dist/components/dialog/src/dialog-utils.js +152 -1
- package/dist/components/dialog/src/dialog-window.js +29 -8
- package/dist/components/drawer/index.d.ts +1 -1
- package/dist/components/drawer/src/RsDrawer.css +61 -29
- package/dist/components/drawer/src/RsDrawer.d.ts +37 -21
- package/dist/components/drawer/src/RsDrawer.impl.js +441 -223
- package/dist/components/drawer/src/drawer-utils.d.ts +35 -0
- package/dist/components/drawer/src/drawer-utils.js +131 -1
- package/dist/components/dropdown/index.d.ts +1 -1
- package/dist/components/dropdown/src/RsDropdown.css +140 -61
- package/dist/components/dropdown/src/RsDropdown.d.ts +39 -6
- package/dist/components/dropdown/src/RsDropdown.impl.js +693 -63
- package/dist/components/dropdown/src/RsDropdownItemView.impl.js +17 -7
- package/dist/components/dropdown/src/RsDropdownItems.d.ts +32 -3
- package/dist/components/dropdown/src/RsDropdownItems.impl.js +171 -59
- package/dist/components/dropdown/src/dropdown-utils.d.ts +50 -0
- package/dist/components/dropdown/src/dropdown-utils.js +103 -3
- package/dist/components/empty/index.d.ts +1 -0
- package/dist/components/empty/src/RsEmpty.css +105 -23
- package/dist/components/empty/src/RsEmpty.d.ts +27 -4
- package/dist/components/empty/src/RsEmpty.impl.js +154 -11
- package/dist/components/empty/src/RsEmpty.js +2 -1
- package/dist/components/empty/src/empty-utils.d.ts +28 -0
- package/dist/components/empty/src/empty-utils.js +55 -0
- package/dist/components/form/src/RsForm.d.ts +1 -1
- package/dist/components/input-number/src/RsInputNumber.d.ts +1 -1
- package/dist/components/label/src/RsLabel.d.ts +1 -1
- package/dist/components/loading/index.d.ts +1 -0
- package/dist/components/loading/src/RsLoading.css +13 -97
- package/dist/components/loading/src/RsLoading.d.ts +52 -2
- package/dist/components/loading/src/RsLoading.impl.js +216 -33
- package/dist/components/loading/src/RsLoading.js +2 -1
- package/dist/components/loading/src/loading-status.css +210 -0
- package/dist/components/loading/src/loading-status.d.ts +34 -0
- package/dist/components/loading/src/loading-status.impl.js +84 -0
- package/dist/components/loading/src/loading-status.js +8 -0
- package/dist/components/loading/src/loading-utils.d.ts +51 -4
- package/dist/components/loading/src/loading-utils.js +122 -0
- package/dist/components/loading-bar/index.d.ts +1 -0
- package/dist/components/loading-bar/src/RsLoadingBar.css +72 -8
- package/dist/components/loading-bar/src/RsLoadingBar.d.ts +55 -11
- package/dist/components/loading-bar/src/RsLoadingBar.impl.js +298 -57
- package/dist/components/loading-bar/src/RsLoadingBar.js +1 -1
- package/dist/components/loading-bar/src/loading-bar-utils.d.ts +69 -0
- package/dist/components/loading-bar/src/loading-bar-utils.js +97 -0
- package/dist/components/log/src/RsLog.css +52 -144
- package/dist/components/log/src/RsLog.d.ts +12 -11
- package/dist/components/log/src/RsLog.impl.js +181 -148
- package/dist/components/log/src/RsLog.js +1 -1
- package/dist/components/log/src/RsLogRow.css +152 -0
- package/dist/components/log/src/RsLogRow.d.ts +35 -0
- package/dist/components/log/src/RsLogRow.impl.js +91 -0
- package/dist/components/log/src/RsLogRow.js +8 -0
- package/dist/components/log/src/log-utils.d.ts +8 -0
- package/dist/components/log/src/log-utils.js +71 -10
- package/dist/components/markdown/index.d.ts +1 -1
- package/dist/components/markdown/src/RsMarkdown.css +75 -32
- package/dist/components/markdown/src/RsMarkdown.d.ts +6 -2
- package/dist/components/markdown/src/RsMarkdown.impl.js +185 -17
- package/dist/components/markdown/src/markdown-utils.d.ts +26 -0
- package/dist/components/markdown/src/markdown-utils.js +114 -12
- package/dist/components/mentions/src/RsMentions.d.ts +2 -2
- package/dist/components/menu/index.d.ts +1 -1
- package/dist/components/menu/src/RsMenu.css +70 -29
- package/dist/components/menu/src/RsMenu.d.ts +58 -4
- package/dist/components/menu/src/RsMenu.impl.js +93 -46
- package/dist/components/menu/src/RsMenuItems.d.ts +22 -5
- package/dist/components/menu/src/RsMenuItems.impl.js +506 -154
- package/dist/components/menu/src/menu-utils.d.ts +56 -0
- package/dist/components/menu/src/menu-utils.js +139 -6
- package/dist/components/monaco-editor/index.d.ts +1 -1
- package/dist/components/monaco-editor/src/RsMonacoEditor.css +28 -16
- package/dist/components/monaco-editor/src/RsMonacoEditor.d.ts +39 -41
- package/dist/components/monaco-editor/src/RsMonacoEditor.impl.js +212 -133
- package/dist/components/monaco-editor/src/RsMonacoEditor.js +1 -1
- package/dist/components/monaco-editor/src/monaco-editor-utils.d.ts +126 -0
- package/dist/components/monaco-editor/src/monaco-editor-utils.js +302 -0
- package/dist/components/pagination/index.d.ts +2 -2
- package/dist/components/pagination/src/RsPagination.css +93 -46
- package/dist/components/pagination/src/RsPagination.d.ts +68 -8
- package/dist/components/pagination/src/RsPagination.impl.js +229 -86
- package/dist/components/pagination/src/RsPagination.js +1 -1
- package/dist/components/pagination/src/pagination-utils.d.ts +59 -0
- package/dist/components/pagination/src/pagination-utils.js +105 -1
- package/dist/components/popover/index.d.ts +1 -0
- package/dist/components/popover/src/RsPopover.css +124 -14
- package/dist/components/popover/src/RsPopover.d.ts +38 -7
- package/dist/components/popover/src/RsPopover.impl.js +546 -35
- package/dist/components/popover/src/RsPopover.js +2 -1
- package/dist/components/popover/src/popover-utils.d.ts +24 -2
- package/dist/components/popover/src/popover-utils.js +55 -0
- package/dist/components/sidebar/index.d.ts +1 -0
- package/dist/components/sidebar/src/RsSidebar.css +91 -33
- package/dist/components/sidebar/src/RsSidebar.d.ts +17 -9
- package/dist/components/sidebar/src/RsSidebar.impl.js +124 -22
- package/dist/components/sidebar/src/RsSidebar.js +1 -1
- package/dist/components/sidebar/src/RsSidebarGroup.css +23 -6
- package/dist/components/sidebar/src/RsSidebarGroup.d.ts +6 -2
- package/dist/components/sidebar/src/RsSidebarGroup.impl.js +17 -4
- package/dist/components/sidebar/src/RsSidebarGroup.js +1 -1
- package/dist/components/sidebar/src/RsSidebarItem.css +50 -20
- package/dist/components/sidebar/src/RsSidebarItem.d.ts +21 -3
- package/dist/components/sidebar/src/RsSidebarItem.impl.js +71 -20
- package/dist/components/sidebar/src/RsSidebarItem.js +1 -1
- package/dist/components/sidebar/src/sidebar-utils.d.ts +47 -0
- package/dist/components/sidebar/src/sidebar-utils.js +72 -0
- package/dist/components/split-pane/index.d.ts +2 -2
- package/dist/components/split-pane/src/RsSplitPane.css +41 -30
- package/dist/components/split-pane/src/RsSplitPane.d.ts +6 -2
- package/dist/components/split-pane/src/RsSplitPane.impl.js +153 -45
- package/dist/components/split-pane/src/split-pane-utils.d.ts +23 -0
- package/dist/components/split-pane/src/split-pane-utils.js +18 -1
- package/dist/components/stat-card/index.d.ts +1 -0
- package/dist/components/stat-card/src/RsStatCard.css +129 -25
- package/dist/components/stat-card/src/RsStatCard.d.ts +40 -4
- package/dist/components/stat-card/src/RsStatCard.impl.js +106 -12
- package/dist/components/stat-card/src/RsStatCard.js +1 -1
- package/dist/components/stat-card/src/stat-card-utils.d.ts +39 -0
- package/dist/components/stat-card/src/stat-card-utils.js +113 -0
- package/dist/components/steps/index.d.ts +1 -1
- package/dist/components/steps/src/RsSteps.css +158 -37
- package/dist/components/steps/src/RsSteps.d.ts +69 -5
- package/dist/components/steps/src/RsSteps.impl.js +168 -28
- package/dist/components/steps/src/RsSteps.js +1 -1
- package/dist/components/steps/src/steps-utils.d.ts +51 -1
- package/dist/components/steps/src/steps-utils.js +67 -1
- package/dist/components/table/src/RsTable.impl.js +4 -2
- package/dist/components/table/src/composables/useRsTableContextMenu.d.ts +16 -0
- package/dist/components/table/src/composables/useRsTableContextMenu.js +1 -1
- package/dist/components/table/src/composables/useRsTableEngine.js +6 -2
- package/dist/components/table/src/composables/useRsTableScrollLayout.js +2 -0
- package/dist/components/table/src/composables/useRsTableShell.d.ts +16 -0
- package/dist/components/table/src/rs-table-props.d.ts +1 -1
- package/dist/components/table/src/rs-table-props.js +0 -1
- package/dist/components/table/src/table-body/RsTableBody.impl.js +1 -0
- package/dist/components/table/src/table-body/RsTableCell.impl.js +1 -1
- package/dist/components/table/src/table-body/RsTableCellEditor.impl.js +10 -2
- package/dist/components/table/src/table-body/RsTableColGroup.impl.js +1 -0
- package/dist/components/table/src/table-footer/RsTableSummaryRow.impl.js +1 -0
- package/dist/components/table/src/table-header/RsTableHeader.impl.js +1 -0
- package/dist/components/table/src/utils/table-utils.d.ts +10 -6
- package/dist/components/table/src/utils/table-utils.js +27 -25
- package/dist/components/table/style/rs-table.css +86 -28
- package/dist/components/tabs/index.d.ts +2 -2
- package/dist/components/tabs/src/RsTabs.css +225 -101
- package/dist/components/tabs/src/RsTabs.d.ts +37 -8
- package/dist/components/tabs/src/RsTabs.impl.js +400 -270
- package/dist/components/tabs/src/tabs-utils.d.ts +41 -2
- package/dist/components/tabs/src/tabs-utils.js +55 -1
- package/dist/components/terminal/index.d.ts +1 -1
- package/dist/components/terminal/src/RsTerminal.css +60 -37
- package/dist/components/terminal/src/RsTerminal.d.ts +36 -4
- package/dist/components/terminal/src/RsTerminal.impl.js +288 -68
- package/dist/components/terminal/src/RsTerminal.js +1 -1
- package/dist/components/terminal/src/terminal-utils.d.ts +42 -4
- package/dist/components/terminal/src/terminal-utils.js +113 -10
- package/dist/components/textarea/src/RsTextarea.d.ts +1 -1
- package/dist/components/time-picker/src/RsTimePicker.d.ts +2 -2
- package/dist/components/toaster/src/RsToaster.css +156 -203
- package/dist/components/toaster/src/RsToaster.d.ts +32 -2
- package/dist/components/toaster/src/RsToaster.impl.js +309 -34
- package/dist/components/toaster/src/toast-store.d.ts +95 -0
- package/dist/components/toaster/src/toast-store.js +177 -0
- package/dist/components/toaster/src/toast-utils.d.ts +60 -0
- package/dist/components/toaster/src/toast-utils.js +86 -0
- package/dist/components/toolbar/index.d.ts +1 -1
- package/dist/components/toolbar/src/RsToolbar.css +206 -32
- package/dist/components/toolbar/src/RsToolbar.d.ts +41 -16
- package/dist/components/toolbar/src/RsToolbar.impl.js +146 -18
- package/dist/components/toolbar/src/RsToolbar.js +2 -1
- package/dist/components/toolbar/src/toolbar-utils.d.ts +20 -0
- package/dist/components/toolbar/src/toolbar-utils.js +105 -0
- package/dist/components/tooltip/index.d.ts +1 -0
- package/dist/components/tooltip/src/RsTooltip.css +104 -26
- package/dist/components/tooltip/src/RsTooltip.d.ts +38 -16
- package/dist/components/tooltip/src/RsTooltip.impl.js +420 -51
- package/dist/components/tooltip/src/RsTooltip.js +2 -1
- package/dist/components/tooltip/src/RsTooltipProvider.d.ts +4 -4
- package/dist/components/tooltip/src/RsTooltipProvider.impl.js +51 -14
- package/dist/components/tooltip/src/tooltip-utils.d.ts +30 -0
- package/dist/components/tooltip/src/tooltip-utils.js +23 -0
- package/dist/components/tree/index.d.ts +2 -2
- package/dist/components/tree/src/RsTree.css +84 -75
- package/dist/components/tree/src/RsTree.d.ts +20 -20
- package/dist/components/tree/src/RsTree.impl.js +292 -66
- package/dist/components/tree/src/RsTree.js +1 -1
- package/dist/components/tree/src/tree-utils.d.ts +22 -0
- package/dist/components/tree/src/tree-utils.js +18 -4
- package/dist/components/tree-select/src/RsTreeSelect.d.ts +1 -1
- package/dist/components/virtual-list/index.d.ts +1 -1
- package/dist/components/virtual-list/src/RsVirtualList.css +64 -9
- package/dist/components/virtual-list/src/RsVirtualList.d.ts +31 -5
- package/dist/components/virtual-list/src/RsVirtualList.impl.js +425 -76
- package/dist/components/virtual-list/src/RsVirtualList.js +1 -1
- package/dist/components/virtual-list/src/virtual-list-utils.d.ts +64 -1
- package/dist/components/virtual-list/src/virtual-list-utils.js +215 -1
- package/dist/composables/useRsLoadingBar.d.ts +2 -5
- package/dist/composables/useRsLoadingBar.js +21 -5
- package/dist/composables/useRsTabsNav.d.ts +3 -1
- package/dist/composables/useRsTabsNav.js +96 -28
- package/dist/composables/useRsToast.d.ts +11 -13
- package/dist/composables/useRsToast.js +66 -17
- package/dist/index.d.ts +30 -21
- package/dist/index.js +14 -0
- package/dist/locale/apply.js +6 -1
- package/dist/locale/messages.js +128 -2
- package/dist/styles.css +465 -808
- package/dist/theme/brand.example.css +3 -2
- package/dist/vite-plugins/niuma-ui-host.js +1 -1
- package/package.json +2 -5
- package/dist/components/_shared/src/reka.d.ts +0 -2
- package/dist/components/_shared/src/reka.js +0 -2
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useRsI18n } from "../../../composables/useRsI18n.js";
|
|
2
|
+
import { rsRadiusCss, useResolvedRsRadius } from "../../_shared/src/resolve-radius.js";
|
|
2
3
|
/* empty css */
|
|
3
4
|
import { applyMonacoDebugDecorations } from "../../../monaco/debug-decorations2.js";
|
|
4
|
-
import "../../../monaco/languages/types.js";
|
|
5
5
|
import { ensureMongodbShellLanguage } from "../../../monaco/languages/mongodb-shell.js";
|
|
6
|
-
import {
|
|
6
|
+
import { RS_MONACO_SCHEMA_PREFIX, applySharedMonacoTheme, completionLanguages, completionReplaceRange, createMonacoModelUri, isManagedSqlDialect, mergeMonacoEditorOptions, mergeMonacoJsonSchemas, monacoMotionOptions, prefersReducedMotion, readDocumentRsTheme, readMonacoMetrics, readMonacoThemeColors, resolveCompletionPrefix, resolveMonacoHeight, resolveMonacoThemeName, setOwnedMonacoJsonSchema, subscribeDocumentTheme, subscribeReducedMotion, syncMonacoCompletionProvider } from "./monaco-editor-utils.js";
|
|
7
|
+
import { computed, createElementBlock, defineComponent, mergeModels, normalizeClass, normalizeStyle, onMounted, onUnmounted, openBlock, ref, useId, useModel, watch } from "vue";
|
|
7
8
|
import * as monaco from "monaco-editor";
|
|
8
9
|
//#region src/components/monaco-editor/src/RsMonacoEditor.vue?vue&type=script&setup=true&lang.ts
|
|
10
|
+
var _hoisted_1 = ["id", "aria-disabled"];
|
|
9
11
|
var RsMonacoEditor_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
12
|
+
name: "RsMonacoEditor",
|
|
10
13
|
__name: "RsMonacoEditor",
|
|
11
14
|
props: /*@__PURE__*/ mergeModels({
|
|
12
15
|
language: { default: "json" },
|
|
@@ -15,6 +18,10 @@ var RsMonacoEditor_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
|
|
|
15
18
|
type: Boolean,
|
|
16
19
|
default: false
|
|
17
20
|
},
|
|
21
|
+
disabled: {
|
|
22
|
+
type: Boolean,
|
|
23
|
+
default: false
|
|
24
|
+
},
|
|
18
25
|
theme: { default: "auto" },
|
|
19
26
|
minimap: {
|
|
20
27
|
type: Boolean,
|
|
@@ -30,6 +37,7 @@ var RsMonacoEditor_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
|
|
|
30
37
|
type: Boolean,
|
|
31
38
|
default: false
|
|
32
39
|
},
|
|
40
|
+
radius: {},
|
|
33
41
|
jsonSchema: {},
|
|
34
42
|
snippets: {},
|
|
35
43
|
completionRequest: {},
|
|
@@ -41,26 +49,54 @@ var RsMonacoEditor_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
|
|
|
41
49
|
","
|
|
42
50
|
] },
|
|
43
51
|
completionPrefixResolver: {},
|
|
44
|
-
options: {}
|
|
52
|
+
options: {},
|
|
53
|
+
placeholder: {},
|
|
54
|
+
ariaLabel: {},
|
|
55
|
+
id: {},
|
|
56
|
+
contextMenu: {
|
|
57
|
+
type: Boolean,
|
|
58
|
+
default: true
|
|
59
|
+
}
|
|
45
60
|
}, {
|
|
46
61
|
"modelValue": { default: "" },
|
|
47
62
|
"modelModifiers": {}
|
|
48
63
|
}),
|
|
49
|
-
emits: /*@__PURE__*/ mergeModels([
|
|
64
|
+
emits: /*@__PURE__*/ mergeModels([
|
|
65
|
+
"glyphMarginClick",
|
|
66
|
+
"focus",
|
|
67
|
+
"blur",
|
|
68
|
+
"ready",
|
|
69
|
+
"contextmenu"
|
|
70
|
+
], ["update:modelValue"]),
|
|
50
71
|
setup(__props, { expose: __expose, emit: __emit }) {
|
|
51
72
|
const props = __props;
|
|
52
73
|
const emit = __emit;
|
|
53
74
|
const model = useModel(__props, "modelValue");
|
|
75
|
+
const { t } = useRsI18n();
|
|
76
|
+
const autoId = useId();
|
|
77
|
+
const rootId = computed(() => props.id || autoId);
|
|
78
|
+
const resolvedAriaLabel = computed(() => props.ariaLabel || t("monaco.label"));
|
|
79
|
+
const resolvedRadius = useResolvedRsRadius(() => props.radius, "md");
|
|
80
|
+
const frameStyle = computed(() => ({
|
|
81
|
+
height: resolveMonacoHeight(props.height),
|
|
82
|
+
"--rs-monaco-radius": props.embedded ? "inherit" : rsRadiusCss(resolvedRadius.value)
|
|
83
|
+
}));
|
|
54
84
|
const editorEl = ref(null);
|
|
55
85
|
let editor = null;
|
|
56
86
|
let editorModel = null;
|
|
57
|
-
/**
|
|
87
|
+
/** 每个 JSON 实例的唯一 schema URI,用于 fileMatch 精确匹配 */
|
|
58
88
|
let schemaUri = "";
|
|
59
|
-
let
|
|
89
|
+
let contentDisposable = null;
|
|
90
|
+
let focusDisposable = null;
|
|
91
|
+
let blurDisposable = null;
|
|
60
92
|
let glyphClickDisposable = null;
|
|
93
|
+
let contextMenuDisposable = null;
|
|
61
94
|
let debugDecoIds = [];
|
|
62
95
|
let suppressChange = false;
|
|
63
96
|
let unmounted = false;
|
|
97
|
+
let completionGeneration = 0;
|
|
98
|
+
let unsubscribeTheme = null;
|
|
99
|
+
let unsubscribeMotion = null;
|
|
64
100
|
function syncDebugDecorations() {
|
|
65
101
|
if (!editor || !props.glyphMargin) {
|
|
66
102
|
if (editor && debugDecoIds.length) debugDecoIds = editor.deltaDecorations(debugDecoIds, []);
|
|
@@ -75,54 +111,49 @@ var RsMonacoEditor_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
|
|
|
75
111
|
glyphClickDisposable?.dispose();
|
|
76
112
|
glyphClickDisposable = null;
|
|
77
113
|
if (!editor || !props.glyphMargin) return;
|
|
78
|
-
glyphClickDisposable = editor.onMouseDown((
|
|
79
|
-
if (
|
|
80
|
-
const line =
|
|
114
|
+
glyphClickDisposable = editor.onMouseDown((event) => {
|
|
115
|
+
if (event.target.type !== monaco.editor.MouseTargetType.GUTTER_GLYPH_MARGIN) return;
|
|
116
|
+
const line = event.target.position?.lineNumber;
|
|
81
117
|
if (!line) return;
|
|
82
118
|
emit("glyphMarginClick", line);
|
|
83
119
|
});
|
|
84
120
|
}
|
|
85
|
-
function
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
fileMatch: [schemaUri],
|
|
105
|
-
schema: props.jsonSchema
|
|
106
|
-
});
|
|
107
|
-
defaults.setDiagnosticsOptions({
|
|
108
|
-
...existing,
|
|
109
|
-
validate: true,
|
|
110
|
-
schemas
|
|
121
|
+
function bindContextMenu() {
|
|
122
|
+
contextMenuDisposable?.dispose();
|
|
123
|
+
contextMenuDisposable = null;
|
|
124
|
+
if (!editor) return;
|
|
125
|
+
contextMenuDisposable = editor.onContextMenu((event) => {
|
|
126
|
+
if (!editor?.getOption(monaco.editor.EditorOption.contextmenu)) {
|
|
127
|
+
event.event.preventDefault();
|
|
128
|
+
event.event.stopPropagation();
|
|
129
|
+
}
|
|
130
|
+
const position = event.target.position;
|
|
131
|
+
const selection = editor?.getSelection();
|
|
132
|
+
const selectedText = position && selection && editorModel && !selection.isEmpty() && selection.containsPosition(position) ? editorModel.getValueInRange(selection) : "";
|
|
133
|
+
emit("contextmenu", {
|
|
134
|
+
line: position?.lineNumber ?? 0,
|
|
135
|
+
column: position?.column ?? 0,
|
|
136
|
+
selectedText,
|
|
137
|
+
x: event.event.browserEvent.clientX,
|
|
138
|
+
y: event.event.browserEvent.clientY
|
|
139
|
+
});
|
|
111
140
|
});
|
|
112
141
|
}
|
|
113
|
-
function
|
|
114
|
-
if (!schemaUri) return;
|
|
142
|
+
function publishJsonSchemas() {
|
|
115
143
|
const defaults = monaco.json.jsonDefaults;
|
|
116
144
|
const existing = defaults.diagnosticsOptions;
|
|
117
|
-
const schemas = (existing.schemas
|
|
145
|
+
const schemas = mergeMonacoJsonSchemas(existing.schemas);
|
|
146
|
+
const owned = schemas.some((item) => item.uri.startsWith(RS_MONACO_SCHEMA_PREFIX));
|
|
118
147
|
defaults.setDiagnosticsOptions({
|
|
119
148
|
...existing,
|
|
149
|
+
...owned ? { validate: true } : {},
|
|
120
150
|
schemas
|
|
121
151
|
});
|
|
122
152
|
}
|
|
123
|
-
function
|
|
124
|
-
|
|
125
|
-
|
|
153
|
+
function applyJsonSchema() {
|
|
154
|
+
if (props.language === "json" && props.jsonSchema && schemaUri) setOwnedMonacoJsonSchema(schemaUri, props.jsonSchema);
|
|
155
|
+
else if (schemaUri) setOwnedMonacoJsonSchema(schemaUri, null);
|
|
156
|
+
publishJsonSchemas();
|
|
126
157
|
}
|
|
127
158
|
function completionKind(kind) {
|
|
128
159
|
switch (kind) {
|
|
@@ -134,59 +165,33 @@ var RsMonacoEditor_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
|
|
|
134
165
|
default: return monaco.languages.CompletionItemKind.Snippet;
|
|
135
166
|
}
|
|
136
167
|
}
|
|
137
|
-
function completionPrefix(line) {
|
|
138
|
-
if (props.completionPrefixResolver) return props.completionPrefixResolver(line);
|
|
139
|
-
let start = line.length;
|
|
140
|
-
while (start > 0 && /[\w$.-]/.test(line[start - 1] ?? "")) start -= 1;
|
|
141
|
-
return line.slice(start);
|
|
142
|
-
}
|
|
143
|
-
function isManagedSqlDialect(language) {
|
|
144
|
-
return language === "mysql" || language === "dameng" || language === "kingbase" || language === "postgresql" || language === "clickhouse" || language === "sqlite" || language === "sqlserver" || language === "oracle";
|
|
145
|
-
}
|
|
146
|
-
/** 合并业务侧 options;suggest 做一层浅合并,避免整对象覆盖默认。 */
|
|
147
|
-
function mergeEditorOptions(overrides) {
|
|
148
|
-
if (!overrides) return {};
|
|
149
|
-
const out = { ...overrides };
|
|
150
|
-
if (overrides.suggest && typeof overrides.suggest === "object" && !Array.isArray(overrides.suggest)) out.suggest = {
|
|
151
|
-
snippetsPreventQuickSuggestions: false,
|
|
152
|
-
filterGraceful: !isManagedSqlDialect(props.language),
|
|
153
|
-
matchOnWordStartOnly: isManagedSqlDialect(props.language),
|
|
154
|
-
...overrides.suggest
|
|
155
|
-
};
|
|
156
|
-
return out;
|
|
157
|
-
}
|
|
158
|
-
function completionLanguages() {
|
|
159
|
-
if (isManagedSqlDialect(props.language)) return [];
|
|
160
|
-
if (props.language === "javascript" || props.language === "typescript" || props.language === "mongodb-shell" || props.language === "plaintext" || props.language === "sql" || props.language === "yaml") return [props.language];
|
|
161
|
-
if (props.language === "json") return ["json"];
|
|
162
|
-
return [];
|
|
163
|
-
}
|
|
164
168
|
function applySnippets() {
|
|
165
|
-
|
|
166
|
-
const languages = completionLanguages();
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
169
|
+
const uri = editorModel?.uri.toString() ?? "";
|
|
170
|
+
const languages = completionLanguages(props.language);
|
|
171
|
+
const enabled = languages.length > 0 && Boolean(props.snippets?.length || props.completionRequest);
|
|
172
|
+
if (!uri || !enabled) {
|
|
173
|
+
if (uri) syncMonacoCompletionProvider(monaco, uri, null);
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
const language = languages[0];
|
|
177
|
+
if (!language) return;
|
|
178
|
+
const generation = completionGeneration;
|
|
179
|
+
syncMonacoCompletionProvider(monaco, uri, {
|
|
180
|
+
language,
|
|
181
|
+
triggers: props.completionTriggerCharacters ?? [],
|
|
182
|
+
provide: async (textModel, position, context, token) => {
|
|
183
|
+
if (generation !== completionGeneration || unmounted || token.isCancellationRequested) return { suggestions: [] };
|
|
184
|
+
const prefix = resolveCompletionPrefix(textModel.getLineContent(position.lineNumber).slice(0, position.column - 1), props.completionPrefixResolver);
|
|
185
|
+
const range = completionReplaceRange(position.lineNumber, position.column, prefix);
|
|
181
186
|
const dynamic = props.completionRequest ? await props.completionRequest({
|
|
182
|
-
text:
|
|
183
|
-
offset:
|
|
187
|
+
text: textModel.getValue(),
|
|
188
|
+
offset: textModel.getOffsetAt(position),
|
|
184
189
|
line: position.lineNumber,
|
|
185
190
|
column: position.column,
|
|
186
191
|
prefix,
|
|
187
192
|
triggerCharacter: context.triggerCharacter
|
|
188
193
|
}) : [];
|
|
189
|
-
if (token.isCancellationRequested) return { suggestions: [] };
|
|
194
|
+
if (generation !== completionGeneration || unmounted || token.isCancellationRequested) return { suggestions: [] };
|
|
190
195
|
return {
|
|
191
196
|
incomplete: true,
|
|
192
197
|
suggestions: [...props.snippets ?? [], ...dynamic].map((snippet) => ({
|
|
@@ -205,50 +210,91 @@ var RsMonacoEditor_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
|
|
|
205
210
|
}
|
|
206
211
|
});
|
|
207
212
|
}
|
|
213
|
+
function applyTheme() {
|
|
214
|
+
if (!editor || !editorEl.value || unmounted) return;
|
|
215
|
+
const host = editorEl.value;
|
|
216
|
+
const metrics = readMonacoMetrics(host);
|
|
217
|
+
const motion = monacoMotionOptions(prefersReducedMotion());
|
|
218
|
+
editor.updateOptions({
|
|
219
|
+
fontFamily: metrics.fontFamily,
|
|
220
|
+
fontSize: metrics.fontSize,
|
|
221
|
+
lineHeight: metrics.lineHeight,
|
|
222
|
+
smoothScrolling: motion.smoothScrolling,
|
|
223
|
+
cursorSmoothCaretAnimation: motion.cursorSmoothCaretAnimation,
|
|
224
|
+
ariaLabel: resolvedAriaLabel.value
|
|
225
|
+
});
|
|
226
|
+
const overrides = mergeMonacoEditorOptions(props.options, props.language);
|
|
227
|
+
if (typeof overrides.theme === "string") {
|
|
228
|
+
monaco.editor.setTheme(overrides.theme);
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
applySharedMonacoTheme(monaco, resolveMonacoThemeName(props.theme, readDocumentRsTheme()), readMonacoThemeColors(host));
|
|
232
|
+
}
|
|
208
233
|
function disposeEditor() {
|
|
209
|
-
|
|
210
|
-
|
|
234
|
+
completionGeneration += 1;
|
|
235
|
+
const uri = editorModel?.uri.toString() ?? "";
|
|
236
|
+
if (uri) syncMonacoCompletionProvider(monaco, uri, null);
|
|
237
|
+
const hadSchema = Boolean(schemaUri);
|
|
238
|
+
if (schemaUri) setOwnedMonacoJsonSchema(schemaUri, null);
|
|
239
|
+
contentDisposable?.dispose();
|
|
240
|
+
contentDisposable = null;
|
|
241
|
+
focusDisposable?.dispose();
|
|
242
|
+
focusDisposable = null;
|
|
243
|
+
blurDisposable?.dispose();
|
|
244
|
+
blurDisposable = null;
|
|
211
245
|
glyphClickDisposable?.dispose();
|
|
212
246
|
glyphClickDisposable = null;
|
|
247
|
+
contextMenuDisposable?.dispose();
|
|
248
|
+
contextMenuDisposable = null;
|
|
213
249
|
debugDecoIds = [];
|
|
214
250
|
editor?.dispose();
|
|
215
251
|
editorModel?.dispose();
|
|
216
252
|
editor = null;
|
|
217
253
|
editorModel = null;
|
|
254
|
+
schemaUri = "";
|
|
255
|
+
if (hadSchema) publishJsonSchemas();
|
|
218
256
|
}
|
|
219
257
|
function initEditor() {
|
|
220
258
|
if (!editorEl.value || unmounted) return;
|
|
221
259
|
disposeEditor();
|
|
222
|
-
if (props.language === "mongodb-shell") ensureMongodbShellLanguage(monaco);
|
|
223
|
-
schemaUri = `inmemory://rs-monaco/${crypto.randomUUID()}.json`;
|
|
224
|
-
editorModel = monaco.editor.createModel(model.value, props.language, props.language === "json" ? monaco.Uri.parse(schemaUri) : void 0);
|
|
225
260
|
const host = editorEl.value;
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
261
|
+
if (!host || unmounted) return;
|
|
262
|
+
if (props.language === "mongodb-shell") ensureMongodbShellLanguage(monaco);
|
|
263
|
+
const metrics = readMonacoMetrics(host);
|
|
264
|
+
const motion = monacoMotionOptions(prefersReducedMotion());
|
|
265
|
+
const overrides = mergeMonacoEditorOptions(props.options, props.language);
|
|
266
|
+
const forcedTheme = typeof overrides.theme === "string" ? overrides.theme : "";
|
|
267
|
+
const themeName = forcedTheme || resolveMonacoThemeName(props.theme, readDocumentRsTheme());
|
|
268
|
+
if (!forcedTheme) applySharedMonacoTheme(monaco, themeName, readMonacoThemeColors(host));
|
|
269
|
+
schemaUri = props.language === "json" ? createMonacoModelUri() : "";
|
|
270
|
+
editorModel = monaco.editor.createModel(model.value, props.language, schemaUri ? monaco.Uri.parse(schemaUri) : void 0);
|
|
271
|
+
editor = monaco.editor.create(host, {
|
|
229
272
|
model: editorModel,
|
|
230
|
-
theme:
|
|
231
|
-
readOnly: props.readonly,
|
|
273
|
+
theme: themeName,
|
|
274
|
+
readOnly: props.readonly || props.disabled,
|
|
275
|
+
domReadOnly: props.disabled,
|
|
276
|
+
ariaLabel: resolvedAriaLabel.value,
|
|
277
|
+
placeholder: props.placeholder ?? "",
|
|
232
278
|
automaticLayout: true,
|
|
233
279
|
minimap: { enabled: props.minimap },
|
|
234
280
|
scrollBeyondLastLine: false,
|
|
235
|
-
fontFamily:
|
|
236
|
-
fontSize,
|
|
237
|
-
lineHeight:
|
|
281
|
+
fontFamily: metrics.fontFamily,
|
|
282
|
+
fontSize: metrics.fontSize,
|
|
283
|
+
lineHeight: metrics.lineHeight,
|
|
238
284
|
tabSize: 2,
|
|
239
285
|
wordWrap: "on",
|
|
240
286
|
bracketPairColorization: { enabled: true },
|
|
241
287
|
padding: {
|
|
242
|
-
top:
|
|
243
|
-
bottom:
|
|
288
|
+
top: metrics.padding,
|
|
289
|
+
bottom: metrics.padding
|
|
244
290
|
},
|
|
245
291
|
renderLineHighlight: "line",
|
|
246
|
-
smoothScrolling:
|
|
247
|
-
cursorSmoothCaretAnimation:
|
|
292
|
+
smoothScrolling: motion.smoothScrolling,
|
|
293
|
+
cursorSmoothCaretAnimation: motion.cursorSmoothCaretAnimation,
|
|
248
294
|
folding: true,
|
|
249
295
|
glyphMargin: props.glyphMargin,
|
|
250
296
|
lineNumbersMinChars: 3,
|
|
251
|
-
lineDecorationsWidth: props.glyphMargin ?
|
|
297
|
+
lineDecorationsWidth: props.glyphMargin ? metrics.glyphWidth : metrics.decorationWidth,
|
|
252
298
|
overviewRulerLanes: 0,
|
|
253
299
|
hideCursorInOverviewRuler: true,
|
|
254
300
|
quickSuggestions: props.language === "mongodb-shell" ? {
|
|
@@ -264,67 +310,85 @@ var RsMonacoEditor_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
|
|
|
264
310
|
matchOnWordStartOnly: isManagedSqlDialect(props.language)
|
|
265
311
|
},
|
|
266
312
|
scrollbar: {
|
|
267
|
-
verticalScrollbarSize:
|
|
268
|
-
horizontalScrollbarSize:
|
|
313
|
+
verticalScrollbarSize: metrics.scrollbarSize,
|
|
314
|
+
horizontalScrollbarSize: metrics.scrollbarSize
|
|
269
315
|
},
|
|
270
316
|
fixedOverflowWidgets: true,
|
|
271
|
-
...
|
|
317
|
+
...overrides,
|
|
318
|
+
contextmenu: props.contextMenu
|
|
272
319
|
});
|
|
273
|
-
editorModel.onDidChangeContent(() => {
|
|
320
|
+
contentDisposable = editorModel.onDidChangeContent(() => {
|
|
274
321
|
if (suppressChange) return;
|
|
275
322
|
const value = editorModel?.getValue() ?? "";
|
|
276
323
|
if (value !== model.value) model.value = value;
|
|
277
324
|
});
|
|
325
|
+
focusDisposable = editor.onDidFocusEditorText(() => emit("focus"));
|
|
326
|
+
blurDisposable = editor.onDidBlurEditorText(() => emit("blur"));
|
|
278
327
|
applyJsonSchema();
|
|
279
328
|
applySnippets();
|
|
280
329
|
bindGlyphClick();
|
|
330
|
+
bindContextMenu();
|
|
281
331
|
syncDebugDecorations();
|
|
332
|
+
emit("ready");
|
|
282
333
|
}
|
|
283
|
-
let themeObserver = null;
|
|
284
334
|
onMounted(() => {
|
|
285
335
|
unmounted = false;
|
|
286
336
|
initEditor();
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
attributes: true,
|
|
290
|
-
attributeFilter: ["data-rs-theme"]
|
|
291
|
-
});
|
|
337
|
+
unsubscribeTheme = subscribeDocumentTheme(() => applyTheme());
|
|
338
|
+
unsubscribeMotion = subscribeReducedMotion(() => applyTheme());
|
|
292
339
|
});
|
|
293
340
|
onUnmounted(() => {
|
|
294
341
|
unmounted = true;
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
342
|
+
unsubscribeTheme?.();
|
|
343
|
+
unsubscribeTheme = null;
|
|
344
|
+
unsubscribeMotion?.();
|
|
345
|
+
unsubscribeMotion = null;
|
|
298
346
|
disposeEditor();
|
|
299
|
-
themeObserver?.disconnect();
|
|
300
|
-
themeObserver = null;
|
|
301
347
|
});
|
|
302
348
|
watch(() => model.value, (val) => {
|
|
303
|
-
if (!editorModel) return;
|
|
304
|
-
if (editorModel.getValue() === val) return;
|
|
349
|
+
if (!editorModel || editorModel.getValue() === val) return;
|
|
305
350
|
suppressChange = true;
|
|
306
|
-
|
|
307
|
-
|
|
351
|
+
try {
|
|
352
|
+
editorModel.setValue(val);
|
|
353
|
+
} finally {
|
|
354
|
+
suppressChange = false;
|
|
355
|
+
}
|
|
356
|
+
});
|
|
357
|
+
watch(() => [props.readonly, props.disabled], ([readonly, disabled]) => {
|
|
358
|
+
editor?.updateOptions({
|
|
359
|
+
readOnly: readonly || disabled,
|
|
360
|
+
domReadOnly: disabled
|
|
361
|
+
});
|
|
308
362
|
});
|
|
309
|
-
watch(() => props.readonly, (val) => editor?.updateOptions({ readOnly: val }));
|
|
310
363
|
watch(() => props.minimap, (val) => editor?.updateOptions({ minimap: { enabled: val } }));
|
|
364
|
+
watch(() => props.contextMenu, (val) => editor?.updateOptions({ contextmenu: val }));
|
|
365
|
+
watch(resolvedAriaLabel, (label) => editor?.updateOptions({ ariaLabel: label }));
|
|
366
|
+
watch(() => props.placeholder, (value) => editor?.updateOptions({ placeholder: value ?? "" }));
|
|
311
367
|
watch(() => props.glyphMargin, (val) => {
|
|
368
|
+
const metrics = readMonacoMetrics(editorEl.value);
|
|
312
369
|
editor?.updateOptions({
|
|
313
370
|
glyphMargin: val,
|
|
314
|
-
lineDecorationsWidth: val ?
|
|
371
|
+
lineDecorationsWidth: val ? metrics.glyphWidth : metrics.decorationWidth
|
|
315
372
|
});
|
|
316
373
|
bindGlyphClick();
|
|
317
374
|
syncDebugDecorations();
|
|
318
375
|
});
|
|
319
|
-
watch(() => [props.debugCurrentLine, props.debugBreakpoints], () => {
|
|
320
|
-
syncDebugDecorations();
|
|
321
|
-
}, { deep: true });
|
|
376
|
+
watch(() => [props.debugCurrentLine, props.debugBreakpoints], () => syncDebugDecorations(), { deep: true });
|
|
322
377
|
watch(() => props.language, () => initEditor());
|
|
378
|
+
watch(() => props.theme, () => applyTheme());
|
|
323
379
|
watch(() => props.jsonSchema, () => applyJsonSchema(), { deep: true });
|
|
324
380
|
watch(() => props.snippets, () => applySnippets(), { deep: true });
|
|
325
381
|
watch(() => props.completionRequest, () => applySnippets());
|
|
326
382
|
watch(() => props.completionTriggerCharacters, () => applySnippets(), { deep: true });
|
|
327
383
|
watch(() => props.completionPrefixResolver, () => applySnippets());
|
|
384
|
+
watch(() => props.options, () => {
|
|
385
|
+
if (!editor || !props.options) return;
|
|
386
|
+
editor.updateOptions({
|
|
387
|
+
...mergeMonacoEditorOptions(props.options, props.language),
|
|
388
|
+
contextmenu: props.contextMenu
|
|
389
|
+
});
|
|
390
|
+
applyTheme();
|
|
391
|
+
});
|
|
328
392
|
__expose({
|
|
329
393
|
/** 格式化文档(等价于 Shift+Alt+F) */
|
|
330
394
|
format() {
|
|
@@ -337,15 +401,30 @@ var RsMonacoEditor_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
|
|
|
337
401
|
revealLine(line) {
|
|
338
402
|
if (!editor || line <= 0) return;
|
|
339
403
|
editor.revealLineInCenter(line);
|
|
404
|
+
},
|
|
405
|
+
focus() {
|
|
406
|
+
editor?.focus();
|
|
407
|
+
},
|
|
408
|
+
blur() {
|
|
409
|
+
const node = editor?.getDomNode();
|
|
410
|
+
if (!node) return;
|
|
411
|
+
const active = node.ownerDocument.activeElement;
|
|
412
|
+
if (active instanceof HTMLElement && node.contains(active)) active.blur();
|
|
340
413
|
}
|
|
341
414
|
});
|
|
342
415
|
return (_ctx, _cache) => {
|
|
343
416
|
return openBlock(), createElementBlock("div", {
|
|
417
|
+
id: rootId.value,
|
|
344
418
|
ref_key: "editorEl",
|
|
345
419
|
ref: editorEl,
|
|
346
|
-
class: normalizeClass(["rs-monaco", {
|
|
347
|
-
|
|
348
|
-
|
|
420
|
+
class: normalizeClass(["rs-monaco", {
|
|
421
|
+
"rs-monaco--embedded": __props.embedded,
|
|
422
|
+
"rs-monaco--disabled": __props.disabled
|
|
423
|
+
}]),
|
|
424
|
+
style: normalizeStyle(frameStyle.value),
|
|
425
|
+
dir: "ltr",
|
|
426
|
+
"aria-disabled": __props.disabled || void 0
|
|
427
|
+
}, null, 14, _hoisted_1);
|
|
349
428
|
};
|
|
350
429
|
}
|
|
351
430
|
});
|
|
@@ -4,6 +4,6 @@ import _plugin_vue_export_helper_default from "../../../_virtual/_plugin-vue_exp
|
|
|
4
4
|
import RsMonacoEditor_vue_vue_type_script_setup_true_lang_default from "./RsMonacoEditor.impl.js";
|
|
5
5
|
|
|
6
6
|
//#region src/components/monaco-editor/src/RsMonacoEditor.vue
|
|
7
|
-
var RsMonacoEditor_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsMonacoEditor_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-
|
|
7
|
+
var RsMonacoEditor_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsMonacoEditor_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-b3d8e08a"]]);
|
|
8
8
|
//#endregion
|
|
9
9
|
export { RsMonacoEditor_default as default };
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import type * as Monaco from 'monaco-editor';
|
|
2
|
+
/** 实例级补全片段(仅作用于当前编辑器 Model)。 */
|
|
3
|
+
export interface MonacoCompletionSnippet {
|
|
4
|
+
label: string;
|
|
5
|
+
insertText: string;
|
|
6
|
+
detail?: string;
|
|
7
|
+
documentation?: string;
|
|
8
|
+
filterText?: string;
|
|
9
|
+
sortText?: string;
|
|
10
|
+
kind?: 'snippet' | 'keyword' | 'property' | 'field' | 'function' | 'value';
|
|
11
|
+
preselect?: boolean;
|
|
12
|
+
}
|
|
13
|
+
/** MonacoCompletionContext 描述一次补全请求的编辑器上下文。 */
|
|
14
|
+
export interface MonacoCompletionContext {
|
|
15
|
+
text: string;
|
|
16
|
+
offset: number;
|
|
17
|
+
line: number;
|
|
18
|
+
column: number;
|
|
19
|
+
prefix: string;
|
|
20
|
+
triggerCharacter?: string;
|
|
21
|
+
}
|
|
22
|
+
/** MonacoCompletionRequest 按当前文本和光标位置返回实例级候选。 */
|
|
23
|
+
export type MonacoCompletionRequest = (context: MonacoCompletionContext) => MonacoCompletionSnippet[] | Promise<MonacoCompletionSnippet[]>;
|
|
24
|
+
/** 补全前缀解析:由业务侧按方言注入,默认按标识符切词。 */
|
|
25
|
+
export type MonacoCompletionPrefixResolver = (linePrefix: string) => string;
|
|
26
|
+
/**
|
|
27
|
+
* RsMonacoEditor 模板 ref 请用此类型。
|
|
28
|
+
* 不要写 `InstanceType<typeof RsMonacoEditor>`:组件实例类型过深,vue-tsc 会报 Excessive stack depth。
|
|
29
|
+
*/
|
|
30
|
+
export interface RsMonacoEditorExpose {
|
|
31
|
+
format: () => void;
|
|
32
|
+
getEditor: () => Monaco.editor.IStandaloneCodeEditor | null;
|
|
33
|
+
revealLine: (line: number) => void;
|
|
34
|
+
focus: () => void;
|
|
35
|
+
blur: () => void;
|
|
36
|
+
}
|
|
37
|
+
/** 右键命中。行、列 1-based;点在滚动条等无光标处时为 0。 */
|
|
38
|
+
export interface RsMonacoEditorContextMenu {
|
|
39
|
+
line: number;
|
|
40
|
+
column: number;
|
|
41
|
+
selectedText: string;
|
|
42
|
+
x: number;
|
|
43
|
+
y: number;
|
|
44
|
+
}
|
|
45
|
+
export type RsMonacoEditorInstance = RsMonacoEditorExpose;
|
|
46
|
+
/** `light` / `vs-dark` 是公开取值;实际主题名是带 token 色的 rs-light / rs-dark。 */
|
|
47
|
+
export type RsMonacoEditorTheme = 'auto' | 'vs-dark' | 'light';
|
|
48
|
+
export declare const RS_MONACO_THEME_LIGHT = "rs-light";
|
|
49
|
+
export declare const RS_MONACO_THEME_DARK = "rs-dark";
|
|
50
|
+
export declare const RS_MONACO_SCHEMA_PREFIX = "inmemory://rs-monaco/";
|
|
51
|
+
export interface MonacoJsonSchemaEntry {
|
|
52
|
+
uri: string;
|
|
53
|
+
fileMatch?: string[];
|
|
54
|
+
schema?: unknown;
|
|
55
|
+
}
|
|
56
|
+
export interface MonacoCompletionBinding {
|
|
57
|
+
language: string;
|
|
58
|
+
triggers: readonly string[];
|
|
59
|
+
provide: Monaco.languages.CompletionItemProvider['provideCompletionItems'];
|
|
60
|
+
}
|
|
61
|
+
/** Bridge LSP 接管补全;勿再注册实例级 Provider。 */
|
|
62
|
+
export declare function isManagedSqlDialect(language: string | undefined): boolean;
|
|
63
|
+
export declare function completionLanguages(language: string | undefined): string[];
|
|
64
|
+
export declare function resolveMonacoHeight(height: number | string | undefined): string;
|
|
65
|
+
/** 未写 data-rs-theme 时跟全库浅色,不把缺省当成深色。 */
|
|
66
|
+
export declare function readDocumentRsTheme(): 'light' | 'dark';
|
|
67
|
+
export declare function resolveMonacoThemeName(theme: RsMonacoEditorTheme | undefined, documentTheme: 'light' | 'dark'): string;
|
|
68
|
+
export declare function monacoThemeBase(themeName: string): 'vs' | 'vs-dark';
|
|
69
|
+
export declare function resolveMonacoLineHeight(fontSize: number, lineHeightRaw: string): number;
|
|
70
|
+
export declare function resolveCompletionPrefix(line: string, resolver?: MonacoCompletionPrefixResolver): string;
|
|
71
|
+
export declare function completionReplaceRange(lineNumber: number, column: number, prefix: string): {
|
|
72
|
+
startLineNumber: number;
|
|
73
|
+
endLineNumber: number;
|
|
74
|
+
startColumn: number;
|
|
75
|
+
endColumn: number;
|
|
76
|
+
};
|
|
77
|
+
/** 合并业务侧 options;suggest 做一层浅合并,避免整对象覆盖默认。 */
|
|
78
|
+
export declare function mergeMonacoEditorOptions(overrides: Record<string, unknown> | undefined, language: string | undefined): Record<string, unknown>;
|
|
79
|
+
export declare function prefersReducedMotion(): boolean;
|
|
80
|
+
export declare function monacoMotionOptions(reduced: boolean): {
|
|
81
|
+
smoothScrolling: boolean;
|
|
82
|
+
cursorSmoothCaretAnimation: 'on' | 'off';
|
|
83
|
+
};
|
|
84
|
+
/** Monaco 主题色只收 hex。rgb()/rgba() 在这里转成 #rrggbb / #rrggbbaa。 */
|
|
85
|
+
export declare function cssColorToHex(input: string): string | null;
|
|
86
|
+
declare const THEME_COLOR_IDS: {
|
|
87
|
+
readonly background: "editor.background";
|
|
88
|
+
readonly foreground: "editor.foreground";
|
|
89
|
+
readonly gutter: "editorGutter.background";
|
|
90
|
+
readonly gutterForeground: "editorLineNumber.foreground";
|
|
91
|
+
readonly lineHighlight: "editor.lineHighlightBackground";
|
|
92
|
+
readonly selection: "editor.selectionBackground";
|
|
93
|
+
readonly widget: "editorWidget.background";
|
|
94
|
+
readonly widgetBorder: "editorWidget.border";
|
|
95
|
+
};
|
|
96
|
+
export declare function buildMonacoThemeColors(raw: Partial<Record<keyof typeof THEME_COLOR_IDS, string>>): Record<string, string>;
|
|
97
|
+
export declare function readMonacoThemeColors(el?: HTMLElement | null): Record<string, string>;
|
|
98
|
+
export declare function readMonacoMetrics(el?: HTMLElement | null): {
|
|
99
|
+
fontFamily: string;
|
|
100
|
+
fontSize: number;
|
|
101
|
+
lineHeight: number;
|
|
102
|
+
padding: number;
|
|
103
|
+
scrollbarSize: number;
|
|
104
|
+
glyphWidth: number;
|
|
105
|
+
decorationWidth: number;
|
|
106
|
+
};
|
|
107
|
+
export declare function createMonacoModelUri(): string;
|
|
108
|
+
export declare function setOwnedMonacoJsonSchema(uri: string, schema: object | null): void;
|
|
109
|
+
/** 外部 schema 保留;本组件的 uri 只来自这份登记,避免两个编辑器交错写丢。 */
|
|
110
|
+
export declare function mergeMonacoJsonSchemas(existing: readonly MonacoJsonSchemaEntry[] | undefined): MonacoJsonSchemaEntry[];
|
|
111
|
+
export declare function resetOwnedMonacoJsonSchemasForTests(): void;
|
|
112
|
+
/** 多个编辑器共用一个 MutationObserver,最后一个卸载才断开。 */
|
|
113
|
+
export declare function subscribeDocumentTheme(listener: () => void): () => void;
|
|
114
|
+
export declare function resetDocumentThemeSubscriptionForTests(): void;
|
|
115
|
+
export declare function subscribeReducedMotion(listener: (reduced: boolean) => void): () => void;
|
|
116
|
+
/** defineTheme 可重复;setTheme 是进程级的,签名没变就不再刷。 */
|
|
117
|
+
export declare function applySharedMonacoTheme(monaco: MonacoNamespace, themeName: string, colors: Record<string, string>): void;
|
|
118
|
+
export declare function resetSharedMonacoThemeForTests(): void;
|
|
119
|
+
type MonacoNamespace = typeof import('monaco-editor');
|
|
120
|
+
/**
|
|
121
|
+
* 每种语言只注册一个 Provider,按 model uri 分发。
|
|
122
|
+
* 避免 N 个编辑器各挂一个、卸载时只丢掉最后一个。
|
|
123
|
+
*/
|
|
124
|
+
export declare function syncMonacoCompletionProvider(monaco: MonacoNamespace, modelUri: string, binding: MonacoCompletionBinding | null): void;
|
|
125
|
+
export declare function resetMonacoCompletionProvidersForTests(): void;
|
|
126
|
+
export {};
|