@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
@@ -1,68 +1,68 @@
1
- package com.renderrichtext.spans
2
-
3
- import android.content.Context
4
- import android.graphics.Color
5
- import android.text.TextPaint
6
- import android.text.style.ClickableSpan
7
- import android.view.View
8
- import com.renderrichtext.EnrichedTiptapText
9
- import com.renderrichtext.renderer.BlockStyle
10
- import com.renderrichtext.renderer.SpanStyleCache
11
- import com.renderrichtext.utils.text.extensions.applyBlockStyleFont
12
-
13
- class LinkSpan(
14
- val url: String,
15
- private val onLinkPress: ((String) -> Unit)?,
16
- private val onLinkLongPress: ((String) -> Unit)?,
17
- private val styleCache: SpanStyleCache,
18
- private val blockStyle: BlockStyle,
19
- private val context: Context,
20
- val recognizedLink: Boolean = false,
21
- // A recognized code span keeps its code font unless a link or variant font is set.
22
- private val keepsCodeFont: Boolean = false,
23
- ) : ClickableSpan() {
24
- @Volatile
25
- private var longPressTriggered = false
26
-
27
- override fun onClick(widget: View) {
28
- if (longPressTriggered) {
29
- longPressTriggered = false
30
- return
31
- }
32
-
33
- onLinkPress?.invoke(url) ?: (widget as? EnrichedTiptapText)?.emitOnLinkPress(url)
34
- }
35
-
36
- fun onLongClick(widget: View): Boolean {
37
- longPressTriggered = true
38
-
39
- (widget as? EnrichedTiptapText)?.emitOnLinkLongPress(url)
40
-
41
- onLinkLongPress?.invoke(url)
42
-
43
- return true
44
- }
45
-
46
- override fun updateDrawState(textPaint: TextPaint) {
47
- super.updateDrawState(textPaint)
48
-
49
- val variant = styleCache.resolvedVariantForUrl(url)
50
-
51
- val fontFamily = variant?.fontFamily?.takeIf { it.isNotEmpty() } ?: styleCache.linkFontFamily
52
- if (fontFamily.isNotEmpty()) {
53
- textPaint.textSize = blockStyle.fontSize
54
- textPaint.applyBlockStyleFont(blockStyle.copy(fontFamily = fontFamily), context)
55
- } else if (!keepsCodeFont) {
56
- textPaint.textSize = blockStyle.fontSize
57
- textPaint.applyBlockStyleFont(blockStyle, context)
58
- }
59
-
60
- textPaint.color = variant?.color ?: styleCache.linkColor
61
- textPaint.isUnderlineText = variant?.underline ?: styleCache.linkUnderline
62
-
63
- val backgroundColor = variant?.backgroundColor ?: styleCache.linkBackgroundColor
64
- if (Color.alpha(backgroundColor) > 0) {
65
- textPaint.bgColor = backgroundColor
66
- }
67
- }
68
- }
1
+ package com.renderrichtext.spans
2
+
3
+ import android.content.Context
4
+ import android.graphics.Color
5
+ import android.text.TextPaint
6
+ import android.text.style.ClickableSpan
7
+ import android.view.View
8
+ import com.renderrichtext.EnrichedTiptapText
9
+ import com.renderrichtext.renderer.BlockStyle
10
+ import com.renderrichtext.renderer.SpanStyleCache
11
+ import com.renderrichtext.utils.text.extensions.applyBlockStyleFont
12
+
13
+ class LinkSpan(
14
+ val url: String,
15
+ private val onLinkPress: ((String) -> Unit)?,
16
+ private val onLinkLongPress: ((String) -> Unit)?,
17
+ private val styleCache: SpanStyleCache,
18
+ private val blockStyle: BlockStyle,
19
+ private val context: Context,
20
+ val recognizedLink: Boolean = false,
21
+ // A recognized code span keeps its code font unless a link or variant font is set.
22
+ private val keepsCodeFont: Boolean = false,
23
+ ) : ClickableSpan() {
24
+ @Volatile
25
+ private var longPressTriggered = false
26
+
27
+ override fun onClick(widget: View) {
28
+ if (longPressTriggered) {
29
+ longPressTriggered = false
30
+ return
31
+ }
32
+
33
+ onLinkPress?.invoke(url) ?: (widget as? EnrichedTiptapText)?.emitOnLinkPress(url)
34
+ }
35
+
36
+ fun onLongClick(widget: View): Boolean {
37
+ longPressTriggered = true
38
+
39
+ (widget as? EnrichedTiptapText)?.emitOnLinkLongPress(url)
40
+
41
+ onLinkLongPress?.invoke(url)
42
+
43
+ return true
44
+ }
45
+
46
+ override fun updateDrawState(textPaint: TextPaint) {
47
+ super.updateDrawState(textPaint)
48
+
49
+ val variant = styleCache.resolvedVariantForUrl(url)
50
+
51
+ val fontFamily = variant?.fontFamily?.takeIf { it.isNotEmpty() } ?: styleCache.linkFontFamily
52
+ if (fontFamily.isNotEmpty()) {
53
+ textPaint.textSize = blockStyle.fontSize
54
+ textPaint.applyBlockStyleFont(blockStyle.copy(fontFamily = fontFamily), context)
55
+ } else if (!keepsCodeFont) {
56
+ textPaint.textSize = blockStyle.fontSize
57
+ textPaint.applyBlockStyleFont(blockStyle, context)
58
+ }
59
+
60
+ textPaint.color = variant?.color ?: styleCache.linkColor
61
+ textPaint.isUnderlineText = variant?.underline ?: styleCache.linkUnderline
62
+
63
+ val backgroundColor = variant?.backgroundColor ?: styleCache.linkBackgroundColor
64
+ if (Color.alpha(backgroundColor) > 0) {
65
+ textPaint.bgColor = backgroundColor
66
+ }
67
+ }
68
+ }
@@ -1,33 +1,33 @@
1
- package com.renderrichtext.spans
2
-
3
- import android.graphics.Paint
4
- import android.text.Spanned
5
- import android.text.style.LineHeightSpan
6
-
7
- /**
8
- * Adds vertical spacing between list items using LineHeightSpan.
9
- *
10
- * Attached over the newline that separates two items; extends only the line
11
- * ending at that newline so the gap appears below the preceding item.
12
- *
13
- * @param spacing The spacing in pixels to add below the line (0 = no spacing)
14
- */
15
- class ListItemSpacingSpan(
16
- val spacing: Float,
17
- ) : LineHeightSpan {
18
- override fun chooseHeight(
19
- text: CharSequence,
20
- start: Int,
21
- end: Int,
22
- spanstartv: Int,
23
- lineHeight: Int,
24
- fm: Paint.FontMetricsInt,
25
- ) {
26
- val spanEnd = (text as? Spanned)?.getSpanEnd(this) ?: return
27
- if (end != spanEnd) return
28
-
29
- val spacingPixels = spacing.toInt()
30
- fm.descent += spacingPixels
31
- fm.bottom += spacingPixels
32
- }
33
- }
1
+ package com.renderrichtext.spans
2
+
3
+ import android.graphics.Paint
4
+ import android.text.Spanned
5
+ import android.text.style.LineHeightSpan
6
+
7
+ /**
8
+ * Adds vertical spacing between list items using LineHeightSpan.
9
+ *
10
+ * Attached over the newline that separates two items; extends only the line
11
+ * ending at that newline so the gap appears below the preceding item.
12
+ *
13
+ * @param spacing The spacing in pixels to add below the line (0 = no spacing)
14
+ */
15
+ class ListItemSpacingSpan(
16
+ val spacing: Float,
17
+ ) : LineHeightSpan {
18
+ override fun chooseHeight(
19
+ text: CharSequence,
20
+ start: Int,
21
+ end: Int,
22
+ spanstartv: Int,
23
+ lineHeight: Int,
24
+ fm: Paint.FontMetricsInt,
25
+ ) {
26
+ val spanEnd = (text as? Spanned)?.getSpanEnd(this) ?: return
27
+ if (end != spanEnd) return
28
+
29
+ val spacingPixels = spacing.toInt()
30
+ fm.descent += spacingPixels
31
+ fm.bottom += spacingPixels
32
+ }
33
+ }
@@ -1,38 +1,38 @@
1
- package com.renderrichtext.spans
2
-
3
- import android.graphics.Canvas
4
- import android.graphics.Paint
5
- import android.text.Layout
6
- import android.text.Spanned
7
- import android.text.style.LeadingMarginSpan
8
-
9
- // Draws a list marker on a line owned by another block (code block, nested
10
- // sublist) without contributing any margin of its own.
11
- class ListMarkerAnchorSpan(
12
- internal val marker: BaseListSpan,
13
- ) : LeadingMarginSpan {
14
- override fun getLeadingMargin(first: Boolean): Int = 0
15
-
16
- override fun drawLeadingMargin(
17
- c: Canvas,
18
- p: Paint,
19
- x: Int,
20
- dir: Int,
21
- top: Int,
22
- baseline: Int,
23
- bottom: Int,
24
- text: CharSequence?,
25
- start: Int,
26
- end: Int,
27
- first: Boolean,
28
- layout: Layout?,
29
- ) {
30
- if (!first) return
31
- if (text is Spanned && text.getSpanStart(this) != start) return
32
-
33
- // Pass the paragraph origin: drawMarker reconstructs its offset from depth,
34
- // matching the x its own span would receive on a plain text line.
35
- val originX = if (dir > 0) 0 else layout?.width ?: 0
36
- marker.drawMarkerAt(c, p, originX, dir, top, baseline, bottom, layout, start)
37
- }
38
- }
1
+ package com.renderrichtext.spans
2
+
3
+ import android.graphics.Canvas
4
+ import android.graphics.Paint
5
+ import android.text.Layout
6
+ import android.text.Spanned
7
+ import android.text.style.LeadingMarginSpan
8
+
9
+ // Draws a list marker on a line owned by another block (code block, nested
10
+ // sublist) without contributing any margin of its own.
11
+ class ListMarkerAnchorSpan(
12
+ internal val marker: BaseListSpan,
13
+ ) : LeadingMarginSpan {
14
+ override fun getLeadingMargin(first: Boolean): Int = 0
15
+
16
+ override fun drawLeadingMargin(
17
+ c: Canvas,
18
+ p: Paint,
19
+ x: Int,
20
+ dir: Int,
21
+ top: Int,
22
+ baseline: Int,
23
+ bottom: Int,
24
+ text: CharSequence?,
25
+ start: Int,
26
+ end: Int,
27
+ first: Boolean,
28
+ layout: Layout?,
29
+ ) {
30
+ if (!first) return
31
+ if (text is Spanned && text.getSpanStart(this) != start) return
32
+
33
+ // Pass the paragraph origin: drawMarker reconstructs its offset from depth,
34
+ // matching the x its own span would receive on a plain text line.
35
+ val originX = if (dir > 0) 0 else layout?.width ?: 0
36
+ marker.drawMarkerAt(c, p, originX, dir, top, baseline, bottom, layout, start)
37
+ }
38
+ }
@@ -1,76 +1,76 @@
1
- package com.renderrichtext.spans
2
-
3
- import android.graphics.Paint
4
- import android.text.style.LineHeightSpan
5
-
6
- /**
7
- * Adds bottom margin to a block element (paragraphs/headings) using LineHeightSpan.
8
- *
9
- * For spacer lines (single newline), sets the line height to exactly marginBottom.
10
- * For regular lines, adds marginBottom only at paragraph boundaries to preserve lineHeight.
11
- *
12
- * @param marginBottom The margin in pixels to add below the block (0 = no margin)
13
- */
14
- class MarginBottomSpan(
15
- val marginBottom: Float,
16
- ) : LineHeightSpan {
17
- override fun chooseHeight(
18
- text: CharSequence,
19
- start: Int,
20
- end: Int,
21
- spanstartv: Int,
22
- lineHeight: Int,
23
- fm: Paint.FontMetricsInt,
24
- ) {
25
- // Only process lines that end with a newline
26
- if (end <= start || text[end - 1] != '\n') {
27
- return
28
- }
29
-
30
- val marginPixels = marginBottom.toInt()
31
-
32
- // Handle spacer lines (single newline character)
33
- if (end - start == 1 && text[start] == '\n') {
34
- if (hasContentAfter(text, end)) {
35
- // Set line height to exactly marginBottom for spacer lines
36
- fm.top = 0
37
- fm.ascent = 0
38
- fm.descent = marginPixels
39
- fm.bottom = marginPixels
40
- } else {
41
- // No content after - collapse the spacer line to zero height
42
- fm.top = 0
43
- fm.ascent = 0
44
- fm.descent = 0
45
- fm.bottom = 0
46
- }
47
- return
48
- }
49
-
50
- // For regular lines, add spacing only if there's content after
51
- if (hasContentAfter(text, end)) {
52
- fm.descent += marginPixels
53
- fm.bottom += marginPixels
54
- }
55
- }
56
-
57
- /**
58
- * Checks if there's non-newline content after the given position.
59
- * Used to determine if spacing should be applied (between items) or skipped (after last item).
60
- */
61
- private fun hasContentAfter(
62
- text: CharSequence,
63
- pos: Int,
64
- ): Boolean {
65
- if (pos >= text.length) return false
66
-
67
- // If the next character is a newline, check the character after that
68
- if (text[pos] == '\n') {
69
- val nextPos = pos + 1
70
- if (nextPos >= text.length) return false
71
- return text[nextPos] != '\n' // Non-newline = content exists
72
- }
73
-
74
- return true // Non-newline content immediately after
75
- }
76
- }
1
+ package com.renderrichtext.spans
2
+
3
+ import android.graphics.Paint
4
+ import android.text.style.LineHeightSpan
5
+
6
+ /**
7
+ * Adds bottom margin to a block element (paragraphs/headings) using LineHeightSpan.
8
+ *
9
+ * For spacer lines (single newline), sets the line height to exactly marginBottom.
10
+ * For regular lines, adds marginBottom only at paragraph boundaries to preserve lineHeight.
11
+ *
12
+ * @param marginBottom The margin in pixels to add below the block (0 = no margin)
13
+ */
14
+ class MarginBottomSpan(
15
+ val marginBottom: Float,
16
+ ) : LineHeightSpan {
17
+ override fun chooseHeight(
18
+ text: CharSequence,
19
+ start: Int,
20
+ end: Int,
21
+ spanstartv: Int,
22
+ lineHeight: Int,
23
+ fm: Paint.FontMetricsInt,
24
+ ) {
25
+ // Only process lines that end with a newline
26
+ if (end <= start || text[end - 1] != '\n') {
27
+ return
28
+ }
29
+
30
+ val marginPixels = marginBottom.toInt()
31
+
32
+ // Handle spacer lines (single newline character)
33
+ if (end - start == 1 && text[start] == '\n') {
34
+ if (hasContentAfter(text, end)) {
35
+ // Set line height to exactly marginBottom for spacer lines
36
+ fm.top = 0
37
+ fm.ascent = 0
38
+ fm.descent = marginPixels
39
+ fm.bottom = marginPixels
40
+ } else {
41
+ // No content after - collapse the spacer line to zero height
42
+ fm.top = 0
43
+ fm.ascent = 0
44
+ fm.descent = 0
45
+ fm.bottom = 0
46
+ }
47
+ return
48
+ }
49
+
50
+ // For regular lines, add spacing only if there's content after
51
+ if (hasContentAfter(text, end)) {
52
+ fm.descent += marginPixels
53
+ fm.bottom += marginPixels
54
+ }
55
+ }
56
+
57
+ /**
58
+ * Checks if there's non-newline content after the given position.
59
+ * Used to determine if spacing should be applied (between items) or skipped (after last item).
60
+ */
61
+ private fun hasContentAfter(
62
+ text: CharSequence,
63
+ pos: Int,
64
+ ): Boolean {
65
+ if (pos >= text.length) return false
66
+
67
+ // If the next character is a newline, check the character after that
68
+ if (text[pos] == '\n') {
69
+ val nextPos = pos + 1
70
+ if (nextPos >= text.length) return false
71
+ return text[nextPos] != '\n' // Non-newline = content exists
72
+ }
73
+
74
+ return true // Non-newline content immediately after
75
+ }
76
+ }