@react-x11/components 0.8.0 → 0.10.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 +105 -38
- package/dist/charts/node.d.ts +12 -2
- package/dist/charts/node.d.ts.map +1 -1
- package/dist/charts/node.js +50 -16
- 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 +3 -1
- 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/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/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 +13 -2
- package/dist/codeblock/index.d.ts.map +1 -1
- package/dist/codeblock/index.js +20 -3
- package/dist/codeblock/index.js.map +1 -1
- package/dist/embed/client.d.ts +48 -3
- package/dist/embed/client.d.ts.map +1 -1
- package/dist/embed/client.js +79 -5
- package/dist/embed/client.js.map +1 -1
- package/dist/embed/index.d.ts +1 -1
- package/dist/embed/index.d.ts.map +1 -1
- package/dist/embed/index.js +1 -1
- package/dist/embed/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 +240 -6
- package/dist/html/css/cascade.d.ts.map +1 -1
- package/dist/html/css/cascade.js +1327 -66
- 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 +498 -15
- package/dist/html/css/style.d.ts.map +1 -1
- package/dist/html/css/style.js +3698 -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 +57 -11
- 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 +2937 -197
- package/dist/html/layout/block.js.map +1 -1
- package/dist/html/layout/boxes.d.ts +340 -17
- package/dist/html/layout/boxes.d.ts.map +1 -1
- package/dist/html/layout/boxes.js +1714 -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 +151 -1
- package/dist/html/layout/inline.d.ts.map +1 -1
- package/dist/html/layout/inline.js +3375 -174
- 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 +172 -5
- package/dist/html/node.d.ts.map +1 -1
- package/dist/html/node.js +1336 -103
- 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 +3503 -141
- 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 +435 -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 +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- 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/{markdown → internal/markdown}/ast.d.ts +23 -0
- package/dist/internal/markdown/ast.d.ts.map +1 -0
- package/dist/internal/markdown/ast.js +22 -0
- package/dist/internal/markdown/ast.js.map +1 -0
- package/dist/internal/markdown/parse.d.ts.map +1 -0
- package/dist/{markdown → internal/markdown}/parse.js +221 -30
- package/dist/internal/markdown/parse.js.map +1 -0
- package/dist/internal/markdown/stringify.d.ts +4 -0
- package/dist/internal/markdown/stringify.d.ts.map +1 -0
- package/dist/internal/markdown/stringify.js +684 -0
- package/dist/internal/markdown/stringify.js.map +1 -0
- package/dist/internal/markdown/tags.d.ts.map +1 -0
- package/dist/internal/markdown/tags.js.map +1 -0
- 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/scroll.d.ts +3 -2
- package/dist/internal/scroll.d.ts.map +1 -1
- package/dist/internal/scroll.js +1 -0
- package/dist/internal/scroll.js.map +1 -1
- 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 +103 -0
- package/dist/maps/anchors.d.ts.map +1 -0
- package/dist/maps/anchors.js +790 -0
- package/dist/maps/anchors.js.map +1 -0
- package/dist/maps/controller.d.ts +340 -0
- package/dist/maps/controller.d.ts.map +1 -0
- package/dist/maps/controller.js +822 -0
- package/dist/maps/controller.js.map +1 -0
- package/dist/maps/gl/buckets.d.ts +99 -0
- package/dist/maps/gl/buckets.d.ts.map +1 -0
- package/dist/maps/gl/buckets.js +365 -0
- package/dist/maps/gl/buckets.js.map +1 -0
- package/dist/maps/gl/build-worker.d.ts +15 -0
- package/dist/maps/gl/build-worker.d.ts.map +1 -0
- package/dist/maps/gl/build-worker.js +44 -0
- package/dist/maps/gl/build-worker.js.map +1 -0
- package/dist/maps/gl/color.d.ts +8 -0
- package/dist/maps/gl/color.d.ts.map +1 -0
- package/dist/maps/gl/color.js +57 -0
- package/dist/maps/gl/color.js.map +1 -0
- package/dist/maps/gl/cover.d.ts +70 -0
- package/dist/maps/gl/cover.d.ts.map +1 -0
- package/dist/maps/gl/cover.js +137 -0
- package/dist/maps/gl/cover.js.map +1 -0
- package/dist/maps/gl/index.d.ts +3 -0
- package/dist/maps/gl/index.d.ts.map +1 -0
- package/dist/maps/gl/index.js +20 -0
- package/dist/maps/gl/index.js.map +1 -0
- package/dist/maps/gl/markers.d.ts +28 -0
- package/dist/maps/gl/markers.d.ts.map +1 -0
- package/dist/maps/gl/markers.js +60 -0
- package/dist/maps/gl/markers.js.map +1 -0
- package/dist/maps/gl/overlays.d.ts +68 -0
- package/dist/maps/gl/overlays.d.ts.map +1 -0
- package/dist/maps/gl/overlays.js +300 -0
- package/dist/maps/gl/overlays.js.map +1 -0
- package/dist/maps/gl/pane.d.ts +12 -0
- package/dist/maps/gl/pane.d.ts.map +1 -0
- package/dist/maps/gl/pane.js +37 -0
- package/dist/maps/gl/pane.js.map +1 -0
- package/dist/maps/gl/placement.d.ts +124 -0
- package/dist/maps/gl/placement.d.ts.map +1 -0
- package/dist/maps/gl/placement.js +642 -0
- package/dist/maps/gl/placement.js.map +1 -0
- package/dist/maps/gl/renderer.d.ts +384 -0
- package/dist/maps/gl/renderer.d.ts.map +1 -0
- package/dist/maps/gl/renderer.js +1184 -0
- package/dist/maps/gl/renderer.js.map +1 -0
- package/dist/maps/gl/shaders.d.ts +121 -0
- package/dist/maps/gl/shaders.d.ts.map +1 -0
- package/dist/maps/gl/shaders.js +453 -0
- package/dist/maps/gl/shaders.js.map +1 -0
- package/dist/maps/gl/store.d.ts +125 -0
- package/dist/maps/gl/store.d.ts.map +1 -0
- package/dist/maps/gl/store.js +512 -0
- package/dist/maps/gl/store.js.map +1 -0
- package/dist/maps/gl/text.d.ts +283 -0
- package/dist/maps/gl/text.d.ts.map +1 -0
- package/dist/maps/gl/text.js +698 -0
- package/dist/maps/gl/text.js.map +1 -0
- package/dist/maps/gl/view.d.ts +345 -0
- package/dist/maps/gl/view.d.ts.map +1 -0
- package/dist/maps/gl/view.js +1209 -0
- package/dist/maps/gl/view.js.map +1 -0
- 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 +3 -1
- package/dist/maps/index.d.ts.map +1 -1
- package/dist/maps/index.js +218 -52
- package/dist/maps/index.js.map +1 -1
- package/dist/maps/labels.d.ts +91 -18
- package/dist/maps/labels.d.ts.map +1 -1
- package/dist/maps/labels.js +376 -140
- package/dist/maps/labels.js.map +1 -1
- package/dist/maps/node.d.ts +179 -56
- package/dist/maps/node.d.ts.map +1 -1
- package/dist/maps/node.js +663 -537
- package/dist/maps/node.js.map +1 -1
- package/dist/maps/overlay.d.ts +72 -9
- package/dist/maps/overlay.d.ts.map +1 -1
- package/dist/maps/overlay.js +108 -28
- package/dist/maps/overlay.js.map +1 -1
- package/dist/maps/paint.d.ts +3 -0
- package/dist/maps/paint.d.ts.map +1 -1
- package/dist/maps/paint.js.map +1 -1
- package/dist/maps/proj.d.ts +62 -0
- package/dist/maps/proj.d.ts.map +1 -1
- package/dist/maps/proj.js +101 -0
- package/dist/maps/proj.js.map +1 -1
- package/dist/maps/renderer.d.ts +69 -0
- package/dist/maps/renderer.d.ts.map +1 -0
- package/dist/maps/renderer.js +66 -0
- package/dist/maps/renderer.js.map +1 -0
- package/dist/maps/sources.d.ts +30 -6
- package/dist/maps/sources.d.ts.map +1 -1
- package/dist/maps/sources.js +22 -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/theme.d.ts +19 -0
- package/dist/maps/theme.d.ts.map +1 -0
- package/dist/maps/theme.js +44 -0
- package/dist/maps/theme.js.map +1 -0
- package/dist/maps/tiles.d.ts +147 -27
- package/dist/maps/tiles.d.ts.map +1 -1
- package/dist/maps/tiles.js +221 -54
- package/dist/maps/tiles.js.map +1 -1
- package/dist/maps/types.d.ts +213 -21
- package/dist/maps/types.d.ts.map +1 -1
- package/dist/markdown/expressions.d.ts +1 -1
- package/dist/markdown/expressions.d.ts.map +1 -1
- package/dist/markdown/expressions.js.map +1 -1
- package/dist/markdown/index.d.ts +7 -6
- package/dist/markdown/index.d.ts.map +1 -1
- package/dist/markdown/index.js +121 -50
- package/dist/markdown/index.js.map +1 -1
- package/dist/markdown/spans.d.ts +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/media-player/index.d.ts +11 -3
- package/dist/media-player/index.d.ts.map +1 -1
- package/dist/media-player/index.js +13 -2
- package/dist/media-player/index.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/clipboard.d.ts +23 -0
- package/dist/rich-text-editor/clipboard.d.ts.map +1 -0
- package/dist/rich-text-editor/clipboard.js +307 -0
- package/dist/rich-text-editor/clipboard.js.map +1 -0
- package/dist/rich-text-editor/collab.d.ts +32 -0
- package/dist/rich-text-editor/collab.d.ts.map +1 -0
- package/dist/rich-text-editor/collab.js +55 -0
- package/dist/rich-text-editor/collab.js.map +1 -0
- package/dist/rich-text-editor/commands.d.ts +50 -0
- package/dist/rich-text-editor/commands.d.ts.map +1 -0
- package/dist/rich-text-editor/commands.js +376 -0
- package/dist/rich-text-editor/commands.js.map +1 -0
- package/dist/rich-text-editor/drag.d.ts +68 -0
- package/dist/rich-text-editor/drag.d.ts.map +1 -0
- package/dist/rich-text-editor/drag.js +148 -0
- package/dist/rich-text-editor/drag.js.map +1 -0
- package/dist/rich-text-editor/html.d.ts +145 -0
- package/dist/rich-text-editor/html.d.ts.map +1 -0
- package/dist/rich-text-editor/html.js +516 -0
- package/dist/rich-text-editor/html.js.map +1 -0
- package/dist/rich-text-editor/index.d.ts +252 -0
- package/dist/rich-text-editor/index.d.ts.map +1 -0
- package/dist/rich-text-editor/index.js +856 -0
- package/dist/rich-text-editor/index.js.map +1 -0
- package/dist/rich-text-editor/inline.d.ts +94 -0
- package/dist/rich-text-editor/inline.d.ts.map +1 -0
- package/dist/rich-text-editor/inline.js +252 -0
- package/dist/rich-text-editor/inline.js.map +1 -0
- package/dist/rich-text-editor/keymap.d.ts +71 -0
- package/dist/rich-text-editor/keymap.d.ts.map +1 -0
- package/dist/rich-text-editor/keymap.js +394 -0
- package/dist/rich-text-editor/keymap.js.map +1 -0
- package/dist/rich-text-editor/keys.d.ts +40 -0
- package/dist/rich-text-editor/keys.d.ts.map +1 -0
- package/dist/rich-text-editor/keys.js +202 -0
- package/dist/rich-text-editor/keys.js.map +1 -0
- package/dist/rich-text-editor/look.d.ts +71 -0
- package/dist/rich-text-editor/look.d.ts.map +1 -0
- package/dist/rich-text-editor/look.js +342 -0
- package/dist/rich-text-editor/look.js.map +1 -0
- package/dist/rich-text-editor/markdown.d.ts +18 -0
- package/dist/rich-text-editor/markdown.d.ts.map +1 -0
- package/dist/rich-text-editor/markdown.js +496 -0
- package/dist/rich-text-editor/markdown.js.map +1 -0
- 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/nodes.d.ts +135 -0
- package/dist/rich-text-editor/nodes.d.ts.map +1 -0
- package/dist/rich-text-editor/nodes.js +397 -0
- package/dist/rich-text-editor/nodes.js.map +1 -0
- package/dist/rich-text-editor/render.d.ts +68 -0
- package/dist/rich-text-editor/render.d.ts.map +1 -0
- package/dist/rich-text-editor/render.js +518 -0
- package/dist/rich-text-editor/render.js.map +1 -0
- package/dist/rich-text-editor/schema.d.ts +16 -0
- package/dist/rich-text-editor/schema.d.ts.map +1 -0
- package/dist/rich-text-editor/schema.js +386 -0
- package/dist/rich-text-editor/schema.js.map +1 -0
- package/dist/rich-text-editor/store.d.ts +11 -0
- package/dist/rich-text-editor/store.d.ts.map +1 -0
- package/dist/rich-text-editor/store.js +43 -0
- package/dist/rich-text-editor/store.js.map +1 -0
- package/dist/rich-text-editor/suggest.d.ts +127 -0
- package/dist/rich-text-editor/suggest.d.ts.map +1 -0
- package/dist/rich-text-editor/suggest.js +0 -0
- package/dist/rich-text-editor/suggest.js.map +1 -0
- package/dist/rich-text-editor/tables.d.ts +41 -0
- package/dist/rich-text-editor/tables.d.ts.map +1 -0
- package/dist/rich-text-editor/tables.js +204 -0
- package/dist/rich-text-editor/tables.js.map +1 -0
- package/dist/rich-text-editor/toolbar.d.ts +58 -0
- package/dist/rich-text-editor/toolbar.d.ts.map +1 -0
- package/dist/rich-text-editor/toolbar.js +548 -0
- package/dist/rich-text-editor/toolbar.js.map +1 -0
- package/dist/rich-text-editor/view.d.ts +368 -0
- package/dist/rich-text-editor/view.d.ts.map +1 -0
- package/dist/rich-text-editor/view.js +1968 -0
- package/dist/rich-text-editor/view.js.map +1 -0
- package/dist/rich-text-editor/virtual.d.ts +54 -0
- package/dist/rich-text-editor/virtual.d.ts.map +1 -0
- package/dist/rich-text-editor/virtual.js +279 -0
- package/dist/rich-text-editor/virtual.js.map +1 -0
- package/dist/richtext/node.d.ts +71 -4
- package/dist/richtext/node.d.ts.map +1 -1
- package/dist/richtext/node.js +233 -28
- 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/backends.d.ts +4 -1
- package/dist/terminal/backends.d.ts.map +1 -1
- package/dist/terminal/backends.js.map +1 -1
- package/dist/terminal/index.d.ts +18 -7
- package/dist/terminal/index.d.ts.map +1 -1
- package/dist/terminal/index.js +32 -11
- 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 +6 -1
- package/dist/terminal-output/index.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 +59 -31
- package/src/charts/node.ts +68 -28
- package/src/charts/render.ts +120 -30
- package/src/code/index.ts +3 -1
- 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/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/stream.ts +257 -17
- package/src/code-language/types.ts +5 -4
- package/src/codeblock/index.ts +20 -3
- package/src/embed/client.ts +102 -8
- package/src/embed/index.ts +2 -0
- 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 +1403 -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 +4102 -222
- package/src/html/css/ua.ts +58 -12
- 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 +3456 -230
- package/src/html/layout/boxes.ts +2100 -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 +3943 -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 +1486 -121
- package/src/html/paint.ts +4293 -169
- package/src/html/resources.ts +161 -50
- package/src/html/surfaces.ts +81 -0
- package/src/html/svg.ts +493 -0
- package/src/html/url.ts +86 -0
- package/src/index.ts +4 -0
- package/src/internal/collate.ts +12 -0
- package/src/{markdown → internal/markdown}/ast.ts +35 -7
- package/src/{markdown → internal/markdown}/parse.ts +288 -35
- package/src/internal/markdown/stringify.ts +772 -0
- package/src/internal/prewarm.ts +45 -0
- package/src/internal/scroll.ts +5 -3
- 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 +913 -0
- package/src/maps/controller.ts +1084 -0
- package/src/maps/gl/buckets.ts +461 -0
- package/src/maps/gl/build-worker.ts +66 -0
- package/src/maps/gl/color.ts +62 -0
- package/src/maps/gl/cover.ts +205 -0
- package/src/maps/gl/index.ts +23 -0
- package/src/maps/gl/markers.ts +83 -0
- package/src/maps/gl/overlays.ts +379 -0
- package/src/maps/gl/pane.ts +42 -0
- package/src/maps/gl/placement.ts +968 -0
- package/src/maps/gl/renderer.ts +1660 -0
- package/src/maps/gl/shaders.ts +489 -0
- package/src/maps/gl/store.ts +615 -0
- package/src/maps/gl/text.ts +868 -0
- package/src/maps/gl/view.ts +1489 -0
- package/src/maps/icons.ts +183 -0
- package/src/maps/index.ts +274 -81
- package/src/maps/labels.ts +457 -144
- package/src/maps/node.ts +832 -665
- package/src/maps/overlay.ts +148 -43
- package/src/maps/paint.ts +3 -0
- package/src/maps/proj.ts +118 -0
- package/src/maps/renderer.ts +155 -0
- package/src/maps/sources.ts +43 -6
- package/src/maps/style.ts +32 -0
- package/src/maps/styles.ts +215 -4
- package/src/maps/theme.ts +51 -0
- package/src/maps/tiles.ts +253 -62
- package/src/maps/types.ts +213 -21
- package/src/markdown/expressions.ts +5 -1
- package/src/markdown/index.ts +163 -78
- package/src/markdown/spans.ts +6 -1
- package/src/media-player/index.ts +18 -4
- 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/clipboard.ts +439 -0
- package/src/rich-text-editor/collab.ts +91 -0
- package/src/rich-text-editor/commands.ts +448 -0
- package/src/rich-text-editor/dom-globals.d.ts +23 -0
- package/src/rich-text-editor/drag.ts +211 -0
- package/src/rich-text-editor/html.ts +619 -0
- package/src/rich-text-editor/index.ts +1364 -0
- package/src/rich-text-editor/inline.ts +345 -0
- package/src/rich-text-editor/keymap.ts +510 -0
- package/src/rich-text-editor/keys.ts +228 -0
- package/src/rich-text-editor/look.ts +427 -0
- package/src/rich-text-editor/markdown.ts +653 -0
- package/src/rich-text-editor/marks.ts +101 -0
- package/src/rich-text-editor/nodes.ts +497 -0
- package/src/rich-text-editor/render.ts +837 -0
- package/src/rich-text-editor/schema.ts +431 -0
- package/src/rich-text-editor/store.ts +39 -0
- package/src/rich-text-editor/suggest.ts +597 -0
- package/src/rich-text-editor/tables.ts +272 -0
- package/src/rich-text-editor/toolbar.ts +724 -0
- package/src/rich-text-editor/view.ts +2287 -0
- package/src/rich-text-editor/virtual.ts +372 -0
- package/src/richtext/node.ts +294 -44
- package/src/richtext/runs.ts +23 -12
- package/src/table/index.ts +29 -0
- package/src/table/rows.ts +18 -8
- package/src/terminal/backends.ts +4 -1
- package/src/terminal/index.ts +47 -15
- package/src/terminal/vt/pty.ts +16 -2
- package/src/terminal-output/index.ts +6 -1
- package/src/three/canvas.ts +102 -8
- package/src/three/events.ts +49 -9
- package/src/tree/index.ts +19 -0
- package/dist/markdown/ast.d.ts.map +0 -1
- package/dist/markdown/ast.js +0 -17
- package/dist/markdown/ast.js.map +0 -1
- package/dist/markdown/parse.d.ts.map +0 -1
- package/dist/markdown/parse.js.map +0 -1
- package/dist/markdown/tags.d.ts.map +0 -1
- package/dist/markdown/tags.js.map +0 -1
- /package/dist/{markdown → internal/markdown}/parse.d.ts +0 -0
- /package/dist/{markdown → internal/markdown}/tags.d.ts +0 -0
- /package/dist/{markdown → internal/markdown}/tags.js +0 -0
- /package/src/{markdown → internal/markdown}/tags.ts +0 -0
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
// The GL renderer's entry: what `<Flow>` loads, by dynamic import, when it is
|
|
2
|
+
// asked to draw through GL — and only then. A static import anywhere under
|
|
3
|
+
// `<Flow>` would put the shaders and the packer into every bundle that draws
|
|
4
|
+
// a graph; `test/treeshake.test.ts` holds it to that, as it holds `<Map>`.
|
|
5
|
+
//
|
|
6
|
+
// What is here is the surface: a `<glarea>` laid over the pane, drawing the
|
|
7
|
+
// pane's own scene every frame it is asked for one. It owns no graph and no
|
|
8
|
+
// input. The `<flowgraph>` element under it keeps both — the hit test skips a
|
|
9
|
+
// surface and answers with the node behind it, which is the pane — and asks
|
|
10
|
+
// for frames through `setGlRequest`, so every change the 2D renderer would
|
|
11
|
+
// have repainted becomes one GL frame.
|
|
12
|
+
import React, { useEffect, useMemo } from 'react';
|
|
13
|
+
import type { ReactElement, ReactNode } from 'react';
|
|
14
|
+
|
|
15
|
+
import type { FlowFrameStats } from '../types.js';
|
|
16
|
+
import { FlowGlRenderer, now } from './renderer.js';
|
|
17
|
+
import { LabelAtlas } from './text.js';
|
|
18
|
+
import type { TextSource } from './text.js';
|
|
19
|
+
import type { FlowGlFrame, FlowGlTarget } from './renderer.js';
|
|
20
|
+
|
|
21
|
+
/** What the surface needs of the pane — `FlowGraphNode`, structurally. */
|
|
22
|
+
export interface FlowGlSource {
|
|
23
|
+
glFrame(
|
|
24
|
+
lastKey: string | null,
|
|
25
|
+
lastLifted?: string | null,
|
|
26
|
+
): (FlowGlFrame & { key: string; liftedKey?: string | null }) | null;
|
|
27
|
+
glText?(): TextSource | null;
|
|
28
|
+
setGlRequest(request: (() => void) | null): void;
|
|
29
|
+
bodyBudget(): FlowFrameStats['bodies'];
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export interface FlowGlSurfaceProps {
|
|
33
|
+
pane: { readonly current: FlowGlSource | null };
|
|
34
|
+
/** The colour a frame starts from — the palette's background, so the
|
|
35
|
+
* instant before the first frame is the graph's ground, not black. */
|
|
36
|
+
clearColor: string;
|
|
37
|
+
onFrame?: (stats: FlowFrameStats) => void;
|
|
38
|
+
/** The surface could not draw; `<Flow>` goes back to the 2D renderer. */
|
|
39
|
+
onError: (error: Error) => void;
|
|
40
|
+
/** Drawn over the surface: the mounted node bodies. */
|
|
41
|
+
children?: ReactNode;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
interface AreaNode {
|
|
45
|
+
requestFrame?(): void;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/** What core's `<glarea>` hands `onDraw` (react-x11 ≥ 2.18.0 passes the
|
|
49
|
+
* display scale — sidorares/react-x11#634). */
|
|
50
|
+
export interface DrawInfoLike {
|
|
51
|
+
width: number;
|
|
52
|
+
height: number;
|
|
53
|
+
scale: number;
|
|
54
|
+
node: { abs: { x: number; y: number } };
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Where the surface sits, from what `onDraw` was handed.
|
|
59
|
+
*
|
|
60
|
+
* The scene is in logical window pixels and the surface is a box of its own
|
|
61
|
+
* in device ones; the node's `abs` is device pixels too, so its origin in
|
|
62
|
+
* logical ones is `abs / scale`. Taking `scale` from `DrawInfo`, where its
|
|
63
|
+
* type puts it, made that `abs / undefined`: every vertex `NaN`, a blank
|
|
64
|
+
* pane — and every counter the renderer keeps, draw calls and instances and
|
|
65
|
+
* frames a second, exactly what a correct frame reports. So a target that
|
|
66
|
+
* is not finite throws here, and a surface that cannot place itself fails
|
|
67
|
+
* back to the 2D renderer through `onError` rather than drawing nothing.
|
|
68
|
+
*/
|
|
69
|
+
export function targetOf(info: DrawInfoLike): FlowGlTarget {
|
|
70
|
+
const scale = info.scale;
|
|
71
|
+
const target = {
|
|
72
|
+
origin: { x: info.node.abs.x / scale, y: info.node.abs.y / scale },
|
|
73
|
+
scale,
|
|
74
|
+
width: info.width,
|
|
75
|
+
height: info.height,
|
|
76
|
+
};
|
|
77
|
+
if (
|
|
78
|
+
![
|
|
79
|
+
target.origin.x,
|
|
80
|
+
target.origin.y,
|
|
81
|
+
scale,
|
|
82
|
+
target.width,
|
|
83
|
+
target.height,
|
|
84
|
+
].every(Number.isFinite) ||
|
|
85
|
+
!(scale > 0)
|
|
86
|
+
) {
|
|
87
|
+
throw new Error(
|
|
88
|
+
`@react-x11/components flow/gl: cannot place the surface ` +
|
|
89
|
+
`(${JSON.stringify(target)})`,
|
|
90
|
+
);
|
|
91
|
+
}
|
|
92
|
+
return target;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/** Slices of setting — a few milliseconds of fields, and the batch drawn
|
|
96
|
+
* and read back that an engine without coverage of its own needs — one
|
|
97
|
+
* run may take: a bound, so a screen whose labels outgrow the atlas does
|
|
98
|
+
* not set labels for ever. The next frame that wants any starts another. */
|
|
99
|
+
const MAX_SLICES = 64;
|
|
100
|
+
|
|
101
|
+
/** The surface's state across renders: the renderer lives as long as the GL
|
|
102
|
+
* context it was made for, which is longer than any one props object. */
|
|
103
|
+
class Driver {
|
|
104
|
+
props: FlowGlSurfaceProps;
|
|
105
|
+
private area: AreaNode | null = null;
|
|
106
|
+
private renderer: FlowGlRenderer | null = null;
|
|
107
|
+
private context: unknown = null;
|
|
108
|
+
/** The key of the world now on the GPU — null when there is none, which
|
|
109
|
+
* is what makes the next frame build one. */
|
|
110
|
+
private worldKey: string | null = null;
|
|
111
|
+
/** The same for the lifted layer — the nodes a drag is moving. */
|
|
112
|
+
private liftedKey: string | null = null;
|
|
113
|
+
/** The label atlas, and the face and scale it was made for: either
|
|
114
|
+
* changing is every field wrong, so it is made again. */
|
|
115
|
+
private atlas: LabelAtlas | null = null;
|
|
116
|
+
private atlasKey = '';
|
|
117
|
+
/** The timer that brings a frame once a zoom gesture stops — strings it
|
|
118
|
+
* uncovered are only set at rest, and a gesture that rebuilt its world
|
|
119
|
+
* on the way asks for no frame by itself when it stops. */
|
|
120
|
+
private settle: unknown = null;
|
|
121
|
+
private failed = false;
|
|
122
|
+
/** Labels are being set (`setLabels`); one run at a time. */
|
|
123
|
+
private setting = false;
|
|
124
|
+
|
|
125
|
+
constructor(props: FlowGlSurfaceProps) {
|
|
126
|
+
this.props = props;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/** Stable, so the pane can compare it and not repaint on every render. */
|
|
130
|
+
readonly request = (): void => {
|
|
131
|
+
this.area?.requestFrame?.();
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
readonly areaRef = (node: AreaNode | null): void => {
|
|
135
|
+
this.area = node;
|
|
136
|
+
this.attach();
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
attach(): void {
|
|
140
|
+
this.props.pane.current?.setGlRequest(
|
|
141
|
+
this.area && !this.failed ? this.request : null,
|
|
142
|
+
);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
detach(): void {
|
|
146
|
+
this.props.pane.current?.setGlRequest(null);
|
|
147
|
+
if (this.settle != null) timers.clearTimeout?.(this.settle);
|
|
148
|
+
this.settle = null;
|
|
149
|
+
this.atlas?.dispose();
|
|
150
|
+
this.atlas = null;
|
|
151
|
+
this.atlasKey = '';
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
readonly draw = (gl: unknown, info: DrawInfoLike): void => {
|
|
155
|
+
if (this.failed) return;
|
|
156
|
+
try {
|
|
157
|
+
if (this.context !== gl || !this.renderer) {
|
|
158
|
+
// A new context is new everything: programs and buffers belong to
|
|
159
|
+
// the one they were made in.
|
|
160
|
+
this.renderer = new FlowGlRenderer(gl);
|
|
161
|
+
this.context = gl;
|
|
162
|
+
this.worldKey = null;
|
|
163
|
+
this.liftedKey = null;
|
|
164
|
+
}
|
|
165
|
+
const pane = this.props.pane.current;
|
|
166
|
+
if (!pane) return;
|
|
167
|
+
const atlas = this.atlasFor(pane);
|
|
168
|
+
const started = now();
|
|
169
|
+
const frame = pane.glFrame(this.worldKey, this.liftedKey);
|
|
170
|
+
if (!frame) return;
|
|
171
|
+
const sceneMs = now() - started;
|
|
172
|
+
const target = targetOf(info);
|
|
173
|
+
if (atlas) {
|
|
174
|
+
this.admit(atlas, frame.moving ?? false);
|
|
175
|
+
// the view, in the world's coordinates
|
|
176
|
+
const zoom = frame.zoom ?? 1;
|
|
177
|
+
atlas.setView({
|
|
178
|
+
x: (target.origin.x - frame.offset.x) / zoom,
|
|
179
|
+
y: (target.origin.y - frame.offset.y) / zoom,
|
|
180
|
+
width: target.width / target.scale / zoom,
|
|
181
|
+
height: target.height / target.scale / zoom,
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
const stats = this.renderer.drawFrame(frame, target, atlas ?? undefined);
|
|
185
|
+
if (frame.world) this.worldKey = frame.key;
|
|
186
|
+
if (frame.lifted !== undefined) this.liftedKey = frame.liftedKey ?? null;
|
|
187
|
+
// Labels this frame could not draw yet are set now, between frames.
|
|
188
|
+
if (atlas?.wanting && !this.setting) {
|
|
189
|
+
this.setting = true;
|
|
190
|
+
this.setLabels(atlas).then(
|
|
191
|
+
() => (this.setting = false),
|
|
192
|
+
(error: unknown) => {
|
|
193
|
+
this.setting = false;
|
|
194
|
+
this.fail(error);
|
|
195
|
+
},
|
|
196
|
+
);
|
|
197
|
+
}
|
|
198
|
+
this.props.onFrame?.({
|
|
199
|
+
renderer: 'gl',
|
|
200
|
+
sceneMs,
|
|
201
|
+
...stats,
|
|
202
|
+
bodies: pane.bodyBudget(),
|
|
203
|
+
});
|
|
204
|
+
} catch (error) {
|
|
205
|
+
this.fail(error);
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Set strings until nothing the world on screen draws is wanted, a frame
|
|
211
|
+
* after every slice that set any: the world holds a box for every label,
|
|
212
|
+
* the ones still being set drawn as nothing, and the frame writes in what
|
|
213
|
+
* landed (`FlowGlRenderer.landLabels`). The labels arrive as they are
|
|
214
|
+
* set, nearest the middle of the view first, where they used to wait for
|
|
215
|
+
* the last of them and a world packed again.
|
|
216
|
+
*
|
|
217
|
+
* Stops when the zoom starts moving again, or after a bound on slices.
|
|
218
|
+
*/
|
|
219
|
+
private async setLabels(atlas: LabelAtlas): Promise<void> {
|
|
220
|
+
for (let slice = 0; slice < MAX_SLICES; slice++) {
|
|
221
|
+
const set = await atlas.pump();
|
|
222
|
+
if (this.failed || this.atlas !== atlas) return;
|
|
223
|
+
if (!set) break;
|
|
224
|
+
this.request();
|
|
225
|
+
if (!atlas.wanting) break;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
/** The atlas for this pane's face and scale, made again when either
|
|
230
|
+
* changes — and dropped where there is no text engine at all. */
|
|
231
|
+
private atlasFor(pane: FlowGlSource): LabelAtlas | null {
|
|
232
|
+
const text = pane.glText?.() ?? null;
|
|
233
|
+
if (!text) return null;
|
|
234
|
+
const key = `${text.options.family}|${text.options.scale}`;
|
|
235
|
+
if (!this.atlas || key !== this.atlasKey) {
|
|
236
|
+
this.atlas?.dispose();
|
|
237
|
+
this.atlas = new LabelAtlas(text);
|
|
238
|
+
this.atlasKey = key;
|
|
239
|
+
this.worldKey = null;
|
|
240
|
+
this.liftedKey = null;
|
|
241
|
+
}
|
|
242
|
+
return this.atlas;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
* New strings only while no zoom gesture moves, and a frame asked for once
|
|
247
|
+
* it has stopped, so the labels it uncovered are set without a nudge. A
|
|
248
|
+
* gesture is the pane's to say (`FlowGlFrame.moving`): a single step — a
|
|
249
|
+
* button, `fitView`, `setCenter` — is not one. Taking any change of zoom
|
|
250
|
+
* for one held every first appearance back by the whole rest timer: the
|
|
251
|
+
* stress fan's first label came 185 ms after a `setCenter`, and comes at
|
|
252
|
+
* 54.
|
|
253
|
+
*/
|
|
254
|
+
private admit(atlas: LabelAtlas, moving: boolean): void {
|
|
255
|
+
atlas.admit = !moving;
|
|
256
|
+
if (moving) {
|
|
257
|
+
if (this.settle != null) timers.clearTimeout?.(this.settle);
|
|
258
|
+
this.settle = timers.setTimeout?.(() => {
|
|
259
|
+
this.settle = null;
|
|
260
|
+
this.request();
|
|
261
|
+
}, 120);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
readonly surfaceError = (error: Error): void => {
|
|
266
|
+
this.fail(error);
|
|
267
|
+
};
|
|
268
|
+
|
|
269
|
+
private fail(error: unknown): void {
|
|
270
|
+
if (this.failed) return;
|
|
271
|
+
this.failed = true;
|
|
272
|
+
this.detach();
|
|
273
|
+
this.props.onError(
|
|
274
|
+
error instanceof Error ? error : new Error(String(error)),
|
|
275
|
+
);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
/**
|
|
280
|
+
* Over the pane's box, and **transparent to the pointer**.
|
|
281
|
+
*
|
|
282
|
+
* Core hit-tests a window's surfaces before its tree (`GlAreaNode.hitSurface`
|
|
283
|
+
* in react-x11): a point over a `<glarea>` is over *it*, whatever sits behind
|
|
284
|
+
* in the tree. Everything a graph editor does with the pointer lives on the
|
|
285
|
+
* pane underneath, so without this a press on a card landed on the surface,
|
|
286
|
+
* which has no handlers, and a drag did nothing at all — found by driving
|
|
287
|
+
* a real drag through the Cocoa backend, which moved the node 177 px on the
|
|
288
|
+
* 2D renderer and 0 on this one. `pointerEvents: 'none'` is core's own way
|
|
289
|
+
* to say a node is for looking at, and it lets the pointer through to the
|
|
290
|
+
* pane as it would through any node.
|
|
291
|
+
*
|
|
292
|
+
* With node bodies over it the surface is `'box-none'` instead (below): the
|
|
293
|
+
* bodies take the pointer, and the surface between them still passes it on
|
|
294
|
+
* to the pane. Making the surface the pane's child, as `<Map>`'s is, would
|
|
295
|
+
* not have done: the pane's gestures are default actions, and core runs a
|
|
296
|
+
* default action on the event's target alone, never an ancestor.
|
|
297
|
+
*/
|
|
298
|
+
/** Timers, through `globalThis`: `src/` compiles with `types: []`. */
|
|
299
|
+
const timers = globalThis as {
|
|
300
|
+
setTimeout?(fn: () => void, ms: number): unknown;
|
|
301
|
+
clearTimeout?(id: unknown): void;
|
|
302
|
+
};
|
|
303
|
+
|
|
304
|
+
const FILL = {
|
|
305
|
+
position: 'absolute',
|
|
306
|
+
left: 0,
|
|
307
|
+
top: 0,
|
|
308
|
+
right: 0,
|
|
309
|
+
bottom: 0,
|
|
310
|
+
pointerEvents: 'none',
|
|
311
|
+
} as const;
|
|
312
|
+
|
|
313
|
+
/** The same, where the surface holds node bodies: they are its children,
|
|
314
|
+
* drawn over it, and take the pointer; the surface between them still does
|
|
315
|
+
* not. React Native's `'box-none'`, which react-x11 has from #637 on. */
|
|
316
|
+
const FILL_WITH_BODIES = { ...FILL, pointerEvents: 'box-none' } as const;
|
|
317
|
+
|
|
318
|
+
/**
|
|
319
|
+
* The surface. Mounted by `<Flow>` as the pane's sibling, after it, filling
|
|
320
|
+
* the same box: a `<glarea>` is stacked over everything 2D in its window, so
|
|
321
|
+
* it lands on the pane wherever it is in the tree.
|
|
322
|
+
*/
|
|
323
|
+
export function FlowGlSurface(props: FlowGlSurfaceProps): ReactElement {
|
|
324
|
+
const driver = useMemo(() => new Driver(props), []);
|
|
325
|
+
driver.props = props;
|
|
326
|
+
useEffect(() => {
|
|
327
|
+
driver.attach();
|
|
328
|
+
return () => driver.detach();
|
|
329
|
+
}, [driver]);
|
|
330
|
+
return React.createElement('glarea', {
|
|
331
|
+
ref: driver.areaRef,
|
|
332
|
+
// With bodies over it, the surface must pass the pointer through between
|
|
333
|
+
// them and still let them take it — `'box-none'`, react-x11#637. With
|
|
334
|
+
// none, `'none'` does the same and needs nothing new of core.
|
|
335
|
+
style: props.children ? FILL_WITH_BODIES : FILL,
|
|
336
|
+
clearColor: props.clearColor,
|
|
337
|
+
frameLoop: 'demand',
|
|
338
|
+
onDraw: driver.draw,
|
|
339
|
+
onError: driver.surfaceError,
|
|
340
|
+
children: props.children,
|
|
341
|
+
});
|
|
342
|
+
}
|