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.
Files changed (294) hide show
  1. package/README.md +220 -63
  2. package/RNMarcus.podspec +6 -0
  3. package/android/src/main/java/app/getbullet/marcus/MarcusPackage.kt +2 -1
  4. package/android/src/main/java/app/getbullet/marcus/MarcusTextDecoratorView.kt +168 -0
  5. package/android/src/main/java/app/getbullet/marcus/MarcusTextDecoratorViewManager.kt +38 -0
  6. package/android/src/main/java/app/getbullet/marcus/MarcusTextDecoratorViewManagerSpec.kt +19 -0
  7. package/android/src/main/java/app/getbullet/marcus/MarcusTextInputDecoratorView.kt +23 -1
  8. package/android/src/main/java/app/getbullet/marcus/MarkdownBackgroundPainter.kt +147 -0
  9. package/android/src/main/java/app/getbullet/marcus/MarkdownBackgroundPass.kt +19 -0
  10. package/android/src/main/java/app/getbullet/marcus/MarkdownCopy.kt +87 -0
  11. package/android/src/main/java/app/getbullet/marcus/MarkdownFormatter.kt +652 -113
  12. package/android/src/main/java/app/getbullet/marcus/MarkdownRanges.kt +47 -0
  13. package/android/src/main/java/app/getbullet/marcus/MarkdownStyle.kt +140 -61
  14. package/android/src/main/java/app/getbullet/marcus/MarkdownUtils.kt +37 -7
  15. package/android/src/main/java/app/getbullet/marcus/spans/MarkdownAbsoluteLineHeightSpan.kt +48 -0
  16. package/android/src/main/java/app/getbullet/marcus/spans/MarkdownBackgroundSpan.kt +102 -48
  17. package/android/src/main/java/app/getbullet/marcus/spans/MarkdownBlockIndentSpan.kt +22 -4
  18. package/android/src/main/java/app/getbullet/marcus/spans/MarkdownBulletSpan.kt +78 -0
  19. package/android/src/main/java/app/getbullet/marcus/spans/MarkdownCodeBlockSpan.kt +177 -0
  20. package/android/src/main/java/app/getbullet/marcus/spans/MarkdownFontStyleSpan.kt +32 -0
  21. package/android/src/main/java/app/getbullet/marcus/spans/MarkdownFontWeightSpan.kt +34 -0
  22. package/android/src/main/java/app/getbullet/marcus/spans/MarkdownGapSpan.kt +24 -11
  23. package/android/src/main/java/app/getbullet/marcus/spans/MarkdownLetterSpacingSpan.kt +32 -0
  24. package/android/src/main/java/app/getbullet/marcus/spans/MarkdownTextShadowSpan.kt +32 -0
  25. package/android/src/main/new_arch/CMakeLists.txt +17 -0
  26. package/android/src/main/new_arch/RNMarcusSpec.h +1 -0
  27. package/android/src/main/new_arch/react/renderer/components/RNMarcusSpec/MarcusTextDecoratorShadowNode.cpp +235 -0
  28. package/android/src/main/new_arch/react/renderer/components/RNMarcusSpec/MarcusTextDecoratorShadowNode.h +62 -0
  29. package/android/src/reactNativeVersionPatch/CustomMountingManager/81/app/getbullet/marcus/CustomFabricUIManager.java +22 -3
  30. package/android/src/reactNativeVersionPatch/CustomMountingManager/latest/app/getbullet/marcus/CustomFabricUIManager.java +22 -3
  31. package/android/src/test/java/app/getbullet/marcus/MarkdownCopyTest.kt +69 -0
  32. package/android/src/test/java/app/getbullet/marcus/MarkdownFormatterTest.kt +170 -25
  33. package/android/src/test/java/app/getbullet/marcus/RenderModel.kt +22 -5
  34. package/android/src/test/java/app/getbullet/marcus/spans/MarkdownCodeBlockSpanTest.kt +91 -0
  35. package/android/src/test/resources/render-model.txt +221 -16
  36. package/apple/MarcusSwizzle.h +25 -0
  37. package/apple/MarcusTextDecoratorComponentView.h +22 -0
  38. package/apple/MarcusTextDecoratorComponentView.mm +72 -0
  39. package/apple/MarcusTextDecoratorShadowNode.h +62 -0
  40. package/apple/MarcusTextDecoratorShadowNode.mm +192 -0
  41. package/apple/MarcusTextDecoratorViewManager.h +4 -0
  42. package/apple/MarcusTextDecoratorViewManager.mm +11 -0
  43. package/apple/MarcusTextInputDecoratorComponentView.mm +1 -1
  44. package/apple/MarcusTextInputDecoratorShadowNode.mm +1 -1
  45. package/apple/MarcusTextLayoutManager.h +40 -0
  46. package/apple/MarcusTextLayoutManager.mm +173 -0
  47. package/apple/MarkdownAttributes.h +23 -2
  48. package/apple/MarkdownAttributes.m +6 -0
  49. package/apple/MarkdownCopy.swift +63 -0
  50. package/apple/MarkdownDecorator.swift +2 -2
  51. package/apple/MarkdownFormatter+React.swift +23 -0
  52. package/apple/MarkdownFormatter.swift +869 -148
  53. package/apple/MarkdownParagraphLayoutManager.swift +455 -0
  54. package/apple/MarkdownSwiftInterop.h +0 -1
  55. package/apple/MarkdownTextBackground.swift +59 -1
  56. package/apple/MarkdownTextFieldObserver.swift +2 -2
  57. package/apple/MarkdownTextLayoutFragment.swift +159 -33
  58. package/apple/MarkdownTextLayoutManagerDelegate.swift +67 -3
  59. package/apple/MarkdownTextStorageDelegate.swift +2 -2
  60. package/apple/MarkdownTextViewObserver.swift +2 -2
  61. package/apple/MarkdownUtils.swift +38 -0
  62. package/apple/MarkdownWritingDirection.swift +132 -0
  63. package/apple/RCTMarcusStyle+Codegen.h +115 -9
  64. package/apple/RCTMarcusStyle.h +128 -31
  65. package/apple/RCTMarcusStyle.m +48 -0
  66. package/apple/RCTParagraphComponentView+Marcus.h +17 -0
  67. package/apple/RCTParagraphComponentView+Marcus.mm +38 -0
  68. package/apple/RCTTextInputComponentView+Marcus.mm +1 -25
  69. package/cpp/react/renderer/components/RNMarcusSpec/MarcusTextDecoratorState.h +37 -0
  70. package/cpp/react/renderer/components/RNMarcusSpec/MarcusTextDecoratorViewComponentDescriptor.h +17 -0
  71. package/lib/commonjs/MarcusTextDecoratorViewNativeComponent.ts +199 -0
  72. package/lib/commonjs/MarcusTextInputDecoratorViewNativeComponent.ts +145 -58
  73. package/lib/commonjs/MarkdownText.js +330 -0
  74. package/lib/commonjs/MarkdownText.js.map +1 -0
  75. package/lib/commonjs/MarkdownText.web.js +529 -0
  76. package/lib/commonjs/MarkdownText.web.js.map +1 -0
  77. package/lib/commonjs/MarkdownTextInput.js +22 -27
  78. package/lib/commonjs/MarkdownTextInput.js.map +1 -1
  79. package/lib/commonjs/MarkdownTextInput.web.js +12 -7
  80. package/lib/commonjs/MarkdownTextInput.web.js.map +1 -1
  81. package/lib/commonjs/atomUtils.js +112 -0
  82. package/lib/commonjs/atomUtils.js.map +1 -0
  83. package/lib/commonjs/childrenUtils.js +36 -0
  84. package/lib/commonjs/childrenUtils.js.map +1 -0
  85. package/lib/commonjs/index.js +8 -7
  86. package/lib/commonjs/index.js.map +1 -1
  87. package/lib/commonjs/math/environment.js +69 -0
  88. package/lib/commonjs/math/environment.js.map +1 -0
  89. package/lib/commonjs/math/index.js +61 -0
  90. package/lib/commonjs/math/index.js.map +1 -0
  91. package/lib/commonjs/math/mathjax.js +548 -0
  92. package/lib/commonjs/math/mathjax.js.map +1 -0
  93. package/lib/commonjs/metro.js +172 -0
  94. package/lib/commonjs/metro.js.map +1 -0
  95. package/lib/commonjs/parser/index.d.ts +3 -0
  96. package/lib/commonjs/parser/index.js +450 -42
  97. package/lib/commonjs/parser/index.js.map +4 -4
  98. package/lib/commonjs/stripUtils.js +743 -0
  99. package/lib/commonjs/stripUtils.js.map +1 -0
  100. package/lib/commonjs/styleUtils.js +194 -23
  101. package/lib/commonjs/styleUtils.js.map +1 -1
  102. package/lib/commonjs/web/MarkdownElements.css +67 -0
  103. package/lib/commonjs/web/MarkdownTextInput.css +9 -7
  104. package/lib/commonjs/web/utils/blockLayout.js +95 -7
  105. package/lib/commonjs/web/utils/blockLayout.js.map +1 -1
  106. package/lib/commonjs/web/utils/blockUtils.js +327 -54
  107. package/lib/commonjs/web/utils/blockUtils.js.map +1 -1
  108. package/lib/commonjs/web/utils/elementUtils.js +80 -0
  109. package/lib/commonjs/web/utils/elementUtils.js.map +1 -0
  110. package/lib/commonjs/web/utils/parserUtils.js +84 -28
  111. package/lib/commonjs/web/utils/parserUtils.js.map +1 -1
  112. package/lib/commonjs/web/utils/treeUtils.js +6 -0
  113. package/lib/commonjs/web/utils/treeUtils.js.map +1 -1
  114. package/lib/commonjs/web/utils/webStyleUtils.js +25 -5
  115. package/lib/commonjs/web/utils/webStyleUtils.js.map +1 -1
  116. package/lib/module/MarcusTextDecoratorViewNativeComponent.ts +199 -0
  117. package/lib/module/MarcusTextInputDecoratorViewNativeComponent.ts +145 -58
  118. package/lib/module/MarkdownText.js +325 -0
  119. package/lib/module/MarkdownText.js.map +1 -0
  120. package/lib/module/MarkdownText.web.js +524 -0
  121. package/lib/module/MarkdownText.web.js.map +1 -0
  122. package/lib/module/MarkdownTextInput.js +24 -29
  123. package/lib/module/MarkdownTextInput.js.map +1 -1
  124. package/lib/module/MarkdownTextInput.web.js +12 -7
  125. package/lib/module/MarkdownTextInput.web.js.map +1 -1
  126. package/lib/module/atomUtils.js +106 -0
  127. package/lib/module/atomUtils.js.map +1 -0
  128. package/lib/module/childrenUtils.js +33 -0
  129. package/lib/module/childrenUtils.js.map +1 -0
  130. package/lib/module/index.js +1 -1
  131. package/lib/module/index.js.map +1 -1
  132. package/lib/module/math/environment.js +67 -0
  133. package/lib/module/math/environment.js.map +1 -0
  134. package/lib/module/math/index.js +56 -0
  135. package/lib/module/math/index.js.map +1 -0
  136. package/lib/module/math/mathjax.js +541 -0
  137. package/lib/module/math/mathjax.js.map +1 -0
  138. package/lib/module/metro.js +169 -0
  139. package/lib/module/metro.js.map +1 -0
  140. package/lib/module/parser/index.d.ts +3 -0
  141. package/lib/module/parser/index.js +450 -42
  142. package/lib/module/parser/index.js.map +4 -4
  143. package/lib/module/stripUtils.js +739 -0
  144. package/lib/module/stripUtils.js.map +1 -0
  145. package/lib/module/styleUtils.js +196 -25
  146. package/lib/module/styleUtils.js.map +1 -1
  147. package/lib/module/web/MarkdownElements.css +67 -0
  148. package/lib/module/web/MarkdownTextInput.css +9 -7
  149. package/lib/module/web/utils/blockLayout.js +94 -8
  150. package/lib/module/web/utils/blockLayout.js.map +1 -1
  151. package/lib/module/web/utils/blockUtils.js +328 -56
  152. package/lib/module/web/utils/blockUtils.js.map +1 -1
  153. package/lib/module/web/utils/elementUtils.js +75 -0
  154. package/lib/module/web/utils/elementUtils.js.map +1 -0
  155. package/lib/module/web/utils/parserUtils.js +86 -30
  156. package/lib/module/web/utils/parserUtils.js.map +1 -1
  157. package/lib/module/web/utils/treeUtils.js +6 -0
  158. package/lib/module/web/utils/treeUtils.js.map +1 -1
  159. package/lib/module/web/utils/webStyleUtils.js +25 -5
  160. package/lib/module/web/utils/webStyleUtils.js.map +1 -1
  161. package/lib/typescript/commonjs/e2e/links.test.d.ts +2 -0
  162. package/lib/typescript/commonjs/e2e/links.test.d.ts.map +1 -0
  163. package/lib/typescript/commonjs/src/MarcusTextDecoratorViewNativeComponent.d.ts +93 -0
  164. package/lib/typescript/commonjs/src/MarcusTextDecoratorViewNativeComponent.d.ts.map +1 -0
  165. package/lib/typescript/commonjs/src/MarcusTextInputDecoratorViewNativeComponent.d.ts +64 -51
  166. package/lib/typescript/commonjs/src/MarcusTextInputDecoratorViewNativeComponent.d.ts.map +1 -1
  167. package/lib/typescript/commonjs/src/MarkdownText.d.ts +127 -0
  168. package/lib/typescript/commonjs/src/MarkdownText.d.ts.map +1 -0
  169. package/lib/typescript/commonjs/src/MarkdownText.web.d.ts +126 -0
  170. package/lib/typescript/commonjs/src/MarkdownText.web.d.ts.map +1 -0
  171. package/lib/typescript/commonjs/src/MarkdownTextInput.d.ts +23 -1
  172. package/lib/typescript/commonjs/src/MarkdownTextInput.d.ts.map +1 -1
  173. package/lib/typescript/commonjs/src/MarkdownTextInput.web.d.ts +26 -4
  174. package/lib/typescript/commonjs/src/MarkdownTextInput.web.d.ts.map +1 -1
  175. package/lib/typescript/commonjs/src/atomUtils.d.ts +58 -0
  176. package/lib/typescript/commonjs/src/atomUtils.d.ts.map +1 -0
  177. package/lib/typescript/commonjs/src/childrenUtils.d.ts +12 -0
  178. package/lib/typescript/commonjs/src/childrenUtils.d.ts.map +1 -0
  179. package/lib/typescript/commonjs/src/commonTypes.d.ts +39 -3
  180. package/lib/typescript/commonjs/src/commonTypes.d.ts.map +1 -1
  181. package/lib/typescript/commonjs/src/index.d.ts +2 -1
  182. package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
  183. package/lib/typescript/commonjs/src/math/environment.d.ts +7 -0
  184. package/lib/typescript/commonjs/src/math/environment.d.ts.map +1 -0
  185. package/lib/typescript/commonjs/src/math/index.d.ts +64 -0
  186. package/lib/typescript/commonjs/src/math/index.d.ts.map +1 -0
  187. package/lib/typescript/commonjs/src/math/mathjax.d.ts +63 -0
  188. package/lib/typescript/commonjs/src/math/mathjax.d.ts.map +1 -0
  189. package/lib/typescript/commonjs/src/metro.d.ts +59 -0
  190. package/lib/typescript/commonjs/src/metro.d.ts.map +1 -0
  191. package/lib/typescript/commonjs/src/parser/index.d.ts +3 -3
  192. package/lib/typescript/commonjs/src/parser/index.d.ts.map +1 -1
  193. package/lib/typescript/commonjs/src/parser/micromark-extension-mentions.d.ts.map +1 -1
  194. package/lib/typescript/commonjs/src/rangeUtils.d.ts +1 -1
  195. package/lib/typescript/commonjs/src/stripUtils.d.ts +108 -0
  196. package/lib/typescript/commonjs/src/stripUtils.d.ts.map +1 -0
  197. package/lib/typescript/commonjs/src/styleUtils.d.ts +62 -4
  198. package/lib/typescript/commonjs/src/styleUtils.d.ts.map +1 -1
  199. package/lib/typescript/commonjs/src/web/utils/blockLayout.d.ts +32 -4
  200. package/lib/typescript/commonjs/src/web/utils/blockLayout.d.ts.map +1 -1
  201. package/lib/typescript/commonjs/src/web/utils/blockUtils.d.ts +20 -8
  202. package/lib/typescript/commonjs/src/web/utils/blockUtils.d.ts.map +1 -1
  203. package/lib/typescript/commonjs/src/web/utils/elementUtils.d.ts +37 -0
  204. package/lib/typescript/commonjs/src/web/utils/elementUtils.d.ts.map +1 -0
  205. package/lib/typescript/commonjs/src/web/utils/parserUtils.d.ts +5 -5
  206. package/lib/typescript/commonjs/src/web/utils/parserUtils.d.ts.map +1 -1
  207. package/lib/typescript/commonjs/src/web/utils/treeUtils.d.ts +6 -1
  208. package/lib/typescript/commonjs/src/web/utils/treeUtils.d.ts.map +1 -1
  209. package/lib/typescript/commonjs/src/web/utils/webStyleUtils.d.ts +2 -2
  210. package/lib/typescript/commonjs/src/web/utils/webStyleUtils.d.ts.map +1 -1
  211. package/lib/typescript/module/e2e/links.test.d.ts +2 -0
  212. package/lib/typescript/module/e2e/links.test.d.ts.map +1 -0
  213. package/lib/typescript/module/src/MarcusTextDecoratorViewNativeComponent.d.ts +93 -0
  214. package/lib/typescript/module/src/MarcusTextDecoratorViewNativeComponent.d.ts.map +1 -0
  215. package/lib/typescript/module/src/MarcusTextInputDecoratorViewNativeComponent.d.ts +64 -51
  216. package/lib/typescript/module/src/MarcusTextInputDecoratorViewNativeComponent.d.ts.map +1 -1
  217. package/lib/typescript/module/src/MarkdownText.d.ts +127 -0
  218. package/lib/typescript/module/src/MarkdownText.d.ts.map +1 -0
  219. package/lib/typescript/module/src/MarkdownText.web.d.ts +126 -0
  220. package/lib/typescript/module/src/MarkdownText.web.d.ts.map +1 -0
  221. package/lib/typescript/module/src/MarkdownTextInput.d.ts +23 -1
  222. package/lib/typescript/module/src/MarkdownTextInput.d.ts.map +1 -1
  223. package/lib/typescript/module/src/MarkdownTextInput.web.d.ts +26 -4
  224. package/lib/typescript/module/src/MarkdownTextInput.web.d.ts.map +1 -1
  225. package/lib/typescript/module/src/atomUtils.d.ts +58 -0
  226. package/lib/typescript/module/src/atomUtils.d.ts.map +1 -0
  227. package/lib/typescript/module/src/childrenUtils.d.ts +12 -0
  228. package/lib/typescript/module/src/childrenUtils.d.ts.map +1 -0
  229. package/lib/typescript/module/src/commonTypes.d.ts +39 -3
  230. package/lib/typescript/module/src/commonTypes.d.ts.map +1 -1
  231. package/lib/typescript/module/src/index.d.ts +2 -1
  232. package/lib/typescript/module/src/index.d.ts.map +1 -1
  233. package/lib/typescript/module/src/math/environment.d.ts +7 -0
  234. package/lib/typescript/module/src/math/environment.d.ts.map +1 -0
  235. package/lib/typescript/module/src/math/index.d.ts +64 -0
  236. package/lib/typescript/module/src/math/index.d.ts.map +1 -0
  237. package/lib/typescript/module/src/math/mathjax.d.ts +63 -0
  238. package/lib/typescript/module/src/math/mathjax.d.ts.map +1 -0
  239. package/lib/typescript/module/src/metro.d.ts +59 -0
  240. package/lib/typescript/module/src/metro.d.ts.map +1 -0
  241. package/lib/typescript/module/src/parser/index.d.ts +3 -3
  242. package/lib/typescript/module/src/parser/index.d.ts.map +1 -1
  243. package/lib/typescript/module/src/parser/micromark-extension-mentions.d.ts.map +1 -1
  244. package/lib/typescript/module/src/rangeUtils.d.ts +1 -1
  245. package/lib/typescript/module/src/stripUtils.d.ts +108 -0
  246. package/lib/typescript/module/src/stripUtils.d.ts.map +1 -0
  247. package/lib/typescript/module/src/styleUtils.d.ts +62 -4
  248. package/lib/typescript/module/src/styleUtils.d.ts.map +1 -1
  249. package/lib/typescript/module/src/web/utils/blockLayout.d.ts +32 -4
  250. package/lib/typescript/module/src/web/utils/blockLayout.d.ts.map +1 -1
  251. package/lib/typescript/module/src/web/utils/blockUtils.d.ts +20 -8
  252. package/lib/typescript/module/src/web/utils/blockUtils.d.ts.map +1 -1
  253. package/lib/typescript/module/src/web/utils/elementUtils.d.ts +37 -0
  254. package/lib/typescript/module/src/web/utils/elementUtils.d.ts.map +1 -0
  255. package/lib/typescript/module/src/web/utils/parserUtils.d.ts +5 -5
  256. package/lib/typescript/module/src/web/utils/parserUtils.d.ts.map +1 -1
  257. package/lib/typescript/module/src/web/utils/treeUtils.d.ts +6 -1
  258. package/lib/typescript/module/src/web/utils/treeUtils.d.ts.map +1 -1
  259. package/lib/typescript/module/src/web/utils/webStyleUtils.d.ts +2 -2
  260. package/lib/typescript/module/src/web/utils/webStyleUtils.d.ts.map +1 -1
  261. package/package.json +29 -2
  262. package/react-native.config.js +8 -1
  263. package/src/MarcusTextDecoratorViewNativeComponent.ts +199 -0
  264. package/src/MarcusTextInputDecoratorViewNativeComponent.ts +145 -58
  265. package/src/MarkdownText.tsx +472 -0
  266. package/src/MarkdownText.web.tsx +668 -0
  267. package/src/MarkdownTextInput.tsx +42 -38
  268. package/src/MarkdownTextInput.web.tsx +36 -13
  269. package/src/atomUtils.ts +112 -0
  270. package/src/childrenUtils.ts +39 -0
  271. package/src/commonTypes.ts +69 -9
  272. package/src/index.tsx +2 -1
  273. package/src/math/environment.ts +68 -0
  274. package/src/math/index.ts +78 -0
  275. package/src/math/mathjax.ts +604 -0
  276. package/src/metro.ts +238 -0
  277. package/src/parser/index.ts +175 -10
  278. package/src/parser/micromark-extension-mentions.ts +104 -11
  279. package/src/stripUtils.ts +919 -0
  280. package/src/styleUtils.ts +290 -26
  281. package/src/web/MarkdownElements.css +67 -0
  282. package/src/web/MarkdownTextInput.css +9 -7
  283. package/src/web/utils/blockLayout.ts +124 -14
  284. package/src/web/utils/blockUtils.ts +365 -59
  285. package/src/web/utils/elementUtils.ts +87 -0
  286. package/src/web/utils/parserUtils.ts +119 -31
  287. package/src/web/utils/treeUtils.ts +6 -1
  288. package/src/web/utils/webStyleUtils.ts +32 -8
  289. package/android/src/main/java/app/getbullet/marcus/spans/MarkdownBackgroundColorSpan.kt +0 -6
  290. package/android/src/main/java/app/getbullet/marcus/spans/MarkdownBoldSpan.kt +0 -6
  291. package/android/src/main/java/app/getbullet/marcus/spans/MarkdownItalicSpan.kt +0 -6
  292. package/apple/RCTMarcusStyle+Codegen.mm +0 -64
  293. package/apple/RCTMarcusUtils.h +0 -26
  294. 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
