@mathers101/react-native-render-rich-text 0.1.10 → 0.1.14

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 (327) hide show
  1. package/LICENSE +20 -20
  2. package/README.md +140 -140
  3. package/ReactNativeRenderRichText.podspec +23 -23
  4. package/android/build.gradle +86 -86
  5. package/android/consumer-rules.pro +3 -3
  6. package/android/src/main/AndroidManifest.xml +2 -2
  7. package/android/src/main/java/com/renderrichtext/EnrichedTiptapTextLayoutManager.kt +24 -24
  8. package/android/src/main/java/com/renderrichtext/EnrichedTiptapTextPackage.kt +13 -13
  9. package/android/src/main/java/com/renderrichtext/MeasurementStore.kt +644 -644
  10. package/android/src/main/java/com/renderrichtext/accessibility/AccessibilityLabels.kt +17 -17
  11. package/android/src/main/java/com/renderrichtext/accessibility/AccessibleTiptapTextView.kt +112 -112
  12. package/android/src/main/java/com/renderrichtext/accessibility/TiptapAccessibilityHelper.kt +576 -576
  13. package/android/src/main/java/com/renderrichtext/events/CodeBlockPressEvent.kt +24 -24
  14. package/android/src/main/java/com/renderrichtext/events/ContextMenuItemPressEvent.kt +28 -28
  15. package/android/src/main/java/com/renderrichtext/events/CopyPressEvent.kt +24 -24
  16. package/android/src/main/java/com/renderrichtext/events/ImagePressEvent.kt +25 -25
  17. package/android/src/main/java/com/renderrichtext/events/LatexErrorEvent.kt +29 -29
  18. package/android/src/main/java/com/renderrichtext/events/LinkLongPressEvent.kt +23 -23
  19. package/android/src/main/java/com/renderrichtext/events/LinkPressEvent.kt +23 -23
  20. package/android/src/main/java/com/renderrichtext/events/MentionLongPressEvent.kt +25 -25
  21. package/android/src/main/java/com/renderrichtext/events/MentionPressEvent.kt +25 -25
  22. package/android/src/main/java/com/renderrichtext/events/TaskListItemPressEvent.kt +26 -26
  23. package/android/src/main/java/com/renderrichtext/math/LatexErrorReporter.kt +9 -9
  24. package/android/src/main/java/com/renderrichtext/parser/Parser.kt +59 -59
  25. package/android/src/main/java/com/renderrichtext/parser/TextLinkMatching.kt +35 -35
  26. package/android/src/main/java/com/renderrichtext/renderer/BaselineShiftRenderer.kt +45 -45
  27. package/android/src/main/java/com/renderrichtext/renderer/BlankLineRenderer.kt +39 -39
  28. package/android/src/main/java/com/renderrichtext/renderer/BlockquoteRenderer.kt +243 -243
  29. package/android/src/main/java/com/renderrichtext/renderer/BlockquoteTextRenderer.kt +56 -56
  30. package/android/src/main/java/com/renderrichtext/renderer/CodeBlockRenderer.kt +135 -135
  31. package/android/src/main/java/com/renderrichtext/renderer/CodeRenderer.kt +37 -37
  32. package/android/src/main/java/com/renderrichtext/renderer/EmphasisRenderer.kt +28 -28
  33. package/android/src/main/java/com/renderrichtext/renderer/HeadingRenderer.kt +81 -81
  34. package/android/src/main/java/com/renderrichtext/renderer/HighlightRenderer.kt +26 -26
  35. package/android/src/main/java/com/renderrichtext/renderer/LineBreakRenderer.kt +17 -17
  36. package/android/src/main/java/com/renderrichtext/renderer/LinkRenderer.kt +90 -90
  37. package/android/src/main/java/com/renderrichtext/renderer/ListContextManager.kt +109 -109
  38. package/android/src/main/java/com/renderrichtext/renderer/ListItemRenderer.kt +211 -211
  39. package/android/src/main/java/com/renderrichtext/renderer/ListRenderer.kt +133 -133
  40. package/android/src/main/java/com/renderrichtext/renderer/MentionRenderer.kt +85 -85
  41. package/android/src/main/java/com/renderrichtext/renderer/ParagraphRenderer.kt +91 -91
  42. package/android/src/main/java/com/renderrichtext/renderer/Renderer.kt +148 -148
  43. package/android/src/main/java/com/renderrichtext/renderer/SoftBreakRenderer.kt +17 -17
  44. package/android/src/main/java/com/renderrichtext/renderer/SpanStyleCache.kt +143 -143
  45. package/android/src/main/java/com/renderrichtext/renderer/StrikethroughRenderer.kt +28 -28
  46. package/android/src/main/java/com/renderrichtext/renderer/StrongRenderer.kt +28 -28
  47. package/android/src/main/java/com/renderrichtext/renderer/TextRenderer.kt +31 -31
  48. package/android/src/main/java/com/renderrichtext/renderer/ThematicBreakRenderer.kt +46 -46
  49. package/android/src/main/java/com/renderrichtext/renderer/UnderlineRenderer.kt +28 -28
  50. package/android/src/main/java/com/renderrichtext/spans/BaseListSpan.kt +164 -164
  51. package/android/src/main/java/com/renderrichtext/spans/BaselineShiftSpan.kt +27 -27
  52. package/android/src/main/java/com/renderrichtext/spans/BlockquoteSpan.kt +302 -302
  53. package/android/src/main/java/com/renderrichtext/spans/CodeBackgroundSpan.kt +205 -205
  54. package/android/src/main/java/com/renderrichtext/spans/CodeBlockSpan.kt +216 -216
  55. package/android/src/main/java/com/renderrichtext/spans/CodeSpan.kt +32 -32
  56. package/android/src/main/java/com/renderrichtext/spans/EmphasisSpan.kt +42 -42
  57. package/android/src/main/java/com/renderrichtext/spans/FadeInSpan.kt +29 -29
  58. package/android/src/main/java/com/renderrichtext/spans/HeadingSpan.kt +38 -38
  59. package/android/src/main/java/com/renderrichtext/spans/HighlightSpan.kt +80 -80
  60. package/android/src/main/java/com/renderrichtext/spans/ImageSpan.kt +481 -481
  61. package/android/src/main/java/com/renderrichtext/spans/InlineBackgroundGeometry.kt +42 -42
  62. package/android/src/main/java/com/renderrichtext/spans/LineHeightSpan.kt +39 -39
  63. package/android/src/main/java/com/renderrichtext/spans/LinkPillIconCache.kt +154 -154
  64. package/android/src/main/java/com/renderrichtext/spans/LinkPillSpan.kt +381 -381
  65. package/android/src/main/java/com/renderrichtext/spans/LinkSpan.kt +68 -68
  66. package/android/src/main/java/com/renderrichtext/spans/ListItemSpacingSpan.kt +33 -33
  67. package/android/src/main/java/com/renderrichtext/spans/ListMarkerAnchorSpan.kt +38 -38
  68. package/android/src/main/java/com/renderrichtext/spans/MarginBottomSpan.kt +76 -76
  69. package/android/src/main/java/com/renderrichtext/spans/MentionChipSpan.kt +132 -132
  70. package/android/src/main/java/com/renderrichtext/spans/MentionSpan.kt +46 -46
  71. package/android/src/main/java/com/renderrichtext/spans/OrderedListSpan.kt +127 -127
  72. package/android/src/main/java/com/renderrichtext/spans/SpoilerSpan.kt +33 -33
  73. package/android/src/main/java/com/renderrichtext/spans/StrikethroughSpan.kt +12 -12
  74. package/android/src/main/java/com/renderrichtext/spans/StrongSpan.kt +39 -39
  75. package/android/src/main/java/com/renderrichtext/spans/TaskListSpan.kt +143 -143
  76. package/android/src/main/java/com/renderrichtext/spans/TextSpan.kt +26 -26
  77. package/android/src/main/java/com/renderrichtext/spans/ThematicBreakSpan.kt +69 -69
  78. package/android/src/main/java/com/renderrichtext/spans/UnorderedListSpan.kt +96 -96
  79. package/android/src/main/java/com/renderrichtext/spoiler/SpoilerStubs.kt +46 -46
  80. package/android/src/main/java/com/renderrichtext/styles/BaseBlockStyle.kt +11 -11
  81. package/android/src/main/java/com/renderrichtext/styles/BlockquoteStyle.kt +83 -83
  82. package/android/src/main/java/com/renderrichtext/styles/CodeBlockStyle.kt +80 -80
  83. package/android/src/main/java/com/renderrichtext/styles/CodeStyle.kt +26 -26
  84. package/android/src/main/java/com/renderrichtext/styles/EmphasisStyle.kt +21 -21
  85. package/android/src/main/java/com/renderrichtext/styles/FactoidStyle.kt +21 -21
  86. package/android/src/main/java/com/renderrichtext/styles/HeadingStyle.kt +33 -33
  87. package/android/src/main/java/com/renderrichtext/styles/HighlightStyle.kt +19 -19
  88. package/android/src/main/java/com/renderrichtext/styles/ImageStyle.kt +29 -29
  89. package/android/src/main/java/com/renderrichtext/styles/InlineImageStyle.kt +17 -17
  90. package/android/src/main/java/com/renderrichtext/styles/InlineMathStyle.kt +17 -17
  91. package/android/src/main/java/com/renderrichtext/styles/LinkPillContent.kt +36 -36
  92. package/android/src/main/java/com/renderrichtext/styles/LinkPillStyle.kt +44 -44
  93. package/android/src/main/java/com/renderrichtext/styles/LinkStyle.kt +23 -23
  94. package/android/src/main/java/com/renderrichtext/styles/LinkVariantEntry.kt +34 -34
  95. package/android/src/main/java/com/renderrichtext/styles/ListStyle.kt +65 -65
  96. package/android/src/main/java/com/renderrichtext/styles/MathStyle.kt +29 -29
  97. package/android/src/main/java/com/renderrichtext/styles/MentionStyle.kt +19 -19
  98. package/android/src/main/java/com/renderrichtext/styles/ParagraphStyle.kt +33 -33
  99. package/android/src/main/java/com/renderrichtext/styles/SpoilerStyle.kt +27 -27
  100. package/android/src/main/java/com/renderrichtext/styles/StrikethroughStyle.kt +17 -17
  101. package/android/src/main/java/com/renderrichtext/styles/StrongStyle.kt +21 -21
  102. package/android/src/main/java/com/renderrichtext/styles/StyleConfig.kt +411 -411
  103. package/android/src/main/java/com/renderrichtext/styles/StyleParser.kt +92 -92
  104. package/android/src/main/java/com/renderrichtext/styles/SubscriptStyle.kt +16 -16
  105. package/android/src/main/java/com/renderrichtext/styles/SuperscriptStyle.kt +16 -16
  106. package/android/src/main/java/com/renderrichtext/styles/TableStyle.kt +75 -75
  107. package/android/src/main/java/com/renderrichtext/styles/TaskListStyle.kt +29 -29
  108. package/android/src/main/java/com/renderrichtext/styles/TextAlignment.kt +32 -32
  109. package/android/src/main/java/com/renderrichtext/styles/ThematicBreakStyle.kt +23 -23
  110. package/android/src/main/java/com/renderrichtext/styles/UnderlineStyle.kt +17 -17
  111. package/android/src/main/java/com/renderrichtext/styles/VideoStyle.kt +31 -31
  112. package/android/src/main/java/com/renderrichtext/utils/common/BorderStyleUtils.kt +86 -86
  113. package/android/src/main/java/com/renderrichtext/utils/common/BreakStrategyUtils.kt +32 -32
  114. package/android/src/main/java/com/renderrichtext/utils/common/CodeBlockHighlighter.kt +36 -36
  115. package/android/src/main/java/com/renderrichtext/utils/common/CodeBlockNode.kt +42 -42
  116. package/android/src/main/java/com/renderrichtext/utils/common/EllipsizeUtils.kt +27 -27
  117. package/android/src/main/java/com/renderrichtext/utils/common/EnrichedTiptapAncestorUtils.kt +10 -10
  118. package/android/src/main/java/com/renderrichtext/utils/common/FeatureFlags.kt +9 -9
  119. package/android/src/main/java/com/renderrichtext/utils/common/LinkRecognitionProps.kt +31 -31
  120. package/android/src/main/java/com/renderrichtext/utils/common/LinkRegexConfig.kt +56 -56
  121. package/android/src/main/java/com/renderrichtext/utils/common/MotionPreferences.kt +18 -18
  122. package/android/src/main/java/com/renderrichtext/utils/common/ReadableMapExtensions.kt +28 -28
  123. package/android/src/main/java/com/renderrichtext/utils/common/layout/RTLUtils.kt +6 -6
  124. package/android/src/main/java/com/renderrichtext/utils/common/serialization/TiptapASTSerializer.kt +368 -368
  125. package/android/src/main/java/com/renderrichtext/utils/text/ImageCache.kt +88 -88
  126. package/android/src/main/java/com/renderrichtext/utils/text/ImageDownloader.kt +203 -203
  127. package/android/src/main/java/com/renderrichtext/utils/text/LocalImageLoader.kt +167 -167
  128. package/android/src/main/java/com/renderrichtext/utils/text/TailFadeInAnimator.kt +84 -84
  129. package/android/src/main/java/com/renderrichtext/utils/text/conversion/HTMLGenerator.kt +1105 -1105
  130. package/android/src/main/java/com/renderrichtext/utils/text/conversion/TiptapExtractor.kt +423 -423
  131. package/android/src/main/java/com/renderrichtext/utils/text/extensions/ParagraphUtils.kt +9 -9
  132. package/android/src/main/java/com/renderrichtext/utils/text/extensions/SpannableExtensions.kt +9 -9
  133. package/android/src/main/java/com/renderrichtext/utils/text/extensions/TextPaintExtensions.kt +76 -76
  134. package/android/src/main/java/com/renderrichtext/utils/text/interaction/CheckboxTouchHelper.kt +61 -61
  135. package/android/src/main/java/com/renderrichtext/utils/text/interaction/TaskListTapUtils.kt +286 -286
  136. package/android/src/main/java/com/renderrichtext/utils/text/span/ApplyLineHeight.kt +39 -39
  137. package/android/src/main/java/com/renderrichtext/utils/text/span/BlockSpacing.kt +142 -142
  138. package/android/src/main/java/com/renderrichtext/utils/text/span/SpanFlags.kt +43 -43
  139. package/android/src/main/java/com/renderrichtext/utils/text/span/WidthAwareSpans.kt +30 -30
  140. package/android/src/main/java/com/renderrichtext/utils/text/view/CodeBlockPressHost.kt +15 -15
  141. package/android/src/main/java/com/renderrichtext/utils/text/view/ImagePressHost.kt +19 -19
  142. package/android/src/main/java/com/renderrichtext/utils/text/view/SelectionActionMode.kt +235 -235
  143. package/android/src/main/java/com/renderrichtext/utils/text/view/TextSelectionColors.kt +48 -48
  144. package/android/src/main/java/com/renderrichtext/utils/text/view/TextViewSetup.kt +119 -119
  145. package/android/src/main/java/com/renderrichtext/views/ContextMenuPopup.kt +217 -217
  146. package/android/src/main/java/com/renderrichtext/views/CopyGlyph.kt +101 -101
  147. package/android/src/main/java/com/renderrichtext/views/WrapGlyph.kt +40 -40
  148. package/android/src/main/jni/CMakeLists.txt +52 -52
  149. package/android/src/main/jni/react/renderer/components/RichTextSpec/ComponentDescriptors.h +30 -30
  150. package/android/src/main/jni/react/renderer/components/RichTextSpec/TiptapTextComponentDescriptor.h +29 -29
  151. package/android/src/main/jni/react/renderer/components/RichTextSpec/TiptapTextMeasurementManager.cpp +45 -45
  152. package/android/src/main/jni/react/renderer/components/RichTextSpec/TiptapTextMeasurementManager.h +21 -21
  153. package/android/src/main/jni/react/renderer/components/RichTextSpec/TiptapTextShadowNode.cpp +38 -38
  154. package/android/src/main/jni/react/renderer/components/RichTextSpec/TiptapTextShadowNode.h +53 -53
  155. package/android/src/main/jni/react/renderer/components/RichTextSpec/TiptapTextState.cpp +9 -9
  156. package/android/src/main/jni/react/renderer/components/RichTextSpec/TiptapTextState.h +24 -24
  157. package/android/src/main/jni/react/renderer/components/RichTextSpec/conversions.h +40 -40
  158. package/cpp/parser/TiptapParser.hpp +13 -13
  159. package/cpp/vendor/nlohmann/json.hpp +24765 -24765
  160. package/ios/EnrichedTiptapText.h +27 -27
  161. package/ios/attachments/ENRMImageAttachment.h +51 -51
  162. package/ios/attachments/ENRMImageAttachment.m +398 -398
  163. package/ios/attachments/ENRMLinkPillAttachment.h +47 -47
  164. package/ios/attachments/ENRMLinkPillAttachment.m +324 -324
  165. package/ios/attachments/ENRMLinkPillIconCache.h +28 -28
  166. package/ios/attachments/ENRMLinkPillIconCache.m +181 -181
  167. package/ios/attachments/ENRMLinkPillText.h +27 -27
  168. package/ios/attachments/ENRMLinkPillText.m +118 -118
  169. package/ios/attachments/ENRMMathInlineAttachment.h +7 -7
  170. package/ios/attachments/ENRMMathInlineAttachment.m +4 -4
  171. package/ios/attachments/ThematicBreakAttachment.h +15 -15
  172. package/ios/attachments/ThematicBreakAttachment.m +33 -33
  173. package/ios/internals/ENRMViewFreeMeasurement.h +208 -208
  174. package/ios/internals/EnrichedTiptapTextComponentDescriptor.h +19 -19
  175. package/ios/internals/EnrichedTiptapTextShadowNode.h +43 -43
  176. package/ios/internals/EnrichedTiptapTextShadowNode.mm +69 -69
  177. package/ios/internals/EnrichedTiptapTextState.h +24 -24
  178. package/ios/internals/MeasurementCache.h +308 -308
  179. package/ios/internals/ShadowMeasurementUtils.h +145 -145
  180. package/ios/parser/ENRMTextLinkAttributes.h +7 -7
  181. package/ios/parser/ENRMTiptapParser.h +33 -33
  182. package/ios/parser/ENRMTiptapParser.mm +73 -73
  183. package/ios/parser/TiptapASTNode.m +52 -52
  184. package/ios/renderer/AttributedRenderer.h +23 -23
  185. package/ios/renderer/AttributedRenderer.m +229 -229
  186. package/ios/renderer/BaseRenderer.h +33 -33
  187. package/ios/renderer/BaseRenderer.m +46 -46
  188. package/ios/renderer/BaselineShiftTextAttributes.h +10 -10
  189. package/ios/renderer/BaselineShiftTextAttributes.m +26 -26
  190. package/ios/renderer/BlankLineRenderer.h +4 -4
  191. package/ios/renderer/BlankLineRenderer.m +51 -51
  192. package/ios/renderer/BlockquoteRenderer.h +6 -6
  193. package/ios/renderer/BlockquoteRenderer.m +258 -258
  194. package/ios/renderer/CodeBlockRenderer.h +9 -9
  195. package/ios/renderer/CodeBlockRenderer.m +99 -99
  196. package/ios/renderer/CodeRenderer.h +9 -9
  197. package/ios/renderer/CodeRenderer.m +69 -69
  198. package/ios/renderer/ENRMBlockquoteTextRenderer.h +25 -25
  199. package/ios/renderer/ENRMBlockquoteTextRenderer.m +48 -48
  200. package/ios/renderer/EmphasisRenderer.h +5 -5
  201. package/ios/renderer/EmphasisRenderer.m +99 -99
  202. package/ios/renderer/HeadingRenderer.h +6 -6
  203. package/ios/renderer/HeadingRenderer.m +102 -102
  204. package/ios/renderer/HighlightRenderer.h +7 -7
  205. package/ios/renderer/HighlightRenderer.m +33 -33
  206. package/ios/renderer/LinkRenderer.h +6 -6
  207. package/ios/renderer/LinkRenderer.m +157 -157
  208. package/ios/renderer/ListItemRenderer.h +24 -24
  209. package/ios/renderer/ListItemRenderer.m +283 -283
  210. package/ios/renderer/ListRenderer.h +13 -13
  211. package/ios/renderer/ListRenderer.m +126 -126
  212. package/ios/renderer/MentionRenderer.h +9 -9
  213. package/ios/renderer/MentionRenderer.m +96 -96
  214. package/ios/renderer/NodeRenderer.h +8 -8
  215. package/ios/renderer/ParagraphRenderer.h +6 -6
  216. package/ios/renderer/ParagraphRenderer.m +85 -85
  217. package/ios/renderer/RenderContext.h +145 -145
  218. package/ios/renderer/RenderContext.m +402 -402
  219. package/ios/renderer/RendererFactory.h +12 -12
  220. package/ios/renderer/StrikethroughRenderer.h +5 -5
  221. package/ios/renderer/StrikethroughRenderer.m +30 -30
  222. package/ios/renderer/StrongRenderer.h +5 -5
  223. package/ios/renderer/StrongRenderer.m +87 -87
  224. package/ios/renderer/TextRenderer.h +6 -6
  225. package/ios/renderer/TextRenderer.m +18 -18
  226. package/ios/renderer/ThematicBreakRenderer.h +4 -4
  227. package/ios/renderer/ThematicBreakRenderer.m +41 -41
  228. package/ios/renderer/UnderlineRenderer.h +4 -4
  229. package/ios/renderer/UnderlineRenderer.m +41 -41
  230. package/ios/styles/ENRMFontSlot.h +12 -12
  231. package/ios/styles/ENRMFontSlot.m +24 -24
  232. package/ios/styles/StyleConfig.h +488 -488
  233. package/ios/styles/StyleConfig.mm +2820 -2820
  234. package/ios/utils/AccessibilityInfo.h +35 -35
  235. package/ios/utils/AccessibilityInfo.m +24 -24
  236. package/ios/utils/BlockquoteBorder.h +26 -26
  237. package/ios/utils/BlockquoteBorder.m +294 -294
  238. package/ios/utils/CodeBackground.h +19 -19
  239. package/ios/utils/CodeBackground.m +196 -196
  240. package/ios/utils/CodeBlockBackground.h +17 -17
  241. package/ios/utils/CodeBlockBackground.m +102 -102
  242. package/ios/utils/ContextMenuUtils.h +76 -76
  243. package/ios/utils/ContextMenuUtils.mm +75 -75
  244. package/ios/utils/ENRMAccessibilityLabels.h +40 -40
  245. package/ios/utils/ENRMAccessibilityLabels.m +5 -5
  246. package/ios/utils/ENRMAsyncRenderCoordinator.h +24 -24
  247. package/ios/utils/ENRMAsyncRenderCoordinator.m +37 -37
  248. package/ios/utils/ENRMAtomicSize.h +65 -65
  249. package/ios/utils/ENRMCodeBlockContent.h +37 -37
  250. package/ios/utils/ENRMCodeBlockContent.mm +89 -89
  251. package/ios/utils/ENRMFeatureFlags.h +25 -25
  252. package/ios/utils/ENRMImageDownloader.h +30 -30
  253. package/ios/utils/ENRMImageDownloader.m +168 -168
  254. package/ios/utils/ENRMLatexErrorCoordinator.h +27 -27
  255. package/ios/utils/ENRMLatexErrorCoordinator.mm +75 -75
  256. package/ios/utils/ENRMLatexErrorReporting.h +13 -13
  257. package/ios/utils/ENRMLinkContextMenus.h +93 -93
  258. package/ios/utils/ENRMLinkContextMenus.m +178 -178
  259. package/ios/utils/ENRMLinkRegexConfig.h +30 -30
  260. package/ios/utils/ENRMLinkRegexConfig.mm +104 -104
  261. package/ios/utils/ENRMLinkRegexProps.h +23 -23
  262. package/ios/utils/ENRMLocalImageLoader.h +35 -35
  263. package/ios/utils/ENRMLocalImageLoader.m +111 -111
  264. package/ios/utils/ENRMMenuAction.h +27 -27
  265. package/ios/utils/ENRMMenuAction.m +33 -33
  266. package/ios/utils/ENRMSpoilerOverlayManager.h +15 -15
  267. package/ios/utils/ENRMSpoilerOverlayManager.m +19 -19
  268. package/ios/utils/ENRMSpoilerTapUtils.h +6 -6
  269. package/ios/utils/ENRMSpoilerTapUtils.m +11 -11
  270. package/ios/utils/ENRMTailFadeInAnimator.h +16 -16
  271. package/ios/utils/ENRMTailFadeInAnimator.m +161 -161
  272. package/ios/utils/ENRMTextHitTest.h +23 -23
  273. package/ios/utils/ENRMTextHitTest.m +20 -20
  274. package/ios/utils/ENRMTextInteractionUtils.h +20 -20
  275. package/ios/utils/ENRMTextInteractionUtils.m +15 -15
  276. package/ios/utils/ENRMTextRenderer.h +38 -38
  277. package/ios/utils/ENRMTextRenderer.m +54 -54
  278. package/ios/utils/ENRMTextViewSetup.h +132 -132
  279. package/ios/utils/ENRMUIKit.h +429 -429
  280. package/ios/utils/EditMenuUtils.h +105 -105
  281. package/ios/utils/EditMenuUtils.m +143 -143
  282. package/ios/utils/FontScaleObserver.h +10 -10
  283. package/ios/utils/FontScaleObserver.m +55 -55
  284. package/ios/utils/FontUtils.h +31 -31
  285. package/ios/utils/FontUtils.m +63 -63
  286. package/ios/utils/HTMLGenerator.h +25 -25
  287. package/ios/utils/HTMLGenerator.m +1041 -1041
  288. package/ios/utils/HeightUpdateUtils.h +25 -25
  289. package/ios/utils/ImageRequestHeaderUtils.h +35 -35
  290. package/ios/utils/LastElementUtils.h +97 -97
  291. package/ios/utils/LinkContextMenuUtils.h +55 -55
  292. package/ios/utils/LinkPillContentUtils.h +46 -46
  293. package/ios/utils/ListMarkerDrawer.h +15 -15
  294. package/ios/utils/ListMarkerDrawer.m +239 -239
  295. package/ios/utils/MentionBackground.h +26 -26
  296. package/ios/utils/MentionBackground.m +86 -86
  297. package/ios/utils/ParagraphStyleUtils.h +87 -87
  298. package/ios/utils/ParagraphStyleUtils.m +484 -484
  299. package/ios/utils/PasteboardUtils.h +48 -48
  300. package/ios/utils/PasteboardUtils.m +166 -166
  301. package/ios/utils/RTFExportUtils.h +24 -24
  302. package/ios/utils/RTFExportUtils.m +299 -299
  303. package/ios/utils/SelectionColorUtils.h +14 -14
  304. package/ios/utils/StylePropsUtils.h +1340 -1340
  305. package/ios/utils/TaskListTapUtils.h +6 -6
  306. package/ios/utils/TaskListTapUtils.m +14 -14
  307. package/ios/utils/TextViewLayoutManager.h +14 -14
  308. package/ios/utils/TiptapAccessibilityElementBuilder.h +43 -43
  309. package/ios/utils/TiptapAccessibilityElementBuilder.m +432 -432
  310. package/ios/utils/TiptapExtractor.h +17 -17
  311. package/ios/utils/TiptapExtractor.m +367 -367
  312. package/ios/views/ENRMTiptapTextView.h +25 -25
  313. package/ios/views/ENRMTiptapTextView.m +247 -247
  314. package/package.json +65 -70
  315. package/react-native.config.js +10 -10
  316. package/src/admonitionDefaults.ts +58 -58
  317. package/src/darkModeTextStyle.ts +99 -99
  318. package/src/headingDefaults.ts +21 -21
  319. package/src/index.tsx +4 -4
  320. package/src/linkVariantUtils.ts +120 -120
  321. package/src/normalizeTiptapStyle.ts +397 -397
  322. package/src/rn-globals.d.ts +1 -1
  323. package/src/styleUtils.ts +107 -107
  324. package/src/types/TiptapStyle.ts +532 -532
  325. package/src/types/TiptapStyleInternal.ts +299 -299
  326. package/src/types/linkPill.ts +9 -9
  327. package/src/utils/isDev.ts +4 -4
