MCPcopy
hub / github.com/stackblitz/bolt.new / newEditorState

Function newEditorState

app/components/editor/codemirror/CodeMirrorEditor.tsx:269–361  ·  view source on GitHub ↗
(
  content: string,
  theme: Theme,
  settings: EditorSettings | undefined,
  onScrollRef: MutableRefObject<OnScrollCallback | undefined>,
  debounceScroll: number,
  onFileSaveRef: MutableRefObject<OnSaveCallback | undefined>,
  extensions: Extension[],
)

Source from the content-addressed store, hash-verified

267CodeMirrorEditor.displayName = 'CodeMirrorEditor';
268
269function newEditorState(
270 content: string,
271 theme: Theme,
272 settings: EditorSettings | undefined,
273 onScrollRef: MutableRefObject<OnScrollCallback | undefined>,
274 debounceScroll: number,
275 onFileSaveRef: MutableRefObject<OnSaveCallback | undefined>,
276 extensions: Extension[],
277) {
278 return EditorState.create({
279 doc: content,
280 extensions: [
281 EditorView.domEventHandlers({
282 scroll: debounce((event, view) => {
283 if (event.target !== view.scrollDOM) {
284 return;
285 }
286
287 onScrollRef.current?.({ left: view.scrollDOM.scrollLeft, top: view.scrollDOM.scrollTop });
288 }, debounceScroll),
289 keydown: (event, view) => {
290 if (view.state.readOnly) {
291 view.dispatch({
292 effects: [readOnlyTooltipStateEffect.of(event.key !== 'Escape')],
293 });
294
295 return true;
296 }
297
298 return false;
299 },
300 }),
301 getTheme(theme, settings),
302 history(),
303 keymap.of([
304 ...defaultKeymap,
305 ...historyKeymap,
306 ...searchKeymap,
307 { key: 'Tab', run: acceptCompletion },
308 {
309 key: 'Mod-s',
310 preventDefault: true,
311 run: () => {
312 onFileSaveRef.current?.();
313 return true;
314 },
315 },
316 indentKeyBinding,
317 ]),
318 indentUnit.of('\t'),
319 autocompletion({
320 closeOnBlur: false,
321 }),
322 tooltips({
323 position: 'absolute',
324 parent: document.body,
325 tooltipSpace: (view) => {
326 const rect = view.dom.getBoundingClientRect();

Callers 1

Calls 3

debounceFunction · 0.90
getThemeFunction · 0.90
dispatchMethod · 0.80

Tested by

no test coverage detected