@codingame/monaco-vscode-editor-api 11.1.2 → 12.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 (35) hide show
  1. package/esm/vs/editor/browser/config/tabFocus.d.ts +1 -0
  2. package/esm/vs/editor/browser/coreCommands.d.ts +1 -0
  3. package/esm/vs/editor/common/commands/shiftCommand.d.ts +1 -0
  4. package/esm/vs/editor/contrib/bracketMatching/browser/bracketMatching.d.ts +1 -0
  5. package/esm/vs/editor/contrib/clipboard/browser/clipboard.d.ts +1 -0
  6. package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.d.ts +1 -0
  7. package/esm/vs/editor/contrib/cursorUndo/browser/cursorUndo.d.ts +1 -0
  8. package/esm/vs/editor/contrib/find/browser/findController.d.ts +1 -0
  9. package/esm/vs/editor/contrib/format/browser/formatActions.d.ts +1 -0
  10. package/esm/vs/editor/contrib/hover/browser/hoverContribution.d.ts +1 -0
  11. package/esm/vs/editor/contrib/hover/browser/hoverContribution.js +1 -0
  12. package/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletions.contribution.d.ts +1 -0
  13. package/esm/vs/editor/editor.api.d.ts +7 -2
  14. package/esm/vs/editor/editor.api.js +4 -2311
  15. package/package.json +14 -9
  16. package/vscode/src/vs/editor/editor.api.d.ts +9338 -0
  17. package/vscode/src/vs/editor/editor.api.js +35 -0
  18. package/vscode/src/vs/editor/standalone/browser/colorizer.d.ts +17 -0
  19. package/vscode/src/vs/editor/standalone/browser/colorizer.js +178 -0
  20. package/vscode/src/vs/editor/standalone/browser/standalone-tokens.css.js +6 -0
  21. package/vscode/src/vs/editor/standalone/browser/standaloneEditor.d.ts +73 -0
  22. package/vscode/src/vs/editor/standalone/browser/standaloneEditor.js +347 -0
  23. package/vscode/src/vs/editor/standalone/browser/standaloneLanguages.d.ts +114 -0
  24. package/vscode/src/vs/editor/standalone/browser/standaloneLanguages.js +444 -0
  25. package/vscode/src/vs/editor/standalone/browser/standaloneWebWorker.d.ts +15 -0
  26. package/vscode/src/vs/editor/standalone/browser/standaloneWebWorker.js +66 -0
  27. package/vscode/src/vs/editor/standalone/common/monarch/monarchCommon.d.ts +72 -0
  28. package/vscode/src/vs/editor/standalone/common/monarch/monarchCommon.js +111 -0
  29. package/vscode/src/vs/editor/standalone/common/monarch/monarchCompile.d.ts +3 -0
  30. package/vscode/src/vs/editor/standalone/common/monarch/monarchCompile.js +476 -0
  31. package/vscode/src/vs/editor/standalone/common/monarch/monarchLexer.d.ts +33 -0
  32. package/vscode/src/vs/editor/standalone/common/monarch/monarchLexer.js +707 -0
  33. package/vscode/src/vs/editor/standalone/common/monarch/monarchTypes.d.ts +46 -0
  34. package/editor.api.d.ts +0 -7
  35. package/monaco.d.ts +0 -10
