A browser based code editor

Overview

Monaco Editor

Build Status

The Monaco Editor is the code editor which powers VS Code, with the features better described here.

Please note that this repository contains no source code for the code editor, it only contains the scripts to package everything together and ship the monaco-editor npm module.

image

Try it out

Try the editor out on our website.

Installing

$ npm install monaco-editor

You will get:

  • inside esm: ESM version of the editor (compatible with e.g. webpack)
  • inside dev: AMD bundled, not minified
  • inside min: AMD bundled, and minified
  • inside min-maps: source maps for min
  • monaco.d.ts: this specifies the API of the editor (this is what is actually versioned, everything else is considered private and might break with any release).

It is recommended to develop against the dev version, and in production to use the min version.

Documentation

Issues

Create issues in this repository for anything related to the Monaco Editor. Always mention the version of the editor when creating issues and the browser you're having trouble in. Please search for existing issues to avoid duplicates.

FAQ

What is the relationship between VS Code and the Monaco Editor?

The Monaco Editor is generated straight from VS Code's sources with some shims around services the code needs to make it run in a web browser outside of its home.

What is the relationship between VS Code's version and the Monaco Editor's version?

None. The Monaco Editor is a library and it reflects directly the source code.

I've written an extension for VS Code, will it work on the Monaco Editor in a browser?

No.

Note: If the extension is fully based on the LSP and if the language server is authored in JavaScript, then it would be possible.

Why all these web workers and why should I care?

Language services create web workers to compute heavy stuff outside of the UI thread. They cost hardly anything in terms of resource overhead and you shouldn't worry too much about them, as long as you get them to work (see above the cross-domain case).

What is this loader.js? Can I use require.js?

It is an AMD loader that we use in VS Code. Yes.

I see the warning "Could not create web worker". What should I do?

HTML5 does not allow pages loaded on file:// to create web workers. Please load the editor with a web server on http:// or https:// schemes. Please also see the cross-domain case above.

Is the editor supported in mobile browsers or mobile web app frameworks?

No.

Why doesn't the editor support TextMate grammars?

What about IE 11 support?

  • The Monaco Editor no longer supports IE 11. The last version that was tested on IE 11 is 0.18.1.

Development setup

Please see CONTRIBUTING

Code of Conduct

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

License

Licensed under the MIT License.

