@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,211 +1,211 @@
1
- package com.renderrichtext.renderer
2
-
3
- import android.text.SpannableStringBuilder
4
- import android.text.style.ForegroundColorSpan
5
- import android.text.style.StrikethroughSpan
6
- import com.renderrichtext.parser.TiptapASTNode
7
- import com.renderrichtext.spans.BaseListSpan
8
- import com.renderrichtext.spans.CodeBlockSpan
9
- import com.renderrichtext.spans.ListMarkerAnchorSpan
10
- import com.renderrichtext.spans.OrderedListSpan
11
- import com.renderrichtext.spans.TaskListSpan
12
- import com.renderrichtext.spans.UnorderedListSpan
13
- import com.renderrichtext.utils.text.span.SPAN_FLAGS_EXCLUSIVE_EXCLUSIVE
14
- import com.renderrichtext.utils.text.span.SPAN_FLAGS_LIST_ITEM
15
-
16
- class ListItemRenderer(
17
- private val config: RendererConfig,
18
- ) : NodeRenderer {
19
- override fun render(
20
- node: TiptapASTNode,
21
- builder: SpannableStringBuilder,
22
- onLinkPress: ((String) -> Unit)?,
23
- onLinkLongPress: ((String) -> Unit)?,
24
- onFactoidPress: ((String) -> Unit)?,
25
- factory: RendererFactory,
26
- ) {
27
- val styleContext = factory.blockStyleContext
28
- val start = builder.length
29
- val listType = styleContext.listType ?: return
30
-
31
- val isTask = node.attributes["isTask"] == "true"
32
- val isChecked = isTask && node.attributes["taskChecked"] == "true"
33
-
34
- if (listType == BlockStyleContext.ListType.ORDERED) {
35
- styleContext.incrementListItemNumber()
36
- }
37
-
38
- val taskIndex = if (isTask) styleContext.taskItemCount++ else -1
39
-
40
- val depth = styleContext.listDepth - 1
41
- val listStyle = config.style.listStyle
42
-
43
- fun makeSpan(drawsMarker: Boolean): BaseListSpan =
44
- if (isTask) {
45
- TaskListSpan(
46
- taskStyle = config.style.taskListStyle,
47
- listStyle = listStyle,
48
- depth = depth,
49
- context = factory.context,
50
- styleCache = factory.styleCache,
51
- taskIndex = taskIndex,
52
- isChecked = isChecked,
53
- drawsMarker = drawsMarker,
54
- ancestorMarkerOffset = styleContext.ancestorMarkerOffset,
55
- markerExtraWidth = styleContext.listMarkerExtra,
56
- parentMarkerWidth = styleContext.listItemMarkerWidth,
57
- )
58
- } else {
59
- when (listType) {
60
- BlockStyleContext.ListType.UNORDERED -> {
61
- UnorderedListSpan(
62
- listStyle,
63
- depth,
64
- factory.context,
65
- factory.styleCache,
66
- drawsMarker,
67
- ancestorMarkerOffset = styleContext.ancestorMarkerOffset,
68
- parentMarkerWidth = styleContext.listItemMarkerWidth,
69
- )
70
- }
71
-
72
- BlockStyleContext.ListType.ORDERED -> {
73
- OrderedListSpan(
74
- listStyle,
75
- depth,
76
- factory.context,
77
- factory.styleCache,
78
- drawsMarker,
79
- markerExtraWidth = styleContext.listMarkerExtra,
80
- ancestorMarkerOffset = styleContext.ancestorMarkerOffset,
81
- parentMarkerWidth = styleContext.listItemMarkerWidth,
82
- ).apply {
83
- setItemNumber(styleContext.listItemNumber)
84
- }
85
- }
86
- }
87
- }
88
-
89
- val markerSpan = makeSpan(drawsMarker = true)
90
-
91
- val previousMarkerExtra = styleContext.listItemMarkerExtra
92
- styleContext.listItemMarkerExtra = markerSpan.markerExtraWidth
93
- val previousMarkerWidth = styleContext.listItemMarkerWidth
94
- styleContext.listItemMarkerWidth = markerSpan.baselineMarkerWidth
95
- val prevIndent = styleContext.accumulatedIndent
96
- styleContext.accumulatedIndent = prevIndent + markerSpan.getLeadingMargin(false)
97
- try {
98
- factory.renderChildren(node, builder, onLinkPress, onLinkLongPress, onFactoidPress)
99
- } finally {
100
- styleContext.accumulatedIndent = prevIndent
101
- styleContext.listItemMarkerExtra = previousMarkerExtra
102
- styleContext.listItemMarkerWidth = previousMarkerWidth
103
- }
104
-
105
- if (builder.length == start || builder.substring(start).isBlank()) return
106
-
107
- styleContext.listItemStarts.add(start)
108
-
109
- if (builder.last() != '\n') {
110
- builder.append("\n")
111
- }
112
-
113
- val itemEnd = builder.length
114
-
115
- // Anchor the marker on the first content character so items that open with
116
- // a code block or nested sublist still get their marker.
117
- var anchor = start
118
- while (anchor < itemEnd && builder[anchor].isWhitespace()) anchor++
119
- if (anchor == itemEnd) anchor = start
120
-
121
- val plainAnchor =
122
- builder.getSpans(anchor, anchor + 1, CodeBlockSpan::class.java).isEmpty() &&
123
- builder.getSpans(anchor, anchor + 1, BaseListSpan::class.java).none { it.depth > depth }
124
-
125
- val codeBlockRanges =
126
- builder
127
- .getSpans(start, itemEnd, CodeBlockSpan::class.java)
128
- .map { builder.getSpanStart(it) to builder.getSpanEnd(it) }
129
- .filter { it.first < it.second }
130
- .sortedBy { it.first }
131
-
132
- var pos = start
133
- var isFirstSegment = true
134
- for ((cbStart, cbEnd) in codeBlockRanges) {
135
- if (pos < cbStart) {
136
- builder.setSpan(
137
- if (isFirstSegment && plainAnchor) markerSpan else makeSpan(drawsMarker = false),
138
- pos,
139
- cbStart,
140
- SPAN_FLAGS_LIST_ITEM,
141
- )
142
- isFirstSegment = false
143
- }
144
- pos = maxOf(pos, cbEnd)
145
- }
146
- if (pos < itemEnd) {
147
- builder.setSpan(
148
- if (isFirstSegment && plainAnchor) markerSpan else makeSpan(drawsMarker = false),
149
- pos,
150
- itemEnd,
151
- SPAN_FLAGS_LIST_ITEM,
152
- )
153
- }
154
-
155
- if (!plainAnchor) {
156
- builder.setSpan(ListMarkerAnchorSpan(markerSpan), anchor, anchor + 1, SPAN_FLAGS_EXCLUSIVE_EXCLUSIVE)
157
- }
158
-
159
- if (isTask && isChecked) {
160
- applyCheckedDecorations(builder, start, itemEnd, depth)
161
- }
162
- }
163
-
164
- private fun applyCheckedDecorations(
165
- builder: SpannableStringBuilder,
166
- itemStart: Int,
167
- itemEnd: Int,
168
- itemDepth: Int,
169
- ) {
170
- val taskStyle = config.style.taskListStyle
171
- val checkedTextColor = taskStyle.checkedTextColor
172
- val strikethrough = taskStyle.checkedStrikethrough
173
-
174
- if (checkedTextColor == 0 && !strikethrough) return
175
-
176
- val excludedRanges =
177
- (
178
- builder.getSpans(itemStart, itemEnd, BaseListSpan::class.java).filter { it.depth > itemDepth } +
179
- builder.getSpans(itemStart, itemEnd, CodeBlockSpan::class.java).toList()
180
- ).map { builder.getSpanStart(it) to builder.getSpanEnd(it) }
181
- .sortedBy { it.first }
182
-
183
- var currentPos = itemStart
184
-
185
- for ((start, end) in excludedRanges) {
186
- if (start > currentPos) {
187
- applySpans(builder, currentPos, start, checkedTextColor, strikethrough)
188
- }
189
- currentPos = maxOf(currentPos, end)
190
- }
191
-
192
- if (currentPos < itemEnd) {
193
- applySpans(builder, currentPos, itemEnd, checkedTextColor, strikethrough)
194
- }
195
- }
196
-
197
- private fun applySpans(
198
- builder: SpannableStringBuilder,
199
- start: Int,
200
- end: Int,
201
- color: Int,
202
- strikethrough: Boolean,
203
- ) {
204
- if (color != 0) {
205
- builder.setSpan(ForegroundColorSpan(color), start, end, SPAN_FLAGS_EXCLUSIVE_EXCLUSIVE)
206
- }
207
- if (strikethrough) {
208
- builder.setSpan(StrikethroughSpan(), start, end, SPAN_FLAGS_EXCLUSIVE_EXCLUSIVE)
209
- }
210
- }
211
- }
1
+ package com.renderrichtext.renderer
2
+
3
+ import android.text.SpannableStringBuilder
4
+ import android.text.style.ForegroundColorSpan
5
+ import android.text.style.StrikethroughSpan
6
+ import com.renderrichtext.parser.TiptapASTNode
7
+ import com.renderrichtext.spans.BaseListSpan
8
+ import com.renderrichtext.spans.CodeBlockSpan
9
+ import com.renderrichtext.spans.ListMarkerAnchorSpan
10
+ import com.renderrichtext.spans.OrderedListSpan
11
+ import com.renderrichtext.spans.TaskListSpan
12
+ import com.renderrichtext.spans.UnorderedListSpan
13
+ import com.renderrichtext.utils.text.span.SPAN_FLAGS_EXCLUSIVE_EXCLUSIVE
14
+ import com.renderrichtext.utils.text.span.SPAN_FLAGS_LIST_ITEM
15
+
16
+ class ListItemRenderer(
17
+ private val config: RendererConfig,
18
+ ) : NodeRenderer {
19
+ override fun render(
20
+ node: TiptapASTNode,
21
+ builder: SpannableStringBuilder,
22
+ onLinkPress: ((String) -> Unit)?,
23
+ onLinkLongPress: ((String) -> Unit)?,
24
+ onFactoidPress: ((String) -> Unit)?,
25
+ factory: RendererFactory,
26
+ ) {
27
+ val styleContext = factory.blockStyleContext
28
+ val start = builder.length
29
+ val listType = styleContext.listType ?: return
30
+
31
+ val isTask = node.attributes["isTask"] == "true"
32
+ val isChecked = isTask && node.attributes["taskChecked"] == "true"
33
+
34
+ if (listType == BlockStyleContext.ListType.ORDERED) {
35
+ styleContext.incrementListItemNumber()
36
+ }
37
+
38
+ val taskIndex = if (isTask) styleContext.taskItemCount++ else -1
39
+
40
+ val depth = styleContext.listDepth - 1
41
+ val listStyle = config.style.listStyle
42
+
43
+ fun makeSpan(drawsMarker: Boolean): BaseListSpan =
44
+ if (isTask) {
45
+ TaskListSpan(
46
+ taskStyle = config.style.taskListStyle,
47
+ listStyle = listStyle,
48
+ depth = depth,
49
+ context = factory.context,
50
+ styleCache = factory.styleCache,
51
+ taskIndex = taskIndex,
52
+ isChecked = isChecked,
53
+ drawsMarker = drawsMarker,
54
+ ancestorMarkerOffset = styleContext.ancestorMarkerOffset,
55
+ markerExtraWidth = styleContext.listMarkerExtra,
56
+ parentMarkerWidth = styleContext.listItemMarkerWidth,
57
+ )
58
+ } else {
59
+ when (listType) {
60
+ BlockStyleContext.ListType.UNORDERED -> {
61
+ UnorderedListSpan(
62
+ listStyle,
63
+ depth,
64
+ factory.context,
65
+ factory.styleCache,
66
+ drawsMarker,
67
+ ancestorMarkerOffset = styleContext.ancestorMarkerOffset,
68
+ parentMarkerWidth = styleContext.listItemMarkerWidth,
69
+ )
70
+ }
71
+
72
+ BlockStyleContext.ListType.ORDERED -> {
73
+ OrderedListSpan(
74
+ listStyle,
75
+ depth,
76
+ factory.context,
77
+ factory.styleCache,
78
+ drawsMarker,
79
+ markerExtraWidth = styleContext.listMarkerExtra,
80
+ ancestorMarkerOffset = styleContext.ancestorMarkerOffset,
81
+ parentMarkerWidth = styleContext.listItemMarkerWidth,
82
+ ).apply {
83
+ setItemNumber(styleContext.listItemNumber)
84
+ }
85
+ }
86
+ }
87
+ }
88
+
89
+ val markerSpan = makeSpan(drawsMarker = true)
90
+
91
+ val previousMarkerExtra = styleContext.listItemMarkerExtra
92
+ styleContext.listItemMarkerExtra = markerSpan.markerExtraWidth
93
+ val previousMarkerWidth = styleContext.listItemMarkerWidth
94
+ styleContext.listItemMarkerWidth = markerSpan.baselineMarkerWidth
95
+ val prevIndent = styleContext.accumulatedIndent
96
+ styleContext.accumulatedIndent = prevIndent + markerSpan.getLeadingMargin(false)
97
+ try {
98
+ factory.renderChildren(node, builder, onLinkPress, onLinkLongPress, onFactoidPress)
99
+ } finally {
100
+ styleContext.accumulatedIndent = prevIndent
101
+ styleContext.listItemMarkerExtra = previousMarkerExtra
102
+ styleContext.listItemMarkerWidth = previousMarkerWidth
103
+ }
104
+
105
+ if (builder.length == start || builder.substring(start).isBlank()) return
106
+
107
+ styleContext.listItemStarts.add(start)
108
+
109
+ if (builder.last() != '\n') {
110
+ builder.append("\n")
111
+ }
112
+
113
+ val itemEnd = builder.length
114
+
115
+ // Anchor the marker on the first content character so items that open with
116
+ // a code block or nested sublist still get their marker.
117
+ var anchor = start
118
+ while (anchor < itemEnd && builder[anchor].isWhitespace()) anchor++
119
+ if (anchor == itemEnd) anchor = start
120
+
121
+ val plainAnchor =
122
+ builder.getSpans(anchor, anchor + 1, CodeBlockSpan::class.java).isEmpty() &&
123
+ builder.getSpans(anchor, anchor + 1, BaseListSpan::class.java).none { it.depth > depth }
124
+
125
+ val codeBlockRanges =
126
+ builder
127
+ .getSpans(start, itemEnd, CodeBlockSpan::class.java)
128
+ .map { builder.getSpanStart(it) to builder.getSpanEnd(it) }
129
+ .filter { it.first < it.second }
130
+ .sortedBy { it.first }
131
+
132
+ var pos = start
133
+ var isFirstSegment = true
134
+ for ((cbStart, cbEnd) in codeBlockRanges) {
135
+ if (pos < cbStart) {
136
+ builder.setSpan(
137
+ if (isFirstSegment && plainAnchor) markerSpan else makeSpan(drawsMarker = false),
138
+ pos,
139
+ cbStart,
140
+ SPAN_FLAGS_LIST_ITEM,
141
+ )
142
+ isFirstSegment = false
143
+ }
144
+ pos = maxOf(pos, cbEnd)
145
+ }
146
+ if (pos < itemEnd) {
147
+ builder.setSpan(
148
+ if (isFirstSegment && plainAnchor) markerSpan else makeSpan(drawsMarker = false),
149
+ pos,
150
+ itemEnd,
151
+ SPAN_FLAGS_LIST_ITEM,
152
+ )
153
+ }
154
+
155
+ if (!plainAnchor) {
156
+ builder.setSpan(ListMarkerAnchorSpan(markerSpan), anchor, anchor + 1, SPAN_FLAGS_EXCLUSIVE_EXCLUSIVE)
157
+ }
158
+
159
+ if (isTask && isChecked) {
160
+ applyCheckedDecorations(builder, start, itemEnd, depth)
161
+ }
162
+ }
163
+
164
+ private fun applyCheckedDecorations(
165
+ builder: SpannableStringBuilder,
166
+ itemStart: Int,
167
+ itemEnd: Int,
168
+ itemDepth: Int,
169
+ ) {
170
+ val taskStyle = config.style.taskListStyle
171
+ val checkedTextColor = taskStyle.checkedTextColor
172
+ val strikethrough = taskStyle.checkedStrikethrough
173
+
174
+ if (checkedTextColor == 0 && !strikethrough) return
175
+
176
+ val excludedRanges =
177
+ (
178
+ builder.getSpans(itemStart, itemEnd, BaseListSpan::class.java).filter { it.depth > itemDepth } +
179
+ builder.getSpans(itemStart, itemEnd, CodeBlockSpan::class.java).toList()
180
+ ).map { builder.getSpanStart(it) to builder.getSpanEnd(it) }
181
+ .sortedBy { it.first }
182
+
183
+ var currentPos = itemStart
184
+
185
+ for ((start, end) in excludedRanges) {
186
+ if (start > currentPos) {
187
+ applySpans(builder, currentPos, start, checkedTextColor, strikethrough)
188
+ }
189
+ currentPos = maxOf(currentPos, end)
190
+ }
191
+
192
+ if (currentPos < itemEnd) {
193
+ applySpans(builder, currentPos, itemEnd, checkedTextColor, strikethrough)
194
+ }
195
+ }
196
+
197
+ private fun applySpans(
198
+ builder: SpannableStringBuilder,
199
+ start: Int,
200
+ end: Int,
201
+ color: Int,
202
+ strikethrough: Boolean,
203
+ ) {
204
+ if (color != 0) {
205
+ builder.setSpan(ForegroundColorSpan(color), start, end, SPAN_FLAGS_EXCLUSIVE_EXCLUSIVE)
206
+ }
207
+ if (strikethrough) {
208
+ builder.setSpan(StrikethroughSpan(), start, end, SPAN_FLAGS_EXCLUSIVE_EXCLUSIVE)
209
+ }
210
+ }
211
+ }