@react-x11/components 0.9.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -4
- package/dist/charts/node.d.ts +11 -1
- package/dist/charts/node.d.ts.map +1 -1
- package/dist/charts/node.js +44 -14
- package/dist/charts/node.js.map +1 -1
- package/dist/charts/render.d.ts +12 -3
- package/dist/charts/render.d.ts.map +1 -1
- package/dist/charts/render.js +94 -25
- package/dist/charts/render.js.map +1 -1
- package/dist/code/index.d.ts.map +1 -1
- package/dist/code/index.js +27 -24
- package/dist/code/index.js.map +1 -1
- package/dist/code-editor/completion.d.ts.map +1 -1
- package/dist/code-editor/completion.js +3 -2
- package/dist/code-editor/completion.js.map +1 -1
- package/dist/code-editor/index.d.ts.map +1 -1
- package/dist/code-editor/index.js +19 -0
- package/dist/code-editor/index.js.map +1 -1
- package/dist/code-editor/node.d.ts +177 -7
- package/dist/code-editor/node.d.ts.map +1 -1
- package/dist/code-editor/node.js +1329 -164
- package/dist/code-editor/node.js.map +1 -1
- package/dist/code-language/index.d.ts +1 -1
- package/dist/code-language/index.d.ts.map +1 -1
- package/dist/code-language/index.js +1 -1
- package/dist/code-language/index.js.map +1 -1
- package/dist/code-language/languages/glsl.d.ts.map +1 -1
- package/dist/code-language/languages/glsl.js +10 -2
- package/dist/code-language/languages/glsl.js.map +1 -1
- package/dist/code-language/languages/javascript.d.ts.map +1 -1
- package/dist/code-language/languages/javascript.js +18 -3
- package/dist/code-language/languages/javascript.js.map +1 -1
- package/dist/code-language/languages/json.d.ts.map +1 -1
- package/dist/code-language/languages/json.js +10 -2
- package/dist/code-language/languages/json.js.map +1 -1
- package/dist/code-language/languages/shell.d.ts.map +1 -1
- package/dist/code-language/languages/shell.js +10 -2
- package/dist/code-language/languages/shell.js.map +1 -1
- package/dist/code-language/languages/sql.d.ts.map +1 -1
- package/dist/code-language/languages/sql.js +20 -2
- package/dist/code-language/languages/sql.js.map +1 -1
- package/dist/code-language/runs.d.ts +31 -0
- package/dist/code-language/runs.d.ts.map +1 -1
- package/dist/code-language/runs.js +105 -0
- package/dist/code-language/runs.js.map +1 -1
- package/dist/code-language/stream.d.ts +22 -0
- package/dist/code-language/stream.d.ts.map +1 -1
- package/dist/code-language/stream.js +259 -9
- package/dist/code-language/stream.js.map +1 -1
- package/dist/code-language/types.d.ts +5 -4
- package/dist/code-language/types.d.ts.map +1 -1
- package/dist/codeblock/index.d.ts +26 -2
- package/dist/codeblock/index.d.ts.map +1 -1
- package/dist/codeblock/index.js +57 -4
- package/dist/codeblock/index.js.map +1 -1
- package/dist/flow/draw.d.ts +50 -0
- package/dist/flow/draw.d.ts.map +1 -1
- package/dist/flow/draw.js +132 -33
- package/dist/flow/draw.js.map +1 -1
- package/dist/flow/gl/color.d.ts +13 -0
- package/dist/flow/gl/color.d.ts.map +1 -0
- package/dist/flow/gl/color.js +82 -0
- package/dist/flow/gl/color.js.map +1 -0
- package/dist/flow/gl/index.d.ts +60 -0
- package/dist/flow/gl/index.d.ts.map +1 -0
- package/dist/flow/gl/index.js +283 -0
- package/dist/flow/gl/index.js.map +1 -0
- package/dist/flow/gl/pack.d.ts +133 -0
- package/dist/flow/gl/pack.d.ts.map +1 -0
- package/dist/flow/gl/pack.js +408 -0
- package/dist/flow/gl/pack.js.map +1 -0
- package/dist/flow/gl/renderer.d.ts +95 -0
- package/dist/flow/gl/renderer.d.ts.map +1 -0
- package/dist/flow/gl/renderer.js +459 -0
- package/dist/flow/gl/renderer.js.map +1 -0
- package/dist/flow/gl/shaders.d.ts +79 -0
- package/dist/flow/gl/shaders.d.ts.map +1 -0
- package/dist/flow/gl/shaders.js +346 -0
- package/dist/flow/gl/shaders.js.map +1 -0
- package/dist/flow/gl/text.d.ts +318 -0
- package/dist/flow/gl/text.d.ts.map +1 -0
- package/dist/flow/gl/text.js +1103 -0
- package/dist/flow/gl/text.js.map +1 -0
- package/dist/flow/index.d.ts +1 -1
- package/dist/flow/index.d.ts.map +1 -1
- package/dist/flow/index.js +619 -64
- package/dist/flow/index.js.map +1 -1
- package/dist/flow/node.d.ts +621 -72
- package/dist/flow/node.d.ts.map +1 -1
- package/dist/flow/node.js +2253 -1018
- package/dist/flow/node.js.map +1 -1
- package/dist/flow/paint.d.ts +35 -0
- package/dist/flow/paint.d.ts.map +1 -0
- package/dist/flow/paint.js +393 -0
- package/dist/flow/paint.js.map +1 -0
- package/dist/flow/paths.d.ts +14 -0
- package/dist/flow/paths.d.ts.map +1 -1
- package/dist/flow/paths.js +45 -19
- package/dist/flow/paths.js.map +1 -1
- package/dist/flow/scene.d.ts +584 -0
- package/dist/flow/scene.d.ts.map +1 -0
- package/dist/flow/scene.js +1453 -0
- package/dist/flow/scene.js.map +1 -0
- package/dist/flow/types.d.ts +111 -1
- package/dist/flow/types.d.ts.map +1 -1
- package/dist/html/controls.d.ts +28 -0
- package/dist/html/controls.d.ts.map +1 -1
- package/dist/html/controls.js +52 -2
- package/dist/html/controls.js.map +1 -1
- package/dist/html/css/calc.d.ts +14 -0
- package/dist/html/css/calc.d.ts.map +1 -0
- package/dist/html/css/calc.js +344 -0
- package/dist/html/css/calc.js.map +1 -0
- package/dist/html/css/cascade.d.ts +262 -6
- package/dist/html/css/cascade.d.ts.map +1 -1
- package/dist/html/css/cascade.js +1373 -67
- package/dist/html/css/cascade.js.map +1 -1
- package/dist/html/css/color.d.ts +23 -0
- package/dist/html/css/color.d.ts.map +1 -0
- package/dist/html/css/color.js +740 -0
- package/dist/html/css/color.js.map +1 -0
- package/dist/html/css/content.d.ts +92 -0
- package/dist/html/css/content.d.ts.map +1 -0
- package/dist/html/css/content.js +388 -0
- package/dist/html/css/content.js.map +1 -0
- package/dist/html/css/counter-styles.d.ts +76 -0
- package/dist/html/css/counter-styles.d.ts.map +1 -0
- package/dist/html/css/counter-styles.js +893 -0
- package/dist/html/css/counter-styles.js.map +1 -0
- package/dist/html/css/decode.d.ts +12 -0
- package/dist/html/css/decode.d.ts.map +1 -0
- package/dist/html/css/decode.js +116 -0
- package/dist/html/css/decode.js.map +1 -0
- package/dist/html/css/parse.d.ts +110 -10
- package/dist/html/css/parse.d.ts.map +1 -1
- package/dist/html/css/parse.js +1473 -180
- package/dist/html/css/parse.js.map +1 -1
- package/dist/html/css/style.d.ts +501 -15
- package/dist/html/css/style.d.ts.map +1 -1
- package/dist/html/css/style.js +3729 -206
- package/dist/html/css/style.js.map +1 -1
- package/dist/html/css/ua.d.ts.map +1 -1
- package/dist/html/css/ua.js +65 -16
- package/dist/html/css/ua.js.map +1 -1
- package/dist/html/css/values.d.ts +37 -3
- package/dist/html/css/values.d.ts.map +1 -1
- package/dist/html/css/values.js +122 -48
- package/dist/html/css/values.js.map +1 -1
- package/dist/html/css/vars.d.ts +52 -0
- package/dist/html/css/vars.d.ts.map +1 -0
- package/dist/html/css/vars.js +358 -0
- package/dist/html/css/vars.js.map +1 -0
- package/dist/html/dom.d.ts +30 -4
- package/dist/html/dom.d.ts.map +1 -1
- package/dist/html/dom.js +278 -17
- package/dist/html/dom.js.map +1 -1
- package/dist/html/fonts.d.ts +106 -0
- package/dist/html/fonts.d.ts.map +1 -0
- package/dist/html/fonts.js +565 -0
- package/dist/html/fonts.js.map +1 -0
- package/dist/html/gif.d.ts +15 -0
- package/dist/html/gif.d.ts.map +1 -0
- package/dist/html/gif.js +229 -0
- package/dist/html/gif.js.map +1 -0
- package/dist/html/index.d.ts +50 -11
- package/dist/html/index.d.ts.map +1 -1
- package/dist/html/index.js +115 -9
- package/dist/html/index.js.map +1 -1
- package/dist/html/layout/block.d.ts +226 -3
- package/dist/html/layout/block.d.ts.map +1 -1
- package/dist/html/layout/block.js +3077 -219
- package/dist/html/layout/block.js.map +1 -1
- package/dist/html/layout/boxes.d.ts +367 -17
- package/dist/html/layout/boxes.d.ts.map +1 -1
- package/dist/html/layout/boxes.js +1742 -182
- package/dist/html/layout/boxes.js.map +1 -1
- package/dist/html/layout/cache.d.ts +58 -0
- package/dist/html/layout/cache.d.ts.map +1 -0
- package/dist/html/layout/cache.js +224 -0
- package/dist/html/layout/cache.js.map +1 -0
- package/dist/html/layout/collapse.d.ts +45 -0
- package/dist/html/layout/collapse.d.ts.map +1 -0
- package/dist/html/layout/collapse.js +246 -0
- package/dist/html/layout/collapse.js.map +1 -0
- package/dist/html/layout/css-grid.d.ts +7 -0
- package/dist/html/layout/css-grid.d.ts.map +1 -0
- package/dist/html/layout/css-grid.js +900 -0
- package/dist/html/layout/css-grid.js.map +1 -0
- package/dist/html/layout/flex.d.ts.map +1 -1
- package/dist/html/layout/flex.js +1025 -89
- package/dist/html/layout/flex.js.map +1 -1
- package/dist/html/layout/floats.d.ts +45 -6
- package/dist/html/layout/floats.d.ts.map +1 -1
- package/dist/html/layout/floats.js +113 -14
- package/dist/html/layout/floats.js.map +1 -1
- package/dist/html/layout/grid-lines.d.ts +39 -0
- package/dist/html/layout/grid-lines.d.ts.map +1 -0
- package/dist/html/layout/grid-lines.js +119 -0
- package/dist/html/layout/grid-lines.js.map +1 -0
- package/dist/html/layout/grid.d.ts +53 -0
- package/dist/html/layout/grid.d.ts.map +1 -0
- package/dist/html/layout/grid.js +153 -0
- package/dist/html/layout/grid.js.map +1 -0
- package/dist/html/layout/inline.d.ts +154 -1
- package/dist/html/layout/inline.d.ts.map +1 -1
- package/dist/html/layout/inline.js +3598 -175
- package/dist/html/layout/inline.js.map +1 -1
- package/dist/html/layout/shaping.d.ts +6 -0
- package/dist/html/layout/shaping.d.ts.map +1 -0
- package/dist/html/layout/shaping.js +100 -0
- package/dist/html/layout/shaping.js.map +1 -0
- package/dist/html/layout/table.d.ts +3 -0
- package/dist/html/layout/table.d.ts.map +1 -1
- package/dist/html/layout/table.js +681 -175
- package/dist/html/layout/table.js.map +1 -1
- package/dist/html/layout/tracks.d.ts +44 -0
- package/dist/html/layout/tracks.d.ts.map +1 -0
- package/dist/html/layout/tracks.js +349 -0
- package/dist/html/layout/tracks.js.map +1 -0
- package/dist/html/node.d.ts +169 -4
- package/dist/html/node.d.ts.map +1 -1
- package/dist/html/node.js +1429 -137
- package/dist/html/node.js.map +1 -1
- package/dist/html/paint.d.ts +92 -3
- package/dist/html/paint.d.ts.map +1 -1
- package/dist/html/paint.js +3635 -107
- package/dist/html/paint.js.map +1 -1
- package/dist/html/resources.d.ts +60 -14
- package/dist/html/resources.d.ts.map +1 -1
- package/dist/html/resources.js +122 -36
- package/dist/html/resources.js.map +1 -1
- package/dist/html/surfaces.d.ts +23 -0
- package/dist/html/surfaces.d.ts.map +1 -0
- package/dist/html/surfaces.js +68 -0
- package/dist/html/surfaces.js.map +1 -0
- package/dist/html/svg.d.ts +80 -0
- package/dist/html/svg.d.ts.map +1 -0
- package/dist/html/svg.js +442 -0
- package/dist/html/svg.js.map +1 -0
- package/dist/html/url.d.ts +23 -0
- package/dist/html/url.d.ts.map +1 -0
- package/dist/html/url.js +80 -0
- package/dist/html/url.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/codelines.d.ts +42 -0
- package/dist/internal/codelines.d.ts.map +1 -0
- package/dist/internal/codelines.js +170 -0
- package/dist/internal/codelines.js.map +1 -0
- package/dist/internal/collate.d.ts +3 -0
- package/dist/internal/collate.d.ts.map +1 -0
- package/dist/internal/collate.js +11 -0
- package/dist/internal/collate.js.map +1 -0
- package/dist/internal/markdown/ast.d.ts +11 -0
- package/dist/internal/markdown/ast.d.ts.map +1 -1
- package/dist/internal/markdown/parse.d.ts.map +1 -1
- package/dist/internal/markdown/parse.js +109 -8
- package/dist/internal/markdown/parse.js.map +1 -1
- package/dist/internal/prewarm.d.ts +18 -0
- package/dist/internal/prewarm.d.ts.map +1 -0
- package/dist/internal/prewarm.js +42 -0
- package/dist/internal/prewarm.js.map +1 -0
- package/dist/internal/sdf.d.ts +20 -0
- package/dist/internal/sdf.d.ts.map +1 -0
- package/dist/internal/sdf.js +216 -0
- package/dist/internal/sdf.js.map +1 -0
- package/dist/internal/splice.d.ts +12 -0
- package/dist/internal/splice.d.ts.map +1 -0
- package/dist/internal/splice.js +23 -0
- package/dist/internal/splice.js.map +1 -0
- package/dist/internal/window.d.ts +12 -0
- package/dist/internal/window.d.ts.map +1 -1
- package/dist/internal/window.js +23 -6
- package/dist/internal/window.js.map +1 -1
- package/dist/maps/anchors.d.ts +6 -1
- package/dist/maps/anchors.d.ts.map +1 -1
- package/dist/maps/anchors.js +260 -1
- package/dist/maps/anchors.js.map +1 -1
- package/dist/maps/controller.d.ts +57 -0
- package/dist/maps/controller.d.ts.map +1 -1
- package/dist/maps/controller.js +97 -18
- package/dist/maps/controller.js.map +1 -1
- package/dist/maps/gl/buckets.d.ts +5 -1
- package/dist/maps/gl/buckets.d.ts.map +1 -1
- package/dist/maps/gl/buckets.js +5 -2
- package/dist/maps/gl/buckets.js.map +1 -1
- package/dist/maps/gl/build-worker.d.ts +2 -0
- package/dist/maps/gl/build-worker.d.ts.map +1 -1
- package/dist/maps/gl/build-worker.js +1 -1
- package/dist/maps/gl/build-worker.js.map +1 -1
- package/dist/maps/gl/cover.d.ts +23 -4
- package/dist/maps/gl/cover.d.ts.map +1 -1
- package/dist/maps/gl/cover.js +61 -48
- package/dist/maps/gl/cover.js.map +1 -1
- package/dist/maps/gl/placement.d.ts +21 -8
- package/dist/maps/gl/placement.d.ts.map +1 -1
- package/dist/maps/gl/placement.js +133 -58
- package/dist/maps/gl/placement.js.map +1 -1
- package/dist/maps/gl/renderer.d.ts +36 -4
- package/dist/maps/gl/renderer.d.ts.map +1 -1
- package/dist/maps/gl/renderer.js +81 -24
- package/dist/maps/gl/renderer.js.map +1 -1
- package/dist/maps/gl/shaders.d.ts +18 -17
- package/dist/maps/gl/shaders.d.ts.map +1 -1
- package/dist/maps/gl/shaders.js +34 -32
- package/dist/maps/gl/shaders.js.map +1 -1
- package/dist/maps/gl/store.d.ts +10 -0
- package/dist/maps/gl/store.d.ts.map +1 -1
- package/dist/maps/gl/store.js +47 -4
- package/dist/maps/gl/store.js.map +1 -1
- package/dist/maps/gl/text.d.ts +153 -24
- package/dist/maps/gl/text.d.ts.map +1 -1
- package/dist/maps/gl/text.js +379 -63
- package/dist/maps/gl/text.js.map +1 -1
- package/dist/maps/gl/view.d.ts +293 -2
- package/dist/maps/gl/view.d.ts.map +1 -1
- package/dist/maps/gl/view.js +317 -82
- package/dist/maps/gl/view.js.map +1 -1
- package/dist/maps/icons.d.ts +32 -0
- package/dist/maps/icons.d.ts.map +1 -0
- package/dist/maps/icons.js +151 -0
- package/dist/maps/icons.js.map +1 -0
- package/dist/maps/index.d.ts +2 -0
- package/dist/maps/index.d.ts.map +1 -1
- package/dist/maps/index.js +2 -0
- package/dist/maps/index.js.map +1 -1
- package/dist/maps/labels.d.ts +56 -4
- package/dist/maps/labels.d.ts.map +1 -1
- package/dist/maps/labels.js +213 -46
- package/dist/maps/labels.js.map +1 -1
- package/dist/maps/node.d.ts +17 -0
- package/dist/maps/node.d.ts.map +1 -1
- package/dist/maps/node.js +64 -30
- package/dist/maps/node.js.map +1 -1
- package/dist/maps/proj.d.ts +48 -0
- package/dist/maps/proj.d.ts.map +1 -1
- package/dist/maps/proj.js +73 -0
- package/dist/maps/proj.js.map +1 -1
- package/dist/maps/sources.d.ts +5 -3
- package/dist/maps/sources.d.ts.map +1 -1
- package/dist/maps/sources.js +5 -3
- package/dist/maps/sources.js.map +1 -1
- package/dist/maps/style.d.ts +35 -0
- package/dist/maps/style.d.ts.map +1 -1
- package/dist/maps/style.js.map +1 -1
- package/dist/maps/styles.d.ts +12 -0
- package/dist/maps/styles.d.ts.map +1 -1
- package/dist/maps/styles.js +120 -6
- package/dist/maps/styles.js.map +1 -1
- package/dist/maps/tiles.d.ts +31 -11
- package/dist/maps/tiles.d.ts.map +1 -1
- package/dist/maps/tiles.js +61 -27
- package/dist/maps/tiles.js.map +1 -1
- package/dist/maps/types.d.ts +28 -4
- package/dist/maps/types.d.ts.map +1 -1
- package/dist/markdown/index.d.ts.map +1 -1
- package/dist/markdown/index.js +209 -68
- package/dist/markdown/index.js.map +1 -1
- package/dist/markdown/spans.d.ts.map +1 -1
- package/dist/markdown/spans.js +6 -0
- package/dist/markdown/spans.js.map +1 -1
- package/dist/qml/containers.d.ts.map +1 -1
- package/dist/qml/containers.js +6 -1
- package/dist/qml/containers.js.map +1 -1
- package/dist/qml/interaction.d.ts.map +1 -1
- package/dist/qml/interaction.js +38 -5
- package/dist/qml/interaction.js.map +1 -1
- package/dist/qml/layouts.d.ts.map +1 -1
- package/dist/qml/layouts.js +21 -6
- package/dist/qml/layouts.js.map +1 -1
- package/dist/qml/qtquick.d.ts.map +1 -1
- package/dist/qml/qtquick.js +9 -2
- package/dist/qml/qtquick.js.map +1 -1
- package/dist/qml/react.d.ts.map +1 -1
- package/dist/qml/react.js +9 -7
- package/dist/qml/react.js.map +1 -1
- package/dist/reorder/clock.d.ts +7 -0
- package/dist/reorder/clock.d.ts.map +1 -0
- package/dist/reorder/clock.js +26 -0
- package/dist/reorder/clock.js.map +1 -0
- package/dist/reorder/index.d.ts +25 -3
- package/dist/reorder/index.d.ts.map +1 -1
- package/dist/reorder/index.js +64 -19
- package/dist/reorder/index.js.map +1 -1
- package/dist/rich-text-editor/index.d.ts +0 -11
- package/dist/rich-text-editor/index.d.ts.map +1 -1
- package/dist/rich-text-editor/index.js +38 -9
- package/dist/rich-text-editor/index.js.map +1 -1
- package/dist/rich-text-editor/keymap.d.ts.map +1 -1
- package/dist/rich-text-editor/keymap.js +2 -1
- package/dist/rich-text-editor/keymap.js.map +1 -1
- package/dist/rich-text-editor/keys.d.ts +17 -6
- package/dist/rich-text-editor/keys.d.ts.map +1 -1
- package/dist/rich-text-editor/keys.js +135 -26
- package/dist/rich-text-editor/keys.js.map +1 -1
- package/dist/rich-text-editor/markdown.d.ts.map +1 -1
- package/dist/rich-text-editor/markdown.js +30 -1
- package/dist/rich-text-editor/markdown.js.map +1 -1
- package/dist/rich-text-editor/marks.d.ts +9 -0
- package/dist/rich-text-editor/marks.d.ts.map +1 -0
- package/dist/rich-text-editor/marks.js +83 -0
- package/dist/rich-text-editor/marks.js.map +1 -0
- package/dist/rich-text-editor/render.d.ts.map +1 -1
- package/dist/rich-text-editor/render.js +28 -10
- package/dist/rich-text-editor/render.js.map +1 -1
- package/dist/rich-text-editor/replace.d.ts +13 -0
- package/dist/rich-text-editor/replace.d.ts.map +1 -0
- package/dist/rich-text-editor/replace.js +64 -0
- package/dist/rich-text-editor/replace.js.map +1 -0
- package/dist/rich-text-editor/toolbar.d.ts.map +1 -1
- package/dist/rich-text-editor/toolbar.js +1 -1
- package/dist/rich-text-editor/toolbar.js.map +1 -1
- package/dist/rich-text-editor/virtual.d.ts.map +1 -1
- package/dist/rich-text-editor/virtual.js +17 -0
- package/dist/rich-text-editor/virtual.js.map +1 -1
- package/dist/richtext/node.d.ts +46 -2
- package/dist/richtext/node.d.ts.map +1 -1
- package/dist/richtext/node.js +187 -4
- package/dist/richtext/node.js.map +1 -1
- package/dist/richtext/runs.d.ts +13 -8
- package/dist/richtext/runs.d.ts.map +1 -1
- package/dist/richtext/runs.js +18 -8
- package/dist/richtext/runs.js.map +1 -1
- package/dist/table/index.d.ts.map +1 -1
- package/dist/table/index.js +23 -0
- package/dist/table/index.js.map +1 -1
- package/dist/table/rows.d.ts +3 -2
- package/dist/table/rows.d.ts.map +1 -1
- package/dist/table/rows.js +20 -6
- package/dist/table/rows.js.map +1 -1
- package/dist/terminal/index.d.ts.map +1 -1
- package/dist/terminal/index.js +4 -0
- package/dist/terminal/index.js.map +1 -1
- package/dist/terminal/vt/pty.d.ts +13 -2
- package/dist/terminal/vt/pty.d.ts.map +1 -1
- package/dist/terminal/vt/pty.js +18 -3
- package/dist/terminal/vt/pty.js.map +1 -1
- package/dist/terminal-output/index.d.ts.map +1 -1
- package/dist/terminal-output/index.js +103 -23
- package/dist/terminal-output/index.js.map +1 -1
- package/dist/terminal-output/runs.d.ts +4 -1
- package/dist/terminal-output/runs.d.ts.map +1 -1
- package/dist/terminal-output/runs.js +5 -1
- package/dist/terminal-output/runs.js.map +1 -1
- package/dist/three/canvas.d.ts.map +1 -1
- package/dist/three/canvas.js +85 -7
- package/dist/three/canvas.js.map +1 -1
- package/dist/three/events.d.ts +22 -4
- package/dist/three/events.d.ts.map +1 -1
- package/dist/three/events.js +34 -4
- package/dist/three/events.js.map +1 -1
- package/dist/tree/index.d.ts.map +1 -1
- package/dist/tree/index.js +17 -0
- package/dist/tree/index.js.map +1 -1
- package/package.json +42 -33
- package/src/charts/node.ts +62 -26
- package/src/charts/render.ts +120 -30
- package/src/code/index.ts +36 -32
- package/src/code-editor/completion.ts +3 -2
- package/src/code-editor/index.ts +19 -0
- package/src/code-editor/node.ts +1574 -184
- package/src/code-language/index.ts +1 -1
- package/src/code-language/languages/glsl.ts +12 -2
- package/src/code-language/languages/javascript.ts +21 -4
- package/src/code-language/languages/json.ts +12 -2
- package/src/code-language/languages/shell.ts +12 -2
- package/src/code-language/languages/sql.ts +22 -2
- package/src/code-language/runs.ts +111 -1
- package/src/code-language/stream.ts +257 -17
- package/src/code-language/types.ts +5 -4
- package/src/codeblock/index.ts +68 -4
- package/src/flow/draw.ts +167 -41
- package/src/flow/gl/color.ts +85 -0
- package/src/flow/gl/index.ts +342 -0
- package/src/flow/gl/pack.ts +585 -0
- package/src/flow/gl/renderer.ts +679 -0
- package/src/flow/gl/shaders.ts +371 -0
- package/src/flow/gl/text.ts +1295 -0
- package/src/flow/index.ts +794 -67
- package/src/flow/node.ts +2496 -1256
- package/src/flow/paint.ts +511 -0
- package/src/flow/paths.ts +80 -15
- package/src/flow/scene.ts +2199 -0
- package/src/flow/types.ts +113 -1
- package/src/html/controls.ts +73 -2
- package/src/html/css/calc.ts +385 -0
- package/src/html/css/cascade.ts +1481 -62
- package/src/html/css/color.ts +755 -0
- package/src/html/css/content.ts +417 -0
- package/src/html/css/counter-styles.ts +973 -0
- package/src/html/css/decode.ts +130 -0
- package/src/html/css/parse.ts +1514 -160
- package/src/html/css/style.ts +4131 -223
- package/src/html/css/ua.ts +66 -17
- package/src/html/css/values.ts +150 -50
- package/src/html/css/vars.ts +348 -0
- package/src/html/dom.ts +284 -17
- package/src/html/fonts.ts +641 -0
- package/src/html/gif.ts +233 -0
- package/src/html/index.ts +180 -20
- package/src/html/layout/block.ts +3560 -208
- package/src/html/layout/boxes.ts +2141 -190
- package/src/html/layout/cache.ts +289 -0
- package/src/html/layout/collapse.ts +317 -0
- package/src/html/layout/css-grid.ts +1063 -0
- package/src/html/layout/flex.ts +1115 -106
- package/src/html/layout/floats.ts +128 -14
- package/src/html/layout/grid-lines.ts +141 -0
- package/src/html/layout/grid.ts +181 -0
- package/src/html/layout/inline.ts +4187 -192
- package/src/html/layout/shaping.ts +140 -0
- package/src/html/layout/table.ts +696 -186
- package/src/html/layout/tracks.ts +437 -0
- package/src/html/node.ts +1585 -156
- package/src/html/paint.ts +4582 -267
- package/src/html/resources.ts +161 -50
- package/src/html/surfaces.ts +81 -0
- package/src/html/svg.ts +504 -0
- package/src/html/url.ts +86 -0
- package/src/index.ts +2 -0
- package/src/internal/codelines.ts +200 -0
- package/src/internal/collate.ts +12 -0
- package/src/internal/markdown/ast.ts +11 -0
- package/src/internal/markdown/parse.ts +154 -11
- package/src/internal/prewarm.ts +45 -0
- package/src/internal/sdf.ts +227 -0
- package/src/internal/splice.ts +25 -0
- package/src/internal/window.ts +36 -5
- package/src/maps/anchors.ts +307 -1
- package/src/maps/controller.ts +116 -31
- package/src/maps/gl/buckets.ts +5 -1
- package/src/maps/gl/build-worker.ts +13 -2
- package/src/maps/gl/cover.ts +79 -44
- package/src/maps/gl/placement.ts +221 -69
- package/src/maps/gl/renderer.ts +104 -20
- package/src/maps/gl/shaders.ts +35 -32
- package/src/maps/gl/store.ts +66 -17
- package/src/maps/gl/text.ts +444 -71
- package/src/maps/gl/view.ts +361 -96
- package/src/maps/icons.ts +183 -0
- package/src/maps/index.ts +4 -0
- package/src/maps/labels.ts +269 -49
- package/src/maps/node.ts +82 -49
- package/src/maps/proj.ts +87 -0
- package/src/maps/sources.ts +5 -3
- package/src/maps/style.ts +32 -0
- package/src/maps/styles.ts +215 -4
- package/src/maps/tiles.ts +64 -31
- package/src/maps/types.ts +28 -4
- package/src/markdown/index.ts +293 -92
- package/src/markdown/spans.ts +5 -0
- package/src/qml/containers.tsx +6 -1
- package/src/qml/interaction.tsx +42 -5
- package/src/qml/layouts.tsx +21 -6
- package/src/qml/qtquick.tsx +9 -2
- package/src/qml/react.tsx +7 -5
- package/src/reorder/clock.ts +27 -0
- package/src/reorder/index.ts +100 -27
- package/src/rich-text-editor/index.ts +37 -12
- package/src/rich-text-editor/keymap.ts +1 -1
- package/src/rich-text-editor/keys.ts +135 -26
- package/src/rich-text-editor/markdown.ts +36 -1
- package/src/rich-text-editor/marks.ts +101 -0
- package/src/rich-text-editor/render.ts +49 -12
- package/src/rich-text-editor/replace.ts +85 -0
- package/src/rich-text-editor/toolbar.ts +1 -1
- package/src/rich-text-editor/virtual.ts +25 -0
- package/src/richtext/node.ts +235 -14
- package/src/richtext/runs.ts +23 -12
- package/src/table/index.ts +29 -0
- package/src/table/rows.ts +18 -8
- package/src/terminal/index.ts +4 -0
- package/src/terminal/vt/pty.ts +16 -2
- package/src/terminal-output/index.ts +129 -31
- package/src/terminal-output/runs.ts +16 -2
- package/src/three/canvas.ts +102 -8
- package/src/three/events.ts +49 -9
- package/src/tree/index.ts +19 -0
package/src/charts/render.ts
CHANGED
|
@@ -104,14 +104,51 @@ export const canPath = (
|
|
|
104
104
|
/** One batched fill for many rectangles, or the loop where the context has
|
|
105
105
|
* no batch — same pixels, more requests, which is the mock's documented
|
|
106
106
|
* contract too. */
|
|
107
|
-
|
|
107
|
+
/** Fill a flat `[x, y, w, h, …]` list, less what `clip` leaves out;
|
|
108
|
+
* answers how many rects went out, which is what the wire estimate
|
|
109
|
+
* counts. */
|
|
110
|
+
function fillRects(
|
|
111
|
+
ctx: PlotContext,
|
|
112
|
+
rects: number[],
|
|
113
|
+
clip?: PlotRect | null,
|
|
114
|
+
): number {
|
|
115
|
+
if (clip) rects = within(rects, clip);
|
|
116
|
+
if (rects.length === 0) return 0;
|
|
108
117
|
if (typeof ctx.fillRects === 'function') {
|
|
109
118
|
ctx.fillRects(rects);
|
|
110
|
-
return;
|
|
119
|
+
return rects.length / 4;
|
|
111
120
|
}
|
|
112
121
|
for (let i = 0; i + 3 < rects.length; i += 4) {
|
|
113
122
|
ctx.fillRect(rects[i], rects[i + 1], rects[i + 2], rects[i + 3]);
|
|
114
123
|
}
|
|
124
|
+
return rects.length / 4;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* The rects of a flat `[x, y, w, h, …]` list that reach `clip` — a pass's
|
|
129
|
+
* damage, which clips away everything else. A chart the pass merely
|
|
130
|
+
* touches, a strip a pan exposed along its edge, drew every mark it has,
|
|
131
|
+
* all but a few of them into the clip; scatter plots in a panned graph
|
|
132
|
+
* spent most of each step there.
|
|
133
|
+
*/
|
|
134
|
+
function within(rects: number[], clip: PlotRect): number[] {
|
|
135
|
+
const x0 = clip.x;
|
|
136
|
+
const y0 = clip.y;
|
|
137
|
+
const x1 = clip.x + clip.width;
|
|
138
|
+
const y1 = clip.y + clip.height;
|
|
139
|
+
let out: number[] | null = null;
|
|
140
|
+
for (let i = 0; i + 3 < rects.length; i += 4) {
|
|
141
|
+
const x = rects[i];
|
|
142
|
+
const y = rects[i + 1];
|
|
143
|
+
const inside =
|
|
144
|
+
x < x1 && x + rects[i + 2] > x0 && y < y1 && y + rects[i + 3] > y0;
|
|
145
|
+
if (inside) {
|
|
146
|
+
if (out) out.push(x, y, rects[i + 2], rects[i + 3]);
|
|
147
|
+
} else if (!out) {
|
|
148
|
+
out = rects.slice(0, i);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return out ?? rects;
|
|
115
152
|
}
|
|
116
153
|
|
|
117
154
|
/** Mutable accumulator behind `ChartFrameStats`. */
|
|
@@ -159,6 +196,9 @@ export interface SeriesEnv {
|
|
|
159
196
|
* a spec's `strokeWidth`, `dot`, `barRadius` and `size` are lengths the
|
|
160
197
|
* application wrote, so they are logical and multiply here. Default 1. */
|
|
161
198
|
scale?: number;
|
|
199
|
+
/** The pass's damage, device pixels, or null for all of the plot: what
|
|
200
|
+
* lies outside it the pass clips away, so it is not drawn at all. */
|
|
201
|
+
clip?: PlotRect | null;
|
|
162
202
|
}
|
|
163
203
|
|
|
164
204
|
/** A spec length on the device grid. */
|
|
@@ -173,12 +213,15 @@ export interface RenderHost {
|
|
|
173
213
|
/**
|
|
174
214
|
* Composite a straight-RGBA image over the plot, preserving what is
|
|
175
215
|
* already painted underneath. False when this backend cannot (no
|
|
176
|
-
*
|
|
216
|
+
* offscreen surface — the mock), in which case the caller uses rects.
|
|
177
217
|
* `contentKey` names what `fill` would produce: an unchanged key lets
|
|
178
218
|
* the host re-composite its retained surface without refilling or
|
|
179
|
-
* re-uploading a pixel.
|
|
219
|
+
* re-uploading a pixel. `id` is the series': each keeps a surface of its
|
|
220
|
+
* own, or two dense series in one plot would refill one surface for each
|
|
221
|
+
* other on every frame.
|
|
180
222
|
*/
|
|
181
223
|
blitImage(
|
|
224
|
+
id: string,
|
|
182
225
|
x: number,
|
|
183
226
|
y: number,
|
|
184
227
|
w: number,
|
|
@@ -597,18 +640,18 @@ export function renderLineArea(env: SeriesEnv, g: SeriesGeometry): void {
|
|
|
597
640
|
ctx.save();
|
|
598
641
|
if (ctx.globalAlpha !== undefined) ctx.globalAlpha = g.spec.fillOpacity;
|
|
599
642
|
ctx.fillStyle = g.color;
|
|
600
|
-
fillRects(ctx, fillRectsArr);
|
|
643
|
+
const sent = fillRects(ctx, fillRectsArr, env.clip);
|
|
601
644
|
ctx.restore();
|
|
602
645
|
stats.commands++;
|
|
603
|
-
stats.estimatedWireBytes +=
|
|
646
|
+
stats.estimatedWireBytes += sent * BYTES_PER_RECT;
|
|
604
647
|
}
|
|
605
648
|
if (strokeRects.length) {
|
|
606
649
|
ctx.save();
|
|
607
650
|
ctx.fillStyle = g.color;
|
|
608
|
-
fillRects(ctx, strokeRects);
|
|
651
|
+
const sent = fillRects(ctx, strokeRects, env.clip);
|
|
609
652
|
ctx.restore();
|
|
610
653
|
stats.commands++;
|
|
611
|
-
stats.estimatedWireBytes +=
|
|
654
|
+
stats.estimatedWireBytes += sent * BYTES_PER_RECT;
|
|
612
655
|
}
|
|
613
656
|
stats.series.push({ id: g.spec.id, mode: 'columns', points: count });
|
|
614
657
|
}
|
|
@@ -624,10 +667,20 @@ function renderDots(
|
|
|
624
667
|
let total = 0;
|
|
625
668
|
for (const run of runsX) total += run.length;
|
|
626
669
|
if (total <= CIRCLE_MAX && ctx.arc && ctx.fill && ctx.beginPath) {
|
|
670
|
+
const clip = env.clip;
|
|
627
671
|
ctx.save();
|
|
628
672
|
ctx.fillStyle = color;
|
|
629
673
|
for (let k = 0; k < runsX.length; k++) {
|
|
630
674
|
for (let i = 0; i < runsX[k].length; i++) {
|
|
675
|
+
if (
|
|
676
|
+
clip &&
|
|
677
|
+
(runsX[k][i] + r < clip.x ||
|
|
678
|
+
runsX[k][i] - r > clip.x + clip.width ||
|
|
679
|
+
runsY[k][i] + r < clip.y ||
|
|
680
|
+
runsY[k][i] - r > clip.y + clip.height)
|
|
681
|
+
) {
|
|
682
|
+
continue;
|
|
683
|
+
}
|
|
631
684
|
ctx.beginPath();
|
|
632
685
|
ctx.arc(runsX[k][i], runsY[k][i], r, 0, Math.PI * 2);
|
|
633
686
|
ctx.fill();
|
|
@@ -651,10 +704,10 @@ function renderDots(
|
|
|
651
704
|
}
|
|
652
705
|
ctx.save();
|
|
653
706
|
ctx.fillStyle = color;
|
|
654
|
-
fillRects(ctx, rects);
|
|
707
|
+
const sent = fillRects(ctx, rects, env.clip);
|
|
655
708
|
ctx.restore();
|
|
656
709
|
stats.commands++;
|
|
657
|
-
stats.estimatedWireBytes +=
|
|
710
|
+
stats.estimatedWireBytes += sent * BYTES_PER_RECT;
|
|
658
711
|
}
|
|
659
712
|
|
|
660
713
|
// --- bars ------------------------------------------------------------------
|
|
@@ -705,10 +758,10 @@ export function renderBars(env: SeriesEnv, g: SeriesGeometry): void {
|
|
|
705
758
|
}
|
|
706
759
|
ctx.save();
|
|
707
760
|
ctx.fillStyle = g.color;
|
|
708
|
-
fillRects(ctx, rects);
|
|
761
|
+
const sent = fillRects(ctx, rects, env.clip);
|
|
709
762
|
ctx.restore();
|
|
710
763
|
stats.commands++;
|
|
711
|
-
stats.estimatedWireBytes +=
|
|
764
|
+
stats.estimatedWireBytes += sent * BYTES_PER_RECT;
|
|
712
765
|
stats.series.push({ id: g.spec.id, mode: 'columns', points: n });
|
|
713
766
|
return;
|
|
714
767
|
}
|
|
@@ -749,9 +802,9 @@ export function renderBars(env: SeriesEnv, g: SeriesGeometry): void {
|
|
|
749
802
|
}
|
|
750
803
|
}
|
|
751
804
|
if (rects.length) {
|
|
752
|
-
fillRects(ctx, rects);
|
|
805
|
+
const sent = fillRects(ctx, rects, env.clip);
|
|
753
806
|
stats.commands++;
|
|
754
|
-
stats.estimatedWireBytes +=
|
|
807
|
+
stats.estimatedWireBytes += sent * BYTES_PER_RECT;
|
|
755
808
|
}
|
|
756
809
|
ctx.restore();
|
|
757
810
|
stats.series.push({
|
|
@@ -777,6 +830,10 @@ export interface ScatterGrid {
|
|
|
777
830
|
consumedN: number;
|
|
778
831
|
/** rects per alpha bucket, rebuilt only when the grid changed */
|
|
779
832
|
buckets: number[][] | null;
|
|
833
|
+
/** the content the last paint drew — see `renderScatter` */
|
|
834
|
+
painted: string;
|
|
835
|
+
/** the content last handed to the host as an image, which it keeps */
|
|
836
|
+
imaged: string;
|
|
780
837
|
}
|
|
781
838
|
|
|
782
839
|
export function makeScatterGrid(
|
|
@@ -795,11 +852,27 @@ export function makeScatterGrid(
|
|
|
795
852
|
maxCount: 0,
|
|
796
853
|
consumedN: 0,
|
|
797
854
|
buckets: null,
|
|
855
|
+
painted: '',
|
|
856
|
+
imaged: '',
|
|
798
857
|
};
|
|
799
858
|
}
|
|
800
859
|
|
|
801
860
|
const ALPHA_LEVELS = 8;
|
|
802
861
|
|
|
862
|
+
/** The alpha bucket a cell's count falls in: square-root density, so a
|
|
863
|
+
* lone point stays visible beside a pile of a thousand. */
|
|
864
|
+
function alphaLevel(count: number, maxCount: number): number {
|
|
865
|
+
return Math.min(
|
|
866
|
+
ALPHA_LEVELS - 1,
|
|
867
|
+
Math.floor(Math.sqrt(count / maxCount) * ALPHA_LEVELS),
|
|
868
|
+
);
|
|
869
|
+
}
|
|
870
|
+
|
|
871
|
+
/** The opacity a bucket is drawn at, by either path. */
|
|
872
|
+
function levelAlpha(level: number): number {
|
|
873
|
+
return 0.3 + (0.7 * (level + 1)) / ALPHA_LEVELS;
|
|
874
|
+
}
|
|
875
|
+
|
|
803
876
|
/** #rgb/#rrggbb/#rrggbbaa → [r,g,b,a?]; null for anything fancier, which
|
|
804
877
|
* simply keeps the rect path. */
|
|
805
878
|
export function parseHexColor(
|
|
@@ -887,21 +960,38 @@ export function renderScatter(env: SeriesEnv, g: SeriesGeometry): void {
|
|
|
887
960
|
const rectBytes = grid.occupied * BYTES_PER_RECT;
|
|
888
961
|
const imageBytes = plot.width * plot.height * BYTES_PER_PIXEL;
|
|
889
962
|
const rgb = parseHexColor(g.color);
|
|
890
|
-
|
|
963
|
+
// The crossover is a question about one frame, and a grid painted again
|
|
964
|
+
// unchanged — a pan or a drag carrying the plot, a crosshair over it —
|
|
965
|
+
// answers it differently: the host keeps the surface it filled, so every
|
|
966
|
+
// paint of it after the first is one composite, while the rects go out
|
|
967
|
+
// again in full every frame. On a backend where each rect is a primitive
|
|
968
|
+
// of its own rather than a line of one request, that was 30,000 of them
|
|
969
|
+
// a frame across a board of scatter plots. A grid whose data moves keeps
|
|
970
|
+
// the crossover, because every paint of it is its first.
|
|
971
|
+
const contentKey = `${grid.key}#${grid.consumedN}|${g.color}`;
|
|
972
|
+
const repeat = grid.painted === contentKey;
|
|
973
|
+
grid.painted = contentKey;
|
|
974
|
+
if ((repeat || rectBytes > imageBytes) && rgb) {
|
|
975
|
+
const kept = grid.imaged === contentKey;
|
|
891
976
|
const drawn = env.host.blitImage(
|
|
977
|
+
g.spec.id,
|
|
892
978
|
plot.x,
|
|
893
979
|
plot.y,
|
|
894
980
|
gw * cell,
|
|
895
981
|
gh * cell,
|
|
896
982
|
(data) => {
|
|
897
|
-
const [r, gg, b] = rgb;
|
|
983
|
+
const [r, gg, b, ca] = rgb;
|
|
984
|
+
// The rects' opacities exactly, colour alpha included, so which
|
|
985
|
+
// path drew a frame never shows — and a plot that changes path as
|
|
986
|
+
// it goes from moving to still does not change shade.
|
|
987
|
+
const alphas = Array.from({ length: ALPHA_LEVELS }, (_, level) =>
|
|
988
|
+
Math.round(levelAlpha(level) * ca),
|
|
989
|
+
);
|
|
898
990
|
for (let cy = 0; cy < gh; cy++) {
|
|
899
991
|
for (let cx = 0; cx < gw; cx++) {
|
|
900
992
|
const count = grid.counts[cy * gw + cx];
|
|
901
993
|
if (count === 0) continue;
|
|
902
|
-
const a =
|
|
903
|
-
255 * (0.3 + 0.7 * Math.sqrt(count / grid.maxCount)),
|
|
904
|
-
);
|
|
994
|
+
const a = alphas[alphaLevel(count, grid.maxCount)];
|
|
905
995
|
for (let dy = 0; dy < cell; dy++) {
|
|
906
996
|
let at = ((cy * cell + dy) * gw * cell + cx * cell) * 4;
|
|
907
997
|
for (let dx = 0; dx < cell; dx++) {
|
|
@@ -917,11 +1007,12 @@ export function renderScatter(env: SeriesEnv, g: SeriesGeometry): void {
|
|
|
917
1007
|
},
|
|
918
1008
|
// same grid content + colour → the host recomposites its retained
|
|
919
1009
|
// surface: no refill, no upload
|
|
920
|
-
|
|
1010
|
+
contentKey,
|
|
921
1011
|
);
|
|
922
1012
|
if (drawn) {
|
|
1013
|
+
grid.imaged = contentKey;
|
|
923
1014
|
stats.commands++;
|
|
924
|
-
stats.estimatedWireBytes += imageBytes;
|
|
1015
|
+
stats.estimatedWireBytes += kept ? 0 : imageBytes;
|
|
925
1016
|
stats.series.push({ id: g.spec.id, mode: 'image', points: n });
|
|
926
1017
|
return;
|
|
927
1018
|
}
|
|
@@ -938,11 +1029,12 @@ export function renderScatter(env: SeriesEnv, g: SeriesGeometry): void {
|
|
|
938
1029
|
for (let cx = 0; cx < gw; cx++) {
|
|
939
1030
|
const count = grid.counts[cy * gw + cx];
|
|
940
1031
|
if (count === 0) continue;
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
1032
|
+
buckets[alphaLevel(count, grid.maxCount)].push(
|
|
1033
|
+
cx * cell,
|
|
1034
|
+
cy * cell,
|
|
1035
|
+
cell,
|
|
1036
|
+
cell,
|
|
944
1037
|
);
|
|
945
|
-
buckets[level].push(cx * cell, cy * cell, cell, cell);
|
|
946
1038
|
}
|
|
947
1039
|
}
|
|
948
1040
|
grid.buckets = buckets;
|
|
@@ -952,9 +1044,7 @@ export function renderScatter(env: SeriesEnv, g: SeriesGeometry): void {
|
|
|
952
1044
|
for (let level = 0; level < ALPHA_LEVELS; level++) {
|
|
953
1045
|
const local = grid.buckets[level];
|
|
954
1046
|
if (!local.length) continue;
|
|
955
|
-
if (ctx.globalAlpha !== undefined)
|
|
956
|
-
ctx.globalAlpha = 0.3 + (0.7 * (level + 1)) / ALPHA_LEVELS;
|
|
957
|
-
}
|
|
1047
|
+
if (ctx.globalAlpha !== undefined) ctx.globalAlpha = levelAlpha(level);
|
|
958
1048
|
// translate manually: ctx.translate would kick fillRects off ntk's
|
|
959
1049
|
// single-FillRectangles fast path (it requires an identity transform)
|
|
960
1050
|
const rects = new Array<number>(local.length);
|
|
@@ -964,9 +1054,9 @@ export function renderScatter(env: SeriesEnv, g: SeriesGeometry): void {
|
|
|
964
1054
|
rects[i + 2] = local[i + 2];
|
|
965
1055
|
rects[i + 3] = local[i + 3];
|
|
966
1056
|
}
|
|
967
|
-
fillRects(ctx, rects);
|
|
1057
|
+
const sent = fillRects(ctx, rects, env.clip);
|
|
968
1058
|
stats.commands++;
|
|
969
|
-
stats.estimatedWireBytes +=
|
|
1059
|
+
stats.estimatedWireBytes += sent * BYTES_PER_RECT;
|
|
970
1060
|
}
|
|
971
1061
|
ctx.restore();
|
|
972
1062
|
stats.series.push({ id: g.spec.id, mode: 'columns', points: n });
|
package/src/code/index.ts
CHANGED
|
@@ -17,20 +17,18 @@ import type { ReactElement } from 'react';
|
|
|
17
17
|
import { useTheme } from 'react-x11';
|
|
18
18
|
import type { Style } from 'react-x11/style';
|
|
19
19
|
|
|
20
|
-
import {
|
|
21
|
-
|
|
22
|
-
RICHTEXT_ELEMENT,
|
|
23
|
-
useSelectionMenu,
|
|
24
|
-
} from '../richtext/index.js';
|
|
25
|
-
import type { RichTextProps, TextRun } from '../richtext/index.js';
|
|
20
|
+
import { registerRichText, useSelectionMenu } from '../richtext/index.js';
|
|
21
|
+
import type { TextRun } from '../richtext/index.js';
|
|
26
22
|
import {
|
|
27
23
|
codeBlockLook,
|
|
28
|
-
|
|
24
|
+
CodeBlockRunCache,
|
|
29
25
|
codeBlockStyle,
|
|
30
26
|
codeTextStyle,
|
|
31
27
|
} from '../codeblock/index.js';
|
|
32
28
|
import type { Language, TokenStyles } from '../code-language/index.js';
|
|
33
29
|
import { hx } from './hx.js';
|
|
30
|
+
import { useFontPrewarm } from '../internal/prewarm.js';
|
|
31
|
+
import { CodeGutter, CodeLines } from '../internal/codelines.js';
|
|
34
32
|
|
|
35
33
|
const h = React.createElement;
|
|
36
34
|
|
|
@@ -104,40 +102,46 @@ export function Code(props: CodeProps): ReactElement {
|
|
|
104
102
|
}),
|
|
105
103
|
[theme, props.fontSize, props.monoFamily, props.tokenStyles],
|
|
106
104
|
);
|
|
105
|
+
useFontPrewarm(look.family);
|
|
107
106
|
|
|
107
|
+
// Kept between renders, so a source that changes at its end is tokenized
|
|
108
|
+
// again from the line that changed (`CodeBlockRunCache`).
|
|
109
|
+
const runCache = React.useRef<CodeBlockRunCache | null>(null);
|
|
110
|
+
runCache.current ??= new CodeBlockRunCache();
|
|
111
|
+
React.useEffect(() => () => runCache.current?.dispose(), []);
|
|
108
112
|
const runs: TextRun[] = React.useMemo(
|
|
109
|
-
() =>
|
|
113
|
+
() =>
|
|
114
|
+
runCache.current!.runs(source, look, { lang, language, resolveLanguage }),
|
|
110
115
|
[source, lang, language, resolveLanguage, look],
|
|
111
116
|
);
|
|
112
117
|
|
|
113
118
|
const lineCount = React.useMemo(() => source.split('\n').length, [source]);
|
|
114
119
|
|
|
115
|
-
|
|
116
|
-
|
|
120
|
+
// In blocks of lines, so a change lays out the blocks it touches
|
|
121
|
+
// (`../internal/codelines.ts`).
|
|
122
|
+
const code = h(CodeLines, { runs, style: codeTextStyle(look, wrap), wrap });
|
|
117
123
|
|
|
118
124
|
const gutter = lineNumbers
|
|
119
|
-
?
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
})),
|
|
131
|
-
wrap: false,
|
|
132
|
-
style: {
|
|
133
|
-
lineHeight: look.lineHeight,
|
|
134
|
-
textAlign: 'right',
|
|
135
|
-
minWidth:
|
|
136
|
-
Math.max(String(lineCount).length, 2) * Math.ceil(look.size * 0.62),
|
|
137
|
-
marginRight: look.padding,
|
|
138
|
-
flexShrink: 0,
|
|
125
|
+
? hx(
|
|
126
|
+
'box',
|
|
127
|
+
{
|
|
128
|
+
style: {
|
|
129
|
+
flexDirection: 'column',
|
|
130
|
+
minWidth:
|
|
131
|
+
Math.max(String(lineCount).length, 2) *
|
|
132
|
+
Math.ceil(look.size * 0.62),
|
|
133
|
+
marginRight: look.padding,
|
|
134
|
+
flexShrink: 0,
|
|
135
|
+
},
|
|
139
136
|
},
|
|
140
|
-
|
|
137
|
+
// numbers in the same font and line height as the code, blocked the
|
|
138
|
+
// same way, so the two stay in register
|
|
139
|
+
h(CodeGutter, {
|
|
140
|
+
lines: lineCount,
|
|
141
|
+
run: { family: look.family, size: look.size, color: look.dim },
|
|
142
|
+
style: { lineHeight: look.lineHeight, textAlign: 'right' },
|
|
143
|
+
}),
|
|
144
|
+
)
|
|
141
145
|
: null;
|
|
142
146
|
|
|
143
147
|
const rootStyle: Style = {
|
|
@@ -168,7 +172,7 @@ export function Code(props: CodeProps): ReactElement {
|
|
|
168
172
|
hx(
|
|
169
173
|
'box',
|
|
170
174
|
{ style: { overflow: 'scroll', flexDirection: 'column', flexGrow: 1 } },
|
|
171
|
-
|
|
175
|
+
code,
|
|
172
176
|
),
|
|
173
177
|
);
|
|
174
178
|
}
|
|
@@ -11,6 +11,7 @@ import type {
|
|
|
11
11
|
CompletionResult,
|
|
12
12
|
CompletionSource,
|
|
13
13
|
} from '../code-language/types.js';
|
|
14
|
+
import { compareText } from '../internal/collate.js';
|
|
14
15
|
|
|
15
16
|
/**
|
|
16
17
|
* Rank `items` against what has been typed: prefix matches first (case
|
|
@@ -24,7 +25,7 @@ export function rankCompletions(
|
|
|
24
25
|
if (typed.length === 0) {
|
|
25
26
|
return [...items].sort(
|
|
26
27
|
(a, b) =>
|
|
27
|
-
(b.boost ?? 0) - (a.boost ?? 0) || a.label
|
|
28
|
+
(b.boost ?? 0) - (a.boost ?? 0) || compareText(a.label, b.label),
|
|
28
29
|
);
|
|
29
30
|
}
|
|
30
31
|
const lower = typed.toLowerCase();
|
|
@@ -41,7 +42,7 @@ export function rankCompletions(
|
|
|
41
42
|
scored.push({ item, score: score * 1000 + (item.boost ?? 0) });
|
|
42
43
|
}
|
|
43
44
|
scored.sort(
|
|
44
|
-
(a, b) => b.score - a.score || a.item.label
|
|
45
|
+
(a, b) => b.score - a.score || compareText(a.item.label, b.item.label),
|
|
45
46
|
);
|
|
46
47
|
return scored.map((s) => s.item);
|
|
47
48
|
}
|
package/src/code-editor/index.ts
CHANGED
|
@@ -60,6 +60,7 @@ import type {
|
|
|
60
60
|
Position,
|
|
61
61
|
} from '../code-language/types.js';
|
|
62
62
|
import { wordRangeAt } from './doc.js';
|
|
63
|
+
import { styleFamily, useFontPrewarm } from '../internal/prewarm.js';
|
|
63
64
|
|
|
64
65
|
export { ELEMENT as CODE_EDITOR_ELEMENT };
|
|
65
66
|
export { CodeEditorNode };
|
|
@@ -74,6 +75,22 @@ if (!registeredElements().includes(ELEMENT)) {
|
|
|
74
75
|
// near-misses, so a future style vocabulary addition fails loudly here
|
|
75
76
|
// rather than silently in an app.
|
|
76
77
|
semanticNames: ['rows', 'tabSize'],
|
|
78
|
+
// The props the node's own `applyProps` claims the damage of — the rows
|
|
79
|
+
// an external `value` changed, the rows a linter's squiggles are on —
|
|
80
|
+
// or that change nothing drawn. Left to core, a new value or a new
|
|
81
|
+
// diagnostics array (a controlled editor gets both on every keystroke)
|
|
82
|
+
// was the whole editor repainted over the rows it had claimed.
|
|
83
|
+
selfDamagedProps: [
|
|
84
|
+
'value',
|
|
85
|
+
'defaultValue',
|
|
86
|
+
'name',
|
|
87
|
+
'language',
|
|
88
|
+
'tokenStyles',
|
|
89
|
+
'tabSize',
|
|
90
|
+
'diagnostics',
|
|
91
|
+
'lineNumbers',
|
|
92
|
+
'insertSpaces',
|
|
93
|
+
],
|
|
77
94
|
childrenAllowed: false,
|
|
78
95
|
});
|
|
79
96
|
}
|
|
@@ -169,6 +186,8 @@ export function CodeEditor(props: CodeEditorComponentProps): ReactElement {
|
|
|
169
186
|
} = props;
|
|
170
187
|
|
|
171
188
|
const theme = useTheme();
|
|
189
|
+
// the editor's text is all in this family, from its first frame
|
|
190
|
+
useFontPrewarm(styleFamily(style, 'monospace'));
|
|
172
191
|
const nodeRef = useRef<CodeEditorNode | null>(null);
|
|
173
192
|
const [completion, setCompletion] = useState<CompletionState | null>(null);
|
|
174
193
|
// bumped per query; a stale async result compares and drops itself
|