Comments
  • webpack/browserify compatible AMD headers

    webpack/browserify compatible AMD headers

    Hello,

    Is there any way to change AMD headers to be compatible with webpack/browserify?

    Are there any plans to support CommonJS, UMD or ECMAscript 6 for the package and external modules in monaco.d.ts?

    integration 
    opened by NikGovorov 92
  • monaco ESM build contains an untranspiled require

    monaco ESM build contains an untranspiled require

    Hi there. I was delighted to see that you all are now shipping an ESM build of monaco-editor (https://github.com/Microsoft/monaco-editor/issues/18#issuecomment-373086721)! I took it for a spin but encountered what seems to be a bug.

    I’ve been using the example monaco + webpack project as reference. The primary editor code loads without issue, but if for some reason web workers fail to load, the web worker fallback throws the following error due to an untranspiled require:

    languageFeatures.js:145 TypeError: self.require is not a function
        at eval (editorSimpleWorker.js:395)
        at new Promise_ctor (winjs.base.js:1660)
        at EditorSimpleWorkerImpl.BaseEditorSimpleWorker.loadForeignModule (editorSimpleWorker.js:393)
        at eval (webWorker.js:42)
      ...
    

    monaco-editor version: 0.11.0 Browser: Chrome 64 OS: OSX Steps or JS usage snippet reproducing the issue:

    • install monaco-editor 0.11.0
    • do something silly that prevents web worker bundles from loading (in my case, missing CORS header)
    • check your console

    Let me know if there are any other details you’d like me to provide. Thanks!

    info-needed 
    opened by meyer 33
  • Arrow Keys and other function keys don't work on iOS (Chrome, Safari)

    Arrow Keys and other function keys don't work on iOS (Chrome, Safari)

    monaco-editor npm version: 0.7.0 Browser: Mobile Safari, Chrome for iOS OS: iOS

    Unfortunately, Monaco doesn't work on iOS due to their strange support to external keyboards: they don't fire events for Arrow Keys and similar function keys, making very hard to work on an iPad.

    CodeMirror seems to have solved the problem by not using an hidden <textarea> tag to get the input. Both Monaco and Ace use an hidden textarea and this causes the editor to fail on iOS.

    I can provide additional information if needed :)

    feature-request safari-ios 
    opened by etamponi 29
  • Scrolling does not work in Firefox

    Scrolling does not work in Firefox

    monaco-editor version: 0.16.0 Browser: Firefox 65.0.1 OS: Windows 10

    Steps or JS usage snippet reproducing the issue: Reproducible on the Monaco Website and in the playground.

    Edit: It works with the keyboard (Ctrl+Up/Down), but not with the scroll wheel.

    bug important 
    opened by spahnke 26
  • Add webpack loader plugin to simplify ESM usage

    Add webpack loader plugin to simplify ESM usage

    The recent ESM build works brilliantly, and it's really exciting to finally have the monaco editor as a first-class citizen of the webpack ecosystem.

    Unfortunately, the user needs to make several non-intuitive additions to their webpack config and source code before they can use it:

    1. Add additional entry points for each of the required worker scrips
    2. Manually create a MonacoEnvironment that references the output paths provided for these entry points
    3. Add a webpack.IgnorePlugin() that references an internal file within monaco-editor package
    4. (optional) Manually import specific feature modules from deep within the monaco-editor package if the user wants to customise the editor build

    None of these steps is obvious without deep knowledge of how monaco-editor code is structured internally, increasing the potential for various unexpected gotchas along the way.

    This PR demonstrates a potential technique to simplify importing the Monaco Editor into a webpack project by exporting a webpack plugin from the monaco-editor package. It allows the user to import the editor with just a single addition to their webpack config, and automatically sets up the global environment, compiles additional worker files etc:

    webpack.config.js:

    const webpack = require('webpack');
    const MonacoWebpackPlugin = require('monaco-editor/webpack');
    
    module.exports = {
      entry: './index.js',
      output: {
        path: path.resolve(__dirname, 'dist'),
        filename: 'app.js'
      },
      plugins: [
        new MonacoWebpackPlugin(webpack)
      ]
    };
    

    index.js:

    import * as monaco from 'monaco-editor';
    
    monaco.editor.create(document.getElementById('container'), {
    	value: 'console.log("Hello, world")',
    	language: 'javascript'
    });
    

    For a more custom configuration, the user can specify which languages/features they want, as well as the worker scripts output directory:

    webpack.config.js:

    const webpack = require('webpack');
    const MonacoWebpackPlugin = require('monaco-editor/webpack');
    
    module.exports = {
      entry: './index.js',
      output: {
        path: path.resolve(__dirname, 'dist'),
        filename: 'app.js'
      },
      plugins: [
        new MonacoWebpackPlugin(webpack, {
          languages: ['python'],
          features: ['coreCommands', 'findController'],
          output: './workers/monaco'
        })
      ]
    };
    

    index.js:

    import * as monaco from 'monaco-editor/esm/vs/editor/editor.api';
    
    monaco.editor.create(document.getElementById('container'), {
    	value: 'print("Hello, world")',
    	language: 'python'
    });
    

    Points for improvement/discussion:

    • The monaco-editor vs monaco-editor/esm/vs/editor/editor.apidistinction is a bit confusing: if the primary target is webpack users then you could just set the main monaco-editor export to the editor.api.js version (rather than the current editor.main.js version) and let the plugin handle adding all the features. If you prefer to keep monaco-editor exporting the whole batteries-included editor, you could at least simplify the paths into say monaco-editor vs monaco-editor/custom or something.
    • The plugin options are currently not validated (webpack and its libraries typically use ajv for options schema validation)
    • The features could better named in webpack/features.js – for the time being I just took the basename of each file but a lot of them include Controller or whatever, and aren't great names for API options
    • I haven't updated the readme to include plugin usage instructions
    • Worker fallbacks are included as normal webpack imports – under default webpack settings this will generate separate files that are loaded in on-demand via JSONP, which is probably fine, however maybe import() expressions would be better from a code-splitting perspective
    • The plugin uses various of the inbuilt webpack plugins, so it needs a reference to the webpack library. I didn't want to introduce an additional "webpack" dependency to monaco-editor, so I've gone with passing a webpack instance into the plugin constructor instead. While this is arguably more flexible, it is susceptible to breaking changes in the webpack library. This could be worked around by adding webpack as a peerDependency of the monaco-editor package, or by extracting the plugin out into its own separate package entirely, which would have its own peerDependency on "webpack"
    • There's currently a babel transform that replaces the self.require() call in editorSimpleWorker.js with a global require() call. The babel transform could be removed if the vscode source were changed.

    This doesn't impact how the package currently functions of course: the plugin is an optional add-on whose main task is to autogenerate webpack configuration rather than the user doing it manually. This means that if e.g. the user doesn't use webpack, they can just not use the plugin and they can continue as normal.

    I realise this is quite a big addition, so if you guys want to re-implement this yourselves or just trash it or whatever that's fine, I just wanted to propose it as a potential avenue to explore. I'm eager to help make this library as easy as possible for users to consume in their projects, and I feel like something like this would be the missing piece of the puzzle. Let me know if there's anything I can do to help!

    opened by timkendrick 25
  • Support for module.js or commonjs?

    Support for module.js or commonjs?

    It looks like this isn't the case, as with Node.js and webpack I'm unable to require('.../editor.main'). Is that correct that there is no support for modulejs or common.js?

    integration 
    opened by trstringer 25
  • Monaco Editor in Electron (optional: with AngularJS)

    Monaco Editor in Electron (optional: with AngularJS)

    Hi,

    I want to get the monaco editor up and running in Electron. I found the electron examples for monaco but they won't work in my app.

    All I get are errors like:

    "loader.js:1817 Uncaught Error: Unrecognized require call"

    "angular.js:13920 Error: Check dependency list! Synchronous require cannot resolve module 'fs'. This is the first mention of this module! at e.synchronousRequire (loader.js:1063)"

    All is working fine if the loader.js of monaco isn't included as a script file.

    The error appears in one of my AngularJS services at the beginning of the file when I try to include the "fs" module:

    var fs = require("fs");

    But as said: without the monaco loader.js file included this is working fine.

    Any suggestions how I can fix that? I want to include the monaco editor in my Electron app and in best cases access it in my AngularJS directives and/or services. Would simplify my app compared to the ACE editor.

    Thanks for help.

    integration 
    opened by fdeitelhoff 24
  • Completion after Enter or paste

    Completion after Enter or paste

    monaco-editor version: 0.13.1 Browser: Chrome OS: Mac Steps or JS usage snippet reproducing the issue:

    Hello there! If there is a way to make editor request completion items after the "enter" or "cmd+v" was typed?

    For dot using triggerCharacters: ["."], but how to trigger completion after "enter" or "cmd+v"?

    opened by ascoders 22
  • SetModelMarkers shows

    SetModelMarkers shows "Undefined" as error message

    Hi, I am using "setModelMarkers()" to highlight the syntax errors in Monaco editor for my custom language. The message added to the marker is not getting displayed on hovering over the highlighted text.

    {
                    code: null, 
                    source: null,
                    severity: 3,
                    startLineNumber: 1,
                    startColumn: 1,
                    endLineNumber: 1,
                    endColumn: 4 + 1,
                    message: 'Syntax error\n'
     }
    

    The message always shows as "undefined". image Please let me know if any thing is missed or done wrong.

    monaco-editor version: 0.11.1 Browser: Chrome OS: win 7

    opened by valarGuru 21
  • registerFoldingProvider missing

    registerFoldingProvider missing

    monaco-editor-core version: 0.11.3 Browser: chrome OS: windows

    I want to write a custom (non-indent based) folding provider. I can see that the method is commented out from standaloneLanguages.ts

    /**
     * Register a folding provider
     */
    /*export function registerFoldingProvider(languageId: string, provider: modes.FoldingProvider): IDisposable {
    	return modes.FoldingProviderRegistry.register(languageId, provider);
    }*/
    
    

    Is this a regression?

    How would I go about defining a language in which a blank line is considered a separator between folding regions?

    opened by lidermanrony 19
  • Completion Suggestions are only available at start of a line.

    Completion Suggestions are only available at start of a line.

    monaco-editor version: 2.0.4 Browser: Chrome OS: Windows 10

    Steps or JS usage snippet reproducing the issue: I register a custom language. I am able to select and complete suggestions by typing CTRL-SPACE. This only seems to work at start of line.

    Sequence of events. Type CTRL-SPACE -> list of suggestions is provided.
    Type followed by a space character and then enter CTRL-SPACE --> "No suggestions is displayed

    Hopefully the provided GIF will help to illustrate what I'm seeing monaco-issue

    help wanted suggest 
    opened by derau2 18
  • After monaco multi-instance destroys one instance, another instance cannot get the content[Bug]

    After monaco multi-instance destroys one instance, another instance cannot get the content[Bug]

    Reproducible in vscode.dev or in VS Code Desktop?

    • [X] Not reproducible in vscode.dev or VS Code Desktop

    Reproducible in the monaco editor playground?

    Monaco Editor Playground Code

    html 
    
    <button id="dispose">b.dispose</button>
    <div id="container" style="height: 300px"></div>
    <div id="container2" style="height: 300px"></div>
    

    js

    
    const a = monaco.editor.create(document.getElementById('container'), {
    	value: "function hello() {\n\talert('Hello world!');\n}",
    	language: 'javascript'
    });
      a.addCommand(
              /** command */
              monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyS,
              () => {
                const model = a.getModel();
                  console.log('model', model.id);
     
    }
            );
    const b = monaco.editor.create(document.getElementById('container2'), {
    	value: "function hello() {\n\talert('Hello world!');\n}",
    	language: 'javascript'
    });
    
    b.addCommand(
              /** command */
              monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyS,
              () => {
                const model = b.getModel();
                  console.log('model', model.id);
                
    }
            );
    
            document.getElementById('dispose').onclick=()=>{
                b.dispose();
            }
    
    
    
    ### Reproduction Steps
    
    1. click button b.dispose
    2. a instance press CtrlCmd +  KeyS get model is null;
    
    
    
    ### Actual (Problematic) Behavior
    
    i'm dispose instance b , why  instance a content not get ?
    
    ### Expected Behavior
    
    i'm dispose instance b , normal get instance a content;
    
    ### Additional Context
    
    _No response_
    opened by MichaelHao25 0
  • Add setModeConfiguration for monaco.languages.typescript.[typescript|javascript]Defaults

    Add setModeConfiguration for monaco.languages.typescript.[typescript|javascript]Defaults

    This commit implements the functionality requested in #3155. The work is done based on the implementation for the the css, html and json namespaces.

    In this case the ModeConfiguration interface implementation has the following options:

    export interface ModeConfiguration {
    	/**
    	 * Defines whether the built-in completionItemProvider is enabled.
    	 */
    	readonly completionItems?: boolean;
    
    	/**
    	 * Defines whether the built-in hoverProvider is enabled.
    	 */
    	readonly hovers?: boolean;
    
    	/**
    	 * Defines whether the built-in documentSymbolProvider is enabled.
    	 */
    	readonly documentSymbols?: boolean;
    
    	/**
    	 * Defines whether the built-in definitions provider is enabled.
    	 */
    	readonly definitions?: boolean;
    
    	/**
    	 * Defines whether the built-in references provider is enabled.
    	 */
    	readonly references?: boolean;
    
    	/**
    	 * Defines whether the built-in references provider is enabled.
    	 */
    	readonly documentHighlights?: boolean;
    
    	/**
    	 * Defines whether the built-in rename provider is enabled.
    	 */
    	readonly rename?: boolean;
    
    	/**
    	 * Defines whether the built-in diagnostic provider is enabled.
    	 */
    	readonly diagnostics?: boolean;
    
    	/**
    	 * Defines whether the built-in document formatting range edit provider is enabled.
    	 */
    	readonly documentRangeFormattingEdits?: boolean;
    
    	/**
    	 * Defines whether the built-in signature help provider is enabled.
    	 */
    	readonly signatureHelp?: boolean;
    
    	/**
    	 * Defines whether the built-in onType formatting edit provider is enabled.
    	 */
    	readonly onTypeFormattingEdits?: boolean;
    
    	/**
    	 * Defines whether the built-in code actions provider is enabled.
    	 */
    	readonly codeActions?: boolean;
    
    	/**
    	 * Defines whether the built-in inlay hints provider is enabled.
    	 */
    	readonly inlayHints?: boolean;
    }
    

    There are some notes though:

    The setupMode implementations for css, html and json return an IDisposable containing all disposable elements created during the function execution. But the setupMode implementation for typescript returns (...uris: Uri[]) => Promise<TypeScriptWorker> containing the worker function. So I implemented the code to collect all disposable elements, but it's useless so far, waiting to be reviewed in future commit.

    opened by joecarl 2
  • Export custom TypeScript worker variables

    Export custom TypeScript worker variables

    A custom TypeScript worker factory function gets passed TypeScriptWorker, ts, and libFileMap. It also exports create using ESM. However, this can’t be used, because the custom worker factory is only called if a custom worker path is defined.

    Exposing these members, means a worker can be defined using ESM.

    A practical use case:

    /**
     * @typedef {import('monaco-editor').languages.typescript.CompilerOptions} CompilerOptions
     * @typedef {import('monaco-editor').languages.typescript.IExtraLibs} IExtraLibs
     * @typedef {import('monaco-editor').languages.typescript.InlayHintsOptions} InlayHintsOptions
     * @typedef {import('monaco-editor').languages.typescript.TypeScriptWorker} TypeScriptWorker
     * @typedef {import('monaco-editor').worker.IWorkerContext} IWorkerContext
     * @typedef {import('typescript').LanguageServiceHost} LanguageServiceHost
     *
     * @typedef {object} CreateData
     * @property {CompilerOptions} compilerOptions The TypeScript compiler options configured by the user.
     * @property {string} customWorkerPath The path to a custom worker.
     * @property {IExtraLibs} extraLibs Additional libraries to load.
     * @property {InlayHintsOptions} inlayHintsOptions The TypeScript inlay hints options.
     *
     * @typedef {TypeScriptWorker & LanguageServiceHost} MDXWorker
     * @typedef {new (ctx: IWorkerContext, createData: CreateData) => MDXWorker} TypeScriptWorkerClass
     */
    
    import {createMdxLanguageService} from '@mdx-js/language-service'
    // @ts-expect-error This module is untyped.
    import {initialize} from 'monaco-editor/esm/vs/editor/editor.worker.js'
    // @ts-expect-error This module is untyped.
    import {create} from 'monaco-editor/esm/vs/language/typescript/ts.worker.js'
    
    /**
     * @param {TypeScriptWorkerClass} TypeScriptWorker
     * @returns {TypeScriptWorkerClass} A custom TypeScript worker which knows how to handle MDX.
     */
    function worker(TypeScriptWorker) {
      return class MDXWorker extends TypeScriptWorker {
        _languageService = createMdxLanguageService(
          // @ts-expect-error This is globally defined in the worker.
          ts,
          this
        )
      }
    }
    
    // @ts-expect-error This is missing in the Monaco type definitions.
    self.customTSWorkerFactory = worker
    
    // Trick the TypeScript worker into using the `customTSWorkerFactory`
    self.importScripts = () => {}
    
    self.onmessage = () => {
      initialize(
        /**
         * @param {IWorkerContext} ctx
         * @param {CreateData} createData
         * @returns {MDXWorker} The MDX TypeScript worker.
         */
        (ctx, createData) => create(ctx, {...createData, customWorkerPath: true})
      )
    }
    

    becomes:

    /**
     * @typedef {import('monaco-editor').languages.typescript.CompilerOptions} CompilerOptions
     * @typedef {import('monaco-editor').languages.typescript.IExtraLibs} IExtraLibs
     * @typedef {import('monaco-editor').languages.typescript.InlayHintsOptions} InlayHintsOptions
     * @typedef {import('monaco-editor').languages.typescript.TypeScriptWorker} TypeScriptWorker
     * @typedef {import('monaco-editor').worker.IWorkerContext} IWorkerContext
     *
     * @typedef {object} CreateData
     * @property {CompilerOptions} compilerOptions The TypeScript compiler options configured by the user.
     * @property {string} customWorkerPath The path to a custom worker.
     * @property {IExtraLibs} extraLibs Additional libraries to load.
     * @property {InlayHintsOptions} inlayHintsOptions The TypeScript inlay hints options.
     */
    
    import {createMdxLanguageService} from '@mdx-js/language-service'
    import {
      initialize,
      ts,
      TypeScriptWorker
      // @ts-expect-error This module is untyped.
    } from 'monaco-editor/esm/vs/language/typescript/ts.worker.js'
    
    class MDXWorker extends TypeScriptWorker {
      _languageService = createMdxLanguageService(
        ts,
        // @ts-expect-error This is missing in the Monaco type definitions.
        this
      )
    }
    
    self.onmessage = () => {
      initialize(
        /**
         * @param {IWorkerContext} ctx
         * @param {CreateData} createData
         * @returns {MDXWorker} The MDX TypeScript worker.
         */
        (ctx, createData) =>
          // @ts-expect-error This is missing in the Monaco type definitions.
          new MDXWorker(ctx, createData)
      )
    }
    
    opened by remcohaszing 0
  • [Bug] editor breaks with language=html when the document contains a script tag with type=importmap

    [Bug] editor breaks with language=html when the document contains a script tag with type=importmap

    Reproducible in vscode.dev or in VS Code Desktop?

    • [X] Not reproducible in vscode.dev or VS Code Desktop

    Reproducible in the monaco editor playground?

    Monaco Editor Playground Code

    monaco.editor.create(document.getElementById('container'), {
    	value: [
            '<!DOCTYPE html>',
            '<head>',
            '</head>',
            '<body>',
            '<script type="importmap">',
            '{',
            '  "imports": {',
            '    "something": "somewhere"',
            '  }',
            '}',
            '</script>',
            '</body>',
            '</html>',
            ].join('\n'),
    	language: 'html'
    });
    

    Reproduction Steps

    • run the playground code
    • in the rendered editor, navigate the cursor to the end of the "something": "somewhere"', line
    • try inserting a new-line

    Actual (Problematic) Behavior

    Once inside that script block which has type=importmap, the following error is being printed into the console:

    Error: Language id "vs.editor.nullLanguage" is not configured nor known
    

    Editing partially works, but, for example, I can't insert a new-line.

    Expected Behavior

    I should be able to edit the code inside a script block with type=importmap, and no exceptions should be thrown and printed into the console.

    Additional Context

    No response

    opened by yurique 0
  • [Bug] Positioning of suggestions incorrect when monaco editor is placed inside a Fluent panel.

    [Bug] Positioning of suggestions incorrect when monaco editor is placed inside a Fluent panel.

    Reproducible in vscode.dev or in VS Code Desktop?

    • [X] Not reproducible in vscode.dev or VS Code Desktop

    Reproducible in the monaco editor playground?

    Monaco Editor Playground Code

    No response

    Reproduction Steps

    Here is the code pen for a min repro - https://codepen.io/cheriequek/pen/XWBjKOX I was unable to use the monaco editor playground as it did not seem to allow me to load the fluent libraries.

    Load the codepen and wait for a little bit (need to wait for monaco to load) Then click Load editor When the editor loads, attempt to type something that would bring up the intellisense suggestions (eg. console)

    Actual (Problematic) Behavior

    The intellisense suggestions show up in the wrong location and most of it is not visible.

    image

    Expected Behavior

    I expect to see the intellisense suggestions (and other widgets) to respect the size of the panel and be fully visible within the panel width.

    Additional Context

    I've seen this other issue which is similar - https://github.com/microsoft/monaco-editor/issues/2503. and have attempted other user's workarounds and none of them seem to work. I've opened a different issue mainly because the positioning issue seems to be different from the screenshots provided.

    opened by cherie-msft 0
  • is there any way to get AST of editor code. if not please add it.It will be very useful

    is there any way to get AST of editor code. if not please add it.It will be very useful

    Context

    • [X] This issue is not a bug report. (please use a different template for reporting a bug)
    • [X] This issue is not a duplicate of an existing issue. (please use the search to find existing issues)

    Description

    I am passing my sdk code as extra library.i need to get AST of code on editor so that i will use it to vaidate with my code. i didn't get any method to get AST.if any method is available please let me know

    feature-request 
    opened by SabariRavikumar 0
