@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,35 @@
|
|
|
1
|
+
import type { FlowPainter } from './types.js';
|
|
2
|
+
import type { FlowScene, SceneGrid, SceneNodeItem } from './scene.js';
|
|
3
|
+
/** How a renderer draws the grid, when it can do better than the runs below
|
|
4
|
+
* — the element's pattern-tile path (ntk#263). Answers whether it did. */
|
|
5
|
+
export type GridPainter = (painter: FlowPainter, grid: SceneGrid) => boolean;
|
|
6
|
+
/** One node — card, ink, handles, grips — as the scene paints it; the
|
|
7
|
+
* scene is read for its zoom and palette only. */
|
|
8
|
+
export declare function paintNodeItem(painter: FlowPainter, item: SceneNodeItem, scene: Pick<FlowScene, 'viewport' | 'palette'>): void;
|
|
9
|
+
/** The grid, the slow and universal way. A mark's size arrives in graph
|
|
10
|
+
* units, so it is sized against the same zoom the pitch was. */
|
|
11
|
+
export declare function paintGrid(painter: FlowPainter, grid: SceneGrid, zoom: number): void;
|
|
12
|
+
/**
|
|
13
|
+
* Draw a scene.
|
|
14
|
+
*
|
|
15
|
+
* `grid` is the element's accelerated grid painter, if it has one: it
|
|
16
|
+
* answers false when it could not, and the runs path takes over.
|
|
17
|
+
*/
|
|
18
|
+
export declare function paintScene(painter: FlowPainter, scene: FlowScene, grid?: GridPainter): void;
|
|
19
|
+
/** Under the graph, pinned to the pane: the background and the grid. */
|
|
20
|
+
export declare function paintGround(painter: FlowPainter, scene: FlowScene, grid?: GridPainter): void;
|
|
21
|
+
/** The graph: edges, nodes, and the line a connection gesture draws. What
|
|
22
|
+
* a 2D zoom gesture composites scaled from one paint of it. */
|
|
23
|
+
export declare function paintGraph(painter: FlowPainter, scene: FlowScene): void;
|
|
24
|
+
/** The graph's edges alone: the first half of `paintGraph`, which a drag's
|
|
25
|
+
* pictures take apart so the dragged node's edges go between them. */
|
|
26
|
+
export declare function paintGraphEdges(painter: FlowPainter, scene: FlowScene): void;
|
|
27
|
+
/** The graph's nodes, and the connection line over them: the second half. */
|
|
28
|
+
export declare function paintGraphNodes(painter: FlowPainter, scene: FlowScene): void;
|
|
29
|
+
/** Over the graph, pinned to the pane: the selection box and the panels. */
|
|
30
|
+
export declare function paintFloat(painter: FlowPainter, scene: FlowScene): void;
|
|
31
|
+
/** The panels that float over the graph — the minimap and the controls —
|
|
32
|
+
* alone: the last of a scene's paint, and what `<Flow>` paints on its own
|
|
33
|
+
* canvases over mounted bodies (`FlowGraphNode.paintPanels`). */
|
|
34
|
+
export declare function paintPanels(painter: FlowPainter, scene: Pick<FlowScene, 'miniMap' | 'controls'>): void;
|
|
35
|
+
//# sourceMappingURL=paint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paint.d.ts","sourceRoot":"","sources":["../../src/flow/paint.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,WAAW,EAA6B,MAAM,YAAY,CAAC;AACzE,OAAO,KAAK,EACV,SAAS,EAET,SAAS,EACT,aAAa,EAId,MAAM,YAAY,CAAC;AAEpB;2EAC2E;AAC3E,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,KAAK,OAAO,CAAC;AAkO7E;mDACmD;AACnD,wBAAgB,aAAa,CAC3B,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,GAAG,SAAS,CAAC,GAC7C,IAAI,CAEN;AAsGD;iEACiE;AACjE,wBAAgB,SAAS,CACvB,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,MAAM,GACX,IAAI,CAYN;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,SAAS,EAChB,IAAI,CAAC,EAAE,WAAW,GACjB,IAAI,CAKN;AAED,wEAAwE;AACxE,wBAAgB,WAAW,CACzB,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,SAAS,EAChB,IAAI,CAAC,EAAE,WAAW,GACjB,IAAI,CAKN;AAED;gEACgE;AAChE,wBAAgB,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI,CAGvE;AAED;uEACuE;AACvE,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI,CAE5E;AAED,6EAA6E;AAC7E,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI,CAW5E;AAED,4EAA4E;AAC5E,wBAAgB,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI,CAGvE;AAED;;kEAEkE;AAClE,wBAAgB,WAAW,CACzB,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,UAAU,CAAC,GAC7C,IAAI,CA4DN"}
|
|
@@ -0,0 +1,393 @@
|
|
|
1
|
+
function paintRect(painter, item) {
|
|
2
|
+
painter.rect(item.rect.x, item.rect.y, item.rect.width, item.rect.height, item.radius, { fill: item.fill, stroke: item.stroke, lineWidth: item.lineWidth });
|
|
3
|
+
}
|
|
4
|
+
function paintText(painter, item) {
|
|
5
|
+
painter.text(item.text, item.x, item.y, {
|
|
6
|
+
size: item.size,
|
|
7
|
+
color: item.color,
|
|
8
|
+
weight: item.weight,
|
|
9
|
+
align: item.align,
|
|
10
|
+
baseline: item.baseline,
|
|
11
|
+
maxWidth: item.maxWidth,
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Strokes grouped by the pen that will draw them, for a pane whose edges are
|
|
16
|
+
* stroked a pen at a time (`FlowScene.batch`, `EDGE_BATCH` in `scene.ts`).
|
|
17
|
+
*
|
|
18
|
+
* Everything a graph strokes is the same two or three pens — the default
|
|
19
|
+
* edge, the selected one, the animated dash — so grouping collapses a
|
|
20
|
+
* per-edge request into a per-pen one. The key carries the dash *and* its
|
|
21
|
+
* offset: two edges marching out of phase cannot share a path, because the
|
|
22
|
+
* offset is set on the context, not on the subpath. And it leads with the
|
|
23
|
+
* layer, so that the pens are stroked in the same order by every pass —
|
|
24
|
+
* the order a pass happened to meet them in put the default pen over the
|
|
25
|
+
* selected one in one pass and under it in the next.
|
|
26
|
+
*/
|
|
27
|
+
class StrokeBuckets {
|
|
28
|
+
byPen = new Map();
|
|
29
|
+
push(points, layer, stroke, lineWidth, dash, dashOffset) {
|
|
30
|
+
const key = `${layer}|${stroke}|${lineWidth}|${dash?.join(',') ?? ''}|${dashOffset}`;
|
|
31
|
+
let entry = this.byPen.get(key);
|
|
32
|
+
if (!entry) {
|
|
33
|
+
entry = { options: { stroke, lineWidth, dash, dashOffset }, runs: [] };
|
|
34
|
+
this.byPen.set(key, entry);
|
|
35
|
+
}
|
|
36
|
+
entry.runs.push(points);
|
|
37
|
+
}
|
|
38
|
+
paint(painter) {
|
|
39
|
+
for (const key of [...this.byPen.keys()].sort()) {
|
|
40
|
+
const { options, runs } = this.byPen.get(key);
|
|
41
|
+
painter.strokeRuns(runs, options);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/** The runs a pass strokes of an edge — the part of the route it reaches,
|
|
46
|
+
* where it reaches only part. */
|
|
47
|
+
function runsOf(edge) {
|
|
48
|
+
return edge.runs ?? [edge.points];
|
|
49
|
+
}
|
|
50
|
+
function paintEdges(painter, edges, batch) {
|
|
51
|
+
if (batch)
|
|
52
|
+
paintEdgesByPen(painter, edges);
|
|
53
|
+
else
|
|
54
|
+
paintEdgesInOrder(painter, edges);
|
|
55
|
+
// The chips and then the labels, both above every edge — which is the
|
|
56
|
+
// point of a chip. The text is not collected, because a glyph run is
|
|
57
|
+
// already one request and nothing is gained by holding it.
|
|
58
|
+
for (const edge of edges) {
|
|
59
|
+
if (edge.chip)
|
|
60
|
+
paintRect(painter, edge.chip);
|
|
61
|
+
}
|
|
62
|
+
for (const edge of edges) {
|
|
63
|
+
if (edge.label)
|
|
64
|
+
paintText(painter, edge.label);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Every run of a pen as one path, and every arrowhead of a colour. A pass
|
|
69
|
+
* draws the pens it reaches in the same order and with the same compositing
|
|
70
|
+
* as the whole pane does: where two of a pen's runs overlap, their coverage
|
|
71
|
+
* adds, in a pass as in a repaint.
|
|
72
|
+
*/
|
|
73
|
+
function paintEdgesByPen(painter, edges) {
|
|
74
|
+
const strokes = new StrokeBuckets();
|
|
75
|
+
const markers = new Map();
|
|
76
|
+
for (const edge of edges) {
|
|
77
|
+
const layer = edge.layer ?? 0;
|
|
78
|
+
// a dashed run picking its pattern up where it starts along the edge
|
|
79
|
+
const runs = runsOf(edge);
|
|
80
|
+
for (let i = 0; i < runs.length; i++) {
|
|
81
|
+
const points = runs[i];
|
|
82
|
+
if (points.length < 2)
|
|
83
|
+
continue;
|
|
84
|
+
strokes.push(points, layer, edge.stroke, edge.lineWidth, edge.dash, edge.dashOffset + (edge.runStarts?.[i] ?? 0));
|
|
85
|
+
}
|
|
86
|
+
for (const marker of edge.markers) {
|
|
87
|
+
const key = `${layer}|${marker.color}|${marker.lineWidth}`;
|
|
88
|
+
let bucket = markers.get(key);
|
|
89
|
+
if (!bucket) {
|
|
90
|
+
bucket = {
|
|
91
|
+
color: marker.color,
|
|
92
|
+
lineWidth: marker.lineWidth,
|
|
93
|
+
filled: [],
|
|
94
|
+
open: [],
|
|
95
|
+
};
|
|
96
|
+
markers.set(key, bucket);
|
|
97
|
+
}
|
|
98
|
+
(marker.filled ? bucket.filled : bucket.open).push(marker.points);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
strokes.paint(painter);
|
|
102
|
+
for (const key of [...markers.keys()].sort()) {
|
|
103
|
+
const bucket = markers.get(key);
|
|
104
|
+
if (bucket.filled.length > 0) {
|
|
105
|
+
painter.polygons(bucket.filled, { fill: bucket.color });
|
|
106
|
+
}
|
|
107
|
+
if (bucket.open.length > 0) {
|
|
108
|
+
painter.strokeRuns(bucket.open, {
|
|
109
|
+
stroke: bucket.color,
|
|
110
|
+
lineWidth: bucket.lineWidth,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* An edge at a time, in the graph's order, and the arrowheads after all of
|
|
117
|
+
* them: what a pane with few edges draws, where a path per pen would be a
|
|
118
|
+
* mask the size of the pane (`EDGE_BATCH`). One edge is still one path,
|
|
119
|
+
* however many pieces a pass cut it into: a step edge that doubles back
|
|
120
|
+
* along its own line adds its two legs' coverage in one path and lays one
|
|
121
|
+
* over the other in two, and a pass that drew the pieces apart drew the
|
|
122
|
+
* shared line lighter at its edges than a repaint did. A dashed edge's
|
|
123
|
+
* pieces are the exception — each picks its pattern up where it starts, and
|
|
124
|
+
* a dash offset is the context's, not a subpath's.
|
|
125
|
+
*/
|
|
126
|
+
function paintEdgesInOrder(painter, edges) {
|
|
127
|
+
for (const edge of edges) {
|
|
128
|
+
const runs = runsOf(edge);
|
|
129
|
+
const pen = {
|
|
130
|
+
stroke: edge.stroke,
|
|
131
|
+
lineWidth: edge.lineWidth,
|
|
132
|
+
dash: edge.dash,
|
|
133
|
+
dashOffset: edge.dashOffset,
|
|
134
|
+
};
|
|
135
|
+
if (edge.dash && edge.runStarts) {
|
|
136
|
+
for (let i = 0; i < runs.length; i++) {
|
|
137
|
+
if (runs[i].length < 2)
|
|
138
|
+
continue;
|
|
139
|
+
painter.polyline(runs[i], {
|
|
140
|
+
...pen,
|
|
141
|
+
dashOffset: edge.dashOffset + (edge.runStarts[i] ?? 0),
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
else if (runs.length === 1) {
|
|
146
|
+
painter.polyline(runs[0], pen);
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
painter.strokeRuns(runs, pen);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
for (const edge of edges) {
|
|
153
|
+
for (const marker of edge.markers) {
|
|
154
|
+
if (marker.filled) {
|
|
155
|
+
painter.polygon(marker.points, { fill: marker.color });
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
painter.strokeRuns([marker.points], {
|
|
159
|
+
stroke: marker.color,
|
|
160
|
+
lineWidth: marker.lineWidth,
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
function paintInk(painter, ink) {
|
|
167
|
+
for (const item of ink) {
|
|
168
|
+
if (item.kind === 'text')
|
|
169
|
+
paintText(painter, item);
|
|
170
|
+
else {
|
|
171
|
+
painter.strokeRuns([item.points], {
|
|
172
|
+
stroke: item.color,
|
|
173
|
+
lineWidth: item.lineWidth,
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
/** One node — card, ink, handles, grips — as the scene paints it; the
|
|
179
|
+
* scene is read for its zoom and palette only. */
|
|
180
|
+
export function paintNodeItem(painter, item, scene) {
|
|
181
|
+
paintNode(painter, item, scene);
|
|
182
|
+
}
|
|
183
|
+
function paintNode(painter, item, scene) {
|
|
184
|
+
if (item.custom) {
|
|
185
|
+
// Never batched: a type that draws its own body is drawing whatever it
|
|
186
|
+
// likes, in an order only it knows.
|
|
187
|
+
item.custom.type.paint({
|
|
188
|
+
node: item.custom.node,
|
|
189
|
+
rect: item.rect,
|
|
190
|
+
zoom: scene.viewport.zoom,
|
|
191
|
+
selected: item.selected,
|
|
192
|
+
hovered: item.hovered,
|
|
193
|
+
palette: scene.palette,
|
|
194
|
+
painter,
|
|
195
|
+
handles: item.custom.anchors,
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
else if (item.card) {
|
|
199
|
+
paintRect(painter, item.card.shape);
|
|
200
|
+
if (item.card.accent)
|
|
201
|
+
paintRect(painter, item.card.accent);
|
|
202
|
+
paintInk(painter, item.ink);
|
|
203
|
+
}
|
|
204
|
+
// Handles are drawn one disc at a time, and that is the measured answer
|
|
205
|
+
// rather than the obvious one. Batching them into a single path halved the
|
|
206
|
+
// requests and made the frame *slower*: a path's mask is its bounding box,
|
|
207
|
+
// so forty dots scattered across the pane rasterize to a paneful of mask —
|
|
208
|
+
// three quarters of a megabyte — where forty small ones cost a kilobyte
|
|
209
|
+
// each. Batching pays for the edges because an edge already spans that
|
|
210
|
+
// box; it does not pay for anything small and scattered.
|
|
211
|
+
for (const handle of item.handles) {
|
|
212
|
+
painter.circle(handle.at.x, handle.at.y, handle.radius, {
|
|
213
|
+
fill: handle.fill,
|
|
214
|
+
stroke: handle.stroke,
|
|
215
|
+
lineWidth: handle.lineWidth,
|
|
216
|
+
});
|
|
217
|
+
if (handle.label)
|
|
218
|
+
paintText(painter, handle.label);
|
|
219
|
+
}
|
|
220
|
+
for (const grip of item.grips)
|
|
221
|
+
paintRect(painter, grip);
|
|
222
|
+
}
|
|
223
|
+
/** The runs a grid variant is made of, when there is no faster path.
|
|
224
|
+
* `mark` is a mark's size on screen — the scene's is in graph units. */
|
|
225
|
+
function gridRuns(grid, mark) {
|
|
226
|
+
const { step, origin, region: r, variant } = grid;
|
|
227
|
+
// Alignment stays anchored to the viewport origin, so the region never
|
|
228
|
+
// changes where a dot falls.
|
|
229
|
+
const firstX = origin.x + Math.ceil((r.x - origin.x) / step) * step;
|
|
230
|
+
const firstY = origin.y + Math.ceil((r.y - origin.y) / step) * step;
|
|
231
|
+
const runs = [];
|
|
232
|
+
const dots = [];
|
|
233
|
+
if (variant === 'lines') {
|
|
234
|
+
for (let gx = firstX; gx <= r.x + r.width; gx += step) {
|
|
235
|
+
runs.push([
|
|
236
|
+
{ x: gx, y: r.y },
|
|
237
|
+
{ x: gx, y: r.y + r.height },
|
|
238
|
+
]);
|
|
239
|
+
}
|
|
240
|
+
for (let gy = firstY; gy <= r.y + r.height; gy += step) {
|
|
241
|
+
runs.push([
|
|
242
|
+
{ x: r.x, y: gy },
|
|
243
|
+
{ x: r.x + r.width, y: gy },
|
|
244
|
+
]);
|
|
245
|
+
}
|
|
246
|
+
return { runs, dots };
|
|
247
|
+
}
|
|
248
|
+
if (variant === 'cross') {
|
|
249
|
+
const arm = Math.max(2, mark * 3);
|
|
250
|
+
for (let gx = firstX; gx <= r.x + r.width; gx += step) {
|
|
251
|
+
for (let gy = firstY; gy <= r.y + r.height; gy += step) {
|
|
252
|
+
runs.push([
|
|
253
|
+
{ x: gx - arm, y: gy },
|
|
254
|
+
{ x: gx + arm, y: gy },
|
|
255
|
+
]);
|
|
256
|
+
runs.push([
|
|
257
|
+
{ x: gx, y: gy - arm },
|
|
258
|
+
{ x: gx, y: gy + arm },
|
|
259
|
+
]);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
return { runs, dots };
|
|
263
|
+
}
|
|
264
|
+
for (let gx = firstX; gx <= r.x + r.width; gx += step) {
|
|
265
|
+
for (let gy = firstY; gy <= r.y + r.height; gy += step) {
|
|
266
|
+
dots.push({ x: gx, y: gy });
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
return { runs, dots };
|
|
270
|
+
}
|
|
271
|
+
/** The grid, the slow and universal way. A mark's size arrives in graph
|
|
272
|
+
* units, so it is sized against the same zoom the pitch was. */
|
|
273
|
+
export function paintGrid(painter, grid, zoom) {
|
|
274
|
+
const { runs, dots } = gridRuns(grid, grid.size * zoom);
|
|
275
|
+
if (runs.length > 0) {
|
|
276
|
+
painter.strokeRuns(runs, { stroke: grid.color, lineWidth: 1 });
|
|
277
|
+
}
|
|
278
|
+
if (dots.length > 0) {
|
|
279
|
+
painter.dots(dots, Math.max(1, Math.round(grid.size * 2 * zoom)), grid.color);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Draw a scene.
|
|
284
|
+
*
|
|
285
|
+
* `grid` is the element's accelerated grid painter, if it has one: it
|
|
286
|
+
* answers false when it could not, and the runs path takes over.
|
|
287
|
+
*/
|
|
288
|
+
export function paintScene(painter, scene, grid) {
|
|
289
|
+
if (!scene.region)
|
|
290
|
+
return;
|
|
291
|
+
paintGround(painter, scene, grid);
|
|
292
|
+
paintGraph(painter, scene);
|
|
293
|
+
paintFloat(painter, scene);
|
|
294
|
+
}
|
|
295
|
+
/** Under the graph, pinned to the pane: the background and the grid. */
|
|
296
|
+
export function paintGround(painter, scene, grid) {
|
|
297
|
+
if (scene.background)
|
|
298
|
+
paintRect(painter, scene.background);
|
|
299
|
+
if (scene.grid && !(grid?.(painter, scene.grid) ?? false)) {
|
|
300
|
+
paintGrid(painter, scene.grid, scene.viewport.zoom);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
/** The graph: edges, nodes, and the line a connection gesture draws. What
|
|
304
|
+
* a 2D zoom gesture composites scaled from one paint of it. */
|
|
305
|
+
export function paintGraph(painter, scene) {
|
|
306
|
+
paintGraphEdges(painter, scene);
|
|
307
|
+
paintGraphNodes(painter, scene);
|
|
308
|
+
}
|
|
309
|
+
/** The graph's edges alone: the first half of `paintGraph`, which a drag's
|
|
310
|
+
* pictures take apart so the dragged node's edges go between them. */
|
|
311
|
+
export function paintGraphEdges(painter, scene) {
|
|
312
|
+
paintEdges(painter, scene.edges, scene.batch);
|
|
313
|
+
}
|
|
314
|
+
/** The graph's nodes, and the connection line over them: the second half. */
|
|
315
|
+
export function paintGraphNodes(painter, scene) {
|
|
316
|
+
for (const item of scene.nodes)
|
|
317
|
+
paintNode(painter, item, scene);
|
|
318
|
+
if (scene.connection) {
|
|
319
|
+
painter.polyline(scene.connection.points, {
|
|
320
|
+
stroke: scene.connection.stroke,
|
|
321
|
+
lineWidth: scene.connection.lineWidth,
|
|
322
|
+
dash: scene.connection.dash,
|
|
323
|
+
});
|
|
324
|
+
const tip = scene.connection.tip;
|
|
325
|
+
painter.circle(tip.at.x, tip.at.y, tip.radius, { fill: tip.fill });
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
/** Over the graph, pinned to the pane: the selection box and the panels. */
|
|
329
|
+
export function paintFloat(painter, scene) {
|
|
330
|
+
if (scene.selection)
|
|
331
|
+
paintRect(painter, scene.selection);
|
|
332
|
+
paintPanels(painter, scene);
|
|
333
|
+
}
|
|
334
|
+
/** The panels that float over the graph — the minimap and the controls —
|
|
335
|
+
* alone: the last of a scene's paint, and what `<Flow>` paints on its own
|
|
336
|
+
* canvases over mounted bodies (`FlowGraphNode.paintPanels`). */
|
|
337
|
+
export function paintPanels(painter, scene) {
|
|
338
|
+
if (scene.miniMap) {
|
|
339
|
+
const map = scene.miniMap;
|
|
340
|
+
paintRect(painter, map.panel);
|
|
341
|
+
painter.save();
|
|
342
|
+
painter.clipRect(map.panel.rect.x, map.panel.rect.y, map.panel.rect.width, map.panel.rect.height, 4);
|
|
343
|
+
// A run of square, unstroked nodes of one colour is one path and one
|
|
344
|
+
// fill — every node of a graph's minimap is usually one run, and a call
|
|
345
|
+
// apiece was 400 of them on every repaint of a drag. The scene says
|
|
346
|
+
// which run a node is in, worked out over the whole graph, so a pass
|
|
347
|
+
// that kept a few of a run fills them as the whole run's path does.
|
|
348
|
+
const nodes = map.nodes;
|
|
349
|
+
for (let i = 0; i < nodes.length;) {
|
|
350
|
+
const first = nodes[i];
|
|
351
|
+
let end = i + 1;
|
|
352
|
+
while (end < nodes.length && nodes[end].run === first.run)
|
|
353
|
+
end++;
|
|
354
|
+
if (first.batched) {
|
|
355
|
+
const shapes = [];
|
|
356
|
+
for (let k = i; k < end; k++) {
|
|
357
|
+
const { x, y, width, height } = nodes[k].rect;
|
|
358
|
+
shapes.push([
|
|
359
|
+
{ x, y },
|
|
360
|
+
{ x: x + width, y },
|
|
361
|
+
{ x: x + width, y: y + height },
|
|
362
|
+
{ x, y: y + height },
|
|
363
|
+
]);
|
|
364
|
+
}
|
|
365
|
+
painter.polygons(shapes, { fill: first.fill });
|
|
366
|
+
}
|
|
367
|
+
else {
|
|
368
|
+
paintRect(painter, first);
|
|
369
|
+
}
|
|
370
|
+
i = end;
|
|
371
|
+
}
|
|
372
|
+
paintRect(painter, map.view);
|
|
373
|
+
painter.restore();
|
|
374
|
+
}
|
|
375
|
+
if (scene.controls) {
|
|
376
|
+
paintRect(painter, scene.controls.panel);
|
|
377
|
+
for (const rule of scene.controls.rules) {
|
|
378
|
+
painter.strokeRuns([rule.points], {
|
|
379
|
+
stroke: rule.color,
|
|
380
|
+
lineWidth: rule.lineWidth,
|
|
381
|
+
});
|
|
382
|
+
}
|
|
383
|
+
// One path per button rather than one for the panel: a button's marks
|
|
384
|
+
// share a tiny mask, and the panel's would span every button.
|
|
385
|
+
for (const glyph of scene.controls.glyphs) {
|
|
386
|
+
painter.strokeRuns(glyph.runs, {
|
|
387
|
+
stroke: glyph.color,
|
|
388
|
+
lineWidth: glyph.lineWidth,
|
|
389
|
+
});
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
//# sourceMappingURL=paint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paint.js","sourceRoot":"","sources":["../../src/flow/paint.ts"],"names":[],"mappings":"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"}
|
package/dist/flow/paths.d.ts
CHANGED
|
@@ -15,7 +15,21 @@ export interface PathOptions {
|
|
|
15
15
|
/** Both ends are on the same node: route a loop rather than a line back
|
|
16
16
|
* on itself. */
|
|
17
17
|
loop?: boolean;
|
|
18
|
+
/** How far, in the endpoints' units, a chord may stray from the curve it
|
|
19
|
+
* stands for. {@link CURVE_TOLERANCE} when left out. */
|
|
20
|
+
tolerance?: number;
|
|
18
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* A fifth of a screen pixel: under a device pixel at a display scale of 2,
|
|
24
|
+
* so a curve's chords are invisible at any zoom. The count was a fixed
|
|
25
|
+
* `clamp(length / 6, 8, 48)` before — 48 chords of 10–20 px each for a
|
|
26
|
+
* curve across a zoomed-in pane, and no more samples in a tight bend than
|
|
27
|
+
* along a straight run, which is what a faceted S-bend looked like.
|
|
28
|
+
*/
|
|
29
|
+
export declare const CURVE_TOLERANCE = 0.2;
|
|
30
|
+
/** A `'bezier'` edge's two control points — the curve `edgePath` samples,
|
|
31
|
+
* exported so a test can hold the samples to the curve itself. */
|
|
32
|
+
export declare function bezierControls(source: PathEnd, target: PathEnd, scale: number): [XYPosition, XYPosition];
|
|
19
33
|
/** The polyline for one edge. */
|
|
20
34
|
export declare function edgePath(type: EdgeType | undefined, source: PathEnd, target: PathEnd, options: PathOptions): XYPosition[];
|
|
21
35
|
/** Total length of a polyline. */
|
package/dist/flow/paths.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/flow/paths.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/flow/paths.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEvE,MAAM,WAAW,OAAO;IACtB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,QAAQ,EAAE,cAAc,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B;qDACiD;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAC;IACd;oBACgB;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;6DACyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,MAAM,CAAC;AAgFnC;mEACmE;AACnE,wBAAgB,cAAc,CAC5B,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,MAAM,GACZ,CAAC,UAAU,EAAE,UAAU,CAAC,CAE1B;AA6JD,iCAAiC;AACjC,wBAAgB,QAAQ,CACtB,IAAI,EAAE,QAAQ,GAAG,SAAS,EAC1B,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,WAAW,GACnB,UAAU,EAAE,CAoCd;AAED,kCAAkC;AAClC,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,GAAG,MAAM,CAShE;AAED;+CAC+C;AAC/C,wBAAgB,eAAe,CAC7B,MAAM,EAAE,SAAS,UAAU,EAAE,EAC7B,QAAQ,EAAE,MAAM,GACf,UAAU,CAoBZ;AAED,2EAA2E;AAC3E,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,GAAG,MAAM,CAO9D;AAED,sEAAsE;AACtE,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,GAAG,MAAM,CAOhE;AAED;kEACkE;AAClE,wBAAgB,cAAc,CAC5B,MAAM,EAAE,SAAS,UAAU,EAAE,EAC7B,CAAC,EAAE,UAAU,GACZ,MAAM,CAmBR;AAED,yEAAyE;AACzE,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,GAAG;IACzD,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAYA;AAED;iCACiC;AACjC,wBAAgB,OAAO,CACrB,MAAM,EAAE,SAAS,UAAU,EAAE,EAC7B,MAAM,EAAE,MAAM,GACb,UAAU,EAAE,CAoBd"}
|
package/dist/flow/paths.js
CHANGED
|
@@ -5,13 +5,37 @@
|
|
|
5
5
|
// representation means one implementation of each rather than four;
|
|
6
6
|
// - ntk's `bezierCurveTo` flattens to segments anyway, so sampling costs
|
|
7
7
|
// nothing a curve was not already paying;
|
|
8
|
-
// - the sample count comes off the on-screen
|
|
9
|
-
//
|
|
8
|
+
// - the sample count comes off the curve's on-screen **shape** (Wang's
|
|
9
|
+
// formula, `segmentsFor`): enough that no chord strays more than
|
|
10
|
+
// `tolerance` screen pixels from the true curve, so a curve is as smooth
|
|
11
|
+
// as the zoom can show and no smoother — a gentle one gets a few
|
|
12
|
+
// segments, a tight bend zoomed in gets hundreds.
|
|
10
13
|
//
|
|
11
14
|
// Everything here works in whatever space its inputs are in. The pane builds
|
|
12
15
|
// paths in **screen** space, so the pixel-shaped constants it passes in
|
|
13
16
|
// (`scale`) are already multiplied by the zoom.
|
|
14
17
|
import { handleDirection } from './model.js';
|
|
18
|
+
/**
|
|
19
|
+
* A fifth of a screen pixel: under a device pixel at a display scale of 2,
|
|
20
|
+
* so a curve's chords are invisible at any zoom. The count was a fixed
|
|
21
|
+
* `clamp(length / 6, 8, 48)` before — 48 chords of 10–20 px each for a
|
|
22
|
+
* curve across a zoomed-in pane, and no more samples in a tight bend than
|
|
23
|
+
* along a straight run, which is what a faceted S-bend looked like.
|
|
24
|
+
*/
|
|
25
|
+
export const CURVE_TOLERANCE = 0.2;
|
|
26
|
+
/** Segments past this many are not worth their vertices whatever the
|
|
27
|
+
* formula says — a curve thousands of pixels long, most of it off screen. */
|
|
28
|
+
const MAX_SEGMENTS = 512;
|
|
29
|
+
/**
|
|
30
|
+
* Wang's formula: the fewest uniform-t segments that keep a degree-`degree`
|
|
31
|
+
* Bézier within `tolerance` of its chords. `m` is the largest second
|
|
32
|
+
* difference of the control points — how hard the curve bends, in the
|
|
33
|
+
* curve's own units — so it answers for shape and for zoom at once.
|
|
34
|
+
*/
|
|
35
|
+
function segmentsFor(m, degree, tolerance) {
|
|
36
|
+
const n = Math.ceil(Math.sqrt((degree * (degree - 1) * m) / (8 * Math.max(tolerance, 1e-3))));
|
|
37
|
+
return Math.max(1, Math.min(MAX_SEGMENTS, n));
|
|
38
|
+
}
|
|
15
39
|
const BEZIER_CURVATURE = 0.25;
|
|
16
40
|
/**
|
|
17
41
|
* How close two consecutive vertices may be before one of them is dropped.
|
|
@@ -70,6 +94,11 @@ function shoulder(distance, scale) {
|
|
|
70
94
|
// `z · sqrt(-d/z)` — the graph-space shoulder, scaled — reduces to.
|
|
71
95
|
return BEZIER_CURVATURE * 25 * Math.sqrt(scale * -distance);
|
|
72
96
|
}
|
|
97
|
+
/** A `'bezier'` edge's two control points — the curve `edgePath` samples,
|
|
98
|
+
* exported so a test can hold the samples to the curve itself. */
|
|
99
|
+
export function bezierControls(source, target, scale) {
|
|
100
|
+
return [control(source, target, scale), control(target, source, scale)];
|
|
101
|
+
}
|
|
73
102
|
function control(end, other, scale) {
|
|
74
103
|
switch (end.position) {
|
|
75
104
|
case 'left':
|
|
@@ -82,13 +111,9 @@ function control(end, other, scale) {
|
|
|
82
111
|
return { x: end.x, y: end.y + shoulder(other.y - end.y, scale) };
|
|
83
112
|
}
|
|
84
113
|
}
|
|
85
|
-
function sampleCubic(p0, c0, c1, p1) {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
const rough = Math.hypot(c0.x - p0.x, c0.y - p0.y) +
|
|
89
|
-
Math.hypot(c1.x - c0.x, c1.y - c0.y) +
|
|
90
|
-
Math.hypot(p1.x - c1.x, p1.y - c1.y);
|
|
91
|
-
const steps = Math.max(8, Math.min(48, Math.round(rough / 6)));
|
|
114
|
+
function sampleCubic(p0, c0, c1, p1, tolerance) {
|
|
115
|
+
const m = Math.max(Math.hypot(p0.x - 2 * c0.x + c1.x, p0.y - 2 * c0.y + c1.y), Math.hypot(c0.x - 2 * c1.x + p1.x, c0.y - 2 * c1.y + p1.y));
|
|
116
|
+
const steps = segmentsFor(m, 3, tolerance);
|
|
92
117
|
const points = [];
|
|
93
118
|
for (let i = 0; i <= steps; i++) {
|
|
94
119
|
const t = i / steps;
|
|
@@ -145,7 +170,7 @@ function stepPoints(source, target, offset) {
|
|
|
145
170
|
}
|
|
146
171
|
/** Replace each interior corner with a quadratic fillet, so a step edge
|
|
147
172
|
* reads as one stroke rather than as a staircase of butt joins. */
|
|
148
|
-
function roundCorners(points, radius) {
|
|
173
|
+
function roundCorners(points, radius, tolerance) {
|
|
149
174
|
if (points.length < 3 || radius <= 0)
|
|
150
175
|
return points;
|
|
151
176
|
const out = [points[0]];
|
|
@@ -170,7 +195,8 @@ function roundCorners(points, radius) {
|
|
|
170
195
|
x: corner.x + ((next.x - corner.x) / outLen) * r,
|
|
171
196
|
y: corner.y + ((next.y - corner.y) / outLen) * r,
|
|
172
197
|
};
|
|
173
|
-
|
|
198
|
+
const m = Math.hypot(start.x - 2 * corner.x + end.x, start.y - 2 * corner.y + end.y);
|
|
199
|
+
out.push(start, ...sampleQuadratic(start, corner, end, segmentsFor(m, 2, tolerance)));
|
|
174
200
|
}
|
|
175
201
|
out.push(points[points.length - 1]);
|
|
176
202
|
return dedupe(out);
|
|
@@ -178,7 +204,7 @@ function roundCorners(points, radius) {
|
|
|
178
204
|
/** An edge whose two ends are on the same node: bulge out along both handle
|
|
179
205
|
* directions, and sideways, so the loop encloses area instead of doubling
|
|
180
206
|
* back over itself. */
|
|
181
|
-
function loopPoints(source, target, offset) {
|
|
207
|
+
function loopPoints(source, target, offset, tolerance) {
|
|
182
208
|
const sd = handleDirection(source.position);
|
|
183
209
|
const td = handleDirection(target.position);
|
|
184
210
|
const reach = Math.max(28, offset * 2.6);
|
|
@@ -190,12 +216,13 @@ function loopPoints(source, target, offset) {
|
|
|
190
216
|
x: target.x + td.x * reach + td.y * reach * 0.7,
|
|
191
217
|
y: target.y + td.y * reach - td.x * reach * 0.7,
|
|
192
218
|
};
|
|
193
|
-
return dedupe(sampleCubic(source, c0, c1, target));
|
|
219
|
+
return dedupe(sampleCubic(source, c0, c1, target, tolerance));
|
|
194
220
|
}
|
|
195
221
|
/** The polyline for one edge. */
|
|
196
222
|
export function edgePath(type, source, target, options) {
|
|
197
|
-
if (options.loop)
|
|
198
|
-
return loopPoints(source, target, options.stepOffset);
|
|
223
|
+
if (options.loop) {
|
|
224
|
+
return loopPoints(source, target, options.stepOffset, options.tolerance ?? CURVE_TOLERANCE);
|
|
225
|
+
}
|
|
199
226
|
switch (type) {
|
|
200
227
|
case 'straight':
|
|
201
228
|
return dedupe([
|
|
@@ -205,11 +232,10 @@ export function edgePath(type, source, target, options) {
|
|
|
205
232
|
case 'step':
|
|
206
233
|
return stepPoints(source, target, options.stepOffset);
|
|
207
234
|
case 'smoothstep':
|
|
208
|
-
return roundCorners(stepPoints(source, target, options.stepOffset), options.radius);
|
|
235
|
+
return roundCorners(stepPoints(source, target, options.stepOffset), options.radius, options.tolerance ?? CURVE_TOLERANCE);
|
|
209
236
|
default: {
|
|
210
|
-
const c0 =
|
|
211
|
-
|
|
212
|
-
return dedupe(sampleCubic(source, c0, c1, target));
|
|
237
|
+
const [c0, c1] = bezierControls(source, target, options.scale);
|
|
238
|
+
return dedupe(sampleCubic(source, c0, c1, target, options.tolerance ?? CURVE_TOLERANCE));
|
|
213
239
|
}
|
|
214
240
|
}
|
|
215
241
|
}
|