@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
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
// Markdown → AST, written for this
|
|
2
|
-
// DOM-shaped pipeline
|
|
1
|
+
// Markdown → AST, written for this package rather than adapted from a
|
|
2
|
+
// DOM-shaped pipeline — shared, from `src/internal/`, because two components
|
|
3
|
+
// read it: `<Markdown>` renders what it produces and `<RichTextEditor>` edits
|
|
4
|
+
// it, writing it back out through `./stringify.ts`. GFM-flavoured
|
|
5
|
+
// CommonMark: headings (ATX and setext),
|
|
3
6
|
// paragraphs, fenced and indented code, blockquotes with lazy continuation,
|
|
4
7
|
// nested ordered/bullet/task lists with the tight/loose distinction, tables,
|
|
5
8
|
// thematic breaks; inline emphasis with the real flanking and rule-of-three
|
|
@@ -178,31 +181,168 @@ function indentOf(line: string): number {
|
|
|
178
181
|
|
|
179
182
|
export function parse(source: string, options: ParseOptions = {}): Document {
|
|
180
183
|
const partial = options.partial !== false;
|
|
184
|
+
const isComponent = options.isComponent ?? NO_COMPONENTS;
|
|
185
|
+
const expressions = options.expressions === true;
|
|
181
186
|
const normalized = source.replace(/\r\n?/g, '\n');
|
|
182
187
|
const lines = normalized.split('\n').map(expandLeadingTabs);
|
|
188
|
+
const previous = options.previous;
|
|
189
|
+
const was = previous ? resumable.get(previous) : undefined;
|
|
190
|
+
// Not with components: an open tag looks for its close to the end of the
|
|
191
|
+
// document (`componentCloseLine`), so a close added anywhere below can
|
|
192
|
+
// change what it is, and the block before an edit is no longer settled.
|
|
193
|
+
if (
|
|
194
|
+
previous &&
|
|
195
|
+
was &&
|
|
196
|
+
was.partial === partial &&
|
|
197
|
+
was.expressions === expressions &&
|
|
198
|
+
isComponent === NO_COMPONENTS &&
|
|
199
|
+
was.isComponent === NO_COMPONENTS
|
|
200
|
+
) {
|
|
201
|
+
return resume(previous, was, lines);
|
|
202
|
+
}
|
|
183
203
|
const blocks: BlockNode[] = [];
|
|
184
204
|
const ranges: Array<[number, number]> = [];
|
|
185
|
-
|
|
205
|
+
const blanks = new Uint8Array(lines.length);
|
|
206
|
+
parseBlocks(lines, partial, blocks, ranges, isComponent, expressions, {
|
|
207
|
+
from: 0,
|
|
208
|
+
blanks,
|
|
209
|
+
});
|
|
210
|
+
return remember(
|
|
211
|
+
{ blocks, raws: ranges.map(([a, b]) => lines.slice(a, b).join('\n')) },
|
|
212
|
+
{ lines, ranges, blanks, partial, isComponent, expressions },
|
|
213
|
+
);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
// --- resuming --------------------------------------------------------------
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* What a parse leaves for the next parse of the same document to start from
|
|
220
|
+
* (`ParseOptions.previous`).
|
|
221
|
+
*
|
|
222
|
+
* The block loop carries one thing from a block to the next, the paragraph
|
|
223
|
+
* it is gathering, and it looks only forwards: a block's extent is decided
|
|
224
|
+
* by the lines up to the first line of the block after it. So `blanks`
|
|
225
|
+
* marks the lines where the loop stood on a blank line at the top level with
|
|
226
|
+
* no paragraph open. Two parses standing on such a line, with the same lines
|
|
227
|
+
* from there to the end, produce the same blocks from there on. That is the
|
|
228
|
+
* point where an edit's re-parse can stop and take the rest from before.
|
|
229
|
+
*/
|
|
230
|
+
interface Resumable {
|
|
231
|
+
lines: string[];
|
|
232
|
+
/** each top-level block's [start, endExcl) line range */
|
|
233
|
+
ranges: Array<[number, number]>;
|
|
234
|
+
/** 1 on each line where the top-level loop stood blank with no paragraph */
|
|
235
|
+
blanks: Uint8Array;
|
|
236
|
+
partial: boolean;
|
|
237
|
+
isComponent: (name: string) => boolean;
|
|
238
|
+
expressions: boolean;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
/** Kept beside the documents rather than in them, so a Document stays the
|
|
242
|
+
* plain data every caller and test compares. */
|
|
243
|
+
const resumable = new WeakMap<Document, Resumable>();
|
|
244
|
+
|
|
245
|
+
function remember(doc: Document, state: Resumable): Document {
|
|
246
|
+
resumable.set(doc, state);
|
|
247
|
+
return doc;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
/**
|
|
251
|
+
* Parse `lines` as an edit of `previous`: from one block before the first
|
|
252
|
+
* line that changed, until the loop stands where the previous parse stood
|
|
253
|
+
* in the lines the edit left alone — or to the end, when it never does (an
|
|
254
|
+
* unclosed fence swallows the rest of a document either way).
|
|
255
|
+
*/
|
|
256
|
+
function resume(previous: Document, was: Resumable, lines: string[]): Document {
|
|
257
|
+
const old = was.lines;
|
|
258
|
+
const oldN = old.length;
|
|
259
|
+
const n = lines.length;
|
|
260
|
+
const shortest = Math.min(oldN, n);
|
|
261
|
+
let first = 0;
|
|
262
|
+
while (first < shortest && old[first] === lines[first]) first += 1;
|
|
263
|
+
if (first === oldN && first === n) return previous;
|
|
264
|
+
// lines at the end the edit did not touch, never counting the prefix twice
|
|
265
|
+
let same = 0;
|
|
266
|
+
while (
|
|
267
|
+
same < shortest - first &&
|
|
268
|
+
old[oldN - 1 - same] === lines[n - 1 - same]
|
|
269
|
+
) {
|
|
270
|
+
same += 1;
|
|
271
|
+
}
|
|
272
|
+
const shift = n - oldN;
|
|
273
|
+
const suffix = n - same;
|
|
274
|
+
|
|
275
|
+
// The first block that reaches the change, and the one before it: a
|
|
276
|
+
// block's extent is decided by the lines up to the next block's first —
|
|
277
|
+
// a list looks past blank lines to see whether it goes on — so the block
|
|
278
|
+
// before the first one touched cannot have depended on the change.
|
|
279
|
+
const { ranges } = was;
|
|
280
|
+
let lo = 0;
|
|
281
|
+
let hi = ranges.length;
|
|
282
|
+
while (lo < hi) {
|
|
283
|
+
const mid = (lo + hi) >> 1;
|
|
284
|
+
if (ranges[mid][1] <= first) lo = mid + 1;
|
|
285
|
+
else hi = mid;
|
|
286
|
+
}
|
|
287
|
+
const kept = Math.max(0, lo - 1);
|
|
288
|
+
const from = kept === 0 ? 0 : ranges[kept][0];
|
|
289
|
+
|
|
290
|
+
const blanks = new Uint8Array(n);
|
|
291
|
+
blanks.set(was.blanks.subarray(0, from));
|
|
292
|
+
const blocks: BlockNode[] = previous.blocks.slice(0, kept);
|
|
293
|
+
const raws = previous.raws.slice(0, kept);
|
|
294
|
+
const next: Array<[number, number]> = ranges.slice(0, kept);
|
|
295
|
+
const fresh: Array<[number, number]> = [];
|
|
296
|
+
const stop = parseBlocks(
|
|
186
297
|
lines,
|
|
187
|
-
partial,
|
|
298
|
+
was.partial,
|
|
188
299
|
blocks,
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
300
|
+
fresh,
|
|
301
|
+
was.isComponent,
|
|
302
|
+
was.expressions,
|
|
303
|
+
{
|
|
304
|
+
from,
|
|
305
|
+
blanks,
|
|
306
|
+
resync: (i) => i >= suffix && was.blanks[i - shift] === 1,
|
|
307
|
+
},
|
|
192
308
|
);
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
}
|
|
309
|
+
for (const [a, b] of fresh) {
|
|
310
|
+
raws.push(lines.slice(a, b).join('\n'));
|
|
311
|
+
next.push([a, b]);
|
|
312
|
+
}
|
|
313
|
+
if (stop < n) {
|
|
314
|
+
// the previous parse from the same place over the same lines: its
|
|
315
|
+
// blocks, where they now are
|
|
316
|
+
const at = stop - shift;
|
|
317
|
+
blanks.set(was.blanks.subarray(at), stop);
|
|
318
|
+
let j = ranges.length;
|
|
319
|
+
while (j > 0 && ranges[j - 1][0] >= at) j -= 1;
|
|
320
|
+
for (; j < ranges.length; j += 1) {
|
|
321
|
+
blocks.push(previous.blocks[j]);
|
|
322
|
+
raws.push(previous.raws[j]);
|
|
323
|
+
next.push([ranges[j][0] + shift, ranges[j][1] + shift]);
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
return remember({ blocks, raws }, { ...was, lines, ranges: next, blanks });
|
|
197
327
|
}
|
|
198
328
|
|
|
199
329
|
// --- block layer -----------------------------------------------------------
|
|
200
330
|
|
|
331
|
+
/** The top-level call's extra: where to start, where to record the blank
|
|
332
|
+
* lines it stands on, and when to stop (`resume`). */
|
|
333
|
+
interface TopLevel {
|
|
334
|
+
from: number;
|
|
335
|
+
blanks: Uint8Array;
|
|
336
|
+
resync?: (line: number) => boolean;
|
|
337
|
+
}
|
|
338
|
+
|
|
201
339
|
/**
|
|
202
340
|
* Parse a run of lines into blocks. `tailOpen` says the end of `lines` is
|
|
203
341
|
* the live end of a streaming document — the license for every "complete it
|
|
204
342
|
* anyway" rule. `ranges`, when given, receives each block's [start, endExcl)
|
|
205
343
|
* line range (only the top-level call wants them, for the streaming cache).
|
|
344
|
+
* Returns the line it stopped at: the end, or where `top.resync` said the
|
|
345
|
+
* rest would come out as it did before.
|
|
206
346
|
*/
|
|
207
347
|
function parseBlocks(
|
|
208
348
|
lines: string[],
|
|
@@ -211,8 +351,9 @@ function parseBlocks(
|
|
|
211
351
|
ranges?: Array<[number, number]>,
|
|
212
352
|
isComponent: (name: string) => boolean = NO_COMPONENTS,
|
|
213
353
|
expressions = false,
|
|
214
|
-
|
|
215
|
-
|
|
354
|
+
top?: TopLevel,
|
|
355
|
+
): number {
|
|
356
|
+
let i = top?.from ?? 0;
|
|
216
357
|
const n = lines.length;
|
|
217
358
|
|
|
218
359
|
let paraStart = -1;
|
|
@@ -242,6 +383,10 @@ function parseBlocks(
|
|
|
242
383
|
|
|
243
384
|
if (RE_BLANK.test(line)) {
|
|
244
385
|
flushPara(i);
|
|
386
|
+
if (top) {
|
|
387
|
+
if (top.resync?.(i)) return i;
|
|
388
|
+
top.blanks[i] = 1;
|
|
389
|
+
}
|
|
245
390
|
i += 1;
|
|
246
391
|
continue;
|
|
247
392
|
}
|
|
@@ -317,7 +462,8 @@ function parseBlocks(
|
|
|
317
462
|
const start = i;
|
|
318
463
|
const fenceIndent = fence[1].length;
|
|
319
464
|
const marker = fence[2];
|
|
320
|
-
const
|
|
465
|
+
const info = fence[3].trim();
|
|
466
|
+
const lang = (info.split(/[ \t]/, 1)[0] ?? '').toLowerCase();
|
|
321
467
|
const body: string[] = [];
|
|
322
468
|
let closed = false;
|
|
323
469
|
i += 1;
|
|
@@ -342,7 +488,19 @@ function parseBlocks(
|
|
|
342
488
|
);
|
|
343
489
|
i += 1;
|
|
344
490
|
}
|
|
345
|
-
commit(
|
|
491
|
+
commit(
|
|
492
|
+
{
|
|
493
|
+
type: 'code',
|
|
494
|
+
lang,
|
|
495
|
+
// only when it says more than the language does, so a plain
|
|
496
|
+
// ```js fence parses to the AST it always did
|
|
497
|
+
...(info !== lang ? { info } : null),
|
|
498
|
+
text: body.join('\n'),
|
|
499
|
+
closed,
|
|
500
|
+
},
|
|
501
|
+
start,
|
|
502
|
+
i,
|
|
503
|
+
);
|
|
346
504
|
continue;
|
|
347
505
|
}
|
|
348
506
|
|
|
@@ -555,6 +713,7 @@ function parseBlocks(
|
|
|
555
713
|
}
|
|
556
714
|
|
|
557
715
|
flushPara(n);
|
|
716
|
+
return n;
|
|
558
717
|
}
|
|
559
718
|
|
|
560
719
|
// --- lists -----------------------------------------------------------------
|
|
@@ -607,11 +766,27 @@ function parseList(
|
|
|
607
766
|
const contentIndent = indent + m[2].length + pad;
|
|
608
767
|
|
|
609
768
|
const inner: string[] = [rest];
|
|
769
|
+
// The fence open in the item's own content, if one is. A blank line
|
|
770
|
+
// inside a fence is the code's rather than the list's: it neither ends
|
|
771
|
+
// the item nor makes the list loose — and a snippet with an empty line
|
|
772
|
+
// in it, under a numbered step, is the ordinary case.
|
|
773
|
+
// (a task item's box comes off first: `- [ ] ```js` opens a fence too)
|
|
774
|
+
let fence = fenceAfter(null, rest.replace(RE_TASK, ''));
|
|
610
775
|
i += 1;
|
|
611
776
|
let pendingBlanks = 0;
|
|
612
777
|
while (i < n) {
|
|
613
778
|
const l = lines[i];
|
|
614
779
|
if (RE_BLANK.test(l)) {
|
|
780
|
+
if (fence !== null && pendingBlanks === 0) {
|
|
781
|
+
// …as long as the item goes on after it: an unclosed fence must
|
|
782
|
+
// not swallow the paragraph the list is followed by
|
|
783
|
+
let k = i + 1;
|
|
784
|
+
while (k < n && RE_BLANK.test(lines[k])) k += 1;
|
|
785
|
+
if (k < n && indentOf(lines[k]) >= contentIndent) {
|
|
786
|
+
for (; i < k; i += 1) inner.push('');
|
|
787
|
+
continue;
|
|
788
|
+
}
|
|
789
|
+
}
|
|
615
790
|
pendingBlanks += 1;
|
|
616
791
|
if (pendingBlanks > 1) break;
|
|
617
792
|
i += 1;
|
|
@@ -623,7 +798,9 @@ function parseList(
|
|
|
623
798
|
loose = true;
|
|
624
799
|
pendingBlanks = 0;
|
|
625
800
|
}
|
|
626
|
-
|
|
801
|
+
const content = l.slice(contentIndent);
|
|
802
|
+
inner.push(content);
|
|
803
|
+
fence = fenceAfter(fence, content);
|
|
627
804
|
i += 1;
|
|
628
805
|
continue;
|
|
629
806
|
}
|
|
@@ -666,6 +843,23 @@ function parseList(
|
|
|
666
843
|
};
|
|
667
844
|
}
|
|
668
845
|
|
|
846
|
+
/**
|
|
847
|
+
* The fence still open after `line`, given the one open before it — the
|
|
848
|
+
* opening run (```` ``` ````, `~~~~`) or null. Indentation is ignored, so a
|
|
849
|
+
* fence in a list nested inside this item is seen too.
|
|
850
|
+
*/
|
|
851
|
+
function fenceAfter(open: string | null, line: string): string | null {
|
|
852
|
+
const m = RE_FENCE_OPEN.exec(line.trimStart());
|
|
853
|
+
if (open === null) {
|
|
854
|
+
if (!m || (m[2][0] === '`' && m[3].includes('`'))) return null;
|
|
855
|
+
return m[2];
|
|
856
|
+
}
|
|
857
|
+
if (m && m[2][0] === open[0] && m[2].length >= open.length && m[3] === '') {
|
|
858
|
+
return null;
|
|
859
|
+
}
|
|
860
|
+
return open;
|
|
861
|
+
}
|
|
862
|
+
|
|
669
863
|
// --- tables ----------------------------------------------------------------
|
|
670
864
|
|
|
671
865
|
/** Split a row on unescaped pipes; `\|` stays literal in the cell. */
|
|
@@ -763,19 +957,45 @@ const NAMED_ENTITIES: Record<string, string> = {
|
|
|
763
957
|
middot: '·',
|
|
764
958
|
};
|
|
765
959
|
|
|
960
|
+
/** The same pattern, anchored — for reading one reference at a position. */
|
|
961
|
+
const RE_ENTITY_AT = new RegExp(RE_ENTITY.source, 'y');
|
|
962
|
+
|
|
963
|
+
function entityText(
|
|
964
|
+
whole: string,
|
|
965
|
+
dec?: string,
|
|
966
|
+
hex?: string,
|
|
967
|
+
named?: string,
|
|
968
|
+
): string {
|
|
969
|
+
if (dec) {
|
|
970
|
+
const cp = parseInt(dec, 10);
|
|
971
|
+
return cp > 0 && cp <= 0x10ffff ? String.fromCodePoint(cp) : '�';
|
|
972
|
+
}
|
|
973
|
+
if (hex) {
|
|
974
|
+
const cp = parseInt(hex, 16);
|
|
975
|
+
return cp > 0 && cp <= 0x10ffff ? String.fromCodePoint(cp) : '�';
|
|
976
|
+
}
|
|
977
|
+
return (named && NAMED_ENTITIES[named]) ?? whole;
|
|
978
|
+
}
|
|
979
|
+
|
|
766
980
|
function decodeEntities(text: string): string {
|
|
767
981
|
if (!text.includes('&')) return text;
|
|
768
|
-
return text.replace(RE_ENTITY,
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
982
|
+
return text.replace(RE_ENTITY, entityText);
|
|
983
|
+
}
|
|
984
|
+
|
|
985
|
+
/** The whole character ending at `i`, surrogate pair and all — an emoji is
|
|
986
|
+
* a symbol, and half of one is not. */
|
|
987
|
+
function charBefore(text: string, i: number): string | undefined {
|
|
988
|
+
if (i <= 0) return undefined;
|
|
989
|
+
const unit = text.charCodeAt(i - 1);
|
|
990
|
+
return unit >= 0xdc00 && unit <= 0xdfff && i >= 2
|
|
991
|
+
? text.slice(i - 2, i)
|
|
992
|
+
: text[i - 1];
|
|
993
|
+
}
|
|
994
|
+
|
|
995
|
+
/** The whole character starting at `i`. */
|
|
996
|
+
function charAt(text: string, i: number): string | undefined {
|
|
997
|
+
const cp = text.codePointAt(i);
|
|
998
|
+
return cp === undefined ? undefined : String.fromCodePoint(cp);
|
|
779
999
|
}
|
|
780
1000
|
|
|
781
1001
|
function classify(ch: string | undefined): 'ws' | 'punct' | 'other' {
|
|
@@ -797,11 +1017,14 @@ export function parseInline(
|
|
|
797
1017
|
const items: Item[] = [];
|
|
798
1018
|
let buf = '';
|
|
799
1019
|
|
|
1020
|
+
// References are decoded where they are read (below), not on the flushed
|
|
1021
|
+
// buffer: `\&` is an escaped ampersand followed by `amp;`, and
|
|
1022
|
+
// decoding afterwards turned it back into `&`.
|
|
800
1023
|
const flushText = (): void => {
|
|
801
1024
|
if (buf.length === 0) return;
|
|
802
1025
|
items.push({
|
|
803
1026
|
kind: 'node',
|
|
804
|
-
node: { type: 'text', text:
|
|
1027
|
+
node: { type: 'text', text: buf },
|
|
805
1028
|
});
|
|
806
1029
|
buf = '';
|
|
807
1030
|
};
|
|
@@ -957,7 +1180,7 @@ export function parseInline(
|
|
|
957
1180
|
const suffix = parseLinkSuffix(text, i + 1);
|
|
958
1181
|
if (suffix) {
|
|
959
1182
|
flushText();
|
|
960
|
-
closeLink(items, openIdx, suffix.href);
|
|
1183
|
+
closeLink(items, openIdx, suffix.href, suffix.title);
|
|
961
1184
|
i = suffix.end;
|
|
962
1185
|
continue;
|
|
963
1186
|
}
|
|
@@ -988,8 +1211,8 @@ export function parseInline(
|
|
|
988
1211
|
if (ch === '*' || ch === '_' || ch === '~') {
|
|
989
1212
|
let run = 1;
|
|
990
1213
|
while (text[i + run] === ch) run += 1;
|
|
991
|
-
const before = classify(text
|
|
992
|
-
const after = classify(text
|
|
1214
|
+
const before = classify(charBefore(text, i));
|
|
1215
|
+
const after = classify(charAt(text, i + run));
|
|
993
1216
|
const leftFlank =
|
|
994
1217
|
after !== 'ws' && (after !== 'punct' || before !== 'other');
|
|
995
1218
|
const rightFlank =
|
|
@@ -1023,6 +1246,16 @@ export function parseInline(
|
|
|
1023
1246
|
continue;
|
|
1024
1247
|
}
|
|
1025
1248
|
|
|
1249
|
+
if (ch === '&') {
|
|
1250
|
+
RE_ENTITY_AT.lastIndex = i;
|
|
1251
|
+
const ref = RE_ENTITY_AT.exec(text);
|
|
1252
|
+
if (ref) {
|
|
1253
|
+
buf += entityText(ref[0], ref[1], ref[2], ref[3]);
|
|
1254
|
+
i += ref[0].length;
|
|
1255
|
+
continue;
|
|
1256
|
+
}
|
|
1257
|
+
}
|
|
1258
|
+
|
|
1026
1259
|
buf += ch;
|
|
1027
1260
|
i += 1;
|
|
1028
1261
|
}
|
|
@@ -1072,10 +1305,12 @@ function lastBracket(items: Item[]): number {
|
|
|
1072
1305
|
interface LinkSuffix {
|
|
1073
1306
|
href: string;
|
|
1074
1307
|
end: number;
|
|
1308
|
+
title?: string;
|
|
1075
1309
|
}
|
|
1076
1310
|
|
|
1077
1311
|
/** `](dest "title")` — destination in `<>` or bare with balanced parens.
|
|
1078
|
-
* The title is
|
|
1312
|
+
* The title is kept on the node — nothing renders one, but the editor
|
|
1313
|
+
* writes it back out. */
|
|
1079
1314
|
function parseLinkSuffix(text: string, from: number): LinkSuffix | null {
|
|
1080
1315
|
if (text[from] !== '(') return null;
|
|
1081
1316
|
let i = from + 1;
|
|
@@ -1110,22 +1345,33 @@ function parseLinkSuffix(text: string, from: number): LinkSuffix | null {
|
|
|
1110
1345
|
while (i < len && (text[i] === ' ' || text[i] === '\n' || text[i] === '\t'))
|
|
1111
1346
|
i += 1;
|
|
1112
1347
|
// an optional title in any of the three quote styles
|
|
1348
|
+
let title: string | undefined;
|
|
1113
1349
|
const q = text[i];
|
|
1114
1350
|
if (q === '"' || q === "'" || q === '(') {
|
|
1115
1351
|
const closer = q === '(' ? ')' : q;
|
|
1116
1352
|
let j = i + 1;
|
|
1117
1353
|
while (j < len && text[j] !== closer) j += 1;
|
|
1118
1354
|
if (j >= len) return null;
|
|
1355
|
+
title = decodeEntities(text.slice(i + 1, j));
|
|
1119
1356
|
i = j + 1;
|
|
1120
1357
|
while (i < len && (text[i] === ' ' || text[i] === '\n' || text[i] === '\t'))
|
|
1121
1358
|
i += 1;
|
|
1122
1359
|
}
|
|
1123
1360
|
if (text[i] !== ')') return null;
|
|
1124
|
-
return {
|
|
1361
|
+
return {
|
|
1362
|
+
href: decodeEntities(href),
|
|
1363
|
+
end: i + 1,
|
|
1364
|
+
...(title !== undefined ? { title } : null),
|
|
1365
|
+
};
|
|
1125
1366
|
}
|
|
1126
1367
|
|
|
1127
1368
|
/** Fold everything after the bracket opener at `openIdx` into a link node. */
|
|
1128
|
-
function closeLink(
|
|
1369
|
+
function closeLink(
|
|
1370
|
+
items: Item[],
|
|
1371
|
+
openIdx: number,
|
|
1372
|
+
href: string | null,
|
|
1373
|
+
title?: string,
|
|
1374
|
+
): void {
|
|
1129
1375
|
const bracket = items[openIdx] as { kind: 'bracket'; image: boolean };
|
|
1130
1376
|
const inner = items.splice(openIdx);
|
|
1131
1377
|
inner.shift();
|
|
@@ -1133,7 +1379,14 @@ function closeLink(items: Item[], openIdx: number, href: string | null): void {
|
|
|
1133
1379
|
processEmphasis(inner, href === null);
|
|
1134
1380
|
items.push({
|
|
1135
1381
|
kind: 'node',
|
|
1136
|
-
node: {
|
|
1382
|
+
node: {
|
|
1383
|
+
type: 'link',
|
|
1384
|
+
href,
|
|
1385
|
+
image: bracket.image,
|
|
1386
|
+
children: finish(inner),
|
|
1387
|
+
// only when written, so a link without one keeps its old shape
|
|
1388
|
+
...(title !== undefined ? { title } : null),
|
|
1389
|
+
},
|
|
1137
1390
|
});
|
|
1138
1391
|
}
|
|
1139
1392
|
|