@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/dist/maps/gl/cover.js
CHANGED
|
@@ -18,17 +18,25 @@
|
|
|
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 { DEFAULT_TILE_SIZE, tileCover, transformFor } from '../proj.js';
|
|
21
|
+
import { BELOW, DEFAULT_TILE_SIZE, FILL_DEPTH, fillFromBelow, tileCover, transformFor, } from '../proj.js';
|
|
22
22
|
/** How far up the pyramid a hole looks for a stand-in. */
|
|
23
23
|
const MAX_ANCESTOR = 8;
|
|
24
24
|
/**
|
|
25
25
|
* The frame's tiles, centre-out, each with its screen square and its clip.
|
|
26
26
|
*
|
|
27
27
|
* A hole — a tile still loading, or one the source has no data for — is
|
|
28
|
-
* covered from whichever side has geometry
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
28
|
+
* covered from whichever side has geometry. Zooming out, that is the tiles
|
|
29
|
+
* under it: each quarter from the nearest level that has it, down to
|
|
30
|
+
* `FILL_DEPTH`. Whatever they leave, and the whole of a hole with nothing
|
|
31
|
+
* under it, is the nearest ancestor's, drawn at its own larger size and
|
|
32
|
+
* clipped to each gap. `AGENTS.md`'s rule for the retained cache holds here
|
|
33
|
+
* too: a pyramid has two neighbours.
|
|
34
|
+
*
|
|
35
|
+
* The first cut tried the ancestor first, and the children only when all
|
|
36
|
+
* four of them were in hand. A zoom out leaves the level it came from in
|
|
37
|
+
* the middle of the view, covering only part of the tiles at the edges, and
|
|
38
|
+
* a quick one leaves it two or three levels down: both were the background,
|
|
39
|
+
* with the sharper tiles in hand.
|
|
32
40
|
*/
|
|
33
41
|
export function renderCover(camera, pane, scale, pyramid, lookup, options = {}) {
|
|
34
42
|
const transform = transformFor(camera, pane, DEFAULT_TILE_SIZE);
|
|
@@ -66,58 +74,63 @@ export function renderCover(camera, pane, scale, pyramid, lookup, options = {})
|
|
|
66
74
|
own++;
|
|
67
75
|
continue;
|
|
68
76
|
}
|
|
69
|
-
//
|
|
70
|
-
//
|
|
71
|
-
let found = false;
|
|
77
|
+
// Under it: a tile with no data has nothing under it either, and past
|
|
78
|
+
// the pyramid's depth there is nothing to find.
|
|
72
79
|
const { z, x, y } = entry.tile;
|
|
80
|
+
const below = fillFromBelow(entry.tile, data === null ? 0 : Math.min(FILL_DEPTH, pyramid.maxZoom - z), (under) => {
|
|
81
|
+
const held = lookup.holds ? lookup.holds(under) : 'here';
|
|
82
|
+
if (held === undefined)
|
|
83
|
+
return undefined;
|
|
84
|
+
if (held === 'below')
|
|
85
|
+
return BELOW;
|
|
86
|
+
const got = lookup.get(under);
|
|
87
|
+
return got === undefined ? BELOW : got;
|
|
88
|
+
});
|
|
89
|
+
for (const piece of below.pieces) {
|
|
90
|
+
const size = clip.width / piece.span;
|
|
91
|
+
const px = clip.x + piece.x * size;
|
|
92
|
+
const py = clip.y + piece.y * size;
|
|
93
|
+
tiles.push({
|
|
94
|
+
data: piece.value,
|
|
95
|
+
x: px,
|
|
96
|
+
y: py,
|
|
97
|
+
size,
|
|
98
|
+
clip: { x: px, y: py, width: size, height: size },
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
if (below.covered)
|
|
102
|
+
descendants++;
|
|
103
|
+
if (below.gaps.length === 0)
|
|
104
|
+
continue;
|
|
105
|
+
// Over it: an ancestor, the same ground `2^k` times the size, from
|
|
106
|
+
// `sub` cells above and to the left of this entry's square — drawn once
|
|
107
|
+
// for each gap, clipped to it.
|
|
73
108
|
for (let k = 1; k <= MAX_ANCESTOR && z - k >= pyramid.minZoom; k++) {
|
|
74
109
|
const ancestor = { z: z - k, x: x >> k, y: y >> k };
|
|
75
110
|
const stand = lookup.get(ancestor);
|
|
76
111
|
if (!stand)
|
|
77
112
|
continue;
|
|
78
|
-
const
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
113
|
+
const size = clip.width * (1 << k);
|
|
114
|
+
const sx = clip.x - (x - (ancestor.x << k)) * clip.width;
|
|
115
|
+
const sy = clip.y - (y - (ancestor.y << k)) * clip.width;
|
|
116
|
+
for (const gap of below.gaps) {
|
|
117
|
+
const edge = clip.width / gap.span;
|
|
118
|
+
tiles.push({
|
|
119
|
+
data: stand,
|
|
120
|
+
x: sx,
|
|
121
|
+
y: sy,
|
|
122
|
+
size,
|
|
123
|
+
clip: {
|
|
124
|
+
x: clip.x + gap.x * edge,
|
|
125
|
+
y: clip.y + gap.y * edge,
|
|
126
|
+
width: edge,
|
|
127
|
+
height: edge,
|
|
128
|
+
},
|
|
129
|
+
});
|
|
130
|
+
}
|
|
87
131
|
ancestors++;
|
|
88
|
-
found = true;
|
|
89
132
|
break;
|
|
90
133
|
}
|
|
91
|
-
if (found || data === null || z + 1 > pyramid.maxZoom)
|
|
92
|
-
continue;
|
|
93
|
-
// Zooming out: the finer level is what is in hand. Only when all four
|
|
94
|
-
// children have answered, or the hole would be patched with holes.
|
|
95
|
-
const children = [];
|
|
96
|
-
for (let dy = 0; dy < 2; dy++) {
|
|
97
|
-
for (let dx = 0; dx < 2; dx++) {
|
|
98
|
-
const child = lookup.get({ z: z + 1, x: x * 2 + dx, y: y * 2 + dy });
|
|
99
|
-
if (child === undefined)
|
|
100
|
-
break;
|
|
101
|
-
children.push(child);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
if (children.length !== 4)
|
|
105
|
-
continue;
|
|
106
|
-
const half = clip.width / 2;
|
|
107
|
-
children.forEach((child, i) => {
|
|
108
|
-
if (!child)
|
|
109
|
-
return;
|
|
110
|
-
const cx = clip.x + (i % 2) * half;
|
|
111
|
-
const cy = clip.y + Math.floor(i / 2) * half;
|
|
112
|
-
tiles.push({
|
|
113
|
-
data: child,
|
|
114
|
-
x: cx,
|
|
115
|
-
y: cy,
|
|
116
|
-
size: half,
|
|
117
|
-
clip: { x: cx, y: cy, width: half, height: half },
|
|
118
|
-
});
|
|
119
|
-
});
|
|
120
|
-
descendants++;
|
|
121
134
|
}
|
|
122
135
|
return { tiles, missing, level, own, ancestors, descendants, inView };
|
|
123
136
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cover.js","sourceRoot":"","sources":["../../../src/maps/gl/cover.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,EAAE;AACF,0EAA0E;AAC1E,4EAA4E;AAC5E,wEAAwE;AACxE,6EAA6E;AAC7E,6EAA6E;AAC7E,6EAA6E;AAC7E,yEAAyE;AACzE,4EAA4E;AAC5E,4EAA4E;AAC5E,2CAA2C;AAC3C,EAAE;AACF,0EAA0E;AAC1E,4EAA4E;AAC5E,4EAA4E;AAC5E,uEAAuE;AACvE,2EAA2E;AAC3E,2EAA2E;AAC3E,mDAAmD;AACnD,OAAO,
|
|
1
|
+
{"version":3,"file":"cover.js","sourceRoot":"","sources":["../../../src/maps/gl/cover.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,21 +41,23 @@ export interface PlacementFrame {
|
|
|
41
41
|
* must, and what the zoom uncovers is named once it stops — not labels
|
|
42
42
|
* arriving and leaving at every step of it. `true` by default. */
|
|
43
43
|
admit?: boolean;
|
|
44
|
-
/** The camera is moving: a label keeps the raster it has, rather than
|
|
45
|
-
* asking for one at each size its zoom ramp passes through. */
|
|
46
|
-
moving?: boolean;
|
|
47
44
|
}
|
|
48
45
|
/** Floats per label instance; the layout `renderer.ts` binds. */
|
|
49
|
-
export declare const LABEL_INSTANCE =
|
|
46
|
+
export declare const LABEL_INSTANCE = 19;
|
|
50
47
|
/** The frame's labels, ready to draw. */
|
|
51
48
|
export interface LabelBatch {
|
|
52
49
|
atlas: LabelAtlas;
|
|
53
50
|
/** {@link LABEL_INSTANCE} floats per label: centre x, y (device
|
|
54
|
-
* pixels); cos, sin of the baseline; the
|
|
55
|
-
* and halo colour, premultiplied and faded; halo
|
|
56
|
-
* the label on whole pixels
|
|
51
|
+
* pixels); cos, sin of the baseline; the field's rect in the atlas x,
|
|
52
|
+
* y, w, h (texels); ink and halo colour, premultiplied and faded; halo
|
|
53
|
+
* radius (device pixels); `1` to set the label on whole pixels; and
|
|
54
|
+
* device pixels per field texel — the drawn size over the atlas's
|
|
55
|
+
* base. */
|
|
57
56
|
instances: Float32Array;
|
|
58
57
|
count: number;
|
|
58
|
+
/** Labels drawn: fewer than `count` where an icon is two instances of
|
|
59
|
+
* its own beside its name's. `count` where absent. */
|
|
60
|
+
labels?: number;
|
|
59
61
|
}
|
|
60
62
|
export interface PlacementStats {
|
|
61
63
|
/** Anchors considered, labels placed, labels drawn (fading ones too). */
|
|
@@ -89,7 +91,7 @@ export declare class LabelPlacer {
|
|
|
89
91
|
reset(): void;
|
|
90
92
|
/**
|
|
91
93
|
* Choose the frame's labels. Asks `atlas` for each contender's box, as
|
|
92
|
-
* the frame's budget allows, and for each winner's
|
|
94
|
+
* the frame's budget allows, and for each winner's field.
|
|
93
95
|
*/
|
|
94
96
|
place(frame: PlacementFrame, atlas: LabelAtlas): void;
|
|
95
97
|
/**
|
|
@@ -98,13 +100,24 @@ export declare class LabelPlacer {
|
|
|
98
100
|
* go of labels that have faded out.
|
|
99
101
|
*/
|
|
100
102
|
batch(frame: PlacementFrame, atlas: LabelAtlas): LabelBatch;
|
|
103
|
+
/** One instance — a label's string, or a piece of its icon — written at
|
|
104
|
+
* `count`: answers the count after it. Level (`angle` 0) is set on
|
|
105
|
+
* whole pixels. */
|
|
106
|
+
private _put;
|
|
101
107
|
/** One anchor as a contender, or null when it cannot be one at all at
|
|
102
108
|
* this zoom — off the view, or on a run too bent or too short for even
|
|
103
109
|
* a short name. `unit` is device pixels per unit of the lengths given. */
|
|
104
110
|
private _candidate;
|
|
111
|
+
/** The icon a label of `layer` is set with: none for a name along a
|
|
112
|
+
* street, and none where the atlas cannot draw it — the name is then set
|
|
113
|
+
* alone rather than not at all. */
|
|
114
|
+
private _icon;
|
|
105
115
|
/** Each symbol layer's labelling at this zoom, by layer index — null
|
|
106
116
|
* where it does not label. */
|
|
107
117
|
private _layersAt;
|
|
118
|
+
/** A layer's icon at this zoom, or null where it sets none — or names
|
|
119
|
+
* one this version does not draw, or a colour that does not parse. */
|
|
120
|
+
private _iconOf;
|
|
108
121
|
private _color;
|
|
109
122
|
}
|
|
110
123
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"placement.d.ts","sourceRoot":"","sources":["../../../src/maps/gl/placement.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAcjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,KAAK,EAAc,UAAU,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"placement.d.ts","sourceRoot":"","sources":["../../../src/maps/gl/placement.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,9 +2,10 @@ import { resolveZoomed } from '../style.js';
|
|
|
2
2
|
import { TILE_EXTENT } from './buckets.js';
|
|
3
3
|
import { parseColor, premultiplied } from './color.js';
|
|
4
4
|
import { LABEL_STRIDE, LEVEL_SNAP, LINE_MARGIN, LabelField, STRAIGHT_FRACTION, estimateWidth, } from '../anchors.js';
|
|
5
|
-
import {
|
|
5
|
+
import { fieldReach } from './text.js';
|
|
6
|
+
import { DEFAULT_ICON_COLOR, DEFAULT_ICON_GLYPH_COLOR, DEFAULT_ICON_SIZE, ICON_GAP, isMapIcon, } from '../icons.js';
|
|
6
7
|
/** Floats per label instance; the layout `renderer.ts` binds. */
|
|
7
|
-
export const LABEL_INSTANCE =
|
|
8
|
+
export const LABEL_INSTANCE = 19;
|
|
8
9
|
/** Logical pixels between two labels, and the extra a newcomer needs. The
|
|
9
10
|
* extra is the hysteresis: the label already shown wins a tie by it. */
|
|
10
11
|
const PADDING = 4;
|
|
@@ -48,7 +49,7 @@ export class LabelPlacer {
|
|
|
48
49
|
}
|
|
49
50
|
/**
|
|
50
51
|
* Choose the frame's labels. Asks `atlas` for each contender's box, as
|
|
51
|
-
* the frame's budget allows, and for each winner's
|
|
52
|
+
* the frame's budget allows, and for each winner's field.
|
|
52
53
|
*/
|
|
53
54
|
place(frame, atlas) {
|
|
54
55
|
const started = now();
|
|
@@ -165,18 +166,28 @@ export class LabelPlacer {
|
|
|
165
166
|
const box = atlas.measure(c.text, c.size);
|
|
166
167
|
if (!box || box.width === 0)
|
|
167
168
|
continue;
|
|
168
|
-
|
|
169
|
-
|
|
169
|
+
let w = box.width;
|
|
170
|
+
let h = box.height;
|
|
170
171
|
if (!c.point) {
|
|
171
172
|
const need = w / 2 + h * LINE_MARGIN;
|
|
172
173
|
if (c.avail < (c.shown ? need * 0.9 : need))
|
|
173
174
|
continue;
|
|
174
175
|
}
|
|
176
|
+
// An icon on the point and the name beside it are one box, placed
|
|
177
|
+
// and given way as one.
|
|
178
|
+
const icon = this._icon(layers[c.layer], c.point, atlas);
|
|
179
|
+
if (icon) {
|
|
180
|
+
const full = icon.size + icon.gap + w;
|
|
181
|
+
c.ox = (full - icon.size) / 2;
|
|
182
|
+
w = full;
|
|
183
|
+
h = Math.max(h, icon.size);
|
|
184
|
+
}
|
|
185
|
+
const bx = c.sx + c.ox;
|
|
175
186
|
const hw = (Math.abs(c.cos) * w + Math.abs(c.sin) * h) / 2;
|
|
176
187
|
const hh = (Math.abs(c.sin) * w + Math.abs(c.cos) * h) / 2;
|
|
177
|
-
if (
|
|
188
|
+
if (bx - hw < inset ||
|
|
178
189
|
c.sy - hh < inset ||
|
|
179
|
-
|
|
190
|
+
bx + hw > width - inset ||
|
|
180
191
|
c.sy + hh > height - inset) {
|
|
181
192
|
continue;
|
|
182
193
|
}
|
|
@@ -220,7 +231,6 @@ export class LabelPlacer {
|
|
|
220
231
|
size: c.size,
|
|
221
232
|
opacity: 0,
|
|
222
233
|
placed: false,
|
|
223
|
-
drawn: 0,
|
|
224
234
|
};
|
|
225
235
|
fresh.mx = c.mx;
|
|
226
236
|
fresh.my = c.my;
|
|
@@ -237,8 +247,12 @@ export class LabelPlacer {
|
|
|
237
247
|
}
|
|
238
248
|
shown.placed = true;
|
|
239
249
|
shown.size = c.size;
|
|
240
|
-
|
|
241
|
-
|
|
250
|
+
atlas.entry(shown.text);
|
|
251
|
+
const icon = this._icon(layers[shown.layer], shown.point, atlas);
|
|
252
|
+
if (icon) {
|
|
253
|
+
atlas.icon(icon.name, 'plate');
|
|
254
|
+
atlas.icon(icon.name, 'glyph');
|
|
255
|
+
}
|
|
242
256
|
}
|
|
243
257
|
this.stats = {
|
|
244
258
|
candidates: candidates.length,
|
|
@@ -257,27 +271,26 @@ export class LabelPlacer {
|
|
|
257
271
|
this._last = frame.now;
|
|
258
272
|
const step = dt / FADE_MS;
|
|
259
273
|
const layers = this._layersAt(frame.style, frame.zoom, frame.scale);
|
|
260
|
-
|
|
274
|
+
// How far past its glyphs a field sees, in its own texels: the widest
|
|
275
|
+
// halo it can draw, times the label's scale.
|
|
276
|
+
const reach = fieldReach(atlas.pad);
|
|
261
277
|
const halfW = frame.width / 2;
|
|
262
278
|
const halfH = frame.height / 2;
|
|
263
279
|
let count = 0;
|
|
280
|
+
let labels = 0;
|
|
264
281
|
for (const shown of [...this._shown]) {
|
|
265
282
|
const layer = layers[shown.layer];
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
shown.drawn = shown.size;
|
|
276
|
-
else if (shown.drawn > 0)
|
|
277
|
-
entry = atlas.entry(shown.text, shown.drawn);
|
|
278
|
-
}
|
|
283
|
+
// One field for every size: a zoom ramp that grows the type draws the
|
|
284
|
+
// same raster larger, the frame it changes.
|
|
285
|
+
const entry = atlas.entry(shown.text);
|
|
286
|
+
// A name set beside an icon waits for the icon as well: the name
|
|
287
|
+
// alone is what the icon is there to explain.
|
|
288
|
+
const icon = this._icon(layer, shown.point, atlas);
|
|
289
|
+
const plate = icon ? atlas.icon(icon.name, 'plate') : null;
|
|
290
|
+
const glyph = icon ? atlas.icon(icon.name, 'glyph') : null;
|
|
291
|
+
const ready = entry !== null && (!icon || (plate !== null && glyph !== null));
|
|
279
292
|
// Nothing to show yet: wait at zero rather than fade in unseen.
|
|
280
|
-
if (
|
|
293
|
+
if (ready && layer) {
|
|
281
294
|
shown.opacity = shown.placed
|
|
282
295
|
? Math.min(1, shown.opacity + step)
|
|
283
296
|
: Math.max(0, shown.opacity - step);
|
|
@@ -289,45 +302,71 @@ export class LabelPlacer {
|
|
|
289
302
|
this._shown.delete(shown);
|
|
290
303
|
continue;
|
|
291
304
|
}
|
|
292
|
-
if (!entry || !layer || shown.opacity <= 0)
|
|
305
|
+
if (!ready || !entry || !layer || shown.opacity <= 0)
|
|
293
306
|
continue;
|
|
294
307
|
let dx = shown.mx - frame.centerX;
|
|
295
308
|
dx -= Math.round(dx);
|
|
296
309
|
const sx = halfW + dx * frame.world;
|
|
297
310
|
const sy = halfH + (shown.my - frame.centerY) * frame.world;
|
|
298
311
|
const eased = shown.opacity * shown.opacity * (3 - 2 * shown.opacity);
|
|
299
|
-
if (this._instances.length < (count + 1) * LABEL_INSTANCE) {
|
|
300
|
-
const grown = new Float32Array(this._instances.length * 2);
|
|
301
|
-
grown.set(this._instances);
|
|
302
|
-
this._instances = grown;
|
|
303
|
-
}
|
|
304
|
-
const d = this._instances;
|
|
305
|
-
const at = count * LABEL_INSTANCE;
|
|
306
|
-
const level = shown.angle === 0;
|
|
307
|
-
d[at] = sx;
|
|
308
|
-
d[at + 1] = sy;
|
|
309
|
-
d[at + 2] = level ? 1 : Math.cos(shown.angle);
|
|
310
|
-
d[at + 3] = level ? 0 : Math.sin(shown.angle);
|
|
311
|
-
d[at + 4] = entry.x;
|
|
312
|
-
d[at + 5] = entry.y;
|
|
313
|
-
d[at + 6] = entry.width;
|
|
314
|
-
d[at + 7] = entry.height;
|
|
315
312
|
const ink = premultiplied(layer.ink, eased);
|
|
316
|
-
d[at + 8] = ink[0];
|
|
317
|
-
d[at + 9] = ink[1];
|
|
318
|
-
d[at + 10] = ink[2];
|
|
319
|
-
d[at + 11] = ink[3];
|
|
320
313
|
const halo = layer.halo ? premultiplied(layer.halo, eased) : ZERO;
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
314
|
+
const k = shown.size / atlas.base;
|
|
315
|
+
const haloPx = layer.halo ? Math.min(layer.haloPx, reach * k) : 0;
|
|
316
|
+
if (icon && plate && glyph) {
|
|
317
|
+
// The plate under its halo, the glyph on it, and the name level
|
|
318
|
+
// beside it: the string is its field less the margin, and its
|
|
319
|
+
// left edge goes the gap past the plate's right.
|
|
320
|
+
const ki = icon.size / atlas.base;
|
|
321
|
+
const plateHalo = layer.halo ? Math.min(layer.haloPx, reach * ki) : 0;
|
|
322
|
+
count = this._put(count, sx, sy, 0, plate, premultiplied(icon.plate, eased), halo, plateHalo, ki);
|
|
323
|
+
count = this._put(count, sx, sy, 0, glyph, premultiplied(icon.glyph, eased), ZERO, 0, ki);
|
|
324
|
+
const tx = sx +
|
|
325
|
+
icon.size / 2 +
|
|
326
|
+
icon.gap +
|
|
327
|
+
((entry.width - 2 * atlas.pad) * k) / 2;
|
|
328
|
+
count = this._put(count, tx, sy, 0, entry, ink, halo, haloPx, k);
|
|
329
|
+
}
|
|
330
|
+
else {
|
|
331
|
+
count = this._put(count, sx, sy, shown.angle, entry, ink, halo, haloPx, k);
|
|
332
|
+
}
|
|
333
|
+
labels++;
|
|
328
334
|
}
|
|
329
|
-
this.stats.drawn =
|
|
330
|
-
return { atlas, instances: this._instances, count };
|
|
335
|
+
this.stats.drawn = labels;
|
|
336
|
+
return { atlas, instances: this._instances, count, labels };
|
|
337
|
+
}
|
|
338
|
+
/** One instance — a label's string, or a piece of its icon — written at
|
|
339
|
+
* `count`: answers the count after it. Level (`angle` 0) is set on
|
|
340
|
+
* whole pixels. */
|
|
341
|
+
_put(count, x, y, angle, entry, ink, halo, haloPx, scale) {
|
|
342
|
+
if (this._instances.length < (count + 1) * LABEL_INSTANCE) {
|
|
343
|
+
const grown = new Float32Array(this._instances.length * 2);
|
|
344
|
+
grown.set(this._instances);
|
|
345
|
+
this._instances = grown;
|
|
346
|
+
}
|
|
347
|
+
const d = this._instances;
|
|
348
|
+
const at = count * LABEL_INSTANCE;
|
|
349
|
+
const level = angle === 0;
|
|
350
|
+
d[at] = x;
|
|
351
|
+
d[at + 1] = y;
|
|
352
|
+
d[at + 2] = level ? 1 : Math.cos(angle);
|
|
353
|
+
d[at + 3] = level ? 0 : Math.sin(angle);
|
|
354
|
+
d[at + 4] = entry.x;
|
|
355
|
+
d[at + 5] = entry.y;
|
|
356
|
+
d[at + 6] = entry.width;
|
|
357
|
+
d[at + 7] = entry.height;
|
|
358
|
+
d[at + 8] = ink[0];
|
|
359
|
+
d[at + 9] = ink[1];
|
|
360
|
+
d[at + 10] = ink[2];
|
|
361
|
+
d[at + 11] = ink[3];
|
|
362
|
+
d[at + 12] = halo[0];
|
|
363
|
+
d[at + 13] = halo[1];
|
|
364
|
+
d[at + 14] = halo[2];
|
|
365
|
+
d[at + 15] = halo[3];
|
|
366
|
+
d[at + 16] = haloPx;
|
|
367
|
+
d[at + 17] = level ? 1 : 0;
|
|
368
|
+
d[at + 18] = scale;
|
|
369
|
+
return count + 1;
|
|
331
370
|
}
|
|
332
371
|
// --- internals -------------------------------------------------------------
|
|
333
372
|
/** One anchor as a contender, or null when it cannot be one at all at
|
|
@@ -370,6 +409,7 @@ export class LabelPlacer {
|
|
|
370
409
|
point,
|
|
371
410
|
sx,
|
|
372
411
|
sy,
|
|
412
|
+
ox: 0,
|
|
373
413
|
angle: a,
|
|
374
414
|
cos: Math.cos(a),
|
|
375
415
|
sin: Math.sin(a),
|
|
@@ -389,6 +429,13 @@ export class LabelPlacer {
|
|
|
389
429
|
repeat: layer.repeat,
|
|
390
430
|
};
|
|
391
431
|
}
|
|
432
|
+
/** The icon a label of `layer` is set with: none for a name along a
|
|
433
|
+
* street, and none where the atlas cannot draw it — the name is then set
|
|
434
|
+
* alone rather than not at all. */
|
|
435
|
+
_icon(layer, point, atlas) {
|
|
436
|
+
const icon = point ? (layer?.icon ?? null) : null;
|
|
437
|
+
return icon && !atlas.iconFailed(icon.name) ? icon : null;
|
|
438
|
+
}
|
|
392
439
|
/** Each symbol layer's labelling at this zoom, by layer index — null
|
|
393
440
|
* where it does not label. */
|
|
394
441
|
_layersAt(style, zoom, scale) {
|
|
@@ -409,9 +456,11 @@ export class LabelPlacer {
|
|
|
409
456
|
const haloWidth = symbol.textHaloWidth === undefined
|
|
410
457
|
? 1
|
|
411
458
|
: resolveZoomed(symbol.textHaloWidth, zoom);
|
|
412
|
-
|
|
459
|
+
// Not rounded: a field draws any size, so a ramp grows the type
|
|
460
|
+
// continuously rather than a whole pixel at a time.
|
|
461
|
+
const size = Math.max(1, (symbol.textSize === undefined
|
|
413
462
|
? 12
|
|
414
|
-
: resolveZoomed(symbol.textSize, zoom)) * scale)
|
|
463
|
+
: resolveZoomed(symbol.textSize, zoom)) * scale);
|
|
415
464
|
return {
|
|
416
465
|
id: layer.id,
|
|
417
466
|
rank: symbol.rank ?? 0,
|
|
@@ -420,9 +469,34 @@ export class LabelPlacer {
|
|
|
420
469
|
ink,
|
|
421
470
|
halo: halo && haloWidth > 0 ? halo : null,
|
|
422
471
|
haloPx: haloWidth * scale,
|
|
472
|
+
icon: this._iconOf(symbol, zoom, scale),
|
|
423
473
|
};
|
|
424
474
|
});
|
|
425
475
|
}
|
|
476
|
+
/** A layer's icon at this zoom, or null where it sets none — or names
|
|
477
|
+
* one this version does not draw, or a colour that does not parse. */
|
|
478
|
+
_iconOf(symbol, zoom, scale) {
|
|
479
|
+
if (!isMapIcon(symbol.icon))
|
|
480
|
+
return null;
|
|
481
|
+
const plate = this._color(symbol.iconColor
|
|
482
|
+
? resolveZoomed(symbol.iconColor, zoom)
|
|
483
|
+
: DEFAULT_ICON_COLOR);
|
|
484
|
+
const glyph = this._color(symbol.iconGlyphColor
|
|
485
|
+
? resolveZoomed(symbol.iconGlyphColor, zoom)
|
|
486
|
+
: DEFAULT_ICON_GLYPH_COLOR);
|
|
487
|
+
if (!plate || !glyph)
|
|
488
|
+
return null;
|
|
489
|
+
const size = symbol.iconSize === undefined
|
|
490
|
+
? DEFAULT_ICON_SIZE
|
|
491
|
+
: resolveZoomed(symbol.iconSize, zoom);
|
|
492
|
+
return {
|
|
493
|
+
name: symbol.icon,
|
|
494
|
+
size: Math.max(1, Math.round(size * scale)),
|
|
495
|
+
gap: ICON_GAP * scale,
|
|
496
|
+
plate,
|
|
497
|
+
glyph,
|
|
498
|
+
};
|
|
499
|
+
}
|
|
426
500
|
_color(value) {
|
|
427
501
|
let color = this._colors.get(value);
|
|
428
502
|
if (color === undefined) {
|
|
@@ -511,7 +585,8 @@ class CollisionGrid {
|
|
|
511
585
|
const out = this._scratch;
|
|
512
586
|
out.length = 0;
|
|
513
587
|
if (c.angle === 0) {
|
|
514
|
-
|
|
588
|
+
const x = c.sx + c.ox;
|
|
589
|
+
out.push(0, x - w / 2 - pad, c.sy - h / 2 - pad, x + w / 2 + pad, c.sy + h / 2 + pad);
|
|
515
590
|
return out;
|
|
516
591
|
}
|
|
517
592
|
const r = h / 2 + pad;
|