@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,346 @@
|
|
|
1
|
+
// The GL renderer's four programs.
|
|
2
|
+
//
|
|
3
|
+
// GLSL ES 1.00, for the reason `src/maps/gl/shaders.ts` gives: it is the one
|
|
4
|
+
// dialect both direct backends compile, Apple's GL 4.1 core through
|
|
5
|
+
// ARB_ES2_compatibility and every Linux GLES driver natively.
|
|
6
|
+
//
|
|
7
|
+
// Every program shares one coordinate contract, and it is the whole of what
|
|
8
|
+
// the vertex shaders agree on. Positions arrive in the scene's units —
|
|
9
|
+
// **logical window pixels**, what `../scene.ts` builds in — and leave in
|
|
10
|
+
// clip space via device pixels:
|
|
11
|
+
//
|
|
12
|
+
// device = (logical * u_zoom + u_offset - u_origin) * u_scale
|
|
13
|
+
//
|
|
14
|
+
// where `u_origin` is where the surface's top-left sits in the window (the
|
|
15
|
+
// pane's content box, which the surface covers exactly) and `u_scale` is the
|
|
16
|
+
// display scale. `u_offset` is the pan: the graph's world is built at a
|
|
17
|
+
// pinned origin and moved here, so a pan is this one uniform and nothing
|
|
18
|
+
// else (`./renderer.ts`). `u_zoom` is the part of a zoom the world was not
|
|
19
|
+
// built at — 1 at rest, and while a zoom gesture moves, the view's zoom over
|
|
20
|
+
// the one the world on the GPU was built for, so a step of the gesture is a
|
|
21
|
+
// uniform too, and every length an instance carries is multiplied by it
|
|
22
|
+
// with its position. The overlay, pinned to the pane and built every frame,
|
|
23
|
+
// draws with no offset and a zoom of 1. So the one multiply `../draw.ts`
|
|
24
|
+
// does on the way to the 2D context happens here, per vertex, and every
|
|
25
|
+
// antialiasing ramp below is measured in device pixels — which is what makes
|
|
26
|
+
// a 1px line one pixel of coverage on any panel.
|
|
27
|
+
import { SDF_EDGE, SDF_INK_BIAS_PX } from '../../internal/sdf.js';
|
|
28
|
+
/** Attribute locations, shared so one quad buffer feeds every program. */
|
|
29
|
+
export const ATTRIBUTES = {
|
|
30
|
+
a_corner: 0,
|
|
31
|
+
a_i0: 1,
|
|
32
|
+
a_i1: 2,
|
|
33
|
+
a_i2: 3,
|
|
34
|
+
a_i3: 4,
|
|
35
|
+
};
|
|
36
|
+
const PRELUDE = `precision highp float;
|
|
37
|
+
uniform vec2 u_origin;
|
|
38
|
+
uniform vec2 u_offset;
|
|
39
|
+
uniform float u_scale;
|
|
40
|
+
uniform float u_zoom;
|
|
41
|
+
uniform vec2 u_viewport;
|
|
42
|
+
vec2 device(vec2 logical) {
|
|
43
|
+
return (logical * u_zoom + u_offset - u_origin) * u_scale;
|
|
44
|
+
}
|
|
45
|
+
vec4 clip(vec2 d) {
|
|
46
|
+
return vec4(d.x / u_viewport.x * 2.0 - 1.0,
|
|
47
|
+
1.0 - d.y / u_viewport.y * 2.0, 0.0, 1.0);
|
|
48
|
+
}
|
|
49
|
+
`;
|
|
50
|
+
/**
|
|
51
|
+
* A line segment as a capsule: the quad round it, widened by half the line
|
|
52
|
+
* plus a pixel of fringe, shaded by distance to the segment.
|
|
53
|
+
*
|
|
54
|
+
* Clamping the pixel's position along the segment before measuring is what
|
|
55
|
+
* gives round caps and round joins for nothing — two consecutive capsules
|
|
56
|
+
* overlap in exactly the disc a round join is — and the same distance is the
|
|
57
|
+
* antialiasing ramp. The cost of that is a translucent line, which would lay
|
|
58
|
+
* its colour down twice where two capsules overlap; every line a graph draws
|
|
59
|
+
* by default is opaque, and `src/maps/gl/shaders.ts` has the stencil pass
|
|
60
|
+
* that fixes it if one ever is not.
|
|
61
|
+
*
|
|
62
|
+
* Instance: a_i0 = ends, a_i1 = half-width, distance along at the first end,
|
|
63
|
+
* dash on, dash off; a_i2 = dash offset, and 1 where the dash marches — by
|
|
64
|
+
* `u_phase`, the timer's, in logical pixels; a_i3 = colour.
|
|
65
|
+
*/
|
|
66
|
+
export const LINE_VERTEX = `${PRELUDE}
|
|
67
|
+
uniform float u_phase;
|
|
68
|
+
attribute vec2 a_corner;
|
|
69
|
+
attribute vec4 a_i0;
|
|
70
|
+
attribute vec4 a_i1;
|
|
71
|
+
attribute vec4 a_i2;
|
|
72
|
+
attribute vec4 a_i3;
|
|
73
|
+
varying vec2 v_local;
|
|
74
|
+
varying float v_len;
|
|
75
|
+
varying float v_half;
|
|
76
|
+
varying float v_along;
|
|
77
|
+
varying vec3 v_dash;
|
|
78
|
+
varying vec4 v_color;
|
|
79
|
+
void main() {
|
|
80
|
+
vec2 a = device(a_i0.xy);
|
|
81
|
+
vec2 b = device(a_i0.zw);
|
|
82
|
+
vec2 d = b - a;
|
|
83
|
+
float len = length(d);
|
|
84
|
+
vec2 t = len > 0.0001 ? d / len : vec2(1.0, 0.0);
|
|
85
|
+
vec2 n = vec2(-t.y, t.x);
|
|
86
|
+
float half_ = a_i1.x * u_zoom * u_scale;
|
|
87
|
+
float e = half_ + 1.0;
|
|
88
|
+
float along = mix(-e, len + e, a_corner.x);
|
|
89
|
+
float across = a_corner.y * e;
|
|
90
|
+
v_local = vec2(along, across);
|
|
91
|
+
v_len = len;
|
|
92
|
+
v_half = half_;
|
|
93
|
+
v_along = a_i1.y * u_zoom * u_scale + along;
|
|
94
|
+
// a marching dash takes the timer's phase from a uniform, so a tick moves
|
|
95
|
+
// every dash on the GPU without a byte uploaded — and the phase is the
|
|
96
|
+
// view's, already at its zoom, where the pattern is the world's
|
|
97
|
+
v_dash = (vec3(a_i1.z, a_i1.w, a_i2.x) * u_zoom +
|
|
98
|
+
vec3(0.0, 0.0, a_i2.y * u_phase)) * u_scale;
|
|
99
|
+
v_color = a_i3;
|
|
100
|
+
gl_Position = clip(a + t * along + n * across);
|
|
101
|
+
}
|
|
102
|
+
`;
|
|
103
|
+
export const LINE_FRAGMENT = `precision highp float;
|
|
104
|
+
varying vec2 v_local;
|
|
105
|
+
varying float v_len;
|
|
106
|
+
varying float v_half;
|
|
107
|
+
varying float v_along;
|
|
108
|
+
varying vec3 v_dash;
|
|
109
|
+
varying vec4 v_color;
|
|
110
|
+
void main() {
|
|
111
|
+
float x = clamp(v_local.x, 0.0, v_len);
|
|
112
|
+
float dist = length(vec2(v_local.x - x, v_local.y));
|
|
113
|
+
float alpha = clamp(v_half - dist + 0.5, 0.0, 1.0);
|
|
114
|
+
float period = v_dash.x + v_dash.y;
|
|
115
|
+
if (period > 0.0) {
|
|
116
|
+
// Where in the pattern this pixel is, the canvas way: the offset shifts
|
|
117
|
+
// the pattern's start along the line. Covered by how far the pixel is
|
|
118
|
+
// inside the nearer end of its dash, so a dash's ends antialias too.
|
|
119
|
+
float m = mod(v_along + v_dash.z, period);
|
|
120
|
+
alpha *= clamp(min(m, v_dash.x - m) + 0.5, 0.0, 1.0);
|
|
121
|
+
}
|
|
122
|
+
if (alpha <= 0.0) discard;
|
|
123
|
+
gl_FragColor = v_color * alpha;
|
|
124
|
+
}
|
|
125
|
+
`;
|
|
126
|
+
/**
|
|
127
|
+
* A rounded box: fill, border and antialiased edge out of one distance.
|
|
128
|
+
*
|
|
129
|
+
* The 2D painter fills the whole box and strokes a border *inset* by half
|
|
130
|
+
* its pen (`../draw.ts`), so the ink band runs from the edge inward by the
|
|
131
|
+
* pen's width with the fill beneath it. This composites the same way — the
|
|
132
|
+
* border *over* the fill across the band, not in place of it — which only
|
|
133
|
+
* differs when the border is translucent, and a hovered card's is.
|
|
134
|
+
*
|
|
135
|
+
* A disc is a box whose side is twice its corner radius, which is why
|
|
136
|
+
* handles are drawn here too — and a label is a box that samples its
|
|
137
|
+
* distance field in the atlas (`./text.ts`) instead, flagged in `a_i1.z`,
|
|
138
|
+
* which is what keeps every label in the box stream at exactly the place in
|
|
139
|
+
* the order the 2D painter draws it.
|
|
140
|
+
*
|
|
141
|
+
* Instance: a_i0 = x, y, width, height; a_i1 = corner radius, border width;
|
|
142
|
+
* a_i2 = fill; a_i3 = border colour. For a label: a_i0 = the text's corner
|
|
143
|
+
* and the quad's size; a_i1 = the quad's margin before that corner, its
|
|
144
|
+
* field's page, 1, and the logical pixels a field texel covers; a_i2 = ink; a_i3 = its rect
|
|
145
|
+
* in the atlas.
|
|
146
|
+
*/
|
|
147
|
+
export const BOX_VERTEX = `${PRELUDE}
|
|
148
|
+
attribute vec2 a_corner;
|
|
149
|
+
attribute vec4 a_i0;
|
|
150
|
+
attribute vec4 a_i1;
|
|
151
|
+
attribute vec4 a_i2;
|
|
152
|
+
attribute vec4 a_i3;
|
|
153
|
+
varying vec2 v_local;
|
|
154
|
+
varying vec2 v_half;
|
|
155
|
+
varying vec2 v_shape;
|
|
156
|
+
varying vec4 v_fill;
|
|
157
|
+
varying vec4 v_border;
|
|
158
|
+
varying vec2 v_uv;
|
|
159
|
+
varying float v_text;
|
|
160
|
+
void main() {
|
|
161
|
+
vec2 corner = vec2(a_corner.x, a_corner.y * 0.5 + 0.5);
|
|
162
|
+
v_text = a_i1.z;
|
|
163
|
+
if (a_i1.z > 1.5) {
|
|
164
|
+
// a label whose field is still being set: nothing, until it lands
|
|
165
|
+
gl_Position = vec4(0.0, 0.0, 2.0, 1.0);
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
if (a_i1.z > 0.5) {
|
|
169
|
+
// A label: its field, scaled to the size it is drawn at. The text's
|
|
170
|
+
// corner goes on the device grid *after* the pan's offset, which is
|
|
171
|
+
// where the grid is — the 2D painter rounds the same corner — and the
|
|
172
|
+
// quad reaches its margin before it.
|
|
173
|
+
float k = u_zoom * u_scale;
|
|
174
|
+
vec2 origin = floor(device(a_i0.xy) + 0.5) - a_i1.x * k;
|
|
175
|
+
v_uv = mix(a_i3.xy, a_i3.zw, corner);
|
|
176
|
+
v_fill = a_i2;
|
|
177
|
+
v_local = vec2(0.0);
|
|
178
|
+
v_half = vec2(0.0);
|
|
179
|
+
// device pixels a field texel covers, for the fragment's ramp, and the
|
|
180
|
+
// page its field is on
|
|
181
|
+
v_shape = vec2(a_i1.w * k, a_i1.y);
|
|
182
|
+
v_border = vec4(0.0);
|
|
183
|
+
gl_Position = clip(origin + corner * a_i0.zw * k);
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
v_uv = vec2(0.0);
|
|
187
|
+
vec2 size = a_i0.zw * u_zoom * u_scale;
|
|
188
|
+
vec2 half_ = size * 0.5;
|
|
189
|
+
// a pixel of fringe all round, for the antialiased edge to fade into
|
|
190
|
+
vec2 local = (corner - 0.5) * (size + 2.0);
|
|
191
|
+
v_local = local;
|
|
192
|
+
v_half = half_;
|
|
193
|
+
v_shape = vec2(a_i1.x, a_i1.y) * u_zoom * u_scale;
|
|
194
|
+
v_fill = a_i2;
|
|
195
|
+
v_border = a_i3;
|
|
196
|
+
gl_Position = clip(device(a_i0.xy) + half_ + local);
|
|
197
|
+
}
|
|
198
|
+
`;
|
|
199
|
+
/**
|
|
200
|
+
* A label's field says how far a pixel is from the glyphs' edge — in texels,
|
|
201
|
+
* `u_spread` of them across the byte range, and so in device pixels once
|
|
202
|
+
* scaled by how many a texel covers — and ink is that distance ramped across
|
|
203
|
+
* one device pixel, whatever size the label is drawn at.
|
|
204
|
+
*/
|
|
205
|
+
export const BOX_FRAGMENT = `precision highp float;
|
|
206
|
+
uniform sampler2D u_atlas;
|
|
207
|
+
uniform float u_spread;
|
|
208
|
+
varying vec2 v_local;
|
|
209
|
+
varying vec2 v_half;
|
|
210
|
+
varying vec2 v_shape;
|
|
211
|
+
varying vec4 v_fill;
|
|
212
|
+
varying vec4 v_border;
|
|
213
|
+
varying vec2 v_uv;
|
|
214
|
+
varying float v_text;
|
|
215
|
+
void main() {
|
|
216
|
+
if (v_text > 0.5) {
|
|
217
|
+
// Four pages, one a channel: alpha is page 0, red, green and blue
|
|
218
|
+
// pages 1 to 3 (CHANNELS in ./text.ts).
|
|
219
|
+
vec4 pages = texture2D(u_atlas, v_uv);
|
|
220
|
+
vec4 pick = 1.0 - min(abs(vec4(v_shape.y) - vec4(1.0, 2.0, 3.0, 0.0)), 1.0);
|
|
221
|
+
float field = dot(pages, pick);
|
|
222
|
+
// device pixels past the glyphs' edge: positive outside, negative in
|
|
223
|
+
float d = (${SDF_EDGE.toFixed(4)} - field) * u_spread * v_shape.x;
|
|
224
|
+
float ink = clamp(0.5 + ${SDF_INK_BIAS_PX.toFixed(2)} - d, 0.0, 1.0);
|
|
225
|
+
if (ink <= 0.0) discard;
|
|
226
|
+
gl_FragColor = v_fill * ink;
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
float r = min(v_shape.x, min(v_half.x, v_half.y));
|
|
230
|
+
vec2 q = abs(v_local) - (v_half - r);
|
|
231
|
+
float d = length(max(q, 0.0)) + min(max(q.x, q.y), 0.0) - r;
|
|
232
|
+
float outside = clamp(0.5 - d, 0.0, 1.0);
|
|
233
|
+
vec4 color = v_fill * outside;
|
|
234
|
+
if (v_shape.y > 0.0) {
|
|
235
|
+
float inner = clamp(0.5 - (d + v_shape.y), 0.0, 1.0);
|
|
236
|
+
float band = outside - inner;
|
|
237
|
+
color = v_border * band + color * (1.0 - v_border.a * band);
|
|
238
|
+
}
|
|
239
|
+
if (color.a <= 0.0) discard;
|
|
240
|
+
gl_FragColor = color;
|
|
241
|
+
}
|
|
242
|
+
`;
|
|
243
|
+
/** A flat triangle: the fill of a closed arrowhead. Its edge is
|
|
244
|
+
* antialiased by the hairline `./pack.ts` strokes round it. */
|
|
245
|
+
export const TRI_VERTEX = `${PRELUDE}
|
|
246
|
+
attribute vec2 a_corner;
|
|
247
|
+
attribute vec4 a_i0;
|
|
248
|
+
varying vec4 v_color;
|
|
249
|
+
void main() {
|
|
250
|
+
v_color = a_i0;
|
|
251
|
+
gl_Position = clip(device(a_corner));
|
|
252
|
+
}
|
|
253
|
+
`;
|
|
254
|
+
export const TRI_FRAGMENT = `precision mediump float;
|
|
255
|
+
varying vec4 v_color;
|
|
256
|
+
void main() {
|
|
257
|
+
gl_FragColor = v_color;
|
|
258
|
+
}
|
|
259
|
+
`;
|
|
260
|
+
/**
|
|
261
|
+
* The grid, worked out per pixel: no tile, no pattern and no pile of runs —
|
|
262
|
+
* and none of the 2D path's integral-pitch restriction, because nothing here
|
|
263
|
+
* is a pixmap that has to repeat on whole pixels.
|
|
264
|
+
*
|
|
265
|
+
* Distances are to the nearest grid point in each axis, in logical pixels,
|
|
266
|
+
* and each mark's coverage ramps across one *device* pixel, so a dot is as
|
|
267
|
+
* sharp as the panel draws it.
|
|
268
|
+
*/
|
|
269
|
+
export const GRID_VERTEX = `precision highp float;
|
|
270
|
+
attribute vec2 a_corner;
|
|
271
|
+
uniform vec2 u_viewport;
|
|
272
|
+
varying vec2 v_device;
|
|
273
|
+
void main() {
|
|
274
|
+
v_device = vec2(a_corner.x * u_viewport.x,
|
|
275
|
+
(a_corner.y * 0.5 + 0.5) * u_viewport.y);
|
|
276
|
+
gl_Position = vec4(a_corner.x * 2.0 - 1.0, -a_corner.y, 0.0, 1.0);
|
|
277
|
+
}
|
|
278
|
+
`;
|
|
279
|
+
export const GRID_FRAGMENT = `precision highp float;
|
|
280
|
+
uniform vec2 u_origin;
|
|
281
|
+
uniform float u_scale;
|
|
282
|
+
// the grid's origin (logical window pixels) and its pitch on screen
|
|
283
|
+
uniform vec3 u_grid;
|
|
284
|
+
// 0 dots, 1 lines, 2 cross; then a mark's size on screen (logical)
|
|
285
|
+
uniform vec2 u_mark;
|
|
286
|
+
uniform vec4 u_color;
|
|
287
|
+
varying vec2 v_device;
|
|
288
|
+
float cover(float edge, float dist) {
|
|
289
|
+
return clamp((edge - dist) * u_scale + 0.5, 0.0, 1.0);
|
|
290
|
+
}
|
|
291
|
+
void main() {
|
|
292
|
+
vec2 logical = v_device / u_scale + u_origin;
|
|
293
|
+
float step = u_grid.z;
|
|
294
|
+
vec2 rel = logical - u_grid.xy;
|
|
295
|
+
vec2 dist = abs(mod(rel + step * 0.5, step) - step * 0.5);
|
|
296
|
+
float a;
|
|
297
|
+
if (u_mark.x < 0.5) {
|
|
298
|
+
float h = u_mark.y * 0.5;
|
|
299
|
+
a = cover(h, dist.x) * cover(h, dist.y);
|
|
300
|
+
} else if (u_mark.x < 1.5) {
|
|
301
|
+
a = max(cover(0.5, dist.x), cover(0.5, dist.y));
|
|
302
|
+
} else {
|
|
303
|
+
float arm = u_mark.y;
|
|
304
|
+
a = max(cover(0.5, dist.x) * cover(arm, dist.y),
|
|
305
|
+
cover(0.5, dist.y) * cover(arm, dist.x));
|
|
306
|
+
}
|
|
307
|
+
if (a <= 0.0) discard;
|
|
308
|
+
gl_FragColor = u_color * a;
|
|
309
|
+
}
|
|
310
|
+
`;
|
|
311
|
+
function compile(gl, type, source) {
|
|
312
|
+
const shader = gl.createShader(type);
|
|
313
|
+
gl.shaderSource(shader, source);
|
|
314
|
+
gl.compileShader(shader);
|
|
315
|
+
if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
|
|
316
|
+
const log = gl.getShaderInfoLog(shader);
|
|
317
|
+
gl.deleteShader(shader);
|
|
318
|
+
throw new Error(`@react-x11/components flow/gl: shader failed: ${log}`);
|
|
319
|
+
}
|
|
320
|
+
return shader;
|
|
321
|
+
}
|
|
322
|
+
/** Compile, bind the shared locations, link, and look the uniforms up. */
|
|
323
|
+
export function linkProgram(gl, vertex, fragment, uniforms) {
|
|
324
|
+
const program = gl.createProgram();
|
|
325
|
+
const vs = compile(gl, gl.VERTEX_SHADER, vertex);
|
|
326
|
+
const fs = compile(gl, gl.FRAGMENT_SHADER, fragment);
|
|
327
|
+
gl.attachShader(program, vs);
|
|
328
|
+
gl.attachShader(program, fs);
|
|
329
|
+
for (const [name, location] of Object.entries(ATTRIBUTES)) {
|
|
330
|
+
gl.bindAttribLocation(program, location, name);
|
|
331
|
+
}
|
|
332
|
+
gl.linkProgram(program);
|
|
333
|
+
gl.deleteShader(vs);
|
|
334
|
+
gl.deleteShader(fs);
|
|
335
|
+
if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {
|
|
336
|
+
const log = gl.getProgramInfoLog(program);
|
|
337
|
+
gl.deleteProgram(program);
|
|
338
|
+
throw new Error(`@react-x11/components flow/gl: link failed: ${log}`);
|
|
339
|
+
}
|
|
340
|
+
const found = {};
|
|
341
|
+
for (const name of uniforms) {
|
|
342
|
+
found[name] = gl.getUniformLocation(program, name);
|
|
343
|
+
}
|
|
344
|
+
return { program, uniforms: found };
|
|
345
|
+
}
|
|
346
|
+
//# sourceMappingURL=shaders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shaders.js","sourceRoot":"","sources":["../../../src/flow/gl/shaders.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
import type { PainterOptions } from '../draw.js';
|
|
2
|
+
import type { SceneText } from '../scene.js';
|
|
3
|
+
import type { FlowRect } from '../types.js';
|
|
4
|
+
/**
|
|
5
|
+
* A label's quad and where its field sits in the atlas, all at the scene's
|
|
6
|
+
* zoom. `x`/`y` are the **text's** top-left, logical pixels in the scene's
|
|
7
|
+
* space — what the shader puts on the device grid, as the 2D painter puts
|
|
8
|
+
* the corner it draws a layout from — and the quad starts `margin` before
|
|
9
|
+
* it in both axes and is `w` by `h`. `texel` is the logical pixels one texel
|
|
10
|
+
* of the field covers; `u0`..`v1` are texture coordinates.
|
|
11
|
+
*
|
|
12
|
+
* A label whose field is still being set is a quad too, `ready` false and
|
|
13
|
+
* no place in the atlas: its size is known from the measurement before its
|
|
14
|
+
* field exists, so it is packed where it will be drawn, and its field is
|
|
15
|
+
* written in when it lands (`landed`) — without packing the world again.
|
|
16
|
+
*/
|
|
17
|
+
export interface GlyphQuad {
|
|
18
|
+
/** The field it draws from: its weight and the string, as cut. */
|
|
19
|
+
key: string;
|
|
20
|
+
ready: boolean;
|
|
21
|
+
x: number;
|
|
22
|
+
y: number;
|
|
23
|
+
w: number;
|
|
24
|
+
h: number;
|
|
25
|
+
margin: number;
|
|
26
|
+
texel: number;
|
|
27
|
+
/** The page its field is on: which channel of the texture holds it. */
|
|
28
|
+
page: number;
|
|
29
|
+
/** Its field's placement (`LabelAtlas.slotOf`); 0 when not ready. */
|
|
30
|
+
slot: number;
|
|
31
|
+
u0: number;
|
|
32
|
+
v0: number;
|
|
33
|
+
u1: number;
|
|
34
|
+
v1: number;
|
|
35
|
+
}
|
|
36
|
+
/** What the atlas needs of the pane: its app, for the staging surface, and
|
|
37
|
+
* the options its 2D painter measures with. */
|
|
38
|
+
export interface TextSource {
|
|
39
|
+
app: unknown;
|
|
40
|
+
options: PainterOptions;
|
|
41
|
+
}
|
|
42
|
+
/** The atlas texture's side, texels: 16 MB of RGBA, four pages of fields —
|
|
43
|
+
* some 8,000 titles at 1x and 2,600 at 2x. */
|
|
44
|
+
export declare const ATLAS_SIZE = 2048;
|
|
45
|
+
/**
|
|
46
|
+
* Texels the drawn quad leaves off each side of a field: a bilinear sample
|
|
47
|
+
* at its edge then stays inside the field's own margin, never reaching a
|
|
48
|
+
* neighbour's.
|
|
49
|
+
*/
|
|
50
|
+
export declare const QUAD_INSET = 1;
|
|
51
|
+
/** The device size a display scale sets fields at: 16 at 1x, 32 at 2x. A
|
|
52
|
+
* card's title is 13 at zoom 1, so a field is mostly drawn at or under the
|
|
53
|
+
* size it was set at, where it is sharpest, and at twice it at the
|
|
54
|
+
* default `maxZoom` of 2.5. */
|
|
55
|
+
export declare const fieldBase: (scale: number) => number;
|
|
56
|
+
/**
|
|
57
|
+
* A field's margin and spread at a base size, texels. A graph's labels have
|
|
58
|
+
* no halo, so the field only has to reach as far as the antialiasing ramp
|
|
59
|
+
* of the smallest label drawn: a handle's 10 at `LABEL_ZOOM`, under a
|
|
60
|
+
* third of the base, is a ramp of 2.3 texels, and a sixth of the base
|
|
61
|
+
* reaches three. A quarter, which the first cut used, drew the same pixels
|
|
62
|
+
* to within 5/255 from fields 12% larger, whose every texel was made.
|
|
63
|
+
*/
|
|
64
|
+
export declare const fieldPad: (base: number) => number;
|
|
65
|
+
export declare class LabelAtlas {
|
|
66
|
+
private readonly source;
|
|
67
|
+
/** Measured and shaped in white, at device size — the scale is 1 here,
|
|
68
|
+
* and a size is the base in device pixels — and cached apart from the
|
|
69
|
+
* pane's own text: nothing measured here is a size the pane draws. */
|
|
70
|
+
private readonly white;
|
|
71
|
+
/** The device size every field is set at: a label drawn at `size`
|
|
72
|
+
* scales its field by `size / base`. */
|
|
73
|
+
readonly base: number;
|
|
74
|
+
/** The margin set round every field, texels, which is also the distance
|
|
75
|
+
* its values span — the shader's `u_spread`. */
|
|
76
|
+
readonly pad: number;
|
|
77
|
+
private readonly entries;
|
|
78
|
+
/** Wanted and not yet set: key → what to set it from, and where the
|
|
79
|
+
* label nearest the view that asks for it is. */
|
|
80
|
+
private readonly missing;
|
|
81
|
+
/**
|
|
82
|
+
* Wanted, and waiting for room: the atlas is full of fields at least as
|
|
83
|
+
* near the view as these, so nothing is set for them until the view
|
|
84
|
+
* moves (`setView`) or a pack starts. Every key here is in `missing` too;
|
|
85
|
+
* what `wanting` counts is the rest.
|
|
86
|
+
*/
|
|
87
|
+
private readonly stalled;
|
|
88
|
+
/**
|
|
89
|
+
* Requests measured: request → the string as cut. Measuring is what a
|
|
90
|
+
* label's first appearance costs the frame that packs it — 60-80 µs a
|
|
91
|
+
* string, on DirectWrite and on ntk alike, so a view of three hundred new
|
|
92
|
+
* labels was one frame 20 ms long before any of them could arrive. A pack
|
|
93
|
+
* measures for `shapeBudgetMs` and leaves the rest to the slices between
|
|
94
|
+
* frames; the ones it measured no pack measures again.
|
|
95
|
+
*/
|
|
96
|
+
private readonly resolved;
|
|
97
|
+
/**
|
|
98
|
+
* What the pack under way has spent measuring, and how many strings it
|
|
99
|
+
* has measured — at least one a pack. Measuring alone is charged: a pack
|
|
100
|
+
* writes every edge before its first label, and a deadline from its start
|
|
101
|
+
* put off, after a zoom, labels whose cut had moved a fraction of a pixel
|
|
102
|
+
* and whose every measurement was cached.
|
|
103
|
+
*/
|
|
104
|
+
private spent;
|
|
105
|
+
private measured;
|
|
106
|
+
/** Read back and waiting for their fields, oldest first — as wanted as
|
|
107
|
+
* anything in `missing`, so a pack does not ask for them again. */
|
|
108
|
+
private fieldQueue;
|
|
109
|
+
private readonly queued;
|
|
110
|
+
/** The pages' shelves, and how far down each page they reach. */
|
|
111
|
+
private shelves;
|
|
112
|
+
private readonly tops;
|
|
113
|
+
/** Pages in the texture: one per channel, alpha first. */
|
|
114
|
+
private readonly pages;
|
|
115
|
+
/**
|
|
116
|
+
* The whole texture, four bytes a texel, made when the first field goes
|
|
117
|
+
* on a page past the first. An upload writes every channel of the rect
|
|
118
|
+
* it covers, so from then on a field is uploaded from here, with the
|
|
119
|
+
* fields of the other pages under it. An atlas that never fills its first
|
|
120
|
+
* page never makes it: 16 MB, paid only past the old limit.
|
|
121
|
+
*/
|
|
122
|
+
private mirror;
|
|
123
|
+
/** The last placement found no room, and nothing has been freed since:
|
|
124
|
+
* a want that cannot evict is stalled before it is shaped. */
|
|
125
|
+
private full;
|
|
126
|
+
/** Fields that may be dropped for a nearer one, farthest from the view
|
|
127
|
+
* first — made when first needed in a slice, and consumed in order. */
|
|
128
|
+
private victims;
|
|
129
|
+
private victimAt;
|
|
130
|
+
/** Placements, counted: a field's `slot` changes whenever it lands, so a
|
|
131
|
+
* box drawn from an old one is found by comparing the two. */
|
|
132
|
+
private nextSlot;
|
|
133
|
+
private staging;
|
|
134
|
+
private stagingCtx;
|
|
135
|
+
private busy;
|
|
136
|
+
/** Whether the layouts answer their own coverage (react-x11#673): unknown
|
|
137
|
+
* until the first string asks, and false for good once one does not. */
|
|
138
|
+
private coverage;
|
|
139
|
+
/** Bumped whenever a field lands or is dropped — the renderer writes in
|
|
140
|
+
* what landed, and uploads, when it moves. */
|
|
141
|
+
generation: number;
|
|
142
|
+
/** Bumped whenever a field is dropped: the renderer finds the boxes that
|
|
143
|
+
* drew from it (`slotOf`) and draws them as nothing until it is back. */
|
|
144
|
+
moves: number;
|
|
145
|
+
/** Fields set are uploaded when the renderer next binds the atlas. */
|
|
146
|
+
private readonly pending;
|
|
147
|
+
/** Whether new strings may be set: false while the zoom is moving. */
|
|
148
|
+
admit: boolean;
|
|
149
|
+
/** Milliseconds of fields one slice may make, past the first field. */
|
|
150
|
+
fieldBudgetMs: number;
|
|
151
|
+
/** Milliseconds of measuring new strings a world pack may spend. */
|
|
152
|
+
shapeBudgetMs: number;
|
|
153
|
+
private texture;
|
|
154
|
+
private textureGeneration;
|
|
155
|
+
/** A field's rect as uploaded: widened to RGBA — the shader reads one
|
|
156
|
+
* channel, and a one-channel texture is a format GLES 2 and a core
|
|
157
|
+
* profile do not share. Grown to the largest field. */
|
|
158
|
+
private scratch;
|
|
159
|
+
/** Counts world packs; an entry stamped with the current one is drawn. */
|
|
160
|
+
private epoch;
|
|
161
|
+
/** The texture's side, texels. */
|
|
162
|
+
private readonly side;
|
|
163
|
+
/** `side` and `pages` are for tests, which fill an atlas without setting
|
|
164
|
+
* thousands of labels. */
|
|
165
|
+
constructor(source: TextSource, side?: number, pages?: number);
|
|
166
|
+
/**
|
|
167
|
+
* A world pack is starting: the labels it asks for are the ones drawn
|
|
168
|
+
* until the next — and **all** that is wanted. What earlier packs asked
|
|
169
|
+
* for and nothing has set is forgotten here: the strings a pan went past
|
|
170
|
+
* are not worth a batch once it has.
|
|
171
|
+
*/
|
|
172
|
+
beginPack(): void;
|
|
173
|
+
/**
|
|
174
|
+
* The view's centre, in the world's coordinates. What is wanted is set
|
|
175
|
+
* nearest it first: on a first appearance the labels arrive over a
|
|
176
|
+
* hundred milliseconds or more, and the ones in the middle of the view
|
|
177
|
+
* are the ones being read.
|
|
178
|
+
*/
|
|
179
|
+
focus: {
|
|
180
|
+
x: number;
|
|
181
|
+
y: number;
|
|
182
|
+
} | null;
|
|
183
|
+
/** The view, in the world's coordinates — the surface says where each
|
|
184
|
+
* frame. Null draws everything as if it were on screen. */
|
|
185
|
+
private view;
|
|
186
|
+
/**
|
|
187
|
+
* Where the view is now. A field on screen is never dropped for another;
|
|
188
|
+
* one off it is dropped for a label nearer the view, and a move of the
|
|
189
|
+
* view is what can make a stalled label nearer than one that is set.
|
|
190
|
+
*/
|
|
191
|
+
setView(view: FlowRect | null): void;
|
|
192
|
+
/** How far a rect is from the view, in the world's units: 0 on it. */
|
|
193
|
+
private far;
|
|
194
|
+
/** How near a label is, for ordering what is wanted: from the view,
|
|
195
|
+
* then from its middle. */
|
|
196
|
+
private nearness;
|
|
197
|
+
/** A want moved to the label asking for it nearest the view. */
|
|
198
|
+
private nearer;
|
|
199
|
+
/**
|
|
200
|
+
* A label's quad, or null when there is nothing to draw it from yet —
|
|
201
|
+
* which asks for its field.
|
|
202
|
+
*/
|
|
203
|
+
quad(t: SceneText, lifted?: boolean): GlyphQuad | null;
|
|
204
|
+
/**
|
|
205
|
+
* The quad a label packed before its field existed draws from, now that
|
|
206
|
+
* it can be drawn — null until then. One the pack did not measure (a `?`
|
|
207
|
+
* key) is placed now, from the string its request resolved to: the pack
|
|
208
|
+
* gave it a box of no size, and this is its whole quad.
|
|
209
|
+
*/
|
|
210
|
+
landing(key: string, t: SceneText, lifted?: boolean): GlyphQuad | null;
|
|
211
|
+
/** The placement a field is at now — -1 when it is not set — for a box
|
|
212
|
+
* to tell whether the field it was drawn from is still there. */
|
|
213
|
+
slotOf(key: string): number;
|
|
214
|
+
/** A field a drawn label lost, wanted again from where that label is. */
|
|
215
|
+
want(key: string, t: SceneText): void;
|
|
216
|
+
/** A string cut to the width it fits, measured at the base size. */
|
|
217
|
+
private cut;
|
|
218
|
+
private remember;
|
|
219
|
+
/** No longer wanted: set, or given up on. */
|
|
220
|
+
private unwant;
|
|
221
|
+
/**
|
|
222
|
+
* A request the pack left unmeasured, measured: its string cut and
|
|
223
|
+
* shaped, and wanted under its field's key from then on. Null when that
|
|
224
|
+
* field is set, being set or waiting for room already — the request is
|
|
225
|
+
* answered, and a frame writes its labels in.
|
|
226
|
+
*/
|
|
227
|
+
private resolve;
|
|
228
|
+
/** What is wanted and not waiting for room, nearest the view first. */
|
|
229
|
+
private wanted;
|
|
230
|
+
/** Whether any label drawn so far is still waiting for a field that can
|
|
231
|
+
* be set — not counting those waiting for room. */
|
|
232
|
+
get wanting(): boolean;
|
|
233
|
+
/**
|
|
234
|
+
* Whether a want this far from the view is worth shaping: not when the
|
|
235
|
+
* atlas is full and holds nothing farther to drop for it.
|
|
236
|
+
*/
|
|
237
|
+
private hopeful;
|
|
238
|
+
/**
|
|
239
|
+
* One slice of setting what was asked for: fields for what was read back
|
|
240
|
+
* already, in a task of their own, or else one batch drawn and read back
|
|
241
|
+
* and the first of its fields. Resolves true when any field landed — the
|
|
242
|
+
* caller asks for a frame then, which draws what landed — and does
|
|
243
|
+
* nothing while one is already in flight,
|
|
244
|
+
* while the zoom is moving, or with nothing to set.
|
|
245
|
+
*/
|
|
246
|
+
pump(): Promise<boolean>;
|
|
247
|
+
/**
|
|
248
|
+
* One batch drawn onto the staging surface and read back, and the first
|
|
249
|
+
* of its fields: the way a string is set on an engine whose layouts do not
|
|
250
|
+
* answer their own coverage.
|
|
251
|
+
*/
|
|
252
|
+
private readBack;
|
|
253
|
+
/**
|
|
254
|
+
* One slice of strings set from their layouts' own coverage, where the
|
|
255
|
+
* engine answers it: no staging surface and no readback, so a string
|
|
256
|
+
* shaped this slice is a field this slice, until the budget is spent — at
|
|
257
|
+
* least one. Null when the layouts cannot answer, and the batches read
|
|
258
|
+
* back instead from then on.
|
|
259
|
+
*/
|
|
260
|
+
private coverageSlice;
|
|
261
|
+
/**
|
|
262
|
+
* Fields for what was read back, oldest first, until the slice's budget
|
|
263
|
+
* is spent — at least one. A field is 0.1-0.4 ms (more texels at 2x);
|
|
264
|
+
* a batch's worth made as it landed was a frame held back.
|
|
265
|
+
*/
|
|
266
|
+
private makeFields;
|
|
267
|
+
/**
|
|
268
|
+
* Room for a field of a label this far from the view: free room, or room
|
|
269
|
+
* made by dropping fields — first the ones no pack draws, then the ones
|
|
270
|
+
* drawn farthest from the view, so long as they are farther than it.
|
|
271
|
+
* Nothing on screen is dropped for anything. Null when there is none, and
|
|
272
|
+
* the atlas is `full` until something is freed.
|
|
273
|
+
*/
|
|
274
|
+
private room;
|
|
275
|
+
/**
|
|
276
|
+
* Room made by sliding a shelf's fields together over its gaps: fields
|
|
277
|
+
* of one height are not one width — `node 7` and `node 1234` — and a
|
|
278
|
+
* narrow one dropped leaves a gap a wide one does not fit, so gaps apart
|
|
279
|
+
* are room nothing uses. The fields moved are new placements: a box
|
|
280
|
+
* drawn from one is written again from where it is now, in the same
|
|
281
|
+
* frame (`slotOf`).
|
|
282
|
+
*/
|
|
283
|
+
private squeeze;
|
|
284
|
+
/** The next field that may go for a label this far from the view, or
|
|
285
|
+
* null — skipping the ones already gone, or set again since. */
|
|
286
|
+
private victim;
|
|
287
|
+
/** How far from the view the nearest label drawn from a field is. */
|
|
288
|
+
private reach;
|
|
289
|
+
/** A field into the place made for it — drawn, until a pack says where,
|
|
290
|
+
* where the label that asked for it is. */
|
|
291
|
+
private put;
|
|
292
|
+
/** A field written into its channel of the mirror. */
|
|
293
|
+
private paint;
|
|
294
|
+
/** A field dropped, and its room given back to its shelf. */
|
|
295
|
+
private evict;
|
|
296
|
+
/**
|
|
297
|
+
* Shelves by height, in steps: a label's field is as tall as the base
|
|
298
|
+
* size's line and the margin, so nearly every field is one height, and a
|
|
299
|
+
* field dropped leaves a gap the next one fits. The first fit in a gap,
|
|
300
|
+
* then the end of a shelf, then a new shelf — on the first page with
|
|
301
|
+
* room, alpha first.
|
|
302
|
+
*/
|
|
303
|
+
private allot;
|
|
304
|
+
/** A field's room back to its shelf, merged with the gaps beside it; a
|
|
305
|
+
* shelf left empty at the bottom of its page goes back to the page. */
|
|
306
|
+
private free;
|
|
307
|
+
/**
|
|
308
|
+
* The atlas texture, bound to unit 0, with every field set since the last
|
|
309
|
+
* call uploaded into it. Made on first use — and made again for a new
|
|
310
|
+
* context, into which every field is uploaded again from the copies kept
|
|
311
|
+
* here.
|
|
312
|
+
*/
|
|
313
|
+
bind(gl: GLLike, fresh: boolean): void;
|
|
314
|
+
dispose(gl?: GLLike): void;
|
|
315
|
+
}
|
|
316
|
+
type GLLike = any;
|
|
317
|
+
export {};
|
|
318
|
+
//# sourceMappingURL=text.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../src/flow/gl/text.ts"],"names":[],"mappings":"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"}
|