algraf-editor 0.67.0 → 0.68.1

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/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # algraf-editor
2
2
 
3
- Reusable Monaco and React editor integration for Algraf `0.67.x` browser hosts.
3
+ Reusable Monaco and React editor integration for Algraf `0.68.x` browser hosts.
4
4
 
5
5
  The package owns editor wiring only: language registration, TextMate grammar
6
6
  setup, the default light theme, marker conversion, Monaco providers, structural
@@ -16,10 +16,22 @@ cross-repo development:
16
16
  ```ts
17
17
  import { AlgrafEditor } from "algraf-editor";
18
18
  import { loadAlgrafRuntime } from "algraf-wasm";
19
+ import EditorWorker from "monaco-editor/esm/vs/editor/editor.worker?worker";
20
+ import onigasmWasmUrl from "onigasm/lib/onigasm.wasm?url";
19
21
 
20
22
  const runtime = await loadAlgrafRuntime({ wasmUrl: "/wasm/algraf.wasm" });
23
+
24
+ const setupOptions = {
25
+ createEditorWorker: () => new EditorWorker(),
26
+ onigasmWasmUrl,
27
+ };
21
28
  ```
22
29
 
30
+ The editor package keeps Vite-specific `?worker` and `?url` imports out of its
31
+ published `dist/` entrypoints. Vite hosts should import those assets in the app
32
+ and pass them through `setupOptions`; other bundlers can provide equivalent
33
+ worker factories and asset URLs.
34
+
23
35
  Use packed mode before publishing by running `npm pack --dry-run` in
24
36
  `packages/wasm` and `editors/monaco`, then inspecting the file lists for
25
37
  `dist/`, declarations, README, package metadata, and editor assets.
package/dist/index.cjs CHANGED
@@ -49,11 +49,9 @@ var import_react = __toESM(require("react"), 1);
49
49
  var monaco2 = __toESM(require("monaco-editor/esm/vs/editor/editor.api"), 1);
50
50
  var import_editor_main = require("monaco-editor/min/vs/editor/editor.main.css");
51
51
  var import_hoverContribution = require("monaco-editor/esm/vs/editor/contrib/hover/browser/hoverContribution");
52
- var import_editor = __toESM(require("monaco-editor/esm/vs/editor/editor.worker?worker"), 1);
53
52
  var import_monaco_editor_textmate = require("monaco-editor-textmate");
54
53
  var import_monaco_textmate = require("monaco-textmate");
55
54
  var import_onigasm = require("onigasm");
56
- var import_onigasm2 = __toESM(require("onigasm/lib/onigasm.wasm?url"), 1);
57
55
 
58
56
  // assets/algraf.tmLanguage.json