@@ -0,0 +1,35 @@
1
+
2
+ import { EditorOptions, WrappingIndent, EditorAutoIndentStrategy } from 'vscode/vscode/vs/editor/common/config/editorOptions';
3
+ import { createMonacoBaseAPI } from 'vscode/vscode/vs/editor/common/services/editorBaseApi';
4
+ import { createMonacoEditorAPI } from './standalone/browser/standaloneEditor.js';
5
+ import { createMonacoLanguagesAPI } from './standalone/browser/standaloneLanguages.js';
6
+ import { FormattingConflicts } from 'vscode/vscode/vs/editor/contrib/format/browser/format';
7
+
8
+ EditorOptions.wrappingIndent.defaultValue = WrappingIndent.None;
9
+ EditorOptions.glyphMargin.defaultValue = false;
10
+ EditorOptions.autoIndent.defaultValue = EditorAutoIndentStrategy.Advanced;
11
+ EditorOptions.overviewRulerLanes.defaultValue = 2;
12
+ FormattingConflicts.setFormatterSelector((formatter, document, mode) => Promise.resolve(formatter[0]));
13
+ const api = createMonacoBaseAPI();
14
+ api.editor = createMonacoEditorAPI();
15
+ api.languages = createMonacoLanguagesAPI();
16
+ const CancellationTokenSource = api.CancellationTokenSource;
17
+ const Emitter = api.Emitter;
18
+ const KeyCode = api.KeyCode;
19
+ const KeyMod = api.KeyMod;
20
+ const Position = api.Position;
21
+ const Range = api.Range;
22
+ const Selection = api.Selection;
23
+ const SelectionDirection = api.SelectionDirection;
24
+ const MarkerSeverity = api.MarkerSeverity;
25
+ const MarkerTag = api.MarkerTag;
26
+ const Uri = api.Uri;
27
+ const Token = api.Token;
28
+ const editor = api.editor;
29
+ const languages = api.languages;
30
+ const monacoEnvironment = globalThis.MonacoEnvironment;
31
+ if (monacoEnvironment?.globalAPI || (typeof globalThis.define === 'function' && (globalThis.define).amd)) {
32
+ globalThis.monaco = api;
33
+ }
34
+
35
+ export { CancellationTokenSource, Emitter, KeyCode, KeyMod, MarkerSeverity, MarkerTag, Position, Range, Selection, SelectionDirection, Token, Uri, editor, languages };
@@ -0,0 +1,17 @@
1
+ import { ILanguageService } from "vscode/vscode/vs/editor/common/languages/language";
2
+ import { ITextModel } from "vscode/vscode/vs/editor/common/model";
3
+ import { IViewLineTokens } from "vscode/vscode/vs/editor/common/tokens/lineTokens";
4
+ import { IStandaloneThemeService } from "vscode/vscode/vs/editor/standalone/common/standaloneTheme";
5
+ export interface IColorizerOptions {
6
+ tabSize?: number;
7
+ }
8
+ export interface IColorizerElementOptions extends IColorizerOptions {
9
+ theme?: string;
10
+ mimeType?: string;
11
+ }
12
+ export declare class Colorizer {
13
+ static colorizeElement(themeService: IStandaloneThemeService, languageService: ILanguageService, domNode: HTMLElement, options: IColorizerElementOptions): Promise<void>;
14
+ static colorize(languageService: ILanguageService, text: string, languageId: string, options: IColorizerOptions | null | undefined): Promise<string>;
15
+ static colorizeLine(line: string, mightContainNonBasicASCII: boolean, mightContainRTL: boolean, tokens: IViewLineTokens, tabSize?: number): string;
16
+ static colorizeModelLine(model: ITextModel, lineNumber: number, tabSize?: number): string;
17
+ }
@@ -0,0 +1,178 @@
1
+
2
+ import { createTrustedTypesPolicy } from 'vscode/vscode/vs/base/browser/trustedTypes';
3
+ import { startsWithUTF8BOM, splitLines } from 'vscode/vscode/vs/base/common/strings';
4
+ import { FontStyle, MetadataConsts, ColorId } from 'vscode/vscode/vs/editor/common/encodedTokenAttributes';
5
+ import { TokenizationRegistry } from 'vscode/vscode/vs/editor/common/languages';
6
+ import { LineTokens } from 'vscode/vscode/vs/editor/common/tokens/lineTokens';
7
+ import { renderViewLine2, RenderLineInput } from 'vscode/vscode/vs/editor/common/viewLayout/viewLineRenderer';
8
+ import { ViewLineRenderingData } from 'vscode/vscode/vs/editor/common/viewModel';
9
+ import { MonarchTokenizer } from '../common/monarch/monarchLexer.js';
10
+
11
+ const ttPolicy = createTrustedTypesPolicy('standaloneColorizer', { createHTML: value => value });
12
+ class Colorizer {
13
+ static colorizeElement(themeService, languageService, domNode, options) {
14
+ options = options || {};
15
+ const theme = options.theme || 'vs';
16
+ const mimeType = options.mimeType || domNode.getAttribute('lang') || domNode.getAttribute('data-lang');
17
+ if (!mimeType) {
18
+ console.error('Mode not detected');
19
+ return Promise.resolve();
20
+ }
21
+ const languageId = languageService.getLanguageIdByMimeType(mimeType) || mimeType;
22
+ themeService.setTheme(theme);
23
+ const text = domNode.firstChild ? domNode.firstChild.nodeValue : '';
24
+ domNode.className += ' ' + theme;
25
+ const render = (str) => {
26
+ const trustedhtml = ttPolicy?.createHTML(str) ?? str;
27
+ domNode.innerHTML = trustedhtml;
28
+ };
29
+ return this.colorize(languageService, text || '', languageId, options).then(render, (err) => console.error(err));
30
+ }
31
+ static async colorize(languageService, text, languageId, options) {
32
+ const languageIdCodec = languageService.languageIdCodec;
33
+ let tabSize = 4;
34
+ if (options && typeof options.tabSize === 'number') {
35
+ tabSize = options.tabSize;
36
+ }
37
+ if (startsWithUTF8BOM(text)) {
38
+ text = text.substr(1);
39
+ }
40
+ const lines = splitLines(text);
41
+ if (!languageService.isRegisteredLanguageId(languageId)) {
42
+ return _fakeColorize(lines, tabSize, languageIdCodec);
43
+ }
44
+ const tokenizationSupport = await TokenizationRegistry.getOrCreate(languageId);
45
+ if (tokenizationSupport) {
46
+ return _colorize(lines, tabSize, tokenizationSupport, languageIdCodec);
47
+ }
48
+ return _fakeColorize(lines, tabSize, languageIdCodec);
49
+ }
50
+ static colorizeLine(line, mightContainNonBasicASCII, mightContainRTL, tokens, tabSize = 4) {
51
+ const isBasicASCII = ViewLineRenderingData.isBasicASCII(line, mightContainNonBasicASCII);
52
+ const containsRTL = ViewLineRenderingData.containsRTL(line, isBasicASCII, mightContainRTL);
53
+ const renderResult = renderViewLine2(( new RenderLineInput(
54
+ false,
55
+ true,
56
+ line,
57
+ false,
58
+ isBasicASCII,
59
+ containsRTL,
60
+ 0,
61
+ tokens,
62
+ [],
63
+ tabSize,
64
+ 0,
65
+ 0,
66
+ 0,
67
+ 0,
68
+ -1,
69
+ 'none',
70
+ false,
71
+ false,
72
+ null
73
+ )));
74
+ return renderResult.html;
75
+ }
76
+ static colorizeModelLine(model, lineNumber, tabSize = 4) {
77
+ const content = model.getLineContent(lineNumber);
78
+ model.tokenization.forceTokenization(lineNumber);
79
+ const tokens = model.tokenization.getLineTokens(lineNumber);
80
+ const inflatedTokens = tokens.inflate();
81
+ return this.colorizeLine(content, model.mightContainNonBasicASCII(), model.mightContainRTL(), inflatedTokens, tabSize);
82
+ }
83
+ }
84
+ function _colorize(lines, tabSize, tokenizationSupport, languageIdCodec) {
85
+ return ( new Promise((c, e) => {
86
+ const execute = () => {
87
+ const result = _actualColorize(lines, tabSize, tokenizationSupport, languageIdCodec);
88
+ if (tokenizationSupport instanceof MonarchTokenizer) {
89
+ const status = tokenizationSupport.getLoadStatus();
90
+ if (status.loaded === false) {
91
+ status.promise.then(execute, e);
92
+ return;
93
+ }
94
+ }
95
+ c(result);
96
+ };
97
+ execute();
98
+ }));
99
+ }
100
+ function _fakeColorize(lines, tabSize, languageIdCodec) {
101
+ let html = [];
102
+ const defaultMetadata = ((FontStyle.None << MetadataConsts.FONT_STYLE_OFFSET)
103
+ | (ColorId.DefaultForeground << MetadataConsts.FOREGROUND_OFFSET)
104
+ | (ColorId.DefaultBackground << MetadataConsts.BACKGROUND_OFFSET)) >>> 0;
105
+ const tokens = ( new Uint32Array(2));
106
+ tokens[0] = 0;
107
+ tokens[1] = defaultMetadata;
108
+ for (let i = 0, length = lines.length; i < length; i++) {
109
+ const line = lines[i];
110
+ tokens[0] = line.length;
111
+ const lineTokens = ( new LineTokens(tokens, line, languageIdCodec));
112
+ const isBasicASCII = ViewLineRenderingData.isBasicASCII(line, true);
113
+ const containsRTL = ViewLineRenderingData.containsRTL(line, isBasicASCII, true);
114
+ const renderResult = renderViewLine2(( new RenderLineInput(
115
+ false,
116
+ true,
117
+ line,
118
+ false,
119
+ isBasicASCII,
120
+ containsRTL,
121
+ 0,
122
+ lineTokens,
123
+ [],
124
+ tabSize,
125
+ 0,
126
+ 0,
127
+ 0,
128
+ 0,
129
+ -1,
130
+ 'none',
131
+ false,
132
+ false,
133
+ null
134
+ )));
135
+ html = html.concat(renderResult.html);
136
+ html.push('<br/>');
137
+ }
138
+ return html.join('');
139
+ }
140
+ function _actualColorize(lines, tabSize, tokenizationSupport, languageIdCodec) {
141
+ let html = [];
142
+ let state = tokenizationSupport.getInitialState();
143
+ for (let i = 0, length = lines.length; i < length; i++) {
144
+ const line = lines[i];
145
+ const tokenizeResult = tokenizationSupport.tokenizeEncoded(line, true, state);
146
+ LineTokens.convertToEndOffset(tokenizeResult.tokens, line.length);
147
+ const lineTokens = ( new LineTokens(tokenizeResult.tokens, line, languageIdCodec));
148
+ const isBasicASCII = ViewLineRenderingData.isBasicASCII(line, true);
149
+ const containsRTL = ViewLineRenderingData.containsRTL(line, isBasicASCII, true);
150
+ const renderResult = renderViewLine2(( new RenderLineInput(
151
+ false,
152
+ true,
153
+ line,
154
+ false,
155
+ isBasicASCII,
156
+ containsRTL,
157
+ 0,
158
+ lineTokens.inflate(),
159
+ [],
160
+ tabSize,
161
+ 0,
162
+ 0,
163
+ 0,
164
+ 0,
165
+ -1,
166
+ 'none',
167
+ false,
168
+ false,
169
+ null
170
+ )));
171
+ html = html.concat(renderResult.html);
172
+ html.push('<br/>');
173
+ state = tokenizeResult.endState;
174
+ }
175
+ return html.join('');
176
+ }
177
+
178
+ export { Colorizer };
@@ -0,0 +1,6 @@
1
+ import n from 'vscode/external/rollup-plugin-styles/dist/runtime/inject-css';
2
+
3
+ var css = ".monaco-editor.standalone{--monaco-monospace-font:\"SF Mono\",Monaco,Menlo,Consolas,\"Ubuntu Mono\",\"Liberation Mono\",\"DejaVu Sans Mono\",\"Courier New\",monospace;font-family:-apple-system,BlinkMacSystemFont,Segoe WPC,Segoe UI,HelveticaNeue-Light,system-ui,Ubuntu,Droid Sans,sans-serif}.monaco-editor.standalone.hc-black .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,.monaco-editor.standalone.hc-light .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,.monaco-editor.standalone.vs-dark .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,.monaco-menu .monaco-action-bar.vertical .action-item .action-menu-item:focus .action-label{stroke-width:1.2px}.monaco-hover p{margin:0}.monaco-aria-container{clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute!important;top:0;width:1px}.monaco-diff-editor.standalone .synthetic-focus,.monaco-diff-editor.standalone [tabindex=\"-1\"]:focus,.monaco-diff-editor.standalone [tabindex=\"0\"]:focus,.monaco-diff-editor.standalone button:focus,.monaco-diff-editor.standalone input[type=button]:focus,.monaco-diff-editor.standalone input[type=checkbox]:focus,.monaco-diff-editor.standalone input[type=search]:focus,.monaco-diff-editor.standalone input[type=text]:focus,.monaco-diff-editor.standalone select:focus,.monaco-diff-editor.standalone textarea:focus,.monaco-editor.standalone .synthetic-focus,.monaco-editor.standalone [tabindex=\"-1\"]:focus,.monaco-editor.standalone [tabindex=\"0\"]:focus,.monaco-editor.standalone button:focus,.monaco-editor.standalone input[type=button]:focus,.monaco-editor.standalone input[type=checkbox]:focus,.monaco-editor.standalone input[type=search]:focus,.monaco-editor.standalone input[type=text]:focus,.monaco-editor.standalone select:focus,.monaco-editor.standalone textarea:focus{opacity:1;outline-color:var(--vscode-focusBorder);outline-offset:-1px;outline-style:solid;outline-width:1px}";
4
+ n(css,{});
5
+
6
+ export { css, css as default };
@@ -0,0 +1,73 @@
1
+ import { IDisposable } from "vscode/vscode/vs/base/common/lifecycle";
2
+ import { URI } from "vscode/vscode/vs/base/common/uri";
3
+ import { ICodeEditor } from "vscode/vscode/vs/editor/browser/editorBrowser";
4
+ import { IWebWorkerOptions, MonacoWebWorker } from "./standaloneWebWorker.js";
5
+ import { IPosition } from "vscode/vscode/vs/editor/common/core/position";
6
+ import { IRange } from "vscode/vscode/vs/editor/common/core/range";
7
+ import { IDiffEditor } from "vscode/vscode/vs/editor/common/editorCommon";
8
+ import * as languages from "vscode/vscode/vs/editor/common/languages";
9
+ import { ITextModel } from "vscode/vscode/vs/editor/common/model";
10
+ import { IColorizerElementOptions, IColorizerOptions } from "./colorizer.js";
11
+ import { IActionDescriptor, IStandaloneCodeEditor, IStandaloneDiffEditor, IStandaloneDiffEditorConstructionOptions, IStandaloneEditorConstructionOptions } from "vscode/vscode/vs/editor/standalone/browser/standaloneCodeEditor";
12
+ import { IEditorOverrideServices } from "vscode/vscode/vs/editor/standalone/browser/standaloneServices";
13
+ import { IStandaloneThemeData } from "vscode/vscode/vs/editor/standalone/common/standaloneTheme";
14
+ import { ICommandHandler } from "vscode/vscode/vs/platform/commands/common/commands";
15
+ import { IMarker, IMarkerData } from "vscode/vscode/vs/platform/markers/common/markers";
16
+ import { MultiDiffEditorWidget } from "@codingame/monaco-vscode-5452e2b7-9081-5f95-839b-4ab3544ce28f-common/vscode/vs/editor/browser/widget/multiDiffEditor/multiDiffEditorWidget";
17
+ export declare function create(domElement: HTMLElement, options?: IStandaloneEditorConstructionOptions, override?: IEditorOverrideServices): IStandaloneCodeEditor;
18
+ export declare function onDidCreateEditor(listener: (codeEditor: ICodeEditor) => void): IDisposable;
19
+ export declare function onDidCreateDiffEditor(listener: (diffEditor: IDiffEditor) => void): IDisposable;
20
+ export declare function getEditors(): readonly ICodeEditor[];
21
+ export declare function getDiffEditors(): readonly IDiffEditor[];
22
+ export declare function createDiffEditor(domElement: HTMLElement, options?: IStandaloneDiffEditorConstructionOptions, override?: IEditorOverrideServices): IStandaloneDiffEditor;
23
+ export declare function createMultiFileDiffEditor(domElement: HTMLElement, override?: IEditorOverrideServices): MultiDiffEditorWidget;
24
+ export interface ICommandDescriptor {
25
+ id: string;
26
+ run: ICommandHandler;
27
+ }
28
+ export declare function addCommand(descriptor: ICommandDescriptor): IDisposable;
29
+ export declare function addEditorAction(descriptor: IActionDescriptor): IDisposable;
30
+ export interface IKeybindingRule {
31
+ keybinding: number;
32
+ command?: string | null;
33
+ commandArgs?: any;
34
+ when?: string | null;
35
+ }
36
+ export declare function addKeybindingRule(rule: IKeybindingRule): IDisposable;
37
+ export declare function addKeybindingRules(rules: IKeybindingRule[]): IDisposable;
38
+ export declare function createModel(value: string, language?: string, uri?: URI): ITextModel;
39
+ export declare function setModelLanguage(model: ITextModel, mimeTypeOrLanguageId: string): void;
40
+ export declare function setModelMarkers(model: ITextModel, owner: string, markers: IMarkerData[]): void;
41
+ export declare function removeAllMarkers(owner: string): void;
42
+ export declare function getModelMarkers(filter: {
43
+ owner?: string;
44
+ resource?: URI;
45
+ take?: number;
46
+ }): IMarker[];
47
+ export declare function onDidChangeMarkers(listener: (e: readonly URI[]) => void): IDisposable;
48
+ export declare function getModel(uri: URI): ITextModel | null;
49
+ export declare function getModels(): ITextModel[];
50
+ export declare function onDidCreateModel(listener: (model: ITextModel) => void): IDisposable;
51
+ export declare function onWillDisposeModel(listener: (model: ITextModel) => void): IDisposable;
52
+ export declare function onDidChangeModelLanguage(listener: (e: {
53
+ readonly model: ITextModel;
54
+ readonly oldLanguage: string;
55
+ }) => void): IDisposable;
56
+ export declare function createWebWorker<T extends object>(opts: IWebWorkerOptions): MonacoWebWorker<T>;
57
+ export declare function colorizeElement(domNode: HTMLElement, options: IColorizerElementOptions): Promise<void>;
58
+ export declare function colorize(text: string, languageId: string, options: IColorizerOptions): Promise<string>;
59
+ export declare function colorizeModelLine(model: ITextModel, lineNumber: number, tabSize?: number): string;
60
+ export declare function tokenize(text: string, languageId: string): languages.Token[][];
61
+ export declare function defineTheme(themeName: string, themeData: IStandaloneThemeData): void;
62
+ export declare function setTheme(themeName: string): void;
63
+ export declare function remeasureFonts(): void;
64
+ export declare function registerCommand(id: string, handler: (accessor: any, ...args: any[]) => void): IDisposable;
65
+ export interface ILinkOpener {
66
+ open(resource: URI): boolean | Promise<boolean>;
67
+ }
68
+ export declare function registerLinkOpener(opener: ILinkOpener): IDisposable;
69
+ export interface ICodeEditorOpener {
70
+ openCodeEditor(source: ICodeEditor, resource: URI, selectionOrPosition?: IRange | IPosition): boolean | Promise<boolean>;
71
+ }
72
+ export declare function registerEditorOpener(opener: ICodeEditorOpener): IDisposable;
73
+ export declare function createMonacoEditorAPI(): typeof monaco.editor;
@@ -0,0 +1,347 @@
1
+
2
+ import { mainWindow } from 'vscode/vscode/vs/base/browser/window';
3
+ import { DisposableStore, Disposable } from 'vscode/vscode/vs/base/common/lifecycle';
4
+ import { splitLines } from 'vscode/vscode/vs/base/common/strings';
5
+ import { URI } from 'vscode/vscode/vs/base/common/uri';
6
+ import './standalone-tokens.css.js';
7
+ import { FontMeasurements } from 'vscode/vscode/vs/editor/browser/config/fontMeasurements';
8
+ import { EditorCommand } from 'vscode/vscode/vs/editor/browser/editorExtensions';
9
+ import { ICodeEditorService } from 'vscode/vscode/vs/editor/browser/services/codeEditorService';
10
+ import { createWebWorker as createWebWorker$1 } from './standaloneWebWorker.js';
11
+ import { ConfigurationChangedEvent, ApplyUpdateResult, EditorOptions } from 'vscode/vscode/vs/editor/common/config/editorOptions';
12
+ import { EditorZoom } from 'vscode/vscode/vs/editor/common/config/editorZoom';
13
+ import { BareFontInfo, FontInfo } from 'vscode/vscode/vs/editor/common/config/fontInfo';
14
+ import { EditorType } from 'vscode/vscode/vs/editor/common/editorCommon';
15
+ import { TokenizationRegistry } from 'vscode/vscode/vs/editor/common/languages';
16
+ import { ILanguageService } from 'vscode/vscode/vs/editor/common/languages/language';
17
+ import { PLAINTEXT_LANGUAGE_ID } from 'vscode/vscode/vs/editor/common/languages/modesRegistry';
18
+ import { NullState, nullTokenize } from 'vscode/vscode/vs/editor/common/languages/nullTokenize';
19
+ import { TextModelResolvedOptions, FindMatch } from 'vscode/vscode/vs/editor/common/model';
20
+ import { IModelService } from 'vscode/vscode/vs/editor/common/services/model';
21
+ import { AccessibilitySupport, ContentWidgetPositionPreference, CursorChangeReason, DefaultEndOfLine, EditorAutoIndentStrategy, EditorOption, EndOfLinePreference, EndOfLineSequence, MinimapPosition, MinimapSectionHeaderStyle, MouseTargetType, OverlayWidgetPositionPreference, OverviewRulerLane, GlyphMarginLane, RenderLineNumbersType, RenderMinimap, ScrollbarVisibility, ScrollType, TextEditorCursorBlinkingStyle, TextEditorCursorStyle, TrackedRangeStickiness, WrappingIndent, InjectedTextCursorStops, PositionAffinity, ShowLightbulbIconMode } from 'vscode/vscode/vs/editor/common/standalone/standaloneEnums';
22
+ import { Colorizer } from './colorizer.js';
23
+ import { StandaloneEditor, StandaloneDiffEditor2, createTextModel } from 'vscode/vscode/vs/editor/standalone/browser/standaloneCodeEditor';
24
+ import { StandaloneServices, StandaloneKeybindingService } from 'vscode/vscode/vs/editor/standalone/browser/standaloneServices';
25
+ import { IStandaloneThemeService } from 'vscode/vscode/vs/editor/standalone/common/standaloneTheme';
26
+ import { MenuRegistry, MenuId } from 'vscode/vscode/vs/platform/actions/common/actions';
27
+ import { CommandsRegistry } from 'vscode/vscode/vs/platform/commands/common/commands';
28
+ import { ContextKeyExpr } from 'vscode/vscode/vs/platform/contextkey/common/contextkey';
29
+ import { IKeybindingService } from 'vscode/vscode/vs/platform/keybinding/common/keybinding.service';
30
+ import { IMarkerService } from 'vscode/vscode/vs/platform/markers/common/markers.service';
31
+ import { IOpenerService } from 'vscode/vscode/vs/platform/opener/common/opener.service';
32
+ import { MultiDiffEditorWidget } from '@codingame/monaco-vscode-5452e2b7-9081-5f95-839b-4ab3544ce28f-common/vscode/vs/editor/browser/widget/multiDiffEditor/multiDiffEditorWidget';
33
+
34
+ function create(domElement, options, override) {
35
+ const instantiationService = StandaloneServices.initialize(override || {});
36
+ return instantiationService.createInstance(StandaloneEditor, domElement, options);
37
+ }
38
+ function onDidCreateEditor(listener) {
39
+ const codeEditorService = StandaloneServices.get(ICodeEditorService);
40
+ return codeEditorService.onCodeEditorAdd((editor) => {
41
+ listener(editor);
42
+ });
43
+ }
44
+ function onDidCreateDiffEditor(listener) {
45
+ const codeEditorService = StandaloneServices.get(ICodeEditorService);
46
+ return codeEditorService.onDiffEditorAdd((editor) => {
47
+ listener(editor);
48
+ });
49
+ }
50
+ function getEditors() {
51
+ const codeEditorService = StandaloneServices.get(ICodeEditorService);
52
+ return codeEditorService.listCodeEditors();
53
+ }
54
+ function getDiffEditors() {
55
+ const codeEditorService = StandaloneServices.get(ICodeEditorService);
56
+ return codeEditorService.listDiffEditors();
57
+ }
58
+ function createDiffEditor(domElement, options, override) {
59
+ const instantiationService = StandaloneServices.initialize(override || {});
60
+ return instantiationService.createInstance(StandaloneDiffEditor2, domElement, options);
61
+ }
62
+ function createMultiFileDiffEditor(domElement, override) {
63
+ const instantiationService = StandaloneServices.initialize(override || {});
64
+ return ( new MultiDiffEditorWidget(domElement, {}, instantiationService));
65
+ }
66
+ function addCommand(descriptor) {
67
+ if ((typeof descriptor.id !== 'string') || (typeof descriptor.run !== 'function')) {
68
+ throw ( new Error('Invalid command descriptor, `id` and `run` are required properties!'));
69
+ }
70
+ return CommandsRegistry.registerCommand(descriptor.id, descriptor.run);
71
+ }
72
+ function addEditorAction(descriptor) {
73
+ if ((typeof descriptor.id !== 'string') || (typeof descriptor.label !== 'string') || (typeof descriptor.run !== 'function')) {
74
+ throw ( new Error(
75
+ 'Invalid action descriptor, `id`, `label` and `run` are required properties!'
76
+ ));
77
+ }
78
+ const precondition = ContextKeyExpr.deserialize(descriptor.precondition);
79
+ const run = (accessor, ...args) => {
80
+ return EditorCommand.runEditorCommand(accessor, args, precondition, (accessor, editor, args) => Promise.resolve(descriptor.run(editor, ...args)));
81
+ };
82
+ const toDispose = ( new DisposableStore());
83
+ toDispose.add(CommandsRegistry.registerCommand(descriptor.id, run));
84
+ if (descriptor.contextMenuGroupId) {
85
+ const menuItem = {
86
+ command: {
87
+ id: descriptor.id,
88
+ title: descriptor.label
89
+ },
90
+ when: precondition,
91
+ group: descriptor.contextMenuGroupId,
92
+ order: descriptor.contextMenuOrder || 0
93
+ };
94
+ toDispose.add(MenuRegistry.appendMenuItem(MenuId.EditorContext, menuItem));
95
+ }
96
+ if (Array.isArray(descriptor.keybindings)) {
97
+ const keybindingService = StandaloneServices.get(IKeybindingService);
98
+ if (!(keybindingService instanceof StandaloneKeybindingService)) {
99
+ console.warn('Cannot add keybinding because the editor is configured with an unrecognized KeybindingService');
100
+ }
101
+ else {
102
+ const keybindingsWhen = ( ContextKeyExpr.and(precondition, ContextKeyExpr.deserialize(descriptor.keybindingContext)));
103
+ toDispose.add(keybindingService.addDynamicKeybindings(( descriptor.keybindings.map((keybinding) => {
104
+ return {
105
+ keybinding,
106
+ command: descriptor.id,
107
+ when: keybindingsWhen
108
+ };
109
+ }))));
110
+ }
111
+ }
112
+ return toDispose;
113
+ }
114
+ function addKeybindingRule(rule) {
115
+ return addKeybindingRules([rule]);
116
+ }
117
+ function addKeybindingRules(rules) {
118
+ const keybindingService = StandaloneServices.get(IKeybindingService);
119
+ if (!(keybindingService instanceof StandaloneKeybindingService)) {
120
+ console.warn('Cannot add keybinding because the editor is configured with an unrecognized KeybindingService');
121
+ return Disposable.None;
122
+ }
123
+ return keybindingService.addDynamicKeybindings(( rules.map((rule) => {
124
+ return {
125
+ keybinding: rule.keybinding,
126
+ command: rule.command,
127
+ commandArgs: rule.commandArgs,
128
+ when: ContextKeyExpr.deserialize(rule.when),
129
+ };
130
+ })));
131
+ }
132
+ function createModel(value, language, uri) {
133
+ const languageService = StandaloneServices.get(ILanguageService);
134
+ const languageId = languageService.getLanguageIdByMimeType(language) || language;
135
+ return createTextModel(StandaloneServices.get(IModelService), languageService, value, languageId, uri);
136
+ }
137
+ function setModelLanguage(model, mimeTypeOrLanguageId) {
138
+ const languageService = StandaloneServices.get(ILanguageService);
139
+ const languageId = languageService.getLanguageIdByMimeType(mimeTypeOrLanguageId) || mimeTypeOrLanguageId || PLAINTEXT_LANGUAGE_ID;
140
+ model.setLanguage(languageService.createById(languageId));
141
+ }
142
+ function setModelMarkers(model, owner, markers) {
143
+ if (model) {
144
+ const markerService = StandaloneServices.get(IMarkerService);
145
+ markerService.changeOne(owner, model.uri, markers);
146
+ }
147
+ }
148
+ function removeAllMarkers(owner) {
149
+ const markerService = StandaloneServices.get(IMarkerService);
150
+ markerService.changeAll(owner, []);
151
+ }
152
+ function getModelMarkers(filter) {
153
+ const markerService = StandaloneServices.get(IMarkerService);
154
+ return markerService.read(filter);
155
+ }
156
+ function onDidChangeMarkers(listener) {
157
+ const markerService = StandaloneServices.get(IMarkerService);
158
+ return markerService.onMarkerChanged(listener);
159
+ }
160
+ function getModel(uri) {
161
+ const modelService = StandaloneServices.get(IModelService);
162
+ return modelService.getModel(uri);
163
+ }
164
+ function getModels() {
165
+ const modelService = StandaloneServices.get(IModelService);
166
+ return modelService.getModels();
167
+ }
168
+ function onDidCreateModel(listener) {
169
+ const modelService = StandaloneServices.get(IModelService);
170
+ return modelService.onModelAdded(listener);
171
+ }
172
+ function onWillDisposeModel(listener) {
173
+ const modelService = StandaloneServices.get(IModelService);
174
+ return modelService.onModelRemoved(listener);
175
+ }
176
+ function onDidChangeModelLanguage(listener) {
177
+ const modelService = StandaloneServices.get(IModelService);
178
+ return modelService.onModelLanguageChanged((e) => {
179
+ listener({
180
+ model: e.model,
181
+ oldLanguage: e.oldLanguageId
182
+ });
183
+ });
184
+ }
185
+ function createWebWorker(opts) {
186
+ return createWebWorker$1(StandaloneServices.get(IModelService), opts);
187
+ }
188
+ function colorizeElement(domNode, options) {
189
+ const languageService = StandaloneServices.get(ILanguageService);
190
+ const themeService = StandaloneServices.get(IStandaloneThemeService);
191
+ return Colorizer.colorizeElement(themeService, languageService, domNode, options).then(() => {
192
+ themeService.registerEditorContainer(domNode);
193
+ });
194
+ }
195
+ function colorize(text, languageId, options) {
196
+ const languageService = StandaloneServices.get(ILanguageService);
197
+ const themeService = StandaloneServices.get(IStandaloneThemeService);
198
+ themeService.registerEditorContainer(mainWindow.document.body);
199
+ return Colorizer.colorize(languageService, text, languageId, options);
200
+ }
201
+ function colorizeModelLine(model, lineNumber, tabSize = 4) {
202
+ const themeService = StandaloneServices.get(IStandaloneThemeService);
203
+ themeService.registerEditorContainer(mainWindow.document.body);
204
+ return Colorizer.colorizeModelLine(model, lineNumber, tabSize);
205
+ }
206
+ function getSafeTokenizationSupport(language) {
207
+ const tokenizationSupport = TokenizationRegistry.get(language);
208
+ if (tokenizationSupport) {
209
+ return tokenizationSupport;
210
+ }
211
+ return {
212
+ getInitialState: () => NullState,
213
+ tokenize: (line, hasEOL, state) => nullTokenize(language, state)
214
+ };
215
+ }
216
+ function tokenize(text, languageId) {
217
+ TokenizationRegistry.getOrCreate(languageId);
218
+ const tokenizationSupport = getSafeTokenizationSupport(languageId);
219
+ const lines = splitLines(text);
220
+ const result = [];
221
+ let state = tokenizationSupport.getInitialState();
222
+ for (let i = 0, len = lines.length; i < len; i++) {
223
+ const line = lines[i];
224
+ const tokenizationResult = tokenizationSupport.tokenize(line, true, state);
225
+ result[i] = tokenizationResult.tokens;
226
+ state = tokenizationResult.endState;
227
+ }
228
+ return result;
229
+ }
230
+ function defineTheme(themeName, themeData) {
231
+ const standaloneThemeService = StandaloneServices.get(IStandaloneThemeService);
232
+ standaloneThemeService.defineTheme(themeName, themeData);
233
+ }
234
+ function setTheme(themeName) {
235
+ const standaloneThemeService = StandaloneServices.get(IStandaloneThemeService);
236
+ standaloneThemeService.setTheme(themeName);
237
+ }
238
+ function remeasureFonts() {
239
+ FontMeasurements.clearAllFontInfos();
240
+ }
241
+ function registerCommand(id, handler) {
242
+ return CommandsRegistry.registerCommand({ id, handler });
243
+ }
244
+ function registerLinkOpener(opener) {
245
+ const openerService = StandaloneServices.get(IOpenerService);
246
+ return openerService.registerOpener({
247
+ async open(resource) {
248
+ if (typeof resource === 'string') {
249
+ resource = ( URI.parse(resource));
250
+ }
251
+ return opener.open(resource);
252
+ }
253
+ });
254
+ }
255
+ function registerEditorOpener(opener) {
256
+ const codeEditorService = StandaloneServices.get(ICodeEditorService);
257
+ return codeEditorService.registerCodeEditorOpenHandler(async (input, source, sideBySide) => {
258
+ if (!source) {
259
+ return null;
260
+ }
261
+ const selection = input.options?.selection;
262
+ let selectionOrPosition;
263
+ if (selection && typeof selection.endLineNumber === 'number' && typeof selection.endColumn === 'number') {
264
+ selectionOrPosition = selection;
265
+ }
266
+ else if (selection) {
267
+ selectionOrPosition = { lineNumber: selection.startLineNumber, column: selection.startColumn };
268
+ }
269
+ if (await opener.openCodeEditor(source, input.resource, selectionOrPosition)) {
270
+ return source;
271
+ }
272
+ return null;
273
+ });
274
+ }
275
+ function createMonacoEditorAPI() {
276
+ return {
277
+ create: create,
278
+ getEditors: getEditors,
279
+ getDiffEditors: getDiffEditors,
280
+ onDidCreateEditor: onDidCreateEditor,
281
+ onDidCreateDiffEditor: onDidCreateDiffEditor,
282
+ createDiffEditor: createDiffEditor,
283
+ addCommand: addCommand,
284
+ addEditorAction: addEditorAction,
285
+ addKeybindingRule: addKeybindingRule,
286
+ addKeybindingRules: addKeybindingRules,
287
+ createModel: createModel,
288
+ setModelLanguage: setModelLanguage,
289
+ setModelMarkers: setModelMarkers,
290
+ getModelMarkers: getModelMarkers,
291
+ removeAllMarkers: removeAllMarkers,
292
+ onDidChangeMarkers: onDidChangeMarkers,
293
+ getModels: getModels,
294
+ getModel: getModel,
295
+ onDidCreateModel: onDidCreateModel,
296
+ onWillDisposeModel: onWillDisposeModel,
297
+ onDidChangeModelLanguage: onDidChangeModelLanguage,
298
+ createWebWorker: createWebWorker,
299
+ colorizeElement: colorizeElement,
300
+ colorize: colorize,
301
+ colorizeModelLine: colorizeModelLine,
302
+ tokenize: tokenize,
303
+ defineTheme: defineTheme,
304
+ setTheme: setTheme,
305
+ remeasureFonts: remeasureFonts,
306
+ registerCommand: registerCommand,
307
+ registerLinkOpener: registerLinkOpener,
308
+ registerEditorOpener: registerEditorOpener,
309
+ AccessibilitySupport: AccessibilitySupport,
310
+ ContentWidgetPositionPreference: ContentWidgetPositionPreference,
311
+ CursorChangeReason: CursorChangeReason,
312
+ DefaultEndOfLine: DefaultEndOfLine,
313
+ EditorAutoIndentStrategy: EditorAutoIndentStrategy,
314
+ EditorOption: EditorOption,
315
+ EndOfLinePreference: EndOfLinePreference,
316
+ EndOfLineSequence: EndOfLineSequence,
317
+ MinimapPosition: MinimapPosition,
318
+ MinimapSectionHeaderStyle: MinimapSectionHeaderStyle,
319
+ MouseTargetType: MouseTargetType,
320
+ OverlayWidgetPositionPreference: OverlayWidgetPositionPreference,
321
+ OverviewRulerLane: OverviewRulerLane,
322
+ GlyphMarginLane: GlyphMarginLane,
323
+ RenderLineNumbersType: RenderLineNumbersType,
324
+ RenderMinimap: RenderMinimap,
325
+ ScrollbarVisibility: ScrollbarVisibility,
326
+ ScrollType: ScrollType,
327
+ TextEditorCursorBlinkingStyle: TextEditorCursorBlinkingStyle,
328
+ TextEditorCursorStyle: TextEditorCursorStyle,
329
+ TrackedRangeStickiness: TrackedRangeStickiness,
330
+ WrappingIndent: WrappingIndent,
331
+ InjectedTextCursorStops: InjectedTextCursorStops,
332
+ PositionAffinity: PositionAffinity,
333
+ ShowLightbulbIconMode: ShowLightbulbIconMode,
334
+ ConfigurationChangedEvent: ConfigurationChangedEvent,
335
+ BareFontInfo: BareFontInfo,
336
+ FontInfo: FontInfo,
337
+ TextModelResolvedOptions: TextModelResolvedOptions,
338
+ FindMatch: FindMatch,
339
+ ApplyUpdateResult: ApplyUpdateResult,
340
+ EditorZoom: EditorZoom,
341
+ createMultiFileDiffEditor: createMultiFileDiffEditor,
342
+ EditorType: EditorType,
343
+ EditorOptions: EditorOptions
344
+ };
345
+ }
346
+
347
+ export { addCommand, addEditorAction, addKeybindingRule, addKeybindingRules, colorize, colorizeElement, colorizeModelLine, create, createDiffEditor, createModel, createMonacoEditorAPI, createMultiFileDiffEditor, createWebWorker, defineTheme, getDiffEditors, getEditors, getModel, getModelMarkers, getModels, onDidChangeMarkers, onDidChangeModelLanguage, onDidCreateDiffEditor, onDidCreateEditor, onDidCreateModel, onWillDisposeModel, registerCommand, registerEditorOpener, registerLinkOpener, remeasureFonts, removeAllMarkers, setModelLanguage, setModelMarkers, setTheme, tokenize };