@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,143 @@
|
|
|
1
|
+
// Inline AST → the styled runs `<richtext>` renders. Pure: all the colour
|
|
2
|
+
// and font decisions arrive in `InlineStyles`, which `index.ts` derives
|
|
3
|
+
// from the theme once per render.
|
|
4
|
+
import type { InlineNode } from './ast.js';
|
|
5
|
+
import type { TextRun } from '../richtext/node.js';
|
|
6
|
+
|
|
7
|
+
/** The resolved look of inline text, for one block. */
|
|
8
|
+
export interface InlineStyles {
|
|
9
|
+
family: string;
|
|
10
|
+
monoFamily: string;
|
|
11
|
+
size: number;
|
|
12
|
+
weight?: number | 'normal' | 'bold';
|
|
13
|
+
style?: 'normal' | 'italic';
|
|
14
|
+
color: string;
|
|
15
|
+
linkColor: string;
|
|
16
|
+
codeColor: string;
|
|
17
|
+
codeBg: string;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
interface WalkState {
|
|
21
|
+
bold: boolean;
|
|
22
|
+
italic: boolean;
|
|
23
|
+
code: boolean;
|
|
24
|
+
del: boolean;
|
|
25
|
+
href: string | null | undefined; // undefined: not in a link
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** Flatten an inline tree to runs. Nested emphasis composes; a code span
|
|
29
|
+
* inside a link keeps the chip and gains the underline, like HTML. */
|
|
30
|
+
export function runsOf(nodes: InlineNode[], s: InlineStyles): TextRun[] {
|
|
31
|
+
const out: TextRun[] = [];
|
|
32
|
+
walk(
|
|
33
|
+
nodes,
|
|
34
|
+
s,
|
|
35
|
+
{ bold: false, italic: false, code: false, del: false, href: undefined },
|
|
36
|
+
out,
|
|
37
|
+
);
|
|
38
|
+
return out;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function walk(
|
|
42
|
+
nodes: InlineNode[],
|
|
43
|
+
s: InlineStyles,
|
|
44
|
+
st: WalkState,
|
|
45
|
+
out: TextRun[],
|
|
46
|
+
): void {
|
|
47
|
+
for (const node of nodes) {
|
|
48
|
+
switch (node.type) {
|
|
49
|
+
case 'text':
|
|
50
|
+
pushRun(node.text, s, st, out);
|
|
51
|
+
break;
|
|
52
|
+
case 'code':
|
|
53
|
+
walk(
|
|
54
|
+
[{ type: 'text', text: node.text }],
|
|
55
|
+
s,
|
|
56
|
+
{ ...st, code: true },
|
|
57
|
+
out,
|
|
58
|
+
);
|
|
59
|
+
break;
|
|
60
|
+
case 'strong':
|
|
61
|
+
walk(node.children, s, { ...st, bold: true }, out);
|
|
62
|
+
break;
|
|
63
|
+
case 'em':
|
|
64
|
+
walk(node.children, s, { ...st, italic: true }, out);
|
|
65
|
+
break;
|
|
66
|
+
case 'del':
|
|
67
|
+
walk(node.children, s, { ...st, del: true }, out);
|
|
68
|
+
break;
|
|
69
|
+
case 'link':
|
|
70
|
+
walk(node.children, s, { ...st, href: node.href }, out);
|
|
71
|
+
break;
|
|
72
|
+
case 'break':
|
|
73
|
+
pushRun('\n', s, st, out);
|
|
74
|
+
break;
|
|
75
|
+
case 'component':
|
|
76
|
+
// reserved for MDX; until a renderer maps the name, its children
|
|
77
|
+
// are ordinary content rather than a hole in the document
|
|
78
|
+
walk(node.children, s, st, out);
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
function pushRun(
|
|
85
|
+
text: string,
|
|
86
|
+
s: InlineStyles,
|
|
87
|
+
st: WalkState,
|
|
88
|
+
out: TextRun[],
|
|
89
|
+
): void {
|
|
90
|
+
if (text.length === 0) return;
|
|
91
|
+
const inLink = st.href !== undefined;
|
|
92
|
+
const color = st.code ? s.codeColor : inLink ? s.linkColor : s.color;
|
|
93
|
+
const run: TextRun = {
|
|
94
|
+
text,
|
|
95
|
+
family: st.code ? s.monoFamily : s.family,
|
|
96
|
+
size: st.code ? Math.round(s.size * 0.9) : s.size,
|
|
97
|
+
weight: st.bold ? 700 : s.weight,
|
|
98
|
+
style: st.italic ? 'italic' : s.style,
|
|
99
|
+
color,
|
|
100
|
+
};
|
|
101
|
+
if (st.code) run.bg = s.codeBg;
|
|
102
|
+
if (inLink) {
|
|
103
|
+
run.underline = s.linkColor;
|
|
104
|
+
run.href = st.href ?? null;
|
|
105
|
+
}
|
|
106
|
+
if (st.del) run.strike = color;
|
|
107
|
+
const prev = out[out.length - 1];
|
|
108
|
+
if (prev && sameStyle(prev, run)) prev.text += text;
|
|
109
|
+
else out.push(run);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
function sameStyle(a: TextRun, b: TextRun): boolean {
|
|
113
|
+
return (
|
|
114
|
+
a.family === b.family &&
|
|
115
|
+
a.size === b.size &&
|
|
116
|
+
a.weight === b.weight &&
|
|
117
|
+
a.style === b.style &&
|
|
118
|
+
a.color === b.color &&
|
|
119
|
+
a.bg === b.bg &&
|
|
120
|
+
a.underline === b.underline &&
|
|
121
|
+
a.strike === b.strike &&
|
|
122
|
+
a.href === b.href
|
|
123
|
+
);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/** The plain text of an inline tree — table column sizing wants it. */
|
|
127
|
+
export function plainTextOf(nodes: InlineNode[]): string {
|
|
128
|
+
let out = '';
|
|
129
|
+
for (const node of nodes) {
|
|
130
|
+
switch (node.type) {
|
|
131
|
+
case 'text':
|
|
132
|
+
case 'code':
|
|
133
|
+
out += node.text;
|
|
134
|
+
break;
|
|
135
|
+
case 'break':
|
|
136
|
+
out += '\n';
|
|
137
|
+
break;
|
|
138
|
+
default:
|
|
139
|
+
out += plainTextOf(node.children);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
return out;
|
|
143
|
+
}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
// Two players, one table — the media-player half of what `../terminal/
|
|
2
|
+
// backends.ts` does for emulators.
|
|
3
|
+
//
|
|
4
|
+
// A backend is an argv builder plus a way to open its control channel. Both
|
|
5
|
+
// halves belong together because they agree on one thing the component never
|
|
6
|
+
// sees: the socket path is passed on the command line and connected to
|
|
7
|
+
// afterwards, and the flag that names it is different in each player.
|
|
8
|
+
//
|
|
9
|
+
// The argv builders are pure and synchronous, so `test/media-player.test.ts`
|
|
10
|
+
// asserts every flag without mpv or VLC installed anywhere.
|
|
11
|
+
import type { ProcessHost } from '../embed/index.js';
|
|
12
|
+
import type { PlayerControl, PlayerEvents } from './control.js';
|
|
13
|
+
import { connectMpv } from './mpv.js';
|
|
14
|
+
import { connectVlc } from './vlc.js';
|
|
15
|
+
|
|
16
|
+
/** Which player to embed. `'auto'` takes the first one installed. */
|
|
17
|
+
export type MediaBackendName = 'auto' | 'mpv' | 'vlc';
|
|
18
|
+
|
|
19
|
+
/** Everything the argv builders read. */
|
|
20
|
+
export interface MediaLaunch {
|
|
21
|
+
/** The `<foreign>` container to draw into. */
|
|
22
|
+
windowId: number;
|
|
23
|
+
/** A path or a URL. Omitted starts the player idle. */
|
|
24
|
+
src?: string;
|
|
25
|
+
/** Where the player should create its control socket. */
|
|
26
|
+
controlPath: string;
|
|
27
|
+
autoPlay?: boolean;
|
|
28
|
+
/** 0–1. */
|
|
29
|
+
volume?: number;
|
|
30
|
+
muted?: boolean;
|
|
31
|
+
/** `'16:9'`, `'4:3'` — the player letterboxes inside the element's rect. */
|
|
32
|
+
aspectRatio?: string;
|
|
33
|
+
loop?: boolean;
|
|
34
|
+
/** The player's *own* on-screen controls. Off by default: they are the one
|
|
35
|
+
* part of the surface that will not match the app around it. */
|
|
36
|
+
osd?: boolean;
|
|
37
|
+
/** Appended verbatim, before the source. The escape hatch for the long
|
|
38
|
+
* tail of player options this package will never wrap. */
|
|
39
|
+
extraArgs?: readonly string[];
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export interface MediaBackend {
|
|
43
|
+
name: Exclude<MediaBackendName, 'auto'>;
|
|
44
|
+
binaries: readonly string[];
|
|
45
|
+
/** Whether `onProgress` can fire under this backend. */
|
|
46
|
+
reportsProgress: boolean;
|
|
47
|
+
args(launch: MediaLaunch): string[];
|
|
48
|
+
connect(
|
|
49
|
+
host: ProcessHost,
|
|
50
|
+
controlPath: string,
|
|
51
|
+
events: PlayerEvents,
|
|
52
|
+
launch: MediaLaunch,
|
|
53
|
+
): Promise<PlayerControl>;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* mpv.
|
|
58
|
+
*
|
|
59
|
+
* `--wid` is plain reparenting — mpv sets no `_XEMBED_INFO` — which is
|
|
60
|
+
* exactly the case `<foreign>`'s adopt path handles. `--idle=yes` keeps the
|
|
61
|
+
* process alive with nothing loaded, so a player with no `src` yet is still a
|
|
62
|
+
* window that can be given one later, and `--no-terminal` keeps it off a
|
|
63
|
+
* stdio it was never given.
|
|
64
|
+
*/
|
|
65
|
+
export const mpv: MediaBackend = {
|
|
66
|
+
name: 'mpv',
|
|
67
|
+
binaries: ['mpv'],
|
|
68
|
+
reportsProgress: true,
|
|
69
|
+
args(launch) {
|
|
70
|
+
const args = [
|
|
71
|
+
`--wid=${launch.windowId}`,
|
|
72
|
+
`--input-ipc-server=${launch.controlPath}`,
|
|
73
|
+
'--idle=yes',
|
|
74
|
+
'--no-terminal',
|
|
75
|
+
];
|
|
76
|
+
// The on-screen controller is mpv's own chrome. Off unless asked for,
|
|
77
|
+
// because it is drawn by mpv and cannot follow the app's theme.
|
|
78
|
+
args.push(launch.osd ? '--osc=yes' : '--no-osc');
|
|
79
|
+
if (launch.autoPlay === false) args.push('--pause=yes');
|
|
80
|
+
if (launch.volume != null) {
|
|
81
|
+
args.push(`--volume=${Math.round(clampUnit(launch.volume) * 100)}`);
|
|
82
|
+
}
|
|
83
|
+
if (launch.muted) args.push('--mute=yes');
|
|
84
|
+
if (launch.aspectRatio) {
|
|
85
|
+
args.push(`--video-aspect-override=${launch.aspectRatio}`);
|
|
86
|
+
}
|
|
87
|
+
if (launch.loop) args.push('--loop-file=inf');
|
|
88
|
+
if (launch.extraArgs?.length) args.push(...launch.extraArgs);
|
|
89
|
+
// `--` so a file called `--version` is a file.
|
|
90
|
+
if (launch.src) args.push('--', launch.src);
|
|
91
|
+
return args;
|
|
92
|
+
},
|
|
93
|
+
connect(host, controlPath, events) {
|
|
94
|
+
return connectMpv(host, controlPath, events);
|
|
95
|
+
},
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* VLC.
|
|
100
|
+
*
|
|
101
|
+
* `--drawable-xid` is the X11 video output's embed option. `--intf dummy`
|
|
102
|
+
* suppresses the full interface — the video output still creates its window,
|
|
103
|
+
* which is the one being embedded — and `--extraintf rc` adds the control
|
|
104
|
+
* socket. See `./vlc.ts` for why that socket is written to and not read.
|
|
105
|
+
*/
|
|
106
|
+
export const vlc: MediaBackend = {
|
|
107
|
+
name: 'vlc',
|
|
108
|
+
binaries: ['vlc'],
|
|
109
|
+
reportsProgress: false,
|
|
110
|
+
args(launch) {
|
|
111
|
+
const args = [
|
|
112
|
+
`--drawable-xid=${launch.windowId}`,
|
|
113
|
+
'--intf',
|
|
114
|
+
'dummy',
|
|
115
|
+
'--extraintf',
|
|
116
|
+
'rc',
|
|
117
|
+
`--rc-unix=${launch.controlPath}`,
|
|
118
|
+
'--no-video-title-show',
|
|
119
|
+
];
|
|
120
|
+
if (!launch.osd) args.push('--no-osd');
|
|
121
|
+
if (launch.autoPlay === false) args.push('--start-paused');
|
|
122
|
+
if (launch.aspectRatio) args.push(`--aspect-ratio=${launch.aspectRatio}`);
|
|
123
|
+
if (launch.loop) args.push('--loop');
|
|
124
|
+
if (launch.extraArgs?.length) args.push(...launch.extraArgs);
|
|
125
|
+
if (launch.src) args.push('--', launch.src);
|
|
126
|
+
return args;
|
|
127
|
+
},
|
|
128
|
+
connect(host, controlPath, events, launch) {
|
|
129
|
+
return connectVlc(host, controlPath, events, {
|
|
130
|
+
paused: launch.autoPlay === false,
|
|
131
|
+
});
|
|
132
|
+
},
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
function clampUnit(value: number): number {
|
|
136
|
+
if (!Number.isFinite(value)) return 1;
|
|
137
|
+
return Math.min(1, Math.max(0, value));
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Auto-detection order.
|
|
142
|
+
*
|
|
143
|
+
* mpv first, and not only because it is lighter: it is the one whose control
|
|
144
|
+
* channel reports position back, so `onProgress` works on a machine that has
|
|
145
|
+
* both. An app that would rather have VLC says `backend="vlc"`.
|
|
146
|
+
*/
|
|
147
|
+
export const MEDIA_BACKENDS: readonly MediaBackend[] = [mpv, vlc];
|
|
148
|
+
|
|
149
|
+
/** The backends a `backend` prop selects. `'auto'` is all of them, in order. */
|
|
150
|
+
export function mediaBackendsFor(
|
|
151
|
+
name: MediaBackendName,
|
|
152
|
+
): readonly MediaBackend[] {
|
|
153
|
+
if (name === 'auto') return MEDIA_BACKENDS;
|
|
154
|
+
return MEDIA_BACKENDS.filter((b) => b.name === name);
|
|
155
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
// What a media player can be told, and what it can say back.
|
|
2
|
+
//
|
|
3
|
+
// Two backends implement this and they are not equals, which is the honest
|
|
4
|
+
// shape of the problem rather than a gap to paper over: mpv has a JSON IPC
|
|
5
|
+
// socket that reports properties as they change, so `onProgress` is real
|
|
6
|
+
// events; VLC's rc interface is a line-oriented console whose replies are
|
|
7
|
+
// unlabelled text, so this package writes to it and does not parse it —
|
|
8
|
+
// play/pause/seek/volume work, position does not. `reportsProgress` is how a
|
|
9
|
+
// caller finds that out without knowing which binary was picked.
|
|
10
|
+
|
|
11
|
+
/** What the player tells the component. */
|
|
12
|
+
export interface PlayerEvents {
|
|
13
|
+
onProgress?: (info: { position: number; duration: number }) => void;
|
|
14
|
+
onPlayingChange?: (playing: boolean) => void;
|
|
15
|
+
onEnded?: () => void;
|
|
16
|
+
/** The control channel failed. The video may well still be playing. */
|
|
17
|
+
onError?: (err: Error) => void;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/** What the component tells the player. */
|
|
21
|
+
export interface PlayerControl {
|
|
22
|
+
/** Replace what is playing, without restarting the process. */
|
|
23
|
+
load(src: string): void;
|
|
24
|
+
setPaused(paused: boolean): void;
|
|
25
|
+
/** Absolute position, in seconds. */
|
|
26
|
+
seek(seconds: number): void;
|
|
27
|
+
/** 0–1. Scaled to whatever the backend's own range is. */
|
|
28
|
+
setVolume(volume: number): void;
|
|
29
|
+
setMuted(muted: boolean): void;
|
|
30
|
+
stop(): void;
|
|
31
|
+
/** Whether `onProgress` will ever fire. False for VLC — see the file
|
|
32
|
+
* comment. */
|
|
33
|
+
readonly reportsProgress: boolean;
|
|
34
|
+
dispose(): void;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* `chunk => lines`, keeping the partial one.
|
|
39
|
+
*
|
|
40
|
+
* Both control protocols are newline-delimited and both arrive over a stream
|
|
41
|
+
* socket, so a message can be split across two reads and two messages can
|
|
42
|
+
* arrive in one. Shared rather than written twice because getting this wrong
|
|
43
|
+
* shows up as an occasional dropped event, which is the hardest kind of bug to
|
|
44
|
+
* see in a progress bar.
|
|
45
|
+
*/
|
|
46
|
+
export function lineReader(
|
|
47
|
+
onLine: (line: string) => void,
|
|
48
|
+
): (chunk: string) => void {
|
|
49
|
+
let buffer = '';
|
|
50
|
+
return (chunk: string) => {
|
|
51
|
+
buffer += chunk;
|
|
52
|
+
let index = buffer.indexOf('\n');
|
|
53
|
+
while (index !== -1) {
|
|
54
|
+
const line = buffer.slice(0, index).replace(/\r$/, '');
|
|
55
|
+
buffer = buffer.slice(index + 1);
|
|
56
|
+
if (line) onLine(line);
|
|
57
|
+
index = buffer.indexOf('\n');
|
|
58
|
+
}
|
|
59
|
+
// A runaway peer must not become a runaway allocation: nothing either
|
|
60
|
+
// protocol sends is anywhere near this long, so a buffer this size means
|
|
61
|
+
// the stream is not what we think it is.
|
|
62
|
+
if (buffer.length > 1_000_000) buffer = '';
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/** Clamp to 0–1 and reject the values a slider bound to bad state produces. */
|
|
67
|
+
export function unitRange(value: number): number {
|
|
68
|
+
if (!Number.isFinite(value)) return 1;
|
|
69
|
+
return Math.min(1, Math.max(0, value));
|
|
70
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
// `React.createElement`, typed against react-x11's host elements.
|
|
2
|
+
//
|
|
3
|
+
// The library writes `h(...)` rather than JSX — a convention inherited from
|
|
4
|
+
// core, and worth keeping so moving code between the two repos stays a
|
|
5
|
+
// rename. But `React.createElement`'s own overloads are `@types/react`'s, and
|
|
6
|
+
// they describe the DOM: a `<box onKeyDown>` handler is checked against
|
|
7
|
+
// React's `KeyboardEvent`, not react-x11's, and the whole props object is
|
|
8
|
+
// measured against `DOMAttributes`. Everything interesting fails.
|
|
9
|
+
//
|
|
10
|
+
// So the element name is looked up in react-x11's own element table instead.
|
|
11
|
+
// `hx('box', …)` gets `<box>`'s real props — `ev.keysym` on a key handler,
|
|
12
|
+
// `onDraw` on a `<canvas>` — and `hx('div', …)` is an error, which is the
|
|
13
|
+
// same guarantee the JSX namespace gives `examples/` and `test/types/`.
|
|
14
|
+
import React from 'react';
|
|
15
|
+
import type { Key, ReactElement, ReactNode } from 'react';
|
|
16
|
+
import type { ReactX11Elements, Theme } from 'react-x11';
|
|
17
|
+
|
|
18
|
+
/** The host elements, by name. */
|
|
19
|
+
export type Host = ReactX11Elements;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* What every element takes on top of its own props.
|
|
23
|
+
*
|
|
24
|
+
* `theme` is honoured by **every** node — `Node.theme` merges `props.theme`
|
|
25
|
+
* over the inherited palette, whatever the kind — but react-x11's element
|
|
26
|
+
* declarations only put it on `<window>`. A widget re-declares the theme it
|
|
27
|
+
* read from context onto its own root so that `$token` values still resolve
|
|
28
|
+
* inside a `<popup>`, which is a separate window and does not inherit the
|
|
29
|
+
* trigger's node tree. So the prop is real; only the declaration is narrow.
|
|
30
|
+
*/
|
|
31
|
+
interface CommonProps {
|
|
32
|
+
key?: Key;
|
|
33
|
+
/** `Theme` is listed alongside the record because it is an interface, and
|
|
34
|
+
* an interface has no implicit index signature — so the palette `useTheme`
|
|
35
|
+
* hands back is not assignable to the record react-x11 declares. */
|
|
36
|
+
theme?: Theme | Record<string, string | number>;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export function hx<K extends keyof Host>(
|
|
40
|
+
type: K,
|
|
41
|
+
// `theme` is dropped from the element's own props before the merge:
|
|
42
|
+
// `<window>` and `<popup>` already declare it, narrower, and intersecting
|
|
43
|
+
// the two would demand a value satisfying both.
|
|
44
|
+
props?: (Omit<Host[K], 'theme'> & CommonProps) | null,
|
|
45
|
+
...children: ReactNode[]
|
|
46
|
+
): ReactElement {
|
|
47
|
+
// The cast is the whole point of the wrapper: `createElement`'s string
|
|
48
|
+
// overload insists on DOM props, and the signature above has already
|
|
49
|
+
// checked these against the element that will actually receive them.
|
|
50
|
+
return React.createElement(type as string, props as never, ...children);
|
|
51
|
+
}
|