@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 @@
|
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../../src/flow/gl/renderer.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,cAAc,EAAY,UAAU,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAU7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAa5C,OAAO,KAAK,EAAE,EAAE,EAAW,MAAM,cAAc,CAAC;AAGhD,qEAAqE;AACrE,MAAM,MAAM,eAAe,GAAG,IAAI,CAChC,cAAc,EACd,SAAS,GAAG,UAAU,GAAG,QAAQ,CAClC,CAAC;AAEF;+DAC+D;AAC/D,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,yDAAyD;AACzD,MAAM,WAAW,WAAW;IAC1B;yDACqD;IACrD,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACxB;qEACiE;IACjE,MAAM,EAAE,UAAU,CAAC;IACnB;;4EAEwE;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,OAAO,EAAE,SAAS,CAAC;IACnB;uEACmE;IACnE,KAAK,EAAE,MAAM,CAAC;IACd;2DACuD;IACvD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;CAC3B;AAYD,eAAO,MAAM,GAAG,QAAO,MAAkD,CAAC;AAoF1E,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAK;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;IAC/B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAU;IAC9B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAU;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;IAC/B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAU;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C;gFAC4E;IAC5E,OAAO,CAAC,UAAU,CAAS;IAE3B,YAAY,EAAE,EAAE,EAAE,EAoCjB;IAED;2EACuE;IACvE,IAAI,CACF,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,YAAY,EACpB,KAAK,CAAC,EAAE,UAAU,GACjB,eAAe,CAuBjB;IAED;2BACuB;IACvB,SAAS,CACP,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,YAAY,EACpB,KAAK,CAAC,EAAE,UAAU,GACjB,eAAe,CA0EjB;IAED;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,UAAU;IAgElB,OAAO,CAAC,KAAK;IAgCb,OAAO,CAAC,KAAK;IAiBb,OAAO,CAAC,MAAM;IA4Cd,OAAO,CAAC,QAAQ;IAehB,6DAA6D;IAC7D,OAAO,CAAC,OAAO;IAQf,OAAO,CAAC,aAAa;IAwCrB,OAAO,CAAC,aAAa;IA4BrB,OAAO,CAAC,QAAQ;IA2ChB,OAAO,CAAC,OAAO;IAgBf,OAAO,IAAI,IAAI,CAUd;CACF"}
|
|
@@ -0,0 +1,459 @@
|
|
|
1
|
+
import { BOX_STRIDE, LINE_STRIDE, ScenePacker, TRI_STRIDE } from './pack.js';
|
|
2
|
+
import { ATTRIBUTES, BOX_FRAGMENT, BOX_VERTEX, GRID_FRAGMENT, GRID_VERTEX, LINE_FRAGMENT, LINE_VERTEX, linkProgram, TRI_FRAGMENT, TRI_VERTEX, } from './shaders.js';
|
|
3
|
+
import { ColorCache } from './color.js';
|
|
4
|
+
const UNIFORMS = [
|
|
5
|
+
'u_origin',
|
|
6
|
+
'u_offset',
|
|
7
|
+
'u_scale',
|
|
8
|
+
'u_zoom',
|
|
9
|
+
'u_viewport',
|
|
10
|
+
];
|
|
11
|
+
/** The clock, through `globalThis`: `src/` compiles with `types: []`. */
|
|
12
|
+
const globals = globalThis;
|
|
13
|
+
export const now = () => globals.performance?.now() ?? Date.now();
|
|
14
|
+
const ZERO = { x: 0, y: 0 };
|
|
15
|
+
/** One layer: a packer, the three buffers its streams go into, and what it
|
|
16
|
+
* last packed. */
|
|
17
|
+
class Layer {
|
|
18
|
+
gl;
|
|
19
|
+
packer = new ScenePacker();
|
|
20
|
+
lines;
|
|
21
|
+
boxes;
|
|
22
|
+
tris;
|
|
23
|
+
packed = null;
|
|
24
|
+
scene = null;
|
|
25
|
+
/** Labels packed before their fields landed, not yet written in, and the
|
|
26
|
+
* atlas's generation they were last checked against. */
|
|
27
|
+
waiting = [];
|
|
28
|
+
checked = -1;
|
|
29
|
+
/** Labels drawn from their fields, and the atlas's count of dropped
|
|
30
|
+
* fields they were last checked against. */
|
|
31
|
+
drawn = [];
|
|
32
|
+
moved = -1;
|
|
33
|
+
constructor(gl) {
|
|
34
|
+
this.gl = gl;
|
|
35
|
+
this.lines = gl.createBuffer();
|
|
36
|
+
this.boxes = gl.createBuffer();
|
|
37
|
+
this.tris = gl.createBuffer();
|
|
38
|
+
}
|
|
39
|
+
/** Pack and upload; answers the bytes sent. Orphaning with `bufferData`
|
|
40
|
+
* rather than `bufferSubData`: the driver hands back fresh storage
|
|
41
|
+
* instead of waiting for the last frame's draws to finish reading the
|
|
42
|
+
* old. */
|
|
43
|
+
update(scene, layer, text) {
|
|
44
|
+
const gl = this.gl;
|
|
45
|
+
const packed = this.packer.pack(scene, layer, text);
|
|
46
|
+
this.packed = packed;
|
|
47
|
+
this.scene = scene;
|
|
48
|
+
this.waiting = packed.waiting;
|
|
49
|
+
this.checked = -1;
|
|
50
|
+
this.drawn = packed.drawn;
|
|
51
|
+
this.moved = -1;
|
|
52
|
+
let bytes = 0;
|
|
53
|
+
const put = (buf, data, used) => {
|
|
54
|
+
if (used === 0)
|
|
55
|
+
return;
|
|
56
|
+
const view = data.subarray(0, used);
|
|
57
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, buf);
|
|
58
|
+
gl.bufferData(gl.ARRAY_BUFFER, view, gl.DYNAMIC_DRAW);
|
|
59
|
+
bytes += view.byteLength;
|
|
60
|
+
};
|
|
61
|
+
put(this.lines, packed.lines, packed.lineCount * LINE_STRIDE);
|
|
62
|
+
put(this.boxes, packed.boxes, packed.boxCount * BOX_STRIDE);
|
|
63
|
+
put(this.tris, packed.tris, packed.triCount * TRI_STRIDE);
|
|
64
|
+
return bytes;
|
|
65
|
+
}
|
|
66
|
+
/** The box stream again, whole — orphaned as `update` does, so no draw
|
|
67
|
+
* of the last frame is waited for. Answers the bytes sent. */
|
|
68
|
+
uploadBoxes() {
|
|
69
|
+
const packed = this.packed;
|
|
70
|
+
if (!packed || packed.boxCount === 0)
|
|
71
|
+
return 0;
|
|
72
|
+
const gl = this.gl;
|
|
73
|
+
const view = packed.boxes.subarray(0, packed.boxCount * BOX_STRIDE);
|
|
74
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, this.boxes);
|
|
75
|
+
gl.bufferData(gl.ARRAY_BUFFER, view, gl.DYNAMIC_DRAW);
|
|
76
|
+
return view.byteLength;
|
|
77
|
+
}
|
|
78
|
+
/** Nothing to draw, until the next `update`. */
|
|
79
|
+
clear() {
|
|
80
|
+
this.packed = null;
|
|
81
|
+
this.scene = null;
|
|
82
|
+
this.waiting = [];
|
|
83
|
+
this.drawn = [];
|
|
84
|
+
this.checked = -1;
|
|
85
|
+
this.moved = -1;
|
|
86
|
+
}
|
|
87
|
+
dispose() {
|
|
88
|
+
for (const buffer of [this.lines, this.boxes, this.tris]) {
|
|
89
|
+
this.gl.deleteBuffer(buffer);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
export class FlowGlRenderer {
|
|
94
|
+
gl;
|
|
95
|
+
line;
|
|
96
|
+
box;
|
|
97
|
+
tri;
|
|
98
|
+
grid;
|
|
99
|
+
vao;
|
|
100
|
+
quad;
|
|
101
|
+
world;
|
|
102
|
+
lifted;
|
|
103
|
+
overlay;
|
|
104
|
+
colors = new ColorCache();
|
|
105
|
+
/** Whether this context has had the atlas's texture made in it — a new
|
|
106
|
+
* renderer is a new context, into which every raster is uploaded again. */
|
|
107
|
+
atlasBound = false;
|
|
108
|
+
constructor(gl) {
|
|
109
|
+
this.gl = gl;
|
|
110
|
+
this.line = linkProgram(gl, LINE_VERTEX, LINE_FRAGMENT, [
|
|
111
|
+
...UNIFORMS,
|
|
112
|
+
'u_phase',
|
|
113
|
+
]);
|
|
114
|
+
this.box = linkProgram(gl, BOX_VERTEX, BOX_FRAGMENT, [
|
|
115
|
+
...UNIFORMS,
|
|
116
|
+
'u_atlas',
|
|
117
|
+
'u_spread',
|
|
118
|
+
]);
|
|
119
|
+
// the label atlas is always on unit 0
|
|
120
|
+
gl.useProgram(this.box.program);
|
|
121
|
+
gl.uniform1i(this.box.uniforms.u_atlas, 0);
|
|
122
|
+
this.tri = linkProgram(gl, TRI_VERTEX, TRI_FRAGMENT, UNIFORMS);
|
|
123
|
+
this.grid = linkProgram(gl, GRID_VERTEX, GRID_FRAGMENT, [
|
|
124
|
+
...UNIFORMS,
|
|
125
|
+
'u_grid',
|
|
126
|
+
'u_mark',
|
|
127
|
+
'u_color',
|
|
128
|
+
]);
|
|
129
|
+
// A core profile draws nothing with no vertex array bound. One is enough:
|
|
130
|
+
// every range re-points the attributes at its own offset anyway, because
|
|
131
|
+
// GLSL ES 1.00 has no base instance to do it for us.
|
|
132
|
+
this.vao = gl.createVertexArray();
|
|
133
|
+
gl.bindVertexArray(this.vao);
|
|
134
|
+
this.quad = gl.createBuffer();
|
|
135
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, this.quad);
|
|
136
|
+
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([0, -1, 1, -1, 0, 1, 1, 1]), gl.STATIC_DRAW);
|
|
137
|
+
this.world = new Layer(gl);
|
|
138
|
+
this.lifted = new Layer(gl);
|
|
139
|
+
this.overlay = new Layer(gl);
|
|
140
|
+
}
|
|
141
|
+
/** A whole scene, in one layer, at no offset — what a test or a one-off
|
|
142
|
+
* render wants, and the same drawing the two-layer frame composes. */
|
|
143
|
+
draw(scene, target, atlas) {
|
|
144
|
+
const packStart = now();
|
|
145
|
+
const bytes = this.overlay.update(scene, 'all', atlas ? (t) => atlas.quad(t) : undefined);
|
|
146
|
+
const drawStart = now();
|
|
147
|
+
this.begin(target, atlas);
|
|
148
|
+
const packed = this.overlay.packed;
|
|
149
|
+
// Every marching edge in one scene has the same phase baked in.
|
|
150
|
+
const phase = scene.edges.find((e) => e.animated)?.dashOffset ?? 0;
|
|
151
|
+
const calls = this.ranges(packed.ranges, this.overlay, scene, ZERO, 1, phase, target);
|
|
152
|
+
this.gl.disable(this.gl.SCISSOR_TEST);
|
|
153
|
+
return this.stats(packStart, drawStart, bytes, calls, [packed], false);
|
|
154
|
+
}
|
|
155
|
+
/** One frame: the overlay under the world, the world at its offset, the
|
|
156
|
+
* overlay over it. */
|
|
157
|
+
drawFrame(frame, target, atlas) {
|
|
158
|
+
const packStart = now();
|
|
159
|
+
let bytes = 0;
|
|
160
|
+
const rebuilt = frame.world != null;
|
|
161
|
+
if (frame.world) {
|
|
162
|
+
atlas?.beginPack();
|
|
163
|
+
bytes += this.world.update(frame.world, 'world', atlas ? (t) => atlas.quad(t) : undefined);
|
|
164
|
+
}
|
|
165
|
+
if (frame.lifted) {
|
|
166
|
+
bytes += this.lifted.update(frame.lifted, 'world', atlas ? (t) => atlas.quad(t, true) : undefined);
|
|
167
|
+
}
|
|
168
|
+
else if (frame.lifted === null) {
|
|
169
|
+
this.lifted.clear();
|
|
170
|
+
}
|
|
171
|
+
bytes += this.overlay.update(frame.overlay, 'overlay');
|
|
172
|
+
if (atlas) {
|
|
173
|
+
bytes += this.landLabels(this.world, atlas);
|
|
174
|
+
bytes += this.landLabels(this.lifted, atlas, true);
|
|
175
|
+
}
|
|
176
|
+
const drawStart = now();
|
|
177
|
+
this.begin(target, atlas);
|
|
178
|
+
const over = this.overlay.packed;
|
|
179
|
+
let calls = this.ranges(over.ranges.slice(0, over.split), this.overlay, frame.overlay, ZERO, 1, 0, target);
|
|
180
|
+
// The world's edges, the lifted edges, the world's cards, the lifted
|
|
181
|
+
// cards: a dragged node's edges go under every card, and it over them.
|
|
182
|
+
const world = this.world.packed;
|
|
183
|
+
const lifted = this.lifted.packed;
|
|
184
|
+
const half = (layer, first) => {
|
|
185
|
+
const packed = layer.packed;
|
|
186
|
+
if (!packed || !layer.scene)
|
|
187
|
+
return;
|
|
188
|
+
calls += this.ranges(first
|
|
189
|
+
? packed.ranges.slice(0, packed.nodesAt)
|
|
190
|
+
: packed.ranges.slice(packed.nodesAt), layer, layer.scene, frame.offset, frame.zoom ?? 1, frame.phase, target);
|
|
191
|
+
};
|
|
192
|
+
half(this.world, true);
|
|
193
|
+
half(this.lifted, true);
|
|
194
|
+
half(this.world, false);
|
|
195
|
+
half(this.lifted, false);
|
|
196
|
+
calls += this.ranges(over.ranges.slice(over.split), this.overlay, frame.overlay, ZERO, 1, 0, target);
|
|
197
|
+
this.gl.disable(this.gl.SCISSOR_TEST);
|
|
198
|
+
const packs = [world, lifted, over].filter((p) => p != null);
|
|
199
|
+
return this.stats(packStart, drawStart, bytes, calls, packs, rebuilt);
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* The labels of a layer packed before their fields existed, drawn from
|
|
203
|
+
* them now they have landed: the flag, the place in the atlas and the
|
|
204
|
+
* quad written into each box, and the stream uploaded again.
|
|
205
|
+
* A label arriving used to be the world packed again once everything on
|
|
206
|
+
* screen had its field — every label at once, after all of them — and is
|
|
207
|
+
* now a few floats and one upload, as each lands. Answers the bytes sent.
|
|
208
|
+
*
|
|
209
|
+
* First, the other way: a label whose field the atlas dropped for one
|
|
210
|
+
* nearer the view — or set again somewhere else — is drawn as nothing
|
|
211
|
+
* and waits again, its field wanted from where it is. Only a full atlas
|
|
212
|
+
* drops anything, so a graph under the limit never walks this list.
|
|
213
|
+
*/
|
|
214
|
+
landLabels(layer, atlas, lifted = false) {
|
|
215
|
+
const packed = layer.packed;
|
|
216
|
+
if (!packed)
|
|
217
|
+
return 0;
|
|
218
|
+
const d = packed.boxes;
|
|
219
|
+
let lost = 0;
|
|
220
|
+
if (layer.moved !== atlas.moves) {
|
|
221
|
+
layer.moved = atlas.moves;
|
|
222
|
+
const kept = [];
|
|
223
|
+
for (const l of layer.drawn) {
|
|
224
|
+
if (atlas.slotOf(l.key) === l.slot) {
|
|
225
|
+
kept.push(l);
|
|
226
|
+
continue;
|
|
227
|
+
}
|
|
228
|
+
d[l.index * BOX_STRIDE + 6] = 2;
|
|
229
|
+
layer.waiting.push({ index: l.index, key: l.key, text: l.text });
|
|
230
|
+
atlas.want(l.key, l.text);
|
|
231
|
+
lost++;
|
|
232
|
+
}
|
|
233
|
+
if (lost > 0) {
|
|
234
|
+
layer.drawn = kept;
|
|
235
|
+
packed.gaps.text += lost;
|
|
236
|
+
layer.checked = -1;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
if (layer.waiting.length === 0 || layer.checked === atlas.generation) {
|
|
240
|
+
return lost > 0 ? layer.uploadBoxes() : 0;
|
|
241
|
+
}
|
|
242
|
+
layer.checked = atlas.generation;
|
|
243
|
+
const still = [];
|
|
244
|
+
let landed = 0;
|
|
245
|
+
for (const w of layer.waiting) {
|
|
246
|
+
const q = atlas.landing(w.key, w.text, lifted);
|
|
247
|
+
if (!q) {
|
|
248
|
+
still.push(w);
|
|
249
|
+
continue;
|
|
250
|
+
}
|
|
251
|
+
layer.drawn.push({
|
|
252
|
+
index: w.index,
|
|
253
|
+
key: q.key,
|
|
254
|
+
text: w.text,
|
|
255
|
+
slot: q.slot,
|
|
256
|
+
});
|
|
257
|
+
// the whole quad: one the pack did not measure was a box of no size
|
|
258
|
+
const at = w.index * BOX_STRIDE;
|
|
259
|
+
d[at] = q.x;
|
|
260
|
+
d[at + 1] = q.y;
|
|
261
|
+
d[at + 2] = q.w;
|
|
262
|
+
d[at + 3] = q.h;
|
|
263
|
+
d[at + 4] = q.margin;
|
|
264
|
+
d[at + 5] = q.page;
|
|
265
|
+
d[at + 6] = 1;
|
|
266
|
+
d[at + 7] = q.texel;
|
|
267
|
+
d[at + 12] = q.u0;
|
|
268
|
+
d[at + 13] = q.v0;
|
|
269
|
+
d[at + 14] = q.u1;
|
|
270
|
+
d[at + 15] = q.v1;
|
|
271
|
+
landed++;
|
|
272
|
+
}
|
|
273
|
+
if (landed === 0)
|
|
274
|
+
return lost > 0 ? layer.uploadBoxes() : 0;
|
|
275
|
+
layer.waiting = still;
|
|
276
|
+
packed.gaps.text -= landed;
|
|
277
|
+
return layer.uploadBoxes();
|
|
278
|
+
}
|
|
279
|
+
stats(packStart, drawStart, uploadBytes, drawCalls, packs, worldRebuilt) {
|
|
280
|
+
let lines = 0;
|
|
281
|
+
let boxes = 0;
|
|
282
|
+
let triangles = 0;
|
|
283
|
+
const gaps = { text: 0, custom: 0 };
|
|
284
|
+
for (const p of packs) {
|
|
285
|
+
lines += p.lineCount;
|
|
286
|
+
boxes += p.boxCount;
|
|
287
|
+
triangles += p.triCount / 3;
|
|
288
|
+
gaps.text += p.gaps.text;
|
|
289
|
+
gaps.custom += p.gaps.custom;
|
|
290
|
+
}
|
|
291
|
+
return {
|
|
292
|
+
packMs: drawStart - packStart,
|
|
293
|
+
drawMs: now() - drawStart,
|
|
294
|
+
drawCalls,
|
|
295
|
+
lines,
|
|
296
|
+
boxes,
|
|
297
|
+
triangles,
|
|
298
|
+
uploadBytes,
|
|
299
|
+
worldRebuilt,
|
|
300
|
+
gaps,
|
|
301
|
+
};
|
|
302
|
+
}
|
|
303
|
+
begin(target, atlas) {
|
|
304
|
+
const gl = this.gl;
|
|
305
|
+
if (atlas) {
|
|
306
|
+
atlas.bind(gl, !this.atlasBound);
|
|
307
|
+
this.atlasBound = true;
|
|
308
|
+
// how many texels a field's values span, for the label ramp
|
|
309
|
+
gl.useProgram(this.box.program);
|
|
310
|
+
gl.uniform1f(this.box.uniforms.u_spread, atlas.pad);
|
|
311
|
+
}
|
|
312
|
+
gl.bindVertexArray(this.vao);
|
|
313
|
+
gl.viewport(0, 0, target.width, target.height);
|
|
314
|
+
gl.disable(gl.DEPTH_TEST);
|
|
315
|
+
gl.enable(gl.BLEND);
|
|
316
|
+
// premultiplied, which is what every colour `./color.ts` hands back is
|
|
317
|
+
gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
|
|
318
|
+
}
|
|
319
|
+
ranges(ranges, layer, scene, offset, zoom, phase, target) {
|
|
320
|
+
let calls = 0;
|
|
321
|
+
for (const range of ranges) {
|
|
322
|
+
this.scissor(range.scissor, target);
|
|
323
|
+
if (range.kind === 'grid') {
|
|
324
|
+
if (!scene.grid)
|
|
325
|
+
continue;
|
|
326
|
+
this.drawGrid(scene, target);
|
|
327
|
+
}
|
|
328
|
+
else if (range.kind === 'line') {
|
|
329
|
+
this.drawInstances(this.line, layer.lines, LINE_STRIDE, range, offset, zoom, target, phase);
|
|
330
|
+
}
|
|
331
|
+
else if (range.kind === 'box') {
|
|
332
|
+
this.drawInstances(this.box, layer.boxes, BOX_STRIDE, range, offset, zoom, target);
|
|
333
|
+
}
|
|
334
|
+
else {
|
|
335
|
+
this.drawTriangles(layer.tris, range, offset, zoom, target);
|
|
336
|
+
}
|
|
337
|
+
calls++;
|
|
338
|
+
}
|
|
339
|
+
return calls;
|
|
340
|
+
}
|
|
341
|
+
uniforms(program, offset, zoom, target) {
|
|
342
|
+
const gl = this.gl;
|
|
343
|
+
gl.useProgram(program.program);
|
|
344
|
+
gl.uniform2f(program.uniforms.u_origin, target.origin.x, target.origin.y);
|
|
345
|
+
gl.uniform2f(program.uniforms.u_offset, offset.x, offset.y);
|
|
346
|
+
gl.uniform1f(program.uniforms.u_scale, target.scale);
|
|
347
|
+
gl.uniform1f(program.uniforms.u_zoom, zoom);
|
|
348
|
+
gl.uniform2f(program.uniforms.u_viewport, target.width, target.height);
|
|
349
|
+
}
|
|
350
|
+
/** The quad's corners at location 0, stepping per vertex. */
|
|
351
|
+
corners() {
|
|
352
|
+
const gl = this.gl;
|
|
353
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, this.quad);
|
|
354
|
+
gl.enableVertexAttribArray(ATTRIBUTES.a_corner);
|
|
355
|
+
gl.vertexAttribPointer(ATTRIBUTES.a_corner, 2, gl.FLOAT, false, 0, 0);
|
|
356
|
+
gl.vertexAttribDivisor(ATTRIBUTES.a_corner, 0);
|
|
357
|
+
}
|
|
358
|
+
drawInstances(program, buffer, stride, range, offset, zoom, target, phase) {
|
|
359
|
+
const gl = this.gl;
|
|
360
|
+
this.uniforms(program, offset, zoom, target);
|
|
361
|
+
// only the line program declares it, and only after `uniforms` has made
|
|
362
|
+
// that program current
|
|
363
|
+
if (phase !== undefined)
|
|
364
|
+
gl.uniform1f(program.uniforms.u_phase, phase);
|
|
365
|
+
this.corners();
|
|
366
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
|
|
367
|
+
const bytes = stride * 4;
|
|
368
|
+
const base = range.first * bytes;
|
|
369
|
+
const slots = [
|
|
370
|
+
ATTRIBUTES.a_i0,
|
|
371
|
+
ATTRIBUTES.a_i1,
|
|
372
|
+
ATTRIBUTES.a_i2,
|
|
373
|
+
ATTRIBUTES.a_i3,
|
|
374
|
+
];
|
|
375
|
+
slots.forEach((location, i) => {
|
|
376
|
+
gl.enableVertexAttribArray(location);
|
|
377
|
+
gl.vertexAttribPointer(location, 4, gl.FLOAT, false, bytes, base + i * 16);
|
|
378
|
+
gl.vertexAttribDivisor(location, 1);
|
|
379
|
+
});
|
|
380
|
+
gl.drawArraysInstanced(gl.TRIANGLE_STRIP, 0, 4, range.count);
|
|
381
|
+
}
|
|
382
|
+
drawTriangles(buffer, range, offset, zoom, target) {
|
|
383
|
+
const gl = this.gl;
|
|
384
|
+
this.uniforms(this.tri, offset, zoom, target);
|
|
385
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
|
|
386
|
+
const bytes = TRI_STRIDE * 4;
|
|
387
|
+
// Per vertex, not per instance: a triangle is three records.
|
|
388
|
+
gl.enableVertexAttribArray(ATTRIBUTES.a_corner);
|
|
389
|
+
gl.vertexAttribPointer(ATTRIBUTES.a_corner, 2, gl.FLOAT, false, bytes, 0);
|
|
390
|
+
gl.vertexAttribDivisor(ATTRIBUTES.a_corner, 0);
|
|
391
|
+
gl.enableVertexAttribArray(ATTRIBUTES.a_i0);
|
|
392
|
+
gl.vertexAttribPointer(ATTRIBUTES.a_i0, 4, gl.FLOAT, false, bytes, 8);
|
|
393
|
+
gl.vertexAttribDivisor(ATTRIBUTES.a_i0, 0);
|
|
394
|
+
for (const location of [
|
|
395
|
+
ATTRIBUTES.a_i1,
|
|
396
|
+
ATTRIBUTES.a_i2,
|
|
397
|
+
ATTRIBUTES.a_i3,
|
|
398
|
+
]) {
|
|
399
|
+
gl.disableVertexAttribArray(location);
|
|
400
|
+
}
|
|
401
|
+
gl.drawArrays(gl.TRIANGLES, range.first, range.count);
|
|
402
|
+
}
|
|
403
|
+
drawGrid(scene, target) {
|
|
404
|
+
const gl = this.gl;
|
|
405
|
+
const grid = scene.grid;
|
|
406
|
+
this.uniforms(this.grid, ZERO, 1, target);
|
|
407
|
+
this.corners();
|
|
408
|
+
for (const location of [
|
|
409
|
+
ATTRIBUTES.a_i0,
|
|
410
|
+
ATTRIBUTES.a_i1,
|
|
411
|
+
ATTRIBUTES.a_i2,
|
|
412
|
+
ATTRIBUTES.a_i3,
|
|
413
|
+
]) {
|
|
414
|
+
gl.disableVertexAttribArray(location);
|
|
415
|
+
}
|
|
416
|
+
const zoom = scene.viewport.zoom;
|
|
417
|
+
const variant = grid.variant === 'lines' ? 1 : grid.variant === 'cross' ? 2 : 0;
|
|
418
|
+
// A mark's on-screen size, the 2D path's own arithmetic: a dot is
|
|
419
|
+
// `size * 2 * zoom` across (at least a pixel) and a cross's arm
|
|
420
|
+
// `size * 3 * zoom` (at least two).
|
|
421
|
+
const mark = variant === 0
|
|
422
|
+
? Math.max(1, Math.round(grid.size * 2 * zoom))
|
|
423
|
+
: variant === 2
|
|
424
|
+
? Math.max(2, grid.size * 3 * zoom)
|
|
425
|
+
: 1;
|
|
426
|
+
const color = this.colors.get(grid.color);
|
|
427
|
+
gl.uniform3f(this.grid.uniforms.u_grid, grid.origin.x, grid.origin.y, grid.step);
|
|
428
|
+
gl.uniform2f(this.grid.uniforms.u_mark, variant, mark);
|
|
429
|
+
gl.uniform4f(this.grid.uniforms.u_color, color[0], color[1], color[2], color[3]);
|
|
430
|
+
gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
|
|
431
|
+
}
|
|
432
|
+
scissor(rect, target) {
|
|
433
|
+
const gl = this.gl;
|
|
434
|
+
if (!rect) {
|
|
435
|
+
gl.disable(gl.SCISSOR_TEST);
|
|
436
|
+
return;
|
|
437
|
+
}
|
|
438
|
+
const s = target.scale;
|
|
439
|
+
const x = Math.floor((rect.x - target.origin.x) * s);
|
|
440
|
+
const y = Math.floor((rect.y - target.origin.y) * s);
|
|
441
|
+
const w = Math.ceil(rect.width * s);
|
|
442
|
+
const h = Math.ceil(rect.height * s);
|
|
443
|
+
gl.enable(gl.SCISSOR_TEST);
|
|
444
|
+
// GL's scissor counts up from the bottom; the scene counts down.
|
|
445
|
+
gl.scissor(x, target.height - (y + h), w, h);
|
|
446
|
+
}
|
|
447
|
+
dispose() {
|
|
448
|
+
const gl = this.gl;
|
|
449
|
+
gl.deleteBuffer(this.quad);
|
|
450
|
+
this.world.dispose();
|
|
451
|
+
this.lifted.dispose();
|
|
452
|
+
this.overlay.dispose();
|
|
453
|
+
for (const program of [this.line, this.box, this.tri, this.grid]) {
|
|
454
|
+
gl.deleteProgram(program.program);
|
|
455
|
+
}
|
|
456
|
+
gl.deleteVertexArray(this.vao);
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
//# sourceMappingURL=renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../../src/flow/gl/renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/** Attribute locations, shared so one quad buffer feeds every program. */
|
|
2
|
+
export declare const ATTRIBUTES: {
|
|
3
|
+
readonly a_corner: 0;
|
|
4
|
+
readonly a_i0: 1;
|
|
5
|
+
readonly a_i1: 2;
|
|
6
|
+
readonly a_i2: 3;
|
|
7
|
+
readonly a_i3: 4;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* A line segment as a capsule: the quad round it, widened by half the line
|
|
11
|
+
* plus a pixel of fringe, shaded by distance to the segment.
|
|
12
|
+
*
|
|
13
|
+
* Clamping the pixel's position along the segment before measuring is what
|
|
14
|
+
* gives round caps and round joins for nothing — two consecutive capsules
|
|
15
|
+
* overlap in exactly the disc a round join is — and the same distance is the
|
|
16
|
+
* antialiasing ramp. The cost of that is a translucent line, which would lay
|
|
17
|
+
* its colour down twice where two capsules overlap; every line a graph draws
|
|
18
|
+
* by default is opaque, and `src/maps/gl/shaders.ts` has the stencil pass
|
|
19
|
+
* that fixes it if one ever is not.
|
|
20
|
+
*
|
|
21
|
+
* Instance: a_i0 = ends, a_i1 = half-width, distance along at the first end,
|
|
22
|
+
* dash on, dash off; a_i2 = dash offset, and 1 where the dash marches — by
|
|
23
|
+
* `u_phase`, the timer's, in logical pixels; a_i3 = colour.
|
|
24
|
+
*/
|
|
25
|
+
export declare const LINE_VERTEX = "precision highp float;\nuniform vec2 u_origin;\nuniform vec2 u_offset;\nuniform float u_scale;\nuniform float u_zoom;\nuniform vec2 u_viewport;\nvec2 device(vec2 logical) {\n return (logical * u_zoom + u_offset - u_origin) * u_scale;\n}\nvec4 clip(vec2 d) {\n return vec4(d.x / u_viewport.x * 2.0 - 1.0,\n 1.0 - d.y / u_viewport.y * 2.0, 0.0, 1.0);\n}\n\nuniform float u_phase;\nattribute vec2 a_corner;\nattribute vec4 a_i0;\nattribute vec4 a_i1;\nattribute vec4 a_i2;\nattribute vec4 a_i3;\nvarying vec2 v_local;\nvarying float v_len;\nvarying float v_half;\nvarying float v_along;\nvarying vec3 v_dash;\nvarying vec4 v_color;\nvoid main() {\n vec2 a = device(a_i0.xy);\n vec2 b = device(a_i0.zw);\n vec2 d = b - a;\n float len = length(d);\n vec2 t = len > 0.0001 ? d / len : vec2(1.0, 0.0);\n vec2 n = vec2(-t.y, t.x);\n float half_ = a_i1.x * u_zoom * u_scale;\n float e = half_ + 1.0;\n float along = mix(-e, len + e, a_corner.x);\n float across = a_corner.y * e;\n v_local = vec2(along, across);\n v_len = len;\n v_half = half_;\n v_along = a_i1.y * u_zoom * u_scale + along;\n // a marching dash takes the timer's phase from a uniform, so a tick moves\n // every dash on the GPU without a byte uploaded \u2014 and the phase is the\n // view's, already at its zoom, where the pattern is the world's\n v_dash = (vec3(a_i1.z, a_i1.w, a_i2.x) * u_zoom +\n vec3(0.0, 0.0, a_i2.y * u_phase)) * u_scale;\n v_color = a_i3;\n gl_Position = clip(a + t * along + n * across);\n}\n";
|
|
26
|
+
export declare const LINE_FRAGMENT = "precision highp float;\nvarying vec2 v_local;\nvarying float v_len;\nvarying float v_half;\nvarying float v_along;\nvarying vec3 v_dash;\nvarying vec4 v_color;\nvoid main() {\n float x = clamp(v_local.x, 0.0, v_len);\n float dist = length(vec2(v_local.x - x, v_local.y));\n float alpha = clamp(v_half - dist + 0.5, 0.0, 1.0);\n float period = v_dash.x + v_dash.y;\n if (period > 0.0) {\n // Where in the pattern this pixel is, the canvas way: the offset shifts\n // the pattern's start along the line. Covered by how far the pixel is\n // inside the nearer end of its dash, so a dash's ends antialias too.\n float m = mod(v_along + v_dash.z, period);\n alpha *= clamp(min(m, v_dash.x - m) + 0.5, 0.0, 1.0);\n }\n if (alpha <= 0.0) discard;\n gl_FragColor = v_color * alpha;\n}\n";
|
|
27
|
+
/**
|
|
28
|
+
* A rounded box: fill, border and antialiased edge out of one distance.
|
|
29
|
+
*
|
|
30
|
+
* The 2D painter fills the whole box and strokes a border *inset* by half
|
|
31
|
+
* its pen (`../draw.ts`), so the ink band runs from the edge inward by the
|
|
32
|
+
* pen's width with the fill beneath it. This composites the same way — the
|
|
33
|
+
* border *over* the fill across the band, not in place of it — which only
|
|
34
|
+
* differs when the border is translucent, and a hovered card's is.
|
|
35
|
+
*
|
|
36
|
+
* A disc is a box whose side is twice its corner radius, which is why
|
|
37
|
+
* handles are drawn here too — and a label is a box that samples its
|
|
38
|
+
* distance field in the atlas (`./text.ts`) instead, flagged in `a_i1.z`,
|
|
39
|
+
* which is what keeps every label in the box stream at exactly the place in
|
|
40
|
+
* the order the 2D painter draws it.
|
|
41
|
+
*
|
|
42
|
+
* Instance: a_i0 = x, y, width, height; a_i1 = corner radius, border width;
|
|
43
|
+
* a_i2 = fill; a_i3 = border colour. For a label: a_i0 = the text's corner
|
|
44
|
+
* and the quad's size; a_i1 = the quad's margin before that corner, its
|
|
45
|
+
* field's page, 1, and the logical pixels a field texel covers; a_i2 = ink; a_i3 = its rect
|
|
46
|
+
* in the atlas.
|
|
47
|
+
*/
|
|
48
|
+
export declare const BOX_VERTEX = "precision highp float;\nuniform vec2 u_origin;\nuniform vec2 u_offset;\nuniform float u_scale;\nuniform float u_zoom;\nuniform vec2 u_viewport;\nvec2 device(vec2 logical) {\n return (logical * u_zoom + u_offset - u_origin) * u_scale;\n}\nvec4 clip(vec2 d) {\n return vec4(d.x / u_viewport.x * 2.0 - 1.0,\n 1.0 - d.y / u_viewport.y * 2.0, 0.0, 1.0);\n}\n\nattribute vec2 a_corner;\nattribute vec4 a_i0;\nattribute vec4 a_i1;\nattribute vec4 a_i2;\nattribute vec4 a_i3;\nvarying vec2 v_local;\nvarying vec2 v_half;\nvarying vec2 v_shape;\nvarying vec4 v_fill;\nvarying vec4 v_border;\nvarying vec2 v_uv;\nvarying float v_text;\nvoid main() {\n vec2 corner = vec2(a_corner.x, a_corner.y * 0.5 + 0.5);\n v_text = a_i1.z;\n if (a_i1.z > 1.5) {\n // a label whose field is still being set: nothing, until it lands\n gl_Position = vec4(0.0, 0.0, 2.0, 1.0);\n return;\n }\n if (a_i1.z > 0.5) {\n // A label: its field, scaled to the size it is drawn at. The text's\n // corner goes on the device grid *after* the pan's offset, which is\n // where the grid is \u2014 the 2D painter rounds the same corner \u2014 and the\n // quad reaches its margin before it.\n float k = u_zoom * u_scale;\n vec2 origin = floor(device(a_i0.xy) + 0.5) - a_i1.x * k;\n v_uv = mix(a_i3.xy, a_i3.zw, corner);\n v_fill = a_i2;\n v_local = vec2(0.0);\n v_half = vec2(0.0);\n // device pixels a field texel covers, for the fragment's ramp, and the\n // page its field is on\n v_shape = vec2(a_i1.w * k, a_i1.y);\n v_border = vec4(0.0);\n gl_Position = clip(origin + corner * a_i0.zw * k);\n return;\n }\n v_uv = vec2(0.0);\n vec2 size = a_i0.zw * u_zoom * u_scale;\n vec2 half_ = size * 0.5;\n // a pixel of fringe all round, for the antialiased edge to fade into\n vec2 local = (corner - 0.5) * (size + 2.0);\n v_local = local;\n v_half = half_;\n v_shape = vec2(a_i1.x, a_i1.y) * u_zoom * u_scale;\n v_fill = a_i2;\n v_border = a_i3;\n gl_Position = clip(device(a_i0.xy) + half_ + local);\n}\n";
|
|
49
|
+
/**
|
|
50
|
+
* A label's field says how far a pixel is from the glyphs' edge — in texels,
|
|
51
|
+
* `u_spread` of them across the byte range, and so in device pixels once
|
|
52
|
+
* scaled by how many a texel covers — and ink is that distance ramped across
|
|
53
|
+
* one device pixel, whatever size the label is drawn at.
|
|
54
|
+
*/
|
|
55
|
+
export declare const BOX_FRAGMENT: string;
|
|
56
|
+
/** A flat triangle: the fill of a closed arrowhead. Its edge is
|
|
57
|
+
* antialiased by the hairline `./pack.ts` strokes round it. */
|
|
58
|
+
export declare const TRI_VERTEX = "precision highp float;\nuniform vec2 u_origin;\nuniform vec2 u_offset;\nuniform float u_scale;\nuniform float u_zoom;\nuniform vec2 u_viewport;\nvec2 device(vec2 logical) {\n return (logical * u_zoom + u_offset - u_origin) * u_scale;\n}\nvec4 clip(vec2 d) {\n return vec4(d.x / u_viewport.x * 2.0 - 1.0,\n 1.0 - d.y / u_viewport.y * 2.0, 0.0, 1.0);\n}\n\nattribute vec2 a_corner;\nattribute vec4 a_i0;\nvarying vec4 v_color;\nvoid main() {\n v_color = a_i0;\n gl_Position = clip(device(a_corner));\n}\n";
|
|
59
|
+
export declare const TRI_FRAGMENT = "precision mediump float;\nvarying vec4 v_color;\nvoid main() {\n gl_FragColor = v_color;\n}\n";
|
|
60
|
+
/**
|
|
61
|
+
* The grid, worked out per pixel: no tile, no pattern and no pile of runs —
|
|
62
|
+
* and none of the 2D path's integral-pitch restriction, because nothing here
|
|
63
|
+
* is a pixmap that has to repeat on whole pixels.
|
|
64
|
+
*
|
|
65
|
+
* Distances are to the nearest grid point in each axis, in logical pixels,
|
|
66
|
+
* and each mark's coverage ramps across one *device* pixel, so a dot is as
|
|
67
|
+
* sharp as the panel draws it.
|
|
68
|
+
*/
|
|
69
|
+
export declare const GRID_VERTEX = "precision highp float;\nattribute vec2 a_corner;\nuniform vec2 u_viewport;\nvarying vec2 v_device;\nvoid main() {\n v_device = vec2(a_corner.x * u_viewport.x,\n (a_corner.y * 0.5 + 0.5) * u_viewport.y);\n gl_Position = vec4(a_corner.x * 2.0 - 1.0, -a_corner.y, 0.0, 1.0);\n}\n";
|
|
70
|
+
export declare const GRID_FRAGMENT = "precision highp float;\nuniform vec2 u_origin;\nuniform float u_scale;\n// the grid's origin (logical window pixels) and its pitch on screen\nuniform vec3 u_grid;\n// 0 dots, 1 lines, 2 cross; then a mark's size on screen (logical)\nuniform vec2 u_mark;\nuniform vec4 u_color;\nvarying vec2 v_device;\nfloat cover(float edge, float dist) {\n return clamp((edge - dist) * u_scale + 0.5, 0.0, 1.0);\n}\nvoid main() {\n vec2 logical = v_device / u_scale + u_origin;\n float step = u_grid.z;\n vec2 rel = logical - u_grid.xy;\n vec2 dist = abs(mod(rel + step * 0.5, step) - step * 0.5);\n float a;\n if (u_mark.x < 0.5) {\n float h = u_mark.y * 0.5;\n a = cover(h, dist.x) * cover(h, dist.y);\n } else if (u_mark.x < 1.5) {\n a = max(cover(0.5, dist.x), cover(0.5, dist.y));\n } else {\n float arm = u_mark.y;\n a = max(cover(0.5, dist.x) * cover(arm, dist.y),\n cover(0.5, dist.y) * cover(arm, dist.x));\n }\n if (a <= 0.0) discard;\n gl_FragColor = u_color * a;\n}\n";
|
|
71
|
+
export type GL = any;
|
|
72
|
+
/** A linked program and its uniform locations, looked up once. */
|
|
73
|
+
export interface Program {
|
|
74
|
+
program: unknown;
|
|
75
|
+
uniforms: Record<string, unknown>;
|
|
76
|
+
}
|
|
77
|
+
/** Compile, bind the shared locations, link, and look the uniforms up. */
|
|
78
|
+
export declare function linkProgram(gl: GL, vertex: string, fragment: string, uniforms: readonly string[]): Program;
|
|
79
|
+
//# sourceMappingURL=shaders.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shaders.d.ts","sourceRoot":"","sources":["../../../src/flow/gl/shaders.ts"],"names":[],"mappings":"AA4BA,0EAA0E;AAC1E,eAAO,MAAM,UAAU;aACrB,QAAQ,EAAE,CAAC;aACX,IAAI,EAAE,CAAC;aACP,IAAI,EAAE,CAAC;aACP,IAAI,EAAE,CAAC;aACP,IAAI,EAAE,CAAC;CACC,CAAC;AAiBX;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,WAAW,w/CAoCvB,CAAC;AAEF,eAAO,MAAM,aAAa,syBAsBzB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,UAAU,ygEAmDtB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,YAAY,QAqCxB,CAAC;AAEF;gEACgE;AAChE,eAAO,MAAM,UAAU,4gBAQtB,CAAC;AAEF,eAAO,MAAM,YAAY,mGAKxB,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,4SASvB,CAAC;AAEF,eAAO,MAAM,aAAa,++BA+BzB,CAAC;AAGF,MAAM,MAAM,EAAE,GAAG,GAAG,CAAC;AAErB,kEAAkE;AAClE,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAcD,0EAA0E;AAC1E,wBAAgB,WAAW,CACzB,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,SAAS,MAAM,EAAE,GAC1B,OAAO,CAsBT"}
|