@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
|
@@ -25,10 +25,20 @@ export interface Band {
|
|
|
25
25
|
right: number;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
+
/**
|
|
29
|
+
* How much narrower than a float its room may be and still hold it: the
|
|
30
|
+
* error of adding up widths, which are fractions of a pixel. Ten floats of
|
|
31
|
+
* `0.87em` in a box `8.7em` wide came to more than the box by 1e-14 px,
|
|
32
|
+
* and the tenth went under the other nine.
|
|
33
|
+
*/
|
|
34
|
+
const FIT_SLACK = 1e-6;
|
|
35
|
+
|
|
28
36
|
export class FloatContext {
|
|
29
37
|
private _boxes: FloatBox[] = [];
|
|
30
38
|
private _lowestLeft = -Infinity;
|
|
31
39
|
private _lowestRight = -Infinity;
|
|
40
|
+
/** The top of the float placed last, which no later one goes above. */
|
|
41
|
+
private _lastTop = -Infinity;
|
|
32
42
|
/** The BFC's own content edges, which is what a band is clipped to. */
|
|
33
43
|
readonly left: number;
|
|
34
44
|
readonly right: number;
|
|
@@ -42,27 +52,44 @@ export class FloatContext {
|
|
|
42
52
|
return this._boxes.length === 0;
|
|
43
53
|
}
|
|
44
54
|
|
|
55
|
+
/** How many floats are placed: a mark for `clearanceSince`. */
|
|
56
|
+
get count(): number {
|
|
57
|
+
return this._boxes.length;
|
|
58
|
+
}
|
|
59
|
+
|
|
45
60
|
add(box: FloatBox): void {
|
|
46
61
|
this._boxes.push(box);
|
|
62
|
+
if (box.top > this._lastTop) this._lastTop = box.top;
|
|
47
63
|
if (box.side === 'left')
|
|
48
64
|
this._lowestLeft = Math.max(this._lowestLeft, box.bottom);
|
|
49
65
|
else this._lowestRight = Math.max(this._lowestRight, box.bottom);
|
|
50
66
|
}
|
|
51
67
|
|
|
52
68
|
/**
|
|
53
|
-
* The band left for a line of `height` starting at `y
|
|
69
|
+
* The band left for a line of `height` starting at `y`, between `left`
|
|
70
|
+
* and `right` — the formatting context's own edges unless a narrower
|
|
71
|
+
* containing block is asking.
|
|
54
72
|
*
|
|
55
73
|
* A float intersects a line when their vertical ranges overlap at all —
|
|
56
74
|
* not when the line's top is inside the float — which is why this takes a
|
|
57
75
|
* height rather than just a position. Getting that wrong lets the last
|
|
58
76
|
* line of a wrapped paragraph slide under a floated image by a pixel.
|
|
77
|
+
*
|
|
78
|
+
* `solid` leaves out a float of no width: a block with a formatting
|
|
79
|
+
* context of its own may not overlap a float's margin box (CSS 2.1 9.5),
|
|
80
|
+
* and one with no area has nothing to overlap, wherever it is.
|
|
59
81
|
*/
|
|
60
|
-
bandAt(
|
|
61
|
-
|
|
62
|
-
|
|
82
|
+
bandAt(
|
|
83
|
+
y: number,
|
|
84
|
+
height: number,
|
|
85
|
+
left = this.left,
|
|
86
|
+
right = this.right,
|
|
87
|
+
solid = false,
|
|
88
|
+
): Band {
|
|
63
89
|
const bottom = y + Math.max(1, height);
|
|
64
90
|
for (const box of this._boxes) {
|
|
65
91
|
if (box.bottom <= y || box.top >= bottom) continue;
|
|
92
|
+
if (solid && box.right <= box.left) continue;
|
|
66
93
|
if (box.side === 'left') left = Math.max(left, box.right);
|
|
67
94
|
else right = Math.min(right, box.left);
|
|
68
95
|
}
|
|
@@ -78,6 +105,21 @@ export class FloatContext {
|
|
|
78
105
|
return false;
|
|
79
106
|
}
|
|
80
107
|
|
|
108
|
+
/**
|
|
109
|
+
* Where a line at `y`, `height` tall, next has more room: the nearest
|
|
110
|
+
* bottom edge of a float beside it. Null when no float is, so nothing
|
|
111
|
+
* below can widen the line.
|
|
112
|
+
*/
|
|
113
|
+
nextEdgeBelow(y: number, height: number): number | null {
|
|
114
|
+
const bottom = y + Math.max(1, height);
|
|
115
|
+
let next: number | null = null;
|
|
116
|
+
for (const box of this._boxes) {
|
|
117
|
+
if (box.bottom <= y || box.top >= bottom) continue;
|
|
118
|
+
if (next === null || box.bottom < next) next = box.bottom;
|
|
119
|
+
}
|
|
120
|
+
return next;
|
|
121
|
+
}
|
|
122
|
+
|
|
81
123
|
/**
|
|
82
124
|
* The lowest `y` a box with this `clear` may start at. `-Infinity` when
|
|
83
125
|
* nothing is in the way, so a caller takes `Math.max(y, clearance)`.
|
|
@@ -95,6 +137,22 @@ export class FloatContext {
|
|
|
95
137
|
}
|
|
96
138
|
}
|
|
97
139
|
|
|
140
|
+
/** `clearance`, of the floats placed since `mark` alone. */
|
|
141
|
+
clearanceSince(
|
|
142
|
+
clear: 'none' | 'left' | 'right' | 'both',
|
|
143
|
+
mark: number,
|
|
144
|
+
): number {
|
|
145
|
+
if (clear === 'none') return -Infinity;
|
|
146
|
+
let lowest = -Infinity;
|
|
147
|
+
for (let i = mark; i < this._boxes.length; i += 1) {
|
|
148
|
+
const float = this._boxes[i];
|
|
149
|
+
if (clear === 'both' || clear === float.side) {
|
|
150
|
+
lowest = Math.max(lowest, float.bottom);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return lowest;
|
|
154
|
+
}
|
|
155
|
+
|
|
98
156
|
/** How far down the floats reach — what a container that establishes a
|
|
99
157
|
* BFC has to grow to, so it does not end above its own floats. */
|
|
100
158
|
get bottom(): number {
|
|
@@ -102,24 +160,80 @@ export class FloatContext {
|
|
|
102
160
|
}
|
|
103
161
|
|
|
104
162
|
/**
|
|
105
|
-
* The first `y` at or below `from` where a box `width` wide fits on `side
|
|
106
|
-
*
|
|
107
|
-
*
|
|
163
|
+
* The first `y` at or below `from` where a box `width` wide fits on `side`
|
|
164
|
+
* between `left` and `right`, its containing block's content edges. A
|
|
165
|
+
* float that does not fit beside the ones already placed goes under them,
|
|
166
|
+
* which is the rule that makes two 60%-wide floats stack; one wider than
|
|
167
|
+
* its containing block goes where nothing is beside it.
|
|
168
|
+
*
|
|
169
|
+
* No higher than the float placed before it, either (CSS 2.1 9.5.1, rule
|
|
170
|
+
* 5): a float that fits in a gap an earlier one went under does not go
|
|
171
|
+
* back up into it. That also makes every float already placed start at or
|
|
172
|
+
* above the one being placed, so the band only widens below its top and a
|
|
173
|
+
* band one pixel tall there is the band over its whole height. And it is
|
|
174
|
+
* what keeps a row of floats cheap: from the top of the one before, the
|
|
175
|
+
* floats of the rows above are no candidates at all, where a thousand
|
|
176
|
+
* floated thumbnails walked the bottoms of every row above theirs.
|
|
108
177
|
*/
|
|
109
|
-
placeAt(
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
178
|
+
placeAt(
|
|
179
|
+
from: number,
|
|
180
|
+
width: number,
|
|
181
|
+
side: 'left' | 'right',
|
|
182
|
+
left = this.left,
|
|
183
|
+
right = this.right,
|
|
184
|
+
): number {
|
|
185
|
+
if (from < this._lastTop) from = this._lastTop;
|
|
186
|
+
// where it fits at once, as most do, nothing below is looked at
|
|
187
|
+
if (this._fits(from, width, side, left, right)) return from;
|
|
188
|
+
// Candidate positions are the bottom of every float below `from`; there
|
|
189
|
+
// is no other height at which the band can get wider.
|
|
190
|
+
const candidates: number[] = [];
|
|
114
191
|
for (const box of this._boxes) {
|
|
115
192
|
if (box.bottom > from) candidates.push(box.bottom);
|
|
116
193
|
}
|
|
117
194
|
candidates.sort((a, b) => a - b);
|
|
195
|
+
let y = from;
|
|
118
196
|
for (const candidate of candidates) {
|
|
119
|
-
|
|
120
|
-
if (
|
|
197
|
+
// a row of floats ends at one height, asked about once
|
|
198
|
+
if (candidate === y) continue;
|
|
199
|
+
if (this._fits(candidate, width, side, left, right)) return candidate;
|
|
121
200
|
y = candidate;
|
|
122
201
|
}
|
|
123
202
|
return y;
|
|
124
203
|
}
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Whether a float `width` wide fits at `y` (CSS 2.1 9.5.1): past the
|
|
207
|
+
* floats on its own side, and short of every float on the other (rule
|
|
208
|
+
* 3), which lets it stand out of its containing block where no float of
|
|
209
|
+
* its own side is beside it, and within the containing block where one
|
|
210
|
+
* is (rule 7). Held to the containing block always, a float wider than
|
|
211
|
+
* its block went below every float beside it, where it fitted beside
|
|
212
|
+
* them in the formatting context.
|
|
213
|
+
*/
|
|
214
|
+
private _fits(
|
|
215
|
+
y: number,
|
|
216
|
+
width: number,
|
|
217
|
+
side: 'left' | 'right',
|
|
218
|
+
left: number,
|
|
219
|
+
right: number,
|
|
220
|
+
): boolean {
|
|
221
|
+
const start = side === 'left';
|
|
222
|
+
let near = start ? left : right;
|
|
223
|
+
let far = start ? Infinity : -Infinity;
|
|
224
|
+
let beside = false;
|
|
225
|
+
for (const box of this._boxes) {
|
|
226
|
+
if (box.bottom <= y || box.top >= y + 1) continue;
|
|
227
|
+
if (box.side === side) {
|
|
228
|
+
beside = true;
|
|
229
|
+
near = start ? Math.max(near, box.right) : Math.min(near, box.left);
|
|
230
|
+
} else {
|
|
231
|
+
far = start ? Math.min(far, box.left) : Math.max(far, box.right);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
if (beside) far = start ? Math.min(far, right) : Math.max(far, left);
|
|
235
|
+
return start
|
|
236
|
+
? near + width <= far + FIT_SLACK
|
|
237
|
+
: near - width >= far - FIT_SLACK;
|
|
238
|
+
}
|
|
125
239
|
}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
// A grid's lines by number and by name (CSS Grid 1, 8.3): what a grid
|
|
2
|
+
// item's placement properties come to as line indices. Shared by the
|
|
3
|
+
// placement of the grid's items (`css-grid.ts`) and by the grid area an
|
|
4
|
+
// absolutely positioned box takes for its containing block (`block.ts`),
|
|
5
|
+
// which must read a name as the placement does.
|
|
6
|
+
import type { GridAreas, GridLine } from '../css/style.js';
|
|
7
|
+
|
|
8
|
+
/** One axis of a grid: how many tracks its explicit grid has, and which of
|
|
9
|
+
* its lines — from 0, before the first track — carry each name. */
|
|
10
|
+
export interface GridLines {
|
|
11
|
+
tracks: number;
|
|
12
|
+
named: Map<string, number[]>;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* An axis's lines from the names its track list gives them, and those
|
|
17
|
+
* `grid-template-areas` gives the edges of its areas: `a-start` and
|
|
18
|
+
* `a-end` (7.3.2). `names[i]` is the line before track `i`.
|
|
19
|
+
*/
|
|
20
|
+
export function gridLines(
|
|
21
|
+
tracks: number,
|
|
22
|
+
names: readonly (readonly string[])[],
|
|
23
|
+
areas: GridAreas | null,
|
|
24
|
+
axis: 'rows' | 'columns',
|
|
25
|
+
): GridLines {
|
|
26
|
+
const named = new Map<string, number[]>();
|
|
27
|
+
const add = (name: string, line: number) => {
|
|
28
|
+
const list = named.get(name);
|
|
29
|
+
if (!list) named.set(name, [line]);
|
|
30
|
+
else if (!list.includes(line)) list.push(line);
|
|
31
|
+
};
|
|
32
|
+
names.forEach((group, line) => {
|
|
33
|
+
for (const name of group) add(name, line);
|
|
34
|
+
});
|
|
35
|
+
if (areas) {
|
|
36
|
+
for (const [name, area] of areas.areas) {
|
|
37
|
+
add(`${name}-start`, area[axis][0]);
|
|
38
|
+
add(`${name}-end`, area[axis][1]);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
for (const list of named.values()) list.sort((a, b) => a - b);
|
|
42
|
+
return { tracks, named };
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* The `n`th line named `name` from the start of the explicit grid, or from
|
|
47
|
+
* its end where `n` is negative: where there are not so many, the implicit
|
|
48
|
+
* lines past that end all count as having the name (8.3).
|
|
49
|
+
*/
|
|
50
|
+
export function namedLine(lines: GridLines, name: string, n: number): number {
|
|
51
|
+
const list = lines.named.get(name) ?? [];
|
|
52
|
+
if (n > 0) {
|
|
53
|
+
return n <= list.length ? list[n - 1] : lines.tracks + (n - list.length);
|
|
54
|
+
}
|
|
55
|
+
const k = -n;
|
|
56
|
+
return k <= list.length ? list[list.length - k] : -(k - list.length);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* The line a placement property names, or null for `auto` and a span. A
|
|
61
|
+
* name alone is the edge of the area of that name, the first line called
|
|
62
|
+
* `<name>-start` or `<name>-end`, and else the first line called `<name>`.
|
|
63
|
+
*/
|
|
64
|
+
export function lineOf(
|
|
65
|
+
lines: GridLines,
|
|
66
|
+
line: GridLine,
|
|
67
|
+
side: 'start' | 'end',
|
|
68
|
+
): number | null {
|
|
69
|
+
if (!line || 'span' in line) return null;
|
|
70
|
+
if ('line' in line) {
|
|
71
|
+
if (line.name !== undefined) return namedLine(lines, line.name, line.line);
|
|
72
|
+
return line.line > 0 ? line.line - 1 : lines.tracks + 1 + line.line;
|
|
73
|
+
}
|
|
74
|
+
const edge = lines.named.get(`${line.name}-${side}`);
|
|
75
|
+
if (edge?.length) return edge[0];
|
|
76
|
+
return namedLine(lines, line.name, 1);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Where a span of a name ends, counting `count` lines of that name on from
|
|
81
|
+
* `from` (forward) or back from it: the implicit lines past the grid's
|
|
82
|
+
* ends all count as having the name.
|
|
83
|
+
*/
|
|
84
|
+
export function spanToName(
|
|
85
|
+
lines: GridLines,
|
|
86
|
+
name: string,
|
|
87
|
+
count: number,
|
|
88
|
+
from: number,
|
|
89
|
+
forward: boolean,
|
|
90
|
+
): number {
|
|
91
|
+
const list = lines.named.get(name) ?? [];
|
|
92
|
+
if (forward) {
|
|
93
|
+
const after = list.filter((l) => l > from);
|
|
94
|
+
if (count <= after.length) return after[count - 1];
|
|
95
|
+
return Math.max(from, lines.tracks) + (count - after.length);
|
|
96
|
+
}
|
|
97
|
+
const before = list.filter((l) => l < from);
|
|
98
|
+
if (count <= before.length) return before[before.length - count];
|
|
99
|
+
return Math.min(from, 0) - (count - before.length);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* An item's start line and how many tracks it spans on one axis (8.3.1):
|
|
104
|
+
* the start null where the auto placement is to find it. Two lines the
|
|
105
|
+
* wrong way round are swapped, and one line twice spans a track; a span of
|
|
106
|
+
* a name with nothing to count it from spans one.
|
|
107
|
+
*/
|
|
108
|
+
export function placement(
|
|
109
|
+
start: GridLine,
|
|
110
|
+
end: GridLine,
|
|
111
|
+
lines: GridLines,
|
|
112
|
+
): [number | null, number] {
|
|
113
|
+
let from = lineOf(lines, start, 'start');
|
|
114
|
+
let to = lineOf(lines, end, 'end');
|
|
115
|
+
const spanOf = (l: GridLine) => (l && 'span' in l ? l : null);
|
|
116
|
+
if (from !== null && to !== null) {
|
|
117
|
+
if (to < from) [from, to] = [to, from];
|
|
118
|
+
if (to === from) to = from + 1;
|
|
119
|
+
} else if (from !== null) {
|
|
120
|
+
const s = spanOf(end);
|
|
121
|
+
to =
|
|
122
|
+
s?.name !== undefined
|
|
123
|
+
? spanToName(lines, s.name, s.span, from, true)
|
|
124
|
+
: from + (s?.span ?? 1);
|
|
125
|
+
} else if (to !== null) {
|
|
126
|
+
const s = spanOf(start);
|
|
127
|
+
from =
|
|
128
|
+
s?.name !== undefined
|
|
129
|
+
? spanToName(lines, s.name, s.span, to, false)
|
|
130
|
+
: to - (s?.span ?? 1);
|
|
131
|
+
} else {
|
|
132
|
+
const s = spanOf(start) ?? spanOf(end);
|
|
133
|
+
return [null, s && s.name === undefined ? s.span : 1];
|
|
134
|
+
}
|
|
135
|
+
// the grid here has no tracks before its first line
|
|
136
|
+
if (from < 0) {
|
|
137
|
+
to = Math.max(1, to + -from);
|
|
138
|
+
from = 0;
|
|
139
|
+
}
|
|
140
|
+
return [from, Math.max(1, to - from)];
|
|
141
|
+
}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
// A table's grid: which rows it has, and which slot of them each cell
|
|
2
|
+
// takes. Shared by the table layout, which sizes the columns, and the
|
|
3
|
+
// collapsing border model, which resolves the borders along every edge of
|
|
4
|
+
// the grid — the two have to agree on where a cell is.
|
|
5
|
+
import type { Box } from './boxes.js';
|
|
6
|
+
|
|
7
|
+
export interface Cell {
|
|
8
|
+
box: Box;
|
|
9
|
+
row: number;
|
|
10
|
+
column: number;
|
|
11
|
+
colSpan: number;
|
|
12
|
+
rowSpan: number;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/** A table's rows in order, with the row group each is in, and its
|
|
16
|
+
* captions. */
|
|
17
|
+
export interface TableRows {
|
|
18
|
+
rows: Box[];
|
|
19
|
+
/** Per row, the row group it is in, or null for a row of the table's
|
|
20
|
+
* own. */
|
|
21
|
+
groups: (Box | null)[];
|
|
22
|
+
captions: Box[];
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* A table's rows in the order they are drawn: a header group's first,
|
|
27
|
+
* wherever it stands, and a footer group's last (CSS 2.1 17.2) — HTML 4
|
|
28
|
+
* put `<tfoot>` before `<tbody>`, and a document that did would draw its
|
|
29
|
+
* totals mid-table. Only the first of each is set apart; any other is a
|
|
30
|
+
* body group.
|
|
31
|
+
*/
|
|
32
|
+
export function rowsOf(table: Box): TableRows {
|
|
33
|
+
const rows: Box[] = [];
|
|
34
|
+
const groups: (Box | null)[] = [];
|
|
35
|
+
const captions: Box[] = [];
|
|
36
|
+
let header: Box | null = null;
|
|
37
|
+
let footer: Box | null = null;
|
|
38
|
+
for (const child of table.children) {
|
|
39
|
+
if (child.kind !== 'table-row-group') continue;
|
|
40
|
+
const display = child.style.display;
|
|
41
|
+
if (display === 'table-header-group') header ??= child;
|
|
42
|
+
else if (display === 'table-footer-group') footer ??= child;
|
|
43
|
+
}
|
|
44
|
+
const take = (group: Box): void => {
|
|
45
|
+
for (const row of group.children) {
|
|
46
|
+
if (row.kind !== 'table-row') continue;
|
|
47
|
+
rows.push(row);
|
|
48
|
+
groups.push(group);
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
if (header) take(header);
|
|
52
|
+
for (const child of table.children) {
|
|
53
|
+
if (child.kind === 'table-caption') captions.push(child);
|
|
54
|
+
else if (child.kind === 'table-row-group') {
|
|
55
|
+
if (child !== header && child !== footer) take(child);
|
|
56
|
+
} else if (child.kind === 'table-row') {
|
|
57
|
+
rows.push(child);
|
|
58
|
+
groups.push(null);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (footer) take(footer);
|
|
62
|
+
return { rows, groups, captions };
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/** A table's rows, as `rowsOf` gives them, and its grid. */
|
|
66
|
+
export interface TableGrid extends TableRows {
|
|
67
|
+
cells: Cell[];
|
|
68
|
+
columnCount: number;
|
|
69
|
+
/** Per column, the column box it is in, or null. */
|
|
70
|
+
columnBoxes: (Box | null)[];
|
|
71
|
+
/** Per column, the column group it is in, or null. */
|
|
72
|
+
columnGroups: (Box | null)[];
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
const GRIDS = new WeakMap<Box, TableGrid>();
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* A table's rows and grid, worked out once per box tree: they come from the
|
|
79
|
+
* markup alone — a restyle builds the boxes again — while the layout asks
|
|
80
|
+
* on every pass, at every width a resize goes through, and the collapsing
|
|
81
|
+
* border model asks too.
|
|
82
|
+
*/
|
|
83
|
+
export function tableGrid(table: Box): TableGrid {
|
|
84
|
+
let grid = GRIDS.get(table);
|
|
85
|
+
if (!grid) {
|
|
86
|
+
const rows = rowsOf(table);
|
|
87
|
+
const cells = gridOf(rows.rows);
|
|
88
|
+
const { column, group } = columnsOf(table, cells.columnCount);
|
|
89
|
+
if (table.style.direction === 'rtl') {
|
|
90
|
+
// A table right to left has its first column at the right (CSS 2.1
|
|
91
|
+
// 17.2). The grid is turned round once, here, so the layout, the
|
|
92
|
+
// collapsing borders and the column backgrounds, which all read it
|
|
93
|
+
// from the left, agree about where a cell is.
|
|
94
|
+
const count = cells.columnCount;
|
|
95
|
+
for (const cell of cells.cells) {
|
|
96
|
+
cell.column = count - cell.column - cell.colSpan;
|
|
97
|
+
}
|
|
98
|
+
column.reverse();
|
|
99
|
+
group.reverse();
|
|
100
|
+
}
|
|
101
|
+
grid = {
|
|
102
|
+
...rows,
|
|
103
|
+
...cells,
|
|
104
|
+
columnBoxes: column,
|
|
105
|
+
columnGroups: group,
|
|
106
|
+
};
|
|
107
|
+
GRIDS.set(table, grid);
|
|
108
|
+
}
|
|
109
|
+
return grid;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Assign every cell a row and a column, honouring `colspan` and `rowspan`.
|
|
114
|
+
* The occupancy grid is what makes a `rowspan` in an earlier row push a
|
|
115
|
+
* later row's cells to the right, which is the bug every naive table
|
|
116
|
+
* renderer ships with.
|
|
117
|
+
*/
|
|
118
|
+
export function gridOf(rows: Box[]): { cells: Cell[]; columnCount: number } {
|
|
119
|
+
const cells: Cell[] = [];
|
|
120
|
+
const occupied: boolean[][] = [];
|
|
121
|
+
let columnCount = 0;
|
|
122
|
+
|
|
123
|
+
const mark = (r: number, c: number): void => {
|
|
124
|
+
(occupied[r] ??= [])[c] = true;
|
|
125
|
+
};
|
|
126
|
+
const taken = (r: number, c: number): boolean => occupied[r]?.[c] === true;
|
|
127
|
+
|
|
128
|
+
for (let r = 0; r < rows.length; r += 1) {
|
|
129
|
+
let c = 0;
|
|
130
|
+
for (const box of rows[r].children) {
|
|
131
|
+
if (box.kind !== 'table-cell') continue;
|
|
132
|
+
while (taken(r, c)) c += 1;
|
|
133
|
+
const colSpan = Math.max(1, spanAttr(box, 'colspan'));
|
|
134
|
+
const rowSpan = Math.max(1, spanAttr(box, 'rowspan'));
|
|
135
|
+
cells.push({ box, row: r, column: c, colSpan, rowSpan });
|
|
136
|
+
for (let dr = 0; dr < rowSpan; dr += 1) {
|
|
137
|
+
for (let dc = 0; dc < colSpan; dc += 1) mark(r + dr, c + dc);
|
|
138
|
+
}
|
|
139
|
+
c += colSpan;
|
|
140
|
+
columnCount = Math.max(columnCount, c);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return { cells, columnCount };
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
export function spanAttr(box: Box, name: string): number {
|
|
147
|
+
const raw = box.el?.attribs?.[name];
|
|
148
|
+
if (!raw) return 1;
|
|
149
|
+
const n = parseInt(raw, 10);
|
|
150
|
+
return Number.isFinite(n) && n > 0 ? Math.min(n, 1000) : 1;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/** Which column box and column group each column of the grid is in. */
|
|
154
|
+
function columnsOf(
|
|
155
|
+
table: Box,
|
|
156
|
+
count: number,
|
|
157
|
+
): { column: (Box | null)[]; group: (Box | null)[] } {
|
|
158
|
+
const column: (Box | null)[] = new Array<Box | null>(count).fill(null);
|
|
159
|
+
const group: (Box | null)[] = new Array<Box | null>(count).fill(null);
|
|
160
|
+
let at = 0;
|
|
161
|
+
const place = (box: Box | null, owner: Box | null, span: number): void => {
|
|
162
|
+
for (let i = 0; i < span && at < count; i += 1, at += 1) {
|
|
163
|
+
column[at] = box;
|
|
164
|
+
group[at] = owner;
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
for (const child of table.children) {
|
|
168
|
+
if (at >= count) break;
|
|
169
|
+
const display = child.style.display;
|
|
170
|
+
if (display === 'table-column') {
|
|
171
|
+
place(child, null, spanAttr(child, 'span'));
|
|
172
|
+
} else if (display === 'table-column-group') {
|
|
173
|
+
const columns = child.children.filter(
|
|
174
|
+
(c) => c.style.display === 'table-column',
|
|
175
|
+
);
|
|
176
|
+
if (!columns.length) place(null, child, spanAttr(child, 'span'));
|
|
177
|
+
for (const c of columns) place(c, child, spanAttr(c, 'span'));
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return { column, group };
|
|
181
|
+
}
|