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