diff --git a/src/ConcertoEditor.tsx b/src/ConcertoEditor.tsx index 9e14dae..c96f984 100644 --- a/src/ConcertoEditor.tsx +++ b/src/ConcertoEditor.tsx @@ -1,90 +1,78 @@ import * as monaco from '@monaco-editor/react'; import { editor } from 'monaco-editor'; -const options: editor.IStandaloneEditorConstructionOptions = { +const options:editor.IStandaloneEditorConstructionOptions = { minimap: { enabled: false }, - wordWrap: 'on', + wordWrap: "on", + automaticLayout:true, scrollBeyondLastLine: false, -}; - -const concertoKeywords = [ - 'map', 'concept', 'from', 'optional', 'default', 'range', 'regex', 'length', 'abstract', - 'namespace', 'import', 'enum', 'scalar', 'extends', 'default', 'participant', 'asset', - 'o', 'identified by', 'transaction', 'event' -]; - -const concertoTypes = ['String', 'Integer', 'Double', 'DateTime', 'Long', 'Boolean']; - -export default function ConcertoEditor({ value, onChange }: { value: string, onChange?: (value: string | undefined) => void }) { +} +const concertoKeywords = ['map','concept','from','optional','default','range','regex','length','abstract','namespace','import', 'enum', 'scalar', 'extends', 'default', 'participant','asset', 'o','identified by','transaction','event']; +const concertoTypes = ['String','Integer','Double','DateTime','Long','Boolean'] - function handleEditorWillMount(monaco: monaco.Monaco) { - monaco.languages.register({ - id: 'concerto', - extensions: ['.cto'], - aliases: ['Concerto', 'concerto'], - mimetypes: ['application/vnd.accordproject.concerto'], - }); +export default function ConcertoEditor( {value, onChange} : {value: string, onChange?: (value:string|undefined) => void} ) { - monaco.languages.setMonarchTokensProvider('concerto', { - keywords: concertoKeywords, - typeKeywords: concertoTypes, - operators: ['=', '{', '}', '@', '"'], - symbols: /[=}{@"]+/, - escapes: /\\(?:[btnfru"'\\]|\\u[0-9A-Fa-f]{4})/, - tokenizer: { - root: [ - { include: '@whitespace' }, - [/[a-zA-Z_]\w*/, { - cases: { - '@keywords': 'keyword', - '@typeKeywords': 'type', - '@default': 'identifier', + function handleEditorWillMount(monaco:monaco.Monaco) { + monaco.languages.register({ + id: 'concerto', + extensions: ['.cto'], + aliases: ['Concerto', 'concerto'], + mimetypes: ['application/vnd.accordproject.concerto'], + }); + + monaco.languages.setMonarchTokensProvider('concerto', { + keywords: concertoKeywords, + typeKeywords: concertoTypes, + operators: ['=', '{', '}', '@', '"'], + symbols: /[=}{@"]+/, + escapes: /\\(?:[btnfru"'\\]|\\u[0-9A-Fa-f]{4})/, + tokenizer: { + root: [ + { include: '@whitespace' }, + [/[a-zA-Z_]\w*/, { + cases: { + '@keywords': 'keyword', + '@typeKeywords': 'type', + '@default': 'identifier', + }, + }], + [/"([^"\\]|\\.)*$/, 'string.invalid'], // non-terminated string + [/"/, 'string', '@string'], + ], + string: [ + [/[^\\"]+/, 'string'], + [/@escapes/, 'string.escape'], + [/\\./, 'string.escape.invalid'], + [/"/, 'string', '@pop'], + ], + whitespace: [ + [/\s+/, 'white'], + [/(\/\/.*)/, 'comment'], + ], }, - }], - [/"([^"\\]|\\.)*$/, 'string.invalid'], // non-terminated string - [/"/, 'string', '@string'], - ], - string: [ - [/[^\\"]+/, 'string'], - [/@escapes/, 'string.escape'], - [/\\./, 'string.escape.invalid'], - [/"/, 'string', '@pop'], - ], - whitespace: [ - [/\s+/, 'white'], - [/(\/\/.*)/, 'comment'], - ], - }, - }); - - monaco.editor.defineTheme('concertoTheme', { - base: 'vs', - inherit: true, - rules: [ - { token: 'keyword', foreground: 'cd2184' }, - { token: 'type', foreground: '008080' }, - { token: 'identifier', foreground: '000000' }, - { token: 'string', foreground: '008000' }, - { token: 'string.escape', foreground: '800000' }, - { token: 'comment', foreground: '808080' }, - { token: 'white', foreground: 'FFFFFF' }, - ], - colors: {}, - }); - - monaco.editor.setTheme('concertoTheme'); - } - - return ( + }); + monaco.editor.defineTheme('concertoTheme', { + base: 'vs', + inherit: true, + rules: [ + { token: 'keyword', foreground: 'cd2184' }, + { token: 'type', foreground: '008080' }, + { token: 'identifier', foreground: '000000' }, + { token: 'string', foreground: '008000' }, + { token: 'string.escape', foreground: '800000' }, + { token: 'comment', foreground: '808080' }, + { token: 'white', foreground: 'FFFFFF' }, + ], + colors: {}, + }); + + monaco.editor.setTheme('concertoTheme'); + } + + return (
- +
); -} +} \ No newline at end of file diff --git a/src/JSONEditor.tsx b/src/JSONEditor.tsx index 65e51c7..6e2a20d 100644 --- a/src/JSONEditor.tsx +++ b/src/JSONEditor.tsx @@ -1,23 +1,19 @@ import * as monaco from '@monaco-editor/react'; import { editor } from 'monaco-editor'; -const options: editor.IStandaloneEditorConstructionOptions = { +const options:editor.IStandaloneEditorConstructionOptions = { minimap: { enabled: false }, - wordWrap: 'on', - automaticLayout: true, + wordWrap: "on", + automaticLayout:true, scrollBeyondLastLine: false, -}; +} -export default function JSONEditor({ value, onChange }: { value: string, onChange?: (value: string | undefined) => void }) { - return ( +export default function JSONEditor( {value, onChange} : {value: string, onChange?: (value:string|undefined) => void} ) { + + return (
- +
); -} +} \ No newline at end of file diff --git a/src/MarkdownEditor.tsx b/src/MarkdownEditor.tsx index eada61e..5f4b7f4 100644 --- a/src/MarkdownEditor.tsx +++ b/src/MarkdownEditor.tsx @@ -1,21 +1,18 @@ import * as monaco from '@monaco-editor/react'; import { editor } from 'monaco-editor'; -const options: editor.IStandaloneEditorConstructionOptions = { +const options:editor.IStandaloneEditorConstructionOptions = { minimap: { enabled: false }, - wordWrap: 'on', + wordWrap: "on", + automaticLayout:true, scrollBeyondLastLine: false, -}; +} -export default function MarkdownEditor({ value, onChange }: { value: string, onChange?: (value: string | undefined) => void }) { +export default function MarkdownEditor( {value, onChange} : {value: string, onChange?: (value:string|undefined) => void} ) { return (
- +
); -} +} \ No newline at end of file