@react-x11/components 0.8.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +105 -38
- package/dist/charts/node.d.ts +12 -2
- package/dist/charts/node.d.ts.map +1 -1
- package/dist/charts/node.js +50 -16
- package/dist/charts/node.js.map +1 -1
- package/dist/charts/render.d.ts +12 -3
- package/dist/charts/render.d.ts.map +1 -1
- package/dist/charts/render.js +94 -25
- package/dist/charts/render.js.map +1 -1
- package/dist/code/index.d.ts.map +1 -1
- package/dist/code/index.js +3 -1
- package/dist/code/index.js.map +1 -1
- package/dist/code-editor/completion.d.ts.map +1 -1
- package/dist/code-editor/completion.js +3 -2
- package/dist/code-editor/completion.js.map +1 -1
- package/dist/code-editor/index.d.ts.map +1 -1
- package/dist/code-editor/index.js +19 -0
- package/dist/code-editor/index.js.map +1 -1
- package/dist/code-editor/node.d.ts +177 -7
- package/dist/code-editor/node.d.ts.map +1 -1
- package/dist/code-editor/node.js +1329 -164
- package/dist/code-editor/node.js.map +1 -1
- package/dist/code-language/languages/glsl.d.ts.map +1 -1
- package/dist/code-language/languages/glsl.js +10 -2
- package/dist/code-language/languages/glsl.js.map +1 -1
- package/dist/code-language/languages/javascript.d.ts.map +1 -1
- package/dist/code-language/languages/javascript.js +18 -3
- package/dist/code-language/languages/javascript.js.map +1 -1
- package/dist/code-language/languages/json.d.ts.map +1 -1
- package/dist/code-language/languages/json.js +10 -2
- package/dist/code-language/languages/json.js.map +1 -1
- package/dist/code-language/languages/shell.d.ts.map +1 -1
- package/dist/code-language/languages/shell.js +10 -2
- package/dist/code-language/languages/shell.js.map +1 -1
- package/dist/code-language/languages/sql.d.ts.map +1 -1
- package/dist/code-language/languages/sql.js +20 -2
- package/dist/code-language/languages/sql.js.map +1 -1
- package/dist/code-language/stream.d.ts +22 -0
- package/dist/code-language/stream.d.ts.map +1 -1
- package/dist/code-language/stream.js +259 -9
- package/dist/code-language/stream.js.map +1 -1
- package/dist/code-language/types.d.ts +5 -4
- package/dist/code-language/types.d.ts.map +1 -1
- package/dist/codeblock/index.d.ts +13 -2
- package/dist/codeblock/index.d.ts.map +1 -1
- package/dist/codeblock/index.js +20 -3
- package/dist/codeblock/index.js.map +1 -1
- package/dist/embed/client.d.ts +48 -3
- package/dist/embed/client.d.ts.map +1 -1
- package/dist/embed/client.js +79 -5
- package/dist/embed/client.js.map +1 -1
- package/dist/embed/index.d.ts +1 -1
- package/dist/embed/index.d.ts.map +1 -1
- package/dist/embed/index.js +1 -1
- package/dist/embed/index.js.map +1 -1
- package/dist/flow/draw.d.ts +50 -0
- package/dist/flow/draw.d.ts.map +1 -1
- package/dist/flow/draw.js +132 -33
- package/dist/flow/draw.js.map +1 -1
- package/dist/flow/gl/color.d.ts +13 -0
- package/dist/flow/gl/color.d.ts.map +1 -0
- package/dist/flow/gl/color.js +82 -0
- package/dist/flow/gl/color.js.map +1 -0
- package/dist/flow/gl/index.d.ts +60 -0
- package/dist/flow/gl/index.d.ts.map +1 -0
- package/dist/flow/gl/index.js +283 -0
- package/dist/flow/gl/index.js.map +1 -0
- package/dist/flow/gl/pack.d.ts +133 -0
- package/dist/flow/gl/pack.d.ts.map +1 -0
- package/dist/flow/gl/pack.js +408 -0
- package/dist/flow/gl/pack.js.map +1 -0
- package/dist/flow/gl/renderer.d.ts +95 -0
- package/dist/flow/gl/renderer.d.ts.map +1 -0
- package/dist/flow/gl/renderer.js +459 -0
- package/dist/flow/gl/renderer.js.map +1 -0
- package/dist/flow/gl/shaders.d.ts +79 -0
- package/dist/flow/gl/shaders.d.ts.map +1 -0
- package/dist/flow/gl/shaders.js +346 -0
- package/dist/flow/gl/shaders.js.map +1 -0
- package/dist/flow/gl/text.d.ts +318 -0
- package/dist/flow/gl/text.d.ts.map +1 -0
- package/dist/flow/gl/text.js +1103 -0
- package/dist/flow/gl/text.js.map +1 -0
- package/dist/flow/index.d.ts +1 -1
- package/dist/flow/index.d.ts.map +1 -1
- package/dist/flow/index.js +619 -64
- package/dist/flow/index.js.map +1 -1
- package/dist/flow/node.d.ts +621 -72
- package/dist/flow/node.d.ts.map +1 -1
- package/dist/flow/node.js +2253 -1018
- package/dist/flow/node.js.map +1 -1
- package/dist/flow/paint.d.ts +35 -0
- package/dist/flow/paint.d.ts.map +1 -0
- package/dist/flow/paint.js +393 -0
- package/dist/flow/paint.js.map +1 -0
- package/dist/flow/paths.d.ts +14 -0
- package/dist/flow/paths.d.ts.map +1 -1
- package/dist/flow/paths.js +45 -19
- package/dist/flow/paths.js.map +1 -1
- package/dist/flow/scene.d.ts +584 -0
- package/dist/flow/scene.d.ts.map +1 -0
- package/dist/flow/scene.js +1453 -0
- package/dist/flow/scene.js.map +1 -0
- package/dist/flow/types.d.ts +111 -1
- package/dist/flow/types.d.ts.map +1 -1
- package/dist/html/controls.d.ts +28 -0
- package/dist/html/controls.d.ts.map +1 -1
- package/dist/html/controls.js +52 -2
- package/dist/html/controls.js.map +1 -1
- package/dist/html/css/calc.d.ts +14 -0
- package/dist/html/css/calc.d.ts.map +1 -0
- package/dist/html/css/calc.js +344 -0
- package/dist/html/css/calc.js.map +1 -0
- package/dist/html/css/cascade.d.ts +240 -6
- package/dist/html/css/cascade.d.ts.map +1 -1
- package/dist/html/css/cascade.js +1327 -66
- package/dist/html/css/cascade.js.map +1 -1
- package/dist/html/css/color.d.ts +23 -0
- package/dist/html/css/color.d.ts.map +1 -0
- package/dist/html/css/color.js +740 -0
- package/dist/html/css/color.js.map +1 -0
- package/dist/html/css/content.d.ts +92 -0
- package/dist/html/css/content.d.ts.map +1 -0
- package/dist/html/css/content.js +388 -0
- package/dist/html/css/content.js.map +1 -0
- package/dist/html/css/counter-styles.d.ts +76 -0
- package/dist/html/css/counter-styles.d.ts.map +1 -0
- package/dist/html/css/counter-styles.js +893 -0
- package/dist/html/css/counter-styles.js.map +1 -0
- package/dist/html/css/decode.d.ts +12 -0
- package/dist/html/css/decode.d.ts.map +1 -0
- package/dist/html/css/decode.js +116 -0
- package/dist/html/css/decode.js.map +1 -0
- package/dist/html/css/parse.d.ts +110 -10
- package/dist/html/css/parse.d.ts.map +1 -1
- package/dist/html/css/parse.js +1473 -180
- package/dist/html/css/parse.js.map +1 -1
- package/dist/html/css/style.d.ts +498 -15
- package/dist/html/css/style.d.ts.map +1 -1
- package/dist/html/css/style.js +3698 -206
- package/dist/html/css/style.js.map +1 -1
- package/dist/html/css/ua.d.ts.map +1 -1
- package/dist/html/css/ua.js +57 -11
- package/dist/html/css/ua.js.map +1 -1
- package/dist/html/css/values.d.ts +37 -3
- package/dist/html/css/values.d.ts.map +1 -1
- package/dist/html/css/values.js +122 -48
- package/dist/html/css/values.js.map +1 -1
- package/dist/html/css/vars.d.ts +52 -0
- package/dist/html/css/vars.d.ts.map +1 -0
- package/dist/html/css/vars.js +358 -0
- package/dist/html/css/vars.js.map +1 -0
- package/dist/html/dom.d.ts +30 -4
- package/dist/html/dom.d.ts.map +1 -1
- package/dist/html/dom.js +278 -17
- package/dist/html/dom.js.map +1 -1
- package/dist/html/fonts.d.ts +106 -0
- package/dist/html/fonts.d.ts.map +1 -0
- package/dist/html/fonts.js +565 -0
- package/dist/html/fonts.js.map +1 -0
- package/dist/html/gif.d.ts +15 -0
- package/dist/html/gif.d.ts.map +1 -0
- package/dist/html/gif.js +229 -0
- package/dist/html/gif.js.map +1 -0
- package/dist/html/index.d.ts +50 -11
- package/dist/html/index.d.ts.map +1 -1
- package/dist/html/index.js +115 -9
- package/dist/html/index.js.map +1 -1
- package/dist/html/layout/block.d.ts +226 -3
- package/dist/html/layout/block.d.ts.map +1 -1
- package/dist/html/layout/block.js +2937 -197
- package/dist/html/layout/block.js.map +1 -1
- package/dist/html/layout/boxes.d.ts +340 -17
- package/dist/html/layout/boxes.d.ts.map +1 -1
- package/dist/html/layout/boxes.js +1714 -182
- package/dist/html/layout/boxes.js.map +1 -1
- package/dist/html/layout/cache.d.ts +58 -0
- package/dist/html/layout/cache.d.ts.map +1 -0
- package/dist/html/layout/cache.js +224 -0
- package/dist/html/layout/cache.js.map +1 -0
- package/dist/html/layout/collapse.d.ts +45 -0
- package/dist/html/layout/collapse.d.ts.map +1 -0
- package/dist/html/layout/collapse.js +246 -0
- package/dist/html/layout/collapse.js.map +1 -0
- package/dist/html/layout/css-grid.d.ts +7 -0
- package/dist/html/layout/css-grid.d.ts.map +1 -0
- package/dist/html/layout/css-grid.js +900 -0
- package/dist/html/layout/css-grid.js.map +1 -0
- package/dist/html/layout/flex.d.ts.map +1 -1
- package/dist/html/layout/flex.js +1025 -89
- package/dist/html/layout/flex.js.map +1 -1
- package/dist/html/layout/floats.d.ts +45 -6
- package/dist/html/layout/floats.d.ts.map +1 -1
- package/dist/html/layout/floats.js +113 -14
- package/dist/html/layout/floats.js.map +1 -1
- package/dist/html/layout/grid-lines.d.ts +39 -0
- package/dist/html/layout/grid-lines.d.ts.map +1 -0
- package/dist/html/layout/grid-lines.js +119 -0
- package/dist/html/layout/grid-lines.js.map +1 -0
- package/dist/html/layout/grid.d.ts +53 -0
- package/dist/html/layout/grid.d.ts.map +1 -0
- package/dist/html/layout/grid.js +153 -0
- package/dist/html/layout/grid.js.map +1 -0
- package/dist/html/layout/inline.d.ts +151 -1
- package/dist/html/layout/inline.d.ts.map +1 -1
- package/dist/html/layout/inline.js +3375 -174
- package/dist/html/layout/inline.js.map +1 -1
- package/dist/html/layout/shaping.d.ts +6 -0
- package/dist/html/layout/shaping.d.ts.map +1 -0
- package/dist/html/layout/shaping.js +100 -0
- package/dist/html/layout/shaping.js.map +1 -0
- package/dist/html/layout/table.d.ts +3 -0
- package/dist/html/layout/table.d.ts.map +1 -1
- package/dist/html/layout/table.js +681 -175
- package/dist/html/layout/table.js.map +1 -1
- package/dist/html/layout/tracks.d.ts +44 -0
- package/dist/html/layout/tracks.d.ts.map +1 -0
- package/dist/html/layout/tracks.js +349 -0
- package/dist/html/layout/tracks.js.map +1 -0
- package/dist/html/node.d.ts +172 -5
- package/dist/html/node.d.ts.map +1 -1
- package/dist/html/node.js +1336 -103
- package/dist/html/node.js.map +1 -1
- package/dist/html/paint.d.ts +92 -3
- package/dist/html/paint.d.ts.map +1 -1
- package/dist/html/paint.js +3503 -141
- package/dist/html/paint.js.map +1 -1
- package/dist/html/resources.d.ts +60 -14
- package/dist/html/resources.d.ts.map +1 -1
- package/dist/html/resources.js +122 -36
- package/dist/html/resources.js.map +1 -1
- package/dist/html/surfaces.d.ts +23 -0
- package/dist/html/surfaces.d.ts.map +1 -0
- package/dist/html/surfaces.js +68 -0
- package/dist/html/surfaces.js.map +1 -0
- package/dist/html/svg.d.ts +80 -0
- package/dist/html/svg.d.ts.map +1 -0
- package/dist/html/svg.js +435 -0
- package/dist/html/svg.js.map +1 -0
- package/dist/html/url.d.ts +23 -0
- package/dist/html/url.d.ts.map +1 -0
- package/dist/html/url.js +80 -0
- package/dist/html/url.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/collate.d.ts +3 -0
- package/dist/internal/collate.d.ts.map +1 -0
- package/dist/internal/collate.js +11 -0
- package/dist/internal/collate.js.map +1 -0
- package/dist/{markdown → internal/markdown}/ast.d.ts +23 -0
- package/dist/internal/markdown/ast.d.ts.map +1 -0
- package/dist/internal/markdown/ast.js +22 -0
- package/dist/internal/markdown/ast.js.map +1 -0
- package/dist/internal/markdown/parse.d.ts.map +1 -0
- package/dist/{markdown → internal/markdown}/parse.js +221 -30
- package/dist/internal/markdown/parse.js.map +1 -0
- package/dist/internal/markdown/stringify.d.ts +4 -0
- package/dist/internal/markdown/stringify.d.ts.map +1 -0
- package/dist/internal/markdown/stringify.js +684 -0
- package/dist/internal/markdown/stringify.js.map +1 -0
- package/dist/internal/markdown/tags.d.ts.map +1 -0
- package/dist/internal/markdown/tags.js.map +1 -0
- package/dist/internal/prewarm.d.ts +18 -0
- package/dist/internal/prewarm.d.ts.map +1 -0
- package/dist/internal/prewarm.js +42 -0
- package/dist/internal/prewarm.js.map +1 -0
- package/dist/internal/scroll.d.ts +3 -2
- package/dist/internal/scroll.d.ts.map +1 -1
- package/dist/internal/scroll.js +1 -0
- package/dist/internal/scroll.js.map +1 -1
- package/dist/internal/sdf.d.ts +20 -0
- package/dist/internal/sdf.d.ts.map +1 -0
- package/dist/internal/sdf.js +216 -0
- package/dist/internal/sdf.js.map +1 -0
- package/dist/internal/splice.d.ts +12 -0
- package/dist/internal/splice.d.ts.map +1 -0
- package/dist/internal/splice.js +23 -0
- package/dist/internal/splice.js.map +1 -0
- package/dist/internal/window.d.ts +12 -0
- package/dist/internal/window.d.ts.map +1 -1
- package/dist/internal/window.js +23 -6
- package/dist/internal/window.js.map +1 -1
- package/dist/maps/anchors.d.ts +103 -0
- package/dist/maps/anchors.d.ts.map +1 -0
- package/dist/maps/anchors.js +790 -0
- package/dist/maps/anchors.js.map +1 -0
- package/dist/maps/controller.d.ts +340 -0
- package/dist/maps/controller.d.ts.map +1 -0
- package/dist/maps/controller.js +822 -0
- package/dist/maps/controller.js.map +1 -0
- package/dist/maps/gl/buckets.d.ts +99 -0
- package/dist/maps/gl/buckets.d.ts.map +1 -0
- package/dist/maps/gl/buckets.js +365 -0
- package/dist/maps/gl/buckets.js.map +1 -0
- package/dist/maps/gl/build-worker.d.ts +15 -0
- package/dist/maps/gl/build-worker.d.ts.map +1 -0
- package/dist/maps/gl/build-worker.js +44 -0
- package/dist/maps/gl/build-worker.js.map +1 -0
- package/dist/maps/gl/color.d.ts +8 -0
- package/dist/maps/gl/color.d.ts.map +1 -0
- package/dist/maps/gl/color.js +57 -0
- package/dist/maps/gl/color.js.map +1 -0
- package/dist/maps/gl/cover.d.ts +70 -0
- package/dist/maps/gl/cover.d.ts.map +1 -0
- package/dist/maps/gl/cover.js +137 -0
- package/dist/maps/gl/cover.js.map +1 -0
- package/dist/maps/gl/index.d.ts +3 -0
- package/dist/maps/gl/index.d.ts.map +1 -0
- package/dist/maps/gl/index.js +20 -0
- package/dist/maps/gl/index.js.map +1 -0
- package/dist/maps/gl/markers.d.ts +28 -0
- package/dist/maps/gl/markers.d.ts.map +1 -0
- package/dist/maps/gl/markers.js +60 -0
- package/dist/maps/gl/markers.js.map +1 -0
- package/dist/maps/gl/overlays.d.ts +68 -0
- package/dist/maps/gl/overlays.d.ts.map +1 -0
- package/dist/maps/gl/overlays.js +300 -0
- package/dist/maps/gl/overlays.js.map +1 -0
- package/dist/maps/gl/pane.d.ts +12 -0
- package/dist/maps/gl/pane.d.ts.map +1 -0
- package/dist/maps/gl/pane.js +37 -0
- package/dist/maps/gl/pane.js.map +1 -0
- package/dist/maps/gl/placement.d.ts +124 -0
- package/dist/maps/gl/placement.d.ts.map +1 -0
- package/dist/maps/gl/placement.js +642 -0
- package/dist/maps/gl/placement.js.map +1 -0
- package/dist/maps/gl/renderer.d.ts +384 -0
- package/dist/maps/gl/renderer.d.ts.map +1 -0
- package/dist/maps/gl/renderer.js +1184 -0
- package/dist/maps/gl/renderer.js.map +1 -0
- package/dist/maps/gl/shaders.d.ts +121 -0
- package/dist/maps/gl/shaders.d.ts.map +1 -0
- package/dist/maps/gl/shaders.js +453 -0
- package/dist/maps/gl/shaders.js.map +1 -0
- package/dist/maps/gl/store.d.ts +125 -0
- package/dist/maps/gl/store.d.ts.map +1 -0
- package/dist/maps/gl/store.js +512 -0
- package/dist/maps/gl/store.js.map +1 -0
- package/dist/maps/gl/text.d.ts +283 -0
- package/dist/maps/gl/text.d.ts.map +1 -0
- package/dist/maps/gl/text.js +698 -0
- package/dist/maps/gl/text.js.map +1 -0
- package/dist/maps/gl/view.d.ts +345 -0
- package/dist/maps/gl/view.d.ts.map +1 -0
- package/dist/maps/gl/view.js +1209 -0
- package/dist/maps/gl/view.js.map +1 -0
- package/dist/maps/icons.d.ts +32 -0
- package/dist/maps/icons.d.ts.map +1 -0
- package/dist/maps/icons.js +151 -0
- package/dist/maps/icons.js.map +1 -0
- package/dist/maps/index.d.ts +3 -1
- package/dist/maps/index.d.ts.map +1 -1
- package/dist/maps/index.js +218 -52
- package/dist/maps/index.js.map +1 -1
- package/dist/maps/labels.d.ts +91 -18
- package/dist/maps/labels.d.ts.map +1 -1
- package/dist/maps/labels.js +376 -140
- package/dist/maps/labels.js.map +1 -1
- package/dist/maps/node.d.ts +179 -56
- package/dist/maps/node.d.ts.map +1 -1
- package/dist/maps/node.js +663 -537
- package/dist/maps/node.js.map +1 -1
- package/dist/maps/overlay.d.ts +72 -9
- package/dist/maps/overlay.d.ts.map +1 -1
- package/dist/maps/overlay.js +108 -28
- package/dist/maps/overlay.js.map +1 -1
- package/dist/maps/paint.d.ts +3 -0
- package/dist/maps/paint.d.ts.map +1 -1
- package/dist/maps/paint.js.map +1 -1
- package/dist/maps/proj.d.ts +62 -0
- package/dist/maps/proj.d.ts.map +1 -1
- package/dist/maps/proj.js +101 -0
- package/dist/maps/proj.js.map +1 -1
- package/dist/maps/renderer.d.ts +69 -0
- package/dist/maps/renderer.d.ts.map +1 -0
- package/dist/maps/renderer.js +66 -0
- package/dist/maps/renderer.js.map +1 -0
- package/dist/maps/sources.d.ts +30 -6
- package/dist/maps/sources.d.ts.map +1 -1
- package/dist/maps/sources.js +22 -3
- package/dist/maps/sources.js.map +1 -1
- package/dist/maps/style.d.ts +35 -0
- package/dist/maps/style.d.ts.map +1 -1
- package/dist/maps/style.js.map +1 -1
- package/dist/maps/styles.d.ts +12 -0
- package/dist/maps/styles.d.ts.map +1 -1
- package/dist/maps/styles.js +120 -6
- package/dist/maps/styles.js.map +1 -1
- package/dist/maps/theme.d.ts +19 -0
- package/dist/maps/theme.d.ts.map +1 -0
- package/dist/maps/theme.js +44 -0
- package/dist/maps/theme.js.map +1 -0
- package/dist/maps/tiles.d.ts +147 -27
- package/dist/maps/tiles.d.ts.map +1 -1
- package/dist/maps/tiles.js +221 -54
- package/dist/maps/tiles.js.map +1 -1
- package/dist/maps/types.d.ts +213 -21
- package/dist/maps/types.d.ts.map +1 -1
- package/dist/markdown/expressions.d.ts +1 -1
- package/dist/markdown/expressions.d.ts.map +1 -1
- package/dist/markdown/expressions.js.map +1 -1
- package/dist/markdown/index.d.ts +7 -6
- package/dist/markdown/index.d.ts.map +1 -1
- package/dist/markdown/index.js +121 -50
- package/dist/markdown/index.js.map +1 -1
- package/dist/markdown/spans.d.ts +1 -1
- package/dist/markdown/spans.d.ts.map +1 -1
- package/dist/markdown/spans.js +6 -0
- package/dist/markdown/spans.js.map +1 -1
- package/dist/media-player/index.d.ts +11 -3
- package/dist/media-player/index.d.ts.map +1 -1
- package/dist/media-player/index.js +13 -2
- package/dist/media-player/index.js.map +1 -1
- package/dist/qml/containers.d.ts.map +1 -1
- package/dist/qml/containers.js +6 -1
- package/dist/qml/containers.js.map +1 -1
- package/dist/qml/interaction.d.ts.map +1 -1
- package/dist/qml/interaction.js +38 -5
- package/dist/qml/interaction.js.map +1 -1
- package/dist/qml/layouts.d.ts.map +1 -1
- package/dist/qml/layouts.js +21 -6
- package/dist/qml/layouts.js.map +1 -1
- package/dist/qml/qtquick.d.ts.map +1 -1
- package/dist/qml/qtquick.js +9 -2
- package/dist/qml/qtquick.js.map +1 -1
- package/dist/qml/react.d.ts.map +1 -1
- package/dist/qml/react.js +9 -7
- package/dist/qml/react.js.map +1 -1
- package/dist/reorder/clock.d.ts +7 -0
- package/dist/reorder/clock.d.ts.map +1 -0
- package/dist/reorder/clock.js +26 -0
- package/dist/reorder/clock.js.map +1 -0
- package/dist/reorder/index.d.ts +25 -3
- package/dist/reorder/index.d.ts.map +1 -1
- package/dist/reorder/index.js +64 -19
- package/dist/reorder/index.js.map +1 -1
- package/dist/rich-text-editor/clipboard.d.ts +23 -0
- package/dist/rich-text-editor/clipboard.d.ts.map +1 -0
- package/dist/rich-text-editor/clipboard.js +307 -0
- package/dist/rich-text-editor/clipboard.js.map +1 -0
- package/dist/rich-text-editor/collab.d.ts +32 -0
- package/dist/rich-text-editor/collab.d.ts.map +1 -0
- package/dist/rich-text-editor/collab.js +55 -0
- package/dist/rich-text-editor/collab.js.map +1 -0
- package/dist/rich-text-editor/commands.d.ts +50 -0
- package/dist/rich-text-editor/commands.d.ts.map +1 -0
- package/dist/rich-text-editor/commands.js +376 -0
- package/dist/rich-text-editor/commands.js.map +1 -0
- package/dist/rich-text-editor/drag.d.ts +68 -0
- package/dist/rich-text-editor/drag.d.ts.map +1 -0
- package/dist/rich-text-editor/drag.js +148 -0
- package/dist/rich-text-editor/drag.js.map +1 -0
- package/dist/rich-text-editor/html.d.ts +145 -0
- package/dist/rich-text-editor/html.d.ts.map +1 -0
- package/dist/rich-text-editor/html.js +516 -0
- package/dist/rich-text-editor/html.js.map +1 -0
- package/dist/rich-text-editor/index.d.ts +252 -0
- package/dist/rich-text-editor/index.d.ts.map +1 -0
- package/dist/rich-text-editor/index.js +856 -0
- package/dist/rich-text-editor/index.js.map +1 -0
- package/dist/rich-text-editor/inline.d.ts +94 -0
- package/dist/rich-text-editor/inline.d.ts.map +1 -0
- package/dist/rich-text-editor/inline.js +252 -0
- package/dist/rich-text-editor/inline.js.map +1 -0
- package/dist/rich-text-editor/keymap.d.ts +71 -0
- package/dist/rich-text-editor/keymap.d.ts.map +1 -0
- package/dist/rich-text-editor/keymap.js +394 -0
- package/dist/rich-text-editor/keymap.js.map +1 -0
- package/dist/rich-text-editor/keys.d.ts +40 -0
- package/dist/rich-text-editor/keys.d.ts.map +1 -0
- package/dist/rich-text-editor/keys.js +202 -0
- package/dist/rich-text-editor/keys.js.map +1 -0
- package/dist/rich-text-editor/look.d.ts +71 -0
- package/dist/rich-text-editor/look.d.ts.map +1 -0
- package/dist/rich-text-editor/look.js +342 -0
- package/dist/rich-text-editor/look.js.map +1 -0
- package/dist/rich-text-editor/markdown.d.ts +18 -0
- package/dist/rich-text-editor/markdown.d.ts.map +1 -0
- package/dist/rich-text-editor/markdown.js +496 -0
- package/dist/rich-text-editor/markdown.js.map +1 -0
- package/dist/rich-text-editor/marks.d.ts +9 -0
- package/dist/rich-text-editor/marks.d.ts.map +1 -0
- package/dist/rich-text-editor/marks.js +83 -0
- package/dist/rich-text-editor/marks.js.map +1 -0
- package/dist/rich-text-editor/nodes.d.ts +135 -0
- package/dist/rich-text-editor/nodes.d.ts.map +1 -0
- package/dist/rich-text-editor/nodes.js +397 -0
- package/dist/rich-text-editor/nodes.js.map +1 -0
- package/dist/rich-text-editor/render.d.ts +68 -0
- package/dist/rich-text-editor/render.d.ts.map +1 -0
- package/dist/rich-text-editor/render.js +518 -0
- package/dist/rich-text-editor/render.js.map +1 -0
- package/dist/rich-text-editor/schema.d.ts +16 -0
- package/dist/rich-text-editor/schema.d.ts.map +1 -0
- package/dist/rich-text-editor/schema.js +386 -0
- package/dist/rich-text-editor/schema.js.map +1 -0
- package/dist/rich-text-editor/store.d.ts +11 -0
- package/dist/rich-text-editor/store.d.ts.map +1 -0
- package/dist/rich-text-editor/store.js +43 -0
- package/dist/rich-text-editor/store.js.map +1 -0
- package/dist/rich-text-editor/suggest.d.ts +127 -0
- package/dist/rich-text-editor/suggest.d.ts.map +1 -0
- package/dist/rich-text-editor/suggest.js +0 -0
- package/dist/rich-text-editor/suggest.js.map +1 -0
- package/dist/rich-text-editor/tables.d.ts +41 -0
- package/dist/rich-text-editor/tables.d.ts.map +1 -0
- package/dist/rich-text-editor/tables.js +204 -0
- package/dist/rich-text-editor/tables.js.map +1 -0
- package/dist/rich-text-editor/toolbar.d.ts +58 -0
- package/dist/rich-text-editor/toolbar.d.ts.map +1 -0
- package/dist/rich-text-editor/toolbar.js +548 -0
- package/dist/rich-text-editor/toolbar.js.map +1 -0
- package/dist/rich-text-editor/view.d.ts +368 -0
- package/dist/rich-text-editor/view.d.ts.map +1 -0
- package/dist/rich-text-editor/view.js +1968 -0
- package/dist/rich-text-editor/view.js.map +1 -0
- package/dist/rich-text-editor/virtual.d.ts +54 -0
- package/dist/rich-text-editor/virtual.d.ts.map +1 -0
- package/dist/rich-text-editor/virtual.js +279 -0
- package/dist/rich-text-editor/virtual.js.map +1 -0
- package/dist/richtext/node.d.ts +71 -4
- package/dist/richtext/node.d.ts.map +1 -1
- package/dist/richtext/node.js +233 -28
- package/dist/richtext/node.js.map +1 -1
- package/dist/richtext/runs.d.ts +13 -8
- package/dist/richtext/runs.d.ts.map +1 -1
- package/dist/richtext/runs.js +18 -8
- package/dist/richtext/runs.js.map +1 -1
- package/dist/table/index.d.ts.map +1 -1
- package/dist/table/index.js +23 -0
- package/dist/table/index.js.map +1 -1
- package/dist/table/rows.d.ts +3 -2
- package/dist/table/rows.d.ts.map +1 -1
- package/dist/table/rows.js +20 -6
- package/dist/table/rows.js.map +1 -1
- package/dist/terminal/backends.d.ts +4 -1
- package/dist/terminal/backends.d.ts.map +1 -1
- package/dist/terminal/backends.js.map +1 -1
- package/dist/terminal/index.d.ts +18 -7
- package/dist/terminal/index.d.ts.map +1 -1
- package/dist/terminal/index.js +32 -11
- package/dist/terminal/index.js.map +1 -1
- package/dist/terminal/vt/pty.d.ts +13 -2
- package/dist/terminal/vt/pty.d.ts.map +1 -1
- package/dist/terminal/vt/pty.js +18 -3
- package/dist/terminal/vt/pty.js.map +1 -1
- package/dist/terminal-output/index.d.ts.map +1 -1
- package/dist/terminal-output/index.js +6 -1
- package/dist/terminal-output/index.js.map +1 -1
- package/dist/three/canvas.d.ts.map +1 -1
- package/dist/three/canvas.js +85 -7
- package/dist/three/canvas.js.map +1 -1
- package/dist/three/events.d.ts +22 -4
- package/dist/three/events.d.ts.map +1 -1
- package/dist/three/events.js +34 -4
- package/dist/three/events.js.map +1 -1
- package/dist/tree/index.d.ts.map +1 -1
- package/dist/tree/index.js +17 -0
- package/dist/tree/index.js.map +1 -1
- package/package.json +59 -31
- package/src/charts/node.ts +68 -28
- package/src/charts/render.ts +120 -30
- package/src/code/index.ts +3 -1
- package/src/code-editor/completion.ts +3 -2
- package/src/code-editor/index.ts +19 -0
- package/src/code-editor/node.ts +1574 -184
- package/src/code-language/languages/glsl.ts +12 -2
- package/src/code-language/languages/javascript.ts +21 -4
- package/src/code-language/languages/json.ts +12 -2
- package/src/code-language/languages/shell.ts +12 -2
- package/src/code-language/languages/sql.ts +22 -2
- package/src/code-language/stream.ts +257 -17
- package/src/code-language/types.ts +5 -4
- package/src/codeblock/index.ts +20 -3
- package/src/embed/client.ts +102 -8
- package/src/embed/index.ts +2 -0
- package/src/flow/draw.ts +167 -41
- package/src/flow/gl/color.ts +85 -0
- package/src/flow/gl/index.ts +342 -0
- package/src/flow/gl/pack.ts +585 -0
- package/src/flow/gl/renderer.ts +679 -0
- package/src/flow/gl/shaders.ts +371 -0
- package/src/flow/gl/text.ts +1295 -0
- package/src/flow/index.ts +794 -67
- package/src/flow/node.ts +2496 -1256
- package/src/flow/paint.ts +511 -0
- package/src/flow/paths.ts +80 -15
- package/src/flow/scene.ts +2199 -0
- package/src/flow/types.ts +113 -1
- package/src/html/controls.ts +73 -2
- package/src/html/css/calc.ts +385 -0
- package/src/html/css/cascade.ts +1403 -62
- package/src/html/css/color.ts +755 -0
- package/src/html/css/content.ts +417 -0
- package/src/html/css/counter-styles.ts +973 -0
- package/src/html/css/decode.ts +130 -0
- package/src/html/css/parse.ts +1514 -160
- package/src/html/css/style.ts +4102 -222
- package/src/html/css/ua.ts +58 -12
- package/src/html/css/values.ts +150 -50
- package/src/html/css/vars.ts +348 -0
- package/src/html/dom.ts +284 -17
- package/src/html/fonts.ts +641 -0
- package/src/html/gif.ts +233 -0
- package/src/html/index.ts +180 -20
- package/src/html/layout/block.ts +3456 -230
- package/src/html/layout/boxes.ts +2100 -190
- package/src/html/layout/cache.ts +289 -0
- package/src/html/layout/collapse.ts +317 -0
- package/src/html/layout/css-grid.ts +1063 -0
- package/src/html/layout/flex.ts +1115 -106
- package/src/html/layout/floats.ts +128 -14
- package/src/html/layout/grid-lines.ts +141 -0
- package/src/html/layout/grid.ts +181 -0
- package/src/html/layout/inline.ts +3943 -192
- package/src/html/layout/shaping.ts +140 -0
- package/src/html/layout/table.ts +696 -186
- package/src/html/layout/tracks.ts +437 -0
- package/src/html/node.ts +1486 -121
- package/src/html/paint.ts +4293 -169
- package/src/html/resources.ts +161 -50
- package/src/html/surfaces.ts +81 -0
- package/src/html/svg.ts +493 -0
- package/src/html/url.ts +86 -0
- package/src/index.ts +4 -0
- package/src/internal/collate.ts +12 -0
- package/src/{markdown → internal/markdown}/ast.ts +35 -7
- package/src/{markdown → internal/markdown}/parse.ts +288 -35
- package/src/internal/markdown/stringify.ts +772 -0
- package/src/internal/prewarm.ts +45 -0
- package/src/internal/scroll.ts +5 -3
- package/src/internal/sdf.ts +227 -0
- package/src/internal/splice.ts +25 -0
- package/src/internal/window.ts +36 -5
- package/src/maps/anchors.ts +913 -0
- package/src/maps/controller.ts +1084 -0
- package/src/maps/gl/buckets.ts +461 -0
- package/src/maps/gl/build-worker.ts +66 -0
- package/src/maps/gl/color.ts +62 -0
- package/src/maps/gl/cover.ts +205 -0
- package/src/maps/gl/index.ts +23 -0
- package/src/maps/gl/markers.ts +83 -0
- package/src/maps/gl/overlays.ts +379 -0
- package/src/maps/gl/pane.ts +42 -0
- package/src/maps/gl/placement.ts +968 -0
- package/src/maps/gl/renderer.ts +1660 -0
- package/src/maps/gl/shaders.ts +489 -0
- package/src/maps/gl/store.ts +615 -0
- package/src/maps/gl/text.ts +868 -0
- package/src/maps/gl/view.ts +1489 -0
- package/src/maps/icons.ts +183 -0
- package/src/maps/index.ts +274 -81
- package/src/maps/labels.ts +457 -144
- package/src/maps/node.ts +832 -665
- package/src/maps/overlay.ts +148 -43
- package/src/maps/paint.ts +3 -0
- package/src/maps/proj.ts +118 -0
- package/src/maps/renderer.ts +155 -0
- package/src/maps/sources.ts +43 -6
- package/src/maps/style.ts +32 -0
- package/src/maps/styles.ts +215 -4
- package/src/maps/theme.ts +51 -0
- package/src/maps/tiles.ts +253 -62
- package/src/maps/types.ts +213 -21
- package/src/markdown/expressions.ts +5 -1
- package/src/markdown/index.ts +163 -78
- package/src/markdown/spans.ts +6 -1
- package/src/media-player/index.ts +18 -4
- package/src/qml/containers.tsx +6 -1
- package/src/qml/interaction.tsx +42 -5
- package/src/qml/layouts.tsx +21 -6
- package/src/qml/qtquick.tsx +9 -2
- package/src/qml/react.tsx +7 -5
- package/src/reorder/clock.ts +27 -0
- package/src/reorder/index.ts +100 -27
- package/src/rich-text-editor/clipboard.ts +439 -0
- package/src/rich-text-editor/collab.ts +91 -0
- package/src/rich-text-editor/commands.ts +448 -0
- package/src/rich-text-editor/dom-globals.d.ts +23 -0
- package/src/rich-text-editor/drag.ts +211 -0
- package/src/rich-text-editor/html.ts +619 -0
- package/src/rich-text-editor/index.ts +1364 -0
- package/src/rich-text-editor/inline.ts +345 -0
- package/src/rich-text-editor/keymap.ts +510 -0
- package/src/rich-text-editor/keys.ts +228 -0
- package/src/rich-text-editor/look.ts +427 -0
- package/src/rich-text-editor/markdown.ts +653 -0
- package/src/rich-text-editor/marks.ts +101 -0
- package/src/rich-text-editor/nodes.ts +497 -0
- package/src/rich-text-editor/render.ts +837 -0
- package/src/rich-text-editor/schema.ts +431 -0
- package/src/rich-text-editor/store.ts +39 -0
- package/src/rich-text-editor/suggest.ts +597 -0
- package/src/rich-text-editor/tables.ts +272 -0
- package/src/rich-text-editor/toolbar.ts +724 -0
- package/src/rich-text-editor/view.ts +2287 -0
- package/src/rich-text-editor/virtual.ts +372 -0
- package/src/richtext/node.ts +294 -44
- package/src/richtext/runs.ts +23 -12
- package/src/table/index.ts +29 -0
- package/src/table/rows.ts +18 -8
- package/src/terminal/backends.ts +4 -1
- package/src/terminal/index.ts +47 -15
- package/src/terminal/vt/pty.ts +16 -2
- package/src/terminal-output/index.ts +6 -1
- package/src/three/canvas.ts +102 -8
- package/src/three/events.ts +49 -9
- package/src/tree/index.ts +19 -0
- package/dist/markdown/ast.d.ts.map +0 -1
- package/dist/markdown/ast.js +0 -17
- package/dist/markdown/ast.js.map +0 -1
- package/dist/markdown/parse.d.ts.map +0 -1
- package/dist/markdown/parse.js.map +0 -1
- package/dist/markdown/tags.d.ts.map +0 -1
- package/dist/markdown/tags.js.map +0 -1
- /package/dist/{markdown → internal/markdown}/parse.d.ts +0 -0
- /package/dist/{markdown → internal/markdown}/tags.d.ts +0 -0
- /package/dist/{markdown → internal/markdown}/tags.js +0 -0
- /package/src/{markdown → internal/markdown}/tags.ts +0 -0
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
// Stable identities for the blocks of a document, carried across edits.
|
|
2
|
+
//
|
|
3
|
+
// React needs a key per rendered block, and the three obvious ones are all
|
|
4
|
+
// wrong for an editor:
|
|
5
|
+
//
|
|
6
|
+
// - **an index** shifts every block after an inserted paragraph, so Enter
|
|
7
|
+
// at the top of a long document re-renders — and re-lays-out — every
|
|
8
|
+
// paragraph below it;
|
|
9
|
+
// - **a position** shifts on every keystroke, for the same reason;
|
|
10
|
+
// - **a node's identity** changes whenever its content does, because
|
|
11
|
+
// ProseMirror's nodes are immutable, so typing would remount the very
|
|
12
|
+
// paragraph being typed in and throw its layout cache away.
|
|
13
|
+
//
|
|
14
|
+
// What survives an edit is what ProseMirror's own view keys its DOM on: a
|
|
15
|
+
// node's *place*, mapped through the transaction. A block whose start maps
|
|
16
|
+
// cleanly keeps its key; one whose opening token the transaction deleted —
|
|
17
|
+
// the second half of a join — loses it, and a block nobody had before (the
|
|
18
|
+
// second half of a split) gets a fresh one. When there is no mapping — a
|
|
19
|
+
// whole state handed in from outside, the controlled-state rung — the node
|
|
20
|
+
// objects that survived are matched by identity instead, which is the other
|
|
21
|
+
// thing ProseMirror's structural sharing guarantees.
|
|
22
|
+
//
|
|
23
|
+
// Pure: no React, no react-x11. The component asks it three questions — the
|
|
24
|
+
// key at a position, the position of a key, the node under a key — and
|
|
25
|
+
// `test/rich-text-editor-model.test.ts` asks it the rest.
|
|
26
|
+
import type { Node as PMNode } from 'prosemirror-model';
|
|
27
|
+
import { Mapping } from 'prosemirror-transform';
|
|
28
|
+
import type { Mappable } from 'prosemirror-transform';
|
|
29
|
+
import { spliceAll } from '../internal/splice.js';
|
|
30
|
+
|
|
31
|
+
/** A block: its key, where it starts, and the node it is. */
|
|
32
|
+
interface Entry {
|
|
33
|
+
key: string;
|
|
34
|
+
pos: number;
|
|
35
|
+
node: PMNode;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export class BlockKeys {
|
|
39
|
+
private counter = 0;
|
|
40
|
+
/** Every block, in document order — which is the order of their starts,
|
|
41
|
+
* so a position is found by bisection. */
|
|
42
|
+
private entries: Entry[] = [];
|
|
43
|
+
private byKey = new Map<string, Entry>();
|
|
44
|
+
/** The document the entries describe. */
|
|
45
|
+
private doc: PMNode | null = null;
|
|
46
|
+
|
|
47
|
+
constructor(doc: PMNode) {
|
|
48
|
+
this.update(doc, null);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/** How many blocks the document has — every non-inline node but the
|
|
52
|
+
* document itself. */
|
|
53
|
+
get size(): number {
|
|
54
|
+
return this.entries.length;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/** The key of the block that starts at `pos`, if one does. */
|
|
58
|
+
keyAt(pos: number): string | undefined {
|
|
59
|
+
const entries = this.entries;
|
|
60
|
+
let lo = 0;
|
|
61
|
+
let hi = entries.length - 1;
|
|
62
|
+
while (lo <= hi) {
|
|
63
|
+
const mid = (lo + hi) >> 1;
|
|
64
|
+
const at = entries[mid].pos;
|
|
65
|
+
if (at === pos) return entries[mid].key;
|
|
66
|
+
if (at < pos) lo = mid + 1;
|
|
67
|
+
else hi = mid - 1;
|
|
68
|
+
}
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/** Where the block under `key` starts now. */
|
|
73
|
+
posOf(key: string): number | undefined {
|
|
74
|
+
return this.byKey.get(key)?.pos;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/** The node the block under `key` is now. */
|
|
78
|
+
nodeOf(key: string): PMNode | undefined {
|
|
79
|
+
return this.byKey.get(key)?.node;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Re-key for a new document. `mapping` is the transaction (or the run of
|
|
84
|
+
* transactions) that produced it from the one the keys were last built
|
|
85
|
+
* for; null when nothing knows how the two relate.
|
|
86
|
+
*
|
|
87
|
+
* The top-level blocks the two documents share at either end — the same
|
|
88
|
+
* node objects, which is what ProseMirror's structural sharing leaves
|
|
89
|
+
* everywhere an edit did not reach — keep their keys, and the blocks
|
|
90
|
+
* after the edit only move. What lies between is keyed as the whole
|
|
91
|
+
* document used to be, on every keystroke: a mapped start first, then a
|
|
92
|
+
* surviving node, then a fresh key. So a keystroke costs the block it
|
|
93
|
+
* lands in plus a pass that adds a number to each block after it, where
|
|
94
|
+
* it cost a walk of the document and three maps built from scratch —
|
|
95
|
+
* six milliseconds a key in a 2 MB document.
|
|
96
|
+
*/
|
|
97
|
+
update(doc: PMNode, mapping: Mappable | null): void {
|
|
98
|
+
const was = this.doc;
|
|
99
|
+
this.doc = doc;
|
|
100
|
+
// the top-level children the two documents share at either end
|
|
101
|
+
let head = 0;
|
|
102
|
+
let tail = 0;
|
|
103
|
+
if (was) {
|
|
104
|
+
const shared = Math.min(was.childCount, doc.childCount);
|
|
105
|
+
while (head < shared && was.child(head) === doc.child(head)) head++;
|
|
106
|
+
while (
|
|
107
|
+
tail < shared - head &&
|
|
108
|
+
was.child(was.childCount - 1 - tail) ===
|
|
109
|
+
doc.child(doc.childCount - 1 - tail)
|
|
110
|
+
) {
|
|
111
|
+
tail++;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
let from = 0; // where the changed children start, in both documents
|
|
115
|
+
for (let i = 0; i < head; i++) from += doc.child(i).nodeSize;
|
|
116
|
+
let wasTo = from;
|
|
117
|
+
if (was) {
|
|
118
|
+
for (let i = head; i < was.childCount - tail; i++) {
|
|
119
|
+
wasTo += was.child(i).nodeSize;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
let to = from;
|
|
123
|
+
for (let i = head; i < doc.childCount - tail; i++) {
|
|
124
|
+
to += doc.child(i).nodeSize;
|
|
125
|
+
}
|
|
126
|
+
const entries = this.entries;
|
|
127
|
+
const first = this._firstAtOrAfter(from);
|
|
128
|
+
const end = this._firstAtOrAfter(wasTo);
|
|
129
|
+
const old = entries.slice(first, end);
|
|
130
|
+
|
|
131
|
+
// 1. Where each old block's start went — nowhere, when nothing in the
|
|
132
|
+
// mapping moves a position: a mark added or taken off, an attribute set.
|
|
133
|
+
// Bold over a whole document is one step a paragraph, and mapping every
|
|
134
|
+
// block through every one of them was a third of the command.
|
|
135
|
+
const carried = new Map<number, string>();
|
|
136
|
+
if (mapping && !movesNothing(mapping)) {
|
|
137
|
+
for (const { pos, key } of old) {
|
|
138
|
+
const result = mapping.mapResult(pos, 1);
|
|
139
|
+
// the token after the start is the block's own opening — gone means
|
|
140
|
+
// the block is gone, merged into whatever preceded it
|
|
141
|
+
if (result.deletedAfter) continue;
|
|
142
|
+
if (!carried.has(result.pos)) carried.set(result.pos, key);
|
|
143
|
+
}
|
|
144
|
+
} else if (mapping) {
|
|
145
|
+
for (const { pos, key } of old) {
|
|
146
|
+
if (!carried.has(pos)) carried.set(pos, key);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
// 2. Which old node objects are still here, for when nothing mapped.
|
|
150
|
+
const byNode = new Map<PMNode, string[]>();
|
|
151
|
+
const carriedKeys = new Set(carried.values());
|
|
152
|
+
for (const { key, node } of old) {
|
|
153
|
+
if (carriedKeys.has(key)) continue;
|
|
154
|
+
const list = byNode.get(node);
|
|
155
|
+
if (list) list.push(key);
|
|
156
|
+
else byNode.set(node, [key]);
|
|
157
|
+
}
|
|
158
|
+
for (const { key } of old) this.byKey.delete(key);
|
|
159
|
+
|
|
160
|
+
// 3. The changed children, keyed.
|
|
161
|
+
const fresh: Entry[] = [];
|
|
162
|
+
const used = new Set<string>();
|
|
163
|
+
const visit = (node: PMNode, pos: number): boolean => {
|
|
164
|
+
if (node.isInline) return false;
|
|
165
|
+
let key = carried.get(pos);
|
|
166
|
+
if (key !== undefined && used.has(key)) key = undefined;
|
|
167
|
+
if (key === undefined) {
|
|
168
|
+
const list = byNode.get(node);
|
|
169
|
+
while (list && list.length > 0) {
|
|
170
|
+
const candidate = list.shift()!;
|
|
171
|
+
if (!used.has(candidate)) {
|
|
172
|
+
key = candidate;
|
|
173
|
+
break;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
if (key === undefined) key = `b${(this.counter++).toString(36)}`;
|
|
178
|
+
used.add(key);
|
|
179
|
+
const entry = { key, pos, node };
|
|
180
|
+
fresh.push(entry);
|
|
181
|
+
this.byKey.set(key, entry);
|
|
182
|
+
// a textblock's children are inline: nothing below it has a key
|
|
183
|
+
return !node.isTextblock;
|
|
184
|
+
};
|
|
185
|
+
let at = from;
|
|
186
|
+
for (let i = head; i < doc.childCount - tail; i++) {
|
|
187
|
+
const child = doc.child(i);
|
|
188
|
+
if (visit(child, at)) {
|
|
189
|
+
const base = at + 1;
|
|
190
|
+
child.descendants((node, pos) => visit(node, base + pos));
|
|
191
|
+
}
|
|
192
|
+
at += child.nodeSize;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
// 4. The blocks after them moved, and are otherwise as they were.
|
|
196
|
+
const shift = to - wasTo;
|
|
197
|
+
if (shift !== 0) {
|
|
198
|
+
for (let i = end; i < entries.length; i++) entries[i].pos += shift;
|
|
199
|
+
}
|
|
200
|
+
spliceAll(entries, first, end - first, fresh);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
/** The index of the first block starting at or after `pos`. */
|
|
204
|
+
private _firstAtOrAfter(pos: number): number {
|
|
205
|
+
const entries = this.entries;
|
|
206
|
+
let lo = 0;
|
|
207
|
+
let hi = entries.length;
|
|
208
|
+
while (lo < hi) {
|
|
209
|
+
const mid = (lo + hi) >> 1;
|
|
210
|
+
if (entries[mid].pos < pos) lo = mid + 1;
|
|
211
|
+
else hi = mid;
|
|
212
|
+
}
|
|
213
|
+
return lo;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
/** Whether a mapping is made only of steps that move no position. */
|
|
218
|
+
function movesNothing(mapping: Mappable): boolean {
|
|
219
|
+
if (!(mapping instanceof Mapping)) return false;
|
|
220
|
+
for (const map of mapping.maps) {
|
|
221
|
+
let moved = false;
|
|
222
|
+
map.forEach(() => {
|
|
223
|
+
moved = true;
|
|
224
|
+
});
|
|
225
|
+
if (moved) return false;
|
|
226
|
+
}
|
|
227
|
+
return true;
|
|
228
|
+
}
|
|
@@ -0,0 +1,427 @@
|
|
|
1
|
+
// What the document looks like: the theme, read once per render, into the
|
|
2
|
+
// styles every block and mark is drawn with.
|
|
3
|
+
//
|
|
4
|
+
// The numbers are `<Markdown>`'s (src/markdown/index.ts, `deriveLook`) — the
|
|
5
|
+
// heading scales, the block gap, the chip behind inline code — and a fenced
|
|
6
|
+
// block's whole look comes from the same shared module both use
|
|
7
|
+
// (`src/codeblock/`). A component never imports another, so the two are kept
|
|
8
|
+
// in step by value: a note edited here and rendered there should look like
|
|
9
|
+
// one document, and a change to one of these numbers belongs in both.
|
|
10
|
+
//
|
|
11
|
+
// A schema this file has never heard of still gets a look. A node or mark is
|
|
12
|
+
// recognised by name first (the reference schema's, then TipTap's), and then
|
|
13
|
+
// by the tag its own `toDOM` writes: an unknown node that says `['h2', 0]` is
|
|
14
|
+
// a second-level heading, an unknown mark that says `['u', 0]` underlines, and
|
|
15
|
+
// a `style` attribute on either is read for the few properties text can
|
|
16
|
+
// carry. The app's `markStyles` has the last word.
|
|
17
|
+
import { tint } from 'react-x11/style';
|
|
18
|
+
import type { Mark, Node as PMNode } from 'prosemirror-model';
|
|
19
|
+
|
|
20
|
+
import { codeBlockLook, codeBlockRuns } from '../codeblock/index.js';
|
|
21
|
+
import type { CodeBlockLook } from '../codeblock/index.js';
|
|
22
|
+
import type { Language } from '../code-language/index.js';
|
|
23
|
+
import type { InlineLook, RunStyle } from './inline.js';
|
|
24
|
+
|
|
25
|
+
/** How a mark looks: a fixed style, or one worked out from what it covers. */
|
|
26
|
+
export type MarkStyle = RunStyle | ((mark: Mark, under: RunStyle) => RunStyle);
|
|
27
|
+
|
|
28
|
+
export interface LookOptions {
|
|
29
|
+
fontSize?: number;
|
|
30
|
+
fontFamily?: string;
|
|
31
|
+
monoFamily?: string;
|
|
32
|
+
markStyles?: Readonly<Record<string, MarkStyle>>;
|
|
33
|
+
resolveLanguage?: (tag: string) => Language | null;
|
|
34
|
+
highlight?: boolean;
|
|
35
|
+
/** A disabled editor: the document is set in the muted ink. (react-x11
|
|
36
|
+
* styles have no opacity to fade a subtree with.) */
|
|
37
|
+
dim?: boolean;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/** Where a textblock sits, as far as its look is concerned. */
|
|
41
|
+
export interface BlockContext {
|
|
42
|
+
/** Inside a blockquote: set in the muted ink, as `<Markdown>` sets it. */
|
|
43
|
+
quote: boolean;
|
|
44
|
+
/** A table's header row. */
|
|
45
|
+
header: boolean;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export interface EditorLook {
|
|
49
|
+
size: number;
|
|
50
|
+
family: string;
|
|
51
|
+
mono: string;
|
|
52
|
+
text: string;
|
|
53
|
+
muted: string;
|
|
54
|
+
link: string;
|
|
55
|
+
accent: string;
|
|
56
|
+
accentText: string;
|
|
57
|
+
border: string;
|
|
58
|
+
background: string;
|
|
59
|
+
surface: string;
|
|
60
|
+
selection: string;
|
|
61
|
+
/** The selection while focus is elsewhere — still there, but quieter. */
|
|
62
|
+
selectionBlurred: string;
|
|
63
|
+
caret: string;
|
|
64
|
+
codeBg: string;
|
|
65
|
+
headerBg: string;
|
|
66
|
+
highlight: string;
|
|
67
|
+
radius: number;
|
|
68
|
+
blockGap: number;
|
|
69
|
+
headingScales: readonly number[];
|
|
70
|
+
code: CodeBlockLook;
|
|
71
|
+
/** Two looks with the same key draw identically — the render cache's epoch. */
|
|
72
|
+
key: string;
|
|
73
|
+
/** A textblock's inline look. Cached: the same node type in the same
|
|
74
|
+
* context is the same object, which is what lets a block that did not
|
|
75
|
+
* change skip its layout. */
|
|
76
|
+
inline(node: PMNode, context: BlockContext): InlineLook;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
const HEADING_SCALES = [1.75, 1.4, 1.2, 1.05, 0.95, 0.85] as const;
|
|
80
|
+
|
|
81
|
+
type Role =
|
|
82
|
+
| 'strong'
|
|
83
|
+
| 'em'
|
|
84
|
+
| 'code'
|
|
85
|
+
| 'strike'
|
|
86
|
+
| 'link'
|
|
87
|
+
| 'underline'
|
|
88
|
+
| 'highlight'
|
|
89
|
+
| 'sub'
|
|
90
|
+
| 'sup'
|
|
91
|
+
| 'textStyle';
|
|
92
|
+
|
|
93
|
+
const MARK_ROLES: Record<string, Role> = {
|
|
94
|
+
strong: 'strong',
|
|
95
|
+
bold: 'strong',
|
|
96
|
+
b: 'strong',
|
|
97
|
+
em: 'em',
|
|
98
|
+
italic: 'em',
|
|
99
|
+
i: 'em',
|
|
100
|
+
code: 'code',
|
|
101
|
+
strike: 'strike',
|
|
102
|
+
strikethrough: 'strike',
|
|
103
|
+
s: 'strike',
|
|
104
|
+
del: 'strike',
|
|
105
|
+
link: 'link',
|
|
106
|
+
a: 'link',
|
|
107
|
+
underline: 'underline',
|
|
108
|
+
u: 'underline',
|
|
109
|
+
highlight: 'highlight',
|
|
110
|
+
mark: 'highlight',
|
|
111
|
+
subscript: 'sub',
|
|
112
|
+
sub: 'sub',
|
|
113
|
+
superscript: 'sup',
|
|
114
|
+
sup: 'sup',
|
|
115
|
+
textStyle: 'textStyle',
|
|
116
|
+
span: 'textStyle',
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
/** The tag and attributes a node's or mark's `toDOM` writes, if it writes an
|
|
120
|
+
* array — the one shape readable without a DOM. */
|
|
121
|
+
export function domTagOf(
|
|
122
|
+
spec: { toDOM?: unknown } | undefined,
|
|
123
|
+
value: unknown,
|
|
124
|
+
): { tag: string; attrs: Record<string, unknown> } | null {
|
|
125
|
+
const toDOM = spec?.toDOM as
|
|
126
|
+
((v: unknown, inline?: boolean) => unknown) | undefined;
|
|
127
|
+
if (typeof toDOM !== 'function') return null;
|
|
128
|
+
try {
|
|
129
|
+
const out = toDOM(value, true);
|
|
130
|
+
if (!Array.isArray(out) || typeof out[0] !== 'string') return null;
|
|
131
|
+
const second = out[1];
|
|
132
|
+
const attrs =
|
|
133
|
+
second && typeof second === 'object' && !Array.isArray(second)
|
|
134
|
+
? (second as Record<string, unknown>)
|
|
135
|
+
: {};
|
|
136
|
+
return { tag: out[0].replace(/^.*\s/, '').toLowerCase(), attrs };
|
|
137
|
+
} catch {
|
|
138
|
+
// a `toDOM` that builds real DOM nodes has no document to build them in
|
|
139
|
+
return null;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* The part of a CSS declaration block text can carry — colour, background,
|
|
145
|
+
* weight, style, decoration, family, pixel size. What a decoration's
|
|
146
|
+
* `style` attribute and an unknown mark's `toDOM` attributes are read
|
|
147
|
+
* through; everything else in them is ignored.
|
|
148
|
+
*/
|
|
149
|
+
export function styleFromCSS(css: string, under: RunStyle): RunStyle {
|
|
150
|
+
const out: RunStyle = {};
|
|
151
|
+
for (const decl of css.split(';')) {
|
|
152
|
+
const colon = decl.indexOf(':');
|
|
153
|
+
if (colon <= 0) continue;
|
|
154
|
+
const name = decl.slice(0, colon).trim().toLowerCase();
|
|
155
|
+
const value = decl.slice(colon + 1).trim();
|
|
156
|
+
if (!value) continue;
|
|
157
|
+
switch (name) {
|
|
158
|
+
case 'color':
|
|
159
|
+
out.color = value;
|
|
160
|
+
break;
|
|
161
|
+
case 'background':
|
|
162
|
+
case 'background-color':
|
|
163
|
+
out.bg = value;
|
|
164
|
+
break;
|
|
165
|
+
case 'font-weight': {
|
|
166
|
+
const n = Number(value);
|
|
167
|
+
if (value === 'bold' || value === 'bolder' || n >= 600)
|
|
168
|
+
out.weight = 700;
|
|
169
|
+
else if (value === 'normal' || (Number.isFinite(n) && n < 600))
|
|
170
|
+
out.weight = 'normal';
|
|
171
|
+
break;
|
|
172
|
+
}
|
|
173
|
+
case 'font-style':
|
|
174
|
+
out.style =
|
|
175
|
+
value === 'italic' || value === 'oblique' ? 'italic' : 'normal';
|
|
176
|
+
break;
|
|
177
|
+
case 'text-decoration':
|
|
178
|
+
case 'text-decoration-line':
|
|
179
|
+
if (/line-through/.test(value))
|
|
180
|
+
out.strike = out.color ?? under.color ?? 'currentColor';
|
|
181
|
+
if (/underline/.test(value))
|
|
182
|
+
out.underline = out.color ?? under.color ?? 'currentColor';
|
|
183
|
+
break;
|
|
184
|
+
case 'font-family':
|
|
185
|
+
out.family = value;
|
|
186
|
+
break;
|
|
187
|
+
case 'font-size': {
|
|
188
|
+
const px = /^(\d+(?:\.\d+)?)px$/.exec(value);
|
|
189
|
+
if (px) out.size = Number(px[1]);
|
|
190
|
+
break;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
return out;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
function str(value: unknown, fallback: string): string {
|
|
198
|
+
return typeof value === 'string' && value ? value : fallback;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/** The first word of a code block's info string — its language. */
|
|
202
|
+
function languageOf(node: PMNode): string {
|
|
203
|
+
const info = node.attrs.params ?? node.attrs.language ?? '';
|
|
204
|
+
return String(info).trim().split(/\s/, 1)[0].toLowerCase();
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/** What kind of textblock this is, for its look: its name, then its tag. */
|
|
208
|
+
function blockKind(node: PMNode): {
|
|
209
|
+
kind: 'paragraph' | 'heading' | 'code';
|
|
210
|
+
level: number;
|
|
211
|
+
} {
|
|
212
|
+
const name = node.type.name;
|
|
213
|
+
if (node.type.spec.code || name === 'code_block' || name === 'codeBlock') {
|
|
214
|
+
return { kind: 'code', level: 0 };
|
|
215
|
+
}
|
|
216
|
+
if (name === 'heading') {
|
|
217
|
+
return { kind: 'heading', level: Number(node.attrs.level ?? 1) };
|
|
218
|
+
}
|
|
219
|
+
const dom = domTagOf(node.type.spec, node);
|
|
220
|
+
const h = dom && /^h([1-6])$/.exec(dom.tag);
|
|
221
|
+
if (h) return { kind: 'heading', level: Number(h[1]) };
|
|
222
|
+
if (dom?.tag === 'pre') return { kind: 'code', level: 0 };
|
|
223
|
+
return { kind: 'paragraph', level: 0 };
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
export function deriveLook(
|
|
227
|
+
theme: Record<string, unknown>,
|
|
228
|
+
options: LookOptions,
|
|
229
|
+
): EditorLook {
|
|
230
|
+
const muted = str(theme.textMuted, '#7f8c8d');
|
|
231
|
+
const text = options.dim ? muted : str(theme.text, '#2d3436');
|
|
232
|
+
const accent = str(theme.accent, '#2980b9');
|
|
233
|
+
const accentText = str(theme.accentText, '#ffffff');
|
|
234
|
+
const link = str(theme.link, accent);
|
|
235
|
+
const border = str(theme.border, '#b2bec3');
|
|
236
|
+
const background = str(theme.background, '#ffffff');
|
|
237
|
+
const surface = str(theme.surface, background);
|
|
238
|
+
const size = options.fontSize ?? Number(theme.fontSize ?? 14);
|
|
239
|
+
const family = options.fontFamily ?? str(theme.fontFamily, 'sans-serif');
|
|
240
|
+
const mono = options.monoFamily ?? 'monospace';
|
|
241
|
+
const selection = str(theme.selection, tint(accent, 0.35));
|
|
242
|
+
const caret = str(theme.caret, text);
|
|
243
|
+
const code = codeBlockLook(theme, { baseSize: size, monoFamily: mono });
|
|
244
|
+
const codeBg = tint(text, 0.08);
|
|
245
|
+
const highlight = tint('#f5c400', 0.45);
|
|
246
|
+
const radius = Number(theme.radius ?? 6);
|
|
247
|
+
|
|
248
|
+
const markStyles = options.markStyles;
|
|
249
|
+
const resolveLanguage = options.resolveLanguage;
|
|
250
|
+
const highlightCode = options.highlight !== false;
|
|
251
|
+
|
|
252
|
+
const markStyle = (mark: Mark, under: RunStyle): RunStyle => {
|
|
253
|
+
const role =
|
|
254
|
+
MARK_ROLES[mark.type.name] ??
|
|
255
|
+
MARK_ROLES[domTagOf(mark.type.spec, mark)?.tag ?? ''];
|
|
256
|
+
let out: RunStyle = {};
|
|
257
|
+
switch (role) {
|
|
258
|
+
case 'strong':
|
|
259
|
+
out = { weight: 700 };
|
|
260
|
+
break;
|
|
261
|
+
case 'em':
|
|
262
|
+
out = { style: 'italic' };
|
|
263
|
+
break;
|
|
264
|
+
case 'code':
|
|
265
|
+
out = {
|
|
266
|
+
family: mono,
|
|
267
|
+
size: Math.round((under.size ?? size) * 0.9),
|
|
268
|
+
color: under.color === muted ? muted : text,
|
|
269
|
+
bg: codeBg,
|
|
270
|
+
};
|
|
271
|
+
break;
|
|
272
|
+
case 'strike':
|
|
273
|
+
out = { strike: under.color ?? text };
|
|
274
|
+
break;
|
|
275
|
+
case 'link': {
|
|
276
|
+
const href = mark.attrs.href;
|
|
277
|
+
out = {
|
|
278
|
+
color: link,
|
|
279
|
+
underline: link,
|
|
280
|
+
href: typeof href === 'string' ? href : null,
|
|
281
|
+
};
|
|
282
|
+
break;
|
|
283
|
+
}
|
|
284
|
+
case 'underline':
|
|
285
|
+
out = { underline: under.color ?? text };
|
|
286
|
+
break;
|
|
287
|
+
case 'highlight':
|
|
288
|
+
out = { bg: str(mark.attrs.color, highlight) };
|
|
289
|
+
break;
|
|
290
|
+
case 'sub':
|
|
291
|
+
case 'sup':
|
|
292
|
+
out = { size: Math.round((under.size ?? size) * 0.8) };
|
|
293
|
+
break;
|
|
294
|
+
case 'textStyle': {
|
|
295
|
+
const a = mark.attrs as Record<string, unknown>;
|
|
296
|
+
if (typeof a.color === 'string') out.color = a.color;
|
|
297
|
+
if (typeof a.fontFamily === 'string') out.family = a.fontFamily;
|
|
298
|
+
if (typeof a.fontSize === 'string') {
|
|
299
|
+
const px = /^(\d+(?:\.\d+)?)px$/.exec(a.fontSize);
|
|
300
|
+
if (px) out.size = Number(px[1]);
|
|
301
|
+
}
|
|
302
|
+
break;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
// an unknown mark's own `style` attribute, and a known one's too
|
|
306
|
+
const dom = domTagOf(mark.type.spec, mark);
|
|
307
|
+
if (dom && typeof dom.attrs.style === 'string') {
|
|
308
|
+
out = { ...out, ...styleFromCSS(dom.attrs.style, { ...under, ...out }) };
|
|
309
|
+
}
|
|
310
|
+
const custom = markStyles?.[mark.type.name];
|
|
311
|
+
if (custom) {
|
|
312
|
+
const merged = { ...under, ...out };
|
|
313
|
+
out = {
|
|
314
|
+
...out,
|
|
315
|
+
...(typeof custom === 'function' ? custom(mark, merged) : custom),
|
|
316
|
+
};
|
|
317
|
+
}
|
|
318
|
+
return out;
|
|
319
|
+
};
|
|
320
|
+
|
|
321
|
+
const atom = (node: PMNode): { text: string; style?: RunStyle } => {
|
|
322
|
+
const name = node.type.name;
|
|
323
|
+
if (
|
|
324
|
+
name === 'hard_break' ||
|
|
325
|
+
name === 'hardBreak' ||
|
|
326
|
+
domTagOf(node.type.spec, node)?.tag === 'br'
|
|
327
|
+
) {
|
|
328
|
+
return { text: '\n' };
|
|
329
|
+
}
|
|
330
|
+
if (name === 'image') {
|
|
331
|
+
const src = String(node.attrs.src ?? '');
|
|
332
|
+
const label =
|
|
333
|
+
str(node.attrs.alt, '') ||
|
|
334
|
+
str(node.attrs.title, '') ||
|
|
335
|
+
src.split(/[/\\]/).pop() ||
|
|
336
|
+
'image';
|
|
337
|
+
return { text: label, style: { color: muted, bg: codeBg } };
|
|
338
|
+
}
|
|
339
|
+
const leaf = node.type.spec.leafText?.(node) ?? '';
|
|
340
|
+
return { text: leaf || name, style: { color: muted, bg: codeBg } };
|
|
341
|
+
};
|
|
342
|
+
|
|
343
|
+
const cache = new Map<string, InlineLook>();
|
|
344
|
+
const inline = (node: PMNode, context: BlockContext): InlineLook => {
|
|
345
|
+
const { kind, level } = blockKind(node);
|
|
346
|
+
const lang = kind === 'code' ? languageOf(node) : '';
|
|
347
|
+
const key = `${node.type.name}|${kind}|${level}|${lang}|${context.quote ? 'q' : ''}${context.header ? 'h' : ''}`;
|
|
348
|
+
const hit = cache.get(key);
|
|
349
|
+
if (hit) return hit;
|
|
350
|
+
const ink = context.quote ? muted : text;
|
|
351
|
+
let base: RunStyle;
|
|
352
|
+
if (kind === 'heading') {
|
|
353
|
+
const scale = HEADING_SCALES[Math.max(1, Math.min(6, level)) - 1];
|
|
354
|
+
base = {
|
|
355
|
+
family,
|
|
356
|
+
size: Math.round(size * scale),
|
|
357
|
+
weight: 700,
|
|
358
|
+
color: ink,
|
|
359
|
+
};
|
|
360
|
+
} else if (kind === 'code') {
|
|
361
|
+
base = { family: code.family, size: code.size, color: code.color };
|
|
362
|
+
} else {
|
|
363
|
+
base = {
|
|
364
|
+
family,
|
|
365
|
+
size,
|
|
366
|
+
color: ink,
|
|
367
|
+
...(context.header ? { weight: 700 } : null),
|
|
368
|
+
};
|
|
369
|
+
}
|
|
370
|
+
const look: InlineLook = {
|
|
371
|
+
base,
|
|
372
|
+
mark: markStyle,
|
|
373
|
+
atom,
|
|
374
|
+
...(kind === 'code'
|
|
375
|
+
? {
|
|
376
|
+
code: (source: string) =>
|
|
377
|
+
codeBlockRuns(source, code, {
|
|
378
|
+
lang,
|
|
379
|
+
highlight: highlightCode,
|
|
380
|
+
...(resolveLanguage ? { resolveLanguage } : null),
|
|
381
|
+
}),
|
|
382
|
+
}
|
|
383
|
+
: null),
|
|
384
|
+
};
|
|
385
|
+
cache.set(key, look);
|
|
386
|
+
return look;
|
|
387
|
+
};
|
|
388
|
+
|
|
389
|
+
return {
|
|
390
|
+
size,
|
|
391
|
+
family,
|
|
392
|
+
mono,
|
|
393
|
+
text,
|
|
394
|
+
muted,
|
|
395
|
+
link,
|
|
396
|
+
accent,
|
|
397
|
+
accentText,
|
|
398
|
+
border,
|
|
399
|
+
background,
|
|
400
|
+
surface,
|
|
401
|
+
selection,
|
|
402
|
+
selectionBlurred: tint(text, 0.14),
|
|
403
|
+
caret,
|
|
404
|
+
codeBg,
|
|
405
|
+
headerBg: tint(text, 0.05),
|
|
406
|
+
highlight,
|
|
407
|
+
radius,
|
|
408
|
+
blockGap: Math.round(size * 0.7),
|
|
409
|
+
headingScales: HEADING_SCALES,
|
|
410
|
+
code,
|
|
411
|
+
key: [
|
|
412
|
+
text,
|
|
413
|
+
muted,
|
|
414
|
+
link,
|
|
415
|
+
accent,
|
|
416
|
+
border,
|
|
417
|
+
background,
|
|
418
|
+
size,
|
|
419
|
+
family,
|
|
420
|
+
mono,
|
|
421
|
+
selection,
|
|
422
|
+
caret,
|
|
423
|
+
highlightCode,
|
|
424
|
+
].join('|'),
|
|
425
|
+
inline,
|
|
426
|
+
};
|
|
427
|
+
}
|