@react-x11/components 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +979 -21
- package/dist/ansi/cast.d.ts +48 -0
- package/dist/ansi/cast.d.ts.map +1 -0
- package/dist/ansi/cast.js +135 -0
- package/dist/ansi/cast.js.map +1 -0
- package/dist/ansi/index.d.ts +10 -0
- package/dist/ansi/index.d.ts.map +1 -0
- package/dist/ansi/index.js +27 -0
- package/dist/ansi/index.js.map +1 -0
- package/dist/ansi/palette.d.ts +79 -0
- package/dist/ansi/palette.d.ts.map +1 -0
- package/dist/ansi/palette.js +155 -0
- package/dist/ansi/palette.js.map +1 -0
- package/dist/ansi/parse.d.ts +114 -0
- package/dist/ansi/parse.d.ts.map +1 -0
- package/dist/ansi/parse.js +687 -0
- package/dist/ansi/parse.js.map +1 -0
- package/dist/ansi/sgr.d.ts +87 -0
- package/dist/ansi/sgr.d.ts.map +1 -0
- package/dist/ansi/sgr.js +302 -0
- package/dist/ansi/sgr.js.map +1 -0
- package/dist/ansi/utf8.d.ts +15 -0
- package/dist/ansi/utf8.d.ts.map +1 -0
- package/dist/ansi/utf8.js +82 -0
- package/dist/ansi/utf8.js.map +1 -0
- package/dist/calendar/Calendar.d.ts +136 -0
- package/dist/calendar/Calendar.d.ts.map +1 -0
- package/dist/calendar/Calendar.js +460 -0
- package/dist/calendar/Calendar.js.map +1 -0
- package/dist/calendar/DatePicker.d.ts +52 -0
- package/dist/calendar/DatePicker.d.ts.map +1 -0
- package/dist/calendar/DatePicker.js +257 -0
- package/dist/calendar/DatePicker.js.map +1 -0
- package/dist/calendar/dates.d.ts +90 -0
- package/dist/calendar/dates.d.ts.map +1 -0
- package/dist/calendar/dates.js +236 -0
- package/dist/calendar/dates.js.map +1 -0
- package/dist/calendar/index.d.ts +8 -0
- package/dist/calendar/index.d.ts.map +1 -0
- package/dist/calendar/index.js +15 -0
- package/dist/calendar/index.js.map +1 -0
- package/dist/charts/components.d.ts +141 -0
- package/dist/charts/components.d.ts.map +1 -0
- package/dist/charts/components.js +580 -0
- package/dist/charts/components.js.map +1 -0
- package/dist/charts/data.d.ts +198 -0
- package/dist/charts/data.d.ts.map +1 -0
- package/dist/charts/data.js +616 -0
- package/dist/charts/data.js.map +1 -0
- package/dist/charts/hx.d.ts +21 -0
- package/dist/charts/hx.d.ts.map +1 -0
- package/dist/charts/hx.js +15 -0
- package/dist/charts/hx.js.map +1 -0
- package/dist/charts/index.d.ts +27 -0
- package/dist/charts/index.d.ts.map +1 -0
- package/dist/charts/index.js +38 -0
- package/dist/charts/index.js.map +1 -0
- package/dist/charts/node.d.ts +96 -0
- package/dist/charts/node.d.ts.map +1 -0
- package/dist/charts/node.js +720 -0
- package/dist/charts/node.js.map +1 -0
- package/dist/charts/render.d.ts +153 -0
- package/dist/charts/render.d.ts.map +1 -0
- package/dist/charts/render.js +762 -0
- package/dist/charts/render.js.map +1 -0
- package/dist/charts/scale.d.ts +42 -0
- package/dist/charts/scale.d.ts.map +1 -0
- package/dist/charts/scale.js +173 -0
- package/dist/charts/scale.js.map +1 -0
- package/dist/charts/spec.d.ts +91 -0
- package/dist/charts/spec.d.ts.map +1 -0
- package/dist/charts/spec.js +33 -0
- package/dist/charts/spec.js.map +1 -0
- package/dist/charts/timers.d.ts +6 -0
- package/dist/charts/timers.d.ts.map +1 -0
- package/dist/charts/timers.js +14 -0
- package/dist/charts/timers.js.map +1 -0
- package/dist/code/hx.d.ts +24 -0
- package/dist/code/hx.d.ts.map +1 -0
- package/dist/code/hx.js +25 -0
- package/dist/code/hx.js.map +1 -0
- package/dist/code/index.d.ts +45 -0
- package/dist/code/index.d.ts.map +1 -0
- package/dist/code/index.js +93 -0
- package/dist/code/index.js.map +1 -0
- package/dist/code-editor/completion.d.ts +26 -0
- package/dist/code-editor/completion.d.ts.map +1 -0
- package/dist/code-editor/completion.js +129 -0
- package/dist/code-editor/completion.js.map +1 -0
- package/dist/code-editor/doc.d.ts +35 -0
- package/dist/code-editor/doc.d.ts.map +1 -0
- package/dist/code-editor/doc.js +162 -0
- package/dist/code-editor/doc.js.map +1 -0
- package/dist/code-editor/hx.d.ts +13 -0
- package/dist/code-editor/hx.d.ts.map +1 -0
- package/dist/code-editor/hx.js +10 -0
- package/dist/code-editor/hx.js.map +1 -0
- package/dist/code-editor/index.d.ts +88 -0
- package/dist/code-editor/index.d.ts.map +1 -0
- package/dist/code-editor/index.js +401 -0
- package/dist/code-editor/index.js.map +1 -0
- package/dist/code-editor/node.d.ts +343 -0
- package/dist/code-editor/node.d.ts.map +1 -0
- package/dist/code-editor/node.js +1521 -0
- package/dist/code-editor/node.js.map +1 -0
- package/dist/code-language/hljs.d.ts +47 -0
- package/dist/code-language/hljs.d.ts.map +1 -0
- package/dist/code-language/hljs.js +211 -0
- package/dist/code-language/hljs.js.map +1 -0
- package/dist/code-language/index.d.ts +22 -0
- package/dist/code-language/index.d.ts.map +1 -0
- package/dist/code-language/index.js +20 -0
- package/dist/code-language/index.js.map +1 -0
- package/dist/code-language/languages/glsl.d.ts +4 -0
- package/dist/code-language/languages/glsl.d.ts.map +1 -0
- package/dist/code-language/languages/glsl.js +99 -0
- package/dist/code-language/languages/glsl.js.map +1 -0
- package/dist/code-language/languages/javascript.d.ts +10 -0
- package/dist/code-language/languages/javascript.d.ts.map +1 -0
- package/dist/code-language/languages/javascript.js +360 -0
- package/dist/code-language/languages/javascript.js.map +1 -0
- package/dist/code-language/languages/json.d.ts +4 -0
- package/dist/code-language/languages/json.d.ts.map +1 -0
- package/dist/code-language/languages/json.js +68 -0
- package/dist/code-language/languages/json.js.map +1 -0
- package/dist/code-language/languages/shell.d.ts +4 -0
- package/dist/code-language/languages/shell.d.ts.map +1 -0
- package/dist/code-language/languages/shell.js +189 -0
- package/dist/code-language/languages/shell.js.map +1 -0
- package/dist/code-language/languages/sql.d.ts +11 -0
- package/dist/code-language/languages/sql.d.ts.map +1 -0
- package/dist/code-language/languages/sql.js +133 -0
- package/dist/code-language/languages/sql.js.map +1 -0
- package/dist/code-language/lezer.d.ts +24 -0
- package/dist/code-language/lezer.d.ts.map +1 -0
- package/dist/code-language/lezer.js +148 -0
- package/dist/code-language/lezer.js.map +1 -0
- package/dist/code-language/registry.d.ts +19 -0
- package/dist/code-language/registry.d.ts.map +1 -0
- package/dist/code-language/registry.js +56 -0
- package/dist/code-language/registry.js.map +1 -0
- package/dist/code-language/runs.d.ts +35 -0
- package/dist/code-language/runs.d.ts.map +1 -0
- package/dist/code-language/runs.js +88 -0
- package/dist/code-language/runs.js.map +1 -0
- package/dist/code-language/stream.d.ts +70 -0
- package/dist/code-language/stream.d.ts.map +1 -0
- package/dist/code-language/stream.js +243 -0
- package/dist/code-language/stream.js.map +1 -0
- package/dist/code-language/textmate.d.ts +27 -0
- package/dist/code-language/textmate.d.ts.map +1 -0
- package/dist/code-language/textmate.js +86 -0
- package/dist/code-language/textmate.js.map +1 -0
- package/dist/code-language/theme.d.ts +26 -0
- package/dist/code-language/theme.d.ts.map +1 -0
- package/dist/code-language/theme.js +108 -0
- package/dist/code-language/theme.js.map +1 -0
- package/dist/code-language/timers.d.ts +7 -0
- package/dist/code-language/timers.d.ts.map +1 -0
- package/dist/code-language/timers.js +22 -0
- package/dist/code-language/timers.js.map +1 -0
- package/dist/code-language/types.d.ts +173 -0
- package/dist/code-language/types.d.ts.map +1 -0
- package/dist/code-language/types.js +41 -0
- package/dist/code-language/types.js.map +1 -0
- package/dist/codeblock/index.d.ts +69 -0
- package/dist/codeblock/index.d.ts.map +1 -0
- package/dist/codeblock/index.js +85 -0
- package/dist/codeblock/index.js.map +1 -0
- package/dist/color-picker/ColorField.d.ts +39 -0
- package/dist/color-picker/ColorField.d.ts.map +1 -0
- package/dist/color-picker/ColorField.js +239 -0
- package/dist/color-picker/ColorField.js.map +1 -0
- package/dist/color-picker/ColorPicker.d.ts +109 -0
- package/dist/color-picker/ColorPicker.d.ts.map +1 -0
- package/dist/color-picker/ColorPicker.js +757 -0
- package/dist/color-picker/ColorPicker.js.map +1 -0
- package/dist/color-picker/color.d.ts +105 -0
- package/dist/color-picker/color.d.ts.map +1 -0
- package/dist/color-picker/color.js +313 -0
- package/dist/color-picker/color.js.map +1 -0
- package/dist/color-picker/index.d.ts +8 -0
- package/dist/color-picker/index.d.ts.map +1 -0
- package/dist/color-picker/index.js +19 -0
- package/dist/color-picker/index.js.map +1 -0
- package/dist/desktop-calendar/eds.d.ts +102 -0
- package/dist/desktop-calendar/eds.d.ts.map +1 -0
- package/dist/desktop-calendar/eds.js +356 -0
- package/dist/desktop-calendar/eds.js.map +1 -0
- package/dist/desktop-calendar/ical.d.ts +63 -0
- package/dist/desktop-calendar/ical.d.ts.map +1 -0
- package/dist/desktop-calendar/ical.js +57 -0
- package/dist/desktop-calendar/ical.js.map +1 -0
- package/dist/desktop-calendar/index.d.ts +72 -0
- package/dist/desktop-calendar/index.d.ts.map +1 -0
- package/dist/desktop-calendar/index.js +213 -0
- package/dist/desktop-calendar/index.js.map +1 -0
- package/dist/embed/client.d.ts +121 -0
- package/dist/embed/client.d.ts.map +1 -0
- package/dist/embed/client.js +203 -0
- package/dist/embed/client.js.map +1 -0
- package/dist/embed/host.d.ts +96 -0
- package/dist/embed/host.d.ts.map +1 -0
- package/dist/embed/host.js +266 -0
- package/dist/embed/host.js.map +1 -0
- package/dist/embed/index.d.ts +5 -0
- package/dist/embed/index.d.ts.map +1 -0
- package/dist/embed/index.js +13 -0
- package/dist/embed/index.js.map +1 -0
- package/dist/embed/timers.d.ts +6 -0
- package/dist/embed/timers.d.ts.map +1 -0
- package/dist/embed/timers.js +16 -0
- package/dist/embed/timers.js.map +1 -0
- package/dist/flow/draw.d.ts +45 -0
- package/dist/flow/draw.d.ts.map +1 -0
- package/dist/flow/draw.js +295 -0
- package/dist/flow/draw.js.map +1 -0
- package/dist/flow/index.d.ts +64 -0
- package/dist/flow/index.d.ts.map +1 -0
- package/dist/flow/index.js +306 -0
- package/dist/flow/index.js.map +1 -0
- package/dist/flow/model.d.ts +158 -0
- package/dist/flow/model.d.ts.map +1 -0
- package/dist/flow/model.js +566 -0
- package/dist/flow/model.js.map +1 -0
- package/dist/flow/node.d.ts +429 -0
- package/dist/flow/node.d.ts.map +1 -0
- package/dist/flow/node.js +3025 -0
- package/dist/flow/node.js.map +1 -0
- package/dist/flow/paths.d.ts +43 -0
- package/dist/flow/paths.d.ts.map +1 -0
- package/dist/flow/paths.js +327 -0
- package/dist/flow/paths.js.map +1 -0
- package/dist/flow/types.d.ts +561 -0
- package/dist/flow/types.d.ts.map +1 -0
- package/dist/flow/types.js +2 -0
- package/dist/flow/types.js.map +1 -0
- package/dist/formula/hx.d.ts +24 -0
- package/dist/formula/hx.d.ts.map +1 -0
- package/dist/formula/hx.js +25 -0
- package/dist/formula/hx.js.map +1 -0
- package/dist/formula/index.d.ts +74 -0
- package/dist/formula/index.d.ts.map +1 -0
- package/dist/formula/index.js +155 -0
- package/dist/formula/index.js.map +1 -0
- package/dist/formula/katex.d.ts +78 -0
- package/dist/formula/katex.d.ts.map +1 -0
- package/dist/formula/katex.js +130 -0
- package/dist/formula/katex.js.map +1 -0
- package/dist/formula/layout.d.ts +103 -0
- package/dist/formula/layout.d.ts.map +1 -0
- package/dist/formula/layout.js +716 -0
- package/dist/formula/layout.js.map +1 -0
- package/dist/formula/node.d.ts +50 -0
- package/dist/formula/node.d.ts.map +1 -0
- package/dist/formula/node.js +351 -0
- package/dist/formula/node.js.map +1 -0
- package/dist/html/controls.d.ts +48 -0
- package/dist/html/controls.d.ts.map +1 -0
- package/dist/html/controls.js +195 -0
- package/dist/html/controls.js.map +1 -0
- package/dist/html/css/cascade.d.ts +51 -0
- package/dist/html/css/cascade.d.ts.map +1 -0
- package/dist/html/css/cascade.js +552 -0
- package/dist/html/css/cascade.js.map +1 -0
- package/dist/html/css/parse.d.ts +74 -0
- package/dist/html/css/parse.d.ts.map +1 -0
- package/dist/html/css/parse.js +464 -0
- package/dist/html/css/parse.js.map +1 -0
- package/dist/html/css/style.d.ts +142 -0
- package/dist/html/css/style.d.ts.map +1 -0
- package/dist/html/css/style.js +1145 -0
- package/dist/html/css/style.js.map +1 -0
- package/dist/html/css/ua.d.ts +5 -0
- package/dist/html/css/ua.d.ts.map +1 -0
- package/dist/html/css/ua.js +171 -0
- package/dist/html/css/ua.js.map +1 -0
- package/dist/html/css/values.d.ts +78 -0
- package/dist/html/css/values.d.ts.map +1 -0
- package/dist/html/css/values.js +330 -0
- package/dist/html/css/values.js.map +1 -0
- package/dist/html/dom.d.ts +112 -0
- package/dist/html/dom.d.ts.map +1 -0
- package/dist/html/dom.js +374 -0
- package/dist/html/dom.js.map +1 -0
- package/dist/html/hx.d.ts +24 -0
- package/dist/html/hx.d.ts.map +1 -0
- package/dist/html/hx.js +29 -0
- package/dist/html/hx.js.map +1 -0
- package/dist/html/index.d.ts +137 -0
- package/dist/html/index.d.ts.map +1 -0
- package/dist/html/index.js +339 -0
- package/dist/html/index.js.map +1 -0
- package/dist/html/layout/block.d.ts +58 -0
- package/dist/html/layout/block.d.ts.map +1 -0
- package/dist/html/layout/block.js +724 -0
- package/dist/html/layout/block.js.map +1 -0
- package/dist/html/layout/boxes.d.ts +261 -0
- package/dist/html/layout/boxes.d.ts.map +1 -0
- package/dist/html/layout/boxes.js +725 -0
- package/dist/html/layout/boxes.js.map +1 -0
- package/dist/html/layout/flex.d.ts +16 -0
- package/dist/html/layout/flex.d.ts.map +1 -0
- package/dist/html/layout/flex.js +242 -0
- package/dist/html/layout/flex.js.map +1 -0
- package/dist/html/layout/floats.d.ts +50 -0
- package/dist/html/layout/floats.d.ts.map +1 -0
- package/dist/html/layout/floats.js +110 -0
- package/dist/html/layout/floats.js.map +1 -0
- package/dist/html/layout/inline.d.ts +44 -0
- package/dist/html/layout/inline.d.ts.map +1 -0
- package/dist/html/layout/inline.js +700 -0
- package/dist/html/layout/inline.js.map +1 -0
- package/dist/html/layout/table.d.ts +5 -0
- package/dist/html/layout/table.d.ts.map +1 -0
- package/dist/html/layout/table.js +340 -0
- package/dist/html/layout/table.js.map +1 -0
- package/dist/html/node.d.ts +149 -0
- package/dist/html/node.d.ts.map +1 -0
- package/dist/html/node.js +861 -0
- package/dist/html/node.js.map +1 -0
- package/dist/html/paint.d.ts +48 -0
- package/dist/html/paint.d.ts.map +1 -0
- package/dist/html/paint.js +495 -0
- package/dist/html/paint.js.map +1 -0
- package/dist/html/resources.d.ts +48 -0
- package/dist/html/resources.d.ts.map +1 -0
- package/dist/html/resources.js +156 -0
- package/dist/html/resources.js.map +1 -0
- package/dist/index.d.ts +48 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +92 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/heights.d.ts +81 -0
- package/dist/internal/heights.d.ts.map +1 -0
- package/dist/internal/heights.js +193 -0
- package/dist/internal/heights.js.map +1 -0
- package/dist/internal/hx.d.ts +24 -0
- package/dist/internal/hx.d.ts.map +1 -0
- package/dist/internal/hx.js +27 -0
- package/dist/internal/hx.js.map +1 -0
- package/dist/internal/text.d.ts +6 -0
- package/dist/internal/text.d.ts.map +1 -0
- package/dist/internal/text.js +44 -0
- package/dist/internal/text.js.map +1 -0
- package/dist/internal/timers.d.ts +8 -0
- package/dist/internal/timers.d.ts.map +1 -0
- package/dist/internal/timers.js +22 -0
- package/dist/internal/timers.js.map +1 -0
- package/dist/internal/widget.d.ts +40 -0
- package/dist/internal/widget.d.ts.map +1 -0
- package/dist/internal/widget.js +44 -0
- package/dist/internal/widget.js.map +1 -0
- package/dist/markdown/ast.d.ts +126 -0
- package/dist/markdown/ast.d.ts.map +1 -0
- package/dist/markdown/ast.js +8 -0
- package/dist/markdown/ast.js.map +1 -0
- package/dist/markdown/hx.d.ts +24 -0
- package/dist/markdown/hx.d.ts.map +1 -0
- package/dist/markdown/hx.js +25 -0
- package/dist/markdown/hx.js.map +1 -0
- package/dist/markdown/index.d.ts +90 -0
- package/dist/markdown/index.d.ts.map +1 -0
- package/dist/markdown/index.js +413 -0
- package/dist/markdown/index.js.map +1 -0
- package/dist/markdown/parse.d.ts +8 -0
- package/dist/markdown/parse.d.ts.map +1 -0
- package/dist/markdown/parse.js +911 -0
- package/dist/markdown/parse.js.map +1 -0
- package/dist/markdown/spans.d.ts +20 -0
- package/dist/markdown/spans.d.ts.map +1 -0
- package/dist/markdown/spans.js +96 -0
- package/dist/markdown/spans.js.map +1 -0
- package/dist/media-player/backends.d.ts +64 -0
- package/dist/media-player/backends.d.ts.map +1 -0
- package/dist/media-player/backends.js +110 -0
- package/dist/media-player/backends.js.map +1 -0
- package/dist/media-player/control.d.ts +40 -0
- package/dist/media-player/control.d.ts.map +1 -0
- package/dist/media-player/control.js +44 -0
- package/dist/media-player/control.js.map +1 -0
- package/dist/media-player/hx.d.ts +24 -0
- package/dist/media-player/hx.d.ts.map +1 -0
- package/dist/media-player/hx.js +25 -0
- package/dist/media-player/hx.js.map +1 -0
- package/dist/media-player/index.d.ts +107 -0
- package/dist/media-player/index.d.ts.map +1 -0
- package/dist/media-player/index.js +219 -0
- package/dist/media-player/index.js.map +1 -0
- package/dist/media-player/mpv.d.ts +4 -0
- package/dist/media-player/mpv.d.ts.map +1 -0
- package/dist/media-player/mpv.js +120 -0
- package/dist/media-player/mpv.js.map +1 -0
- package/dist/media-player/vlc.d.ts +8 -0
- package/dist/media-player/vlc.d.ts.map +1 -0
- package/dist/media-player/vlc.js +83 -0
- package/dist/media-player/vlc.js.map +1 -0
- package/dist/richtext/index.d.ts +19 -0
- package/dist/richtext/index.d.ts.map +1 -0
- package/dist/richtext/index.js +4 -0
- package/dist/richtext/index.js.map +1 -0
- package/dist/richtext/links.d.ts +12 -0
- package/dist/richtext/links.d.ts.map +1 -0
- package/dist/richtext/links.js +64 -0
- package/dist/richtext/links.js.map +1 -0
- package/dist/richtext/menu.d.ts +11 -0
- package/dist/richtext/menu.d.ts.map +1 -0
- package/dist/richtext/menu.js +43 -0
- package/dist/richtext/menu.js.map +1 -0
- package/dist/richtext/node.d.ts +151 -0
- package/dist/richtext/node.d.ts.map +1 -0
- package/dist/richtext/node.js +255 -0
- package/dist/richtext/node.js.map +1 -0
- package/dist/richtext/runs.d.ts +92 -0
- package/dist/richtext/runs.d.ts.map +1 -0
- package/dist/richtext/runs.js +158 -0
- package/dist/richtext/runs.js.map +1 -0
- package/dist/table/hx.d.ts +24 -0
- package/dist/table/hx.d.ts.map +1 -0
- package/dist/table/hx.js +25 -0
- package/dist/table/hx.js.map +1 -0
- package/dist/table/index.d.ts +169 -0
- package/dist/table/index.d.ts.map +1 -0
- package/dist/table/index.js +844 -0
- package/dist/table/index.js.map +1 -0
- package/dist/table/rows.d.ts +136 -0
- package/dist/table/rows.d.ts.map +1 -0
- package/dist/table/rows.js +146 -0
- package/dist/table/rows.js.map +1 -0
- package/dist/terminal/backends.d.ts +105 -0
- package/dist/terminal/backends.d.ts.map +1 -0
- package/dist/terminal/backends.js +185 -0
- package/dist/terminal/backends.js.map +1 -0
- package/dist/terminal/hx.d.ts +24 -0
- package/dist/terminal/hx.d.ts.map +1 -0
- package/dist/terminal/hx.js +25 -0
- package/dist/terminal/hx.js.map +1 -0
- package/dist/terminal/index.d.ts +160 -0
- package/dist/terminal/index.d.ts.map +1 -0
- package/dist/terminal/index.js +344 -0
- package/dist/terminal/index.js.map +1 -0
- package/dist/terminal/title.d.ts +24 -0
- package/dist/terminal/title.d.ts.map +1 -0
- package/dist/terminal/title.js +129 -0
- package/dist/terminal/title.js.map +1 -0
- package/dist/terminal/vt/colors.d.ts +63 -0
- package/dist/terminal/vt/colors.d.ts.map +1 -0
- package/dist/terminal/vt/colors.js +203 -0
- package/dist/terminal/vt/colors.js.map +1 -0
- package/dist/terminal/vt/diff.d.ts +117 -0
- package/dist/terminal/vt/diff.d.ts.map +1 -0
- package/dist/terminal/vt/diff.js +358 -0
- package/dist/terminal/vt/diff.js.map +1 -0
- package/dist/terminal/vt/fonts.d.ts +92 -0
- package/dist/terminal/vt/fonts.d.ts.map +1 -0
- package/dist/terminal/vt/fonts.js +178 -0
- package/dist/terminal/vt/fonts.js.map +1 -0
- package/dist/terminal/vt/index.d.ts +78 -0
- package/dist/terminal/vt/index.d.ts.map +1 -0
- package/dist/terminal/vt/index.js +312 -0
- package/dist/terminal/vt/index.js.map +1 -0
- package/dist/terminal/vt/keys.d.ts +74 -0
- package/dist/terminal/vt/keys.d.ts.map +1 -0
- package/dist/terminal/vt/keys.js +309 -0
- package/dist/terminal/vt/keys.js.map +1 -0
- package/dist/terminal/vt/mouse.d.ts +44 -0
- package/dist/terminal/vt/mouse.d.ts.map +1 -0
- package/dist/terminal/vt/mouse.js +106 -0
- package/dist/terminal/vt/mouse.js.map +1 -0
- package/dist/terminal/vt/node.d.ts +246 -0
- package/dist/terminal/vt/node.d.ts.map +1 -0
- package/dist/terminal/vt/node.js +1068 -0
- package/dist/terminal/vt/node.js.map +1 -0
- package/dist/terminal/vt/pty.d.ts +81 -0
- package/dist/terminal/vt/pty.d.ts.map +1 -0
- package/dist/terminal/vt/pty.js +201 -0
- package/dist/terminal/vt/pty.js.map +1 -0
- package/dist/terminal/vt/renderer.d.ts +179 -0
- package/dist/terminal/vt/renderer.d.ts.map +1 -0
- package/dist/terminal/vt/renderer.js +357 -0
- package/dist/terminal/vt/renderer.js.map +1 -0
- package/dist/terminal/vt/timers.d.ts +6 -0
- package/dist/terminal/vt/timers.d.ts.map +1 -0
- package/dist/terminal/vt/timers.js +16 -0
- package/dist/terminal/vt/timers.js.map +1 -0
- package/dist/terminal/vt/xterm.d.ts +142 -0
- package/dist/terminal/vt/xterm.d.ts.map +1 -0
- package/dist/terminal/vt/xterm.js +32 -0
- package/dist/terminal/vt/xterm.js.map +1 -0
- package/dist/terminal-output/hx.d.ts +24 -0
- package/dist/terminal-output/hx.d.ts.map +1 -0
- package/dist/terminal-output/hx.js +25 -0
- package/dist/terminal-output/hx.js.map +1 -0
- package/dist/terminal-output/index.d.ts +92 -0
- package/dist/terminal-output/index.d.ts.map +1 -0
- package/dist/terminal-output/index.js +179 -0
- package/dist/terminal-output/index.js.map +1 -0
- package/dist/terminal-output/runs.d.ts +27 -0
- package/dist/terminal-output/runs.d.ts.map +1 -0
- package/dist/terminal-output/runs.js +66 -0
- package/dist/terminal-output/runs.js.map +1 -0
- package/dist/three/canvas.d.ts +46 -0
- package/dist/three/canvas.d.ts.map +1 -0
- package/dist/three/canvas.js +305 -0
- package/dist/three/canvas.js.map +1 -0
- package/dist/three/events.d.ts +64 -0
- package/dist/three/events.d.ts.map +1 -0
- package/dist/three/events.js +146 -0
- package/dist/three/events.js.map +1 -0
- package/dist/three/geometries.d.ts +89 -0
- package/dist/three/geometries.d.ts.map +1 -0
- package/dist/three/geometries.js +345 -0
- package/dist/three/geometries.js.map +1 -0
- package/dist/three/globals.d.ts +7 -0
- package/dist/three/globals.d.ts.map +1 -0
- package/dist/three/globals.js +20 -0
- package/dist/three/globals.js.map +1 -0
- package/dist/three/hx.d.ts +9 -0
- package/dist/three/hx.d.ts.map +1 -0
- package/dist/three/hx.js +10 -0
- package/dist/three/hx.js.map +1 -0
- package/dist/three/index.d.ts +22 -0
- package/dist/three/index.d.ts.map +1 -0
- package/dist/three/index.js +24 -0
- package/dist/three/index.js.map +1 -0
- package/dist/three/jsx-dev-runtime.d.ts +19 -0
- package/dist/three/jsx-dev-runtime.d.ts.map +1 -0
- package/dist/three/jsx-dev-runtime.js +2 -0
- package/dist/three/jsx-dev-runtime.js.map +1 -0
- package/dist/three/jsx-runtime.d.ts +19 -0
- package/dist/three/jsx-runtime.d.ts.map +1 -0
- package/dist/three/jsx-runtime.js +2 -0
- package/dist/three/jsx-runtime.js.map +1 -0
- package/dist/three/jsx.d.ts +198 -0
- package/dist/three/jsx.d.ts.map +1 -0
- package/dist/three/jsx.js +2 -0
- package/dist/three/jsx.js.map +1 -0
- package/dist/three/materials.d.ts +125 -0
- package/dist/three/materials.d.ts.map +1 -0
- package/dist/three/materials.js +229 -0
- package/dist/three/materials.js.map +1 -0
- package/dist/three/math.d.ts +146 -0
- package/dist/three/math.d.ts.map +1 -0
- package/dist/three/math.js +464 -0
- package/dist/three/math.js.map +1 -0
- package/dist/three/objects.d.ts +185 -0
- package/dist/three/objects.d.ts.map +1 -0
- package/dist/three/objects.js +309 -0
- package/dist/three/objects.js.map +1 -0
- package/dist/three/passes.d.ts +54 -0
- package/dist/three/passes.d.ts.map +1 -0
- package/dist/three/passes.js +78 -0
- package/dist/three/passes.js.map +1 -0
- package/dist/three/postprocess.d.ts +85 -0
- package/dist/three/postprocess.d.ts.map +1 -0
- package/dist/three/postprocess.js +503 -0
- package/dist/three/postprocess.js.map +1 -0
- package/dist/three/raycast.d.ts +24 -0
- package/dist/three/raycast.d.ts.map +1 -0
- package/dist/three/raycast.js +138 -0
- package/dist/three/raycast.js.map +1 -0
- package/dist/three/reconciler.d.ts +48 -0
- package/dist/three/reconciler.d.ts.map +1 -0
- package/dist/three/reconciler.js +416 -0
- package/dist/three/reconciler.js.map +1 -0
- package/dist/three/renderer-direct.d.ts +102 -0
- package/dist/three/renderer-direct.d.ts.map +1 -0
- package/dist/three/renderer-direct.js +782 -0
- package/dist/three/renderer-direct.js.map +1 -0
- package/dist/three/renderer-indirect.d.ts +68 -0
- package/dist/three/renderer-indirect.d.ts.map +1 -0
- package/dist/three/renderer-indirect.js +438 -0
- package/dist/three/renderer-indirect.js.map +1 -0
- package/dist/three/store.d.ts +81 -0
- package/dist/three/store.d.ts.map +1 -0
- package/dist/three/store.js +110 -0
- package/dist/three/store.js.map +1 -0
- package/dist/timeline/hx.d.ts +18 -0
- package/dist/timeline/hx.d.ts.map +1 -0
- package/dist/timeline/hx.js +10 -0
- package/dist/timeline/hx.js.map +1 -0
- package/dist/timeline/index.d.ts +152 -0
- package/dist/timeline/index.d.ts.map +1 -0
- package/dist/timeline/index.js +383 -0
- package/dist/timeline/index.js.map +1 -0
- package/dist/tray-host/hx.d.ts +24 -0
- package/dist/tray-host/hx.d.ts.map +1 -0
- package/dist/tray-host/hx.js +25 -0
- package/dist/tray-host/hx.js.map +1 -0
- package/dist/tray-host/index.d.ts +110 -0
- package/dist/tray-host/index.d.ts.map +1 -0
- package/dist/tray-host/index.js +191 -0
- package/dist/tray-host/index.js.map +1 -0
- package/dist/tray-host/manager.d.ts +137 -0
- package/dist/tray-host/manager.d.ts.map +1 -0
- package/dist/tray-host/manager.js +462 -0
- package/dist/tray-host/manager.js.map +1 -0
- package/dist/tray-host/notify.d.ts +22 -0
- package/dist/tray-host/notify.d.ts.map +1 -0
- package/dist/tray-host/notify.js +74 -0
- package/dist/tray-host/notify.js.map +1 -0
- package/dist/tray-host/protocol.d.ts +106 -0
- package/dist/tray-host/protocol.d.ts.map +1 -0
- package/dist/tray-host/protocol.js +191 -0
- package/dist/tray-host/protocol.js.map +1 -0
- package/dist/tree/hx.d.ts +24 -0
- package/dist/tree/hx.d.ts.map +1 -0
- package/dist/tree/hx.js +25 -0
- package/dist/tree/hx.js.map +1 -0
- package/dist/tree/index.d.ts +221 -0
- package/dist/tree/index.d.ts.map +1 -0
- package/dist/tree/index.js +716 -0
- package/dist/tree/index.js.map +1 -0
- package/dist/tree/internal.d.ts +18 -0
- package/dist/tree/internal.d.ts.map +1 -0
- package/dist/tree/internal.js +66 -0
- package/dist/tree/internal.js.map +1 -0
- package/dist/tree/rows.d.ts +177 -0
- package/dist/tree/rows.d.ts.map +1 -0
- package/dist/tree/rows.js +179 -0
- package/dist/tree/rows.js.map +1 -0
- package/package.json +166 -12
- package/src/ansi/cast.ts +159 -0
- package/src/ansi/index.ts +53 -0
- package/src/ansi/palette.ts +226 -0
- package/src/ansi/parse.ts +780 -0
- package/src/ansi/sgr.ts +380 -0
- package/src/ansi/utf8.ts +84 -0
- package/src/calendar/Calendar.ts +744 -0
- package/src/calendar/DatePicker.ts +368 -0
- package/src/calendar/dates.ts +307 -0
- package/src/calendar/index.ts +51 -0
- package/src/charts/components.ts +864 -0
- package/src/charts/data.ts +776 -0
- package/src/charts/hx.ts +39 -0
- package/src/charts/index.ts +99 -0
- package/src/charts/node.ts +932 -0
- package/src/charts/render.ts +982 -0
- package/src/charts/scale.ts +214 -0
- package/src/charts/spec.ts +122 -0
- package/src/charts/timers.ts +24 -0
- package/src/code/hx.ts +51 -0
- package/src/code/index.ts +174 -0
- package/src/code-editor/completion.ts +161 -0
- package/src/code-editor/doc.ts +198 -0
- package/src/code-editor/hx.ts +26 -0
- package/src/code-editor/index.ts +615 -0
- package/src/code-editor/node.ts +1926 -0
- package/src/code-language/hljs.ts +302 -0
- package/src/code-language/index.ts +51 -0
- package/src/code-language/languages/glsl.ts +120 -0
- package/src/code-language/languages/javascript.ts +419 -0
- package/src/code-language/languages/json.ts +72 -0
- package/src/code-language/languages/shell.ts +221 -0
- package/src/code-language/languages/sql.ts +165 -0
- package/src/code-language/lezer.ts +190 -0
- package/src/code-language/registry.ts +66 -0
- package/src/code-language/runs.ts +128 -0
- package/src/code-language/stream.ts +306 -0
- package/src/code-language/textmate.ts +134 -0
- package/src/code-language/theme.ts +124 -0
- package/src/code-language/timers.ts +36 -0
- package/src/code-language/types.ts +252 -0
- package/src/codeblock/index.ts +146 -0
- package/src/color-picker/ColorField.ts +333 -0
- package/src/color-picker/ColorPicker.ts +1069 -0
- package/src/color-picker/color.ts +399 -0
- package/src/color-picker/index.ts +50 -0
- package/src/desktop-calendar/eds.ts +484 -0
- package/src/desktop-calendar/ical.ts +119 -0
- package/src/desktop-calendar/index.ts +287 -0
- package/src/embed/client.ts +311 -0
- package/src/embed/host.ts +432 -0
- package/src/embed/index.ts +33 -0
- package/src/embed/timers.ts +32 -0
- package/src/flow/draw.ts +418 -0
- package/src/flow/index.ts +473 -0
- package/src/flow/model.ts +687 -0
- package/src/flow/node.ts +3694 -0
- package/src/flow/paths.ts +403 -0
- package/src/flow/types.ts +634 -0
- package/src/formula/hx.ts +51 -0
- package/src/formula/index.ts +243 -0
- package/src/formula/katex.ts +209 -0
- package/src/formula/layout.ts +876 -0
- package/src/formula/node.ts +467 -0
- package/src/html/controls.ts +244 -0
- package/src/html/css/cascade.ts +606 -0
- package/src/html/css/parse.ts +500 -0
- package/src/html/css/style.ts +1371 -0
- package/src/html/css/ua.ts +174 -0
- package/src/html/css/values.ts +358 -0
- package/src/html/dom.ts +410 -0
- package/src/html/hx.ts +55 -0
- package/src/html/index.ts +545 -0
- package/src/html/layout/block.ts +876 -0
- package/src/html/layout/boxes.ts +981 -0
- package/src/html/layout/flex.ts +297 -0
- package/src/html/layout/floats.ts +125 -0
- package/src/html/layout/inline.ts +870 -0
- package/src/html/layout/table.ts +380 -0
- package/src/html/node.ts +967 -0
- package/src/html/paint.ts +605 -0
- package/src/html/resources.ts +214 -0
- package/src/index.ts +638 -0
- package/src/internal/heights.ts +211 -0
- package/src/internal/hx.ts +53 -0
- package/src/internal/text.ts +44 -0
- package/src/internal/timers.ts +44 -0
- package/src/internal/widget.ts +92 -0
- package/src/markdown/ast.ts +163 -0
- package/src/markdown/hx.ts +51 -0
- package/src/markdown/index.ts +686 -0
- package/src/markdown/parse.ts +1037 -0
- package/src/markdown/spans.ts +143 -0
- package/src/media-player/backends.ts +155 -0
- package/src/media-player/control.ts +70 -0
- package/src/media-player/hx.ts +51 -0
- package/src/media-player/index.ts +378 -0
- package/src/media-player/mpv.ts +146 -0
- package/src/media-player/vlc.ts +97 -0
- package/src/richtext/index.ts +42 -0
- package/src/richtext/links.ts +78 -0
- package/src/richtext/menu.ts +49 -0
- package/src/richtext/node.ts +406 -0
- package/src/richtext/runs.ts +253 -0
- package/src/table/hx.ts +51 -0
- package/src/table/index.ts +1219 -0
- package/src/table/rows.ts +275 -0
- package/src/terminal/backends.ts +242 -0
- package/src/terminal/hx.ts +51 -0
- package/src/terminal/index.ts +574 -0
- package/src/terminal/title.ts +172 -0
- package/src/terminal/vt/colors.ts +247 -0
- package/src/terminal/vt/diff.ts +467 -0
- package/src/terminal/vt/fonts.ts +233 -0
- package/src/terminal/vt/index.ts +443 -0
- package/src/terminal/vt/keys.ts +369 -0
- package/src/terminal/vt/mouse.ts +144 -0
- package/src/terminal/vt/node.ts +1242 -0
- package/src/terminal/vt/pty.ts +334 -0
- package/src/terminal/vt/renderer.ts +555 -0
- package/src/terminal/vt/timers.ts +31 -0
- package/src/terminal/vt/xterm.ts +193 -0
- package/src/terminal-output/hx.ts +51 -0
- package/src/terminal-output/index.ts +340 -0
- package/src/terminal-output/runs.ts +79 -0
- package/src/three/canvas.ts +451 -0
- package/src/three/events.ts +197 -0
- package/src/three/geometries.ts +429 -0
- package/src/three/globals.ts +34 -0
- package/src/three/hx.ts +22 -0
- package/src/three/index.ts +98 -0
- package/src/three/jsx-dev-runtime.ts +27 -0
- package/src/three/jsx-runtime.ts +38 -0
- package/src/three/jsx.ts +275 -0
- package/src/three/materials.ts +270 -0
- package/src/three/math.ts +585 -0
- package/src/three/objects.ts +397 -0
- package/src/three/passes.ts +90 -0
- package/src/three/postprocess.ts +677 -0
- package/src/three/raycast.ts +189 -0
- package/src/three/react-reconciler.d.ts +50 -0
- package/src/three/reconciler.ts +624 -0
- package/src/three/renderer-direct.ts +1055 -0
- package/src/three/renderer-indirect.ts +570 -0
- package/src/three/store.ts +207 -0
- package/src/timeline/hx.ts +31 -0
- package/src/timeline/index.ts +603 -0
- package/src/tray-host/hx.ts +51 -0
- package/src/tray-host/index.ts +331 -0
- package/src/tray-host/manager.ts +639 -0
- package/src/tray-host/notify.ts +102 -0
- package/src/tray-host/protocol.ts +235 -0
- package/src/tree/hx.ts +51 -0
- package/src/tree/index.ts +1087 -0
- package/src/tree/internal.ts +87 -0
- package/src/tree/rows.ts +334 -0
- package/src/index.d.ts +0 -2
- package/src/index.js +0 -9
- package/src/sparkline/index.d.ts +0 -29
- package/src/sparkline/index.js +0 -50
- package/src/sparkline/node.js +0 -72
|
@@ -0,0 +1,615 @@
|
|
|
1
|
+
// <CodeEditor> — a multiline code editor: syntax highlighting through the
|
|
2
|
+
// pluggable language seam (built-in stream tokenizers, or Lezer / TextMate
|
|
3
|
+
// adapters), completion through async sources, LSP-shaped diagnostics.
|
|
4
|
+
//
|
|
5
|
+
// **Registration happens when this module is evaluated**, and that is the
|
|
6
|
+
// design, not a shortcut: nothing in the package registers anything until an
|
|
7
|
+
// app imports the component that needs it, so `sideEffects: false` stays
|
|
8
|
+
// honest and an app that never renders a code editor ships none of this. Do
|
|
9
|
+
// not move registration up into `../index.ts` — that is the one edit that
|
|
10
|
+
// would make the barrel pull every component into every bundle.
|
|
11
|
+
//
|
|
12
|
+
// The split of labour with `./node.ts`: the node owns the text model and the
|
|
13
|
+
// pixels; this file owns registration, the React component that wires input
|
|
14
|
+
// props to the node's `handle*` methods (user handlers run first, exactly
|
|
15
|
+
// core's ordering), and the completion popup — which is plain composition
|
|
16
|
+
// over `<popup>`, so an app can ignore it and build its own from the same
|
|
17
|
+
// `CompletionSource`s.
|
|
18
|
+
import React, { useCallback, useRef, useState } from 'react';
|
|
19
|
+
import type { ReactElement, ReactNode, Ref, RefObject } from 'react';
|
|
20
|
+
import { registerElement, registeredElements } from 'react-x11/host';
|
|
21
|
+
import { useTheme } from 'react-x11';
|
|
22
|
+
import type {
|
|
23
|
+
DrawnNode,
|
|
24
|
+
FocusEvent,
|
|
25
|
+
KeyboardEvent,
|
|
26
|
+
MouseEvent,
|
|
27
|
+
WheelEvent,
|
|
28
|
+
} from 'react-x11';
|
|
29
|
+
import type { Style } from 'react-x11/style';
|
|
30
|
+
import {
|
|
31
|
+
XK_BACKSPACE,
|
|
32
|
+
XK_DOWN,
|
|
33
|
+
XK_ESCAPE,
|
|
34
|
+
XK_PAGE_DOWN,
|
|
35
|
+
XK_PAGE_UP,
|
|
36
|
+
XK_RETURN,
|
|
37
|
+
XK_SPACE,
|
|
38
|
+
XK_TAB,
|
|
39
|
+
XK_UP,
|
|
40
|
+
} from 'react-x11/keysyms';
|
|
41
|
+
|
|
42
|
+
// Loads the module the JSX augmentation at the bottom targets — nothing in
|
|
43
|
+
// `src/` writes JSX, so the build has no other reason to resolve it.
|
|
44
|
+
import type {} from 'react-x11/jsx-runtime';
|
|
45
|
+
|
|
46
|
+
import { hx } from './hx.js';
|
|
47
|
+
import { microtask } from '../code-language/timers.js';
|
|
48
|
+
import { CodeEditorNode, ELEMENT } from './node.js';
|
|
49
|
+
import type {
|
|
50
|
+
CodeEditorEvent,
|
|
51
|
+
CodeEditorHandle,
|
|
52
|
+
CodeEditorProps,
|
|
53
|
+
} from './node.js';
|
|
54
|
+
import { rankCompletions } from './completion.js';
|
|
55
|
+
import type {
|
|
56
|
+
CompletionContext,
|
|
57
|
+
CompletionItem,
|
|
58
|
+
CompletionResult,
|
|
59
|
+
CompletionSource,
|
|
60
|
+
Position,
|
|
61
|
+
} from '../code-language/types.js';
|
|
62
|
+
import { wordRangeAt } from './doc.js';
|
|
63
|
+
|
|
64
|
+
export { ELEMENT as CODE_EDITOR_ELEMENT };
|
|
65
|
+
export { CodeEditorNode };
|
|
66
|
+
export type { CodeEditorEvent, CodeEditorHandle, CodeEditorProps };
|
|
67
|
+
|
|
68
|
+
if (!registeredElements().includes(ELEMENT)) {
|
|
69
|
+
registerElement(ELEMENT, {
|
|
70
|
+
create: (props, app) => new CodeEditorNode(props, app),
|
|
71
|
+
// none of the editor's prop names collide with the style vocabulary
|
|
72
|
+
// today; `rows` and the colour props are its own the way they are
|
|
73
|
+
// `<textinput>`'s. Declared anyway for the two an audit flagged as
|
|
74
|
+
// near-misses, so a future style vocabulary addition fails loudly here
|
|
75
|
+
// rather than silently in an app.
|
|
76
|
+
semanticNames: ['rows', 'tabSize'],
|
|
77
|
+
childrenAllowed: false,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
const MAX_VISIBLE_COMPLETIONS = 8;
|
|
82
|
+
const MAX_COMPLETIONS = 100;
|
|
83
|
+
/** A word character for the "should typing reopen the popup" test. */
|
|
84
|
+
const TRIGGER_CHAR = /[\p{L}\p{N}_.$]/u;
|
|
85
|
+
/** What the list may shrink to, and grow to, around its labels. Bounds
|
|
86
|
+
* rather than a width: the popup measures its own rows (see below). */
|
|
87
|
+
const MIN_COMPLETION_WIDTH = 180;
|
|
88
|
+
const MAX_COMPLETION_WIDTH = 480;
|
|
89
|
+
|
|
90
|
+
interface CompletionState {
|
|
91
|
+
items: CompletionItem[];
|
|
92
|
+
/** Replacement start, per item source (parallel to items). */
|
|
93
|
+
froms: (Position | undefined)[];
|
|
94
|
+
from: Position; // the default (word start)
|
|
95
|
+
selected: number;
|
|
96
|
+
/** First visible row — the popup shows a window of the list. */
|
|
97
|
+
offset: number;
|
|
98
|
+
/** The caret, in the **editor's own coordinates** — the popup's `at`. */
|
|
99
|
+
at: { x: number; y: number; width: number; height: number };
|
|
100
|
+
rowHeight: number;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/** What `<CodeEditor completionSources>` takes — re-exported seam types. */
|
|
104
|
+
export type {
|
|
105
|
+
CompletionContext,
|
|
106
|
+
CompletionItem,
|
|
107
|
+
CompletionResult,
|
|
108
|
+
CompletionSource,
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
export interface CodeEditorComponentProps extends CodeEditorProps {
|
|
112
|
+
/** Completion providers. Absent → completion is off entirely. */
|
|
113
|
+
completionSources?: readonly CompletionSource[];
|
|
114
|
+
/** Query sources while typing (default true when sources are given);
|
|
115
|
+
* Ctrl+Space always works. */
|
|
116
|
+
autoComplete?: boolean;
|
|
117
|
+
focusable?: boolean;
|
|
118
|
+
autoFocus?: boolean;
|
|
119
|
+
disabled?: boolean;
|
|
120
|
+
/** The editor's imperative surface: `ref.current.value`, `.undo()`,
|
|
121
|
+
* `.replaceRange(…)`, `.focus()` — see {@link CodeEditorHandle}. */
|
|
122
|
+
ref?: Ref<CodeEditorHandle | null>;
|
|
123
|
+
onKeyDown?: (ev: KeyboardEvent) => void;
|
|
124
|
+
onMouseDown?: (ev: MouseEvent) => void;
|
|
125
|
+
onFocus?: (ev: FocusEvent) => void;
|
|
126
|
+
onBlur?: (ev: FocusEvent) => void;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
const editorDefaults: Style = {
|
|
130
|
+
fontFamily: 'monospace',
|
|
131
|
+
fontSize: 13,
|
|
132
|
+
padding: 8,
|
|
133
|
+
borderWidth: 1,
|
|
134
|
+
cursor: 'text',
|
|
135
|
+
// theme tokens, so an unstyled editor is legible on a light *and* a dark
|
|
136
|
+
// desktop: the node also picks its token palette from the resolved
|
|
137
|
+
// background (see `_tokenStyles`), and the caret follows `color`
|
|
138
|
+
color: '$text',
|
|
139
|
+
backgroundColor: '$background',
|
|
140
|
+
borderColor: '$border',
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* ```tsx
|
|
145
|
+
* <CodeEditor
|
|
146
|
+
* language={sql()}
|
|
147
|
+
* value={query}
|
|
148
|
+
* onChange={(ev) => setQuery(ev.value)}
|
|
149
|
+
* completionSources={[keywordCompletionSource(), sqlCompletionSource(schema)]}
|
|
150
|
+
* lineNumbers
|
|
151
|
+
* style={{ flexGrow: 1 }}
|
|
152
|
+
* />
|
|
153
|
+
* ```
|
|
154
|
+
*/
|
|
155
|
+
export function CodeEditor(props: CodeEditorComponentProps): ReactElement {
|
|
156
|
+
const {
|
|
157
|
+
completionSources,
|
|
158
|
+
autoComplete = true,
|
|
159
|
+
focusable = true,
|
|
160
|
+
autoFocus,
|
|
161
|
+
disabled,
|
|
162
|
+
ref,
|
|
163
|
+
onKeyDown: userKeyDown,
|
|
164
|
+
onMouseDown: userMouseDown,
|
|
165
|
+
onFocus: userFocus,
|
|
166
|
+
onBlur: userBlur,
|
|
167
|
+
style,
|
|
168
|
+
...nodeProps
|
|
169
|
+
} = props;
|
|
170
|
+
|
|
171
|
+
const theme = useTheme();
|
|
172
|
+
const nodeRef = useRef<CodeEditorNode | null>(null);
|
|
173
|
+
const [completion, setCompletion] = useState<CompletionState | null>(null);
|
|
174
|
+
// bumped per query; a stale async result compares and drops itself
|
|
175
|
+
const queryId = useRef(0);
|
|
176
|
+
|
|
177
|
+
const setNode = useCallback(
|
|
178
|
+
(n: unknown) => {
|
|
179
|
+
nodeRef.current = n as CodeEditorNode | null;
|
|
180
|
+
if (typeof ref === 'function') ref(nodeRef.current);
|
|
181
|
+
else if (ref) ref.current = nodeRef.current;
|
|
182
|
+
},
|
|
183
|
+
[ref],
|
|
184
|
+
);
|
|
185
|
+
|
|
186
|
+
const close = useCallback(() => setCompletion(null), []);
|
|
187
|
+
|
|
188
|
+
const query = useCallback(
|
|
189
|
+
(trigger: 'input' | 'explicit') => {
|
|
190
|
+
const node = nodeRef.current;
|
|
191
|
+
if (!node || !completionSources || completionSources.length === 0) {
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
// a snapshot: the node's own array is live across edits, and an async
|
|
195
|
+
// source must not see it move out from under the `pos` it was given
|
|
196
|
+
const lines = node.lines.slice();
|
|
197
|
+
const pos = node.selection.head;
|
|
198
|
+
const wordChars = node.language?.data?.wordChars ?? '';
|
|
199
|
+
const range = wordRangeAt(lines[pos.line], pos.ch, wordChars);
|
|
200
|
+
const wordFrom = Math.min(range.from, pos.ch);
|
|
201
|
+
const context: CompletionContext = {
|
|
202
|
+
lines,
|
|
203
|
+
pos,
|
|
204
|
+
word: {
|
|
205
|
+
from: { line: pos.line, ch: wordFrom },
|
|
206
|
+
text: lines[pos.line].slice(wordFrom, pos.ch),
|
|
207
|
+
},
|
|
208
|
+
trigger,
|
|
209
|
+
language: node.language,
|
|
210
|
+
};
|
|
211
|
+
const id = ++queryId.current;
|
|
212
|
+
const stamp = `${node.value}\u0000${pos.line}:${pos.ch}`;
|
|
213
|
+
Promise.all(
|
|
214
|
+
completionSources.map((source) =>
|
|
215
|
+
Promise.resolve()
|
|
216
|
+
.then(() => source(context))
|
|
217
|
+
.catch(() => null),
|
|
218
|
+
),
|
|
219
|
+
).then((results) => {
|
|
220
|
+
const node2 = nodeRef.current;
|
|
221
|
+
if (id !== queryId.current || !node2 || node2.destroyed) return;
|
|
222
|
+
const pos2 = node2.selection.head;
|
|
223
|
+
if (`${node2.value}\u0000${pos2.line}:${pos2.ch}` !== stamp) return;
|
|
224
|
+
openPopup(node2, context, results);
|
|
225
|
+
});
|
|
226
|
+
},
|
|
227
|
+
[completionSources],
|
|
228
|
+
);
|
|
229
|
+
|
|
230
|
+
const openPopup = (
|
|
231
|
+
node: CodeEditorNode,
|
|
232
|
+
context: CompletionContext,
|
|
233
|
+
results: (CompletionResult | null)[],
|
|
234
|
+
): void => {
|
|
235
|
+
const items: CompletionItem[] = [];
|
|
236
|
+
const froms: (Position | undefined)[] = [];
|
|
237
|
+
const seen = new Set<string>();
|
|
238
|
+
for (const result of results) {
|
|
239
|
+
if (!result) continue;
|
|
240
|
+
const ranked = rankCompletions(result.items, context.word.text);
|
|
241
|
+
for (const item of ranked) {
|
|
242
|
+
const key = `${item.kind ?? ''}\u0000${item.label}`;
|
|
243
|
+
if (seen.has(key)) continue;
|
|
244
|
+
seen.add(key);
|
|
245
|
+
items.push(item);
|
|
246
|
+
froms.push(result.from);
|
|
247
|
+
if (items.length >= MAX_COMPLETIONS) break;
|
|
248
|
+
}
|
|
249
|
+
if (items.length >= MAX_COMPLETIONS) break;
|
|
250
|
+
}
|
|
251
|
+
// re-rank across sources so a better match from a later source wins
|
|
252
|
+
const order = rankCompletions(items, context.word.text);
|
|
253
|
+
const orderedFroms = order.map((item) => froms[items.indexOf(item)]);
|
|
254
|
+
if (order.length === 0) {
|
|
255
|
+
setCompletion(null);
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
// Geometry stops here: the caret rect is all the popup needs, and it is
|
|
259
|
+
// already in the editor's own coordinates, which is what `at` wants
|
|
260
|
+
// (react-x11#280). Where that lands on screen, which side of the line
|
|
261
|
+
// the list opens on, and how wide it is are all worked out by the popup
|
|
262
|
+
// itself — see the `anchor` below for why they have to be.
|
|
263
|
+
const caret = node.caretRect();
|
|
264
|
+
const rowHeight = Math.ceil(node.metrics().lineHeight) + 6;
|
|
265
|
+
setCompletion({
|
|
266
|
+
items: order,
|
|
267
|
+
froms: orderedFroms,
|
|
268
|
+
from: context.word.from,
|
|
269
|
+
selected: 0,
|
|
270
|
+
offset: 0,
|
|
271
|
+
at: { x: caret.x, y: caret.y, width: 1, height: caret.height },
|
|
272
|
+
rowHeight,
|
|
273
|
+
});
|
|
274
|
+
};
|
|
275
|
+
|
|
276
|
+
const accept = (state: CompletionState, index: number): void => {
|
|
277
|
+
const node = nodeRef.current;
|
|
278
|
+
if (!node) return;
|
|
279
|
+
const item = state.items[index];
|
|
280
|
+
if (!item) return;
|
|
281
|
+
const from = state.froms[index] ?? state.from;
|
|
282
|
+
node.replaceRange(from, node.selection.head, item.apply ?? item.label);
|
|
283
|
+
setCompletion(null);
|
|
284
|
+
};
|
|
285
|
+
|
|
286
|
+
const moveSelection = (state: CompletionState, delta: number): void => {
|
|
287
|
+
const count = state.items.length;
|
|
288
|
+
const selected = Math.max(0, Math.min(count - 1, state.selected + delta));
|
|
289
|
+
let offset = state.offset;
|
|
290
|
+
if (selected < offset) offset = selected;
|
|
291
|
+
if (selected >= offset + MAX_VISIBLE_COMPLETIONS) {
|
|
292
|
+
offset = selected - MAX_VISIBLE_COMPLETIONS + 1;
|
|
293
|
+
}
|
|
294
|
+
setCompletion({ ...state, selected, offset });
|
|
295
|
+
};
|
|
296
|
+
|
|
297
|
+
// The completion popup's own keys, as an ordinary user-level handler: it
|
|
298
|
+
// runs before the element's default action (react-x11#266), so consuming a
|
|
299
|
+
// key here is exactly what stops the editor from also acting on it. The
|
|
300
|
+
// editing keys, and the Escape-arms-one-Tab bargain that keeps the editor
|
|
301
|
+
// from being a keyboard trap, belong to the node and are not repeated.
|
|
302
|
+
const handleKeyDown = (ev: KeyboardEvent): void => {
|
|
303
|
+
userKeyDown?.(ev);
|
|
304
|
+
if (ev.defaultPrevented) return;
|
|
305
|
+
const node = nodeRef.current;
|
|
306
|
+
if (!node || disabled) return;
|
|
307
|
+
const k = ev.keysym;
|
|
308
|
+
|
|
309
|
+
if (completion) {
|
|
310
|
+
if (k === XK_DOWN || k === XK_UP) {
|
|
311
|
+
moveSelection(completion, k === XK_DOWN ? 1 : -1);
|
|
312
|
+
ev.preventDefault();
|
|
313
|
+
return;
|
|
314
|
+
}
|
|
315
|
+
if (k === XK_PAGE_DOWN || k === XK_PAGE_UP) {
|
|
316
|
+
moveSelection(
|
|
317
|
+
completion,
|
|
318
|
+
(k === XK_PAGE_DOWN ? 1 : -1) * MAX_VISIBLE_COMPLETIONS,
|
|
319
|
+
);
|
|
320
|
+
ev.preventDefault();
|
|
321
|
+
return;
|
|
322
|
+
}
|
|
323
|
+
if (k === XK_RETURN || (k === XK_TAB && !ev.shiftKey)) {
|
|
324
|
+
accept(completion, completion.selected);
|
|
325
|
+
ev.preventDefault();
|
|
326
|
+
return;
|
|
327
|
+
}
|
|
328
|
+
if (k === XK_ESCAPE) {
|
|
329
|
+
close();
|
|
330
|
+
ev.preventDefault();
|
|
331
|
+
return;
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
// Ctrl+Space: explicit completion
|
|
336
|
+
if (
|
|
337
|
+
ev.ctrlKey &&
|
|
338
|
+
(k === XK_SPACE || ev.codepoint === 0x20) &&
|
|
339
|
+
completionSources?.length
|
|
340
|
+
) {
|
|
341
|
+
query('explicit');
|
|
342
|
+
ev.preventDefault();
|
|
343
|
+
return;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
// Escape with no popup open is the node's (it arms the Tab-out), and a
|
|
347
|
+
// Tab it lets through is leaving the editor: either way the popup that
|
|
348
|
+
// is not open needs nothing, but a stale one must not outlive the move.
|
|
349
|
+
if (k === XK_ESCAPE || k === XK_TAB) close();
|
|
350
|
+
|
|
351
|
+
// After the edit the node is about to make: retrigger or dismiss. In a
|
|
352
|
+
// microtask because the default action has not run yet — the text this
|
|
353
|
+
// reads is the text the key is about to produce.
|
|
354
|
+
if (!completionSources || completionSources.length === 0) return;
|
|
355
|
+
const typed =
|
|
356
|
+
ev.codepoint != null && ev.codepoint >= 0x20 && !ev.ctrlKey
|
|
357
|
+
? String.fromCodePoint(ev.codepoint)
|
|
358
|
+
: null;
|
|
359
|
+
const editKey = typed !== null || k === XK_BACKSPACE;
|
|
360
|
+
if (completion) {
|
|
361
|
+
if (editKey) microtask(() => query('input'));
|
|
362
|
+
else close();
|
|
363
|
+
} else if (
|
|
364
|
+
autoComplete &&
|
|
365
|
+
typed !== null &&
|
|
366
|
+
TRIGGER_CHAR.test(typed) &&
|
|
367
|
+
!node.props.readOnly
|
|
368
|
+
) {
|
|
369
|
+
microtask(() => query('input'));
|
|
370
|
+
}
|
|
371
|
+
};
|
|
372
|
+
|
|
373
|
+
const handleMouseDown = (ev: MouseEvent): void => {
|
|
374
|
+
userMouseDown?.(ev);
|
|
375
|
+
if (ev.defaultPrevented) return;
|
|
376
|
+
close();
|
|
377
|
+
};
|
|
378
|
+
|
|
379
|
+
const rows: ReactNode[] = [];
|
|
380
|
+
if (completion) {
|
|
381
|
+
const m = nodeRef.current?.metrics();
|
|
382
|
+
const visible = completion.items.slice(
|
|
383
|
+
completion.offset,
|
|
384
|
+
completion.offset + MAX_VISIBLE_COMPLETIONS,
|
|
385
|
+
);
|
|
386
|
+
visible.forEach((item, i) => {
|
|
387
|
+
const index = completion.offset + i;
|
|
388
|
+
const selected = index === completion.selected;
|
|
389
|
+
rows.push(
|
|
390
|
+
hx(
|
|
391
|
+
'box',
|
|
392
|
+
{
|
|
393
|
+
key: `${item.kind ?? ''}:${item.label}`,
|
|
394
|
+
style: {
|
|
395
|
+
flexDirection: 'row',
|
|
396
|
+
alignItems: 'center',
|
|
397
|
+
gap: 12,
|
|
398
|
+
paddingLeft: 8,
|
|
399
|
+
paddingRight: 8,
|
|
400
|
+
height: completion.rowHeight,
|
|
401
|
+
backgroundColor: selected ? theme.accent : 'transparent',
|
|
402
|
+
},
|
|
403
|
+
onMouseDown: (rowEv: MouseEvent) => {
|
|
404
|
+
rowEv.preventDefault();
|
|
405
|
+
accept(completion, index);
|
|
406
|
+
},
|
|
407
|
+
},
|
|
408
|
+
hx(
|
|
409
|
+
'text',
|
|
410
|
+
{
|
|
411
|
+
style: {
|
|
412
|
+
fontFamily: m?.family ?? 'monospace',
|
|
413
|
+
fontSize: m?.size ?? 13,
|
|
414
|
+
color: selected ? theme.accentText : theme.text,
|
|
415
|
+
flexGrow: 1,
|
|
416
|
+
},
|
|
417
|
+
},
|
|
418
|
+
item.label,
|
|
419
|
+
),
|
|
420
|
+
item.detail
|
|
421
|
+
? hx(
|
|
422
|
+
'text',
|
|
423
|
+
{
|
|
424
|
+
style: {
|
|
425
|
+
fontSize: Math.max(10, (m?.size ?? 13) - 2),
|
|
426
|
+
color: selected ? theme.accentText : theme.textMuted,
|
|
427
|
+
},
|
|
428
|
+
},
|
|
429
|
+
item.detail,
|
|
430
|
+
)
|
|
431
|
+
: null,
|
|
432
|
+
),
|
|
433
|
+
);
|
|
434
|
+
});
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
// The editor element itself, plus (while open) the completion popup. A
|
|
438
|
+
// fragment rather than a wrapper box: a `<popup>` is its own X window and
|
|
439
|
+
// never participates in the parent's layout, so the app's style lands
|
|
440
|
+
// directly on the editor node with no extra layout node in between.
|
|
441
|
+
// No `theme` prop on the element: the node must inherit the nearest
|
|
442
|
+
// node-level theme (a `<window theme>` above it), and stamping the React
|
|
443
|
+
// context's palette here would override that with the default scheme —
|
|
444
|
+
// the editors-render-light-on-a-dark-window bug. The popup below is a
|
|
445
|
+
// separate X window that inherits nothing, so it does take the context
|
|
446
|
+
// theme, same as the calendar's popups.
|
|
447
|
+
const editor = React.createElement(ELEMENT, {
|
|
448
|
+
...(nodeProps as Record<string, unknown>),
|
|
449
|
+
ref: setNode,
|
|
450
|
+
// `focusableByDefault` on the node already makes a bare <codeeditor> a
|
|
451
|
+
// tab stop; this is the app's override, and what keeps a disabled
|
|
452
|
+
// editor out of the tab order entirely.
|
|
453
|
+
focusable: focusable && !disabled,
|
|
454
|
+
disabled,
|
|
455
|
+
autoFocus,
|
|
456
|
+
role: 'textbox',
|
|
457
|
+
onKeyDown: handleKeyDown,
|
|
458
|
+
onMouseDown: handleMouseDown,
|
|
459
|
+
// Caret placement, drag-selection, focus and the caret blink are the
|
|
460
|
+
// node's default actions now. Wheel has no default-action hook, so it
|
|
461
|
+
// stays wired here.
|
|
462
|
+
onWheel: (ev: WheelEvent) => {
|
|
463
|
+
if (disabled) return;
|
|
464
|
+
if (nodeRef.current?.handleWheel(ev)) ev.preventDefault();
|
|
465
|
+
},
|
|
466
|
+
onFocus: userFocus,
|
|
467
|
+
onBlur: (ev: FocusEvent) => {
|
|
468
|
+
close();
|
|
469
|
+
userBlur?.(ev);
|
|
470
|
+
},
|
|
471
|
+
style: [editorDefaults, style as Style],
|
|
472
|
+
});
|
|
473
|
+
|
|
474
|
+
const popup =
|
|
475
|
+
completion &&
|
|
476
|
+
hx(
|
|
477
|
+
'popup',
|
|
478
|
+
{
|
|
479
|
+
theme,
|
|
480
|
+
// The popup places itself (react-x11#280), and it is the only thing
|
|
481
|
+
// that can: with no `width`/`height` it is sized by the rows it
|
|
482
|
+
// happens to be showing, and that size is settled after the content
|
|
483
|
+
// is measured and before the window exists — past the last commit
|
|
484
|
+
// that could have handed a rect in. Which side of the caret line the
|
|
485
|
+
// list opens on is a function of that size, so it is core's answer
|
|
486
|
+
// too, and it is taken against the usable part of the monitor rather
|
|
487
|
+
// than the guess at the owner window this made before.
|
|
488
|
+
//
|
|
489
|
+
// `at` is the caret **inside** the editor, so the list opens on the
|
|
490
|
+
// line being typed rather than under the editor, and follows it
|
|
491
|
+
// through everything that can move it: the editor's own layout, an
|
|
492
|
+
// ancestor scrolling, the window being dragged. When the caret
|
|
493
|
+
// scrolls out of the editor the popup unmaps until it is back — a
|
|
494
|
+
// list floating over text it no longer points into has no position
|
|
495
|
+
// worth having.
|
|
496
|
+
anchor: {
|
|
497
|
+
to: nodeRef as unknown as RefObject<DrawnNode | null>,
|
|
498
|
+
at: completion.at,
|
|
499
|
+
placement: 'bottom',
|
|
500
|
+
},
|
|
501
|
+
// The bounds the label measuring used to enforce by hand.
|
|
502
|
+
minWidth: MIN_COMPLETION_WIDTH,
|
|
503
|
+
maxWidth: MAX_COMPLETION_WIDTH,
|
|
504
|
+
// the grab is what dismisses on an outside press, menu-style; the
|
|
505
|
+
// popup never takes focus, so typing continues in the editor
|
|
506
|
+
grab: true,
|
|
507
|
+
onDismiss: close,
|
|
508
|
+
},
|
|
509
|
+
hx(
|
|
510
|
+
'box',
|
|
511
|
+
{
|
|
512
|
+
style: {
|
|
513
|
+
flexGrow: 1,
|
|
514
|
+
flexDirection: 'column',
|
|
515
|
+
borderWidth: 1,
|
|
516
|
+
borderColor: theme.border,
|
|
517
|
+
backgroundColor: theme.background,
|
|
518
|
+
},
|
|
519
|
+
},
|
|
520
|
+
...rows,
|
|
521
|
+
),
|
|
522
|
+
);
|
|
523
|
+
|
|
524
|
+
return React.createElement(React.Fragment, null, editor, popup);
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
/**
|
|
528
|
+
* What the raw `<codeeditor>` element takes: the node's props plus the
|
|
529
|
+
* interaction surface the component normally wires for you. A named
|
|
530
|
+
* interface rather than an inline type in the augmentation below, because
|
|
531
|
+
* the augmentation exists twice in a checkout that compiles both `src/` and
|
|
532
|
+
* `dist/` (the packaging test imports the built package by name), and two
|
|
533
|
+
* property declarations only merge when they reference the same-shaped
|
|
534
|
+
* named type.
|
|
535
|
+
*/
|
|
536
|
+
export interface CodeEditorElementProps extends CodeEditorProps {
|
|
537
|
+
focusable?: boolean;
|
|
538
|
+
autoFocus?: boolean;
|
|
539
|
+
role?: string;
|
|
540
|
+
ref?: Ref<unknown>;
|
|
541
|
+
onKeyDown?: (ev: KeyboardEvent) => void;
|
|
542
|
+
onMouseDown?: (ev: MouseEvent) => void;
|
|
543
|
+
onMouseMove?: (ev: MouseEvent) => void;
|
|
544
|
+
onMouseUp?: (ev: MouseEvent) => void;
|
|
545
|
+
onWheel?: (ev: WheelEvent) => void;
|
|
546
|
+
onFocus?: (ev: FocusEvent) => void;
|
|
547
|
+
onBlur?: (ev: FocusEvent) => void;
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
// Importing this module teaches JSX the raw element too.
|
|
551
|
+
declare module 'react-x11/jsx-runtime' {
|
|
552
|
+
namespace JSX {
|
|
553
|
+
interface IntrinsicElements {
|
|
554
|
+
codeeditor: CodeEditorElementProps;
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
// The language + completion surface, re-exported so one import serves the
|
|
560
|
+
// whole feature. Each language module is pure until called, so a bundler
|
|
561
|
+
// keeps only what an app touches.
|
|
562
|
+
export {
|
|
563
|
+
lineModeLanguage,
|
|
564
|
+
streamLanguage,
|
|
565
|
+
StringStream,
|
|
566
|
+
} from '../code-language/stream.js';
|
|
567
|
+
export type { LineMode, StreamMode } from '../code-language/stream.js';
|
|
568
|
+
export { sql } from '../code-language/languages/sql.js';
|
|
569
|
+
export type { SqlOptions } from '../code-language/languages/sql.js';
|
|
570
|
+
export { shell } from '../code-language/languages/shell.js';
|
|
571
|
+
export { glsl } from '../code-language/languages/glsl.js';
|
|
572
|
+
export { javascript } from '../code-language/languages/javascript.js';
|
|
573
|
+
export type { JavascriptOptions } from '../code-language/languages/javascript.js';
|
|
574
|
+
export { json } from '../code-language/languages/json.js';
|
|
575
|
+
export {
|
|
576
|
+
keywordCompletionSource,
|
|
577
|
+
rankCompletions,
|
|
578
|
+
sqlCompletionSource,
|
|
579
|
+
wordCompletionSource,
|
|
580
|
+
} from './completion.js';
|
|
581
|
+
export type { SqlSchema } from './completion.js';
|
|
582
|
+
export {
|
|
583
|
+
autoTokenStyles,
|
|
584
|
+
DARK_TOKEN_STYLES,
|
|
585
|
+
isDarkBackground,
|
|
586
|
+
LIGHT_TOKEN_STYLES,
|
|
587
|
+
tokenStyleFor,
|
|
588
|
+
} from '../code-language/theme.js';
|
|
589
|
+
export { lezerLanguage } from '../code-language/lezer.js';
|
|
590
|
+
export type {
|
|
591
|
+
LezerHighlightLike,
|
|
592
|
+
LezerLanguageOptions,
|
|
593
|
+
LezerParserLike,
|
|
594
|
+
} from '../code-language/lezer.js';
|
|
595
|
+
export { textMateLanguage } from '../code-language/textmate.js';
|
|
596
|
+
export type {
|
|
597
|
+
TextMateGrammarLike,
|
|
598
|
+
TextMateLanguageOptions,
|
|
599
|
+
TextMateStateLike,
|
|
600
|
+
} from '../code-language/textmate.js';
|
|
601
|
+
export type {
|
|
602
|
+
Diagnostic,
|
|
603
|
+
Language,
|
|
604
|
+
LanguageData,
|
|
605
|
+
LineEdit,
|
|
606
|
+
Position,
|
|
607
|
+
Selection,
|
|
608
|
+
Token,
|
|
609
|
+
Tokenizer,
|
|
610
|
+
TokenizerHost,
|
|
611
|
+
TokenStyle,
|
|
612
|
+
TokenStyles,
|
|
613
|
+
TokenType,
|
|
614
|
+
} from '../code-language/types.js';
|
|
615
|
+
export { TOKEN_FALLBACK } from '../code-language/types.js';
|