@omegagrid/code 0.10.17 → 0.10.19
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.
- package/dist/components/code.d.ts +2 -1
- package/dist/components/code.d.ts.map +1 -1
- package/dist/components/code.js +26 -5
- package/dist/components/code.js.map +1 -1
- package/dist/components/codeDiff.d.ts +0 -1
- package/dist/components/codeDiff.d.ts.map +1 -1
- package/dist/components/codeDiff.js +2 -3
- package/dist/components/codeDiff.js.map +1 -1
- package/package.json +4 -4
|
@@ -7,6 +7,8 @@ export declare class Code extends LitElement implements Layout {
|
|
|
7
7
|
static defaultZIndex: number;
|
|
8
8
|
static styles: import("lit").CSSResult;
|
|
9
9
|
static monaco: typeof monaco;
|
|
10
|
+
static themes: Set<string>;
|
|
11
|
+
static getTheme(): string;
|
|
10
12
|
get monaco(): typeof monaco;
|
|
11
13
|
get editor(): monaco.editor.IStandaloneCodeEditor;
|
|
12
14
|
get model(): monaco.editor.ITextModel;
|
|
@@ -18,7 +20,6 @@ export declare class Code extends LitElement implements Layout {
|
|
|
18
20
|
set language(val: string);
|
|
19
21
|
get selectedContent(): string;
|
|
20
22
|
get container(): HTMLDivElement;
|
|
21
|
-
get theme(): "vs" | "vs-dark";
|
|
22
23
|
zIndex: number;
|
|
23
24
|
positionOffset: CssPosition;
|
|
24
25
|
uri: 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,MAAM,MAAM,eAAe,CAAC;AACxC,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;IAED,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,
|
|
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,MAAM,MAAM,eAAe,CAAC;AACxC,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,MAAM,CAAC,MAAM,cAAqB;IAElC,MAAM,CAAC,QAAQ;IAwBf,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;IAED,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,mBAIZ;IAOD,MAAM,SAAsB;IAG5B,cAAc,EAAE,WAAW,CAAgC;IAG3D,GAAG,EAAE,MAAM,CAAC;IAEZ,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
|
@@ -15,7 +15,7 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
|
|
|
15
15
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
16
16
|
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
17
17
|
};
|
|
18
|
-
var _Code_editor, _Code_options, _Code_language, _Code_preventChangeEvent, _Code_state, _Code_content, _Code_selection, _Code_scrollPosition, _Code_container, _Code_onStyleChange;
|
|
18
|
+
var _a, _Code_editor, _Code_options, _Code_language, _Code_preventChangeEvent, _Code_state, _Code_content, _Code_selection, _Code_scrollPosition, _Code_container, _Code_onStyleChange;
|
|
19
19
|
var Code_1;
|
|
20
20
|
import { dom, getThemeManager, events } from '@omegagrid/core';
|
|
21
21
|
import { LitElement, css } from 'lit';
|
|
@@ -24,7 +24,7 @@ import { MonacoLoader } from '../loader';
|
|
|
24
24
|
import { getDefaultOptions } from '@omegagrid/core';
|
|
25
25
|
import { CodeEvent } from './shared';
|
|
26
26
|
const VISIBILITY_THRESHOLD_SIZE = 10; // minimum width/height to show the editor
|
|
27
|
-
let Code = Code_1 = class Code extends LitElement {
|
|
27
|
+
let Code = Code_1 = _a = class Code extends LitElement {
|
|
28
28
|
constructor() {
|
|
29
29
|
super(...arguments);
|
|
30
30
|
_Code_editor.set(this, void 0);
|
|
@@ -37,13 +37,13 @@ let Code = Code_1 = class Code extends LitElement {
|
|
|
37
37
|
_Code_scrollPosition.set(this, void 0);
|
|
38
38
|
_Code_container.set(this, void 0);
|
|
39
39
|
_Code_onStyleChange.set(this, () => {
|
|
40
|
-
__classPrivateFieldGet(this, _Code_editor, "f").updateOptions({ theme:
|
|
40
|
+
__classPrivateFieldGet(this, _Code_editor, "f").updateOptions({ theme: Code_1.getTheme() });
|
|
41
41
|
});
|
|
42
42
|
this.zIndex = Code_1.defaultZIndex;
|
|
43
43
|
this.positionOffset = { t: 1, l: 1, r: -1, b: -1 };
|
|
44
44
|
this.getOptions = () => ({
|
|
45
45
|
...this.options,
|
|
46
|
-
theme:
|
|
46
|
+
theme: Code_1.getTheme(),
|
|
47
47
|
language: __classPrivateFieldGet(this, _Code_language, "f"),
|
|
48
48
|
fontSize: getDefaultOptions().fontSize,
|
|
49
49
|
// workaround for caret positioning issue in chrome
|
|
@@ -51,6 +51,27 @@ let Code = Code_1 = class Code extends LitElement {
|
|
|
51
51
|
fontLigatures: ''
|
|
52
52
|
});
|
|
53
53
|
}
|
|
54
|
+
static getTheme() {
|
|
55
|
+
const activeTheme = getThemeManager().activeTheme;
|
|
56
|
+
const baseTheme = activeTheme?.type == 'light' ? 'vs' : 'vs-dark';
|
|
57
|
+
const bgColor = activeTheme?.definition?.['code-background-color'];
|
|
58
|
+
let themeName = baseTheme;
|
|
59
|
+
if (bgColor) {
|
|
60
|
+
themeName = activeTheme.name + '-monaco';
|
|
61
|
+
if (!Code_1.themes.has(themeName)) {
|
|
62
|
+
MonacoLoader.getSync().editor.defineTheme(themeName, {
|
|
63
|
+
base: baseTheme,
|
|
64
|
+
inherit: true,
|
|
65
|
+
rules: [{ background: bgColor }], // This is needed
|
|
66
|
+
colors: {
|
|
67
|
+
'editor.background': bgColor,
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
Code_1.themes.add(themeName);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return themeName;
|
|
74
|
+
}
|
|
54
75
|
get monaco() { return Code_1.monaco; }
|
|
55
76
|
get editor() { return __classPrivateFieldGet(this, _Code_editor, "f"); }
|
|
56
77
|
get model() { return __classPrivateFieldGet(this, _Code_editor, "f")?.getModel(); }
|
|
@@ -90,7 +111,6 @@ let Code = Code_1 = class Code extends LitElement {
|
|
|
90
111
|
style: { zIndex: this.zIndex.toString() }
|
|
91
112
|
}), "f"));
|
|
92
113
|
}
|
|
93
|
-
get theme() { return getThemeManager().activeTheme?.type == 'light' ? 'vs' : 'vs-dark'; }
|
|
94
114
|
showContainer() {
|
|
95
115
|
if (this.container.parentElement !== document.body) {
|
|
96
116
|
document.body.appendChild(this.container);
|
|
@@ -207,6 +227,7 @@ Code.styles = css `
|
|
|
207
227
|
position: relative;
|
|
208
228
|
}
|
|
209
229
|
`;
|
|
230
|
+
Code.themes = new Set();
|
|
210
231
|
__decorate([
|
|
211
232
|
property({ type: Object, noAccessor: true })
|
|
212
233
|
], Code.prototype, "options", 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 * 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: 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\t@property({type: Object})\n\tpositionOffset: CssPosition = { t: 1, l: 1, r: -1, b: -1 };\n\n\t@property({type: String})\n\turi: string;\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, this.uri ? this.monaco.Uri.parse(this.uri) : null);\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"]}
|
|
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 * 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\tstatic themes = new Set<string>();\n\n\tstatic getTheme() {\n\t\tconst activeTheme = getThemeManager().activeTheme;\n\t\tconst baseTheme = activeTheme?.type == 'light' ? 'vs' : 'vs-dark';\n\t\tconst bgColor = activeTheme?.definition?.['code-background-color'];\n\t\tlet themeName = baseTheme;\n\n\t\tif (bgColor) {\n\t\t\tthemeName = activeTheme.name + '-monaco';\n\t\t\tif (!Code.themes.has(themeName)) {\n\t\t\t\tMonacoLoader.getSync().editor.defineTheme(themeName, {\n\t\t\t\t\tbase: baseTheme,\n\t\t\t\t\tinherit: true,\n\t\t\t\t\trules: [{background: bgColor}] as unknown as monaco.editor.ITokenThemeRule[], // This is needed\n\t\t\t\t\tcolors: {\n\t\t\t\t\t\t'editor.background': bgColor,\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tCode.themes.add(themeName);\n\t\t\t}\n\t\t}\n\n\t\treturn themeName;\n\t}\n\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: 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() {\n\t\treturn this.#container ?? (this.#container = dom.createElement('div', {\n\t\t\tstyle: {zIndex: this.zIndex.toString()}\n\t\t}))\n\t}\n\n\t#onStyleChange = () => {\n\t\tthis.#editor.updateOptions({theme: Code.getTheme()});\n\t}\n\n\t@property({type: Number})\n\tzIndex = Code.defaultZIndex;\n\n\t@property({type: Object})\n\tpositionOffset: CssPosition = { t: 1, l: 1, r: -1, b: -1 };\n\n\t@property({type: String})\n\turi: string;\n\n\tgetOptions = (): monaco.editor.IStandaloneEditorConstructionOptions => ({\n\t\t...this.options,\n\t\ttheme: Code.getTheme(),\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, this.uri ? this.monaco.Uri.parse(this.uri) : null);\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"]}
|
|
@@ -19,7 +19,6 @@ export declare class CodeDiffEditor extends LitElement implements Layout {
|
|
|
19
19
|
set language(val: string);
|
|
20
20
|
get selectedContent(): string;
|
|
21
21
|
get container(): HTMLDivElement;
|
|
22
|
-
get theme(): "vs" | "vs-dark";
|
|
23
22
|
zIndex: number;
|
|
24
23
|
positionOffset: CssPosition;
|
|
25
24
|
getOptions: () => monaco.editor.IStandaloneEditorConstructionOptions;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codeDiff.d.ts","sourceRoot":"","sources":["../../src/components/codeDiff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,MAAM,EAA2B,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACpF,OAAO,EAAE,UAAU,EAAO,MAAM,KAAK,CAAC;AAGtC,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAO7C,qBACa,cAAe,SAAQ,UAAW,YAAW,MAAM;;IAE/D,MAAM,CAAC,MAAM,0BAcX;IAEF,MAAM,CAAC,MAAM,EAAE,OAAO,MAAM,CAAC;IAC7B,IAAI,MAAM,kBAAmC;IAQ7C,IAAI,MAAM,wCAA0B;IACpC,IAAI,aAAa,6BAA+C;IAChE,IAAI,aAAa,6BAA+C;IAGhE,IACI,OAAO,IACM,MAAM,CAAC,MAAM,CAAC,oCAAoC,CAD7B;IACtC,IAAI,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,oCAAoC,EAGlE;IAGD,IACI,eAAe,IACM,MAAM,CAD4E;IAC3G,IAAI,eAAe,CAAC,GAAG,EAAE,MAAM,EAO9B;IAGD,IACI,eAAe,IACM,MAAM,CAD4E;IAC3G,IAAI,eAAe,CAAC,GAAG,EAAE,MAAM,EAO9B;IAGD,IACI,QAAQ,IACM,MAAM,CADgB;IACxC,IAAI,QAAQ,CAAC,GAAG,EAAE,MAAM,EAQvB;IAED,IAAI,eAAe,WAMlB;IAGD,IAAI,SAAS,mBAER;
|
|
1
|
+
{"version":3,"file":"codeDiff.d.ts","sourceRoot":"","sources":["../../src/components/codeDiff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,MAAM,EAA2B,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACpF,OAAO,EAAE,UAAU,EAAO,MAAM,KAAK,CAAC;AAGtC,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAO7C,qBACa,cAAe,SAAQ,UAAW,YAAW,MAAM;;IAE/D,MAAM,CAAC,MAAM,0BAcX;IAEF,MAAM,CAAC,MAAM,EAAE,OAAO,MAAM,CAAC;IAC7B,IAAI,MAAM,kBAAmC;IAQ7C,IAAI,MAAM,wCAA0B;IACpC,IAAI,aAAa,6BAA+C;IAChE,IAAI,aAAa,6BAA+C;IAGhE,IACI,OAAO,IACM,MAAM,CAAC,MAAM,CAAC,oCAAoC,CAD7B;IACtC,IAAI,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,oCAAoC,EAGlE;IAGD,IACI,eAAe,IACM,MAAM,CAD4E;IAC3G,IAAI,eAAe,CAAC,GAAG,EAAE,MAAM,EAO9B;IAGD,IACI,eAAe,IACM,MAAM,CAD4E;IAC3G,IAAI,eAAe,CAAC,GAAG,EAAE,MAAM,EAO9B;IAGD,IACI,QAAQ,IACM,MAAM,CADgB;IACxC,IAAI,QAAQ,CAAC,GAAG,EAAE,MAAM,EAQvB;IAED,IAAI,eAAe,WAMlB;IAGD,IAAI,SAAS,mBAER;IAOL,MAAM,SAAsB;IAG5B,cAAc,EAAE,WAAW,CAA8B;IAEzD,UAAU,QAAO,MAAM,CAAC,MAAM,CAAC,oCAAoC,CAOhE;IAEH,aAAa;IAMb,aAAa;IAIP,UAAU;IAgDV,OAAO;IAKb,iBAAiB;IAUjB,oBAAoB;IAKpB,MAAM;IAoBN,OAAO;IAQP,KAAK;CAIL"}
|
|
@@ -39,13 +39,13 @@ let CodeDiffEditor = CodeDiffEditor_1 = class CodeDiffEditor extends LitElement
|
|
|
39
39
|
_CodeDiffEditor_language.set(this, 'typescript');
|
|
40
40
|
_CodeDiffEditor_container.set(this, void 0);
|
|
41
41
|
_CodeDiffEditor_onStyleChange.set(this, () => {
|
|
42
|
-
this.editor.updateOptions({ theme:
|
|
42
|
+
this.editor.updateOptions({ theme: Code.getTheme() });
|
|
43
43
|
});
|
|
44
44
|
this.zIndex = Code.defaultZIndex;
|
|
45
45
|
this.positionOffset = { t: 1, l: 1, r: -1, b: -1 };
|
|
46
46
|
this.getOptions = () => ({
|
|
47
47
|
...this.options,
|
|
48
|
-
theme:
|
|
48
|
+
theme: Code.getTheme(),
|
|
49
49
|
fontSize: getDefaultOptions().fontSize,
|
|
50
50
|
// workaround for caret positioning issue in chrome
|
|
51
51
|
// https://github.com/microsoft/monaco-editor/issues/3217#issuecomment-1511978166
|
|
@@ -105,7 +105,6 @@ let CodeDiffEditor = CodeDiffEditor_1 = class CodeDiffEditor extends LitElement
|
|
|
105
105
|
style: { zIndex: this.zIndex.toString() }
|
|
106
106
|
}), "f"));
|
|
107
107
|
}
|
|
108
|
-
get theme() { return getThemeManager().activeTheme?.type == 'light' ? 'vs' : 'vs-dark'; }
|
|
109
108
|
showContainer() {
|
|
110
109
|
if (this.container.parentElement !== document.body) {
|
|
111
110
|
document.body.appendChild(this.container);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codeDiff.js","sourceRoot":"","sources":["../../src/components/codeDiff.ts"],"names":[],"mappings":"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","sourcesContent":["import { dom, Layout, getThemeManager, events, CssPosition } 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';\nimport { Code } from './code';\n\nconst VISIBILITY_THRESHOLD_SIZE = 10; // minimum width/height to show the editor\n\n@customElement('og-code-diff')\nexport class CodeDiffEditor extends LitElement implements Layout {\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\n\t\tdiv, iframe {\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\t\t\tborder: none;\n\t\t}\n\t`;\n\n\tstatic monaco: typeof monaco;\n\tget monaco() { return CodeDiffEditor.monaco }\n\n\t#preventChangeEvent = false;\n\t#state: 0|1|2 = 0; // 0: initial, 1: initializing, 2: initialized\n\t#selection: monaco.Selection;\n\t#activeModel: monaco.editor.ITextModel;\n\n\t#editor: monaco.editor.IStandaloneDiffEditor;\n\tget editor() { return this.#editor }\n\tget modifiedModel() { return this.#editor?.getModel().modified }\n\tget originalModel() { return this.#editor?.getModel().original }\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#modifiedContent = '';\n\t@property({type: String, noAccessor: true})\n\tget modifiedContent() { return this.modifiedModel ? this.modifiedModel.getValue() : this.#modifiedContent }\n\tset modifiedContent(val: string) {\n\t\tif (this.modifiedModel) {\n\t\t\tthis.#preventChangeEvent = true;\n\t\t\tthis.modifiedModel.setValue(val);\n\t\t} else {\n\t\t\tthis.#modifiedContent = val;\n\t\t}\n\t}\n\n\t#originalContent = '';\n\t@property({type: String, noAccessor: true})\n\tget originalContent() { return this.originalModel ? this.originalModel.getValue() : this.#originalContent }\n\tset originalContent(val: string) {\n\t\tif (this.originalModel) {\n\t\t\tthis.#preventChangeEvent = true;\n\t\t\tthis.originalModel.setValue(val);\n\t\t} else {\n\t\t\tthis.#originalContent = 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.#editor) {\n\t\t\tMonacoLoader.get().then(monaco => {\n\t\t\t\tmonaco.editor.setModelLanguage(this.#editor.getModel().modified, val);\n\t\t\t\tmonaco.editor.setModelLanguage(this.#editor.getModel().original, val);\n\t\t\t});\n\t\t}\n\t}\n\n\tget selectedContent() {\n\t\tif (!this.#editor) return this.#originalContent;\n\t\tif (!this.#activeModel) return this.#originalContent;\n\t\tconst selectedCodeChunks = this.#editor.getSelections().map(selection => this.#activeModel.getValueInRange(selection));\n\t\tconst selectedCode = selectedCodeChunks.join(\"\\n\").trim();\n\t\treturn selectedCode == null || selectedCode == '' ? this.#activeModel.getValue() : selectedCode;\n\t}\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\n\tget theme() { return getThemeManager().activeTheme?.type == 'light' ? 'vs' : 'vs-dark' }\n\t#onStyleChange = () => {\n\t\tthis.editor.updateOptions({theme: this.theme} as monaco.editor.IStandaloneDiffEditorConstructionOptions);\n\t}\n\n\t@property({type: Number})\n\tzIndex = Code.defaultZIndex;\n\n\t@property({ type: Object })\n\tpositionOffset: CssPosition = {t: 1, l: 1, r: -1, b: -1};\n\n\tgetOptions = (): monaco.editor.IStandaloneEditorConstructionOptions => ({\n\t\t...this.options,\n\t\ttheme: this.theme,\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\tCodeDiffEditor.monaco = await MonacoLoader.get();\n\t\tthis.#editor = CodeDiffEditor.monaco.editor.createDiffEditor(this.container, this.getOptions());\n\n\t\tconst language = this.#language;\n\t\tconst originalModel = CodeDiffEditor.monaco.editor.createModel(this.#originalContent, language);\n\t\tconst modifiedModel = CodeDiffEditor.monaco.editor.createModel(this.#modifiedContent, language);\n\t\tthis.editor.setModel({original: originalModel, modified: modifiedModel});\n\t\tif (this.#selection) this.#editor.setSelection(this.#selection);\n\n\t\tmodifiedModel.onDidChangeContent(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', {editor: this.editor, changes: e.changes}));\n\t\t\tthis.dispatchEvent(new events.ChangeEvent({value: this.editor.getModel().modified.getValue()}));\n\t\t});\n\n\t\tconst modifiedEdiitor = this.#editor.getModifiedEditor();\n\t\tconst originalEditor = this.#editor.getOriginalEditor();\n\t\tmodifiedEdiitor.onDidFocusEditorText(() => this.#activeModel = modifiedEdiitor.getModel());\n\t\toriginalEditor.onDidFocusEditorText(() => this.#activeModel = originalEditor.getModel());\n\t\tmodifiedEdiitor.onKeyDown(e => {\n\t\t\tthis.dispatchEvent(new CodeEvent('keydown', {editor: this.#editor}, e.browserEvent));\n\t\t});\n\t\toriginalEditor.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\tCodeDiffEditor.monaco.editor.setModelLanguage(this.#editor.getModel().modified, this.#language);\n\t\t\t\tCodeDiffEditor.monaco.editor.setModelLanguage(this.#editor.getModel().original, 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\n\t\tconst w = this.clientWidth + (this.positionOffset.r as number);\n\t\tconst h = this.clientHeight + (this.positionOffset.b as number);\n\t\tdom.setSize(this.container, { w, h });\n\n\t\tthis.#editor?.layout({width: w, height: h});\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"]}
|
|
1
|
+
{"version":3,"file":"codeDiff.js","sourceRoot":"","sources":["../../src/components/codeDiff.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,GAAG,EAAU,eAAe,EAAE,MAAM,EAAe,MAAM,iBAAiB,CAAC;AACpF,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,MAAM,yBAAyB,GAAG,EAAE,CAAC,CAAC,0CAA0C;AAGzE,IAAM,cAAc,sBAApB,MAAM,cAAe,SAAQ,UAAU;IAAvC;;QAqBN,6CAAsB,KAAK,EAAC;QAC5B,gCAAgB,CAAC,EAAC,CAAC,8CAA8C;QACjE,4CAA6B;QAC7B,8CAAuC;QAEvC,yCAA6C;QAK7C,0CAA6D;QAQ7D,0CAAmB,EAAE,EAAC;QAYtB,0CAAmB,EAAE,EAAC;QAYtB,mCAAY,YAAY,EAAC;QAqBzB,4CAA2B;QAK3B,wCAAiB,GAAG,EAAE;YACrB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,EAA2D,CAAC,CAAC;QAC/G,CAAC,EAAA;QAGD,WAAM,GAAG,IAAI,CAAC,aAAa,CAAC;QAG5B,mBAAc,GAAgB,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC;QAEzD,eAAU,GAAG,GAAuD,EAAE,CAAC,CAAC;YACvE,GAAG,IAAI,CAAC,OAAO;YACf,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;YACtB,QAAQ,EAAE,iBAAiB,EAAE,CAAC,QAAQ;YACtC,mDAAmD;YACnD,iFAAiF;YACjF,aAAa,EAAE,EAAE;SACjB,CAAC,CAAC;IAgHJ,CAAC;IAvMA,IAAI,MAAM,KAAK,OAAO,gBAAc,CAAC,MAAM,CAAA,CAAC,CAAC;IAQ7C,IAAI,MAAM,KAAK,OAAO,uBAAA,IAAI,8BAAQ,CAAA,CAAC,CAAC;IACpC,IAAI,aAAa,KAAK,OAAO,uBAAA,IAAI,8BAAQ,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAA,CAAC,CAAC;IAChE,IAAI,aAAa,KAAK,OAAO,uBAAA,IAAI,8BAAQ,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAA,CAAC,CAAC;IAIhE,IAAI,OAAO,KAAK,OAAO,uBAAA,IAAI,+BAAS,CAAA,CAAC,CAAC;IACtC,IAAI,OAAO,CAAC,GAAuD;QAClE,uBAAA,IAAI,2BAAY,GAAG,MAAA,CAAC;QACpB,uBAAA,IAAI,8BAAQ,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAID,IAAI,eAAe,KAAK,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,uBAAA,IAAI,uCAAiB,CAAA,CAAC,CAAC;IAC3G,IAAI,eAAe,CAAC,GAAW;QAC9B,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,uBAAA,IAAI,sCAAuB,IAAI,MAAA,CAAC;YAChC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACP,uBAAA,IAAI,mCAAoB,GAAG,MAAA,CAAC;QAC7B,CAAC;IACF,CAAC;IAID,IAAI,eAAe,KAAK,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,uBAAA,IAAI,uCAAiB,CAAA,CAAC,CAAC;IAC3G,IAAI,eAAe,CAAC,GAAW;QAC9B,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,uBAAA,IAAI,sCAAuB,IAAI,MAAA,CAAC;YAChC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACP,uBAAA,IAAI,mCAAoB,GAAG,MAAA,CAAC;QAC7B,CAAC;IACF,CAAC;IAID,IAAI,QAAQ,KAAK,OAAO,uBAAA,IAAI,gCAAU,CAAA,CAAC,CAAC;IACxC,IAAI,QAAQ,CAAC,GAAW;QACvB,uBAAA,IAAI,4BAAa,GAAG,MAAA,CAAC;QACrB,IAAI,uBAAA,IAAI,8BAAQ,EAAE,CAAC;YAClB,YAAY,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;gBAChC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,uBAAA,IAAI,8BAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;gBACtE,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,uBAAA,IAAI,8BAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YACvE,CAAC,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAED,IAAI,eAAe;QAClB,IAAI,CAAC,uBAAA,IAAI,8BAAQ;YAAE,OAAO,uBAAA,IAAI,uCAAiB,CAAC;QAChD,IAAI,CAAC,uBAAA,IAAI,mCAAa;YAAE,OAAO,uBAAA,IAAI,uCAAiB,CAAC;QACrD,MAAM,kBAAkB,GAAG,uBAAA,IAAI,8BAAQ,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,uBAAA,IAAI,mCAAa,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;QACvH,MAAM,YAAY,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1D,OAAO,YAAY,IAAI,IAAI,IAAI,YAAY,IAAI,EAAE,CAAC,CAAC,CAAC,uBAAA,IAAI,mCAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;IACjG,CAAC;IAGD,IAAI,SAAS;QAAK,OAAO,uBAAA,IAAI,iCAAW,IAAI,CAAC,uBAAA,IAAI,6BAAc,GAAG,CAAC,aAAa,CAAC,KAAK,EAAE;YACvF,KAAK,EAAE,EAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAC;SACvC,CAAC,MAAA,CAAC,CAAA;IAAC,CAAC;IAqBL,aAAa;QACZ,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;YACpD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3C,CAAC;IACF,CAAC;IAED,aAAa;QACZ,uBAAA,IAAI,iCAAW,EAAE,MAAM,EAAE,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,UAAU;QACf,IAAI,uBAAA,IAAI,6BAAO,GAAG,CAAC;YAAE,OAAO;QAC5B,uBAAA,IAAI,yBAAU,CAAC,MAAA,CAAC;QAEhB,gBAAc,CAAC,MAAM,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,CAAC;QACjD,uBAAA,IAAI,0BAAW,gBAAc,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,MAAA,CAAC;QAEhG,MAAM,QAAQ,GAAG,uBAAA,IAAI,gCAAU,CAAC;QAChC,MAAM,aAAa,GAAG,gBAAc,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,uBAAA,IAAI,uCAAiB,EAAE,QAAQ,CAAC,CAAC;QAChG,MAAM,aAAa,GAAG,gBAAc,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,uBAAA,IAAI,uCAAiB,EAAE,QAAQ,CAAC,CAAC;QAChG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAC,CAAC,CAAC;QACzE,IAAI,uBAAA,IAAI,iCAAW;YAAE,uBAAA,IAAI,8BAAQ,CAAC,YAAY,CAAC,uBAAA,IAAI,iCAAW,CAAC,CAAC;QAEhE,aAAa,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE;YACpC,IAAI,uBAAA,IAAI,0CAAoB,EAAE,CAAC;gBAC9B,uBAAA,IAAI,sCAAuB,KAAK,MAAA,CAAC;gBACjC,OAAM;YACP,CAAC;YACD,IAAI,CAAC,aAAa,CAAC,IAAI,SAAS,CAAC,QAAQ,EAAE,EAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAC,CAAC,CAAC,CAAC;YACvF,IAAI,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,EAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAC,CAAC,CAAC,CAAC;QACjG,CAAC,CAAC,CAAC;QAEH,MAAM,eAAe,GAAG,uBAAA,IAAI,8BAAQ,CAAC,iBAAiB,EAAE,CAAC;QACzD,MAAM,cAAc,GAAG,uBAAA,IAAI,8BAAQ,CAAC,iBAAiB,EAAE,CAAC;QACxD,eAAe,CAAC,oBAAoB,CAAC,GAAG,EAAE,CAAC,uBAAA,IAAI,+BAAgB,eAAe,CAAC,QAAQ,EAAE,MAAA,CAAC,CAAC;QAC3F,cAAc,CAAC,oBAAoB,CAAC,GAAG,EAAE,CAAC,uBAAA,IAAI,+BAAgB,cAAc,CAAC,QAAQ,EAAE,MAAA,CAAC,CAAC;QACzF,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;YAC7B,IAAI,CAAC,aAAa,CAAC,IAAI,SAAS,CAAC,SAAS,EAAE,EAAC,MAAM,EAAE,uBAAA,IAAI,8BAAQ,EAAC,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;QACtF,CAAC,CAAC,CAAC;QACH,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;YAC5B,IAAI,CAAC,aAAa,CAAC,IAAI,SAAS,CAAC,SAAS,EAAE,EAAC,MAAM,EAAE,uBAAA,IAAI,8BAAQ,EAAC,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;QACtF,CAAC,CAAC,CAAC;QAEH,uBAAA,IAAI,sCAAuB,KAAK,MAAA,CAAC;QACjC,uBAAA,IAAI,yBAAU,CAAC,MAAA,CAAC;QAEhB,IAAI,CAAC,aAAa,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAC,MAAM,EAAE,uBAAA,IAAI,8BAAQ,EAAC,CAAC,CAAC,CAAC;QACnE,uBAAA,IAAI,8BAAQ,CAAC,KAAK,EAAE,CAAC;QAErB,UAAU,CAAC,GAAG,EAAE;YACf,IAAI,uBAAA,IAAI,gCAAU,IAAI,QAAQ,EAAE,CAAC;gBAChC,2FAA2F;gBAC3F,gBAAc,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,uBAAA,IAAI,8BAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,uBAAA,IAAI,gCAAU,CAAC,CAAC;gBAChG,gBAAc,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,uBAAA,IAAI,8BAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,uBAAA,IAAI,gCAAU,CAAC,CAAC;YACjG,CAAC;QACF,CAAC,EAAE,GAAG,CAAC,CAAC;IACT,CAAC;IAED,KAAK,CAAC,OAAO;QACZ,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,IAAI,CAAC,MAAM,EAAE,CAAC;IACf,CAAC;IAED,iBAAiB;QAChB,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,eAAe,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,uBAAA,IAAI,qCAAe,CAAC,CAAC;QAElE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,EAAE,CAAC;QACf,CAAC;IACF,CAAC;IAED,oBAAoB;QACnB,eAAe,EAAE,CAAC,mBAAmB,CAAC,QAAQ,EAAE,uBAAA,IAAI,qCAAe,CAAC,CAAC;QACrE,IAAI,CAAC,aAAa,EAAE,CAAC;IACtB,CAAC;IAED,MAAM;QACL,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,GAAG,yBAAyB,IAAI,IAAI,CAAC,YAAY,GAAG,yBAAyB,EAAE,CAAC;YACxH,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,OAAO;QACR,CAAC;QAED,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzD,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE;YAC/B,CAAC,EAAE,MAAM,CAAC,GAAG,GAAI,IAAI,CAAC,cAAc,CAAC,CAAY;YACjD,CAAC,EAAE,MAAM,CAAC,IAAI,GAAI,IAAI,CAAC,cAAc,CAAC,CAAY;SAClD,CAAC,CAAC;QAEH,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,GAAI,IAAI,CAAC,cAAc,CAAC,CAAY,CAAC;QAC/D,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,GAAI,IAAI,CAAC,cAAc,CAAC,CAAY,CAAC;QAChE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAEtC,uBAAA,IAAI,8BAAQ,EAAE,MAAM,CAAC,EAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO;QACN,uBAAA,IAAI,iCAAW,EAAE,MAAM,EAAE,CAAC;QAC1B,uBAAA,IAAI,6BAAc,IAAI,MAAA,CAAC;QACvB,uBAAA,IAAI,8BAAQ,EAAE,OAAO,EAAE,CAAC;QACxB,uBAAA,IAAI,0BAAW,IAAI,MAAA,CAAC;QACpB,uBAAA,IAAI,yBAAU,CAAC,MAAA,CAAC;IACjB,CAAC;IAED,KAAK;QACJ,uBAAA,IAAI,8BAAQ,EAAE,KAAK,EAAE,CAAC;IACvB,CAAC;;;;;;;;;;;;;AAtNM,qBAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;EAclB,AAdY,CAcX;AAiBF;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAC,CAAC;6CACL;AAQtC;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAC,CAAC;qDACgE;AAY3G;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAC,CAAC;qDACgE;AAY3G;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAC,CAAC;8CACH;AA6BxC;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;8CACG;AAG5B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;sDAC8B;AAjG7C,cAAc;IAD1B,aAAa,CAAC,cAAc,CAAC;GACjB,cAAc,CA0N1B","sourcesContent":["import { dom, Layout, getThemeManager, events, CssPosition } 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';\nimport { Code } from './code';\n\nconst VISIBILITY_THRESHOLD_SIZE = 10; // minimum width/height to show the editor\n\n@customElement('og-code-diff')\nexport class CodeDiffEditor extends LitElement implements Layout {\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\n\t\tdiv, iframe {\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\t\t\tborder: none;\n\t\t}\n\t`;\n\n\tstatic monaco: typeof monaco;\n\tget monaco() { return CodeDiffEditor.monaco }\n\n\t#preventChangeEvent = false;\n\t#state: 0|1|2 = 0; // 0: initial, 1: initializing, 2: initialized\n\t#selection: monaco.Selection;\n\t#activeModel: monaco.editor.ITextModel;\n\n\t#editor: monaco.editor.IStandaloneDiffEditor;\n\tget editor() { return this.#editor }\n\tget modifiedModel() { return this.#editor?.getModel().modified }\n\tget originalModel() { return this.#editor?.getModel().original }\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#modifiedContent = '';\n\t@property({type: String, noAccessor: true})\n\tget modifiedContent() { return this.modifiedModel ? this.modifiedModel.getValue() : this.#modifiedContent }\n\tset modifiedContent(val: string) {\n\t\tif (this.modifiedModel) {\n\t\t\tthis.#preventChangeEvent = true;\n\t\t\tthis.modifiedModel.setValue(val);\n\t\t} else {\n\t\t\tthis.#modifiedContent = val;\n\t\t}\n\t}\n\n\t#originalContent = '';\n\t@property({type: String, noAccessor: true})\n\tget originalContent() { return this.originalModel ? this.originalModel.getValue() : this.#originalContent }\n\tset originalContent(val: string) {\n\t\tif (this.originalModel) {\n\t\t\tthis.#preventChangeEvent = true;\n\t\t\tthis.originalModel.setValue(val);\n\t\t} else {\n\t\t\tthis.#originalContent = 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.#editor) {\n\t\t\tMonacoLoader.get().then(monaco => {\n\t\t\t\tmonaco.editor.setModelLanguage(this.#editor.getModel().modified, val);\n\t\t\t\tmonaco.editor.setModelLanguage(this.#editor.getModel().original, val);\n\t\t\t});\n\t\t}\n\t}\n\n\tget selectedContent() {\n\t\tif (!this.#editor) return this.#originalContent;\n\t\tif (!this.#activeModel) return this.#originalContent;\n\t\tconst selectedCodeChunks = this.#editor.getSelections().map(selection => this.#activeModel.getValueInRange(selection));\n\t\tconst selectedCode = selectedCodeChunks.join(\"\\n\").trim();\n\t\treturn selectedCode == null || selectedCode == '' ? this.#activeModel.getValue() : selectedCode;\n\t}\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\n\t#onStyleChange = () => {\n\t\tthis.editor.updateOptions({theme: Code.getTheme()} as monaco.editor.IStandaloneDiffEditorConstructionOptions);\n\t}\n\n\t@property({type: Number})\n\tzIndex = Code.defaultZIndex;\n\n\t@property({ type: Object })\n\tpositionOffset: CssPosition = {t: 1, l: 1, r: -1, b: -1};\n\n\tgetOptions = (): monaco.editor.IStandaloneEditorConstructionOptions => ({\n\t\t...this.options,\n\t\ttheme: Code.getTheme(),\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\tCodeDiffEditor.monaco = await MonacoLoader.get();\n\t\tthis.#editor = CodeDiffEditor.monaco.editor.createDiffEditor(this.container, this.getOptions());\n\n\t\tconst language = this.#language;\n\t\tconst originalModel = CodeDiffEditor.monaco.editor.createModel(this.#originalContent, language);\n\t\tconst modifiedModel = CodeDiffEditor.monaco.editor.createModel(this.#modifiedContent, language);\n\t\tthis.editor.setModel({original: originalModel, modified: modifiedModel});\n\t\tif (this.#selection) this.#editor.setSelection(this.#selection);\n\n\t\tmodifiedModel.onDidChangeContent(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', {editor: this.editor, changes: e.changes}));\n\t\t\tthis.dispatchEvent(new events.ChangeEvent({value: this.editor.getModel().modified.getValue()}));\n\t\t});\n\n\t\tconst modifiedEdiitor = this.#editor.getModifiedEditor();\n\t\tconst originalEditor = this.#editor.getOriginalEditor();\n\t\tmodifiedEdiitor.onDidFocusEditorText(() => this.#activeModel = modifiedEdiitor.getModel());\n\t\toriginalEditor.onDidFocusEditorText(() => this.#activeModel = originalEditor.getModel());\n\t\tmodifiedEdiitor.onKeyDown(e => {\n\t\t\tthis.dispatchEvent(new CodeEvent('keydown', {editor: this.#editor}, e.browserEvent));\n\t\t});\n\t\toriginalEditor.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\tCodeDiffEditor.monaco.editor.setModelLanguage(this.#editor.getModel().modified, this.#language);\n\t\t\t\tCodeDiffEditor.monaco.editor.setModelLanguage(this.#editor.getModel().original, 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\n\t\tconst w = this.clientWidth + (this.positionOffset.r as number);\n\t\tconst h = this.clientHeight + (this.positionOffset.b as number);\n\t\tdom.setSize(this.container, { w, h });\n\n\t\tthis.#editor?.layout({width: w, height: h});\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.19",
|
|
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.19",
|
|
32
|
+
"@omegagrid/localize": "^0.10.19",
|
|
33
|
+
"@omegagrid/tree": "^0.10.19",
|
|
34
34
|
"lit": "^3.1.1",
|
|
35
35
|
"monaco-editor": "0.47.0",
|
|
36
36
|
"ts-debounce": "^4.0.0",
|