@actualwave/react-native-codeditor 1.1.0 → 1.2.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.
Files changed (63) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.md +67 -7
  3. package/SKILL.md +504 -0
  4. package/THIRD_PARTY_NOTICES +120 -0
  5. package/app.plugin.js +1 -1
  6. package/lib/module/CodeEditor.js +69 -2
  7. package/lib/typescript/src/CodeEditor.d.ts +20 -2
  8. package/lib/typescript/src/EditorAPI.d.ts +42 -1
  9. package/lib/typescript/src/WebViewAPI.d.ts +4 -1
  10. package/lib/typescript/src/index.d.ts +1 -1
  11. package/package.json +12 -4
  12. package/src/assets/codemirror/@actualwave_codemirror-lang-embed-core.js +39 -0
  13. package/src/assets/codemirror/@actualwave_codemirror-lang-embed-css.js +19 -0
  14. package/src/assets/codemirror/@actualwave_codemirror-lang-embed-glsl.js +1 -0
  15. package/src/assets/codemirror/@actualwave_codemirror-lang-embed-graphql.js +50 -0
  16. package/src/assets/codemirror/@actualwave_codemirror-lang-embed-icu-messageformat.js +1 -0
  17. package/src/assets/codemirror/@actualwave_codemirror-lang-embed-react-native.js +6 -0
  18. package/src/assets/codemirror/@actualwave_codemirror-lang-embed-sksl.js +7 -0
  19. package/src/assets/codemirror/@actualwave_codemirror-lang-embed-sql.js +5 -0
  20. package/src/assets/codemirror/@actualwave_codemirror-lang-embed-tailwind.js +63 -0
  21. package/src/assets/codemirror/@actualwave_codemirror-lang-glsl.js +20 -0
  22. package/src/assets/codemirror/@actualwave_codemirror-lang-icu-messageformat.js +11 -0
  23. package/src/assets/codemirror/@actualwave_codemirror-lang-js-completion.js +72 -0
  24. package/src/assets/codemirror/@actualwave_codemirror-lang-react-native.js +71 -0
  25. package/src/assets/codemirror/@actualwave_codemirror-lang-sksl.js +7 -2
  26. package/src/assets/codemirror/@codemirror_autocomplete.js +9 -9
  27. package/src/assets/codemirror/@codemirror_commands.js +86 -86
  28. package/src/assets/codemirror/@codemirror_lang-css.js +2 -2
  29. package/src/assets/codemirror/@codemirror_lang-go.js +1 -1
  30. package/src/assets/codemirror/@codemirror_lang-html.js +1 -1
  31. package/src/assets/codemirror/@codemirror_lang-javascript.js +4 -4
  32. package/src/assets/codemirror/@codemirror_lang-jinja.js +1 -1
  33. package/src/assets/codemirror/@codemirror_lang-json.js +1 -1
  34. package/src/assets/codemirror/@codemirror_lang-less.js +1 -1
  35. package/src/assets/codemirror/@codemirror_lang-liquid.js +1 -1
  36. package/src/assets/codemirror/@codemirror_lang-markdown.js +2 -2
  37. package/src/assets/codemirror/@codemirror_lang-python.js +1 -1
  38. package/src/assets/codemirror/@codemirror_lang-sql.js +4 -4
  39. package/src/assets/codemirror/@codemirror_lang-xml.js +1 -1
  40. package/src/assets/codemirror/@codemirror_language.js +11 -11
  41. package/src/assets/codemirror/@codemirror_legacy-modes_mode_clike.js +1 -1
  42. package/src/assets/codemirror/@codemirror_legacy-modes_mode_mathematica.js +1 -1
  43. package/src/assets/codemirror/@codemirror_legacy-modes_mode_oz.js +1 -1
  44. package/src/assets/codemirror/@codemirror_legacy-modes_mode_verilog.js +1 -1
  45. package/src/assets/codemirror/@codemirror_lint.js +5 -5
  46. package/src/assets/codemirror/@codemirror_merge.js +4 -4
  47. package/src/assets/codemirror/@codemirror_search.js +8 -8
  48. package/src/assets/codemirror/@codemirror_state.js +1 -1
  49. package/src/assets/codemirror/@codemirror_theme-one-dark.js +3 -3
  50. package/src/assets/codemirror/@codemirror_view.js +6 -6
  51. package/src/assets/codemirror/@lezer_common.js +2 -2
  52. package/src/assets/codemirror/@lezer_css.js +1 -1
  53. package/src/assets/codemirror/@lezer_javascript.js +1 -1
  54. package/src/assets/codemirror/@lezer_lr.js +1 -1
  55. package/src/assets/codemirror/@lezer_markdown.js +4 -4
  56. package/src/assets/codemirror/@lezer_sass.js +1 -1
  57. package/src/assets/codemirror/_core.js +129 -129
  58. package/src/assets/codemirror-editor.umd.js +130 -17
  59. package/src/assets/editor.html +37 -2
  60. package/lib/typescript/app.plugin.d.ts +0 -3
  61. package/lib/typescript/babel.config.d.ts +0 -10
  62. package/lib/typescript/react-native.config.d.ts +0 -2
  63. package/lib/typescript/scripts/copy-assets.d.ts +0 -2
@@ -1,11 +1,11 @@
1
1
  // Generated by scripts/copy-assets.js — do not edit directly.
2
2
  // Source: node_modules/@actualwave/codemirror-package/dist/
3
3
  // Plain IIFE bundle (no import/export) for loading via <script> in Android WebView.
