react-native-enriched-markdown-scaffold 0.7.4-scaffold.9 → 1.0.2-scaffold.10

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 (505) hide show
  1. package/README.md +54 -8
  2. package/ReactNativeEnrichedMarkdown.podspec +82 -73
  3. package/android/build.gradle +188 -1
  4. package/android/consumer-rules.pro +1 -1
  5. package/android/generated/java/com/facebook/react/viewmanagers/EnrichedMarkdownManagerDelegate.java +27 -0
  6. package/android/generated/java/com/facebook/react/viewmanagers/EnrichedMarkdownManagerInterface.java +7 -0
  7. package/android/generated/java/com/facebook/react/viewmanagers/EnrichedMarkdownTextInputManagerDelegate.java +24 -0
  8. package/android/generated/java/com/facebook/react/viewmanagers/EnrichedMarkdownTextInputManagerInterface.java +8 -0
  9. package/android/generated/java/com/facebook/react/viewmanagers/EnrichedMarkdownTextManagerDelegate.java +27 -0
  10. package/android/generated/java/com/facebook/react/viewmanagers/EnrichedMarkdownTextManagerInterface.java +7 -0
  11. package/android/generated/jni/react/renderer/components/EnrichedMarkdownTextSpec/EventEmitters.cpp +223 -0
  12. package/android/generated/jni/react/renderer/components/EnrichedMarkdownTextSpec/EventEmitters.h +183 -0
  13. package/android/generated/jni/react/renderer/components/EnrichedMarkdownTextSpec/Props.cpp +65 -0
  14. package/android/generated/jni/react/renderer/components/EnrichedMarkdownTextSpec/Props.h +1086 -61
  15. package/android/src/main/baseline-prof.txt +1 -1
  16. package/android/src/main/cpp/jni-adapter.cpp +74 -0
  17. package/android/src/main/java/com/swmansion/enriched/markdown/EnrichedMarkdown.kt +351 -13
  18. package/android/src/main/java/com/swmansion/enriched/markdown/EnrichedMarkdownInternalText.kt +62 -0
  19. package/android/src/main/java/com/swmansion/enriched/markdown/EnrichedMarkdownManager.kt +85 -0
  20. package/android/src/main/java/com/swmansion/enriched/markdown/EnrichedMarkdownText.kt +160 -1
  21. package/android/src/main/java/com/swmansion/enriched/markdown/EnrichedMarkdownTextLayoutManager.kt +10 -1
  22. package/android/src/main/java/com/swmansion/enriched/markdown/EnrichedMarkdownTextManager.kt +76 -0
  23. package/android/src/main/java/com/swmansion/enriched/markdown/MeasurementStore.kt +126 -10
  24. package/android/src/main/java/com/swmansion/enriched/markdown/events/CopyPressEvent.kt +24 -0
  25. package/android/src/main/java/com/swmansion/enriched/markdown/events/CopyRequestEvent.kt +28 -0
  26. package/android/src/main/java/com/swmansion/enriched/markdown/events/LinkLayoutEvent.kt +36 -0
  27. package/android/src/main/java/com/swmansion/enriched/markdown/events/SelectionChangeEvent.kt +43 -0
  28. package/android/src/main/java/com/swmansion/enriched/markdown/input/EnrichedMarkdownTextInputManager.kt +54 -4
  29. package/android/src/main/java/com/swmansion/enriched/markdown/input/EnrichedMarkdownTextInputView.kt +923 -462
  30. package/android/src/main/java/com/swmansion/enriched/markdown/input/MarkdownClipboard.kt +42 -0
  31. package/android/src/main/java/com/swmansion/enriched/markdown/input/editing/BlockEditCoordinator.kt +196 -0
  32. package/android/src/main/java/com/swmansion/enriched/markdown/input/editing/ClipboardCoordinator.kt +73 -0
  33. package/android/src/main/java/com/swmansion/enriched/markdown/input/editing/EditContext.kt +19 -0
  34. package/android/src/main/java/com/swmansion/enriched/markdown/input/editing/EditPipeline.kt +248 -0
  35. package/android/src/main/java/com/swmansion/enriched/markdown/input/editing/EditSession.kt +52 -0
  36. package/android/src/main/java/com/swmansion/enriched/markdown/input/editing/InputConnectionWrapper.kt +108 -7
  37. package/android/src/main/java/com/swmansion/enriched/markdown/input/editing/LinkCoordinator.kt +69 -0
  38. package/android/src/main/java/com/swmansion/enriched/markdown/input/editing/MarkdownTextWatcher.kt +3 -3
  39. package/android/src/main/java/com/swmansion/enriched/markdown/input/editing/MentionCoordinator.kt +118 -0
  40. package/android/src/main/java/com/swmansion/enriched/markdown/input/events/OnChangeStateEvent.kt +26 -0
  41. package/android/src/main/java/com/swmansion/enriched/markdown/input/events/OnContextMenuItemPressEvent.kt +26 -0
  42. package/android/src/main/java/com/swmansion/enriched/markdown/input/events/OnInputKeyPressEvent.kt +24 -0
  43. package/android/src/main/java/com/swmansion/enriched/markdown/input/events/OnPasteEvent.kt +24 -0
  44. package/android/src/main/java/com/swmansion/enriched/markdown/input/formatting/BlockStore.kt +254 -0
  45. package/android/src/main/java/com/swmansion/enriched/markdown/input/formatting/FormattingStore.kt +80 -87
  46. package/android/src/main/java/com/swmansion/enriched/markdown/input/formatting/InputFormatter.kt +109 -1
  47. package/android/src/main/java/com/swmansion/enriched/markdown/input/formatting/InputParser.kt +116 -22
  48. package/android/src/main/java/com/swmansion/enriched/markdown/input/formatting/MarkdownSerializer.kt +167 -38
  49. package/android/src/main/java/com/swmansion/enriched/markdown/input/formatting/RangeEditAdjustment.kt +149 -0
  50. package/android/src/main/java/com/swmansion/enriched/markdown/input/layout/InputEventEmitter.kt +66 -5
  51. package/android/src/main/java/com/swmansion/enriched/markdown/input/layout/InputMeasurementStore.kt +4 -2
  52. package/android/src/main/java/com/swmansion/enriched/markdown/input/model/BlockRange.kt +27 -0
  53. package/android/src/main/java/com/swmansion/enriched/markdown/input/model/BlockType.kt +48 -0
  54. package/android/src/main/java/com/swmansion/enriched/markdown/input/model/FormattingRange.kt +9 -4
  55. package/android/src/main/java/com/swmansion/enriched/markdown/input/model/InputFormatterStyle.kt +39 -2
  56. package/android/src/main/java/com/swmansion/enriched/markdown/input/model/MathAtom.kt +20 -0
  57. package/android/src/main/java/com/swmansion/enriched/markdown/input/model/MathChipStyle.kt +1 -1
  58. package/android/src/main/java/com/swmansion/enriched/markdown/input/model/MutableRangeBounds.kt +11 -0
  59. package/android/src/main/java/com/swmansion/enriched/markdown/input/spans/InputBulletSpan.kt +82 -0
  60. package/android/src/main/java/com/swmansion/enriched/markdown/input/spans/InputHeadingSpan.kt +58 -0
  61. package/android/src/main/java/com/swmansion/enriched/markdown/input/spans/InputListItemSpacingSpan.kt +37 -0
  62. package/android/src/main/java/com/swmansion/enriched/markdown/input/spans/InputOrderedListMarkerSpan.kt +63 -0
  63. package/android/src/main/java/com/swmansion/enriched/markdown/input/styles/BlockHandler.kt +54 -0
  64. package/android/src/main/java/com/swmansion/enriched/markdown/input/styles/HeadingBlockHandler.kt +27 -0
  65. package/android/src/main/java/com/swmansion/enriched/markdown/input/styles/OrderedListBlockHandler.kt +38 -0
  66. package/android/src/main/java/com/swmansion/enriched/markdown/input/styles/UnorderedListBlockHandler.kt +37 -0
  67. package/android/src/main/java/com/swmansion/enriched/markdown/input/toolbar/InputContextMenu.kt +8 -26
  68. package/android/src/main/java/com/swmansion/enriched/markdown/parser/MarkdownASTNode.kt +1 -0
  69. package/android/src/main/java/com/swmansion/enriched/markdown/parser/Parser.kt +1 -0
  70. package/android/src/main/java/com/swmansion/enriched/markdown/renderer/BlockStyleContext.kt +9 -2
  71. package/android/src/main/java/com/swmansion/enriched/markdown/renderer/BlockquoteRenderer.kt +100 -12
  72. package/android/src/main/java/com/swmansion/enriched/markdown/renderer/CodeBlockRenderer.kt +16 -1
  73. package/android/src/main/java/com/swmansion/enriched/markdown/renderer/HeadingRenderer.kt +4 -0
  74. package/android/src/main/java/com/swmansion/enriched/markdown/renderer/LinkRenderer.kt +37 -7
  75. package/android/src/main/java/com/swmansion/enriched/markdown/renderer/ListContextManager.kt +2 -1
  76. package/android/src/main/java/com/swmansion/enriched/markdown/renderer/ListItemRenderer.kt +74 -18
  77. package/android/src/main/java/com/swmansion/enriched/markdown/renderer/ListRenderer.kt +43 -4
  78. package/android/src/main/java/com/swmansion/enriched/markdown/renderer/NodeRenderer.kt +9 -1
  79. package/android/src/main/java/com/swmansion/enriched/markdown/renderer/SoftBreakRenderer.kt +16 -0
  80. package/android/src/main/java/com/swmansion/enriched/markdown/renderer/SpanStyleCache.kt +35 -28
  81. package/android/src/main/java/com/swmansion/enriched/markdown/spans/BaseListSpan.kt +24 -0
  82. package/android/src/main/java/com/swmansion/enriched/markdown/spans/BlockquoteSpan.kt +174 -24
  83. package/android/src/main/java/com/swmansion/enriched/markdown/spans/CodeBackgroundSpan.kt +20 -82
  84. package/android/src/main/java/com/swmansion/enriched/markdown/spans/CodeBlockSpan.kt +13 -16
  85. package/android/src/main/java/com/swmansion/enriched/markdown/spans/CodeSpan.kt +1 -1
  86. package/android/src/main/java/com/swmansion/enriched/markdown/spans/EmphasisSpan.kt +1 -1
  87. package/android/src/main/java/com/swmansion/enriched/markdown/spans/ImageSpan.kt +182 -46
  88. package/android/src/main/java/com/swmansion/enriched/markdown/spans/InlineChipPainter.kt +140 -0
  89. package/android/src/main/java/com/swmansion/enriched/markdown/spans/LinkChipSpans.kt +177 -0
  90. package/android/src/main/java/com/swmansion/enriched/markdown/spans/LinkSpan.kt +1 -6
  91. package/android/src/main/java/com/swmansion/enriched/markdown/spans/ListItemSpacingSpan.kt +33 -0
  92. package/android/src/main/java/com/swmansion/enriched/markdown/spans/ListMarkerAnchorSpan.kt +38 -0
  93. package/android/src/main/java/com/swmansion/enriched/markdown/spans/OrderedListSpan.kt +2 -0
  94. package/android/src/main/java/com/swmansion/enriched/markdown/spans/StrongSpan.kt +1 -1
  95. package/android/src/main/java/com/swmansion/enriched/markdown/spans/TaskListSpan.kt +3 -2
  96. package/android/src/main/java/com/swmansion/enriched/markdown/spans/UnorderedListSpan.kt +3 -2
  97. package/android/src/main/java/com/swmansion/enriched/markdown/styles/BlockquoteStyle.kt +6 -0
  98. package/android/src/main/java/com/swmansion/enriched/markdown/styles/CodeBlockStyle.kt +26 -0
  99. package/android/src/main/java/com/swmansion/enriched/markdown/styles/ImageStyle.kt +7 -1
  100. package/android/src/main/java/com/swmansion/enriched/markdown/styles/InlineMathStyle.kt +16 -1
  101. package/android/src/main/java/com/swmansion/enriched/markdown/styles/LinkStyle.kt +36 -1
  102. package/android/src/main/java/com/swmansion/enriched/markdown/styles/LinkVariantEntry.kt +7 -3
  103. package/android/src/main/java/com/swmansion/enriched/markdown/styles/ListStyle.kt +4 -1
  104. package/android/src/main/java/com/swmansion/enriched/markdown/styles/MathStyle.kt +3 -0
  105. package/android/src/main/java/com/swmansion/enriched/markdown/styles/StyleConfig.kt +13 -4
  106. package/android/src/main/java/com/swmansion/enriched/markdown/styles/TableStyle.kt +6 -0
  107. package/android/src/main/java/com/swmansion/enriched/markdown/utils/common/CodeBlockHighlighter.kt +90 -0
  108. package/android/src/main/java/com/swmansion/enriched/markdown/utils/common/CodeBlockNode.kt +57 -0
  109. package/android/src/main/java/com/swmansion/enriched/markdown/utils/common/FeatureFlags.kt +1 -0
  110. package/android/src/main/java/com/swmansion/enriched/markdown/utils/common/MarkdownSegment.kt +9 -0
  111. package/android/src/main/java/com/swmansion/enriched/markdown/utils/common/MarkdownViewManagerUtils.kt +84 -7
  112. package/android/src/main/java/com/swmansion/enriched/markdown/utils/common/ReadableMapExtensions.kt +3 -0
  113. package/android/src/main/java/com/swmansion/enriched/markdown/utils/common/RenderedSegment.kt +10 -0
  114. package/android/src/main/java/com/swmansion/enriched/markdown/utils/common/SegmentSignature.kt +1 -0
  115. package/android/src/main/java/com/swmansion/enriched/markdown/utils/common/StreamingMarkdownFilter.kt +83 -5
  116. package/android/src/main/java/com/swmansion/enriched/markdown/utils/common/serialization/MarkdownASTSerializer.kt +4 -0
  117. package/android/src/main/java/com/swmansion/enriched/markdown/utils/input/MarkdownStyleParser.kt +74 -44
  118. package/android/src/main/java/com/swmansion/enriched/markdown/utils/input/PasteTextUtils.kt +52 -0
  119. package/android/src/main/java/com/swmansion/enriched/markdown/utils/text/ImageCache.kt +26 -3
  120. package/android/src/main/java/com/swmansion/enriched/markdown/utils/text/ImageDownloader.kt +22 -9
  121. package/android/src/main/java/com/swmansion/enriched/markdown/utils/text/LocalImageLoader.kt +161 -0
  122. package/android/src/main/java/com/swmansion/enriched/markdown/utils/text/conversion/HTMLGenerator.kt +2 -1
  123. package/android/src/main/java/com/swmansion/enriched/markdown/utils/text/conversion/MarkdownExtractor.kt +6 -0
  124. package/android/src/main/java/com/swmansion/enriched/markdown/utils/text/extensions/TextPaintExtensions.kt +23 -0
  125. package/android/src/main/java/com/swmansion/enriched/markdown/utils/text/interaction/CheckboxTouchHelper.kt +7 -0
  126. package/android/src/main/java/com/swmansion/enriched/markdown/utils/text/interaction/TaskListTapUtils.kt +41 -21
  127. package/android/src/main/java/com/swmansion/enriched/markdown/utils/text/span/BlockSpacing.kt +15 -8
  128. package/android/src/main/java/com/swmansion/enriched/markdown/utils/text/view/HeadlessActionMode.kt +88 -0
  129. package/android/src/main/java/com/swmansion/enriched/markdown/utils/text/view/LinkLayoutCollector.kt +100 -0
  130. package/android/src/main/java/com/swmansion/enriched/markdown/utils/text/view/LinkLongPressMovementMethod.kt +58 -27
  131. package/android/src/main/java/com/swmansion/enriched/markdown/utils/text/view/SelectionActionMode.kt +72 -16
  132. package/android/src/main/java/com/swmansion/enriched/markdown/utils/text/view/SelectionChangeReporter.kt +232 -0
  133. package/android/src/main/java/com/swmansion/enriched/markdown/views/BlockMenuOptions.kt +64 -0
  134. package/android/src/main/java/com/swmansion/enriched/markdown/views/CodeBlockContainerView.kt +414 -0
  135. package/android/src/main/java/com/swmansion/enriched/markdown/views/ContextMenuPopup.kt +9 -6
  136. package/android/src/main/java/com/swmansion/enriched/markdown/views/CopyGlyph.kt +101 -0
  137. package/android/src/main/java/com/swmansion/enriched/markdown/views/TableContainerView.kt +61 -11
  138. package/android/src/main/jni/CMakeLists.txt +53 -0
  139. package/android/src/main/jni/react/renderer/components/EnrichedMarkdownTextSpec/MarkdownContainerShadowNode.cpp +10 -0
  140. package/android/src/main/jni/react/renderer/components/EnrichedMarkdownTextSpec/MarkdownContainerShadowNode.h +11 -2
  141. package/android/src/main/jni/react/renderer/components/EnrichedMarkdownTextSpec/MarkdownTextShadowNode.cpp +10 -0
  142. package/android/src/main/jni/react/renderer/components/EnrichedMarkdownTextSpec/MarkdownTextShadowNode.h +12 -2
  143. package/android/src/main/jni/react/renderer/components/EnrichedMarkdownTextSpec/MarkdownTextState.cpp +9 -0
  144. package/android/src/main/jni/react/renderer/components/EnrichedMarkdownTextSpec/MarkdownTextState.h +24 -0
  145. package/android/src/main/jni/react/renderer/components/EnrichedMarkdownTextSpec/conversions.h +16 -0
  146. package/android/src/math/java/com/swmansion/enriched/markdown/input/math/MathChipControllerImpl.kt +21 -4
  147. package/android/src/math/java/com/swmansion/enriched/markdown/renderer/MathInlineRenderer.kt +8 -2
  148. package/android/src/math/java/com/swmansion/enriched/markdown/spans/MathChipSpan.kt +1 -1
  149. package/android/src/math/java/com/swmansion/enriched/markdown/spans/MathInlineSpan.kt +13 -6
  150. package/android/src/math/java/com/swmansion/enriched/markdown/spans/MathMeasureHelper.kt +2 -1
  151. package/android/src/math/java/com/swmansion/enriched/markdown/views/MathContainerView.kt +26 -8
  152. package/cpp/highlight/CodeBlockHighlighter.cpp +284 -0
  153. package/cpp/highlight/CodeBlockHighlighter.hpp +66 -0
  154. package/cpp/highlight/CodeBlockLanguages.cpp +138 -0
  155. package/cpp/highlight/CodeBlockLanguages.hpp +25 -0
  156. package/cpp/highlight/HighlightGrammars.hpp +28 -0
  157. package/cpp/highlight/code_highlight_podspec.rb +211 -0
  158. package/cpp/highlight/gen-registry.mjs +155 -0
  159. package/cpp/highlight/grammar-versions.json +159 -0
  160. package/cpp/highlight/vendor/generated/generated_queries.h +1665 -0
  161. package/cpp/highlight/vendor/generated/generated_registry.cpp +59 -0
  162. package/cpp/parser/MD4CParser.cpp +173 -61
  163. package/cpp/parser/MD4CParser.hpp +1 -0
  164. package/cpp/parser/MarkdownASTNode.hpp +2 -1
  165. package/cpp/wasm/ASTSerializer.cpp +2 -0
  166. package/cpp/wasm/build.sh +1 -0
  167. package/cpp/wasm/md4c_wasm.cpp +3 -1
  168. package/docs/ACCESSIBILITY.md +14 -2
  169. package/docs/API_REFERENCE.md +405 -12
  170. package/docs/BREAKING_CHANGES.md +129 -0
  171. package/docs/CODE_HIGHLIGHT.md +133 -0
  172. package/docs/COPY_OPTIONS.md +61 -3
  173. package/docs/ELEMENTS_STRUCTURE.md +52 -4
  174. package/docs/IMAGE_CACHING.md +30 -0
  175. package/docs/INPUT.md +110 -11
  176. package/docs/LATEX_MATH.md +87 -45
  177. package/docs/MACOS.md +1 -1
  178. package/docs/MARKDOWN_STREAMING.md +27 -1
  179. package/docs/MENTIONS.md +8 -1
  180. package/docs/NATIVE_ASSETS.md +127 -0
  181. package/docs/RTL.md +1 -1
  182. package/docs/STYLES.md +73 -6
  183. package/docs/TESTING.md +112 -0
  184. package/docs/TEXT.md +18 -6
  185. package/docs/WEB.md +4 -1
  186. package/ios/EnrichedMarkdown.h +7 -0
  187. package/ios/EnrichedMarkdown.mm +583 -76
  188. package/ios/EnrichedMarkdownText.h +7 -0
  189. package/ios/EnrichedMarkdownText.mm +299 -73
  190. package/ios/attachments/ENRMImageAttachment.h +9 -0
  191. package/ios/attachments/ENRMImageAttachment.m +143 -40
  192. package/ios/attachments/ENRMMathInlineAttachment+macOS.m +2 -1
  193. package/ios/attachments/ENRMMathInlineAttachment.h +5 -0
  194. package/ios/attachments/ENRMMathInlineAttachment.m +50 -82
  195. package/ios/attachments/ENRMMathInlineAttachmentShared.h +2 -0
  196. package/ios/generated/ReactCodegen/EnrichedMarkdownTextSpec/EventEmitters.cpp +223 -0
  197. package/ios/generated/ReactCodegen/EnrichedMarkdownTextSpec/EventEmitters.h +183 -0
  198. package/ios/generated/ReactCodegen/EnrichedMarkdownTextSpec/Props.cpp +65 -0
  199. package/ios/generated/ReactCodegen/EnrichedMarkdownTextSpec/Props.h +1086 -61
  200. package/ios/generated/ReactCodegen/EnrichedMarkdownTextSpec/RCTComponentViewHelpers.h +181 -2
  201. package/ios/input/ENRMAutoLinkDetector.h +2 -1
  202. package/ios/input/ENRMAutoLinkDetector.mm +79 -41
  203. package/ios/input/ENRMBlockEditCoordinator.h +71 -0
  204. package/ios/input/ENRMBlockEditCoordinator.mm +195 -0
  205. package/ios/input/ENRMBlockRange.h +28 -0
  206. package/ios/input/ENRMBlockRange.mm +30 -0
  207. package/ios/input/ENRMBlockStore.h +56 -0
  208. package/ios/input/ENRMBlockStore.mm +275 -0
  209. package/ios/input/ENRMClipboardCoordinator.h +45 -0
  210. package/ios/input/ENRMClipboardCoordinator.mm +120 -0
  211. package/ios/input/ENRMDetectorPipeline.h +2 -1
  212. package/ios/input/ENRMEditPipeline.h +76 -0
  213. package/ios/input/ENRMEditPipeline.mm +228 -0
  214. package/ios/input/ENRMEditSession.h +36 -0
  215. package/ios/input/ENRMEditSession.mm +63 -0
  216. package/ios/input/ENRMFormattingStore.h +17 -0
  217. package/ios/input/ENRMFormattingStore.mm +95 -105
  218. package/ios/input/ENRMInputBlockType.h +91 -0
  219. package/ios/input/ENRMInputBlockType.mm +5 -0
  220. package/ios/input/ENRMInputDecorationDrawer.h +18 -0
  221. package/ios/input/ENRMInputEventEmitter.h +56 -0
  222. package/ios/input/ENRMInputEventEmitter.mm +308 -0
  223. package/ios/input/ENRMInputFormatter.h +29 -69
  224. package/ios/input/ENRMInputFormatter.mm +216 -124
  225. package/ios/input/ENRMInputFormatterStyle.h +99 -0
  226. package/ios/input/ENRMInputFormatterStyle.mm +188 -0
  227. package/ios/input/ENRMInputLayoutManager.h +9 -0
  228. package/ios/input/ENRMInputLayoutManager.mm +30 -0
  229. package/ios/input/ENRMInputListMarkerDrawer.h +32 -0
  230. package/ios/input/ENRMInputListMarkerDrawer.mm +426 -0
  231. package/ios/input/ENRMInputParser.h +5 -6
  232. package/ios/input/ENRMInputParser.mm +461 -178
  233. package/ios/input/ENRMInputRemend.mm +2 -2
  234. package/ios/input/ENRMInputStyleStateBuilder.h +40 -0
  235. package/ios/input/ENRMInputStyleStateBuilder.mm +60 -0
  236. package/ios/input/ENRMInputTextView.mm +103 -8
  237. package/ios/input/ENRMInputTypingAttributesController.h +42 -0
  238. package/ios/input/ENRMInputTypingAttributesController.mm +203 -0
  239. package/ios/input/ENRMLinkCoordinator.h +41 -0
  240. package/ios/input/ENRMLinkCoordinator.mm +89 -0
  241. package/ios/input/ENRMMarkdownSerializer.h +29 -5
  242. package/ios/input/ENRMMarkdownSerializer.mm +170 -48
  243. package/ios/input/ENRMMathAtom.h +26 -0
  244. package/ios/input/ENRMMathAtom.mm +12 -0
  245. package/ios/input/ENRMMentionCoordinator.h +45 -0
  246. package/ios/input/ENRMMentionCoordinator.mm +167 -0
  247. package/ios/input/ENRMRangeEditAdjustment.h +38 -0
  248. package/ios/input/ENRMRangeEditAdjustment.mm +91 -0
  249. package/ios/input/ENRMRangeStoreUtils.h +39 -0
  250. package/ios/input/EnrichedMarkdownTextInput+ContextMenu.mm +6 -6
  251. package/ios/input/EnrichedMarkdownTextInput+Internal.h +11 -3
  252. package/ios/input/EnrichedMarkdownTextInput.h +7 -1
  253. package/ios/input/EnrichedMarkdownTextInput.mm +1089 -1023
  254. package/ios/input/InputStylePropsUtils.h +109 -68
  255. package/ios/input/internals/EnrichedMarkdownTextInputShadowNode.mm +2 -1
  256. package/ios/input/styles/ENRMBlockHandler.h +46 -0
  257. package/ios/input/styles/ENRMHeadingBlockHandler.h +15 -0
  258. package/ios/input/styles/ENRMHeadingBlockHandler.mm +38 -0
  259. package/ios/input/styles/ENRMOrderedListBlockHandler.h +14 -0
  260. package/ios/input/styles/ENRMOrderedListBlockHandler.mm +48 -0
  261. package/ios/input/styles/ENRMUnorderedListBlockHandler.h +15 -0
  262. package/ios/input/styles/ENRMUnorderedListBlockHandler.mm +51 -0
  263. package/ios/internals/ENRMViewFreeMeasurement.h +331 -0
  264. package/ios/internals/EnrichedMarkdownShadowNode.h +1 -3
  265. package/ios/internals/EnrichedMarkdownShadowNode.mm +16 -20
  266. package/ios/internals/EnrichedMarkdownTextShadowNode.h +1 -3
  267. package/ios/internals/EnrichedMarkdownTextShadowNode.mm +15 -20
  268. package/ios/internals/MeasurementCache.h +41 -9
  269. package/ios/internals/ShadowMeasurementUtils.h +63 -58
  270. package/ios/math/ENRMMathChipController.h +74 -0
  271. package/ios/math/ENRMMathChipController.mm +476 -0
  272. package/ios/math/ENRMRaTeXBridge.swift +27 -6
  273. package/ios/parser/ENRMMarkdownParser.h +1 -8
  274. package/ios/parser/ENRMMarkdownParser.mm +2 -11
  275. package/ios/parser/MarkdownASTNode.h +2 -1
  276. package/ios/parser/MarkdownParserBridge.mm +4 -0
  277. package/ios/renderer/AttributedRenderer.m +20 -2
  278. package/ios/renderer/BaseRenderer.h +17 -2
  279. package/ios/renderer/BaseRenderer.m +30 -0
  280. package/ios/renderer/BlockquoteRenderer.h +1 -1
  281. package/ios/renderer/BlockquoteRenderer.m +144 -35
  282. package/ios/renderer/CodeBlockRenderer.h +1 -1
  283. package/ios/renderer/CodeBlockRenderer.m +27 -23
  284. package/ios/renderer/CodeRenderer.h +1 -1
  285. package/ios/renderer/CodeRenderer.m +3 -1
  286. package/ios/renderer/ENRMImageRenderer.h +1 -1
  287. package/ios/renderer/ENRMImageRenderer.m +5 -1
  288. package/ios/renderer/ENRMMathInlineRenderer.h +1 -1
  289. package/ios/renderer/ENRMMathInlineRenderer.m +6 -1
  290. package/ios/renderer/ENRMSpoilerRenderer.h +1 -1
  291. package/ios/renderer/ENRMSpoilerRenderer.m +3 -1
  292. package/ios/renderer/EmphasisRenderer.h +1 -1
  293. package/ios/renderer/EmphasisRenderer.m +3 -1
  294. package/ios/renderer/HeadingRenderer.h +1 -1
  295. package/ios/renderer/HeadingRenderer.m +13 -6
  296. package/ios/renderer/HighlightRenderer.h +1 -1
  297. package/ios/renderer/HighlightRenderer.m +3 -1
  298. package/ios/renderer/LinkRenderer.h +1 -1
  299. package/ios/renderer/LinkRenderer.m +50 -16
  300. package/ios/renderer/ListItemRenderer.h +13 -1
  301. package/ios/renderer/ListItemRenderer.m +102 -44
  302. package/ios/renderer/ListRenderer.h +2 -2
  303. package/ios/renderer/ListRenderer.m +63 -25
  304. package/ios/renderer/ParagraphRenderer.h +1 -1
  305. package/ios/renderer/ParagraphRenderer.m +16 -8
  306. package/ios/renderer/RenderContext.h +10 -0
  307. package/ios/renderer/RenderContext.m +44 -0
  308. package/ios/renderer/RendererFactory.m +14 -0
  309. package/ios/renderer/StrikethroughRenderer.h +1 -1
  310. package/ios/renderer/StrikethroughRenderer.m +3 -1
  311. package/ios/renderer/StrongRenderer.h +1 -1
  312. package/ios/renderer/StrongRenderer.m +3 -1
  313. package/ios/renderer/SubscriptRenderer.h +1 -1
  314. package/ios/renderer/SubscriptRenderer.m +3 -1
  315. package/ios/renderer/SuperscriptRenderer.h +1 -1
  316. package/ios/renderer/SuperscriptRenderer.m +3 -1
  317. package/ios/renderer/TextRenderer.h +2 -2
  318. package/ios/renderer/TextRenderer.m +3 -1
  319. package/ios/renderer/ThematicBreakRenderer.h +1 -1
  320. package/ios/renderer/ThematicBreakRenderer.m +3 -1
  321. package/ios/renderer/UnderlineRenderer.h +1 -1
  322. package/ios/renderer/UnderlineRenderer.m +3 -1
  323. package/ios/styles/StyleConfig.h +42 -0
  324. package/ios/styles/StyleConfig.mm +216 -0
  325. package/ios/utils/BlockquoteBorder.h +6 -0
  326. package/ios/utils/BlockquoteBorder.m +249 -52
  327. package/ios/utils/CodeBackground.m +3 -65
  328. package/ios/utils/CodeBlockBackground.m +16 -2
  329. package/ios/utils/ENRMAtomicSize.h +65 -0
  330. package/ios/utils/ENRMBlockMenu.h +66 -0
  331. package/ios/utils/ENRMChipDrawing.h +24 -0
  332. package/ios/utils/ENRMChipDrawing.m +83 -0
  333. package/ios/utils/ENRMCodeBlockContent.h +37 -0
  334. package/ios/utils/ENRMCodeBlockContent.mm +79 -0
  335. package/ios/utils/ENRMCodeBlockHighlighter.h +37 -0
  336. package/ios/utils/ENRMCodeBlockHighlighter.mm +51 -0
  337. package/ios/utils/ENRMFeatureFlags.h +7 -0
  338. package/ios/utils/ENRMImageDownloader.h +11 -1
  339. package/ios/utils/ENRMImageDownloader.m +60 -16
  340. package/ios/utils/ENRMLinkChip.h +70 -0
  341. package/ios/utils/ENRMLinkChip.m +213 -0
  342. package/ios/utils/ENRMLinkLayout.h +50 -0
  343. package/ios/utils/ENRMLinkLayout.m +45 -0
  344. package/ios/utils/ENRMLocalImageLoader.h +31 -0
  345. package/ios/utils/ENRMLocalImageLoader.m +68 -0
  346. package/ios/utils/ENRMMathFallback.h +26 -0
  347. package/ios/utils/ENRMMathFallback.m +18 -0
  348. package/ios/utils/ENRMSelectionChange.h +120 -0
  349. package/ios/utils/ENRMSelectionChange.m +282 -0
  350. package/ios/utils/ENRMTextViewSetup.h +35 -17
  351. package/ios/utils/EditMenuUtils+macOS.m +4 -1
  352. package/ios/utils/EditMenuUtils.h +35 -6
  353. package/ios/utils/EditMenuUtils.m +188 -11
  354. package/ios/utils/HTMLGenerator.m +2 -1
  355. package/ios/utils/ImageRequestHeaderUtils.h +35 -0
  356. package/ios/utils/LastElementUtils.h +1 -0
  357. package/ios/utils/ListMarkerDrawer.m +29 -42
  358. package/ios/utils/MarkdownASTSerializer.m +4 -0
  359. package/ios/utils/MarkdownAccessibilityElementBuilder.m +3 -1
  360. package/ios/utils/MarkdownExtractor.m +2 -1
  361. package/ios/utils/ParagraphStyleUtils.h +5 -0
  362. package/ios/utils/ParagraphStyleUtils.m +77 -17
  363. package/ios/utils/RTFExportUtils.m +2 -0
  364. package/ios/utils/RenderedMarkdownSegment.h +13 -1
  365. package/ios/utils/RenderedMarkdownSegment.m +20 -0
  366. package/ios/utils/SegmentRenderer.m +17 -4
  367. package/ios/utils/StreamingMarkdownFilter.h +11 -1
  368. package/ios/utils/StreamingMarkdownFilter.m +98 -2
  369. package/ios/utils/StylePropsUtils.h +110 -1
  370. package/ios/utils/TaskListTapUtils.m +24 -0
  371. package/ios/utils/TextViewLayoutManager.mm +3 -0
  372. package/ios/views/ENRMCodeBlockContainerView.h +60 -0
  373. package/ios/views/ENRMCodeBlockContainerView.m +569 -0
  374. package/ios/views/ENRMMathContainerView.h +23 -0
  375. package/ios/views/ENRMMathContainerView.m +87 -20
  376. package/ios/views/TableContainerView.h +32 -0
  377. package/ios/views/TableContainerView.m +291 -175
  378. package/jest.d.ts +1 -0
  379. package/jest.js +5 -0
  380. package/lib/module/EnrichedMarkdownNativeComponent.ts +203 -1
  381. package/lib/module/EnrichedMarkdownTextInput.js +84 -5
  382. package/lib/module/EnrichedMarkdownTextInput.js.map +1 -1
  383. package/lib/module/EnrichedMarkdownTextInputNativeComponent.ts +78 -5
  384. package/lib/module/EnrichedMarkdownTextNativeComponent.ts +204 -1
  385. package/lib/module/headingDefaults.js +34 -0
  386. package/lib/module/headingDefaults.js.map +1 -0
  387. package/lib/module/index.js.map +1 -1
  388. package/lib/module/jest/index.js +205 -0
  389. package/lib/module/jest/index.js.map +1 -0
  390. package/lib/module/native/EnrichedMarkdownText.js +199 -15
  391. package/lib/module/native/EnrichedMarkdownText.js.map +1 -1
  392. package/lib/module/normalizeMarkdownStyle.js +98 -23
  393. package/lib/module/normalizeMarkdownStyle.js.map +1 -1
  394. package/lib/module/normalizeMarkdownStyle.web.js +73 -22
  395. package/lib/module/normalizeMarkdownStyle.web.js.map +1 -1
  396. package/lib/module/normalizeMarkdownTextInputStyle.js +62 -15
  397. package/lib/module/normalizeMarkdownTextInputStyle.js.map +1 -1
  398. package/lib/module/normalizeMenuItem.js +1 -1
  399. package/lib/module/utils/textInputState.js +26 -0
  400. package/lib/module/utils/textInputState.js.map +1 -0
  401. package/lib/module/web/EnrichedMarkdownText.js +15 -8
  402. package/lib/module/web/EnrichedMarkdownText.js.map +1 -1
  403. package/lib/module/web/parseMarkdown.js +4 -3
  404. package/lib/module/web/parseMarkdown.js.map +1 -1
  405. package/lib/module/web/renderers/InlineRenderers.js +102 -3
  406. package/lib/module/web/renderers/InlineRenderers.js.map +1 -1
  407. package/lib/module/web/renderers/ListRenderers.js +7 -2
  408. package/lib/module/web/renderers/ListRenderers.js.map +1 -1
  409. package/lib/module/web/renderers/index.js +7 -4
  410. package/lib/module/web/renderers/index.js.map +1 -1
  411. package/lib/module/web/styles.js +101 -6
  412. package/lib/module/web/styles.js.map +1 -1
  413. package/lib/module/web/utils.js +14 -0
  414. package/lib/module/web/utils.js.map +1 -1
  415. package/lib/module/web/wasm/md4c.js +0 -0
  416. package/lib/module/web/wasm/md4c.js.map +1 -1
  417. package/lib/typescript/src/EnrichedMarkdownNativeComponent.d.ts +185 -2
  418. package/lib/typescript/src/EnrichedMarkdownNativeComponent.d.ts.map +1 -1
  419. package/lib/typescript/src/EnrichedMarkdownTextInput.d.ts +94 -9
  420. package/lib/typescript/src/EnrichedMarkdownTextInput.d.ts.map +1 -1
  421. package/lib/typescript/src/EnrichedMarkdownTextInputNativeComponent.d.ts +69 -5
  422. package/lib/typescript/src/EnrichedMarkdownTextInputNativeComponent.d.ts.map +1 -1
  423. package/lib/typescript/src/EnrichedMarkdownTextNativeComponent.d.ts +185 -2
  424. package/lib/typescript/src/EnrichedMarkdownTextNativeComponent.d.ts.map +1 -1
  425. package/lib/typescript/src/headingDefaults.d.ts +9 -0
  426. package/lib/typescript/src/headingDefaults.d.ts.map +1 -0
  427. package/lib/typescript/src/index.d.ts +3 -3
  428. package/lib/typescript/src/index.d.ts.map +1 -1
  429. package/lib/typescript/src/index.web.d.ts +2 -2
  430. package/lib/typescript/src/index.web.d.ts.map +1 -1
  431. package/lib/typescript/src/jest/index.d.ts +6 -0
  432. package/lib/typescript/src/jest/index.d.ts.map +1 -0
  433. package/lib/typescript/src/native/EnrichedMarkdownText.d.ts +5 -5
  434. package/lib/typescript/src/native/EnrichedMarkdownText.d.ts.map +1 -1
  435. package/lib/typescript/src/normalizeMarkdownStyle.d.ts.map +1 -1
  436. package/lib/typescript/src/normalizeMarkdownStyle.web.d.ts.map +1 -1
  437. package/lib/typescript/src/normalizeMarkdownTextInputStyle.d.ts +19 -5
  438. package/lib/typescript/src/normalizeMarkdownTextInputStyle.d.ts.map +1 -1
  439. package/lib/typescript/src/types/MarkdownStyle.d.ts +122 -5
  440. package/lib/typescript/src/types/MarkdownStyle.d.ts.map +1 -1
  441. package/lib/typescript/src/types/MarkdownStyleInternal.d.ts +39 -0
  442. package/lib/typescript/src/types/MarkdownStyleInternal.d.ts.map +1 -1
  443. package/lib/typescript/src/types/MarkdownTextProps.d.ts +207 -10
  444. package/lib/typescript/src/types/MarkdownTextProps.d.ts.map +1 -1
  445. package/lib/typescript/src/types/MarkdownTextProps.web.d.ts +60 -1
  446. package/lib/typescript/src/types/MarkdownTextProps.web.d.ts.map +1 -1
  447. package/lib/typescript/src/types/events.d.ts +85 -0
  448. package/lib/typescript/src/types/events.d.ts.map +1 -1
  449. package/lib/typescript/src/utils/textInputState.d.ts +24 -0
  450. package/lib/typescript/src/utils/textInputState.d.ts.map +1 -0
  451. package/lib/typescript/src/web/EnrichedMarkdownText.d.ts +1 -1
  452. package/lib/typescript/src/web/EnrichedMarkdownText.d.ts.map +1 -1
  453. package/lib/typescript/src/web/parseMarkdown.d.ts +1 -1
  454. package/lib/typescript/src/web/parseMarkdown.d.ts.map +1 -1
  455. package/lib/typescript/src/web/renderers/InlineRenderers.d.ts.map +1 -1
  456. package/lib/typescript/src/web/renderers/ListRenderers.d.ts.map +1 -1
  457. package/lib/typescript/src/web/renderers/index.d.ts +2 -1
  458. package/lib/typescript/src/web/renderers/index.d.ts.map +1 -1
  459. package/lib/typescript/src/web/styles.d.ts +2 -1
  460. package/lib/typescript/src/web/styles.d.ts.map +1 -1
  461. package/lib/typescript/src/web/types.d.ts +10 -2
  462. package/lib/typescript/src/web/types.d.ts.map +1 -1
  463. package/lib/typescript/src/web/utils.d.ts +4 -0
  464. package/lib/typescript/src/web/utils.d.ts.map +1 -1
  465. package/package.json +36 -9
  466. package/postinstall.mjs +131 -0
  467. package/ratex-version.json +21 -0
  468. package/src/EnrichedMarkdownNativeComponent.ts +203 -1
  469. package/src/EnrichedMarkdownTextInput.tsx +159 -8
  470. package/src/EnrichedMarkdownTextInputNativeComponent.ts +78 -5
  471. package/src/EnrichedMarkdownTextNativeComponent.ts +204 -1
  472. package/src/headingDefaults.ts +21 -0
  473. package/src/index.tsx +15 -0
  474. package/src/index.web.tsx +6 -1
  475. package/src/jest/index.tsx +236 -0
  476. package/src/native/EnrichedMarkdownText.tsx +260 -11
  477. package/src/normalizeMarkdownStyle.ts +117 -16
  478. package/src/normalizeMarkdownStyle.web.ts +76 -15
  479. package/src/normalizeMarkdownTextInputStyle.ts +110 -35
  480. package/src/normalizeMenuItem.ts +1 -1
  481. package/src/types/MarkdownStyle.ts +125 -5
  482. package/src/types/MarkdownStyleInternal.ts +51 -0
  483. package/src/types/MarkdownTextProps.ts +215 -10
  484. package/src/types/MarkdownTextProps.web.ts +62 -1
  485. package/src/types/events.ts +90 -0
  486. package/src/utils/textInputState.ts +35 -0
  487. package/src/web/EnrichedMarkdownText.tsx +26 -5
  488. package/src/web/parseMarkdown.ts +6 -2
  489. package/src/web/renderers/InlineRenderers.tsx +116 -3
  490. package/src/web/renderers/ListRenderers.tsx +14 -2
  491. package/src/web/renderers/index.tsx +6 -2
  492. package/src/web/styles.ts +114 -5
  493. package/src/web/types.ts +10 -1
  494. package/src/web/utils.ts +9 -0
  495. package/src/web/wasm/md4c.js +0 -0
  496. package/vendor-grammars.mjs +511 -0
  497. package/vendor-ratex.mjs +173 -0
  498. package/app.plugin.js +0 -2
  499. package/plugin/build/withAndroidMath.js +0 -19
  500. package/plugin/build/withIosMath.js +0 -28
  501. package/plugin/build/withReactNativeEnrichedMarkdown.js +0 -11
  502. package/plugin/src/withAndroidMath.ts +0 -24
  503. package/plugin/src/withIosMath.ts +0 -35
  504. package/plugin/src/withReactNativeEnrichedMarkdown.ts +0 -17
  505. package/plugin/tsconfig.build.json +0 -16
