@fc-components/monaco-editor 0.1.6 → 0.1.8
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/monaco-editor.cjs.development.js +71 -55
- package/dist/monaco-editor.cjs.development.js.map +1 -1
- package/dist/monaco-editor.cjs.production.min.js +1 -1
- package/dist/monaco-editor.cjs.production.min.js.map +1 -1
- package/dist/monaco-editor.esm.js +72 -56
- package/dist/monaco-editor.esm.js.map +1 -1
- package/package.json +1 -1
- package/src/promql/index.tsx +93 -76
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { useRef, useEffect } from 'react';
|
|
2
2
|
import MonacoEditor from 'react-monaco-editor';
|
|
3
3
|
import * as monaco from 'monaco-editor';
|
|
4
|
-
import { languages, editor, KeyMod, KeyCode,
|
|
4
|
+
import { languages, Range, editor, KeyMod, KeyCode, MarkerSeverity } from 'monaco-editor';
|
|
5
5
|
import { promLanguageDefinition } from 'monaco-promql';
|
|
6
6
|
import { parser, LabelMatchers, VectorSelector, PromQL, FunctionCallBody, StringLiteral, UnquotedLabelMatcher, BinaryExpr, NumberDurationLiteralInDurationContext, MatrixSelector, GroupingLabels, AggregateModifier, AggregateExpr, Identifier, LabelName, MatchOp, EqlSingle, EqlRegex, Neq, NeqRegex } from '@fc-components/lezer-metricsql';
|
|
7
7
|
import { v4 } from 'uuid';
|
|
@@ -1990,7 +1990,6 @@ function PromQLEditor(props) {
|
|
|
1990
1990
|
size = _props$size === void 0 ? 'middle' : _props$size,
|
|
1991
1991
|
_props$theme = props.theme,
|
|
1992
1992
|
theme = _props$theme === void 0 ? 'light' : _props$theme,
|
|
1993
|
-
variablesNames = props.variablesNames,
|
|
1994
1993
|
value = props.value,
|
|
1995
1994
|
placeholder = props.placeholder,
|
|
1996
1995
|
interpolateString = props.interpolateString,
|
|
@@ -2003,8 +2002,10 @@ function PromQLEditor(props) {
|
|
|
2003
2002
|
var autocompleteDisposeFun = useRef(null);
|
|
2004
2003
|
var containerRef = useRef(null);
|
|
2005
2004
|
var dataProviderRef = useRef(null);
|
|
2005
|
+
var editorRef = useRef(null);
|
|
2006
2006
|
var styles = getStyles(placeholder);
|
|
2007
2007
|
var handleEditorDidMount = function handleEditorDidMount(editor$1) {
|
|
2008
|
+
editorRef.current = editor$1;
|
|
2008
2009
|
editor.defineTheme('n9e-dark', {
|
|
2009
2010
|
base: 'vs-dark',
|
|
2010
2011
|
inherit: true,
|
|
@@ -2023,35 +2024,7 @@ function PromQLEditor(props) {
|
|
|
2023
2024
|
editor$1.onDidFocusEditorText(function () {
|
|
2024
2025
|
isEditorFocused.set(true);
|
|
2025
2026
|
});
|
|
2026
|
-
|
|
2027
|
-
var dataProvider = new DataProvider({
|
|
2028
|
-
url: props.url,
|
|
2029
|
-
lookbackInterval: props.lookbackInterval,
|
|
2030
|
-
variablesNames: props.variablesNames,
|
|
2031
|
-
durationVariablesCompletion: props.durationVariablesCompletion,
|
|
2032
|
-
request: props.request,
|
|
2033
|
-
httpMethod: props.httpMethod,
|
|
2034
|
-
apiPrefix: props.apiPrefix,
|
|
2035
|
-
httpErrorHandler: props.httpErrorHandler
|
|
2036
|
-
});
|
|
2037
|
-
dataProviderRef.current = dataProvider;
|
|
2038
|
-
dataProvider.start();
|
|
2039
|
-
var completionProvider = getCompletionProvider(monaco, dataProvider);
|
|
2040
|
-
var filteringCompletionProvider = _extends({}, completionProvider, {
|
|
2041
|
-
provideCompletionItems: function provideCompletionItems(model, position, context, token) {
|
|
2042
|
-
var _editor$getModel;
|
|
2043
|
-
if (((_editor$getModel = editor$1.getModel()) == null ? void 0 : _editor$getModel.id) !== model.id) {
|
|
2044
|
-
return {
|
|
2045
|
-
suggestions: []
|
|
2046
|
-
};
|
|
2047
|
-
}
|
|
2048
|
-
return completionProvider.provideCompletionItems(model, position, context, token);
|
|
2049
|
-
}
|
|
2050
|
-
});
|
|
2051
|
-
var _monaco$languages$reg = languages.registerCompletionItemProvider(PROMQL_LANG_ID, filteringCompletionProvider),
|
|
2052
|
-
dispose = _monaco$languages$reg.dispose;
|
|
2053
|
-
autocompleteDisposeFun.current = dispose;
|
|
2054
|
-
}
|
|
2027
|
+
// set the height of the editor container
|
|
2055
2028
|
var updateElementHeight = function updateElementHeight() {
|
|
2056
2029
|
var containerDiv = containerRef.current;
|
|
2057
2030
|
if (containerDiv !== null) {
|
|
@@ -2076,26 +2049,6 @@ function PromQLEditor(props) {
|
|
|
2076
2049
|
editor$1.addCommand(KeyMod.Shift | KeyCode.Enter, function () {
|
|
2077
2050
|
onShiftEnter == null || onShiftEnter(editor$1.getValue());
|
|
2078
2051
|
}, 'isEditorFocused' + id);
|
|
2079
|
-
if (placeholder) {
|
|
2080
|
-
var placeholderDecorators = [{
|
|
2081
|
-
range: new Range(1, 1, 1, 1),
|
|
2082
|
-
options: {
|
|
2083
|
-
className: styles.placeholder,
|
|
2084
|
-
isWholeLine: true
|
|
2085
|
-
}
|
|
2086
|
-
}];
|
|
2087
|
-
var decorators = [];
|
|
2088
|
-
var checkDecorators = function checkDecorators() {
|
|
2089
|
-
var model = editor$1.getModel();
|
|
2090
|
-
if (!model) {
|
|
2091
|
-
return;
|
|
2092
|
-
}
|
|
2093
|
-
var newDecorators = model.getValueLength() === 0 ? placeholderDecorators : [];
|
|
2094
|
-
decorators = model.deltaDecorations(decorators, newDecorators);
|
|
2095
|
-
};
|
|
2096
|
-
checkDecorators();
|
|
2097
|
-
editor$1.onDidChangeModelContent(checkDecorators);
|
|
2098
|
-
}
|
|
2099
2052
|
editor$1.onDidChangeModelContent(function () {
|
|
2100
2053
|
var model = editor$1.getModel();
|
|
2101
2054
|
if (model) {
|
|
@@ -2131,14 +2084,76 @@ function PromQLEditor(props) {
|
|
|
2131
2084
|
languages.setLanguageConfiguration(PROMQL_LANG_ID, languageConfiguration);
|
|
2132
2085
|
return function () {
|
|
2133
2086
|
autocompleteDisposeFun.current == null || autocompleteDisposeFun.current();
|
|
2087
|
+
dataProviderRef.current = null;
|
|
2134
2088
|
};
|
|
2135
2089
|
}, []);
|
|
2136
2090
|
useEffect(function () {
|
|
2137
|
-
var
|
|
2138
|
-
if (
|
|
2139
|
-
|
|
2091
|
+
var editor = editorRef.current;
|
|
2092
|
+
if (!editor) return;
|
|
2093
|
+
// clean up previous autocomplete provider
|
|
2094
|
+
if (autocompleteDisposeFun.current) {
|
|
2095
|
+
autocompleteDisposeFun.current();
|
|
2096
|
+
autocompleteDisposeFun.current = null;
|
|
2097
|
+
}
|
|
2098
|
+
dataProviderRef.current = null;
|
|
2099
|
+
// If autocomplete is enabled, set up a new autocomplete provider
|
|
2100
|
+
if (enableAutocomplete) {
|
|
2101
|
+
var dataProvider = new DataProvider({
|
|
2102
|
+
url: props.url,
|
|
2103
|
+
lookbackInterval: props.lookbackInterval,
|
|
2104
|
+
variablesNames: props.variablesNames,
|
|
2105
|
+
durationVariablesCompletion: props.durationVariablesCompletion,
|
|
2106
|
+
request: props.request,
|
|
2107
|
+
httpMethod: props.httpMethod,
|
|
2108
|
+
apiPrefix: props.apiPrefix,
|
|
2109
|
+
httpErrorHandler: props.httpErrorHandler
|
|
2110
|
+
});
|
|
2111
|
+
dataProviderRef.current = dataProvider;
|
|
2112
|
+
dataProvider.start();
|
|
2113
|
+
var completionProvider = getCompletionProvider(monaco, dataProvider);
|
|
2114
|
+
var filteringCompletionProvider = _extends({}, completionProvider, {
|
|
2115
|
+
provideCompletionItems: function provideCompletionItems(model, position, context, token) {
|
|
2116
|
+
var _editor$getModel;
|
|
2117
|
+
if (((_editor$getModel = editor.getModel()) == null ? void 0 : _editor$getModel.id) !== model.id) {
|
|
2118
|
+
return {
|
|
2119
|
+
suggestions: []
|
|
2120
|
+
};
|
|
2121
|
+
}
|
|
2122
|
+
return completionProvider.provideCompletionItems(model, position, context, token);
|
|
2123
|
+
}
|
|
2124
|
+
});
|
|
2125
|
+
var _monaco$languages$reg = languages.registerCompletionItemProvider(PROMQL_LANG_ID, filteringCompletionProvider),
|
|
2126
|
+
dispose = _monaco$languages$reg.dispose;
|
|
2127
|
+
autocompleteDisposeFun.current = dispose;
|
|
2128
|
+
}
|
|
2129
|
+
// clean up previous placeholder decorations
|
|
2130
|
+
var model = editor.getModel();
|
|
2131
|
+
if (model) {
|
|
2132
|
+
model.deltaDecorations(model.getAllDecorations().map(function (d) {
|
|
2133
|
+
return d.id;
|
|
2134
|
+
}), []);
|
|
2135
|
+
}
|
|
2136
|
+
if (placeholder) {
|
|
2137
|
+
var placeholderDecorators = [{
|
|
2138
|
+
range: new Range(1, 1, 1, 1),
|
|
2139
|
+
options: {
|
|
2140
|
+
className: styles.placeholder,
|
|
2141
|
+
isWholeLine: true
|
|
2142
|
+
}
|
|
2143
|
+
}];
|
|
2144
|
+
var decorators = [];
|
|
2145
|
+
var checkDecorators = function checkDecorators() {
|
|
2146
|
+
var model = editor.getModel();
|
|
2147
|
+
if (!model) {
|
|
2148
|
+
return;
|
|
2149
|
+
}
|
|
2150
|
+
var newDecorators = model.getValueLength() === 0 ? placeholderDecorators : [];
|
|
2151
|
+
decorators = model.deltaDecorations(decorators, newDecorators);
|
|
2152
|
+
};
|
|
2153
|
+
checkDecorators();
|
|
2154
|
+
editor.onDidChangeModelContent(checkDecorators);
|
|
2140
2155
|
}
|
|
2141
|
-
}, [JSON.stringify(variablesNames)]);
|
|
2156
|
+
}, [enableAutocomplete, props.url, props.lookbackInterval, JSON.stringify(props.variablesNames), props.durationVariablesCompletion, props.httpMethod, props.apiPrefix, placeholder]);
|
|
2142
2157
|
return React.createElement("div", {
|
|
2143
2158
|
className: 'ant-input' + (size ? " " + SIZE_MAP[size].className : '')
|
|
2144
2159
|
}, React.createElement("div", {
|
|
@@ -2181,7 +2196,8 @@ function PromQLEditor(props) {
|
|
|
2181
2196
|
showWords: false
|
|
2182
2197
|
},
|
|
2183
2198
|
suggestFontSize: 12,
|
|
2184
|
-
wordWrap: 'on'
|
|
2199
|
+
wordWrap: 'on',
|
|
2200
|
+
automaticLayout: true
|
|
2185
2201
|
}
|
|
2186
2202
|
})));
|
|
2187
2203
|
}
|