Owner
Microsoft
Open source projects and samples from Microsoft
Microsoft
Browser-based code editor created to edit local or server files online

notIDE Browser-based code editor created to edit local or server files online. Features Autosave while editing Syntax highlight using ace editor Creat

Mr Crypster 15 Nov 21, 2022
In-browser code editor

CodeMirror CodeMirror is a versatile text editor implemented in JavaScript for the browser. It is specialized for editing code, and comes with over 10

CodeMirror 25.6k Dec 30, 2022
In-browser code editor (version 5, legacy)

CodeMirror CodeMirror is a versatile text editor implemented in JavaScript for the browser. It is specialized for editing code, and comes with over 10

CodeMirror 25.6k Jan 5, 2023
A markdown editor. http://lab.lepture.com/editor/

Editor A markdown editor you really want. Sponsors Editor is sponsored by Typlog. Overview Editor is not a WYSIWYG editor, it is a plain text markdown

Hsiaoming Yang 2.8k Dec 19, 2022
Override the rich text editor in Strapi admin with ToastUI Editor.

strapi-plugin-wysiwyg-tui-editor ⚠️ This is a strapi v4 plugin which does not support any earlier version! A Strapi plugin to replace the default rich

Zhuo Chen 12 Dec 23, 2022
A chrome extension which helps change ace editor to monaco editor in web pages, supporting all features including autocompletes.

