@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,687 @@
|
|
|
1
|
+
// The escape-sequence state machine, and the flow reducer over it.
|
|
2
|
+
//
|
|
3
|
+
// Pure: bytes in, plain arrays out. No X, no node, no React, no
|
|
4
|
+
// `@xterm/headless` — so the whole model is asserted against byte strings in
|
|
5
|
+
// `test/ansi.test.ts`, the posture `../terminal/vt/diff.ts` takes for the
|
|
6
|
+
// live renderer.
|
|
7
|
+
//
|
|
8
|
+
// ### Why a line buffer rather than a grid
|
|
9
|
+
//
|
|
10
|
+
// A log is a *document*: it has lines, not rows, and no column count of its
|
|
11
|
+
// own. So the reducer keeps exactly one row — the line being written — and
|
|
12
|
+
// flushes it to spans when a newline arrives. `\r` rewinds the write head
|
|
13
|
+
// inside that row, `\e[K` truncates it, `\e[nC` moves along it: every
|
|
14
|
+
// sequence a line-oriented program actually emits is exact in this model,
|
|
15
|
+
// while none of them needs a `cols` the capture never had.
|
|
16
|
+
//
|
|
17
|
+
// The sequences that only mean something on a real screen — `CUP`, `ED`,
|
|
18
|
+
// `IL`, a scroll region, the alternate screen — set `needsScreen` and are
|
|
19
|
+
// counted in `dropped`. What this cannot represent, it says so about; see
|
|
20
|
+
// the PRD for why silence would be the worse failure.
|
|
21
|
+
//
|
|
22
|
+
// ### Why a state machine rather than a regular expression
|
|
23
|
+
//
|
|
24
|
+
// A parser that does not understand a sequence's *structure* prints its
|
|
25
|
+
// payload as text the moment it meets one it has no pattern for — the
|
|
26
|
+
// classic garbage-on-screen bug. Everything below is recognised and consumed
|
|
27
|
+
// even when it is then discarded.
|
|
28
|
+
import { PLAIN, Style, param, ABSENT } from './sgr.js';
|
|
29
|
+
import { Utf8Decoder } from './utf8.js';
|
|
30
|
+
/**
|
|
31
|
+
* A capture, reduced.
|
|
32
|
+
*
|
|
33
|
+
* ```ts
|
|
34
|
+
* const doc = parseAnsi(await readFile('build.log'));
|
|
35
|
+
* doc.lines.map((line) => line.text);
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export function parseAnsi(data, options = {}) {
|
|
39
|
+
const state = options.from instanceof AnsiState
|
|
40
|
+
? options.from
|
|
41
|
+
: options.from
|
|
42
|
+
? options.from.state
|
|
43
|
+
: new AnsiState(options);
|
|
44
|
+
state.write(data);
|
|
45
|
+
return state.snapshot();
|
|
46
|
+
}
|
|
47
|
+
/** The capture's text with every escape sequence resolved away. What a
|
|
48
|
+
* round-trip test compares against, and what a plain-text export wants. */
|
|
49
|
+
export function stripAnsi(data, options) {
|
|
50
|
+
return parseAnsi(data, options)
|
|
51
|
+
.lines.map((line) => line.text)
|
|
52
|
+
.join('\n');
|
|
53
|
+
}
|
|
54
|
+
// --- the machine ------------------------------------------------------------
|
|
55
|
+
const GROUND = 0;
|
|
56
|
+
const ESC = 1;
|
|
57
|
+
const CSI = 2;
|
|
58
|
+
const OSC = 3;
|
|
59
|
+
/** DCS, SOS, PM, APC — a string terminated by ST, and never anything we draw. */
|
|
60
|
+
const STR = 4;
|
|
61
|
+
/** `ESC ( B` and friends: one more byte to swallow. */
|
|
62
|
+
const CHARSET = 5;
|
|
63
|
+
/** A column an escape sequence may ask for. `\e[999999999C` is a corrupt
|
|
64
|
+
* capture rather than a request, and allocating for it is how a renderer
|
|
65
|
+
* turns one bad byte into an out-of-memory. */
|
|
66
|
+
const MAX_COLUMN = 100_000;
|
|
67
|
+
/** An OSC or DCS payload bigger than this is a program misbehaving — the same
|
|
68
|
+
* call `<vtterm>` makes about an oversized OSC 52. */
|
|
69
|
+
const MAX_STRING = 64 * 1024;
|
|
70
|
+
/** Marks join the cell before them rather than taking one of their own, so a
|
|
71
|
+
* combining accent does not shift every column after it. */
|
|
72
|
+
const MARK = /\p{M}/u;
|
|
73
|
+
const ZWJ = 0x200d;
|
|
74
|
+
function joinsPrevious(cp, ch) {
|
|
75
|
+
return cp === ZWJ || (cp >= 0x300 && MARK.test(ch));
|
|
76
|
+
}
|
|
77
|
+
/** Would a blank cell in these attributes leave a mark on the screen? */
|
|
78
|
+
function paintsBlank(attrs) {
|
|
79
|
+
if (!attrs || attrs === PLAIN)
|
|
80
|
+
return false;
|
|
81
|
+
return Boolean(attrs.bg ??
|
|
82
|
+
attrs.inverse ??
|
|
83
|
+
attrs.underline ??
|
|
84
|
+
attrs.strike ??
|
|
85
|
+
attrs.overline);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* One row of cells, as spans.
|
|
89
|
+
*
|
|
90
|
+
* Trailing blanks in attributes that paint nothing are dropped: they are
|
|
91
|
+
* invisible on the screen and they would ride along in every copied line. A
|
|
92
|
+
* trailing run that *does* paint — a status bar's background — is kept,
|
|
93
|
+
* because that one is on the screen.
|
|
94
|
+
*/
|
|
95
|
+
function flushLine(chars, attrs) {
|
|
96
|
+
let end = chars.length;
|
|
97
|
+
while (end > 0 &&
|
|
98
|
+
(chars[end - 1] ?? ' ') === ' ' &&
|
|
99
|
+
!paintsBlank(attrs[end - 1])) {
|
|
100
|
+
end--;
|
|
101
|
+
}
|
|
102
|
+
const spans = [];
|
|
103
|
+
let text = '';
|
|
104
|
+
let i = 0;
|
|
105
|
+
while (i < end) {
|
|
106
|
+
// Cells written between two SGR sequences share one frozen record, so
|
|
107
|
+
// this is an identity compare rather than twelve field compares.
|
|
108
|
+
const attr = attrs[i] ?? PLAIN;
|
|
109
|
+
let j = i + 1;
|
|
110
|
+
while (j < end && (attrs[j] ?? PLAIN) === attr)
|
|
111
|
+
j++;
|
|
112
|
+
let run = '';
|
|
113
|
+
for (let k = i; k < j; k++)
|
|
114
|
+
run += chars[k] ?? ' ';
|
|
115
|
+
spans.push({ ...attr, text: run });
|
|
116
|
+
text += run;
|
|
117
|
+
i = j;
|
|
118
|
+
}
|
|
119
|
+
return { spans, text };
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* The reducer's state: the escape machine, the current attributes, the line
|
|
123
|
+
* being written, and the lines already finished.
|
|
124
|
+
*
|
|
125
|
+
* Held across calls so an append costs the appended bytes. Completed lines
|
|
126
|
+
* are never mutated, so an older `AnsiDocument` snapshot stays valid after
|
|
127
|
+
* the next `write()`.
|
|
128
|
+
*/
|
|
129
|
+
export class AnsiState {
|
|
130
|
+
_tabWidth;
|
|
131
|
+
_maxLines;
|
|
132
|
+
_style = new Style();
|
|
133
|
+
_decoder = new Utf8Decoder();
|
|
134
|
+
_lines = [];
|
|
135
|
+
_truncated = 0;
|
|
136
|
+
_chars = [];
|
|
137
|
+
_attrs = [];
|
|
138
|
+
_col = 0;
|
|
139
|
+
_lastPrinted = '';
|
|
140
|
+
_joinNext = false;
|
|
141
|
+
_title;
|
|
142
|
+
_needsScreen = false;
|
|
143
|
+
_dropped = {};
|
|
144
|
+
_phase = GROUND;
|
|
145
|
+
_params = [];
|
|
146
|
+
_group = [];
|
|
147
|
+
_digits = '';
|
|
148
|
+
_prefix = '';
|
|
149
|
+
_string = '';
|
|
150
|
+
_stringEsc = false;
|
|
151
|
+
constructor(options = {}) {
|
|
152
|
+
this._tabWidth = Math.max(1, options.tabWidth ?? 8);
|
|
153
|
+
this._maxLines = Math.max(1, options.maxLines ?? Infinity);
|
|
154
|
+
}
|
|
155
|
+
/** Feed the next chunk. Bytes are preferred — see `./utf8.ts`. */
|
|
156
|
+
write(data) {
|
|
157
|
+
if (typeof data === 'string') {
|
|
158
|
+
this._feed(data);
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
if (data instanceof Uint8Array) {
|
|
162
|
+
this._feed(this._decoder.decode(data));
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
for (const part of data)
|
|
166
|
+
this.write(part);
|
|
167
|
+
}
|
|
168
|
+
/** The document as it stands. Cheap: only the line still being written is
|
|
169
|
+
* rebuilt, and the finished ones are shared by reference. */
|
|
170
|
+
snapshot() {
|
|
171
|
+
const live = flushLine(this._chars, this._attrs);
|
|
172
|
+
// A capture with no trailing newline still has a last line, and a log
|
|
173
|
+
// being tailed shows its tail. An empty one is not a line at all.
|
|
174
|
+
const hasLive = live.spans.length > 0;
|
|
175
|
+
// The line still being written counts against `maxLines`, because "keep
|
|
176
|
+
// the last hundred lines" means the hundred a reader sees. Eviction in
|
|
177
|
+
// `_pushLine` is what bounds the memory; this is what bounds the answer,
|
|
178
|
+
// and only the two differ by the one live line.
|
|
179
|
+
const room = hasLive ? this._maxLines - 1 : this._maxLines;
|
|
180
|
+
const skipped = Math.max(0, this._lines.length - room);
|
|
181
|
+
const lines = skipped > 0 ? this._lines.slice(skipped) : this._lines.slice();
|
|
182
|
+
if (hasLive)
|
|
183
|
+
lines.push(live);
|
|
184
|
+
return {
|
|
185
|
+
lines,
|
|
186
|
+
...(this._title === undefined ? null : { title: this._title }),
|
|
187
|
+
needsScreen: this._needsScreen,
|
|
188
|
+
dropped: { ...this._dropped },
|
|
189
|
+
truncated: this._truncated + skipped,
|
|
190
|
+
state: this,
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
// --- the escape machine ---------------------------------------------------
|
|
194
|
+
_feed(text) {
|
|
195
|
+
const n = text.length;
|
|
196
|
+
let i = 0;
|
|
197
|
+
while (i < n) {
|
|
198
|
+
if (this._phase === GROUND) {
|
|
199
|
+
// The fast path: everything up to the next control character is text,
|
|
200
|
+
// and a build log is almost all text.
|
|
201
|
+
let j = i;
|
|
202
|
+
while (j < n) {
|
|
203
|
+
const c = text.charCodeAt(j);
|
|
204
|
+
if (c < 0x20 || c === 0x7f)
|
|
205
|
+
break;
|
|
206
|
+
j++;
|
|
207
|
+
}
|
|
208
|
+
if (j > i) {
|
|
209
|
+
this._print(text.slice(i, j));
|
|
210
|
+
i = j;
|
|
211
|
+
continue;
|
|
212
|
+
}
|
|
213
|
+
this._control(text.charCodeAt(i));
|
|
214
|
+
i++;
|
|
215
|
+
continue;
|
|
216
|
+
}
|
|
217
|
+
this._step(text.charCodeAt(i), text[i]);
|
|
218
|
+
i++;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
_control(c) {
|
|
222
|
+
switch (c) {
|
|
223
|
+
case 0x08:
|
|
224
|
+
this._col = Math.max(0, this._col - 1);
|
|
225
|
+
break;
|
|
226
|
+
case 0x09:
|
|
227
|
+
this._col = Math.min(MAX_COLUMN, (Math.floor(this._col / this._tabWidth) + 1) * this._tabWidth);
|
|
228
|
+
break;
|
|
229
|
+
case 0x0a:
|
|
230
|
+
case 0x0b:
|
|
231
|
+
case 0x0c:
|
|
232
|
+
this._newline();
|
|
233
|
+
break;
|
|
234
|
+
case 0x0d:
|
|
235
|
+
this._col = 0;
|
|
236
|
+
break;
|
|
237
|
+
case 0x1b:
|
|
238
|
+
this._phase = ESC;
|
|
239
|
+
break;
|
|
240
|
+
default:
|
|
241
|
+
// BEL, SO/SI, DEL and the rest: consumed, and none of them changes
|
|
242
|
+
// anything this model holds.
|
|
243
|
+
break;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
_step(code, ch) {
|
|
247
|
+
switch (this._phase) {
|
|
248
|
+
case ESC:
|
|
249
|
+
this._escape(ch);
|
|
250
|
+
break;
|
|
251
|
+
case CSI:
|
|
252
|
+
this._csi(code, ch);
|
|
253
|
+
break;
|
|
254
|
+
case OSC:
|
|
255
|
+
case STR:
|
|
256
|
+
this._stringByte(code, ch);
|
|
257
|
+
break;
|
|
258
|
+
case CHARSET:
|
|
259
|
+
// `ESC ( B` and its family: the designation byte, swallowed. Nothing
|
|
260
|
+
// here switches character sets — a capture is already Unicode by the
|
|
261
|
+
// time it reaches this parser.
|
|
262
|
+
this._phase = GROUND;
|
|
263
|
+
break;
|
|
264
|
+
default:
|
|
265
|
+
this._phase = GROUND;
|
|
266
|
+
break;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
_escape(ch) {
|
|
270
|
+
switch (ch) {
|
|
271
|
+
case '[':
|
|
272
|
+
this._phase = CSI;
|
|
273
|
+
this._params = [];
|
|
274
|
+
this._group = [];
|
|
275
|
+
this._digits = '';
|
|
276
|
+
this._prefix = '';
|
|
277
|
+
return;
|
|
278
|
+
case ']':
|
|
279
|
+
this._phase = OSC;
|
|
280
|
+
this._string = '';
|
|
281
|
+
this._stringEsc = false;
|
|
282
|
+
return;
|
|
283
|
+
case 'P': // DCS — sixel arrives here
|
|
284
|
+
case 'X': // SOS
|
|
285
|
+
case '^': // PM
|
|
286
|
+
case '_': // APC
|
|
287
|
+
this._phase = STR;
|
|
288
|
+
this._string = '';
|
|
289
|
+
this._stringEsc = false;
|
|
290
|
+
return;
|
|
291
|
+
case '(':
|
|
292
|
+
case ')':
|
|
293
|
+
case '*':
|
|
294
|
+
case '+':
|
|
295
|
+
case '-':
|
|
296
|
+
case '.':
|
|
297
|
+
case '/':
|
|
298
|
+
case '#':
|
|
299
|
+
case '%':
|
|
300
|
+
case ' ':
|
|
301
|
+
this._phase = CHARSET;
|
|
302
|
+
return;
|
|
303
|
+
default:
|
|
304
|
+
break;
|
|
305
|
+
}
|
|
306
|
+
this._phase = GROUND;
|
|
307
|
+
switch (ch) {
|
|
308
|
+
case 'D': // IND — down one line
|
|
309
|
+
this._newline();
|
|
310
|
+
break;
|
|
311
|
+
case 'E': // NEL — down one line, column zero
|
|
312
|
+
this._newline();
|
|
313
|
+
break;
|
|
314
|
+
case 'M': // RI — *up* one line, which only a screen has
|
|
315
|
+
this._screen('RI');
|
|
316
|
+
break;
|
|
317
|
+
case '7':
|
|
318
|
+
case '8':
|
|
319
|
+
// DECSC/DECRC. Counted rather than flagged: a saved cursor restored
|
|
320
|
+
// inside one line is ordinary in progress renderers, and calling
|
|
321
|
+
// every capture that uses it "needs a screen" would cry wolf.
|
|
322
|
+
this._drop(ch === '7' ? 'DECSC' : 'DECRC');
|
|
323
|
+
break;
|
|
324
|
+
case 'c':
|
|
325
|
+
this._drop('RIS');
|
|
326
|
+
break;
|
|
327
|
+
case '\\': // ST with nothing open
|
|
328
|
+
case '=':
|
|
329
|
+
case '>':
|
|
330
|
+
break;
|
|
331
|
+
default:
|
|
332
|
+
this._drop('esc');
|
|
333
|
+
break;
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
_csi(code, ch) {
|
|
337
|
+
if (code >= 0x30 && code <= 0x39) {
|
|
338
|
+
this._digits += ch;
|
|
339
|
+
return;
|
|
340
|
+
}
|
|
341
|
+
if (code === 0x3a) {
|
|
342
|
+
this._group.push(this._value());
|
|
343
|
+
return;
|
|
344
|
+
}
|
|
345
|
+
if (code === 0x3b) {
|
|
346
|
+
this._group.push(this._value());
|
|
347
|
+
this._params.push(this._group);
|
|
348
|
+
this._group = [];
|
|
349
|
+
return;
|
|
350
|
+
}
|
|
351
|
+
if (code >= 0x3c && code <= 0x3f) {
|
|
352
|
+
// `?`, `<`, `=`, `>`: the private marker, and only legal before any
|
|
353
|
+
// parameter — a stray one later is the capture's problem, not ours.
|
|
354
|
+
this._prefix += ch;
|
|
355
|
+
return;
|
|
356
|
+
}
|
|
357
|
+
if (code >= 0x20 && code <= 0x2f) {
|
|
358
|
+
// An intermediate byte. Nothing dispatched below takes one, so the only
|
|
359
|
+
// thing it changes is that the final is not what it would otherwise be.
|
|
360
|
+
this._prefix += ch;
|
|
361
|
+
return;
|
|
362
|
+
}
|
|
363
|
+
if (code >= 0x40 && code <= 0x7e) {
|
|
364
|
+
this._group.push(this._value());
|
|
365
|
+
this._params.push(this._group);
|
|
366
|
+
this._group = [];
|
|
367
|
+
this._phase = GROUND;
|
|
368
|
+
this._dispatch(ch);
|
|
369
|
+
return;
|
|
370
|
+
}
|
|
371
|
+
if (code === 0x18 || code === 0x1a) {
|
|
372
|
+
// CAN/SUB abort the sequence, which is the one way a program says
|
|
373
|
+
// "ignore what I just started".
|
|
374
|
+
this._phase = GROUND;
|
|
375
|
+
return;
|
|
376
|
+
}
|
|
377
|
+
// A C0 inside a CSI is executed and the sequence continues, which is what
|
|
378
|
+
// makes `\e[1;\n31m` behave the way a terminal behaves.
|
|
379
|
+
if (code < 0x20)
|
|
380
|
+
this._control(code);
|
|
381
|
+
}
|
|
382
|
+
_value() {
|
|
383
|
+
if (!this._digits)
|
|
384
|
+
return ABSENT;
|
|
385
|
+
const n = Number.parseInt(this._digits, 10);
|
|
386
|
+
this._digits = '';
|
|
387
|
+
return Number.isFinite(n) ? n : ABSENT;
|
|
388
|
+
}
|
|
389
|
+
_dispatch(final) {
|
|
390
|
+
const params = this._params;
|
|
391
|
+
const at = (i, dflt) => param(params, i, dflt);
|
|
392
|
+
const positive = (i) => Math.max(1, Math.min(MAX_COLUMN, at(i, 1)));
|
|
393
|
+
if (this._prefix) {
|
|
394
|
+
this._private(final, at(0, 0));
|
|
395
|
+
return;
|
|
396
|
+
}
|
|
397
|
+
switch (final) {
|
|
398
|
+
case 'm':
|
|
399
|
+
this._style.apply(params);
|
|
400
|
+
return;
|
|
401
|
+
case 'K':
|
|
402
|
+
this._eraseLine(at(0, 0));
|
|
403
|
+
return;
|
|
404
|
+
case 'C': // CUF
|
|
405
|
+
case 'a': // HPR
|
|
406
|
+
this._col = Math.min(MAX_COLUMN, this._col + positive(0));
|
|
407
|
+
return;
|
|
408
|
+
case 'D': // CUB
|
|
409
|
+
this._col = Math.max(0, this._col - positive(0));
|
|
410
|
+
return;
|
|
411
|
+
case 'G': // CHA
|
|
412
|
+
case '`': // HPA
|
|
413
|
+
// Column-absolute *within a line* is the one addressing sequence a
|
|
414
|
+
// flow model answers exactly, so it is honoured rather than flagged.
|
|
415
|
+
this._col = Math.max(0, Math.min(MAX_COLUMN, at(0, 1) - 1));
|
|
416
|
+
return;
|
|
417
|
+
case 'E': // CNL — down n lines, column zero. In a document, n newlines.
|
|
418
|
+
for (let i = 0; i < positive(0); i++)
|
|
419
|
+
this._newline();
|
|
420
|
+
return;
|
|
421
|
+
case 'Z': // CBT
|
|
422
|
+
this._col = Math.max(0, (Math.ceil(this._col / this._tabWidth) - positive(0)) *
|
|
423
|
+
this._tabWidth);
|
|
424
|
+
return;
|
|
425
|
+
case 'X': // ECH
|
|
426
|
+
this._eraseChars(positive(0));
|
|
427
|
+
return;
|
|
428
|
+
case 'P': // DCH
|
|
429
|
+
this._deleteChars(positive(0));
|
|
430
|
+
return;
|
|
431
|
+
case '@': // ICH
|
|
432
|
+
this._insertBlanks(positive(0));
|
|
433
|
+
return;
|
|
434
|
+
case 'b': // REP
|
|
435
|
+
if (this._lastPrinted) {
|
|
436
|
+
const attrs = this._style.attrs();
|
|
437
|
+
for (let i = 0; i < positive(0); i++)
|
|
438
|
+
this._put(this._lastPrinted, attrs);
|
|
439
|
+
}
|
|
440
|
+
return;
|
|
441
|
+
case 'H':
|
|
442
|
+
case 'f':
|
|
443
|
+
this._screen('CUP');
|
|
444
|
+
return;
|
|
445
|
+
case 'A':
|
|
446
|
+
this._screen('CUU');
|
|
447
|
+
return;
|
|
448
|
+
case 'B':
|
|
449
|
+
this._screen('CUD');
|
|
450
|
+
return;
|
|
451
|
+
case 'F':
|
|
452
|
+
this._screen('CPL');
|
|
453
|
+
return;
|
|
454
|
+
case 'd':
|
|
455
|
+
this._screen('VPA');
|
|
456
|
+
return;
|
|
457
|
+
case 'J':
|
|
458
|
+
this._screen('ED');
|
|
459
|
+
return;
|
|
460
|
+
case 'L':
|
|
461
|
+
this._screen('IL');
|
|
462
|
+
return;
|
|
463
|
+
case 'M':
|
|
464
|
+
this._screen('DL');
|
|
465
|
+
return;
|
|
466
|
+
case 'S':
|
|
467
|
+
this._screen('SU');
|
|
468
|
+
return;
|
|
469
|
+
case 'T':
|
|
470
|
+
this._screen('SD');
|
|
471
|
+
return;
|
|
472
|
+
case 'r':
|
|
473
|
+
this._screen('DECSTBM');
|
|
474
|
+
return;
|
|
475
|
+
case 'n':
|
|
476
|
+
case 'c':
|
|
477
|
+
// A query. Nothing can answer it: a capture is not a conversation.
|
|
478
|
+
this._drop('query');
|
|
479
|
+
return;
|
|
480
|
+
case 'h':
|
|
481
|
+
case 'l':
|
|
482
|
+
this._drop('mode');
|
|
483
|
+
return;
|
|
484
|
+
case 's':
|
|
485
|
+
case 'u':
|
|
486
|
+
this._drop(final === 's' ? 'SCOSC' : 'SCORC');
|
|
487
|
+
return;
|
|
488
|
+
case 't':
|
|
489
|
+
this._drop('window-op');
|
|
490
|
+
return;
|
|
491
|
+
default:
|
|
492
|
+
this._drop('csi');
|
|
493
|
+
return;
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
_private(final, first) {
|
|
497
|
+
if (final !== 'h' && final !== 'l') {
|
|
498
|
+
this._drop('csi-private');
|
|
499
|
+
return;
|
|
500
|
+
}
|
|
501
|
+
// 1049/1047/47 are the alternate screen, and a program that took it drew
|
|
502
|
+
// a screen by definition.
|
|
503
|
+
if (first === 1049 || first === 1047 || first === 47) {
|
|
504
|
+
this._screen('alt-screen');
|
|
505
|
+
return;
|
|
506
|
+
}
|
|
507
|
+
// Cursor visibility, bracketed paste, mouse tracking, focus reporting:
|
|
508
|
+
// all real, none of them visible in a static render.
|
|
509
|
+
this._drop('dec-mode');
|
|
510
|
+
}
|
|
511
|
+
// --- OSC and the string sequences -----------------------------------------
|
|
512
|
+
_stringByte(code, ch) {
|
|
513
|
+
if (this._stringEsc) {
|
|
514
|
+
this._stringEsc = false;
|
|
515
|
+
if (ch === '\\') {
|
|
516
|
+
this._endString();
|
|
517
|
+
return;
|
|
518
|
+
}
|
|
519
|
+
// An ESC that was not ST aborts the string, exactly as it does in a
|
|
520
|
+
// terminal — otherwise one dropped byte swallows the rest of the log.
|
|
521
|
+
this._phase = GROUND;
|
|
522
|
+
this._escape(ch);
|
|
523
|
+
return;
|
|
524
|
+
}
|
|
525
|
+
if (code === 0x1b) {
|
|
526
|
+
this._stringEsc = true;
|
|
527
|
+
return;
|
|
528
|
+
}
|
|
529
|
+
if (code === 0x07) {
|
|
530
|
+
this._endString();
|
|
531
|
+
return;
|
|
532
|
+
}
|
|
533
|
+
if (code < 0x20) {
|
|
534
|
+
// A C0 other than BEL/ESC ends an OSC in xterm. Ending is the safe
|
|
535
|
+
// reading: the alternative is swallowing the rest of the capture.
|
|
536
|
+
this._endString();
|
|
537
|
+
this._control(code);
|
|
538
|
+
return;
|
|
539
|
+
}
|
|
540
|
+
if (this._string.length < MAX_STRING)
|
|
541
|
+
this._string += ch;
|
|
542
|
+
}
|
|
543
|
+
_endString() {
|
|
544
|
+
const phase = this._phase;
|
|
545
|
+
const payload = this._string;
|
|
546
|
+
this._string = '';
|
|
547
|
+
this._phase = GROUND;
|
|
548
|
+
if (phase === STR) {
|
|
549
|
+
// DCS and friends. Sixel lives here, and a sixel is an image this
|
|
550
|
+
// component does not decode — recognised, consumed, counted.
|
|
551
|
+
this._drop(/^[\d;]*q/.test(payload) ? 'sixel' : 'dcs');
|
|
552
|
+
return;
|
|
553
|
+
}
|
|
554
|
+
const split = payload.indexOf(';');
|
|
555
|
+
const id = split < 0 ? payload : payload.slice(0, split);
|
|
556
|
+
const rest = split < 0 ? '' : payload.slice(split + 1);
|
|
557
|
+
switch (id) {
|
|
558
|
+
case '0':
|
|
559
|
+
case '2':
|
|
560
|
+
this._title = rest;
|
|
561
|
+
return;
|
|
562
|
+
case '1':
|
|
563
|
+
// The icon name. Real, and nothing here has an icon.
|
|
564
|
+
return;
|
|
565
|
+
case '8': {
|
|
566
|
+
// `OSC 8 ; params ; URI ST`, and an empty URI closes.
|
|
567
|
+
const uriAt = rest.indexOf(';');
|
|
568
|
+
const uri = uriAt < 0 ? '' : rest.slice(uriAt + 1);
|
|
569
|
+
this._style.setHref(uri || undefined);
|
|
570
|
+
return;
|
|
571
|
+
}
|
|
572
|
+
case '52':
|
|
573
|
+
// A recorded clipboard write. Recording one is not performing one.
|
|
574
|
+
this._drop('osc-52');
|
|
575
|
+
return;
|
|
576
|
+
case '4':
|
|
577
|
+
case '10':
|
|
578
|
+
case '11':
|
|
579
|
+
case '12':
|
|
580
|
+
case '104':
|
|
581
|
+
case '110':
|
|
582
|
+
case '111':
|
|
583
|
+
case '112':
|
|
584
|
+
this._drop('osc-palette');
|
|
585
|
+
return;
|
|
586
|
+
default:
|
|
587
|
+
this._drop('osc');
|
|
588
|
+
return;
|
|
589
|
+
}
|
|
590
|
+
}
|
|
591
|
+
// --- the line buffer ------------------------------------------------------
|
|
592
|
+
_print(text) {
|
|
593
|
+
const attrs = this._style.attrs();
|
|
594
|
+
for (const ch of text) {
|
|
595
|
+
const cp = ch.codePointAt(0);
|
|
596
|
+
const joins = this._joinNext || joinsPrevious(cp, ch);
|
|
597
|
+
this._joinNext = cp === ZWJ;
|
|
598
|
+
if (joins && this._col > 0) {
|
|
599
|
+
const at = this._col - 1;
|
|
600
|
+
this._chars[at] = (this._chars[at] ?? ' ') + ch;
|
|
601
|
+
this._lastPrinted = this._chars[at];
|
|
602
|
+
continue;
|
|
603
|
+
}
|
|
604
|
+
this._put(ch, attrs);
|
|
605
|
+
}
|
|
606
|
+
}
|
|
607
|
+
_put(ch, attrs) {
|
|
608
|
+
const col = this._col;
|
|
609
|
+
if (col >= MAX_COLUMN)
|
|
610
|
+
return;
|
|
611
|
+
// A gap opened by CUF or HPA is blank on the screen, so it is blank here.
|
|
612
|
+
for (let i = this._chars.length; i < col; i++) {
|
|
613
|
+
this._chars[i] = ' ';
|
|
614
|
+
this._attrs[i] = PLAIN;
|
|
615
|
+
}
|
|
616
|
+
this._chars[col] = ch;
|
|
617
|
+
this._attrs[col] = attrs;
|
|
618
|
+
this._col = col + 1;
|
|
619
|
+
this._lastPrinted = ch;
|
|
620
|
+
}
|
|
621
|
+
_newline() {
|
|
622
|
+
this._pushLine(flushLine(this._chars, this._attrs));
|
|
623
|
+
this._chars = [];
|
|
624
|
+
this._attrs = [];
|
|
625
|
+
this._col = 0;
|
|
626
|
+
this._joinNext = false;
|
|
627
|
+
}
|
|
628
|
+
_pushLine(line) {
|
|
629
|
+
this._lines.push(line);
|
|
630
|
+
if (this._lines.length > this._maxLines) {
|
|
631
|
+
const excess = this._lines.length - this._maxLines;
|
|
632
|
+
this._lines.splice(0, excess);
|
|
633
|
+
this._truncated += excess;
|
|
634
|
+
}
|
|
635
|
+
}
|
|
636
|
+
_eraseLine(mode) {
|
|
637
|
+
if (mode === 1) {
|
|
638
|
+
const attrs = this._style.attrs();
|
|
639
|
+
const end = Math.min(this._col + 1, Math.max(this._chars.length, this._col + 1));
|
|
640
|
+
for (let i = 0; i < end; i++) {
|
|
641
|
+
this._chars[i] = ' ';
|
|
642
|
+
this._attrs[i] = attrs;
|
|
643
|
+
}
|
|
644
|
+
return;
|
|
645
|
+
}
|
|
646
|
+
// 0 truncates from the head, 2 clears the row. In a document both are the
|
|
647
|
+
// same statement — there is nothing past the head but what a `\r` rewind
|
|
648
|
+
// left, and erasing it is exactly what the sequence is for.
|
|
649
|
+
const from = mode === 2 ? 0 : this._col;
|
|
650
|
+
this._chars.length = Math.min(this._chars.length, from);
|
|
651
|
+
this._attrs.length = Math.min(this._attrs.length, from);
|
|
652
|
+
}
|
|
653
|
+
_eraseChars(n) {
|
|
654
|
+
const attrs = this._style.attrs();
|
|
655
|
+
const end = Math.min(this._chars.length, this._col + n);
|
|
656
|
+
for (let i = this._col; i < end; i++) {
|
|
657
|
+
this._chars[i] = ' ';
|
|
658
|
+
this._attrs[i] = attrs;
|
|
659
|
+
}
|
|
660
|
+
}
|
|
661
|
+
_deleteChars(n) {
|
|
662
|
+
if (this._col >= this._chars.length)
|
|
663
|
+
return;
|
|
664
|
+
this._chars.splice(this._col, n);
|
|
665
|
+
this._attrs.splice(this._col, n);
|
|
666
|
+
}
|
|
667
|
+
_insertBlanks(n) {
|
|
668
|
+
if (this._col > this._chars.length)
|
|
669
|
+
return;
|
|
670
|
+
const attrs = this._style.attrs();
|
|
671
|
+
const blanks = new Array(n).fill(' ');
|
|
672
|
+
this._chars.splice(this._col, 0, ...blanks);
|
|
673
|
+
this._attrs.splice(this._col, 0, ...new Array(n).fill(attrs));
|
|
674
|
+
}
|
|
675
|
+
// --- what could not be honoured -------------------------------------------
|
|
676
|
+
_drop(name) {
|
|
677
|
+
this._dropped[name] = (this._dropped[name] ?? 0) + 1;
|
|
678
|
+
}
|
|
679
|
+
/** Dropped, and it is the kind of sequence that means the capture wanted a
|
|
680
|
+
* real screen. Both, always: `needsScreen` says which renderer to use and
|
|
681
|
+
* `dropped` says what it cost to use the other one. */
|
|
682
|
+
_screen(name) {
|
|
683
|
+
this._needsScreen = true;
|
|
684
|
+
this._drop(name);
|
|
685
|
+
}
|
|
686
|
+
}
|
|
687
|
+
//# sourceMappingURL=parse.js.map
|