@omegagrid/code 0.7.8 → 0.7.10

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.
@@ -3,7 +3,7 @@ import { LitElement } from 'lit';
3
3
  import type * as monaco from 'monaco-editor';
4
4
  export declare class Code extends LitElement implements Layout {
5
5
  #private;
6
- static zIndex: number;
6
+ static defaultZIndex: number;
7
7
  static styles: import("lit").CSSResult;
8
8
  static monaco: typeof monaco;
9
9
  get monaco(): typeof monaco;
@@ -18,6 +18,7 @@ export declare class Code extends LitElement implements Layout {
18
18
  get selectedContent(): string;
19
19
  get container(): HTMLDivElement;
20
20
  get theme(): "vs" | "vs-dark";
21
+ zIndex: number;
21
22
  getOptions: () => monaco.editor.IStandaloneEditorConstructionOptions;
22
23
  showContainer(): void;
23
24
  hideContainer(): void;
@@ -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;AAM7C,qBACa,IAAK,SAAQ,UAAW,YAAW,MAAM;;IAErD,OAAc,MAAM,SAAS;IAE7B,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,mBAER;IACL,IAAI,KAAK,qBAA+E;IAKxF,UAAU,QAAO,MAAM,CAAC,MAAM,CAAC,oCAAoC,CAQhE;IAEH,aAAa;IAMb,aAAa;IAIP,UAAU;IAkDV,OAAO;IAKb,iBAAiB;IAUjB,oBAAoB;IAKpB,MAAM;IAaN,OAAO;IAQP,KAAK;CAIL"}
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;AAM7C,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,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;IAaN,OAAO;IAQP,KAAK;CAIL"}
@@ -39,6 +39,7 @@ let Code = Code_1 = class Code extends LitElement {
39
39
  _Code_onStyleChange.set(this, () => {
40
40
  __classPrivateFieldGet(this, _Code_editor, "f").updateOptions({ theme: this.theme });
41
41
  });
42
+ this.zIndex = Code_1.defaultZIndex;
42
43
  this.getOptions = () => ({
43
44
  ...this.options,
44
45
  theme: this.theme,
@@ -85,7 +86,7 @@ let Code = Code_1 = class Code extends LitElement {
85
86
  }
86
87
  get container() {
87
88
  return __classPrivateFieldGet(this, _Code_container, "f") ?? (__classPrivateFieldSet(this, _Code_container, dom.createElement('div', {
88
- style: { zIndex: Code_1.zIndex.toString() }
89
+ style: { zIndex: this.zIndex.toString() }
89
90
  }), "f"));
90
91
  }
91
92
  get theme() { return getThemeManager().activeTheme?.type == 'light' ? 'vs' : 'vs-dark'; }
@@ -189,7 +190,7 @@ _Code_selection = new WeakMap();
189
190
  _Code_scrollPosition = new WeakMap();
190
191
  _Code_container = new WeakMap();
191
192
  _Code_onStyleChange = new WeakMap();
192
- Code.zIndex = 10000;
193
+ Code.defaultZIndex = 10000;
193
194
  Code.styles = css `
194
195
  :host {
195
196
  user-select: text;
@@ -208,6 +209,9 @@ __decorate([
208
209
  __decorate([
209
210
  property({ type: String, noAccessor: true })
210
211
  ], Code.prototype, "language", null);
212
+ __decorate([
213
+ property({ type: Number })
214
+ ], Code.prototype, "zIndex", void 0);
211
215
  Code = Code_1 = __decorate([
212
216
  customElement('og-code')
213
217
  ], Code);
@@ -1 +1 @@
1
- {"version":3,"file":"code.js","sourceRoot":"","sources":["../../src/components/code.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,GAAG,EAAU,eAAe,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACvE,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;AAErC,MAAM,yBAAyB,GAAG,EAAE,CAAC,CAAC,0CAA0C;AAGzE,IAAM,IAAI,YAAV,MAAM,IAAK,SAAQ,UAAU;IAA7B;;QAiBN,+BAA6C;QAI7C,gCAA6D;QAoB7D,yBAAY,YAAY,EAAC;QAiBzB,mCAAsB,KAAK,EAAC;QAC5B,sBAAgB,CAAC,EAAC,CAAC,8CAA8C;QACjE,gCAAiB;QACjB,kCAA6B;QAC7B,uCAA6C;QAE7C,kCAA2B;QAK3B,8BAAiB,GAAG,EAAE;YACrB,uBAAA,IAAI,oBAAQ,CAAC,aAAa,CAAC,EAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAC,CAAC,CAAC;QACjD,CAAC,EAAA;QAED,eAAU,GAAG,GAAuD,EAAE,CAAC,CAAC;YACvE,GAAG,IAAI,CAAC,OAAO;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,uBAAA,IAAI,sBAAU;YACxB,QAAQ,EAAE,iBAAiB,EAAE,CAAC,QAAQ;YACtC,mDAAmD;YACnD,iFAAiF;YACjF,aAAa,EAAE,EAAE;SACjB,CAAC,CAAC;IA2GJ,CAAC;IA7KA,IAAI,MAAM,KAAK,OAAO,MAAI,CAAC,MAAM,CAAA,CAAC,CAAC;IAGnC,IAAI,MAAM,KAAK,OAAO,uBAAA,IAAI,oBAAQ,CAAA,CAAC,CAAC;IACpC,IAAI,KAAK,KAAK,OAAO,uBAAA,IAAI,oBAAQ,EAAE,QAAQ,EAAE,CAAA,CAAC,CAAC;IAI/C,IAAI,OAAO,KAAK,OAAO,uBAAA,IAAI,qBAAS,CAAA,CAAC,CAAC;IACtC,IAAI,OAAO,CAAC,GAAuD;QAClE,uBAAA,IAAI,iBAAY,GAAG,MAAA,CAAC;QACpB,uBAAA,IAAI,oBAAQ,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAGD,IAAI,OAAO,KAAK,OAAO,uBAAA,IAAI,oBAAQ,CAAC,CAAC,CAAC,uBAAA,IAAI,oBAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,uBAAA,IAAI,qBAAS,CAAA,CAAC,CAAC;IAC/E,IAAI,OAAO,CAAC,GAAW;QACtB,IAAI,GAAG,IAAI,IAAI;YAAE,GAAG,GAAG,EAAE,CAAC;QAC1B,IAAI,uBAAA,IAAI,oBAAQ,EAAE,CAAC;YAClB,uBAAA,IAAI,4BAAuB,IAAI,MAAA,CAAC;YAChC,uBAAA,IAAI,oBAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;aAAM,CAAC;YACP,uBAAA,IAAI,iBAAY,GAAG,MAAA,CAAC;QACrB,CAAC;IACF,CAAC;IAID,IAAI,QAAQ,KAAK,OAAO,uBAAA,IAAI,sBAAU,CAAA,CAAC,CAAC;IACxC,IAAI,QAAQ,CAAC,GAAW;QACvB,uBAAA,IAAI,kBAAa,GAAG,MAAA,CAAC;QACrB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,YAAY,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;QACpF,CAAC;IACF,CAAC;IAED,IAAI,eAAe;QAClB,IAAI,CAAC,uBAAA,IAAI,oBAAQ;YAAE,OAAO,uBAAA,IAAI,qBAAS,CAAC;QACxC,MAAM,kBAAkB,GAAG,uBAAA,IAAI,oBAAQ,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;QAChH,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,oBAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;IAC5F,CAAC;IASD,IAAI,SAAS;QAAK,OAAO,uBAAA,IAAI,uBAAW,IAAI,CAAC,uBAAA,IAAI,mBAAc,GAAG,CAAC,aAAa,CAAC,KAAK,EAAE;YACvF,KAAK,EAAE,EAAC,MAAM,EAAE,MAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAC;SACvC,CAAC,MAAA,CAAC,CAAA;IAAC,CAAC;IACL,IAAI,KAAK,KAAK,OAAO,eAAe,EAAE,CAAC,WAAW,EAAE,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA,CAAC,CAAC;IAexF,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,uBAAW,EAAE,MAAM,EAAE,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,UAAU;QACf,IAAI,uBAAA,IAAI,mBAAO,GAAG,CAAC;YAAE,OAAO;QAC5B,uBAAA,IAAI,eAAU,CAAC,MAAA,CAAC;QAEhB,MAAI,CAAC,MAAM,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,CAAC;QACvC,uBAAA,IAAI,gBAAW,MAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,MAAA,CAAC;QAE5E,MAAM,QAAQ,GAAG,uBAAA,IAAI,sBAAU,CAAC;QAChC,MAAM,KAAK,GAAG,MAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,uBAAA,IAAI,qBAAS,EAAE,QAAQ,CAAC,CAAC;QACtE,uBAAA,IAAI,oBAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,uBAAA,IAAI,uBAAW;YAAE,uBAAA,IAAI,oBAAQ,CAAC,YAAY,CAAC,uBAAA,IAAI,uBAAW,CAAC,CAAC;QAChE,IAAI,uBAAA,IAAI,4BAAgB;YAAE,uBAAA,IAAI,oBAAQ,CAAC,iBAAiB,CAAC;gBACxD,SAAS,EAAE,uBAAA,IAAI,4BAAgB,CAAC,GAAG;gBACnC,UAAU,EAAE,uBAAA,IAAI,4BAAgB,CAAC,IAAI;aACrC,CAAC,CAAC;QAEH,uBAAA,IAAI,oBAAQ,CAAC,mBAAmB,CAAC,GAAG,EAAE;YACrC,IAAI,CAAC,aAAa,CAAC,IAAI,SAAS,CAAC,MAAM,EAAE,EAAC,MAAM,EAAE,uBAAA,IAAI,oBAAQ,EAAC,CAAC,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QAEH,uBAAA,IAAI,oBAAQ,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE;YACxC,IAAI,uBAAA,IAAI,gCAAoB,EAAE,CAAC;gBAC9B,uBAAA,IAAI,4BAAuB,KAAK,MAAA,CAAC;gBACjC,OAAO;YACR,CAAC;YACD,IAAI,CAAC,aAAa,CAAC,IAAI,SAAS,CAAC,QAAQ,EAAE;gBAC1C,MAAM,EAAE,uBAAA,IAAI,oBAAQ;gBACpB,OAAO,EAAE,CAAC,CAAC,OAAO;aAClB,CAAC,CAAC,CAAC;YACJ,IAAI,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,uBAAA,IAAI,oBAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;YAC1B,IAAI,CAAC,aAAa,CAAC,IAAI,SAAS,CAAC,SAAS,EAAE,EAAC,MAAM,EAAE,uBAAA,IAAI,oBAAQ,EAAC,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;QACtF,CAAC,CAAC,CAAC;QAEH,uBAAA,IAAI,4BAAuB,KAAK,MAAA,CAAC;QACjC,uBAAA,IAAI,eAAU,CAAC,MAAA,CAAC;QAEhB,IAAI,CAAC,aAAa,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAC,MAAM,EAAE,uBAAA,IAAI,oBAAQ,EAAC,CAAC,CAAC,CAAC;QACnE,uBAAA,IAAI,oBAAQ,CAAC,KAAK,EAAE,CAAC;QAErB,UAAU,CAAC,GAAG,EAAE;YACf,IAAI,uBAAA,IAAI,sBAAU,IAAI,QAAQ,EAAE,CAAC;gBAChC,2FAA2F;gBAC3F,MAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,uBAAA,IAAI,sBAAU,CAAC,CAAC;YAC5D,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,2BAAe,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,2BAAe,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,EAAC,CAAC,EAAE,MAAM,CAAC,GAAG,GAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,GAAG,CAAC,EAAC,CAAC,CAAC;QACxE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,EAAC,CAAC,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,GAAG,CAAC,EAAC,CAAC,CAAC;QACjF,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IACvB,CAAC;IAED,OAAO;QACN,uBAAA,IAAI,uBAAW,EAAE,MAAM,EAAE,CAAC;QAC1B,uBAAA,IAAI,mBAAc,IAAI,MAAA,CAAC;QACvB,uBAAA,IAAI,oBAAQ,EAAE,OAAO,EAAE,CAAC;QACxB,uBAAA,IAAI,gBAAW,IAAI,MAAA,CAAC;QACpB,uBAAA,IAAI,eAAU,CAAC,MAAA,CAAC;IACjB,CAAC;IAED,KAAK;QACJ,uBAAA,IAAI,oBAAQ,EAAE,KAAK,EAAE,CAAC;IACvB,CAAC;;;;;;;;;;;;AAxLa,WAAM,GAAG,KAAK,AAAR,CAAS;AAEtB,WAAM,GAAG,GAAG,CAAA;;;;;;;;EAQlB,AARY,CAQX;AAWF;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAC,CAAC;mCACL;AAOtC;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAC,CAAC;mCACoC;AAa/E;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAC,CAAC;oCACH;AA3C5B,IAAI;IADhB,aAAa,CAAC,SAAS,CAAC;GACZ,IAAI,CA4LhB","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 zIndex = 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: Code.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\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 } 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}"]}
@@ -20,6 +20,7 @@ export declare class CodeDiffEditor extends LitElement implements Layout {
20
20
  get selectedContent(): string;
21
21
  get container(): HTMLDivElement;
22
22
  get theme(): "vs" | "vs-dark";
23
+ zIndex: number;
23
24
  getOptions: () => monaco.editor.IStandaloneEditorConstructionOptions;
24
25
  showContainer(): void;
25
26
  hideContainer(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"codeDiff.d.ts","sourceRoot":"","sources":["../../src/components/codeDiff.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;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;IAEL,IAAI,KAAK,qBAA+E;IAKxF,UAAU,QAAO,MAAM,CAAC,MAAM,CAAC,oCAAoC,CAOhE;IAEH,aAAa;IAMb,aAAa;IAIP,UAAU;IAgDV,OAAO;IAKb,iBAAiB;IAUjB,oBAAoB;IAKpB,MAAM;IAiBN,OAAO;IAQP,KAAK;CAIL"}
1
+ {"version":3,"file":"codeDiff.d.ts","sourceRoot":"","sources":["../../src/components/codeDiff.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;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;IAEL,IAAI,KAAK,qBAA+E;IAMxF,MAAM,SAAsB;IAE5B,UAAU,QAAO,MAAM,CAAC,MAAM,CAAC,oCAAoC,CAOhE;IAEH,aAAa;IAMb,aAAa;IAIP,UAAU;IAgDV,OAAO;IAKb,iBAAiB;IAUjB,oBAAoB;IAKpB,MAAM;IAiBN,OAAO;IAQP,KAAK;CAIL"}
@@ -41,6 +41,7 @@ let CodeDiffEditor = CodeDiffEditor_1 = class CodeDiffEditor extends LitElement
41
41
  _CodeDiffEditor_onStyleChange.set(this, () => {
42
42
  this.editor.updateOptions({ theme: this.theme });
43
43
  });
44
+ this.zIndex = Code.defaultZIndex;
44
45
  this.getOptions = () => ({
45
46
  ...this.options,
46
47
  theme: this.theme,
@@ -100,7 +101,7 @@ let CodeDiffEditor = CodeDiffEditor_1 = class CodeDiffEditor extends LitElement
100
101
  }
101
102
  get container() {
102
103
  return __classPrivateFieldGet(this, _CodeDiffEditor_container, "f") ?? (__classPrivateFieldSet(this, _CodeDiffEditor_container, dom.createElement('div', {
103
- style: { zIndex: Code.zIndex.toString() }
104
+ style: { zIndex: this.zIndex.toString() }
104
105
  }), "f"));
105
106
  }
106
107
  get theme() { return getThemeManager().activeTheme?.type == 'light' ? 'vs' : 'vs-dark'; }
@@ -232,6 +233,9 @@ __decorate([
232
233
  __decorate([
233
234
  property({ type: String, noAccessor: true })
234
235
  ], CodeDiffEditor.prototype, "language", null);
236
+ __decorate([
237
+ property({ type: Number })
238
+ ], CodeDiffEditor.prototype, "zIndex", void 0);
235
239
  CodeDiffEditor = CodeDiffEditor_1 = __decorate([
236
240
  customElement('og-code-diff')
237
241
  ], CodeDiffEditor);
@@ -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 } 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\t\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\t\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: Code.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\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\t\t\n\t\tCodeDiffEditor.monaco = await MonacoLoader.get();\n\t\tthis.#editor = CodeDiffEditor.monaco.editor.createDiffEditor(this.container, this.getOptions());\n\t\t\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\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\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, {t: offset.top + 1, l: offset.left + 1});\n\t\t\n\t\tconst w = this.clientWidth - 1;\n\t\tconst h = this.clientHeight - 1;\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}"]}
1
+ {"version":3,"file":"codeDiff.js","sourceRoot":"","sources":["../../src/components/codeDiff.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';\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\t\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\t\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\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\t\t\n\t\tCodeDiffEditor.monaco = await MonacoLoader.get();\n\t\tthis.#editor = CodeDiffEditor.monaco.editor.createDiffEditor(this.container, this.getOptions());\n\t\t\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\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\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, {t: offset.top + 1, l: offset.left + 1});\n\t\t\n\t\tconst w = this.clientWidth - 1;\n\t\tconst h = this.clientHeight - 1;\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}"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@omegagrid/code",
3
- "version": "0.7.8",
3
+ "version": "0.7.10",
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.7.8",
32
- "@omegagrid/localize": "^0.7.8",
33
- "@omegagrid/tree": "^0.7.8",
31
+ "@omegagrid/core": "^0.7.10",
32
+ "@omegagrid/localize": "^0.7.10",
33
+ "@omegagrid/tree": "^0.7.10",
34
34
  "lit": "^3.1.1",
35
35
  "monaco-editor": "0.47.0",
36
36
  "ts-debounce": "^4.0.0",