diff --git a/app/components/monaco-editor.hbs b/app/components/monaco-editor.hbs new file mode 100644 index 0000000..4db3d9b --- /dev/null +++ b/app/components/monaco-editor.hbs @@ -0,0 +1 @@ +
diff --git a/app/components/monaco-editor.js b/app/components/monaco-editor.js new file mode 100644 index 0000000..42a9481 --- /dev/null +++ b/app/components/monaco-editor.js @@ -0,0 +1,37 @@ +import { action } from '@ember/object'; +import Component from '@glimmer/component'; +import * as monaco from 'monaco-editor'; + +window.MonacoEnvironment = { + getWorker(_, label) { + if (label === 'editorWorkerService') { + return new Worker( + new URL('monaco-editor/esm/vs/editor/editor.worker', import.meta.url) + ); + } else if (label === 'json') { + return new Worker( + new URL( + 'monaco-editor/esm/vs/language/json/json.worker', + import.meta.url + ) + ); + } + }, +}; + +export default class MonacoEditorComponent extends Component { + @action + initEditor(el) { + this.editor = monaco.editor.create(el, { + value: this.args.value, + language: this.args.language, + // scrollBeyondLastLine: false, + // wordWrap: 'on', + // wrappingStrategy: 'advanced', + minimap: { + enabled: false, + }, + // overviewRulerLanes: 0, + }); + } +} diff --git a/app/templates/admin/indexes/item/documents/document/edit.hbs b/app/templates/admin/indexes/item/documents/document/edit.hbs index 905efe1..efa3922 100644 --- a/app/templates/admin/indexes/item/documents/document/edit.hbs +++ b/app/templates/admin/indexes/item/documents/document/edit.hbs @@ -1,5 +1,5 @@ diff --git a/ember-cli-build.js b/ember-cli-build.js index 098aa48..aff5569 100644 --- a/ember-cli-build.js +++ b/ember-cli-build.js @@ -42,6 +42,7 @@ module.exports = function (defaults) { webpackConfig: { module: { rules: [ + { test: /\.ttf$/, type: 'asset/resource' }, { // When webpack sees an import for a CSS files test: /\.css$/i, diff --git a/package.json b/package.json index 40f5d90..95efc8e 100644 --- a/package.json +++ b/package.json @@ -86,8 +86,10 @@ "eslint-plugin-node": "^11.1.0", "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-qunit": "^7.3.1", + "file-loader": "^6.2.0", "loader.js": "^4.7.0", "meilisearch": "^0.25.0", + "monaco-editor": "^0.34.0", "npm-run-all": "^4.1.5", "postcss": "^8.4.16", "postcss-loader": "^7.0.1", diff --git a/tests/integration/components/monaco-editor-test.js b/tests/integration/components/monaco-editor-test.js new file mode 100644 index 0000000..d12181c --- /dev/null +++ b/tests/integration/components/monaco-editor-test.js @@ -0,0 +1,26 @@ +import { module, test } from 'qunit'; +import { setupRenderingTest } from 'meiliadmin/tests/helpers'; +import { render } from '@ember/test-helpers'; +import { hbs } from 'ember-cli-htmlbars'; + +module('Integration | Component | monaco-editor', function (hooks) { + setupRenderingTest(hooks); + + test('it renders', async function (assert) { + // Set any properties with this.set('myProperty', 'value'); + // Handle any actions with this.set('myAction', function(val) { ... }); + + await render(hbs`