react-native-marcus 0.1.1 → 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","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":[]}
@@ -1,6 +1,38 @@
1
1
  "use strict";
2
2
 
3
- import { Platform } from "react-native";
3
+ import { Platform, processColor } from "react-native";
4
+
5
+ // The public spelling of a run's text attributes: React Native's own
6
+ // `TextStyle`, narrowed to the properties the three formatters can honour.
7
+ // Picked from it rather than restated so the names, the unions and the doc
8
+ // comments are React Native's, and so a style object written for a `Text` can be
9
+ // handed straight to a markdown entry.
10
+ //
11
+ // What is deliberately not here: everything `TextStyle` inherits from
12
+ // `ViewStyle` -- an attributed-string run has no box to lay out -- along with
13
+ // `textAlign`, `textTransform`, `fontVariant` and `writingDirection`, which are
14
+ // paragraph- or string-level rather than run-level and would each mean something
15
+ // different on each platform.
16
+
17
+ // The room a boxed run holds open, on top of its text attributes. Also picked
18
+ // from React Native's own types, for the same reason.
19
+
20
+ /**
21
+ * A markdown style as it is written: every entry optional, every property
22
+ * optional, and anything left out taken from the defaults below.
23
+ */
24
+
25
+ /**
26
+ * The style once the defaults have been merged in: every entry present, every
27
+ * property still optional.
28
+ *
29
+ * Distinct from `PartialMarkdownStyle`, which is what a caller writes. This is
30
+ * what a renderer reads, and on the web its lengths have been through React
31
+ * Native Web's compiler by the time they get there -- a `fontSize` of `16` is
32
+ * the string `"16px"` -- which is why everything downstream of it either casts
33
+ * or runs the value back through `toNumber`.
34
+ */
35
+
4
36
  const FONT_FAMILY_MONOSPACE = Platform.select({
5
37
  ios: "Courier",
6
38
  default: "monospace"
@@ -10,16 +42,37 @@ const FONT_FAMILY_EMOJI = Platform.select({
10
42
  android: "Noto Color Emoji",
11
43
  default: "System, Apple Color Emoji, Segoe UI Emoji, Noto Color Emoji"
12
44
  });
45
+
46
+ /**
47
+ * What every renderer draws before a style says otherwise.
48
+ *
49
+ * The marks that used to be hard-coded in the formatters -- a heading's and a
50
+ * strong run's bold, an emphasised run's italic, a link's underline, a
51
+ * strikethrough's line -- are written out here instead, so that the same switch
52
+ * that applies a custom weight applies the default one, and so that naming
53
+ * `strong.fontWeight` replaces the bold rather than fighting it.
54
+ */
13
55
  function makeDefaultMarkdownStyle() {
14
56
  return {
15
57
  syntax: {
16
58
  color: "gray"
17
59
  },
18
60
  link: {
19
- color: "blue"
61
+ color: "blue",
62
+ textDecorationLine: "underline"
63
+ },
64
+ strong: {
65
+ fontWeight: "bold"
66
+ },
67
+ emphasis: {
68
+ fontStyle: "italic"
69
+ },
70
+ strikethrough: {
71
+ textDecorationLine: "line-through"
20
72
  },
21
73
  heading: {
22
74
  fontSize: 38,
75
+ fontWeight: "bold",
23
76
  scale: 0.85
24
77
  },
25
78
  emoji: {
@@ -29,46 +82,127 @@ function makeDefaultMarkdownStyle() {
29
82
  blockquote: {
30
83
  borderColor: "gray",
31
84
  borderWidth: 6,
32
- marginLeft: 6,
33
- paddingLeft: 6
85
+ borderRadius: 0,
86
+ marginStart: 6,
87
+ paddingStart: 6
34
88
  },
35
89
  orderedList: {
36
- marginLeft: 6,
37
- paddingLeft: 18
90
+ marginStart: 6,
91
+ paddingStart: 18,
92
+ markerScale: 0.8,
93
+ markerPadding: 2,
94
+ marker: {}
38
95
  },
39
96
  unorderedList: {
40
- marginLeft: 6,
41
- paddingLeft: 18
97
+ marginStart: 6,
98
+ paddingStart: 18,
99
+ markerScale: 0.3,
100
+ markerPadding: 2,
101
+ marker: {}
42
102
  },
43
103
  code: {
44
104
  fontFamily: FONT_FAMILY_MONOSPACE,
45
105
  fontSize: 16,
46
106
  color: "black",
47
- backgroundColor: "lightgray"
107
+ backgroundColor: "lightgray",
108
+ borderRadius: 4,
109
+ padding: 2,
110
+ margin: 2
48
111
  },
49
112
  pre: {
50
113
  fontFamily: FONT_FAMILY_MONOSPACE,
51
114
  fontSize: 16,
52
115
  color: "black",
53
- backgroundColor: "lightgray"
54
- },
55
- mentionHere: {
56
- color: "green",
57
- backgroundColor: "lime",
58
- borderRadius: 5
116
+ backgroundColor: "lightgray",
117
+ borderRadius: 4,
118
+ padding: 8,
119
+ margin: 4
59
120
  },
60
- mentionUser: {
121
+ mention: {
61
122
  color: "blue",
62
123
  backgroundColor: "cyan",
63
- borderRadius: 5
64
- },
65
- mentionReport: {
66
- color: "red",
67
- backgroundColor: "pink",
68
- borderRadius: 5
124
+ borderRadius: 5,
125
+ padding: 2,
126
+ margin: 0
69
127
  }
70
128
  };
71
129
  }
130
+
131
+ // The entries whose values are themselves style objects rather than lengths, and
132
+ // so have to be merged rather than replaced: overriding `orderedList.marker`
133
+ // must not drop the marker's colour from the defaults.
134
+ const NESTED_KEYS = new Set(["marker", "textShadowOffset"]);
135
+
136
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
137
+
138
+ function isPlainObject(value) {
139
+ return typeof value === "object" && value !== null && !Array.isArray(value);
140
+ }
141
+
142
+ /**
143
+ * Copies `input` over `output` in place, one level deep, and two where the value
144
+ * is itself a style object.
145
+ *
146
+ * `undefined` is skipped rather than written, so spreading a style that spells a
147
+ * property out as `undefined` -- which is what an optional prop destructured
148
+ * from a component's props looks like -- leaves the default in place instead of
149
+ * erasing it.
150
+ */
151
+ function assignStyle(output, input) {
152
+ Object.keys(input).forEach(key => {
153
+ const value = input[key];
154
+ if (value === undefined) {
155
+ return;
156
+ }
157
+ if (NESTED_KEYS.has(key) && isPlainObject(value)) {
158
+ const nested = isPlainObject(output[key]) ? output[key] : {};
159
+ assignStyle(nested, value);
160
+ // eslint-disable-next-line no-param-reassign
161
+ output[key] = nested;
162
+ return;
163
+ }
164
+
165
+ // React Native accepts a numeric font weight; the native decorators read it
166
+ // as a string, because codegen has no union of a number and a string.
167
+ // eslint-disable-next-line no-param-reassign
168
+ output[key] = key === "fontWeight" && typeof value === "number" ? String(value) : value;
169
+ });
170
+ }
171
+
172
+ // The entries drawn as a box, and so written with lengths that may be given for
173
+ // both axes at once.
174
+ const BOX_KEYS = ["code", "pre", "mention"];
175
+ const LIST_KEYS = ["orderedList", "unorderedList"];
176
+
177
+ /**
178
+ * Settles the two questions a renderer would otherwise have to ask about where a
179
+ * value came from, so that none of the three has to ask them.
180
+ *
181
+ * A box's `padding` and `margin` cover both axes and `paddingHorizontal` and the
182
+ * rest win over them, but native cannot tell a length that was left out from one
183
+ * that was written as zero -- codegen has no optional numbers -- so the pair is
184
+ * resolved into the two axes here, once, rather than three times over.
185
+ *
186
+ * A list marker's style is `syntax` with the list's own `marker` over it, which
187
+ * is what keeps `syntax.color` meaning what it always meant for a marker while
188
+ * letting a list say something different.
189
+ */
190
+ function resolveMarkdownStyle(style) {
191
+ BOX_KEYS.forEach(key => {
192
+ const box = style[key];
193
+ box.paddingHorizontal = box.paddingHorizontal ?? box.padding ?? 0;
194
+ box.paddingVertical = box.paddingVertical ?? box.padding ?? 0;
195
+ box.marginHorizontal = box.marginHorizontal ?? box.margin ?? 0;
196
+ box.marginVertical = box.marginVertical ?? box.margin ?? 0;
197
+ });
198
+ LIST_KEYS.forEach(key => {
199
+ style[key].marker = {
200
+ ...style.syntax,
201
+ ...style[key].marker
202
+ };
203
+ });
204
+ return style;
205
+ }
72
206
  function mergeMarkdownStyleWithDefault(input) {
73
207
  const output = makeDefaultMarkdownStyle();
74
208
  if (input !== undefined) {
@@ -77,12 +211,49 @@ function mergeMarkdownStyleWithDefault(input) {
77
211
  return;
78
212
  }
79
213
  const outputValue = output[key];
80
- if (outputValue) {
81
- Object.assign(outputValue, input[key]);
214
+ const inputValue = input[key];
215
+ if (isPlainObject(outputValue) && isPlainObject(inputValue)) {
216
+ assignStyle(outputValue, inputValue);
82
217
  }
83
218
  });
84
219
  }
220
+ return resolveMarkdownStyle(output);
221
+ }
222
+
223
+ /**
224
+ * Turns every colour in the style into the platform's own representation.
225
+ *
226
+ * Walks the whole tree rather than its top two levels: a list's `marker` and a
227
+ * run's `textShadowOffset` put style values one level further down than the
228
+ * entries around them.
229
+ */
230
+ function processColorsInMarkdownStyle(input) {
231
+ const output = JSON.parse(JSON.stringify(input));
232
+ const walk = node => {
233
+ Object.keys(node).forEach(prop => {
234
+ const value = node[prop];
235
+ if (isPlainObject(value)) {
236
+ walk(value);
237
+ return;
238
+ }
239
+
240
+ // TODO: use ReactNativeStyleAttributes from 'react-native/Libraries/Components/View/ReactNativeStyleAttributes'
241
+ if (!(prop === "color" || prop.endsWith("Color"))) {
242
+ return;
243
+ }
244
+ // eslint-disable-next-line no-param-reassign
245
+ node[prop] = processColor(value);
246
+ });
247
+ };
248
+ walk(output);
85
249
  return output;
86
250
  }
87
- export { mergeMarkdownStyleWithDefault };
251
+
252
+ // The shape the native decorators take: defaults filled in, colours turned into
253
+ // the platform representation. Shared by both components so a style means the
254
+ // same thing whether it is being typed into or read.
255
+ function processMarkdownStyle(input) {
256
+ return processColorsInMarkdownStyle(mergeMarkdownStyleWithDefault(input));
257
+ }
258
+ export { mergeMarkdownStyleWithDefault, processMarkdownStyle };
88
259
  //# sourceMappingURL=styleUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Platform","FONT_FAMILY_MONOSPACE","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,SAASA,QAAQ,QAAQ,cAAc;AAOvC,MAAMC,qBAAqB,GAAGD,QAAQ,CAACE,MAAM,CAAC;EAC5CC,GAAG,EAAE,SAAS;EACdC,OAAO,EAAE;AACX,CAAC,CAAC;AAEF,MAAMC,iBAAiB,GAAGL,QAAQ,CAACE,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,EAAEd,qBAAqB;MACjCW,QAAQ,EAAE,EAAE;MACZH,KAAK,EAAE,OAAO;MACde,eAAe,EAAE;IACnB,CAAC;IACDC,GAAG,EAAE;MACHV,UAAU,EAAEd,qBAAqB;MACjCW,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;AAIA,SAASF,6BAA6B","ignoreList":[]}
1
+ {"version":3,"names":["Platform","processColor","FONT_FAMILY_MONOSPACE","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","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;
@@ -11,6 +11,24 @@ const BLOCK_PREFIX = "block-prefix";
11
11
  * `MarkdownBlockIndentSpan` fill a blockquote's bars at.
12
12
  */
13
13
 
14
+ /**
15
+ * How a list's markers are drawn, which is the one thing a display does differently from an input.
16
+ *
17
+ * A display renders the marker rather than showing it: an unordered item's `-` becomes a bullet, an
18
+ * ordered item's `1.` stays the number it means but at its own scale, and both hold a little room
19
+ * either side. An input shows the marker you typed, in the base font, because there it is text
20
+ * being edited rather than a rendering of it. `MarkdownFormatter` draws the same distinction on
21
+ * both native platforms from the same style values.
22
+ *
23
+ * `fontSize` is what the wrapped element renders at, in pixels, which is what a marker is sized in
24
+ * proportion to.
25
+ */
26
+
27
+ /** An input's markers, and the default everywhere the question does not arise. */
28
+ const SHOWN_MARKERS = {
29
+ display: false,
30
+ fontSize: 0
31
+ };
14
32
  function toNumber(value) {
15
33
  if (typeof value === "number") {
16
34
  return value;
@@ -26,16 +44,73 @@ function toNumber(value) {
26
44
  function stepOf(type, markdownStyle) {
27
45
  switch (type) {
28
46
  case "blockquote":
29
- return toNumber(markdownStyle.blockquote?.marginLeft) + toNumber(markdownStyle.blockquote?.borderWidth) + toNumber(markdownStyle.blockquote?.paddingLeft);
47
+ return toNumber(markdownStyle.blockquote?.marginStart) + toNumber(markdownStyle.blockquote?.borderWidth) + toNumber(markdownStyle.blockquote?.paddingStart);
30
48
  case "list-ordered":
31
- return toNumber(markdownStyle.orderedList?.marginLeft) + toNumber(markdownStyle.orderedList?.paddingLeft);
49
+ return toNumber(markdownStyle.orderedList?.marginStart) + toNumber(markdownStyle.orderedList?.paddingStart);
32
50
  case "list-unordered":
33
- return toNumber(markdownStyle.unorderedList?.marginLeft) + toNumber(markdownStyle.unorderedList?.paddingLeft);
51
+ return toNumber(markdownStyle.unorderedList?.marginStart) + toNumber(markdownStyle.unorderedList?.paddingStart);
34
52
  default:
35
53
  return null;
36
54
  }
37
55
  }
38
56
 
57
+ /** The style entry a list type's markers are drawn from, or null if the type is not a list. */
58
+ function listStyle(type, markdownStyle) {
59
+ switch (type) {
60
+ case "list-ordered":
61
+ return markdownStyle.orderedList ?? null;
62
+ case "list-unordered":
63
+ return markdownStyle.unorderedList ?? null;
64
+ default:
65
+ return null;
66
+ }
67
+ }
68
+
69
+ /** Room held open either side of a marker, or nothing where the marker is shown rather than drawn. */
70
+ function markerPadding(type, markdownStyle, rendering) {
71
+ if (!rendering.display) {
72
+ return 0;
73
+ }
74
+ return toNumber(listStyle(type, markdownStyle)?.markerPadding);
75
+ }
76
+
77
+ /**
78
+ * The marker at the end of a prefix: the `-` of a bullet or the `1.` of a numbered item, without
79
+ * the indent in front of it or the space after it.
80
+ *
81
+ * Read off the text rather than taken from the `syntax` range covering it, because a prefix runs
82
+ * from wherever the previous container's marker ended and so can carry another container's marker
83
+ * with it -- the ordered list in `- > 1. ` is handed `> 1. `. The last run of non-blanks is this
84
+ * container's own. `MarkdownFormatter` reads it the same way on both native platforms.
85
+ */
86
+ function markerRun(prefix) {
87
+ const trimmed = prefix.replace(/[ \t]+$/, "");
88
+ const match = /[^ \t]+$/.exec(trimmed);
89
+ return match ? match[0] : "";
90
+ }
91
+
92
+ /**
93
+ * The width a prefix's glyphs take up: what it measures, with whatever the display draws in place
94
+ * of the marker standing in for the marker's own width.
95
+ */
96
+ function markerWidth(prefix, type, markdownStyle, rendering, measure) {
97
+ const width = measure(prefix);
98
+ const style = listStyle(type, markdownStyle);
99
+ if (!rendering.display || rendering.fontSize <= 0 || !style) {
100
+ return width;
101
+ }
102
+ const run = markerRun(prefix);
103
+ const scale = toNumber(style.markerScale);
104
+ if (run === "" || scale <= 0) {
105
+ return width;
106
+ }
107
+
108
+ // What is left of the prefix -- an indent in front, the space behind -- measures as it always
109
+ // did; only the marker itself is drawn differently.
110
+ const rest = width - measure(run);
111
+ return type === "list-unordered" ? rest + rendering.fontSize * scale : rest + measure(run) * scale;
112
+ }
113
+
39
114
  /**
40
115
  * Places the containers of every line, left to right -- the web half of `BlockLayout` in
41
116
  * `apple/MarkdownFormatter.swift` and `android/.../MarkdownFormatter.kt`, and deliberately the same
@@ -54,11 +129,11 @@ function stepOf(type, markdownStyle) {
54
129
  * to -- so it has to run before `sortRanges` rearranges them into the containment order the DOM
55
130
  * builder needs.
56
131
  */
57
- function layoutBlocks(text, ranges, markdownStyle, measure) {
132
+ function layoutBlocks(text, ranges, markdownStyle, measure, rendering = SHOWN_MARKERS) {
58
133
  const layouts = new Map();
59
134
  /** Last marker seen for each container type, for the lines that continue it. */
60
135
  const markers = new Map();
61
- const ribbonMargin = toNumber(markdownStyle.blockquote?.marginLeft);
136
+ const ribbonMargin = toNumber(markdownStyle.blockquote?.marginStart);
62
137
  let pendingPrefix = null;
63
138
  let line = null;
64
139
  let lineStart = -1;
@@ -107,15 +182,26 @@ function layoutBlocks(text, ranges, markdownStyle, measure) {
107
182
  }
108
183
  }
109
184
  offset += gutter;
185
+
186
+ // The room either side of a list marker is indent on the way in -- the marker moves right with
187
+ // the text -- and a gap after the prefix on the way out, which is where the gutter of a nested
188
+ // container goes too.
189
+ const marker = pendingPrefix ?? markers.get(range.type);
190
+ const padding = marker ? markerPadding(range.type, markdownStyle, rendering) : 0;
191
+ offset += padding;
110
192
  if (pendingPrefix) {
111
193
  markers.set(range.type, pendingPrefix);
112
194
  if (textStart < 0) {
113
195
  textStart = offset;
114
196
  }
115
197
  }
116
- const marker = pendingPrefix ?? markers.get(range.type);
117
198
  if (marker) {
118
- offset += measure(text.substring(marker.start, marker.start + marker.length));
199
+ const prefix = text.substring(marker.start, marker.start + marker.length);
200
+ offset += markerWidth(prefix, range.type, markdownStyle, rendering, measure);
201
+ offset += padding;
202
+ if (pendingPrefix && padding > 0) {
203
+ current.gaps.set(pendingPrefix.start, (current.gaps.get(pendingPrefix.start) ?? 0) + padding);
204
+ }
119
205
  }
120
206
  padded = pendingPrefix;
121
207
  pendingPrefix = null;
@@ -124,5 +210,5 @@ function layoutBlocks(text, ranges, markdownStyle, measure) {
124
210
  }
125
211
  return layouts;
126
212
  }
127
- export { layoutBlocks, toNumber };
213
+ export { layoutBlocks, markerRun, SHOWN_MARKERS, toNumber };
128
214
  //# sourceMappingURL=blockLayout.js.map
@@ -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":";;AAIA,MAAMA,YAAY,GAAG,cAAc;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA,SAASC,QAAQA,CAACC,KAAyC,EAAU;EACnE,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IAC7B,OAAOA,KAAK;EACd;EACA,IAAI,CAACA,KAAK,EAAE;IACV,OAAO,CAAC;EACV;EACA,MAAMC,MAAM,GAAGC,UAAU,CAACF,KAAK,CAAC;EAChC,OAAOG,MAAM,CAACC,QAAQ,CAACH,MAAM,CAAC,GAAGA,MAAM,GAAG,CAAC;AAC7C;;AAEA;AACA,SAASI,MAAMA,CAACC,IAAkB,EAAEC,aAAmC,EAAiB;EACtF,QAAQD,IAAI;IACV,KAAK,YAAY;MACf,OACEP,QAAQ,CAACQ,aAAa,CAACC,UAAU,EAAEC,UAAU,CAAC,GAC9CV,QAAQ,CAACQ,aAAa,CAACC,UAAU,EAAEE,WAAW,CAAC,GAC/CX,QAAQ,CAACQ,aAAa,CAACC,UAAU,EAAEG,WAAW,CAAC;IAEnD,KAAK,cAAc;MACjB,OACEZ,QAAQ,CAACQ,aAAa,CAACK,WAAW,EAAEH,UAAU,CAAC,GAC/CV,QAAQ,CAACQ,aAAa,CAACK,WAAW,EAAED,WAAW,CAAC;IAEpD,KAAK,gBAAgB;MACnB,OACEZ,QAAQ,CAACQ,aAAa,CAACM,aAAa,EAAEJ,UAAU,CAAC,GACjDV,QAAQ,CAACQ,aAAa,CAACM,aAAa,EAAEF,WAAW,CAAC;IAEtD;MACE,OAAO,IAAI;EACf;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASG,YAAYA,CACnBC,IAAY,EACZC,MAAuB,EACvBT,aAAmC,EACnCU,OAAqB,EACI;EACzB,MAAMC,OAAO,GAAG,IAAIC,GAAG,CAAqB,CAAC;EAC7C;EACA,MAAMC,OAAO,GAAG,IAAID,GAAG,CAA8B,CAAC;EACtD,MAAME,YAAY,GAAGtB,QAAQ,CAACQ,aAAa,CAACC,UAAU,EAAEC,UAAU,CAAC;EAEnE,IAAIa,aAAmC,GAAG,IAAI;EAC9C,IAAIC,IAAuB,GAAG,IAAI;EAClC,IAAIC,SAAS,GAAG,CAAC,CAAC;EAClB;EACA,IAAIC,MAAM,GAAG,CAAC;EACd;AACF;AACA;AACA;EACE,IAAIC,SAAS,GAAG,CAAC,CAAC;EAClB;AACF;EACE,IAAIC,MAA4B,GAAG,IAAI;EAEvC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGZ,MAAM,CAACa,MAAM,EAAED,CAAC,EAAE,EAAE;IACtC,MAAME,KAAK,GAAGd,MAAM,CAACY,CAAC,CAAkB;IAExC,IAAIE,KAAK,CAACxB,IAAI,KAAKR,YAAY,EAAE;MAC/BwB,aAAa,GAAGQ,KAAK;MACrB;IACF;IAEA,MAAMC,IAAI,GAAG1B,MAAM,CAACyB,KAAK,CAACxB,IAAI,EAAEC,aAAa,CAAC;IAC9C,IAAIwB,IAAI,KAAK,IAAI,EAAE;MACjB;IACF;IAEA,MAAMC,KAAK,GAAGF,KAAK,CAACE,KAAK,IAAIF,KAAK,CAACE,KAAK,GAAG,CAAC,GAAGF,KAAK,CAACE,KAAK,GAAG,CAAC;IAC9D,MAAMC,MAAM,GAAGF,IAAI,GAAGC,KAAK;IAE3B,IAAIF,KAAK,CAACI,KAAK,KAAKV,SAAS,EAAE;MAC7BA,SAAS,GAAGM,KAAK,CAACI,KAAK;MACvBT,MAAM,GAAG,CAAC;MACVC,SAAS,GAAG,CAAC,CAAC;MACdC,MAAM,GAAG,IAAI;MACbJ,IAAI,GAAG;QAAEY,eAAe,EAAE,CAAC;QAAEC,MAAM,EAAE,CAAC;QAAEC,OAAO,EAAE,EAAE;QAAEC,IAAI,EAAE,IAAInB,GAAG,CAAC;MAAE,CAAC;MACtED,OAAO,CAACqB,GAAG,CAACf,SAAS,EAAED,IAAI,CAAC;IAC9B;IAEA,MAAMiB,OAAO,GAAGjB,IAAkB;IAElC,IAAII,MAAM,EAAE;MACVa,OAAO,CAACF,IAAI,CAACC,GAAG,CAACZ,MAAM,CAACO,KAAK,EAAE,CAACM,OAAO,CAACF,IAAI,CAACG,GAAG,CAACd,MAAM,CAACO,KAAK,CAAC,IAAI,CAAC,IAAID,MAAM,CAAC;IAChF;IAEA,IAAIH,KAAK,CAACxB,IAAI,KAAK,YAAY,EAAE;MAC/B,KAAK,IAAIoC,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGV,KAAK,EAAEU,KAAK,EAAE,EAAE;QAC1CF,OAAO,CAACH,OAAO,CAACM,IAAI,CAAClB,MAAM,GAAGJ,YAAY,GAAGU,IAAI,GAAGW,KAAK,CAAC;MAC5D;IACF;IAEAjB,MAAM,IAAIQ,MAAM;IAEhB,IAAIX,aAAa,EAAE;MACjBF,OAAO,CAACmB,GAAG,CAACT,KAAK,CAACxB,IAAI,EAAEgB,aAAa,CAAC;MACtC,IAAII,SAAS,GAAG,CAAC,EAAE;QACjBA,SAAS,GAAGD,MAAM;MACpB;IACF;IAEA,MAAMmB,MAAM,GAAGtB,aAAa,IAAIF,OAAO,CAACqB,GAAG,CAACX,KAAK,CAACxB,IAAI,CAAC;IACvD,IAAIsC,MAAM,EAAE;MACVnB,MAAM,IAAIR,OAAO,CAACF,IAAI,CAAC8B,SAAS,CAACD,MAAM,CAACV,KAAK,EAAEU,MAAM,CAACV,KAAK,GAAGU,MAAM,CAACf,MAAM,CAAC,CAAC;IAC/E;IAEAF,MAAM,GAAGL,aAAa;IACtBA,aAAa,GAAG,IAAI;IAEpBkB,OAAO,CAACL,eAAe,GAAGT,SAAS,IAAI,CAAC,GAAGA,SAAS,GAAGD,MAAM;IAC7De,OAAO,CAACJ,MAAM,GAAGX,MAAM;EACzB;EAEA,OAAOP,OAAO;AAChB;AAEA,SAASJ,YAAY,EAAEf,QAAQ","ignoreList":[]}
1
+ {"version":3,"names":["BLOCK_PREFIX","SHOWN_MARKERS","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":[]}