@react-x11/components 0.8.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +105 -38
- package/dist/charts/node.d.ts +12 -2
- package/dist/charts/node.d.ts.map +1 -1
- package/dist/charts/node.js +50 -16
- package/dist/charts/node.js.map +1 -1
- package/dist/charts/render.d.ts +12 -3
- package/dist/charts/render.d.ts.map +1 -1
- package/dist/charts/render.js +94 -25
- package/dist/charts/render.js.map +1 -1
- package/dist/code/index.d.ts.map +1 -1
- package/dist/code/index.js +3 -1
- package/dist/code/index.js.map +1 -1
- package/dist/code-editor/completion.d.ts.map +1 -1
- package/dist/code-editor/completion.js +3 -2
- package/dist/code-editor/completion.js.map +1 -1
- package/dist/code-editor/index.d.ts.map +1 -1
- package/dist/code-editor/index.js +19 -0
- package/dist/code-editor/index.js.map +1 -1
- package/dist/code-editor/node.d.ts +177 -7
- package/dist/code-editor/node.d.ts.map +1 -1
- package/dist/code-editor/node.js +1329 -164
- package/dist/code-editor/node.js.map +1 -1
- package/dist/code-language/languages/glsl.d.ts.map +1 -1
- package/dist/code-language/languages/glsl.js +10 -2
- package/dist/code-language/languages/glsl.js.map +1 -1
- package/dist/code-language/languages/javascript.d.ts.map +1 -1
- package/dist/code-language/languages/javascript.js +18 -3
- package/dist/code-language/languages/javascript.js.map +1 -1
- package/dist/code-language/languages/json.d.ts.map +1 -1
- package/dist/code-language/languages/json.js +10 -2
- package/dist/code-language/languages/json.js.map +1 -1
- package/dist/code-language/languages/shell.d.ts.map +1 -1
- package/dist/code-language/languages/shell.js +10 -2
- package/dist/code-language/languages/shell.js.map +1 -1
- package/dist/code-language/languages/sql.d.ts.map +1 -1
- package/dist/code-language/languages/sql.js +20 -2
- package/dist/code-language/languages/sql.js.map +1 -1
- package/dist/code-language/stream.d.ts +22 -0
- package/dist/code-language/stream.d.ts.map +1 -1
- package/dist/code-language/stream.js +259 -9
- package/dist/code-language/stream.js.map +1 -1
- package/dist/code-language/types.d.ts +5 -4
- package/dist/code-language/types.d.ts.map +1 -1
- package/dist/codeblock/index.d.ts +13 -2
- package/dist/codeblock/index.d.ts.map +1 -1
- package/dist/codeblock/index.js +20 -3
- package/dist/codeblock/index.js.map +1 -1
- package/dist/embed/client.d.ts +48 -3
- package/dist/embed/client.d.ts.map +1 -1
- package/dist/embed/client.js +79 -5
- package/dist/embed/client.js.map +1 -1
- package/dist/embed/index.d.ts +1 -1
- package/dist/embed/index.d.ts.map +1 -1
- package/dist/embed/index.js +1 -1
- package/dist/embed/index.js.map +1 -1
- package/dist/flow/draw.d.ts +50 -0
- package/dist/flow/draw.d.ts.map +1 -1
- package/dist/flow/draw.js +132 -33
- package/dist/flow/draw.js.map +1 -1
- package/dist/flow/gl/color.d.ts +13 -0
- package/dist/flow/gl/color.d.ts.map +1 -0
- package/dist/flow/gl/color.js +82 -0
- package/dist/flow/gl/color.js.map +1 -0
- package/dist/flow/gl/index.d.ts +60 -0
- package/dist/flow/gl/index.d.ts.map +1 -0
- package/dist/flow/gl/index.js +283 -0
- package/dist/flow/gl/index.js.map +1 -0
- package/dist/flow/gl/pack.d.ts +133 -0
- package/dist/flow/gl/pack.d.ts.map +1 -0
- package/dist/flow/gl/pack.js +408 -0
- package/dist/flow/gl/pack.js.map +1 -0
- package/dist/flow/gl/renderer.d.ts +95 -0
- package/dist/flow/gl/renderer.d.ts.map +1 -0
- package/dist/flow/gl/renderer.js +459 -0
- package/dist/flow/gl/renderer.js.map +1 -0
- package/dist/flow/gl/shaders.d.ts +79 -0
- package/dist/flow/gl/shaders.d.ts.map +1 -0
- package/dist/flow/gl/shaders.js +346 -0
- package/dist/flow/gl/shaders.js.map +1 -0
- package/dist/flow/gl/text.d.ts +318 -0
- package/dist/flow/gl/text.d.ts.map +1 -0
- package/dist/flow/gl/text.js +1103 -0
- package/dist/flow/gl/text.js.map +1 -0
- package/dist/flow/index.d.ts +1 -1
- package/dist/flow/index.d.ts.map +1 -1
- package/dist/flow/index.js +619 -64
- package/dist/flow/index.js.map +1 -1
- package/dist/flow/node.d.ts +621 -72
- package/dist/flow/node.d.ts.map +1 -1
- package/dist/flow/node.js +2253 -1018
- package/dist/flow/node.js.map +1 -1
- package/dist/flow/paint.d.ts +35 -0
- package/dist/flow/paint.d.ts.map +1 -0
- package/dist/flow/paint.js +393 -0
- package/dist/flow/paint.js.map +1 -0
- package/dist/flow/paths.d.ts +14 -0
- package/dist/flow/paths.d.ts.map +1 -1
- package/dist/flow/paths.js +45 -19
- package/dist/flow/paths.js.map +1 -1
- package/dist/flow/scene.d.ts +584 -0
- package/dist/flow/scene.d.ts.map +1 -0
- package/dist/flow/scene.js +1453 -0
- package/dist/flow/scene.js.map +1 -0
- package/dist/flow/types.d.ts +111 -1
- package/dist/flow/types.d.ts.map +1 -1
- package/dist/html/controls.d.ts +28 -0
- package/dist/html/controls.d.ts.map +1 -1
- package/dist/html/controls.js +52 -2
- package/dist/html/controls.js.map +1 -1
- package/dist/html/css/calc.d.ts +14 -0
- package/dist/html/css/calc.d.ts.map +1 -0
- package/dist/html/css/calc.js +344 -0
- package/dist/html/css/calc.js.map +1 -0
- package/dist/html/css/cascade.d.ts +240 -6
- package/dist/html/css/cascade.d.ts.map +1 -1
- package/dist/html/css/cascade.js +1327 -66
- package/dist/html/css/cascade.js.map +1 -1
- package/dist/html/css/color.d.ts +23 -0
- package/dist/html/css/color.d.ts.map +1 -0
- package/dist/html/css/color.js +740 -0
- package/dist/html/css/color.js.map +1 -0
- package/dist/html/css/content.d.ts +92 -0
- package/dist/html/css/content.d.ts.map +1 -0
- package/dist/html/css/content.js +388 -0
- package/dist/html/css/content.js.map +1 -0
- package/dist/html/css/counter-styles.d.ts +76 -0
- package/dist/html/css/counter-styles.d.ts.map +1 -0
- package/dist/html/css/counter-styles.js +893 -0
- package/dist/html/css/counter-styles.js.map +1 -0
- package/dist/html/css/decode.d.ts +12 -0
- package/dist/html/css/decode.d.ts.map +1 -0
- package/dist/html/css/decode.js +116 -0
- package/dist/html/css/decode.js.map +1 -0
- package/dist/html/css/parse.d.ts +110 -10
- package/dist/html/css/parse.d.ts.map +1 -1
- package/dist/html/css/parse.js +1473 -180
- package/dist/html/css/parse.js.map +1 -1
- package/dist/html/css/style.d.ts +498 -15
- package/dist/html/css/style.d.ts.map +1 -1
- package/dist/html/css/style.js +3698 -206
- package/dist/html/css/style.js.map +1 -1
- package/dist/html/css/ua.d.ts.map +1 -1
- package/dist/html/css/ua.js +57 -11
- package/dist/html/css/ua.js.map +1 -1
- package/dist/html/css/values.d.ts +37 -3
- package/dist/html/css/values.d.ts.map +1 -1
- package/dist/html/css/values.js +122 -48
- package/dist/html/css/values.js.map +1 -1
- package/dist/html/css/vars.d.ts +52 -0
- package/dist/html/css/vars.d.ts.map +1 -0
- package/dist/html/css/vars.js +358 -0
- package/dist/html/css/vars.js.map +1 -0
- package/dist/html/dom.d.ts +30 -4
- package/dist/html/dom.d.ts.map +1 -1
- package/dist/html/dom.js +278 -17
- package/dist/html/dom.js.map +1 -1
- package/dist/html/fonts.d.ts +106 -0
- package/dist/html/fonts.d.ts.map +1 -0
- package/dist/html/fonts.js +565 -0
- package/dist/html/fonts.js.map +1 -0
- package/dist/html/gif.d.ts +15 -0
- package/dist/html/gif.d.ts.map +1 -0
- package/dist/html/gif.js +229 -0
- package/dist/html/gif.js.map +1 -0
- package/dist/html/index.d.ts +50 -11
- package/dist/html/index.d.ts.map +1 -1
- package/dist/html/index.js +115 -9
- package/dist/html/index.js.map +1 -1
- package/dist/html/layout/block.d.ts +226 -3
- package/dist/html/layout/block.d.ts.map +1 -1
- package/dist/html/layout/block.js +2937 -197
- package/dist/html/layout/block.js.map +1 -1
- package/dist/html/layout/boxes.d.ts +340 -17
- package/dist/html/layout/boxes.d.ts.map +1 -1
- package/dist/html/layout/boxes.js +1714 -182
- package/dist/html/layout/boxes.js.map +1 -1
- package/dist/html/layout/cache.d.ts +58 -0
- package/dist/html/layout/cache.d.ts.map +1 -0
- package/dist/html/layout/cache.js +224 -0
- package/dist/html/layout/cache.js.map +1 -0
- package/dist/html/layout/collapse.d.ts +45 -0
- package/dist/html/layout/collapse.d.ts.map +1 -0
- package/dist/html/layout/collapse.js +246 -0
- package/dist/html/layout/collapse.js.map +1 -0
- package/dist/html/layout/css-grid.d.ts +7 -0
- package/dist/html/layout/css-grid.d.ts.map +1 -0
- package/dist/html/layout/css-grid.js +900 -0
- package/dist/html/layout/css-grid.js.map +1 -0
- package/dist/html/layout/flex.d.ts.map +1 -1
- package/dist/html/layout/flex.js +1025 -89
- package/dist/html/layout/flex.js.map +1 -1
- package/dist/html/layout/floats.d.ts +45 -6
- package/dist/html/layout/floats.d.ts.map +1 -1
- package/dist/html/layout/floats.js +113 -14
- package/dist/html/layout/floats.js.map +1 -1
- package/dist/html/layout/grid-lines.d.ts +39 -0
- package/dist/html/layout/grid-lines.d.ts.map +1 -0
- package/dist/html/layout/grid-lines.js +119 -0
- package/dist/html/layout/grid-lines.js.map +1 -0
- package/dist/html/layout/grid.d.ts +53 -0
- package/dist/html/layout/grid.d.ts.map +1 -0
- package/dist/html/layout/grid.js +153 -0
- package/dist/html/layout/grid.js.map +1 -0
- package/dist/html/layout/inline.d.ts +151 -1
- package/dist/html/layout/inline.d.ts.map +1 -1
- package/dist/html/layout/inline.js +3375 -174
- package/dist/html/layout/inline.js.map +1 -1
- package/dist/html/layout/shaping.d.ts +6 -0
- package/dist/html/layout/shaping.d.ts.map +1 -0
- package/dist/html/layout/shaping.js +100 -0
- package/dist/html/layout/shaping.js.map +1 -0
- package/dist/html/layout/table.d.ts +3 -0
- package/dist/html/layout/table.d.ts.map +1 -1
- package/dist/html/layout/table.js +681 -175
- package/dist/html/layout/table.js.map +1 -1
- package/dist/html/layout/tracks.d.ts +44 -0
- package/dist/html/layout/tracks.d.ts.map +1 -0
- package/dist/html/layout/tracks.js +349 -0
- package/dist/html/layout/tracks.js.map +1 -0
- package/dist/html/node.d.ts +172 -5
- package/dist/html/node.d.ts.map +1 -1
- package/dist/html/node.js +1336 -103
- package/dist/html/node.js.map +1 -1
- package/dist/html/paint.d.ts +92 -3
- package/dist/html/paint.d.ts.map +1 -1
- package/dist/html/paint.js +3503 -141
- package/dist/html/paint.js.map +1 -1
- package/dist/html/resources.d.ts +60 -14
- package/dist/html/resources.d.ts.map +1 -1
- package/dist/html/resources.js +122 -36
- package/dist/html/resources.js.map +1 -1
- package/dist/html/surfaces.d.ts +23 -0
- package/dist/html/surfaces.d.ts.map +1 -0
- package/dist/html/surfaces.js +68 -0
- package/dist/html/surfaces.js.map +1 -0
- package/dist/html/svg.d.ts +80 -0
- package/dist/html/svg.d.ts.map +1 -0
- package/dist/html/svg.js +435 -0
- package/dist/html/svg.js.map +1 -0
- package/dist/html/url.d.ts +23 -0
- package/dist/html/url.d.ts.map +1 -0
- package/dist/html/url.js +80 -0
- package/dist/html/url.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/collate.d.ts +3 -0
- package/dist/internal/collate.d.ts.map +1 -0
- package/dist/internal/collate.js +11 -0
- package/dist/internal/collate.js.map +1 -0
- package/dist/{markdown → internal/markdown}/ast.d.ts +23 -0
- package/dist/internal/markdown/ast.d.ts.map +1 -0
- package/dist/internal/markdown/ast.js +22 -0
- package/dist/internal/markdown/ast.js.map +1 -0
- package/dist/internal/markdown/parse.d.ts.map +1 -0
- package/dist/{markdown → internal/markdown}/parse.js +221 -30
- package/dist/internal/markdown/parse.js.map +1 -0
- package/dist/internal/markdown/stringify.d.ts +4 -0
- package/dist/internal/markdown/stringify.d.ts.map +1 -0
- package/dist/internal/markdown/stringify.js +684 -0
- package/dist/internal/markdown/stringify.js.map +1 -0
- package/dist/internal/markdown/tags.d.ts.map +1 -0
- package/dist/internal/markdown/tags.js.map +1 -0
- package/dist/internal/prewarm.d.ts +18 -0
- package/dist/internal/prewarm.d.ts.map +1 -0
- package/dist/internal/prewarm.js +42 -0
- package/dist/internal/prewarm.js.map +1 -0
- package/dist/internal/scroll.d.ts +3 -2
- package/dist/internal/scroll.d.ts.map +1 -1
- package/dist/internal/scroll.js +1 -0
- package/dist/internal/scroll.js.map +1 -1
- package/dist/internal/sdf.d.ts +20 -0
- package/dist/internal/sdf.d.ts.map +1 -0
- package/dist/internal/sdf.js +216 -0
- package/dist/internal/sdf.js.map +1 -0
- package/dist/internal/splice.d.ts +12 -0
- package/dist/internal/splice.d.ts.map +1 -0
- package/dist/internal/splice.js +23 -0
- package/dist/internal/splice.js.map +1 -0
- package/dist/internal/window.d.ts +12 -0
- package/dist/internal/window.d.ts.map +1 -1
- package/dist/internal/window.js +23 -6
- package/dist/internal/window.js.map +1 -1
- package/dist/maps/anchors.d.ts +103 -0
- package/dist/maps/anchors.d.ts.map +1 -0
- package/dist/maps/anchors.js +790 -0
- package/dist/maps/anchors.js.map +1 -0
- package/dist/maps/controller.d.ts +340 -0
- package/dist/maps/controller.d.ts.map +1 -0
- package/dist/maps/controller.js +822 -0
- package/dist/maps/controller.js.map +1 -0
- package/dist/maps/gl/buckets.d.ts +99 -0
- package/dist/maps/gl/buckets.d.ts.map +1 -0
- package/dist/maps/gl/buckets.js +365 -0
- package/dist/maps/gl/buckets.js.map +1 -0
- package/dist/maps/gl/build-worker.d.ts +15 -0
- package/dist/maps/gl/build-worker.d.ts.map +1 -0
- package/dist/maps/gl/build-worker.js +44 -0
- package/dist/maps/gl/build-worker.js.map +1 -0
- package/dist/maps/gl/color.d.ts +8 -0
- package/dist/maps/gl/color.d.ts.map +1 -0
- package/dist/maps/gl/color.js +57 -0
- package/dist/maps/gl/color.js.map +1 -0
- package/dist/maps/gl/cover.d.ts +70 -0
- package/dist/maps/gl/cover.d.ts.map +1 -0
- package/dist/maps/gl/cover.js +137 -0
- package/dist/maps/gl/cover.js.map +1 -0
- package/dist/maps/gl/index.d.ts +3 -0
- package/dist/maps/gl/index.d.ts.map +1 -0
- package/dist/maps/gl/index.js +20 -0
- package/dist/maps/gl/index.js.map +1 -0
- package/dist/maps/gl/markers.d.ts +28 -0
- package/dist/maps/gl/markers.d.ts.map +1 -0
- package/dist/maps/gl/markers.js +60 -0
- package/dist/maps/gl/markers.js.map +1 -0
- package/dist/maps/gl/overlays.d.ts +68 -0
- package/dist/maps/gl/overlays.d.ts.map +1 -0
- package/dist/maps/gl/overlays.js +300 -0
- package/dist/maps/gl/overlays.js.map +1 -0
- package/dist/maps/gl/pane.d.ts +12 -0
- package/dist/maps/gl/pane.d.ts.map +1 -0
- package/dist/maps/gl/pane.js +37 -0
- package/dist/maps/gl/pane.js.map +1 -0
- package/dist/maps/gl/placement.d.ts +124 -0
- package/dist/maps/gl/placement.d.ts.map +1 -0
- package/dist/maps/gl/placement.js +642 -0
- package/dist/maps/gl/placement.js.map +1 -0
- package/dist/maps/gl/renderer.d.ts +384 -0
- package/dist/maps/gl/renderer.d.ts.map +1 -0
- package/dist/maps/gl/renderer.js +1184 -0
- package/dist/maps/gl/renderer.js.map +1 -0
- package/dist/maps/gl/shaders.d.ts +121 -0
- package/dist/maps/gl/shaders.d.ts.map +1 -0
- package/dist/maps/gl/shaders.js +453 -0
- package/dist/maps/gl/shaders.js.map +1 -0
- package/dist/maps/gl/store.d.ts +125 -0
- package/dist/maps/gl/store.d.ts.map +1 -0
- package/dist/maps/gl/store.js +512 -0
- package/dist/maps/gl/store.js.map +1 -0
- package/dist/maps/gl/text.d.ts +283 -0
- package/dist/maps/gl/text.d.ts.map +1 -0
- package/dist/maps/gl/text.js +698 -0
- package/dist/maps/gl/text.js.map +1 -0
- package/dist/maps/gl/view.d.ts +345 -0
- package/dist/maps/gl/view.d.ts.map +1 -0
- package/dist/maps/gl/view.js +1209 -0
- package/dist/maps/gl/view.js.map +1 -0
- package/dist/maps/icons.d.ts +32 -0
- package/dist/maps/icons.d.ts.map +1 -0
- package/dist/maps/icons.js +151 -0
- package/dist/maps/icons.js.map +1 -0
- package/dist/maps/index.d.ts +3 -1
- package/dist/maps/index.d.ts.map +1 -1
- package/dist/maps/index.js +218 -52
- package/dist/maps/index.js.map +1 -1
- package/dist/maps/labels.d.ts +91 -18
- package/dist/maps/labels.d.ts.map +1 -1
- package/dist/maps/labels.js +376 -140
- package/dist/maps/labels.js.map +1 -1
- package/dist/maps/node.d.ts +179 -56
- package/dist/maps/node.d.ts.map +1 -1
- package/dist/maps/node.js +663 -537
- package/dist/maps/node.js.map +1 -1
- package/dist/maps/overlay.d.ts +72 -9
- package/dist/maps/overlay.d.ts.map +1 -1
- package/dist/maps/overlay.js +108 -28
- package/dist/maps/overlay.js.map +1 -1
- package/dist/maps/paint.d.ts +3 -0
- package/dist/maps/paint.d.ts.map +1 -1
- package/dist/maps/paint.js.map +1 -1
- package/dist/maps/proj.d.ts +62 -0
- package/dist/maps/proj.d.ts.map +1 -1
- package/dist/maps/proj.js +101 -0
- package/dist/maps/proj.js.map +1 -1
- package/dist/maps/renderer.d.ts +69 -0
- package/dist/maps/renderer.d.ts.map +1 -0
- package/dist/maps/renderer.js +66 -0
- package/dist/maps/renderer.js.map +1 -0
- package/dist/maps/sources.d.ts +30 -6
- package/dist/maps/sources.d.ts.map +1 -1
- package/dist/maps/sources.js +22 -3
- package/dist/maps/sources.js.map +1 -1
- package/dist/maps/style.d.ts +35 -0
- package/dist/maps/style.d.ts.map +1 -1
- package/dist/maps/style.js.map +1 -1
- package/dist/maps/styles.d.ts +12 -0
- package/dist/maps/styles.d.ts.map +1 -1
- package/dist/maps/styles.js +120 -6
- package/dist/maps/styles.js.map +1 -1
- package/dist/maps/theme.d.ts +19 -0
- package/dist/maps/theme.d.ts.map +1 -0
- package/dist/maps/theme.js +44 -0
- package/dist/maps/theme.js.map +1 -0
- package/dist/maps/tiles.d.ts +147 -27
- package/dist/maps/tiles.d.ts.map +1 -1
- package/dist/maps/tiles.js +221 -54
- package/dist/maps/tiles.js.map +1 -1
- package/dist/maps/types.d.ts +213 -21
- package/dist/maps/types.d.ts.map +1 -1
- package/dist/markdown/expressions.d.ts +1 -1
- package/dist/markdown/expressions.d.ts.map +1 -1
- package/dist/markdown/expressions.js.map +1 -1
- package/dist/markdown/index.d.ts +7 -6
- package/dist/markdown/index.d.ts.map +1 -1
- package/dist/markdown/index.js +121 -50
- package/dist/markdown/index.js.map +1 -1
- package/dist/markdown/spans.d.ts +1 -1
- package/dist/markdown/spans.d.ts.map +1 -1
- package/dist/markdown/spans.js +6 -0
- package/dist/markdown/spans.js.map +1 -1
- package/dist/media-player/index.d.ts +11 -3
- package/dist/media-player/index.d.ts.map +1 -1
- package/dist/media-player/index.js +13 -2
- package/dist/media-player/index.js.map +1 -1
- package/dist/qml/containers.d.ts.map +1 -1
- package/dist/qml/containers.js +6 -1
- package/dist/qml/containers.js.map +1 -1
- package/dist/qml/interaction.d.ts.map +1 -1
- package/dist/qml/interaction.js +38 -5
- package/dist/qml/interaction.js.map +1 -1
- package/dist/qml/layouts.d.ts.map +1 -1
- package/dist/qml/layouts.js +21 -6
- package/dist/qml/layouts.js.map +1 -1
- package/dist/qml/qtquick.d.ts.map +1 -1
- package/dist/qml/qtquick.js +9 -2
- package/dist/qml/qtquick.js.map +1 -1
- package/dist/qml/react.d.ts.map +1 -1
- package/dist/qml/react.js +9 -7
- package/dist/qml/react.js.map +1 -1
- package/dist/reorder/clock.d.ts +7 -0
- package/dist/reorder/clock.d.ts.map +1 -0
- package/dist/reorder/clock.js +26 -0
- package/dist/reorder/clock.js.map +1 -0
- package/dist/reorder/index.d.ts +25 -3
- package/dist/reorder/index.d.ts.map +1 -1
- package/dist/reorder/index.js +64 -19
- package/dist/reorder/index.js.map +1 -1
- package/dist/rich-text-editor/clipboard.d.ts +23 -0
- package/dist/rich-text-editor/clipboard.d.ts.map +1 -0
- package/dist/rich-text-editor/clipboard.js +307 -0
- package/dist/rich-text-editor/clipboard.js.map +1 -0
- package/dist/rich-text-editor/collab.d.ts +32 -0
- package/dist/rich-text-editor/collab.d.ts.map +1 -0
- package/dist/rich-text-editor/collab.js +55 -0
- package/dist/rich-text-editor/collab.js.map +1 -0
- package/dist/rich-text-editor/commands.d.ts +50 -0
- package/dist/rich-text-editor/commands.d.ts.map +1 -0
- package/dist/rich-text-editor/commands.js +376 -0
- package/dist/rich-text-editor/commands.js.map +1 -0
- package/dist/rich-text-editor/drag.d.ts +68 -0
- package/dist/rich-text-editor/drag.d.ts.map +1 -0
- package/dist/rich-text-editor/drag.js +148 -0
- package/dist/rich-text-editor/drag.js.map +1 -0
- package/dist/rich-text-editor/html.d.ts +145 -0
- package/dist/rich-text-editor/html.d.ts.map +1 -0
- package/dist/rich-text-editor/html.js +516 -0
- package/dist/rich-text-editor/html.js.map +1 -0
- package/dist/rich-text-editor/index.d.ts +252 -0
- package/dist/rich-text-editor/index.d.ts.map +1 -0
- package/dist/rich-text-editor/index.js +856 -0
- package/dist/rich-text-editor/index.js.map +1 -0
- package/dist/rich-text-editor/inline.d.ts +94 -0
- package/dist/rich-text-editor/inline.d.ts.map +1 -0
- package/dist/rich-text-editor/inline.js +252 -0
- package/dist/rich-text-editor/inline.js.map +1 -0
- package/dist/rich-text-editor/keymap.d.ts +71 -0
- package/dist/rich-text-editor/keymap.d.ts.map +1 -0
- package/dist/rich-text-editor/keymap.js +394 -0
- package/dist/rich-text-editor/keymap.js.map +1 -0
- package/dist/rich-text-editor/keys.d.ts +40 -0
- package/dist/rich-text-editor/keys.d.ts.map +1 -0
- package/dist/rich-text-editor/keys.js +202 -0
- package/dist/rich-text-editor/keys.js.map +1 -0
- package/dist/rich-text-editor/look.d.ts +71 -0
- package/dist/rich-text-editor/look.d.ts.map +1 -0
- package/dist/rich-text-editor/look.js +342 -0
- package/dist/rich-text-editor/look.js.map +1 -0
- package/dist/rich-text-editor/markdown.d.ts +18 -0
- package/dist/rich-text-editor/markdown.d.ts.map +1 -0
- package/dist/rich-text-editor/markdown.js +496 -0
- package/dist/rich-text-editor/markdown.js.map +1 -0
- package/dist/rich-text-editor/marks.d.ts +9 -0
- package/dist/rich-text-editor/marks.d.ts.map +1 -0
- package/dist/rich-text-editor/marks.js +83 -0
- package/dist/rich-text-editor/marks.js.map +1 -0
- package/dist/rich-text-editor/nodes.d.ts +135 -0
- package/dist/rich-text-editor/nodes.d.ts.map +1 -0
- package/dist/rich-text-editor/nodes.js +397 -0
- package/dist/rich-text-editor/nodes.js.map +1 -0
- package/dist/rich-text-editor/render.d.ts +68 -0
- package/dist/rich-text-editor/render.d.ts.map +1 -0
- package/dist/rich-text-editor/render.js +518 -0
- package/dist/rich-text-editor/render.js.map +1 -0
- package/dist/rich-text-editor/schema.d.ts +16 -0
- package/dist/rich-text-editor/schema.d.ts.map +1 -0
- package/dist/rich-text-editor/schema.js +386 -0
- package/dist/rich-text-editor/schema.js.map +1 -0
- package/dist/rich-text-editor/store.d.ts +11 -0
- package/dist/rich-text-editor/store.d.ts.map +1 -0
- package/dist/rich-text-editor/store.js +43 -0
- package/dist/rich-text-editor/store.js.map +1 -0
- package/dist/rich-text-editor/suggest.d.ts +127 -0
- package/dist/rich-text-editor/suggest.d.ts.map +1 -0
- package/dist/rich-text-editor/suggest.js +0 -0
- package/dist/rich-text-editor/suggest.js.map +1 -0
- package/dist/rich-text-editor/tables.d.ts +41 -0
- package/dist/rich-text-editor/tables.d.ts.map +1 -0
- package/dist/rich-text-editor/tables.js +204 -0
- package/dist/rich-text-editor/tables.js.map +1 -0
- package/dist/rich-text-editor/toolbar.d.ts +58 -0
- package/dist/rich-text-editor/toolbar.d.ts.map +1 -0
- package/dist/rich-text-editor/toolbar.js +548 -0
- package/dist/rich-text-editor/toolbar.js.map +1 -0
- package/dist/rich-text-editor/view.d.ts +368 -0
- package/dist/rich-text-editor/view.d.ts.map +1 -0
- package/dist/rich-text-editor/view.js +1968 -0
- package/dist/rich-text-editor/view.js.map +1 -0
- package/dist/rich-text-editor/virtual.d.ts +54 -0
- package/dist/rich-text-editor/virtual.d.ts.map +1 -0
- package/dist/rich-text-editor/virtual.js +279 -0
- package/dist/rich-text-editor/virtual.js.map +1 -0
- package/dist/richtext/node.d.ts +71 -4
- package/dist/richtext/node.d.ts.map +1 -1
- package/dist/richtext/node.js +233 -28
- package/dist/richtext/node.js.map +1 -1
- package/dist/richtext/runs.d.ts +13 -8
- package/dist/richtext/runs.d.ts.map +1 -1
- package/dist/richtext/runs.js +18 -8
- package/dist/richtext/runs.js.map +1 -1
- package/dist/table/index.d.ts.map +1 -1
- package/dist/table/index.js +23 -0
- package/dist/table/index.js.map +1 -1
- package/dist/table/rows.d.ts +3 -2
- package/dist/table/rows.d.ts.map +1 -1
- package/dist/table/rows.js +20 -6
- package/dist/table/rows.js.map +1 -1
- package/dist/terminal/backends.d.ts +4 -1
- package/dist/terminal/backends.d.ts.map +1 -1
- package/dist/terminal/backends.js.map +1 -1
- package/dist/terminal/index.d.ts +18 -7
- package/dist/terminal/index.d.ts.map +1 -1
- package/dist/terminal/index.js +32 -11
- package/dist/terminal/index.js.map +1 -1
- package/dist/terminal/vt/pty.d.ts +13 -2
- package/dist/terminal/vt/pty.d.ts.map +1 -1
- package/dist/terminal/vt/pty.js +18 -3
- package/dist/terminal/vt/pty.js.map +1 -1
- package/dist/terminal-output/index.d.ts.map +1 -1
- package/dist/terminal-output/index.js +6 -1
- package/dist/terminal-output/index.js.map +1 -1
- package/dist/three/canvas.d.ts.map +1 -1
- package/dist/three/canvas.js +85 -7
- package/dist/three/canvas.js.map +1 -1
- package/dist/three/events.d.ts +22 -4
- package/dist/three/events.d.ts.map +1 -1
- package/dist/three/events.js +34 -4
- package/dist/three/events.js.map +1 -1
- package/dist/tree/index.d.ts.map +1 -1
- package/dist/tree/index.js +17 -0
- package/dist/tree/index.js.map +1 -1
- package/package.json +59 -31
- package/src/charts/node.ts +68 -28
- package/src/charts/render.ts +120 -30
- package/src/code/index.ts +3 -1
- package/src/code-editor/completion.ts +3 -2
- package/src/code-editor/index.ts +19 -0
- package/src/code-editor/node.ts +1574 -184
- package/src/code-language/languages/glsl.ts +12 -2
- package/src/code-language/languages/javascript.ts +21 -4
- package/src/code-language/languages/json.ts +12 -2
- package/src/code-language/languages/shell.ts +12 -2
- package/src/code-language/languages/sql.ts +22 -2
- package/src/code-language/stream.ts +257 -17
- package/src/code-language/types.ts +5 -4
- package/src/codeblock/index.ts +20 -3
- package/src/embed/client.ts +102 -8
- package/src/embed/index.ts +2 -0
- package/src/flow/draw.ts +167 -41
- package/src/flow/gl/color.ts +85 -0
- package/src/flow/gl/index.ts +342 -0
- package/src/flow/gl/pack.ts +585 -0
- package/src/flow/gl/renderer.ts +679 -0
- package/src/flow/gl/shaders.ts +371 -0
- package/src/flow/gl/text.ts +1295 -0
- package/src/flow/index.ts +794 -67
- package/src/flow/node.ts +2496 -1256
- package/src/flow/paint.ts +511 -0
- package/src/flow/paths.ts +80 -15
- package/src/flow/scene.ts +2199 -0
- package/src/flow/types.ts +113 -1
- package/src/html/controls.ts +73 -2
- package/src/html/css/calc.ts +385 -0
- package/src/html/css/cascade.ts +1403 -62
- package/src/html/css/color.ts +755 -0
- package/src/html/css/content.ts +417 -0
- package/src/html/css/counter-styles.ts +973 -0
- package/src/html/css/decode.ts +130 -0
- package/src/html/css/parse.ts +1514 -160
- package/src/html/css/style.ts +4102 -222
- package/src/html/css/ua.ts +58 -12
- package/src/html/css/values.ts +150 -50
- package/src/html/css/vars.ts +348 -0
- package/src/html/dom.ts +284 -17
- package/src/html/fonts.ts +641 -0
- package/src/html/gif.ts +233 -0
- package/src/html/index.ts +180 -20
- package/src/html/layout/block.ts +3456 -230
- package/src/html/layout/boxes.ts +2100 -190
- package/src/html/layout/cache.ts +289 -0
- package/src/html/layout/collapse.ts +317 -0
- package/src/html/layout/css-grid.ts +1063 -0
- package/src/html/layout/flex.ts +1115 -106
- package/src/html/layout/floats.ts +128 -14
- package/src/html/layout/grid-lines.ts +141 -0
- package/src/html/layout/grid.ts +181 -0
- package/src/html/layout/inline.ts +3943 -192
- package/src/html/layout/shaping.ts +140 -0
- package/src/html/layout/table.ts +696 -186
- package/src/html/layout/tracks.ts +437 -0
- package/src/html/node.ts +1486 -121
- package/src/html/paint.ts +4293 -169
- package/src/html/resources.ts +161 -50
- package/src/html/surfaces.ts +81 -0
- package/src/html/svg.ts +493 -0
- package/src/html/url.ts +86 -0
- package/src/index.ts +4 -0
- package/src/internal/collate.ts +12 -0
- package/src/{markdown → internal/markdown}/ast.ts +35 -7
- package/src/{markdown → internal/markdown}/parse.ts +288 -35
- package/src/internal/markdown/stringify.ts +772 -0
- package/src/internal/prewarm.ts +45 -0
- package/src/internal/scroll.ts +5 -3
- package/src/internal/sdf.ts +227 -0
- package/src/internal/splice.ts +25 -0
- package/src/internal/window.ts +36 -5
- package/src/maps/anchors.ts +913 -0
- package/src/maps/controller.ts +1084 -0
- package/src/maps/gl/buckets.ts +461 -0
- package/src/maps/gl/build-worker.ts +66 -0
- package/src/maps/gl/color.ts +62 -0
- package/src/maps/gl/cover.ts +205 -0
- package/src/maps/gl/index.ts +23 -0
- package/src/maps/gl/markers.ts +83 -0
- package/src/maps/gl/overlays.ts +379 -0
- package/src/maps/gl/pane.ts +42 -0
- package/src/maps/gl/placement.ts +968 -0
- package/src/maps/gl/renderer.ts +1660 -0
- package/src/maps/gl/shaders.ts +489 -0
- package/src/maps/gl/store.ts +615 -0
- package/src/maps/gl/text.ts +868 -0
- package/src/maps/gl/view.ts +1489 -0
- package/src/maps/icons.ts +183 -0
- package/src/maps/index.ts +274 -81
- package/src/maps/labels.ts +457 -144
- package/src/maps/node.ts +832 -665
- package/src/maps/overlay.ts +148 -43
- package/src/maps/paint.ts +3 -0
- package/src/maps/proj.ts +118 -0
- package/src/maps/renderer.ts +155 -0
- package/src/maps/sources.ts +43 -6
- package/src/maps/style.ts +32 -0
- package/src/maps/styles.ts +215 -4
- package/src/maps/theme.ts +51 -0
- package/src/maps/tiles.ts +253 -62
- package/src/maps/types.ts +213 -21
- package/src/markdown/expressions.ts +5 -1
- package/src/markdown/index.ts +163 -78
- package/src/markdown/spans.ts +6 -1
- package/src/media-player/index.ts +18 -4
- package/src/qml/containers.tsx +6 -1
- package/src/qml/interaction.tsx +42 -5
- package/src/qml/layouts.tsx +21 -6
- package/src/qml/qtquick.tsx +9 -2
- package/src/qml/react.tsx +7 -5
- package/src/reorder/clock.ts +27 -0
- package/src/reorder/index.ts +100 -27
- package/src/rich-text-editor/clipboard.ts +439 -0
- package/src/rich-text-editor/collab.ts +91 -0
- package/src/rich-text-editor/commands.ts +448 -0
- package/src/rich-text-editor/dom-globals.d.ts +23 -0
- package/src/rich-text-editor/drag.ts +211 -0
- package/src/rich-text-editor/html.ts +619 -0
- package/src/rich-text-editor/index.ts +1364 -0
- package/src/rich-text-editor/inline.ts +345 -0
- package/src/rich-text-editor/keymap.ts +510 -0
- package/src/rich-text-editor/keys.ts +228 -0
- package/src/rich-text-editor/look.ts +427 -0
- package/src/rich-text-editor/markdown.ts +653 -0
- package/src/rich-text-editor/marks.ts +101 -0
- package/src/rich-text-editor/nodes.ts +497 -0
- package/src/rich-text-editor/render.ts +837 -0
- package/src/rich-text-editor/schema.ts +431 -0
- package/src/rich-text-editor/store.ts +39 -0
- package/src/rich-text-editor/suggest.ts +597 -0
- package/src/rich-text-editor/tables.ts +272 -0
- package/src/rich-text-editor/toolbar.ts +724 -0
- package/src/rich-text-editor/view.ts +2287 -0
- package/src/rich-text-editor/virtual.ts +372 -0
- package/src/richtext/node.ts +294 -44
- package/src/richtext/runs.ts +23 -12
- package/src/table/index.ts +29 -0
- package/src/table/rows.ts +18 -8
- package/src/terminal/backends.ts +4 -1
- package/src/terminal/index.ts +47 -15
- package/src/terminal/vt/pty.ts +16 -2
- package/src/terminal-output/index.ts +6 -1
- package/src/three/canvas.ts +102 -8
- package/src/three/events.ts +49 -9
- package/src/tree/index.ts +19 -0
- package/dist/markdown/ast.d.ts.map +0 -1
- package/dist/markdown/ast.js +0 -17
- package/dist/markdown/ast.js.map +0 -1
- package/dist/markdown/parse.d.ts.map +0 -1
- package/dist/markdown/parse.js.map +0 -1
- package/dist/markdown/tags.d.ts.map +0 -1
- package/dist/markdown/tags.js.map +0 -1
- /package/dist/{markdown → internal/markdown}/parse.d.ts +0 -0
- /package/dist/{markdown → internal/markdown}/tags.d.ts +0 -0
- /package/dist/{markdown → internal/markdown}/tags.js +0 -0
- /package/src/{markdown → internal/markdown}/tags.ts +0 -0
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
// Icons: the pictogram a symbol layer can set beside a point's name — the
|
|
2
|
+
// bus on a bus stop, so that "Lyons Ave/Yuille St" reads as a stop and not
|
|
3
|
+
// as a street.
|
|
4
|
+
//
|
|
5
|
+
// An icon is two pieces, each one colour: a rounded **plate** in the layer's
|
|
6
|
+
// colour and a **glyph** over it, white by default. Two single-colour pieces
|
|
7
|
+
// rather than one picture because that is what both renderers already draw
|
|
8
|
+
// text as: the retained renderer fills a path, and the GL renderer keeps a
|
|
9
|
+
// coverage raster in its label atlas and colours it in the shader — so an
|
|
10
|
+
// icon is two more of those, and one raster serves every palette.
|
|
11
|
+
//
|
|
12
|
+
// Both renderers trace the same paths from here, the way both take their
|
|
13
|
+
// label anchors from `./anchors.ts`: a map switched from one renderer to the
|
|
14
|
+
// other draws the same bus.
|
|
15
|
+
|
|
16
|
+
/** The pictograms a symbol layer can name. */
|
|
17
|
+
export type MapIcon = 'bus' | 'tram' | 'train' | 'ferry' | 'airport';
|
|
18
|
+
|
|
19
|
+
/** Every {@link MapIcon}, for a style editor's picker. */
|
|
20
|
+
export const MAP_ICONS: readonly MapIcon[] = [
|
|
21
|
+
'bus',
|
|
22
|
+
'tram',
|
|
23
|
+
'train',
|
|
24
|
+
'ferry',
|
|
25
|
+
'airport',
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
/** Logical pixels across a plate, where the layer does not say. */
|
|
29
|
+
export const DEFAULT_ICON_SIZE = 14;
|
|
30
|
+
export const DEFAULT_ICON_COLOR = '#2a6fb8';
|
|
31
|
+
export const DEFAULT_ICON_GLYPH_COLOR = '#ffffff';
|
|
32
|
+
/** Logical pixels between an icon's plate and the name set beside it. */
|
|
33
|
+
export const ICON_GAP = 3;
|
|
34
|
+
|
|
35
|
+
/** The slice of a 2D context an icon is traced with — `MapCanvas`'s, and
|
|
36
|
+
* the offscreen surface's the GL atlas rasterizes on. */
|
|
37
|
+
export interface IconPathContext {
|
|
38
|
+
beginPath(): void;
|
|
39
|
+
moveTo(x: number, y: number): void;
|
|
40
|
+
lineTo(x: number, y: number): void;
|
|
41
|
+
arc(x: number, y: number, r: number, from: number, to: number): void;
|
|
42
|
+
closePath(): void;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/** The grid a glyph is drawn on: a plate is this many units across. */
|
|
46
|
+
const GRID = 16;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Each glyph as polygons on the {@link GRID}, `[x0, y0, x1, y1, …]`.
|
|
50
|
+
*
|
|
51
|
+
* Solid shapes only, and a window is where no shape is: a glyph is filled
|
|
52
|
+
* with the non-zero rule, where a hole would take a second winding, and
|
|
53
|
+
* {@link wound} turns every polygon the same way so that two that touch
|
|
54
|
+
* fill as one rather than cancelling.
|
|
55
|
+
*/
|
|
56
|
+
const GLYPHS: Record<MapIcon, readonly (readonly number[])[]> = {
|
|
57
|
+
// Head on: a roof, the windscreen between two pillars, the lower panel,
|
|
58
|
+
// wheels and mirrors.
|
|
59
|
+
bus: [
|
|
60
|
+
[4, 3.5, 5, 2.5, 11, 2.5, 12, 3.5, 12, 4.6, 4, 4.6],
|
|
61
|
+
rect(4, 4.6, 1.2, 4),
|
|
62
|
+
rect(10.8, 4.6, 1.2, 4),
|
|
63
|
+
rect(4, 8.6, 8, 3.6),
|
|
64
|
+
rect(4.6, 12.2, 2, 1.4),
|
|
65
|
+
rect(9.4, 12.2, 2, 1.4),
|
|
66
|
+
rect(2.9, 5, 0.8, 2),
|
|
67
|
+
rect(12.3, 5, 0.8, 2),
|
|
68
|
+
],
|
|
69
|
+
// A car under its pantograph, on rails.
|
|
70
|
+
tram: [
|
|
71
|
+
rect(5.4, 1.4, 5.2, 0.8),
|
|
72
|
+
rect(7.6, 2.2, 0.8, 1.4),
|
|
73
|
+
[4.5, 4.6, 5.5, 3.6, 10.5, 3.6, 11.5, 4.6, 11.5, 5.4, 4.5, 5.4],
|
|
74
|
+
rect(4.5, 5.4, 1.1, 3.6),
|
|
75
|
+
rect(10.4, 5.4, 1.1, 3.6),
|
|
76
|
+
rect(4.5, 9, 7, 3),
|
|
77
|
+
[5.6, 12, 6.9, 12, 5.8, 14.2, 4.5, 14.2],
|
|
78
|
+
[9.1, 12, 10.4, 12, 11.5, 14.2, 10.2, 14.2],
|
|
79
|
+
],
|
|
80
|
+
// A locomotive's rounded nose, with its rails splayed wider than a tram's.
|
|
81
|
+
train: [
|
|
82
|
+
[4, 5, 4.6, 3, 6, 2.2, 10, 2.2, 11.4, 3, 12, 5, 12, 5.6, 4, 5.6],
|
|
83
|
+
rect(4, 5.6, 1.2, 3),
|
|
84
|
+
rect(10.8, 5.6, 1.2, 3),
|
|
85
|
+
rect(4, 8.6, 8, 3),
|
|
86
|
+
[5, 11.6, 6.4, 11.6, 4.8, 14.2, 3.4, 14.2],
|
|
87
|
+
[9.6, 11.6, 11, 11.6, 12.6, 14.2, 11.2, 14.2],
|
|
88
|
+
],
|
|
89
|
+
// Side on: a hull, a deckhouse, a funnel.
|
|
90
|
+
ferry: [
|
|
91
|
+
[2, 9, 14, 9, 12.2, 12.6, 3.8, 12.6],
|
|
92
|
+
rect(4.4, 6, 6.8, 3),
|
|
93
|
+
rect(6.2, 3.6, 2.2, 2.4),
|
|
94
|
+
],
|
|
95
|
+
// An aircraft from above, nose up.
|
|
96
|
+
airport: [
|
|
97
|
+
[
|
|
98
|
+
8, 1.8, 8.9, 2.8, 8.9, 6.6, 14, 9.6, 14, 10.8, 8.9, 9.3, 8.9, 12.3, 10.6,
|
|
99
|
+
13.6, 10.6, 14.4, 8, 13.7, 5.4, 14.4, 5.4, 13.6, 7.1, 12.3, 7.1, 9.3, 2,
|
|
100
|
+
10.8, 2, 9.6, 7.1, 6.6, 7.1, 2.8,
|
|
101
|
+
],
|
|
102
|
+
],
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
function rect(x: number, y: number, w: number, h: number): number[] {
|
|
106
|
+
return [x, y, x + w, y, x + w, y + h, x, y + h];
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/** The polygon wound clockwise on screen (y down) — positive shoelace
|
|
110
|
+
* area — whichever way it was written. */
|
|
111
|
+
function wound(points: readonly number[]): readonly number[] {
|
|
112
|
+
let area = 0;
|
|
113
|
+
const n = points.length / 2;
|
|
114
|
+
for (let i = 0; i < n; i++) {
|
|
115
|
+
const j = (i + 1) % n;
|
|
116
|
+
area +=
|
|
117
|
+
points[i * 2] * points[j * 2 + 1] - points[j * 2] * points[i * 2 + 1];
|
|
118
|
+
}
|
|
119
|
+
if (area >= 0) return points;
|
|
120
|
+
const out: number[] = [];
|
|
121
|
+
for (let i = n - 1; i >= 0; i--) out.push(points[i * 2], points[i * 2 + 1]);
|
|
122
|
+
return out;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
const WOUND = {} as Record<MapIcon, readonly (readonly number[])[]>;
|
|
126
|
+
for (const name of MAP_ICONS) WOUND[name] = GLYPHS[name].map(wound);
|
|
127
|
+
|
|
128
|
+
/** Whether `name` is an icon this module draws — a style is data, and may
|
|
129
|
+
* come from a file that names one this version does not have. */
|
|
130
|
+
export function isMapIcon(name: unknown): name is MapIcon {
|
|
131
|
+
return (
|
|
132
|
+
typeof name === 'string' &&
|
|
133
|
+
Object.prototype.hasOwnProperty.call(GLYPHS, name)
|
|
134
|
+
);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Trace a plate `size` across, centred on `cx, cy`: a square with corners
|
|
139
|
+
* rounded by a fifth of it. Adds to the current path; the caller begins it
|
|
140
|
+
* and fills it.
|
|
141
|
+
*/
|
|
142
|
+
export function tracePlate(
|
|
143
|
+
ctx: IconPathContext,
|
|
144
|
+
cx: number,
|
|
145
|
+
cy: number,
|
|
146
|
+
size: number,
|
|
147
|
+
): void {
|
|
148
|
+
const x = cx - size / 2;
|
|
149
|
+
const y = cy - size / 2;
|
|
150
|
+
const r = size * 0.2;
|
|
151
|
+
const e = size - r;
|
|
152
|
+
ctx.moveTo(x + r, y);
|
|
153
|
+
ctx.lineTo(x + e, y);
|
|
154
|
+
ctx.arc(x + e, y + r, r, -Math.PI / 2, 0);
|
|
155
|
+
ctx.lineTo(x + size, y + e);
|
|
156
|
+
ctx.arc(x + e, y + e, r, 0, Math.PI / 2);
|
|
157
|
+
ctx.lineTo(x + r, y + size);
|
|
158
|
+
ctx.arc(x + r, y + e, r, Math.PI / 2, Math.PI);
|
|
159
|
+
ctx.lineTo(x, y + r);
|
|
160
|
+
ctx.arc(x + r, y + r, r, Math.PI, Math.PI * 1.5);
|
|
161
|
+
ctx.closePath();
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/** Trace `icon`'s glyph over a plate `size` across, centred on `cx, cy`.
|
|
165
|
+
* Adds to the current path, as {@link tracePlate} does. */
|
|
166
|
+
export function traceGlyph(
|
|
167
|
+
ctx: IconPathContext,
|
|
168
|
+
icon: MapIcon,
|
|
169
|
+
cx: number,
|
|
170
|
+
cy: number,
|
|
171
|
+
size: number,
|
|
172
|
+
): void {
|
|
173
|
+
const unit = size / GRID;
|
|
174
|
+
const x = cx - size / 2;
|
|
175
|
+
const y = cy - size / 2;
|
|
176
|
+
for (const shape of WOUND[icon]) {
|
|
177
|
+
ctx.moveTo(x + shape[0] * unit, y + shape[1] * unit);
|
|
178
|
+
for (let i = 2; i < shape.length; i += 2) {
|
|
179
|
+
ctx.lineTo(x + shape[i] * unit, y + shape[i + 1] * unit);
|
|
180
|
+
}
|
|
181
|
+
ctx.closePath();
|
|
182
|
+
}
|
|
183
|
+
}
|
package/src/maps/index.ts
CHANGED
|
@@ -14,8 +14,9 @@
|
|
|
14
14
|
// until an application imports the component that needs it, so
|
|
15
15
|
// `sideEffects: false` stays honest. Do not move it into `../index.ts`
|
|
16
16
|
// (AGENTS.md, "Tree-shaking is a constraint").
|
|
17
|
-
import React, { useImperativeHandle, useRef } from 'react';
|
|
18
|
-
import type { ReactElement } from 'react';
|
|
17
|
+
import React, { useEffect, useImperativeHandle, useRef, useState } from 'react';
|
|
18
|
+
import type { ReactElement, ReactNode } from 'react';
|
|
19
|
+
import { useApp, useSupports, useTheme } from 'react-x11';
|
|
19
20
|
import { registerElement, registeredElements } from 'react-x11/host';
|
|
20
21
|
import { createStyles, flattenStyle } from 'react-x11/style';
|
|
21
22
|
// Loads the module the JSX augmentation at the bottom targets: nothing in
|
|
@@ -24,16 +25,25 @@ import { createStyles, flattenStyle } from 'react-x11/style';
|
|
|
24
25
|
// addition. Type-only, so it is erased.
|
|
25
26
|
import type {} from 'react-x11/jsx-runtime';
|
|
26
27
|
|
|
28
|
+
import { DEFAULT_CAMERA, MapController } from './controller.js';
|
|
27
29
|
import { ELEMENT, MapViewNode, SELF_DAMAGED_PROPS } from './node.js';
|
|
30
|
+
import {
|
|
31
|
+
chooseRenderer,
|
|
32
|
+
glRendererModule,
|
|
33
|
+
loadGlRenderer,
|
|
34
|
+
rendererFromEnv,
|
|
35
|
+
rendererRequest,
|
|
36
|
+
} from './renderer.js';
|
|
37
|
+
import type { GlRendererModule } from './renderer.js';
|
|
38
|
+
import { defaultStyleFor, isDarkTheme } from './theme.js';
|
|
28
39
|
import type {
|
|
29
|
-
FitBoundsOptions,
|
|
30
|
-
MapCamera,
|
|
31
|
-
MapHandle,
|
|
32
40
|
MapProps,
|
|
41
|
+
MapRenderer,
|
|
42
|
+
MapRendererReason,
|
|
33
43
|
MapViewProps,
|
|
34
44
|
} from './types.js';
|
|
35
|
-
|
|
36
|
-
|
|
45
|
+
|
|
46
|
+
const h = React.createElement;
|
|
37
47
|
|
|
38
48
|
if (!registeredElements().includes(ELEMENT)) {
|
|
39
49
|
registerElement(ELEMENT, {
|
|
@@ -65,8 +75,6 @@ const styles = createStyles({
|
|
|
65
75
|
fill: { flexGrow: 1 },
|
|
66
76
|
});
|
|
67
77
|
|
|
68
|
-
const DEFAULT_CAMERA: MapCamera = { center: { lon: 0, lat: 20 }, zoom: 2 };
|
|
69
|
-
|
|
70
78
|
/**
|
|
71
79
|
* A map.
|
|
72
80
|
*
|
|
@@ -91,87 +99,264 @@ const DEFAULT_CAMERA: MapCamera = { center: { lon: 0, lat: 20 }, zoom: 2 };
|
|
|
91
99
|
* controlled form, where the application owns where the map is looking.
|
|
92
100
|
*/
|
|
93
101
|
export function Map(props: MapProps): ReactElement {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
ref,
|
|
101
|
-
...rest
|
|
102
|
-
} = props;
|
|
103
|
-
|
|
104
|
-
const view = useRef<MapViewNode | null>(null);
|
|
105
|
-
const controlled = camera !== undefined;
|
|
106
|
-
|
|
107
|
-
useImperativeHandle(
|
|
108
|
-
ref,
|
|
109
|
-
(): MapHandle => ({
|
|
110
|
-
// Every method reads the node at call time rather than closing over
|
|
111
|
-
// it: the ref attaches after the commit that created the node, and a
|
|
112
|
-
// handle built once must still work for the whole mount.
|
|
113
|
-
getCamera: () => view.current?.getCamera() ?? DEFAULT_CAMERA,
|
|
114
|
-
setCamera: (next: Partial<MapCamera>) => view.current?.setCamera(next),
|
|
115
|
-
panBy: (dx: number, dy: number) => view.current?.panBy(dx, dy),
|
|
116
|
-
zoomIn: (step?: number) => view.current?.zoomIn(step),
|
|
117
|
-
zoomOut: (step?: number) => view.current?.zoomOut(step),
|
|
118
|
-
zoomTo: (zoom: number) => view.current?.zoomTo(zoom),
|
|
119
|
-
fitBounds: (bounds: LngLatBounds, options?: FitBoundsOptions) =>
|
|
120
|
-
view.current?.fitBounds(bounds, options),
|
|
121
|
-
fitMarkers: (ids?: readonly string[], options?: FitBoundsOptions) =>
|
|
122
|
-
view.current?.fitMarkers(ids, options),
|
|
123
|
-
getBounds: () =>
|
|
124
|
-
view.current?.getBounds() ?? {
|
|
125
|
-
west: -180,
|
|
126
|
-
south: -85,
|
|
127
|
-
east: 180,
|
|
128
|
-
north: 85,
|
|
129
|
-
},
|
|
130
|
-
project: (position: LngLat) =>
|
|
131
|
-
view.current?.project(position) ?? { x: 0, y: 0 },
|
|
132
|
-
unproject: (x: number, y: number) =>
|
|
133
|
-
view.current?.unproject(x, y) ?? { lon: 0, lat: 0 },
|
|
134
|
-
markerAt: (x: number, y: number): MapMarker | null =>
|
|
135
|
-
view.current?.markerAt(x, y) ?? null,
|
|
136
|
-
refresh: () => view.current?.refresh(),
|
|
137
|
-
stats: () => view.current?.stats() ?? null,
|
|
138
|
-
}),
|
|
139
|
-
[],
|
|
102
|
+
// One controller for the life of the mount: the camera, the gestures and
|
|
103
|
+
// the handle, which whichever renderer is drawing answers to (see
|
|
104
|
+
// `./controller.ts`). Seeded here, once — `defaultCamera` is read on the
|
|
105
|
+
// first render and never again, which is what makes it a *default*.
|
|
106
|
+
const [controller] = useState(
|
|
107
|
+
() => new MapController(props.defaultCamera ?? DEFAULT_CAMERA),
|
|
140
108
|
);
|
|
109
|
+
// Read at event and frame time, so the latest props are always the ones
|
|
110
|
+
// that count — and the controlled/uncontrolled fork is simply whether
|
|
111
|
+
// `camera` is among them.
|
|
112
|
+
controller.setProps(props);
|
|
113
|
+
// The controller's own handle, made once: the same object for the whole
|
|
114
|
+
// mount, whatever draws the map — across a renderer switch too.
|
|
115
|
+
useImperativeHandle(props.ref, () => controller.handle, [controller]);
|
|
116
|
+
useEffect(() => () => controller.dispose(), [controller]);
|
|
141
117
|
|
|
142
|
-
|
|
118
|
+
// A GL failure is the map's for the rest of its mount: an `'auto'` map
|
|
119
|
+
// that met one draws through the retained renderer from then on.
|
|
120
|
+
const [failure, setFailure] = useState<Error | null>(null);
|
|
121
|
+
const latest = useRef(props);
|
|
122
|
+
latest.current = props;
|
|
123
|
+
|
|
124
|
+
const flat = flattenStyle(props.style ?? null);
|
|
143
125
|
const sized =
|
|
144
126
|
flat.height !== undefined ||
|
|
145
127
|
flat.flexGrow !== undefined ||
|
|
146
128
|
flat.flexBasis !== undefined;
|
|
147
129
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
130
|
+
const { asked, forced } = rendererRequest(props.renderer, rendererFromEnv());
|
|
131
|
+
const pane =
|
|
132
|
+
asked === 'auto'
|
|
133
|
+
? h(AutoPane, {
|
|
134
|
+
key: 'auto',
|
|
135
|
+
map: props,
|
|
136
|
+
controller,
|
|
137
|
+
failed: failure !== null,
|
|
138
|
+
onFailure: setFailure,
|
|
139
|
+
})
|
|
140
|
+
: h(MapPane, {
|
|
141
|
+
key: asked,
|
|
142
|
+
renderer: asked,
|
|
143
|
+
reason: forced ? 'forced' : null,
|
|
144
|
+
map: props,
|
|
145
|
+
controller,
|
|
146
|
+
// Asked for by name: never a fallback, always the application's
|
|
147
|
+
// to hear about.
|
|
148
|
+
onFailure: (error: Error) => latest.current.onError?.(error),
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
return h(
|
|
155
152
|
'box',
|
|
156
|
-
{ style: sized ? [styles.clip, style] : [styles.pane, style] },
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
153
|
+
{ style: sized ? [styles.clip, props.style] : [styles.pane, props.style] },
|
|
154
|
+
pane,
|
|
155
|
+
);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/** Props `<Map>` reads itself, or that only the GL renderer reads — kept off
|
|
159
|
+
* the `<mapview>` element, which would take each as a prop of its own. */
|
|
160
|
+
const NOT_FOR_THE_ELEMENT: readonly string[] = [
|
|
161
|
+
'camera',
|
|
162
|
+
'defaultCamera',
|
|
163
|
+
'style',
|
|
164
|
+
'children',
|
|
165
|
+
'ref',
|
|
166
|
+
'renderer',
|
|
167
|
+
'onRendererChange',
|
|
168
|
+
'onError',
|
|
169
|
+
'levelFade',
|
|
170
|
+
'adaptive',
|
|
171
|
+
'buildWorkers',
|
|
172
|
+
'antialias',
|
|
173
|
+
'fillRule',
|
|
174
|
+
'labelsWhileMoving',
|
|
175
|
+
'onAfterDraw',
|
|
176
|
+
];
|
|
177
|
+
|
|
178
|
+
function elementProps(map: MapProps): MapViewProps {
|
|
179
|
+
const out: Record<string, unknown> = { ...map };
|
|
180
|
+
for (const name of NOT_FOR_THE_ELEMENT) delete out[name];
|
|
181
|
+
return out as MapViewProps;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
interface PaneProps {
|
|
185
|
+
map: MapProps;
|
|
186
|
+
controller: MapController;
|
|
187
|
+
onFailure: (error: Error) => void;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* `renderer="auto"`: GL where this connection draws through the direct
|
|
192
|
+
* backend, the retained renderer everywhere else — `./renderer.ts` is the
|
|
193
|
+
* decision, and this is where it reads the connection. Its own component so
|
|
194
|
+
* that a map that asked for a renderer by name never asks the connection: on
|
|
195
|
+
* the Cocoa backend the question is a GL runtime brought up to answer it.
|
|
196
|
+
*/
|
|
197
|
+
function AutoPane(props: PaneProps & { failed: boolean }): ReactElement {
|
|
198
|
+
const { map } = props;
|
|
199
|
+
const app = useApp();
|
|
200
|
+
const shaders = useSupports('shaders');
|
|
201
|
+
const probing = useDirectGlProbe(app, shaders);
|
|
202
|
+
const choice = chooseRenderer({
|
|
203
|
+
requested: 'auto',
|
|
204
|
+
shaders,
|
|
205
|
+
probing,
|
|
206
|
+
failed: props.failed,
|
|
207
|
+
});
|
|
208
|
+
return h(MapPane, {
|
|
209
|
+
renderer: choice.renderer,
|
|
210
|
+
reason: choice.reason,
|
|
211
|
+
map,
|
|
212
|
+
controller: props.controller,
|
|
213
|
+
onFailure: props.onFailure,
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* Whether this connection's answer to `useSupports('shaders')` is still to
|
|
219
|
+
* come. Under a policy that could choose direct GL, X11 settles it before
|
|
220
|
+
* `createRoot()` hands the app back; the Cocoa backend settles it on the
|
|
221
|
+
* first ask, which is this. Until it has, a map shows its background rather
|
|
222
|
+
* than drawing through the retained renderer for a few milliseconds and
|
|
223
|
+
* fetching the view's tiles twice.
|
|
224
|
+
*/
|
|
225
|
+
function useDirectGlProbe(app: unknown, shaders: boolean): boolean {
|
|
226
|
+
const mode = (app as { glPolicy?: { mode?: string } } | null)?.glPolicy?.mode;
|
|
227
|
+
const wants = mode === 'auto' || mode === 'direct';
|
|
228
|
+
const [settled, setSettled] = useState(false);
|
|
229
|
+
const pending = wants && !shaders && !settled;
|
|
230
|
+
useEffect(() => {
|
|
231
|
+
if (!pending) return;
|
|
232
|
+
const probe = (
|
|
233
|
+
app as { glCapabilities?(): Promise<unknown> } | null
|
|
234
|
+
)?.glCapabilities?.();
|
|
235
|
+
if (!probe) {
|
|
236
|
+
setSettled(true);
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
let live = true;
|
|
240
|
+
const done = (): void => {
|
|
241
|
+
if (live) setSettled(true);
|
|
242
|
+
};
|
|
243
|
+
probe.then(done, done);
|
|
244
|
+
return () => {
|
|
245
|
+
live = false;
|
|
246
|
+
};
|
|
247
|
+
}, [app, pending]);
|
|
248
|
+
return pending;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* The pane, drawn by the renderer chosen: the `<mapview>` element, the GL
|
|
253
|
+
* renderer once its module has loaded, or — while the connection's answer
|
|
254
|
+
* or the module is on its way — a box in the style's background. Whichever
|
|
255
|
+
* it is, it answers to the map's one controller.
|
|
256
|
+
*/
|
|
257
|
+
function MapPane(
|
|
258
|
+
props: PaneProps & {
|
|
259
|
+
renderer: MapRenderer | 'pending';
|
|
260
|
+
reason: MapRendererReason | null;
|
|
261
|
+
},
|
|
262
|
+
): ReactElement {
|
|
263
|
+
const { renderer, reason, map, controller } = props;
|
|
264
|
+
const theme = useTheme();
|
|
265
|
+
const overlay = useSupports('glOverlay');
|
|
266
|
+
|
|
267
|
+
// `onRendererChange`: whenever the map lands somewhere it did not ask for
|
|
268
|
+
// — its first renderer, or the one it falls back to.
|
|
269
|
+
const reported = useRef<MapRenderer | null>(null);
|
|
270
|
+
useEffect(() => {
|
|
271
|
+
if (renderer === 'pending') return;
|
|
272
|
+
const before = reported.current;
|
|
273
|
+
reported.current = renderer;
|
|
274
|
+
if (before === renderer || reason === null) return;
|
|
275
|
+
map.onRendererChange?.(renderer, reason);
|
|
276
|
+
}, [renderer, reason]);
|
|
277
|
+
|
|
278
|
+
const wantGl = renderer === 'gl';
|
|
279
|
+
const [gl, setGl] = useState<GlRendererModule | null>(glRendererModule);
|
|
280
|
+
useEffect(() => {
|
|
281
|
+
if (!wantGl || gl) return;
|
|
282
|
+
let live = true;
|
|
283
|
+
loadGlRenderer().then(
|
|
284
|
+
(module) => {
|
|
285
|
+
if (live) setGl(module);
|
|
286
|
+
},
|
|
287
|
+
(error: unknown) => {
|
|
288
|
+
if (!live) return;
|
|
289
|
+
props.onFailure(
|
|
290
|
+
error instanceof Error ? error : new Error(String(error)),
|
|
291
|
+
);
|
|
292
|
+
},
|
|
293
|
+
);
|
|
294
|
+
return () => {
|
|
295
|
+
live = false;
|
|
296
|
+
};
|
|
297
|
+
}, [wantGl, gl]);
|
|
298
|
+
|
|
299
|
+
const common = {
|
|
300
|
+
style: styles.fill,
|
|
301
|
+
role: map.role ?? 'group',
|
|
302
|
+
'aria-label': map['aria-label'] ?? 'Map',
|
|
303
|
+
'data-testname': map['data-testname'],
|
|
304
|
+
};
|
|
305
|
+
// What the application puts over the map is the pane's sibling, after
|
|
306
|
+
// it, rather than its child: a registered element's own drawing happens
|
|
307
|
+
// *after* `super.paint` has painted its children, so anything mounted
|
|
308
|
+
// inside `<mapview>` would be painted over by the map. `<Flow>` makes the
|
|
309
|
+
// same arrangement for the same reason. The one exception is a GL pane:
|
|
310
|
+
// a sibling is under its surface, so there they go inside the surface,
|
|
311
|
+
// whose children core draws above it.
|
|
312
|
+
const over = (pane: ReactElement, children: ReactNode): ReactElement =>
|
|
313
|
+
h(React.Fragment, null, pane, children);
|
|
314
|
+
if (renderer === 'retained') {
|
|
315
|
+
return over(
|
|
316
|
+
h(ELEMENT, {
|
|
317
|
+
...elementProps(map),
|
|
318
|
+
...common,
|
|
319
|
+
key: 'retained',
|
|
320
|
+
mapController: controller,
|
|
321
|
+
// The controlled/uncontrolled fork, and the whole of it.
|
|
322
|
+
// Controlled: the application's camera goes down and the element
|
|
323
|
+
// only ever *asks* to move. Uncontrolled: nothing goes down, the
|
|
324
|
+
// controller owns the camera, and a pan never reaches React —
|
|
325
|
+
// which is the difference between a drag that blits a strip and
|
|
326
|
+
// one that re-renders and re-claims the pane on every pointer
|
|
327
|
+
// step.
|
|
328
|
+
camera: map.camera,
|
|
329
|
+
} as MapViewProps),
|
|
330
|
+
map.children,
|
|
331
|
+
);
|
|
332
|
+
}
|
|
333
|
+
if (renderer === 'gl' && gl) {
|
|
334
|
+
return over(
|
|
335
|
+
h(
|
|
336
|
+
gl.GlMapPane,
|
|
337
|
+
{
|
|
338
|
+
...common,
|
|
339
|
+
key: 'gl',
|
|
340
|
+
controller,
|
|
341
|
+
map,
|
|
342
|
+
onFailure: props.onFailure,
|
|
343
|
+
},
|
|
344
|
+
overlay ? map.children : undefined,
|
|
345
|
+
),
|
|
346
|
+
overlay ? null : map.children,
|
|
347
|
+
);
|
|
348
|
+
}
|
|
349
|
+
const background = (map.mapStyle ?? defaultStyleFor(isDarkTheme(theme)))
|
|
350
|
+
.background;
|
|
351
|
+
return over(
|
|
352
|
+
h('box', {
|
|
353
|
+
...common,
|
|
354
|
+
key: 'pending',
|
|
355
|
+
style: background
|
|
356
|
+
? [styles.fill, { backgroundColor: background }]
|
|
357
|
+
: styles.fill,
|
|
173
358
|
}),
|
|
174
|
-
children,
|
|
359
|
+
map.children,
|
|
175
360
|
);
|
|
176
361
|
}
|
|
177
362
|
|
|
@@ -242,6 +427,8 @@ export {
|
|
|
242
427
|
|
|
243
428
|
export { compileFilter, resolveZoomed } from './style.js';
|
|
244
429
|
|
|
430
|
+
export { MAP_ICONS } from './icons.js';
|
|
431
|
+
|
|
245
432
|
export {
|
|
246
433
|
decodePolyline,
|
|
247
434
|
geoJsonOverlays,
|
|
@@ -256,9 +443,14 @@ export { TileCache } from './tiles.js';
|
|
|
256
443
|
export type {
|
|
257
444
|
FitBoundsOptions,
|
|
258
445
|
MapFrameStats,
|
|
446
|
+
MapGlFrameStats,
|
|
447
|
+
MapGlProps,
|
|
259
448
|
MapHandle,
|
|
260
449
|
MapPointerEvent,
|
|
261
450
|
MapProps,
|
|
451
|
+
MapRenderer,
|
|
452
|
+
MapRendererReason,
|
|
453
|
+
MapRendererRequest,
|
|
262
454
|
MapViewProps,
|
|
263
455
|
} from './types.js';
|
|
264
456
|
export type {
|
|
@@ -290,6 +482,7 @@ export type {
|
|
|
290
482
|
SymbolLayer,
|
|
291
483
|
Zoomed,
|
|
292
484
|
} from './style.js';
|
|
485
|
+
export type { MapIcon } from './icons.js';
|
|
293
486
|
export type {
|
|
294
487
|
MapPalette,
|
|
295
488
|
OpenMapTilesStyleOptions,
|