- marginLeft: 6,
37
- paddingLeft: 6
89
+ borderRadius: 0,
90
+ marginStart: 6,
91
+ paddingStart: 6
38
92
  },
39
93
  orderedList: {
40
- marginLeft: 6,
41
- paddingLeft: 18
94
+ marginStart: 6,
95
+ paddingStart: 18,
96
+ markerScale: 0.8,
97
+ markerPadding: 2,
98
+ marker: {}
42
99
  },
43
100
  unorderedList: {
44
- marginLeft: 6,
45
- paddingLeft: 18
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
- mentionHere: {
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
- mentionReport: {
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
- if (outputValue) {
85
- Object.assign(outputValue, input[key]);
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","marginLeft","paddingLeft","orderedList","unorderedList","code","backgroundColor","pre","mentionHere","borderRadius","mentionUser","mentionReport","mergeMarkdownStyleWithDefault","input","output","undefined","Object","keys","forEach","key","outputValue","assign"],"sourceRoot":"../../src","sources":["styleUtils.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAOA,MAAMC,qBAAqB,GAAGC,qBAAQ,CAACC,MAAM,CAAC;EAC5CC,GAAG,EAAE,SAAS;EACdC,OAAO,EAAE;AACX,CAAC,CAAC;AAEF,MAAMC,iBAAiB,GAAGJ,qBAAQ,CAACC,MAAM,CAAC;EACxCC,GAAG,EAAE,QAAQ;EACbG,OAAO,EAAE,kBAAkB;EAC3BF,OAAO,EAAE;AACX,CAAC,CAAC;AAEF,SAASG,wBAAwBA,CAAA,EAAkB;EACjD,OAAO;IACLC,MAAM,EAAE;MACNC,KAAK,EAAE;IACT,CAAC;IACDC,IAAI,EAAE;MACJD,KAAK,EAAE;IACT,CAAC;IACDE,OAAO,EAAE;MACPC,QAAQ,EAAE,EAAE;MACZC,KAAK,EAAE;IACT,CAAC;IACDC,KAAK,EAAE;MACLF,QAAQ,EAAE,EAAE;MACZG,UAAU,EAAEV;IACd,CAAC;IACDW,UAAU,EAAE;MACVC,WAAW,EAAE,MAAM;MACnBC,WAAW,EAAE,CAAC;MACdC,UAAU,EAAE,CAAC;MACbC,WAAW,EAAE;IACf,CAAC;IACDC,WAAW,EAAE;MACXF,UAAU,EAAE,CAAC;MACbC,WAAW,EAAE;IACf,CAAC;IACDE,aAAa,EAAE;MACbH,UAAU,EAAE,CAAC;MACbC,WAAW,EAAE;IACf,CAAC;IACDG,IAAI,EAAE;MACJR,UAAU,EAAEf,qBAAqB;MACjCY,QAAQ,EAAE,EAAE;MACZH,KAAK,EAAE,OAAO;MACde,eAAe,EAAE;IACnB,CAAC;IACDC,GAAG,EAAE;MACHV,UAAU,EAAEf,qBAAqB;MACjCY,QAAQ,EAAE,EAAE;MACZH,KAAK,EAAE,OAAO;MACde,eAAe,EAAE;IACnB,CAAC;IACDE,WAAW,EAAE;MACXjB,KAAK,EAAE,OAAO;MACde,eAAe,EAAE,MAAM;MACvBG,YAAY,EAAE;IAChB,CAAC;IACDC,WAAW,EAAE;MACXnB,KAAK,EAAE,MAAM;MACbe,eAAe,EAAE,MAAM;MACvBG,YAAY,EAAE;IAChB,CAAC;IACDE,aAAa,EAAE;MACbpB,KAAK,EAAE,KAAK;MACZe,eAAe,EAAE,MAAM;MACvBG,YAAY,EAAE;IAChB;EACF,CAAC;AACH;AAEA,SAASG,6BAA6BA,CAACC,KAAuC,EAAiB;EAC7F,MAAMC,MAAM,GAAGzB,wBAAwB,CAAC,CAAC;EAEzC,IAAIwB,KAAK,KAAKE,SAAS,EAAE;IACvBC,MAAM,CAACC,IAAI,CAACJ,KAAK,CAAC,CAACK,OAAO,CAAEC,GAAG,IAAK;MAClC,IAAI,EAAEA,GAAG,IAAIL,MAAM,CAAC,EAAE;QACpB;MACF;MAEA,MAAMM,WAAW,GAAGN,MAAM,CAACK,GAAG,CAAwB;MACtD,IAAIC,WAAW,EAAE;QACfJ,MAAM,CAACK,MAAM,CAACD,WAAW,EAAEP,KAAK,CAACM,GAAG,CAAwB,CAAC;MAC/D;IACF,CAAC,CAAC;EACJ;EAEA,OAAOL,MAAM;AACf","ignoreList":[]}
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 p {
5
+ .react-native-marcus-input-singleline *[data-type='line'] {
6
6
  display: inline-block;
7
7
  }
8
8
 
9
- .react-native-marcus-input-multiline p {
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 span[data-type='link'] span[data-type='text'] {
25
+ .react-native-marcus-input-singleline *[data-type='link'] span[data-type='text'] {
26
26
  vertical-align: top;
27
27
  }
28
28
 
29
- .react-native-marcus-input-singleline > p:last-child {
30
- padding-right: 1px !important;
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?.marginLeft) + toNumber(markdownStyle.blockquote?.borderWidth) + toNumber(markdownStyle.blockquote?.paddingLeft);
54
+ return toNumber(markdownStyle.blockquote?.marginStart) + toNumber(markdownStyle.blockquote?.borderWidth) + toNumber(markdownStyle.blockquote?.paddingStart);
35
55
  case "list-ordered":
36
- return toNumber(markdownStyle.orderedList?.marginLeft) + toNumber(markdownStyle.orderedList?.paddingLeft);
56
+ return toNumber(markdownStyle.orderedList?.marginStart) + toNumber(markdownStyle.orderedList?.paddingStart);
37
57
  case "list-unordered":
38
- return toNumber(markdownStyle.unorderedList?.marginLeft) + toNumber(markdownStyle.unorderedList?.paddingLeft);
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?.marginLeft);
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
- offset += measure(text.substring(marker.start, marker.start + marker.length));
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","marginLeft","borderWidth","paddingLeft","orderedList","unorderedList","layoutBlocks","text","ranges","measure","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","substring"],"sourceRoot":"../../../../src","sources":["web/utils/blockLayout.ts"],"mappings":"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","ignoreList":[]}
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":[]}