@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,142 +1,142 @@
1
- package com.renderrichtext.utils.text.span
2
-
3
- import android.text.SpannableStringBuilder
4
- import com.renderrichtext.spans.CodeBlockSpan
5
- import com.renderrichtext.spans.ImageSpan
6
- import com.renderrichtext.spans.LineHeightSpan
7
- import com.renderrichtext.spans.LinkPillSpan
8
- import com.renderrichtext.spans.MarginBottomSpan
9
- import com.renderrichtext.utils.text.span.SPAN_FLAGS_EXCLUSIVE_EXCLUSIVE
10
- import android.text.style.LineHeightSpan as AndroidLineHeightSpan
11
-
12
- fun createLineHeightSpan(lineHeight: Float): AndroidLineHeightSpan = LineHeightSpan(lineHeight)
13
-
14
- /** The line height floor that link pills ask of their paragraph. */
15
- private class LinkPillLineHeightSpan(
16
- height: Float,
17
- ) : AndroidLineHeightSpan by LineHeightSpan(height)
18
-
19
- /**
20
- * Raises the line height of every paragraph in [start]..[end] to the largest
21
- * `pill.lineHeight` among its link pills. A line grows to fit a pill on its own, but only
22
- * that line and only to the pill's box, so pills on consecutive lines touch. A style that
23
- * sets `pill.lineHeight` gets a floor for the whole paragraph instead, which keeps its
24
- * lines even and the pills apart.
25
- *
26
- * Nested blocks set line height over ranges that overlap, so a paragraph that already
27
- * has its floor is left alone. [spanFlags] are those of the block's own line height span:
28
- * line height spans apply in order, and the floor has to come before the spans that add a
29
- * margin to a line, or it would swallow that margin.
30
- */
31
- fun applyLinkPillLineHeight(
32
- builder: SpannableStringBuilder,
33
- start: Int,
34
- end: Int,
35
- spanFlags: Int = SPAN_FLAGS_EXCLUSIVE_EXCLUSIVE,
36
- ) {
37
- val heights = HashMap<Int, Float>()
38
- for (pill in builder.getSpans(start, end, LinkPillSpan::class.java)) {
39
- val pillStart = builder.getSpanStart(pill)
40
- // getSpans also returns a pill that only touches the range.
41
- if (pill.lineHeight <= 0 || pillStart < start || pillStart >= end) continue
42
- val paragraphStart = builder.lastIndexOf('\n', pillStart - 1).let { if (it < start) start else it + 1 }
43
- heights[paragraphStart] = maxOf(heights[paragraphStart] ?: 0f, pill.lineHeight)
44
- }
45
- for ((paragraphStart, height) in heights) {
46
- val paragraphEnd = builder.indexOf('\n', paragraphStart).let { if (it < 0 || it >= end) end else it + 1 }
47
- // getSpans also returns the floor of a neighbouring paragraph, which only touches this one.
48
- val hasFloor =
49
- builder
50
- .getSpans(paragraphStart, paragraphEnd, LinkPillLineHeightSpan::class.java)
51
- .any { builder.getSpanStart(it) <= paragraphStart && builder.getSpanEnd(it) > paragraphStart }
52
- if (hasFloor) continue
53
- builder.setSpan(LinkPillLineHeightSpan(height), paragraphStart, paragraphEnd, spanFlags)
54
- }
55
- }
56
-
57
- /**
58
- * Applies [LineHeightSpan] to [start]..[end] but skips ranges occupied by
59
- * block [ImageSpan]s (and their trailing '\n') and by [CodeBlockSpan]s —
60
- * both of these apply their own font-metric adjustments that a fixed
61
- * line height would override.
62
- */
63
- fun applyLineHeightSkippingImages(
64
- builder: SpannableStringBuilder,
65
- start: Int,
66
- end: Int,
67
- lineHeight: Float,
68
- spanFlags: Int = SPAN_FLAGS_EXCLUSIVE_EXCLUSIVE,
69
- ) {
70
- val blockImageRanges =
71
- builder
72
- .getSpans(start, end, ImageSpan::class.java)
73
- .filter { !it.isInline }
74
- .map { builder.getSpanStart(it) to builder.getSpanEnd(it) }
75
-
76
- val codeBlockRanges =
77
- builder
78
- .getSpans(start, end, CodeBlockSpan::class.java)
79
- .map { builder.getSpanStart(it) to builder.getSpanEnd(it) }
80
-
81
- val excludedRanges = (blockImageRanges + codeBlockRanges).sortedBy { it.first }
82
-
83
- var pos = start
84
- for ((exStart, exEnd) in excludedRanges) {
85
- if (pos < exStart) {
86
- builder.setSpan(
87
- createLineHeightSpan(lineHeight),
88
- pos,
89
- exStart,
90
- spanFlags,
91
- )
92
- }
93
- val skipEnd = if (exEnd < end && builder[exEnd] == '\n') exEnd + 1 else exEnd
94
- pos = maxOf(pos, skipEnd)
95
- }
96
- if (pos < end) {
97
- builder.setSpan(
98
- createLineHeightSpan(lineHeight),
99
- pos,
100
- end,
101
- spanFlags,
102
- )
103
- }
104
- applyLinkPillLineHeight(builder, start, end, spanFlags)
105
- }
106
-
107
- fun applyMarginTop(
108
- builder: SpannableStringBuilder,
109
- insertionPoint: Int,
110
- marginTop: Float,
111
- ) {
112
- if (marginTop <= 0) return
113
-
114
- // Insert a newline character to act as a vertical spacer
115
- builder.insert(insertionPoint, "\n")
116
-
117
- // Apply MarginBottomSpan to the spacer character to create the gap before the content
118
- builder.setSpan(
119
- MarginBottomSpan(marginTop),
120
- insertionPoint,
121
- insertionPoint + 1,
122
- SPAN_FLAGS_EXCLUSIVE_EXCLUSIVE,
123
- )
124
- }
125
-
126
- fun applyMarginBottom(
127
- builder: SpannableStringBuilder,
128
- marginBottom: Float,
129
- ) {
130
- val spacerStart = builder.length
131
- builder.append("\n")
132
- // Always create a MarginBottomSpan, even when marginBottom = 0.
133
- // This ensures removeTrailingMargin can correctly identify the LAST element's
134
- // margin value. Without a span on the last element, it would pick up a previous
135
- // element's span (e.g. blockquote with marginBottom: 16) and use that wrong value.
136
- builder.setSpan(
137
- MarginBottomSpan(marginBottom),
138
- spacerStart,
139
- builder.length,
140
- SPAN_FLAGS_EXCLUSIVE_EXCLUSIVE,
141
- )
142
- }
1
+ package com.renderrichtext.utils.text.span
2
+
3
+ import android.text.SpannableStringBuilder
4
+ import com.renderrichtext.spans.CodeBlockSpan
5
+ import com.renderrichtext.spans.ImageSpan
6
+ import com.renderrichtext.spans.LineHeightSpan
7
+ import com.renderrichtext.spans.LinkPillSpan
8
+ import com.renderrichtext.spans.MarginBottomSpan
9
+ import com.renderrichtext.utils.text.span.SPAN_FLAGS_EXCLUSIVE_EXCLUSIVE
10
+ import android.text.style.LineHeightSpan as AndroidLineHeightSpan
11
+
12
+ fun createLineHeightSpan(lineHeight: Float): AndroidLineHeightSpan = LineHeightSpan(lineHeight)
13
+
14
+ /** The line height floor that link pills ask of their paragraph. */
15
+ private class LinkPillLineHeightSpan(
16
+ height: Float,
17
+ ) : AndroidLineHeightSpan by LineHeightSpan(height)
18
+
19
+ /**
20
+ * Raises the line height of every paragraph in [start]..[end] to the largest
21
+ * `pill.lineHeight` among its link pills. A line grows to fit a pill on its own, but only
22
+ * that line and only to the pill's box, so pills on consecutive lines touch. A style that
23
+ * sets `pill.lineHeight` gets a floor for the whole paragraph instead, which keeps its
24
+ * lines even and the pills apart.
25
+ *
26
+ * Nested blocks set line height over ranges that overlap, so a paragraph that already
27
+ * has its floor is left alone. [spanFlags] are those of the block's own line height span:
28
+ * line height spans apply in order, and the floor has to come before the spans that add a
29
+ * margin to a line, or it would swallow that margin.
30
+ */
31
+ fun applyLinkPillLineHeight(
32
+ builder: SpannableStringBuilder,
33
+ start: Int,
34
+ end: Int,
35
+ spanFlags: Int = SPAN_FLAGS_EXCLUSIVE_EXCLUSIVE,
36
+ ) {
37
+ val heights = HashMap<Int, Float>()
38
+ for (pill in builder.getSpans(start, end, LinkPillSpan::class.java)) {
39
+ val pillStart = builder.getSpanStart(pill)
40
+ // getSpans also returns a pill that only touches the range.
41
+ if (pill.lineHeight <= 0 || pillStart < start || pillStart >= end) continue
42
+ val paragraphStart = builder.lastIndexOf('\n', pillStart - 1).let { if (it < start) start else it + 1 }
43
+ heights[paragraphStart] = maxOf(heights[paragraphStart] ?: 0f, pill.lineHeight)
44
+ }
45
+ for ((paragraphStart, height) in heights) {
46
+ val paragraphEnd = builder.indexOf('\n', paragraphStart).let { if (it < 0 || it >= end) end else it + 1 }
47
+ // getSpans also returns the floor of a neighbouring paragraph, which only touches this one.
48
+ val hasFloor =
49
+ builder
50
+ .getSpans(paragraphStart, paragraphEnd, LinkPillLineHeightSpan::class.java)
51
+ .any { builder.getSpanStart(it) <= paragraphStart && builder.getSpanEnd(it) > paragraphStart }
52
+ if (hasFloor) continue
53
+ builder.setSpan(LinkPillLineHeightSpan(height), paragraphStart, paragraphEnd, spanFlags)
54
+ }
55
+ }
56
+
57
+ /**
58
+ * Applies [LineHeightSpan] to [start]..[end] but skips ranges occupied by
59
+ * block [ImageSpan]s (and their trailing '\n') and by [CodeBlockSpan]s —
60
+ * both of these apply their own font-metric adjustments that a fixed
61
+ * line height would override.
62
+ */
63
+ fun applyLineHeightSkippingImages(
64
+ builder: SpannableStringBuilder,
65
+ start: Int,
66
+ end: Int,
67
+ lineHeight: Float,
68
+ spanFlags: Int = SPAN_FLAGS_EXCLUSIVE_EXCLUSIVE,
69
+ ) {
70
+ val blockImageRanges =
71
+ builder
72
+ .getSpans(start, end, ImageSpan::class.java)
73
+ .filter { !it.isInline }
74
+ .map { builder.getSpanStart(it) to builder.getSpanEnd(it) }
75
+
76
+ val codeBlockRanges =
77
+ builder
78
+ .getSpans(start, end, CodeBlockSpan::class.java)
79
+ .map { builder.getSpanStart(it) to builder.getSpanEnd(it) }
80
+
81
+ val excludedRanges = (blockImageRanges + codeBlockRanges).sortedBy { it.first }
82
+
83
+ var pos = start
84
+ for ((exStart, exEnd) in excludedRanges) {
85
+ if (pos < exStart) {
86
+ builder.setSpan(
87
+ createLineHeightSpan(lineHeight),
88
+ pos,
89
+ exStart,
90
+ spanFlags,
91
+ )
92
+ }
93
+ val skipEnd = if (exEnd < end && builder[exEnd] == '\n') exEnd + 1 else exEnd
94
+ pos = maxOf(pos, skipEnd)
95
+ }
96
+ if (pos < end) {
97
+ builder.setSpan(
98
+ createLineHeightSpan(lineHeight),
99
+ pos,
100
+ end,
101
+ spanFlags,
102
+ )
103
+ }
104
+ applyLinkPillLineHeight(builder, start, end, spanFlags)
105
+ }
106
+
107
+ fun applyMarginTop(
108
+ builder: SpannableStringBuilder,
109
+ insertionPoint: Int,
110
+ marginTop: Float,
111
+ ) {
112
+ if (marginTop <= 0) return
113
+
114
+ // Insert a newline character to act as a vertical spacer
115
+ builder.insert(insertionPoint, "\n")
116
+
117
+ // Apply MarginBottomSpan to the spacer character to create the gap before the content
118
+ builder.setSpan(
119
+ MarginBottomSpan(marginTop),
120
+ insertionPoint,
121
+ insertionPoint + 1,
122
+ SPAN_FLAGS_EXCLUSIVE_EXCLUSIVE,
123
+ )
124
+ }
125
+
126
+ fun applyMarginBottom(
127
+ builder: SpannableStringBuilder,
128
+ marginBottom: Float,
129
+ ) {
130
+ val spacerStart = builder.length
131
+ builder.append("\n")
132
+ // Always create a MarginBottomSpan, even when marginBottom = 0.
133
+ // This ensures removeTrailingMargin can correctly identify the LAST element's
134
+ // margin value. Without a span on the last element, it would pick up a previous
135
+ // element's span (e.g. blockquote with marginBottom: 16) and use that wrong value.
136
+ builder.setSpan(
137
+ MarginBottomSpan(marginBottom),
138
+ spacerStart,
139
+ builder.length,
140
+ SPAN_FLAGS_EXCLUSIVE_EXCLUSIVE,
141
+ )
142
+ }
@@ -1,43 +1,43 @@
1
- package com.renderrichtext.utils.text.span
2
-
3
- import android.text.SpannableString
4
- import android.text.Spanned
5
-
6
- const val SPAN_FLAGS_EXCLUSIVE_EXCLUSIVE = SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE
7
-
8
- /**
9
- * `SPAN_EXCLUSIVE_EXCLUSIVE` with the maximum span priority.
10
- *
11
- * Higher-priority spans are iterated — and therefore applied and drawn — first,
12
- * so lower-priority spans over the same range override them. Use this for a
13
- * block span set after its children that must not override the inline spans
14
- * inside it (e.g. [HeadingSpan]), or for a container background that must sit
15
- * under inline pill/chip backgrounds (e.g. [BlockquoteSpan]).
16
- */
17
- const val SPAN_FLAGS_EXCLUSIVE_EXCLUSIVE_PRIORITY =
18
- Spanned.SPAN_EXCLUSIVE_EXCLUSIVE or Spanned.SPAN_PRIORITY
19
-
20
- /**
21
- * `SPAN_EXCLUSIVE_EXCLUSIVE` with the maximum span priority, for a block-wide
22
- * LineHeightSpan (e.g. a blockquote's uniform line height) that must be iterated
23
- * BEFORE the per-block [MarginBottomSpan]s it overlaps. LineHeightSpans are
24
- * applied in iteration order and higher priority iterates first, so this span
25
- * sets the base line height and the lower-priority margin span then adds its gap
26
- * on top instead of being normalized away. Without it a line-height pass applied
27
- * after the margins (e.g. in BlockquoteTextRenderer.postProcess) would erase them
28
- * and clip the first line's ascent.
29
- */
30
- const val SPAN_FLAGS_LINE_HEIGHT_PRIORITY =
31
- Spanned.SPAN_EXCLUSIVE_EXCLUSIVE or Spanned.SPAN_PRIORITY
32
-
33
- /**
34
- * `SPAN_EXCLUSIVE_EXCLUSIVE` with a span priority just above the default.
35
- *
36
- * List item spans are set after the item's children, so at the default
37
- * priority they apply after inline spans such as `CodeSpan` and replace their
38
- * font and size. This priority applies them first, while staying below
39
- * [SPAN_FLAGS_EXCLUSIVE_EXCLUSIVE_PRIORITY] so a blockquote still draws its
40
- * leading margin before a list's.
41
- */
42
- const val SPAN_FLAGS_LIST_ITEM =
43
- Spanned.SPAN_EXCLUSIVE_EXCLUSIVE or (1 shl Spanned.SPAN_PRIORITY_SHIFT)
1
+ package com.renderrichtext.utils.text.span
2
+
3
+ import android.text.SpannableString
4
+ import android.text.Spanned
5
+
6
+ const val SPAN_FLAGS_EXCLUSIVE_EXCLUSIVE = SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE
7
+
8
+ /**
9
+ * `SPAN_EXCLUSIVE_EXCLUSIVE` with the maximum span priority.
10
+ *
11
+ * Higher-priority spans are iterated — and therefore applied and drawn — first,
12
+ * so lower-priority spans over the same range override them. Use this for a
13
+ * block span set after its children that must not override the inline spans
14
+ * inside it (e.g. [HeadingSpan]), or for a container background that must sit
15
+ * under inline pill/chip backgrounds (e.g. [BlockquoteSpan]).
16
+ */
17
+ const val SPAN_FLAGS_EXCLUSIVE_EXCLUSIVE_PRIORITY =
18
+ Spanned.SPAN_EXCLUSIVE_EXCLUSIVE or Spanned.SPAN_PRIORITY
19
+
20
+ /**
21
+ * `SPAN_EXCLUSIVE_EXCLUSIVE` with the maximum span priority, for a block-wide
22
+ * LineHeightSpan (e.g. a blockquote's uniform line height) that must be iterated
23
+ * BEFORE the per-block [MarginBottomSpan]s it overlaps. LineHeightSpans are
24
+ * applied in iteration order and higher priority iterates first, so this span
25
+ * sets the base line height and the lower-priority margin span then adds its gap
26
+ * on top instead of being normalized away. Without it a line-height pass applied
27
+ * after the margins (e.g. in BlockquoteTextRenderer.postProcess) would erase them
28
+ * and clip the first line's ascent.
29
+ */
30
+ const val SPAN_FLAGS_LINE_HEIGHT_PRIORITY =
31
+ Spanned.SPAN_EXCLUSIVE_EXCLUSIVE or Spanned.SPAN_PRIORITY
32
+
33
+ /**
34
+ * `SPAN_EXCLUSIVE_EXCLUSIVE` with a span priority just above the default.
35
+ *
36
+ * List item spans are set after the item's children, so at the default
37
+ * priority they apply after inline spans such as `CodeSpan` and replace their
38
+ * font and size. This priority applies them first, while staying below
39
+ * [SPAN_FLAGS_EXCLUSIVE_EXCLUSIVE_PRIORITY] so a blockquote still draws its
40
+ * leading margin before a list's.
41
+ */
42
+ const val SPAN_FLAGS_LIST_ITEM =
43
+ Spanned.SPAN_EXCLUSIVE_EXCLUSIVE or (1 shl Spanned.SPAN_PRIORITY_SHIFT)
@@ -1,30 +1,30 @@
1
- package com.renderrichtext.utils.text.span
2
-
3
- import android.text.Spanned
4
- import com.renderrichtext.spans.ImageSpan
5
- import com.renderrichtext.spans.LinkPillSpan
6
-
7
- /**
8
- * Primes every span whose size depends on the layout width (pills, images). Call it
9
- * before building any layout over [text]. [includeImages] is off for a visible text
10
- * view, whose image spans size themselves from the view they are registered with.
11
- *
12
- * Returns true when a pill's width limit changed, i.e. an existing layout is stale.
13
- */
14
- fun prepareWidthAwareSpans(
15
- text: CharSequence?,
16
- widthPx: Int,
17
- includeImages: Boolean = true,
18
- ): Boolean {
19
- val spanned = text as? Spanned ?: return false
20
- // widthPx == 1 is the coerceAtLeast(1) fallback for a not-yet-measured view. Priming
21
- // with it would squeeze pills on screen to a sliver until the next real measure.
22
- if (widthPx <= 1) return false
23
- val pillsChanged = LinkPillSpan.prepareForMeasurement(spanned, widthPx)
24
- if (includeImages) {
25
- spanned
26
- .getSpans(0, spanned.length, ImageSpan::class.java)
27
- .forEach { it.prepareForMeasurement(spanned, widthPx) }
28
- }
29
- return pillsChanged
30
- }
1
+ package com.renderrichtext.utils.text.span
2
+
3
+ import android.text.Spanned
4
+ import com.renderrichtext.spans.ImageSpan
5
+ import com.renderrichtext.spans.LinkPillSpan
6
+
7
+ /**
8
+ * Primes every span whose size depends on the layout width (pills, images). Call it
9
+ * before building any layout over [text]. [includeImages] is off for a visible text
10
+ * view, whose image spans size themselves from the view they are registered with.
11
+ *
12
+ * Returns true when a pill's width limit changed, i.e. an existing layout is stale.
13
+ */
14
+ fun prepareWidthAwareSpans(
15
+ text: CharSequence?,
16
+ widthPx: Int,
17
+ includeImages: Boolean = true,
18
+ ): Boolean {
19
+ val spanned = text as? Spanned ?: return false
20
+ // widthPx == 1 is the coerceAtLeast(1) fallback for a not-yet-measured view. Priming
21
+ // with it would squeeze pills on screen to a sliver until the next real measure.
22
+ if (widthPx <= 1) return false
23
+ val pillsChanged = LinkPillSpan.prepareForMeasurement(spanned, widthPx)
24
+ if (includeImages) {
25
+ spanned
26
+ .getSpans(0, spanned.length, ImageSpan::class.java)
27
+ .forEach { it.prepareForMeasurement(spanned, widthPx) }
28
+ }
29
+ return pillsChanged
30
+ }
@@ -1,15 +1,15 @@
1
- package com.renderrichtext.utils.text.view
2
-
3
- /**
4
- * Implemented by the commonmark host view so [LinkLongPressMovementMethod] can
5
- * gate and dispatch taps landing on a code block span. GFM uses a separate
6
- * CodeBlockContainerView, so its host walk resolves to none.
7
- */
8
- interface CodeBlockPressHost {
9
- val codeBlockPressEnabled: Boolean
10
-
11
- fun emitOnCodeBlockPress(
12
- code: String,
13
- language: String,
14
- )
15
- }
1
+ package com.renderrichtext.utils.text.view
2
+
3
+ /**
4
+ * Implemented by the commonmark host view so [LinkLongPressMovementMethod] can
5
+ * gate and dispatch taps landing on a code block span. GFM uses a separate
6
+ * CodeBlockContainerView, so its host walk resolves to none.
7
+ */
8
+ interface CodeBlockPressHost {
9
+ val codeBlockPressEnabled: Boolean
10
+
11
+ fun emitOnCodeBlockPress(
12
+ code: String,
13
+ language: String,
14
+ )
15
+ }
@@ -1,19 +1,19 @@
1
- package com.renderrichtext.utils.text.view
2
-
3
- /**
4
- * Implemented by the React-tagged host views (EnrichedTiptapText and the GFM
5
- * EnrichedTiptap container) so [LinkLongPressMovementMethod] can gate and
6
- * dispatch image taps without knowing which flavor owns the tapped TextView.
7
- *
8
- * In GFM the tapped TextView is an internal segment child, so the movement
9
- * method walks up to the nearest host - the same routing ImageSpan uses for its
10
- * box-height notifications.
11
- */
12
- interface ImagePressHost {
13
- val imagePressEnabled: Boolean
14
-
15
- fun emitOnImagePress(
16
- url: String,
17
- altText: String,
18
- )
19
- }
1
+ package com.renderrichtext.utils.text.view
2
+
3
+ /**
4
+ * Implemented by the React-tagged host views (EnrichedTiptapText and the GFM
5
+ * EnrichedTiptap container) so [LinkLongPressMovementMethod] can gate and
6
+ * dispatch image taps without knowing which flavor owns the tapped TextView.
7
+ *
8
+ * In GFM the tapped TextView is an internal segment child, so the movement
9
+ * method walks up to the nearest host - the same routing ImageSpan uses for its
10
+ * box-height notifications.
11
+ */
12
+ interface ImagePressHost {
13
+ val imagePressEnabled: Boolean
14
+
15
+ fun emitOnImagePress(
16
+ url: String,
17
+ altText: String,
18
+ )
19
+ }