@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,86 +1,86 @@
1
- #import "MentionBackground.h"
2
-
3
- NSString *const MentionAttributeName = @"Mention";
4
- NSString *const MentionIdAttributeName = @"mentionId";
5
- NSString *const MentionLabelAttributeName = @"mentionLabel";
6
- NSString *const MentionBackgroundColorAttributeName = @"MentionBackgroundColor";
7
-
8
- const CGFloat ENRMMentionPaddingX = 3.0;
9
- const CGFloat ENRMMentionPaddingY = 1.0;
10
- static const CGFloat kMentionCornerRadius = 10.0;
11
-
12
- @implementation MentionBackground
13
-
14
- - (void)drawBackgroundsForGlyphRange:(NSRange)glyphsToShow
15
- layoutManager:(NSLayoutManager *)layoutManager
16
- textContainer:(NSTextContainer *)textContainer
17
- atPoint:(CGPoint)origin
18
- {
19
- NSTextStorage *textStorage = layoutManager.textStorage;
20
- if (!textStorage || textStorage.length == 0)
21
- return;
22
-
23
- NSRange charRange = [layoutManager characterRangeForGlyphRange:glyphsToShow actualGlyphRange:NULL];
24
- if (charRange.location == NSNotFound || charRange.length == 0)
25
- return;
26
-
27
- [textStorage enumerateAttribute:MentionAttributeName
28
- inRange:NSMakeRange(0, textStorage.length)
29
- options:0
30
- usingBlock:^(id value, NSRange range, BOOL *stop) {
31
- (void)stop;
32
- if (!value || range.length == 0)
33
- return;
34
- if (NSIntersectionRange(range, charRange).length == 0)
35
- return;
36
-
37
- RCTUIColor *backgroundColor = [textStorage attribute:MentionBackgroundColorAttributeName
38
- atIndex:range.location
39
- effectiveRange:NULL];
40
- if (!backgroundColor)
41
- return;
42
-
43
- [self drawMentionForRange:range
44
- layoutManager:layoutManager
45
- textContainer:textContainer
46
- atPoint:origin
47
- backgroundColor:backgroundColor];
48
- }];
49
- }
50
-
51
- /// One rounded rect per line fragment. A wrapped mention paints `box-decoration-break: clone`,
52
- /// so each line keeps its own 10pt corners instead of stretching into a bar.
53
- - (void)drawMentionForRange:(NSRange)range
54
- layoutManager:(NSLayoutManager *)layoutManager
55
- textContainer:(NSTextContainer *)textContainer
56
- atPoint:(CGPoint)origin
57
- backgroundColor:(RCTUIColor *)backgroundColor
58
- {
59
- NSRange glyphRange = [layoutManager glyphRangeForCharacterRange:range actualCharacterRange:NULL];
60
- if (glyphRange.location == NSNotFound || glyphRange.length == 0)
61
- return;
62
-
63
- [layoutManager
64
- enumerateLineFragmentsForGlyphRange:glyphRange
65
- usingBlock:^(CGRect rect, CGRect usedRect, NSTextContainer *tc, NSRange lineRange,
66
- BOOL *stop) {
67
- (void)rect;
68
- (void)usedRect;
69
- (void)tc;
70
- (void)stop;
71
- NSRange intersect = NSIntersectionRange(lineRange, glyphRange);
72
- if (intersect.length == 0)
73
- return;
74
-
75
- CGRect textRect =
76
- [layoutManager boundingRectForGlyphRange:intersect inTextContainer:textContainer];
77
- CGRect finalRect = CGRectInset(textRect, -ENRMMentionPaddingX, -ENRMMentionPaddingY);
78
- finalRect.origin.x += origin.x;
79
- finalRect.origin.y += origin.y;
80
- UIBezierPath *path = UIBezierPathWithRoundedRect(finalRect, kMentionCornerRadius);
81
- [backgroundColor setFill];
82
- [path fill];
83
- }];
84
- }
85
-
86
- @end
1
+ #import "MentionBackground.h"
2
+
3
+ NSString *const MentionAttributeName = @"Mention";
4
+ NSString *const MentionIdAttributeName = @"mentionId";
5
+ NSString *const MentionLabelAttributeName = @"mentionLabel";
6
+ NSString *const MentionBackgroundColorAttributeName = @"MentionBackgroundColor";
7
+
8
+ const CGFloat ENRMMentionPaddingX = 3.0;
9
+ const CGFloat ENRMMentionPaddingY = 1.0;
10
+ static const CGFloat kMentionCornerRadius = 10.0;
11
+
12
+ @implementation MentionBackground
13
+
14
+ - (void)drawBackgroundsForGlyphRange:(NSRange)glyphsToShow
15
+ layoutManager:(NSLayoutManager *)layoutManager
16
+ textContainer:(NSTextContainer *)textContainer
17
+ atPoint:(CGPoint)origin
18
+ {
19
+ NSTextStorage *textStorage = layoutManager.textStorage;
20
+ if (!textStorage || textStorage.length == 0)
21
+ return;
22
+
23
+ NSRange charRange = [layoutManager characterRangeForGlyphRange:glyphsToShow actualGlyphRange:NULL];
24
+ if (charRange.location == NSNotFound || charRange.length == 0)
25
+ return;
26
+
27
+ [textStorage enumerateAttribute:MentionAttributeName
28
+ inRange:NSMakeRange(0, textStorage.length)
29
+ options:0
30
+ usingBlock:^(id value, NSRange range, BOOL *stop) {
31
+ (void)stop;
32
+ if (!value || range.length == 0)
33
+ return;
34
+ if (NSIntersectionRange(range, charRange).length == 0)
35
+ return;
36
+
37
+ RCTUIColor *backgroundColor = [textStorage attribute:MentionBackgroundColorAttributeName
38
+ atIndex:range.location
39
+ effectiveRange:NULL];
40
+ if (!backgroundColor)
41
+ return;
42
+
43
+ [self drawMentionForRange:range
44
+ layoutManager:layoutManager
45
+ textContainer:textContainer
46
+ atPoint:origin
47
+ backgroundColor:backgroundColor];
48
+ }];
49
+ }
50
+
51
+ /// One rounded rect per line fragment. A wrapped mention paints `box-decoration-break: clone`,
52
+ /// so each line keeps its own 10pt corners instead of stretching into a bar.
53
+ - (void)drawMentionForRange:(NSRange)range
54
+ layoutManager:(NSLayoutManager *)layoutManager
55
+ textContainer:(NSTextContainer *)textContainer
56
+ atPoint:(CGPoint)origin
57
+ backgroundColor:(RCTUIColor *)backgroundColor
58
+ {
59
+ NSRange glyphRange = [layoutManager glyphRangeForCharacterRange:range actualCharacterRange:NULL];
60
+ if (glyphRange.location == NSNotFound || glyphRange.length == 0)
61
+ return;
62
+
63
+ [layoutManager
64
+ enumerateLineFragmentsForGlyphRange:glyphRange
65
+ usingBlock:^(CGRect rect, CGRect usedRect, NSTextContainer *tc, NSRange lineRange,
66
+ BOOL *stop) {
67
+ (void)rect;
68
+ (void)usedRect;
69
+ (void)tc;
70
+ (void)stop;
71
+ NSRange intersect = NSIntersectionRange(lineRange, glyphRange);
72
+ if (intersect.length == 0)
73
+ return;
74
+
75
+ CGRect textRect =
76
+ [layoutManager boundingRectForGlyphRange:intersect inTextContainer:textContainer];
77
+ CGRect finalRect = CGRectInset(textRect, -ENRMMentionPaddingX, -ENRMMentionPaddingY);
78
+ finalRect.origin.x += origin.x;
79
+ finalRect.origin.y += origin.y;
80
+ UIBezierPath *path = UIBezierPathWithRoundedRect(finalRect, kMentionCornerRadius);
81
+ [backgroundColor setFill];
82
+ [path fill];
83
+ }];
84
+ }
85
+
86
+ @end
@@ -1,87 +1,87 @@
1
- #import "ENRMUIKit.h"
2
- #import <Foundation/Foundation.h>
3
-
4
- NS_ASSUME_NONNULL_BEGIN
5
-
6
- __BEGIN_DECLS
7
-
8
- extern NSAttributedString *kNewlineAttributedString;
9
-
10
- NSLineBreakStrategy ENRMResolveLineBreakStrategy(NSString *_Nullable strategy);
11
- void ENRMApplyLineBreakStrategyToParagraphStyles(NSMutableAttributedString *output,
12
- NSLineBreakStrategy lineBreakStrategy);
13
-
14
- /// Resolves an ellipsizeMode prop value to the NSLineBreakMode used for
15
- /// truncation on the text container (with maximumNumberOfLines). 'clip' maps to
16
- /// NSLineBreakByClipping (truncate with no ellipsis). Defaults to tail. Mirrors
17
- /// React Native Text's ellipsizeMode.
18
- NSLineBreakMode ENRMResolveEllipsizeLineBreakMode(NSString *_Nullable mode);
19
-
20
- /// Auto/LTR/RTL match React Native's writingDirection prop.
21
- /// FirstStrong is the library extension: resolve each paragraph from its first strong
22
- /// directional character (matches Android's TEXT_DIRECTION_FIRST_STRONG).
23
- typedef NS_ENUM(NSInteger, ENRMWritingDirectionMode) {
24
- ENRMWritingDirectionModeAuto,
25
- ENRMWritingDirectionModeLTR,
26
- ENRMWritingDirectionModeRTL,
27
- ENRMWritingDirectionModeFirstStrong,
28
- };
29
-
30
- ENRMWritingDirectionMode ENRMResolveWritingDirectionMode(NSString *_Nullable value);
31
-
32
- void ENRMApplyWritingDirectionToParagraphStyles(NSMutableAttributedString *output, NSWritingDirection writingDirection);
33
-
34
- NSWritingDirection ENRMFirstStrongDirection(NSString *text);
35
-
36
- /// Paragraphs without a strong character fall back to `fallback`. Code blocks are skipped.
37
- void ENRMApplyFirstStrongParagraphDirections(NSMutableAttributedString *output, NSWritingDirection fallback);
38
-
39
- /// Falls back to the app's UI layout direction when the style is missing or Natural.
40
- BOOL ENRMParagraphIsRTL(NSParagraphStyle *_Nullable style);
41
-
42
- /// Dispatch entry point used after every render pass. `layoutDirection` is the
43
- /// fallback for FirstStrong neutral paragraphs and is unused for the other modes.
44
- void ENRMApplyWritingDirectionMode(NSMutableAttributedString *output, ENRMWritingDirectionMode mode,
45
- NSWritingDirection layoutDirection);
46
-
47
- /// Sets lineHeight as a floor (minimumLineHeight) so a line can still grow to fit a taller run.
48
- /// No-op when lineHeight <= 0.
49
- void ENRMApplyLineHeightToParagraphStyle(NSMutableParagraphStyle *style, CGFloat lineHeight);
50
-
51
- NSMutableParagraphStyle *getOrCreateParagraphStyle(NSMutableAttributedString *output, NSUInteger index);
52
- void applyParagraphSpacingAfter(NSMutableAttributedString *output, NSUInteger start, CGFloat marginBottom);
53
- NSUInteger applyParagraphSpacingBefore(NSMutableAttributedString *output, NSRange range, CGFloat marginTop);
54
- NSUInteger applyBlockSpacingBefore(NSMutableAttributedString *output, NSUInteger insertionPoint, CGFloat marginTop);
55
- void applyBlockSpacingAfter(NSMutableAttributedString *output, CGFloat marginBottom);
56
- /// `lineHeight`, raised to the largest `pill.lineHeight` among the link pills in `range`.
57
- /// A line grows to fit a pill on its own, but only that line and only to the pill's box, so
58
- /// pills on consecutive lines touch. A style that sets `pill.lineHeight` gets a floor for
59
- /// the whole block instead, which keeps its lines even and the pills apart.
60
- CGFloat ENRMLineHeightWithLinkPills(NSAttributedString *text, NSRange range, CGFloat lineHeight);
61
- void applyLineHeight(NSMutableAttributedString *output, NSRange range, CGFloat lineHeight);
62
-
63
- /// Stamps every styled run in `range` with `NSOriginalFont` set to its own
64
- /// `NSFont`, so a line is sized from the font the renderer chose rather than
65
- /// from whichever font ends up drawing the glyphs.
66
- ///
67
- /// UIKit writes this attribute itself, but only into a UITextView's storage, so
68
- /// the view-free measurement stack never saw it and sized a line from the
69
- /// fallback font instead. Stamping it here keeps measuring and rendering agreed.
70
- ///
71
- /// IMPORTANT:
72
- /// Call this last, after every font in the range is final, on any attributed
73
- /// string handed to a layout engine. A run whose `NSFont` changes after the
74
- /// stamp is then sized from the stale font, in the measurement stack and in
75
- /// `UITextView` alike, so the line comes out wrong in both.
76
- /// `ENRMRenderASTNodes` and `ENRMRenderBlockquoteContentNodes` cover everything
77
- /// built through the node renderers; the two paths that assemble their own
78
- /// string (table cells, code block content) call it themselves.
79
- void ENRMPinLineMetricsToStyledFonts(NSMutableAttributedString *output, NSRange range);
80
- CGFloat calculateBaselineOffset(NSAttributedString *output, NSRange range);
81
- void applyBaselineOffset(NSMutableAttributedString *output, NSRange range);
82
- void applyTextAlignment(NSMutableAttributedString *output, NSRange range, NSTextAlignment textAlign);
83
- NSTextAlignment textAlignmentFromString(NSString *textAlign);
84
-
85
- __END_DECLS
86
-
87
- NS_ASSUME_NONNULL_END
1
+ #import "ENRMUIKit.h"
2
+ #import <Foundation/Foundation.h>
3
+
4
+ NS_ASSUME_NONNULL_BEGIN
5
+
6
+ __BEGIN_DECLS
7
+
8
+ extern NSAttributedString *kNewlineAttributedString;
9
+
10
+ NSLineBreakStrategy ENRMResolveLineBreakStrategy(NSString *_Nullable strategy);
11
+ void ENRMApplyLineBreakStrategyToParagraphStyles(NSMutableAttributedString *output,
12
+ NSLineBreakStrategy lineBreakStrategy);
13
+
14
+ /// Resolves an ellipsizeMode prop value to the NSLineBreakMode used for
15
+ /// truncation on the text container (with maximumNumberOfLines). 'clip' maps to
16
+ /// NSLineBreakByClipping (truncate with no ellipsis). Defaults to tail. Mirrors
17
+ /// React Native Text's ellipsizeMode.
18
+ NSLineBreakMode ENRMResolveEllipsizeLineBreakMode(NSString *_Nullable mode);
19
+
20
+ /// Auto/LTR/RTL match React Native's writingDirection prop.
21
+ /// FirstStrong is the library extension: resolve each paragraph from its first strong
22
+ /// directional character (matches Android's TEXT_DIRECTION_FIRST_STRONG).
23
+ typedef NS_ENUM(NSInteger, ENRMWritingDirectionMode) {
24
+ ENRMWritingDirectionModeAuto,
25
+ ENRMWritingDirectionModeLTR,
26
+ ENRMWritingDirectionModeRTL,
27
+ ENRMWritingDirectionModeFirstStrong,
28
+ };
29
+
30
+ ENRMWritingDirectionMode ENRMResolveWritingDirectionMode(NSString *_Nullable value);
31
+
32
+ void ENRMApplyWritingDirectionToParagraphStyles(NSMutableAttributedString *output, NSWritingDirection writingDirection);
33
+
34
+ NSWritingDirection ENRMFirstStrongDirection(NSString *text);
35
+
36
+ /// Paragraphs without a strong character fall back to `fallback`. Code blocks are skipped.
37
+ void ENRMApplyFirstStrongParagraphDirections(NSMutableAttributedString *output, NSWritingDirection fallback);
38
+
39
+ /// Falls back to the app's UI layout direction when the style is missing or Natural.
40
+ BOOL ENRMParagraphIsRTL(NSParagraphStyle *_Nullable style);
41
+
42
+ /// Dispatch entry point used after every render pass. `layoutDirection` is the
43
+ /// fallback for FirstStrong neutral paragraphs and is unused for the other modes.
44
+ void ENRMApplyWritingDirectionMode(NSMutableAttributedString *output, ENRMWritingDirectionMode mode,
45
+ NSWritingDirection layoutDirection);
46
+
47
+ /// Sets lineHeight as a floor (minimumLineHeight) so a line can still grow to fit a taller run.
48
+ /// No-op when lineHeight <= 0.
49
+ void ENRMApplyLineHeightToParagraphStyle(NSMutableParagraphStyle *style, CGFloat lineHeight);
50
+
51
+ NSMutableParagraphStyle *getOrCreateParagraphStyle(NSMutableAttributedString *output, NSUInteger index);
52
+ void applyParagraphSpacingAfter(NSMutableAttributedString *output, NSUInteger start, CGFloat marginBottom);
53
+ NSUInteger applyParagraphSpacingBefore(NSMutableAttributedString *output, NSRange range, CGFloat marginTop);
54
+ NSUInteger applyBlockSpacingBefore(NSMutableAttributedString *output, NSUInteger insertionPoint, CGFloat marginTop);
55
+ void applyBlockSpacingAfter(NSMutableAttributedString *output, CGFloat marginBottom);
56
+ /// `lineHeight`, raised to the largest `pill.lineHeight` among the link pills in `range`.
57
+ /// A line grows to fit a pill on its own, but only that line and only to the pill's box, so
58
+ /// pills on consecutive lines touch. A style that sets `pill.lineHeight` gets a floor for
59
+ /// the whole block instead, which keeps its lines even and the pills apart.
60
+ CGFloat ENRMLineHeightWithLinkPills(NSAttributedString *text, NSRange range, CGFloat lineHeight);
61
+ void applyLineHeight(NSMutableAttributedString *output, NSRange range, CGFloat lineHeight);
62
+
63
+ /// Stamps every styled run in `range` with `NSOriginalFont` set to its own
64
+ /// `NSFont`, so a line is sized from the font the renderer chose rather than
65
+ /// from whichever font ends up drawing the glyphs.
66
+ ///
67
+ /// UIKit writes this attribute itself, but only into a UITextView's storage, so
68
+ /// the view-free measurement stack never saw it and sized a line from the
69
+ /// fallback font instead. Stamping it here keeps measuring and rendering agreed.
70
+ ///
71
+ /// IMPORTANT:
72
+ /// Call this last, after every font in the range is final, on any attributed
73
+ /// string handed to a layout engine. A run whose `NSFont` changes after the
74
+ /// stamp is then sized from the stale font, in the measurement stack and in
75
+ /// `UITextView` alike, so the line comes out wrong in both.
76
+ /// `ENRMRenderASTNodes` and `ENRMRenderBlockquoteContentNodes` cover everything
77
+ /// built through the node renderers; the two paths that assemble their own
78
+ /// string (table cells, code block content) call it themselves.
79
+ void ENRMPinLineMetricsToStyledFonts(NSMutableAttributedString *output, NSRange range);
80
+ CGFloat calculateBaselineOffset(NSAttributedString *output, NSRange range);
81
+ void applyBaselineOffset(NSMutableAttributedString *output, NSRange range);
82
+ void applyTextAlignment(NSMutableAttributedString *output, NSRange range, NSTextAlignment textAlign);
83
+ NSTextAlignment textAlignmentFromString(NSString *textAlign);
84
+
85
+ __END_DECLS
86
+
87
+ NS_ASSUME_NONNULL_END