package/LICENSE CHANGED
@@ -1,20 +1,20 @@
1
- MIT License
2
-
3
- Copyright (c) 2025 Software Mansion
4
- Permission is hereby granted, free of charge, to any person obtaining a copy
5
- of this software and associated documentation files (the "Software"), to deal
6
- in the Software without restriction, including without limitation the rights
7
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
- copies of the Software, and to permit persons to whom the Software is
9
- furnished to do so, subject to the following conditions:
10
-
11
- The above copyright notice and this permission notice shall be included in all
12
- copies or substantial portions of the Software.
13
-
14
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Software Mansion
4
+ Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ of this software and associated documentation files (the "Software"), to deal
6
+ in the Software without restriction, including without limitation the rights
7
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the Software is
9
+ furnished to do so, subject to the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be included in all
12
+ copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
+ SOFTWARE.
package/README.md CHANGED
@@ -1,140 +1,140 @@
1
- # react-native-render-rich-text
2
-
3
- A React Native Fabric library that renders a [Tiptap](https://tiptap.dev/) document on iOS and Android. The public component is `RichText`. Its `document` prop is a Tiptap JSON tree, or that tree already encoded as a string.
4
-
5
- There is no web renderer and no text-input component. New Architecture is required (React Native 0.88).
6
-
7
- The display renderers are adapted from Software Mansion. That copyright stays on the copied sources. See `LICENSE`.
8
-
9
- ## Install
10
-
11
- ```sh
12
- npm install @mathers101/react-native-render-rich-text
13
- ```
14
-
15
- ## What it draws
16
-
17
- Nodes: `doc`, `paragraph`, `heading`, `bulletList`, `orderedList`, `listItem`, `blockquote`, `codeBlock`, `horizontalRule`, `hardBreak`, `factoid`, and `mention`. Marks: `bold` (or `strong`), `italic` (or `em`), `strike` (or `strikethrough`), `code`, `underline`, `highlight`, and `link`. A link's URL is `marks[].attrs.href`. A factoid is an inline node; its `id` is what `onFactoidPress` receives, and a factoid that contains a link emits `onLinkPress` instead. A mention is an inline atom with `id` and `label`. It draws as `@label` (or `@id` when `label` is blank). `onMentionPress` and `onMentionLongPress` receive both attributes.
18
-
19
- Unknown nodes, including tables, images, and task lists, are skipped with their children so the rest of the document still renders. A code block keeps its `language` attribute. Syntax colors apply only when the optional highlighting module is compiled in; otherwise the block is plain monospace.
20
-
21
- ## Use it
22
-
23
- ```tsx
24
- import { RichText } from "@mathers101/react-native-render-rich-text";
25
-
26
- <RichText
27
- document={document}
28
- onLinkPress={(url) => {
29
- // url comes from the link mark's href
30
- }}
31
- onFactoidPress={(factoidId) => {
32
- // factoidId comes from the factoid node's id
33
- }}
34
- onMentionPress={(mention) => {
35
- // mention.id and mention.label come from the mention node
36
- }}
37
- onMentionLongPress={(mention) => {
38
- // same payload as onMentionPress
39
- }}
40
- />;
41
- ```
42
-
43
- `document` is either a `TiptapNode` or a JSON string. `selectable` defaults to true. `allowFontScaling` defaults to true, and `maxFontSizeMultiplier` caps that scale. `numberOfLines` and `ellipsizeMode` (`'head' | 'middle' | 'tail' | 'clip'`) truncate the view. `style` is a normal React Native view style for the container, not the text.
44
-
45
- ## Styling
46
-
47
- Pass a partial `TiptapStyle` as `textStyle`. Omitted keys keep the built-in defaults. JavaScript fills in that complete style before it crosses the bridge; native does not invent colors of its own.
48
-
49
- ```tsx
50
- <RichText
51
- document={document}
52
- textStyle={{
53
- paragraph: { color: "#1c1917", fontSize: 17, lineHeight: 26 },
54
- link: { color: "#9a3412" },
55
- blockquote: { borderColor: "#c2410c", padding: 16 },
56
- }}
57
- />
58
- ```
59
-
60
- The type is exported as `TiptapStyle`. Each node has its own block: `paragraph`, `h1` through `h6`, `blockquote`, `list`, `code`, `codeBlock`, `link`, `linkVariants`, `strong`, `em`, `strikethrough`, `underline`, `mention`, `factoid`, `highlight`, `thematicBreak`, and the table, image, math, and task-list blocks the style object still carries. Color fields take any string `processColor` accepts.
61
-
62
- With no `textStyle`, body text is `#1F2937`, headings are near-black, links are `#2563EB`, and inline code is pink on a light chip. Blockquotes use a gray bar, a light fill, and 10 points of padding. Bold and italic do not set a color, so they inherit the surrounding text. Fenced code blocks are the exception: they default to a dark background (`#1F2937`) and a GitHub-dark syntax palette.
63
-
64
- A factoid's `color`, `backgroundColor`, and `borderColor` attributes replace that one channel of `textStyle.factoid`. The other channels stay on the style.
65
-
66
- A mention uses `textStyle.mention`. `color` is the label and `backgroundColor` is the chip. Defaults are `#1D4ED8` on `#DBEAFE`. iOS draws semibold text in a rounded rect on each line the name wraps onto. Android draws one medium-weight chip and keeps it on a single line, and darkens the fill while a finger is down.
67
-
68
- `linkVariants` maps a URL regex to a link override. Longer patterns win. Omitted `color` and `underline` inherit the base link style.
69
-
70
- ## Dark mode
71
-
72
- The library does not follow the system appearance. Pass a dark `textStyle` yourself when the screen is dark. `darkModeTextStyle` is a ready-made palette for that: light text (`#E6EDF3`), brighter headings, blue links (`#58A6FF`), and dark surfaces for quotes, tables, and code. It sets colors only. Font sizes, spacing, and the rest of the geometry stay on the built-in defaults, including the 10-point blockquote padding. Bold and italic are left unset so they still inherit.
73
-
74
- ```tsx
75
- import { darkModeTextStyle, RichText } from "@mathers101/react-native-render-rich-text";
76
-
77
- <RichText document={document} textStyle={darkModeTextStyle} />;
78
- ```
79
-
80
- Spread it and override a few keys when the preset is close but not exact:
81
-
82
- ```tsx
83
- textStyle={{
84
- ...darkModeTextStyle,
85
- paragraph: { ...darkModeTextStyle.paragraph, fontSize: 17, lineHeight: 26 },
86
- link: { color: '#93C5FD' },
87
- }}
88
- ```
89
-
90
- The preset lives in `src/darkModeTextStyle.ts`. The light defaults live in `src/normalizeTiptapStyle.ts`.
91
-
92
- ## Run the example
93
-
94
- The example app is a Yarn workspace of this package. Metro serves it on port 41873:
95
-
96
- ```sh
97
- yarn example
98
- ```
99
-
100
- One screen shows five fixtures: mixed document, lists, code, links, and a long tab of two documents that mix every node. The header button labeled **Dark** swaps the document to `darkModeTextStyle` and darkens the screen around it. It reads **Light** after the switch. Open a link, a factoid, or a mention and the footer shows what was pressed. Hold a mention and the footer says it was held.
101
-
102
- iOS: from `example/ios`, run `bundle install` and `bundle exec pod install`, then `yarn example ios` (or `yarn workspace render-rich-text-example ios`). The pod is `ReactNativeRenderRichText`.
103
-
104
- Android: from `example`, run `yarn android`. The native package is `com.renderrichtext`. The codegen spec name is `RichTextSpec`.
105
-
106
- ## Release
107
-
108
- Pushing a `vX.Y.Z` tag publishes that version to the public npm registry. The tag has to match `version` in `package.json`. The workflow is `.github/workflows/publish.yml`. It typechecks, runs the parser tests, publishes, and opens a GitHub Release.
109
-
110
- ```sh
111
- # commit the version bump first, then:
112
- git tag v0.1.7
113
- git push origin v0.1.7
114
- ```
115
-
116
- The repository secret `NPM_TOKEN` has to be an npm automation token that can publish `@mathers101`. The package is public, so Expo EAS and other installs do not need a token.
117
-
118
- ## Build the library
119
-
120
- Install dependencies from the repository root.
121
-
122
- ```sh
123
- corepack enable
124
- yarn install
125
- yarn typecheck
126
- ```
127
-
128
- ## Parser tests
129
-
130
- The C++ parser tests check mark nesting, lists, factoids, empty documents, and unknown nodes.
131
-
132
- ```sh
133
- yarn test:parser
134
- ```
135
-
136
- That compiles `cpp/parser/TiptapParser.cpp` with `cpp/tests/parser_tests.cpp` and runs the binary. A passing run prints `all parser tests passed`.
137
-
138
- ## What this environment cannot verify
139
-
140
- iOS and Android rendering need a simulator or a device. Typecheck and the parser tests run here. Metro can serve the JavaScript bundle here. A device render does not.
1
+ # react-native-render-rich-text
2
+
3
+ A React Native Fabric library that renders a [Tiptap](https://tiptap.dev/) document on iOS and Android. The public component is `RichText`. Its `document` prop is a Tiptap JSON tree, or that tree already encoded as a string.
4
+
5
+ There is no web renderer and no text-input component. New Architecture is required (React Native 0.88).
6
+
7
+ The display renderers are adapted from Software Mansion. That copyright stays on the copied sources. See `LICENSE`.
8
+
9
+ ## Install
10
+
11
+ ```sh
12
+ npm install @mathers101/react-native-render-rich-text
13
+ ```
14
+
15
+ ## What it draws
16
+
17
+ Nodes: `doc`, `paragraph`, `heading`, `bulletList`, `orderedList`, `listItem`, `blockquote`, `codeBlock`, `horizontalRule`, `hardBreak`, `factoid`, and `mention`. Marks: `bold` (or `strong`), `italic` (or `em`), `strike` (or `strikethrough`), `code`, `underline`, `highlight`, and `link`. A link's URL is `marks[].attrs.href`. A factoid is an inline node; its `id` is what `onFactoidPress` receives, and a factoid that contains a link emits `onLinkPress` instead. A mention is an inline atom with `id` and `label`. It draws as `@label` (or `@id` when `label` is blank). `onMentionPress` and `onMentionLongPress` receive both attributes.
18
+
19
+ Unknown nodes, including tables, images, and task lists, are skipped with their children so the rest of the document still renders. A code block keeps its `language` attribute. Syntax colors apply only when the optional highlighting module is compiled in; otherwise the block is plain monospace.
20
+
21
+ ## Use it
22
+
23
+ ```tsx
24
+ import { RichText } from "@mathers101/react-native-render-rich-text";
25
+
26
+ <RichText
27
+ document={document}
28
+ onLinkPress={(url) => {
29
+ // url comes from the link mark's href
30
+ }}
31
+ onFactoidPress={(factoidId) => {
32
+ // factoidId comes from the factoid node's id
33
+ }}
34
+ onMentionPress={(mention) => {
35
+ // mention.id and mention.label come from the mention node
36
+ }}
37
+ onMentionLongPress={(mention) => {
38
+ // same payload as onMentionPress
39
+ }}
40
+ />;
41
+ ```
42
+
43
+ `document` is either a `TiptapNode` or a JSON string. `selectable` defaults to true. `allowFontScaling` defaults to true, and `maxFontSizeMultiplier` caps that scale. `numberOfLines` and `ellipsizeMode` (`'head' | 'middle' | 'tail' | 'clip'`) truncate the view. `style` is a normal React Native view style for the container, not the text.
44
+
45
+ ## Styling
46
+
47
+ Pass a partial `TiptapStyle` as `textStyle`. Omitted keys keep the built-in defaults. JavaScript fills in that complete style before it crosses the bridge; native does not invent colors of its own.
48
+
49
+ ```tsx
50
+ <RichText
51
+ document={document}
52
+ textStyle={{
53
+ paragraph: { color: "#1c1917", fontSize: 17, lineHeight: 26 },
54
+ link: { color: "#9a3412" },
55
+ blockquote: { borderColor: "#c2410c", padding: 16 },
56
+ }}
57
+ />
58
+ ```
59
+
60
+ The type is exported as `TiptapStyle`. Each node has its own block: `paragraph`, `h1` through `h6`, `blockquote`, `list`, `code`, `codeBlock`, `link`, `linkVariants`, `strong`, `em`, `strikethrough`, `underline`, `mention`, `factoid`, `highlight`, `thematicBreak`, and the table, image, math, and task-list blocks the style object still carries. Color fields take any string `processColor` accepts.
61
+
62
+ With no `textStyle`, body text is `#1F2937`, headings are near-black, links are `#2563EB`, and inline code is pink on a light chip. Blockquotes use a gray bar, a light fill, and 10 points of padding. Bold and italic do not set a color, so they inherit the surrounding text. Fenced code blocks are the exception: they default to a dark background (`#1F2937`) and a GitHub-dark syntax palette.
63
+
64
+ A factoid's `color`, `backgroundColor`, and `borderColor` attributes replace that one channel of `textStyle.factoid`. The other channels stay on the style.
65
+
66
+ A mention uses `textStyle.mention`. `color` is the label and `backgroundColor` is the chip. Defaults are `#1D4ED8` on `#DBEAFE`. iOS draws semibold text in a rounded rect on each line the name wraps onto. Android draws one medium-weight chip and keeps it on a single line, and darkens the fill while a finger is down.
67
+
68
+ `linkVariants` maps a URL regex to a link override. Longer patterns win. Omitted `color` and `underline` inherit the base link style.
69
+
70
+ ## Dark mode
71
+
72
+ The library does not follow the system appearance. Pass a dark `textStyle` yourself when the screen is dark. `darkModeTextStyle` is a ready-made palette for that: light text (`#E6EDF3`), brighter headings, blue links (`#58A6FF`), and dark surfaces for quotes, tables, and code. It sets colors only. Font sizes, spacing, and the rest of the geometry stay on the built-in defaults, including the 10-point blockquote padding. Bold and italic are left unset so they still inherit.
73
+
74
+ ```tsx
75
+ import { darkModeTextStyle, RichText } from "@mathers101/react-native-render-rich-text";
76
+
77
+ <RichText document={document} textStyle={darkModeTextStyle} />;
78
+ ```
79
+
80
+ Spread it and override a few keys when the preset is close but not exact:
81
+
82
+ ```tsx
83
+ textStyle={{
84
+ ...darkModeTextStyle,
85
+ paragraph: { ...darkModeTextStyle.paragraph, fontSize: 17, lineHeight: 26 },
86
+ link: { color: '#93C5FD' },
87
+ }}
88
+ ```
89
+
90
+ The preset lives in `src/darkModeTextStyle.ts`. The light defaults live in `src/normalizeTiptapStyle.ts`.
91
+
92
+ ## Run the example
93
+
94
+ The example app is a Yarn workspace of this package. Metro serves it on port 41873:
95
+
96
+ ```sh
97
+ yarn example
98
+ ```
99
+
100
+ One screen shows five fixtures: mixed document, lists, code, links, and a long tab of two documents that mix every node. The header button labeled **Dark** swaps the document to `darkModeTextStyle` and darkens the screen around it. It reads **Light** after the switch. Open a link, a factoid, or a mention and the footer shows what was pressed. Hold a mention and the footer says it was held.
101
+
102
+ iOS: from `example/ios`, run `bundle install` and `bundle exec pod install`, then `yarn example ios` (or `yarn workspace render-rich-text-example ios`). The pod is `ReactNativeRenderRichText`.
103
+
104
+ Android: from `example`, run `yarn android`. The native package is `com.renderrichtext`. The codegen spec name is `RichTextSpec`.
105
+
106
+ ## Release
107
+
108
+ Pushing a `vX.Y.Z` tag publishes that version to the public npm registry. The tag has to match `version` in `package.json`. The workflow is `.github/workflows/publish.yml`. It typechecks, runs the parser tests, publishes, and opens a GitHub Release.
109
+
110
+ ```sh
111
+ # commit the version bump first, then:
112
+ git tag v0.1.7
113
+ git push origin v0.1.7
114
+ ```
115
+
116
+ Publishing uses npm trusted publishing from `.github/workflows/publish.yml`. No npm token is stored in GitHub. The package is public, so Expo EAS and other installs do not need a token.
117
+
118
+ ## Build the library
119
+
120
+ Install dependencies from the repository root.
121
+
122
+ ```sh
123
+ corepack enable
124
+ yarn install
125
+ yarn typecheck
126
+ ```
127
+
128
+ ## Parser tests
129
+
130
+ The C++ parser tests check mark nesting, lists, factoids, empty documents, and unknown nodes.
131
+
132
+ ```sh
133
+ yarn test:parser
134
+ ```
135
+
136
+ That compiles `cpp/parser/TiptapParser.cpp` with `cpp/tests/parser_tests.cpp` and runs the binary. A passing run prints `all parser tests passed`.
137
+
138
+ ## What this environment cannot verify
139
+
140
+ iOS and Android rendering need a simulator or a device. Typecheck and the parser tests run here. Metro can serve the JavaScript bundle here. A device render does not.
@@ -1,23 +1,23 @@
1
- require "json"
2
-
3
- package = JSON.parse(File.read(File.join(__dir__, "package.json")))
4
-
5
- Pod::Spec.new do |s|
6
- s.name = "ReactNativeRenderRichText"
7
- s.version = package["version"]
8
- s.summary = package["description"]
9
- s.homepage = package["homepage"]
10
- s.license = package["license"]
11
- s.authors = package["author"]
12
- s.platforms = { :ios => min_ios_version_supported }
13
- s.source = { :git => package["repository"]["url"], :tag => "#{s.version}" }
14
-
15
- s.source_files = "ios/**/*.{h,m,mm}", "cpp/parser/*.{hpp,cpp}"
16
- s.private_header_files = "ios/**/*.h", "cpp/parser/*.hpp"
17
- s.pod_target_xcconfig = {
18
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
19
- "HEADER_SEARCH_PATHS" => "$(inherited) \"$(PODS_TARGET_SRCROOT)/cpp/parser\" \"$(PODS_TARGET_SRCROOT)/cpp/vendor\""
20
- }
21
-
22
- install_modules_dependencies(s)
23
- end
1
+ require "json"
2
+
3
+ package = JSON.parse(File.read(File.join(__dir__, "package.json")))
4
+
5
+ Pod::Spec.new do |s|
6
+ s.name = "ReactNativeRenderRichText"
7
+ s.version = package["version"]
8
+ s.summary = package["description"]
9
+ s.homepage = package["homepage"]
10
+ s.license = package["license"]
11
+ s.authors = package["author"]
12
+ s.platforms = { :ios => min_ios_version_supported }
13
+ s.source = { :git => package["repository"]["url"], :tag => "#{s.version}" }
14
+
15
+ s.source_files = "ios/**/*.{h,m,mm}", "cpp/parser/*.{hpp,cpp}"
16
+ s.private_header_files = "ios/**/*.h", "cpp/parser/*.hpp"
17
+ s.pod_target_xcconfig = {
18
+ "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
19
+ "HEADER_SEARCH_PATHS" => "$(inherited) \"$(PODS_TARGET_SRCROOT)/cpp/parser\" \"$(PODS_TARGET_SRCROOT)/cpp/vendor\""
20
+ }
21
+
22
+ install_modules_dependencies(s)
23
+ end
@@ -1,86 +1,86 @@
1
- buildscript {
2
- repositories {
3
- google()
4
- mavenCentral()
5
- }
6
- dependencies {
7
- classpath "com.android.tools.build:gradle:8.12.0"
8
- classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:2.2.0"
9
- }
10
- }
11
-
12
- apply plugin: "com.android.library"
13
-
14
- def shouldApplyKotlinPlugin() {
15
- def agpMajor = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION.tokenize('.')[0].toInteger()
16
- if (agpMajor <= 8) {
17
- return true
18
- }
19
- if (agpMajor >= 10) {
20
- return false
21
- }
22
- def propertyVal = providers.gradleProperty("android.builtInKotlin").orNull
23
- def builtInKotlinEnabled = propertyVal != null ? propertyVal.toBoolean() : true
24
- return !builtInKotlinEnabled
25
- }
26
-
27
- if (shouldApplyKotlinPlugin()) {
28
- apply plugin: "kotlin-android"
29
- }
30
-
31
- apply plugin: "com.facebook.react"
32
-
33
- def getExtOrDefault = { name, fallback ->
34
- return rootProject.ext.has(name) ? rootProject.ext.get(name) : fallback
35
- }
36
-
37
- android {
38
- namespace "com.renderrichtext"
39
- compileSdkVersion getExtOrDefault("compileSdkVersion", 37)
40
-
41
- defaultConfig {
42
- minSdkVersion getExtOrDefault("minSdkVersion", 24)
43
- targetSdkVersion getExtOrDefault("targetSdkVersion", 36)
44
- consumerProguardFiles "consumer-rules.pro"
45
- buildConfigField "boolean", "ENABLE_MATH", "false"
46
- buildConfigField "boolean", "ENABLE_VIDEO", "false"
47
- buildConfigField "boolean", "ENABLE_CODE_HIGHLIGHT", "false"
48
- }
49
-
50
- buildFeatures {
51
- buildConfig true
52
- }
53
-
54
- buildTypes {
55
- release {
56
- minifyEnabled false
57
- }
58
- }
59
-
60
- compileOptions {
61
- sourceCompatibility JavaVersion.VERSION_17
62
- targetCompatibility JavaVersion.VERSION_17
63
- }
64
-
65
- sourceSets {
66
- main {
67
- java.srcDirs += ["generated/java", "generated/jni"]
68
- }
69
- }
70
- }
71
-
72
- repositories {
73
- mavenCentral()
74
- google()
75
- }
76
-
77
- dependencies {
78
- implementation "com.facebook.react:react-android"
79
- implementation "org.jetbrains.kotlin:kotlin-stdlib:2.2.0"
80
- }
81
-
82
- react {
83
- jsRootDir = file("../src/")
84
- libraryName = "RichTextSpec"
85
- codegenJavaPackageName = "com.renderrichtext"
86
- }
1
+ buildscript {
2
+ repositories {
3
+ google()
4
+ mavenCentral()
5
+ }
6
+ dependencies {
7
+ classpath "com.android.tools.build:gradle:8.12.0"
8
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:2.2.0"
9
+ }
10
+ }
11
+
12
+ apply plugin: "com.android.library"
13
+
14
+ def shouldApplyKotlinPlugin() {
15
+ def agpMajor = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION.tokenize('.')[0].toInteger()
16
+ if (agpMajor <= 8) {
17
+ return true
18
+ }
19
+ if (agpMajor >= 10) {
20
+ return false
21
+ }
22
+ def propertyVal = providers.gradleProperty("android.builtInKotlin").orNull
23
+ def builtInKotlinEnabled = propertyVal != null ? propertyVal.toBoolean() : true
24
+ return !builtInKotlinEnabled
25
+ }
26
+
27
+ if (shouldApplyKotlinPlugin()) {
28
+ apply plugin: "kotlin-android"
29
+ }
30
+
31
+ apply plugin: "com.facebook.react"
32
+
33
+ def getExtOrDefault = { name, fallback ->
34
+ return rootProject.ext.has(name) ? rootProject.ext.get(name) : fallback
35
+ }
36
+
37
+ android {
38
+ namespace "com.renderrichtext"
39
+ compileSdkVersion getExtOrDefault("compileSdkVersion", 37)
40
+
41
+ defaultConfig {
42
+ minSdkVersion getExtOrDefault("minSdkVersion", 24)
43
+ targetSdkVersion getExtOrDefault("targetSdkVersion", 36)
44
+ consumerProguardFiles "consumer-rules.pro"
45
+ buildConfigField "boolean", "ENABLE_MATH", "false"
46
+ buildConfigField "boolean", "ENABLE_VIDEO", "false"
47
+ buildConfigField "boolean", "ENABLE_CODE_HIGHLIGHT", "false"
48
+ }
49
+
50
+ buildFeatures {
51
+ buildConfig true
52
+ }
53
+
54
+ buildTypes {
55
+ release {
56
+ minifyEnabled false
57
+ }
58
+ }
59
+
60
+ compileOptions {
61
+ sourceCompatibility JavaVersion.VERSION_17
62
+ targetCompatibility JavaVersion.VERSION_17
63
+ }
64
+
65
+ sourceSets {
66
+ main {
67
+ java.srcDirs += ["generated/java", "generated/jni"]
68
+ }
69
+ }
70
+ }
71
+
72
+ repositories {
73
+ mavenCentral()
74
+ google()
75
+ }
76
+
77
+ dependencies {
78
+ implementation "com.facebook.react:react-android"
79
+ implementation "org.jetbrains.kotlin:kotlin-stdlib:2.2.0"
80
+ }
81
+
82
+ react {
83
+ jsRootDir = file("../src/")
84
+ libraryName = "RichTextSpec"
85
+ codegenJavaPackageName = "com.renderrichtext"
86
+ }
@@ -1,3 +1,3 @@
1
- # JNI looks up these classes by name from jni-adapter.cpp.
2
- -keep class com.renderrichtext.parser.TiptapASTNode { *; }
3
- -keep class com.renderrichtext.parser.TiptapASTNode$NodeType { *; }
1
+ # JNI looks up these classes by name from jni-adapter.cpp.
2
+ -keep class com.renderrichtext.parser.TiptapASTNode { *; }
3
+ -keep class com.renderrichtext.parser.TiptapASTNode$NodeType { *; }
@@ -1,2 +1,2 @@
1
- <manifest xmlns:android="http://schemas.android.com/apk/res/android">
2
- </manifest>
1
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android">
2
+ </manifest>
@@ -1,24 +1,24 @@
1
- package com.renderrichtext
2
-
3
- import com.facebook.react.bridge.Arguments
4
-
5
- class EnrichedTiptapTextLayoutManager(
6
- private val view: EnrichedTiptapText,
7
- ) {
8
- private var forceHeightRecalculationCounter = 0
9
-
10
- fun invalidateLayout() {
11
- val text = view.text
12
- val paint = view.paint
13
- val heightChanged = MeasurementStore.store(view.id, text, paint, view.trailingMarginBottomPx())
14
- if (!heightChanged) return
15
- val stateWrapper = view.stateWrapper ?: return
16
- val state = Arguments.createMap()
17
- state.putInt("forceHeightRecalculationCounter", ++forceHeightRecalculationCounter)
18
- stateWrapper.updateState(state)
19
- }
20
-
21
- fun releaseMeasurementStore() {
22
- MeasurementStore.release(view.id)
23
- }
24
- }
1
+ package com.renderrichtext
2
+
3
+ import com.facebook.react.bridge.Arguments
4
+
5
+ class EnrichedTiptapTextLayoutManager(
6
+ private val view: EnrichedTiptapText,
7
+ ) {
8
+ private var forceHeightRecalculationCounter = 0
9
+
10
+ fun invalidateLayout() {
11
+ val text = view.text
12
+ val paint = view.paint
13
+ val heightChanged = MeasurementStore.store(view.id, text, paint, view.trailingMarginBottomPx())
14
+ if (!heightChanged) return
15
+ val stateWrapper = view.stateWrapper ?: return
16
+ val state = Arguments.createMap()
17
+ state.putInt("forceHeightRecalculationCounter", ++forceHeightRecalculationCounter)
18
+ stateWrapper.updateState(state)
19
+ }
20
+
21
+ fun releaseMeasurementStore() {
22
+ MeasurementStore.release(view.id)
23
+ }
24
+ }
@@ -1,13 +1,13 @@
1
- package com.renderrichtext
2
-
3
- import com.facebook.react.ReactPackage
4
- import com.facebook.react.bridge.NativeModule
5
- import com.facebook.react.bridge.ReactApplicationContext
6
- import com.facebook.react.uimanager.ViewManager
7
-
8
- class EnrichedTiptapTextPackage : ReactPackage {
9
- override fun createViewManagers(reactContext: ReactApplicationContext): List<ViewManager<*, *>> =
10
- listOf(EnrichedTiptapTextManager())
11
-
12
- override fun createNativeModules(reactContext: ReactApplicationContext): List<NativeModule> = emptyList()
13
- }
1
+ package com.renderrichtext
2
+
3
+ import com.facebook.react.ReactPackage
4
+ import com.facebook.react.bridge.NativeModule
5
+ import com.facebook.react.bridge.ReactApplicationContext
6
+ import com.facebook.react.uimanager.ViewManager
7
+
8
+ class EnrichedTiptapTextPackage : ReactPackage {
9
+ override fun createViewManagers(reactContext: ReactApplicationContext): List<ViewManager<*, *>> =
10
+ listOf(EnrichedTiptapTextManager())
11
+
12
+ override fun createNativeModules(reactContext: ReactApplicationContext): List<NativeModule> = emptyList()
13
+ }