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
@@ -8,7 +8,13 @@ import {
8
8
  } from 'react-native';
9
9
  import type React from 'react';
10
10
 
11
- interface MathStyleInternal {
11
+ interface HeadingStyleInternal {
12
+ fontSize: CodegenTypes.Float;
13
+ fontWeight: string;
14
+ color: ColorValue;
15
+ }
16
+
17
+ interface InputInlineMathStyleInternal {
12
18
  color: ColorValue;
13
19
  fontSize: CodegenTypes.Float;
14
20
  backgroundColor: ColorValue;
@@ -22,10 +28,10 @@ interface MathStyleInternal {
22
28
  fontWeight: string;
23
29
  }
24
30
 
25
- interface MathBlockStyleInternal extends MathStyleInternal {
31
+ interface InputMathStyleInternal extends InputInlineMathStyleInternal {
26
32
  marginTop: CodegenTypes.Float;
27
33
  marginBottom: CodegenTypes.Float;
28
- alignment: string;
34
+ textAlign: string;
29
35
  }
30
36
 
31
37
  interface MarkdownTextInputStyleInternal {
@@ -52,8 +58,27 @@ interface MarkdownTextInputStyleInternal {
52
58
  color: ColorValue;
53
59
  backgroundColor: ColorValue;
54
60
  };
55
- math: MathStyleInternal;
56
- mathBlock: MathBlockStyleInternal;
61
+ // Per-level heading styles, mirroring the readonly renderer's markdownStyle
62
+ // h1..h6 so heading sizing is configured consistently across read and edit
63
+ // views. Always provided with complete defaults via normalizeMarkdownTextInputStyle.
64
+ h1: HeadingStyleInternal;
65
+ h2: HeadingStyleInternal;
66
+ h3: HeadingStyleInternal;
67
+ h4: HeadingStyleInternal;
68
+ h5: HeadingStyleInternal;
69
+ h6: HeadingStyleInternal;
70
+ list: {
71
+ // Vertical spacing (points) added above each list item. iOS applies it via
72
+ // paragraphSpacingBefore; Android via a LineHeightSpan. Float for parity with
73
+ // every other spacing value in the library.
74
+ itemSpacing: CodegenTypes.Float;
75
+ };
76
+ // Inline math (`$...$`) chip; block math (`$$...$$`) chip. Key names and the
77
+ // shared field names match the read-only renderer's markdownStyle. The
78
+ // author-facing `math.padding` shorthand is expanded into the two axes by
79
+ // normalizeMarkdownTextInputStyle, so nothing below carries it.
80
+ inlineMath: InputInlineMathStyleInternal;
81
+ math: InputMathStyleInternal;
57
82
  }
58
83
 
59
84
  interface TargetedEvent {
@@ -68,6 +93,10 @@ export interface OnChangeMarkdownEvent {
68
93
  value: string;
69
94
  }
70
95
 
96
+ export interface OnKeyPressEvent {
97
+ key: string;
98
+ }
99
+
71
100
  export interface OnChangeSelectionEvent {
72
101
  start: CodegenTypes.Int32;
73
102
  end: CodegenTypes.Int32;
@@ -80,6 +109,9 @@ export interface OnChangeStateEvent {
80
109
  strikethrough: { isActive: boolean };
81
110
  spoiler: { isActive: boolean };
82
111
  link: { isActive: boolean };
112
+ heading: { isActive: boolean; level: CodegenTypes.Int32 };
113
+ unorderedList: { isActive: boolean; depth: CodegenTypes.Int32 };
114
+ orderedList: { isActive: boolean; depth: CodegenTypes.Int32 };
83
115
  }
84
116
 
85
117
  export interface OnRequestMarkdownResultEvent {
@@ -141,6 +173,11 @@ export interface OnEndMentionEvent {
141
173
  indicator: string;
142
174
  }
143
175
 
176
+ export interface OnPasteEvent {
177
+ text: string;
178
+ markdown: string;
179
+ }
180
+
144
181
  export interface ContextMenuItemConfig {
145
182
  text: string;
146
183
  icon?: string;
@@ -180,6 +217,9 @@ export interface OnContextMenuItemPressEvent {
180
217
  strikethrough: { isActive: boolean };
181
218
  spoiler: { isActive: boolean };
182
219
  link: { isActive: boolean };
220
+ heading: { isActive: boolean; level: CodegenTypes.Int32 };
221
+ unorderedList: { isActive: boolean; depth: CodegenTypes.Int32 };
222
+ orderedList: { isActive: boolean; depth: CodegenTypes.Int32 };
183
223
  };
184
224
  }
185
225
 
@@ -226,6 +266,16 @@ export interface NativeProps extends ViewProps {
226
266
  * Auto-capitalization behavior.
227
267
  */
228
268
  autoCapitalize?: string;
269
+ /**
270
+ * When `true`, a paste is reported through `onPaste` instead of being
271
+ * inserted. Native reads the clipboard and leaves the buffer untouched — the
272
+ * JS handler decides what happens and must call the `resolvePaste` command
273
+ * exactly once, or the paste is dropped.
274
+ *
275
+ * macOS ignores this prop and always pastes inline.
276
+ * @default false
277
+ */
278
+ interceptPaste?: boolean;
229
279
  /**
230
280
  * Whether the input supports multiple lines.
231
281
  * @default true
@@ -303,6 +353,7 @@ export interface NativeProps extends ViewProps {
303
353
  onChangeText?: CodegenTypes.DirectEventHandler<OnChangeTextEvent>;
304
354
  onChangeMarkdown?: CodegenTypes.DirectEventHandler<OnChangeMarkdownEvent>;
305
355
  onChangeSelection?: CodegenTypes.DirectEventHandler<OnChangeSelectionEvent>;
356
+ onInputKeyPress?: CodegenTypes.DirectEventHandler<OnKeyPressEvent>;
306
357
  onChangeState?: CodegenTypes.DirectEventHandler<OnChangeStateEvent>;
307
358
  onInputFocus?: CodegenTypes.DirectEventHandler<TargetedEvent>;
308
359
  onInputBlur?: CodegenTypes.DirectEventHandler<TargetedEvent>;
@@ -312,6 +363,7 @@ export interface NativeProps extends ViewProps {
312
363
  onContextMenuItemPress?: CodegenTypes.DirectEventHandler<OnContextMenuItemPressEvent>;
313
364
  onLinkDetected?: CodegenTypes.DirectEventHandler<OnLinkDetected>;
314
365
  onMathPress?: CodegenTypes.DirectEventHandler<OnMathPressNativeEvent>;
366
+ onPaste?: CodegenTypes.DirectEventHandler<OnPasteEvent>;
315
367
  onStartMention?: CodegenTypes.DirectEventHandler<OnStartMentionEvent>;
316
368
  onChangeMention?: CodegenTypes.DirectEventHandler<OnChangeMentionEvent>;
317
369
  onEndMention?: CodegenTypes.DirectEventHandler<OnEndMentionEvent>;
@@ -336,12 +388,21 @@ interface NativeCommands {
336
388
  toggleUnderline: (viewRef: React.ElementRef<ComponentType>) => void;
337
389
  toggleStrikethrough: (viewRef: React.ElementRef<ComponentType>) => void;
338
390
  toggleSpoiler: (viewRef: React.ElementRef<ComponentType>) => void;
391
+ toggleHeading: (
392
+ viewRef: React.ElementRef<ComponentType>,
393
+ level: CodegenTypes.Int32
394
+ ) => void;
395
+ toggleUnorderedList: (viewRef: React.ElementRef<ComponentType>) => void;
396
+ toggleOrderedList: (viewRef: React.ElementRef<ComponentType>) => void;
397
+ indentList: (viewRef: React.ElementRef<ComponentType>) => void;
398
+ outdentList: (viewRef: React.ElementRef<ComponentType>) => void;
339
399
  setLink: (viewRef: React.ElementRef<ComponentType>, url: string) => void;
340
400
  insertLink: (
341
401
  viewRef: React.ElementRef<ComponentType>,
342
402
  text: string,
343
403
  url: string
344
404
  ) => void;
405
+ insertText: (viewRef: React.ElementRef<ComponentType>, text: string) => void;
345
406
  insertMention: (
346
407
  viewRef: React.ElementRef<ComponentType>,
347
408
  displayText: string,
@@ -368,6 +429,11 @@ interface NativeCommands {
368
429
  start: CodegenTypes.Int32
369
430
  ) => void;
370
431
  copyToClipboard: (viewRef: React.ElementRef<ComponentType>) => void;
432
+ resolvePaste: (
433
+ viewRef: React.ElementRef<ComponentType>,
434
+ text: string,
435
+ markdown: string
436
+ ) => void;
371
437
  requestMarkdown: (
372
438
  viewRef: React.ElementRef<ComponentType>,
373
439
  requestId: CodegenTypes.Int32
@@ -389,8 +455,14 @@ export const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({
389
455
  'toggleUnderline',
390
456
  'toggleStrikethrough',
391
457
  'toggleSpoiler',
458
+ 'toggleHeading',
459
+ 'toggleUnorderedList',
460
+ 'toggleOrderedList',
461
+ 'indentList',
462
+ 'outdentList',
392
463
  'setLink',
393
464
  'insertLink',
465
+ 'insertText',
394
466
  'insertMention',
395
467
  'startMention',
396
468
  'removeLink',
@@ -398,6 +470,7 @@ export const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({
398
470
  'updateMath',
399
471
  'removeMath',
400
472
  'copyToClipboard',
473
+ 'resolvePaste',
401
474
  'requestMarkdown',
402
475
  'requestCaretRect',
403
476
  ],
@@ -1,9 +1,12 @@
1
1
  import {
2
2
  codegenNativeComponent,
3
+ codegenNativeCommands,
3
4
  type ViewProps,
4
5
  type CodegenTypes,
5
6
  type ColorValue,
7
+ type HostComponent,
6
8
  } from 'react-native';
9
+ import type React from 'react';
7
10
 
8
11
  // All block styles extend this interface
9
12
  interface BaseBlockStyleInternal {
@@ -29,6 +32,8 @@ interface BlockquoteStyleInternal extends BaseBlockStyleInternal {
29
32
  borderWidth: CodegenTypes.Float;
30
33
  gapWidth: CodegenTypes.Float;
31
34
  backgroundColor: ColorValue;
35
+ borderRadius: CodegenTypes.Float;
36
+ padding: CodegenTypes.Float;
32
37
  }
33
38
 
34
39
  interface ListStyleInternal extends BaseBlockStyleInternal {
@@ -39,6 +44,24 @@ interface ListStyleInternal extends BaseBlockStyleInternal {
39
44
  markerFontWeight: string;
40
45
  gapWidth: CodegenTypes.Float;
41
46
  marginLeft: CodegenTypes.Float;
47
+ itemSpacing: CodegenTypes.Float;
48
+ }
49
+
50
+ interface CodeBlockSyntaxColorsInternal {
51
+ keyword: ColorValue;
52
+ operatorColor: ColorValue;
53
+ punctuation: ColorValue;
54
+ string: ColorValue;
55
+ number: ColorValue;
56
+ constant: ColorValue;
57
+ comment: ColorValue;
58
+ function: ColorValue;
59
+ type: ColorValue;
60
+ variable: ColorValue;
61
+ property: ColorValue;
62
+ tag: ColorValue;
63
+ attribute: ColorValue;
64
+ embedded: ColorValue;
42
65
  }
43
66
 
44
67
  interface CodeBlockStyleInternal extends BaseBlockStyleInternal {
@@ -47,6 +70,7 @@ interface CodeBlockStyleInternal extends BaseBlockStyleInternal {
47
70
  borderRadius: CodegenTypes.Float;
48
71
  borderWidth: CodegenTypes.Float;
49
72
  padding: CodegenTypes.Float;
73
+ syntaxColors: CodeBlockSyntaxColorsInternal;
50
74
  }
51
75
 
52
76
  interface LinkStyleInternal {
@@ -54,6 +78,11 @@ interface LinkStyleInternal {
54
78
  color: ColorValue;
55
79
  underline: boolean;
56
80
  backgroundColor: ColorValue;
81
+ borderRadius: CodegenTypes.Float;
82
+ paddingHorizontal: CodegenTypes.Float;
83
+ paddingVertical: CodegenTypes.Float;
84
+ borderColor: ColorValue;
85
+ borderWidth: CodegenTypes.Float;
57
86
  }
58
87
 
59
88
  // Mirrors EnrichedMarkdownNativeComponent.ts — kept in sync manually (codegen spec files must be self-contained).
@@ -62,6 +91,11 @@ interface LinkVariantEntryInternal {
62
91
  color: ColorValue;
63
92
  underline: boolean;
64
93
  backgroundColor: ColorValue;
94
+ borderRadius: CodegenTypes.Float;
95
+ paddingHorizontal: CodegenTypes.Float;
96
+ paddingVertical: CodegenTypes.Float;
97
+ borderColor: ColorValue;
98
+ borderWidth: CodegenTypes.Float;
65
99
  }
66
100
 
67
101
  interface StrongStyleInternal {
@@ -94,6 +128,10 @@ interface CodeStyleInternal {
94
128
 
95
129
  interface ImageStyleInternal {
96
130
  height: CodegenTypes.Float;
131
+ maxHeight: CodegenTypes.Float;
132
+ aspectRatio: CodegenTypes.Float;
133
+ // Nested struct fields cannot use WithDefault; default is applied in JS normalization.
134
+ resizeMode: string;
97
135
  borderRadius: CodegenTypes.Float;
98
136
  marginTop: CodegenTypes.Float;
99
137
  marginBottom: CodegenTypes.Float;
@@ -121,6 +159,8 @@ interface TableStyleInternal extends BaseBlockStyleInternal {
121
159
  borderRadius: CodegenTypes.Float;
122
160
  cellPaddingHorizontal: CodegenTypes.Float;
123
161
  cellPaddingVertical: CodegenTypes.Float;
162
+ horizontalOverflow: CodegenTypes.Float;
163
+ align: string;
124
164
  }
125
165
 
126
166
  interface TaskListStyleInternal {
@@ -142,12 +182,14 @@ interface MathStyleInternal {
142
182
  marginBottom: CodegenTypes.Float;
143
183
  textAlign: string;
144
184
  fontWeight: string;
185
+ glyphOverflow: CodegenTypes.Float;
145
186
  }
146
187
 
147
188
  interface InlineMathStyleInternal {
148
189
  color: ColorValue;
149
190
  paddingVertical: CodegenTypes.Float;
150
191
  fontWeight: string;
192
+ glyphOverflow: CodegenTypes.Float;
151
193
  }
152
194
 
153
195
  interface SpoilerParticlesStyleInternal {
@@ -219,17 +261,88 @@ export interface LinkLongPressEvent {
219
261
  url: string;
220
262
  }
221
263
 
264
+ /**
265
+ * `fragments` holds one entry per laid-out line of a link (a wrapping link
266
+ * yields several). Rects are in dp, relative to the native view's origin, and
267
+ * cover the drawn chip (glyphs + padding). Flattened rather than nested per
268
+ * link, and written inline, because codegen only accepts inline object
269
+ * literals as event array elements.
270
+ */
271
+ export interface LinkLayoutEvent {
272
+ fragments: {
273
+ linkIndex: CodegenTypes.Int32;
274
+ url: string;
275
+ text: string;
276
+ x: CodegenTypes.Double;
277
+ y: CodegenTypes.Double;
278
+ width: CodegenTypes.Double;
279
+ height: CodegenTypes.Double;
280
+ }[];
281
+ }
282
+
283
+ /**
284
+ * Current text selection, or a long-pressed table / math / code block while
285
+ * `contextMenuHidden` is on. `active: false` means the selection was cleared
286
+ * (every other field is then empty / zero). Rects are in dp / pt, relative to
287
+ * the native view's origin; rect objects are written inline because codegen
288
+ * only accepts inline object literals in event payloads.
289
+ */
290
+ export interface SelectionChangeEvent {
291
+ active: boolean;
292
+ source: string;
293
+ text: string;
294
+ markdown: string;
295
+ whole: boolean;
296
+ rect: {
297
+ x: CodegenTypes.Double;
298
+ y: CodegenTypes.Double;
299
+ width: CodegenTypes.Double;
300
+ height: CodegenTypes.Double;
301
+ };
302
+ startRect: {
303
+ x: CodegenTypes.Double;
304
+ y: CodegenTypes.Double;
305
+ width: CodegenTypes.Double;
306
+ height: CodegenTypes.Double;
307
+ };
308
+ endRect: {
309
+ x: CodegenTypes.Double;
310
+ y: CodegenTypes.Double;
311
+ width: CodegenTypes.Double;
312
+ height: CodegenTypes.Double;
313
+ };
314
+ adjusting: boolean;
315
+ }
316
+
222
317
  export interface TaskListItemPressEvent {
223
318
  index: CodegenTypes.Int32;
224
319
  checked: boolean;
225
320
  text: string;
226
321
  }
227
322
 
323
+ export interface CopyPressEvent {
324
+ code: string;
325
+ language: string;
326
+ }
327
+
328
+ export interface CopyRequestEvent {
329
+ // 'selection' | 'math' | 'table' | 'code'
330
+ source: string;
331
+ markdown: string;
332
+ text: string;
333
+ whole: boolean;
334
+ }
335
+
228
336
  export interface ContextMenuItemConfig {
229
337
  text: string;
230
338
  icon?: string;
231
339
  }
232
340
 
341
+ export interface ImageRequestHeaderInternal {
342
+ name: string;
343
+ value: string;
344
+ }
345
+
233
346
  export interface SelectionMenuConfig {
234
347
  copyAsMarkdown: boolean;
235
348
  copyImageUrl: boolean;
@@ -240,6 +353,16 @@ export interface SelectionMenuConfig {
240
353
  // Precomputed plural templates indexed by image count (0..100). Empty when no
241
354
  // pluralLabels are set; native then uses copyImageUrlLabel/copyImageUrlsLabel.
242
355
  copyImageUrlPluralTemplates: ReadonlyArray<string>;
356
+ // false removes the Copy item from the text and block menus.
357
+ copyEnabled: boolean;
358
+ // true: Copy writes Markdown (plain text) instead of rich text / raw block content.
359
+ copyFormatMarkdown: boolean;
360
+ // true: the text selection menu drops every system-provided item.
361
+ systemItemsNone: boolean;
362
+ // false hides the copy button in the code block header.
363
+ codeBlockCopyButton: boolean;
364
+ // true: the Copy item emits onCopyRequest instead of writing the clipboard.
365
+ interceptCopy: boolean;
243
366
  }
244
367
 
245
368
  export interface OnContextMenuItemPressEvent {
@@ -311,10 +434,16 @@ export interface Md4cFlagsInternal {
311
434
  * @default false
312
435
  */
313
436
  highlight: boolean;
437
+ /**
438
+ * Treat soft breaks (single newlines) as hard breaks (visible line breaks).
439
+ * @default false
440
+ */
441
+ hardSoftBreaks: boolean;
314
442
  }
315
443
 
316
444
  interface StreamingConfigInternal {
317
445
  tableMode: string;
446
+ codeBlockMode: string;
318
447
  }
319
448
 
320
449
  export interface NativeProps extends ViewProps {
@@ -340,11 +469,56 @@ export interface NativeProps extends ViewProps {
340
469
  * - Android: Handles long press gestures on links.
341
470
  */
342
471
  onLinkLongPress?: CodegenTypes.BubblingEventHandler<LinkLongPressEvent>;
472
+ /**
473
+ * When true, the view reports the laid-out rects of every link through
474
+ * `onLinkLayout` (after each render and whenever its size changes).
475
+ * Set by the JS wrapper only when `renderLinkDecoration` is provided.
476
+ * @default false
477
+ */
478
+ emitLinkLayout?: CodegenTypes.WithDefault<boolean, false>;
479
+ /**
480
+ * Fired with the rects of every link fragment while `emitLinkLayout` is on.
481
+ * Deduplicated: not re-fired when the payload is unchanged.
482
+ */
483
+ onLinkLayout?: CodegenTypes.DirectEventHandler<LinkLayoutEvent>;
484
+ /**
485
+ * When true, the view reports selection changes (and, with
486
+ * `contextMenuHidden`, block long-presses) through `onSelectionChange`.
487
+ * Set by the JS wrapper only when `onSelectionChange` is provided.
488
+ * @default false
489
+ */
490
+ emitSelectionChange?: CodegenTypes.WithDefault<boolean, false>;
491
+ /**
492
+ * Fired while `emitSelectionChange` is on: coalesced to one event per frame,
493
+ * deduplicated, and `active: false` once the selection is gone.
494
+ */
495
+ onSelectionChange?: CodegenTypes.DirectEventHandler<SelectionChangeEvent>;
343
496
  /**
344
497
  * Callback fired when a task list checkbox is tapped.
345
498
  * Receives the 0-based task index, current checked state, and the item's plain text.
346
499
  */
347
500
  onTaskListItemPress?: CodegenTypes.BubblingEventHandler<TaskListItemPressEvent>;
501
+ /**
502
+ * Controls whether tapping a task list checkbox toggles its checked state.
503
+ *
504
+ * When `false`, the tap is fully inert: no visual toggle and no
505
+ * `onTaskListItemPress` emission. Text selection and links are unaffected.
506
+ *
507
+ * @default true
508
+ */
509
+ enableTaskListItemToggle?: CodegenTypes.WithDefault<boolean, true>;
510
+ /**
511
+ * Callback fired when code is copied from a fenced code block's header copy
512
+ * button, its long-press context-menu "Copy" action, or the VoiceOver copy
513
+ * action. Receives the copied code and its language.
514
+ */
515
+ onCopyPress?: CodegenTypes.BubblingEventHandler<CopyPressEvent>;
516
+ /**
517
+ * Fired instead of writing the clipboard when the Copy item of the text
518
+ * selection menu or a table / math / code block menu is pressed while
519
+ * `selectionMenuConfig.interceptCopy` is set.
520
+ */
521
+ onCopyRequest?: CodegenTypes.BubblingEventHandler<CopyRequestEvent>;
348
522
  /**
349
523
  * Controls whether the system link preview is shown on long press (iOS only).
350
524
  *
@@ -358,6 +532,16 @@ export interface NativeProps extends ViewProps {
358
532
  * @default true
359
533
  */
360
534
  enableLinkPreview?: CodegenTypes.WithDefault<boolean, true>;
535
+ /**
536
+ * When `true`, long-pressing a link selects its label and shows the
537
+ * selection edit menu instead of the system link preview (iOS only).
538
+ * Takes precedence over `enableLinkPreview` and `onLinkLongPress`.
539
+ *
540
+ * Android: No-op.
541
+ *
542
+ * @default false
543
+ */
544
+ linkLongPressSelects?: CodegenTypes.WithDefault<boolean, false>;
361
545
  /**
362
546
  * - iOS: Controls text selection and link previews on long press.
363
547
  * - Android: Controls text selection.
@@ -424,10 +608,18 @@ export interface NativeProps extends ViewProps {
424
608
  * @default 'particles'
425
609
  */
426
610
  spoilerOverlay?: CodegenTypes.WithDefault<string, 'particles'>;
611
+ /**
612
+ * Hides the text selection context menu while keeping text selectable.
613
+ */
614
+ contextMenuHidden?: CodegenTypes.WithDefault<boolean, false>;
427
615
  /**
428
616
  * Custom items to show in the text selection context menu.
429
617
  */
430
618
  contextMenuItems?: ReadonlyArray<Readonly<ContextMenuItemConfig>>;
619
+ /**
620
+ * HTTP headers attached to remote image requests, as name/value pairs.
621
+ */
622
+ imageRequestHeaders?: ReadonlyArray<Readonly<ImageRequestHeaderInternal>>;
431
623
  /**
432
624
  * Built-in items to show in the text selection context menu.
433
625
  */
@@ -463,6 +655,17 @@ export interface NativeProps extends ViewProps {
463
655
  writingDirection?: CodegenTypes.WithDefault<string, 'first-strong'>;
464
656
  }
465
657
 
658
+ type ComponentType = HostComponent<NativeProps>;
659
+
660
+ interface NativeCommands {
661
+ /** Clears the text selection (and any active block) and fires `onSelectionChange` with `active: false`. */
662
+ clearSelection: (viewRef: React.ElementRef<ComponentType>) => void;
663
+ }
664
+
665
+ export const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({
666
+ supportedCommands: ['clearSelection'],
667
+ });
668
+
466
669
  export default codegenNativeComponent<NativeProps>('EnrichedMarkdownText', {
467
670
  interfaceOnly: true,
468
- });
671
+ }) as HostComponent<NativeProps>;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ // Single source of truth for default heading appearance, shared by the
4
+ // read-only renderer and the editable input so headings match across views.
5
+
6
+ /** Default font weight applied to every heading level. */
7
+ export const DEFAULT_HEADING_FONT_WEIGHT = 'bold';
8
+ export const HEADING_DEFAULTS = {
9
+ h1: {
10
+ fontSize: 30,
11
+ color: '#111827'
12
+ },
13
+ h2: {
14
+ fontSize: 24,
15
+ color: '#111827'
16
+ },
17
+ h3: {
18
+ fontSize: 20,
19
+ color: '#111827'
20
+ },
21
+ h4: {
22
+ fontSize: 18,
23
+ color: '#111827'
24
+ },
25
+ h5: {
26
+ fontSize: 16,
27
+ color: '#374151'
28
+ },
29
+ h6: {
30
+ fontSize: 14,
31
+ color: '#4B5563'
32
+ }
33
+ };
34
+ //# sourceMappingURL=headingDefaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DEFAULT_HEADING_FONT_WEIGHT","HEADING_DEFAULTS","h1","fontSize","color","h2","h3","h4","h5","h6"],"sourceRoot":"../../src","sources":["headingDefaults.ts"],"mappings":";;AAAA;AACA;;AASA;AACA,OAAO,MAAMA,2BAA2B,GAAG,MAAM;AAEjD,OAAO,MAAMC,gBAAyD,GAAG;EACvEC,EAAE,EAAE;IAAEC,QAAQ,EAAE,EAAE;IAAEC,KAAK,EAAE;EAAU,CAAC;EACtCC,EAAE,EAAE;IAAEF,QAAQ,EAAE,EAAE;IAAEC,KAAK,EAAE;EAAU,CAAC;EACtCE,EAAE,EAAE;IAAEH,QAAQ,EAAE,EAAE;IAAEC,KAAK,EAAE;EAAU,CAAC;EACtCG,EAAE,EAAE;IAAEJ,QAAQ,EAAE,EAAE;IAAEC,KAAK,EAAE;EAAU,CAAC;EACtCI,EAAE,EAAE;IAAEL,QAAQ,EAAE,EAAE;IAAEC,KAAK,EAAE;EAAU,CAAC;EACtCK,EAAE,EAAE;IAAEN,QAAQ,EAAE,EAAE;IAAEC,KAAK,EAAE;EAAU;AACvC,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["default","EnrichedMarkdownText","DEFAULT_ACCESSIBILITY_LABELS","resolveAccessibilityLabels","EnrichedMarkdownTextInput"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,OAAO,IAAIC,oBAAoB,QAAQ,kCAA+B;AAmB/E,SACEC,4BAA4B,EAC5BC,0BAA0B,QACrB,iCAA8B;AAErC,SAASC,yBAAyB,QAAQ,gCAA6B","ignoreList":[]}
1
+ {"version":3,"names":["default","EnrichedMarkdownText","DEFAULT_ACCESSIBILITY_LABELS","resolveAccessibilityLabels","EnrichedMarkdownTextInput"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,OAAO,IAAIC,oBAAoB,QAAQ,kCAA+B;AA2B/E,SACEC,4BAA4B,EAC5BC,0BAA0B,QACrB,iCAA8B;AAErC,SAASC,yBAAyB,QAAQ,gCAA6B","ignoreList":[]}