@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,165 @@
|
|
|
1
|
+
// SQL, as a stream mode. Written here rather than pulled from an ecosystem
|
|
2
|
+
// because the obvious donor (`@codemirror/lang-sql`) depends on the whole
|
|
3
|
+
// CodeMirror editor core (`@codemirror/state`, `language`, `autocomplete`),
|
|
4
|
+
// which is a lot of install closure for a keyword list — see AGENTS.md on
|
|
5
|
+
// why that trade is taken seriously. Tokenizing SQL (not parsing it!) is
|
|
6
|
+
// small: strings, quoted identifiers, comments, numbers, parameters,
|
|
7
|
+
// keywords.
|
|
8
|
+
import { streamLanguage } from '../stream.js';
|
|
9
|
+
import type { StringStream } from '../stream.js';
|
|
10
|
+
import type { Language } from '../types.js';
|
|
11
|
+
|
|
12
|
+
const KEYWORDS = new Set(
|
|
13
|
+
(
|
|
14
|
+
'add all alter and any as asc autoincrement between by cascade case cast ' +
|
|
15
|
+
'check collate column commit constraint create cross current current_date ' +
|
|
16
|
+
'current_time current_timestamp database default delete desc distinct drop ' +
|
|
17
|
+
'else end escape except exists explain fetch filter first following for ' +
|
|
18
|
+
'foreign from full generated group grouping having if ignore ilike in index ' +
|
|
19
|
+
'inner insert intersect into is join key last lateral left like limit ' +
|
|
20
|
+
'materialized natural no not null nulls of offset on only or order outer ' +
|
|
21
|
+
'over partition preceding primary range recursive references rename ' +
|
|
22
|
+
'replace restrict returning right rollback row rows select set show some ' +
|
|
23
|
+
'table temporary then to transaction trigger truncate union unique update ' +
|
|
24
|
+
'using values view when where window with without'
|
|
25
|
+
).split(' '),
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
const TYPES = new Set(
|
|
29
|
+
(
|
|
30
|
+
'bigint binary bit blob boolean char character clob date datetime decimal ' +
|
|
31
|
+
'double enum float int integer interval json jsonb numeric precision real ' +
|
|
32
|
+
'serial smallint text time timestamp timestamptz tinyint uuid varbinary ' +
|
|
33
|
+
'varchar'
|
|
34
|
+
).split(' '),
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
const BUILTINS = new Set(
|
|
38
|
+
(
|
|
39
|
+
'abs avg ceil coalesce concat count floor greatest ifnull least length ' +
|
|
40
|
+
'lower ltrim max min mod now nullif power random round rtrim substr ' +
|
|
41
|
+
'substring sum trim upper'
|
|
42
|
+
).split(' '),
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
const ATOMS = new Set(['true', 'false', 'unknown']);
|
|
46
|
+
|
|
47
|
+
const OPERATOR = /[+\-*/<>=~!|&%^]/;
|
|
48
|
+
const PUNCT = /[;,.]/;
|
|
49
|
+
const BRACKET = /[()]/;
|
|
50
|
+
|
|
51
|
+
interface SqlState {
|
|
52
|
+
/** Inside a `/* … */` comment that has not closed yet. */
|
|
53
|
+
comment: boolean;
|
|
54
|
+
/** Inside a `'…'` string that has not closed yet — SQL strings may span
|
|
55
|
+
* lines. */
|
|
56
|
+
string: boolean;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/** Consume string content until an un-doubled closing quote or the line
|
|
60
|
+
* ends; report whether it closed. */
|
|
61
|
+
function eatStringTail(stream: StringStream): boolean {
|
|
62
|
+
while (!stream.eol()) {
|
|
63
|
+
if (stream.eat("'")) {
|
|
64
|
+
if (!stream.eat("'")) return true; // a lone quote closes; '' is an escape
|
|
65
|
+
} else {
|
|
66
|
+
stream.next();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/** Options for {@link sql}. All additive — the base is generic ANSI-ish. */
|
|
73
|
+
export interface SqlOptions {
|
|
74
|
+
/** Extra keywords, e.g. a dialect's. Matched case-insensitively. */
|
|
75
|
+
keywords?: readonly string[];
|
|
76
|
+
/** Treat `#` as a line comment (MySQL). `--` and `/* */` always work. */
|
|
77
|
+
hashComments?: boolean;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/** SQL. `sql()` for the generic dialect, options for the house one. */
|
|
81
|
+
export function sql(options: SqlOptions = {}): Language {
|
|
82
|
+
const extra = new Set(
|
|
83
|
+
(options.keywords ?? []).map((word) => word.toLowerCase()),
|
|
84
|
+
);
|
|
85
|
+
|
|
86
|
+
function token(stream: StringStream, state: SqlState): string | null {
|
|
87
|
+
if (state.comment) {
|
|
88
|
+
if (stream.match(/^.*?\*\//)) state.comment = false;
|
|
89
|
+
else stream.skipToEnd();
|
|
90
|
+
return 'comment';
|
|
91
|
+
}
|
|
92
|
+
if (state.string) {
|
|
93
|
+
state.string = !eatStringTail(stream);
|
|
94
|
+
return 'string';
|
|
95
|
+
}
|
|
96
|
+
if (stream.eatSpace()) return null;
|
|
97
|
+
|
|
98
|
+
if (stream.match('--')) {
|
|
99
|
+
stream.skipToEnd();
|
|
100
|
+
return 'comment';
|
|
101
|
+
}
|
|
102
|
+
if (options.hashComments && stream.match('#')) {
|
|
103
|
+
stream.skipToEnd();
|
|
104
|
+
return 'comment';
|
|
105
|
+
}
|
|
106
|
+
if (stream.match('/*')) {
|
|
107
|
+
state.comment = true;
|
|
108
|
+
if (stream.match(/^.*?\*\//)) state.comment = false;
|
|
109
|
+
else stream.skipToEnd();
|
|
110
|
+
return 'comment';
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// 'string' — standard escapes the quote by doubling it; may span lines
|
|
114
|
+
if (stream.eat("'")) {
|
|
115
|
+
state.string = !eatStringTail(stream);
|
|
116
|
+
return 'string';
|
|
117
|
+
}
|
|
118
|
+
// "quoted identifier" / `mysql identifier`
|
|
119
|
+
const identQuote = stream.eat('"') ?? stream.eat('`');
|
|
120
|
+
if (identQuote) {
|
|
121
|
+
stream.eatWhile((ch) => ch !== identQuote);
|
|
122
|
+
stream.eat(identQuote);
|
|
123
|
+
return 'variableName';
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// parameters: $1, :name, @name, ?
|
|
127
|
+
if (stream.match(/^\$\d+/) || stream.match(/^[:@][A-Za-z_][\w$]*/)) {
|
|
128
|
+
return 'atom';
|
|
129
|
+
}
|
|
130
|
+
if (stream.eat('?')) return 'atom';
|
|
131
|
+
|
|
132
|
+
if (stream.match(/^\d+(\.\d*)?([eE][+-]?\d+)?/) || stream.match(/^\.\d+/)) {
|
|
133
|
+
return 'number';
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
if (stream.match(/^[A-Za-z_][\w$]*/)) {
|
|
137
|
+
const word = stream.current().toLowerCase();
|
|
138
|
+
if (KEYWORDS.has(word) || extra.has(word)) return 'keyword';
|
|
139
|
+
if (TYPES.has(word)) return 'typeName';
|
|
140
|
+
if (ATOMS.has(word)) return 'atom';
|
|
141
|
+
if (BUILTINS.has(word) && stream.match(/^\s*\(/, false)) {
|
|
142
|
+
return 'function';
|
|
143
|
+
}
|
|
144
|
+
return null;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
if (stream.eat(BRACKET)) return 'bracket';
|
|
148
|
+
if (stream.eat(PUNCT)) return 'punctuation';
|
|
149
|
+
if (stream.eatWhile(OPERATOR)) return 'operator';
|
|
150
|
+
stream.next();
|
|
151
|
+
return null;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
return streamLanguage<SqlState>({
|
|
155
|
+
name: 'sql',
|
|
156
|
+
languageData: {
|
|
157
|
+
lineComment: '--',
|
|
158
|
+
wordChars: '$',
|
|
159
|
+
completions: [...KEYWORDS, ...TYPES, ...BUILTINS].sort(),
|
|
160
|
+
indentAfter: /[([]\s*$/,
|
|
161
|
+
},
|
|
162
|
+
startState: () => ({ comment: false, string: false }),
|
|
163
|
+
token,
|
|
164
|
+
});
|
|
165
|
+
}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
// The Lezer adapter: plug a CodeMirror-ecosystem grammar (`@lezer/javascript`,
|
|
2
|
+
// `@lezer/python`, `@lezer/rust`, …) into `<CodeEditor language>`.
|
|
3
|
+
//
|
|
4
|
+
// ```ts
|
|
5
|
+
// import { parser } from '@lezer/javascript';
|
|
6
|
+
// <CodeEditor language={lezerLanguage({ name: 'js', parser })} />
|
|
7
|
+
// ```
|
|
8
|
+
//
|
|
9
|
+
// Dependency policy, following the `ical.js` precedent (AGENTS.md): the app
|
|
10
|
+
// installs the grammar package; `@lezer/highlight` — the small (~100 KB,
|
|
11
|
+
// one-dependency) module that turns a Lezer tree into styled ranges — is
|
|
12
|
+
// loaded with a dynamic `import()` that is allowed to fail. It is declared
|
|
13
|
+
// as an *optional peer* rather than an optional dependency because every
|
|
14
|
+
// `@lezer/<lang>` grammar already depends on it: the app that has a parser
|
|
15
|
+
// to pass in has the highlighter on disk, and an optionalDependency would
|
|
16
|
+
// install it even for apps that never touch this file. The parser itself is
|
|
17
|
+
// typed structurally (`LezerParserLike`) so this package's type graph stays
|
|
18
|
+
// free of lezer's.
|
|
19
|
+
//
|
|
20
|
+
// Tokenization is asynchronous by design: a reparse is scheduled on a short
|
|
21
|
+
// debounce after each edit, and the editor repaints when `invalidate` fires
|
|
22
|
+
// — stale colours for a few tens of milliseconds, never a blocked keystroke.
|
|
23
|
+
// (Incremental reparse via `TreeFragments` is a planned refinement; the
|
|
24
|
+
// seam already carries the edit ranges it needs.)
|
|
25
|
+
import { startTimeout, stopTimeout } from './timers.js';
|
|
26
|
+
import type { TimerId } from './timers.js';
|
|
27
|
+
import type {
|
|
28
|
+
Language,
|
|
29
|
+
LanguageData,
|
|
30
|
+
LineEdit,
|
|
31
|
+
Token,
|
|
32
|
+
Tokenizer,
|
|
33
|
+
TokenizerHost,
|
|
34
|
+
} from './types.js';
|
|
35
|
+
|
|
36
|
+
/** The slice of a Lezer `LRParser` this adapter calls. */
|
|
37
|
+
export interface LezerParserLike {
|
|
38
|
+
parse(input: string): unknown;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/** The slice of `@lezer/highlight` the adapter uses — also the injection
|
|
42
|
+
* point tests (and bundlers that dislike dynamic import) use. */
|
|
43
|
+
export interface LezerHighlightLike {
|
|
44
|
+
highlightTree(
|
|
45
|
+
tree: unknown,
|
|
46
|
+
highlighter: unknown,
|
|
47
|
+
putStyle: (from: number, to: number, classes: string) => void,
|
|
48
|
+
): void;
|
|
49
|
+
classHighlighter: unknown;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export interface LezerLanguageOptions {
|
|
53
|
+
name: string;
|
|
54
|
+
parser: LezerParserLike;
|
|
55
|
+
data?: LanguageData;
|
|
56
|
+
/** Pass the `@lezer/highlight` module yourself (tests, static bundles);
|
|
57
|
+
* defaults to `import('@lezer/highlight')`. */
|
|
58
|
+
highlight?: LezerHighlightLike | Promise<LezerHighlightLike>;
|
|
59
|
+
/** Reparse debounce, ms (default 30). */
|
|
60
|
+
delay?: number;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/** `classHighlighter` emits `tok-keyword tok-comment …`; the editor's token
|
|
64
|
+
* vocabulary *is* those names unprefixed, so the mapping is a strip. */
|
|
65
|
+
function classesToType(classes: string): string {
|
|
66
|
+
const first = classes.split(' ', 1)[0];
|
|
67
|
+
return first.startsWith('tok-') ? first.slice(4) : first;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
class LezerTokenizer implements Tokenizer {
|
|
71
|
+
private lines: readonly string[] = [''];
|
|
72
|
+
private tokens: Token[][] = [];
|
|
73
|
+
private hl: LezerHighlightLike | null = null;
|
|
74
|
+
private failed = false;
|
|
75
|
+
private timer: TimerId = null;
|
|
76
|
+
private disposed = false;
|
|
77
|
+
private parseSeq = 0;
|
|
78
|
+
|
|
79
|
+
constructor(
|
|
80
|
+
private readonly options: LezerLanguageOptions,
|
|
81
|
+
private readonly host: TokenizerHost,
|
|
82
|
+
) {
|
|
83
|
+
const supplied = options.highlight;
|
|
84
|
+
const loading = supplied
|
|
85
|
+
? Promise.resolve(supplied)
|
|
86
|
+
: // a bare specifier the bundler must not pre-resolve: see header
|
|
87
|
+
import('@lezer/highlight' as string).then(
|
|
88
|
+
(m) => m as unknown as LezerHighlightLike,
|
|
89
|
+
);
|
|
90
|
+
loading.then(
|
|
91
|
+
(module_) => {
|
|
92
|
+
if (this.disposed) return;
|
|
93
|
+
this.hl = module_;
|
|
94
|
+
this.schedule(0);
|
|
95
|
+
},
|
|
96
|
+
() => {
|
|
97
|
+
// No highlighter on disk: paint plain, once, quietly — the same
|
|
98
|
+
// "absence is a normal state" rule the desktop calendar follows.
|
|
99
|
+
this.failed = true;
|
|
100
|
+
},
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
setLines(lines: readonly string[]): void {
|
|
105
|
+
this.lines = lines;
|
|
106
|
+
this.tokens = [];
|
|
107
|
+
this.schedule(0);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
edit(_edit: LineEdit): void {
|
|
111
|
+
// Full reparse on the debounce; the old tokens keep painting meanwhile.
|
|
112
|
+
// The LineEdit is unused today — it is what the TreeFragments-based
|
|
113
|
+
// incremental version will consume.
|
|
114
|
+
this.schedule(this.options.delay ?? 30);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
lineTokens(line: number): readonly Token[] {
|
|
118
|
+
return this.tokens[line] ?? [];
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
dispose(): void {
|
|
122
|
+
this.disposed = true;
|
|
123
|
+
stopTimeout(this.timer);
|
|
124
|
+
this.timer = null;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
private schedule(delay: number): void {
|
|
128
|
+
if (this.failed || !this.hl || this.disposed) return;
|
|
129
|
+
stopTimeout(this.timer);
|
|
130
|
+
this.timer = startTimeout(() => {
|
|
131
|
+
this.timer = null;
|
|
132
|
+
this.reparse();
|
|
133
|
+
}, delay);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
private reparse(): void {
|
|
137
|
+
const hl = this.hl;
|
|
138
|
+
if (!hl || this.disposed) return;
|
|
139
|
+
const seq = ++this.parseSeq;
|
|
140
|
+
const lines = this.lines;
|
|
141
|
+
const text = lines.join('\n');
|
|
142
|
+
let tree: unknown;
|
|
143
|
+
try {
|
|
144
|
+
tree = this.options.parser.parse(text);
|
|
145
|
+
} catch {
|
|
146
|
+
return; // a grammar that throws paints plain rather than crashing
|
|
147
|
+
}
|
|
148
|
+
// line starts, for slicing document offsets into per-line tokens
|
|
149
|
+
const starts = new Array<number>(lines.length);
|
|
150
|
+
let offset = 0;
|
|
151
|
+
for (let i = 0; i < lines.length; i++) {
|
|
152
|
+
starts[i] = offset;
|
|
153
|
+
offset += lines[i].length + 1;
|
|
154
|
+
}
|
|
155
|
+
const perLine: Token[][] = lines.map(() => []);
|
|
156
|
+
let line = 0;
|
|
157
|
+
const put = (from: number, to: number, classes: string): void => {
|
|
158
|
+
const type = classesToType(classes);
|
|
159
|
+
while (line + 1 < lines.length && starts[line + 1] <= from) line++;
|
|
160
|
+
let l = line;
|
|
161
|
+
let a = from;
|
|
162
|
+
while (a < to && l < lines.length) {
|
|
163
|
+
const lineEnd = starts[l] + lines[l].length;
|
|
164
|
+
const b = Math.min(to, lineEnd);
|
|
165
|
+
if (b > a) {
|
|
166
|
+
perLine[l].push({ from: a - starts[l], to: b - starts[l], type });
|
|
167
|
+
}
|
|
168
|
+
a = Math.max(b, starts[l] + lines[l].length + 1);
|
|
169
|
+
l++;
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
try {
|
|
173
|
+
hl.highlightTree(tree, hl.classHighlighter, put);
|
|
174
|
+
} catch {
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
if (seq !== this.parseSeq || this.disposed || this.lines !== lines) return;
|
|
178
|
+
this.tokens = perLine;
|
|
179
|
+
this.host.invalidate(0);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/** Wrap a Lezer parser as a {@link Language}. */
|
|
184
|
+
export function lezerLanguage(options: LezerLanguageOptions): Language {
|
|
185
|
+
return {
|
|
186
|
+
name: options.name,
|
|
187
|
+
data: options.data,
|
|
188
|
+
createTokenizer: (host) => new LezerTokenizer(options, host),
|
|
189
|
+
};
|
|
190
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
// Fence-tag → Language. The names are the ones people actually type after
|
|
2
|
+
// three backticks, mapped onto the built-in tokenizers. This is a function
|
|
3
|
+
// of a string, not a table of instances, so a bundle pays only for the
|
|
4
|
+
// languages the call graph can reach — and it can reach all of them, which
|
|
5
|
+
// is the honest cost of highlighting arbitrary fenced code.
|
|
6
|
+
import type { Language } from './types.js';
|
|
7
|
+
import { glsl } from './languages/glsl.js';
|
|
8
|
+
import { javascript } from './languages/javascript.js';
|
|
9
|
+
import { json } from './languages/json.js';
|
|
10
|
+
import { shell } from './languages/shell.js';
|
|
11
|
+
import { sql } from './languages/sql.js';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* The `Language` for a markdown fence tag (`js`, `tsx`, `bash`, …), or
|
|
15
|
+
* null for a tag nothing here tokenizes. Callers decide what null means:
|
|
16
|
+
* `codeRuns` consults `resolveLanguage` first — `hljsLanguage` is what goes
|
|
17
|
+
* there for breadth — and paints plain text when that answers null too.
|
|
18
|
+
*/
|
|
19
|
+
export function languageForTag(tag: string): Language | null {
|
|
20
|
+
switch (tag.toLowerCase()) {
|
|
21
|
+
case 'js':
|
|
22
|
+
case 'javascript':
|
|
23
|
+
case 'mjs':
|
|
24
|
+
case 'cjs':
|
|
25
|
+
return javascript();
|
|
26
|
+
case 'jsx':
|
|
27
|
+
return javascript({ jsx: true });
|
|
28
|
+
case 'ts':
|
|
29
|
+
case 'typescript':
|
|
30
|
+
return javascript({ typescript: true });
|
|
31
|
+
case 'tsx':
|
|
32
|
+
return javascript({ typescript: true, jsx: true });
|
|
33
|
+
case 'json':
|
|
34
|
+
case 'jsonc':
|
|
35
|
+
return json();
|
|
36
|
+
case 'sh':
|
|
37
|
+
case 'bash':
|
|
38
|
+
case 'zsh':
|
|
39
|
+
case 'shell':
|
|
40
|
+
case 'console':
|
|
41
|
+
return shell();
|
|
42
|
+
case 'sql':
|
|
43
|
+
return sql();
|
|
44
|
+
case 'glsl':
|
|
45
|
+
return glsl();
|
|
46
|
+
default:
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Run a tokenizer over a whole static text. The editor pulls line by line
|
|
53
|
+
* while painting; a static code block wants everything once — this is that
|
|
54
|
+
* adapter. Returns one token array per line.
|
|
55
|
+
*/
|
|
56
|
+
export function tokenizeText(
|
|
57
|
+
language: Language,
|
|
58
|
+
text: string,
|
|
59
|
+
): ReadonlyArray<ReadonlyArray<{ from: number; to: number; type: string }>> {
|
|
60
|
+
const lines = text.split('\n');
|
|
61
|
+
const tokenizer = language.createTokenizer({ invalidate: () => {} });
|
|
62
|
+
tokenizer.setLines(lines);
|
|
63
|
+
const out = lines.map((_, i) => tokenizer.lineTokens(i));
|
|
64
|
+
tokenizer.dispose?.();
|
|
65
|
+
return out;
|
|
66
|
+
}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
// Static highlighting: text + fence tag → styled runs, ready for a
|
|
2
|
+
// TextLayout-shaped consumer (`<richtext>` speaks exactly this shape,
|
|
3
|
+
// structurally — this module deliberately imports nothing from it).
|
|
4
|
+
//
|
|
5
|
+
// The chain is: an explicit `language`, else `resolveLanguage(tag)` if the
|
|
6
|
+
// caller supplied one, else a built-in tokenizer for the tag, else one plain
|
|
7
|
+
// run. Every step degrades to readable.
|
|
8
|
+
//
|
|
9
|
+
// The third step used to be ntk's `highlightCode` — a MarkdownView-internal
|
|
10
|
+
// this module reached for by name, so that a fence tagged `python` got
|
|
11
|
+
// highlighted without the app arranging anything. ntk's document widgets are
|
|
12
|
+
// being decommissioned and it goes with them; `resolveLanguage` is what
|
|
13
|
+
// replaces it, and `hljsLanguage` (./hljs.ts) is the same highlight.js
|
|
14
|
+
// breadth as a `Language` the app opts into:
|
|
15
|
+
//
|
|
16
|
+
// ```ts
|
|
17
|
+
// import hljs from 'highlight.js/lib/common';
|
|
18
|
+
// codeRuns(text, tag, { …, resolveLanguage: (t) => hljsLanguage({hljs, name: t}) })
|
|
19
|
+
// ```
|
|
20
|
+
//
|
|
21
|
+
// Explicit rather than automatic, because the alternative is this package
|
|
22
|
+
// depending on highlight.js for every app that renders a fence — see
|
|
23
|
+
// AGENTS.md on tree-shaking, and `textmate.ts` for the same shape.
|
|
24
|
+
import { languageForTag, tokenizeText } from './registry.js';
|
|
25
|
+
import { tokenStyleFor } from './theme.js';
|
|
26
|
+
import type { Language, TokenStyles } from './types.js';
|
|
27
|
+
|
|
28
|
+
/** One styled run of code. Structurally a `<richtext>` run. */
|
|
29
|
+
export interface CodeRun {
|
|
30
|
+
text: string;
|
|
31
|
+
color?: string;
|
|
32
|
+
weight?: number;
|
|
33
|
+
style?: 'normal' | 'italic';
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export interface CodeRunOptions {
|
|
37
|
+
/** Token palette; `autoTokenStyles(background)` picks a built-in one. */
|
|
38
|
+
styles: TokenStyles;
|
|
39
|
+
/** The plain-text colour for gaps and unstyled tokens. */
|
|
40
|
+
color: string;
|
|
41
|
+
/** Resolves a `'$token'` colour a custom palette may use; unresolved
|
|
42
|
+
* `$tokens` drop to the plain colour rather than reaching the paint
|
|
43
|
+
* path as literal dollar strings. */
|
|
44
|
+
resolveToken?: (name: string) => string | undefined;
|
|
45
|
+
/** An explicit `Language` (a Lezer or TextMate adapter, say) — takes
|
|
46
|
+
* precedence over whatever the tag would have resolved to. */
|
|
47
|
+
language?: Language;
|
|
48
|
+
/**
|
|
49
|
+
* A `Language` for a fence tag the built-ins do not cover — the seam for
|
|
50
|
+
* highlight.js (`hljsLanguage`), a Lezer grammar per tag, or a lookup of
|
|
51
|
+
* the app's own. Consulted before {@link languageForTag}, so it can also
|
|
52
|
+
* override a built-in; `null` for a tag it does not know.
|
|
53
|
+
*/
|
|
54
|
+
resolveLanguage?: (tag: string) => Language | null;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function runColor(
|
|
58
|
+
color: string | undefined,
|
|
59
|
+
opts: CodeRunOptions,
|
|
60
|
+
): string | undefined {
|
|
61
|
+
if (!color) return undefined;
|
|
62
|
+
if (color.startsWith('$'))
|
|
63
|
+
return opts.resolveToken?.(color.slice(1)) ?? undefined;
|
|
64
|
+
return color;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Highlight `text` as `tag` (a fence tag: `js`, `bash`, …). The runs
|
|
69
|
+
* concatenate back to exactly `text`; an empty or unknown tag yields one
|
|
70
|
+
* plain run.
|
|
71
|
+
*/
|
|
72
|
+
export function codeRuns(
|
|
73
|
+
text: string,
|
|
74
|
+
tag: string,
|
|
75
|
+
opts: CodeRunOptions,
|
|
76
|
+
): CodeRun[] {
|
|
77
|
+
if (text.length === 0) return [{ text: '', color: opts.color }];
|
|
78
|
+
|
|
79
|
+
const language =
|
|
80
|
+
opts.language ??
|
|
81
|
+
(tag ? (opts.resolveLanguage?.(tag) ?? languageForTag(tag)) : null);
|
|
82
|
+
if (language) {
|
|
83
|
+
const perLine = tokenizeText(language, text);
|
|
84
|
+
const lines = text.split('\n');
|
|
85
|
+
const out: CodeRun[] = [];
|
|
86
|
+
for (let i = 0; i < lines.length; i += 1) {
|
|
87
|
+
const line = lines[i];
|
|
88
|
+
if (i > 0) push(out, '\n', undefined, opts);
|
|
89
|
+
let at = 0;
|
|
90
|
+
for (const t of perLine[i]) {
|
|
91
|
+
if (t.from > at) push(out, line.slice(at, t.from), undefined, opts);
|
|
92
|
+
push(out, line.slice(t.from, t.to), t.type, opts);
|
|
93
|
+
at = t.to;
|
|
94
|
+
}
|
|
95
|
+
if (at < line.length) push(out, line.slice(at), undefined, opts);
|
|
96
|
+
}
|
|
97
|
+
return out;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
return [{ text, color: opts.color }];
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
function push(
|
|
104
|
+
out: CodeRun[],
|
|
105
|
+
text: string,
|
|
106
|
+
type: string | undefined,
|
|
107
|
+
opts: CodeRunOptions,
|
|
108
|
+
): void {
|
|
109
|
+
if (text.length === 0) return;
|
|
110
|
+
const style = type ? tokenStyleFor(opts.styles, type) : null;
|
|
111
|
+
const run: CodeRun = {
|
|
112
|
+
text,
|
|
113
|
+
color: runColor(style?.color, opts) ?? opts.color,
|
|
114
|
+
};
|
|
115
|
+
if (style?.weight) run.weight = style.weight;
|
|
116
|
+
if (style?.fontStyle) run.style = style.fontStyle;
|
|
117
|
+
const prev = out[out.length - 1];
|
|
118
|
+
if (
|
|
119
|
+
prev &&
|
|
120
|
+
prev.color === run.color &&
|
|
121
|
+
prev.weight === run.weight &&
|
|
122
|
+
prev.style === run.style
|
|
123
|
+
) {
|
|
124
|
+
prev.text += text;
|
|
125
|
+
} else {
|
|
126
|
+
out.push(run);
|
|
127
|
+
}
|
|
128
|
+
}
|