react-native-marcus 0.1.0 → 0.2.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 +220 -63
- package/RNMarcus.podspec +6 -0
- package/android/src/main/java/app/getbullet/marcus/MarcusPackage.kt +2 -1
- package/android/src/main/java/app/getbullet/marcus/MarcusTextDecoratorView.kt +168 -0
- package/android/src/main/java/app/getbullet/marcus/MarcusTextDecoratorViewManager.kt +38 -0
- package/android/src/main/java/app/getbullet/marcus/MarcusTextDecoratorViewManagerSpec.kt +19 -0
- package/android/src/main/java/app/getbullet/marcus/MarcusTextInputDecoratorView.kt +23 -1
- package/android/src/main/java/app/getbullet/marcus/MarkdownBackgroundPainter.kt +147 -0
- package/android/src/main/java/app/getbullet/marcus/MarkdownBackgroundPass.kt +19 -0
- package/android/src/main/java/app/getbullet/marcus/MarkdownCopy.kt +87 -0
- package/android/src/main/java/app/getbullet/marcus/MarkdownFormatter.kt +652 -113
- package/android/src/main/java/app/getbullet/marcus/MarkdownRanges.kt +47 -0
- package/android/src/main/java/app/getbullet/marcus/MarkdownStyle.kt +140 -61
- package/android/src/main/java/app/getbullet/marcus/MarkdownUtils.kt +37 -7
- package/android/src/main/java/app/getbullet/marcus/spans/MarkdownAbsoluteLineHeightSpan.kt +48 -0
- package/android/src/main/java/app/getbullet/marcus/spans/MarkdownBackgroundSpan.kt +102 -48
- package/android/src/main/java/app/getbullet/marcus/spans/MarkdownBlockIndentSpan.kt +22 -4
- package/android/src/main/java/app/getbullet/marcus/spans/MarkdownBulletSpan.kt +78 -0
- package/android/src/main/java/app/getbullet/marcus/spans/MarkdownCodeBlockSpan.kt +177 -0
- package/android/src/main/java/app/getbullet/marcus/spans/MarkdownFontStyleSpan.kt +32 -0
- package/android/src/main/java/app/getbullet/marcus/spans/MarkdownFontWeightSpan.kt +34 -0
- package/android/src/main/java/app/getbullet/marcus/spans/MarkdownGapSpan.kt +24 -11
- package/android/src/main/java/app/getbullet/marcus/spans/MarkdownLetterSpacingSpan.kt +32 -0
- package/android/src/main/java/app/getbullet/marcus/spans/MarkdownTextShadowSpan.kt +32 -0
- package/android/src/main/new_arch/CMakeLists.txt +17 -0
- package/android/src/main/new_arch/RNMarcusSpec.h +1 -0
- package/android/src/main/new_arch/react/renderer/components/RNMarcusSpec/MarcusTextDecoratorShadowNode.cpp +235 -0
- package/android/src/main/new_arch/react/renderer/components/RNMarcusSpec/MarcusTextDecoratorShadowNode.h +62 -0
- package/android/src/reactNativeVersionPatch/CustomMountingManager/81/app/getbullet/marcus/CustomFabricUIManager.java +22 -3
- package/android/src/reactNativeVersionPatch/CustomMountingManager/latest/app/getbullet/marcus/CustomFabricUIManager.java +22 -3
- package/android/src/test/java/app/getbullet/marcus/MarkdownCopyTest.kt +69 -0
- package/android/src/test/java/app/getbullet/marcus/MarkdownFormatterTest.kt +170 -25
- package/android/src/test/java/app/getbullet/marcus/RenderModel.kt +22 -5
- package/android/src/test/java/app/getbullet/marcus/spans/MarkdownCodeBlockSpanTest.kt +91 -0
- package/android/src/test/resources/render-model.txt +221 -16
- package/apple/MarcusSwizzle.h +25 -0
- package/apple/MarcusTextDecoratorComponentView.h +22 -0
- package/apple/MarcusTextDecoratorComponentView.mm +72 -0
- package/apple/MarcusTextDecoratorShadowNode.h +62 -0
- package/apple/MarcusTextDecoratorShadowNode.mm +192 -0
- package/apple/MarcusTextDecoratorViewManager.h +4 -0
- package/apple/MarcusTextDecoratorViewManager.mm +11 -0
- package/apple/MarcusTextInputDecoratorComponentView.mm +1 -1
- package/apple/MarcusTextInputDecoratorShadowNode.mm +1 -1
- package/apple/MarcusTextLayoutManager.h +40 -0
- package/apple/MarcusTextLayoutManager.mm +173 -0
- package/apple/MarkdownAttributes.h +23 -2
- package/apple/MarkdownAttributes.m +6 -0
- package/apple/MarkdownCopy.swift +63 -0
- package/apple/MarkdownDecorator.swift +2 -2
- package/apple/MarkdownFormatter+React.swift +23 -0
- package/apple/MarkdownFormatter.swift +869 -148
- package/apple/MarkdownParagraphLayoutManager.swift +455 -0
- package/apple/MarkdownSwiftInterop.h +0 -1
- package/apple/MarkdownTextBackground.swift +59 -1
- package/apple/MarkdownTextFieldObserver.swift +2 -2
- package/apple/MarkdownTextLayoutFragment.swift +159 -33
- package/apple/MarkdownTextLayoutManagerDelegate.swift +67 -3
- package/apple/MarkdownTextStorageDelegate.swift +2 -2
- package/apple/MarkdownTextViewObserver.swift +2 -2
- package/apple/MarkdownUtils.swift +38 -0
- package/apple/MarkdownWritingDirection.swift +132 -0
- package/apple/RCTMarcusStyle+Codegen.h +115 -9
- package/apple/RCTMarcusStyle.h +128 -31
- package/apple/RCTMarcusStyle.m +48 -0
- package/apple/RCTParagraphComponentView+Marcus.h +17 -0
- package/apple/RCTParagraphComponentView+Marcus.mm +38 -0
- package/apple/RCTTextInputComponentView+Marcus.mm +1 -25
- package/cpp/react/renderer/components/RNMarcusSpec/MarcusTextDecoratorState.h +37 -0
- package/cpp/react/renderer/components/RNMarcusSpec/MarcusTextDecoratorViewComponentDescriptor.h +17 -0
- package/lib/commonjs/MarcusTextDecoratorViewNativeComponent.ts +199 -0
- package/lib/commonjs/MarcusTextInputDecoratorViewNativeComponent.ts +145 -58
- package/lib/commonjs/MarkdownText.js +330 -0
- package/lib/commonjs/MarkdownText.js.map +1 -0
- package/lib/commonjs/MarkdownText.web.js +529 -0
- package/lib/commonjs/MarkdownText.web.js.map +1 -0
- package/lib/commonjs/MarkdownTextInput.js +22 -27
- package/lib/commonjs/MarkdownTextInput.js.map +1 -1
- package/lib/commonjs/MarkdownTextInput.web.js +12 -7
- package/lib/commonjs/MarkdownTextInput.web.js.map +1 -1
- package/lib/commonjs/atomUtils.js +112 -0
- package/lib/commonjs/atomUtils.js.map +1 -0
- package/lib/commonjs/childrenUtils.js +36 -0
- package/lib/commonjs/childrenUtils.js.map +1 -0
- package/lib/commonjs/index.js +8 -7
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/math/environment.js +69 -0
- package/lib/commonjs/math/environment.js.map +1 -0
- package/lib/commonjs/math/index.js +61 -0
- package/lib/commonjs/math/index.js.map +1 -0
- package/lib/commonjs/math/mathjax.js +548 -0
- package/lib/commonjs/math/mathjax.js.map +1 -0
- package/lib/commonjs/metro.js +172 -0
- package/lib/commonjs/metro.js.map +1 -0
- package/lib/commonjs/parser/index.d.ts +3 -0
- package/lib/commonjs/parser/index.js +450 -42
- package/lib/commonjs/parser/index.js.map +4 -4
- package/lib/commonjs/stripUtils.js +743 -0
- package/lib/commonjs/stripUtils.js.map +1 -0
- package/lib/commonjs/styleUtils.js +194 -23
- package/lib/commonjs/styleUtils.js.map +1 -1
- package/lib/commonjs/web/MarkdownElements.css +67 -0
- package/lib/commonjs/web/MarkdownTextInput.css +9 -7
- package/lib/commonjs/web/utils/blockLayout.js +95 -7
- package/lib/commonjs/web/utils/blockLayout.js.map +1 -1
- package/lib/commonjs/web/utils/blockUtils.js +327 -54
- package/lib/commonjs/web/utils/blockUtils.js.map +1 -1
- package/lib/commonjs/web/utils/elementUtils.js +80 -0
- package/lib/commonjs/web/utils/elementUtils.js.map +1 -0
- package/lib/commonjs/web/utils/parserUtils.js +84 -28
- package/lib/commonjs/web/utils/parserUtils.js.map +1 -1
- package/lib/commonjs/web/utils/treeUtils.js +6 -0
- package/lib/commonjs/web/utils/treeUtils.js.map +1 -1
- package/lib/commonjs/web/utils/webStyleUtils.js +25 -5
- package/lib/commonjs/web/utils/webStyleUtils.js.map +1 -1
- package/lib/module/MarcusTextDecoratorViewNativeComponent.ts +199 -0
- package/lib/module/MarcusTextInputDecoratorViewNativeComponent.ts +145 -58
- package/lib/module/MarkdownText.js +325 -0
- package/lib/module/MarkdownText.js.map +1 -0
- package/lib/module/MarkdownText.web.js +524 -0
- package/lib/module/MarkdownText.web.js.map +1 -0
- package/lib/module/MarkdownTextInput.js +24 -29
- package/lib/module/MarkdownTextInput.js.map +1 -1
- package/lib/module/MarkdownTextInput.web.js +12 -7
- package/lib/module/MarkdownTextInput.web.js.map +1 -1
- package/lib/module/atomUtils.js +106 -0
- package/lib/module/atomUtils.js.map +1 -0
- package/lib/module/childrenUtils.js +33 -0
- package/lib/module/childrenUtils.js.map +1 -0
- package/lib/module/index.js +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/math/environment.js +67 -0
- package/lib/module/math/environment.js.map +1 -0
- package/lib/module/math/index.js +56 -0
- package/lib/module/math/index.js.map +1 -0
- package/lib/module/math/mathjax.js +541 -0
- package/lib/module/math/mathjax.js.map +1 -0
- package/lib/module/metro.js +169 -0
- package/lib/module/metro.js.map +1 -0
- package/lib/module/parser/index.d.ts +3 -0
- package/lib/module/parser/index.js +450 -42
- package/lib/module/parser/index.js.map +4 -4
- package/lib/module/stripUtils.js +739 -0
- package/lib/module/stripUtils.js.map +1 -0
- package/lib/module/styleUtils.js +196 -25
- package/lib/module/styleUtils.js.map +1 -1
- package/lib/module/web/MarkdownElements.css +67 -0
- package/lib/module/web/MarkdownTextInput.css +9 -7
- package/lib/module/web/utils/blockLayout.js +94 -8
- package/lib/module/web/utils/blockLayout.js.map +1 -1
- package/lib/module/web/utils/blockUtils.js +328 -56
- package/lib/module/web/utils/blockUtils.js.map +1 -1
- package/lib/module/web/utils/elementUtils.js +75 -0
- package/lib/module/web/utils/elementUtils.js.map +1 -0
- package/lib/module/web/utils/parserUtils.js +86 -30
- package/lib/module/web/utils/parserUtils.js.map +1 -1
- package/lib/module/web/utils/treeUtils.js +6 -0
- package/lib/module/web/utils/treeUtils.js.map +1 -1
- package/lib/module/web/utils/webStyleUtils.js +25 -5
- package/lib/module/web/utils/webStyleUtils.js.map +1 -1
- package/lib/typescript/commonjs/e2e/links.test.d.ts +2 -0
- package/lib/typescript/commonjs/e2e/links.test.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/MarcusTextDecoratorViewNativeComponent.d.ts +93 -0
- package/lib/typescript/commonjs/src/MarcusTextDecoratorViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/MarcusTextInputDecoratorViewNativeComponent.d.ts +64 -51
- package/lib/typescript/commonjs/src/MarcusTextInputDecoratorViewNativeComponent.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/MarkdownText.d.ts +127 -0
- package/lib/typescript/commonjs/src/MarkdownText.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/MarkdownText.web.d.ts +126 -0
- package/lib/typescript/commonjs/src/MarkdownText.web.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/MarkdownTextInput.d.ts +23 -1
- package/lib/typescript/commonjs/src/MarkdownTextInput.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/MarkdownTextInput.web.d.ts +26 -4
- package/lib/typescript/commonjs/src/MarkdownTextInput.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/atomUtils.d.ts +58 -0
- package/lib/typescript/commonjs/src/atomUtils.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/childrenUtils.d.ts +12 -0
- package/lib/typescript/commonjs/src/childrenUtils.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/commonTypes.d.ts +39 -3
- package/lib/typescript/commonjs/src/commonTypes.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/index.d.ts +2 -1
- package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/math/environment.d.ts +7 -0
- package/lib/typescript/commonjs/src/math/environment.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/math/index.d.ts +64 -0
- package/lib/typescript/commonjs/src/math/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/math/mathjax.d.ts +63 -0
- package/lib/typescript/commonjs/src/math/mathjax.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/metro.d.ts +59 -0
- package/lib/typescript/commonjs/src/metro.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/parser/index.d.ts +3 -3
- package/lib/typescript/commonjs/src/parser/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/parser/micromark-extension-mentions.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/rangeUtils.d.ts +1 -1
- package/lib/typescript/commonjs/src/stripUtils.d.ts +108 -0
- package/lib/typescript/commonjs/src/stripUtils.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/styleUtils.d.ts +62 -4
- package/lib/typescript/commonjs/src/styleUtils.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/web/utils/blockLayout.d.ts +32 -4
- package/lib/typescript/commonjs/src/web/utils/blockLayout.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/web/utils/blockUtils.d.ts +20 -8
- package/lib/typescript/commonjs/src/web/utils/blockUtils.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/web/utils/elementUtils.d.ts +37 -0
- package/lib/typescript/commonjs/src/web/utils/elementUtils.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/web/utils/parserUtils.d.ts +5 -5
- package/lib/typescript/commonjs/src/web/utils/parserUtils.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/web/utils/treeUtils.d.ts +6 -1
- package/lib/typescript/commonjs/src/web/utils/treeUtils.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/web/utils/webStyleUtils.d.ts +2 -2
- package/lib/typescript/commonjs/src/web/utils/webStyleUtils.d.ts.map +1 -1
- package/lib/typescript/module/e2e/links.test.d.ts +2 -0
- package/lib/typescript/module/e2e/links.test.d.ts.map +1 -0
- package/lib/typescript/module/src/MarcusTextDecoratorViewNativeComponent.d.ts +93 -0
- package/lib/typescript/module/src/MarcusTextDecoratorViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/module/src/MarcusTextInputDecoratorViewNativeComponent.d.ts +64 -51
- package/lib/typescript/module/src/MarcusTextInputDecoratorViewNativeComponent.d.ts.map +1 -1
- package/lib/typescript/module/src/MarkdownText.d.ts +127 -0
- package/lib/typescript/module/src/MarkdownText.d.ts.map +1 -0
- package/lib/typescript/module/src/MarkdownText.web.d.ts +126 -0
- package/lib/typescript/module/src/MarkdownText.web.d.ts.map +1 -0
- package/lib/typescript/module/src/MarkdownTextInput.d.ts +23 -1
- package/lib/typescript/module/src/MarkdownTextInput.d.ts.map +1 -1
- package/lib/typescript/module/src/MarkdownTextInput.web.d.ts +26 -4
- package/lib/typescript/module/src/MarkdownTextInput.web.d.ts.map +1 -1
- package/lib/typescript/module/src/atomUtils.d.ts +58 -0
- package/lib/typescript/module/src/atomUtils.d.ts.map +1 -0
- package/lib/typescript/module/src/childrenUtils.d.ts +12 -0
- package/lib/typescript/module/src/childrenUtils.d.ts.map +1 -0
- package/lib/typescript/module/src/commonTypes.d.ts +39 -3
- package/lib/typescript/module/src/commonTypes.d.ts.map +1 -1
- package/lib/typescript/module/src/index.d.ts +2 -1
- package/lib/typescript/module/src/index.d.ts.map +1 -1
- package/lib/typescript/module/src/math/environment.d.ts +7 -0
- package/lib/typescript/module/src/math/environment.d.ts.map +1 -0
- package/lib/typescript/module/src/math/index.d.ts +64 -0
- package/lib/typescript/module/src/math/index.d.ts.map +1 -0
- package/lib/typescript/module/src/math/mathjax.d.ts +63 -0
- package/lib/typescript/module/src/math/mathjax.d.ts.map +1 -0
- package/lib/typescript/module/src/metro.d.ts +59 -0
- package/lib/typescript/module/src/metro.d.ts.map +1 -0
- package/lib/typescript/module/src/parser/index.d.ts +3 -3
- package/lib/typescript/module/src/parser/index.d.ts.map +1 -1
- package/lib/typescript/module/src/parser/micromark-extension-mentions.d.ts.map +1 -1
- package/lib/typescript/module/src/rangeUtils.d.ts +1 -1
- package/lib/typescript/module/src/stripUtils.d.ts +108 -0
- package/lib/typescript/module/src/stripUtils.d.ts.map +1 -0
- package/lib/typescript/module/src/styleUtils.d.ts +62 -4
- package/lib/typescript/module/src/styleUtils.d.ts.map +1 -1
- package/lib/typescript/module/src/web/utils/blockLayout.d.ts +32 -4
- package/lib/typescript/module/src/web/utils/blockLayout.d.ts.map +1 -1
- package/lib/typescript/module/src/web/utils/blockUtils.d.ts +20 -8
- package/lib/typescript/module/src/web/utils/blockUtils.d.ts.map +1 -1
- package/lib/typescript/module/src/web/utils/elementUtils.d.ts +37 -0
- package/lib/typescript/module/src/web/utils/elementUtils.d.ts.map +1 -0
- package/lib/typescript/module/src/web/utils/parserUtils.d.ts +5 -5
- package/lib/typescript/module/src/web/utils/parserUtils.d.ts.map +1 -1
- package/lib/typescript/module/src/web/utils/treeUtils.d.ts +6 -1
- package/lib/typescript/module/src/web/utils/treeUtils.d.ts.map +1 -1
- package/lib/typescript/module/src/web/utils/webStyleUtils.d.ts +2 -2
- package/lib/typescript/module/src/web/utils/webStyleUtils.d.ts.map +1 -1
- package/package.json +29 -2
- package/react-native.config.js +8 -1
- package/src/MarcusTextDecoratorViewNativeComponent.ts +199 -0
- package/src/MarcusTextInputDecoratorViewNativeComponent.ts +145 -58
- package/src/MarkdownText.tsx +472 -0
- package/src/MarkdownText.web.tsx +668 -0
- package/src/MarkdownTextInput.tsx +42 -38
- package/src/MarkdownTextInput.web.tsx +36 -13
- package/src/atomUtils.ts +112 -0
- package/src/childrenUtils.ts +39 -0
- package/src/commonTypes.ts +69 -9
- package/src/index.tsx +2 -1
- package/src/math/environment.ts +68 -0
- package/src/math/index.ts +78 -0
- package/src/math/mathjax.ts +604 -0
- package/src/metro.ts +238 -0
- package/src/parser/index.ts +175 -10
- package/src/parser/micromark-extension-mentions.ts +104 -11
- package/src/stripUtils.ts +919 -0
- package/src/styleUtils.ts +290 -26
- package/src/web/MarkdownElements.css +67 -0
- package/src/web/MarkdownTextInput.css +9 -7
- package/src/web/utils/blockLayout.ts +124 -14
- package/src/web/utils/blockUtils.ts +365 -59
- package/src/web/utils/elementUtils.ts +87 -0
- package/src/web/utils/parserUtils.ts +119 -31
- package/src/web/utils/treeUtils.ts +6 -1
- package/src/web/utils/webStyleUtils.ts +32 -8
- package/android/src/main/java/app/getbullet/marcus/spans/MarkdownBackgroundColorSpan.kt +0 -6
- package/android/src/main/java/app/getbullet/marcus/spans/MarkdownBoldSpan.kt +0 -6
- package/android/src/main/java/app/getbullet/marcus/spans/MarkdownItalicSpan.kt +0 -6
- package/apple/RCTMarcusStyle+Codegen.mm +0 -64
- package/apple/RCTMarcusUtils.h +0 -26
- package/apple/RCTMarcusUtils.mm +0 -26
|
@@ -9,6 +9,7 @@ exports.updateInputStructure = updateInputStructure;
|
|
|
9
9
|
var _treeUtils = require("./treeUtils.js");
|
|
10
10
|
var _cursorUtils = require("./cursorUtils.js");
|
|
11
11
|
var _blockUtils = require("./blockUtils.js");
|
|
12
|
+
var _elementUtils = require("./elementUtils.js");
|
|
12
13
|
var _blockLayout = require("./blockLayout.js");
|
|
13
14
|
var _measureUtils = require("./measureUtils.js");
|
|
14
15
|
var _rangeUtils = require("../../rangeUtils.js");
|
|
@@ -51,7 +52,7 @@ function mergeLinesWithMultilineTags(lines, currentLine, range, correspondingLin
|
|
|
51
52
|
function splitRangeIntoSeparateLines(lines, currentLine, range, correspondingLineIndexes) {
|
|
52
53
|
const mainLineRangeLength = currentLine.start + currentLine.length - range.start;
|
|
53
54
|
// A range starting exactly at the newline has nothing on this line. Pushing the empty portion
|
|
54
|
-
// anyway made the builder render an empty
|
|
55
|
+
// anyway made the builder render an empty element, and an empty one is given a `<br>` to keep the
|
|
55
56
|
// line height -- a line break in the text that the user never typed.
|
|
56
57
|
if (mainLineRangeLength > 0) {
|
|
57
58
|
currentLine.markdownRanges.push({
|
|
@@ -117,8 +118,7 @@ function appendNode(element, parentTreeNode, type, length, start = null) {
|
|
|
117
118
|
return node;
|
|
118
119
|
}
|
|
119
120
|
function addBrElement(node) {
|
|
120
|
-
const span =
|
|
121
|
-
span.setAttribute("data-type", "br");
|
|
121
|
+
const span = (0, _elementUtils.createMarkdownElement)("br");
|
|
122
122
|
appendValueToElement(span, node, "\n");
|
|
123
123
|
const spanNode = appendNode(span, node, "br", 1);
|
|
124
124
|
appendNode(document.createElement("br"), spanNode, "br", 1);
|
|
@@ -128,13 +128,12 @@ function addTextToElement(node, text, isMultiline = true) {
|
|
|
128
128
|
const lines = text.split("\n");
|
|
129
129
|
lines.forEach((line, index) => {
|
|
130
130
|
if (line !== "") {
|
|
131
|
-
const span =
|
|
131
|
+
const span = (0, _elementUtils.createMarkdownElement)("text");
|
|
132
132
|
appendValueToElement(span, node, line);
|
|
133
|
-
span.setAttribute("data-type", "text");
|
|
134
133
|
span.appendChild(document.createTextNode(line));
|
|
135
134
|
appendNode(span, node, "text", line.length);
|
|
136
135
|
const parentType = span.parentElement?.dataset.type;
|
|
137
|
-
if (!isMultiline && parentType && ["pre", "code", "mention
|
|
136
|
+
if (!isMultiline && parentType && ["pre", "code", "mention"].includes(parentType)) {
|
|
138
137
|
// this is a fix to background colors being shifted downwards in a singleline input
|
|
139
138
|
(0, _blockUtils.addStyleToBlock)(span, "text", {}, false);
|
|
140
139
|
}
|
|
@@ -146,9 +145,27 @@ function addTextToElement(node, text, isMultiline = true) {
|
|
|
146
145
|
}
|
|
147
146
|
});
|
|
148
147
|
}
|
|
149
|
-
|
|
150
|
-
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Builds the element one line of the document is rendered into.
|
|
151
|
+
*
|
|
152
|
+
* A line of prose is a paragraph and is built as one. A line carrying a block -- a quote, a list
|
|
153
|
+
* item, a heading, a fenced block -- is not: `<p>` holds phrasing content only, and the elements
|
|
154
|
+
* those types are built as are flow content, so a `<p>` around them would be markup no browser
|
|
155
|
+
* would have parsed and no serializer will round-trip. Such a line gets a `<div>`, which says
|
|
156
|
+
* nothing and is allowed to hold anything -- the elements inside it are where the meaning is.
|
|
157
|
+
*
|
|
158
|
+
* `dir="auto"` makes the line its own bidi paragraph, taking its direction from the first strong
|
|
159
|
+
* character in it. That is what the two native platforms already do -- `NSWritingDirectionNatural`
|
|
160
|
+
* is UIKit's default and `firstStrong` is Android's -- so a quote in Arabic inside an otherwise
|
|
161
|
+
* English document opens its gutter on the right on all three rather than on two of them. It is
|
|
162
|
+
* also what `setRibbonEdge` asks the browser about, since the direction a line resolved to is
|
|
163
|
+
* readable through `:dir()` and not through anything the `direction` property leaves behind.
|
|
164
|
+
*/
|
|
165
|
+
function addParagraph(node, text, length, layout, markdownStyle, disableInlineStyles = false, tag = "p") {
|
|
166
|
+
const p = document.createElement(tag);
|
|
151
167
|
p.setAttribute("data-type", "line");
|
|
168
|
+
p.setAttribute("dir", "auto");
|
|
152
169
|
if (!disableInlineStyles) {
|
|
153
170
|
(0, _blockUtils.addLineLayout)(p, layout, markdownStyle);
|
|
154
171
|
}
|
|
@@ -193,16 +210,42 @@ function reportAmbiguousNesting(ranges) {
|
|
|
193
210
|
}
|
|
194
211
|
|
|
195
212
|
/**
|
|
196
|
-
*
|
|
213
|
+
* The heading level this range is, or 0 if it is one of the nested copies inside one.
|
|
214
|
+
*
|
|
215
|
+
* A heading arrives as one range per level -- `ungroupRanges` expands `depth` into the nesting the
|
|
216
|
+
* `em` sizing compounds down -- so the level is how many of them there are, and only the outermost
|
|
217
|
+
* can be the `<hN>`. The copies are identical objects, and a stable sort leaves them adjacent, so
|
|
218
|
+
* counting the ones still to come is counting the levels.
|
|
219
|
+
*/
|
|
220
|
+
function headingLevel(parent, range, remaining) {
|
|
221
|
+
for (let node = parent; node !== null; node = node.parentNode) {
|
|
222
|
+
if (node.type === "heading") {
|
|
223
|
+
return 0;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
let level = 1;
|
|
227
|
+
while (remaining[level - 1]?.type === "heading" && remaining[level - 1]?.start === range.start && remaining[level - 1]?.length === range.length) {
|
|
228
|
+
level += 1;
|
|
229
|
+
}
|
|
230
|
+
return level;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
/**
|
|
234
|
+
* Builds one `data-type="line"` element under `rootNode`.
|
|
197
235
|
*
|
|
198
236
|
* Lines are independent: nothing carries across from the previous one, which is what lets an update
|
|
199
237
|
* rebuild a single line and leave the rest of the document alone.
|
|
200
238
|
*/
|
|
201
|
-
function addLine(rootNode, line, textLength, hasRanges, isMultiline, markdownStyle, disableInlineStyles) {
|
|
239
|
+
function addLine(rootNode, line, textLength, hasRanges, isMultiline, markdownStyle, disableInlineStyles, rendering) {
|
|
202
240
|
if (!hasRanges) {
|
|
203
|
-
|
|
241
|
+
const plainNode = addParagraph(rootNode, line.text, line.length, line.layout, markdownStyle, disableInlineStyles);
|
|
242
|
+
if (!disableInlineStyles) {
|
|
243
|
+
(0, _blockUtils.setRibbonEdge)(plainNode.element, line.layout);
|
|
244
|
+
}
|
|
245
|
+
return plainNode;
|
|
204
246
|
}
|
|
205
|
-
const
|
|
247
|
+
const tag = line.markdownRanges.some(range => (0, _elementUtils.isBlockLevelType)(range.type)) ? "div" : "p";
|
|
248
|
+
const lineNode = addParagraph(rootNode, null, line.length, line.layout, markdownStyle, disableInlineStyles, tag);
|
|
206
249
|
let currentParentNode = lineNode;
|
|
207
250
|
if (line.markdownRanges.length === 0) {
|
|
208
251
|
addTextToElement(currentParentNode, line.text, isMultiline);
|
|
@@ -225,27 +268,34 @@ function addLine(rootNode, line, textLength, hasRanges, isMultiline, markdownSty
|
|
|
225
268
|
addTextToElement(currentParentNode, textBeforeRange, isMultiline);
|
|
226
269
|
}
|
|
227
270
|
|
|
228
|
-
// create markdown
|
|
229
|
-
const
|
|
230
|
-
|
|
231
|
-
const spanNode = appendNode(span, currentParentNode, range.type, range.length, range.start);
|
|
271
|
+
// create the markdown element
|
|
272
|
+
const element = (0, _elementUtils.createMarkdownElement)(range.type, range.type === "heading" ? headingLevel(currentParentNode, range, lineMarkdownRanges) : 0);
|
|
273
|
+
const rangeNode = appendNode(element, currentParentNode, range.type, range.length, range.start);
|
|
232
274
|
|
|
233
275
|
// Styled once it is in the tree, not before: a heading's size depends on how many heading
|
|
234
276
|
// levels enclose it, and an element with no parent looks like the outermost one.
|
|
235
277
|
if (!disableInlineStyles) {
|
|
236
|
-
(0, _blockUtils.addStyleToBlock)(
|
|
278
|
+
(0, _blockUtils.addStyleToBlock)(element, range.type, markdownStyle, isMultiline, rendering);
|
|
237
279
|
if (range.type === "block-prefix") {
|
|
238
|
-
(0, _blockUtils.addBlockPrefixGap)(
|
|
280
|
+
(0, _blockUtils.addBlockPrefixGap)(element, line.layout?.gaps.get(range.start));
|
|
239
281
|
}
|
|
240
282
|
}
|
|
283
|
+
|
|
284
|
+
// A list container may hold nothing but items, so everything it contains goes into one. The
|
|
285
|
+
// item covers exactly what the container does -- a line of a list is an item of it -- and from
|
|
286
|
+
// here on it is what the walk fills and unwinds through.
|
|
287
|
+
const contentNode = range.type === "list-ordered" || range.type === "list-unordered" ? appendNode((0, _elementUtils.createMarkdownElement)("list-item"), rangeNode, "list-item", range.length, range.start) : rangeNode;
|
|
241
288
|
if (lineMarkdownRanges.length > 0 && nextRangeStartIndex < endOfCurrentRange && range.type !== "syntax") {
|
|
242
289
|
// tag nesting
|
|
243
|
-
currentParentNode =
|
|
290
|
+
currentParentNode = contentNode;
|
|
244
291
|
lastRangeEndIndex = range.start;
|
|
245
292
|
} else {
|
|
246
293
|
// adding markdown tag
|
|
247
|
-
addTextToElement(
|
|
248
|
-
|
|
294
|
+
addTextToElement(contentNode, line.text.substring(range.start - line.start, endOfCurrentRange - line.start), isMultiline);
|
|
295
|
+
if (contentNode !== rangeNode) {
|
|
296
|
+
rangeNode.element.value = contentNode.element.value;
|
|
297
|
+
}
|
|
298
|
+
currentParentNode.element.value = (currentParentNode.element.value || "") + (rangeNode.element.value || "");
|
|
249
299
|
lastRangeEndIndex = endOfCurrentRange;
|
|
250
300
|
// tag unnesting and adding text after the tag
|
|
251
301
|
while (currentParentNode.parentNode !== null && nextRangeStartIndex >= currentParentNode.start + currentParentNode.length) {
|
|
@@ -273,11 +323,17 @@ function addLine(rootNode, line, textLength, hasRanges, isMultiline, markdownSty
|
|
|
273
323
|
}
|
|
274
324
|
}
|
|
275
325
|
}
|
|
326
|
+
|
|
327
|
+
// Last, once the line holds all its text: a line's own direction is read from what is in it, and
|
|
328
|
+
// it is what says which edge a quote's ribbons hang from.
|
|
329
|
+
if (!disableInlineStyles) {
|
|
330
|
+
(0, _blockUtils.setRibbonEdge)(lineNode.element, line.layout);
|
|
331
|
+
}
|
|
276
332
|
return lineNode;
|
|
277
333
|
}
|
|
278
334
|
|
|
279
335
|
/** Splits the text into lines and hands each the markdown ranges that fall inside it. */
|
|
280
|
-
function prepareLines(text, ranges, markdownStyle, measure) {
|
|
336
|
+
function prepareLines(text, ranges, markdownStyle, measure, rendering = _blockLayout.SHOWN_MARKERS) {
|
|
281
337
|
const lines = splitTextIntoLines(text);
|
|
282
338
|
if (ranges.length === 0) {
|
|
283
339
|
return lines;
|
|
@@ -286,7 +342,7 @@ function prepareLines(text, ranges, markdownStyle, measure) {
|
|
|
286
342
|
// Before anything reorders them: the block walk reads the ranges in the order the parser emits
|
|
287
343
|
// them -- each marker immediately before the container it belongs to -- and `sortRanges` sorts
|
|
288
344
|
// that order away in place.
|
|
289
|
-
const layouts = (0, _blockLayout.layoutBlocks)(text, ranges, markdownStyle, measure);
|
|
345
|
+
const layouts = (0, _blockLayout.layoutBlocks)(text, ranges, markdownStyle, measure, rendering);
|
|
290
346
|
|
|
291
347
|
// Sort all ranges by start position, length, and by tag hierarchy so the styles and text are applied in correct order
|
|
292
348
|
const sortedRanges = (0, _rangeUtils.sortRanges)(ranges);
|
|
@@ -310,7 +366,7 @@ function prepareLines(text, ranges, markdownStyle, measure) {
|
|
|
310
366
|
}
|
|
311
367
|
|
|
312
368
|
/** Builds HTML DOM structure based on passed text and markdown ranges */
|
|
313
|
-
function parseRangesToHTMLNodes(text, ranges, isMultiline = true, markdownStyle = {}, disableInlineStyles = false, measure = (0, _measureUtils.createTextMeasurer)(null)) {
|
|
369
|
+
function parseRangesToHTMLNodes(text, ranges, isMultiline = true, markdownStyle = {}, disableInlineStyles = false, measure = (0, _measureUtils.createTextMeasurer)(null), rendering = _blockLayout.SHOWN_MARKERS) {
|
|
314
370
|
const rootElement = document.createElement("span");
|
|
315
371
|
const textLength = text.length;
|
|
316
372
|
const rootNode = (0, _treeUtils.createRootTreeNode)(rootElement, textLength);
|
|
@@ -318,8 +374,8 @@ function parseRangesToHTMLNodes(text, ranges, isMultiline = true, markdownStyle
|
|
|
318
374
|
// Built line by line, exactly as an update builds the lines it has to replace, so the two agree
|
|
319
375
|
// by construction and each line sits at the offset the text gives it rather than at wherever the
|
|
320
376
|
// line before it happened to end.
|
|
321
|
-
prepareLines(text, ranges, markdownStyle, measure).forEach((line, index) => {
|
|
322
|
-
const node = buildLine(line, index, textLength, ranges.length > 0, isMultiline, markdownStyle, disableInlineStyles);
|
|
377
|
+
prepareLines(text, ranges, markdownStyle, measure, rendering).forEach((line, index) => {
|
|
378
|
+
const node = buildLine(line, index, textLength, ranges.length > 0, isMultiline, markdownStyle, disableInlineStyles, rendering);
|
|
323
379
|
node.parentNode = rootNode;
|
|
324
380
|
rootNode.childNodes.push(node);
|
|
325
381
|
rootElement.appendChild(node.element);
|
|
@@ -402,12 +458,12 @@ function coverChildren(node) {
|
|
|
402
458
|
}
|
|
403
459
|
|
|
404
460
|
/** Builds one line on its own, then places it at the offset and index it occupies in the document. */
|
|
405
|
-
function buildLine(line, index, textLength, hasRanges, isMultiline, markdownStyle, disableInlineStyles = false) {
|
|
461
|
+
function buildLine(line, index, textLength, hasRanges, isMultiline, markdownStyle, disableInlineStyles = false, rendering = _blockLayout.SHOWN_MARKERS) {
|
|
406
462
|
// The scratch root carries the line's offset, so the subtree comes out with the absolute `start`
|
|
407
463
|
// values the builder compares against range offsets -- the same ones it would get if the whole
|
|
408
464
|
// document had been built in one pass.
|
|
409
465
|
const scratch = (0, _treeUtils.createRootTreeNode)(document.createElement("span"), line.length, line.start);
|
|
410
|
-
const node = addLine(scratch, line, textLength, hasRanges, isMultiline, markdownStyle, disableInlineStyles);
|
|
466
|
+
const node = addLine(scratch, line, textLength, hasRanges, isMultiline, markdownStyle, disableInlineStyles, rendering);
|
|
411
467
|
coverChildren(node);
|
|
412
468
|
restampSubtree(node, `${index}`);
|
|
413
469
|
return node;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_treeUtils","require","_cursorUtils","_blockUtils","_blockLayout","_measureUtils","_rangeUtils","splitTextIntoLines","text","lineStartIndex","lines","split","map","line","lineObject","start","length","markdownRanges","mergeLinesWithMultilineTags","currentLine","range","correspondingLineIndexes","mainLine","push","forEach","lineIndex","otherLine","undefined","splice","splitRangeIntoSeparateLines","mainLineRangeLength","rangeLength","currentLength","normalizeLines","ranges","mergedLines","lineIndexes","_line","index","beginLineIndex","findLastIndex","endLineIndex","findIndex","slice","mainLineIndex","otherLineIndexes","isMultilineMarkdownType","type","appendValueToElement","element","parentTreeNode","value","targetElement","parentNode","appendNode","node","addNodeToTree","appendChild","addBrElement","span","document","createElement","setAttribute","spanNode","addTextToElement","isMultiline","createTextNode","parentType","parentElement","dataset","includes","addStyleToBlock","addParagraph","layout","markdownStyle","disableInlineStyles","p","addLineLayout","pNode","INNERMOST_TYPES","Set","reportAmbiguousNesting","i","previous","current","has","console","error","addLine","rootNode","textLength","hasRanges","lineNode","currentParentNode","lastRangeEndIndex","lineMarkdownRanges","shift","endOfCurrentRange","nextRangeStartIndex","textBeforeRange","substring","addBlockPrefixGap","gaps","get","parentEndIndex","textAfterRange","prepareLines","measure","layouts","layoutBlocks","sortedRanges","sortRanges","__DEV__","normalized","ungroupRanges","paragraph","parseRangesToHTMLNodes","createTextMeasurer","rootElement","createRootTreeNode","buildLine","childNodes","dom","tree","signatureOf","signature","depth","firstLineIndent","indent","ribbons","join","gap","shiftSubtree","delta","target","child","restampSubtree","orderIndex","coverChildren","end","childEnd","scratch","canReuseLine","cached","liveNode","outerHTML","html","reconcileLines","shouldForceDOMUpdate","signatures","cache","lineCache","live","Array","from","head","tail","previousTail","liveTail","fresh","anchor","remove","fragment","createDocumentFragment","insertBefore","nextCache","moveCursor","isFocused","alwaysMoveCursorToTheEnd","cursorPosition","shouldScrollIntoView","moveCursorToEnd","setCursorPosition","updateInputStructure","parserFunction","cursorPositionIndex","activeElement","selection","getCurrentCursorPosition","innerHTML","innerText"],"sourceRoot":"../../../../src","sources":["web/utils/parserUtils.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_treeUtils","require","_cursorUtils","_blockUtils","_elementUtils","_blockLayout","_measureUtils","_rangeUtils","splitTextIntoLines","text","lineStartIndex","lines","split","map","line","lineObject","start","length","markdownRanges","mergeLinesWithMultilineTags","currentLine","range","correspondingLineIndexes","mainLine","push","forEach","lineIndex","otherLine","undefined","splice","splitRangeIntoSeparateLines","mainLineRangeLength","rangeLength","currentLength","normalizeLines","ranges","mergedLines","lineIndexes","_line","index","beginLineIndex","findLastIndex","endLineIndex","findIndex","slice","mainLineIndex","otherLineIndexes","isMultilineMarkdownType","type","appendValueToElement","element","parentTreeNode","value","targetElement","parentNode","appendNode","node","addNodeToTree","appendChild","addBrElement","span","createMarkdownElement","spanNode","document","createElement","addTextToElement","isMultiline","createTextNode","parentType","parentElement","dataset","includes","addStyleToBlock","addParagraph","layout","markdownStyle","disableInlineStyles","tag","p","setAttribute","addLineLayout","pNode","INNERMOST_TYPES","Set","reportAmbiguousNesting","i","previous","current","has","console","error","headingLevel","parent","remaining","level","addLine","rootNode","textLength","hasRanges","rendering","plainNode","setRibbonEdge","some","isBlockLevelType","lineNode","currentParentNode","lastRangeEndIndex","lineMarkdownRanges","shift","endOfCurrentRange","nextRangeStartIndex","textBeforeRange","substring","rangeNode","addBlockPrefixGap","gaps","get","contentNode","parentEndIndex","textAfterRange","prepareLines","measure","SHOWN_MARKERS","layouts","layoutBlocks","sortedRanges","sortRanges","__DEV__","normalized","ungroupRanges","paragraph","parseRangesToHTMLNodes","createTextMeasurer","rootElement","createRootTreeNode","buildLine","childNodes","dom","tree","signatureOf","signature","depth","firstLineIndent","indent","ribbons","join","gap","shiftSubtree","delta","target","child","restampSubtree","orderIndex","coverChildren","end","childEnd","scratch","canReuseLine","cached","liveNode","outerHTML","html","reconcileLines","shouldForceDOMUpdate","signatures","cache","lineCache","live","Array","from","head","tail","previousTail","liveTail","fresh","anchor","remove","fragment","createDocumentFragment","insertBefore","nextCache","moveCursor","isFocused","alwaysMoveCursorToTheEnd","cursorPosition","shouldScrollIntoView","moveCursorToEnd","setCursorPosition","updateInputStructure","parserFunction","cursorPositionIndex","activeElement","selection","getCurrentCursorPosition","innerHTML","innerText"],"sourceRoot":"../../../../src","sources":["web/utils/parserUtils.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -7,6 +7,12 @@ exports.addNodeToTree = addNodeToTree;
|
|
|
7
7
|
exports.createRootTreeNode = createRootTreeNode;
|
|
8
8
|
exports.findHTMLElementInTree = findHTMLElementInTree;
|
|
9
9
|
exports.getTreeNodeByIndex = getTreeNodeByIndex;
|
|
10
|
+
/**
|
|
11
|
+
* `list-item` is the one node with no range behind it: `<ul>` and `<ol>` may hold nothing but
|
|
12
|
+
* `<li>`, so the builder puts one inside each list container and everything the container holds
|
|
13
|
+
* goes in there. It covers exactly what its container does.
|
|
14
|
+
*/
|
|
15
|
+
|
|
10
16
|
function createRootTreeNode(target, length = 0, start = 0) {
|
|
11
17
|
return {
|
|
12
18
|
element: target,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createRootTreeNode","target","length","start","element","parentNode","childNodes","type","orderIndex","isGeneratingNewline","addNodeToTree","parentTreeNode","contentLength","nodeName","value","getAttribute","parentChildrenCount","startIndex","lastParentChild","style","display","item","setAttribute","push","findHTMLElementInTree","treeRoot","hasAttribute","indexes","split","el","index","Number","shift","getTreeNodeByIndex","i","newLineGenerated","child"],"sourceRoot":"../../../../src","sources":["web/utils/treeUtils.ts"],"mappings":";;;;;;;;;
|
|
1
|
+
{"version":3,"names":["createRootTreeNode","target","length","start","element","parentNode","childNodes","type","orderIndex","isGeneratingNewline","addNodeToTree","parentTreeNode","contentLength","nodeName","value","getAttribute","parentChildrenCount","startIndex","lastParentChild","style","display","item","setAttribute","push","findHTMLElementInTree","treeRoot","hasAttribute","indexes","split","el","index","Number","shift","getTreeNodeByIndex","i","newLineGenerated","child"],"sourceRoot":"../../../../src","sources":["web/utils/treeUtils.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -33,14 +33,34 @@ try {
|
|
|
33
33
|
} catch {
|
|
34
34
|
throw new Error("[react-native-marcus] Function `dangerousStyleValue` from react-native-web not found.");
|
|
35
35
|
}
|
|
36
|
+
|
|
37
|
+
// The three shadow properties are left as they were written. An offset is an object rather than a
|
|
38
|
+
// length, and a radius that carried its unit here could not be composed with an offset that did
|
|
39
|
+
// not: `blockUtils` builds the one `text-shadow` declaration out of all three instead.
|
|
40
|
+
const RAW_PROPS = new Set(["textShadowOffset", "textShadowRadius"]);
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Gives every length in the style its CSS unit.
|
|
44
|
+
*
|
|
45
|
+
* Walks the whole tree rather than its top two levels, because a list's `marker` puts style values
|
|
46
|
+
* one level further down than the entries around it.
|
|
47
|
+
*/
|
|
36
48
|
function processUnitsInMarkdownStyle(input) {
|
|
37
49
|
const output = JSON.parse(JSON.stringify(input));
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
50
|
+
const walk = node => {
|
|
51
|
+
Object.keys(node).forEach(prop => {
|
|
52
|
+
const value = node[prop];
|
|
53
|
+
if (RAW_PROPS.has(prop)) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
if (typeof value === "object" && value !== null && !Array.isArray(value)) {
|
|
57
|
+
walk(value);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
node[prop] = dangerousStyleValue(prop, value, false);
|
|
42
61
|
});
|
|
43
|
-
}
|
|
62
|
+
};
|
|
63
|
+
walk(output);
|
|
44
64
|
return output;
|
|
45
65
|
}
|
|
46
66
|
function processMarkdownStyle(input) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_styleUtils","require","createReactDOMStyle","default","Error","preprocessStyle","dangerousStyleValue","processUnitsInMarkdownStyle","input","output","JSON","parse","stringify","Object","keys","forEach","
|
|
1
|
+
{"version":3,"names":["_styleUtils","require","createReactDOMStyle","default","Error","preprocessStyle","dangerousStyleValue","RAW_PROPS","Set","processUnitsInMarkdownStyle","input","output","JSON","parse","stringify","walk","node","Object","keys","forEach","prop","value","has","Array","isArray","processMarkdownStyle","mergeMarkdownStyleWithDefault","parseToReactDOMStyle","style","generateUniqueId","idCounter","idGenerator","exports"],"sourceRoot":"../../../../src","sources":["web/utils/webStyleUtils.ts"],"mappings":";;;;;;;;AAIA,IAAAA,WAAA,GAAAC,OAAA;AAJA;;AAMA,IAAIC,mBAAwC;AAC5C,IAAI;EACFA,mBAAmB;EACjB;EACAD,OAAO,CAAC,uEAAuE,CAAC,CAACE,OAAO;AAC5F,CAAC,CAAC,MAAM;EACN,MAAM,IAAIC,KAAK,CACb,2JACF,CAAC;AACH;AAEA,IAAIC,eAAoC;AACxC,IAAI;EACFA,eAAe;EACb;EACAJ,OAAO,CAAC,qDAAqD,CAAC,CAACE,OAAO;AAC1E,CAAC,CAAC,MAAM;EACN,MAAM,IAAIC,KAAK,CACb,mFACF,CAAC;AACH;AAEA,IAAIE,mBAAiF;AACrF,IAAI;EACFA,mBAAmB;EACjB;EACAL,OAAO,CAAC,qEAAqE,CAAC,CAACE,OAAO;AAC1F,CAAC,CAAC,MAAM;EACN,MAAM,IAAIC,KAAK,CACb,uFACF,CAAC;AACH;;AAEA;AACA;AACA;AACA,MAAMG,SAAS,GAAG,IAAIC,GAAG,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;;AAEnE;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,2BAA2BA,CAACC,KAAoB,EAAyB;EAChF,MAAMC,MAAM,GAAGC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,SAAS,CAACJ,KAAK,CAAC,CAAC;EAEhD,MAAMK,IAAI,GAAIC,IAAS,IAAK;IAC1BC,MAAM,CAACC,IAAI,CAACF,IAAI,CAAC,CAACG,OAAO,CAAEC,IAAI,IAAK;MAClC,MAAMC,KAAK,GAAGL,IAAI,CAACI,IAAI,CAAC;MAExB,IAAIb,SAAS,CAACe,GAAG,CAACF,IAAI,CAAC,EAAE;QACvB;MACF;MAEA,IAAI,OAAOC,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAK,IAAI,IAAI,CAACE,KAAK,CAACC,OAAO,CAACH,KAAK,CAAC,EAAE;QACxEN,IAAI,CAACM,KAAK,CAAC;QACX;MACF;MAEAL,IAAI,CAACI,IAAI,CAAC,GAAGd,mBAAmB,CAACc,IAAI,EAAEC,KAAK,EAAE,KAAK,CAAC;IACtD,CAAC,CAAC;EACJ,CAAC;EAEDN,IAAI,CAACJ,MAAM,CAAC;EAEZ,OAAOA,MAAM;AACf;AAEA,SAASc,oBAAoBA,CAACf,KAAuC,EAAyB;EAC5F,OAAOD,2BAA2B,CAAC,IAAAiB,yCAA6B,EAAChB,KAAK,CAAC,CAAC;AAC1E;AAEA,SAASiB,oBAAoBA,CAACC,KAAgB,EAAO;EACnD,OAAO1B,mBAAmB,CAACG,eAAe,CAACuB,KAAK,CAAC,CAAC;AACpD;AAEA,UAAUC,gBAAgBA,CAAA,EAAG;EAC3B,IAAIC,SAAS,GAAG,CAAC;EACjB,OAAO,IAAI,EAAE;IACX,MAAM,gBAAgBA,SAAS,EAAE,EAAE;EACrC;AACF;AAEA,MAAMC,WAAW,GAAAC,OAAA,CAAAD,WAAA,GAAGF,gBAAgB,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import { codegenNativeComponent } from "react-native"
|
|
2
|
+
import type { ColorValue, ViewProps } from "react-native"
|
|
3
|
+
|
|
4
|
+
import type { Float, Int32 } from "react-native/Libraries/Types/CodegenTypes"
|
|
5
|
+
|
|
6
|
+
import type { MarkdownStyle as TextInputMarkdownStyle } from "./MarcusTextInputDecoratorViewNativeComponent"
|
|
7
|
+
|
|
8
|
+
// Codegen parses each `*NativeComponent` file on its own and does not follow
|
|
9
|
+
// imports, so the style has to be spelled out again rather than shared with
|
|
10
|
+
// `MarcusTextInputDecoratorViewNativeComponent`. The assertion further down is
|
|
11
|
+
// what keeps the copy honest: the two have to stay assignable in both
|
|
12
|
+
// directions or `tsc --noEmit` fails.
|
|
13
|
+
|
|
14
|
+
// The text attributes one styled run can carry: the subset of React Native's
|
|
15
|
+
// `TextStyle` that survives as an `NSAttributedString` attribute on iOS, as a
|
|
16
|
+
// span on Android, and as a declaration on an inline element on the web.
|
|
17
|
+
//
|
|
18
|
+
// Everything here is optional and everything unset is inherited, which is what a
|
|
19
|
+
// run of markdown wants -- a mention that only names a colour keeps the face,
|
|
20
|
+
// the size and the weight of the prose it sits in. Native reads "unset" off the
|
|
21
|
+
// zero value: an empty string, a null colour, a zero length. That costs nothing,
|
|
22
|
+
// because a zero-length `letterSpacing`, `lineHeight` or `fontSize` means the
|
|
23
|
+
// same as leaving it out.
|
|
24
|
+
//
|
|
25
|
+
// `fontWeight`, `fontStyle`, `textDecorationLine` and `textDecorationStyle`
|
|
26
|
+
// arrive as plain strings rather than as unions. Codegen turns a union of string
|
|
27
|
+
// literals into an enum named after the prop it was found on, so the same
|
|
28
|
+
// spelling on twelve entries would become twelve unrelated C++ types and the one
|
|
29
|
+
// conversion template in `RCTMarcusStyle+Codegen.h` could not read any of them.
|
|
30
|
+
// The public type in `styleUtils` is the narrow one; this is the wire.
|
|
31
|
+
interface MarkdownTextStyle {
|
|
32
|
+
color?: ColorValue
|
|
33
|
+
fontFamily?: string
|
|
34
|
+
fontSize?: Float
|
|
35
|
+
fontStyle?: string
|
|
36
|
+
fontWeight?: string
|
|
37
|
+
letterSpacing?: Float
|
|
38
|
+
// Applies to whole lines: the platforms set it on the paragraph, so a range
|
|
39
|
+
// covering part of a line raises the height of all of it.
|
|
40
|
+
lineHeight?: Float
|
|
41
|
+
textDecorationLine?: string
|
|
42
|
+
// iOS and web only. Android draws an underline and a strikethrough in the text
|
|
43
|
+
// colour and offers no way to say otherwise.
|
|
44
|
+
textDecorationColor?: ColorValue
|
|
45
|
+
textDecorationStyle?: string
|
|
46
|
+
textShadowColor?: ColorValue
|
|
47
|
+
textShadowOffset?: { width: Float; height: Float }
|
|
48
|
+
textShadowRadius?: Float
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// A run drawn as a box rather than as a background behind the glyphs: an inline
|
|
52
|
+
// or fenced run of code, or a mention's pill. Rounded, optionally bordered, with
|
|
53
|
+
// room inside it and around it, on top of whatever text attributes it carries.
|
|
54
|
+
//
|
|
55
|
+
// What the room holds open differs, because a block owns its lines and a run
|
|
56
|
+
// shares one. A block's padding and margin are held open on the leading edge and
|
|
57
|
+
// vertically, and a line long enough to wrap reaches the padding on the trailing
|
|
58
|
+
// edge rather than stopping in front of it: neither platform can reserve a
|
|
59
|
+
// trailing indent per paragraph. An inline run holds its padding and margin open
|
|
60
|
+
// on both sides, by widening the characters it starts and ends with, and grows
|
|
61
|
+
// into the line's own spacing above and below rather than pushing the lines
|
|
62
|
+
// apart.
|
|
63
|
+
//
|
|
64
|
+
// `padding` is the fallback for both axes; `paddingHorizontal` and
|
|
65
|
+
// `paddingVertical` win over it where they are set, and `margin` the same. A
|
|
66
|
+
// fenced block usually wants more room above and below than beside it, and one
|
|
67
|
+
// number cannot say that.
|
|
68
|
+
interface MarkdownBoxStyle extends MarkdownTextStyle {
|
|
69
|
+
backgroundColor?: ColorValue
|
|
70
|
+
borderColor?: ColorValue
|
|
71
|
+
borderWidth?: Float
|
|
72
|
+
borderRadius?: Float
|
|
73
|
+
padding?: Float
|
|
74
|
+
paddingHorizontal?: Float
|
|
75
|
+
paddingVertical?: Float
|
|
76
|
+
margin?: Float
|
|
77
|
+
marginHorizontal?: Float
|
|
78
|
+
marginVertical?: Float
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
interface MarkdownHeadingStyle extends MarkdownTextStyle {
|
|
82
|
+
// Each level down multiplies the one above, so level N is
|
|
83
|
+
// fontSize * scale^(N - 1). Six levels, matching HTML.
|
|
84
|
+
scale?: Float
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// The bar beside a quoted block, the indent it opens, and the text inside it.
|
|
88
|
+
//
|
|
89
|
+
// `marginStart` and `paddingStart` rather than `marginLeft`/`paddingLeft`
|
|
90
|
+
// because the gutter opens on the line's leading edge, which is the right-hand
|
|
91
|
+
// side of a right-to-left paragraph. Both platforms already indent from the
|
|
92
|
+
// leading edge -- `NSParagraphStyle`'s head indent and Android's leading margin
|
|
93
|
+
// are both writing-direction relative -- so the names now say what was always
|
|
94
|
+
// drawn, and the web builder resolves them to `padding-inline-start`.
|
|
95
|
+
interface MarkdownBlockquoteStyle extends MarkdownTextStyle {
|
|
96
|
+
borderColor?: ColorValue
|
|
97
|
+
borderWidth?: Float
|
|
98
|
+
// Rounds the bar's ends. A bar whose radius is half its width comes out a
|
|
99
|
+
// capsule.
|
|
100
|
+
borderRadius?: Float
|
|
101
|
+
marginStart?: Float
|
|
102
|
+
paddingStart?: Float
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// Indent, and the marker that sits in the gutter it opens. Kept as two separate
|
|
106
|
+
// entries so a renderer can style ordered and unordered lists differently, which
|
|
107
|
+
// is exactly what `markerScale` ends up meaning: an ordered item's number is
|
|
108
|
+
// text, an unordered item's bullet is a shape.
|
|
109
|
+
//
|
|
110
|
+
// Both markers are sized from the base font -- the size the wrapped `Text`
|
|
111
|
+
// renders at -- rather than from a size of their own, so a list marks itself in
|
|
112
|
+
// proportion to the prose it marks however that prose is sized. `marker` styles
|
|
113
|
+
// the marker itself, and what it leaves unset falls back to `syntax`, which is
|
|
114
|
+
// where a marker's colour came from before this entry existed.
|
|
115
|
+
//
|
|
116
|
+
// Only `MarkdownText` draws them. An input shows the marker you typed, in the
|
|
117
|
+
// base font, because it is text you are editing rather than a rendering of it.
|
|
118
|
+
interface MarkdownListStyle {
|
|
119
|
+
marginStart?: Float
|
|
120
|
+
paddingStart?: Float
|
|
121
|
+
// An ordered item's number is drawn at this fraction of the base font size; an
|
|
122
|
+
// unordered item's bullet takes it as a diameter, as a fraction of the same.
|
|
123
|
+
markerScale?: Float
|
|
124
|
+
// Room held open either side of the marker, between the gutter and the text.
|
|
125
|
+
markerPadding?: Float
|
|
126
|
+
marker?: MarkdownTextStyle
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// Left as the two values it always was rather than folded into
|
|
130
|
+
// `MarkdownTextStyle`: an emoji run is swapped onto a font that has the glyph
|
|
131
|
+
// and sized to sit with the prose, and nothing else about it is worth saying.
|
|
132
|
+
interface MarkdownEmojiStyle {
|
|
133
|
+
fontSize?: Float
|
|
134
|
+
fontFamily?: string
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
interface MarkdownStyle {
|
|
138
|
+
syntax: MarkdownTextStyle
|
|
139
|
+
emoji: MarkdownEmojiStyle
|
|
140
|
+
link: MarkdownTextStyle
|
|
141
|
+
strong: MarkdownTextStyle
|
|
142
|
+
emphasis: MarkdownTextStyle
|
|
143
|
+
strikethrough: MarkdownTextStyle
|
|
144
|
+
heading: MarkdownHeadingStyle
|
|
145
|
+
blockquote: MarkdownBlockquoteStyle
|
|
146
|
+
orderedList: MarkdownListStyle
|
|
147
|
+
unorderedList: MarkdownListStyle
|
|
148
|
+
code: MarkdownBoxStyle
|
|
149
|
+
pre: MarkdownBoxStyle
|
|
150
|
+
// A name with an `@` in front of it, drawn as a pill: the same inline box an
|
|
151
|
+
// inline run of code sits in, and so the same lengths.
|
|
152
|
+
mention: MarkdownBoxStyle
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// `MarkdownRange` with `depth` filled in: codegen has no optional numbers, and
|
|
156
|
+
// the formatters read a missing depth as zero anyway.
|
|
157
|
+
interface MarkdownRangeStruct {
|
|
158
|
+
type: string
|
|
159
|
+
start: Int32
|
|
160
|
+
length: Int32
|
|
161
|
+
depth: Int32
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
// What one placeholder character copies as. `index` is its offset in the
|
|
165
|
+
// stripped text -- the same string the ranges are measured against -- and
|
|
166
|
+
// `text` is the markdown it was written as, which is what the platform puts on
|
|
167
|
+
// the clipboard in its place.
|
|
168
|
+
interface MarkdownSubstitutionStruct {
|
|
169
|
+
index: Int32
|
|
170
|
+
text: string
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
interface NativeProps extends ViewProps {
|
|
174
|
+
markdownStyle: MarkdownStyle
|
|
175
|
+
// The parse result, already stripped of syntax and remapped onto the text the
|
|
176
|
+
// child `Text` is rendering. Unlike the input decorator there is no parser to
|
|
177
|
+
// register: a `Text`'s content only ever changes by a re-render, so JS always
|
|
178
|
+
// knows the string and can hand over finished ranges.
|
|
179
|
+
ranges: ReadonlyArray<MarkdownRangeStruct>
|
|
180
|
+
// Every drawing in the text, and the source it copies as. A view mounted in a
|
|
181
|
+
// `Text` is one U+FFFC in the string the platform lays out, and that is what
|
|
182
|
+
// both platforms would otherwise hand to the clipboard: an equation copies as
|
|
183
|
+
// an empty box. Only the display needs this -- an input has the source on the
|
|
184
|
+
// screen already, and copies it by doing nothing.
|
|
185
|
+
substitutions: ReadonlyArray<MarkdownSubstitutionStruct>
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
type Assignable<A extends B, B> = A
|
|
189
|
+
|
|
190
|
+
type StyleMatchesTextInput = [
|
|
191
|
+
Assignable<MarkdownStyle, TextInputMarkdownStyle>,
|
|
192
|
+
Assignable<TextInputMarkdownStyle, MarkdownStyle>,
|
|
193
|
+
]
|
|
194
|
+
|
|
195
|
+
export default codegenNativeComponent<NativeProps>("MarcusTextDecoratorView", {
|
|
196
|
+
interfaceOnly: true,
|
|
197
|
+
})
|
|
198
|
+
|
|
199
|
+
export type { MarkdownRangeStruct, MarkdownSubstitutionStruct, StyleMatchesTextInput }
|