@fc-components/monaco-editor 0.1.5 → 0.1.7

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.
@@ -1990,13 +1990,12 @@ var getStyles = function getStyles(placeholder) {
1990
1990
  })
1991
1991
  };
1992
1992
  };
1993
- var index = /*#__PURE__*/React.forwardRef(function PromQLEditor(props, ref) {
1993
+ function PromQLEditor(props) {
1994
1994
  var id = uuid.v4();
1995
1995
  var _props$size = props.size,
1996
1996
  size = _props$size === void 0 ? 'middle' : _props$size,
1997
1997
  _props$theme = props.theme,
1998
1998
  theme = _props$theme === void 0 ? 'light' : _props$theme,
1999
- variablesNames = props.variablesNames,
2000
1999
  value = props.value,
2001
2000
  placeholder = props.placeholder,
2002
2001
  interpolateString = props.interpolateString,
@@ -2004,7 +2003,8 @@ var index = /*#__PURE__*/React.forwardRef(function PromQLEditor(props, ref) {
2004
2003
  enableAutocomplete = _props$enableAutocomp === void 0 ? true : _props$enableAutocomp,
2005
2004
  onChange = props.onChange,
2006
2005
  onShiftEnter = props.onShiftEnter,
2007
- onBlur = props.onBlur;
2006
+ onBlur = props.onBlur,
2007
+ editorDidMount = props.editorDidMount;
2008
2008
  var autocompleteDisposeFun = React.useRef(null);
2009
2009
  var containerRef = React.useRef(null);
2010
2010
  var dataProviderRef = React.useRef(null);
@@ -2030,35 +2030,7 @@ var index = /*#__PURE__*/React.forwardRef(function PromQLEditor(props, ref) {
2030
2030
  editor.onDidFocusEditorText(function () {
2031
2031
  isEditorFocused.set(true);
2032
2032
  });
2033
- if (enableAutocomplete) {
2034
- var dataProvider = new DataProvider({
2035
- url: props.url,
2036
- lookbackInterval: props.lookbackInterval,
2037
- variablesNames: props.variablesNames,
2038
- durationVariablesCompletion: props.durationVariablesCompletion,
2039
- request: props.request,
2040
- httpMethod: props.httpMethod,
2041
- apiPrefix: props.apiPrefix,
2042
- httpErrorHandler: props.httpErrorHandler
2043
- });
2044
- dataProviderRef.current = dataProvider;
2045
- dataProvider.start();
2046
- var completionProvider = getCompletionProvider(monaco, dataProvider);
2047
- var filteringCompletionProvider = _extends({}, completionProvider, {
2048
- provideCompletionItems: function provideCompletionItems(model, position, context, token) {
2049
- var _editor$getModel;
2050
- if (((_editor$getModel = editor.getModel()) == null ? void 0 : _editor$getModel.id) !== model.id) {
2051
- return {
2052
- suggestions: []
2053
- };
2054
- }
2055
- return completionProvider.provideCompletionItems(model, position, context, token);
2056
- }
2057
- });
2058
- var _monaco$languages$reg = monaco.languages.registerCompletionItemProvider(PROMQL_LANG_ID, filteringCompletionProvider),
2059
- dispose = _monaco$languages$reg.dispose;
2060
- autocompleteDisposeFun.current = dispose;
2061
- }
2033
+ // set the height of the editor container
2062
2034
  var updateElementHeight = function updateElementHeight() {
2063
2035
  var containerDiv = containerRef.current;
2064
2036
  if (containerDiv !== null) {
@@ -2083,26 +2055,6 @@ var index = /*#__PURE__*/React.forwardRef(function PromQLEditor(props, ref) {
2083
2055
  editor.addCommand(monaco.KeyMod.Shift | monaco.KeyCode.Enter, function () {
2084
2056
  onShiftEnter == null || onShiftEnter(editor.getValue());
2085
2057
  }, 'isEditorFocused' + id);
2086
- if (placeholder) {
2087
- var placeholderDecorators = [{
2088
- range: new monaco.Range(1, 1, 1, 1),
2089
- options: {
2090
- className: styles.placeholder,
2091
- isWholeLine: true
2092
- }
2093
- }];
2094
- var decorators = [];
2095
- var checkDecorators = function checkDecorators() {
2096
- var model = editor.getModel();
2097
- if (!model) {
2098
- return;
2099
- }
2100
- var newDecorators = model.getValueLength() === 0 ? placeholderDecorators : [];
2101
- decorators = model.deltaDecorations(decorators, newDecorators);
2102
- };
2103
- checkDecorators();
2104
- editor.onDidChangeModelContent(checkDecorators);
2105
- }
2106
2058
  editor.onDidChangeModelContent(function () {
2107
2059
  var model = editor.getModel();
2108
2060
  if (model) {
@@ -2119,13 +2071,8 @@ var index = /*#__PURE__*/React.forwardRef(function PromQLEditor(props, ref) {
2119
2071
  monaco.editor.setModelMarkers(model, 'owner', markers);
2120
2072
  }
2121
2073
  });
2074
+ editorDidMount == null || editorDidMount(editor);
2122
2075
  };
2123
- React.useEffect(function () {
2124
- var dataProvider = dataProviderRef.current;
2125
- if (dataProvider) {
2126
- dataProvider.setVariablesNames(variablesNames || []);
2127
- }
2128
- }, [JSON.stringify(variablesNames)]);
2129
2076
  React.useEffect(function () {
2130
2077
  // 注册 PromQL 语言
2131
2078
  var aliases = monacoPromql.promLanguageDefinition.aliases,
@@ -2143,15 +2090,76 @@ var index = /*#__PURE__*/React.forwardRef(function PromQLEditor(props, ref) {
2143
2090
  monaco.languages.setLanguageConfiguration(PROMQL_LANG_ID, languageConfiguration);
2144
2091
  return function () {
2145
2092
  autocompleteDisposeFun.current == null || autocompleteDisposeFun.current();
2093
+ dataProviderRef.current = null;
2146
2094
  };
2147
2095
  }, []);
2148
- React.useImperativeHandle(ref, function () {
2149
- return {
2150
- getEditor: function getEditor() {
2151
- return editorRef.current;
2152
- }
2153
- };
2154
- });
2096
+ React.useEffect(function () {
2097
+ var editor = editorRef.current;
2098
+ if (!editor) return;
2099
+ // clean up previous autocomplete provider
2100
+ if (autocompleteDisposeFun.current) {
2101
+ autocompleteDisposeFun.current();
2102
+ autocompleteDisposeFun.current = null;
2103
+ }
2104
+ dataProviderRef.current = null;
2105
+ // If autocomplete is enabled, set up a new autocomplete provider
2106
+ if (enableAutocomplete) {
2107
+ var dataProvider = new DataProvider({
2108
+ url: props.url,
2109
+ lookbackInterval: props.lookbackInterval,
2110
+ variablesNames: props.variablesNames,
2111
+ durationVariablesCompletion: props.durationVariablesCompletion,
2112
+ request: props.request,
2113
+ httpMethod: props.httpMethod,
2114
+ apiPrefix: props.apiPrefix,
2115
+ httpErrorHandler: props.httpErrorHandler
2116
+ });
2117
+ dataProviderRef.current = dataProvider;
2118
+ dataProvider.start();
2119
+ var completionProvider = getCompletionProvider(monaco, dataProvider);
2120
+ var filteringCompletionProvider = _extends({}, completionProvider, {
2121
+ provideCompletionItems: function provideCompletionItems(model, position, context, token) {
2122
+ var _editor$getModel;
2123
+ if (((_editor$getModel = editor.getModel()) == null ? void 0 : _editor$getModel.id) !== model.id) {
2124
+ return {
2125
+ suggestions: []
2126
+ };
2127
+ }
2128
+ return completionProvider.provideCompletionItems(model, position, context, token);
2129
+ }
2130
+ });
2131
+ var _monaco$languages$reg = monaco.languages.registerCompletionItemProvider(PROMQL_LANG_ID, filteringCompletionProvider),
2132
+ dispose = _monaco$languages$reg.dispose;
2133
+ autocompleteDisposeFun.current = dispose;
2134
+ }
2135
+ // clean up previous placeholder decorations
2136
+ var model = editor.getModel();
2137
+ if (model) {
2138
+ model.deltaDecorations(model.getAllDecorations().map(function (d) {
2139
+ return d.id;
2140
+ }), []);
2141
+ }
2142
+ if (placeholder) {
2143
+ var placeholderDecorators = [{
2144
+ range: new monaco.Range(1, 1, 1, 1),
2145
+ options: {
2146
+ className: styles.placeholder,
2147
+ isWholeLine: true
2148
+ }
2149
+ }];
2150
+ var decorators = [];
2151
+ var checkDecorators = function checkDecorators() {
2152
+ var model = editor.getModel();
2153
+ if (!model) {
2154
+ return;
2155
+ }
2156
+ var newDecorators = model.getValueLength() === 0 ? placeholderDecorators : [];
2157
+ decorators = model.deltaDecorations(decorators, newDecorators);
2158
+ };
2159
+ checkDecorators();
2160
+ editor.onDidChangeModelContent(checkDecorators);
2161
+ }
2162
+ }, [enableAutocomplete, props.url, props.lookbackInterval, JSON.stringify(props.variablesNames), props.durationVariablesCompletion, props.httpMethod, props.apiPrefix, placeholder]);
2155
2163
  return React__default.createElement("div", {
2156
2164
  className: 'ant-input' + (size ? " " + SIZE_MAP[size].className : '')
2157
2165
  }, React__default.createElement("div", {
@@ -2197,7 +2205,7 @@ var index = /*#__PURE__*/React.forwardRef(function PromQLEditor(props, ref) {
2197
2205
  wordWrap: 'on'
2198
2206
  }
2199
2207
  })));
2200
- });
2208
+ }
2201
2209
 
2202
- exports.PromQLMonacoEditor = index;
2210
+ exports.PromQLMonacoEditor = PromQLEditor;
2203
2211
  //# sourceMappingURL=monaco-editor.cjs.development.js.map