@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.
- package/CHANGELOG.md +39 -0
- package/README.md +67 -7
- package/SKILL.md +504 -0
- package/THIRD_PARTY_NOTICES +120 -0
- package/app.plugin.js +1 -1
- package/lib/module/CodeEditor.js +69 -2
- package/lib/typescript/src/CodeEditor.d.ts +20 -2
- package/lib/typescript/src/EditorAPI.d.ts +42 -1
- package/lib/typescript/src/WebViewAPI.d.ts +4 -1
- package/lib/typescript/src/index.d.ts +1 -1
- package/package.json +12 -4
- package/src/assets/codemirror/@actualwave_codemirror-lang-embed-core.js +39 -0
- package/src/assets/codemirror/@actualwave_codemirror-lang-embed-css.js +19 -0
- package/src/assets/codemirror/@actualwave_codemirror-lang-embed-glsl.js +1 -0
- package/src/assets/codemirror/@actualwave_codemirror-lang-embed-graphql.js +50 -0
- package/src/assets/codemirror/@actualwave_codemirror-lang-embed-icu-messageformat.js +1 -0
- package/src/assets/codemirror/@actualwave_codemirror-lang-embed-react-native.js +6 -0
- package/src/assets/codemirror/@actualwave_codemirror-lang-embed-sksl.js +7 -0
- package/src/assets/codemirror/@actualwave_codemirror-lang-embed-sql.js +5 -0
- package/src/assets/codemirror/@actualwave_codemirror-lang-embed-tailwind.js +63 -0
- package/src/assets/codemirror/@actualwave_codemirror-lang-glsl.js +20 -0
- package/src/assets/codemirror/@actualwave_codemirror-lang-icu-messageformat.js +11 -0
- package/src/assets/codemirror/@actualwave_codemirror-lang-js-completion.js +72 -0
- package/src/assets/codemirror/@actualwave_codemirror-lang-react-native.js +71 -0
- package/src/assets/codemirror/@actualwave_codemirror-lang-sksl.js +7 -2
- package/src/assets/codemirror/@codemirror_autocomplete.js +9 -9
- package/src/assets/codemirror/@codemirror_commands.js +86 -86
- package/src/assets/codemirror/@codemirror_lang-css.js +2 -2
- package/src/assets/codemirror/@codemirror_lang-go.js +1 -1
- package/src/assets/codemirror/@codemirror_lang-html.js +1 -1
- package/src/assets/codemirror/@codemirror_lang-javascript.js +4 -4
- package/src/assets/codemirror/@codemirror_lang-jinja.js +1 -1
- package/src/assets/codemirror/@codemirror_lang-json.js +1 -1
- package/src/assets/codemirror/@codemirror_lang-less.js +1 -1
- package/src/assets/codemirror/@codemirror_lang-liquid.js +1 -1
- package/src/assets/codemirror/@codemirror_lang-markdown.js +2 -2
- package/src/assets/codemirror/@codemirror_lang-python.js +1 -1
- package/src/assets/codemirror/@codemirror_lang-sql.js +4 -4
- package/src/assets/codemirror/@codemirror_lang-xml.js +1 -1
- package/src/assets/codemirror/@codemirror_language.js +11 -11
- package/src/assets/codemirror/@codemirror_legacy-modes_mode_clike.js +1 -1
- package/src/assets/codemirror/@codemirror_legacy-modes_mode_mathematica.js +1 -1
- package/src/assets/codemirror/@codemirror_legacy-modes_mode_oz.js +1 -1
- package/src/assets/codemirror/@codemirror_legacy-modes_mode_verilog.js +1 -1
- package/src/assets/codemirror/@codemirror_lint.js +5 -5
- package/src/assets/codemirror/@codemirror_merge.js +4 -4
- package/src/assets/codemirror/@codemirror_search.js +8 -8
- package/src/assets/codemirror/@codemirror_state.js +1 -1
- package/src/assets/codemirror/@codemirror_theme-one-dark.js +3 -3
- package/src/assets/codemirror/@codemirror_view.js +6 -6
- package/src/assets/codemirror/@lezer_common.js +2 -2
- package/src/assets/codemirror/@lezer_css.js +1 -1
- package/src/assets/codemirror/@lezer_javascript.js +1 -1
- package/src/assets/codemirror/@lezer_lr.js +1 -1
- package/src/assets/codemirror/@lezer_markdown.js +4 -4
- package/src/assets/codemirror/@lezer_sass.js +1 -1
- package/src/assets/codemirror/_core.js +129 -129
- package/src/assets/codemirror-editor.umd.js +130 -17
- package/src/assets/editor.html +37 -2
- package/lib/typescript/app.plugin.d.ts +0 -3
- package/lib/typescript/babel.config.d.ts +0 -10
- package/lib/typescript/react-native.config.d.ts +0 -2
- 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.
|
|
184
|
-
*
|
|
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
|
|
222
|
-
* 2. @codemirror/lang-
|
|
223
|
-
*
|
|
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);
|
package/src/assets/editor.html
CHANGED
|
@@ -61,7 +61,10 @@
|
|
|
61
61
|
(async function() {
|
|
62
62
|
try {
|
|
63
63
|
|
|
64
|
-
const {
|
|
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({
|
|
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({
|