@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,172 @@
|
|
|
1
|
+
// `onTitleChange`, which is a property on somebody else's window.
|
|
2
|
+
//
|
|
3
|
+
// A terminal announces what is running in it by writing `_NET_WM_NAME` (and
|
|
4
|
+
// the older latin-1 `WM_NAME`) on its own top-level window — the OSC 0/2
|
|
5
|
+
// escape a shell prompt sends ends up there. So a tab strip that says
|
|
6
|
+
// `npm test` rather than `xterm` is a property read, not a pipe.
|
|
7
|
+
//
|
|
8
|
+
// **Why this is not polling.** `<foreign>`'s socket already selects
|
|
9
|
+
// `PropertyChange` on the client, because that is how `_XEMBED_INFO` is
|
|
10
|
+
// watched — so the client window ntk holds is already emitting `'property'`
|
|
11
|
+
// events and there is nothing to select, nothing to restore, and no interval
|
|
12
|
+
// to run. All this file does is listen to a window that is already listening.
|
|
13
|
+
//
|
|
14
|
+
// **Why the window is asked for rather than reached for.** `app.createWindow({
|
|
15
|
+
// id })` returns the *cached* `Window` for an id ntk already knows (window.js
|
|
16
|
+
// keeps one per connection), so this is the same object the socket holds
|
|
17
|
+
// rather than a second wrapper with its own event registration. The
|
|
18
|
+
// alternative — walking `node.socket.client` off the `onEmbedded` node — would
|
|
19
|
+
// be reaching into react-x11's internals for something its public app object
|
|
20
|
+
// already answers.
|
|
21
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
22
|
+
import { useApp } from 'react-x11';
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* The slice of ntk this file uses.
|
|
26
|
+
*
|
|
27
|
+
* Written out structurally rather than imported, for the reason
|
|
28
|
+
* `../desktop-calendar/ical.ts` gives at length: `useApp()` is declared
|
|
29
|
+
* `unknown` in react-x11's types, and ntk is not a dependency of this package.
|
|
30
|
+
*/
|
|
31
|
+
interface PropertyEvent {
|
|
32
|
+
atom: number;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
interface NtkWindowLike {
|
|
36
|
+
id: number;
|
|
37
|
+
atom(name: string): Promise<number>;
|
|
38
|
+
getProperty(
|
|
39
|
+
name: string,
|
|
40
|
+
options?: { as?: 'string' | 'buffer' | 'numbers' },
|
|
41
|
+
): Promise<unknown>;
|
|
42
|
+
on(event: 'property', listener: (ev: PropertyEvent) => void): void;
|
|
43
|
+
removeListener(
|
|
44
|
+
event: 'property',
|
|
45
|
+
listener: (ev: PropertyEvent) => void,
|
|
46
|
+
): void;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
interface NtkAppLike {
|
|
50
|
+
createWindow(args: { id: number }): NtkWindowLike;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function asApp(app: unknown): NtkAppLike | null {
|
|
54
|
+
const candidate = app as NtkAppLike | null;
|
|
55
|
+
return typeof candidate?.createWindow === 'function' ? candidate : null;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* `_NET_WM_NAME`, falling back to `WM_NAME`.
|
|
60
|
+
*
|
|
61
|
+
* The order is EWMH's: `_NET_WM_NAME` is UTF-8 and is what every terminal
|
|
62
|
+
* written this century sets, `WM_NAME` is latin-1 and is what one written
|
|
63
|
+
* before it sets. A client that sets both sets them to the same thing.
|
|
64
|
+
*/
|
|
65
|
+
async function readTitle(window: NtkWindowLike): Promise<string | null> {
|
|
66
|
+
for (const name of ['_NET_WM_NAME', 'WM_NAME']) {
|
|
67
|
+
const value = await window.getProperty(name, { as: 'string' });
|
|
68
|
+
if (typeof value === 'string' && value.length > 0) return value;
|
|
69
|
+
}
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export interface ForeignTitleHandlers {
|
|
74
|
+
onEmbedded: (info: { id: number }) => void;
|
|
75
|
+
onClientGone: () => void;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Watch the embedded client's title.
|
|
80
|
+
*
|
|
81
|
+
* Returns the two `<foreign>` handlers to spread, which is why this is a hook
|
|
82
|
+
* and not an effect the component writes itself: the client id exists only
|
|
83
|
+
* between `onEmbedded` and `onClientGone`, and both of those are props the
|
|
84
|
+
* component also wants to forward to its own caller.
|
|
85
|
+
*
|
|
86
|
+
* ```js
|
|
87
|
+
* const title = useForeignTitle(props.onTitleChange);
|
|
88
|
+
* <foreign onEmbedded={title.onEmbedded} onClientGone={title.onClientGone} />
|
|
89
|
+
* ```
|
|
90
|
+
*
|
|
91
|
+
* With no `onTitleChange` nothing is read at all — no atoms interned, no round
|
|
92
|
+
* trip — because most terminals in most apps are not labelled.
|
|
93
|
+
*/
|
|
94
|
+
export function useForeignTitle(
|
|
95
|
+
onTitleChange?: (title: string) => void,
|
|
96
|
+
): ForeignTitleHandlers {
|
|
97
|
+
const app = useApp();
|
|
98
|
+
const enabled = Boolean(onTitleChange);
|
|
99
|
+
|
|
100
|
+
// Read when the property changes rather than when the prop does, so a
|
|
101
|
+
// caller passing an inline arrow function does not re-subscribe.
|
|
102
|
+
const notify = useRef(onTitleChange);
|
|
103
|
+
notify.current = onTitleChange;
|
|
104
|
+
|
|
105
|
+
// 0 is X None, which is how "nothing embedded" is spelled everywhere else
|
|
106
|
+
// in this stack. The setter is guarded so that an `onEmbedded` for the
|
|
107
|
+
// client that is already current does not re-run the effect.
|
|
108
|
+
const [clientId, setClientId] = useState(0);
|
|
109
|
+
|
|
110
|
+
const onEmbedded = useCallback((info: { id: number }) => {
|
|
111
|
+
setClientId(info.id);
|
|
112
|
+
}, []);
|
|
113
|
+
const onClientGone = useCallback(() => setClientId(0), []);
|
|
114
|
+
|
|
115
|
+
useEffect(() => {
|
|
116
|
+
const ntk = asApp(app);
|
|
117
|
+
if (!enabled || !ntk || !clientId) return undefined;
|
|
118
|
+
|
|
119
|
+
let live = true;
|
|
120
|
+
let window: NtkWindowLike;
|
|
121
|
+
try {
|
|
122
|
+
window = ntk.createWindow({ id: clientId });
|
|
123
|
+
} catch {
|
|
124
|
+
// the client went away between the event and this effect
|
|
125
|
+
return undefined;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
let last: string | null = null;
|
|
129
|
+
let onProperty: ((ev: PropertyEvent) => void) | null = null;
|
|
130
|
+
|
|
131
|
+
const refresh = (): void => {
|
|
132
|
+
void readTitle(window).then(
|
|
133
|
+
(title) => {
|
|
134
|
+
if (!live || title === null || title === last) return;
|
|
135
|
+
last = title;
|
|
136
|
+
notify.current?.(title);
|
|
137
|
+
},
|
|
138
|
+
() => {
|
|
139
|
+
// the window is gone; `onClientGone` is the event that says so
|
|
140
|
+
},
|
|
141
|
+
);
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
void (async () => {
|
|
145
|
+
let watched: Set<number>;
|
|
146
|
+
try {
|
|
147
|
+
const [netName, wmName] = await Promise.all([
|
|
148
|
+
window.atom('_NET_WM_NAME'),
|
|
149
|
+
window.atom('WM_NAME'),
|
|
150
|
+
]);
|
|
151
|
+
watched = new Set([netName, wmName]);
|
|
152
|
+
} catch {
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
if (!live) return;
|
|
156
|
+
onProperty = (ev: PropertyEvent): void => {
|
|
157
|
+
if (watched.has(ev.atom)) refresh();
|
|
158
|
+
};
|
|
159
|
+
window.on('property', onProperty);
|
|
160
|
+
// A terminal has usually set its title before it has a window worth
|
|
161
|
+
// embedding, so the first value is a read rather than an event.
|
|
162
|
+
refresh();
|
|
163
|
+
})();
|
|
164
|
+
|
|
165
|
+
return () => {
|
|
166
|
+
live = false;
|
|
167
|
+
if (onProperty) window.removeListener('property', onProperty);
|
|
168
|
+
};
|
|
169
|
+
}, [app, enabled, clientId]);
|
|
170
|
+
|
|
171
|
+
return { onEmbedded, onClientGone };
|
|
172
|
+
}
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
// The palette, and what a cell's two colours resolve to. Pure — no X, no
|
|
2
|
+
// emulator, no node — so every rule below is asserted directly.
|
|
3
|
+
//
|
|
4
|
+
// `colors.palette` finally works fully here: urxvt takes its ANSI colours
|
|
5
|
+
// from the X resource database and alacritty from a config file, but the vt
|
|
6
|
+
// backend *is* the renderer, so a palette prop is simply the palette.
|
|
7
|
+
import type { TerminalColors } from '../backends.js';
|
|
8
|
+
import type { XtermCell } from './xterm.js';
|
|
9
|
+
|
|
10
|
+
/** A colour as a packed `0xRRGGBB`. The renderer never sees a string. */
|
|
11
|
+
export type Rgb = number;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* The standard 16, for a theme that has no opinion. xterm's own defaults,
|
|
15
|
+
* which is what an application's colour choices were made against.
|
|
16
|
+
*/
|
|
17
|
+
const ANSI16: readonly Rgb[] = [
|
|
18
|
+
0x000000, 0xcd0000, 0x00cd00, 0xcdcd00, 0x0000ee, 0xcd00cd, 0x00cdcd,
|
|
19
|
+
0xe5e5e5, 0x7f7f7f, 0xff0000, 0x00ff00, 0xffff00, 0x5c5cff, 0xff00ff,
|
|
20
|
+
0x00ffff, 0xffffff,
|
|
21
|
+
];
|
|
22
|
+
|
|
23
|
+
export interface Palette {
|
|
24
|
+
/** 256 entries: the 16 ANSI, the 6×6×6 cube, the 24 greys. */
|
|
25
|
+
readonly ansi: Int32Array;
|
|
26
|
+
readonly background: Rgb;
|
|
27
|
+
readonly foreground: Rgb;
|
|
28
|
+
readonly cursor: Rgb;
|
|
29
|
+
/** Text under the cursor. Derived from the cursor colour unless given. */
|
|
30
|
+
readonly cursorText: Rgb;
|
|
31
|
+
readonly selectionBackground: Rgb;
|
|
32
|
+
readonly selectionForeground: Rgb;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Parse the colour strings a prop or a theme carries. `#rgb`, `#rrggbb`,
|
|
37
|
+
* `rgb(r, g, b)` and the handful of names a terminal palette uses; anything
|
|
38
|
+
* else answers `null` and the caller keeps its default rather than painting
|
|
39
|
+
* something arbitrary.
|
|
40
|
+
*/
|
|
41
|
+
export function parseColor(value: string | undefined): Rgb | null {
|
|
42
|
+
if (!value) return null;
|
|
43
|
+
const text = value.trim().toLowerCase();
|
|
44
|
+
if (text.startsWith('#')) {
|
|
45
|
+
const hex = text.slice(1);
|
|
46
|
+
if (hex.length === 3 || hex.length === 4) {
|
|
47
|
+
const r = parseInt(hex[0] + hex[0], 16);
|
|
48
|
+
const g = parseInt(hex[1] + hex[1], 16);
|
|
49
|
+
const b = parseInt(hex[2] + hex[2], 16);
|
|
50
|
+
if (Number.isNaN(r + g + b)) return null;
|
|
51
|
+
return (r << 16) | (g << 8) | b;
|
|
52
|
+
}
|
|
53
|
+
if (hex.length === 6 || hex.length === 8) {
|
|
54
|
+
const n = parseInt(hex.slice(0, 6), 16);
|
|
55
|
+
return Number.isNaN(n) ? null : n;
|
|
56
|
+
}
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
const fn = /^rgba?\(([^)]+)\)$/.exec(text);
|
|
60
|
+
if (fn) {
|
|
61
|
+
const parts = fn[1].split(/[\s,/]+/).filter(Boolean);
|
|
62
|
+
if (parts.length < 3) return null;
|
|
63
|
+
const channel = (part: string): number => {
|
|
64
|
+
const n = part.endsWith('%')
|
|
65
|
+
? (parseFloat(part) * 255) / 100
|
|
66
|
+
: parseFloat(part);
|
|
67
|
+
return Number.isFinite(n)
|
|
68
|
+
? Math.max(0, Math.min(255, Math.round(n)))
|
|
69
|
+
: -1;
|
|
70
|
+
};
|
|
71
|
+
const r = channel(parts[0]);
|
|
72
|
+
const g = channel(parts[1]);
|
|
73
|
+
const b = channel(parts[2]);
|
|
74
|
+
if (r < 0 || g < 0 || b < 0) return null;
|
|
75
|
+
return (r << 16) | (g << 8) | b;
|
|
76
|
+
}
|
|
77
|
+
const named = NAMED[text];
|
|
78
|
+
return named === undefined ? null : named;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/** The names a terminal colour prop plausibly carries. Not CSS's whole list. */
|
|
82
|
+
const NAMED: Record<string, Rgb> = {
|
|
83
|
+
black: 0x000000,
|
|
84
|
+
white: 0xffffff,
|
|
85
|
+
red: 0xff0000,
|
|
86
|
+
green: 0x008000,
|
|
87
|
+
blue: 0x0000ff,
|
|
88
|
+
yellow: 0xffff00,
|
|
89
|
+
cyan: 0x00ffff,
|
|
90
|
+
magenta: 0xff00ff,
|
|
91
|
+
gray: 0x808080,
|
|
92
|
+
grey: 0x808080,
|
|
93
|
+
transparent: 0x000000,
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
/** Mix towards `b`, `t` in 0..1 — what `dim` and the unfocused cursor use. */
|
|
97
|
+
export function mix(a: Rgb, b: Rgb, t: number): Rgb {
|
|
98
|
+
const ar = (a >> 16) & 0xff;
|
|
99
|
+
const ag = (a >> 8) & 0xff;
|
|
100
|
+
const ab = a & 0xff;
|
|
101
|
+
const br = (b >> 16) & 0xff;
|
|
102
|
+
const bg = (b >> 8) & 0xff;
|
|
103
|
+
const bb = b & 0xff;
|
|
104
|
+
const r = Math.round(ar + (br - ar) * t);
|
|
105
|
+
const g = Math.round(ag + (bg - ag) * t);
|
|
106
|
+
const bl = Math.round(ab + (bb - ab) * t);
|
|
107
|
+
return (r << 16) | (g << 8) | bl;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Build the 256-colour palette from the props and the theme.
|
|
112
|
+
*
|
|
113
|
+
* 0–15 come from `colors.palette` where it has an entry and from the standard
|
|
114
|
+
* set where it does not; 16–231 are the 6×6×6 cube and 232–255 the 24 greys,
|
|
115
|
+
* both of which are fixed by the protocol rather than by taste.
|
|
116
|
+
*/
|
|
117
|
+
export function buildPalette(colors: TerminalColors | undefined): Palette {
|
|
118
|
+
const ansi = new Int32Array(256);
|
|
119
|
+
for (let i = 0; i < 16; i++) {
|
|
120
|
+
ansi[i] = parseColor(colors?.palette?.[i]) ?? ANSI16[i];
|
|
121
|
+
}
|
|
122
|
+
const cube = [0, 95, 135, 175, 215, 255];
|
|
123
|
+
for (let i = 0; i < 216; i++) {
|
|
124
|
+
const r = cube[Math.floor(i / 36) % 6];
|
|
125
|
+
const g = cube[Math.floor(i / 6) % 6];
|
|
126
|
+
const b = cube[i % 6];
|
|
127
|
+
ansi[16 + i] = (r << 16) | (g << 8) | b;
|
|
128
|
+
}
|
|
129
|
+
for (let i = 0; i < 24; i++) {
|
|
130
|
+
const v = 8 + i * 10;
|
|
131
|
+
ansi[232 + i] = (v << 16) | (v << 8) | v;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
const background = parseColor(colors?.background) ?? 0x101014;
|
|
135
|
+
const foreground = parseColor(colors?.foreground) ?? 0xe6e6e6;
|
|
136
|
+
const cursor = parseColor(colors?.cursor) ?? foreground;
|
|
137
|
+
return {
|
|
138
|
+
ansi,
|
|
139
|
+
background,
|
|
140
|
+
foreground,
|
|
141
|
+
cursor,
|
|
142
|
+
// Text under a block cursor: the background, so the glyph reads as a
|
|
143
|
+
// hole in the block — which is what every terminal does and what keeps
|
|
144
|
+
// the "two colours per cell" invariant true under the cursor too.
|
|
145
|
+
cursorText: background,
|
|
146
|
+
// A tint of the foreground over the background reads as a selection on
|
|
147
|
+
// both a light and a dark scheme, where a fixed blue reads as one of them.
|
|
148
|
+
selectionBackground: mix(background, foreground, 0.35),
|
|
149
|
+
selectionForeground: foreground,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
// --- cell resolution --------------------------------------------------------
|
|
154
|
+
|
|
155
|
+
/** Attribute bits that survive colour resolution: what still has to be drawn. */
|
|
156
|
+
export const DECO_UNDERLINE = 1;
|
|
157
|
+
export const DECO_STRIKE = 2;
|
|
158
|
+
export const DECO_OVERLINE = 4;
|
|
159
|
+
/** Font variant, as two bits — the run key the glyph pass groups on. */
|
|
160
|
+
export const VARIANT_BOLD = 8;
|
|
161
|
+
export const VARIANT_ITALIC = 16;
|
|
162
|
+
|
|
163
|
+
/** How a cell is being marked out, on top of what it says. */
|
|
164
|
+
export interface CellState {
|
|
165
|
+
selected: boolean;
|
|
166
|
+
/** The cursor is on this cell, visible, and the terminal has focus. */
|
|
167
|
+
cursor: 'none' | 'block' | 'underline' | 'bar' | 'hollow';
|
|
168
|
+
/** `drawBoldTextInBrightColors` — bold promotes ANSI 0–7 to 8–15. */
|
|
169
|
+
brightBold: boolean;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
export interface ResolvedCell {
|
|
173
|
+
fg: Rgb;
|
|
174
|
+
bg: Rgb;
|
|
175
|
+
/** `DECO_*` | `VARIANT_*`. */
|
|
176
|
+
flags: number;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* A cell's two colours, after every transform that can change them.
|
|
181
|
+
*
|
|
182
|
+
* The order is the one every terminal agrees on, and it is what makes "two
|
|
183
|
+
* colours per cell" true *after* resolution — which is the property the
|
|
184
|
+
* renderer exploits: one rectangle pass grouped by background, one glyph pass
|
|
185
|
+
* grouped by foreground.
|
|
186
|
+
*/
|
|
187
|
+
export function resolveCell(
|
|
188
|
+
cell: XtermCell,
|
|
189
|
+
palette: Palette,
|
|
190
|
+
state: CellState,
|
|
191
|
+
out: ResolvedCell,
|
|
192
|
+
): ResolvedCell {
|
|
193
|
+
let fg = cell.isFgDefault()
|
|
194
|
+
? palette.foreground
|
|
195
|
+
: cell.isFgRGB()
|
|
196
|
+
? cell.getFgColor() & 0xffffff
|
|
197
|
+
: palette.ansi[cell.getFgColor() & 0xff];
|
|
198
|
+
let bg = cell.isBgDefault()
|
|
199
|
+
? palette.background
|
|
200
|
+
: cell.isBgRGB()
|
|
201
|
+
? cell.getBgColor() & 0xffffff
|
|
202
|
+
: palette.ansi[cell.getBgColor() & 0xff];
|
|
203
|
+
|
|
204
|
+
let flags = 0;
|
|
205
|
+
const bold = cell.isBold() !== 0;
|
|
206
|
+
if (bold) flags |= VARIANT_BOLD;
|
|
207
|
+
if (cell.isItalic()) flags |= VARIANT_ITALIC;
|
|
208
|
+
if (cell.isUnderline()) flags |= DECO_UNDERLINE;
|
|
209
|
+
if (cell.isStrikethrough()) flags |= DECO_STRIKE;
|
|
210
|
+
if (cell.isOverline()) flags |= DECO_OVERLINE;
|
|
211
|
+
|
|
212
|
+
// Bold in a palette colour picks the bright half of the pair, which is how
|
|
213
|
+
// most terminal colour schemes were designed to be read.
|
|
214
|
+
if (bold && state.brightBold && cell.isFgPalette()) {
|
|
215
|
+
const index = cell.getFgColor() & 0xff;
|
|
216
|
+
if (index < 8) fg = palette.ansi[index + 8];
|
|
217
|
+
}
|
|
218
|
+
if (cell.isDim()) fg = mix(fg, bg, 0.5);
|
|
219
|
+
if (cell.isInverse()) {
|
|
220
|
+
const swap = fg;
|
|
221
|
+
fg = bg;
|
|
222
|
+
bg = swap;
|
|
223
|
+
}
|
|
224
|
+
if (cell.isInvisible()) fg = bg;
|
|
225
|
+
|
|
226
|
+
if (state.selected) {
|
|
227
|
+
bg = palette.selectionBackground;
|
|
228
|
+
fg = palette.selectionForeground;
|
|
229
|
+
}
|
|
230
|
+
switch (state.cursor) {
|
|
231
|
+
case 'block':
|
|
232
|
+
bg = palette.cursor;
|
|
233
|
+
fg = palette.cursorText;
|
|
234
|
+
break;
|
|
235
|
+
case 'hollow':
|
|
236
|
+
// Unfocused: the classic outline. Drawn as a decoration rather than a
|
|
237
|
+
// fill, so the cell keeps its own colours — see the renderer.
|
|
238
|
+
break;
|
|
239
|
+
default:
|
|
240
|
+
break;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
out.fg = fg;
|
|
244
|
+
out.bg = bg;
|
|
245
|
+
out.flags = flags;
|
|
246
|
+
return out;
|
|
247
|
+
}
|