@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,473 @@
|
|
|
1
|
+
// `<Flow>` — a directed-graph editor: nodes you can drag, handles you can
|
|
2
|
+
// drag between, a pane you can pan and zoom, and a controlled `nodes`/`edges`
|
|
3
|
+
// pair that the app owns.
|
|
4
|
+
//
|
|
5
|
+
// The surface is react-flow's, because a graph editor's API is a solved
|
|
6
|
+
// problem and an app that has described a graph for one should not have to
|
|
7
|
+
// describe it again. What differs is the one thing that could not be carried
|
|
8
|
+
// over: react-flow renders each node as a DOM subtree and zooms with a CSS
|
|
9
|
+
// transform, and this renderer has neither, so a custom node type is a
|
|
10
|
+
// `paint` rather than a component. `./node.ts` has the argument in full.
|
|
11
|
+
//
|
|
12
|
+
// **Registration happens when this module is evaluated**, which is the
|
|
13
|
+
// design and not a shortcut: nothing in the package registers anything until
|
|
14
|
+
// an app imports the component that needs it, so `sideEffects: false` stays
|
|
15
|
+
// honest. Do not move it into `../index.ts` (AGENTS.md, "Tree-shaking is a
|
|
16
|
+
// constraint").
|
|
17
|
+
import React, {
|
|
18
|
+
useEffect,
|
|
19
|
+
useImperativeHandle,
|
|
20
|
+
useMemo,
|
|
21
|
+
useRef,
|
|
22
|
+
useState,
|
|
23
|
+
} from 'react';
|
|
24
|
+
import type { Dispatch, ReactElement, SetStateAction } from 'react';
|
|
25
|
+
import { Renderer } from 'react-x11';
|
|
26
|
+
import { registerElement, registeredElements } from 'react-x11/host';
|
|
27
|
+
import { createStyles, flattenStyle } from 'react-x11/style';
|
|
28
|
+
// Loads the module the JSX augmentation at the bottom targets: nothing in
|
|
29
|
+
// `src/` writes JSX, so without this the build program never resolves
|
|
30
|
+
// `react-x11/jsx-runtime` and the augmentation is an error rather than an
|
|
31
|
+
// addition. Type-only, so it is erased.
|
|
32
|
+
import type {} from 'react-x11/jsx-runtime';
|
|
33
|
+
|
|
34
|
+
import { applyEdgeChanges, applyNodeChanges } from './model.js';
|
|
35
|
+
import { ELEMENT, FlowGraphNode, SELF_DAMAGED_PROPS } from './node.js';
|
|
36
|
+
import type {
|
|
37
|
+
EdgeChange,
|
|
38
|
+
FlowEdge,
|
|
39
|
+
FlowInstance,
|
|
40
|
+
FlowNode,
|
|
41
|
+
FlowNodeData,
|
|
42
|
+
FlowNodeType,
|
|
43
|
+
FlowProps,
|
|
44
|
+
NodeBodyRect,
|
|
45
|
+
NodeChange,
|
|
46
|
+
} from './types.js';
|
|
47
|
+
|
|
48
|
+
if (!registeredElements().includes(ELEMENT)) {
|
|
49
|
+
registerElement(ELEMENT, {
|
|
50
|
+
create: (props, app) => new FlowGraphNode(props, app),
|
|
51
|
+
// No `semanticNames`: not one of this element's prop names is also a
|
|
52
|
+
// style name, and `test/flow.test.ts` is what keeps that true — the
|
|
53
|
+
// failure it guards against (throws in development, works in
|
|
54
|
+
// production) is the worst shape a bug can have.
|
|
55
|
+
childrenAllowed: false,
|
|
56
|
+
// The commit claim: changes to these damage nothing by name — the
|
|
57
|
+
// element's own `applyProps` diffs them into the box that actually
|
|
58
|
+
// changed (react-x11#301). Without this, every drag step's new `nodes`
|
|
59
|
+
// array identity would repaint the whole pane.
|
|
60
|
+
selfDamagedProps: [...SELF_DAMAGED_PROPS],
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* `pane` is the default for the box `<Flow>` renders: it fills its parent —
|
|
66
|
+
* unless the app's own style gives it a height or a `flexGrow`, in which
|
|
67
|
+
* case adding one would silently override what it asked for. Checked
|
|
68
|
+
* against the *flattened* style, so an array works too.
|
|
69
|
+
*
|
|
70
|
+
* `fill` is what the drawn pane always gets, because the app's style went on
|
|
71
|
+
* the box around it. `overflow: 'hidden'` there is what clips a mounted node
|
|
72
|
+
* body that has been panned half off the edge.
|
|
73
|
+
*/
|
|
74
|
+
const styles = createStyles({
|
|
75
|
+
pane: { flexGrow: 1, overflow: 'hidden' },
|
|
76
|
+
clip: { overflow: 'hidden' },
|
|
77
|
+
fill: { flexGrow: 1 },
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Commit a state update before returning, whatever lane the surrounding
|
|
82
|
+
* dispatch runs in.
|
|
83
|
+
*
|
|
84
|
+
* Pointer motion and the wheel dispatch at *continuous* priority, whose
|
|
85
|
+
* React updates the scheduler may hold across several frames — while the
|
|
86
|
+
* pane paints every gesture step immediately from its own state. A mounted
|
|
87
|
+
* node body positioned through ordinary setState therefore trails the drawn
|
|
88
|
+
* card by however many steps queue up, converging only when the gesture
|
|
89
|
+
* pauses; this is what "the content lags and catches up" looks like. The
|
|
90
|
+
* reconciler's own escape hatch forces the render and commit inline, so the
|
|
91
|
+
* body's box moves in the same frame as the card that carries it.
|
|
92
|
+
*
|
|
93
|
+
* `Renderer` is documented as an unstable escape hatch, so the shape is
|
|
94
|
+
* probed: a core that drops it degrades to the plain setState — laggy under
|
|
95
|
+
* continuous input, never wrong.
|
|
96
|
+
*/
|
|
97
|
+
const flushSync: (fn: () => void) => void =
|
|
98
|
+
typeof (Renderer as { flushSyncFromReconciler?: unknown })
|
|
99
|
+
.flushSyncFromReconciler === 'function'
|
|
100
|
+
? (fn) =>
|
|
101
|
+
void (
|
|
102
|
+
Renderer as { flushSyncFromReconciler: (fn: () => void) => void }
|
|
103
|
+
).flushSyncFromReconciler(fn)
|
|
104
|
+
: (fn) => fn();
|
|
105
|
+
|
|
106
|
+
interface FlowNodeBodyProps {
|
|
107
|
+
type: FlowNodeType<unknown>;
|
|
108
|
+
node: FlowNode<unknown>;
|
|
109
|
+
selected: boolean;
|
|
110
|
+
zoom: number;
|
|
111
|
+
x: number;
|
|
112
|
+
y: number;
|
|
113
|
+
width: number;
|
|
114
|
+
height: number;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* One mounted node body. Memoized so that a *move* re-renders nothing: a
|
|
119
|
+
* drag or a pan changes only the overlay box's `left`/`top` — the body's
|
|
120
|
+
* subtree keeps its identity and React commits a style-only update. The
|
|
121
|
+
* compare deliberately ignores `x`/`y`, which is why `rect`'s position half
|
|
122
|
+
* is documented as advisory: content re-renders when the node, its
|
|
123
|
+
* selection, the zoom or its size change, and rides along otherwise.
|
|
124
|
+
*
|
|
125
|
+
* This is what makes a mounted node cost one box diff per drag step with no
|
|
126
|
+
* memoisation asked of the app — its `render` is simply not called.
|
|
127
|
+
*/
|
|
128
|
+
const FlowNodeBody = React.memo(
|
|
129
|
+
function FlowNodeBody(props: FlowNodeBodyProps): ReactElement {
|
|
130
|
+
return props.type.render!({
|
|
131
|
+
node: props.node,
|
|
132
|
+
selected: props.selected,
|
|
133
|
+
zoom: props.zoom,
|
|
134
|
+
rect: {
|
|
135
|
+
x: props.x,
|
|
136
|
+
y: props.y,
|
|
137
|
+
width: props.width,
|
|
138
|
+
height: props.height,
|
|
139
|
+
},
|
|
140
|
+
}) as ReactElement;
|
|
141
|
+
},
|
|
142
|
+
(a, b) =>
|
|
143
|
+
a.type === b.type &&
|
|
144
|
+
a.node === b.node &&
|
|
145
|
+
a.selected === b.selected &&
|
|
146
|
+
a.zoom === b.zoom &&
|
|
147
|
+
a.width === b.width &&
|
|
148
|
+
a.height === b.height,
|
|
149
|
+
);
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* A directed graph.
|
|
153
|
+
*
|
|
154
|
+
* ```tsx
|
|
155
|
+
* const [nodes, setNodes, onNodesChange] = useNodesState([
|
|
156
|
+
* { id: 'a', position: { x: 0, y: 0 }, data: { label: 'read' } },
|
|
157
|
+
* { id: 'b', position: { x: 0, y: 120 }, data: { label: 'write' } },
|
|
158
|
+
* ]);
|
|
159
|
+
* const [edges, setEdges, onEdgesChange] = useEdgesState([
|
|
160
|
+
* { id: 'a-b', source: 'a', target: 'b' },
|
|
161
|
+
* ]);
|
|
162
|
+
*
|
|
163
|
+
* <Flow
|
|
164
|
+
* nodes={nodes}
|
|
165
|
+
* edges={edges}
|
|
166
|
+
* onNodesChange={onNodesChange}
|
|
167
|
+
* onEdgesChange={onEdgesChange}
|
|
168
|
+
* onConnect={(c) => setEdges((es) => addEdge(c, es))}
|
|
169
|
+
* fitView
|
|
170
|
+
* minimap
|
|
171
|
+
* />
|
|
172
|
+
* ```
|
|
173
|
+
*
|
|
174
|
+
* Leave `nodes`/`edges` out and pass `defaultNodes`/`defaultEdges` for the
|
|
175
|
+
* uncontrolled form, where the pane owns the arrays.
|
|
176
|
+
*/
|
|
177
|
+
export function Flow<N = FlowNodeData, E = unknown>(
|
|
178
|
+
props: FlowProps<N, E>,
|
|
179
|
+
): ReactElement {
|
|
180
|
+
const {
|
|
181
|
+
nodes,
|
|
182
|
+
defaultNodes,
|
|
183
|
+
edges,
|
|
184
|
+
defaultEdges,
|
|
185
|
+
onNodesChange,
|
|
186
|
+
onEdgesChange,
|
|
187
|
+
onSelectionChange,
|
|
188
|
+
onWheel,
|
|
189
|
+
style,
|
|
190
|
+
ref,
|
|
191
|
+
...rest
|
|
192
|
+
} = props;
|
|
193
|
+
|
|
194
|
+
const pane = useRef<FlowGraphNode | null>(null);
|
|
195
|
+
|
|
196
|
+
const [ownNodes, setOwnNodes] = useState<readonly FlowNode<N>[]>(
|
|
197
|
+
() => defaultNodes ?? [],
|
|
198
|
+
);
|
|
199
|
+
const [ownEdges, setOwnEdges] = useState<readonly FlowEdge<E>[]>(
|
|
200
|
+
() => defaultEdges ?? [],
|
|
201
|
+
);
|
|
202
|
+
const controlledNodes = nodes !== undefined;
|
|
203
|
+
const controlledEdges = edges !== undefined;
|
|
204
|
+
const currentNodes = nodes ?? ownNodes;
|
|
205
|
+
const currentEdges = edges ?? ownEdges;
|
|
206
|
+
|
|
207
|
+
// The controlled/uncontrolled fork, and the whole of it: the pane always
|
|
208
|
+
// *describes* a change, and who applies it is the only difference between
|
|
209
|
+
// the two modes.
|
|
210
|
+
const handleNodesChange = (changes: NodeChange<N>[]): void => {
|
|
211
|
+
if (!controlledNodes) {
|
|
212
|
+
setOwnNodes((current) => applyNodeChanges(changes, current));
|
|
213
|
+
}
|
|
214
|
+
onNodesChange?.(changes);
|
|
215
|
+
};
|
|
216
|
+
const handleEdgesChange = (changes: EdgeChange<E>[]): void => {
|
|
217
|
+
if (!controlledEdges) {
|
|
218
|
+
setOwnEdges((current) => applyEdgeChanges(changes, current));
|
|
219
|
+
}
|
|
220
|
+
onEdgesChange?.(changes);
|
|
221
|
+
};
|
|
222
|
+
|
|
223
|
+
useImperativeHandle(
|
|
224
|
+
ref,
|
|
225
|
+
(): FlowInstance => ({
|
|
226
|
+
// Every method reads the node at call time rather than closing over
|
|
227
|
+
// it: the ref attaches after the commit that created the node, and a
|
|
228
|
+
// handle built once must still work for the whole mount.
|
|
229
|
+
getViewport: () => pane.current?.getViewport() ?? { x: 0, y: 0, zoom: 1 },
|
|
230
|
+
setViewport: (viewport) => pane.current?.setViewport(viewport),
|
|
231
|
+
zoomIn: (step) => pane.current?.zoomIn(step),
|
|
232
|
+
zoomOut: (step) => pane.current?.zoomOut(step),
|
|
233
|
+
zoomTo: (zoom) => pane.current?.zoomTo(zoom),
|
|
234
|
+
fitView: (options) => pane.current?.fitView(options),
|
|
235
|
+
setCenter: (x, y, options) => pane.current?.setCenter(x, y, options),
|
|
236
|
+
screenToFlowPosition: (point) =>
|
|
237
|
+
pane.current?.screenToFlowPosition(point) ?? point,
|
|
238
|
+
flowToScreenPosition: (point) =>
|
|
239
|
+
pane.current?.flowToScreenPosition(point) ?? point,
|
|
240
|
+
getNodeBounds: (id) => pane.current?.getNodeBounds(id) ?? null,
|
|
241
|
+
getNodesBounds: (ids) => pane.current?.getNodesBounds(ids) ?? null,
|
|
242
|
+
}),
|
|
243
|
+
[],
|
|
244
|
+
);
|
|
245
|
+
|
|
246
|
+
// Selection lives in the arrays, so "it changed" is a question about them
|
|
247
|
+
// and not a second source of truth to keep in step.
|
|
248
|
+
const selectionKey = useMemo(() => {
|
|
249
|
+
const parts: string[] = [];
|
|
250
|
+
for (const node of currentNodes)
|
|
251
|
+
if (node.selected) parts.push(`n:${node.id}`);
|
|
252
|
+
for (const edge of currentEdges)
|
|
253
|
+
if (edge.selected) parts.push(`e:${edge.id}`);
|
|
254
|
+
return parts.join('|');
|
|
255
|
+
}, [currentNodes, currentEdges]);
|
|
256
|
+
|
|
257
|
+
const latest = useRef({ onSelectionChange, currentNodes, currentEdges });
|
|
258
|
+
useEffect(() => {
|
|
259
|
+
latest.current = { onSelectionChange, currentNodes, currentEdges };
|
|
260
|
+
});
|
|
261
|
+
useEffect(() => {
|
|
262
|
+
const {
|
|
263
|
+
onSelectionChange: notify,
|
|
264
|
+
currentNodes: ns,
|
|
265
|
+
currentEdges: es,
|
|
266
|
+
} = latest.current;
|
|
267
|
+
notify?.({
|
|
268
|
+
nodes: ns.filter((n) => n.selected),
|
|
269
|
+
edges: es.filter((e) => e.selected),
|
|
270
|
+
});
|
|
271
|
+
// Only when the selection itself changed: the arrays are rebuilt by
|
|
272
|
+
// every drag step, and re-notifying then would make a drag a storm.
|
|
273
|
+
}, [selectionKey]);
|
|
274
|
+
|
|
275
|
+
const flat = flattenStyle(style ?? null);
|
|
276
|
+
const sized =
|
|
277
|
+
flat.height !== undefined ||
|
|
278
|
+
flat.flexGrow !== undefined ||
|
|
279
|
+
flat.flexBasis !== undefined;
|
|
280
|
+
|
|
281
|
+
// --- mounted node bodies ------------------------------------------------
|
|
282
|
+
//
|
|
283
|
+
// Only the node types that asked for one cost anything: with no `render`
|
|
284
|
+
// in the registry the pane is never given `onNodeBodies`, never computes a
|
|
285
|
+
// rect, and this half of the component is one `useState` that stays empty.
|
|
286
|
+
const { nodeTypes } = rest;
|
|
287
|
+
const mounts = useMemo(
|
|
288
|
+
() =>
|
|
289
|
+
nodeTypes
|
|
290
|
+
? Object.values(nodeTypes).some((type) => type?.render != null)
|
|
291
|
+
: false,
|
|
292
|
+
[nodeTypes],
|
|
293
|
+
);
|
|
294
|
+
const [bodies, setBodies] = useState<readonly NodeBodyRect[]>([]);
|
|
295
|
+
// Gesture-time emissions commit inline (see `flushSync` above); the rest —
|
|
296
|
+
// a programmatic `fitView`, the first paint — take the ordinary path.
|
|
297
|
+
const handleBodies = (next: readonly NodeBodyRect[], sync: boolean): void => {
|
|
298
|
+
if (sync) flushSync(() => setBodies(next));
|
|
299
|
+
else setBodies(next);
|
|
300
|
+
};
|
|
301
|
+
const byId = useMemo(() => {
|
|
302
|
+
const map = new Map<string, FlowNode<N>>();
|
|
303
|
+
if (mounts) for (const node of currentNodes) map.set(node.id, node);
|
|
304
|
+
return map;
|
|
305
|
+
}, [mounts, currentNodes]);
|
|
306
|
+
|
|
307
|
+
const overlays = mounts
|
|
308
|
+
? bodies.map((body) => {
|
|
309
|
+
const node = byId.get(body.id);
|
|
310
|
+
const type = node && nodeTypes?.[node.type ?? 'default'];
|
|
311
|
+
if (!node || !type?.render) return null;
|
|
312
|
+
return React.createElement(
|
|
313
|
+
'box',
|
|
314
|
+
{
|
|
315
|
+
key: body.id,
|
|
316
|
+
style: {
|
|
317
|
+
position: 'absolute',
|
|
318
|
+
left: body.x,
|
|
319
|
+
top: body.y,
|
|
320
|
+
width: body.width,
|
|
321
|
+
height: body.height,
|
|
322
|
+
// The box follows the zoom; what is inside it does not, so
|
|
323
|
+
// this is what stops a zoomed-out node spilling its form over
|
|
324
|
+
// the graph.
|
|
325
|
+
overflow: 'hidden',
|
|
326
|
+
},
|
|
327
|
+
},
|
|
328
|
+
React.createElement(FlowNodeBody, {
|
|
329
|
+
type: type as FlowNodeType<unknown>,
|
|
330
|
+
node: node as FlowNode<unknown>,
|
|
331
|
+
selected: body.selected,
|
|
332
|
+
zoom: body.zoom,
|
|
333
|
+
x: body.x,
|
|
334
|
+
y: body.y,
|
|
335
|
+
width: body.width,
|
|
336
|
+
height: body.height,
|
|
337
|
+
}),
|
|
338
|
+
);
|
|
339
|
+
})
|
|
340
|
+
: null;
|
|
341
|
+
|
|
342
|
+
// The pane and the bodies are siblings rather than parent and children:
|
|
343
|
+
// a registered element's own drawing happens *after* `super.paint` has
|
|
344
|
+
// painted its children, so anything mounted inside the pane would be
|
|
345
|
+
// painted over by the graph. Beside it, and after it, they land on top.
|
|
346
|
+
return React.createElement(
|
|
347
|
+
'box',
|
|
348
|
+
{ style: sized ? [styles.clip, style] : [styles.pane, style] },
|
|
349
|
+
React.createElement(ELEMENT, {
|
|
350
|
+
...rest,
|
|
351
|
+
key: 'pane',
|
|
352
|
+
ref: pane,
|
|
353
|
+
nodes: currentNodes,
|
|
354
|
+
edges: currentEdges,
|
|
355
|
+
onNodesChange: handleNodesChange,
|
|
356
|
+
onEdgesChange: handleEdgesChange,
|
|
357
|
+
// The wheel and hover reach the element through the default-action
|
|
358
|
+
// seam now (react-x11#302): an app's own `onWheel` runs first and
|
|
359
|
+
// `preventDefault()` vetoes, with no forwarding here — and the bare
|
|
360
|
+
// `<flowgraph>` element zooms and hovers on its own.
|
|
361
|
+
onWheel,
|
|
362
|
+
onNodeBodies: mounts ? handleBodies : undefined,
|
|
363
|
+
style: styles.fill,
|
|
364
|
+
role: 'group',
|
|
365
|
+
'aria-label': rest['aria-label'] ?? 'Flow graph',
|
|
366
|
+
}),
|
|
367
|
+
overlays,
|
|
368
|
+
);
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
/**
|
|
372
|
+
* `useState` for nodes, with the change handler `<Flow>` wants already
|
|
373
|
+
* bound — react-flow's hook of the same name, and the shortest correct way
|
|
374
|
+
* to hold a graph.
|
|
375
|
+
*
|
|
376
|
+
* ```tsx
|
|
377
|
+
* const [nodes, setNodes, onNodesChange] = useNodesState(initialNodes);
|
|
378
|
+
* ```
|
|
379
|
+
*/
|
|
380
|
+
export function useNodesState<N = FlowNodeData>(
|
|
381
|
+
initial: readonly FlowNode<N>[],
|
|
382
|
+
): [
|
|
383
|
+
FlowNode<N>[],
|
|
384
|
+
Dispatch<SetStateAction<FlowNode<N>[]>>,
|
|
385
|
+
(changes: NodeChange<N>[]) => void,
|
|
386
|
+
] {
|
|
387
|
+
const [nodes, setNodes] = useState<FlowNode<N>[]>(() => [...initial]);
|
|
388
|
+
const onNodesChange = useRef((changes: NodeChange<N>[]) => {
|
|
389
|
+
setNodes((current) => applyNodeChanges(changes, current));
|
|
390
|
+
}).current;
|
|
391
|
+
return [nodes, setNodes, onNodesChange];
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
/** {@link useNodesState} for edges. */
|
|
395
|
+
export function useEdgesState<E = unknown>(
|
|
396
|
+
initial: readonly FlowEdge<E>[],
|
|
397
|
+
): [
|
|
398
|
+
FlowEdge<E>[],
|
|
399
|
+
Dispatch<SetStateAction<FlowEdge<E>[]>>,
|
|
400
|
+
(changes: EdgeChange<E>[]) => void,
|
|
401
|
+
] {
|
|
402
|
+
const [edges, setEdges] = useState<FlowEdge<E>[]>(() => [...initial]);
|
|
403
|
+
const onEdgesChange = useRef((changes: EdgeChange<E>[]) => {
|
|
404
|
+
setEdges((current) => applyEdgeChanges(changes, current));
|
|
405
|
+
}).current;
|
|
406
|
+
return [edges, setEdges, onEdgesChange];
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
/** The host element name, for apps that would rather write `<flowgraph>`.
|
|
410
|
+
* The raw element is the whole component minus the controlled/uncontrolled
|
|
411
|
+
* fork and the wheel and hover wiring, which have no default-action seam. */
|
|
412
|
+
export { ELEMENT as FLOW_ELEMENT, FlowGraphNode };
|
|
413
|
+
|
|
414
|
+
export {
|
|
415
|
+
addEdge,
|
|
416
|
+
applyEdgeChanges,
|
|
417
|
+
applyNodeChanges,
|
|
418
|
+
connectedEdges,
|
|
419
|
+
connectionId,
|
|
420
|
+
resolvePalette,
|
|
421
|
+
} from './model.js';
|
|
422
|
+
|
|
423
|
+
export type {
|
|
424
|
+
BackgroundOptions,
|
|
425
|
+
BackgroundVariant,
|
|
426
|
+
Connection,
|
|
427
|
+
ConnectionStart,
|
|
428
|
+
ControlsOptions,
|
|
429
|
+
EdgeAppearance,
|
|
430
|
+
EdgeChange,
|
|
431
|
+
EdgeMarker,
|
|
432
|
+
EdgeMouseHandler,
|
|
433
|
+
EdgeType,
|
|
434
|
+
FitViewOptions,
|
|
435
|
+
FlowEdge,
|
|
436
|
+
FlowInstance,
|
|
437
|
+
FlowNode,
|
|
438
|
+
FlowNodeData,
|
|
439
|
+
FlowNodeType,
|
|
440
|
+
FlowPainter,
|
|
441
|
+
FlowPalette,
|
|
442
|
+
FlowProps,
|
|
443
|
+
FlowRect,
|
|
444
|
+
HandleAnchor,
|
|
445
|
+
HandlePosition,
|
|
446
|
+
HandleSpec,
|
|
447
|
+
HandleType,
|
|
448
|
+
MarkerType,
|
|
449
|
+
MiniMapOptions,
|
|
450
|
+
NodeAppearance,
|
|
451
|
+
NodeBodyRect,
|
|
452
|
+
NodeChange,
|
|
453
|
+
NodeMouseHandler,
|
|
454
|
+
NodePaintContext,
|
|
455
|
+
NodeRenderContext,
|
|
456
|
+
PanePosition,
|
|
457
|
+
ShapeOptions,
|
|
458
|
+
StrokeOptions,
|
|
459
|
+
TextOptions,
|
|
460
|
+
Viewport,
|
|
461
|
+
XYPosition,
|
|
462
|
+
} from './types.js';
|
|
463
|
+
|
|
464
|
+
// Importing this module teaches JSX the element too, so `<flowgraph>` is a
|
|
465
|
+
// typed tag rather than an error — the module-augmentation shape react-x11's
|
|
466
|
+
// docs/typescript.md prescribes for a third-party element.
|
|
467
|
+
declare module 'react-x11/jsx-runtime' {
|
|
468
|
+
namespace JSX {
|
|
469
|
+
interface IntrinsicElements {
|
|
470
|
+
flowgraph: FlowProps<unknown, unknown>;
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
}
|