Monaco-It Monaco-It is a chrome extension turning Ace Editor into Monaco Editor, supporting all features including autocompletes. 一些中文说明 Supported Lan

null 3 May 17, 2022
In-browser Markdown editor

StackEdit Full-featured, open-source Markdown editor based on PageDown, the Markdown library used by Stack Overflow and the other Stack Exchange sites

Benoit Schweblin 19.9k Jan 9, 2023
A editor with the main features created using Remirror and with a special code block

A editor with the main features created using Remirror and with a special code block

Brenda Profiro 26 Sep 20, 2022
lightweight (~5kb) code editor custom element with syntax highlighting

code-edit lightweight (~5kb) code editor custom element with syntax highlighting ?? Install · ?? Example · ?? API docs · ?? Releases · ???? Contribute

stagas 5 Apr 14, 2022
A realtime code-editor and compiler to ease coding interview process

A realtime code-editor and compiler to ease coding interview process. Users can create their rooms and can invite others to their rooms. So, millions can work on a same code at the same time together !

Archan Banerjee 1 Jan 2, 2023
Open source rich text editor based on HTML5 and the progressive-enhancement approach. Uses a sophisticated security concept and aims to generate fully valid HTML5 markup by preventing unmaintainable tag soups and inline styles.

This project isn’t maintained anymore Please check out this fork. wysihtml5 0.3.0 wysihtml5 is an open source rich text editor based on HTML5 technolo

