@react-x11/components 0.9.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -4
- package/dist/charts/node.d.ts +11 -1
- package/dist/charts/node.d.ts.map +1 -1
- package/dist/charts/node.js +44 -14
- package/dist/charts/node.js.map +1 -1
- package/dist/charts/render.d.ts +12 -3
- package/dist/charts/render.d.ts.map +1 -1
- package/dist/charts/render.js +94 -25
- package/dist/charts/render.js.map +1 -1
- package/dist/code/index.d.ts.map +1 -1
- package/dist/code/index.js +27 -24
- package/dist/code/index.js.map +1 -1
- package/dist/code-editor/completion.d.ts.map +1 -1
- package/dist/code-editor/completion.js +3 -2
- package/dist/code-editor/completion.js.map +1 -1
- package/dist/code-editor/index.d.ts.map +1 -1
- package/dist/code-editor/index.js +19 -0
- package/dist/code-editor/index.js.map +1 -1
- package/dist/code-editor/node.d.ts +177 -7
- package/dist/code-editor/node.d.ts.map +1 -1
- package/dist/code-editor/node.js +1329 -164
- package/dist/code-editor/node.js.map +1 -1
- package/dist/code-language/index.d.ts +1 -1
- package/dist/code-language/index.d.ts.map +1 -1
- package/dist/code-language/index.js +1 -1
- package/dist/code-language/index.js.map +1 -1
- package/dist/code-language/languages/glsl.d.ts.map +1 -1
- package/dist/code-language/languages/glsl.js +10 -2
- package/dist/code-language/languages/glsl.js.map +1 -1
- package/dist/code-language/languages/javascript.d.ts.map +1 -1
- package/dist/code-language/languages/javascript.js +18 -3
- package/dist/code-language/languages/javascript.js.map +1 -1
- package/dist/code-language/languages/json.d.ts.map +1 -1
- package/dist/code-language/languages/json.js +10 -2
- package/dist/code-language/languages/json.js.map +1 -1
- package/dist/code-language/languages/shell.d.ts.map +1 -1
- package/dist/code-language/languages/shell.js +10 -2
- package/dist/code-language/languages/shell.js.map +1 -1
- package/dist/code-language/languages/sql.d.ts.map +1 -1
- package/dist/code-language/languages/sql.js +20 -2
- package/dist/code-language/languages/sql.js.map +1 -1
- package/dist/code-language/runs.d.ts +31 -0
- package/dist/code-language/runs.d.ts.map +1 -1
- package/dist/code-language/runs.js +105 -0
- package/dist/code-language/runs.js.map +1 -1
- package/dist/code-language/stream.d.ts +22 -0
- package/dist/code-language/stream.d.ts.map +1 -1
- package/dist/code-language/stream.js +259 -9
- package/dist/code-language/stream.js.map +1 -1
- package/dist/code-language/types.d.ts +5 -4
- package/dist/code-language/types.d.ts.map +1 -1
- package/dist/codeblock/index.d.ts +26 -2
- package/dist/codeblock/index.d.ts.map +1 -1
- package/dist/codeblock/index.js +57 -4
- package/dist/codeblock/index.js.map +1 -1
- package/dist/flow/draw.d.ts +50 -0
- package/dist/flow/draw.d.ts.map +1 -1
- package/dist/flow/draw.js +132 -33
- package/dist/flow/draw.js.map +1 -1
- package/dist/flow/gl/color.d.ts +13 -0
- package/dist/flow/gl/color.d.ts.map +1 -0
- package/dist/flow/gl/color.js +82 -0
- package/dist/flow/gl/color.js.map +1 -0
- package/dist/flow/gl/index.d.ts +60 -0
- package/dist/flow/gl/index.d.ts.map +1 -0
- package/dist/flow/gl/index.js +283 -0
- package/dist/flow/gl/index.js.map +1 -0
- package/dist/flow/gl/pack.d.ts +133 -0
- package/dist/flow/gl/pack.d.ts.map +1 -0
- package/dist/flow/gl/pack.js +408 -0
- package/dist/flow/gl/pack.js.map +1 -0
- package/dist/flow/gl/renderer.d.ts +95 -0
- package/dist/flow/gl/renderer.d.ts.map +1 -0
- package/dist/flow/gl/renderer.js +459 -0
- package/dist/flow/gl/renderer.js.map +1 -0
- package/dist/flow/gl/shaders.d.ts +79 -0
- package/dist/flow/gl/shaders.d.ts.map +1 -0
- package/dist/flow/gl/shaders.js +346 -0
- package/dist/flow/gl/shaders.js.map +1 -0
- package/dist/flow/gl/text.d.ts +318 -0
- package/dist/flow/gl/text.d.ts.map +1 -0
- package/dist/flow/gl/text.js +1103 -0
- package/dist/flow/gl/text.js.map +1 -0
- package/dist/flow/index.d.ts +1 -1
- package/dist/flow/index.d.ts.map +1 -1
- package/dist/flow/index.js +619 -64
- package/dist/flow/index.js.map +1 -1
- package/dist/flow/node.d.ts +621 -72
- package/dist/flow/node.d.ts.map +1 -1
- package/dist/flow/node.js +2253 -1018
- package/dist/flow/node.js.map +1 -1
- package/dist/flow/paint.d.ts +35 -0
- package/dist/flow/paint.d.ts.map +1 -0
- package/dist/flow/paint.js +393 -0
- package/dist/flow/paint.js.map +1 -0
- package/dist/flow/paths.d.ts +14 -0
- package/dist/flow/paths.d.ts.map +1 -1
- package/dist/flow/paths.js +45 -19
- package/dist/flow/paths.js.map +1 -1
- package/dist/flow/scene.d.ts +584 -0
- package/dist/flow/scene.d.ts.map +1 -0
- package/dist/flow/scene.js +1453 -0
- package/dist/flow/scene.js.map +1 -0
- package/dist/flow/types.d.ts +111 -1
- package/dist/flow/types.d.ts.map +1 -1
- package/dist/html/controls.d.ts +28 -0
- package/dist/html/controls.d.ts.map +1 -1
- package/dist/html/controls.js +52 -2
- package/dist/html/controls.js.map +1 -1
- package/dist/html/css/calc.d.ts +14 -0
- package/dist/html/css/calc.d.ts.map +1 -0
- package/dist/html/css/calc.js +344 -0
- package/dist/html/css/calc.js.map +1 -0
- package/dist/html/css/cascade.d.ts +262 -6
- package/dist/html/css/cascade.d.ts.map +1 -1
- package/dist/html/css/cascade.js +1373 -67
- package/dist/html/css/cascade.js.map +1 -1
- package/dist/html/css/color.d.ts +23 -0
- package/dist/html/css/color.d.ts.map +1 -0
- package/dist/html/css/color.js +740 -0
- package/dist/html/css/color.js.map +1 -0
- package/dist/html/css/content.d.ts +92 -0
- package/dist/html/css/content.d.ts.map +1 -0
- package/dist/html/css/content.js +388 -0
- package/dist/html/css/content.js.map +1 -0
- package/dist/html/css/counter-styles.d.ts +76 -0
- package/dist/html/css/counter-styles.d.ts.map +1 -0
- package/dist/html/css/counter-styles.js +893 -0
- package/dist/html/css/counter-styles.js.map +1 -0
- package/dist/html/css/decode.d.ts +12 -0
- package/dist/html/css/decode.d.ts.map +1 -0
- package/dist/html/css/decode.js +116 -0
- package/dist/html/css/decode.js.map +1 -0
- package/dist/html/css/parse.d.ts +110 -10
- package/dist/html/css/parse.d.ts.map +1 -1
- package/dist/html/css/parse.js +1473 -180
- package/dist/html/css/parse.js.map +1 -1
- package/dist/html/css/style.d.ts +501 -15
- package/dist/html/css/style.d.ts.map +1 -1
- package/dist/html/css/style.js +3729 -206
- package/dist/html/css/style.js.map +1 -1
- package/dist/html/css/ua.d.ts.map +1 -1
- package/dist/html/css/ua.js +65 -16
- package/dist/html/css/ua.js.map +1 -1
- package/dist/html/css/values.d.ts +37 -3
- package/dist/html/css/values.d.ts.map +1 -1
- package/dist/html/css/values.js +122 -48
- package/dist/html/css/values.js.map +1 -1
- package/dist/html/css/vars.d.ts +52 -0
- package/dist/html/css/vars.d.ts.map +1 -0
- package/dist/html/css/vars.js +358 -0
- package/dist/html/css/vars.js.map +1 -0
- package/dist/html/dom.d.ts +30 -4
- package/dist/html/dom.d.ts.map +1 -1
- package/dist/html/dom.js +278 -17
- package/dist/html/dom.js.map +1 -1
- package/dist/html/fonts.d.ts +106 -0
- package/dist/html/fonts.d.ts.map +1 -0
- package/dist/html/fonts.js +565 -0
- package/dist/html/fonts.js.map +1 -0
- package/dist/html/gif.d.ts +15 -0
- package/dist/html/gif.d.ts.map +1 -0
- package/dist/html/gif.js +229 -0
- package/dist/html/gif.js.map +1 -0
- package/dist/html/index.d.ts +50 -11
- package/dist/html/index.d.ts.map +1 -1
- package/dist/html/index.js +115 -9
- package/dist/html/index.js.map +1 -1
- package/dist/html/layout/block.d.ts +226 -3
- package/dist/html/layout/block.d.ts.map +1 -1
- package/dist/html/layout/block.js +3077 -219
- package/dist/html/layout/block.js.map +1 -1
- package/dist/html/layout/boxes.d.ts +367 -17
- package/dist/html/layout/boxes.d.ts.map +1 -1
- package/dist/html/layout/boxes.js +1742 -182
- package/dist/html/layout/boxes.js.map +1 -1
- package/dist/html/layout/cache.d.ts +58 -0
- package/dist/html/layout/cache.d.ts.map +1 -0
- package/dist/html/layout/cache.js +224 -0
- package/dist/html/layout/cache.js.map +1 -0
- package/dist/html/layout/collapse.d.ts +45 -0
- package/dist/html/layout/collapse.d.ts.map +1 -0
- package/dist/html/layout/collapse.js +246 -0
- package/dist/html/layout/collapse.js.map +1 -0
- package/dist/html/layout/css-grid.d.ts +7 -0
- package/dist/html/layout/css-grid.d.ts.map +1 -0
- package/dist/html/layout/css-grid.js +900 -0
- package/dist/html/layout/css-grid.js.map +1 -0
- package/dist/html/layout/flex.d.ts.map +1 -1
- package/dist/html/layout/flex.js +1025 -89
- package/dist/html/layout/flex.js.map +1 -1
- package/dist/html/layout/floats.d.ts +45 -6
- package/dist/html/layout/floats.d.ts.map +1 -1
- package/dist/html/layout/floats.js +113 -14
- package/dist/html/layout/floats.js.map +1 -1
- package/dist/html/layout/grid-lines.d.ts +39 -0
- package/dist/html/layout/grid-lines.d.ts.map +1 -0
- package/dist/html/layout/grid-lines.js +119 -0
- package/dist/html/layout/grid-lines.js.map +1 -0
- package/dist/html/layout/grid.d.ts +53 -0
- package/dist/html/layout/grid.d.ts.map +1 -0
- package/dist/html/layout/grid.js +153 -0
- package/dist/html/layout/grid.js.map +1 -0
- package/dist/html/layout/inline.d.ts +154 -1
- package/dist/html/layout/inline.d.ts.map +1 -1
- package/dist/html/layout/inline.js +3598 -175
- package/dist/html/layout/inline.js.map +1 -1
- package/dist/html/layout/shaping.d.ts +6 -0
- package/dist/html/layout/shaping.d.ts.map +1 -0
- package/dist/html/layout/shaping.js +100 -0
- package/dist/html/layout/shaping.js.map +1 -0
- package/dist/html/layout/table.d.ts +3 -0
- package/dist/html/layout/table.d.ts.map +1 -1
- package/dist/html/layout/table.js +681 -175
- package/dist/html/layout/table.js.map +1 -1
- package/dist/html/layout/tracks.d.ts +44 -0
- package/dist/html/layout/tracks.d.ts.map +1 -0
- package/dist/html/layout/tracks.js +349 -0
- package/dist/html/layout/tracks.js.map +1 -0
- package/dist/html/node.d.ts +169 -4
- package/dist/html/node.d.ts.map +1 -1
- package/dist/html/node.js +1429 -137
- package/dist/html/node.js.map +1 -1
- package/dist/html/paint.d.ts +92 -3
- package/dist/html/paint.d.ts.map +1 -1
- package/dist/html/paint.js +3635 -107
- package/dist/html/paint.js.map +1 -1
- package/dist/html/resources.d.ts +60 -14
- package/dist/html/resources.d.ts.map +1 -1
- package/dist/html/resources.js +122 -36
- package/dist/html/resources.js.map +1 -1
- package/dist/html/surfaces.d.ts +23 -0
- package/dist/html/surfaces.d.ts.map +1 -0
- package/dist/html/surfaces.js +68 -0
- package/dist/html/surfaces.js.map +1 -0
- package/dist/html/svg.d.ts +80 -0
- package/dist/html/svg.d.ts.map +1 -0
- package/dist/html/svg.js +442 -0
- package/dist/html/svg.js.map +1 -0
- package/dist/html/url.d.ts +23 -0
- package/dist/html/url.d.ts.map +1 -0
- package/dist/html/url.js +80 -0
- package/dist/html/url.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/codelines.d.ts +42 -0
- package/dist/internal/codelines.d.ts.map +1 -0
- package/dist/internal/codelines.js +170 -0
- package/dist/internal/codelines.js.map +1 -0
- package/dist/internal/collate.d.ts +3 -0
- package/dist/internal/collate.d.ts.map +1 -0
- package/dist/internal/collate.js +11 -0
- package/dist/internal/collate.js.map +1 -0
- package/dist/internal/markdown/ast.d.ts +11 -0
- package/dist/internal/markdown/ast.d.ts.map +1 -1
- package/dist/internal/markdown/parse.d.ts.map +1 -1
- package/dist/internal/markdown/parse.js +109 -8
- package/dist/internal/markdown/parse.js.map +1 -1
- package/dist/internal/prewarm.d.ts +18 -0
- package/dist/internal/prewarm.d.ts.map +1 -0
- package/dist/internal/prewarm.js +42 -0
- package/dist/internal/prewarm.js.map +1 -0
- package/dist/internal/sdf.d.ts +20 -0
- package/dist/internal/sdf.d.ts.map +1 -0
- package/dist/internal/sdf.js +216 -0
- package/dist/internal/sdf.js.map +1 -0
- package/dist/internal/splice.d.ts +12 -0
- package/dist/internal/splice.d.ts.map +1 -0
- package/dist/internal/splice.js +23 -0
- package/dist/internal/splice.js.map +1 -0
- package/dist/internal/window.d.ts +12 -0
- package/dist/internal/window.d.ts.map +1 -1
- package/dist/internal/window.js +23 -6
- package/dist/internal/window.js.map +1 -1
- package/dist/maps/anchors.d.ts +6 -1
- package/dist/maps/anchors.d.ts.map +1 -1
- package/dist/maps/anchors.js +260 -1
- package/dist/maps/anchors.js.map +1 -1
- package/dist/maps/controller.d.ts +57 -0
- package/dist/maps/controller.d.ts.map +1 -1
- package/dist/maps/controller.js +97 -18
- package/dist/maps/controller.js.map +1 -1
- package/dist/maps/gl/buckets.d.ts +5 -1
- package/dist/maps/gl/buckets.d.ts.map +1 -1
- package/dist/maps/gl/buckets.js +5 -2
- package/dist/maps/gl/buckets.js.map +1 -1
- package/dist/maps/gl/build-worker.d.ts +2 -0
- package/dist/maps/gl/build-worker.d.ts.map +1 -1
- package/dist/maps/gl/build-worker.js +1 -1
- package/dist/maps/gl/build-worker.js.map +1 -1
- package/dist/maps/gl/cover.d.ts +23 -4
- package/dist/maps/gl/cover.d.ts.map +1 -1
- package/dist/maps/gl/cover.js +61 -48
- package/dist/maps/gl/cover.js.map +1 -1
- package/dist/maps/gl/placement.d.ts +21 -8
- package/dist/maps/gl/placement.d.ts.map +1 -1
- package/dist/maps/gl/placement.js +133 -58
- package/dist/maps/gl/placement.js.map +1 -1
- package/dist/maps/gl/renderer.d.ts +36 -4
- package/dist/maps/gl/renderer.d.ts.map +1 -1
- package/dist/maps/gl/renderer.js +81 -24
- package/dist/maps/gl/renderer.js.map +1 -1
- package/dist/maps/gl/shaders.d.ts +18 -17
- package/dist/maps/gl/shaders.d.ts.map +1 -1
- package/dist/maps/gl/shaders.js +34 -32
- package/dist/maps/gl/shaders.js.map +1 -1
- package/dist/maps/gl/store.d.ts +10 -0
- package/dist/maps/gl/store.d.ts.map +1 -1
- package/dist/maps/gl/store.js +47 -4
- package/dist/maps/gl/store.js.map +1 -1
- package/dist/maps/gl/text.d.ts +153 -24
- package/dist/maps/gl/text.d.ts.map +1 -1
- package/dist/maps/gl/text.js +379 -63
- package/dist/maps/gl/text.js.map +1 -1
- package/dist/maps/gl/view.d.ts +293 -2
- package/dist/maps/gl/view.d.ts.map +1 -1
- package/dist/maps/gl/view.js +317 -82
- package/dist/maps/gl/view.js.map +1 -1
- package/dist/maps/icons.d.ts +32 -0
- package/dist/maps/icons.d.ts.map +1 -0
- package/dist/maps/icons.js +151 -0
- package/dist/maps/icons.js.map +1 -0
- package/dist/maps/index.d.ts +2 -0
- package/dist/maps/index.d.ts.map +1 -1
- package/dist/maps/index.js +2 -0
- package/dist/maps/index.js.map +1 -1
- package/dist/maps/labels.d.ts +56 -4
- package/dist/maps/labels.d.ts.map +1 -1
- package/dist/maps/labels.js +213 -46
- package/dist/maps/labels.js.map +1 -1
- package/dist/maps/node.d.ts +17 -0
- package/dist/maps/node.d.ts.map +1 -1
- package/dist/maps/node.js +64 -30
- package/dist/maps/node.js.map +1 -1
- package/dist/maps/proj.d.ts +48 -0
- package/dist/maps/proj.d.ts.map +1 -1
- package/dist/maps/proj.js +73 -0
- package/dist/maps/proj.js.map +1 -1
- package/dist/maps/sources.d.ts +5 -3
- package/dist/maps/sources.d.ts.map +1 -1
- package/dist/maps/sources.js +5 -3
- package/dist/maps/sources.js.map +1 -1
- package/dist/maps/style.d.ts +35 -0
- package/dist/maps/style.d.ts.map +1 -1
- package/dist/maps/style.js.map +1 -1
- package/dist/maps/styles.d.ts +12 -0
- package/dist/maps/styles.d.ts.map +1 -1
- package/dist/maps/styles.js +120 -6
- package/dist/maps/styles.js.map +1 -1
- package/dist/maps/tiles.d.ts +31 -11
- package/dist/maps/tiles.d.ts.map +1 -1
- package/dist/maps/tiles.js +61 -27
- package/dist/maps/tiles.js.map +1 -1
- package/dist/maps/types.d.ts +28 -4
- package/dist/maps/types.d.ts.map +1 -1
- package/dist/markdown/index.d.ts.map +1 -1
- package/dist/markdown/index.js +209 -68
- package/dist/markdown/index.js.map +1 -1
- package/dist/markdown/spans.d.ts.map +1 -1
- package/dist/markdown/spans.js +6 -0
- package/dist/markdown/spans.js.map +1 -1
- package/dist/qml/containers.d.ts.map +1 -1
- package/dist/qml/containers.js +6 -1
- package/dist/qml/containers.js.map +1 -1
- package/dist/qml/interaction.d.ts.map +1 -1
- package/dist/qml/interaction.js +38 -5
- package/dist/qml/interaction.js.map +1 -1
- package/dist/qml/layouts.d.ts.map +1 -1
- package/dist/qml/layouts.js +21 -6
- package/dist/qml/layouts.js.map +1 -1
- package/dist/qml/qtquick.d.ts.map +1 -1
- package/dist/qml/qtquick.js +9 -2
- package/dist/qml/qtquick.js.map +1 -1
- package/dist/qml/react.d.ts.map +1 -1
- package/dist/qml/react.js +9 -7
- package/dist/qml/react.js.map +1 -1
- package/dist/reorder/clock.d.ts +7 -0
- package/dist/reorder/clock.d.ts.map +1 -0
- package/dist/reorder/clock.js +26 -0
- package/dist/reorder/clock.js.map +1 -0
- package/dist/reorder/index.d.ts +25 -3
- package/dist/reorder/index.d.ts.map +1 -1
- package/dist/reorder/index.js +64 -19
- package/dist/reorder/index.js.map +1 -1
- package/dist/rich-text-editor/index.d.ts +0 -11
- package/dist/rich-text-editor/index.d.ts.map +1 -1
- package/dist/rich-text-editor/index.js +38 -9
- package/dist/rich-text-editor/index.js.map +1 -1
- package/dist/rich-text-editor/keymap.d.ts.map +1 -1
- package/dist/rich-text-editor/keymap.js +2 -1
- package/dist/rich-text-editor/keymap.js.map +1 -1
- package/dist/rich-text-editor/keys.d.ts +17 -6
- package/dist/rich-text-editor/keys.d.ts.map +1 -1
- package/dist/rich-text-editor/keys.js +135 -26
- package/dist/rich-text-editor/keys.js.map +1 -1
- package/dist/rich-text-editor/markdown.d.ts.map +1 -1
- package/dist/rich-text-editor/markdown.js +30 -1
- package/dist/rich-text-editor/markdown.js.map +1 -1
- package/dist/rich-text-editor/marks.d.ts +9 -0
- package/dist/rich-text-editor/marks.d.ts.map +1 -0
- package/dist/rich-text-editor/marks.js +83 -0
- package/dist/rich-text-editor/marks.js.map +1 -0
- package/dist/rich-text-editor/render.d.ts.map +1 -1
- package/dist/rich-text-editor/render.js +28 -10
- package/dist/rich-text-editor/render.js.map +1 -1
- package/dist/rich-text-editor/replace.d.ts +13 -0
- package/dist/rich-text-editor/replace.d.ts.map +1 -0
- package/dist/rich-text-editor/replace.js +64 -0
- package/dist/rich-text-editor/replace.js.map +1 -0
- package/dist/rich-text-editor/toolbar.d.ts.map +1 -1
- package/dist/rich-text-editor/toolbar.js +1 -1
- package/dist/rich-text-editor/toolbar.js.map +1 -1
- package/dist/rich-text-editor/virtual.d.ts.map +1 -1
- package/dist/rich-text-editor/virtual.js +17 -0
- package/dist/rich-text-editor/virtual.js.map +1 -1
- package/dist/richtext/node.d.ts +46 -2
- package/dist/richtext/node.d.ts.map +1 -1
- package/dist/richtext/node.js +187 -4
- package/dist/richtext/node.js.map +1 -1
- package/dist/richtext/runs.d.ts +13 -8
- package/dist/richtext/runs.d.ts.map +1 -1
- package/dist/richtext/runs.js +18 -8
- package/dist/richtext/runs.js.map +1 -1
- package/dist/table/index.d.ts.map +1 -1
- package/dist/table/index.js +23 -0
- package/dist/table/index.js.map +1 -1
- package/dist/table/rows.d.ts +3 -2
- package/dist/table/rows.d.ts.map +1 -1
- package/dist/table/rows.js +20 -6
- package/dist/table/rows.js.map +1 -1
- package/dist/terminal/index.d.ts.map +1 -1
- package/dist/terminal/index.js +4 -0
- package/dist/terminal/index.js.map +1 -1
- package/dist/terminal/vt/pty.d.ts +13 -2
- package/dist/terminal/vt/pty.d.ts.map +1 -1
- package/dist/terminal/vt/pty.js +18 -3
- package/dist/terminal/vt/pty.js.map +1 -1
- package/dist/terminal-output/index.d.ts.map +1 -1
- package/dist/terminal-output/index.js +103 -23
- package/dist/terminal-output/index.js.map +1 -1
- package/dist/terminal-output/runs.d.ts +4 -1
- package/dist/terminal-output/runs.d.ts.map +1 -1
- package/dist/terminal-output/runs.js +5 -1
- package/dist/terminal-output/runs.js.map +1 -1
- package/dist/three/canvas.d.ts.map +1 -1
- package/dist/three/canvas.js +85 -7
- package/dist/three/canvas.js.map +1 -1
- package/dist/three/events.d.ts +22 -4
- package/dist/three/events.d.ts.map +1 -1
- package/dist/three/events.js +34 -4
- package/dist/three/events.js.map +1 -1
- package/dist/tree/index.d.ts.map +1 -1
- package/dist/tree/index.js +17 -0
- package/dist/tree/index.js.map +1 -1
- package/package.json +42 -33
- package/src/charts/node.ts +62 -26
- package/src/charts/render.ts +120 -30
- package/src/code/index.ts +36 -32
- package/src/code-editor/completion.ts +3 -2
- package/src/code-editor/index.ts +19 -0
- package/src/code-editor/node.ts +1574 -184
- package/src/code-language/index.ts +1 -1
- package/src/code-language/languages/glsl.ts +12 -2
- package/src/code-language/languages/javascript.ts +21 -4
- package/src/code-language/languages/json.ts +12 -2
- package/src/code-language/languages/shell.ts +12 -2
- package/src/code-language/languages/sql.ts +22 -2
- package/src/code-language/runs.ts +111 -1
- package/src/code-language/stream.ts +257 -17
- package/src/code-language/types.ts +5 -4
- package/src/codeblock/index.ts +68 -4
- package/src/flow/draw.ts +167 -41
- package/src/flow/gl/color.ts +85 -0
- package/src/flow/gl/index.ts +342 -0
- package/src/flow/gl/pack.ts +585 -0
- package/src/flow/gl/renderer.ts +679 -0
- package/src/flow/gl/shaders.ts +371 -0
- package/src/flow/gl/text.ts +1295 -0
- package/src/flow/index.ts +794 -67
- package/src/flow/node.ts +2496 -1256
- package/src/flow/paint.ts +511 -0
- package/src/flow/paths.ts +80 -15
- package/src/flow/scene.ts +2199 -0
- package/src/flow/types.ts +113 -1
- package/src/html/controls.ts +73 -2
- package/src/html/css/calc.ts +385 -0
- package/src/html/css/cascade.ts +1481 -62
- package/src/html/css/color.ts +755 -0
- package/src/html/css/content.ts +417 -0
- package/src/html/css/counter-styles.ts +973 -0
- package/src/html/css/decode.ts +130 -0
- package/src/html/css/parse.ts +1514 -160
- package/src/html/css/style.ts +4131 -223
- package/src/html/css/ua.ts +66 -17
- package/src/html/css/values.ts +150 -50
- package/src/html/css/vars.ts +348 -0
- package/src/html/dom.ts +284 -17
- package/src/html/fonts.ts +641 -0
- package/src/html/gif.ts +233 -0
- package/src/html/index.ts +180 -20
- package/src/html/layout/block.ts +3560 -208
- package/src/html/layout/boxes.ts +2141 -190
- package/src/html/layout/cache.ts +289 -0
- package/src/html/layout/collapse.ts +317 -0
- package/src/html/layout/css-grid.ts +1063 -0
- package/src/html/layout/flex.ts +1115 -106
- package/src/html/layout/floats.ts +128 -14
- package/src/html/layout/grid-lines.ts +141 -0
- package/src/html/layout/grid.ts +181 -0
- package/src/html/layout/inline.ts +4187 -192
- package/src/html/layout/shaping.ts +140 -0
- package/src/html/layout/table.ts +696 -186
- package/src/html/layout/tracks.ts +437 -0
- package/src/html/node.ts +1585 -156
- package/src/html/paint.ts +4582 -267
- package/src/html/resources.ts +161 -50
- package/src/html/surfaces.ts +81 -0
- package/src/html/svg.ts +504 -0
- package/src/html/url.ts +86 -0
- package/src/index.ts +2 -0
- package/src/internal/codelines.ts +200 -0
- package/src/internal/collate.ts +12 -0
- package/src/internal/markdown/ast.ts +11 -0
- package/src/internal/markdown/parse.ts +154 -11
- package/src/internal/prewarm.ts +45 -0
- package/src/internal/sdf.ts +227 -0
- package/src/internal/splice.ts +25 -0
- package/src/internal/window.ts +36 -5
- package/src/maps/anchors.ts +307 -1
- package/src/maps/controller.ts +116 -31
- package/src/maps/gl/buckets.ts +5 -1
- package/src/maps/gl/build-worker.ts +13 -2
- package/src/maps/gl/cover.ts +79 -44
- package/src/maps/gl/placement.ts +221 -69
- package/src/maps/gl/renderer.ts +104 -20
- package/src/maps/gl/shaders.ts +35 -32
- package/src/maps/gl/store.ts +66 -17
- package/src/maps/gl/text.ts +444 -71
- package/src/maps/gl/view.ts +361 -96
- package/src/maps/icons.ts +183 -0
- package/src/maps/index.ts +4 -0
- package/src/maps/labels.ts +269 -49
- package/src/maps/node.ts +82 -49
- package/src/maps/proj.ts +87 -0
- package/src/maps/sources.ts +5 -3
- package/src/maps/style.ts +32 -0
- package/src/maps/styles.ts +215 -4
- package/src/maps/tiles.ts +64 -31
- package/src/maps/types.ts +28 -4
- package/src/markdown/index.ts +293 -92
- package/src/markdown/spans.ts +5 -0
- package/src/qml/containers.tsx +6 -1
- package/src/qml/interaction.tsx +42 -5
- package/src/qml/layouts.tsx +21 -6
- package/src/qml/qtquick.tsx +9 -2
- package/src/qml/react.tsx +7 -5
- package/src/reorder/clock.ts +27 -0
- package/src/reorder/index.ts +100 -27
- package/src/rich-text-editor/index.ts +37 -12
- package/src/rich-text-editor/keymap.ts +1 -1
- package/src/rich-text-editor/keys.ts +135 -26
- package/src/rich-text-editor/markdown.ts +36 -1
- package/src/rich-text-editor/marks.ts +101 -0
- package/src/rich-text-editor/render.ts +49 -12
- package/src/rich-text-editor/replace.ts +85 -0
- package/src/rich-text-editor/toolbar.ts +1 -1
- package/src/rich-text-editor/virtual.ts +25 -0
- package/src/richtext/node.ts +235 -14
- package/src/richtext/runs.ts +23 -12
- package/src/table/index.ts +29 -0
- package/src/table/rows.ts +18 -8
- package/src/terminal/index.ts +4 -0
- package/src/terminal/vt/pty.ts +16 -2
- package/src/terminal-output/index.ts +129 -31
- package/src/terminal-output/runs.ts +16 -2
- package/src/three/canvas.ts +102 -8
- package/src/three/events.ts +49 -9
- package/src/tree/index.ts +19 -0
package/src/maps/controller.ts
CHANGED
|
@@ -240,18 +240,6 @@ const timers = globalThis as {
|
|
|
240
240
|
performance?: { now(): number };
|
|
241
241
|
};
|
|
242
242
|
|
|
243
|
-
/**
|
|
244
|
-
* The clock a glide is measured on.
|
|
245
|
-
*
|
|
246
|
-
* `performance.now()` rather than the `Date.now()` the settle window uses:
|
|
247
|
-
* this one is compared across two frames of a 60Hz display, and `Date.now()`
|
|
248
|
-
* counts whole milliseconds, so a sixth of the step would be error. Reached
|
|
249
|
-
* through `globalThis` because `src/` compiles with `types: []`.
|
|
250
|
-
*/
|
|
251
|
-
function now(): number {
|
|
252
|
-
return timers.performance?.now() ?? Date.now();
|
|
253
|
-
}
|
|
254
|
-
|
|
255
243
|
/**
|
|
256
244
|
* The settle timer, unref'd where the runtime allows it.
|
|
257
245
|
*
|
|
@@ -266,6 +254,29 @@ function arm(tick: () => void, ms: number): unknown {
|
|
|
266
254
|
return handle;
|
|
267
255
|
}
|
|
268
256
|
|
|
257
|
+
/**
|
|
258
|
+
* The clock a glide is measured on, and the timer that steps it.
|
|
259
|
+
*
|
|
260
|
+
* `performance.now()` rather than the `Date.now()` the settle window uses:
|
|
261
|
+
* this one is compared across two frames of a 60Hz display, and `Date.now()`
|
|
262
|
+
* counts whole milliseconds, so a sixth of the step would be error. Reached
|
|
263
|
+
* through `globalThis` because `src/` compiles with `types: []`.
|
|
264
|
+
*
|
|
265
|
+
* One object, exported from this module though not from the package, so a
|
|
266
|
+
* test can stand in for both and step a glide a frame at a time. The glide
|
|
267
|
+
* is wall-clock time on purpose, and a runner slow enough to spend the whole
|
|
268
|
+
* of one inside a single `await` finds it over before it can look.
|
|
269
|
+
*/
|
|
270
|
+
export const glideClock = {
|
|
271
|
+
now(): number {
|
|
272
|
+
return timers.performance?.now() ?? Date.now();
|
|
273
|
+
},
|
|
274
|
+
arm,
|
|
275
|
+
disarm(handle: unknown): void {
|
|
276
|
+
timers.clearTimeout?.(handle);
|
|
277
|
+
},
|
|
278
|
+
};
|
|
279
|
+
|
|
269
280
|
function clamp(value: number, low: number, high: number): number {
|
|
270
281
|
return value < low ? low : value > high ? high : value;
|
|
271
282
|
}
|
|
@@ -287,6 +298,10 @@ export class MapController {
|
|
|
287
298
|
* claims nothing and starts no gesture.
|
|
288
299
|
*/
|
|
289
300
|
painting = false;
|
|
301
|
+
/** A camera move made while `painting`, waiting for the frame to end —
|
|
302
|
+
* `previous` is the camera the *first* such move started from, so the
|
|
303
|
+
* view is told the whole delta however many were fused. */
|
|
304
|
+
private _paintMove: { previous: MapCamera } | null = null;
|
|
290
305
|
|
|
291
306
|
private _props: MapControllerProps = {};
|
|
292
307
|
/** The camera, when the application does not control it. */
|
|
@@ -361,7 +376,7 @@ export class MapController {
|
|
|
361
376
|
dispose(): void {
|
|
362
377
|
if (this._settleTimer !== null) timers.clearTimeout?.(this._settleTimer);
|
|
363
378
|
this._settleTimer = null;
|
|
364
|
-
if (this._glideTimer !== null)
|
|
379
|
+
if (this._glideTimer !== null) glideClock.disarm(this._glideTimer);
|
|
365
380
|
this._glideTimer = null;
|
|
366
381
|
this._glide = null;
|
|
367
382
|
}
|
|
@@ -443,11 +458,49 @@ export class MapController {
|
|
|
443
458
|
const controlled = this._props.camera !== undefined;
|
|
444
459
|
if (!controlled) this._camera = camera;
|
|
445
460
|
this._props.onCameraChange?.(camera);
|
|
446
|
-
if (this.painting)
|
|
461
|
+
if (this.painting) {
|
|
462
|
+
// A camera set from **inside** a frame, which is how every camera
|
|
463
|
+
// animation is written: the map's own `onFrame` is the clock, and the
|
|
464
|
+
// GL view calls it while it is still painting. Re-entering the paint
|
|
465
|
+
// is not on, but returning here used to drop the move's *scheduling*
|
|
466
|
+
// as well as its redraw — so the animation had nothing to ask for the
|
|
467
|
+
// next frame with, and stopped until something unrelated re-rendered.
|
|
468
|
+
//
|
|
469
|
+
// In the maps-gl example that something was the status bar's
|
|
470
|
+
// half-second interval, and it showed as exactly that: frames every
|
|
471
|
+
// 11ms, then a 511ms hole with the next request arriving at +508 —
|
|
472
|
+
// nobody asking, rather than anyone being slow. Manual panning never
|
|
473
|
+
// hit it because an input event is not inside a paint.
|
|
474
|
+
//
|
|
475
|
+
// So the move is remembered, with the camera it started from, and
|
|
476
|
+
// finished when the frame ends.
|
|
477
|
+
this._paintMove ??= { previous };
|
|
478
|
+
return;
|
|
479
|
+
}
|
|
447
480
|
this.touch();
|
|
448
481
|
if (!controlled) this._view?.moved(previous, camera, blit);
|
|
449
482
|
}
|
|
450
483
|
|
|
484
|
+
/**
|
|
485
|
+
* A frame finished: do whatever `apply` deferred because it was painting.
|
|
486
|
+
* Called from both painters (`gl/view.ts`, `node.ts`) wherever `painting`
|
|
487
|
+
* goes back to false.
|
|
488
|
+
*
|
|
489
|
+
* Never a blit. A blit needs the exact transform it is shifting from, and
|
|
490
|
+
* what is flushed here may be several moves fused into one; a full redraw
|
|
491
|
+
* of a frame that was going to be drawn anyway costs nothing next to
|
|
492
|
+
* getting that wrong.
|
|
493
|
+
*/
|
|
494
|
+
paintEnded(): void {
|
|
495
|
+
const move = this._paintMove;
|
|
496
|
+
if (!move) return;
|
|
497
|
+
this._paintMove = null;
|
|
498
|
+
this.touch();
|
|
499
|
+
if (this._props.camera === undefined) {
|
|
500
|
+
this._view?.moved(move.previous, this.camera(), false);
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
|
|
451
504
|
getCamera(): MapCamera {
|
|
452
505
|
const camera = this.camera();
|
|
453
506
|
return { center: { ...camera.center }, zoom: camera.zoom };
|
|
@@ -501,6 +554,17 @@ export class MapController {
|
|
|
501
554
|
this._maxZoom(),
|
|
502
555
|
);
|
|
503
556
|
if (zoom === camera.zoom) return;
|
|
557
|
+
this.apply(this._zoomedAbout(camera, zoom, x, y), false);
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
/** `camera` at `zoom`, with the point at pane-local `x`, `y` where it
|
|
561
|
+
* was: what {@link zoomAbout} moves to, and what a glide arrives at. */
|
|
562
|
+
private _zoomedAbout(
|
|
563
|
+
camera: MapCamera,
|
|
564
|
+
zoom: number,
|
|
565
|
+
x: number,
|
|
566
|
+
y: number,
|
|
567
|
+
): MapCamera {
|
|
504
568
|
const before = this.transform(camera);
|
|
505
569
|
const anchor = unprojectPoint(before, x, y);
|
|
506
570
|
const after = this.transform({ center: camera.center, zoom });
|
|
@@ -509,21 +573,42 @@ export class MapController {
|
|
|
509
573
|
const moved = projectLngLat(after, anchor);
|
|
510
574
|
const dx = (moved.x - x) / after.world;
|
|
511
575
|
const dy = (moved.y - y) / after.world;
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
576
|
+
return {
|
|
577
|
+
zoom,
|
|
578
|
+
center: unprojectPoint(
|
|
579
|
+
{
|
|
580
|
+
...after,
|
|
581
|
+
centerX: after.centerX + dx,
|
|
582
|
+
centerY: after.centerY + dy,
|
|
583
|
+
},
|
|
584
|
+
after.paneX,
|
|
585
|
+
after.paneY,
|
|
586
|
+
),
|
|
587
|
+
};
|
|
588
|
+
}
|
|
589
|
+
|
|
590
|
+
/**
|
|
591
|
+
* Where the camera is going, when that is known before it gets there: the
|
|
592
|
+
* end of a wheel's glide. Null while nothing is gliding — a touchpad's
|
|
593
|
+
* stream, a drag or an application's own animation go wherever the next
|
|
594
|
+
* event says, and the view has only the camera to go on.
|
|
595
|
+
*
|
|
596
|
+
* What a renderer does with it is get there first: the tiles and label
|
|
597
|
+
* rasters of the view the glide stops at are asked for while the frames
|
|
598
|
+
* of the glide are still being drawn, so the settle has them in hand.
|
|
599
|
+
*/
|
|
600
|
+
destination(): MapCamera | null {
|
|
601
|
+
const glide = this._glide;
|
|
602
|
+
if (!glide || !glide.easing) return null;
|
|
603
|
+
const camera = this.camera();
|
|
604
|
+
if (glide.applied !== camera.zoom) return null;
|
|
605
|
+
const zoom = clamp(
|
|
606
|
+
quantizeZoom(glide.target),
|
|
607
|
+
this._minZoom(),
|
|
608
|
+
this._maxZoom(),
|
|
526
609
|
);
|
|
610
|
+
if (zoom === camera.zoom) return null;
|
|
611
|
+
return this._zoomedAbout(camera, zoom, glide.x, glide.y);
|
|
527
612
|
}
|
|
528
613
|
|
|
529
614
|
/**
|
|
@@ -550,7 +635,7 @@ export class MapController {
|
|
|
550
635
|
y: number,
|
|
551
636
|
smooth: boolean,
|
|
552
637
|
): void {
|
|
553
|
-
const at = now();
|
|
638
|
+
const at = glideClock.now();
|
|
554
639
|
const camera = this.camera();
|
|
555
640
|
const glide = this._glide;
|
|
556
641
|
// Where this delta counts from: the target the wheel has already asked
|
|
@@ -590,13 +675,13 @@ export class MapController {
|
|
|
590
675
|
this._glideTimer = null;
|
|
591
676
|
const glide = this._glide;
|
|
592
677
|
if (glide?.easing !== true) return;
|
|
593
|
-
const at = now();
|
|
678
|
+
const at = glideClock.now();
|
|
594
679
|
// `stepZoom` clears the record when the target is reached or the
|
|
595
680
|
// camera refuses a step, and this re-arms only while one is left.
|
|
596
681
|
this.stepZoom(at, at - glide.at);
|
|
597
682
|
this._armGlide();
|
|
598
683
|
};
|
|
599
|
-
this._glideTimer = arm(tick, GLIDE_TICK_MS);
|
|
684
|
+
this._glideTimer = glideClock.arm(tick, GLIDE_TICK_MS);
|
|
600
685
|
}
|
|
601
686
|
|
|
602
687
|
/**
|
package/src/maps/gl/buckets.ts
CHANGED
|
@@ -38,6 +38,7 @@ import { GeomType, GeometryBuffer } from '../mvt.js';
|
|
|
38
38
|
import type { FeatureCursor, VectorTile } from '../mvt.js';
|
|
39
39
|
import type { PreparedLayer, PreparedStyle } from '../paint.js';
|
|
40
40
|
import type { MapStyleLayer } from '../style.js';
|
|
41
|
+
import type { TileId } from '../proj.js';
|
|
41
42
|
import { buildTileLabels } from '../anchors.js';
|
|
42
43
|
import type { GlLabelData } from '../anchors.js';
|
|
43
44
|
|
|
@@ -324,6 +325,9 @@ interface Group {
|
|
|
324
325
|
export function buildTileBuckets(
|
|
325
326
|
tile: VectorTile,
|
|
326
327
|
prepared: PreparedStyle,
|
|
328
|
+
/** Which tile — what a label layer's `snapInto` distance is measured
|
|
329
|
+
* against (`../anchors.ts`). */
|
|
330
|
+
id?: TileId,
|
|
327
331
|
): GlTileData {
|
|
328
332
|
const started = now();
|
|
329
333
|
const line = new Stream(1024);
|
|
@@ -445,7 +449,7 @@ export function buildTileBuckets(
|
|
|
445
449
|
fill: fill.take(),
|
|
446
450
|
fillRecords: fill.count,
|
|
447
451
|
draws,
|
|
448
|
-
labels: buildTileLabels(tile, prepared, TILE_EXTENT),
|
|
452
|
+
labels: buildTileLabels(tile, prepared, TILE_EXTENT, id),
|
|
449
453
|
stats: {
|
|
450
454
|
features,
|
|
451
455
|
lineRecords: line.count,
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
// specifier would make every build depend on Node's type declarations.
|
|
13
13
|
import { prepareStyle } from '../paint.js';
|
|
14
14
|
import type { PreparedStyle } from '../paint.js';
|
|
15
|
+
import type { TileId } from '../proj.js';
|
|
15
16
|
import { parseVectorTile } from '../sources.js';
|
|
16
17
|
import type { MapStyleLayer } from '../style.js';
|
|
17
18
|
import { buildTileBuckets } from './buckets.js';
|
|
@@ -19,7 +20,13 @@ import { buildTileBuckets } from './buckets.js';
|
|
|
19
20
|
/** What the store sends. */
|
|
20
21
|
export type BuildRequest =
|
|
21
22
|
| { type: 'style'; id: number; layers: MapStyleLayer[] }
|
|
22
|
-
| {
|
|
23
|
+
| {
|
|
24
|
+
type: 'build';
|
|
25
|
+
job: number;
|
|
26
|
+
style: number;
|
|
27
|
+
bytes: Uint8Array;
|
|
28
|
+
tile: TileId;
|
|
29
|
+
};
|
|
23
30
|
|
|
24
31
|
interface Port {
|
|
25
32
|
on(event: 'message', listener: (message: unknown) => void): void;
|
|
@@ -45,7 +52,11 @@ parentPort?.on('message', (message) => {
|
|
|
45
52
|
try {
|
|
46
53
|
const prepared = styles.get(request.style);
|
|
47
54
|
if (!prepared) throw new Error(`style ${request.style} was never sent`);
|
|
48
|
-
const data = buildTileBuckets(
|
|
55
|
+
const data = buildTileBuckets(
|
|
56
|
+
parseVectorTile(request.bytes),
|
|
57
|
+
prepared,
|
|
58
|
+
request.tile,
|
|
59
|
+
);
|
|
49
60
|
const transfer = [data.line, data.fill];
|
|
50
61
|
if (data.labels) transfer.push(data.labels.anchors.buffer as ArrayBuffer);
|
|
51
62
|
parentPort.postMessage({ job: request.job, data }, transfer);
|
package/src/maps/gl/cover.ts
CHANGED
|
@@ -18,7 +18,14 @@
|
|
|
18
18
|
// projection — markers, overlays, labels, `project()`. `tileCover` reads a
|
|
19
19
|
// smaller tile one level deeper instead, which puts every image at its own
|
|
20
20
|
// natural size on the one world everything shares.
|
|
21
|
-
import {
|
|
21
|
+
import {
|
|
22
|
+
BELOW,
|
|
23
|
+
DEFAULT_TILE_SIZE,
|
|
24
|
+
FILL_DEPTH,
|
|
25
|
+
fillFromBelow,
|
|
26
|
+
tileCover,
|
|
27
|
+
transformFor,
|
|
28
|
+
} from '../proj.js';
|
|
22
29
|
import type { MapCamera, TileId, TilePyramid } from '../proj.js';
|
|
23
30
|
import type { GlTileData } from './buckets.js';
|
|
24
31
|
import type { RenderTile } from './renderer.js';
|
|
@@ -27,6 +34,17 @@ import type { RenderTile } from './renderer.js';
|
|
|
27
34
|
* source has no data there, `undefined` while it is still to come. */
|
|
28
35
|
export interface TileLookup {
|
|
29
36
|
get(tile: TileId): GlTileData | null | undefined;
|
|
37
|
+
/**
|
|
38
|
+
* What the store has answered for at or under a tile: `'here'` for the
|
|
39
|
+
* tile itself, `'below'` for only tiles under it — within `FILL_DEPTH`
|
|
40
|
+
* levels — and `undefined` for neither.
|
|
41
|
+
*
|
|
42
|
+
* What lets a hole's search for pieces skip the parts of the pyramid that
|
|
43
|
+
* hold nothing. Without it the search asks `get` for every tile down to
|
|
44
|
+
* that depth — which costs lookups, and stamps a tile still loading as
|
|
45
|
+
* used, so a load the view has left is not cancelled.
|
|
46
|
+
*/
|
|
47
|
+
holds?(tile: TileId): 'here' | 'below' | undefined;
|
|
30
48
|
}
|
|
31
49
|
|
|
32
50
|
export interface CoverResult {
|
|
@@ -53,10 +71,18 @@ const MAX_ANCESTOR = 8;
|
|
|
53
71
|
* The frame's tiles, centre-out, each with its screen square and its clip.
|
|
54
72
|
*
|
|
55
73
|
* A hole — a tile still loading, or one the source has no data for — is
|
|
56
|
-
* covered from whichever side has geometry
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
74
|
+
* covered from whichever side has geometry. Zooming out, that is the tiles
|
|
75
|
+
* under it: each quarter from the nearest level that has it, down to
|
|
76
|
+
* `FILL_DEPTH`. Whatever they leave, and the whole of a hole with nothing
|
|
77
|
+
* under it, is the nearest ancestor's, drawn at its own larger size and
|
|
78
|
+
* clipped to each gap. `AGENTS.md`'s rule for the retained cache holds here
|
|
79
|
+
* too: a pyramid has two neighbours.
|
|
80
|
+
*
|
|
81
|
+
* The first cut tried the ancestor first, and the children only when all
|
|
82
|
+
* four of them were in hand. A zoom out leaves the level it came from in
|
|
83
|
+
* the middle of the view, covering only part of the tiles at the edges, and
|
|
84
|
+
* a quick one leaves it two or three levels down: both were the background,
|
|
85
|
+
* with the sharper tiles in hand.
|
|
60
86
|
*/
|
|
61
87
|
export function renderCover(
|
|
62
88
|
camera: MapCamera,
|
|
@@ -118,53 +144,62 @@ export function renderCover(
|
|
|
118
144
|
own++;
|
|
119
145
|
continue;
|
|
120
146
|
}
|
|
121
|
-
//
|
|
122
|
-
//
|
|
123
|
-
let found = false;
|
|
147
|
+
// Under it: a tile with no data has nothing under it either, and past
|
|
148
|
+
// the pyramid's depth there is nothing to find.
|
|
124
149
|
const { z, x, y } = entry.tile;
|
|
150
|
+
const below = fillFromBelow(
|
|
151
|
+
entry.tile,
|
|
152
|
+
data === null ? 0 : Math.min(FILL_DEPTH, pyramid.maxZoom - z),
|
|
153
|
+
(under) => {
|
|
154
|
+
const held = lookup.holds ? lookup.holds(under) : 'here';
|
|
155
|
+
if (held === undefined) return undefined;
|
|
156
|
+
if (held === 'below') return BELOW;
|
|
157
|
+
const got = lookup.get(under);
|
|
158
|
+
return got === undefined ? BELOW : got;
|
|
159
|
+
},
|
|
160
|
+
);
|
|
161
|
+
for (const piece of below.pieces) {
|
|
162
|
+
const size = clip.width / piece.span;
|
|
163
|
+
const px = clip.x + piece.x * size;
|
|
164
|
+
const py = clip.y + piece.y * size;
|
|
165
|
+
tiles.push({
|
|
166
|
+
data: piece.value,
|
|
167
|
+
x: px,
|
|
168
|
+
y: py,
|
|
169
|
+
size,
|
|
170
|
+
clip: { x: px, y: py, width: size, height: size },
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
if (below.covered) descendants++;
|
|
174
|
+
if (below.gaps.length === 0) continue;
|
|
175
|
+
// Over it: an ancestor, the same ground `2^k` times the size, from
|
|
176
|
+
// `sub` cells above and to the left of this entry's square — drawn once
|
|
177
|
+
// for each gap, clipped to it.
|
|
125
178
|
for (let k = 1; k <= MAX_ANCESTOR && z - k >= pyramid.minZoom; k++) {
|
|
126
179
|
const ancestor = { z: z - k, x: x >> k, y: y >> k };
|
|
127
180
|
const stand = lookup.get(ancestor);
|
|
128
181
|
if (!stand) continue;
|
|
129
|
-
const
|
|
130
|
-
const
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
182
|
+
const size = clip.width * (1 << k);
|
|
183
|
+
const sx = clip.x - (x - (ancestor.x << k)) * clip.width;
|
|
184
|
+
const sy = clip.y - (y - (ancestor.y << k)) * clip.width;
|
|
185
|
+
for (const gap of below.gaps) {
|
|
186
|
+
const edge = clip.width / gap.span;
|
|
187
|
+
tiles.push({
|
|
188
|
+
data: stand,
|
|
189
|
+
x: sx,
|
|
190
|
+
y: sy,
|
|
191
|
+
size,
|
|
192
|
+
clip: {
|
|
193
|
+
x: clip.x + gap.x * edge,
|
|
194
|
+
y: clip.y + gap.y * edge,
|
|
195
|
+
width: edge,
|
|
196
|
+
height: edge,
|
|
197
|
+
},
|
|
198
|
+
});
|
|
199
|
+
}
|
|
138
200
|
ancestors++;
|
|
139
|
-
found = true;
|
|
140
201
|
break;
|
|
141
202
|
}
|
|
142
|
-
if (found || data === null || z + 1 > pyramid.maxZoom) continue;
|
|
143
|
-
// Zooming out: the finer level is what is in hand. Only when all four
|
|
144
|
-
// children have answered, or the hole would be patched with holes.
|
|
145
|
-
const children: (GlTileData | null)[] = [];
|
|
146
|
-
for (let dy = 0; dy < 2; dy++) {
|
|
147
|
-
for (let dx = 0; dx < 2; dx++) {
|
|
148
|
-
const child = lookup.get({ z: z + 1, x: x * 2 + dx, y: y * 2 + dy });
|
|
149
|
-
if (child === undefined) break;
|
|
150
|
-
children.push(child);
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
if (children.length !== 4) continue;
|
|
154
|
-
const half = clip.width / 2;
|
|
155
|
-
children.forEach((child, i) => {
|
|
156
|
-
if (!child) return;
|
|
157
|
-
const cx = clip.x + (i % 2) * half;
|
|
158
|
-
const cy = clip.y + Math.floor(i / 2) * half;
|
|
159
|
-
tiles.push({
|
|
160
|
-
data: child,
|
|
161
|
-
x: cx,
|
|
162
|
-
y: cy,
|
|
163
|
-
size: half,
|
|
164
|
-
clip: { x: cx, y: cy, width: half, height: half },
|
|
165
|
-
});
|
|
166
|
-
});
|
|
167
|
-
descendants++;
|
|
168
203
|
}
|
|
169
204
|
return { tiles, missing, level, own, ancestors, descendants, inView };
|
|
170
205
|
}
|