@omegagrid/code 0.10.4 → 0.10.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Layout } from '@omegagrid/core';
|
|
2
2
|
import { LitElement } from 'lit';
|
|
3
3
|
import type * as monaco from 'monaco-editor';
|
|
4
|
+
import { CssPosition } from '@omegagrid/core';
|
|
4
5
|
export declare class Code extends LitElement implements Layout {
|
|
5
6
|
#private;
|
|
6
7
|
static defaultZIndex: number;
|
|
@@ -11,6 +12,7 @@ export declare class Code extends LitElement implements Layout {
|
|
|
11
12
|
get model(): monaco.editor.ITextModel;
|
|
12
13
|
get options(): monaco.editor.IStandaloneEditorConstructionOptions;
|
|
13
14
|
set options(val: monaco.editor.IStandaloneEditorConstructionOptions);
|
|
15
|
+
positionOffset: CssPosition;
|
|
14
16
|
get content(): string;
|
|
15
17
|
set content(val: string);
|
|
16
18
|
get language(): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code.d.ts","sourceRoot":"","sources":["../../src/components/code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,MAAM,EAA2B,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAO,MAAM,KAAK,CAAC;AAGtC,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"code.d.ts","sourceRoot":"","sources":["../../src/components/code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,MAAM,EAA2B,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAO,MAAM,KAAK,CAAC;AAGtC,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAqB,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAKjE,qBACa,IAAK,SAAQ,UAAW,YAAW,MAAM;;IAErD,OAAc,aAAa,SAAS;IAEpC,MAAM,CAAC,MAAM,0BAQX;IAEF,MAAM,CAAC,MAAM,EAAE,OAAO,MAAM,CAAC;IAC7B,IAAI,MAAM,kBAAyB;IAGnC,IAAI,MAAM,wCAA0B;IACpC,IAAI,KAAK,6BAAsC;IAG/C,IACI,OAAO,IACM,MAAM,CAAC,MAAM,CAAC,oCAAoC,CAD7B;IACtC,IAAI,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,oCAAoC,EAGlE;IAGD,cAAc,EAAE,WAAW,CAA8B;IAEzD,IACI,OAAO,IACM,MAAM,CADwD;IAC/E,IAAI,OAAO,CAAC,GAAG,EAAE,MAAM,EAQtB;IAGD,IACI,QAAQ,IACM,MAAM,CADgB;IACxC,IAAI,QAAQ,CAAC,GAAG,EAAE,MAAM,EAKvB;IAED,IAAI,eAAe,WAKlB;IASD,IAAI,SAAS,mBAER;IACL,IAAI,KAAK,qBAA+E;IAMxF,MAAM,SAAsB;IAE5B,UAAU,QAAO,MAAM,CAAC,MAAM,CAAC,oCAAoC,CAQhE;IAEH,aAAa;IAMb,aAAa;IAIP,UAAU;IAkDV,OAAO;IAKb,iBAAiB;IAUjB,oBAAoB;IAKpB,MAAM;IAmBN,OAAO;IAQP,KAAK;CAIL"}
|
package/dist/components/code.js
CHANGED
|
@@ -29,6 +29,7 @@ let Code = Code_1 = class Code extends LitElement {
|
|
|
29
29
|
super(...arguments);
|
|
30
30
|
_Code_editor.set(this, void 0);
|
|
31
31
|
_Code_options.set(this, void 0);
|
|
32
|
+
this.positionOffset = { t: 1, l: 1, r: -1, b: -1 };
|
|
32
33
|
_Code_language.set(this, 'typescript');
|
|
33
34
|
_Code_preventChangeEvent.set(this, false);
|
|
34
35
|
_Code_state.set(this, 0); // 0: initial, 1: initializing, 2: initialized
|
|
@@ -165,8 +166,14 @@ let Code = Code_1 = class Code extends LitElement {
|
|
|
165
166
|
}
|
|
166
167
|
this.showContainer();
|
|
167
168
|
const offset = dom.getElementOffset(this, document.body);
|
|
168
|
-
dom.setPosition(this.container, {
|
|
169
|
-
|
|
169
|
+
dom.setPosition(this.container, {
|
|
170
|
+
t: offset.top + this.positionOffset.t,
|
|
171
|
+
l: offset.left + +this.positionOffset.l
|
|
172
|
+
});
|
|
173
|
+
dom.setSize(this.container, {
|
|
174
|
+
w: this.clientWidth + this.positionOffset.r,
|
|
175
|
+
h: this.clientHeight + this.positionOffset.b
|
|
176
|
+
});
|
|
170
177
|
this.editor?.layout();
|
|
171
178
|
}
|
|
172
179
|
dispose() {
|
|
@@ -203,6 +210,9 @@ Code.styles = css `
|
|
|
203
210
|
__decorate([
|
|
204
211
|
property({ type: Object, noAccessor: true })
|
|
205
212
|
], Code.prototype, "options", null);
|
|
213
|
+
__decorate([
|
|
214
|
+
property({ type: Object })
|
|
215
|
+
], Code.prototype, "positionOffset", void 0);
|
|
206
216
|
__decorate([
|
|
207
217
|
property({ type: String, noAccessor: true })
|
|
208
218
|
], Code.prototype, "content", null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code.js","sourceRoot":"","sources":["../../src/components/code.ts"],"names":[],"mappings":"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","sourcesContent":["import { dom, Layout, getThemeManager, events } from '@omegagrid/core';\nimport { LitElement, css } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { MonacoLoader } from '../loader';\nimport type * as monaco from 'monaco-editor';\nimport { getDefaultOptions } from '@omegagrid/core';\nimport { CodeEvent } from './shared';\n\nconst VISIBILITY_THRESHOLD_SIZE = 10; // minimum width/height to show the editor\n\n@customElement('og-code')\nexport class Code extends LitElement implements Layout {\n\n\tpublic static defaultZIndex = 10000;\n\n\tstatic styles = css`\n\t\t:host {\n\t\t\tuser-select: text;\n\t\t\tdisplay: block;\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\t\t\tposition: relative;\n\t\t}\n\t`;\n\n\tstatic monaco: typeof monaco;\n\tget monaco() { return Code.monaco }\n\n\t#editor: monaco.editor.IStandaloneCodeEditor;\n\tget editor() { return this.#editor }\n\tget model() { return this.#editor?.getModel() }\n\t\t\n\t#options: monaco.editor.IStandaloneEditorConstructionOptions;\n\t@property({type: Object, noAccessor: true})\n\tget options() { return this.#options }\n\tset options(val: monaco.editor.IStandaloneEditorConstructionOptions) {\n\t\tthis.#options = val;\n\t\tthis.#editor?.updateOptions(val);\n\t}\n\n\t@property({type: String, noAccessor: true})\n\tget content() { return this.#editor ? this.#editor.getValue() : this.#content }\n\tset content(val: string) {\n\t\tif (val == null) val = '';\n\t\tif (this.#editor) {\n\t\t\tthis.#preventChangeEvent = true;\n\t\t\tthis.#editor?.setValue(val);\n\t\t} else {\n\t\t\tthis.#content = val;\n\t\t}\n\t}\n\n\t#language = 'typescript';\n\t@property({type: String, noAccessor: true})\n\tget language() { return this.#language }\n\tset language(val: string) {\n\t\tthis.#language = val;\n\t\tif (this.model) {\n\t\t\tMonacoLoader.get().then(monaco => monaco.editor.setModelLanguage(this.model, val));\n\t\t}\n\t}\n\n\tget selectedContent() {\n\t\tif (!this.#editor) return this.#content;\n\t\tconst selectedCodeChunks = this.#editor.getSelections().map(selection => this.model.getValueInRange(selection));\n\t\tconst selectedCode = selectedCodeChunks.join(\"\\n\").trim();\n\t\treturn selectedCode == null || selectedCode == '' ? this.#editor.getValue() : selectedCode;\n\t}\n\n\t#preventChangeEvent = false;\n\t#state: 0|1|2 = 0; // 0: initial, 1: initializing, 2: initialized\n\t#content: string;\n\t#selection: monaco.Selection;\n\t#scrollPosition: {top: number, left: number};\n\n\t#container: HTMLDivElement;\n\tget container() { return this.#container ?? (this.#container = dom.createElement('div', {\n\t\tstyle: {zIndex: this.zIndex.toString()}\n\t})) }\n\tget theme() { return getThemeManager().activeTheme?.type == 'light' ? 'vs' : 'vs-dark' }\n\t#onStyleChange = () => {\n\t\tthis.#editor.updateOptions({theme: this.theme});\n\t}\n\n\t@property({type: Number})\n\tzIndex = Code.defaultZIndex;\n\n\tgetOptions = (): monaco.editor.IStandaloneEditorConstructionOptions => ({\n\t\t...this.options,\n\t\ttheme: this.theme,\n\t\tlanguage: this.#language,\n\t\tfontSize: getDefaultOptions().fontSize,\n\t\t// workaround for caret positioning issue in chrome\n\t\t// https://github.com/microsoft/monaco-editor/issues/3217#issuecomment-1511978166\n\t\tfontLigatures: ''\n\t});\n\n\tshowContainer() {\n\t\tif (this.container.parentElement !== document.body) {\n\t\t\tdocument.body.appendChild(this.container);\n\t\t}\n\t}\n\n\thideContainer() {\n\t\tthis.#container?.remove();\n\t}\n\n\tasync initEditor() {\n\t\tif (this.#state > 0) return;\n\t\tthis.#state = 1;\n\t\t\n\t\tCode.monaco = await MonacoLoader.get();\n\t\tthis.#editor = Code.monaco.editor.create(this.container, this.getOptions());\n\n\t\tconst language = this.#language;\n\t\tconst model = Code.monaco.editor.createModel(this.#content, language);\n\t\tthis.#editor.setModel(model);\n\t\tif (this.#selection) this.#editor.setSelection(this.#selection);\n\t\tif (this.#scrollPosition) this.#editor.setScrollPosition({\n\t\t\tscrollTop: this.#scrollPosition.top,\n\t\t\tscrollLeft: this.#scrollPosition.left\n\t\t});\n\n\t\tthis.#editor.onDidBlurEditorText(() => {\n\t\t\tthis.dispatchEvent(new CodeEvent('blur', {editor: this.#editor}));\n\t\t});\n\n\t\tthis.#editor.onDidChangeModelContent(e => {\n\t\t\tif (this.#preventChangeEvent) {\n\t\t\t\tthis.#preventChangeEvent = false;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.dispatchEvent(new CodeEvent('change', {\n\t\t\t\teditor: this.#editor,\n\t\t\t\tchanges: e.changes\n\t\t\t}));\n\t\t\tthis.dispatchEvent(new events.ChangeEvent({value: model}));\n\t\t});\n\n\t\tthis.#editor.onKeyDown(e => {\n\t\t\tthis.dispatchEvent(new CodeEvent('keydown', {editor: this.#editor}, e.browserEvent));\n\t\t});\n\n\t\tthis.#preventChangeEvent = false;\n\t\tthis.#state = 2;\n\t\t\n\t\tthis.dispatchEvent(new CodeEvent('ready', {editor: this.#editor}));\n\t\tthis.#editor.focus();\n\n\t\tsetTimeout(() => {\n\t\t\tif (this.#language != language) {\n\t\t\t\t// if the language was changed while the editor was initializing, update the model language\n\t\t\t\tCode.monaco.editor.setModelLanguage(model, this.#language);\n\t\t\t}\n\t\t}, 100);\n\t}\n\n\tasync updated() {\n\t\tawait this.initEditor();\n\t\tthis.layout();\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback();\n\t\tgetThemeManager().addEventListener('change', this.#onStyleChange);\n\n\t\tif (this.hasUpdated) {\n\t\t\tthis.initEditor();\n\t\t\tthis.layout();\n\t\t}\n\t}\n\n\tdisconnectedCallback() {\n\t\tgetThemeManager().removeEventListener('change', this.#onStyleChange);\n\t\tthis.hideContainer();\n\t}\n\n\tlayout() {\n\t\tif (!this.isConnected || this.clientWidth < VISIBILITY_THRESHOLD_SIZE || this.clientHeight < VISIBILITY_THRESHOLD_SIZE) {\n\t\t\tthis.hideContainer();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.showContainer();\n\t\tconst offset = dom.getElementOffset(this, document.body);\n\t\tdom.setPosition(this.container, {t: offset.top+ 1, l: offset.left + 1});\n\t\tdom.setSize(this.container, {w: this.clientWidth - 1, h: this.clientHeight - 1});\n\t\tthis.editor?.layout();\n\t}\n\n\tdispose() {\n\t\tthis.#container?.remove();\n\t\tthis.#container = null;\n\t\tthis.#editor?.dispose();\n\t\tthis.#editor = null;\n\t\tthis.#state = 0;\n\t}\n\n\tfocus() {\n\t\tthis.#editor?.focus();\n\t}\n\n}"]}
|
|
1
|
+
{"version":3,"file":"code.js","sourceRoot":"","sources":["../../src/components/code.ts"],"names":[],"mappings":"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","sourcesContent":["import { dom, Layout, getThemeManager, events } from '@omegagrid/core';\nimport { LitElement, css } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { MonacoLoader } from '../loader';\nimport type * as monaco from 'monaco-editor';\nimport { getDefaultOptions, CssPosition } from '@omegagrid/core';\nimport { CodeEvent } from './shared';\n\nconst VISIBILITY_THRESHOLD_SIZE = 10; // minimum width/height to show the editor\n\n@customElement('og-code')\nexport class Code extends LitElement implements Layout {\n\n\tpublic static defaultZIndex = 10000;\n\n\tstatic styles = css`\n\t\t:host {\n\t\t\tuser-select: text;\n\t\t\tdisplay: block;\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\t\t\tposition: relative;\n\t\t}\n\t`;\n\n\tstatic monaco: typeof monaco;\n\tget monaco() { return Code.monaco }\n\n\t#editor: monaco.editor.IStandaloneCodeEditor;\n\tget editor() { return this.#editor }\n\tget model() { return this.#editor?.getModel() }\n\n\t#options: monaco.editor.IStandaloneEditorConstructionOptions;\n\t@property({type: Object, noAccessor: true})\n\tget options() { return this.#options }\n\tset options(val: monaco.editor.IStandaloneEditorConstructionOptions) {\n\t\tthis.#options = val;\n\t\tthis.#editor?.updateOptions(val);\n\t}\n\n\t@property({ type: Object })\n\tpositionOffset: CssPosition = {t: 1, l: 1, r: -1, b: -1};\n\n\t@property({type: String, noAccessor: true})\n\tget content() { return this.#editor ? this.#editor.getValue() : this.#content }\n\tset content(val: string) {\n\t\tif (val == null) val = '';\n\t\tif (this.#editor) {\n\t\t\tthis.#preventChangeEvent = true;\n\t\t\tthis.#editor?.setValue(val);\n\t\t} else {\n\t\t\tthis.#content = val;\n\t\t}\n\t}\n\n\t#language = 'typescript';\n\t@property({type: String, noAccessor: true})\n\tget language() { return this.#language }\n\tset language(val: string) {\n\t\tthis.#language = val;\n\t\tif (this.model) {\n\t\t\tMonacoLoader.get().then(monaco => monaco.editor.setModelLanguage(this.model, val));\n\t\t}\n\t}\n\n\tget selectedContent() {\n\t\tif (!this.#editor) return this.#content;\n\t\tconst selectedCodeChunks = this.#editor.getSelections().map(selection => this.model.getValueInRange(selection));\n\t\tconst selectedCode = selectedCodeChunks.join(\"\\n\").trim();\n\t\treturn selectedCode == null || selectedCode == '' ? this.#editor.getValue() : selectedCode;\n\t}\n\n\t#preventChangeEvent = false;\n\t#state: 0|1|2 = 0; // 0: initial, 1: initializing, 2: initialized\n\t#content: string;\n\t#selection: monaco.Selection;\n\t#scrollPosition: {top: number, left: number};\n\n\t#container: HTMLDivElement;\n\tget container() { return this.#container ?? (this.#container = dom.createElement('div', {\n\t\tstyle: {zIndex: this.zIndex.toString()}\n\t})) }\n\tget theme() { return getThemeManager().activeTheme?.type == 'light' ? 'vs' : 'vs-dark' }\n\t#onStyleChange = () => {\n\t\tthis.#editor.updateOptions({theme: this.theme});\n\t}\n\n\t@property({type: Number})\n\tzIndex = Code.defaultZIndex;\n\n\tgetOptions = (): monaco.editor.IStandaloneEditorConstructionOptions => ({\n\t\t...this.options,\n\t\ttheme: this.theme,\n\t\tlanguage: this.#language,\n\t\tfontSize: getDefaultOptions().fontSize,\n\t\t// workaround for caret positioning issue in chrome\n\t\t// https://github.com/microsoft/monaco-editor/issues/3217#issuecomment-1511978166\n\t\tfontLigatures: ''\n\t});\n\n\tshowContainer() {\n\t\tif (this.container.parentElement !== document.body) {\n\t\t\tdocument.body.appendChild(this.container);\n\t\t}\n\t}\n\n\thideContainer() {\n\t\tthis.#container?.remove();\n\t}\n\n\tasync initEditor() {\n\t\tif (this.#state > 0) return;\n\t\tthis.#state = 1;\n\n\t\tCode.monaco = await MonacoLoader.get();\n\t\tthis.#editor = Code.monaco.editor.create(this.container, this.getOptions());\n\n\t\tconst language = this.#language;\n\t\tconst model = Code.monaco.editor.createModel(this.#content, language);\n\t\tthis.#editor.setModel(model);\n\t\tif (this.#selection) this.#editor.setSelection(this.#selection);\n\t\tif (this.#scrollPosition) this.#editor.setScrollPosition({\n\t\t\tscrollTop: this.#scrollPosition.top,\n\t\t\tscrollLeft: this.#scrollPosition.left\n\t\t});\n\n\t\tthis.#editor.onDidBlurEditorText(() => {\n\t\t\tthis.dispatchEvent(new CodeEvent('blur', {editor: this.#editor}));\n\t\t});\n\n\t\tthis.#editor.onDidChangeModelContent(e => {\n\t\t\tif (this.#preventChangeEvent) {\n\t\t\t\tthis.#preventChangeEvent = false;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.dispatchEvent(new CodeEvent('change', {\n\t\t\t\teditor: this.#editor,\n\t\t\t\tchanges: e.changes\n\t\t\t}));\n\t\t\tthis.dispatchEvent(new events.ChangeEvent({value: model}));\n\t\t});\n\n\t\tthis.#editor.onKeyDown(e => {\n\t\t\tthis.dispatchEvent(new CodeEvent('keydown', {editor: this.#editor}, e.browserEvent));\n\t\t});\n\n\t\tthis.#preventChangeEvent = false;\n\t\tthis.#state = 2;\n\n\t\tthis.dispatchEvent(new CodeEvent('ready', {editor: this.#editor}));\n\t\tthis.#editor.focus();\n\n\t\tsetTimeout(() => {\n\t\t\tif (this.#language != language) {\n\t\t\t\t// if the language was changed while the editor was initializing, update the model language\n\t\t\t\tCode.monaco.editor.setModelLanguage(model, this.#language);\n\t\t\t}\n\t\t}, 100);\n\t}\n\n\tasync updated() {\n\t\tawait this.initEditor();\n\t\tthis.layout();\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback();\n\t\tgetThemeManager().addEventListener('change', this.#onStyleChange);\n\n\t\tif (this.hasUpdated) {\n\t\t\tthis.initEditor();\n\t\t\tthis.layout();\n\t\t}\n\t}\n\n\tdisconnectedCallback() {\n\t\tgetThemeManager().removeEventListener('change', this.#onStyleChange);\n\t\tthis.hideContainer();\n\t}\n\n\tlayout() {\n\t\tif (!this.isConnected || this.clientWidth < VISIBILITY_THRESHOLD_SIZE || this.clientHeight < VISIBILITY_THRESHOLD_SIZE) {\n\t\t\tthis.hideContainer();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.showContainer();\n\t\tconst offset = dom.getElementOffset(this, document.body);\n\t\tdom.setPosition(this.container, {\n\t\t\tt: offset.top + (this.positionOffset.t as number),\n\t\t\tl: offset.left + + (this.positionOffset.l as number)\n\t\t});\n\t\tdom.setSize(this.container, {\n\t\t\tw: this.clientWidth + (this.positionOffset.r as number),\n\t\t\th: this.clientHeight + (this.positionOffset.b as number)\n\t\t});\n\t\tthis.editor?.layout();\n\t}\n\n\tdispose() {\n\t\tthis.#container?.remove();\n\t\tthis.#container = null;\n\t\tthis.#editor?.dispose();\n\t\tthis.#editor = null;\n\t\tthis.#state = 0;\n\t}\n\n\tfocus() {\n\t\tthis.#editor?.focus();\n\t}\n\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@omegagrid/code",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.5",
|
|
4
4
|
"license": "UNLICENSED",
|
|
5
5
|
"description": "Monaco editor webcomponent",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -28,9 +28,9 @@
|
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"@fortawesome/fontawesome-svg-core": "^7.0.1",
|
|
31
|
-
"@omegagrid/core": "^0.10.
|
|
32
|
-
"@omegagrid/localize": "^0.10.
|
|
33
|
-
"@omegagrid/tree": "^0.10.
|
|
31
|
+
"@omegagrid/core": "^0.10.5",
|
|
32
|
+
"@omegagrid/localize": "^0.10.5",
|
|
33
|
+
"@omegagrid/tree": "^0.10.5",
|
|
34
34
|
"lit": "^3.1.1",
|
|
35
35
|
"monaco-editor": "0.47.0",
|
|
36
36
|
"ts-debounce": "^4.0.0",
|