@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,145 @@
|
|
|
1
|
+
import type { Element as DhElement } from 'domhandler';
|
|
2
|
+
import { DOMParser, DOMSerializer, Fragment } from 'prosemirror-model';
|
|
3
|
+
import type { Node as PMNode, ParseOptions, Schema, Slice } from 'prosemirror-model';
|
|
4
|
+
/** A `style` attribute, as the declaration object `DOMParser`'s style rules
|
|
5
|
+
* and a schema's `getAttrs` read: `getPropertyValue` for the former,
|
|
6
|
+
* camelCase properties for the latter. */
|
|
7
|
+
export declare class ShimStyle {
|
|
8
|
+
[property: string]: unknown;
|
|
9
|
+
private readonly _names;
|
|
10
|
+
private readonly _values;
|
|
11
|
+
constructor(css: string);
|
|
12
|
+
private _set;
|
|
13
|
+
get length(): number;
|
|
14
|
+
item(index: number): string;
|
|
15
|
+
getPropertyValue(name: string): string;
|
|
16
|
+
get cssText(): string;
|
|
17
|
+
}
|
|
18
|
+
declare abstract class ShimNode {
|
|
19
|
+
abstract readonly nodeType: number;
|
|
20
|
+
abstract readonly nodeName: string;
|
|
21
|
+
ownerDocument: ShimDocument;
|
|
22
|
+
parentNode: ShimParent | null;
|
|
23
|
+
nextSibling: ShimNode | null;
|
|
24
|
+
previousSibling: ShimNode | null;
|
|
25
|
+
abstract get textContent(): string;
|
|
26
|
+
contains(other: ShimNode | null): boolean;
|
|
27
|
+
}
|
|
28
|
+
declare abstract class ShimParent extends ShimNode {
|
|
29
|
+
readonly childNodes: ShimNode[];
|
|
30
|
+
get firstChild(): ShimNode | null;
|
|
31
|
+
get lastChild(): ShimNode | null;
|
|
32
|
+
get textContent(): string;
|
|
33
|
+
appendChild<T extends ShimNode>(child: T): T;
|
|
34
|
+
removeChild<T extends ShimNode>(child: T): T;
|
|
35
|
+
}
|
|
36
|
+
export declare class ShimText extends ShimNode {
|
|
37
|
+
nodeValue: string;
|
|
38
|
+
readonly nodeType = 3;
|
|
39
|
+
readonly nodeName = "#text";
|
|
40
|
+
constructor(doc: ShimDocument, nodeValue: string);
|
|
41
|
+
get textContent(): string;
|
|
42
|
+
}
|
|
43
|
+
export declare class ShimElement extends ShimParent {
|
|
44
|
+
/** The parser's node, which selectors are matched against. */
|
|
45
|
+
readonly source: DhElement;
|
|
46
|
+
readonly nodeType = 1;
|
|
47
|
+
readonly nodeName: string;
|
|
48
|
+
readonly tagName: string;
|
|
49
|
+
readonly localName: string;
|
|
50
|
+
readonly namespaceURI = "http://www.w3.org/1999/xhtml";
|
|
51
|
+
readonly style: ShimStyle;
|
|
52
|
+
private readonly _attrs;
|
|
53
|
+
constructor(doc: ShimDocument,
|
|
54
|
+
/** The parser's node, which selectors are matched against. */
|
|
55
|
+
source: DhElement);
|
|
56
|
+
getAttribute(name: string): string | null;
|
|
57
|
+
hasAttribute(name: string): boolean;
|
|
58
|
+
get attributes(): {
|
|
59
|
+
name: string;
|
|
60
|
+
value: string;
|
|
61
|
+
}[];
|
|
62
|
+
get id(): string;
|
|
63
|
+
get className(): string;
|
|
64
|
+
get classList(): {
|
|
65
|
+
contains(name: string): boolean;
|
|
66
|
+
length: number;
|
|
67
|
+
};
|
|
68
|
+
matches(selector: string): boolean;
|
|
69
|
+
querySelector(selector: string): ShimElement | null;
|
|
70
|
+
querySelectorAll(selector: string): ShimElement[];
|
|
71
|
+
}
|
|
72
|
+
export declare class ShimDocument extends ShimParent {
|
|
73
|
+
readonly nodeType = 9;
|
|
74
|
+
readonly nodeName = "#document";
|
|
75
|
+
private readonly _shims;
|
|
76
|
+
constructor();
|
|
77
|
+
createTextNode(text: string): ShimText;
|
|
78
|
+
/** @internal — the shim a parser element became. */
|
|
79
|
+
shimOf(node: DhElement): ShimElement | null;
|
|
80
|
+
/** @internal */
|
|
81
|
+
adopt(node: DhElement): ShimElement;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* HTML → the element DOMParser reads — the counterpart of prosemirror-view's
|
|
85
|
+
* `readHTML`: leading `<meta>`s dropped (a browser's clipboard starts with
|
|
86
|
+
* one), and a fragment that begins inside a table given its table back.
|
|
87
|
+
*/
|
|
88
|
+
export declare function readHTML(html: string): ShimElement;
|
|
89
|
+
/** A whole document of `schema`, from HTML. */
|
|
90
|
+
export declare function docFromHTML(schema: Schema, html: string, options?: ParseOptions): PMNode;
|
|
91
|
+
/** A slice of `schema`, from HTML — open at the sides, the shape
|
|
92
|
+
* `replaceSelection` wants. */
|
|
93
|
+
export declare function sliceFromHTML(schema: Schema, html: string, options?: ParseOptions): Slice;
|
|
94
|
+
/** Parse an element already read with {@link readHTML}. */
|
|
95
|
+
export declare function sliceFromElement(parser: DOMParser, dom: ShimElement, options?: ParseOptions): Slice;
|
|
96
|
+
type OutNode = OutElement | OutText | OutFragment;
|
|
97
|
+
declare class OutText {
|
|
98
|
+
nodeValue: string;
|
|
99
|
+
readonly nodeType = 3;
|
|
100
|
+
constructor(nodeValue: string);
|
|
101
|
+
}
|
|
102
|
+
declare class OutFragment {
|
|
103
|
+
readonly nodeType = 11;
|
|
104
|
+
readonly childNodes: OutNode[];
|
|
105
|
+
appendChild<T extends OutNode>(child: T): T;
|
|
106
|
+
get firstChild(): OutNode | null;
|
|
107
|
+
}
|
|
108
|
+
declare class OutElement {
|
|
109
|
+
readonly nodeType = 1;
|
|
110
|
+
readonly tagName: string;
|
|
111
|
+
readonly nodeName: string;
|
|
112
|
+
readonly attrs: Map<string, string>;
|
|
113
|
+
readonly childNodes: OutNode[];
|
|
114
|
+
/** DOMSerializer writes a `style` attribute as `style.cssText`. */
|
|
115
|
+
readonly style: {
|
|
116
|
+
cssText: string;
|
|
117
|
+
};
|
|
118
|
+
constructor(tag: string);
|
|
119
|
+
setAttribute(name: string, value: unknown): void;
|
|
120
|
+
setAttributeNS(_ns: string, name: string, value: unknown): void;
|
|
121
|
+
getAttribute(name: string): string | null;
|
|
122
|
+
removeAttribute(name: string): void;
|
|
123
|
+
appendChild<T extends OutNode>(child: T): T;
|
|
124
|
+
get firstChild(): OutNode | null;
|
|
125
|
+
}
|
|
126
|
+
/** Serialize content through the schema's `toDOM`, as a fragment of the
|
|
127
|
+
* printed tree — the clipboard adds its own attribute before printing. */
|
|
128
|
+
export declare function renderFragment(schema: Schema, content: Fragment): {
|
|
129
|
+
html(): string;
|
|
130
|
+
firstElement(): OutElement | null;
|
|
131
|
+
};
|
|
132
|
+
/**
|
|
133
|
+
* The HTML a copy offers other applications — prosemirror-view's
|
|
134
|
+
* `serializeForClipboard`, printed rather than put in a DOM: the content
|
|
135
|
+
* through `serializer`, wrapped in a table when it starts with a table's
|
|
136
|
+
* parts (a cell alone is not HTML any reader keeps), and ProseMirror's
|
|
137
|
+
* `data-pm-slice` marker on the first element, so a ProseMirror editor
|
|
138
|
+
* anywhere — this one, or one in a browser — pastes it back with its open
|
|
139
|
+
* sides and its context intact.
|
|
140
|
+
*/
|
|
141
|
+
export declare function clipboardHTML(serializer: DOMSerializer, content: Fragment, openStart: number, openEnd: number, context: unknown[]): string;
|
|
142
|
+
/** A document or a fragment as HTML, through the schema's `toDOM`. */
|
|
143
|
+
export declare function htmlFromContent(schema: Schema, content: Fragment | PMNode): string;
|
|
144
|
+
export {};
|
|
145
|
+
//# sourceMappingURL=html.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../src/rich-text-editor/html.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,516 @@
|
|
|
1
|
+
// HTML in and out of a document, through ProseMirror's own DOMParser and
|
|
2
|
+
// DOMSerializer — with no DOM.
|
|
3
|
+
//
|
|
4
|
+
// Both classes are written against the browser's DOM, and both are still the
|
|
5
|
+
// right thing to use: every schema in the ecosystem already says how it reads
|
|
6
|
+
// HTML (`parseDOM` rules) and how it writes it (`toDOM`), so going through
|
|
7
|
+
// them makes a paste from a browser, `format="html"` and a copy another
|
|
8
|
+
// application can read work for *any* schema — the default one here,
|
|
9
|
+
// prosemirror-schema-basic's, a TipTap extension's — with nothing written per
|
|
10
|
+
// node. Reimplementing either would mean a second reading of every schema's
|
|
11
|
+
// rules, and the first one to disagree with ProseMirror's would be a bug.
|
|
12
|
+
//
|
|
13
|
+
// So this module supplies the smallest DOM each of them touches.
|
|
14
|
+
//
|
|
15
|
+
// **Reading.** htmlparser2 builds the tree — already installed, for the
|
|
16
|
+
// reason `src/html/dom.ts` gives — and it is re-dressed in nodes that answer
|
|
17
|
+
// what `DOMParser` asks: `nodeType`/`nodeName`, the sibling links, the
|
|
18
|
+
// attributes, `style` as a declaration block, `matches`/`querySelector`
|
|
19
|
+
// through css-select, `appendChild` (its list normalization moves nodes), and
|
|
20
|
+
// an `ownerDocument` that can make a text node. Selector matching runs on the
|
|
21
|
+
// parser's own tree, so a structural selector sees the markup as written,
|
|
22
|
+
// not after that normalization; the rules schemas actually write are a tag
|
|
23
|
+
// and an attribute, which do not care.
|
|
24
|
+
//
|
|
25
|
+
// **Writing.** `DOMSerializer` takes a `document` option, and a four-method
|
|
26
|
+
// one that builds plain objects is all it calls; they are then printed.
|
|
27
|
+
import { Parser } from 'htmlparser2';
|
|
28
|
+
import { DomHandler } from 'domhandler';
|
|
29
|
+
import { is, selectAll, selectOne } from 'css-select';
|
|
30
|
+
import { DOMParser, DOMSerializer, Fragment } from 'prosemirror-model';
|
|
31
|
+
const HTML_NS = 'http://www.w3.org/1999/xhtml';
|
|
32
|
+
// --- reading ---------------------------------------------------------------
|
|
33
|
+
/** `font-weight` → `fontWeight`, the name a `getAttrs` reads off `style`. */
|
|
34
|
+
function camel(name) {
|
|
35
|
+
return name.replace(/-([a-z])/g, (_, c) => c.toUpperCase());
|
|
36
|
+
}
|
|
37
|
+
/** Split a declaration block on the semicolons that end declarations — not
|
|
38
|
+
* the ones inside a `url(…)` or a quoted string. */
|
|
39
|
+
function declarations(css) {
|
|
40
|
+
const out = [];
|
|
41
|
+
let depth = 0;
|
|
42
|
+
let quote = '';
|
|
43
|
+
let start = 0;
|
|
44
|
+
for (let i = 0; i < css.length; i++) {
|
|
45
|
+
const ch = css[i];
|
|
46
|
+
if (quote) {
|
|
47
|
+
if (ch === quote && css[i - 1] !== '\\')
|
|
48
|
+
quote = '';
|
|
49
|
+
}
|
|
50
|
+
else if (ch === '"' || ch === "'")
|
|
51
|
+
quote = ch;
|
|
52
|
+
else if (ch === '(')
|
|
53
|
+
depth++;
|
|
54
|
+
else if (ch === ')')
|
|
55
|
+
depth = Math.max(0, depth - 1);
|
|
56
|
+
else if (ch === ';' && depth === 0) {
|
|
57
|
+
out.push(css.slice(start, i));
|
|
58
|
+
start = i + 1;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
out.push(css.slice(start));
|
|
62
|
+
return out;
|
|
63
|
+
}
|
|
64
|
+
const STYLE_MEMBERS = new Set([
|
|
65
|
+
'length',
|
|
66
|
+
'item',
|
|
67
|
+
'getPropertyValue',
|
|
68
|
+
'cssText',
|
|
69
|
+
]);
|
|
70
|
+
/** A `style` attribute, as the declaration object `DOMParser`'s style rules
|
|
71
|
+
* and a schema's `getAttrs` read: `getPropertyValue` for the former,
|
|
72
|
+
* camelCase properties for the latter. */
|
|
73
|
+
export class ShimStyle {
|
|
74
|
+
_names = [];
|
|
75
|
+
_values = new Map();
|
|
76
|
+
constructor(css) {
|
|
77
|
+
for (const decl of declarations(css)) {
|
|
78
|
+
const colon = decl.indexOf(':');
|
|
79
|
+
if (colon <= 0)
|
|
80
|
+
continue;
|
|
81
|
+
const name = decl.slice(0, colon).trim().toLowerCase();
|
|
82
|
+
const value = decl
|
|
83
|
+
.slice(colon + 1)
|
|
84
|
+
.replace(/!\s*important\s*$/i, '')
|
|
85
|
+
.trim();
|
|
86
|
+
if (!name || !value)
|
|
87
|
+
continue;
|
|
88
|
+
this._set(name, value);
|
|
89
|
+
// a browser reports the shorthand's longhand too, and rules are
|
|
90
|
+
// written against either
|
|
91
|
+
if (name === 'text-decoration')
|
|
92
|
+
this._set('text-decoration-line', value);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
_set(name, value) {
|
|
96
|
+
if (!this._values.has(name))
|
|
97
|
+
this._names.push(name);
|
|
98
|
+
this._values.set(name, value);
|
|
99
|
+
const prop = camel(name);
|
|
100
|
+
if (!STYLE_MEMBERS.has(prop))
|
|
101
|
+
this[prop] = value;
|
|
102
|
+
}
|
|
103
|
+
get length() {
|
|
104
|
+
return this._names.length;
|
|
105
|
+
}
|
|
106
|
+
item(index) {
|
|
107
|
+
return this._names[index] ?? '';
|
|
108
|
+
}
|
|
109
|
+
getPropertyValue(name) {
|
|
110
|
+
return this._values.get(name.toLowerCase()) ?? '';
|
|
111
|
+
}
|
|
112
|
+
get cssText() {
|
|
113
|
+
return this._names.map((n) => `${n}: ${this._values.get(n)}`).join('; ');
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
class ShimNode {
|
|
117
|
+
ownerDocument;
|
|
118
|
+
parentNode = null;
|
|
119
|
+
nextSibling = null;
|
|
120
|
+
previousSibling = null;
|
|
121
|
+
contains(other) {
|
|
122
|
+
for (let n = other; n; n = n.parentNode) {
|
|
123
|
+
if (n === this)
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
class ShimParent extends ShimNode {
|
|
130
|
+
childNodes = [];
|
|
131
|
+
get firstChild() {
|
|
132
|
+
return this.childNodes[0] ?? null;
|
|
133
|
+
}
|
|
134
|
+
get lastChild() {
|
|
135
|
+
return this.childNodes[this.childNodes.length - 1] ?? null;
|
|
136
|
+
}
|
|
137
|
+
get textContent() {
|
|
138
|
+
let out = '';
|
|
139
|
+
for (const child of this.childNodes)
|
|
140
|
+
out += child.textContent;
|
|
141
|
+
return out;
|
|
142
|
+
}
|
|
143
|
+
appendChild(child) {
|
|
144
|
+
child.parentNode?.removeChild(child);
|
|
145
|
+
const last = this.lastChild;
|
|
146
|
+
child.parentNode = this;
|
|
147
|
+
child.previousSibling = last;
|
|
148
|
+
child.nextSibling = null;
|
|
149
|
+
if (last)
|
|
150
|
+
last.nextSibling = child;
|
|
151
|
+
this.childNodes.push(child);
|
|
152
|
+
return child;
|
|
153
|
+
}
|
|
154
|
+
removeChild(child) {
|
|
155
|
+
const at = this.childNodes.indexOf(child);
|
|
156
|
+
if (at < 0)
|
|
157
|
+
return child;
|
|
158
|
+
this.childNodes.splice(at, 1);
|
|
159
|
+
if (child.previousSibling)
|
|
160
|
+
child.previousSibling.nextSibling = child.nextSibling;
|
|
161
|
+
if (child.nextSibling)
|
|
162
|
+
child.nextSibling.previousSibling = child.previousSibling;
|
|
163
|
+
child.parentNode = null;
|
|
164
|
+
child.previousSibling = null;
|
|
165
|
+
child.nextSibling = null;
|
|
166
|
+
return child;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
export class ShimText extends ShimNode {
|
|
170
|
+
nodeValue;
|
|
171
|
+
nodeType = 3;
|
|
172
|
+
nodeName = '#text';
|
|
173
|
+
constructor(doc, nodeValue) {
|
|
174
|
+
super();
|
|
175
|
+
this.nodeValue = nodeValue;
|
|
176
|
+
this.ownerDocument = doc;
|
|
177
|
+
}
|
|
178
|
+
get textContent() {
|
|
179
|
+
return this.nodeValue;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
export class ShimElement extends ShimParent {
|
|
183
|
+
source;
|
|
184
|
+
nodeType = 1;
|
|
185
|
+
nodeName;
|
|
186
|
+
tagName;
|
|
187
|
+
localName;
|
|
188
|
+
namespaceURI = HTML_NS;
|
|
189
|
+
style;
|
|
190
|
+
_attrs;
|
|
191
|
+
constructor(doc,
|
|
192
|
+
/** The parser's node, which selectors are matched against. */
|
|
193
|
+
source) {
|
|
194
|
+
super();
|
|
195
|
+
this.source = source;
|
|
196
|
+
this.ownerDocument = doc;
|
|
197
|
+
this.localName = source.name.toLowerCase();
|
|
198
|
+
this.tagName = this.localName.toUpperCase();
|
|
199
|
+
this.nodeName = this.tagName;
|
|
200
|
+
this._attrs = new Map(Object.entries(source.attribs ?? {}).map(([k, v]) => [
|
|
201
|
+
k.toLowerCase(),
|
|
202
|
+
v,
|
|
203
|
+
]));
|
|
204
|
+
this.style = new ShimStyle(this._attrs.get('style') ?? '');
|
|
205
|
+
}
|
|
206
|
+
getAttribute(name) {
|
|
207
|
+
return this._attrs.get(name.toLowerCase()) ?? null;
|
|
208
|
+
}
|
|
209
|
+
hasAttribute(name) {
|
|
210
|
+
return this._attrs.has(name.toLowerCase());
|
|
211
|
+
}
|
|
212
|
+
get attributes() {
|
|
213
|
+
return [...this._attrs].map(([name, value]) => ({ name, value }));
|
|
214
|
+
}
|
|
215
|
+
get id() {
|
|
216
|
+
return this.getAttribute('id') ?? '';
|
|
217
|
+
}
|
|
218
|
+
get className() {
|
|
219
|
+
return this.getAttribute('class') ?? '';
|
|
220
|
+
}
|
|
221
|
+
get classList() {
|
|
222
|
+
const list = this.className.split(/\s+/).filter(Boolean);
|
|
223
|
+
return { contains: (name) => list.includes(name), length: list.length };
|
|
224
|
+
}
|
|
225
|
+
matches(selector) {
|
|
226
|
+
try {
|
|
227
|
+
return is(this.source, selector);
|
|
228
|
+
}
|
|
229
|
+
catch {
|
|
230
|
+
return false; // a selector css-select cannot read matches nothing
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
querySelector(selector) {
|
|
234
|
+
try {
|
|
235
|
+
const found = selectOne(selector, this.source.children);
|
|
236
|
+
return found ? this.ownerDocument.shimOf(found) : null;
|
|
237
|
+
}
|
|
238
|
+
catch {
|
|
239
|
+
return null;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
querySelectorAll(selector) {
|
|
243
|
+
try {
|
|
244
|
+
return selectAll(selector, this.source.children)
|
|
245
|
+
.map((found) => this.ownerDocument.shimOf(found))
|
|
246
|
+
.filter((e) => e !== null);
|
|
247
|
+
}
|
|
248
|
+
catch {
|
|
249
|
+
return [];
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
export class ShimDocument extends ShimParent {
|
|
254
|
+
nodeType = 9;
|
|
255
|
+
nodeName = '#document';
|
|
256
|
+
_shims = new WeakMap();
|
|
257
|
+
constructor() {
|
|
258
|
+
super();
|
|
259
|
+
this.ownerDocument = this;
|
|
260
|
+
}
|
|
261
|
+
createTextNode(text) {
|
|
262
|
+
return new ShimText(this, text);
|
|
263
|
+
}
|
|
264
|
+
/** @internal — the shim a parser element became. */
|
|
265
|
+
shimOf(node) {
|
|
266
|
+
return this._shims.get(node) ?? null;
|
|
267
|
+
}
|
|
268
|
+
/** @internal */
|
|
269
|
+
adopt(node) {
|
|
270
|
+
const shim = new ShimElement(this, node);
|
|
271
|
+
this._shims.set(node, shim);
|
|
272
|
+
return shim;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
function isElementNode(node) {
|
|
276
|
+
return node.type === 'tag' || node.type === 'script' || node.type === 'style';
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* The shim tree for a parsed fragment, under `into`. An explicit stack
|
|
280
|
+
* rather than recursion: a pasted document is somebody else's markup, and a
|
|
281
|
+
* degenerately nested one should not be the thing that finds the call-stack
|
|
282
|
+
* limit (`src/html/dom.ts` measured the same walk).
|
|
283
|
+
*/
|
|
284
|
+
function build(doc, into, nodes) {
|
|
285
|
+
const stack = [[into, nodes]];
|
|
286
|
+
while (stack.length > 0) {
|
|
287
|
+
const [parent, kids] = stack.pop();
|
|
288
|
+
for (const kid of kids) {
|
|
289
|
+
if (kid.type === 'text') {
|
|
290
|
+
parent.appendChild(new ShimText(doc, kid.data));
|
|
291
|
+
}
|
|
292
|
+
else if (isElementNode(kid)) {
|
|
293
|
+
const shim = parent.appendChild(doc.adopt(kid));
|
|
294
|
+
if (kid.children.length > 0)
|
|
295
|
+
stack.push([shim, kid.children]);
|
|
296
|
+
}
|
|
297
|
+
// comments, directives and CDATA: DOMParser skips them anyway
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
/** Elements that only parse inside a table — ProseMirror's (and jQuery's)
|
|
302
|
+
* list, so a copied cell pastes as a cell. */
|
|
303
|
+
const WRAP_MAP = {
|
|
304
|
+
thead: ['table'],
|
|
305
|
+
tbody: ['table'],
|
|
306
|
+
tfoot: ['table'],
|
|
307
|
+
caption: ['table'],
|
|
308
|
+
colgroup: ['table'],
|
|
309
|
+
col: ['table', 'colgroup'],
|
|
310
|
+
tr: ['table', 'tbody'],
|
|
311
|
+
td: ['table', 'tbody', 'tr'],
|
|
312
|
+
th: ['table', 'tbody', 'tr'],
|
|
313
|
+
};
|
|
314
|
+
/**
|
|
315
|
+
* HTML → the element DOMParser reads — the counterpart of prosemirror-view's
|
|
316
|
+
* `readHTML`: leading `<meta>`s dropped (a browser's clipboard starts with
|
|
317
|
+
* one), and a fragment that begins inside a table given its table back.
|
|
318
|
+
*/
|
|
319
|
+
export function readHTML(html) {
|
|
320
|
+
const metas = /^(\s*<meta [^>]*>)*/i.exec(html);
|
|
321
|
+
if (metas)
|
|
322
|
+
html = html.slice(metas[0].length);
|
|
323
|
+
const first = /<([a-z][^>\s]+)/i.exec(html);
|
|
324
|
+
const wrap = first ? WRAP_MAP[first[1].toLowerCase()] : undefined;
|
|
325
|
+
if (wrap) {
|
|
326
|
+
html =
|
|
327
|
+
wrap.map((n) => `<${n}>`).join('') +
|
|
328
|
+
html +
|
|
329
|
+
wrap
|
|
330
|
+
.map((n) => `</${n}>`)
|
|
331
|
+
.reverse()
|
|
332
|
+
.join('');
|
|
333
|
+
}
|
|
334
|
+
const handler = new DomHandler();
|
|
335
|
+
const parser = new Parser(handler);
|
|
336
|
+
parser.write(`<body>${html}</body>`);
|
|
337
|
+
parser.end();
|
|
338
|
+
const doc = new ShimDocument();
|
|
339
|
+
build(doc, doc, handler.root.children);
|
|
340
|
+
let body = doc.childNodes.find((n) => n instanceof ShimElement && n.localName === 'body');
|
|
341
|
+
if (!body)
|
|
342
|
+
throw new Error('readHTML: the parser lost its <body>');
|
|
343
|
+
if (wrap) {
|
|
344
|
+
for (const name of wrap)
|
|
345
|
+
body = body.querySelector(name) ?? body;
|
|
346
|
+
}
|
|
347
|
+
return body;
|
|
348
|
+
}
|
|
349
|
+
/** A whole document of `schema`, from HTML. */
|
|
350
|
+
export function docFromHTML(schema, html, options) {
|
|
351
|
+
return DOMParser.fromSchema(schema).parse(readHTML(html), options);
|
|
352
|
+
}
|
|
353
|
+
/** A slice of `schema`, from HTML — open at the sides, the shape
|
|
354
|
+
* `replaceSelection` wants. */
|
|
355
|
+
export function sliceFromHTML(schema, html, options) {
|
|
356
|
+
return DOMParser.fromSchema(schema).parseSlice(readHTML(html), options);
|
|
357
|
+
}
|
|
358
|
+
/** Parse an element already read with {@link readHTML}. */
|
|
359
|
+
export function sliceFromElement(parser, dom, options) {
|
|
360
|
+
return parser.parseSlice(dom, options);
|
|
361
|
+
}
|
|
362
|
+
class OutText {
|
|
363
|
+
nodeValue;
|
|
364
|
+
nodeType = 3;
|
|
365
|
+
constructor(nodeValue) {
|
|
366
|
+
this.nodeValue = nodeValue;
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
class OutFragment {
|
|
370
|
+
nodeType = 11;
|
|
371
|
+
childNodes = [];
|
|
372
|
+
appendChild(child) {
|
|
373
|
+
append(this.childNodes, child);
|
|
374
|
+
return child;
|
|
375
|
+
}
|
|
376
|
+
get firstChild() {
|
|
377
|
+
return this.childNodes[0] ?? null;
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
class OutElement {
|
|
381
|
+
nodeType = 1;
|
|
382
|
+
tagName;
|
|
383
|
+
nodeName;
|
|
384
|
+
attrs = new Map();
|
|
385
|
+
childNodes = [];
|
|
386
|
+
/** DOMSerializer writes a `style` attribute as `style.cssText`. */
|
|
387
|
+
style = { cssText: '' };
|
|
388
|
+
constructor(tag) {
|
|
389
|
+
this.tagName = tag.toLowerCase();
|
|
390
|
+
this.nodeName = this.tagName.toUpperCase();
|
|
391
|
+
}
|
|
392
|
+
setAttribute(name, value) {
|
|
393
|
+
this.attrs.set(name, String(value));
|
|
394
|
+
}
|
|
395
|
+
setAttributeNS(_ns, name, value) {
|
|
396
|
+
this.setAttribute(name, value);
|
|
397
|
+
}
|
|
398
|
+
getAttribute(name) {
|
|
399
|
+
return this.attrs.get(name) ?? null;
|
|
400
|
+
}
|
|
401
|
+
removeAttribute(name) {
|
|
402
|
+
this.attrs.delete(name);
|
|
403
|
+
}
|
|
404
|
+
appendChild(child) {
|
|
405
|
+
append(this.childNodes, child);
|
|
406
|
+
return child;
|
|
407
|
+
}
|
|
408
|
+
get firstChild() {
|
|
409
|
+
return this.childNodes[0] ?? null;
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
function append(list, child) {
|
|
413
|
+
if (child instanceof OutFragment) {
|
|
414
|
+
list.push(...child.childNodes);
|
|
415
|
+
child.childNodes.length = 0;
|
|
416
|
+
}
|
|
417
|
+
else
|
|
418
|
+
list.push(child);
|
|
419
|
+
}
|
|
420
|
+
/** The whole of the `document` DOMSerializer calls. */
|
|
421
|
+
const OUT_DOCUMENT = {
|
|
422
|
+
createElement: (tag) => new OutElement(tag),
|
|
423
|
+
createElementNS: (_ns, tag) => new OutElement(tag),
|
|
424
|
+
createTextNode: (text) => new OutText(text),
|
|
425
|
+
createDocumentFragment: () => new OutFragment(),
|
|
426
|
+
};
|
|
427
|
+
const VOID = new Set([
|
|
428
|
+
'area',
|
|
429
|
+
'base',
|
|
430
|
+
'br',
|
|
431
|
+
'col',
|
|
432
|
+
'embed',
|
|
433
|
+
'hr',
|
|
434
|
+
'img',
|
|
435
|
+
'input',
|
|
436
|
+
'link',
|
|
437
|
+
'meta',
|
|
438
|
+
'source',
|
|
439
|
+
'track',
|
|
440
|
+
'wbr',
|
|
441
|
+
]);
|
|
442
|
+
function escapeText(text) {
|
|
443
|
+
return text
|
|
444
|
+
.replace(/&/g, '&')
|
|
445
|
+
.replace(/</g, '<')
|
|
446
|
+
.replace(/>/g, '>')
|
|
447
|
+
.replace(/ /g, ' ');
|
|
448
|
+
}
|
|
449
|
+
function escapeAttr(text) {
|
|
450
|
+
return escapeText(text).replace(/"/g, '"');
|
|
451
|
+
}
|
|
452
|
+
function print(node) {
|
|
453
|
+
if (node instanceof OutText)
|
|
454
|
+
return escapeText(node.nodeValue);
|
|
455
|
+
if (node instanceof OutFragment)
|
|
456
|
+
return node.childNodes.map(print).join('');
|
|
457
|
+
let attrs = '';
|
|
458
|
+
for (const [name, value] of node.attrs) {
|
|
459
|
+
attrs += ` ${name}="${escapeAttr(value)}"`;
|
|
460
|
+
}
|
|
461
|
+
if (node.style.cssText && !node.attrs.has('style')) {
|
|
462
|
+
attrs += ` style="${escapeAttr(node.style.cssText)}"`;
|
|
463
|
+
}
|
|
464
|
+
if (VOID.has(node.tagName))
|
|
465
|
+
return `<${node.tagName}${attrs}>`;
|
|
466
|
+
return `<${node.tagName}${attrs}>${node.childNodes.map(print).join('')}</${node.tagName}>`;
|
|
467
|
+
}
|
|
468
|
+
/** Serialize content through the schema's `toDOM`, as a fragment of the
|
|
469
|
+
* printed tree — the clipboard adds its own attribute before printing. */
|
|
470
|
+
export function renderFragment(schema, content) {
|
|
471
|
+
const out = DOMSerializer.fromSchema(schema).serializeFragment(content, {
|
|
472
|
+
document: OUT_DOCUMENT,
|
|
473
|
+
});
|
|
474
|
+
return {
|
|
475
|
+
html: () => print(out),
|
|
476
|
+
firstElement: () => out.childNodes.find((n) => n instanceof OutElement) ??
|
|
477
|
+
null,
|
|
478
|
+
};
|
|
479
|
+
}
|
|
480
|
+
/**
|
|
481
|
+
* The HTML a copy offers other applications — prosemirror-view's
|
|
482
|
+
* `serializeForClipboard`, printed rather than put in a DOM: the content
|
|
483
|
+
* through `serializer`, wrapped in a table when it starts with a table's
|
|
484
|
+
* parts (a cell alone is not HTML any reader keeps), and ProseMirror's
|
|
485
|
+
* `data-pm-slice` marker on the first element, so a ProseMirror editor
|
|
486
|
+
* anywhere — this one, or one in a browser — pastes it back with its open
|
|
487
|
+
* sides and its context intact.
|
|
488
|
+
*/
|
|
489
|
+
export function clipboardHTML(serializer, content, openStart, openEnd, context) {
|
|
490
|
+
const out = serializer.serializeFragment(content, {
|
|
491
|
+
document: OUT_DOCUMENT,
|
|
492
|
+
});
|
|
493
|
+
let top = out.childNodes;
|
|
494
|
+
let wrappers = 0;
|
|
495
|
+
let first = top[0];
|
|
496
|
+
let needs;
|
|
497
|
+
if (first instanceof OutElement && (needs = WRAP_MAP[first.tagName])) {
|
|
498
|
+
for (let i = needs.length - 1; i >= 0; i--) {
|
|
499
|
+
const wrapper = new OutElement(needs[i]);
|
|
500
|
+
wrapper.childNodes.push(...top);
|
|
501
|
+
top = [wrapper];
|
|
502
|
+
wrappers++;
|
|
503
|
+
}
|
|
504
|
+
first = top[0];
|
|
505
|
+
}
|
|
506
|
+
if (first instanceof OutElement) {
|
|
507
|
+
first.setAttribute('data-pm-slice', `${openStart} ${openEnd}${wrappers ? ` -${wrappers}` : ''} ${JSON.stringify(context)}`);
|
|
508
|
+
}
|
|
509
|
+
return top.map(print).join('');
|
|
510
|
+
}
|
|
511
|
+
/** A document or a fragment as HTML, through the schema's `toDOM`. */
|
|
512
|
+
export function htmlFromContent(schema, content) {
|
|
513
|
+
const fragment = content instanceof Fragment ? content : content.content;
|
|
514
|
+
return renderFragment(schema, fragment).html();
|
|
515
|
+
}
|
|
516
|
+
//# sourceMappingURL=html.js.map
|