@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,331 @@
|
|
|
1
|
+
// <TrayHost> — the system tray, on `<foreign>`.
|
|
2
|
+
//
|
|
3
|
+
// The third XEmbed consumer in this package and the one pointed the other
|
|
4
|
+
// way: `<Terminal>` and `<MediaPlayer>` spawn a program *into* a container,
|
|
5
|
+
// while a tray is handed windows by applications that were already running.
|
|
6
|
+
// Everything hard about taking one — the reparent, the save set,
|
|
7
|
+
// `_XEMBED_INFO`, the focus messages, the synthetic ICCCM ConfigureNotify,
|
|
8
|
+
// and handing the client back **without destroying it** on unmount — is
|
|
9
|
+
// core's `<foreign>` and is done (react-x11#277).
|
|
10
|
+
//
|
|
11
|
+
// What is left, and what is here:
|
|
12
|
+
//
|
|
13
|
+
// - **`./manager.ts`** — the `_NET_SYSTEM_TRAY_S<screen>` selection, the
|
|
14
|
+
// `MANAGER` broadcast, the two advertised properties, opcode routing and
|
|
15
|
+
// `SelectionClear`.
|
|
16
|
+
// - **`./protocol.ts`** — the spec as data: atoms, opcodes, the balloon
|
|
17
|
+
// reassembler, and whether a visual may honestly be advertised.
|
|
18
|
+
// - **this file** — the icon list as React state, one `<foreign>` per icon.
|
|
19
|
+
//
|
|
20
|
+
// Registers no element: `<foreign>` and `<box>` are both built in. Like
|
|
21
|
+
// `<Terminal>`, this module has **no side effect at import time at all**.
|
|
22
|
+
//
|
|
23
|
+
// ### What is deliberately not here
|
|
24
|
+
//
|
|
25
|
+
// **StatusNotifierItem.** Modern applications publish a tray icon over D-Bus
|
|
26
|
+
// rather than XEmbed, and a complete panel supports both — but SNI shares
|
|
27
|
+
// nothing with this except intent, and it pairs with core's `dbusmenu.js`
|
|
28
|
+
// rather than with `<foreign>`. It is a sibling component, not a mode of
|
|
29
|
+
// this one.
|
|
30
|
+
//
|
|
31
|
+
// **The plug side.** Being embedded *as* a tray icon is a root option that
|
|
32
|
+
// changes how a connection's first window is created, which is renderer
|
|
33
|
+
// internals by definition. Same protocol, opposite side of the seam, and
|
|
34
|
+
// core's.
|
|
35
|
+
import React, { useEffect, useMemo, useRef, useState } from 'react';
|
|
36
|
+
import type { ReactElement, ReactNode, Ref } from 'react';
|
|
37
|
+
import { useApp, useWindowId } from 'react-x11';
|
|
38
|
+
import type { BoxProps, DrawnNode, ForeignProps } from 'react-x11';
|
|
39
|
+
import type { Style } from 'react-x11/style';
|
|
40
|
+
|
|
41
|
+
import { hx } from './hx.js';
|
|
42
|
+
import { TrayManager } from './manager.js';
|
|
43
|
+
import type { TrayApp, TrayConflict, TrayStatus } from './manager.js';
|
|
44
|
+
import { BalloonNotifier } from './notify.js';
|
|
45
|
+
import type { TrayIcon, TrayMessage, TrayOrientation } from './protocol.js';
|
|
46
|
+
|
|
47
|
+
export {
|
|
48
|
+
BalloonAssembler,
|
|
49
|
+
MANAGER_ATOM,
|
|
50
|
+
MESSAGE_DATA_ATOM,
|
|
51
|
+
OPCODE_ATOM,
|
|
52
|
+
ORIENTATION_ATOM,
|
|
53
|
+
ORIENTATION_HORIZONTAL,
|
|
54
|
+
ORIENTATION_VERTICAL,
|
|
55
|
+
SYSTEM_TRAY_BEGIN_MESSAGE,
|
|
56
|
+
SYSTEM_TRAY_CANCEL_MESSAGE,
|
|
57
|
+
SYSTEM_TRAY_REQUEST_DOCK,
|
|
58
|
+
VISUAL_ATOM,
|
|
59
|
+
argbVisualOf,
|
|
60
|
+
decodeUtf8,
|
|
61
|
+
orientationValue,
|
|
62
|
+
selectionNameFor,
|
|
63
|
+
} from './protocol.js';
|
|
64
|
+
export type { TrayIcon, TrayMessage, TrayOrientation } from './protocol.js';
|
|
65
|
+
export { TrayManager } from './manager.js';
|
|
66
|
+
export type {
|
|
67
|
+
TrayApp,
|
|
68
|
+
TrayConflict,
|
|
69
|
+
TrayManagerHandlers,
|
|
70
|
+
TrayManagerStartOptions,
|
|
71
|
+
TrayStatus,
|
|
72
|
+
} from './manager.js';
|
|
73
|
+
export { BalloonNotifier } from './notify.js';
|
|
74
|
+
|
|
75
|
+
const h = React.createElement;
|
|
76
|
+
|
|
77
|
+
/** `<foreign>`'s and `<box>`'s props as `hx` takes them — `theme` is dropped
|
|
78
|
+
* because `hx` re-declares it (see `./hx.ts`). */
|
|
79
|
+
type ForeignElementProps = Omit<ForeignProps, 'theme'>;
|
|
80
|
+
type BoxElementProps = Omit<BoxProps, 'theme'>;
|
|
81
|
+
|
|
82
|
+
const NO_ICONS: readonly TrayIcon[] = [];
|
|
83
|
+
|
|
84
|
+
/** What a `ref` on `<TrayHost>` gets. */
|
|
85
|
+
export interface TrayHostHandle {
|
|
86
|
+
readonly status: TrayStatus;
|
|
87
|
+
/** Who owns the selection, when this host does not. */
|
|
88
|
+
readonly conflict: TrayConflict | null;
|
|
89
|
+
/** The docked icons, in the order they are rendered. */
|
|
90
|
+
readonly icons: readonly TrayIcon[];
|
|
91
|
+
/** The manager selection window — the address clients send opcodes to. */
|
|
92
|
+
readonly windowId: number | null;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export interface TrayHostProps {
|
|
96
|
+
/**
|
|
97
|
+
* Which way the icons run, and what `_NET_SYSTEM_TRAY_ORIENTATION` says so
|
|
98
|
+
* an icon can draw itself to match. Default `'horizontal'`.
|
|
99
|
+
*/
|
|
100
|
+
orientation?: TrayOrientation;
|
|
101
|
+
/** The square each icon is laid out in, in pixels. Default 22. */
|
|
102
|
+
iconSize?: number;
|
|
103
|
+
/** Between icons. Default 2. */
|
|
104
|
+
spacing?: number;
|
|
105
|
+
/** Which screen's selection to own. Default 0. */
|
|
106
|
+
screen?: number;
|
|
107
|
+
/**
|
|
108
|
+
* Render order. Icons are otherwise in the order they docked.
|
|
109
|
+
*
|
|
110
|
+
* A comparator rather than a sorted list because **node identity has to
|
|
111
|
+
* stay with the icon**: each `<foreign>` is keyed on the window id and its
|
|
112
|
+
* `windowId` never changes, so reordering moves the node instead of
|
|
113
|
+
* releasing a client from one node and re-embedding it in another. That
|
|
114
|
+
* hand-off is a documented race — the client is parked at the root long
|
|
115
|
+
* enough for a window manager to frame it, and the second node then
|
|
116
|
+
* reports `onClientGone` for a live window.
|
|
117
|
+
*/
|
|
118
|
+
sort?: (a: TrayIcon, b: TrayIcon) => number;
|
|
119
|
+
/** An application asked to be in the tray, and now is. */
|
|
120
|
+
onDock?: (icon: TrayIcon) => void;
|
|
121
|
+
/** Its window went away — the ordinary end of a tray icon's life, not an
|
|
122
|
+
* error. Also fires for every icon when the selection is lost. */
|
|
123
|
+
onUndock?: (icon: TrayIcon) => void;
|
|
124
|
+
/**
|
|
125
|
+
* Another tray already owns this screen's selection, so this one embeds
|
|
126
|
+
* nothing. A second panel on one display is a configuration mistake rather
|
|
127
|
+
* than an exception, which is why it arrives here instead of throwing.
|
|
128
|
+
*/
|
|
129
|
+
onConflict?: (info: TrayConflict) => void;
|
|
130
|
+
onStatusChange?: (status: TrayStatus) => void;
|
|
131
|
+
/**
|
|
132
|
+
* A balloon message. **Providing this turns off the default**, which is to
|
|
133
|
+
* forward the text to the desktop's notification service — a panel that
|
|
134
|
+
* draws its own bubble should not also raise a notification.
|
|
135
|
+
*/
|
|
136
|
+
onMessage?: (message: TrayMessage) => void;
|
|
137
|
+
/** A message was withdrawn before it finished arriving. */
|
|
138
|
+
onCancelMessage?: (info: { windowId: number; id: number }) => void;
|
|
139
|
+
/** Failures on the wire, and a notification that could not be delivered.
|
|
140
|
+
* Without a handler none of it is reported anywhere. */
|
|
141
|
+
onError?: (err: Error) => void;
|
|
142
|
+
/** False stops balloon messages being forwarded to the notification
|
|
143
|
+
* service. Ignored when `onMessage` is given, which already replaces it. */
|
|
144
|
+
notify?: boolean;
|
|
145
|
+
/** Who a forwarded balloon message is attributed to. Default
|
|
146
|
+
* `'System Tray'`. */
|
|
147
|
+
appName?: string;
|
|
148
|
+
/** Rendered instead of the tray when another host owns the selection. */
|
|
149
|
+
fallback?: ReactNode;
|
|
150
|
+
style?: Style | Style[];
|
|
151
|
+
ref?: Ref<TrayHostHandle>;
|
|
152
|
+
'data-testname'?: string;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* The system tray: applications dock their icons into it, and it lays them
|
|
157
|
+
* out like any other row of elements.
|
|
158
|
+
*
|
|
159
|
+
* ```jsx
|
|
160
|
+
* <TrayHost
|
|
161
|
+
* orientation="horizontal"
|
|
162
|
+
* iconSize={22}
|
|
163
|
+
* onDock={(icon) => log(`docked ${icon.id}`)}
|
|
164
|
+
* onUndock={(icon) => log(`gone ${icon.id}`)}
|
|
165
|
+
* />
|
|
166
|
+
* ```
|
|
167
|
+
*
|
|
168
|
+
* **One per display.** Mounting takes `_NET_SYSTEM_TRAY_S<screen>` and
|
|
169
|
+
* announces it to the root, which is what makes applications that were
|
|
170
|
+
* waiting start docking; unmounting gives the selection back and hands every
|
|
171
|
+
* client back to the root untouched.
|
|
172
|
+
*
|
|
173
|
+
* **An icon that never maps is normal.** Clients set `XEMBED_MAPPED` when
|
|
174
|
+
* they are ready, and some take a while about it. The square is laid out
|
|
175
|
+
* either way, because a tray that only reserved space for icons it could see
|
|
176
|
+
* would reflow every time one woke up.
|
|
177
|
+
*
|
|
178
|
+
* **Icons are not tab stops.** A tray icon is a click target, and Tab
|
|
179
|
+
* walking through eleven of them — several of which are invisible — is the
|
|
180
|
+
* worst version of this, so every `<foreign>` here is `focusable={false}`.
|
|
181
|
+
*/
|
|
182
|
+
export function TrayHost(props: TrayHostProps): ReactElement {
|
|
183
|
+
const {
|
|
184
|
+
orientation = 'horizontal',
|
|
185
|
+
iconSize = 22,
|
|
186
|
+
spacing = 2,
|
|
187
|
+
screen = 0,
|
|
188
|
+
} = props;
|
|
189
|
+
|
|
190
|
+
const app = useApp() as TrayApp;
|
|
191
|
+
const [icons, setIcons] = useState<readonly TrayIcon[]>(NO_ICONS);
|
|
192
|
+
// Only the status is state. The conflict itself is read off the manager by
|
|
193
|
+
// the handle: nothing renders it, and mirroring it would be a second copy
|
|
194
|
+
// of a fact that already has an owner.
|
|
195
|
+
const [status, setStatus] = useState<TrayStatus>('starting');
|
|
196
|
+
|
|
197
|
+
const boxRef = useRef<DrawnNode>(null);
|
|
198
|
+
const hostWindowId = useWindowId(boxRef);
|
|
199
|
+
|
|
200
|
+
// Read at the moment they fire, so an inline `onDock` is not a reason to
|
|
201
|
+
// give the selection up and take it again.
|
|
202
|
+
const latest = useRef(props);
|
|
203
|
+
latest.current = props;
|
|
204
|
+
|
|
205
|
+
const manager = useMemo(() => new TrayManager(app, screen), [app, screen]);
|
|
206
|
+
|
|
207
|
+
useEffect(() => {
|
|
208
|
+
const notifier = new BalloonNotifier();
|
|
209
|
+
manager.handlers = {
|
|
210
|
+
onIcons: setIcons,
|
|
211
|
+
onDock: (icon) => latest.current.onDock?.(icon),
|
|
212
|
+
onUndock: (icon) => latest.current.onUndock?.(icon),
|
|
213
|
+
onStatus: (next, info) => {
|
|
214
|
+
setStatus(next);
|
|
215
|
+
latest.current.onStatusChange?.(next);
|
|
216
|
+
if (next === 'conflict' && info) latest.current.onConflict?.(info);
|
|
217
|
+
},
|
|
218
|
+
onMessage: (message) => {
|
|
219
|
+
const own = latest.current.onMessage;
|
|
220
|
+
// The seam wins: a panel drawing its own bubble should not also
|
|
221
|
+
// raise a notification for the same text.
|
|
222
|
+
if (own) {
|
|
223
|
+
own(message);
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
if (latest.current.notify === false) return;
|
|
227
|
+
void notifier
|
|
228
|
+
.send(message, latest.current.appName)
|
|
229
|
+
.catch((err: unknown) =>
|
|
230
|
+
latest.current.onError?.(
|
|
231
|
+
err instanceof Error ? err : new Error(String(err)),
|
|
232
|
+
),
|
|
233
|
+
);
|
|
234
|
+
},
|
|
235
|
+
onCancelMessage: (info) => latest.current.onCancelMessage?.(info),
|
|
236
|
+
onError: (err) => latest.current.onError?.(err),
|
|
237
|
+
};
|
|
238
|
+
// The orientation is read here rather than being a dependency: changing
|
|
239
|
+
// it republishes one property (below) and must not cost the selection.
|
|
240
|
+
void manager.start({
|
|
241
|
+
orientation: latest.current.orientation ?? 'horizontal',
|
|
242
|
+
hostWindowId: hostWindowId(),
|
|
243
|
+
});
|
|
244
|
+
return () => {
|
|
245
|
+
manager.stop();
|
|
246
|
+
void notifier.dispose();
|
|
247
|
+
};
|
|
248
|
+
}, [manager, hostWindowId]);
|
|
249
|
+
|
|
250
|
+
useEffect(() => {
|
|
251
|
+
manager.setOrientation(orientation);
|
|
252
|
+
}, [manager, orientation]);
|
|
253
|
+
|
|
254
|
+
React.useImperativeHandle(
|
|
255
|
+
props.ref,
|
|
256
|
+
() => ({
|
|
257
|
+
get status() {
|
|
258
|
+
return manager.status;
|
|
259
|
+
},
|
|
260
|
+
get conflict() {
|
|
261
|
+
return manager.conflict;
|
|
262
|
+
},
|
|
263
|
+
get icons() {
|
|
264
|
+
return manager.icons;
|
|
265
|
+
},
|
|
266
|
+
get windowId() {
|
|
267
|
+
return manager.windowId || null;
|
|
268
|
+
},
|
|
269
|
+
}),
|
|
270
|
+
[manager],
|
|
271
|
+
);
|
|
272
|
+
|
|
273
|
+
const sort = props.sort;
|
|
274
|
+
const ordered = useMemo(
|
|
275
|
+
() => (sort ? [...icons].sort(sort) : icons),
|
|
276
|
+
[icons, sort],
|
|
277
|
+
);
|
|
278
|
+
|
|
279
|
+
const styles: Style[] = [
|
|
280
|
+
{
|
|
281
|
+
flexDirection: orientation === 'vertical' ? 'column' : 'row',
|
|
282
|
+
alignItems: 'center',
|
|
283
|
+
gap: spacing,
|
|
284
|
+
},
|
|
285
|
+
];
|
|
286
|
+
if (props.style) {
|
|
287
|
+
for (const extra of Array.isArray(props.style)
|
|
288
|
+
? props.style
|
|
289
|
+
: [props.style]) {
|
|
290
|
+
styles.push(extra);
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
// Somebody else is the tray, and this host has embedded nothing. Rendering
|
|
295
|
+
// an empty row would look like a tray with no icons in it, which is the
|
|
296
|
+
// one thing it must not be mistaken for.
|
|
297
|
+
if (status === 'conflict' && props.fallback !== undefined) {
|
|
298
|
+
return h(React.Fragment, null, props.fallback);
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
const children = ordered.map((icon) => {
|
|
302
|
+
const foreign: ForeignElementProps = {
|
|
303
|
+
// Keyed **and** addressed by the same id, so a reorder is a move: the
|
|
304
|
+
// node keeps its socket and the client is never handed between two.
|
|
305
|
+
key: icon.id,
|
|
306
|
+
windowId: icon.id,
|
|
307
|
+
focusable: false,
|
|
308
|
+
'aria-label': 'Tray icon',
|
|
309
|
+
onClientGone: () => manager.undock(icon.id),
|
|
310
|
+
style: { width: iconSize, height: iconSize, flexShrink: 0 },
|
|
311
|
+
};
|
|
312
|
+
return hx('foreign', {
|
|
313
|
+
...foreign,
|
|
314
|
+
'data-testname': `tray-icon-${icon.id}`,
|
|
315
|
+
} as ForeignElementProps);
|
|
316
|
+
});
|
|
317
|
+
|
|
318
|
+
const container: BoxElementProps = { ref: boxRef, style: styles };
|
|
319
|
+
|
|
320
|
+
// `data-testname` is a runtime convention — react-x11's queries read it off
|
|
321
|
+
// `props` — and its element declarations do not carry it. Attached past the
|
|
322
|
+
// type so the rest of the object is still checked against `<box>`.
|
|
323
|
+
return hx(
|
|
324
|
+
'box',
|
|
325
|
+
{
|
|
326
|
+
...container,
|
|
327
|
+
'data-testname': props['data-testname'],
|
|
328
|
+
} as BoxElementProps,
|
|
329
|
+
...children,
|
|
330
|
+
);
|
|
331
|
+
}
|