59
57
  var algraf_tmLanguage_default = {
@@ -986,11 +984,11 @@ function registerAlgrafLanguage(options = {}) {
986
984
  }
987
985
  async function setupAlgrafMonacoOnce(options) {
988
986
  if (options.configureWorker !== false) {
989
- configureMonacoWorker();
987
+ configureMonacoWorker(options);
990
988
  }
991
989
  registerAlgrafLanguage(options);
992
990
  defineAlgrafTheme(options.themeName ?? ALGRAF_THEME_NAME, options.theme ?? defaultAlgrafTheme());
993
- await loadOnigasmOnce(options.onigasmWasmUrl ?? import_onigasm2.default);
991
+ await loadOnigasmOnce(resolveOnigasmWasmUrl(options));
994
992
  const registry = new import_monaco_textmate.Registry({
995
993
  getGrammarDefinition: async () => ({
996
994
  format: "json",
@@ -1003,11 +1001,27 @@ async function setupAlgrafMonacoOnce(options) {
1003
1001
  /* @__PURE__ */ new Map([[options.languageId ?? ALGRAF_LANGUAGE_ID, options.scopeName ?? ALGRAF_SCOPE_NAME]])
1004
1002
  );
1005
1003
  }
1006
- function configureMonacoWorker() {
1004
+ function configureMonacoWorker(options) {
1007
1005
  const target = globalThis;
1008
- target.MonacoEnvironment ?? (target.MonacoEnvironment = {
1009
- getWorker: () => new import_editor.default()
1010
- });
1006
+ if (target.MonacoEnvironment?.getWorker) {
1007
+ return;
1008
+ }
1009
+ const createEditorWorker = options.createEditorWorker;
1010
+ if (!createEditorWorker) {
1011
+ throw new Error(
1012
+ "algraf-editor requires setupAlgrafMonaco({ createEditorWorker }) unless configureWorker is false."
1013
+ );
1014
+ }
1015
+ target.MonacoEnvironment = {
1016
+ ...target.MonacoEnvironment,
1017
+ getWorker: () => createEditorWorker()
1018
+ };
1019
+ }
1020
+ function resolveOnigasmWasmUrl(options) {
1021
+ if (options.onigasmWasmUrl) {
1022
+ return options.onigasmWasmUrl;
1023
+ }
1024
+ throw new Error("algraf-editor requires setupAlgrafMonaco({ onigasmWasmUrl }) for TextMate grammar loading.");
1011
1025
  }
1012
1026
  function loadOnigasmOnce(url) {
1013
1027
  onigasmPromise ?? (onigasmPromise = (0, import_onigasm.loadWASM)(url).catch((error) => {
package/dist/index.d.cts CHANGED
@@ -122,6 +122,7 @@ interface SetupAlgrafMonacoOptions {
122
122
  grammar?: unknown;
123
123
  languageConfiguration?: monaco.languages.LanguageConfiguration;
124
124
  onigasmWasmUrl?: string;
125
+ createEditorWorker?: () => Worker | Promise<Worker>;
125
126
  configureWorker?: boolean;
126
127
  }
127
128
  declare function AlgrafEditor({ value, files, diagnostics, runtime, onChange, modelUri, languageId, themeName, theme, className, editorClassName, options, setupOptions, }: AlgrafEditorProps): React.ReactElement;
package/dist/index.d.ts CHANGED
@@ -122,6 +122,7 @@ interface SetupAlgrafMonacoOptions {
122
122
  grammar?: unknown;
123
123
  languageConfiguration?: monaco.languages.LanguageConfiguration;
124
124
  onigasmWasmUrl?: string;
125
+ createEditorWorker?: () => Worker | Promise<Worker>;
125
126
  configureWorker?: boolean;
126
127
  }
127
128
  declare function AlgrafEditor({ value, files, diagnostics, runtime, onChange, modelUri, languageId, themeName, theme, className, editorClassName, options, setupOptions, }: AlgrafEditorProps): React.ReactElement;
package/dist/index.mjs CHANGED
@@ -3,11 +3,9 @@ import React from "react";
3
3
  import * as monaco2 from "monaco-editor/esm/vs/editor/editor.api";
4
4
  import "monaco-editor/min/vs/editor/editor.main.css";
5
5
  import "monaco-editor/esm/vs/editor/contrib/hover/browser/hoverContribution";
6
- import EditorWorker from "monaco-editor/esm/vs/editor/editor.worker?worker";
7
6
  import { wireTmGrammars } from "monaco-editor-textmate";
8
7
  import { Registry } from "monaco-textmate";
9
8
  import { loadWASM as loadOnigasm } from "onigasm";
10
- import onigasmWasmUrl from "onigasm/lib/onigasm.wasm?url";
11
9
 
12
10
  // assets/algraf.tmLanguage.json
13
11
  var algraf_tmLanguage_default = {
@@ -940,11 +938,11 @@ function registerAlgrafLanguage(options = {}) {
940
938
  }
941
939
  async function setupAlgrafMonacoOnce(options) {
942
940
  if (options.configureWorker !== false) {
943
- configureMonacoWorker();
941
+ configureMonacoWorker(options);
944
942
  }
945
943
  registerAlgrafLanguage(options);
946
944
  defineAlgrafTheme(options.themeName ?? ALGRAF_THEME_NAME, options.theme ?? defaultAlgrafTheme());
947
- await loadOnigasmOnce(options.onigasmWasmUrl ?? onigasmWasmUrl);
945
+ await loadOnigasmOnce(resolveOnigasmWasmUrl(options));
948
946
  const registry = new Registry({
949
947
  getGrammarDefinition: async () => ({
950
948
  format: "json",
@@ -957,11 +955,27 @@ async function setupAlgrafMonacoOnce(options) {
957
955
  /* @__PURE__ */ new Map([[options.languageId ?? ALGRAF_LANGUAGE_ID, options.scopeName ?? ALGRAF_SCOPE_NAME]])
958
956
  );
959
957
  }
960
- function configureMonacoWorker() {
958
+ function configureMonacoWorker(options) {
961
959
  const target = globalThis;
962
- target.MonacoEnvironment ?? (target.MonacoEnvironment = {
963
- getWorker: () => new EditorWorker()
964
- });
960
+ if (target.MonacoEnvironment?.getWorker) {
961
+ return;
962
+ }
963
+ const createEditorWorker = options.createEditorWorker;
964
+ if (!createEditorWorker) {
965
+ throw new Error(
966
+ "algraf-editor requires setupAlgrafMonaco({ createEditorWorker }) unless configureWorker is false."
967
+ );
968
+ }
969
+ target.MonacoEnvironment = {
970
+ ...target.MonacoEnvironment,
971
+ getWorker: () => createEditorWorker()
972
+ };
973
+ }
974
+ function resolveOnigasmWasmUrl(options) {
975
+ if (options.onigasmWasmUrl) {
976
+ return options.onigasmWasmUrl;
977
+ }
978
+ throw new Error("algraf-editor requires setupAlgrafMonaco({ onigasmWasmUrl }) for TextMate grammar loading.");
965
979
  }
966
980
  function loadOnigasmOnce(url) {
967
981
  onigasmPromise ?? (onigasmPromise = loadOnigasm(url).catch((error) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "algraf-editor",
3
- "version": "0.67.0",
3
+ "version": "0.68.1",
4
4
  "description": "Monaco and React editor integration for Algraf browser hosts.",
5
5
  "license": "MIT OR Apache-2.0",
6
6
  "type": "module",
@@ -34,7 +34,7 @@
34
34
  "pack:local": "mkdir -p ../../artifacts && npm pack --pack-destination ../../artifacts"
35
35
  },
36
36
  "peerDependencies": {
37
- "algraf-wasm": "0.67.x",
37
+ "algraf-wasm": "0.68.x",
38
38
  "monaco-editor": "^0.55.1",
39
39
  "monaco-editor-textmate": "^4.0.0",
40
40
  "monaco-textmate": "^3.0.1",