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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["OBJECT_REPLACEMENT","exports","NO_EMBEDS","NO_MATHS","NO_LINKS","TAB","LINE_FEED","CARRIAGE_RETURN","SPACE","GREATER_THAN","LEFT_PAREN","RIGHT_PAREN","isBlank","code","isLineBreak","listMarkers","ranges","markers","i","length","range","type","container","push","start","end","isQuoteMarker","text","charCodeAt","resourceSpans","spans","current","open","close","uri","title","slice","cutResources","resources","cut","cutSomething","resource","sharesItsLine","prefixes","index","some","prefix","flatten","flattened","segmentStart","NO_IMAGES","imageSpans","image","Math","min","span","alt","j","inner","innerEnd","mathBounds","bounds","NO_MATH_SPANS","mathSpans","tex","trim","display","NO_LINK_SPANS","linkSpans","find","candidate","undefined","toLinks","offsets","links","label","NO_ATOMS","atomsOf","images","maths","sort","a","b","isAtomType","absorbMarkerSpacing","marker","lineStart","lineEnd","cursor","keptMarker","afterCut","blank","displayType","stripSyntax","options","embeds","spared","math","Uint8Array","kept","inListMarker","atoms","placeholder","atom","Int32Array","stripped","survivors","remapped","insideStart","insideEnd","next","depth","filter","map","inline","mathsOut"],"sourceRoot":"../../src","sources":["stripUtils.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,7 +4,39 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.mergeMarkdownStyleWithDefault = mergeMarkdownStyleWithDefault;
|
|
7
|
+
exports.processMarkdownStyle = processMarkdownStyle;
|
|
7
8
|
var _reactNative = require("react-native");
|
|
9
|
+
// The public spelling of a run's text attributes: React Native's own
|
|
10
|
+
// `TextStyle`, narrowed to the properties the three formatters can honour.
|
|
11
|
+
// Picked from it rather than restated so the names, the unions and the doc
|
|
12
|
+
// comments are React Native's, and so a style object written for a `Text` can be
|
|
13
|
+
// handed straight to a markdown entry.
|
|
14
|
+
//
|
|
15
|
+
// What is deliberately not here: everything `TextStyle` inherits from
|
|
16
|
+
// `ViewStyle` -- an attributed-string run has no box to lay out -- along with
|
|
17
|
+
// `textAlign`, `textTransform`, `fontVariant` and `writingDirection`, which are
|
|
18
|
+
// paragraph- or string-level rather than run-level and would each mean something
|
|
19
|
+
// different on each platform.
|
|
20
|
+
|
|
21
|
+
// The room a boxed run holds open, on top of its text attributes. Also picked
|
|
22
|
+
// from React Native's own types, for the same reason.
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* A markdown style as it is written: every entry optional, every property
|
|
26
|
+
* optional, and anything left out taken from the defaults below.
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* The style once the defaults have been merged in: every entry present, every
|
|
31
|
+
* property still optional.
|
|
32
|
+
*
|
|
33
|
+
* Distinct from `PartialMarkdownStyle`, which is what a caller writes. This is
|
|
34
|
+
* what a renderer reads, and on the web its lengths have been through React
|
|
35
|
+
* Native Web's compiler by the time they get there -- a `fontSize` of `16` is
|
|
36
|
+
* the string `"16px"` -- which is why everything downstream of it either casts
|
|
37
|
+
* or runs the value back through `toNumber`.
|
|
38
|
+
*/
|
|
39
|
+
|
|
8
40
|
const FONT_FAMILY_MONOSPACE = _reactNative.Platform.select({
|
|
9
41
|
ios: "Courier",
|
|
10
42
|
default: "monospace"
|
|
@@ -14,16 +46,37 @@ const FONT_FAMILY_EMOJI = _reactNative.Platform.select({
|
|
|
14
46
|
android: "Noto Color Emoji",
|
|
15
47
|
default: "System, Apple Color Emoji, Segoe UI Emoji, Noto Color Emoji"
|
|
16
48
|
});
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* What every renderer draws before a style says otherwise.
|
|
52
|
+
*
|
|
53
|
+
* The marks that used to be hard-coded in the formatters -- a heading's and a
|
|
54
|
+
* strong run's bold, an emphasised run's italic, a link's underline, a
|
|
55
|
+
* strikethrough's line -- are written out here instead, so that the same switch
|
|
56
|
+
* that applies a custom weight applies the default one, and so that naming
|
|
57
|
+
* `strong.fontWeight` replaces the bold rather than fighting it.
|
|
58
|
+
*/
|
|
17
59
|
function makeDefaultMarkdownStyle() {
|
|
18
60
|
return {
|
|
19
61
|
syntax: {
|
|
20
62
|
color: "gray"
|
|
21
63
|
},
|
|
22
64
|
link: {
|
|
23
|
-
color: "blue"
|
|
65
|
+
color: "blue",
|
|
66
|
+
textDecorationLine: "underline"
|
|
67
|
+
},
|
|
68
|
+
strong: {
|
|
69
|
+
fontWeight: "bold"
|
|
70
|
+
},
|
|
71
|
+
emphasis: {
|
|
72
|
+
fontStyle: "italic"
|
|
73
|
+
},
|
|
74
|
+
strikethrough: {
|
|
75
|
+
textDecorationLine: "line-through"
|
|
24
76
|
},
|
|
25
77
|
heading: {
|
|
26
78
|
fontSize: 38,
|
|
79
|
+
fontWeight: "bold",
|
|
27
80
|
scale: 0.85
|
|
28
81
|
},
|
|
29
82
|
emoji: {
|
|
@@ -33,46 +86,127 @@ function makeDefaultMarkdownStyle() {
|
|
|
33
86
|
blockquote: {
|
|
34
87
|
borderColor: "gray",
|
|
35
88
|
borderWidth: 6,
|
|
36
|
-
|
|
37
|
-
|
|
89
|
+
borderRadius: 0,
|
|
90
|
+
marginStart: 6,
|
|
91
|
+
paddingStart: 6
|
|
38
92
|
},
|
|
39
93
|
orderedList: {
|
|
40
|
-
|
|
41
|
-
|
|
94
|
+
marginStart: 6,
|
|
95
|
+
paddingStart: 18,
|
|
96
|
+
markerScale: 0.8,
|
|
97
|
+
markerPadding: 2,
|
|
98
|
+
marker: {}
|
|
42
99
|
},
|
|
43
100
|
unorderedList: {
|
|
44
|
-
|
|
45
|
-
|
|
101
|
+
marginStart: 6,
|
|
102
|
+
paddingStart: 18,
|
|
103
|
+
markerScale: 0.3,
|
|
104
|
+
markerPadding: 2,
|
|
105
|
+
marker: {}
|
|
46
106
|
},
|
|
47
107
|
code: {
|
|
48
108
|
fontFamily: FONT_FAMILY_MONOSPACE,
|
|
49
109
|
fontSize: 16,
|
|
50
110
|
color: "black",
|
|
51
|
-
backgroundColor: "lightgray"
|
|
111
|
+
backgroundColor: "lightgray",
|
|
112
|
+
borderRadius: 4,
|
|
113
|
+
padding: 2,
|
|
114
|
+
margin: 2
|
|
52
115
|
},
|
|
53
116
|
pre: {
|
|
54
117
|
fontFamily: FONT_FAMILY_MONOSPACE,
|
|
55
118
|
fontSize: 16,
|
|
56
119
|
color: "black",
|
|
57
|
-
backgroundColor: "lightgray"
|
|
120
|
+
backgroundColor: "lightgray",
|
|
121
|
+
borderRadius: 4,
|
|
122
|
+
padding: 8,
|
|
123
|
+
margin: 4
|
|
58
124
|
},
|
|
59
|
-
|
|
60
|
-
color: "green",
|
|
61
|
-
backgroundColor: "lime",
|
|
62
|
-
borderRadius: 5
|
|
63
|
-
},
|
|
64
|
-
mentionUser: {
|
|
125
|
+
mention: {
|
|
65
126
|
color: "blue",
|
|
66
127
|
backgroundColor: "cyan",
|
|
67
|
-
borderRadius: 5
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
color: "red",
|
|
71
|
-
backgroundColor: "pink",
|
|
72
|
-
borderRadius: 5
|
|
128
|
+
borderRadius: 5,
|
|
129
|
+
padding: 2,
|
|
130
|
+
margin: 0
|
|
73
131
|
}
|
|
74
132
|
};
|
|
75
133
|
}
|
|
134
|
+
|
|
135
|
+
// The entries whose values are themselves style objects rather than lengths, and
|
|
136
|
+
// so have to be merged rather than replaced: overriding `orderedList.marker`
|
|
137
|
+
// must not drop the marker's colour from the defaults.
|
|
138
|
+
const NESTED_KEYS = new Set(["marker", "textShadowOffset"]);
|
|
139
|
+
|
|
140
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
141
|
+
|
|
142
|
+
function isPlainObject(value) {
|
|
143
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Copies `input` over `output` in place, one level deep, and two where the value
|
|
148
|
+
* is itself a style object.
|
|
149
|
+
*
|
|
150
|
+
* `undefined` is skipped rather than written, so spreading a style that spells a
|
|
151
|
+
* property out as `undefined` -- which is what an optional prop destructured
|
|
152
|
+
* from a component's props looks like -- leaves the default in place instead of
|
|
153
|
+
* erasing it.
|
|
154
|
+
*/
|
|
155
|
+
function assignStyle(output, input) {
|
|
156
|
+
Object.keys(input).forEach(key => {
|
|
157
|
+
const value = input[key];
|
|
158
|
+
if (value === undefined) {
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
if (NESTED_KEYS.has(key) && isPlainObject(value)) {
|
|
162
|
+
const nested = isPlainObject(output[key]) ? output[key] : {};
|
|
163
|
+
assignStyle(nested, value);
|
|
164
|
+
// eslint-disable-next-line no-param-reassign
|
|
165
|
+
output[key] = nested;
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
// React Native accepts a numeric font weight; the native decorators read it
|
|
170
|
+
// as a string, because codegen has no union of a number and a string.
|
|
171
|
+
// eslint-disable-next-line no-param-reassign
|
|
172
|
+
output[key] = key === "fontWeight" && typeof value === "number" ? String(value) : value;
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
// The entries drawn as a box, and so written with lengths that may be given for
|
|
177
|
+
// both axes at once.
|
|
178
|
+
const BOX_KEYS = ["code", "pre", "mention"];
|
|
179
|
+
const LIST_KEYS = ["orderedList", "unorderedList"];
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* Settles the two questions a renderer would otherwise have to ask about where a
|
|
183
|
+
* value came from, so that none of the three has to ask them.
|
|
184
|
+
*
|
|
185
|
+
* A box's `padding` and `margin` cover both axes and `paddingHorizontal` and the
|
|
186
|
+
* rest win over them, but native cannot tell a length that was left out from one
|
|
187
|
+
* that was written as zero -- codegen has no optional numbers -- so the pair is
|
|
188
|
+
* resolved into the two axes here, once, rather than three times over.
|
|
189
|
+
*
|
|
190
|
+
* A list marker's style is `syntax` with the list's own `marker` over it, which
|
|
191
|
+
* is what keeps `syntax.color` meaning what it always meant for a marker while
|
|
192
|
+
* letting a list say something different.
|
|
193
|
+
*/
|
|
194
|
+
function resolveMarkdownStyle(style) {
|
|
195
|
+
BOX_KEYS.forEach(key => {
|
|
196
|
+
const box = style[key];
|
|
197
|
+
box.paddingHorizontal = box.paddingHorizontal ?? box.padding ?? 0;
|
|
198
|
+
box.paddingVertical = box.paddingVertical ?? box.padding ?? 0;
|
|
199
|
+
box.marginHorizontal = box.marginHorizontal ?? box.margin ?? 0;
|
|
200
|
+
box.marginVertical = box.marginVertical ?? box.margin ?? 0;
|
|
201
|
+
});
|
|
202
|
+
LIST_KEYS.forEach(key => {
|
|
203
|
+
style[key].marker = {
|
|
204
|
+
...style.syntax,
|
|
205
|
+
...style[key].marker
|
|
206
|
+
};
|
|
207
|
+
});
|
|
208
|
+
return style;
|
|
209
|
+
}
|
|
76
210
|
function mergeMarkdownStyleWithDefault(input) {
|
|
77
211
|
const output = makeDefaultMarkdownStyle();
|
|
78
212
|
if (input !== undefined) {
|
|
@@ -81,11 +215,48 @@ function mergeMarkdownStyleWithDefault(input) {
|
|
|
81
215
|
return;
|
|
82
216
|
}
|
|
83
217
|
const outputValue = output[key];
|
|
84
|
-
|
|
85
|
-
|
|
218
|
+
const inputValue = input[key];
|
|
219
|
+
if (isPlainObject(outputValue) && isPlainObject(inputValue)) {
|
|
220
|
+
assignStyle(outputValue, inputValue);
|
|
86
221
|
}
|
|
87
222
|
});
|
|
88
223
|
}
|
|
224
|
+
return resolveMarkdownStyle(output);
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* Turns every colour in the style into the platform's own representation.
|
|
229
|
+
*
|
|
230
|
+
* Walks the whole tree rather than its top two levels: a list's `marker` and a
|
|
231
|
+
* run's `textShadowOffset` put style values one level further down than the
|
|
232
|
+
* entries around them.
|
|
233
|
+
*/
|
|
234
|
+
function processColorsInMarkdownStyle(input) {
|
|
235
|
+
const output = JSON.parse(JSON.stringify(input));
|
|
236
|
+
const walk = node => {
|
|
237
|
+
Object.keys(node).forEach(prop => {
|
|
238
|
+
const value = node[prop];
|
|
239
|
+
if (isPlainObject(value)) {
|
|
240
|
+
walk(value);
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
// TODO: use ReactNativeStyleAttributes from 'react-native/Libraries/Components/View/ReactNativeStyleAttributes'
|
|
245
|
+
if (!(prop === "color" || prop.endsWith("Color"))) {
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
248
|
+
// eslint-disable-next-line no-param-reassign
|
|
249
|
+
node[prop] = (0, _reactNative.processColor)(value);
|
|
250
|
+
});
|
|
251
|
+
};
|
|
252
|
+
walk(output);
|
|
89
253
|
return output;
|
|
90
254
|
}
|
|
255
|
+
|
|
256
|
+
// The shape the native decorators take: defaults filled in, colours turned into
|
|
257
|
+
// the platform representation. Shared by both components so a style means the
|
|
258
|
+
// same thing whether it is being typed into or read.
|
|
259
|
+
function processMarkdownStyle(input) {
|
|
260
|
+
return processColorsInMarkdownStyle(mergeMarkdownStyleWithDefault(input));
|
|
261
|
+
}
|
|
91
262
|
//# sourceMappingURL=styleUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","FONT_FAMILY_MONOSPACE","Platform","select","ios","default","FONT_FAMILY_EMOJI","android","makeDefaultMarkdownStyle","syntax","color","link","heading","fontSize","scale","emoji","fontFamily","blockquote","borderColor","borderWidth","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","FONT_FAMILY_MONOSPACE","Platform","select","ios","default","FONT_FAMILY_EMOJI","android","makeDefaultMarkdownStyle","syntax","color","link","textDecorationLine","strong","fontWeight","emphasis","fontStyle","strikethrough","heading","fontSize","scale","emoji","fontFamily","blockquote","borderColor","borderWidth","borderRadius","marginStart","paddingStart","orderedList","markerScale","markerPadding","marker","unorderedList","code","backgroundColor","padding","margin","pre","mention","NESTED_KEYS","Set","isPlainObject","value","Array","isArray","assignStyle","output","input","Object","keys","forEach","key","undefined","has","nested","String","BOX_KEYS","LIST_KEYS","resolveMarkdownStyle","style","box","paddingHorizontal","paddingVertical","marginHorizontal","marginVertical","mergeMarkdownStyleWithDefault","outputValue","inputValue","processColorsInMarkdownStyle","JSON","parse","stringify","walk","node","prop","endsWith","processColor","processMarkdownStyle"],"sourceRoot":"../../src","sources":["styleUtils.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Undoes what the browser does on a tag's behalf.
|
|
3
|
+
*
|
|
4
|
+
* A markdown element is built as the tag that says what its text is -- `<blockquote>`, `<ul>`,
|
|
5
|
+
* `<h2>`, `<pre>` -- and every one of those arrives with a look of its own: a quote indented forty
|
|
6
|
+
* pixels, a heading sized and spaced by level, a list with a bullet and a gutter, a `<pre>` in a
|
|
7
|
+
* monospace font that refuses to wrap. None of it is wanted. Every measurement this component
|
|
8
|
+
* renders by is computed from the markdown style and set on the element, and the two native
|
|
9
|
+
* formatters draw from the same numbers; a browser default left in place is the one thing that
|
|
10
|
+
* would move the web off them.
|
|
11
|
+
*
|
|
12
|
+
* So the tag is taken for what it means and the look it carries is handed back. Anything the
|
|
13
|
+
* builder sets is an inline style and wins over all of this, which leaves `addStyleToBlock` in
|
|
14
|
+
* charge of the appearance exactly as it was when every element was a span.
|
|
15
|
+
*
|
|
16
|
+
* The class is on the elements rather than on a container: these rules must reach the input and
|
|
17
|
+
* `MarkdownText` alike, and naming the library is what keeps them off everything else on the page.
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
blockquote.react-native-marcus,
|
|
21
|
+
ul.react-native-marcus,
|
|
22
|
+
ol.react-native-marcus,
|
|
23
|
+
li.react-native-marcus,
|
|
24
|
+
pre.react-native-marcus,
|
|
25
|
+
h1.react-native-marcus,
|
|
26
|
+
h2.react-native-marcus,
|
|
27
|
+
h3.react-native-marcus,
|
|
28
|
+
h4.react-native-marcus,
|
|
29
|
+
h5.react-native-marcus,
|
|
30
|
+
h6.react-native-marcus {
|
|
31
|
+
display: inline;
|
|
32
|
+
margin: 0;
|
|
33
|
+
padding: 0;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/* The marker a list draws is its own, measured and placed by `layoutBlocks`. */
|
|
37
|
+
ul.react-native-marcus,
|
|
38
|
+
ol.react-native-marcus,
|
|
39
|
+
li.react-native-marcus {
|
|
40
|
+
list-style: none;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/* `font` rather than `font-family`: the monospace default comes with a size of its own, and a
|
|
44
|
+
heading's comes with a weight and a size per level. */
|
|
45
|
+
pre.react-native-marcus,
|
|
46
|
+
code.react-native-marcus,
|
|
47
|
+
h1.react-native-marcus,
|
|
48
|
+
h2.react-native-marcus,
|
|
49
|
+
h3.react-native-marcus,
|
|
50
|
+
h4.react-native-marcus,
|
|
51
|
+
h5.react-native-marcus,
|
|
52
|
+
h6.react-native-marcus {
|
|
53
|
+
font: inherit;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/* A `<pre>` holds its own `white-space`, so a fenced block would stop wrapping with the rest of
|
|
57
|
+
the input the moment it became one. */
|
|
58
|
+
pre.react-native-marcus {
|
|
59
|
+
white-space: inherit;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/* A link is coloured and underlined by `markdownStyle`, in the same values the native formatters
|
|
63
|
+
are given, rather than in the browser's blue. */
|
|
64
|
+
a.react-native-marcus {
|
|
65
|
+
color: inherit;
|
|
66
|
+
text-decoration: none;
|
|
67
|
+
}
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
white-space: pre-wrap;
|
|
3
3
|
}
|
|
4
4
|
|
|
5
|
-
.react-native-marcus-input-singleline
|
|
5
|
+
.react-native-marcus-input-singleline *[data-type='line'] {
|
|
6
6
|
display: inline-block;
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
-
.react-native-marcus-input-multiline
|
|
9
|
+
.react-native-marcus-input-multiline *[data-type='line'] {
|
|
10
10
|
display: block;
|
|
11
11
|
}
|
|
12
12
|
|
|
@@ -22,12 +22,13 @@
|
|
|
22
22
|
vertical-align: middle;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
.react-native-marcus-input-singleline
|
|
25
|
+
.react-native-marcus-input-singleline *[data-type='link'] span[data-type='text'] {
|
|
26
26
|
vertical-align: top;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
/* Room for the caret past the last character, on whichever side the line ends. */
|
|
30
|
+
.react-native-marcus-input-singleline > *[data-type='line']:last-child {
|
|
31
|
+
padding-inline-end: 1px !important;
|
|
31
32
|
}
|
|
32
33
|
|
|
33
34
|
.react-native-marcus-input-singleline:empty::before,
|
|
@@ -45,10 +46,11 @@
|
|
|
45
46
|
box-sizing: border-box;
|
|
46
47
|
}
|
|
47
48
|
|
|
49
|
+
/* A block is drawn as a box across the line, the way both native formatters
|
|
50
|
+
draw it, rather than as a background hugging the code. Its own padding and
|
|
51
|
+
margin are set on the element by `addCodeBlockStyle`. */
|
|
48
52
|
.react-native-marcus-input-multiline *[data-type='codeblock'] {
|
|
49
53
|
position: relative;
|
|
50
|
-
width: fit-content;
|
|
51
|
-
max-width: 100%;
|
|
52
54
|
box-sizing: border-box;
|
|
53
55
|
z-index: 2;
|
|
54
56
|
display: block;
|
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
exports.SHOWN_MARKERS = void 0;
|
|
6
7
|
exports.layoutBlocks = layoutBlocks;
|
|
8
|
+
exports.markerRun = markerRun;
|
|
7
9
|
exports.toNumber = toNumber;
|
|
8
10
|
const BLOCK_PREFIX = "block-prefix";
|
|
9
11
|
|
|
@@ -16,6 +18,24 @@ const BLOCK_PREFIX = "block-prefix";
|
|
|
16
18
|
* `MarkdownBlockIndentSpan` fill a blockquote's bars at.
|
|
17
19
|
*/
|
|
18
20
|
|
|
21
|
+
/**
|
|
22
|
+
* How a list's markers are drawn, which is the one thing a display does differently from an input.
|
|
23
|
+
*
|
|
24
|
+
* A display renders the marker rather than showing it: an unordered item's `-` becomes a bullet, an
|
|
25
|
+
* ordered item's `1.` stays the number it means but at its own scale, and both hold a little room
|
|
26
|
+
* either side. An input shows the marker you typed, in the base font, because there it is text
|
|
27
|
+
* being edited rather than a rendering of it. `MarkdownFormatter` draws the same distinction on
|
|
28
|
+
* both native platforms from the same style values.
|
|
29
|
+
*
|
|
30
|
+
* `fontSize` is what the wrapped element renders at, in pixels, which is what a marker is sized in
|
|
31
|
+
* proportion to.
|
|
32
|
+
*/
|
|
33
|
+
|
|
34
|
+
/** An input's markers, and the default everywhere the question does not arise. */
|
|
35
|
+
const SHOWN_MARKERS = exports.SHOWN_MARKERS = {
|
|
36
|
+
display: false,
|
|
37
|
+
fontSize: 0
|
|
38
|
+
};
|
|
19
39
|
function toNumber(value) {
|
|
20
40
|
if (typeof value === "number") {
|
|
21
41
|
return value;
|
|
@@ -31,16 +51,73 @@ function toNumber(value) {
|
|
|
31
51
|
function stepOf(type, markdownStyle) {
|
|
32
52
|
switch (type) {
|
|
33
53
|
case "blockquote":
|
|
34
|
-
return toNumber(markdownStyle.blockquote?.
|
|
54
|
+
return toNumber(markdownStyle.blockquote?.marginStart) + toNumber(markdownStyle.blockquote?.borderWidth) + toNumber(markdownStyle.blockquote?.paddingStart);
|
|
35
55
|
case "list-ordered":
|
|
36
|
-
return toNumber(markdownStyle.orderedList?.
|
|
56
|
+
return toNumber(markdownStyle.orderedList?.marginStart) + toNumber(markdownStyle.orderedList?.paddingStart);
|
|
37
57
|
case "list-unordered":
|
|
38
|
-
return toNumber(markdownStyle.unorderedList?.
|
|
58
|
+
return toNumber(markdownStyle.unorderedList?.marginStart) + toNumber(markdownStyle.unorderedList?.paddingStart);
|
|
39
59
|
default:
|
|
40
60
|
return null;
|
|
41
61
|
}
|
|
42
62
|
}
|
|
43
63
|
|
|
64
|
+
/** The style entry a list type's markers are drawn from, or null if the type is not a list. */
|
|
65
|
+
function listStyle(type, markdownStyle) {
|
|
66
|
+
switch (type) {
|
|
67
|
+
case "list-ordered":
|
|
68
|
+
return markdownStyle.orderedList ?? null;
|
|
69
|
+
case "list-unordered":
|
|
70
|
+
return markdownStyle.unorderedList ?? null;
|
|
71
|
+
default:
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/** Room held open either side of a marker, or nothing where the marker is shown rather than drawn. */
|
|
77
|
+
function markerPadding(type, markdownStyle, rendering) {
|
|
78
|
+
if (!rendering.display) {
|
|
79
|
+
return 0;
|
|
80
|
+
}
|
|
81
|
+
return toNumber(listStyle(type, markdownStyle)?.markerPadding);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* The marker at the end of a prefix: the `-` of a bullet or the `1.` of a numbered item, without
|
|
86
|
+
* the indent in front of it or the space after it.
|
|
87
|
+
*
|
|
88
|
+
* Read off the text rather than taken from the `syntax` range covering it, because a prefix runs
|
|
89
|
+
* from wherever the previous container's marker ended and so can carry another container's marker
|
|
90
|
+
* with it -- the ordered list in `- > 1. ` is handed `> 1. `. The last run of non-blanks is this
|
|
91
|
+
* container's own. `MarkdownFormatter` reads it the same way on both native platforms.
|
|
92
|
+
*/
|
|
93
|
+
function markerRun(prefix) {
|
|
94
|
+
const trimmed = prefix.replace(/[ \t]+$/, "");
|
|
95
|
+
const match = /[^ \t]+$/.exec(trimmed);
|
|
96
|
+
return match ? match[0] : "";
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* The width a prefix's glyphs take up: what it measures, with whatever the display draws in place
|
|
101
|
+
* of the marker standing in for the marker's own width.
|
|
102
|
+
*/
|
|
103
|
+
function markerWidth(prefix, type, markdownStyle, rendering, measure) {
|
|
104
|
+
const width = measure(prefix);
|
|
105
|
+
const style = listStyle(type, markdownStyle);
|
|
106
|
+
if (!rendering.display || rendering.fontSize <= 0 || !style) {
|
|
107
|
+
return width;
|
|
108
|
+
}
|
|
109
|
+
const run = markerRun(prefix);
|
|
110
|
+
const scale = toNumber(style.markerScale);
|
|
111
|
+
if (run === "" || scale <= 0) {
|
|
112
|
+
return width;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// What is left of the prefix -- an indent in front, the space behind -- measures as it always
|
|
116
|
+
// did; only the marker itself is drawn differently.
|
|
117
|
+
const rest = width - measure(run);
|
|
118
|
+
return type === "list-unordered" ? rest + rendering.fontSize * scale : rest + measure(run) * scale;
|
|
119
|
+
}
|
|
120
|
+
|
|
44
121
|
/**
|
|
45
122
|
* Places the containers of every line, left to right -- the web half of `BlockLayout` in
|
|
46
123
|
* `apple/MarkdownFormatter.swift` and `android/.../MarkdownFormatter.kt`, and deliberately the same
|
|
@@ -59,11 +136,11 @@ function stepOf(type, markdownStyle) {
|
|
|
59
136
|
* to -- so it has to run before `sortRanges` rearranges them into the containment order the DOM
|
|
60
137
|
* builder needs.
|
|
61
138
|
*/
|
|
62
|
-
function layoutBlocks(text, ranges, markdownStyle, measure) {
|
|
139
|
+
function layoutBlocks(text, ranges, markdownStyle, measure, rendering = SHOWN_MARKERS) {
|
|
63
140
|
const layouts = new Map();
|
|
64
141
|
/** Last marker seen for each container type, for the lines that continue it. */
|
|
65
142
|
const markers = new Map();
|
|
66
|
-
const ribbonMargin = toNumber(markdownStyle.blockquote?.
|
|
143
|
+
const ribbonMargin = toNumber(markdownStyle.blockquote?.marginStart);
|
|
67
144
|
let pendingPrefix = null;
|
|
68
145
|
let line = null;
|
|
69
146
|
let lineStart = -1;
|
|
@@ -112,15 +189,26 @@ function layoutBlocks(text, ranges, markdownStyle, measure) {
|
|
|
112
189
|
}
|
|
113
190
|
}
|
|
114
191
|
offset += gutter;
|
|
192
|
+
|
|
193
|
+
// The room either side of a list marker is indent on the way in -- the marker moves right with
|
|
194
|
+
// the text -- and a gap after the prefix on the way out, which is where the gutter of a nested
|
|
195
|
+
// container goes too.
|
|
196
|
+
const marker = pendingPrefix ?? markers.get(range.type);
|
|
197
|
+
const padding = marker ? markerPadding(range.type, markdownStyle, rendering) : 0;
|
|
198
|
+
offset += padding;
|
|
115
199
|
if (pendingPrefix) {
|
|
116
200
|
markers.set(range.type, pendingPrefix);
|
|
117
201
|
if (textStart < 0) {
|
|
118
202
|
textStart = offset;
|
|
119
203
|
}
|
|
120
204
|
}
|
|
121
|
-
const marker = pendingPrefix ?? markers.get(range.type);
|
|
122
205
|
if (marker) {
|
|
123
|
-
|
|
206
|
+
const prefix = text.substring(marker.start, marker.start + marker.length);
|
|
207
|
+
offset += markerWidth(prefix, range.type, markdownStyle, rendering, measure);
|
|
208
|
+
offset += padding;
|
|
209
|
+
if (pendingPrefix && padding > 0) {
|
|
210
|
+
current.gaps.set(pendingPrefix.start, (current.gaps.get(pendingPrefix.start) ?? 0) + padding);
|
|
211
|
+
}
|
|
124
212
|
}
|
|
125
213
|
padded = pendingPrefix;
|
|
126
214
|
pendingPrefix = null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["BLOCK_PREFIX","toNumber","value","parsed","parseFloat","Number","isFinite","stepOf","type","markdownStyle","blockquote","
|
|
1
|
+
{"version":3,"names":["BLOCK_PREFIX","SHOWN_MARKERS","exports","display","fontSize","toNumber","value","parsed","parseFloat","Number","isFinite","stepOf","type","markdownStyle","blockquote","marginStart","borderWidth","paddingStart","orderedList","unorderedList","listStyle","markerPadding","rendering","markerRun","prefix","trimmed","replace","match","exec","markerWidth","measure","width","style","run","scale","markerScale","rest","layoutBlocks","text","ranges","layouts","Map","markers","ribbonMargin","pendingPrefix","line","lineStart","offset","textStart","padded","i","length","range","step","depth","gutter","start","firstLineIndent","indent","ribbons","gaps","set","current","get","level","push","marker","padding","substring"],"sourceRoot":"../../../../src","sources":["web/utils/blockLayout.ts"],"mappings":"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","ignoreList":[]}
|