Christopher Blum 6.5k Jan 7, 2023
Open source rich text editor based on HTML5 and the progressive-enhancement approach. Uses a sophisticated security concept and aims to generate fully valid HTML5 markup by preventing unmaintainable tag soups and inline styles.

This project isn’t maintained anymore Please check out this fork. wysihtml5 0.3.0 wysihtml5 is an open source rich text editor based on HTML5 technolo

Christopher Blum 6.5k Dec 30, 2022
Typewriter is a simple, FOSS, Web-based text editor that aims to provide a simple and intuitive environment for you to write in.

Typewriter Typewriter is a simple, FOSS, Web-based text editor that aims to provide a simple and intuitive environment for you to write in. Features S

Isla 2 May 24, 2022
Get warnings and error messages in monaco editor based on a unified processor.

monaco-unified Get warnings and error messages in monaco editor based on a unified processor. Installation npm install monaco-unified Usage First, cre

Remco Haszing 15 Nov 4, 2022
Verbum is a fully flexible text editor based on lexical framework.

Verbum Verbum - Flexible Text Editor for React Verbum is a fully flexible rich text editor based on lexical-playground and lexical framework. ⚠️ As th

Ozan Yurtsever 560 Dec 29, 2022
Pure javascript based WYSIWYG html editor, with no dependencies.

SunEditor Pure javscript based WYSIWYG web editor, with no dependencies Demo : suneditor.com The Suneditor is a lightweight, flexible, customizable WY

Yi JiHong 1.1k Jan 2, 2023
The next generation Javascript WYSIWYG HTML Editor.

Froala Editor V3 Froala WYSIWYG HTML Editor is one of the most powerful JavaScript rich text editors ever. Slim - only add the plugins that you need (

Froala 5k Jan 1, 2023
Simple rich text editor (contentEditable) for jQuery UI

Hallo - contentEditable for jQuery UI Hallo is a very simple in-place rich text editor for web pages. It uses jQuery UI and the HTML5 contentEditable

Henri Bergius 2.4k Dec 17, 2022
A modern, simple and elegant WYSIWYG rich text editor.

jQuery-Notebook A simple, clean and elegant WYSIWYG rich text editor for web aplications Note: Check out the fully functional demo and examples here.

Raphael Cruzeiro 1.7k Dec 12, 2022