@deephaven/console 0.43.0 → 0.44.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/dist/Console.css +44 -0
- package/dist/Console.css.map +1 -0
- package/dist/Console.js +875 -0
- package/dist/Console.js.map +1 -0
- package/dist/ConsoleInput.css +42 -0
- package/dist/ConsoleInput.css.map +1 -0
- package/dist/ConsoleInput.js +442 -0
- package/dist/ConsoleInput.js.map +1 -0
- package/dist/ConsoleMenu.css +25 -0
- package/dist/ConsoleMenu.css.map +1 -0
- package/dist/ConsoleMenu.js +192 -0
- package/dist/ConsoleMenu.js.map +1 -0
- package/dist/ConsolePropTypes.js +10 -0
- package/dist/ConsolePropTypes.js.map +1 -0
- package/dist/ConsoleShortcuts.js +85 -0
- package/dist/ConsoleShortcuts.js.map +1 -0
- package/dist/ConsoleStatusBar.css +52 -0
- package/dist/ConsoleStatusBar.css.map +1 -0
- package/dist/ConsoleStatusBar.js +105 -0
- package/dist/ConsoleStatusBar.js.map +1 -0
- package/dist/HeapUsage.css +61 -0
- package/dist/HeapUsage.css.map +1 -0
- package/dist/HeapUsage.js +168 -0
- package/dist/HeapUsage.js.map +1 -0
- package/dist/StoragePropTypes.js +16 -0
- package/dist/StoragePropTypes.js.map +1 -0
- package/dist/command-history/CommandHistory.css +41 -0
- package/dist/command-history/CommandHistory.css.map +1 -0
- package/dist/command-history/CommandHistory.js +381 -0
- package/dist/command-history/CommandHistory.js.map +1 -0
- package/dist/command-history/CommandHistoryActions.css +10 -0
- package/dist/command-history/CommandHistoryActions.css.map +1 -0
- package/dist/command-history/CommandHistoryActions.js +47 -0
- package/dist/command-history/CommandHistoryActions.js.map +1 -0
- package/dist/command-history/CommandHistoryItem.css +61 -0
- package/dist/command-history/CommandHistoryItem.css.map +1 -0
- package/dist/command-history/CommandHistoryItem.js +50 -0
- package/dist/command-history/CommandHistoryItem.js.map +1 -0
- package/dist/command-history/CommandHistoryItemTooltip.css +37 -0
- package/dist/command-history/CommandHistoryItemTooltip.css.map +1 -0
- package/dist/command-history/CommandHistoryItemTooltip.js +159 -0
- package/dist/command-history/CommandHistoryItemTooltip.js.map +1 -0
- package/dist/command-history/CommandHistoryStorage.js +2 -0
- package/dist/command-history/CommandHistoryStorage.js.map +1 -0
- package/dist/command-history/CommandHistoryTypes.js +2 -0
- package/dist/command-history/CommandHistoryTypes.js.map +1 -0
- package/dist/command-history/CommandHistoryViewportUpdater.js +57 -0
- package/dist/command-history/CommandHistoryViewportUpdater.js.map +1 -0
- package/dist/command-history/index.js +7 -0
- package/dist/command-history/index.js.map +1 -0
- package/dist/common/Code.js +45 -0
- package/dist/common/Code.js.map +1 -0
- package/dist/common/ConsoleConstants.js +10 -0
- package/dist/common/ConsoleConstants.js.map +1 -0
- package/dist/common/ConsoleUtils.js +62 -0
- package/dist/common/ConsoleUtils.js.map +1 -0
- package/dist/common/ObjectIcon.js +33 -0
- package/dist/common/ObjectIcon.js.map +1 -0
- package/dist/common/index.js +5 -0
- package/dist/common/index.js.map +1 -0
- package/dist/console-history/ConsoleHistory.css +42 -0
- package/dist/console-history/ConsoleHistory.css.map +1 -0
- package/dist/console-history/ConsoleHistory.js +42 -0
- package/dist/console-history/ConsoleHistory.js.map +1 -0
- package/dist/console-history/ConsoleHistoryItem.css +87 -0
- package/dist/console-history/ConsoleHistoryItem.css.map +1 -0
- package/dist/console-history/ConsoleHistoryItem.js +139 -0
- package/dist/console-history/ConsoleHistoryItem.js.map +1 -0
- package/dist/console-history/ConsoleHistoryItemResult.js +22 -0
- package/dist/console-history/ConsoleHistoryItemResult.js.map +1 -0
- package/dist/console-history/ConsoleHistoryResultErrorMessage.js +142 -0
- package/dist/console-history/ConsoleHistoryResultErrorMessage.js.map +1 -0
- package/dist/console-history/ConsoleHistoryResultInProgress.css +27 -0
- package/dist/console-history/ConsoleHistoryResultInProgress.css.map +1 -0
- package/dist/console-history/ConsoleHistoryResultInProgress.js +66 -0
- package/dist/console-history/ConsoleHistoryResultInProgress.js.map +1 -0
- package/dist/console-history/ConsoleHistoryTypes.js +2 -0
- package/dist/console-history/ConsoleHistoryTypes.js.map +1 -0
- package/dist/console-history/index.js +6 -0
- package/dist/console-history/index.js.map +1 -0
- package/dist/csv/CsvFormats.js +134 -0
- package/dist/csv/CsvFormats.js.map +1 -0
- package/dist/csv/CsvInputBar.css +36 -0
- package/dist/csv/CsvInputBar.css.map +1 -0
- package/dist/csv/CsvInputBar.js +342 -0
- package/dist/csv/CsvInputBar.js.map +1 -0
- package/dist/csv/CsvOverlay.css +57 -0
- package/dist/csv/CsvOverlay.css.map +1 -0
- package/dist/csv/CsvOverlay.js +244 -0
- package/dist/csv/CsvOverlay.js.map +1 -0
- package/dist/csv/CsvParser.js +268 -0
- package/dist/csv/CsvParser.js.map +1 -0
- package/dist/csv/CsvTypeParser.js +235 -0
- package/dist/csv/CsvTypeParser.js.map +1 -0
- package/dist/csv/NewTableColumnTypes.js +16 -0
- package/dist/csv/NewTableColumnTypes.js.map +1 -0
- package/dist/declaration.d.js +2 -0
- package/dist/declaration.d.js.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/log/LogLevel.js +11 -0
- package/dist/log/LogLevel.js.map +1 -0
- package/dist/log/LogLevelMenuItem.css +38 -0
- package/dist/log/LogLevelMenuItem.css.map +1 -0
- package/dist/log/LogLevelMenuItem.js +32 -0
- package/dist/log/LogLevelMenuItem.js.map +1 -0
- package/dist/log/LogView.css +65 -0
- package/dist/log/LogView.css.map +1 -0
- package/dist/log/LogView.js +487 -0
- package/dist/log/LogView.js.map +1 -0
- package/dist/monaco/MonacoProviders.js +314 -0
- package/dist/monaco/MonacoProviders.js.map +1 -0
- package/dist/monaco/MonacoTheme.module.css +54 -0
- package/dist/monaco/MonacoTheme.module.css.map +1 -0
- package/dist/monaco/MonacoUtils.js +423 -0
- package/dist/monaco/MonacoUtils.js.map +1 -0
- package/dist/monaco/index.js +4 -0
- package/dist/monaco/index.js.map +1 -0
- package/dist/monaco/lang/Language.js +2 -0
- package/dist/monaco/lang/Language.js.map +1 -0
- package/dist/monaco/lang/db.js +152 -0
- package/dist/monaco/lang/db.js.map +1 -0
- package/dist/monaco/lang/groovy.js +229 -0
- package/dist/monaco/lang/groovy.js.map +1 -0
- package/dist/monaco/lang/log.js +64 -0
- package/dist/monaco/lang/log.js.map +1 -0
- package/dist/monaco/lang/python.js +234 -0
- package/dist/monaco/lang/python.js.map +1 -0
- package/dist/monaco/lang/scala.js +264 -0
- package/dist/monaco/lang/scala.js.map +1 -0
- package/dist/notebook/Editor.css +6 -0
- package/dist/notebook/Editor.css.map +1 -0
- package/dist/notebook/Editor.js +130 -0
- package/dist/notebook/Editor.js.map +1 -0
- package/dist/notebook/ScriptEditor.css +8 -0
- package/dist/notebook/ScriptEditor.css.map +1 -0
- package/dist/notebook/ScriptEditor.d.ts.map +1 -1
- package/dist/notebook/ScriptEditor.js +311 -0
- package/dist/notebook/ScriptEditor.js.map +1 -0
- package/dist/notebook/ScriptEditorUtils.d.ts +7 -0
- package/dist/notebook/ScriptEditorUtils.d.ts.map +1 -1
- package/dist/notebook/ScriptEditorUtils.js +52 -0
- package/dist/notebook/ScriptEditorUtils.js.map +1 -0
- package/package.json +12 -12
|
@@ -0,0 +1,423 @@
|
|
|
1
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
2
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
3
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
4
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
5
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
6
|
+
/* eslint-disable @typescript-eslint/ban-ts-comment */
|
|
7
|
+
/**
|
|
8
|
+
* Exports a function for initializing monaco with the deephaven theme/config
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import { assertNotNull } from '@deephaven/utils';
|
|
12
|
+
import { find as linkifyFind } from 'linkifyjs';
|
|
13
|
+
import * as monaco from 'monaco-editor';
|
|
14
|
+
// @ts-ignore
|
|
15
|
+
import { KeyCodeUtils } from 'monaco-editor/esm/vs/base/common/keyCodes.js';
|
|
16
|
+
import Log from '@deephaven/log';
|
|
17
|
+
import MonacoTheme from "./MonacoTheme.module.css";
|
|
18
|
+
import PyLang from "./lang/python.js";
|
|
19
|
+
import GroovyLang from "./lang/groovy.js";
|
|
20
|
+
import ScalaLang from "./lang/scala.js";
|
|
21
|
+
import DbLang from "./lang/db.js";
|
|
22
|
+
import LogLang from "./lang/log.js";
|
|
23
|
+
var log = Log.module('MonacoUtils');
|
|
24
|
+
class MonacoUtils {
|
|
25
|
+
/**
|
|
26
|
+
* Initializes Monaco for the environment
|
|
27
|
+
* @param getWorker The getWorker function Monaco should use
|
|
28
|
+
* The workers should be provided by the caller and bundled by their build system (e.g. Vite, Webpack)
|
|
29
|
+
*/
|
|
30
|
+
static init() {
|
|
31
|
+
var {
|
|
32
|
+
getWorker
|
|
33
|
+
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
34
|
+
log.debug('Initializing Monaco...');
|
|
35
|
+
if (getWorker !== undefined) {
|
|
36
|
+
MonacoUtils.registerGetWorker(getWorker);
|
|
37
|
+
}
|
|
38
|
+
var {
|
|
39
|
+
registerLanguages,
|
|
40
|
+
removeHashtag
|
|
41
|
+
} = MonacoUtils;
|
|
42
|
+
var dhDarkRules = [{
|
|
43
|
+
token: '',
|
|
44
|
+
foreground: removeHashtag(MonacoTheme.foreground)
|
|
45
|
+
}, {
|
|
46
|
+
token: 'string',
|
|
47
|
+
foreground: removeHashtag(MonacoTheme.string)
|
|
48
|
+
}, {
|
|
49
|
+
token: 'string.delim',
|
|
50
|
+
foreground: removeHashtag(MonacoTheme['string-delim'])
|
|
51
|
+
}, {
|
|
52
|
+
token: 'keyword',
|
|
53
|
+
foreground: removeHashtag(MonacoTheme.keyword)
|
|
54
|
+
}, {
|
|
55
|
+
token: 'identifier.js',
|
|
56
|
+
foreground: removeHashtag(MonacoTheme['identifier-js'])
|
|
57
|
+
}, {
|
|
58
|
+
token: 'delimiter',
|
|
59
|
+
foreground: removeHashtag(MonacoTheme.delimiter)
|
|
60
|
+
}, {
|
|
61
|
+
token: 'comment',
|
|
62
|
+
foreground: removeHashtag(MonacoTheme.comment)
|
|
63
|
+
}, {
|
|
64
|
+
token: 'number',
|
|
65
|
+
foreground: removeHashtag(MonacoTheme.number)
|
|
66
|
+
}, {
|
|
67
|
+
token: 'storage',
|
|
68
|
+
foreground: removeHashtag(MonacoTheme.storage)
|
|
69
|
+
}, {
|
|
70
|
+
token: 'identifier',
|
|
71
|
+
foreground: removeHashtag(MonacoTheme.identifier)
|
|
72
|
+
}, {
|
|
73
|
+
token: 'namespace.identifier',
|
|
74
|
+
foreground: removeHashtag(MonacoTheme['namespace-identifier'])
|
|
75
|
+
}, {
|
|
76
|
+
token: 'operator',
|
|
77
|
+
foreground: removeHashtag(MonacoTheme.operator)
|
|
78
|
+
}, {
|
|
79
|
+
token: 'predefined',
|
|
80
|
+
foreground: removeHashtag(MonacoTheme.predefined)
|
|
81
|
+
}, {
|
|
82
|
+
token: 'error.log',
|
|
83
|
+
foreground: MonacoTheme['log-error'].substring(1)
|
|
84
|
+
}, {
|
|
85
|
+
token: 'warn.log',
|
|
86
|
+
foreground: removeHashtag(MonacoTheme['log-warn'])
|
|
87
|
+
}, {
|
|
88
|
+
token: 'info.log',
|
|
89
|
+
foreground: removeHashtag(MonacoTheme['log-info'])
|
|
90
|
+
}, {
|
|
91
|
+
token: 'stdout.log',
|
|
92
|
+
foreground: removeHashtag(MonacoTheme['log-stdout'])
|
|
93
|
+
}, {
|
|
94
|
+
token: 'trace.log',
|
|
95
|
+
foreground: removeHashtag(MonacoTheme['log-trace'])
|
|
96
|
+
}, {
|
|
97
|
+
token: 'debug.log',
|
|
98
|
+
foreground: removeHashtag(MonacoTheme['log-debug'])
|
|
99
|
+
}, {
|
|
100
|
+
token: 'date.log',
|
|
101
|
+
foreground: removeHashtag(MonacoTheme['log-date'])
|
|
102
|
+
}];
|
|
103
|
+
var dhDarkColors = {
|
|
104
|
+
errorForeground: MonacoTheme['error-foreground'],
|
|
105
|
+
'inputOption.activeBorder': MonacoTheme['input-option-active-border'],
|
|
106
|
+
'editor.background': MonacoTheme.background,
|
|
107
|
+
'editor.foreground': MonacoTheme.foreground,
|
|
108
|
+
'editor.lineHighlightBackground': MonacoTheme['editor-line-highlight-bg'],
|
|
109
|
+
'editorLineNumber.foreground': MonacoTheme['editor-line-number-foreground'],
|
|
110
|
+
'editor.selectionBackground': MonacoTheme['editor-selection-background'],
|
|
111
|
+
'editor.findMatchBackground': MonacoTheme['editor-find-match-background'],
|
|
112
|
+
'editor.findMatchHighlightBackground': MonacoTheme['editor-find-match-highlight-background'],
|
|
113
|
+
'editorSuggestWidget.background': MonacoTheme['editor-suggest-widget-background'],
|
|
114
|
+
'editorSuggestWidget.border': MonacoTheme['editor-suggest-widget-border'],
|
|
115
|
+
'editorSuggestWidget.foreground': MonacoTheme['editor-suggest-widget-foreground'],
|
|
116
|
+
'editorSuggestWidget.selectedBackground': MonacoTheme['editor-suggest-widget-selected-background'],
|
|
117
|
+
'editorSuggestWidget.highlightForeground': MonacoTheme['editor-suggest-widget-highlightForeground'],
|
|
118
|
+
'list.hoverBackground': MonacoTheme['list-hover-background'],
|
|
119
|
+
'dropdown.background': MonacoTheme['context-menu-background'],
|
|
120
|
+
'dropdown.foreground': MonacoTheme['context-menu-foreground'],
|
|
121
|
+
'menu.selectionBackground': MonacoTheme['menu-selection-background'],
|
|
122
|
+
'list.focusBackground': MonacoTheme['menu-selection-background'],
|
|
123
|
+
'editorWidget.background': MonacoTheme['editor-widget-background'],
|
|
124
|
+
'inputOption.activeBackground': MonacoTheme['input-option-active-background'],
|
|
125
|
+
'inputOption.activeForeground': MonacoTheme['input-option-active-foreground'],
|
|
126
|
+
focusBorder: MonacoTheme['focus-border'],
|
|
127
|
+
'input.background': MonacoTheme['input-background'],
|
|
128
|
+
'input.foreground': MonacoTheme['input-foreground'],
|
|
129
|
+
'input.border': MonacoTheme['input-border'],
|
|
130
|
+
'textLink.foreground': MonacoTheme['text-link-foreground'],
|
|
131
|
+
'textLink.activeForeground': MonacoTheme['text-link-active-foreground'],
|
|
132
|
+
'editorLink.activeForeground': MonacoTheme['editor-link-active-foreground']
|
|
133
|
+
};
|
|
134
|
+
monaco.editor.defineTheme('dh-dark', {
|
|
135
|
+
base: 'vs-dark',
|
|
136
|
+
inherit: true,
|
|
137
|
+
rules: dhDarkRules,
|
|
138
|
+
colors: dhDarkColors
|
|
139
|
+
});
|
|
140
|
+
log.debug2('monaco theme: ', MonacoTheme);
|
|
141
|
+
monaco.editor.setTheme('dh-dark');
|
|
142
|
+
registerLanguages([DbLang, PyLang, GroovyLang, LogLang, ScalaLang]);
|
|
143
|
+
log.debug('Monaco initialized.');
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Register the getWorker function for Monaco
|
|
148
|
+
* @param getWorker The getWorker function for Monaco
|
|
149
|
+
*/
|
|
150
|
+
static registerGetWorker(getWorker) {
|
|
151
|
+
window.MonacoEnvironment = _objectSpread(_objectSpread({}, window.MonacoEnvironment), {}, {
|
|
152
|
+
getWorker
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Remove the hashtag prefix from a CSS color string.
|
|
158
|
+
* Monaco expects colors to be the value only, no hashtag.
|
|
159
|
+
* @param color The hex color string to remove the hashtag from, eg. '#ffffff'
|
|
160
|
+
*/
|
|
161
|
+
static removeHashtag(color) {
|
|
162
|
+
return color.substring(1);
|
|
163
|
+
}
|
|
164
|
+
static registerLanguages(languages) {
|
|
165
|
+
// First override the default loader for any language we have a custom definition for
|
|
166
|
+
// https://github.com/Microsoft/monaco-editor/issues/252#issuecomment-482786867
|
|
167
|
+
var languageIds = languages.map(_ref => {
|
|
168
|
+
var {
|
|
169
|
+
id
|
|
170
|
+
} = _ref;
|
|
171
|
+
return id;
|
|
172
|
+
});
|
|
173
|
+
monaco.languages.getLanguages().filter(_ref2 => {
|
|
174
|
+
var {
|
|
175
|
+
id
|
|
176
|
+
} = _ref2;
|
|
177
|
+
return languageIds.includes(id);
|
|
178
|
+
}).forEach(languageParam => {
|
|
179
|
+
var language = languageParam;
|
|
180
|
+
log.debug2('Overriding default language loader:', language.id);
|
|
181
|
+
});
|
|
182
|
+
|
|
183
|
+
// Then register our language definitions
|
|
184
|
+
languages.forEach(language => {
|
|
185
|
+
MonacoUtils.registerLanguage(language);
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
static registerLanguage(language) {
|
|
189
|
+
log.debug2('Registering language: ', language.id);
|
|
190
|
+
monaco.languages.register(language);
|
|
191
|
+
monaco.languages.onLanguage(language.id, () => {
|
|
192
|
+
monaco.languages.setLanguageConfiguration(language.id, language.conf);
|
|
193
|
+
monaco.languages.setMonarchTokensProvider(language.id, language.language);
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* Set EOL preference for the editor
|
|
199
|
+
* @param editor The editor to set the EOL for
|
|
200
|
+
* @param eolSequence EOL sequence
|
|
201
|
+
*/
|
|
202
|
+
static setEOL(editor) {
|
|
203
|
+
var _editor$getModel;
|
|
204
|
+
var eolSequence = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : monaco.editor.EndOfLineSequence.LF;
|
|
205
|
+
(_editor$getModel = editor.getModel()) === null || _editor$getModel === void 0 ? void 0 : _editor$getModel.setEOL(eolSequence);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* Links an editor with a provided session to provide completion items.
|
|
210
|
+
* @param session The IdeSession to link
|
|
211
|
+
* @param editor The editor to link the session to
|
|
212
|
+
* @returns A cleanup function for disposing of the created listeners
|
|
213
|
+
*/
|
|
214
|
+
static openDocument(editor, session) {
|
|
215
|
+
var model = editor.getModel();
|
|
216
|
+
assertNotNull(model);
|
|
217
|
+
var didOpenDocumentParams = {
|
|
218
|
+
textDocument: {
|
|
219
|
+
uri: "".concat(model.uri),
|
|
220
|
+
languageId: model.getLanguageId(),
|
|
221
|
+
version: model.getVersionId(),
|
|
222
|
+
text: model.getValue()
|
|
223
|
+
}
|
|
224
|
+
};
|
|
225
|
+
log.debug2('didOpenDocumentParams: ', didOpenDocumentParams);
|
|
226
|
+
session.openDocument(didOpenDocumentParams);
|
|
227
|
+
var dispose = editor.onDidChangeModelContent(changedEvent => {
|
|
228
|
+
var {
|
|
229
|
+
changes,
|
|
230
|
+
versionId
|
|
231
|
+
} = changedEvent;
|
|
232
|
+
var contentChanges = [];
|
|
233
|
+
for (var i = 0; i < changes.length; i += 1) {
|
|
234
|
+
var change = changes[i];
|
|
235
|
+
var {
|
|
236
|
+
range,
|
|
237
|
+
rangeLength,
|
|
238
|
+
text
|
|
239
|
+
} = change;
|
|
240
|
+
var contentChange = {
|
|
241
|
+
range: {
|
|
242
|
+
start: {
|
|
243
|
+
line: range.startLineNumber - 1,
|
|
244
|
+
character: range.startColumn - 1
|
|
245
|
+
},
|
|
246
|
+
end: {
|
|
247
|
+
line: range.endLineNumber - 1,
|
|
248
|
+
character: range.endColumn - 1
|
|
249
|
+
}
|
|
250
|
+
},
|
|
251
|
+
rangeLength,
|
|
252
|
+
text
|
|
253
|
+
};
|
|
254
|
+
contentChanges.push(contentChange);
|
|
255
|
+
}
|
|
256
|
+
if (contentChanges.length > 0) {
|
|
257
|
+
var didChangeDocumentParams = {
|
|
258
|
+
textDocument: {
|
|
259
|
+
version: versionId,
|
|
260
|
+
uri: "".concat(model.uri)
|
|
261
|
+
},
|
|
262
|
+
contentChanges
|
|
263
|
+
};
|
|
264
|
+
log.debug2('didChangeDocumentParams', didChangeDocumentParams);
|
|
265
|
+
session.changeDocument(didChangeDocumentParams);
|
|
266
|
+
}
|
|
267
|
+
});
|
|
268
|
+
return dispose;
|
|
269
|
+
}
|
|
270
|
+
static closeDocument(editor, session) {
|
|
271
|
+
var model = editor.getModel();
|
|
272
|
+
assertNotNull(model);
|
|
273
|
+
var didCloseDocumentParams = {
|
|
274
|
+
textDocument: {
|
|
275
|
+
uri: "".concat(model.uri)
|
|
276
|
+
}
|
|
277
|
+
};
|
|
278
|
+
session.closeDocument(didCloseDocumentParams);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
/**
|
|
282
|
+
* Register a paste handle to clean up any garbage code pasted.
|
|
283
|
+
* Most of this comes from copying from Slack, which has a bad habit of injecting their own characters in your code snippets.
|
|
284
|
+
* I've emailed Slack about the issue and they're working on it. I can't reference a ticket number because their ticket system is entirely internally facing.
|
|
285
|
+
* @param editor The editor the register the paste handler for
|
|
286
|
+
*/
|
|
287
|
+
static registerPasteHandler(editor) {
|
|
288
|
+
editor.onDidPaste(pasteEvent => {
|
|
289
|
+
var smartQuotes = /“|”/g;
|
|
290
|
+
var invalidChars = /\u200b/g; // zero width space
|
|
291
|
+
var invalidSpaces = /\u00A0/g; // non-breaking space
|
|
292
|
+
var editorModel = editor.getModel();
|
|
293
|
+
assertNotNull(editorModel);
|
|
294
|
+
var pastedText = editorModel.getValueInRange(pasteEvent.range);
|
|
295
|
+
if (smartQuotes.test(pastedText) || invalidChars.test(pastedText) || invalidSpaces.test(pastedText)) {
|
|
296
|
+
editorModel.applyEdits([{
|
|
297
|
+
range: pasteEvent.range,
|
|
298
|
+
text: pastedText.replace(smartQuotes, '"').replace(invalidChars, '').replace(invalidSpaces, ' ')
|
|
299
|
+
}]);
|
|
300
|
+
}
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
static isMacPlatform() {
|
|
304
|
+
var {
|
|
305
|
+
platform
|
|
306
|
+
} = window.navigator;
|
|
307
|
+
return platform.startsWith('Mac');
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
/**
|
|
311
|
+
* Remove any keybindings which are used for our own shortcuts.
|
|
312
|
+
* This allows the key events to bubble up so a component higher up can capture them
|
|
313
|
+
* @param editor The editor to remove the keybindings from
|
|
314
|
+
*/
|
|
315
|
+
static removeConflictingKeybindings(editor) {
|
|
316
|
+
// Multi-mod key events have a specific order
|
|
317
|
+
// E.g. ctrl+alt+UpArrow is not found, but alt+ctrl+UpArrow is found
|
|
318
|
+
// meta is WindowsKey on Windows and cmd on Mac
|
|
319
|
+
// ctrl is ctrl Windows and ctrl on Mac
|
|
320
|
+
// alt is alt on Windows and option on Mac
|
|
321
|
+
var keybindings = [{
|
|
322
|
+
windows: 'ctrl+D',
|
|
323
|
+
mac: 'meta+D'
|
|
324
|
+
}, {
|
|
325
|
+
windows: 'ctrl+H'
|
|
326
|
+
}];
|
|
327
|
+
try {
|
|
328
|
+
keybindings.forEach(keybinding => {
|
|
329
|
+
if (MonacoUtils.isMacPlatform() && keybinding.mac === '' || !MonacoUtils.isMacPlatform() && keybinding.windows === '') {
|
|
330
|
+
return;
|
|
331
|
+
}
|
|
332
|
+
MonacoUtils.removeKeybinding(editor, MonacoUtils.isMacPlatform() ? keybinding.mac : keybinding.windows);
|
|
333
|
+
});
|
|
334
|
+
} catch (err) {
|
|
335
|
+
// This is probably only caused by Monaco changing private methods used here
|
|
336
|
+
log.error(err);
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
/**
|
|
341
|
+
* Remove a keybinding and allow the events to bubble up
|
|
342
|
+
* If you want the keybinding removed for all editors, add it to removeConflictingKeybindings
|
|
343
|
+
* Monaco still captures the event if you choose to override the keybinding with a no-op function
|
|
344
|
+
*
|
|
345
|
+
* Based on the following comment to remove a keybinding and let the event bubble up
|
|
346
|
+
* https://github.com/microsoft/monaco-editor/issues/287#issuecomment-331447475
|
|
347
|
+
* The issue for an API for this has apparently been open since 2016. Link below
|
|
348
|
+
* https://github.com/microsoft/monaco-editor/issues/102
|
|
349
|
+
* @param editor The editor to remove the keybinding from
|
|
350
|
+
* @param keybinding The key string to remove. E.g. 'ctrl+C' for copy on Windows
|
|
351
|
+
*/
|
|
352
|
+
static removeKeybinding(editor, keybinding) {
|
|
353
|
+
if (keybinding === undefined) {
|
|
354
|
+
return;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
/* eslint-disable no-underscore-dangle */
|
|
358
|
+
// It's possible a single keybinding has multiple commands depending on context
|
|
359
|
+
// @ts-ignore
|
|
360
|
+
var keybindings = editor._standaloneKeybindingService._getResolver()._map.get(keybinding);
|
|
361
|
+
if (keybindings != null) {
|
|
362
|
+
keybindings.forEach(elem => {
|
|
363
|
+
log.debug2("Removing Monaco keybinding ".concat(keybinding, " for ").concat(elem.command));
|
|
364
|
+
// @ts-ignore
|
|
365
|
+
editor._standaloneKeybindingService.addDynamicKeybinding("-".concat(elem.command), null, () => undefined);
|
|
366
|
+
});
|
|
367
|
+
} else {
|
|
368
|
+
log.warn("Did not find any keybindings to remove for ".concat(keybinding));
|
|
369
|
+
}
|
|
370
|
+
/* eslint-enable no-underscore-dangle */
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
static getMonacoKeyCodeFromShortcut(shortcut) {
|
|
374
|
+
var {
|
|
375
|
+
keyState
|
|
376
|
+
} = shortcut;
|
|
377
|
+
var {
|
|
378
|
+
keyValue
|
|
379
|
+
} = keyState;
|
|
380
|
+
if (keyValue === null) {
|
|
381
|
+
return 0;
|
|
382
|
+
}
|
|
383
|
+
var isMac = MonacoUtils.isMacPlatform();
|
|
384
|
+
if (isMac) {
|
|
385
|
+
return (
|
|
386
|
+
// eslint-disable-next-line no-bitwise
|
|
387
|
+
(keyState.metaKey ? monaco.KeyMod.CtrlCmd : 0) | (keyState.shiftKey ? monaco.KeyMod.Shift : 0) | (keyState.altKey ? monaco.KeyMod.Alt : 0) | (keyState.ctrlKey ? monaco.KeyMod.WinCtrl : 0) | KeyCodeUtils.fromString(keyValue)
|
|
388
|
+
);
|
|
389
|
+
}
|
|
390
|
+
return (
|
|
391
|
+
// eslint-disable-next-line no-bitwise
|
|
392
|
+
(keyState.ctrlKey ? monaco.KeyMod.CtrlCmd : 0) | (keyState.shiftKey ? monaco.KeyMod.Shift : 0) | (keyState.altKey ? monaco.KeyMod.Alt : 0) | (keyState.metaKey ? monaco.KeyMod.WinCtrl : 0) | KeyCodeUtils.fromString(keyValue)
|
|
393
|
+
);
|
|
394
|
+
}
|
|
395
|
+
static provideLinks(model) {
|
|
396
|
+
var newTokens = [];
|
|
397
|
+
var _loop = function _loop(i) {
|
|
398
|
+
var lineText = model.getLineContent(i);
|
|
399
|
+
var originalTokens = linkifyFind(lineText);
|
|
400
|
+
var tokens = originalTokens.filter(token => {
|
|
401
|
+
if (token.type === 'url') {
|
|
402
|
+
return /^https?:\/\//.test(token.value);
|
|
403
|
+
}
|
|
404
|
+
return true;
|
|
405
|
+
});
|
|
406
|
+
// map the tokens to the ranges - you know the line number now, use the token start/end as the startColumn/endColumn
|
|
407
|
+
tokens.forEach(token => {
|
|
408
|
+
newTokens.push({
|
|
409
|
+
url: token.href,
|
|
410
|
+
range: new monaco.Range(i, token.start + 1, i, token.end + 1)
|
|
411
|
+
});
|
|
412
|
+
});
|
|
413
|
+
};
|
|
414
|
+
for (var i = 1; i <= model.getLineCount(); i += 1) {
|
|
415
|
+
_loop(i);
|
|
416
|
+
}
|
|
417
|
+
return {
|
|
418
|
+
links: newTokens
|
|
419
|
+
};
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
export default MonacoUtils;
|
|
423
|
+
//# sourceMappingURL=MonacoUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MonacoUtils.js","names":["assertNotNull","find","linkifyFind","monaco","KeyCodeUtils","Log","MonacoTheme","PyLang","GroovyLang","ScalaLang","DbLang","LogLang","log","module","MonacoUtils","init","getWorker","debug","undefined","registerGetWorker","registerLanguages","removeHashtag","dhDarkRules","token","foreground","string","keyword","delimiter","comment","number","storage","identifier","operator","predefined","substring","dhDarkColors","errorForeground","background","focusBorder","editor","defineTheme","base","inherit","rules","colors","debug2","setTheme","window","MonacoEnvironment","color","languages","languageIds","map","id","getLanguages","filter","includes","forEach","languageParam","language","registerLanguage","register","onLanguage","setLanguageConfiguration","conf","setMonarchTokensProvider","setEOL","eolSequence","EndOfLineSequence","LF","getModel","openDocument","session","model","didOpenDocumentParams","textDocument","uri","languageId","getLanguageId","version","getVersionId","text","getValue","dispose","onDidChangeModelContent","changedEvent","changes","versionId","contentChanges","i","length","change","range","rangeLength","contentChange","start","line","startLineNumber","character","startColumn","end","endLineNumber","endColumn","push","didChangeDocumentParams","changeDocument","closeDocument","didCloseDocumentParams","registerPasteHandler","onDidPaste","pasteEvent","smartQuotes","invalidChars","invalidSpaces","editorModel","pastedText","getValueInRange","test","applyEdits","replace","isMacPlatform","platform","navigator","startsWith","removeConflictingKeybindings","keybindings","windows","mac","keybinding","removeKeybinding","err","error","_standaloneKeybindingService","_getResolver","_map","get","elem","command","addDynamicKeybinding","warn","getMonacoKeyCodeFromShortcut","shortcut","keyState","keyValue","isMac","metaKey","KeyMod","CtrlCmd","shiftKey","Shift","altKey","Alt","ctrlKey","WinCtrl","fromString","provideLinks","newTokens","lineText","getLineContent","originalTokens","tokens","type","value","url","href","Range","getLineCount","links"],"sources":["../../src/monaco/MonacoUtils.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment */\n/**\n * Exports a function for initializing monaco with the deephaven theme/config\n */\nimport { Shortcut } from '@deephaven/components';\nimport type { IdeSession } from '@deephaven/jsapi-types';\nimport { assertNotNull } from '@deephaven/utils';\nimport { find as linkifyFind } from 'linkifyjs';\nimport * as monaco from 'monaco-editor';\nimport type { Environment } from 'monaco-editor';\n// @ts-ignore\nimport { KeyCodeUtils } from 'monaco-editor/esm/vs/base/common/keyCodes.js';\nimport Log from '@deephaven/log';\nimport MonacoTheme from './MonacoTheme.module.scss';\nimport PyLang from './lang/python';\nimport GroovyLang from './lang/groovy';\nimport ScalaLang from './lang/scala';\nimport DbLang from './lang/db';\nimport LogLang from './lang/log';\nimport { Language } from './lang/Language';\n\nconst log = Log.module('MonacoUtils');\n\ndeclare global {\n interface Window {\n MonacoEnvironment?: Environment;\n }\n}\n\nclass MonacoUtils {\n /**\n * Initializes Monaco for the environment\n * @param getWorker The getWorker function Monaco should use\n * The workers should be provided by the caller and bundled by their build system (e.g. Vite, Webpack)\n */\n static init({\n getWorker,\n }: { getWorker?: Environment['getWorker'] } = {}): void {\n log.debug('Initializing Monaco...');\n\n if (getWorker !== undefined) {\n MonacoUtils.registerGetWorker(getWorker);\n }\n\n const { registerLanguages, removeHashtag } = MonacoUtils;\n\n const dhDarkRules = [\n { token: '', foreground: removeHashtag(MonacoTheme.foreground) },\n { token: 'string', foreground: removeHashtag(MonacoTheme.string) },\n {\n token: 'string.delim',\n foreground: removeHashtag(MonacoTheme['string-delim']),\n },\n { token: 'keyword', foreground: removeHashtag(MonacoTheme.keyword) },\n {\n token: 'identifier.js',\n foreground: removeHashtag(MonacoTheme['identifier-js']),\n },\n {\n token: 'delimiter',\n foreground: removeHashtag(MonacoTheme.delimiter),\n },\n { token: 'comment', foreground: removeHashtag(MonacoTheme.comment) },\n { token: 'number', foreground: removeHashtag(MonacoTheme.number) },\n { token: 'storage', foreground: removeHashtag(MonacoTheme.storage) },\n {\n token: 'identifier',\n foreground: removeHashtag(MonacoTheme.identifier),\n },\n {\n token: 'namespace.identifier',\n foreground: removeHashtag(MonacoTheme['namespace-identifier']),\n },\n { token: 'operator', foreground: removeHashtag(MonacoTheme.operator) },\n {\n token: 'predefined',\n foreground: removeHashtag(MonacoTheme.predefined),\n },\n {\n token: 'error.log',\n foreground: MonacoTheme['log-error'].substring(1),\n },\n {\n token: 'warn.log',\n foreground: removeHashtag(MonacoTheme['log-warn']),\n },\n {\n token: 'info.log',\n foreground: removeHashtag(MonacoTheme['log-info']),\n },\n {\n token: 'stdout.log',\n foreground: removeHashtag(MonacoTheme['log-stdout']),\n },\n {\n token: 'trace.log',\n foreground: removeHashtag(MonacoTheme['log-trace']),\n },\n {\n token: 'debug.log',\n foreground: removeHashtag(MonacoTheme['log-debug']),\n },\n {\n token: 'date.log',\n foreground: removeHashtag(MonacoTheme['log-date']),\n },\n ];\n\n const dhDarkColors = {\n errorForeground: MonacoTheme['error-foreground'],\n 'inputOption.activeBorder': MonacoTheme['input-option-active-border'],\n 'editor.background': MonacoTheme.background,\n 'editor.foreground': MonacoTheme.foreground,\n 'editor.lineHighlightBackground': MonacoTheme['editor-line-highlight-bg'],\n 'editorLineNumber.foreground':\n MonacoTheme['editor-line-number-foreground'],\n 'editor.selectionBackground': MonacoTheme['editor-selection-background'],\n 'editor.findMatchBackground': MonacoTheme['editor-find-match-background'],\n 'editor.findMatchHighlightBackground':\n MonacoTheme['editor-find-match-highlight-background'],\n 'editorSuggestWidget.background':\n MonacoTheme['editor-suggest-widget-background'],\n 'editorSuggestWidget.border': MonacoTheme['editor-suggest-widget-border'],\n 'editorSuggestWidget.foreground':\n MonacoTheme['editor-suggest-widget-foreground'],\n 'editorSuggestWidget.selectedBackground':\n MonacoTheme['editor-suggest-widget-selected-background'],\n 'editorSuggestWidget.highlightForeground':\n MonacoTheme['editor-suggest-widget-highlightForeground'],\n 'list.hoverBackground': MonacoTheme['list-hover-background'],\n 'dropdown.background': MonacoTheme['context-menu-background'],\n 'dropdown.foreground': MonacoTheme['context-menu-foreground'],\n 'menu.selectionBackground': MonacoTheme['menu-selection-background'],\n 'list.focusBackground': MonacoTheme['menu-selection-background'],\n 'editorWidget.background': MonacoTheme['editor-widget-background'],\n 'inputOption.activeBackground':\n MonacoTheme['input-option-active-background'],\n 'inputOption.activeForeground':\n MonacoTheme['input-option-active-foreground'],\n focusBorder: MonacoTheme['focus-border'],\n 'input.background': MonacoTheme['input-background'],\n 'input.foreground': MonacoTheme['input-foreground'],\n 'input.border': MonacoTheme['input-border'],\n 'textLink.foreground': MonacoTheme['text-link-foreground'],\n 'textLink.activeForeground': MonacoTheme['text-link-active-foreground'],\n 'editorLink.activeForeground':\n MonacoTheme['editor-link-active-foreground'],\n };\n\n monaco.editor.defineTheme('dh-dark', {\n base: 'vs-dark',\n inherit: true,\n rules: dhDarkRules,\n colors: dhDarkColors,\n });\n log.debug2('monaco theme: ', MonacoTheme);\n monaco.editor.setTheme('dh-dark');\n\n registerLanguages([DbLang, PyLang, GroovyLang, LogLang, ScalaLang]);\n\n log.debug('Monaco initialized.');\n }\n\n /**\n * Register the getWorker function for Monaco\n * @param getWorker The getWorker function for Monaco\n */\n static registerGetWorker(getWorker: Environment['getWorker']): void {\n window.MonacoEnvironment = {\n ...window.MonacoEnvironment,\n getWorker,\n };\n }\n\n /**\n * Remove the hashtag prefix from a CSS color string.\n * Monaco expects colors to be the value only, no hashtag.\n * @param color The hex color string to remove the hashtag from, eg. '#ffffff'\n */\n static removeHashtag(color: string): string {\n return color.substring(1);\n }\n\n static registerLanguages(languages: Language[]): void {\n // First override the default loader for any language we have a custom definition for\n // https://github.com/Microsoft/monaco-editor/issues/252#issuecomment-482786867\n const languageIds = languages.map(({ id }) => id);\n monaco.languages\n .getLanguages()\n .filter(({ id }) => languageIds.includes(id))\n .forEach(languageParam => {\n const language = languageParam;\n log.debug2('Overriding default language loader:', language.id);\n });\n\n // Then register our language definitions\n languages.forEach(language => {\n MonacoUtils.registerLanguage(language);\n });\n }\n\n static registerLanguage(language: Language): void {\n log.debug2('Registering language: ', language.id);\n monaco.languages.register(language);\n\n monaco.languages.onLanguage(language.id, () => {\n monaco.languages.setLanguageConfiguration(language.id, language.conf);\n monaco.languages.setMonarchTokensProvider(language.id, language.language);\n });\n }\n\n /**\n * Set EOL preference for the editor\n * @param editor The editor to set the EOL for\n * @param eolSequence EOL sequence\n */\n static setEOL(\n editor: monaco.editor.IStandaloneCodeEditor,\n eolSequence = monaco.editor.EndOfLineSequence.LF\n ): void {\n editor.getModel()?.setEOL(eolSequence);\n }\n\n /**\n * Links an editor with a provided session to provide completion items.\n * @param session The IdeSession to link\n * @param editor The editor to link the session to\n * @returns A cleanup function for disposing of the created listeners\n */\n static openDocument(\n editor: monaco.editor.IStandaloneCodeEditor,\n session: IdeSession\n ): monaco.IDisposable {\n const model = editor.getModel();\n assertNotNull(model);\n const didOpenDocumentParams = {\n textDocument: {\n uri: `${model.uri}`,\n languageId: model.getLanguageId(),\n version: model.getVersionId(),\n text: model.getValue(),\n },\n };\n log.debug2('didOpenDocumentParams: ', didOpenDocumentParams);\n\n session.openDocument(didOpenDocumentParams);\n\n const dispose = editor.onDidChangeModelContent(changedEvent => {\n const { changes, versionId } = changedEvent;\n\n const contentChanges = [];\n for (let i = 0; i < changes.length; i += 1) {\n const change = changes[i];\n const { range, rangeLength, text } = change;\n const contentChange = {\n range: {\n start: {\n line: range.startLineNumber - 1,\n character: range.startColumn - 1,\n },\n end: {\n line: range.endLineNumber - 1,\n character: range.endColumn - 1,\n },\n },\n rangeLength,\n text,\n };\n\n contentChanges.push(contentChange);\n }\n\n if (contentChanges.length > 0) {\n const didChangeDocumentParams = {\n textDocument: {\n version: versionId,\n uri: `${model.uri}`,\n },\n contentChanges,\n };\n log.debug2('didChangeDocumentParams', didChangeDocumentParams);\n session.changeDocument(didChangeDocumentParams);\n }\n });\n\n return dispose;\n }\n\n static closeDocument(\n editor: monaco.editor.IStandaloneCodeEditor,\n session: IdeSession\n ): void {\n const model = editor.getModel();\n assertNotNull(model);\n const didCloseDocumentParams = {\n textDocument: {\n uri: `${model.uri}`,\n },\n };\n session.closeDocument(didCloseDocumentParams);\n }\n\n /**\n * Register a paste handle to clean up any garbage code pasted.\n * Most of this comes from copying from Slack, which has a bad habit of injecting their own characters in your code snippets.\n * I've emailed Slack about the issue and they're working on it. I can't reference a ticket number because their ticket system is entirely internally facing.\n * @param editor The editor the register the paste handler for\n */\n static registerPasteHandler(\n editor: monaco.editor.IStandaloneCodeEditor\n ): void {\n editor.onDidPaste(pasteEvent => {\n const smartQuotes = /“|”/g;\n const invalidChars = /\\u200b/g; // zero width space\n const invalidSpaces = /\\u00A0/g; // non-breaking space\n const editorModel = editor.getModel();\n assertNotNull(editorModel);\n const pastedText = editorModel.getValueInRange(pasteEvent.range);\n if (\n smartQuotes.test(pastedText) ||\n invalidChars.test(pastedText) ||\n invalidSpaces.test(pastedText)\n ) {\n editorModel.applyEdits([\n {\n range: pasteEvent.range,\n text: pastedText\n .replace(smartQuotes, '\"')\n .replace(invalidChars, '')\n .replace(invalidSpaces, ' '),\n },\n ]);\n }\n });\n }\n\n static isMacPlatform(): boolean {\n const { platform } = window.navigator;\n return platform.startsWith('Mac');\n }\n\n /**\n * Remove any keybindings which are used for our own shortcuts.\n * This allows the key events to bubble up so a component higher up can capture them\n * @param editor The editor to remove the keybindings from\n */\n static removeConflictingKeybindings(\n editor: monaco.editor.IStandaloneCodeEditor\n ): void {\n // Multi-mod key events have a specific order\n // E.g. ctrl+alt+UpArrow is not found, but alt+ctrl+UpArrow is found\n // meta is WindowsKey on Windows and cmd on Mac\n // ctrl is ctrl Windows and ctrl on Mac\n // alt is alt on Windows and option on Mac\n const keybindings = [\n {\n windows: 'ctrl+D',\n mac: 'meta+D',\n },\n {\n windows: 'ctrl+H',\n },\n ];\n\n try {\n keybindings.forEach(keybinding => {\n if (\n (MonacoUtils.isMacPlatform() && keybinding.mac === '') ||\n (!MonacoUtils.isMacPlatform() && keybinding.windows === '')\n ) {\n return;\n }\n MonacoUtils.removeKeybinding(\n editor,\n MonacoUtils.isMacPlatform() ? keybinding.mac : keybinding.windows\n );\n });\n } catch (err) {\n // This is probably only caused by Monaco changing private methods used here\n log.error(err);\n }\n }\n\n /**\n * Remove a keybinding and allow the events to bubble up\n * If you want the keybinding removed for all editors, add it to removeConflictingKeybindings\n * Monaco still captures the event if you choose to override the keybinding with a no-op function\n *\n * Based on the following comment to remove a keybinding and let the event bubble up\n * https://github.com/microsoft/monaco-editor/issues/287#issuecomment-331447475\n * The issue for an API for this has apparently been open since 2016. Link below\n * https://github.com/microsoft/monaco-editor/issues/102\n * @param editor The editor to remove the keybinding from\n * @param keybinding The key string to remove. E.g. 'ctrl+C' for copy on Windows\n */\n static removeKeybinding(\n editor: monaco.editor.IStandaloneCodeEditor,\n keybinding: string | undefined\n ): void {\n if (keybinding === undefined) {\n return;\n }\n\n /* eslint-disable no-underscore-dangle */\n // It's possible a single keybinding has multiple commands depending on context\n // @ts-ignore\n const keybindings = editor._standaloneKeybindingService\n ._getResolver()\n ._map.get(keybinding);\n\n if (keybindings != null) {\n keybindings.forEach((elem: { command: unknown }) => {\n log.debug2(\n `Removing Monaco keybinding ${keybinding} for ${elem.command}`\n );\n // @ts-ignore\n editor._standaloneKeybindingService.addDynamicKeybinding(\n `-${elem.command}`,\n null,\n () => undefined\n );\n });\n } else {\n log.warn(`Did not find any keybindings to remove for ${keybinding}`);\n }\n /* eslint-enable no-underscore-dangle */\n }\n\n static getMonacoKeyCodeFromShortcut(shortcut: Shortcut): number {\n const { keyState } = shortcut;\n const { keyValue } = keyState;\n if (keyValue === null) {\n return 0;\n }\n\n const isMac = MonacoUtils.isMacPlatform();\n\n if (isMac) {\n return (\n // eslint-disable-next-line no-bitwise\n (keyState.metaKey ? monaco.KeyMod.CtrlCmd : 0) |\n (keyState.shiftKey ? monaco.KeyMod.Shift : 0) |\n (keyState.altKey ? monaco.KeyMod.Alt : 0) |\n (keyState.ctrlKey ? monaco.KeyMod.WinCtrl : 0) |\n KeyCodeUtils.fromString(keyValue)\n );\n }\n\n return (\n // eslint-disable-next-line no-bitwise\n (keyState.ctrlKey ? monaco.KeyMod.CtrlCmd : 0) |\n (keyState.shiftKey ? monaco.KeyMod.Shift : 0) |\n (keyState.altKey ? monaco.KeyMod.Alt : 0) |\n (keyState.metaKey ? monaco.KeyMod.WinCtrl : 0) |\n KeyCodeUtils.fromString(keyValue)\n );\n }\n\n static provideLinks(\n model: monaco.editor.ITextModel\n ): { links: monaco.languages.ILink[] } {\n const newTokens: monaco.languages.ILink[] = [];\n\n for (let i = 1; i <= model.getLineCount(); i += 1) {\n const lineText = model.getLineContent(i);\n const originalTokens = linkifyFind(lineText);\n\n const tokens = originalTokens.filter(token => {\n if (token.type === 'url') {\n return /^https?:\\/\\//.test(token.value);\n }\n return true;\n });\n // map the tokens to the ranges - you know the line number now, use the token start/end as the startColumn/endColumn\n tokens.forEach(token => {\n newTokens.push({\n url: token.href,\n range: new monaco.Range(i, token.start + 1, i, token.end + 1),\n });\n });\n }\n\n return {\n links: newTokens,\n };\n }\n}\n\nexport default MonacoUtils;\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["default","MonacoUtils","MonacoProviders","MonacoTheme"],"sources":["../../src/monaco/index.ts"],"sourcesContent":["export { default as MonacoUtils } from './MonacoUtils';\nexport { default as MonacoProviders } from './MonacoProviders';\nexport { default as MonacoTheme } from './MonacoTheme.module.scss';\n"],"mappings":"SAASA,OAAO,IAAIC,WAAW;AAAA,SACtBD,OAAO,IAAIE,eAAe;AAAA,SAC1BF,OAAO,IAAIG,WAAW"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Language.js","names":[],"sources":["../../../src/monaco/lang/Language.ts"],"sourcesContent":["import * as monaco from 'monaco-editor';\n\nexport type Language = {\n id: string;\n conf: monaco.languages.LanguageConfiguration;\n language:\n | monaco.languages.IMonarchLanguage\n | monaco.Thenable<monaco.languages.IMonarchLanguage>;\n};\n"],"mappings":""}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/* eslint no-useless-escape: "off" */
|
|
2
|
+
var id = 'deephavenDb';
|
|
3
|
+
var conf = {
|
|
4
|
+
comments: {
|
|
5
|
+
lineComment: '#',
|
|
6
|
+
blockComment: ["'''", "'''"]
|
|
7
|
+
},
|
|
8
|
+
brackets: [['{', '}'], ['[', ']'], ['(', ')']],
|
|
9
|
+
autoClosingPairs: [{
|
|
10
|
+
open: '{',
|
|
11
|
+
close: '}'
|
|
12
|
+
}, {
|
|
13
|
+
open: '[',
|
|
14
|
+
close: ']'
|
|
15
|
+
}, {
|
|
16
|
+
open: '(',
|
|
17
|
+
close: ')'
|
|
18
|
+
}, {
|
|
19
|
+
open: '"',
|
|
20
|
+
close: '"',
|
|
21
|
+
notIn: ['string']
|
|
22
|
+
}, {
|
|
23
|
+
open: "'",
|
|
24
|
+
close: "'",
|
|
25
|
+
notIn: ['string', 'comment']
|
|
26
|
+
}],
|
|
27
|
+
surroundingPairs: [{
|
|
28
|
+
open: '{',
|
|
29
|
+
close: '}'
|
|
30
|
+
}, {
|
|
31
|
+
open: '[',
|
|
32
|
+
close: ']'
|
|
33
|
+
}, {
|
|
34
|
+
open: '(',
|
|
35
|
+
close: ')'
|
|
36
|
+
}, {
|
|
37
|
+
open: '"',
|
|
38
|
+
close: '"'
|
|
39
|
+
}, {
|
|
40
|
+
open: "'",
|
|
41
|
+
close: "'"
|
|
42
|
+
}],
|
|
43
|
+
onEnterRules: [{
|
|
44
|
+
beforeText: /^\s*(?:def|class|for|if|elif|else|while|try|with|finally|except|async).*?:\s*$/,
|
|
45
|
+
action: {
|
|
46
|
+
indentAction: 1
|
|
47
|
+
} // see monaco.languages.IndentAction.Indent
|
|
48
|
+
}],
|
|
49
|
+
|
|
50
|
+
folding: {
|
|
51
|
+
offSide: true,
|
|
52
|
+
markers: {
|
|
53
|
+
start: /^\s*#region\b/,
|
|
54
|
+
end: /^\s*#endregion\b/
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
var language = {
|
|
59
|
+
tokenPostfix: '.js',
|
|
60
|
+
keywords: ['boolean', 'break', 'byte', 'case', 'catch', 'char', 'class', 'const', 'continue', 'debugger', 'default', 'delete', 'do', 'double', 'else', 'enum', 'export', 'extends', 'false', 'final', 'finally', 'float', 'for', 'function', 'goto', 'if', 'implements', 'import', 'in', 'instanceof', 'int', 'interface', 'long', 'native', 'new', 'null', 'package', 'private', 'protected', 'public', 'return', 'short', 'static', 'super', 'switch', 'synchronized', 'this', 'throw', 'throws', 'transient', 'true', 'try', 'typeof', 'var', 'void', 'volatile', 'while', 'with'],
|
|
61
|
+
builtins: ['define', 'require', 'window', 'document', 'undefined'],
|
|
62
|
+
operators: ['=', '>', '<', '!', '~', '?', ':', '==', '<=', '>=', '!=', '&&', '||', '++', '--', '+', '-', '*', '/', '&', '|', '^', '%', '<<', '>>', '>>>', '+=', '-=', '*=', '/=', '&=', '|=', '^=', '%=', '<<=', '>>=', '>>>='],
|
|
63
|
+
// define our own brackets as '<' and '>' do not match in javascript
|
|
64
|
+
brackets: [{
|
|
65
|
+
open: '{',
|
|
66
|
+
close: '}',
|
|
67
|
+
token: 'delimiter.curly'
|
|
68
|
+
}, {
|
|
69
|
+
open: '[',
|
|
70
|
+
close: ']',
|
|
71
|
+
token: 'delimiter.bracket'
|
|
72
|
+
}, {
|
|
73
|
+
open: '(',
|
|
74
|
+
close: ')',
|
|
75
|
+
token: 'delimiter.parenthesis'
|
|
76
|
+
}],
|
|
77
|
+
// common regular expressions
|
|
78
|
+
symbols: /[~!@#%\^&*-+=|\\:`<>.?\/]+/,
|
|
79
|
+
escapes: /\\(?:[btnfr\\"']|[0-7][0-7]?|[0-3][0-7]{2})/,
|
|
80
|
+
exponent: /[eE][\-+]?[0-9]+/,
|
|
81
|
+
regexpctl: /[(){}\[\]\$\^|\-*+?\.]/,
|
|
82
|
+
regexpesc: /\\(?:[bBdDfnrstvwWn0\\\/]|@regexpctl|c[A-Z]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4})/,
|
|
83
|
+
tokenizer: {
|
|
84
|
+
root: [
|
|
85
|
+
// identifiers and keywords
|
|
86
|
+
[/([a-zA-Z_\$][\w\$]*)(\s*)(:?)/, {
|
|
87
|
+
cases: {
|
|
88
|
+
'$1@keywords': ['keyword', 'white', 'delimiter'],
|
|
89
|
+
$3: ['key.identifier', 'white', 'delimiter'],
|
|
90
|
+
// followed by :
|
|
91
|
+
'$1@builtins': ['predefined.identifier', 'white', 'delimiter'],
|
|
92
|
+
'@default': ['identifier', 'white', 'delimiter']
|
|
93
|
+
}
|
|
94
|
+
}],
|
|
95
|
+
// whitespace
|
|
96
|
+
{
|
|
97
|
+
include: '@whitespace'
|
|
98
|
+
},
|
|
99
|
+
// regular expression: ensure it is terminated before beginning (otherwise it is an opeator)
|
|
100
|
+
[/\/(?=([^\\\/]|\\.)+\/)/, {
|
|
101
|
+
token: 'regexp.slash',
|
|
102
|
+
bracket: '@open',
|
|
103
|
+
next: '@regexp'
|
|
104
|
+
}],
|
|
105
|
+
// delimiters and operators
|
|
106
|
+
[/[{}()\[\]]/, '@brackets'], [/[;,.]/, 'delimiter'], [/@symbols/, {
|
|
107
|
+
cases: {
|
|
108
|
+
'@operators': 'operator',
|
|
109
|
+
'@default': ''
|
|
110
|
+
}
|
|
111
|
+
}],
|
|
112
|
+
// numbers
|
|
113
|
+
[/\d+\.\d*(@exponent)?/, 'number.float'], [/\.\d+(@exponent)?/, 'number.float'], [/\d+@exponent/, 'number.float'], [/0[xX][\da-fA-F]+/, 'number.hex'], [/0[0-7]+/, 'number.octal'], [/\d+/, 'number'],
|
|
114
|
+
// strings: recover on non-terminated strings
|
|
115
|
+
[/"([^"\\]|\\.)*$/, 'string.invalid'],
|
|
116
|
+
// non-teminated string
|
|
117
|
+
[/'([^'\\]|\\.)*$/, 'string.invalid'],
|
|
118
|
+
// non-teminated string
|
|
119
|
+
[/"/, 'string', '@string."'], [/'/, 'string', "@string.'"]],
|
|
120
|
+
whitespace: [[/[ \t\r\n]+/, 'white'], [/\/\*/, 'comment', '@comment'], [/\/\/.*$/, 'comment']],
|
|
121
|
+
comment: [[/[^\/*]+/, 'comment'],
|
|
122
|
+
// [/\/\*/, 'comment', '@push' ], // nested comment not allowed :-(
|
|
123
|
+
[/\/\*/, 'comment.invalid'], ['\\*/', 'comment', '@pop'], [/[\/*]/, 'comment']],
|
|
124
|
+
string: [[/[^\\"']+/, 'string'], [/@escapes/, 'string.escape'], [/\\./, 'string.escape.invalid'], [/["']/, {
|
|
125
|
+
cases: {
|
|
126
|
+
'$#==$S2': {
|
|
127
|
+
token: 'string',
|
|
128
|
+
next: '@pop'
|
|
129
|
+
},
|
|
130
|
+
'@default': 'string'
|
|
131
|
+
}
|
|
132
|
+
}]],
|
|
133
|
+
// We match regular expression quite precisely
|
|
134
|
+
regexp: [[/(\{)(\d+(?:,\d*)?)(\})/, ['@brackets.regexp.escape.control', 'regexp.escape.control', '@brackets.regexp.escape.control']], [/(\[)(\^?)(?=(?:[^\]\\\/]|\\.)+)/, [{
|
|
135
|
+
token: '@brackets.regexp.escape.control'
|
|
136
|
+
}, {
|
|
137
|
+
token: 'regexp.escape.control',
|
|
138
|
+
next: '@regexrange'
|
|
139
|
+
}]], [/(\()(\?:|\?=|\?!)/, ['@brackets.regexp.escape.control', 'regexp.escape.control']], [/[()]/, '@brackets.regexp.escape.control'], [/@regexpctl/, 'regexp.escape.control'], [/[^\\\/]/, 'regexp'], [/@regexpesc/, 'regexp.escape'], [/\\\./, 'regexp.invalid'], ['/', {
|
|
140
|
+
token: 'regexp.slash',
|
|
141
|
+
bracket: '@close'
|
|
142
|
+
}, '@pop']],
|
|
143
|
+
regexrange: [[/-/, 'regexp.escape.control'], [/\^/, 'regexp.invalid'], [/@regexpesc/, 'regexp.escape'], [/[^\]]/, 'regexp'], [/\]/, '@brackets.regexp.escape.control', '@pop']]
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
var lang = {
|
|
147
|
+
id,
|
|
148
|
+
conf,
|
|
149
|
+
language
|
|
150
|
+
};
|
|
151
|
+
export default lang;
|
|
152
|
+
//# sourceMappingURL=db.js.map
|