0.2.0 • Published 7 months ago

solid-monaco v0.2.0

Weekly downloads
-
License
MIT
Repository
github
Last release
7 months ago

solid-monaco

pnpm

Monaco Editor for SolidJS

Quick start

Install it:

npm i solid-monaco
# or
yarn add solid-monaco
# or
pnpm add solid-monaco

MonacoEditor

Basic usage:

You can import and use the MonacoEditor component in your Solid application:

import { MonacoEditor } from 'solid-monaco';

function MyEditor() {
  return <MonacoEditor language="javascript" value="console.log('Hello World');" />;
}

Props

The MonacoEditor component accepts the following props:

PropTypeDefaultDescription
languagestring-The programming language for the editor. E.g., "javascript", "typescript".
valuestring-Content of the editor.
loadingStateJSX.Element"Loading…"JSX element to be displayed during the loading state.
classstring-CSS class for the editor container.
themeBuiltinTheme or string"vs"The theme to be applied to the editor.
pathstring""Path used for Monaco model management for multiple files.
overrideServicesobject-Services to override the default ones provided by Monaco.
widthstring"100%"Width of the editor container.
heightstring"100%"Height of the editor container.
optionsobject-Additional options for the Monaco editor.
saveViewStatestringtrueWhether to save the model view state for a given path of the editor.
onChange(value: string, event: editor.IModelContentChangedEvent) => void-Callback triggered when the content of the editor changes.
onMount(monaco: Monaco, editor: editor.IStandaloneCodeEditor) => void-Callback triggered when the editor mounts.
onBeforeUnmount(monaco: Monaco, editor: editor.IStandaloneCodeEditor) => void-Callback triggered before the editor unmounts.

Getting Monaco and Editor Instances

You can get instances of both monaco and the editor by using the onMount callback:

import { MonacoEditor } from 'solid-monaco';

function MyEditor() {
  const handleMount = (monaco, editor) => {
    // Use monaco and editor instances here
  };

  return (
    <MonacoEditor
      language="javascript"
      value="console.log('Hello World');"
      onMount={handleMount}
    />
  );
}

MonacoDiffEditor

For a side-by-side comparison view of code, the package provides a MonacoDiffEditor component.

Basic Usage

You can incorporate the MonacoDiffEditor component into your Solid application:

import { MonacoDiffEditor } from 'solid-monaco';

function MyDiffEditor() {
  return (
    <MonacoDiffEditor
      original="const foo = 1;"
      modified="const foo = 2;"
      originalLanguage="javascript"
      modifiedLanguage="javascript"
    />
  );
}

Props

The MonacoDiffEditor component accepts the following props:

PropTypeDefaultDescription
originalstring-Original content to be displayed on the left side of the diff editor.
modifiedstring-Modified content to be displayed on the right side of the diff editor.
originalLanguagestring-Language for the original content.
modifiedLanguagestring-Language for the modified content.
originalPathstring-Path for the original content used in Monaco model management.
modifiedPathstring-Path for the modified content used in Monaco model management.
loadingStateJSX.Element"Loading…"JSX element displayed during the loading state.
classstring-CSS class for the diff editor container.
themeBuiltinTheme or string"vs"Theme applied to the diff editor.
overrideServicesobject-Services to override the default ones provided by Monaco.
widthstring"100%"Width of the diff editor container.
heightstring"100%"Height of the diff editor container.
optionsobject-Additional options for the Monaco diff editor.
saveViewStatebooleantrueWhether to save the model view state.
onChange(value: string) => void-Callback triggered when the content of the modified editor changes.
onMount(monaco: Monaco, editor: editor.IStandaloneDiffEditor) => void-Callback triggered when the diff editor mounts.
onBeforeUnmount(monaco: Monaco, editor: editor.IStandaloneDiffEditor) => void-Callback triggered before the diff editor unmounts.

Contributing

Contributions to solid-monaco are welcomed!

Acknowledgments

License

MIT

0.2.0

7 months ago

0.1.0

8 months ago