@react-x11/components 0.9.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -4
- package/dist/charts/node.d.ts +11 -1
- package/dist/charts/node.d.ts.map +1 -1
- package/dist/charts/node.js +44 -14
- package/dist/charts/node.js.map +1 -1
- package/dist/charts/render.d.ts +12 -3
- package/dist/charts/render.d.ts.map +1 -1
- package/dist/charts/render.js +94 -25
- package/dist/charts/render.js.map +1 -1
- package/dist/code/index.d.ts.map +1 -1
- package/dist/code/index.js +27 -24
- package/dist/code/index.js.map +1 -1
- package/dist/code-editor/completion.d.ts.map +1 -1
- package/dist/code-editor/completion.js +3 -2
- package/dist/code-editor/completion.js.map +1 -1
- package/dist/code-editor/index.d.ts.map +1 -1
- package/dist/code-editor/index.js +19 -0
- package/dist/code-editor/index.js.map +1 -1
- package/dist/code-editor/node.d.ts +177 -7
- package/dist/code-editor/node.d.ts.map +1 -1
- package/dist/code-editor/node.js +1329 -164
- package/dist/code-editor/node.js.map +1 -1
- package/dist/code-language/index.d.ts +1 -1
- package/dist/code-language/index.d.ts.map +1 -1
- package/dist/code-language/index.js +1 -1
- package/dist/code-language/index.js.map +1 -1
- package/dist/code-language/languages/glsl.d.ts.map +1 -1
- package/dist/code-language/languages/glsl.js +10 -2
- package/dist/code-language/languages/glsl.js.map +1 -1
- package/dist/code-language/languages/javascript.d.ts.map +1 -1
- package/dist/code-language/languages/javascript.js +18 -3
- package/dist/code-language/languages/javascript.js.map +1 -1
- package/dist/code-language/languages/json.d.ts.map +1 -1
- package/dist/code-language/languages/json.js +10 -2
- package/dist/code-language/languages/json.js.map +1 -1
- package/dist/code-language/languages/shell.d.ts.map +1 -1
- package/dist/code-language/languages/shell.js +10 -2
- package/dist/code-language/languages/shell.js.map +1 -1
- package/dist/code-language/languages/sql.d.ts.map +1 -1
- package/dist/code-language/languages/sql.js +20 -2
- package/dist/code-language/languages/sql.js.map +1 -1
- package/dist/code-language/runs.d.ts +31 -0
- package/dist/code-language/runs.d.ts.map +1 -1
- package/dist/code-language/runs.js +105 -0
- package/dist/code-language/runs.js.map +1 -1
- package/dist/code-language/stream.d.ts +22 -0
- package/dist/code-language/stream.d.ts.map +1 -1
- package/dist/code-language/stream.js +259 -9
- package/dist/code-language/stream.js.map +1 -1
- package/dist/code-language/types.d.ts +5 -4
- package/dist/code-language/types.d.ts.map +1 -1
- package/dist/codeblock/index.d.ts +26 -2
- package/dist/codeblock/index.d.ts.map +1 -1
- package/dist/codeblock/index.js +57 -4
- package/dist/codeblock/index.js.map +1 -1
- package/dist/flow/draw.d.ts +50 -0
- package/dist/flow/draw.d.ts.map +1 -1
- package/dist/flow/draw.js +132 -33
- package/dist/flow/draw.js.map +1 -1
- package/dist/flow/gl/color.d.ts +13 -0
- package/dist/flow/gl/color.d.ts.map +1 -0
- package/dist/flow/gl/color.js +82 -0
- package/dist/flow/gl/color.js.map +1 -0
- package/dist/flow/gl/index.d.ts +60 -0
- package/dist/flow/gl/index.d.ts.map +1 -0
- package/dist/flow/gl/index.js +283 -0
- package/dist/flow/gl/index.js.map +1 -0
- package/dist/flow/gl/pack.d.ts +133 -0
- package/dist/flow/gl/pack.d.ts.map +1 -0
- package/dist/flow/gl/pack.js +408 -0
- package/dist/flow/gl/pack.js.map +1 -0
- package/dist/flow/gl/renderer.d.ts +95 -0
- package/dist/flow/gl/renderer.d.ts.map +1 -0
- package/dist/flow/gl/renderer.js +459 -0
- package/dist/flow/gl/renderer.js.map +1 -0
- package/dist/flow/gl/shaders.d.ts +79 -0
- package/dist/flow/gl/shaders.d.ts.map +1 -0
- package/dist/flow/gl/shaders.js +346 -0
- package/dist/flow/gl/shaders.js.map +1 -0
- package/dist/flow/gl/text.d.ts +318 -0
- package/dist/flow/gl/text.d.ts.map +1 -0
- package/dist/flow/gl/text.js +1103 -0
- package/dist/flow/gl/text.js.map +1 -0
- package/dist/flow/index.d.ts +1 -1
- package/dist/flow/index.d.ts.map +1 -1
- package/dist/flow/index.js +619 -64
- package/dist/flow/index.js.map +1 -1
- package/dist/flow/node.d.ts +621 -72
- package/dist/flow/node.d.ts.map +1 -1
- package/dist/flow/node.js +2253 -1018
- package/dist/flow/node.js.map +1 -1
- package/dist/flow/paint.d.ts +35 -0
- package/dist/flow/paint.d.ts.map +1 -0
- package/dist/flow/paint.js +393 -0
- package/dist/flow/paint.js.map +1 -0
- package/dist/flow/paths.d.ts +14 -0
- package/dist/flow/paths.d.ts.map +1 -1
- package/dist/flow/paths.js +45 -19
- package/dist/flow/paths.js.map +1 -1
- package/dist/flow/scene.d.ts +584 -0
- package/dist/flow/scene.d.ts.map +1 -0
- package/dist/flow/scene.js +1453 -0
- package/dist/flow/scene.js.map +1 -0
- package/dist/flow/types.d.ts +111 -1
- package/dist/flow/types.d.ts.map +1 -1
- package/dist/html/controls.d.ts +28 -0
- package/dist/html/controls.d.ts.map +1 -1
- package/dist/html/controls.js +52 -2
- package/dist/html/controls.js.map +1 -1
- package/dist/html/css/calc.d.ts +14 -0
- package/dist/html/css/calc.d.ts.map +1 -0
- package/dist/html/css/calc.js +344 -0
- package/dist/html/css/calc.js.map +1 -0
- package/dist/html/css/cascade.d.ts +262 -6
- package/dist/html/css/cascade.d.ts.map +1 -1
- package/dist/html/css/cascade.js +1373 -67
- package/dist/html/css/cascade.js.map +1 -1
- package/dist/html/css/color.d.ts +23 -0
- package/dist/html/css/color.d.ts.map +1 -0
- package/dist/html/css/color.js +740 -0
- package/dist/html/css/color.js.map +1 -0
- package/dist/html/css/content.d.ts +92 -0
- package/dist/html/css/content.d.ts.map +1 -0
- package/dist/html/css/content.js +388 -0
- package/dist/html/css/content.js.map +1 -0
- package/dist/html/css/counter-styles.d.ts +76 -0
- package/dist/html/css/counter-styles.d.ts.map +1 -0
- package/dist/html/css/counter-styles.js +893 -0
- package/dist/html/css/counter-styles.js.map +1 -0
- package/dist/html/css/decode.d.ts +12 -0
- package/dist/html/css/decode.d.ts.map +1 -0
- package/dist/html/css/decode.js +116 -0
- package/dist/html/css/decode.js.map +1 -0
- package/dist/html/css/parse.d.ts +110 -10
- package/dist/html/css/parse.d.ts.map +1 -1
- package/dist/html/css/parse.js +1473 -180
- package/dist/html/css/parse.js.map +1 -1
- package/dist/html/css/style.d.ts +501 -15
- package/dist/html/css/style.d.ts.map +1 -1
- package/dist/html/css/style.js +3729 -206
- package/dist/html/css/style.js.map +1 -1
- package/dist/html/css/ua.d.ts.map +1 -1
- package/dist/html/css/ua.js +65 -16
- package/dist/html/css/ua.js.map +1 -1
- package/dist/html/css/values.d.ts +37 -3
- package/dist/html/css/values.d.ts.map +1 -1
- package/dist/html/css/values.js +122 -48
- package/dist/html/css/values.js.map +1 -1
- package/dist/html/css/vars.d.ts +52 -0
- package/dist/html/css/vars.d.ts.map +1 -0
- package/dist/html/css/vars.js +358 -0
- package/dist/html/css/vars.js.map +1 -0
- package/dist/html/dom.d.ts +30 -4
- package/dist/html/dom.d.ts.map +1 -1
- package/dist/html/dom.js +278 -17
- package/dist/html/dom.js.map +1 -1
- package/dist/html/fonts.d.ts +106 -0
- package/dist/html/fonts.d.ts.map +1 -0
- package/dist/html/fonts.js +565 -0
- package/dist/html/fonts.js.map +1 -0
- package/dist/html/gif.d.ts +15 -0
- package/dist/html/gif.d.ts.map +1 -0
- package/dist/html/gif.js +229 -0
- package/dist/html/gif.js.map +1 -0
- package/dist/html/index.d.ts +50 -11
- package/dist/html/index.d.ts.map +1 -1
- package/dist/html/index.js +115 -9
- package/dist/html/index.js.map +1 -1
- package/dist/html/layout/block.d.ts +226 -3
- package/dist/html/layout/block.d.ts.map +1 -1
- package/dist/html/layout/block.js +3077 -219
- package/dist/html/layout/block.js.map +1 -1
- package/dist/html/layout/boxes.d.ts +367 -17
- package/dist/html/layout/boxes.d.ts.map +1 -1
- package/dist/html/layout/boxes.js +1742 -182
- package/dist/html/layout/boxes.js.map +1 -1
- package/dist/html/layout/cache.d.ts +58 -0
- package/dist/html/layout/cache.d.ts.map +1 -0
- package/dist/html/layout/cache.js +224 -0
- package/dist/html/layout/cache.js.map +1 -0
- package/dist/html/layout/collapse.d.ts +45 -0
- package/dist/html/layout/collapse.d.ts.map +1 -0
- package/dist/html/layout/collapse.js +246 -0
- package/dist/html/layout/collapse.js.map +1 -0
- package/dist/html/layout/css-grid.d.ts +7 -0
- package/dist/html/layout/css-grid.d.ts.map +1 -0
- package/dist/html/layout/css-grid.js +900 -0
- package/dist/html/layout/css-grid.js.map +1 -0
- package/dist/html/layout/flex.d.ts.map +1 -1
- package/dist/html/layout/flex.js +1025 -89
- package/dist/html/layout/flex.js.map +1 -1
- package/dist/html/layout/floats.d.ts +45 -6
- package/dist/html/layout/floats.d.ts.map +1 -1
- package/dist/html/layout/floats.js +113 -14
- package/dist/html/layout/floats.js.map +1 -1
- package/dist/html/layout/grid-lines.d.ts +39 -0
- package/dist/html/layout/grid-lines.d.ts.map +1 -0
- package/dist/html/layout/grid-lines.js +119 -0
- package/dist/html/layout/grid-lines.js.map +1 -0
- package/dist/html/layout/grid.d.ts +53 -0
- package/dist/html/layout/grid.d.ts.map +1 -0
- package/dist/html/layout/grid.js +153 -0
- package/dist/html/layout/grid.js.map +1 -0
- package/dist/html/layout/inline.d.ts +154 -1
- package/dist/html/layout/inline.d.ts.map +1 -1
- package/dist/html/layout/inline.js +3598 -175
- package/dist/html/layout/inline.js.map +1 -1
- package/dist/html/layout/shaping.d.ts +6 -0
- package/dist/html/layout/shaping.d.ts.map +1 -0
- package/dist/html/layout/shaping.js +100 -0
- package/dist/html/layout/shaping.js.map +1 -0
- package/dist/html/layout/table.d.ts +3 -0
- package/dist/html/layout/table.d.ts.map +1 -1
- package/dist/html/layout/table.js +681 -175
- package/dist/html/layout/table.js.map +1 -1
- package/dist/html/layout/tracks.d.ts +44 -0
- package/dist/html/layout/tracks.d.ts.map +1 -0
- package/dist/html/layout/tracks.js +349 -0
- package/dist/html/layout/tracks.js.map +1 -0
- package/dist/html/node.d.ts +169 -4
- package/dist/html/node.d.ts.map +1 -1
- package/dist/html/node.js +1429 -137
- package/dist/html/node.js.map +1 -1
- package/dist/html/paint.d.ts +92 -3
- package/dist/html/paint.d.ts.map +1 -1
- package/dist/html/paint.js +3635 -107
- package/dist/html/paint.js.map +1 -1
- package/dist/html/resources.d.ts +60 -14
- package/dist/html/resources.d.ts.map +1 -1
- package/dist/html/resources.js +122 -36
- package/dist/html/resources.js.map +1 -1
- package/dist/html/surfaces.d.ts +23 -0
- package/dist/html/surfaces.d.ts.map +1 -0
- package/dist/html/surfaces.js +68 -0
- package/dist/html/surfaces.js.map +1 -0
- package/dist/html/svg.d.ts +80 -0
- package/dist/html/svg.d.ts.map +1 -0
- package/dist/html/svg.js +442 -0
- package/dist/html/svg.js.map +1 -0
- package/dist/html/url.d.ts +23 -0
- package/dist/html/url.d.ts.map +1 -0
- package/dist/html/url.js +80 -0
- package/dist/html/url.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/codelines.d.ts +42 -0
- package/dist/internal/codelines.d.ts.map +1 -0
- package/dist/internal/codelines.js +170 -0
- package/dist/internal/codelines.js.map +1 -0
- package/dist/internal/collate.d.ts +3 -0
- package/dist/internal/collate.d.ts.map +1 -0
- package/dist/internal/collate.js +11 -0
- package/dist/internal/collate.js.map +1 -0
- package/dist/internal/markdown/ast.d.ts +11 -0
- package/dist/internal/markdown/ast.d.ts.map +1 -1
- package/dist/internal/markdown/parse.d.ts.map +1 -1
- package/dist/internal/markdown/parse.js +109 -8
- package/dist/internal/markdown/parse.js.map +1 -1
- package/dist/internal/prewarm.d.ts +18 -0
- package/dist/internal/prewarm.d.ts.map +1 -0
- package/dist/internal/prewarm.js +42 -0
- package/dist/internal/prewarm.js.map +1 -0
- package/dist/internal/sdf.d.ts +20 -0
- package/dist/internal/sdf.d.ts.map +1 -0
- package/dist/internal/sdf.js +216 -0
- package/dist/internal/sdf.js.map +1 -0
- package/dist/internal/splice.d.ts +12 -0
- package/dist/internal/splice.d.ts.map +1 -0
- package/dist/internal/splice.js +23 -0
- package/dist/internal/splice.js.map +1 -0
- package/dist/internal/window.d.ts +12 -0
- package/dist/internal/window.d.ts.map +1 -1
- package/dist/internal/window.js +23 -6
- package/dist/internal/window.js.map +1 -1
- package/dist/maps/anchors.d.ts +6 -1
- package/dist/maps/anchors.d.ts.map +1 -1
- package/dist/maps/anchors.js +260 -1
- package/dist/maps/anchors.js.map +1 -1
- package/dist/maps/controller.d.ts +57 -0
- package/dist/maps/controller.d.ts.map +1 -1
- package/dist/maps/controller.js +97 -18
- package/dist/maps/controller.js.map +1 -1
- package/dist/maps/gl/buckets.d.ts +5 -1
- package/dist/maps/gl/buckets.d.ts.map +1 -1
- package/dist/maps/gl/buckets.js +5 -2
- package/dist/maps/gl/buckets.js.map +1 -1
- package/dist/maps/gl/build-worker.d.ts +2 -0
- package/dist/maps/gl/build-worker.d.ts.map +1 -1
- package/dist/maps/gl/build-worker.js +1 -1
- package/dist/maps/gl/build-worker.js.map +1 -1
- package/dist/maps/gl/cover.d.ts +23 -4
- package/dist/maps/gl/cover.d.ts.map +1 -1
- package/dist/maps/gl/cover.js +61 -48
- package/dist/maps/gl/cover.js.map +1 -1
- package/dist/maps/gl/placement.d.ts +21 -8
- package/dist/maps/gl/placement.d.ts.map +1 -1
- package/dist/maps/gl/placement.js +133 -58
- package/dist/maps/gl/placement.js.map +1 -1
- package/dist/maps/gl/renderer.d.ts +36 -4
- package/dist/maps/gl/renderer.d.ts.map +1 -1
- package/dist/maps/gl/renderer.js +81 -24
- package/dist/maps/gl/renderer.js.map +1 -1
- package/dist/maps/gl/shaders.d.ts +18 -17
- package/dist/maps/gl/shaders.d.ts.map +1 -1
- package/dist/maps/gl/shaders.js +34 -32
- package/dist/maps/gl/shaders.js.map +1 -1
- package/dist/maps/gl/store.d.ts +10 -0
- package/dist/maps/gl/store.d.ts.map +1 -1
- package/dist/maps/gl/store.js +47 -4
- package/dist/maps/gl/store.js.map +1 -1
- package/dist/maps/gl/text.d.ts +153 -24
- package/dist/maps/gl/text.d.ts.map +1 -1
- package/dist/maps/gl/text.js +379 -63
- package/dist/maps/gl/text.js.map +1 -1
- package/dist/maps/gl/view.d.ts +293 -2
- package/dist/maps/gl/view.d.ts.map +1 -1
- package/dist/maps/gl/view.js +317 -82
- package/dist/maps/gl/view.js.map +1 -1
- package/dist/maps/icons.d.ts +32 -0
- package/dist/maps/icons.d.ts.map +1 -0
- package/dist/maps/icons.js +151 -0
- package/dist/maps/icons.js.map +1 -0
- package/dist/maps/index.d.ts +2 -0
- package/dist/maps/index.d.ts.map +1 -1
- package/dist/maps/index.js +2 -0
- package/dist/maps/index.js.map +1 -1
- package/dist/maps/labels.d.ts +56 -4
- package/dist/maps/labels.d.ts.map +1 -1
- package/dist/maps/labels.js +213 -46
- package/dist/maps/labels.js.map +1 -1
- package/dist/maps/node.d.ts +17 -0
- package/dist/maps/node.d.ts.map +1 -1
- package/dist/maps/node.js +64 -30
- package/dist/maps/node.js.map +1 -1
- package/dist/maps/proj.d.ts +48 -0
- package/dist/maps/proj.d.ts.map +1 -1
- package/dist/maps/proj.js +73 -0
- package/dist/maps/proj.js.map +1 -1
- package/dist/maps/sources.d.ts +5 -3
- package/dist/maps/sources.d.ts.map +1 -1
- package/dist/maps/sources.js +5 -3
- package/dist/maps/sources.js.map +1 -1
- package/dist/maps/style.d.ts +35 -0
- package/dist/maps/style.d.ts.map +1 -1
- package/dist/maps/style.js.map +1 -1
- package/dist/maps/styles.d.ts +12 -0
- package/dist/maps/styles.d.ts.map +1 -1
- package/dist/maps/styles.js +120 -6
- package/dist/maps/styles.js.map +1 -1
- package/dist/maps/tiles.d.ts +31 -11
- package/dist/maps/tiles.d.ts.map +1 -1
- package/dist/maps/tiles.js +61 -27
- package/dist/maps/tiles.js.map +1 -1
- package/dist/maps/types.d.ts +28 -4
- package/dist/maps/types.d.ts.map +1 -1
- package/dist/markdown/index.d.ts.map +1 -1
- package/dist/markdown/index.js +209 -68
- package/dist/markdown/index.js.map +1 -1
- package/dist/markdown/spans.d.ts.map +1 -1
- package/dist/markdown/spans.js +6 -0
- package/dist/markdown/spans.js.map +1 -1
- package/dist/qml/containers.d.ts.map +1 -1
- package/dist/qml/containers.js +6 -1
- package/dist/qml/containers.js.map +1 -1
- package/dist/qml/interaction.d.ts.map +1 -1
- package/dist/qml/interaction.js +38 -5
- package/dist/qml/interaction.js.map +1 -1
- package/dist/qml/layouts.d.ts.map +1 -1
- package/dist/qml/layouts.js +21 -6
- package/dist/qml/layouts.js.map +1 -1
- package/dist/qml/qtquick.d.ts.map +1 -1
- package/dist/qml/qtquick.js +9 -2
- package/dist/qml/qtquick.js.map +1 -1
- package/dist/qml/react.d.ts.map +1 -1
- package/dist/qml/react.js +9 -7
- package/dist/qml/react.js.map +1 -1
- package/dist/reorder/clock.d.ts +7 -0
- package/dist/reorder/clock.d.ts.map +1 -0
- package/dist/reorder/clock.js +26 -0
- package/dist/reorder/clock.js.map +1 -0
- package/dist/reorder/index.d.ts +25 -3
- package/dist/reorder/index.d.ts.map +1 -1
- package/dist/reorder/index.js +64 -19
- package/dist/reorder/index.js.map +1 -1
- package/dist/rich-text-editor/index.d.ts +0 -11
- package/dist/rich-text-editor/index.d.ts.map +1 -1
- package/dist/rich-text-editor/index.js +38 -9
- package/dist/rich-text-editor/index.js.map +1 -1
- package/dist/rich-text-editor/keymap.d.ts.map +1 -1
- package/dist/rich-text-editor/keymap.js +2 -1
- package/dist/rich-text-editor/keymap.js.map +1 -1
- package/dist/rich-text-editor/keys.d.ts +17 -6
- package/dist/rich-text-editor/keys.d.ts.map +1 -1
- package/dist/rich-text-editor/keys.js +135 -26
- package/dist/rich-text-editor/keys.js.map +1 -1
- package/dist/rich-text-editor/markdown.d.ts.map +1 -1
- package/dist/rich-text-editor/markdown.js +30 -1
- package/dist/rich-text-editor/markdown.js.map +1 -1
- package/dist/rich-text-editor/marks.d.ts +9 -0
- package/dist/rich-text-editor/marks.d.ts.map +1 -0
- package/dist/rich-text-editor/marks.js +83 -0
- package/dist/rich-text-editor/marks.js.map +1 -0
- package/dist/rich-text-editor/render.d.ts.map +1 -1
- package/dist/rich-text-editor/render.js +28 -10
- package/dist/rich-text-editor/render.js.map +1 -1
- package/dist/rich-text-editor/replace.d.ts +13 -0
- package/dist/rich-text-editor/replace.d.ts.map +1 -0
- package/dist/rich-text-editor/replace.js +64 -0
- package/dist/rich-text-editor/replace.js.map +1 -0
- package/dist/rich-text-editor/toolbar.d.ts.map +1 -1
- package/dist/rich-text-editor/toolbar.js +1 -1
- package/dist/rich-text-editor/toolbar.js.map +1 -1
- package/dist/rich-text-editor/virtual.d.ts.map +1 -1
- package/dist/rich-text-editor/virtual.js +17 -0
- package/dist/rich-text-editor/virtual.js.map +1 -1
- package/dist/richtext/node.d.ts +46 -2
- package/dist/richtext/node.d.ts.map +1 -1
- package/dist/richtext/node.js +187 -4
- package/dist/richtext/node.js.map +1 -1
- package/dist/richtext/runs.d.ts +13 -8
- package/dist/richtext/runs.d.ts.map +1 -1
- package/dist/richtext/runs.js +18 -8
- package/dist/richtext/runs.js.map +1 -1
- package/dist/table/index.d.ts.map +1 -1
- package/dist/table/index.js +23 -0
- package/dist/table/index.js.map +1 -1
- package/dist/table/rows.d.ts +3 -2
- package/dist/table/rows.d.ts.map +1 -1
- package/dist/table/rows.js +20 -6
- package/dist/table/rows.js.map +1 -1
- package/dist/terminal/index.d.ts.map +1 -1
- package/dist/terminal/index.js +4 -0
- package/dist/terminal/index.js.map +1 -1
- package/dist/terminal/vt/pty.d.ts +13 -2
- package/dist/terminal/vt/pty.d.ts.map +1 -1
- package/dist/terminal/vt/pty.js +18 -3
- package/dist/terminal/vt/pty.js.map +1 -1
- package/dist/terminal-output/index.d.ts.map +1 -1
- package/dist/terminal-output/index.js +103 -23
- package/dist/terminal-output/index.js.map +1 -1
- package/dist/terminal-output/runs.d.ts +4 -1
- package/dist/terminal-output/runs.d.ts.map +1 -1
- package/dist/terminal-output/runs.js +5 -1
- package/dist/terminal-output/runs.js.map +1 -1
- package/dist/three/canvas.d.ts.map +1 -1
- package/dist/three/canvas.js +85 -7
- package/dist/three/canvas.js.map +1 -1
- package/dist/three/events.d.ts +22 -4
- package/dist/three/events.d.ts.map +1 -1
- package/dist/three/events.js +34 -4
- package/dist/three/events.js.map +1 -1
- package/dist/tree/index.d.ts.map +1 -1
- package/dist/tree/index.js +17 -0
- package/dist/tree/index.js.map +1 -1
- package/package.json +42 -33
- package/src/charts/node.ts +62 -26
- package/src/charts/render.ts +120 -30
- package/src/code/index.ts +36 -32
- package/src/code-editor/completion.ts +3 -2
- package/src/code-editor/index.ts +19 -0
- package/src/code-editor/node.ts +1574 -184
- package/src/code-language/index.ts +1 -1
- package/src/code-language/languages/glsl.ts +12 -2
- package/src/code-language/languages/javascript.ts +21 -4
- package/src/code-language/languages/json.ts +12 -2
- package/src/code-language/languages/shell.ts +12 -2
- package/src/code-language/languages/sql.ts +22 -2
- package/src/code-language/runs.ts +111 -1
- package/src/code-language/stream.ts +257 -17
- package/src/code-language/types.ts +5 -4
- package/src/codeblock/index.ts +68 -4
- package/src/flow/draw.ts +167 -41
- package/src/flow/gl/color.ts +85 -0
- package/src/flow/gl/index.ts +342 -0
- package/src/flow/gl/pack.ts +585 -0
- package/src/flow/gl/renderer.ts +679 -0
- package/src/flow/gl/shaders.ts +371 -0
- package/src/flow/gl/text.ts +1295 -0
- package/src/flow/index.ts +794 -67
- package/src/flow/node.ts +2496 -1256
- package/src/flow/paint.ts +511 -0
- package/src/flow/paths.ts +80 -15
- package/src/flow/scene.ts +2199 -0
- package/src/flow/types.ts +113 -1
- package/src/html/controls.ts +73 -2
- package/src/html/css/calc.ts +385 -0
- package/src/html/css/cascade.ts +1481 -62
- package/src/html/css/color.ts +755 -0
- package/src/html/css/content.ts +417 -0
- package/src/html/css/counter-styles.ts +973 -0
- package/src/html/css/decode.ts +130 -0
- package/src/html/css/parse.ts +1514 -160
- package/src/html/css/style.ts +4131 -223
- package/src/html/css/ua.ts +66 -17
- package/src/html/css/values.ts +150 -50
- package/src/html/css/vars.ts +348 -0
- package/src/html/dom.ts +284 -17
- package/src/html/fonts.ts +641 -0
- package/src/html/gif.ts +233 -0
- package/src/html/index.ts +180 -20
- package/src/html/layout/block.ts +3560 -208
- package/src/html/layout/boxes.ts +2141 -190
- package/src/html/layout/cache.ts +289 -0
- package/src/html/layout/collapse.ts +317 -0
- package/src/html/layout/css-grid.ts +1063 -0
- package/src/html/layout/flex.ts +1115 -106
- package/src/html/layout/floats.ts +128 -14
- package/src/html/layout/grid-lines.ts +141 -0
- package/src/html/layout/grid.ts +181 -0
- package/src/html/layout/inline.ts +4187 -192
- package/src/html/layout/shaping.ts +140 -0
- package/src/html/layout/table.ts +696 -186
- package/src/html/layout/tracks.ts +437 -0
- package/src/html/node.ts +1585 -156
- package/src/html/paint.ts +4582 -267
- package/src/html/resources.ts +161 -50
- package/src/html/surfaces.ts +81 -0
- package/src/html/svg.ts +504 -0
- package/src/html/url.ts +86 -0
- package/src/index.ts +2 -0
- package/src/internal/codelines.ts +200 -0
- package/src/internal/collate.ts +12 -0
- package/src/internal/markdown/ast.ts +11 -0
- package/src/internal/markdown/parse.ts +154 -11
- package/src/internal/prewarm.ts +45 -0
- package/src/internal/sdf.ts +227 -0
- package/src/internal/splice.ts +25 -0
- package/src/internal/window.ts +36 -5
- package/src/maps/anchors.ts +307 -1
- package/src/maps/controller.ts +116 -31
- package/src/maps/gl/buckets.ts +5 -1
- package/src/maps/gl/build-worker.ts +13 -2
- package/src/maps/gl/cover.ts +79 -44
- package/src/maps/gl/placement.ts +221 -69
- package/src/maps/gl/renderer.ts +104 -20
- package/src/maps/gl/shaders.ts +35 -32
- package/src/maps/gl/store.ts +66 -17
- package/src/maps/gl/text.ts +444 -71
- package/src/maps/gl/view.ts +361 -96
- package/src/maps/icons.ts +183 -0
- package/src/maps/index.ts +4 -0
- package/src/maps/labels.ts +269 -49
- package/src/maps/node.ts +82 -49
- package/src/maps/proj.ts +87 -0
- package/src/maps/sources.ts +5 -3
- package/src/maps/style.ts +32 -0
- package/src/maps/styles.ts +215 -4
- package/src/maps/tiles.ts +64 -31
- package/src/maps/types.ts +28 -4
- package/src/markdown/index.ts +293 -92
- package/src/markdown/spans.ts +5 -0
- package/src/qml/containers.tsx +6 -1
- package/src/qml/interaction.tsx +42 -5
- package/src/qml/layouts.tsx +21 -6
- package/src/qml/qtquick.tsx +9 -2
- package/src/qml/react.tsx +7 -5
- package/src/reorder/clock.ts +27 -0
- package/src/reorder/index.ts +100 -27
- package/src/rich-text-editor/index.ts +37 -12
- package/src/rich-text-editor/keymap.ts +1 -1
- package/src/rich-text-editor/keys.ts +135 -26
- package/src/rich-text-editor/markdown.ts +36 -1
- package/src/rich-text-editor/marks.ts +101 -0
- package/src/rich-text-editor/render.ts +49 -12
- package/src/rich-text-editor/replace.ts +85 -0
- package/src/rich-text-editor/toolbar.ts +1 -1
- package/src/rich-text-editor/virtual.ts +25 -0
- package/src/richtext/node.ts +235 -14
- package/src/richtext/runs.ts +23 -12
- package/src/table/index.ts +29 -0
- package/src/table/rows.ts +18 -8
- package/src/terminal/index.ts +4 -0
- package/src/terminal/vt/pty.ts +16 -2
- package/src/terminal-output/index.ts +129 -31
- package/src/terminal-output/runs.ts +16 -2
- package/src/three/canvas.ts +102 -8
- package/src/three/events.ts +49 -9
- package/src/tree/index.ts +19 -0
package/src/html/css/ua.ts
CHANGED
|
@@ -26,6 +26,10 @@ export function lookKey(look: RootLook): string {
|
|
|
26
26
|
look.borderColor,
|
|
27
27
|
look.mutedColor,
|
|
28
28
|
look.background,
|
|
29
|
+
look.surface,
|
|
30
|
+
look.controlPadY,
|
|
31
|
+
look.controlBorder,
|
|
32
|
+
look.controlRadius,
|
|
29
33
|
].join('|');
|
|
30
34
|
}
|
|
31
35
|
|
|
@@ -40,8 +44,11 @@ export function uaStylesheet(look: RootLook): Stylesheet {
|
|
|
40
44
|
}
|
|
41
45
|
|
|
42
46
|
/**
|
|
43
|
-
* Margins are in `em
|
|
44
|
-
* `body` scales its whitespace with its text the way a browser's does.
|
|
47
|
+
* Margins above and below are in `em`, so a document that sets `font-size`
|
|
48
|
+
* on `body` scales its whitespace with its text the way a browser's does.
|
|
49
|
+
* The indents of lists, definitions and figures are the HTML standard's
|
|
50
|
+
* 40px (15.3.3, 15.3.8), whatever the size: a list in a 10px sidebar is
|
|
51
|
+
* indented as far as one in the body.
|
|
45
52
|
*/
|
|
46
53
|
function uaText(look: RootLook): string {
|
|
47
54
|
const mono = look.monoFamily;
|
|
@@ -52,10 +59,21 @@ article, aside, footer, header, hgroup, main, nav, section, details,
|
|
|
52
59
|
summary, dir, menu, center, marquee {
|
|
53
60
|
display: block;
|
|
54
61
|
}
|
|
62
|
+
/* <map> is inline (HTML 15.3.1), so an <area> in it the author gives a
|
|
63
|
+
display of its own is drawn */
|
|
55
64
|
head, link, meta, style, script, title, base, template, noscript, param,
|
|
56
|
-
source, track, col, colgroup, datalist, area,
|
|
57
|
-
|
|
58
|
-
|
|
65
|
+
source, track, col, colgroup, datalist, area, rp { display: none; }
|
|
66
|
+
|
|
67
|
+
/* HTML's bidi rules for the two elements that are about it: <bdi> takes
|
|
68
|
+
its first strong letter's direction, and <bdo> overrides. The \`dir\`
|
|
69
|
+
attribute's isolation is a presentational hint (\`hints\`), where the
|
|
70
|
+
attribute is read already, rather than a selector every element tries */
|
|
71
|
+
bdi { unicode-bidi: plaintext; }
|
|
72
|
+
bdo { unicode-bidi: isolate-override; }
|
|
73
|
+
|
|
74
|
+
/* the theme's colour and font are the root's (\`initialStyle\`), and the
|
|
75
|
+
body inherits them, from an author's \`html\` rule too */
|
|
76
|
+
body { margin: 8px; }
|
|
59
77
|
html { color: ${look.color}; }
|
|
60
78
|
|
|
61
79
|
p { margin: 1em 0; }
|
|
@@ -66,16 +84,18 @@ h4 { font-size: 1em; font-weight: bold; margin: 1.33em 0; }
|
|
|
66
84
|
h5 { font-size: 0.83em; font-weight: bold; margin: 1.67em 0; }
|
|
67
85
|
h6 { font-size: 0.67em; font-weight: bold; margin: 2.33em 0; }
|
|
68
86
|
|
|
69
|
-
ul, ol { margin: 1em 0; padding-left:
|
|
87
|
+
ul, ol { margin: 1em 0; padding-left: 40px; }
|
|
70
88
|
ul { list-style-type: disc; }
|
|
71
89
|
ol { list-style-type: decimal; }
|
|
90
|
+
ol, ul, menu, dir { counter-reset: list-item; }
|
|
91
|
+
ol[reversed] { counter-reset: reversed(list-item); }
|
|
72
92
|
li { display: list-item; }
|
|
73
93
|
ul ul, ol ul { list-style-type: circle; }
|
|
74
94
|
ul ul ul, ol ol ul, ul ol ul, ol ul ul { list-style-type: square; }
|
|
75
95
|
ul ul, ul ol, ol ul, ol ol { margin: 0; }
|
|
76
96
|
|
|
77
97
|
dl { margin: 1em 0; }
|
|
78
|
-
dd { margin-left:
|
|
98
|
+
dd { margin-left: 40px; }
|
|
79
99
|
dt { font-weight: bold; }
|
|
80
100
|
|
|
81
101
|
blockquote {
|
|
@@ -106,39 +126,51 @@ big { font-size: 1.17em; }
|
|
|
106
126
|
sub { vertical-align: sub; font-size: 0.75em; }
|
|
107
127
|
sup { vertical-align: super; font-size: 0.75em; }
|
|
108
128
|
mark { background-color: #fff2a8; color: #1a1a1a; }
|
|
109
|
-
|
|
110
|
-
|
|
129
|
+
/* the HTML standard's rendering (15.3.4): an abbreviation with its
|
|
130
|
+
expansion in a title says so */
|
|
131
|
+
abbr[title], acronym[title] { text-decoration: dotted underline; }
|
|
132
|
+
center { text-align: -webkit-center; }
|
|
111
133
|
nobr { white-space: nowrap; }
|
|
134
|
+
q::before { content: open-quote; }
|
|
135
|
+
q::after { content: close-quote; }
|
|
112
136
|
|
|
113
137
|
/* Deliberately no 'a:hover' rule, though a browser's sheet has one: a
|
|
114
138
|
document containing any ':hover' selector has to be restyled as the
|
|
115
139
|
pointer moves, and a rule that changes nothing (the link is already
|
|
116
|
-
underlined) would make every plain document pay that.
|
|
117
|
-
a
|
|
140
|
+
underlined) would make every plain document pay that. An 'a' with no
|
|
141
|
+
'href' is an anchor, not a link, and is drawn as the text around it. */
|
|
142
|
+
a[href] { color: ${look.linkColor}; text-decoration: underline; cursor: pointer; }
|
|
118
143
|
|
|
119
144
|
hr {
|
|
120
|
-
margin: 0.5em
|
|
145
|
+
margin: 0.5em auto;
|
|
121
146
|
border: none;
|
|
122
147
|
border-top: 1px solid ${look.borderColor};
|
|
123
148
|
height: 0;
|
|
124
149
|
}
|
|
125
150
|
|
|
126
151
|
img { display: inline-block; }
|
|
127
|
-
|
|
152
|
+
/* never loaded: a box of its own size, framed as a browser frames one */
|
|
153
|
+
iframe { border: 2px inset; }
|
|
154
|
+
/* a poster is drawn within the video's box at its own ratio (HTML 15.4.1) */
|
|
155
|
+
video { object-fit: contain; }
|
|
156
|
+
figure { margin: 1em 40px; }
|
|
128
157
|
|
|
129
|
-
table { display: table; border-collapse: separate; border-spacing: 2px; }
|
|
158
|
+
table { display: table; border-collapse: separate; border-spacing: 2px; box-sizing: border-box; }
|
|
130
159
|
caption { display: table-caption; text-align: center; }
|
|
131
160
|
thead { display: table-header-group; }
|
|
132
161
|
tbody { display: table-row-group; }
|
|
133
162
|
tfoot { display: table-footer-group; }
|
|
134
163
|
tr { display: table-row; }
|
|
135
|
-
|
|
164
|
+
/* HTML's rendering rules: the rows are middle, and a cell takes its row's,
|
|
165
|
+
so a <tr valign="top"> sets its cells at the top */
|
|
166
|
+
thead, tbody, tfoot, tr { vertical-align: middle; }
|
|
167
|
+
td { display: table-cell; padding: 1px; vertical-align: inherit; }
|
|
136
168
|
th {
|
|
137
169
|
display: table-cell;
|
|
138
170
|
padding: 1px;
|
|
139
171
|
font-weight: bold;
|
|
140
172
|
text-align: center;
|
|
141
|
-
vertical-align:
|
|
173
|
+
vertical-align: inherit;
|
|
142
174
|
}
|
|
143
175
|
colgroup { display: table-column-group; }
|
|
144
176
|
col { display: table-column; }
|
|
@@ -159,13 +191,30 @@ input, button, select, textarea, meter, progress {
|
|
|
159
191
|
input[type=checkbox] { margin: 3px 4px 3px 4px; }
|
|
160
192
|
input[type=radio] { margin: 3px 4px 3px 5px; }
|
|
161
193
|
input[type=hidden] { display: none; }
|
|
194
|
+
/* A <button> is drawn rather than mounted: its content is the document's —
|
|
195
|
+
an icon, a label in spans, a pill of the page's own design, which is what
|
|
196
|
+
most buttons on the web are — and the page restyles it as it restyles
|
|
197
|
+
anything. What the sheet gives one the page left alone is the palette's
|
|
198
|
+
control, the chrome a mounted widget around it has. */
|
|
199
|
+
button {
|
|
200
|
+
vertical-align: baseline;
|
|
201
|
+
padding: ${look.controlPadY}px 0.75em;
|
|
202
|
+
border: ${look.controlBorder}px solid ${look.borderColor};
|
|
203
|
+
border-radius: ${look.controlRadius}px;
|
|
204
|
+
background-color: ${look.surface};
|
|
205
|
+
color: ${look.color};
|
|
206
|
+
text-align: center;
|
|
207
|
+
cursor: pointer;
|
|
208
|
+
}
|
|
209
|
+
button[disabled] { color: ${look.mutedColor}; cursor: default; }
|
|
162
210
|
textarea { vertical-align: top; }
|
|
163
211
|
fieldset { margin: 0 2px; padding: 0.35em 0.75em 0.6em; border: 1px solid ${look.borderColor}; }
|
|
164
212
|
legend { display: block; padding: 0 2px; }
|
|
165
213
|
label { cursor: pointer; }
|
|
166
214
|
|
|
167
215
|
details { margin: 0.5em 0; }
|
|
168
|
-
summary { display:
|
|
216
|
+
summary { display: list-item; counter-increment: list-item 0; list-style: disclosure-closed inside; cursor: pointer; }
|
|
217
|
+
details[open] > summary:first-of-type { list-style-type: disclosure-open; }
|
|
169
218
|
|
|
170
219
|
/* 'hidden' is an attribute, not a style, and a document that uses it expects
|
|
171
220
|
it to win over the display above. */
|
package/src/html/css/values.ts
CHANGED
|
@@ -13,11 +13,15 @@
|
|
|
13
13
|
// layout can resolve them against a new containing block on its own.
|
|
14
14
|
//
|
|
15
15
|
// Colours are the other half of that decision, from the other side: they are
|
|
16
|
-
// kept as **strings**, never parsed
|
|
17
|
-
//
|
|
18
|
-
//
|
|
19
|
-
//
|
|
20
|
-
//
|
|
16
|
+
// kept as **strings**, never parsed into components, since the only
|
|
17
|
+
// questions this renderer asks about a colour are "is it `transparent`" and
|
|
18
|
+
// "is it `currentColor`", both string comparisons. A named or hex colour
|
|
19
|
+
// goes to the context as written. A functional one is read once, in
|
|
20
|
+
// `color.ts`, and written back in the form every context reads the same.
|
|
21
|
+
|
|
22
|
+
import type { ComputedStyle } from './style.js';
|
|
23
|
+
import { functionalColor } from './color.js';
|
|
24
|
+
import { LARGEST, parseMath, parseMathNumber } from './calc.js';
|
|
21
25
|
|
|
22
26
|
/** A length that layout may still have to resolve. */
|
|
23
27
|
export type Len = number | Pct | 'auto';
|
|
@@ -25,6 +29,12 @@ export type Len = number | Pct | 'auto';
|
|
|
25
29
|
/** A percentage of something layout knows and computed style does not. */
|
|
26
30
|
export interface Pct {
|
|
27
31
|
pct: number;
|
|
32
|
+
/** A length added to it: `calc(100% - 20px)`, or a background position
|
|
33
|
+
* written from its far edge, `right 10px`. */
|
|
34
|
+
px?: number;
|
|
35
|
+
/** In place of the two: `min()` or `max()` with a percentage among its
|
|
36
|
+
* arguments, which is a different sum at every base (`calc.ts`). */
|
|
37
|
+
of?: { max: boolean; args: Len[] };
|
|
28
38
|
}
|
|
29
39
|
|
|
30
40
|
export const AUTO = 'auto';
|
|
@@ -41,8 +51,16 @@ export function isPct(len: Len): len is Pct {
|
|
|
41
51
|
*/
|
|
42
52
|
export function resolve(len: Len, base: number, fallback = 0): number {
|
|
43
53
|
if (typeof len === 'number') return len;
|
|
44
|
-
if (len === AUTO) return fallback;
|
|
45
|
-
|
|
54
|
+
if (len === AUTO || !Number.isFinite(base)) return fallback;
|
|
55
|
+
const px = len.of ? compared(len.of, base) : ofBase(len, base);
|
|
56
|
+
return px > LARGEST ? LARGEST : px < -LARGEST ? -LARGEST : px;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/** A gap between flex items or grid tracks: a length, or a percentage of
|
|
60
|
+
* the content box's size along it — of nothing where that is not known,
|
|
61
|
+
* as a gap in an intrinsic size is (CSS Box Alignment 3, 8.3). */
|
|
62
|
+
export function gapOf(len: Len, base: number): number {
|
|
63
|
+
return Math.max(0, resolve(len, Number.isFinite(base) ? base : 0));
|
|
46
64
|
}
|
|
47
65
|
|
|
48
66
|
/** Resolve, but keep "indefinite" distinguishable from zero — what a height
|
|
@@ -50,8 +68,21 @@ export function resolve(len: Len, base: number, fallback = 0): number {
|
|
|
50
68
|
* "there is no height here". */
|
|
51
69
|
export function resolveOrNull(len: Len, base: number): number | null {
|
|
52
70
|
if (typeof len === 'number') return len;
|
|
53
|
-
if (len === AUTO) return null;
|
|
54
|
-
return
|
|
71
|
+
if (len === AUTO || !Number.isFinite(base)) return null;
|
|
72
|
+
return len.of ? compared(len.of, base) : ofBase(len, base);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
function ofBase(len: Pct, base: number): number {
|
|
76
|
+
return (len.pct / 100) * base + (len.px ?? 0);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
function compared(of: { max: boolean; args: Len[] }, base: number): number {
|
|
80
|
+
let out = of.max ? -Infinity : Infinity;
|
|
81
|
+
for (const arg of of.args) {
|
|
82
|
+
const v = resolve(arg, base);
|
|
83
|
+
out = of.max ? Math.max(out, v) : Math.min(out, v);
|
|
84
|
+
}
|
|
85
|
+
return out;
|
|
55
86
|
}
|
|
56
87
|
|
|
57
88
|
/**
|
|
@@ -76,10 +107,37 @@ export interface UnitContext {
|
|
|
76
107
|
vh: number;
|
|
77
108
|
/** Device pixels per CSS pixel — the display scale. */
|
|
78
109
|
scale: number;
|
|
110
|
+
/** The x-height of the font the lengths are in, asked only for a length
|
|
111
|
+
* in `ex`; half an em where it is missing. */
|
|
112
|
+
ex?: () => number;
|
|
113
|
+
/** The advance of that font's "0", asked only for a length in `ch`; half
|
|
114
|
+
* an em where it is missing. */
|
|
115
|
+
ch?: () => number;
|
|
116
|
+
/** A computed `font-family` list with the families the document loads
|
|
117
|
+
* itself, with `@font-face`, put as the text engine knows them — see
|
|
118
|
+
* `fonts.ts`. Absent, the list is the one the author wrote. */
|
|
119
|
+
families?: (list: string) => string;
|
|
120
|
+
/** The element's line height and the root's, for `lh` and `rlh`, asked
|
|
121
|
+
* only for a length in them; 1.2em where they are missing. */
|
|
122
|
+
lh?: () => number;
|
|
123
|
+
rlh?: () => number;
|
|
124
|
+
/** Every property at its initial value, which `initial` sets one to. */
|
|
125
|
+
initial?: ComputedStyle;
|
|
79
126
|
}
|
|
80
127
|
|
|
81
|
-
|
|
82
|
-
|
|
128
|
+
/** A CSS number (CSS Syntax 3 4.3.12): a sign, digits with at most one
|
|
129
|
+
* point and a digit after it, and an exponent — `1e1px` is ten pixels, and
|
|
130
|
+
* `1.px` is no length. */
|
|
131
|
+
const NUMBER_SRC = '[+-]?(?:\\d*\\.\\d+|\\d+)(?:e[+-]?\\d+)?';
|
|
132
|
+
|
|
133
|
+
const LENGTH_RE = new RegExp(
|
|
134
|
+
`^(${NUMBER_SRC})(px|em|rem|pt|pc|in|cm|mm|ex|ch|lh|rlh|vw|vh|vmin|vmax|q|%)?$`,
|
|
135
|
+
);
|
|
136
|
+
|
|
137
|
+
const NUMBER_RE = new RegExp(`^${NUMBER_SRC}$`, 'i');
|
|
138
|
+
|
|
139
|
+
/** A math function: `calc()`, `min()`, `max()` or `clamp()`. */
|
|
140
|
+
const MATH = /^(?:-webkit-)?calc\(|^(?:min|max|clamp)\(/i;
|
|
83
141
|
|
|
84
142
|
/**
|
|
85
143
|
* Parse a length. Returns `null` for anything that is not one, which is how
|
|
@@ -99,12 +157,24 @@ export function parseLength(
|
|
|
99
157
|
if (v === 'auto') return AUTO;
|
|
100
158
|
if (v === '0') return 0;
|
|
101
159
|
const m = LENGTH_RE.exec(v);
|
|
102
|
-
if (!m)
|
|
160
|
+
if (!m) {
|
|
161
|
+
// `calc()` and its kin, down to pixels and a percentage (CSS Values 4 10)
|
|
162
|
+
if (!MATH.test(v)) return null;
|
|
163
|
+
return parseMath(v, (token) => {
|
|
164
|
+
const len = parseLength(token, ctx);
|
|
165
|
+
return typeof len === 'number' ? len : null;
|
|
166
|
+
});
|
|
167
|
+
}
|
|
103
168
|
const n = Number(m[1]);
|
|
104
169
|
const unit = m[2];
|
|
105
|
-
|
|
170
|
+
// a zero needs no unit however it is written — `-0`, `+0`, `0.0`
|
|
171
|
+
if (!unit) return n === 0 ? 0 : bareIsPx ? n * ctx.scale : null;
|
|
106
172
|
if (unit === '%') return { pct: n };
|
|
107
|
-
|
|
173
|
+
// Kept to what a browser holds: a `1e308px` height or margin, which a
|
|
174
|
+
// hostile or broken page writes, added up past what a number holds, and
|
|
175
|
+
// the document's height came to infinity
|
|
176
|
+
const px = n * unitScale(unit, ctx);
|
|
177
|
+
return px > LARGEST ? LARGEST : px < -LARGEST ? -LARGEST : px;
|
|
108
178
|
}
|
|
109
179
|
|
|
110
180
|
/** Device pixels per one of `unit`. The absolute units are CSS pixels and
|
|
@@ -130,13 +200,23 @@ function unitScale(unit: string, ctx: UnitContext): number {
|
|
|
130
200
|
return (96 / 25.4) * ctx.scale;
|
|
131
201
|
case 'q':
|
|
132
202
|
return (96 / 101.6) * ctx.scale;
|
|
133
|
-
//
|
|
134
|
-
// for
|
|
135
|
-
//
|
|
203
|
+
// The font's own x-height where the cascade was handed a way to ask
|
|
204
|
+
// for it, and half an em where it was not, which is within a few
|
|
205
|
+
// percent for most text faces — and for Ahem, whose x-height is 0.8em,
|
|
206
|
+
// is not.
|
|
136
207
|
case 'ex':
|
|
137
|
-
return ctx.em * 0.5;
|
|
208
|
+
return ctx.ex ? ctx.ex() : ctx.em * 0.5;
|
|
209
|
+
// the advance of the font's "0" (CSS Values 4, 6.1.1), where the
|
|
210
|
+
// cascade can ask for it: half an em is Times's, a little under
|
|
211
|
+
// Arial's, and half of Ahem's and a monospace font's
|
|
138
212
|
case 'ch':
|
|
139
|
-
return ctx.em * 0.5;
|
|
213
|
+
return ctx.ch ? ctx.ch() : ctx.em * 0.5;
|
|
214
|
+
// the computed `line-height`, `normal` as the font's own (CSS Values
|
|
215
|
+
// 4, 6.1.1)
|
|
216
|
+
case 'lh':
|
|
217
|
+
return ctx.lh ? ctx.lh() : ctx.em * 1.2;
|
|
218
|
+
case 'rlh':
|
|
219
|
+
return ctx.rlh ? ctx.rlh() : ctx.rem * 1.2;
|
|
140
220
|
case 'vw':
|
|
141
221
|
return ctx.vw / 100;
|
|
142
222
|
case 'vh':
|
|
@@ -152,19 +232,20 @@ function unitScale(unit: string, ctx: UnitContext): number {
|
|
|
152
232
|
|
|
153
233
|
/** A plain number — `flex-grow`, `opacity`, `z-index`, `line-height`. */
|
|
154
234
|
export function parseNumber(value: string): number | null {
|
|
155
|
-
|
|
235
|
+
// `Number()` alone reads `0x10`, `1.` and white space as numbers
|
|
236
|
+
const v = value.trim();
|
|
237
|
+
if (!NUMBER_RE.test(v)) return MATH.test(v) ? parseMathNumber(v) : null;
|
|
238
|
+
const n = Number(v);
|
|
156
239
|
return Number.isFinite(n) ? n : null;
|
|
157
240
|
}
|
|
158
241
|
|
|
159
242
|
/** `opacity: 50%` is as legal as `opacity: .5`. */
|
|
160
243
|
export function parseAlpha(value: string): number | null {
|
|
161
244
|
const v = value.trim();
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
const n = Number(v);
|
|
167
|
-
return Number.isFinite(n) ? Math.max(0, Math.min(1, n)) : null;
|
|
245
|
+
const pct = v.endsWith('%');
|
|
246
|
+
const n = parseNumber(pct ? v.slice(0, -1) : v);
|
|
247
|
+
if (n === null) return null;
|
|
248
|
+
return Math.max(0, Math.min(1, pct ? n / 100 : n));
|
|
168
249
|
}
|
|
169
250
|
|
|
170
251
|
/**
|
|
@@ -231,33 +312,21 @@ export function fourSides<T>(parts: T[]): [T, T, T, T] {
|
|
|
231
312
|
return [a, b, c, d];
|
|
232
313
|
}
|
|
233
314
|
|
|
234
|
-
/** `url(x)`, `url("x")`, or a bare token. `null` for `none`. */
|
|
235
|
-
export function parseUrl(value: string): string | null {
|
|
236
|
-
const v = value.trim();
|
|
237
|
-
if (!v || v.toLowerCase() === 'none') return null;
|
|
238
|
-
const m = /^url\(\s*(.*?)\s*\)$/i.exec(v);
|
|
239
|
-
const inner = m ? m[1] : v;
|
|
240
|
-
return unquote(inner) || null;
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
export function unquote(value: string): string {
|
|
244
|
-
const v = value.trim();
|
|
245
|
-
if (
|
|
246
|
-
v.length >= 2 &&
|
|
247
|
-
(v[0] === '"' || v[0] === "'") &&
|
|
248
|
-
v[v.length - 1] === v[0]
|
|
249
|
-
) {
|
|
250
|
-
return v.slice(1, -1);
|
|
251
|
-
}
|
|
252
|
-
return v;
|
|
253
|
-
}
|
|
254
|
-
|
|
255
315
|
/** A colour as it is about to be used: `currentColor` resolved against the
|
|
256
316
|
* element's own ink, everything else passed through. */
|
|
257
317
|
export function inkColor(color: string, current: string): string {
|
|
258
|
-
|
|
318
|
+
if (color === 'currentColor') return current;
|
|
319
|
+
// a `color-mix()` with `currentColor` in it waits for the colour too;
|
|
320
|
+
// every other functional colour was read when it was parsed
|
|
321
|
+
if (color.charCodeAt(0) === 99 && color.startsWith('color-mix(')) {
|
|
322
|
+
return functionalColor(color.replace(CURRENT, current)) ?? current;
|
|
323
|
+
}
|
|
324
|
+
return color;
|
|
259
325
|
}
|
|
260
326
|
|
|
327
|
+
const CURRENT = /currentcolor/gi;
|
|
328
|
+
const HAS_CURRENT = /currentcolor/i;
|
|
329
|
+
|
|
261
330
|
/** Whether a colour paints anything at all. Two string tests rather than a
|
|
262
331
|
* parse, for the reason at the top of the file. */
|
|
263
332
|
export function isTransparent(color: string | null | undefined): boolean {
|
|
@@ -269,6 +338,24 @@ export function isTransparent(color: string | null | undefined): boolean {
|
|
|
269
338
|
return /^(?:rgba|hsla)\([^)]*[,/]\s*0*(?:\.0+)?\s*\)$/.test(c);
|
|
270
339
|
}
|
|
271
340
|
|
|
341
|
+
/**
|
|
342
|
+
* A colour's opacity, 0 to 1, as `parseColor` leaves it: a hex colour's
|
|
343
|
+
* fourth or eighth digits, an `rgba()`'s last number, and nothing for
|
|
344
|
+
* `transparent`; every other colour, `currentColor` among them, is taken
|
|
345
|
+
* for opaque.
|
|
346
|
+
*/
|
|
347
|
+
export function alphaOf(color: string): number {
|
|
348
|
+
if (color === 'transparent') return 0;
|
|
349
|
+
if (color.charCodeAt(0) === 35) {
|
|
350
|
+
// `#rgba` and `#rrggbbaa`
|
|
351
|
+
if (color.length === 5) return parseInt(color[4], 16) / 15;
|
|
352
|
+
if (color.length === 9) return parseInt(color.slice(7), 16) / 255;
|
|
353
|
+
return 1;
|
|
354
|
+
}
|
|
355
|
+
const m = /^rgba\([^)]*,\s*([\d.]+)\s*\)$/.exec(color);
|
|
356
|
+
return m ? Number(m[1]) : 1;
|
|
357
|
+
}
|
|
358
|
+
|
|
272
359
|
/**
|
|
273
360
|
* A colour token. `null` means the value was not a colour, which is what a
|
|
274
361
|
* shorthand parser branches on.
|
|
@@ -287,11 +374,24 @@ export function parseColor(value: string): string | null {
|
|
|
287
374
|
if (lower === 'transparent') return 'transparent';
|
|
288
375
|
if (lower === 'inherit' || lower === 'initial' || lower === 'unset')
|
|
289
376
|
return null;
|
|
290
|
-
|
|
291
|
-
|
|
377
|
+
// three, four, six or eight digits: ntk's context throws from paint on
|
|
378
|
+
// five or seven, and a typo'd `#ff000` took the application down
|
|
379
|
+
if (v.startsWith('#')) return HEX_COLOR.test(v) ? v : null;
|
|
380
|
+
if (/^(?:rgba?|hsla?|hwb|lab|lch|oklab|oklch|color|color-mix)\(/i.test(v)) {
|
|
381
|
+
// a mix with `currentColor` in it is kept to be mixed where it is used
|
|
382
|
+
// (`inkColor`), once it is known to be one
|
|
383
|
+
if (HAS_CURRENT.test(v) && /^color-mix\(/i.test(v)) {
|
|
384
|
+
return functionalColor(v.replace(CURRENT, '#000')) === null
|
|
385
|
+
? null
|
|
386
|
+
: `color-mix(${v.slice(v.indexOf('(') + 1)}`;
|
|
387
|
+
}
|
|
388
|
+
return functionalColor(v);
|
|
389
|
+
}
|
|
292
390
|
return NAMED_COLORS.has(lower) ? lower : null;
|
|
293
391
|
}
|
|
294
392
|
|
|
393
|
+
const HEX_COLOR = /^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i;
|
|
394
|
+
|
|
295
395
|
/**
|
|
296
396
|
* The CSS named colours. The list is here rather than reached through ntk's
|
|
297
397
|
* `parse-color` because the only question asked of it is "is this token a
|