4
- // Exposes: window.CodeMirrorEditor = { configure, createEditor, requireAsyncModule, registerExtension }
4
+ // Exposes: window.CodeMirrorEditor = { configure, createEditor, requireAsyncModule, registerExtension, registerLanguage, registerTaggedTemplate, registerSupportExtension }
5
5
  (function (global) {
6
6
  'use strict';
7
7
  // Injected during build with the full module map: { [packageName]: { file, core?, bundle? } }
8
- const modules = {"crelt":{"file":"crelt","core":true,"bundle":"_core"},"style-mod":{"file":"style-mod","core":true,"bundle":"_core"},"w3c-keyname":{"file":"w3c-keyname","core":true,"bundle":"_core"},"@marijn/find-cluster-break":{"file":"@marijn_find-cluster-break","core":true,"bundle":"_core"},"@lezer/common":{"file":"@lezer_common","core":true,"bundle":"_core"},"@lezer/highlight":{"file":"@lezer_highlight","core":true,"bundle":"_core"},"@lezer/lr":{"file":"@lezer_lr","core":true,"bundle":"_core"},"@codemirror/state":{"file":"@codemirror_state","core":true,"bundle":"_core"},"@codemirror/view":{"file":"@codemirror_view","core":true,"bundle":"_core"},"@codemirror/language":{"file":"@codemirror_language","core":true,"bundle":"_core"},"@codemirror/commands":{"file":"@codemirror_commands","core":true,"bundle":"_core"},"@codemirror/autocomplete":{"file":"@codemirror_autocomplete","core":true,"bundle":"_core"},"@codemirror/search":{"file":"@codemirror_search","core":true,"bundle":"_core"},"@codemirror/lint":{"file":"@codemirror_lint","core":true,"bundle":"_core"},"codemirror":{"file":"codemirror"},"@codemirror/collab":{"file":"@codemirror_collab"},"@codemirror/language-data":{"file":"@codemirror_language-data"},"@codemirror/merge":{"file":"@codemirror_merge"},"@codemirror/theme-one-dark":{"file":"@codemirror_theme-one-dark"},"@uiw/codemirror-themes":{"file":"@uiw_codemirror-themes"},"@uiw/codemirror-theme-androidstudio":{"file":"@uiw_codemirror-theme-androidstudio"},"@uiw/codemirror-theme-andromeda":{"file":"@uiw_codemirror-theme-andromeda"},"@uiw/codemirror-theme-atomone":{"file":"@uiw_codemirror-theme-atomone"},"@uiw/codemirror-theme-aura":{"file":"@uiw_codemirror-theme-aura"},"@uiw/codemirror-theme-basic":{"file":"@uiw_codemirror-theme-basic"},"@uiw/codemirror-theme-bbedit":{"file":"@uiw_codemirror-theme-bbedit"},"@uiw/codemirror-theme-copilot":{"file":"@uiw_codemirror-theme-copilot"},"@uiw/codemirror-theme-darcula":{"file":"@uiw_codemirror-theme-darcula"},"@uiw/codemirror-theme-dracula":{"file":"@uiw_codemirror-theme-dracula"},"@uiw/codemirror-theme-duotone":{"file":"@uiw_codemirror-theme-duotone"},"@uiw/codemirror-theme-eclipse":{"file":"@uiw_codemirror-theme-eclipse"},"@uiw/codemirror-theme-github":{"file":"@uiw_codemirror-theme-github"},"@uiw/codemirror-theme-material":{"file":"@uiw_codemirror-theme-material"},"@uiw/codemirror-theme-monokai":{"file":"@uiw_codemirror-theme-monokai"},"@uiw/codemirror-theme-nord":{"file":"@uiw_codemirror-theme-nord"},"@uiw/codemirror-theme-okaidia":{"file":"@uiw_codemirror-theme-okaidia"},"@uiw/codemirror-theme-solarized":{"file":"@uiw_codemirror-theme-solarized"},"@uiw/codemirror-theme-sublime":{"file":"@uiw_codemirror-theme-sublime"},"@uiw/codemirror-theme-tokyo-night":{"file":"@uiw_codemirror-theme-tokyo-night"},"@uiw/codemirror-theme-vscode":{"file":"@uiw_codemirror-theme-vscode"},"@uiw/codemirror-theme-xcode":{"file":"@uiw_codemirror-theme-xcode"},"@lezer/css":{"file":"@lezer_css"},"@lezer/go":{"file":"@lezer_go"},"@lezer/html":{"file":"@lezer_html"},"@lezer/java":{"file":"@lezer_java"},"@lezer/javascript":{"file":"@lezer_javascript"},"@lezer/json":{"file":"@lezer_json"},"@lezer/cpp":{"file":"@lezer_cpp"},"@lezer/lezer":{"file":"@lezer_lezer"},"@lezer/markdown":{"file":"@lezer_markdown"},"@lezer/php":{"file":"@lezer_php"},"@lezer/python":{"file":"@lezer_python"},"@lezer/rust":{"file":"@lezer_rust"},"@lezer/sass":{"file":"@lezer_sass"},"@lezer/xml":{"file":"@lezer_xml"},"@lezer/yaml":{"file":"@lezer_yaml"},"@codemirror/lang-angular":{"file":"@codemirror_lang-angular"},"@codemirror/lang-cpp":{"file":"@codemirror_lang-cpp"},"@codemirror/lang-css":{"file":"@codemirror_lang-css"},"@codemirror/lang-go":{"file":"@codemirror_lang-go"},"@codemirror/lang-html":{"file":"@codemirror_lang-html"},"@codemirror/lang-java":{"file":"@codemirror_lang-java"},"@codemirror/lang-javascript":{"file":"@codemirror_lang-javascript"},"@codemirror/lang-jinja":{"file":"@codemirror_lang-jinja"},"@codemirror/lang-json":{"file":"@codemirror_lang-json"},"@codemirror/lang-less":{"file":"@codemirror_lang-less"},"@codemirror/lang-lezer":{"file":"@codemirror_lang-lezer"},"@codemirror/lang-liquid":{"file":"@codemirror_lang-liquid"},"@codemirror/lang-markdown":{"file":"@codemirror_lang-markdown"},"@codemirror/lang-php":{"file":"@codemirror_lang-php"},"@codemirror/lang-python":{"file":"@codemirror_lang-python"},"@codemirror/lang-rust":{"file":"@codemirror_lang-rust"},"@codemirror/lang-sass":{"file":"@codemirror_lang-sass"},"@codemirror/lang-sql":{"file":"@codemirror_lang-sql"},"@codemirror/lang-vue":{"file":"@codemirror_lang-vue"},"@codemirror/lang-wast":{"file":"@codemirror_lang-wast"},"@codemirror/lang-xml":{"file":"@codemirror_lang-xml"},"@codemirror/lang-yaml":{"file":"@codemirror_lang-yaml"},"@actualwave/codemirror-lang-sksl":{"file":"@actualwave_codemirror-lang-sksl"},"@codemirror/legacy-modes/mode/apl":{"file":"@codemirror_legacy-modes_mode_apl"},"@codemirror/legacy-modes/mode/asciiarmor":{"file":"@codemirror_legacy-modes_mode_asciiarmor"},"@codemirror/legacy-modes/mode/asn1":{"file":"@codemirror_legacy-modes_mode_asn1"},"@codemirror/legacy-modes/mode/asterisk":{"file":"@codemirror_legacy-modes_mode_asterisk"},"@codemirror/legacy-modes/mode/brainfuck":{"file":"@codemirror_legacy-modes_mode_brainfuck"},"@codemirror/legacy-modes/mode/clike":{"file":"@codemirror_legacy-modes_mode_clike"},"@codemirror/legacy-modes/mode/clojure":{"file":"@codemirror_legacy-modes_mode_clojure"},"@codemirror/legacy-modes/mode/cmake":{"file":"@codemirror_legacy-modes_mode_cmake"},"@codemirror/legacy-modes/mode/cobol":{"file":"@codemirror_legacy-modes_mode_cobol"},"@codemirror/legacy-modes/mode/coffeescript":{"file":"@codemirror_legacy-modes_mode_coffeescript"},"@codemirror/legacy-modes/mode/commonlisp":{"file":"@codemirror_legacy-modes_mode_commonlisp"},"@codemirror/legacy-modes/mode/crystal":{"file":"@codemirror_legacy-modes_mode_crystal"},"@codemirror/legacy-modes/mode/css":{"file":"@codemirror_legacy-modes_mode_css"},"@codemirror/legacy-modes/mode/cypher":{"file":"@codemirror_legacy-modes_mode_cypher"},"@codemirror/legacy-modes/mode/d":{"file":"@codemirror_legacy-modes_mode_d"},"@codemirror/legacy-modes/mode/diff":{"file":"@codemirror_legacy-modes_mode_diff"},"@codemirror/legacy-modes/mode/dockerfile":{"file":"@codemirror_legacy-modes_mode_dockerfile"},"@codemirror/legacy-modes/mode/dtd":{"file":"@codemirror_legacy-modes_mode_dtd"},"@codemirror/legacy-modes/mode/dylan":{"file":"@codemirror_legacy-modes_mode_dylan"},"@codemirror/legacy-modes/mode/ebnf":{"file":"@codemirror_legacy-modes_mode_ebnf"},"@codemirror/legacy-modes/mode/ecl":{"file":"@codemirror_legacy-modes_mode_ecl"},"@codemirror/legacy-modes/mode/eiffel":{"file":"@codemirror_legacy-modes_mode_eiffel"},"@codemirror/legacy-modes/mode/elm":{"file":"@codemirror_legacy-modes_mode_elm"},"@codemirror/legacy-modes/mode/erlang":{"file":"@codemirror_legacy-modes_mode_erlang"},"@codemirror/legacy-modes/mode/factor":{"file":"@codemirror_legacy-modes_mode_factor"},"@codemirror/legacy-modes/mode/fcl":{"file":"@codemirror_legacy-modes_mode_fcl"},"@codemirror/legacy-modes/mode/forth":{"file":"@codemirror_legacy-modes_mode_forth"},"@codemirror/legacy-modes/mode/fortran":{"file":"@codemirror_legacy-modes_mode_fortran"},"@codemirror/legacy-modes/mode/gas":{"file":"@codemirror_legacy-modes_mode_gas"},"@codemirror/legacy-modes/mode/gherkin":{"file":"@codemirror_legacy-modes_mode_gherkin"},"@codemirror/legacy-modes/mode/go":{"file":"@codemirror_legacy-modes_mode_go"},"@codemirror/legacy-modes/mode/groovy":{"file":"@codemirror_legacy-modes_mode_groovy"},"@codemirror/legacy-modes/mode/haskell":{"file":"@codemirror_legacy-modes_mode_haskell"},"@codemirror/legacy-modes/mode/haxe":{"file":"@codemirror_legacy-modes_mode_haxe"},"@codemirror/legacy-modes/mode/http":{"file":"@codemirror_legacy-modes_mode_http"},"@codemirror/legacy-modes/mode/idl":{"file":"@codemirror_legacy-modes_mode_idl"},"@codemirror/legacy-modes/mode/javascript":{"file":"@codemirror_legacy-modes_mode_javascript"},"@codemirror/legacy-modes/mode/jinja2":{"file":"@codemirror_legacy-modes_mode_jinja2"},"@codemirror/legacy-modes/mode/julia":{"file":"@codemirror_legacy-modes_mode_julia"},"@codemirror/legacy-modes/mode/livescript":{"file":"@codemirror_legacy-modes_mode_livescript"},"@codemirror/legacy-modes/mode/lua":{"file":"@codemirror_legacy-modes_mode_lua"},"@codemirror/legacy-modes/mode/mathematica":{"file":"@codemirror_legacy-modes_mode_mathematica"},"@codemirror/legacy-modes/mode/mbox":{"file":"@codemirror_legacy-modes_mode_mbox"},"@codemirror/legacy-modes/mode/mirc":{"file":"@codemirror_legacy-modes_mode_mirc"},"@codemirror/legacy-modes/mode/mllike":{"file":"@codemirror_legacy-modes_mode_mllike"},"@codemirror/legacy-modes/mode/modelica":{"file":"@codemirror_legacy-modes_mode_modelica"},"@codemirror/legacy-modes/mode/mscgen":{"file":"@codemirror_legacy-modes_mode_mscgen"},"@codemirror/legacy-modes/mode/mumps":{"file":"@codemirror_legacy-modes_mode_mumps"},"@codemirror/legacy-modes/mode/nginx":{"file":"@codemirror_legacy-modes_mode_nginx"},"@codemirror/legacy-modes/mode/nsis":{"file":"@codemirror_legacy-modes_mode_nsis"},"@codemirror/legacy-modes/mode/ntriples":{"file":"@codemirror_legacy-modes_mode_ntriples"},"@codemirror/legacy-modes/mode/octave":{"file":"@codemirror_legacy-modes_mode_octave"},"@codemirror/legacy-modes/mode/oz":{"file":"@codemirror_legacy-modes_mode_oz"},"@codemirror/legacy-modes/mode/pascal":{"file":"@codemirror_legacy-modes_mode_pascal"},"@codemirror/legacy-modes/mode/pegjs":{"file":"@codemirror_legacy-modes_mode_pegjs"},"@codemirror/legacy-modes/mode/perl":{"file":"@codemirror_legacy-modes_mode_perl"},"@codemirror/legacy-modes/mode/pig":{"file":"@codemirror_legacy-modes_mode_pig"},"@codemirror/legacy-modes/mode/powershell":{"file":"@codemirror_legacy-modes_mode_powershell"},"@codemirror/legacy-modes/mode/properties":{"file":"@codemirror_legacy-modes_mode_properties"},"@codemirror/legacy-modes/mode/protobuf":{"file":"@codemirror_legacy-modes_mode_protobuf"},"@codemirror/legacy-modes/mode/pug":{"file":"@codemirror_legacy-modes_mode_pug"},"@codemirror/legacy-modes/mode/puppet":{"file":"@codemirror_legacy-modes_mode_puppet"},"@codemirror/legacy-modes/mode/python":{"file":"@codemirror_legacy-modes_mode_python"},"@codemirror/legacy-modes/mode/q":{"file":"@codemirror_legacy-modes_mode_q"},"@codemirror/legacy-modes/mode/r":{"file":"@codemirror_legacy-modes_mode_r"},"@codemirror/legacy-modes/mode/rpm":{"file":"@codemirror_legacy-modes_mode_rpm"},"@codemirror/legacy-modes/mode/ruby":{"file":"@codemirror_legacy-modes_mode_ruby"},"@codemirror/legacy-modes/mode/rust":{"file":"@codemirror_legacy-modes_mode_rust"},"@codemirror/legacy-modes/mode/sas":{"file":"@codemirror_legacy-modes_mode_sas"},"@codemirror/legacy-modes/mode/sass":{"file":"@codemirror_legacy-modes_mode_sass"},"@codemirror/legacy-modes/mode/scheme":{"file":"@codemirror_legacy-modes_mode_scheme"},"@codemirror/legacy-modes/mode/shell":{"file":"@codemirror_legacy-modes_mode_shell"},"@codemirror/legacy-modes/mode/sieve":{"file":"@codemirror_legacy-modes_mode_sieve"},"@codemirror/legacy-modes/mode/simple-mode":{"file":"@codemirror_legacy-modes_mode_simple-mode"},"@codemirror/legacy-modes/mode/smalltalk":{"file":"@codemirror_legacy-modes_mode_smalltalk"},"@codemirror/legacy-modes/mode/solr":{"file":"@codemirror_legacy-modes_mode_solr"},"@codemirror/legacy-modes/mode/sparql":{"file":"@codemirror_legacy-modes_mode_sparql"},"@codemirror/legacy-modes/mode/spreadsheet":{"file":"@codemirror_legacy-modes_mode_spreadsheet"},"@codemirror/legacy-modes/mode/sql":{"file":"@codemirror_legacy-modes_mode_sql"},"@codemirror/legacy-modes/mode/stex":{"file":"@codemirror_legacy-modes_mode_stex"},"@codemirror/legacy-modes/mode/stylus":{"file":"@codemirror_legacy-modes_mode_stylus"},"@codemirror/legacy-modes/mode/swift":{"file":"@codemirror_legacy-modes_mode_swift"},"@codemirror/legacy-modes/mode/tcl":{"file":"@codemirror_legacy-modes_mode_tcl"},"@codemirror/legacy-modes/mode/textile":{"file":"@codemirror_legacy-modes_mode_textile"},"@codemirror/legacy-modes/mode/tiddlywiki":{"file":"@codemirror_legacy-modes_mode_tiddlywiki"},"@codemirror/legacy-modes/mode/tiki":{"file":"@codemirror_legacy-modes_mode_tiki"},"@codemirror/legacy-modes/mode/toml":{"file":"@codemirror_legacy-modes_mode_toml"},"@codemirror/legacy-modes/mode/troff":{"file":"@codemirror_legacy-modes_mode_troff"},"@codemirror/legacy-modes/mode/ttcn-cfg":{"file":"@codemirror_legacy-modes_mode_ttcn-cfg"},"@codemirror/legacy-modes/mode/ttcn":{"file":"@codemirror_legacy-modes_mode_ttcn"},"@codemirror/legacy-modes/mode/turtle":{"file":"@codemirror_legacy-modes_mode_turtle"},"@codemirror/legacy-modes/mode/vb":{"file":"@codemirror_legacy-modes_mode_vb"},"@codemirror/legacy-modes/mode/vbscript":{"file":"@codemirror_legacy-modes_mode_vbscript"},"@codemirror/legacy-modes/mode/velocity":{"file":"@codemirror_legacy-modes_mode_velocity"},"@codemirror/legacy-modes/mode/verilog":{"file":"@codemirror_legacy-modes_mode_verilog"},"@codemirror/legacy-modes/mode/vhdl":{"file":"@codemirror_legacy-modes_mode_vhdl"},"@codemirror/legacy-modes/mode/wast":{"file":"@codemirror_legacy-modes_mode_wast"},"@codemirror/legacy-modes/mode/webidl":{"file":"@codemirror_legacy-modes_mode_webidl"},"@codemirror/legacy-modes/mode/xml":{"file":"@codemirror_legacy-modes_mode_xml"},"@codemirror/legacy-modes/mode/xquery":{"file":"@codemirror_legacy-modes_mode_xquery"},"@codemirror/legacy-modes/mode/yacas":{"file":"@codemirror_legacy-modes_mode_yacas"},"@codemirror/legacy-modes/mode/yaml":{"file":"@codemirror_legacy-modes_mode_yaml"},"@codemirror/legacy-modes/mode/z80":{"file":"@codemirror_legacy-modes_mode_z80"},"@babel/runtime/helpers/interopRequireDefault":{"file":"@babel_runtime_helpers_interopRequireDefault"},"@babel/runtime/helpers/objectSpread2":{"file":"@babel_runtime_helpers_objectSpread2"},"@babel/runtime/helpers/toConsumableArray":{"file":"@babel_runtime_helpers_toConsumableArray"}};
8
+ const modules = {"crelt":{"file":"crelt","core":true,"bundle":"_core"},"style-mod":{"file":"style-mod","core":true,"bundle":"_core"},"w3c-keyname":{"file":"w3c-keyname","core":true,"bundle":"_core"},"@marijn/find-cluster-break":{"file":"@marijn_find-cluster-break","core":true,"bundle":"_core"},"@lezer/common":{"file":"@lezer_common","core":true,"bundle":"_core"},"@lezer/highlight":{"file":"@lezer_highlight","core":true,"bundle":"_core"},"@lezer/lr":{"file":"@lezer_lr","core":true,"bundle":"_core"},"@codemirror/state":{"file":"@codemirror_state","core":true,"bundle":"_core"},"@codemirror/view":{"file":"@codemirror_view","core":true,"bundle":"_core"},"@codemirror/language":{"file":"@codemirror_language","core":true,"bundle":"_core"},"@codemirror/commands":{"file":"@codemirror_commands","core":true,"bundle":"_core"},"@codemirror/autocomplete":{"file":"@codemirror_autocomplete","core":true,"bundle":"_core"},"@codemirror/search":{"file":"@codemirror_search","core":true,"bundle":"_core"},"@codemirror/lint":{"file":"@codemirror_lint","core":true,"bundle":"_core"},"codemirror":{"file":"codemirror"},"@codemirror/collab":{"file":"@codemirror_collab"},"@codemirror/language-data":{"file":"@codemirror_language-data"},"@codemirror/merge":{"file":"@codemirror_merge"},"@codemirror/theme-one-dark":{"file":"@codemirror_theme-one-dark"},"@uiw/codemirror-themes":{"file":"@uiw_codemirror-themes"},"@uiw/codemirror-theme-androidstudio":{"file":"@uiw_codemirror-theme-androidstudio"},"@uiw/codemirror-theme-andromeda":{"file":"@uiw_codemirror-theme-andromeda"},"@uiw/codemirror-theme-atomone":{"file":"@uiw_codemirror-theme-atomone"},"@uiw/codemirror-theme-aura":{"file":"@uiw_codemirror-theme-aura"},"@uiw/codemirror-theme-basic":{"file":"@uiw_codemirror-theme-basic"},"@uiw/codemirror-theme-bbedit":{"file":"@uiw_codemirror-theme-bbedit"},"@uiw/codemirror-theme-copilot":{"file":"@uiw_codemirror-theme-copilot"},"@uiw/codemirror-theme-darcula":{"file":"@uiw_codemirror-theme-darcula"},"@uiw/codemirror-theme-dracula":{"file":"@uiw_codemirror-theme-dracula"},"@uiw/codemirror-theme-duotone":{"file":"@uiw_codemirror-theme-duotone"},"@uiw/codemirror-theme-eclipse":{"file":"@uiw_codemirror-theme-eclipse"},"@uiw/codemirror-theme-github":{"file":"@uiw_codemirror-theme-github"},"@uiw/codemirror-theme-material":{"file":"@uiw_codemirror-theme-material"},"@uiw/codemirror-theme-monokai":{"file":"@uiw_codemirror-theme-monokai"},"@uiw/codemirror-theme-nord":{"file":"@uiw_codemirror-theme-nord"},"@uiw/codemirror-theme-okaidia":{"file":"@uiw_codemirror-theme-okaidia"},"@uiw/codemirror-theme-solarized":{"file":"@uiw_codemirror-theme-solarized"},"@uiw/codemirror-theme-sublime":{"file":"@uiw_codemirror-theme-sublime"},"@uiw/codemirror-theme-tokyo-night":{"file":"@uiw_codemirror-theme-tokyo-night"},"@uiw/codemirror-theme-vscode":{"file":"@uiw_codemirror-theme-vscode"},"@uiw/codemirror-theme-xcode":{"file":"@uiw_codemirror-theme-xcode"},"@lezer/css":{"file":"@lezer_css"},"@lezer/go":{"file":"@lezer_go"},"@lezer/html":{"file":"@lezer_html"},"@lezer/java":{"file":"@lezer_java"},"@lezer/javascript":{"file":"@lezer_javascript"},"@lezer/json":{"file":"@lezer_json"},"@lezer/cpp":{"file":"@lezer_cpp"},"@lezer/lezer":{"file":"@lezer_lezer"},"@lezer/markdown":{"file":"@lezer_markdown"},"@lezer/php":{"file":"@lezer_php"},"@lezer/python":{"file":"@lezer_python"},"@lezer/rust":{"file":"@lezer_rust"},"@lezer/sass":{"file":"@lezer_sass"},"@lezer/xml":{"file":"@lezer_xml"},"@lezer/yaml":{"file":"@lezer_yaml"},"@codemirror/lang-angular":{"file":"@codemirror_lang-angular"},"@codemirror/lang-cpp":{"file":"@codemirror_lang-cpp"},"@codemirror/lang-css":{"file":"@codemirror_lang-css"},"@codemirror/lang-go":{"file":"@codemirror_lang-go"},"@codemirror/lang-html":{"file":"@codemirror_lang-html"},"@codemirror/lang-java":{"file":"@codemirror_lang-java"},"@codemirror/lang-javascript":{"file":"@codemirror_lang-javascript"},"@codemirror/lang-jinja":{"file":"@codemirror_lang-jinja"},"@codemirror/lang-json":{"file":"@codemirror_lang-json"},"@codemirror/lang-less":{"file":"@codemirror_lang-less"},"@codemirror/lang-lezer":{"file":"@codemirror_lang-lezer"},"@codemirror/lang-liquid":{"file":"@codemirror_lang-liquid"},"@codemirror/lang-markdown":{"file":"@codemirror_lang-markdown"},"@codemirror/lang-php":{"file":"@codemirror_lang-php"},"@codemirror/lang-python":{"file":"@codemirror_lang-python"},"@codemirror/lang-rust":{"file":"@codemirror_lang-rust"},"@codemirror/lang-sass":{"file":"@codemirror_lang-sass"},"@codemirror/lang-sql":{"file":"@codemirror_lang-sql"},"@codemirror/lang-vue":{"file":"@codemirror_lang-vue"},"@codemirror/lang-wast":{"file":"@codemirror_lang-wast"},"@codemirror/lang-xml":{"file":"@codemirror_lang-xml"},"@codemirror/lang-yaml":{"file":"@codemirror_lang-yaml"},"@actualwave/codemirror-lang-sksl":{"file":"@actualwave_codemirror-lang-sksl"},"@actualwave/codemirror-lang-glsl":{"file":"@actualwave_codemirror-lang-glsl"},"@actualwave/codemirror-lang-icu-messageformat":{"file":"@actualwave_codemirror-lang-icu-messageformat"},"@actualwave/codemirror-lang-react-native":{"file":"@actualwave_codemirror-lang-react-native"},"@actualwave/codemirror-lang-embed-core":{"file":"@actualwave_codemirror-lang-embed-core"},"@actualwave/codemirror-lang-embed-sql":{"file":"@actualwave_codemirror-lang-embed-sql"},"@actualwave/codemirror-lang-embed-graphql":{"file":"@actualwave_codemirror-lang-embed-graphql"},"@actualwave/codemirror-lang-embed-css":{"file":"@actualwave_codemirror-lang-embed-css"},"@actualwave/codemirror-lang-embed-sksl":{"file":"@actualwave_codemirror-lang-embed-sksl"},"@actualwave/codemirror-lang-embed-glsl":{"file":"@actualwave_codemirror-lang-embed-glsl"},"@actualwave/codemirror-lang-embed-icu-messageformat":{"file":"@actualwave_codemirror-lang-embed-icu-messageformat"},"@actualwave/codemirror-lang-embed-tailwind":{"file":"@actualwave_codemirror-lang-embed-tailwind"},"@actualwave/codemirror-lang-embed-react-native":{"file":"@actualwave_codemirror-lang-embed-react-native"},"@actualwave/codemirror-lang-js-completion":{"file":"@actualwave_codemirror-lang-js-completion"},"@codemirror/legacy-modes/mode/apl":{"file":"@codemirror_legacy-modes_mode_apl"},"@codemirror/legacy-modes/mode/asciiarmor":{"file":"@codemirror_legacy-modes_mode_asciiarmor"},"@codemirror/legacy-modes/mode/asn1":{"file":"@codemirror_legacy-modes_mode_asn1"},"@codemirror/legacy-modes/mode/asterisk":{"file":"@codemirror_legacy-modes_mode_asterisk"},"@codemirror/legacy-modes/mode/brainfuck":{"file":"@codemirror_legacy-modes_mode_brainfuck"},"@codemirror/legacy-modes/mode/clike":{"file":"@codemirror_legacy-modes_mode_clike"},"@codemirror/legacy-modes/mode/clojure":{"file":"@codemirror_legacy-modes_mode_clojure"},"@codemirror/legacy-modes/mode/cmake":{"file":"@codemirror_legacy-modes_mode_cmake"},"@codemirror/legacy-modes/mode/cobol":{"file":"@codemirror_legacy-modes_mode_cobol"},"@codemirror/legacy-modes/mode/coffeescript":{"file":"@codemirror_legacy-modes_mode_coffeescript"},"@codemirror/legacy-modes/mode/commonlisp":{"file":"@codemirror_legacy-modes_mode_commonlisp"},"@codemirror/legacy-modes/mode/crystal":{"file":"@codemirror_legacy-modes_mode_crystal"},"@codemirror/legacy-modes/mode/css":{"file":"@codemirror_legacy-modes_mode_css"},"@codemirror/legacy-modes/mode/cypher":{"file":"@codemirror_legacy-modes_mode_cypher"},"@codemirror/legacy-modes/mode/d":{"file":"@codemirror_legacy-modes_mode_d"},"@codemirror/legacy-modes/mode/diff":{"file":"@codemirror_legacy-modes_mode_diff"},"@codemirror/legacy-modes/mode/dockerfile":{"file":"@codemirror_legacy-modes_mode_dockerfile"},"@codemirror/legacy-modes/mode/dtd":{"file":"@codemirror_legacy-modes_mode_dtd"},"@codemirror/legacy-modes/mode/dylan":{"file":"@codemirror_legacy-modes_mode_dylan"},"@codemirror/legacy-modes/mode/ebnf":{"file":"@codemirror_legacy-modes_mode_ebnf"},"@codemirror/legacy-modes/mode/ecl":{"file":"@codemirror_legacy-modes_mode_ecl"},"@codemirror/legacy-modes/mode/eiffel":{"file":"@codemirror_legacy-modes_mode_eiffel"},"@codemirror/legacy-modes/mode/elm":{"file":"@codemirror_legacy-modes_mode_elm"},"@codemirror/legacy-modes/mode/erlang":{"file":"@codemirror_legacy-modes_mode_erlang"},"@codemirror/legacy-modes/mode/factor":{"file":"@codemirror_legacy-modes_mode_factor"},"@codemirror/legacy-modes/mode/fcl":{"file":"@codemirror_legacy-modes_mode_fcl"},"@codemirror/legacy-modes/mode/forth":{"file":"@codemirror_legacy-modes_mode_forth"},"@codemirror/legacy-modes/mode/fortran":{"file":"@codemirror_legacy-modes_mode_fortran"},"@codemirror/legacy-modes/mode/gas":{"file":"@codemirror_legacy-modes_mode_gas"},"@codemirror/legacy-modes/mode/gherkin":{"file":"@codemirror_legacy-modes_mode_gherkin"},"@codemirror/legacy-modes/mode/go":{"file":"@codemirror_legacy-modes_mode_go"},"@codemirror/legacy-modes/mode/groovy":{"file":"@codemirror_legacy-modes_mode_groovy"},"@codemirror/legacy-modes/mode/haskell":{"file":"@codemirror_legacy-modes_mode_haskell"},"@codemirror/legacy-modes/mode/haxe":{"file":"@codemirror_legacy-modes_mode_haxe"},"@codemirror/legacy-modes/mode/http":{"file":"@codemirror_legacy-modes_mode_http"},"@codemirror/legacy-modes/mode/idl":{"file":"@codemirror_legacy-modes_mode_idl"},"@codemirror/legacy-modes/mode/javascript":{"file":"@codemirror_legacy-modes_mode_javascript"},"@codemirror/legacy-modes/mode/jinja2":{"file":"@codemirror_legacy-modes_mode_jinja2"},"@codemirror/legacy-modes/mode/julia":{"file":"@codemirror_legacy-modes_mode_julia"},"@codemirror/legacy-modes/mode/livescript":{"file":"@codemirror_legacy-modes_mode_livescript"},"@codemirror/legacy-modes/mode/lua":{"file":"@codemirror_legacy-modes_mode_lua"},"@codemirror/legacy-modes/mode/mathematica":{"file":"@codemirror_legacy-modes_mode_mathematica"},"@codemirror/legacy-modes/mode/mbox":{"file":"@codemirror_legacy-modes_mode_mbox"},"@codemirror/legacy-modes/mode/mirc":{"file":"@codemirror_legacy-modes_mode_mirc"},"@codemirror/legacy-modes/mode/mllike":{"file":"@codemirror_legacy-modes_mode_mllike"},"@codemirror/legacy-modes/mode/modelica":{"file":"@codemirror_legacy-modes_mode_modelica"},"@codemirror/legacy-modes/mode/mscgen":{"file":"@codemirror_legacy-modes_mode_mscgen"},"@codemirror/legacy-modes/mode/mumps":{"file":"@codemirror_legacy-modes_mode_mumps"},"@codemirror/legacy-modes/mode/nginx":{"file":"@codemirror_legacy-modes_mode_nginx"},"@codemirror/legacy-modes/mode/nsis":{"file":"@codemirror_legacy-modes_mode_nsis"},"@codemirror/legacy-modes/mode/ntriples":{"file":"@codemirror_legacy-modes_mode_ntriples"},"@codemirror/legacy-modes/mode/octave":{"file":"@codemirror_legacy-modes_mode_octave"},"@codemirror/legacy-modes/mode/oz":{"file":"@codemirror_legacy-modes_mode_oz"},"@codemirror/legacy-modes/mode/pascal":{"file":"@codemirror_legacy-modes_mode_pascal"},"@codemirror/legacy-modes/mode/pegjs":{"file":"@codemirror_legacy-modes_mode_pegjs"},"@codemirror/legacy-modes/mode/perl":{"file":"@codemirror_legacy-modes_mode_perl"},"@codemirror/legacy-modes/mode/pig":{"file":"@codemirror_legacy-modes_mode_pig"},"@codemirror/legacy-modes/mode/powershell":{"file":"@codemirror_legacy-modes_mode_powershell"},"@codemirror/legacy-modes/mode/properties":{"file":"@codemirror_legacy-modes_mode_properties"},"@codemirror/legacy-modes/mode/protobuf":{"file":"@codemirror_legacy-modes_mode_protobuf"},"@codemirror/legacy-modes/mode/pug":{"file":"@codemirror_legacy-modes_mode_pug"},"@codemirror/legacy-modes/mode/puppet":{"file":"@codemirror_legacy-modes_mode_puppet"},"@codemirror/legacy-modes/mode/python":{"file":"@codemirror_legacy-modes_mode_python"},"@codemirror/legacy-modes/mode/q":{"file":"@codemirror_legacy-modes_mode_q"},"@codemirror/legacy-modes/mode/r":{"file":"@codemirror_legacy-modes_mode_r"},"@codemirror/legacy-modes/mode/rpm":{"file":"@codemirror_legacy-modes_mode_rpm"},"@codemirror/legacy-modes/mode/ruby":{"file":"@codemirror_legacy-modes_mode_ruby"},"@codemirror/legacy-modes/mode/rust":{"file":"@codemirror_legacy-modes_mode_rust"},"@codemirror/legacy-modes/mode/sas":{"file":"@codemirror_legacy-modes_mode_sas"},"@codemirror/legacy-modes/mode/sass":{"file":"@codemirror_legacy-modes_mode_sass"},"@codemirror/legacy-modes/mode/scheme":{"file":"@codemirror_legacy-modes_mode_scheme"},"@codemirror/legacy-modes/mode/shell":{"file":"@codemirror_legacy-modes_mode_shell"},"@codemirror/legacy-modes/mode/sieve":{"file":"@codemirror_legacy-modes_mode_sieve"},"@codemirror/legacy-modes/mode/simple-mode":{"file":"@codemirror_legacy-modes_mode_simple-mode"},"@codemirror/legacy-modes/mode/smalltalk":{"file":"@codemirror_legacy-modes_mode_smalltalk"},"@codemirror/legacy-modes/mode/solr":{"file":"@codemirror_legacy-modes_mode_solr"},"@codemirror/legacy-modes/mode/sparql":{"file":"@codemirror_legacy-modes_mode_sparql"},"@codemirror/legacy-modes/mode/spreadsheet":{"file":"@codemirror_legacy-modes_mode_spreadsheet"},"@codemirror/legacy-modes/mode/sql":{"file":"@codemirror_legacy-modes_mode_sql"},"@codemirror/legacy-modes/mode/stex":{"file":"@codemirror_legacy-modes_mode_stex"},"@codemirror/legacy-modes/mode/stylus":{"file":"@codemirror_legacy-modes_mode_stylus"},"@codemirror/legacy-modes/mode/swift":{"file":"@codemirror_legacy-modes_mode_swift"},"@codemirror/legacy-modes/mode/tcl":{"file":"@codemirror_legacy-modes_mode_tcl"},"@codemirror/legacy-modes/mode/textile":{"file":"@codemirror_legacy-modes_mode_textile"},"@codemirror/legacy-modes/mode/tiddlywiki":{"file":"@codemirror_legacy-modes_mode_tiddlywiki"},"@codemirror/legacy-modes/mode/tiki":{"file":"@codemirror_legacy-modes_mode_tiki"},"@codemirror/legacy-modes/mode/toml":{"file":"@codemirror_legacy-modes_mode_toml"},"@codemirror/legacy-modes/mode/troff":{"file":"@codemirror_legacy-modes_mode_troff"},"@codemirror/legacy-modes/mode/ttcn-cfg":{"file":"@codemirror_legacy-modes_mode_ttcn-cfg"},"@codemirror/legacy-modes/mode/ttcn":{"file":"@codemirror_legacy-modes_mode_ttcn"},"@codemirror/legacy-modes/mode/turtle":{"file":"@codemirror_legacy-modes_mode_turtle"},"@codemirror/legacy-modes/mode/vb":{"file":"@codemirror_legacy-modes_mode_vb"},"@codemirror/legacy-modes/mode/vbscript":{"file":"@codemirror_legacy-modes_mode_vbscript"},"@codemirror/legacy-modes/mode/velocity":{"file":"@codemirror_legacy-modes_mode_velocity"},"@codemirror/legacy-modes/mode/verilog":{"file":"@codemirror_legacy-modes_mode_verilog"},"@codemirror/legacy-modes/mode/vhdl":{"file":"@codemirror_legacy-modes_mode_vhdl"},"@codemirror/legacy-modes/mode/wast":{"file":"@codemirror_legacy-modes_mode_wast"},"@codemirror/legacy-modes/mode/webidl":{"file":"@codemirror_legacy-modes_mode_webidl"},"@codemirror/legacy-modes/mode/xml":{"file":"@codemirror_legacy-modes_mode_xml"},"@codemirror/legacy-modes/mode/xquery":{"file":"@codemirror_legacy-modes_mode_xquery"},"@codemirror/legacy-modes/mode/yacas":{"file":"@codemirror_legacy-modes_mode_yacas"},"@codemirror/legacy-modes/mode/yaml":{"file":"@codemirror_legacy-modes_mode_yaml"},"@codemirror/legacy-modes/mode/z80":{"file":"@codemirror_legacy-modes_mode_z80"},"@babel/runtime/helpers/interopRequireDefault":{"file":"@babel_runtime_helpers_interopRequireDefault"},"@babel/runtime/helpers/objectSpread2":{"file":"@babel_runtime_helpers_objectSpread2"},"@babel/runtime/helpers/toConsumableArray":{"file":"@babel_runtime_helpers_toConsumableArray"}};
9
9
 
10
10
  // Base URL prepended to every module file fetch. Override via configure() before first load.
11
11
  let _baseUrl = './codemirror/';
@@ -180,12 +180,11 @@ async function resolveExtensionSpec(spec) {
180
180
 
181
181
  /**
182
182
  * Registry mapping language name → npm package name for packages that don't
183
- * follow the @codemirror/lang-{name} convention. Pre-populated with known
184
- * custom language packages bundled in this distribution.
183
+ * follow the @codemirror/lang-{name} convention. Empty by default — this is a
184
+ * generic facade with no built-in knowledge of any specific language package;
185
+ * callers must register the ones they need via registerLanguage().
185
186
  */
186
- const languagePackages = new Map([
187
- ['sksl', '@actualwave/codemirror-lang-sksl'],
188
- ]);
187
+ const languagePackages = new Map();
189
188
 
190
189
  /**
191
190
  * Register a custom language package that doesn't follow the
@@ -198,6 +197,50 @@ function registerLanguage(name, packageName) {
198
197
  languagePackages.set(name, packageName);
199
198
  }
200
199
 
200
+ /**
201
+ * Packages providing tagged-template DSL embeddings for the 'javascript'
202
+ * language. Each package must export `createEmbedding() => { matcher, language }`
203
+ * — see @actualwave/codemirror-lang-embed-core. Empty by default; register the
204
+ * embeddings a given app needs via registerTaggedTemplate().
205
+ */
206
+ const taggedTemplateEmbeddings = new Set();
207
+
208
+ /**
209
+ * Registers an additional tagged-template DSL embedding package to be mixed
210
+ * into the 'javascript' language (e.g. a future embed-glsl/embed-icu package).
211
+ *
212
+ * @param {string} packageName - npm package name exporting createEmbedding().
213
+ */
214
+ function registerTaggedTemplate(packageName) {
215
+ taggedTemplateEmbeddings.add(packageName);
216
+ }
217
+
218
+ /**
219
+ * Packages contributing plain CM extensions (completion sources, decoration
220
+ * ViewPlugins, etc) to a base language's support set, for DSLs with no
221
+ * grammar to parse — e.g. flat class-name token lists rather than a
222
+ * `parseMixed` nested language. Each package must export
223
+ * `createSupportExtension(languageSupport, config?) => Extension`. Keyed by
224
+ * package name → its config (or `undefined`), registered once up front rather
225
+ * than threaded through every createEditor() call, matching how
226
+ * registerTaggedTemplate works. Empty by default; register what a given app
227
+ * needs via registerSupportExtension(). Currently only mixed in for the
228
+ * 'javascript' base language (see resolveLanguageExtension) — not JS-specific
229
+ * by name or contract, just not yet wired up for other base languages.
230
+ */
231
+ const supportExtensions = new Map();
232
+
233
+ /**
234
+ * Registers an additional package contributing support extensions (not a
235
+ * nested grammar) to a base language — currently only 'javascript'.
236
+ *
237
+ * @param {string} packageName - npm package name exporting createSupportExtension().
238
+ * @param {object} [config] - Passed as createSupportExtension's second argument.
239
+ */
240
+ function registerSupportExtension(packageName, config) {
241
+ supportExtensions.set(packageName, config);
242
+ }
243
+
201
244
  /**
202
245
  * Extracts a StreamParser mode object from a legacy-modes module.
203
246
  * Tries exact match first, then case-insensitive, then single-export fallback
@@ -218,21 +261,74 @@ function findLegacyMode(mod, name) {
218
261
  /**
219
262
  * Resolves a language name to a CodeMirror language extension.
220
263
  * Resolution order:
221
- * 1. Custom registry (registerLanguage / built-in overrides like sksl)
222
- * 2. @codemirror/lang-{name} (official first-class language packages)
223
- * 3. @codemirror/legacy-modes/mode/{name} (wrapped with StreamLanguage.define)
264
+ * 1. Custom registry (registerLanguage) — empty by default
265
+ * 2. 'javascript' special case — wraps @codemirror/lang-javascript with
266
+ * tagged-template DSL embedding for whatever's been registered via
267
+ * registerTaggedTemplate/registerSupportExtension (none by default) plus
268
+ * whatever's passed in per-call via the embeds argument
269
+ * 3. @codemirror/lang-{name} (official first-class language packages)
270
+ * 4. @codemirror/legacy-modes/mode/{name} (wrapped with StreamLanguage.define)
271
+ *
272
+ * @param {string} name
273
+ * @param {object} [config] - Passed as the sole argument to the resolved factory function
274
+ * (e.g. { jsx: true, typescript: true } for 'javascript'). Ignored by the legacy-modes
275
+ * fallback, since those export StreamParser objects rather than factory functions.
276
+ * @param {object} [embeds] - Only used when name === 'javascript'.
277
+ * @param {string[]} [embeds.taggedTemplates] - Extra tagged-template embedding package
278
+ * names for this call only, merged with whatever's registered via registerTaggedTemplate.
279
+ * @param {Array<string|[string, object]>} [embeds.supportExtensions] - Extra support-extension
280
+ * packages for this call only (same spec shape as registerSupportExtension's arguments —
281
+ * a bare package name, or a [packageName, config] tuple), merged with whatever's registered
282
+ * via registerSupportExtension (per-call config wins on a shared package name).
224
283
  */
225
- async function resolveLanguageExtension(name) {
284
+ async function resolveLanguageExtension(name, config, embeds = {}) {
226
285
  if (languagePackages.has(name)) {
227
286
  const mod = await requireAsyncModule(languagePackages.get(name));
228
287
  const fn = mod[name] ?? Object.values(mod).find((v) => typeof v === 'function');
229
- if (fn) return fn();
288
+ if (fn) return fn(config);
289
+ }
290
+
291
+ if (name === 'javascript') {
292
+ const { taggedTemplates = [], supportExtensions: callSupportExtensions = [] } = embeds;
293
+
294
+ const [jsMod, embedCore, { LanguageSupport }] = await Promise.all([
295
+ requireAsyncModule('@codemirror/lang-javascript'),
296
+ requireAsyncModule('@actualwave/codemirror-lang-embed-core'),
297
+ requireAsyncModule('@codemirror/language'),
298
+ ]);
299
+ const base = jsMod.javascript(config);
300
+ const registry = embedCore.createTagRegistry();
301
+ const extras = [];
302
+
303
+ const allTaggedTemplates = new Set([...taggedTemplateEmbeddings, ...taggedTemplates]);
304
+ for (const packageName of allTaggedTemplates) {
305
+ try {
306
+ const { createEmbedding } = await requireAsyncModule(packageName);
307
+ const { matcher, language, extension } = createEmbedding();
308
+ registry.register(matcher, language);
309
+ if (extension) extras.push(extension);
310
+ } catch {}
311
+ }
312
+ const embedded = embedCore.embedTaggedTemplates(base, registry);
313
+
314
+ const allSupportExtensions = new Map(supportExtensions);
315
+ for (const spec of callSupportExtensions) {
316
+ const [packageName, supportConfig] = Array.isArray(spec) ? spec : [spec, undefined];
317
+ allSupportExtensions.set(packageName, supportConfig);
318
+ }
319
+ for (const [packageName, supportConfig] of allSupportExtensions) {
320
+ try {
321
+ const { createSupportExtension } = await requireAsyncModule(packageName);
322
+ extras.push(createSupportExtension(embedded, supportConfig));
323
+ } catch {}
324
+ }
325
+ return extras.length ? new LanguageSupport(embedded.language, [embedded.support, extras]) : embedded;
230
326
  }
231
327
 
232
328
  try {
233
329
  const mod = await requireAsyncModule(`@codemirror/lang-${name}`);
234
330
  const fn = mod[name] ?? Object.values(mod).find((v) => typeof v === 'function');
235
- if (fn) return fn();
331
+ if (fn) return fn(config);
236
332
  } catch {}
237
333
 
238
334
  try {
@@ -256,8 +352,18 @@ async function resolveLanguageExtension(name) {
256
352
  * @param {string} [options.doc=''] - Initial document content.
257
353
  * @param {string} [options.language] - Language name, e.g. 'javascript', 'python'.
258
354
  * Tries @codemirror/lang-{name} first, then @codemirror/legacy-modes/mode/{name}.
355
+ * @param {object} [options.languageConfig] - Options passed to the language factory,
356
+ * e.g. { jsx: true, typescript: true } for 'javascript'.
259
357
  * @param {Array} [options.extensions=[]] - Extension specs. Each item may be:
260
358
  * a package-name string, a [packageName, options] tuple, or an already-built CM Extension.
359
+ * @param {object} [options.embeds] - Only used when language === 'javascript'.
360
+ * Optional — defaults to none.
361
+ * @param {string[]} [options.embeds.taggedTemplates] - Extra tagged-template embedding package
362
+ * names for this editor only, merged with whatever's registered globally via registerTaggedTemplate.
363
+ * @param {Array<string|[string, object]>} [options.embeds.supportExtensions] - Extra
364
+ * support-extension packages for this editor only (a bare package name, or a
365
+ * [packageName, config] tuple), merged with whatever's registered globally via
366
+ * registerSupportExtension.
261
367
  * @param {(value: string) => void} [options.onChange] - Called with the full document string
262
368
  * on every change. Use this to relay content back to the React Native side.
263
369
  *
@@ -267,7 +373,9 @@ async function createEditor({
267
373
  parent = document.body,
268
374
  doc = '',
269
375
  language,
376
+ languageConfig,
270
377
  extensions = [],
378
+ embeds,
271
379
  onChange,
272
380
  } = {}) {
273
381
  const [
@@ -332,7 +440,7 @@ async function createEditor({
332
440
  const extensionCompartment = new Compartment();
333
441
 
334
442
  const [langExt, resolvedExtensions] = await Promise.all([
335
- language ? resolveLanguageExtension(language) : Promise.resolve([]),
443
+ language ? resolveLanguageExtension(language, languageConfig, embeds) : Promise.resolve([]),
336
444
  Promise.all(extensions.map(resolveExtensionSpec)),
337
445
  ]);
338
446
 
@@ -377,9 +485,14 @@ async function createEditor({
377
485
  /**
378
486
  * Switches the active language. Loads @codemirror/lang-{name} on demand.
379
487
  * @param {string} name - Language name, e.g. 'python', 'css'.
488
+ * @param {object} [config] - Options passed to the language factory, e.g.
489
+ * { jsx: true, typescript: true } for 'javascript'. Must be plain serializable
490
+ * data — it crosses the WebView bridge as a postMessage payload.
491
+ * @param {object} [embeds] - Only used when name === 'javascript'; see createEditor's
492
+ * options.embeds. Optional — defaults to none.
380
493
  */
381
- async setLanguage(name) {
382
- const ext = await resolveLanguageExtension(name);
494
+ async setLanguage(name, config, embeds) {
495
+ const ext = await resolveLanguageExtension(name, config, embeds);
383
496
  view.dispatch({ effects: languageCompartment.reconfigure(ext) });
384
497
  },
385
498
 
@@ -411,5 +524,5 @@ async function createEditor({
411
524
  };
412
525
  }
413
526
 
414
- global.CodeMirrorEditor = { configure, createEditor, requireAsyncModule, registerExtension };
527
+ global.CodeMirrorEditor = { configure, createEditor, requireAsyncModule, registerExtension, registerLanguage, registerTaggedTemplate, registerSupportExtension };
415
528
  })(typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : this);
@@ -61,7 +61,10 @@
61
61
  (async function() {
62
62
  try {
63
63
 
64
- const { configure, createEditor, requireAsyncModule } = window.CodeMirrorEditor;
64
+ const {
65
+ configure, createEditor, requireAsyncModule,
66
+ registerLanguage, registerTaggedTemplate, registerSupportExtension,
67
+ } = window.CodeMirrorEditor;
65
68
 
66
69
  // Maps theme name → [packageSuffix, exportName] for themes in multi-export packages.
67
70
  // Single-export packages (darcula, monokai, etc.) export under the same name as the package.
@@ -110,10 +113,18 @@
110
113
 
111
114
  const extensions = config.extensions ?? [];
112
115
 
116
+ // Custom language packages must be registered before createEditor resolves
117
+ // config.language, otherwise e.g. language: 'sksl' would throw.
118
+ for (const [name, packageName] of Object.entries(config.languages ?? {})) {
119
+ registerLanguage(name, packageName);
120
+ }
121
+
113
122
  const editor = await createEditor({
114
123
  parent: document.body,
115
124
  doc: config.content ?? '',
116
125
  language: config.language,
126
+ languageConfig: config.languageConfig,
127
+ embeds: config.embeds,
117
128
  extensions,
118
129
  onChange: (() => {
119
130
  let _timer = null;
@@ -172,10 +183,20 @@
172
183
  } = await requireAsyncModule('@codemirror/autocomplete');
173
184
  const { keymap } = await requireAsyncModule('@codemirror/view');
174
185
 
186
+ const { EditorState } = await requireAsyncModule('@codemirror/state');
187
+ const { language: languageFacet } = await requireAsyncModule('@codemirror/language');
188
+
175
189
  let _customCompletions = [];
176
190
 
191
+ // Static list set via setCompletions(). Registered as language data (not as
192
+ // autocompletion({ override })) so it is merged with the language's own sources —
193
+ // including nested-language ones (tagged-template embeds, Tailwind, React Native).
194
+ // An `override` would replace every one of those and make embedded DSLs unsuggestable.
177
195
  const _customCompletionSource = (context) => {
178
196
  if (!_customCompletions.length) return null;
197
+ // Inside an embedded language (sql`...`, sksl`...`) the static JS list is noise.
198
+ const lang = context.state.facet(languageFacet);
199
+ if (lang && !lang.isActiveAt(context.state, context.pos, -1)) return null;
179
200
  const word = context.matchBefore(/\w+/);
180
201
  if (!word || (word.from === word.to && !context.explicit)) return null;
181
202
  return { from: word.from, options: _customCompletions, validFor: /^\w*$/ };
@@ -184,7 +205,8 @@
184
205
  editor.view.dispatch({
185
206
  effects: StateEffect.appendConfig.of([
186
207
  closeBrackets(),
187
- autocompletion({ override: [_customCompletionSource], activateOnTyping: true }),
208
+ autocompletion({ activateOnTyping: true }),
209
+ EditorState.languageData.of(() => [{ autocomplete: _customCompletionSource }]),
188
210
  keymap.of([...closeBracketsKeymap, ...completionKeymap]),
189
211
  ]),
190
212
  });
@@ -223,6 +245,19 @@
223
245
  loadExtension,
224
246
  destroy,
225
247
 
248
+ // Maps a language name to a package that doesn't follow the
249
+ // @codemirror/lang-{name} convention. Takes effect on the next setLanguage().
250
+ registerLanguage: (name, packageName) => registerLanguage(name, packageName),
251
+
252
+ // Imperative counterpart to createEditor's `embeds` option — registers a
253
+ // tagged-template DSL embedding / support-extension package globally (for
254
+ // the lifetime of this page), picked up by any subsequent
255
+ // setLanguage('javascript', ...) call. See js-codemirror-package's
256
+ // registerTaggedTemplate/registerSupportExtension for package shape.
257
+ registerTaggedTemplate: (packageName) => registerTaggedTemplate(packageName),
258
+ registerSupportExtension: (packageName, supportConfig) =>
259
+ registerSupportExtension(packageName, supportConfig),
260
+
226
261
  resetValue: (value) => {
227
262
  const view = editor.view;
228
263
  view.dispatch({
@@ -1,3 +0,0 @@
1
- export = withCodeditorAssets;
2
- declare function withCodeditorAssets(config: any): any;
3
- //# sourceMappingURL=app.plugin.d.ts.map
@@ -1,10 +0,0 @@
1
- export let overrides: ({
2
- exclude: RegExp;
3
- presets: string[];
4
- include?: undefined;
5
- } | {
6
- include: RegExp;
7
- presets: string[];
8
- exclude?: undefined;
9
- })[];
10
- //# sourceMappingURL=babel.config.d.ts.map
@@ -1,2 +0,0 @@
1
- export let assets: string[];
2
- //# sourceMappingURL=react-native.config.d.ts.map
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=copy-assets.d.ts.map