Browse Source

new changes

placidenduwayo 1 year ago
parent
commit
8855e7a5e4

+ 3
- 2
angular.json View File

51
               {
51
               {
52
                 "glob": "**/*",
52
                 "glob": "**/*",
53
                 "input": "node_modules/monaco-editor",
53
                 "input": "node_modules/monaco-editor",
54
-                "output": "/assets/monaco"
54
+                "output": "./assets/monaco/"
55
               },
55
               },
56
               "src/favicon.ico",
56
               "src/favicon.ico",
57
               "src/assets"
57
               "src/assets"
60
               "@angular/material/prebuilt-themes/indigo-pink.css",
60
               "@angular/material/prebuilt-themes/indigo-pink.css",
61
               "src/styles.scss"
61
               "src/styles.scss"
62
             ],
62
             ],
63
-            "scripts": []
63
+            "scripts": [
64
+            ]
64
           },
65
           },
65
           "configurations": {
66
           "configurations": {
66
             "production": {
67
             "production": {

+ 3
- 3
package-lock.json View File

6637
       "dev": true
6637
       "dev": true
6638
     },
6638
     },
6639
     "monaco-editor": {
6639
     "monaco-editor": {
6640
-      "version": "0.36.1",
6641
-      "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.36.1.tgz",
6642
-      "integrity": "sha512-/CaclMHKQ3A6rnzBzOADfwdSJ25BFoFT0Emxsc4zYVyav5SkK9iA6lEtIeuN/oRYbwPgviJT+t3l+sjFa28jYg=="
6640
+      "version": "0.34.1",
6641
+      "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.34.1.tgz",
6642
+      "integrity": "sha512-FKc80TyiMaruhJKKPz5SpJPIjL+dflGvz4CpuThaPMc94AyN7SeC9HQ8hrvaxX7EyHdJcUY5i4D0gNyJj1vSZQ=="
6643
     },
6643
     },
6644
     "ms": {
6644
     "ms": {
6645
       "version": "2.1.2",
6645
       "version": "2.1.2",

+ 1
- 1
package.json View File

21
     "@angular/platform-browser-dynamic": "^15.2.0",
21
     "@angular/platform-browser-dynamic": "^15.2.0",
22
     "@angular/router": "^15.2.0",
22
     "@angular/router": "^15.2.0",
23
     "bootstrap": "^5.2.3",
23
     "bootstrap": "^5.2.3",
24
-    "monaco-editor": "^0.36.1",
24
+    "monaco-editor": "^0.34.1",
25
     "ngx-monaco-editor-v2": "^15.0.1",
25
     "ngx-monaco-editor-v2": "^15.0.1",
26
     "primeicons": "^6.0.1",
26
     "primeicons": "^6.0.1",
27
     "primeng": "^15.2.0",
27
     "primeng": "^15.2.0",

+ 2
- 1
src/app/app-routing.module.ts View File

1
 import { NgModule } from '@angular/core';
1
 import { NgModule } from '@angular/core';
2
 import { RouterModule, Routes } from '@angular/router';
2
 import { RouterModule, Routes } from '@angular/router';
3
 
3
 
4
-const routes: Routes = [];
4
+const routes: Routes = [
5
+];
5
 
6
 
6
 @NgModule({
7
 @NgModule({
7
   imports: [RouterModule.forRoot(routes)],
8
   imports: [RouterModule.forRoot(routes)],

+ 2
- 2
src/app/pages/monaco-editor-test/monaco-editor-test.module.ts View File

4
 import { MonacoEditorTestRoutingModule } from './monaco-editor-test-routing.module';
4
 import { MonacoEditorTestRoutingModule } from './monaco-editor-test-routing.module';
5
 import { MonacoEditorTestComponent } from './monaco-editor-test/monaco-editor-test.component';
5
 import { MonacoEditorTestComponent } from './monaco-editor-test/monaco-editor-test.component';
6
 import { FormsModule } from '@angular/forms';
6
 import { FormsModule } from '@angular/forms';
7
-import { MonacoEditorModule} from 'ngx-monaco-editor-v2'
8
-import { monacoConfig } from 'src/monaco-config';
7
+import { MonacoEditorModule} from 'ngx-monaco-editor-v2';
8
+import { monacoConfig } from 'src/monaco-editor/monaco-editor-config';
9
 
9
 
10
 
10
 
11
 @NgModule({
11
 @NgModule({

+ 9
- 2
src/app/pages/monaco-editor-test/monaco-editor-test/monaco-editor-test.component.html View File

1
 <h1></h1>
1
 <h1></h1>
2
-<ngx-monaco-editor class="code-editor" [options]="options" [(ngModel)]="java_placeholder"></ngx-monaco-editor>
3
-  
2
+<div style="height: 500px">
3
+    <ngx-monaco-editor 
4
+        style="height: 100%" 
5
+        [options]="options"
6
+        [model]="model"
7
+        [(ngModel)]="html_placeholder"
8
+        (onInit)="onInit($event)">
9
+    </ngx-monaco-editor>
10
+</div>

+ 41
- 18
src/app/pages/monaco-editor-test/monaco-editor-test/monaco-editor-test.component.ts View File

1
 import { Component } from '@angular/core';
1
 import { Component } from '@angular/core';
2
+import {NgxEditorModel } from 'ngx-monaco-editor-v2'
2
 
3
 
3
 @Component({
4
 @Component({
4
   selector: 'app-monaco-editor',
5
   selector: 'app-monaco-editor',
6
   styleUrls: ['./monaco-editor-test.component.scss']
7
   styleUrls: ['./monaco-editor-test.component.scss']
7
 })
8
 })
8
 export class MonacoEditorTestComponent{
9
 export class MonacoEditorTestComponent{
9
-    
10
-  language: string = 'java';
11
-  theme: string = 'vs-dark';
12
-
13
-    options = {
14
-      theme:this.theme,
15
-      language: this.language,
16
-      automaticLayout: true,
17
-      quickSuggestions:true,
18
-      wordBasedSuggestions:true
19
 
10
 
20
-    };
21
-  js_placeholder: string=
22
-  `
11
+  onInit(editor:any) {
12
+    let line = editor.getPosition();
13
+    console.log(line);
14
+  }
15
+     
16
+  languages = ['java','csharp','python','html'];
17
+  theme: string = 'vs-dark';
18
+    
19
+  ts_placeholder: string=
20
+  `//typescript placeholder function
23
   function printHello () {
21
   function printHello () {
24
     console.log("Hello world!");
22
     console.log("Hello world!");
25
   }`;
23
   }`;
26
   
24
   
27
   java_placeholder: string = 
25
   java_placeholder: string = 
28
-  `
26
+  `//java placeholder class
29
   public class TestHelloWorld {
27
   public class TestHelloWorld {
30
     public static void main (String [] args){
28
     public static void main (String [] args){
31
       System.out.println("Hello World");
29
       System.out.println("Hello World");
33
   }`;
31
   }`;
34
 
32
 
35
   csharp_placeholder: string = 
33
   csharp_placeholder: string = 
36
-  `
34
+  `//csharp placeholder class
37
   using System;
35
   using System;
38
   namespace Demo
36
   namespace Demo
39
   {
37
   {
44
   }`;
42
   }`;
45
   json_placeholder: string ='';
43
   json_placeholder: string ='';
46
 
44
 
47
-  onInit(editor: { getPosition: () => any; }) {
48
-    let line = editor.getPosition();
49
-    console.log(line);
45
+  html_placeholder: string =`
46
+  <html>
47
+    <title>Monaco editor integration</title>
48
+    <body>
49
+      <!-- the body of the page -->
50
+    </body>
51
+  </html>`;
52
+  css_placeholder: string ='';
53
+
54
+  python_placeholder: string = `
55
+  class ClassName {
56
+    __init__(){}
57
+    def method() {
58
+
59
+    }
60
+  }`;
61
+
62
+  options = {
63
+    theme:this.theme,
64
+    automaticLayout: true,
65
+    quickSuggestions:true,
66
+    wordBasedSuggestions:true
67
+  };
68
+
69
+  model: NgxEditorModel = {
70
+    value: this.html_placeholder,
71
+    language: this.languages[3],
50
   }
72
   }
73
+
51
 }
74
 }
52
  
75
  

+ 0
- 41
src/monaco-config.ts View File

1
-import { NgxMonacoEditorConfig } from "ngx-monaco-editor-v2";
2
-
3
-
4
-export function onMonacoEditorLoad(id: string = 'java') {
5
-
6
-  (<any>window).monaco.languages.register({ id });
7
-
8
-  (<any>window).monaco.languages.registerCompletionItemProvider(id, {
9
-    triggerCharacters : ['1'],
10
-    providerCompletionItems: function () {
11
-      var suggestions = [
12
-        {
13
-          label: 'simpleText',
14
-          kind: (<any>window).monaco.languages.CompletionItemKind.Text,
15
-          insertText: 'simpleText'
16
-        },
17
-        {
18
-          label: 'testing',
19
-          kind: (<any>window).monaco.languages.CompletionItemKind.Keyword,
20
-          insertText: 'testing(${1:condition})',
21
-          insertTextRules: (<any>window).monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet
22
-        },
23
-        {
24
-          label: 'ifelse',
25
-          kind: (<any>window).monaco.languages.CompletionItemKind.Snippet,
26
-          insertTest: ['if (${1:condition}) {', '\t$0', '} else {', '\t', '}'].join('\n'),
27
-          insertTextRules: (<any>window).monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
28
-          documentation: 'If-Else Statement'
29
-        },
30
-      ];
31
-      return { suggestions: suggestions };
32
-    }
33
-  });
34
-
35
-}
36
-
37
-export const monacoConfig: NgxMonacoEditorConfig = {
38
-  baseUrl: './assets',
39
-  defaultOptions: { scrollBeyondLastLine: false },
40
-  onMonacoLoad: onMonacoEditorLoad
41
-};

+ 71
- 0
src/monaco-editor/monaco-editor-config.ts View File

1
+declare var monaco: any;
2
+
3
+async function onMonacoEditorLoad(range: Range, languages=['java','csharp','python','html']) {
4
+  const allLangs = await (<any>window).monaco.languages.getLanguages();
5
+  console.log('all supported languages:', allLangs);
6
+  console.log(monaco);
7
+  monaco.languages.register({id: languages[3]});
8
+  monaco.languages.registerCompletionItemProvider(languages[3],{
9
+    triggerCharacters : ['.'],
10
+    provideCompletionItems: function(model:any, position: any){
11
+      var textUntilPosition = model.getValueInRange(
12
+        {startLineNumber: 1, startColumn: 1, 
13
+          endLineNumber: position.lineNumber, 
14
+          endColumn: position.column
15
+        }
16
+      );
17
+        console.log(textUntilPosition);
18
+        var match = textUntilPosition.match(/"dependencies"\s*:\s*\{\s*("[^"]*"\s*:\s*"[^"]*"\s*,\s*)*([^"]*)?$/);
19
+        if (!match) {
20
+            return { suggestions: [] };
21
+        }
22
+        var word = model.getWordUntilPosition(position);
23
+        var range = {
24
+          startLineNumber: position.lineNumber,
25
+          endLineNumber: position.lineNumber,
26
+          startColumn: word.startColumn,
27
+          endColumn: word.endColumn
28
+      };
29
+
30
+      var suggestions = [
31
+        {
32
+            label: '"lodash"',
33
+            kind: monaco.languages.CompletionItemKind.Function,
34
+            documentation: "The Lodash library exported as Node.js modules.",
35
+            insertText: '"lodash": "*"',
36
+            range: range
37
+        },
38
+        {
39
+            label: '"express"',
40
+            kind: monaco.languages.CompletionItemKind.Function,
41
+            documentation: "Fast, unopinionated, minimalist web framework",
42
+            insertText: '"express": "*"',
43
+            range: range
44
+        },
45
+        {
46
+            label: '"mkdirp"',
47
+            kind: monaco.languages.CompletionItemKind.Function,
48
+            documentation: "Recursively mkdir, like <code>mkdir -p</code>",
49
+            insertText: '"mkdirp": "*"',
50
+            range: range
51
+        },
52
+        {
53
+            label: '"my-third-party-library"',
54
+            kind: monaco.languages.CompletionItemKind.Function,
55
+            documentation: "Describe your library here",
56
+            insertText: '"${1:my-third-party-library}": "${2:1.2.3}"',
57
+            insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
58
+            range: range
59
+        }
60
+    ];
61
+    return{suggestions:suggestions};
62
+    }
63
+
64
+  });
65
+}
66
+
67
+export const monacoConfig = {
68
+  baseUrl:'./assets',
69
+  defaultOptions: { scrollBeyondLastLine: false },
70
+  onMonacoLoad: onMonacoEditorLoad
71
+};

Powered by TurnKey Linux.