@@ -10,7 +10,9 @@
10
10
 
11
11
  #pragma mark - Rendering
12
12
 
13
- - (void)renderNode:(MarkdownASTNode *)node into:(NSMutableAttributedString *)output context:(RenderContext *)context
13
+ - (void)renderNodeContent:(MarkdownASTNode *)node
14
+ into:(NSMutableAttributedString *)output
15
+ context:(RenderContext *)context
14
16
  {
15
17
  NSUInteger start = output.length;
16
18
  [_rendererFactory renderChildrenOfNode:node into:output context:context];
@@ -1,5 +1,5 @@
1
1
  #pragma once
2
2
  #import "BaseRenderer.h"
3
3
 
4
- @interface SubscriptRenderer : BaseRenderer <NodeRenderer>
4
+ @interface SubscriptRenderer : BaseRenderer
5
5
  @end
@@ -7,7 +7,9 @@
7
7
 
8
8
  @implementation SubscriptRenderer
9
9
 
10
- - (void)renderNode:(MarkdownASTNode *)node into:(NSMutableAttributedString *)output context:(RenderContext *)context
10
+ - (void)renderNodeContent:(MarkdownASTNode *)node
11
+ into:(NSMutableAttributedString *)output
12
+ context:(RenderContext *)context
11
13
  {
12
14
  NSUInteger start = output.length;
13
15
  [_rendererFactory renderChildrenOfNode:node into:output context:context];
@@ -1,5 +1,5 @@
1
1
  #pragma once
2
2
  #import "BaseRenderer.h"
3
3
 
4
- @interface SuperscriptRenderer : BaseRenderer <NodeRenderer>
4
+ @interface SuperscriptRenderer : BaseRenderer
5
5
  @end
@@ -7,7 +7,9 @@
7
7
 
8
8
  @implementation SuperscriptRenderer
9
9
 
10
- - (void)renderNode:(MarkdownASTNode *)node into:(NSMutableAttributedString *)output context:(RenderContext *)context
10
+ - (void)renderNodeContent:(MarkdownASTNode *)node
11
+ into:(NSMutableAttributedString *)output
12
+ context:(RenderContext *)context
11
13
  {
12
14
  NSUInteger start = output.length;
13
15
  [_rendererFactory renderChildrenOfNode:node into:output context:context];
@@ -1,6 +1,6 @@
1
+ #import "BaseRenderer.h"
1
2
  #import "MarkdownASTNode.h"
2
- #import "NodeRenderer.h"
3
3
  #import "RenderContext.h"
4
4
 
5
- @interface TextRenderer : NSObject <NodeRenderer>
5
+ @interface TextRenderer : BaseRenderer
6
6
  @end
@@ -3,7 +3,9 @@
3
3
 
4
4
  @implementation TextRenderer
5
5
 
6
- - (void)renderNode:(MarkdownASTNode *)node into:(NSMutableAttributedString *)output context:(RenderContext *)context
6
+ - (void)renderNodeContent:(MarkdownASTNode *)node
7
+ into:(NSMutableAttributedString *)output
8
+ context:(RenderContext *)context
7
9
  {
8
10
  if (!node.content)
9
11
  return;
@@ -1,4 +1,4 @@
1
1
  #import "BaseRenderer.h"
2
2
 
3
- @interface ThematicBreakRenderer : BaseRenderer <NodeRenderer>
3
+ @interface ThematicBreakRenderer : BaseRenderer
4
4
  @end
@@ -7,7 +7,9 @@
7
7
 
8
8
  @implementation ThematicBreakRenderer
9
9
 
10
- - (void)renderNode:(MarkdownASTNode *)node into:(NSMutableAttributedString *)output context:(RenderContext *)context
10
+ - (void)renderNodeContent:(MarkdownASTNode *)node
11
+ into:(NSMutableAttributedString *)output
12
+ context:(RenderContext *)context
11
13
  {
12
14
  [self ensureStartingNewline:output];
13
15
 
@@ -1,4 +1,4 @@
1
1
  #import "BaseRenderer.h"
2
2
 
3
- @interface UnderlineRenderer : BaseRenderer <NodeRenderer>
3
+ @interface UnderlineRenderer : BaseRenderer
4
4
  @end
@@ -8,7 +8,9 @@
8
8
 
9
9
  #pragma mark - Rendering
10
10
 
11
- - (void)renderNode:(MarkdownASTNode *)node into:(NSMutableAttributedString *)output context:(RenderContext *)context
11
+ - (void)renderNodeContent:(MarkdownASTNode *)node
12
+ into:(NSMutableAttributedString *)output
13
+ context:(RenderContext *)context
12
14
  {
13
15
  NSUInteger start = output.length;
14
16
  [_rendererFactory renderChildrenOfNode:node into:output context:context];
@@ -13,6 +13,12 @@ NS_ASSUME_NONNULL_BEGIN
13
13
  @property (nonatomic, strong) RCTUIColor *color;
14
14
  @property (nonatomic, assign) BOOL underline;
15
15
  @property (nonatomic, strong, nullable) RCTUIColor *backgroundColor;
16
+ // Chip ("box") properties — never inherited from the base link style.
17
+ @property (nonatomic, assign) CGFloat borderRadius;
18
+ @property (nonatomic, assign) CGFloat paddingHorizontal;
19
+ @property (nonatomic, assign) CGFloat paddingVertical;
20
+ @property (nonatomic, strong, nullable) RCTUIColor *borderColor;
21
+ @property (nonatomic, assign) CGFloat borderWidth;
16
22
  @end
17
23
 
18
24
  @interface StyleConfig : NSObject <NSCopying>
@@ -166,6 +172,16 @@ NS_ASSUME_NONNULL_BEGIN
166
172
  - (void)setLinkUnderline:(BOOL)newValue;
167
173
  - (nullable RCTUIColor *)linkBackgroundColor;
168
174
  - (void)setLinkBackgroundColor:(nullable RCTUIColor *)newValue;
175
+ - (CGFloat)linkBorderRadius;
176
+ - (void)setLinkBorderRadius:(CGFloat)newValue;
177
+ - (CGFloat)linkPaddingHorizontal;
178
+ - (void)setLinkPaddingHorizontal:(CGFloat)newValue;
179
+ - (CGFloat)linkPaddingVertical;
180
+ - (void)setLinkPaddingVertical:(CGFloat)newValue;
181
+ - (nullable RCTUIColor *)linkBorderColor;
182
+ - (void)setLinkBorderColor:(nullable RCTUIColor *)newValue;
183
+ - (CGFloat)linkBorderWidth;
184
+ - (void)setLinkBorderWidth:(CGFloat)newValue;
169
185
  - (NSArray<LinkVariantConfig *> *)linkVariants;
170
186
  - (void)setLinkVariants:(NSArray<LinkVariantConfig *> *)newValue;
171
187
  - (nullable LinkVariantConfig *)effectiveLinkVariantForURL:(NSString *)url;
@@ -208,12 +224,20 @@ NS_ASSUME_NONNULL_BEGIN
208
224
  // Image properties
209
225
  - (CGFloat)imageHeight;
210
226
  - (void)setImageHeight:(CGFloat)newValue;
227
+ - (CGFloat)imageMaxHeight;
228
+ - (void)setImageMaxHeight:(CGFloat)newValue;
229
+ - (CGFloat)imageAspectRatio;
230
+ - (void)setImageAspectRatio:(CGFloat)newValue;
231
+ - (NSString *)imageResizeMode;
232
+ - (void)setImageResizeMode:(NSString *)newValue;
211
233
  - (CGFloat)imageBorderRadius;
212
234
  - (void)setImageBorderRadius:(CGFloat)newValue;
213
235
  - (CGFloat)imageMarginTop;
214
236
  - (void)setImageMarginTop:(CGFloat)newValue;
215
237
  - (CGFloat)imageMarginBottom;
216
238
  - (void)setImageMarginBottom:(CGFloat)newValue;
239
+ - (nullable NSDictionary<NSString *, NSString *> *)imageRequestHeaders;
240
+ - (void)setImageRequestHeaders:(nullable NSDictionary<NSString *, NSString *> *)newValue;
217
241
  // Inline image properties
218
242
  - (CGFloat)inlineImageSize;
219
243
  - (void)setInlineImageSize:(CGFloat)newValue;
@@ -241,6 +265,10 @@ NS_ASSUME_NONNULL_BEGIN
241
265
  - (void)setBlockquoteGapWidth:(CGFloat)newValue;
242
266
  - (RCTUIColor *)blockquoteBackgroundColor;
243
267
  - (void)setBlockquoteBackgroundColor:(RCTUIColor *)newValue;
268
+ - (CGFloat)blockquoteBorderRadius;
269
+ - (void)setBlockquoteBorderRadius:(CGFloat)newValue;
270
+ - (CGFloat)blockquotePadding;
271
+ - (void)setBlockquotePadding:(CGFloat)newValue;
244
272
  // List style properties (combined for both ordered and unordered lists)
245
273
  - (CGFloat)listStyleFontSize;
246
274
  - (void)setListStyleFontSize:(CGFloat)newValue;
@@ -270,6 +298,8 @@ NS_ASSUME_NONNULL_BEGIN
270
298
  - (void)setListStyleGapWidth:(CGFloat)newValue;
271
299
  - (CGFloat)listStyleMarginLeft;
272
300
  - (void)setListStyleMarginLeft:(CGFloat)newValue;
301
+ - (CGFloat)listStyleItemSpacing;
302
+ - (void)setListStyleItemSpacing:(CGFloat)newValue;
273
303
  - (UIFont *)listMarkerFont;
274
304
  - (UIFont *)listStyleFont;
275
305
  - (CGFloat)effectiveListGapWidth;
@@ -302,6 +332,10 @@ NS_ASSUME_NONNULL_BEGIN
302
332
  - (CGFloat)codeBlockPadding;
303
333
  - (void)setCodeBlockPadding:(CGFloat)newValue;
304
334
  - (UIFont *)codeBlockFont;
335
+ // Syntax highlight colors, indexed by HighlightTokenType ordinal. Resolved on
336
+ // the JS side; the getter returns a cached color with no allocation.
337
+ - (RCTUIColor *_Nullable)codeBlockSyntaxColorForToken:(NSInteger)tokenType;
338
+ - (void)setCodeBlockSyntaxColor:(RCTUIColor *)newValue forToken:(NSInteger)tokenType;
305
339
  // Thematic break properties
306
340
  - (RCTUIColor *)thematicBreakColor;
307
341
  - (void)setThematicBreakColor:(RCTUIColor *)newValue;
@@ -348,6 +382,10 @@ NS_ASSUME_NONNULL_BEGIN
348
382
  - (void)setTableCellPaddingHorizontal:(CGFloat)newValue;
349
383
  - (CGFloat)tableCellPaddingVertical;
350
384
  - (void)setTableCellPaddingVertical:(CGFloat)newValue;
385
+ - (CGFloat)tableHorizontalOverflow;
386
+ - (void)setTableHorizontalOverflow:(CGFloat)newValue;
387
+ - (NSString *)tableAlign;
388
+ - (void)setTableAlign:(NSString *)newValue;
351
389
  // Task list checkbox properties
352
390
  - (RCTUIColor *)taskListCheckedColor;
353
391
  - (void)setTaskListCheckedColor:(RCTUIColor *)newValue;
@@ -380,6 +418,8 @@ NS_ASSUME_NONNULL_BEGIN
380
418
  - (void)setMathTextAlign:(NSString *)newValue;
381
419
  - (NSString *)mathFontWeight;
382
420
  - (void)setMathFontWeight:(NSString *)newValue;
421
+ - (CGFloat)mathGlyphOverflow;
422
+ - (void)setMathGlyphOverflow:(CGFloat)newValue;
383
423
 
384
424
  // Inline Math properties
385
425
  - (RCTUIColor *)inlineMathColor;
@@ -388,6 +428,8 @@ NS_ASSUME_NONNULL_BEGIN
388
428
  - (void)setInlineMathPaddingVertical:(CGFloat)newValue;
389
429
  - (NSString *)inlineMathFontWeight;
390
430
  - (void)setInlineMathFontWeight:(NSString *)newValue;
431
+ - (CGFloat)inlineMathGlyphOverflow;
432
+ - (void)setInlineMathGlyphOverflow:(CGFloat)newValue;
391
433
  // Spoiler properties
392
434
  - (RCTUIColor *)spoilerColor;
393
435
  - (void)setSpoilerColor:(RCTUIColor *)newValue;
@@ -1,9 +1,13 @@
1
1
  #import "StyleConfig.h"
2
+ #include "CodeBlockHighlighter.hpp"
2
3
  #import "ENRMFontSlot.h"
3
4
  #import "FontUtils.h"
4
5
  #import <React/RCTFont.h>
5
6
  #import <React/RCTUtils.h>
6
7
 
8
+ static const NSInteger kENRMCodeBlockSyntaxColorCount =
9
+ static_cast<NSInteger>(Markdown::HighlightTokenType::Embedded) + 1;
10
+
7
11
  static inline NSString *normalizedFontWeight(NSString *fontWeight)
8
12
  {
9
13
  // If nil or empty string, return nil to let RCTFont use fontFamily as-is
@@ -109,6 +113,11 @@ static inline NSString *normalizedFontWeight(NSString *fontWeight)
109
113
  RCTUIColor *_linkColor;
110
114
  BOOL _linkUnderline;
111
115
  RCTUIColor *_linkBackgroundColor;
116
+ CGFloat _linkBorderRadius;
117
+ CGFloat _linkPaddingHorizontal;
118
+ CGFloat _linkPaddingVertical;
119
+ RCTUIColor *_linkBorderColor;
120
+ CGFloat _linkBorderWidth;
112
121
  NSArray<LinkVariantConfig *> *_linkVariants;
113
122
  NSArray<LinkVariantRegexEntry *> *_compiledVariantRegexes;
114
123
  // Strong properties
@@ -134,9 +143,13 @@ static inline NSString *normalizedFontWeight(NSString *fontWeight)
134
143
  RCTUIColor *_codeBorderColor;
135
144
  // Image properties
136
145
  CGFloat _imageHeight;
146
+ CGFloat _imageMaxHeight;
147
+ CGFloat _imageAspectRatio;
148
+ NSString *_imageResizeMode;
137
149
  CGFloat _imageBorderRadius;
138
150
  CGFloat _imageMarginTop;
139
151
  CGFloat _imageMarginBottom;
152
+ NSDictionary<NSString *, NSString *> *_imageRequestHeaders;
140
153
  // Inline image properties
141
154
  CGFloat _inlineImageSize;
142
155
  // Blockquote properties
@@ -151,6 +164,8 @@ static inline NSString *normalizedFontWeight(NSString *fontWeight)
151
164
  CGFloat _blockquoteBorderWidth;
152
165
  CGFloat _blockquoteGapWidth;
153
166
  RCTUIColor *_blockquoteBackgroundColor;
167
+ CGFloat _blockquoteBorderRadius;
168
+ CGFloat _blockquotePadding;
154
169
  ENRMFontSlot *_blockquoteFont;
155
170
  // List style properties (combined for both ordered and unordered lists)
156
171
  CGFloat _listStyleFontSize;
@@ -167,6 +182,7 @@ static inline NSString *normalizedFontWeight(NSString *fontWeight)
167
182
  NSString *_listStyleMarkerFontWeight;
168
183
  CGFloat _listStyleGapWidth;
169
184
  CGFloat _listStyleMarginLeft;
185
+ CGFloat _listStyleItemSpacing;
170
186
  ENRMFontSlot *_listMarkerFont;
171
187
  ENRMFontSlot *_listStyleFont;
172
188
  // Code block properties
@@ -182,6 +198,7 @@ static inline NSString *normalizedFontWeight(NSString *fontWeight)
182
198
  CGFloat _codeBlockBorderRadius;
183
199
  CGFloat _codeBlockBorderWidth;
184
200
  CGFloat _codeBlockPadding;
201
+ RCTUIColor *_codeBlockSyntaxColors[kENRMCodeBlockSyntaxColorCount];
185
202
  ENRMFontSlot *_codeBlockFont;
186
203
  // Thematic break properties
187
204
  RCTUIColor *_thematicBreakColor;
@@ -208,6 +225,8 @@ static inline NSString *normalizedFontWeight(NSString *fontWeight)
208
225
  CGFloat _tableBorderRadius;
209
226
  CGFloat _tableCellPaddingHorizontal;
210
227
  CGFloat _tableCellPaddingVertical;
228
+ CGFloat _tableHorizontalOverflow;
229
+ NSString *_tableAlign;
211
230
  // Task list checkbox
212
231
  RCTUIColor *_taskListCheckedColor;
213
232
  RCTUIColor *_taskListBorderColor;
@@ -225,10 +244,12 @@ static inline NSString *normalizedFontWeight(NSString *fontWeight)
225
244
  CGFloat _mathMarginBottom;
226
245
  NSString *_mathTextAlign;
227
246
  NSString *_mathFontWeight;
247
+ CGFloat _mathGlyphOverflow;
228
248
  // Inline Math properties
229
249
  RCTUIColor *_inlineMathColor;
230
250
  CGFloat _inlineMathPaddingVertical;
231
251
  NSString *_inlineMathFontWeight;
252
+ CGFloat _inlineMathGlyphOverflow;
232
253
  // Spoiler properties
233
254
  RCTUIColor *_spoilerColor;
234
255
  CGFloat _spoilerParticleDensity;
@@ -391,6 +412,11 @@ static inline NSString *normalizedFontWeight(NSString *fontWeight)
391
412
  copy->_linkColor = [_linkColor copy];
392
413
  copy->_linkUnderline = _linkUnderline;
393
414
  copy->_linkBackgroundColor = [_linkBackgroundColor copy];
415
+ copy->_linkBorderRadius = _linkBorderRadius;
416
+ copy->_linkPaddingHorizontal = _linkPaddingHorizontal;
417
+ copy->_linkPaddingVertical = _linkPaddingVertical;
418
+ copy->_linkBorderColor = [_linkBorderColor copy];
419
+ copy->_linkBorderWidth = _linkBorderWidth;
394
420
  copy->_linkVariants = [_linkVariants copy];
395
421
  copy->_compiledVariantRegexes = [_compiledVariantRegexes copy];
396
422
  copy->_strongFontFamily = [_strongFontFamily copy];
@@ -409,9 +435,13 @@ static inline NSString *normalizedFontWeight(NSString *fontWeight)
409
435
  copy->_codeBackgroundColor = [_codeBackgroundColor copy];
410
436
  copy->_codeBorderColor = [_codeBorderColor copy];
411
437
  copy->_imageHeight = _imageHeight;
438
+ copy->_imageMaxHeight = _imageMaxHeight;
439
+ copy->_imageAspectRatio = _imageAspectRatio;
440
+ copy->_imageResizeMode = [_imageResizeMode copy];
412
441
  copy->_imageBorderRadius = _imageBorderRadius;
413
442
  copy->_imageMarginTop = _imageMarginTop;
414
443
  copy->_imageMarginBottom = _imageMarginBottom;
444
+ copy->_imageRequestHeaders = [_imageRequestHeaders copy];
415
445
  copy->_inlineImageSize = _inlineImageSize;
416
446
  copy->_blockquoteFontSize = _blockquoteFontSize;
417
447
  copy->_blockquoteFontFamily = [_blockquoteFontFamily copy];
@@ -424,6 +454,8 @@ static inline NSString *normalizedFontWeight(NSString *fontWeight)
424
454
  copy->_blockquoteBorderWidth = _blockquoteBorderWidth;
425
455
  copy->_blockquoteGapWidth = _blockquoteGapWidth;
426
456
  copy->_blockquoteBackgroundColor = [_blockquoteBackgroundColor copy];
457
+ copy->_blockquoteBorderRadius = _blockquoteBorderRadius;
458
+ copy->_blockquotePadding = _blockquotePadding;
427
459
  copy->_listStyleFontSize = _listStyleFontSize;
428
460
  copy->_listStyleFontFamily = [_listStyleFontFamily copy];
429
461
  copy->_listStyleFontWeight = [_listStyleFontWeight copy];
@@ -438,6 +470,7 @@ static inline NSString *normalizedFontWeight(NSString *fontWeight)
438
470
  copy->_listStyleMarkerFontWeight = [_listStyleMarkerFontWeight copy];
439
471
  copy->_listStyleGapWidth = _listStyleGapWidth;
440
472
  copy->_listStyleMarginLeft = _listStyleMarginLeft;
473
+ copy->_listStyleItemSpacing = _listStyleItemSpacing;
441
474
  copy->_codeBlockFontSize = _codeBlockFontSize;
442
475
  copy->_codeBlockFontFamily = [_codeBlockFontFamily copy];
443
476
  copy->_codeBlockFontWeight = [_codeBlockFontWeight copy];
@@ -450,6 +483,9 @@ static inline NSString *normalizedFontWeight(NSString *fontWeight)
450
483
  copy->_codeBlockBorderRadius = _codeBlockBorderRadius;
451
484
  copy->_codeBlockBorderWidth = _codeBlockBorderWidth;
452
485
  copy->_codeBlockPadding = _codeBlockPadding;
486
+ for (NSInteger i = 0; i < kENRMCodeBlockSyntaxColorCount; i++) {
487
+ copy->_codeBlockSyntaxColors[i] = [_codeBlockSyntaxColors[i] copy];
488
+ }
453
489
  copy->_thematicBreakColor = [_thematicBreakColor copy];
454
490
  copy->_thematicBreakHeight = _thematicBreakHeight;
455
491
  copy->_thematicBreakMarginTop = _thematicBreakMarginTop;
@@ -471,6 +507,8 @@ static inline NSString *normalizedFontWeight(NSString *fontWeight)
471
507
  copy->_tableBorderRadius = _tableBorderRadius;
472
508
  copy->_tableCellPaddingHorizontal = _tableCellPaddingHorizontal;
473
509
  copy->_tableCellPaddingVertical = _tableCellPaddingVertical;
510
+ copy->_tableHorizontalOverflow = _tableHorizontalOverflow;
511
+ copy->_tableAlign = [_tableAlign copy];
474
512
  copy->_taskListCheckedColor = [_taskListCheckedColor copy];
475
513
  copy->_taskListBorderColor = [_taskListBorderColor copy];
476
514
  copy->_taskListCheckboxSize = _taskListCheckboxSize;
@@ -486,9 +524,11 @@ static inline NSString *normalizedFontWeight(NSString *fontWeight)
486
524
  copy->_mathMarginBottom = _mathMarginBottom;
487
525
  copy->_mathTextAlign = [_mathTextAlign copy];
488
526
  copy->_mathFontWeight = [_mathFontWeight copy];
527
+ copy->_mathGlyphOverflow = _mathGlyphOverflow;
489
528
  copy->_inlineMathColor = [_inlineMathColor copy];
490
529
  copy->_inlineMathPaddingVertical = _inlineMathPaddingVertical;
491
530
  copy->_inlineMathFontWeight = [_inlineMathFontWeight copy];
531
+ copy->_inlineMathGlyphOverflow = _inlineMathGlyphOverflow;
492
532
  copy->_spoilerColor = [_spoilerColor copy];
493
533
  copy->_spoilerParticleDensity = _spoilerParticleDensity;
494
534
  copy->_spoilerParticleSpeed = _spoilerParticleSpeed;
@@ -1308,6 +1348,56 @@ static inline NSString *normalizedFontWeight(NSString *fontWeight)
1308
1348
  _linkBackgroundColor = newValue;
1309
1349
  }
1310
1350
 
1351
+ - (CGFloat)linkBorderRadius
1352
+ {
1353
+ return _linkBorderRadius;
1354
+ }
1355
+
1356
+ - (void)setLinkBorderRadius:(CGFloat)newValue
1357
+ {
1358
+ _linkBorderRadius = newValue;
1359
+ }
1360
+
1361
+ - (CGFloat)linkPaddingHorizontal
1362
+ {
1363
+ return _linkPaddingHorizontal;
1364
+ }
1365
+
1366
+ - (void)setLinkPaddingHorizontal:(CGFloat)newValue
1367
+ {
1368
+ _linkPaddingHorizontal = newValue;
1369
+ }
1370
+
1371
+ - (CGFloat)linkPaddingVertical
1372
+ {
1373
+ return _linkPaddingVertical;
1374
+ }
1375
+
1376
+ - (void)setLinkPaddingVertical:(CGFloat)newValue
1377
+ {
1378
+ _linkPaddingVertical = newValue;
1379
+ }
1380
+
1381
+ - (RCTUIColor *)linkBorderColor
1382
+ {
1383
+ return _linkBorderColor;
1384
+ }
1385
+
1386
+ - (void)setLinkBorderColor:(RCTUIColor *)newValue
1387
+ {
1388
+ _linkBorderColor = newValue;
1389
+ }
1390
+
1391
+ - (CGFloat)linkBorderWidth
1392
+ {
1393
+ return _linkBorderWidth;
1394
+ }
1395
+
1396
+ - (void)setLinkBorderWidth:(CGFloat)newValue
1397
+ {
1398
+ _linkBorderWidth = newValue;
1399
+ }
1400
+
1311
1401
  - (NSArray<LinkVariantConfig *> *)linkVariants
1312
1402
  {
1313
1403
  return _linkVariants;
@@ -1509,6 +1599,36 @@ static inline NSString *normalizedFontWeight(NSString *fontWeight)
1509
1599
  _imageHeight = newValue;
1510
1600
  }
1511
1601
 
1602
+ - (CGFloat)imageMaxHeight
1603
+ {
1604
+ return _imageMaxHeight;
1605
+ }
1606
+
1607
+ - (void)setImageMaxHeight:(CGFloat)newValue
1608
+ {
1609
+ _imageMaxHeight = newValue;
1610
+ }
1611
+
1612
+ - (CGFloat)imageAspectRatio
1613
+ {
1614
+ return _imageAspectRatio;
1615
+ }
1616
+
1617
+ - (void)setImageAspectRatio:(CGFloat)newValue
1618
+ {
1619
+ _imageAspectRatio = newValue;
1620
+ }
1621
+
1622
+ - (NSString *)imageResizeMode
1623
+ {
1624
+ return _imageResizeMode ?: @"";
1625
+ }
1626
+
1627
+ - (void)setImageResizeMode:(NSString *)newValue
1628
+ {
1629
+ _imageResizeMode = newValue;
1630
+ }
1631
+
1512
1632
  - (CGFloat)imageBorderRadius
1513
1633
  {
1514
1634
  return _imageBorderRadius;
@@ -1539,6 +1659,16 @@ static inline NSString *normalizedFontWeight(NSString *fontWeight)
1539
1659
  _imageMarginBottom = newValue;
1540
1660
  }
1541
1661
 
1662
+ - (NSDictionary<NSString *, NSString *> *)imageRequestHeaders
1663
+ {
1664
+ return _imageRequestHeaders;
1665
+ }
1666
+
1667
+ - (void)setImageRequestHeaders:(NSDictionary<NSString *, NSString *> *)newValue
1668
+ {
1669
+ _imageRequestHeaders = [newValue copy];
1670
+ }
1671
+
1542
1672
  - (CGFloat)inlineImageSize
1543
1673
  {
1544
1674
  return _inlineImageSize;
@@ -1681,6 +1811,26 @@ static inline NSString *normalizedFontWeight(NSString *fontWeight)
1681
1811
  _blockquoteBackgroundColor = newValue;
1682
1812
  }
1683
1813
 
1814
+ - (CGFloat)blockquoteBorderRadius
1815
+ {
1816
+ return _blockquoteBorderRadius;
1817
+ }
1818
+
1819
+ - (void)setBlockquoteBorderRadius:(CGFloat)newValue
1820
+ {
1821
+ _blockquoteBorderRadius = newValue;
1822
+ }
1823
+
1824
+ - (CGFloat)blockquotePadding
1825
+ {
1826
+ return _blockquotePadding;
1827
+ }
1828
+
1829
+ - (void)setBlockquotePadding:(CGFloat)newValue
1830
+ {
1831
+ _blockquotePadding = newValue;
1832
+ }
1833
+
1684
1834
  // List style properties (combined for both ordered and unordered lists)
1685
1835
  - (CGFloat)listStyleFontSize
1686
1836
  {
@@ -1831,6 +1981,16 @@ static inline NSString *normalizedFontWeight(NSString *fontWeight)
1831
1981
  _listStyleMarginLeft = newValue;
1832
1982
  }
1833
1983
 
1984
+ - (CGFloat)listStyleItemSpacing
1985
+ {
1986
+ return _listStyleItemSpacing;
1987
+ }
1988
+
1989
+ - (void)setListStyleItemSpacing:(CGFloat)newValue
1990
+ {
1991
+ _listStyleItemSpacing = newValue;
1992
+ }
1993
+
1834
1994
  - (UIFont *)listMarkerFont
1835
1995
  {
1836
1996
  if (_listMarkerFont.needsRecreation || !_listMarkerFont.cachedFont) {
@@ -2028,6 +2188,22 @@ static const CGFloat kDefaultMinGap = 4.0;
2028
2188
  return _codeBlockFont.cachedFont;
2029
2189
  }
2030
2190
 
2191
+ - (RCTUIColor *)codeBlockSyntaxColorForToken:(NSInteger)tokenType
2192
+ {
2193
+ if (tokenType < 0 || tokenType >= kENRMCodeBlockSyntaxColorCount) {
2194
+ return nil;
2195
+ }
2196
+ return _codeBlockSyntaxColors[tokenType];
2197
+ }
2198
+
2199
+ - (void)setCodeBlockSyntaxColor:(RCTUIColor *)newValue forToken:(NSInteger)tokenType
2200
+ {
2201
+ if (tokenType < 0 || tokenType >= kENRMCodeBlockSyntaxColorCount) {
2202
+ return;
2203
+ }
2204
+ _codeBlockSyntaxColors[tokenType] = newValue;
2205
+ }
2206
+
2031
2207
  // Thematic break properties
2032
2208
  - (RCTUIColor *)thematicBreakColor
2033
2209
  {
@@ -2280,6 +2456,26 @@ static const CGFloat kDefaultMinGap = 4.0;
2280
2456
  _tableCellPaddingVertical = newValue;
2281
2457
  }
2282
2458
 
2459
+ - (CGFloat)tableHorizontalOverflow
2460
+ {
2461
+ return _tableHorizontalOverflow;
2462
+ }
2463
+
2464
+ - (void)setTableHorizontalOverflow:(CGFloat)newValue
2465
+ {
2466
+ _tableHorizontalOverflow = newValue;
2467
+ }
2468
+
2469
+ - (NSString *)tableAlign
2470
+ {
2471
+ return _tableAlign ?: @"";
2472
+ }
2473
+
2474
+ - (void)setTableAlign:(NSString *)newValue
2475
+ {
2476
+ _tableAlign = newValue;
2477
+ }
2478
+
2283
2479
  // Task list
2284
2480
 
2285
2481
  - (RCTUIColor *)taskListCheckedColor
@@ -2466,6 +2662,26 @@ static const CGFloat kDefaultMinGap = 4.0;
2466
2662
  _inlineMathPaddingVertical = newValue;
2467
2663
  }
2468
2664
 
2665
+ - (CGFloat)mathGlyphOverflow
2666
+ {
2667
+ return _mathGlyphOverflow;
2668
+ }
2669
+
2670
+ - (void)setMathGlyphOverflow:(CGFloat)newValue
2671
+ {
2672
+ _mathGlyphOverflow = newValue;
2673
+ }
2674
+
2675
+ - (CGFloat)inlineMathGlyphOverflow
2676
+ {
2677
+ return _inlineMathGlyphOverflow;
2678
+ }
2679
+
2680
+ - (void)setInlineMathGlyphOverflow:(CGFloat)newValue
2681
+ {
2682
+ _inlineMathGlyphOverflow = newValue;
2683
+ }
2684
+
2469
2685
  // ── Spoiler ─────────────────────────────────────────────────────────────
2470
2686
 
2471
2687
  - (RCTUIColor *)spoilerColor
@@ -6,6 +6,12 @@ NS_ASSUME_NONNULL_BEGIN
6
6
 
7
7
  extern NSString *const BlockquoteDepthAttributeName;
8
8
  extern NSString *const BlockquoteBackgroundColorAttributeName;
9
+ extern NSString *const BlockquoteSpacerAttributeName;
10
+
11
+ static inline CGFloat blockquoteIndentForDepth(NSInteger depth, CGFloat levelSpacing)
12
+ {
13
+ return depth * levelSpacing;
14
+ }
9
15
 
10
16
  @interface BlockquoteBorder : NSObject
11
17