@react-x11/components 0.1.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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 +88 -0
- package/dist/internal/heights.d.ts.map +1 -0
- package/dist/internal/heights.js +203 -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/scroll.d.ts +62 -0
- package/dist/internal/scroll.d.ts.map +1 -0
- package/dist/internal/scroll.js +224 -0
- package/dist/internal/scroll.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 +890 -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 +751 -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 +222 -0
- package/src/internal/hx.ts +53 -0
- package/src/internal/scroll.ts +288 -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 +1270 -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 +1127 -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,48 @@
|
|
|
1
|
+
/** The recording's own metadata: the grid it was made at, and its title. */
|
|
2
|
+
export interface AnsiCastHeader {
|
|
3
|
+
version: number;
|
|
4
|
+
width: number;
|
|
5
|
+
height: number;
|
|
6
|
+
title?: string;
|
|
7
|
+
/** Unix seconds, when the recording says. */
|
|
8
|
+
timestamp?: number;
|
|
9
|
+
env?: Readonly<Record<string, string>>;
|
|
10
|
+
}
|
|
11
|
+
/** One recorded event. `'o'` is output — the only kind that has pixels. */
|
|
12
|
+
export interface AnsiCastEvent {
|
|
13
|
+
/** Seconds from the start of the recording. Absolute, v1's deltas
|
|
14
|
+
* included: a reader should not have to know which version it opened. */
|
|
15
|
+
readonly time: number;
|
|
16
|
+
readonly kind: 'o' | 'i' | 'r' | 'm' | string;
|
|
17
|
+
readonly data: string;
|
|
18
|
+
}
|
|
19
|
+
export interface AnsiCast {
|
|
20
|
+
readonly header: AnsiCastHeader;
|
|
21
|
+
readonly events: readonly AnsiCastEvent[];
|
|
22
|
+
}
|
|
23
|
+
/** What `parseCast` refuses. Its own type so an app can tell "not a cast"
|
|
24
|
+
* from a read error, which is the only distinction a caller acts on. */
|
|
25
|
+
export declare class CastFormatError extends Error {
|
|
26
|
+
constructor(message: string);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Read a recording.
|
|
30
|
+
*
|
|
31
|
+
* A malformed *event* line is skipped rather than fatal — a recording still
|
|
32
|
+
* being written has a partial last line, and refusing the whole file over it
|
|
33
|
+
* is the wrong trade. A missing or unreadable *header* throws, because
|
|
34
|
+
* without one there is no recording to read.
|
|
35
|
+
*/
|
|
36
|
+
export declare function parseCast(text: string): AnsiCast;
|
|
37
|
+
/**
|
|
38
|
+
* The recorded output, concatenated — what a terminal received.
|
|
39
|
+
*
|
|
40
|
+
* `until` is a moment in seconds: pass it to render the session as it looked
|
|
41
|
+
* then, which with a slider in the app is a scrubber and without one is a
|
|
42
|
+
* still. Input, resize and marker events are left out, because only output
|
|
43
|
+
* has pixels.
|
|
44
|
+
*/
|
|
45
|
+
export declare function castOutput(cast: AnsiCast, options?: {
|
|
46
|
+
until?: number;
|
|
47
|
+
}): string;
|
|
48
|
+
//# sourceMappingURL=cast.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cast.d.ts","sourceRoot":"","sources":["../../src/ansi/cast.ts"],"names":[],"mappings":"AAaA,4EAA4E;AAC5E,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACxC;AAED,2EAA2E;AAC3E,MAAM,WAAW,aAAa;IAC5B;8EAC0E;IAC1E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,MAAM,CAAC;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,CAAC;CAC3C;AAED;yEACyE;AACzE,qBAAa,eAAgB,SAAQ,KAAK;IACxC,YAAY,OAAO,EAAE,MAAM,EAG1B;CACF;AAmBD;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAgEhD;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,QAAQ,EACd,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/B,MAAM,CASR"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
// asciinema recordings, read.
|
|
2
|
+
//
|
|
3
|
+
// A cast is the standard interchange format for "I ran this in a pty and kept
|
|
4
|
+
// it", so a static renderer that cannot open one is a static renderer that
|
|
5
|
+
// asks every user to write the same twenty lines. Both published versions are
|
|
6
|
+
// read: v2 is JSON Lines (a header object, then `[time, kind, data]` events),
|
|
7
|
+
// v1 is one JSON document with relative delays.
|
|
8
|
+
//
|
|
9
|
+
// **This is a reader, not a player.** `castOutput(cast, { until })` gives the
|
|
10
|
+
// bytes up to a moment and `parseAnsi` turns those into a document; scheduling
|
|
11
|
+
// the moments is the app's, because a component with a timer inside it never
|
|
12
|
+
// settles in a screenshot test. See the PRD.
|
|
13
|
+
/** What `parseCast` refuses. Its own type so an app can tell "not a cast"
|
|
14
|
+
* from a read error, which is the only distinction a caller acts on. */
|
|
15
|
+
export class CastFormatError extends Error {
|
|
16
|
+
constructor(message) {
|
|
17
|
+
super(`@react-x11/components: ${message}`);
|
|
18
|
+
this.name = 'CastFormatError';
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function headerOf(value) {
|
|
22
|
+
const raw = (value ?? {});
|
|
23
|
+
const num = (v, dflt) => typeof v === 'number' && Number.isFinite(v) ? v : dflt;
|
|
24
|
+
const header = {
|
|
25
|
+
version: num(raw.version, 2),
|
|
26
|
+
width: Math.max(1, num(raw.width, 80)),
|
|
27
|
+
height: Math.max(1, num(raw.height, 24)),
|
|
28
|
+
};
|
|
29
|
+
if (typeof raw.title === 'string')
|
|
30
|
+
header.title = raw.title;
|
|
31
|
+
if (typeof raw.timestamp === 'number')
|
|
32
|
+
header.timestamp = raw.timestamp;
|
|
33
|
+
if (raw.env && typeof raw.env === 'object') {
|
|
34
|
+
header.env = raw.env;
|
|
35
|
+
}
|
|
36
|
+
return header;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Read a recording.
|
|
40
|
+
*
|
|
41
|
+
* A malformed *event* line is skipped rather than fatal — a recording still
|
|
42
|
+
* being written has a partial last line, and refusing the whole file over it
|
|
43
|
+
* is the wrong trade. A missing or unreadable *header* throws, because
|
|
44
|
+
* without one there is no recording to read.
|
|
45
|
+
*/
|
|
46
|
+
export function parseCast(text) {
|
|
47
|
+
const trimmed = text.trim();
|
|
48
|
+
if (!trimmed)
|
|
49
|
+
throw new CastFormatError('the recording is empty');
|
|
50
|
+
// v1 is one JSON document, so it is exactly the case where parsing the
|
|
51
|
+
// whole file succeeds. A v2 file is several JSON values and does not.
|
|
52
|
+
let whole;
|
|
53
|
+
try {
|
|
54
|
+
whole = JSON.parse(trimmed);
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
whole = undefined;
|
|
58
|
+
}
|
|
59
|
+
if (whole && typeof whole === 'object') {
|
|
60
|
+
const raw = whole;
|
|
61
|
+
if (Array.isArray(raw.stdout)) {
|
|
62
|
+
const header = headerOf(raw);
|
|
63
|
+
const events = [];
|
|
64
|
+
let time = 0;
|
|
65
|
+
for (const entry of raw.stdout) {
|
|
66
|
+
if (!Array.isArray(entry) || entry.length < 2)
|
|
67
|
+
continue;
|
|
68
|
+
const [delay, data] = entry;
|
|
69
|
+
if (typeof delay !== 'number' || typeof data !== 'string')
|
|
70
|
+
continue;
|
|
71
|
+
// v1 records the gap since the previous event; every consumer wants
|
|
72
|
+
// the moment, so the conversion happens here rather than in each one.
|
|
73
|
+
time += delay;
|
|
74
|
+
events.push({ time, kind: 'o', data });
|
|
75
|
+
}
|
|
76
|
+
return { header: { ...header, version: 1 }, events };
|
|
77
|
+
}
|
|
78
|
+
// A v2 file whose recording is empty: a header and nothing after it.
|
|
79
|
+
return { header: headerOf(raw), events: [] };
|
|
80
|
+
}
|
|
81
|
+
const lines = trimmed.split('\n');
|
|
82
|
+
let header = null;
|
|
83
|
+
const events = [];
|
|
84
|
+
for (const line of lines) {
|
|
85
|
+
const source = line.trim();
|
|
86
|
+
if (!source)
|
|
87
|
+
continue;
|
|
88
|
+
let value;
|
|
89
|
+
try {
|
|
90
|
+
value = JSON.parse(source);
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
if (!header) {
|
|
96
|
+
if (Array.isArray(value)) {
|
|
97
|
+
throw new CastFormatError('the recording starts with an event rather than a header — ' +
|
|
98
|
+
'this does not look like an asciinema cast');
|
|
99
|
+
}
|
|
100
|
+
header = headerOf(value);
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
if (!Array.isArray(value) || value.length < 3)
|
|
104
|
+
continue;
|
|
105
|
+
const [time, kind, data] = value;
|
|
106
|
+
if (typeof time !== 'number' || typeof data !== 'string')
|
|
107
|
+
continue;
|
|
108
|
+
events.push({ time, kind: typeof kind === 'string' ? kind : 'o', data });
|
|
109
|
+
}
|
|
110
|
+
if (!header) {
|
|
111
|
+
throw new CastFormatError('the recording has no header line');
|
|
112
|
+
}
|
|
113
|
+
return { header, events };
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* The recorded output, concatenated — what a terminal received.
|
|
117
|
+
*
|
|
118
|
+
* `until` is a moment in seconds: pass it to render the session as it looked
|
|
119
|
+
* then, which with a slider in the app is a scrubber and without one is a
|
|
120
|
+
* still. Input, resize and marker events are left out, because only output
|
|
121
|
+
* has pixels.
|
|
122
|
+
*/
|
|
123
|
+
export function castOutput(cast, options = {}) {
|
|
124
|
+
const until = options.until ?? Infinity;
|
|
125
|
+
let out = '';
|
|
126
|
+
for (const event of cast.events) {
|
|
127
|
+
if (event.kind !== 'o')
|
|
128
|
+
continue;
|
|
129
|
+
if (event.time > until)
|
|
130
|
+
break;
|
|
131
|
+
out += event.data;
|
|
132
|
+
}
|
|
133
|
+
return out;
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=cast.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cast.js","sourceRoot":"","sources":["../../src/ansi/cast.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { parseAnsi, stripAnsi, AnsiState } from './parse.js';
|
|
2
|
+
export type { AnsiDocument, AnsiInput, AnsiLine, AnsiSpan, ParseAnsiOptions, } from './parse.js';
|
|
3
|
+
export { PLAIN, Style, ansiColor, rgbColor, param, ABSENT } from './sgr.js';
|
|
4
|
+
export type { AnsiAttrs, AnsiColor, AnsiUnderline } from './sgr.js';
|
|
5
|
+
export { ANSI_16, ansiPalette, cssColor, mixRgb, parseCssColor, resolveAnsiColors, } from './palette.js';
|
|
6
|
+
export type { AnsiColorAttrs, AnsiPalette, AnsiPaletteOptions, ResolvedAnsiColors, Rgb, } from './palette.js';
|
|
7
|
+
export { CastFormatError, castOutput, parseCast } from './cast.js';
|
|
8
|
+
export type { AnsiCast, AnsiCastEvent, AnsiCastHeader } from './cast.js';
|
|
9
|
+
export { Utf8Decoder } from './utf8.js';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ansi/index.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC7D,YAAY,EACV,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAC5E,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEpE,OAAO,EACL,OAAO,EACP,WAAW,EACX,QAAQ,EACR,MAAM,EACN,aAAa,EACb,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,GAAG,GACJ,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACnE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEzE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// A captured terminal session, as a document — the parser under
|
|
2
|
+
// `<TerminalOutput>`, and useful on its own.
|
|
3
|
+
//
|
|
4
|
+
// ```ts
|
|
5
|
+
// import { parseAnsi } from '@react-x11/components/ansi';
|
|
6
|
+
//
|
|
7
|
+
// const doc = parseAnsi(await readFile('build.log'));
|
|
8
|
+
// doc.lines.map((line) => line.text); // the text, escapes resolved away
|
|
9
|
+
// doc.needsScreen; // did these bytes want a grid?
|
|
10
|
+
// doc.dropped; // what could not be honoured
|
|
11
|
+
// ```
|
|
12
|
+
//
|
|
13
|
+
// **A shared module, not a component.** Nothing here registers an element,
|
|
14
|
+
// renders anything, or does any work at import time; there is no optional
|
|
15
|
+
// dependency and no `@xterm/headless`. It has a subpath of its own because
|
|
16
|
+
// "turn a log into styled text" is a thing to want without a terminal
|
|
17
|
+
// anywhere near it — colouring a build log inside a `<Markdown>` document,
|
|
18
|
+
// say, or stripping escapes before a diff.
|
|
19
|
+
//
|
|
20
|
+
// `docs/prd-terminal-output.md` is the design record: why a log is a document
|
|
21
|
+
// rather than a grid, and what that model can and cannot represent.
|
|
22
|
+
export { parseAnsi, stripAnsi, AnsiState } from './parse.js';
|
|
23
|
+
export { PLAIN, Style, ansiColor, rgbColor, param, ABSENT } from './sgr.js';
|
|
24
|
+
export { ANSI_16, ansiPalette, cssColor, mixRgb, parseCssColor, resolveAnsiColors, } from './palette.js';
|
|
25
|
+
export { CastFormatError, castOutput, parseCast } from './cast.js';
|
|
26
|
+
export { Utf8Decoder } from './utf8.js';
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ansi/index.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,6CAA6C;AAC7C,EAAE;AACF,QAAQ;AACR,0DAA0D;AAC1D,EAAE;AACF,sDAAsD;AACtD,yEAAyE;AACzE,sEAAsE;AACtE,oEAAoE;AACpE,MAAM;AACN,EAAE;AACF,2EAA2E;AAC3E,0EAA0E;AAC1E,2EAA2E;AAC3E,sEAAsE;AACtE,2EAA2E;AAC3E,2CAA2C;AAC3C,EAAE;AACF,8EAA8E;AAC9E,oEAAoE;AACpE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAS7D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAG5E,OAAO,EACL,OAAO,EACP,WAAW,EACX,QAAQ,EACR,MAAM,EACN,aAAa,EACb,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAStB,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGnE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import type { AnsiColor } from './sgr.js';
|
|
2
|
+
/** A colour as a packed `0xRRGGBB`, the way the arithmetic below wants it. */
|
|
3
|
+
export type Rgb = number;
|
|
4
|
+
/**
|
|
5
|
+
* The standard 16 — xterm's own defaults, which is what an application's
|
|
6
|
+
* colour choices were made against.
|
|
7
|
+
*/
|
|
8
|
+
export declare const ANSI_16: readonly Rgb[];
|
|
9
|
+
export interface AnsiPalette {
|
|
10
|
+
/** 256 entries: the 16 ANSI, the 6×6×6 cube, the 24 greys. */
|
|
11
|
+
readonly colors: Int32Array;
|
|
12
|
+
readonly foreground: Rgb;
|
|
13
|
+
readonly background: Rgb;
|
|
14
|
+
/** Bold promotes ANSI 0–7 to 8–15, which is how most colour schemes were
|
|
15
|
+
* designed to be read. */
|
|
16
|
+
readonly brightBold: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface AnsiPaletteOptions {
|
|
19
|
+
/** The default ink. A CSS colour; anything unparseable keeps the default
|
|
20
|
+
* rather than painting something arbitrary. */
|
|
21
|
+
foreground?: string;
|
|
22
|
+
background?: string;
|
|
23
|
+
/** ANSI 0–15, sparse — an entry left out keeps the standard colour. */
|
|
24
|
+
palette?: readonly (string | undefined)[];
|
|
25
|
+
/** Default true. */
|
|
26
|
+
brightBold?: boolean;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* `#rgb`, `#rrggbb`, `rgb(…)` and the handful of names above.
|
|
30
|
+
*
|
|
31
|
+
* `null` for anything else, and every caller keeps its default rather than
|
|
32
|
+
* guessing — a theme token that did not resolve should look like the theme,
|
|
33
|
+
* not like black.
|
|
34
|
+
*/
|
|
35
|
+
export declare function parseCssColor(value: string | undefined): Rgb | null;
|
|
36
|
+
/** `#rrggbb`, which is what a `<richtext>` run takes. */
|
|
37
|
+
export declare function cssColor(rgb: Rgb): string;
|
|
38
|
+
/** Mix towards `b`, `t` in 0..1 — what `dim` uses. */
|
|
39
|
+
export declare function mixRgb(a: Rgb, b: Rgb, t: number): Rgb;
|
|
40
|
+
/**
|
|
41
|
+
* The 256-colour palette.
|
|
42
|
+
*
|
|
43
|
+
* 0–15 come from `palette` where it has an entry and from the standard set
|
|
44
|
+
* where it does not; 16–231 are the 6×6×6 cube and 232–255 the 24 greys, both
|
|
45
|
+
* fixed by the protocol rather than by taste.
|
|
46
|
+
*/
|
|
47
|
+
export declare function ansiPalette(options?: AnsiPaletteOptions): AnsiPalette;
|
|
48
|
+
/** What a span is actually painted in. */
|
|
49
|
+
export interface ResolvedAnsiColors {
|
|
50
|
+
fg: string;
|
|
51
|
+
/**
|
|
52
|
+
* Absent means "whatever is behind" — the page, the block's own fill.
|
|
53
|
+
*
|
|
54
|
+
* The distinction is the whole reason a log can sit inside a document: text
|
|
55
|
+
* in the default background must not paint a rectangle, or every line
|
|
56
|
+
* becomes an opaque strip and the block stops being part of the page.
|
|
57
|
+
*/
|
|
58
|
+
bg?: string;
|
|
59
|
+
}
|
|
60
|
+
/** The attribute slice the resolution reads — the six fields of an
|
|
61
|
+
* `AnsiAttrs` that can change a colour, and nothing else. */
|
|
62
|
+
export interface AnsiColorAttrs {
|
|
63
|
+
readonly fg?: AnsiColor;
|
|
64
|
+
readonly bg?: AnsiColor;
|
|
65
|
+
readonly bold?: boolean;
|
|
66
|
+
readonly dim?: boolean;
|
|
67
|
+
readonly inverse?: boolean;
|
|
68
|
+
readonly conceal?: boolean;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* A span's two colours, after every transform that can change them.
|
|
72
|
+
*
|
|
73
|
+
* The order is the one every terminal agrees on, and it is the same order
|
|
74
|
+
* `../terminal/vt/colors.ts` applies to a live cell — bright-bold, dim,
|
|
75
|
+
* inverse, conceal — so a capture and the program that produced it look the
|
|
76
|
+
* same in one window.
|
|
77
|
+
*/
|
|
78
|
+
export declare function resolveAnsiColors(attrs: AnsiColorAttrs, palette: AnsiPalette): ResolvedAnsiColors;
|
|
79
|
+
//# sourceMappingURL=palette.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"palette.d.ts","sourceRoot":"","sources":["../../src/ansi/palette.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,8EAA8E;AAC9E,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC;AAEzB;;;GAGG;AACH,eAAO,MAAM,OAAO,EAAE,SAAS,GAAG,EAIjC,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,8DAA8D;IAC9D,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC;IACzB;+BAC2B;IAC3B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC;oDACgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uEAAuE;IACvE,OAAO,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IAC1C,oBAAoB;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAgBD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,GAAG,GAAG,IAAI,CAqCnE;AAED,yDAAyD;AACzD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAEzC;AAED,sDAAsD;AACtD,wBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,GAAG,GAAG,CAOrD;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,WAAW,CAsBzE;AAED,0CAA0C;AAC1C,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX;;;;;;OAMG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED;8DAC8D;AAC9D,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAQD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,WAAW,GACnB,kBAAkB,CA4BpB"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The standard 16 — xterm's own defaults, which is what an application's
|
|
3
|
+
* colour choices were made against.
|
|
4
|
+
*/
|
|
5
|
+
export const ANSI_16 = [
|
|
6
|
+
0x000000, 0xcd0000, 0x00cd00, 0xcdcd00, 0x0000ee, 0xcd00cd, 0x00cdcd,
|
|
7
|
+
0xe5e5e5, 0x7f7f7f, 0xff0000, 0x00ff00, 0xffff00, 0x5c5cff, 0xff00ff,
|
|
8
|
+
0x00ffff, 0xffffff,
|
|
9
|
+
];
|
|
10
|
+
/** The names a terminal colour prop plausibly carries. Not CSS's whole list. */
|
|
11
|
+
const NAMED = {
|
|
12
|
+
black: 0x000000,
|
|
13
|
+
white: 0xffffff,
|
|
14
|
+
red: 0xff0000,
|
|
15
|
+
green: 0x008000,
|
|
16
|
+
blue: 0x0000ff,
|
|
17
|
+
yellow: 0xffff00,
|
|
18
|
+
cyan: 0x00ffff,
|
|
19
|
+
magenta: 0xff00ff,
|
|
20
|
+
gray: 0x808080,
|
|
21
|
+
grey: 0x808080,
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* `#rgb`, `#rrggbb`, `rgb(…)` and the handful of names above.
|
|
25
|
+
*
|
|
26
|
+
* `null` for anything else, and every caller keeps its default rather than
|
|
27
|
+
* guessing — a theme token that did not resolve should look like the theme,
|
|
28
|
+
* not like black.
|
|
29
|
+
*/
|
|
30
|
+
export function parseCssColor(value) {
|
|
31
|
+
if (!value)
|
|
32
|
+
return null;
|
|
33
|
+
const text = value.trim().toLowerCase();
|
|
34
|
+
if (text.startsWith('#')) {
|
|
35
|
+
const hex = text.slice(1);
|
|
36
|
+
if (hex.length === 3 || hex.length === 4) {
|
|
37
|
+
const r = Number.parseInt(hex[0] + hex[0], 16);
|
|
38
|
+
const g = Number.parseInt(hex[1] + hex[1], 16);
|
|
39
|
+
const b = Number.parseInt(hex[2] + hex[2], 16);
|
|
40
|
+
if (Number.isNaN(r + g + b))
|
|
41
|
+
return null;
|
|
42
|
+
return (r << 16) | (g << 8) | b;
|
|
43
|
+
}
|
|
44
|
+
if (hex.length === 6 || hex.length === 8) {
|
|
45
|
+
const n = Number.parseInt(hex.slice(0, 6), 16);
|
|
46
|
+
return Number.isNaN(n) ? null : n;
|
|
47
|
+
}
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
const fn = /^rgba?\(([^)]+)\)$/.exec(text);
|
|
51
|
+
if (fn) {
|
|
52
|
+
const parts = fn[1].split(/[\s,/]+/).filter(Boolean);
|
|
53
|
+
if (parts.length < 3)
|
|
54
|
+
return null;
|
|
55
|
+
const channel = (part) => {
|
|
56
|
+
const n = part.endsWith('%')
|
|
57
|
+
? (Number.parseFloat(part) * 255) / 100
|
|
58
|
+
: Number.parseFloat(part);
|
|
59
|
+
return Number.isFinite(n)
|
|
60
|
+
? Math.max(0, Math.min(255, Math.round(n)))
|
|
61
|
+
: -1;
|
|
62
|
+
};
|
|
63
|
+
const r = channel(parts[0]);
|
|
64
|
+
const g = channel(parts[1]);
|
|
65
|
+
const b = channel(parts[2]);
|
|
66
|
+
if (r < 0 || g < 0 || b < 0)
|
|
67
|
+
return null;
|
|
68
|
+
return (r << 16) | (g << 8) | b;
|
|
69
|
+
}
|
|
70
|
+
return NAMED[text] ?? null;
|
|
71
|
+
}
|
|
72
|
+
/** `#rrggbb`, which is what a `<richtext>` run takes. */
|
|
73
|
+
export function cssColor(rgb) {
|
|
74
|
+
return `#${(rgb & 0xffffff).toString(16).padStart(6, '0')}`;
|
|
75
|
+
}
|
|
76
|
+
/** Mix towards `b`, `t` in 0..1 — what `dim` uses. */
|
|
77
|
+
export function mixRgb(a, b, t) {
|
|
78
|
+
const lerp = (shift) => {
|
|
79
|
+
const av = (a >> shift) & 0xff;
|
|
80
|
+
const bv = (b >> shift) & 0xff;
|
|
81
|
+
return Math.round(av + (bv - av) * t);
|
|
82
|
+
};
|
|
83
|
+
return (lerp(16) << 16) | (lerp(8) << 8) | lerp(0);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* The 256-colour palette.
|
|
87
|
+
*
|
|
88
|
+
* 0–15 come from `palette` where it has an entry and from the standard set
|
|
89
|
+
* where it does not; 16–231 are the 6×6×6 cube and 232–255 the 24 greys, both
|
|
90
|
+
* fixed by the protocol rather than by taste.
|
|
91
|
+
*/
|
|
92
|
+
export function ansiPalette(options = {}) {
|
|
93
|
+
const colors = new Int32Array(256);
|
|
94
|
+
for (let i = 0; i < 16; i++) {
|
|
95
|
+
colors[i] = parseCssColor(options.palette?.[i]) ?? ANSI_16[i];
|
|
96
|
+
}
|
|
97
|
+
const cube = [0, 95, 135, 175, 215, 255];
|
|
98
|
+
for (let i = 0; i < 216; i++) {
|
|
99
|
+
const r = cube[Math.floor(i / 36) % 6];
|
|
100
|
+
const g = cube[Math.floor(i / 6) % 6];
|
|
101
|
+
const b = cube[i % 6];
|
|
102
|
+
colors[16 + i] = (r << 16) | (g << 8) | b;
|
|
103
|
+
}
|
|
104
|
+
for (let i = 0; i < 24; i++) {
|
|
105
|
+
const v = 8 + i * 10;
|
|
106
|
+
colors[232 + i] = (v << 16) | (v << 8) | v;
|
|
107
|
+
}
|
|
108
|
+
return {
|
|
109
|
+
colors,
|
|
110
|
+
foreground: parseCssColor(options.foreground) ?? 0xe6e6e6,
|
|
111
|
+
background: parseCssColor(options.background) ?? 0x101014,
|
|
112
|
+
brightBold: options.brightBold ?? true,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
function rgbOf(color, palette) {
|
|
116
|
+
return color.kind === 'rgb'
|
|
117
|
+
? color.value & 0xffffff
|
|
118
|
+
: palette.colors[Math.max(0, Math.min(255, color.index))];
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* A span's two colours, after every transform that can change them.
|
|
122
|
+
*
|
|
123
|
+
* The order is the one every terminal agrees on, and it is the same order
|
|
124
|
+
* `../terminal/vt/colors.ts` applies to a live cell — bright-bold, dim,
|
|
125
|
+
* inverse, conceal — so a capture and the program that produced it look the
|
|
126
|
+
* same in one window.
|
|
127
|
+
*/
|
|
128
|
+
export function resolveAnsiColors(attrs, palette) {
|
|
129
|
+
const fgColor = attrs.fg;
|
|
130
|
+
const bgColor = attrs.bg;
|
|
131
|
+
let fg = fgColor ? rgbOf(fgColor, palette) : palette.foreground;
|
|
132
|
+
let bg = bgColor ? rgbOf(bgColor, palette) : palette.background;
|
|
133
|
+
/** Nothing has claimed the background yet, so the surface keeps it. */
|
|
134
|
+
let bare = bgColor === undefined;
|
|
135
|
+
if (attrs.bold &&
|
|
136
|
+
palette.brightBold &&
|
|
137
|
+
fgColor?.kind === 'ansi' &&
|
|
138
|
+
fgColor.index < 8) {
|
|
139
|
+
fg = palette.colors[fgColor.index + 8];
|
|
140
|
+
}
|
|
141
|
+
if (attrs.dim)
|
|
142
|
+
fg = mixRgb(fg, bg, 0.5);
|
|
143
|
+
if (attrs.inverse) {
|
|
144
|
+
const swap = fg;
|
|
145
|
+
fg = bg;
|
|
146
|
+
bg = swap;
|
|
147
|
+
// An inverted run paints its background even when neither colour was set:
|
|
148
|
+
// that is the entire visible effect of SGR 7.
|
|
149
|
+
bare = false;
|
|
150
|
+
}
|
|
151
|
+
if (attrs.conceal)
|
|
152
|
+
fg = bg;
|
|
153
|
+
return bare ? { fg: cssColor(fg) } : { fg: cssColor(fg), bg: cssColor(bg) };
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=palette.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"palette.js","sourceRoot":"","sources":["../../src/ansi/palette.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import type { AnsiAttrs } from './sgr.js';
|
|
2
|
+
/** One run of characters sharing every attribute. */
|
|
3
|
+
export type AnsiSpan = AnsiAttrs & {
|
|
4
|
+
readonly text: string;
|
|
5
|
+
};
|
|
6
|
+
/** One line of the capture. `text` is the spans concatenated. */
|
|
7
|
+
export interface AnsiLine {
|
|
8
|
+
readonly spans: readonly AnsiSpan[];
|
|
9
|
+
readonly text: string;
|
|
10
|
+
}
|
|
11
|
+
/** What a capture reduces to. A plain immutable value — snapshot it, keep it,
|
|
12
|
+
* hand it to React. */
|
|
13
|
+
export interface AnsiDocument {
|
|
14
|
+
readonly lines: readonly AnsiLine[];
|
|
15
|
+
/** The last title the capture set, through OSC 0 or OSC 2. */
|
|
16
|
+
readonly title?: string;
|
|
17
|
+
/** The stream addressed the cursor absolutely, scrolled a region, or
|
|
18
|
+
* entered the alternate screen: these bytes wanted a grid. */
|
|
19
|
+
readonly needsScreen: boolean;
|
|
20
|
+
/** What could not be honoured, by name, with counts. */
|
|
21
|
+
readonly dropped: Readonly<Record<string, number>>;
|
|
22
|
+
/** Lines evicted by `maxLines`, oldest first. */
|
|
23
|
+
readonly truncated: number;
|
|
24
|
+
/** The resume point. Pass the document back as `from` to continue. */
|
|
25
|
+
readonly state: AnsiState;
|
|
26
|
+
}
|
|
27
|
+
export type AnsiInput = string | Uint8Array | readonly (string | Uint8Array)[];
|
|
28
|
+
export interface ParseAnsiOptions {
|
|
29
|
+
/** Continue a previous parse rather than starting one. A partial escape
|
|
30
|
+
* sequence or a half-arrived UTF-8 character at the boundary is held, not
|
|
31
|
+
* mangled — the same rule `<Markdown>` follows for an unterminated tail. */
|
|
32
|
+
from?: AnsiDocument | AnsiState;
|
|
33
|
+
/** Default 8, the terminal's. */
|
|
34
|
+
tabWidth?: number;
|
|
35
|
+
/** Keep only the last N lines, dropping from the front. Unbounded by
|
|
36
|
+
* default: the app read the file, so the app decided how big it is. */
|
|
37
|
+
maxLines?: number;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* A capture, reduced.
|
|
41
|
+
*
|
|
42
|
+
* ```ts
|
|
43
|
+
* const doc = parseAnsi(await readFile('build.log'));
|
|
44
|
+
* doc.lines.map((line) => line.text);
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export declare function parseAnsi(data: AnsiInput, options?: ParseAnsiOptions): AnsiDocument;
|
|
48
|
+
/** The capture's text with every escape sequence resolved away. What a
|
|
49
|
+
* round-trip test compares against, and what a plain-text export wants. */
|
|
50
|
+
export declare function stripAnsi(data: AnsiInput, options?: ParseAnsiOptions): string;
|
|
51
|
+
/**
|
|
52
|
+
* The reducer's state: the escape machine, the current attributes, the line
|
|
53
|
+
* being written, and the lines already finished.
|
|
54
|
+
*
|
|
55
|
+
* Held across calls so an append costs the appended bytes. Completed lines
|
|
56
|
+
* are never mutated, so an older `AnsiDocument` snapshot stays valid after
|
|
57
|
+
* the next `write()`.
|
|
58
|
+
*/
|
|
59
|
+
export declare class AnsiState {
|
|
60
|
+
private readonly _tabWidth;
|
|
61
|
+
private readonly _maxLines;
|
|
62
|
+
private _style;
|
|
63
|
+
private _decoder;
|
|
64
|
+
private _lines;
|
|
65
|
+
private _truncated;
|
|
66
|
+
private _chars;
|
|
67
|
+
private _attrs;
|
|
68
|
+
private _col;
|
|
69
|
+
private _lastPrinted;
|
|
70
|
+
private _joinNext;
|
|
71
|
+
private _title;
|
|
72
|
+
private _needsScreen;
|
|
73
|
+
private _dropped;
|
|
74
|
+
private _phase;
|
|
75
|
+
private _params;
|
|
76
|
+
private _group;
|
|
77
|
+
private _digits;
|
|
78
|
+
private _prefix;
|
|
79
|
+
private _string;
|
|
80
|
+
private _stringEsc;
|
|
81
|
+
constructor(options?: {
|
|
82
|
+
tabWidth?: number;
|
|
83
|
+
maxLines?: number;
|
|
84
|
+
});
|
|
85
|
+
/** Feed the next chunk. Bytes are preferred — see `./utf8.ts`. */
|
|
86
|
+
write(data: AnsiInput): void;
|
|
87
|
+
/** The document as it stands. Cheap: only the line still being written is
|
|
88
|
+
* rebuilt, and the finished ones are shared by reference. */
|
|
89
|
+
snapshot(): AnsiDocument;
|
|
90
|
+
private _feed;
|
|
91
|
+
private _control;
|
|
92
|
+
private _step;
|
|
93
|
+
private _escape;
|
|
94
|
+
private _csi;
|
|
95
|
+
private _value;
|
|
96
|
+
private _dispatch;
|
|
97
|
+
private _private;
|
|
98
|
+
private _stringByte;
|
|
99
|
+
private _endString;
|
|
100
|
+
private _print;
|
|
101
|
+
private _put;
|
|
102
|
+
private _newline;
|
|
103
|
+
private _pushLine;
|
|
104
|
+
private _eraseLine;
|
|
105
|
+
private _eraseChars;
|
|
106
|
+
private _deleteChars;
|
|
107
|
+
private _insertBlanks;
|
|
108
|
+
private _drop;
|
|
109
|
+
/** Dropped, and it is the kind of sequence that means the capture wanted a
|
|
110
|
+
* real screen. Both, always: `needsScreen` says which renderer to use and
|
|
111
|
+
* `dropped` says what it cost to use the other one. */
|
|
112
|
+
private _screen;
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=parse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/ansi/parse.ts"],"names":[],"mappings":"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"}
|