JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 35793
  • Score
    100M100P100Q149509F
  • License MIT

Like vue2-ace-editor but more functional and supports Vue 3

Package Exports

  • vue3-ace-editor
  • vue3-ace-editor/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (vue3-ace-editor) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

vue3-ace-editor

npm

A packaging of ace. Inspired by vue2-ace-editor, but supports Vue 3

How to use

  1. Install

    yarn add vue3-ace-editor
  2. Register it in components of Vue options

    import { VAceEditor } from 'vue3-ace-editor';
    
    export default {
        data,
        methods,
        ...
        components: {
            VAceEditor,
        },
    }
  3. Use the component in template

    <v-ace-editor
        v-model:value="content"
        @init="editorInit"
        lang="html"
        theme="chrome"
        style="height: 300px" />

    prop v-model:value is required. <v-ace-editor> has no height by default. Its height must be specified manually, or set both min-lines and max-lines to make the editor's height auto-grow.

    prop lang, theme is same as ace-editor's doc

Deferences with vue2-ace-editor

  1. This component uses ace-builds directly, instead of the outdated wrapper brace
  2. DOM size changes are detected automatically using ResizeObserver, thus no width / height props needed.
  3. For easier usage, more props / events added / emitted.
    1. Prop readonly: This Boolean attribute indicates that the user cannot modify the value of the control.
    2. Prop placeholder: A hint to the user of what can be entered in the control.
    3. Prop wrap: Indicates whether the control wraps text.
    4. Prop printMargin: A short hand of showPrintMargin and printMarginColumn.
    5. Prop minLines and maxLines: Specifiy the minimum and maximum number of lines.
    6. All ace events emitted. Docs can be found here: https://ace.c9.io/#api=editor&nav=api
    7. Some commonly used methods focus, blur, selectAll provided as shortcuts.

Enable syntax checking

To enable syntax checking, module ace/mode/lang_worker must be registered, and option useWorker: true must be set.

Take JSON for example:

import workerJsonUrl from 'ace-builds/src-noconflict/worker-json?url'; // For vite

import workerJsonUrl from 'file-loader?esModule=false!ace-builds/src-noconflict/worker-json.js'; // For webpack / vue-cli

ace.config.setModuleUrl('ace/mode/json_worker', workerJsonUrl);
<v-ace-editor v-model:value="json" lang="json" :options="{ useWorker: true }" />

See also https://github.com/CarterLi/vue3-ace-editor/issues/3#issuecomment-768190528 to load the worker file from CDN

Breaking change

Using of ace-builds/webpack-resolver is removed due to bug https://github.com/CarterLi/vue3-ace-editor/issues/3. You MUST import theme and mode yourself. eg.

import 'ace-builds/src-noconflict/mode-json';
import 'ace-builds/src-noconflict/theme-chrome';

To use dynamic loading to avoid first-load overhead

import ace from 'ace-builds';

import modeJsonUrl from 'ace-builds/src-noconflict/mode-json?url';
ace.config.setModuleUrl('ace/mode/json', modeJsonUrl);

import themeChromeUrl from 'ace-builds/src-noconflict/theme-chrome?url';
ace.config.setModuleUrl('ace/theme/chrome', themeChromeUrl);

Find all supported themes and modes in node_modules/ace-builds/src-noconflict

Minimal example using vite

LICENSE

MIT