@react-x11/components 0.9.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -4
- package/dist/charts/node.d.ts +11 -1
- package/dist/charts/node.d.ts.map +1 -1
- package/dist/charts/node.js +44 -14
- package/dist/charts/node.js.map +1 -1
- package/dist/charts/render.d.ts +12 -3
- package/dist/charts/render.d.ts.map +1 -1
- package/dist/charts/render.js +94 -25
- package/dist/charts/render.js.map +1 -1
- package/dist/code/index.d.ts.map +1 -1
- package/dist/code/index.js +27 -24
- package/dist/code/index.js.map +1 -1
- package/dist/code-editor/completion.d.ts.map +1 -1
- package/dist/code-editor/completion.js +3 -2
- package/dist/code-editor/completion.js.map +1 -1
- package/dist/code-editor/index.d.ts.map +1 -1
- package/dist/code-editor/index.js +19 -0
- package/dist/code-editor/index.js.map +1 -1
- package/dist/code-editor/node.d.ts +177 -7
- package/dist/code-editor/node.d.ts.map +1 -1
- package/dist/code-editor/node.js +1329 -164
- package/dist/code-editor/node.js.map +1 -1
- package/dist/code-language/index.d.ts +1 -1
- package/dist/code-language/index.d.ts.map +1 -1
- package/dist/code-language/index.js +1 -1
- package/dist/code-language/index.js.map +1 -1
- package/dist/code-language/languages/glsl.d.ts.map +1 -1
- package/dist/code-language/languages/glsl.js +10 -2
- package/dist/code-language/languages/glsl.js.map +1 -1
- package/dist/code-language/languages/javascript.d.ts.map +1 -1
- package/dist/code-language/languages/javascript.js +18 -3
- package/dist/code-language/languages/javascript.js.map +1 -1
- package/dist/code-language/languages/json.d.ts.map +1 -1
- package/dist/code-language/languages/json.js +10 -2
- package/dist/code-language/languages/json.js.map +1 -1
- package/dist/code-language/languages/shell.d.ts.map +1 -1
- package/dist/code-language/languages/shell.js +10 -2
- package/dist/code-language/languages/shell.js.map +1 -1
- package/dist/code-language/languages/sql.d.ts.map +1 -1
- package/dist/code-language/languages/sql.js +20 -2
- package/dist/code-language/languages/sql.js.map +1 -1
- package/dist/code-language/runs.d.ts +31 -0
- package/dist/code-language/runs.d.ts.map +1 -1
- package/dist/code-language/runs.js +105 -0
- package/dist/code-language/runs.js.map +1 -1
- package/dist/code-language/stream.d.ts +22 -0
- package/dist/code-language/stream.d.ts.map +1 -1
- package/dist/code-language/stream.js +259 -9
- package/dist/code-language/stream.js.map +1 -1
- package/dist/code-language/types.d.ts +5 -4
- package/dist/code-language/types.d.ts.map +1 -1
- package/dist/codeblock/index.d.ts +26 -2
- package/dist/codeblock/index.d.ts.map +1 -1
- package/dist/codeblock/index.js +57 -4
- package/dist/codeblock/index.js.map +1 -1
- package/dist/flow/draw.d.ts +50 -0
- package/dist/flow/draw.d.ts.map +1 -1
- package/dist/flow/draw.js +132 -33
- package/dist/flow/draw.js.map +1 -1
- package/dist/flow/gl/color.d.ts +13 -0
- package/dist/flow/gl/color.d.ts.map +1 -0
- package/dist/flow/gl/color.js +82 -0
- package/dist/flow/gl/color.js.map +1 -0
- package/dist/flow/gl/index.d.ts +60 -0
- package/dist/flow/gl/index.d.ts.map +1 -0
- package/dist/flow/gl/index.js +283 -0
- package/dist/flow/gl/index.js.map +1 -0
- package/dist/flow/gl/pack.d.ts +133 -0
- package/dist/flow/gl/pack.d.ts.map +1 -0
- package/dist/flow/gl/pack.js +408 -0
- package/dist/flow/gl/pack.js.map +1 -0
- package/dist/flow/gl/renderer.d.ts +95 -0
- package/dist/flow/gl/renderer.d.ts.map +1 -0
- package/dist/flow/gl/renderer.js +459 -0
- package/dist/flow/gl/renderer.js.map +1 -0
- package/dist/flow/gl/shaders.d.ts +79 -0
- package/dist/flow/gl/shaders.d.ts.map +1 -0
- package/dist/flow/gl/shaders.js +346 -0
- package/dist/flow/gl/shaders.js.map +1 -0
- package/dist/flow/gl/text.d.ts +318 -0
- package/dist/flow/gl/text.d.ts.map +1 -0
- package/dist/flow/gl/text.js +1103 -0
- package/dist/flow/gl/text.js.map +1 -0
- package/dist/flow/index.d.ts +1 -1
- package/dist/flow/index.d.ts.map +1 -1
- package/dist/flow/index.js +619 -64
- package/dist/flow/index.js.map +1 -1
- package/dist/flow/node.d.ts +621 -72
- package/dist/flow/node.d.ts.map +1 -1
- package/dist/flow/node.js +2253 -1018
- package/dist/flow/node.js.map +1 -1
- package/dist/flow/paint.d.ts +35 -0
- package/dist/flow/paint.d.ts.map +1 -0
- package/dist/flow/paint.js +393 -0
- package/dist/flow/paint.js.map +1 -0
- package/dist/flow/paths.d.ts +14 -0
- package/dist/flow/paths.d.ts.map +1 -1
- package/dist/flow/paths.js +45 -19
- package/dist/flow/paths.js.map +1 -1
- package/dist/flow/scene.d.ts +584 -0
- package/dist/flow/scene.d.ts.map +1 -0
- package/dist/flow/scene.js +1453 -0
- package/dist/flow/scene.js.map +1 -0
- package/dist/flow/types.d.ts +111 -1
- package/dist/flow/types.d.ts.map +1 -1
- package/dist/html/controls.d.ts +28 -0
- package/dist/html/controls.d.ts.map +1 -1
- package/dist/html/controls.js +52 -2
- package/dist/html/controls.js.map +1 -1
- package/dist/html/css/calc.d.ts +14 -0
- package/dist/html/css/calc.d.ts.map +1 -0
- package/dist/html/css/calc.js +344 -0
- package/dist/html/css/calc.js.map +1 -0
- package/dist/html/css/cascade.d.ts +262 -6
- package/dist/html/css/cascade.d.ts.map +1 -1
- package/dist/html/css/cascade.js +1373 -67
- package/dist/html/css/cascade.js.map +1 -1
- package/dist/html/css/color.d.ts +23 -0
- package/dist/html/css/color.d.ts.map +1 -0
- package/dist/html/css/color.js +740 -0
- package/dist/html/css/color.js.map +1 -0
- package/dist/html/css/content.d.ts +92 -0
- package/dist/html/css/content.d.ts.map +1 -0
- package/dist/html/css/content.js +388 -0
- package/dist/html/css/content.js.map +1 -0
- package/dist/html/css/counter-styles.d.ts +76 -0
- package/dist/html/css/counter-styles.d.ts.map +1 -0
- package/dist/html/css/counter-styles.js +893 -0
- package/dist/html/css/counter-styles.js.map +1 -0
- package/dist/html/css/decode.d.ts +12 -0
- package/dist/html/css/decode.d.ts.map +1 -0
- package/dist/html/css/decode.js +116 -0
- package/dist/html/css/decode.js.map +1 -0
- package/dist/html/css/parse.d.ts +110 -10
- package/dist/html/css/parse.d.ts.map +1 -1
- package/dist/html/css/parse.js +1473 -180
- package/dist/html/css/parse.js.map +1 -1
- package/dist/html/css/style.d.ts +501 -15
- package/dist/html/css/style.d.ts.map +1 -1
- package/dist/html/css/style.js +3729 -206
- package/dist/html/css/style.js.map +1 -1
- package/dist/html/css/ua.d.ts.map +1 -1
- package/dist/html/css/ua.js +65 -16
- package/dist/html/css/ua.js.map +1 -1
- package/dist/html/css/values.d.ts +37 -3
- package/dist/html/css/values.d.ts.map +1 -1
- package/dist/html/css/values.js +122 -48
- package/dist/html/css/values.js.map +1 -1
- package/dist/html/css/vars.d.ts +52 -0
- package/dist/html/css/vars.d.ts.map +1 -0
- package/dist/html/css/vars.js +358 -0
- package/dist/html/css/vars.js.map +1 -0
- package/dist/html/dom.d.ts +30 -4
- package/dist/html/dom.d.ts.map +1 -1
- package/dist/html/dom.js +278 -17
- package/dist/html/dom.js.map +1 -1
- package/dist/html/fonts.d.ts +106 -0
- package/dist/html/fonts.d.ts.map +1 -0
- package/dist/html/fonts.js +565 -0
- package/dist/html/fonts.js.map +1 -0
- package/dist/html/gif.d.ts +15 -0
- package/dist/html/gif.d.ts.map +1 -0
- package/dist/html/gif.js +229 -0
- package/dist/html/gif.js.map +1 -0
- package/dist/html/index.d.ts +50 -11
- package/dist/html/index.d.ts.map +1 -1
- package/dist/html/index.js +115 -9
- package/dist/html/index.js.map +1 -1
- package/dist/html/layout/block.d.ts +226 -3
- package/dist/html/layout/block.d.ts.map +1 -1
- package/dist/html/layout/block.js +3077 -219
- package/dist/html/layout/block.js.map +1 -1
- package/dist/html/layout/boxes.d.ts +367 -17
- package/dist/html/layout/boxes.d.ts.map +1 -1
- package/dist/html/layout/boxes.js +1742 -182
- package/dist/html/layout/boxes.js.map +1 -1
- package/dist/html/layout/cache.d.ts +58 -0
- package/dist/html/layout/cache.d.ts.map +1 -0
- package/dist/html/layout/cache.js +224 -0
- package/dist/html/layout/cache.js.map +1 -0
- package/dist/html/layout/collapse.d.ts +45 -0
- package/dist/html/layout/collapse.d.ts.map +1 -0
- package/dist/html/layout/collapse.js +246 -0
- package/dist/html/layout/collapse.js.map +1 -0
- package/dist/html/layout/css-grid.d.ts +7 -0
- package/dist/html/layout/css-grid.d.ts.map +1 -0
- package/dist/html/layout/css-grid.js +900 -0
- package/dist/html/layout/css-grid.js.map +1 -0
- package/dist/html/layout/flex.d.ts.map +1 -1
- package/dist/html/layout/flex.js +1025 -89
- package/dist/html/layout/flex.js.map +1 -1
- package/dist/html/layout/floats.d.ts +45 -6
- package/dist/html/layout/floats.d.ts.map +1 -1
- package/dist/html/layout/floats.js +113 -14
- package/dist/html/layout/floats.js.map +1 -1
- package/dist/html/layout/grid-lines.d.ts +39 -0
- package/dist/html/layout/grid-lines.d.ts.map +1 -0
- package/dist/html/layout/grid-lines.js +119 -0
- package/dist/html/layout/grid-lines.js.map +1 -0
- package/dist/html/layout/grid.d.ts +53 -0
- package/dist/html/layout/grid.d.ts.map +1 -0
- package/dist/html/layout/grid.js +153 -0
- package/dist/html/layout/grid.js.map +1 -0
- package/dist/html/layout/inline.d.ts +154 -1
- package/dist/html/layout/inline.d.ts.map +1 -1
- package/dist/html/layout/inline.js +3598 -175
- package/dist/html/layout/inline.js.map +1 -1
- package/dist/html/layout/shaping.d.ts +6 -0
- package/dist/html/layout/shaping.d.ts.map +1 -0
- package/dist/html/layout/shaping.js +100 -0
- package/dist/html/layout/shaping.js.map +1 -0
- package/dist/html/layout/table.d.ts +3 -0
- package/dist/html/layout/table.d.ts.map +1 -1
- package/dist/html/layout/table.js +681 -175
- package/dist/html/layout/table.js.map +1 -1
- package/dist/html/layout/tracks.d.ts +44 -0
- package/dist/html/layout/tracks.d.ts.map +1 -0
- package/dist/html/layout/tracks.js +349 -0
- package/dist/html/layout/tracks.js.map +1 -0
- package/dist/html/node.d.ts +169 -4
- package/dist/html/node.d.ts.map +1 -1
- package/dist/html/node.js +1429 -137
- package/dist/html/node.js.map +1 -1
- package/dist/html/paint.d.ts +92 -3
- package/dist/html/paint.d.ts.map +1 -1
- package/dist/html/paint.js +3635 -107
- package/dist/html/paint.js.map +1 -1
- package/dist/html/resources.d.ts +60 -14
- package/dist/html/resources.d.ts.map +1 -1
- package/dist/html/resources.js +122 -36
- package/dist/html/resources.js.map +1 -1
- package/dist/html/surfaces.d.ts +23 -0
- package/dist/html/surfaces.d.ts.map +1 -0
- package/dist/html/surfaces.js +68 -0
- package/dist/html/surfaces.js.map +1 -0
- package/dist/html/svg.d.ts +80 -0
- package/dist/html/svg.d.ts.map +1 -0
- package/dist/html/svg.js +442 -0
- package/dist/html/svg.js.map +1 -0
- package/dist/html/url.d.ts +23 -0
- package/dist/html/url.d.ts.map +1 -0
- package/dist/html/url.js +80 -0
- package/dist/html/url.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/codelines.d.ts +42 -0
- package/dist/internal/codelines.d.ts.map +1 -0
- package/dist/internal/codelines.js +170 -0
- package/dist/internal/codelines.js.map +1 -0
- package/dist/internal/collate.d.ts +3 -0
- package/dist/internal/collate.d.ts.map +1 -0
- package/dist/internal/collate.js +11 -0
- package/dist/internal/collate.js.map +1 -0
- package/dist/internal/markdown/ast.d.ts +11 -0
- package/dist/internal/markdown/ast.d.ts.map +1 -1
- package/dist/internal/markdown/parse.d.ts.map +1 -1
- package/dist/internal/markdown/parse.js +109 -8
- package/dist/internal/markdown/parse.js.map +1 -1
- package/dist/internal/prewarm.d.ts +18 -0
- package/dist/internal/prewarm.d.ts.map +1 -0
- package/dist/internal/prewarm.js +42 -0
- package/dist/internal/prewarm.js.map +1 -0
- package/dist/internal/sdf.d.ts +20 -0
- package/dist/internal/sdf.d.ts.map +1 -0
- package/dist/internal/sdf.js +216 -0
- package/dist/internal/sdf.js.map +1 -0
- package/dist/internal/splice.d.ts +12 -0
- package/dist/internal/splice.d.ts.map +1 -0
- package/dist/internal/splice.js +23 -0
- package/dist/internal/splice.js.map +1 -0
- package/dist/internal/window.d.ts +12 -0
- package/dist/internal/window.d.ts.map +1 -1
- package/dist/internal/window.js +23 -6
- package/dist/internal/window.js.map +1 -1
- package/dist/maps/anchors.d.ts +6 -1
- package/dist/maps/anchors.d.ts.map +1 -1
- package/dist/maps/anchors.js +260 -1
- package/dist/maps/anchors.js.map +1 -1
- package/dist/maps/controller.d.ts +57 -0
- package/dist/maps/controller.d.ts.map +1 -1
- package/dist/maps/controller.js +97 -18
- package/dist/maps/controller.js.map +1 -1
- package/dist/maps/gl/buckets.d.ts +5 -1
- package/dist/maps/gl/buckets.d.ts.map +1 -1
- package/dist/maps/gl/buckets.js +5 -2
- package/dist/maps/gl/buckets.js.map +1 -1
- package/dist/maps/gl/build-worker.d.ts +2 -0
- package/dist/maps/gl/build-worker.d.ts.map +1 -1
- package/dist/maps/gl/build-worker.js +1 -1
- package/dist/maps/gl/build-worker.js.map +1 -1
- package/dist/maps/gl/cover.d.ts +23 -4
- package/dist/maps/gl/cover.d.ts.map +1 -1
- package/dist/maps/gl/cover.js +61 -48
- package/dist/maps/gl/cover.js.map +1 -1
- package/dist/maps/gl/placement.d.ts +21 -8
- package/dist/maps/gl/placement.d.ts.map +1 -1
- package/dist/maps/gl/placement.js +133 -58
- package/dist/maps/gl/placement.js.map +1 -1
- package/dist/maps/gl/renderer.d.ts +36 -4
- package/dist/maps/gl/renderer.d.ts.map +1 -1
- package/dist/maps/gl/renderer.js +81 -24
- package/dist/maps/gl/renderer.js.map +1 -1
- package/dist/maps/gl/shaders.d.ts +18 -17
- package/dist/maps/gl/shaders.d.ts.map +1 -1
- package/dist/maps/gl/shaders.js +34 -32
- package/dist/maps/gl/shaders.js.map +1 -1
- package/dist/maps/gl/store.d.ts +10 -0
- package/dist/maps/gl/store.d.ts.map +1 -1
- package/dist/maps/gl/store.js +47 -4
- package/dist/maps/gl/store.js.map +1 -1
- package/dist/maps/gl/text.d.ts +153 -24
- package/dist/maps/gl/text.d.ts.map +1 -1
- package/dist/maps/gl/text.js +379 -63
- package/dist/maps/gl/text.js.map +1 -1
- package/dist/maps/gl/view.d.ts +293 -2
- package/dist/maps/gl/view.d.ts.map +1 -1
- package/dist/maps/gl/view.js +317 -82
- package/dist/maps/gl/view.js.map +1 -1
- package/dist/maps/icons.d.ts +32 -0
- package/dist/maps/icons.d.ts.map +1 -0
- package/dist/maps/icons.js +151 -0
- package/dist/maps/icons.js.map +1 -0
- package/dist/maps/index.d.ts +2 -0
- package/dist/maps/index.d.ts.map +1 -1
- package/dist/maps/index.js +2 -0
- package/dist/maps/index.js.map +1 -1
- package/dist/maps/labels.d.ts +56 -4
- package/dist/maps/labels.d.ts.map +1 -1
- package/dist/maps/labels.js +213 -46
- package/dist/maps/labels.js.map +1 -1
- package/dist/maps/node.d.ts +17 -0
- package/dist/maps/node.d.ts.map +1 -1
- package/dist/maps/node.js +64 -30
- package/dist/maps/node.js.map +1 -1
- package/dist/maps/proj.d.ts +48 -0
- package/dist/maps/proj.d.ts.map +1 -1
- package/dist/maps/proj.js +73 -0
- package/dist/maps/proj.js.map +1 -1
- package/dist/maps/sources.d.ts +5 -3
- package/dist/maps/sources.d.ts.map +1 -1
- package/dist/maps/sources.js +5 -3
- package/dist/maps/sources.js.map +1 -1
- package/dist/maps/style.d.ts +35 -0
- package/dist/maps/style.d.ts.map +1 -1
- package/dist/maps/style.js.map +1 -1
- package/dist/maps/styles.d.ts +12 -0
- package/dist/maps/styles.d.ts.map +1 -1
- package/dist/maps/styles.js +120 -6
- package/dist/maps/styles.js.map +1 -1
- package/dist/maps/tiles.d.ts +31 -11
- package/dist/maps/tiles.d.ts.map +1 -1
- package/dist/maps/tiles.js +61 -27
- package/dist/maps/tiles.js.map +1 -1
- package/dist/maps/types.d.ts +28 -4
- package/dist/maps/types.d.ts.map +1 -1
- package/dist/markdown/index.d.ts.map +1 -1
- package/dist/markdown/index.js +209 -68
- package/dist/markdown/index.js.map +1 -1
- package/dist/markdown/spans.d.ts.map +1 -1
- package/dist/markdown/spans.js +6 -0
- package/dist/markdown/spans.js.map +1 -1
- package/dist/qml/containers.d.ts.map +1 -1
- package/dist/qml/containers.js +6 -1
- package/dist/qml/containers.js.map +1 -1
- package/dist/qml/interaction.d.ts.map +1 -1
- package/dist/qml/interaction.js +38 -5
- package/dist/qml/interaction.js.map +1 -1
- package/dist/qml/layouts.d.ts.map +1 -1
- package/dist/qml/layouts.js +21 -6
- package/dist/qml/layouts.js.map +1 -1
- package/dist/qml/qtquick.d.ts.map +1 -1
- package/dist/qml/qtquick.js +9 -2
- package/dist/qml/qtquick.js.map +1 -1
- package/dist/qml/react.d.ts.map +1 -1
- package/dist/qml/react.js +9 -7
- package/dist/qml/react.js.map +1 -1
- package/dist/reorder/clock.d.ts +7 -0
- package/dist/reorder/clock.d.ts.map +1 -0
- package/dist/reorder/clock.js +26 -0
- package/dist/reorder/clock.js.map +1 -0
- package/dist/reorder/index.d.ts +25 -3
- package/dist/reorder/index.d.ts.map +1 -1
- package/dist/reorder/index.js +64 -19
- package/dist/reorder/index.js.map +1 -1
- package/dist/rich-text-editor/index.d.ts +0 -11
- package/dist/rich-text-editor/index.d.ts.map +1 -1
- package/dist/rich-text-editor/index.js +38 -9
- package/dist/rich-text-editor/index.js.map +1 -1
- package/dist/rich-text-editor/keymap.d.ts.map +1 -1
- package/dist/rich-text-editor/keymap.js +2 -1
- package/dist/rich-text-editor/keymap.js.map +1 -1
- package/dist/rich-text-editor/keys.d.ts +17 -6
- package/dist/rich-text-editor/keys.d.ts.map +1 -1
- package/dist/rich-text-editor/keys.js +135 -26
- package/dist/rich-text-editor/keys.js.map +1 -1
- package/dist/rich-text-editor/markdown.d.ts.map +1 -1
- package/dist/rich-text-editor/markdown.js +30 -1
- package/dist/rich-text-editor/markdown.js.map +1 -1
- package/dist/rich-text-editor/marks.d.ts +9 -0
- package/dist/rich-text-editor/marks.d.ts.map +1 -0
- package/dist/rich-text-editor/marks.js +83 -0
- package/dist/rich-text-editor/marks.js.map +1 -0
- package/dist/rich-text-editor/render.d.ts.map +1 -1
- package/dist/rich-text-editor/render.js +28 -10
- package/dist/rich-text-editor/render.js.map +1 -1
- package/dist/rich-text-editor/replace.d.ts +13 -0
- package/dist/rich-text-editor/replace.d.ts.map +1 -0
- package/dist/rich-text-editor/replace.js +64 -0
- package/dist/rich-text-editor/replace.js.map +1 -0
- package/dist/rich-text-editor/toolbar.d.ts.map +1 -1
- package/dist/rich-text-editor/toolbar.js +1 -1
- package/dist/rich-text-editor/toolbar.js.map +1 -1
- package/dist/rich-text-editor/virtual.d.ts.map +1 -1
- package/dist/rich-text-editor/virtual.js +17 -0
- package/dist/rich-text-editor/virtual.js.map +1 -1
- package/dist/richtext/node.d.ts +46 -2
- package/dist/richtext/node.d.ts.map +1 -1
- package/dist/richtext/node.js +187 -4
- package/dist/richtext/node.js.map +1 -1
- package/dist/richtext/runs.d.ts +13 -8
- package/dist/richtext/runs.d.ts.map +1 -1
- package/dist/richtext/runs.js +18 -8
- package/dist/richtext/runs.js.map +1 -1
- package/dist/table/index.d.ts.map +1 -1
- package/dist/table/index.js +23 -0
- package/dist/table/index.js.map +1 -1
- package/dist/table/rows.d.ts +3 -2
- package/dist/table/rows.d.ts.map +1 -1
- package/dist/table/rows.js +20 -6
- package/dist/table/rows.js.map +1 -1
- package/dist/terminal/index.d.ts.map +1 -1
- package/dist/terminal/index.js +4 -0
- package/dist/terminal/index.js.map +1 -1
- package/dist/terminal/vt/pty.d.ts +13 -2
- package/dist/terminal/vt/pty.d.ts.map +1 -1
- package/dist/terminal/vt/pty.js +18 -3
- package/dist/terminal/vt/pty.js.map +1 -1
- package/dist/terminal-output/index.d.ts.map +1 -1
- package/dist/terminal-output/index.js +103 -23
- package/dist/terminal-output/index.js.map +1 -1
- package/dist/terminal-output/runs.d.ts +4 -1
- package/dist/terminal-output/runs.d.ts.map +1 -1
- package/dist/terminal-output/runs.js +5 -1
- package/dist/terminal-output/runs.js.map +1 -1
- package/dist/three/canvas.d.ts.map +1 -1
- package/dist/three/canvas.js +85 -7
- package/dist/three/canvas.js.map +1 -1
- package/dist/three/events.d.ts +22 -4
- package/dist/three/events.d.ts.map +1 -1
- package/dist/three/events.js +34 -4
- package/dist/three/events.js.map +1 -1
- package/dist/tree/index.d.ts.map +1 -1
- package/dist/tree/index.js +17 -0
- package/dist/tree/index.js.map +1 -1
- package/package.json +42 -33
- package/src/charts/node.ts +62 -26
- package/src/charts/render.ts +120 -30
- package/src/code/index.ts +36 -32
- package/src/code-editor/completion.ts +3 -2
- package/src/code-editor/index.ts +19 -0
- package/src/code-editor/node.ts +1574 -184
- package/src/code-language/index.ts +1 -1
- package/src/code-language/languages/glsl.ts +12 -2
- package/src/code-language/languages/javascript.ts +21 -4
- package/src/code-language/languages/json.ts +12 -2
- package/src/code-language/languages/shell.ts +12 -2
- package/src/code-language/languages/sql.ts +22 -2
- package/src/code-language/runs.ts +111 -1
- package/src/code-language/stream.ts +257 -17
- package/src/code-language/types.ts +5 -4
- package/src/codeblock/index.ts +68 -4
- package/src/flow/draw.ts +167 -41
- package/src/flow/gl/color.ts +85 -0
- package/src/flow/gl/index.ts +342 -0
- package/src/flow/gl/pack.ts +585 -0
- package/src/flow/gl/renderer.ts +679 -0
- package/src/flow/gl/shaders.ts +371 -0
- package/src/flow/gl/text.ts +1295 -0
- package/src/flow/index.ts +794 -67
- package/src/flow/node.ts +2496 -1256
- package/src/flow/paint.ts +511 -0
- package/src/flow/paths.ts +80 -15
- package/src/flow/scene.ts +2199 -0
- package/src/flow/types.ts +113 -1
- package/src/html/controls.ts +73 -2
- package/src/html/css/calc.ts +385 -0
- package/src/html/css/cascade.ts +1481 -62
- package/src/html/css/color.ts +755 -0
- package/src/html/css/content.ts +417 -0
- package/src/html/css/counter-styles.ts +973 -0
- package/src/html/css/decode.ts +130 -0
- package/src/html/css/parse.ts +1514 -160
- package/src/html/css/style.ts +4131 -223
- package/src/html/css/ua.ts +66 -17
- package/src/html/css/values.ts +150 -50
- package/src/html/css/vars.ts +348 -0
- package/src/html/dom.ts +284 -17
- package/src/html/fonts.ts +641 -0
- package/src/html/gif.ts +233 -0
- package/src/html/index.ts +180 -20
- package/src/html/layout/block.ts +3560 -208
- package/src/html/layout/boxes.ts +2141 -190
- package/src/html/layout/cache.ts +289 -0
- package/src/html/layout/collapse.ts +317 -0
- package/src/html/layout/css-grid.ts +1063 -0
- package/src/html/layout/flex.ts +1115 -106
- package/src/html/layout/floats.ts +128 -14
- package/src/html/layout/grid-lines.ts +141 -0
- package/src/html/layout/grid.ts +181 -0
- package/src/html/layout/inline.ts +4187 -192
- package/src/html/layout/shaping.ts +140 -0
- package/src/html/layout/table.ts +696 -186
- package/src/html/layout/tracks.ts +437 -0
- package/src/html/node.ts +1585 -156
- package/src/html/paint.ts +4582 -267
- package/src/html/resources.ts +161 -50
- package/src/html/surfaces.ts +81 -0
- package/src/html/svg.ts +504 -0
- package/src/html/url.ts +86 -0
- package/src/index.ts +2 -0
- package/src/internal/codelines.ts +200 -0
- package/src/internal/collate.ts +12 -0
- package/src/internal/markdown/ast.ts +11 -0
- package/src/internal/markdown/parse.ts +154 -11
- package/src/internal/prewarm.ts +45 -0
- package/src/internal/sdf.ts +227 -0
- package/src/internal/splice.ts +25 -0
- package/src/internal/window.ts +36 -5
- package/src/maps/anchors.ts +307 -1
- package/src/maps/controller.ts +116 -31
- package/src/maps/gl/buckets.ts +5 -1
- package/src/maps/gl/build-worker.ts +13 -2
- package/src/maps/gl/cover.ts +79 -44
- package/src/maps/gl/placement.ts +221 -69
- package/src/maps/gl/renderer.ts +104 -20
- package/src/maps/gl/shaders.ts +35 -32
- package/src/maps/gl/store.ts +66 -17
- package/src/maps/gl/text.ts +444 -71
- package/src/maps/gl/view.ts +361 -96
- package/src/maps/icons.ts +183 -0
- package/src/maps/index.ts +4 -0
- package/src/maps/labels.ts +269 -49
- package/src/maps/node.ts +82 -49
- package/src/maps/proj.ts +87 -0
- package/src/maps/sources.ts +5 -3
- package/src/maps/style.ts +32 -0
- package/src/maps/styles.ts +215 -4
- package/src/maps/tiles.ts +64 -31
- package/src/maps/types.ts +28 -4
- package/src/markdown/index.ts +293 -92
- package/src/markdown/spans.ts +5 -0
- package/src/qml/containers.tsx +6 -1
- package/src/qml/interaction.tsx +42 -5
- package/src/qml/layouts.tsx +21 -6
- package/src/qml/qtquick.tsx +9 -2
- package/src/qml/react.tsx +7 -5
- package/src/reorder/clock.ts +27 -0
- package/src/reorder/index.ts +100 -27
- package/src/rich-text-editor/index.ts +37 -12
- package/src/rich-text-editor/keymap.ts +1 -1
- package/src/rich-text-editor/keys.ts +135 -26
- package/src/rich-text-editor/markdown.ts +36 -1
- package/src/rich-text-editor/marks.ts +101 -0
- package/src/rich-text-editor/render.ts +49 -12
- package/src/rich-text-editor/replace.ts +85 -0
- package/src/rich-text-editor/toolbar.ts +1 -1
- package/src/rich-text-editor/virtual.ts +25 -0
- package/src/richtext/node.ts +235 -14
- package/src/richtext/runs.ts +23 -12
- package/src/table/index.ts +29 -0
- package/src/table/rows.ts +18 -8
- package/src/terminal/index.ts +4 -0
- package/src/terminal/vt/pty.ts +16 -2
- package/src/terminal-output/index.ts +129 -31
- package/src/terminal-output/runs.ts +16 -2
- package/src/three/canvas.ts +102 -8
- package/src/three/events.ts +49 -9
- package/src/tree/index.ts +19 -0
|
@@ -0,0 +1,437 @@
|
|
|
1
|
+
// The grid track sizing algorithm (CSS Grid 1, 11.3 to 11.8), the same for
|
|
2
|
+
// a grid's columns and for its rows: arithmetic over each track's sizing
|
|
3
|
+
// functions and what each item in the tracks contributes, with no layout in
|
|
4
|
+
// it. `css-grid.ts` measures the items and resolves the percentages; this
|
|
5
|
+
// decides what the tracks come to.
|
|
6
|
+
//
|
|
7
|
+
// A track keeps a base size, which only grows, and a growth limit, the most
|
|
8
|
+
// it wants. The items in one track alone set both (11.5.2); an item that
|
|
9
|
+
// spans several shares what it needs past their sizes out among the ones
|
|
10
|
+
// its sizing functions let grow — equally, as far as each one's limit, and
|
|
11
|
+
// past the limits only to the ones sized by their content — a span at a
|
|
12
|
+
// time, the fewest first (11.5.3), and the items that cross an `fr` track
|
|
13
|
+
// out to those alone, by their factors (11.5.4). The free space then grows
|
|
14
|
+
// every track equally towards its limit (11.6), the `fr` tracks share what
|
|
15
|
+
// is left by their factors (11.7), and the `auto` ones stretch into what
|
|
16
|
+
// remains (11.8).
|
|
17
|
+
|
|
18
|
+
/** A track's least size: a length, or its content's. */
|
|
19
|
+
export type TrackMin = number | 'min-content' | 'max-content' | 'auto';
|
|
20
|
+
|
|
21
|
+
/** A track's greatest size: a length, its content's, a share of the space
|
|
22
|
+
* left, or its content's no larger than `fit-content()`'s argument. */
|
|
23
|
+
export type TrackMax =
|
|
24
|
+
| number
|
|
25
|
+
| 'min-content'
|
|
26
|
+
| 'max-content'
|
|
27
|
+
| 'auto'
|
|
28
|
+
| { fr: number }
|
|
29
|
+
| { fit: number };
|
|
30
|
+
|
|
31
|
+
export interface SizingTrack {
|
|
32
|
+
min: TrackMin;
|
|
33
|
+
max: TrackMax;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/** An item's place along the axis, and its margin box's size at its
|
|
37
|
+
* narrowest, at its widest, and the least it can be (the "minimum
|
|
38
|
+
* contribution"), each asked for only when a track needs it. */
|
|
39
|
+
export interface TrackItem {
|
|
40
|
+
start: number;
|
|
41
|
+
span: number;
|
|
42
|
+
minContent(): number;
|
|
43
|
+
maxContent(): number;
|
|
44
|
+
minimum(): number;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export interface TrackSpace {
|
|
48
|
+
/**
|
|
49
|
+
* The grid's content size along the axis: `Infinity` where it has none
|
|
50
|
+
* and is as large as its tracks want to be (a max-content constraint),
|
|
51
|
+
* 0 where it is as small as they can be (a min-content one).
|
|
52
|
+
*/
|
|
53
|
+
available: number;
|
|
54
|
+
/** A least content size where `available` is infinite — a grid's
|
|
55
|
+
* `min-height` — which its `fr` and `auto` tracks fill. */
|
|
56
|
+
least: number;
|
|
57
|
+
gap: number;
|
|
58
|
+
/** Whether the `auto` tracks stretch into the space left, as a content
|
|
59
|
+
* distribution of `normal` or `stretch` has them. */
|
|
60
|
+
stretch: boolean;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
const EPS = 1e-6;
|
|
64
|
+
|
|
65
|
+
const frOf = (max: TrackMax): number | null =>
|
|
66
|
+
typeof max === 'object' && 'fr' in max ? max.fr : null;
|
|
67
|
+
const fitOf = (max: TrackMax): number | null =>
|
|
68
|
+
typeof max === 'object' && 'fit' in max ? max.fit : null;
|
|
69
|
+
/** A maximum its content sizes: `min-content`, `max-content`, `auto` and
|
|
70
|
+
* `fit-content()`. */
|
|
71
|
+
const intrinsicMax = (max: TrackMax): boolean =>
|
|
72
|
+
typeof max === 'string' || fitOf(max) !== null;
|
|
73
|
+
/** A maximum its content's widest sizes, which `auto` is as a maximum. */
|
|
74
|
+
const maxContentMax = (max: TrackMax): boolean =>
|
|
75
|
+
max === 'max-content' || max === 'auto' || fitOf(max) !== null;
|
|
76
|
+
|
|
77
|
+
/** The largest of what the items say, and no less than nothing. */
|
|
78
|
+
function most(items: TrackItem[], size: (item: TrackItem) => number): number {
|
|
79
|
+
let out = 0;
|
|
80
|
+
for (const item of items) out = Math.max(out, size(item));
|
|
81
|
+
return out;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const minContentOf = (item: TrackItem) => item.minContent();
|
|
85
|
+
const maxContentOf = (item: TrackItem) => item.maxContent();
|
|
86
|
+
const minimumOf = (item: TrackItem) => item.minimum();
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Share `room` out equally among `list`, freezing each track as its share
|
|
90
|
+
* reaches its headroom, and growing the rest on: what each gets is added to
|
|
91
|
+
* `inc`. Answers what is left once every track is frozen.
|
|
92
|
+
*/
|
|
93
|
+
function share(
|
|
94
|
+
room: number,
|
|
95
|
+
list: number[],
|
|
96
|
+
headroom: (track: number) => number,
|
|
97
|
+
inc: number[],
|
|
98
|
+
): number {
|
|
99
|
+
let open = list.filter((t) => headroom(t) - inc[t] > EPS);
|
|
100
|
+
while (room > EPS && open.length) {
|
|
101
|
+
let step = room / open.length;
|
|
102
|
+
for (const t of open) step = Math.min(step, headroom(t) - inc[t]);
|
|
103
|
+
for (const t of open) inc[t] += step;
|
|
104
|
+
room -= step * open.length;
|
|
105
|
+
open = open.filter((t) => headroom(t) - inc[t] > EPS);
|
|
106
|
+
}
|
|
107
|
+
return room;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* The tracks' sizes, in order. An item past the last track is not counted,
|
|
112
|
+
* and one that runs past it is counted in the tracks it is in.
|
|
113
|
+
*/
|
|
114
|
+
export function sizeTracks(
|
|
115
|
+
tracks: readonly SizingTrack[],
|
|
116
|
+
items: readonly TrackItem[],
|
|
117
|
+
space: TrackSpace,
|
|
118
|
+
): number[] {
|
|
119
|
+
const n = tracks.length;
|
|
120
|
+
const { gap } = space;
|
|
121
|
+
const base: number[] = new Array<number>(n);
|
|
122
|
+
const limit: number[] = new Array<number>(n);
|
|
123
|
+
// 11.4: a track with a length for a minimum starts at it, and one with a
|
|
124
|
+
// length for a maximum stops at it
|
|
125
|
+
for (let t = 0; t < n; t += 1) {
|
|
126
|
+
const { min, max } = tracks[t];
|
|
127
|
+
base[t] = typeof min === 'number' ? min : 0;
|
|
128
|
+
limit[t] = typeof max === 'number' ? Math.max(max, base[t]) : Infinity;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
const alone: TrackItem[][] = [];
|
|
132
|
+
const spans = new Map<number, TrackItem[]>();
|
|
133
|
+
const flexing: TrackItem[] = [];
|
|
134
|
+
for (const item of items) {
|
|
135
|
+
if (item.start >= n || item.span < 1) continue;
|
|
136
|
+
const end = Math.min(n, item.start + item.span);
|
|
137
|
+
let flexible = false;
|
|
138
|
+
for (let t = item.start; t < end; t += 1) {
|
|
139
|
+
if (frOf(tracks[t].max) !== null) flexible = true;
|
|
140
|
+
}
|
|
141
|
+
if (flexible) flexing.push(item);
|
|
142
|
+
else if (end - item.start === 1) (alone[item.start] ??= []).push(item);
|
|
143
|
+
else {
|
|
144
|
+
const group = spans.get(end - item.start);
|
|
145
|
+
if (group) group.push(item);
|
|
146
|
+
else spans.set(end - item.start, [item]);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
// 11.5.2: the items in one track alone, which is not an `fr` one
|
|
151
|
+
for (let t = 0; t < n; t += 1) {
|
|
152
|
+
const list = alone[t];
|
|
153
|
+
if (!list) continue;
|
|
154
|
+
const { min, max } = tracks[t];
|
|
155
|
+
if (min === 'min-content')
|
|
156
|
+
base[t] = Math.max(base[t], most(list, minContentOf));
|
|
157
|
+
else if (min === 'max-content') {
|
|
158
|
+
base[t] = Math.max(base[t], most(list, maxContentOf));
|
|
159
|
+
} else if (min === 'auto')
|
|
160
|
+
base[t] = Math.max(base[t], most(list, minimumOf));
|
|
161
|
+
const fit = fitOf(max);
|
|
162
|
+
if (max === 'min-content') limit[t] = most(list, minContentOf);
|
|
163
|
+
else if (max === 'max-content' || max === 'auto') {
|
|
164
|
+
limit[t] = most(list, maxContentOf);
|
|
165
|
+
} else if (fit !== null) limit[t] = Math.min(fit, most(list, maxContentOf));
|
|
166
|
+
if (limit[t] < base[t]) limit[t] = base[t];
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
// a growth limit counts as its base size while it is infinite
|
|
170
|
+
const sizeOf = (t: number, limits: boolean): number =>
|
|
171
|
+
limits && Number.isFinite(limit[t]) ? limit[t] : base[t];
|
|
172
|
+
// a growth limit set in the step before, from infinite, grows on freely
|
|
173
|
+
const growable: boolean[] = new Array<boolean>(n).fill(false);
|
|
174
|
+
const planned: number[] = new Array<number>(n).fill(0);
|
|
175
|
+
const inc: number[] = new Array<number>(n).fill(0);
|
|
176
|
+
const affected: number[] = [];
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* 11.5.1: grow the base sizes, or the growth limits, of the tracks
|
|
180
|
+
* `affects` picks by what the items need past the sizes of all the
|
|
181
|
+
* tracks they span — each track by the most any one item asks of it.
|
|
182
|
+
* `past` names the tracks that take what is left once the others reach
|
|
183
|
+
* their limits: those whose maximums are content's (`intrinsic`), whose
|
|
184
|
+
* maximums are their content's widest (`max-content`), or all of them.
|
|
185
|
+
*/
|
|
186
|
+
const grow = (
|
|
187
|
+
group: TrackItem[],
|
|
188
|
+
limits: boolean,
|
|
189
|
+
affects: (t: number) => boolean,
|
|
190
|
+
size: (item: TrackItem) => number,
|
|
191
|
+
past: 'intrinsic' | 'max-content' | 'all',
|
|
192
|
+
flexible: boolean,
|
|
193
|
+
fitted = false,
|
|
194
|
+
): void => {
|
|
195
|
+
planned.fill(0);
|
|
196
|
+
for (const item of group) {
|
|
197
|
+
const end = Math.min(n, item.start + item.span);
|
|
198
|
+
affected.length = 0;
|
|
199
|
+
let taken = gap * (end - item.start - 1);
|
|
200
|
+
for (let t = item.start; t < end; t += 1) {
|
|
201
|
+
taken += sizeOf(t, limits);
|
|
202
|
+
if (affects(t)) affected.push(t);
|
|
203
|
+
}
|
|
204
|
+
if (!affected.length) continue;
|
|
205
|
+
let room = size(item) - taken;
|
|
206
|
+
if (!(room > EPS)) continue;
|
|
207
|
+
for (const t of affected) inc[t] = 0;
|
|
208
|
+
if (flexible) {
|
|
209
|
+
// across `fr` tracks, by their factors — the rest of the room
|
|
210
|
+
// equally where the factors come to less than one
|
|
211
|
+
let factors = 0;
|
|
212
|
+
for (const t of affected) factors += frOf(tracks[t].max)!;
|
|
213
|
+
for (const t of affected) {
|
|
214
|
+
const fr = frOf(tracks[t].max)!;
|
|
215
|
+
inc[t] =
|
|
216
|
+
factors >= 1
|
|
217
|
+
? (room * fr) / factors
|
|
218
|
+
: room * fr + (room * (1 - factors)) / affected.length;
|
|
219
|
+
}
|
|
220
|
+
} else {
|
|
221
|
+
// equally, as far as each track's limit: a base size's is its
|
|
222
|
+
// growth limit, or `fit-content()`'s argument; a growth limit's is
|
|
223
|
+
// itself, but where it is infinite or has just stopped being
|
|
224
|
+
room = share(
|
|
225
|
+
room,
|
|
226
|
+
affected,
|
|
227
|
+
(t) => {
|
|
228
|
+
const fit = fitOf(tracks[t].max);
|
|
229
|
+
let cap: number;
|
|
230
|
+
if (!limits)
|
|
231
|
+
cap = fit === null ? limit[t] : Math.min(limit[t], fit);
|
|
232
|
+
else {
|
|
233
|
+
cap =
|
|
234
|
+
growable[t] || !Number.isFinite(limit[t]) ? Infinity : limit[t];
|
|
235
|
+
if (fitted && fit !== null) cap = Math.min(cap, fit);
|
|
236
|
+
}
|
|
237
|
+
return cap - sizeOf(t, limits);
|
|
238
|
+
},
|
|
239
|
+
inc,
|
|
240
|
+
);
|
|
241
|
+
if (room > EPS) {
|
|
242
|
+
// and past the limits, to the tracks whose maximums let them
|
|
243
|
+
let beyond = affected.slice();
|
|
244
|
+
if (past !== 'all') {
|
|
245
|
+
const kind = past === 'intrinsic' ? intrinsicMax : maxContentMax;
|
|
246
|
+
const picked = beyond.filter((t) => kind(tracks[t].max));
|
|
247
|
+
if (picked.length) beyond = picked;
|
|
248
|
+
}
|
|
249
|
+
share(
|
|
250
|
+
room,
|
|
251
|
+
beyond,
|
|
252
|
+
(t) => {
|
|
253
|
+
const fit = fitOf(tracks[t].max);
|
|
254
|
+
return fitted && fit !== null
|
|
255
|
+
? fit - sizeOf(t, limits)
|
|
256
|
+
: Infinity;
|
|
257
|
+
},
|
|
258
|
+
inc,
|
|
259
|
+
);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
for (const t of affected) if (inc[t] > planned[t]) planned[t] = inc[t];
|
|
263
|
+
}
|
|
264
|
+
for (let t = 0; t < n; t += 1) {
|
|
265
|
+
if (!(planned[t] > 0)) continue;
|
|
266
|
+
if (limits) limit[t] = sizeOf(t, true) + planned[t];
|
|
267
|
+
else base[t] += planned[t];
|
|
268
|
+
}
|
|
269
|
+
};
|
|
270
|
+
|
|
271
|
+
/** 11.5.3 and 11.5.4, for one group of items. */
|
|
272
|
+
const accommodate = (group: TrackItem[], flexible: boolean): void => {
|
|
273
|
+
// an item crossing an `fr` track grows the `fr` tracks alone
|
|
274
|
+
const may = (t: number) => !flexible || frOf(tracks[t].max) !== null;
|
|
275
|
+
grow(
|
|
276
|
+
group,
|
|
277
|
+
false,
|
|
278
|
+
(t) => may(t) && typeof tracks[t].min !== 'number',
|
|
279
|
+
minimumOf,
|
|
280
|
+
'intrinsic',
|
|
281
|
+
flexible,
|
|
282
|
+
);
|
|
283
|
+
grow(
|
|
284
|
+
group,
|
|
285
|
+
false,
|
|
286
|
+
(t) =>
|
|
287
|
+
may(t) &&
|
|
288
|
+
(tracks[t].min === 'min-content' || tracks[t].min === 'max-content'),
|
|
289
|
+
minContentOf,
|
|
290
|
+
'intrinsic',
|
|
291
|
+
flexible,
|
|
292
|
+
);
|
|
293
|
+
grow(
|
|
294
|
+
group,
|
|
295
|
+
false,
|
|
296
|
+
(t) => may(t) && tracks[t].min === 'max-content',
|
|
297
|
+
maxContentOf,
|
|
298
|
+
'max-content',
|
|
299
|
+
flexible,
|
|
300
|
+
);
|
|
301
|
+
for (let t = 0; t < n; t += 1) if (limit[t] < base[t]) limit[t] = base[t];
|
|
302
|
+
// an `fr` track's maximum is not its content's
|
|
303
|
+
if (flexible) return;
|
|
304
|
+
const infinite = limit.map((l) => !Number.isFinite(l));
|
|
305
|
+
grow(
|
|
306
|
+
group,
|
|
307
|
+
true,
|
|
308
|
+
(t) => intrinsicMax(tracks[t].max),
|
|
309
|
+
minContentOf,
|
|
310
|
+
'all',
|
|
311
|
+
false,
|
|
312
|
+
);
|
|
313
|
+
for (let t = 0; t < n; t += 1) {
|
|
314
|
+
growable[t] = infinite[t] && Number.isFinite(limit[t]);
|
|
315
|
+
}
|
|
316
|
+
grow(
|
|
317
|
+
group,
|
|
318
|
+
true,
|
|
319
|
+
(t) => maxContentMax(tracks[t].max),
|
|
320
|
+
maxContentOf,
|
|
321
|
+
'all',
|
|
322
|
+
false,
|
|
323
|
+
true,
|
|
324
|
+
);
|
|
325
|
+
growable.fill(false);
|
|
326
|
+
};
|
|
327
|
+
|
|
328
|
+
for (const s of [...spans.keys()].sort((a, b) => a - b)) {
|
|
329
|
+
accommodate(spans.get(s)!, false);
|
|
330
|
+
}
|
|
331
|
+
if (flexing.length) accommodate(flexing, true);
|
|
332
|
+
for (let t = 0; t < n; t += 1) {
|
|
333
|
+
if (!Number.isFinite(limit[t])) limit[t] = base[t];
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
const used = (): number => {
|
|
337
|
+
let sum = gap * Math.max(0, n - 1);
|
|
338
|
+
for (let t = 0; t < n; t += 1) sum += base[t];
|
|
339
|
+
return sum;
|
|
340
|
+
};
|
|
341
|
+
|
|
342
|
+
// 11.6: the free space grows every track equally towards its limit, and
|
|
343
|
+
// with no end to it, all the way
|
|
344
|
+
if (!Number.isFinite(space.available)) {
|
|
345
|
+
for (let t = 0; t < n; t += 1) base[t] = Math.max(base[t], limit[t]);
|
|
346
|
+
} else {
|
|
347
|
+
const free = space.available - used();
|
|
348
|
+
if (free > EPS) {
|
|
349
|
+
inc.fill(0);
|
|
350
|
+
const all = tracks.map((_, t) => t);
|
|
351
|
+
share(free, all, (t) => limit[t] - base[t], inc);
|
|
352
|
+
for (let t = 0; t < n; t += 1) base[t] += inc[t];
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
// 11.7: the `fr` tracks, at what one `fr` comes to
|
|
357
|
+
const flex: number[] = [];
|
|
358
|
+
for (let t = 0; t < n; t += 1) if (frOf(tracks[t].max) !== null) flex.push(t);
|
|
359
|
+
if (flex.length) {
|
|
360
|
+
/** 11.7.1: what an `fr` is worth filling `fill` with `list`, found
|
|
361
|
+
* again without any `fr` track its base size is more than its share. */
|
|
362
|
+
const frSize = (list: number[], fill: number): number => {
|
|
363
|
+
const flexible = new Set(
|
|
364
|
+
list.filter((t) => frOf(tracks[t].max) !== null),
|
|
365
|
+
);
|
|
366
|
+
for (;;) {
|
|
367
|
+
let leftover = fill - gap * Math.max(0, list.length - 1);
|
|
368
|
+
let factors = 0;
|
|
369
|
+
for (const t of list) {
|
|
370
|
+
if (flexible.has(t)) factors += frOf(tracks[t].max)!;
|
|
371
|
+
else leftover -= base[t];
|
|
372
|
+
}
|
|
373
|
+
const unit = Math.max(0, leftover) / Math.max(1, factors);
|
|
374
|
+
let frozen = false;
|
|
375
|
+
for (const t of flexible) {
|
|
376
|
+
if (unit * frOf(tracks[t].max)! < base[t]) {
|
|
377
|
+
flexible.delete(t);
|
|
378
|
+
frozen = true;
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
if (!frozen) return unit;
|
|
382
|
+
}
|
|
383
|
+
};
|
|
384
|
+
const all = tracks.map((_, t) => t);
|
|
385
|
+
let unit: number;
|
|
386
|
+
if (Number.isFinite(space.available)) unit = frSize(all, space.available);
|
|
387
|
+
else {
|
|
388
|
+
// with no size of its own, the axis takes the `fr` that holds every
|
|
389
|
+
// track's base size and every item across `fr` tracks at its widest
|
|
390
|
+
unit = 0;
|
|
391
|
+
for (const t of flex) {
|
|
392
|
+
const fr = frOf(tracks[t].max)!;
|
|
393
|
+
unit = Math.max(unit, fr > 1 ? base[t] / fr : base[t]);
|
|
394
|
+
}
|
|
395
|
+
for (const item of flexing) {
|
|
396
|
+
const list: number[] = [];
|
|
397
|
+
for (
|
|
398
|
+
let t = item.start;
|
|
399
|
+
t < Math.min(n, item.start + item.span);
|
|
400
|
+
t += 1
|
|
401
|
+
) {
|
|
402
|
+
list.push(t);
|
|
403
|
+
}
|
|
404
|
+
unit = Math.max(unit, frSize(list, item.maxContent()));
|
|
405
|
+
}
|
|
406
|
+
// and fills a least size it has
|
|
407
|
+
if (space.least > 0) {
|
|
408
|
+
let total = gap * Math.max(0, n - 1);
|
|
409
|
+
for (let t = 0; t < n; t += 1) {
|
|
410
|
+
const fr = frOf(tracks[t].max);
|
|
411
|
+
total += fr === null ? base[t] : Math.max(base[t], unit * fr);
|
|
412
|
+
}
|
|
413
|
+
if (total < space.least) unit = frSize(all, space.least);
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
for (const t of flex) {
|
|
417
|
+
const size = unit * frOf(tracks[t].max)!;
|
|
418
|
+
if (size > base[t]) base[t] = size;
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
// 11.8: the `auto` tracks stretch into what is left, where the axis has
|
|
423
|
+
// a size, or a least size
|
|
424
|
+
if (space.stretch) {
|
|
425
|
+
const room = Number.isFinite(space.available)
|
|
426
|
+
? space.available
|
|
427
|
+
: space.least;
|
|
428
|
+
const free = room - used();
|
|
429
|
+
if (free > EPS) {
|
|
430
|
+
const stretchy: number[] = [];
|
|
431
|
+
for (let t = 0; t < n; t += 1)
|
|
432
|
+
if (tracks[t].max === 'auto') stretchy.push(t);
|
|
433
|
+
for (const t of stretchy) base[t] += free / stretchy.length;
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
return base;
|
|
437
|
+
}
|