@eurostat/vtl-editor
TypeScript icon, indicating that this package has built-in type declarations

0.1.3 • Public • Published

VTL Antlr Editor

VTL Editor CI npm version

See example into deployed Storybook

Usage

Install

yarn add typescript @eurostat/vtl-editor antlr4ts monaco-editor react-monaco-editor

VTLEditor

yarn add vtl-2-0-antlr-tools-ts
import React, { useState } from "react";
import { AntlrEditor as VTLEditor } from "@eurostat/vtl-editor";
import * as VTLTools from "vtl-2-0-antlr-tools-ts";
import { getSuggestions } from "./custom-suggestions";

const Editor = ({}) => {
    const [script, setScript] = useState("");
    const [errors, setErrors] = useState([]);
    const customTools = { ...VTLTools, getSuggestionsFromRange: getSuggestions };
    return (
        <>
            <VTLEditor
                script={script}
                setScript={setScript}
                onListErrors={setErrors}
                variables={{}}
                variableURLs={[]}
                sdmxResult={{}}
                sdmxResultURL={""}
                readOnly={false}
                tools={customTools}
            />
            {errors.length > 0 && <div>{`Errors: ${errors.join(" - ")}`}</div>}
        </>
    );
};

export default Editor;

VTLEditor Props

Name Type Default value
script string -
setScript Function -
customFetcher Function * -
tools Tools * -
variables Variables * { }
variableURLs VariableURLs * [ ]
sdmxResult SdmxResult * undefined
sdmxResultURL string * undefined
onListErrors Function undefined
movedCursor object undefined
onCursorChange Function undefined
resizeLayout any -
options Options * {}

See details about * props below

Props

tools

tools has to be mainly antlr4 auto-generated Lexer & Parser.

Name Type Default value
id string -
initialRule string -
grammar string -
Lexer Antlr4 Lexer -
Parser Antlr4 Parser -
getSuggestionsFromRange func () => []

Have a look to VTL 2.0 Antlr Tools for example.

customFetcher

customFetcher enable to provide a custom fetch, adding Authorization header for instance:

u => fetch(u, headers:{ Authorization: 'Bearer XXX'})

This function will be used to fetch variableURLs & sdmxResultURL props.

variables

variables enable to pass an object to provide auto-suggestion.

The shape of this object is:

const obj = {
    "var1": {"type": "STRING", "role": "IDENTIFIER"},
    "var2": {"type": "INTEGER", "role": "MEASURE"},
}

variableURLs

variableURLs enable to pass an array of string to fetch to provide auto-suggestion:

["http://metadata/1", "http://metadata/2"]

The shape of each fetched resources has to be:

[
    { "name": "var1", "type": "STRING", "role": "IDENTIFIER" },
    { "name": "var2", "type": "INTEGER", "role": "MEASURE" }
]

sdmxResult

See an example here

sdmxResultURL

Has to be an URL string to fetch, returning a SdmxResult.

options

The shape of options props has to be:

{
    "minimap": "Values: true | false - Default: true",
    "theme": "Values: 'vs-dark' | 'vs-light' - Default: 'vs-dark'",
    "hideLines": "Values: true | false - Default: false",
    "style": {
        "cssProperty": "value",
        "...": "...",
        "comment": "Style props are applied to editor container"
    }
}

Readme

Keywords

Package Sidebar

Install

npm i @eurostat/vtl-editor

Weekly Downloads

1

Version

0.1.3

License

EUPL-1.2

Unpacked Size

10.8 MB

Total Files

163

Last publish

Collaborators

  • estat.a3
  • plagnje
  • maurizio.c
  • raffado