@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,26 +1,26 @@
1
- package com.renderrichtext.styles
2
-
3
- import com.facebook.react.bridge.ReadableMap
4
-
5
- data class CodeStyle(
6
- val fontFamily: String,
7
- val fontSize: Float,
8
- val color: Int,
9
- val backgroundColor: Int,
10
- val borderColor: Int,
11
- ) {
12
- companion object {
13
- fun fromReadableMap(
14
- map: ReadableMap,
15
- parser: StyleParser,
16
- ): CodeStyle {
17
- val fontFamily = parser.parseString(map, "fontFamily")
18
- val fontSizeRaw = parser.parseOptionalDouble(map, "fontSize").toFloat()
19
- val fontSize = if (fontSizeRaw > 0) parser.toPixelFromSP(fontSizeRaw) else 0f
20
- val color = parser.parseColor(map, "color")
21
- val backgroundColor = parser.parseColor(map, "backgroundColor")
22
- val borderColor = parser.parseColor(map, "borderColor")
23
- return CodeStyle(fontFamily, fontSize, color, backgroundColor, borderColor)
24
- }
25
- }
26
- }
1
+ package com.renderrichtext.styles
2
+
3
+ import com.facebook.react.bridge.ReadableMap
4
+
5
+ data class CodeStyle(
6
+ val fontFamily: String,
7
+ val fontSize: Float,
8
+ val color: Int,
9
+ val backgroundColor: Int,
10
+ val borderColor: Int,
11
+ ) {
12
+ companion object {
13
+ fun fromReadableMap(
14
+ map: ReadableMap,
15
+ parser: StyleParser,
16
+ ): CodeStyle {
17
+ val fontFamily = parser.parseString(map, "fontFamily")
18
+ val fontSizeRaw = parser.parseOptionalDouble(map, "fontSize").toFloat()
19
+ val fontSize = if (fontSizeRaw > 0) parser.toPixelFromSP(fontSizeRaw) else 0f
20
+ val color = parser.parseColor(map, "color")
21
+ val backgroundColor = parser.parseColor(map, "backgroundColor")
22
+ val borderColor = parser.parseColor(map, "borderColor")
23
+ return CodeStyle(fontFamily, fontSize, color, backgroundColor, borderColor)
24
+ }
25
+ }
26
+ }
@@ -1,21 +1,21 @@
1
- package com.renderrichtext.styles
2
-
3
- import com.facebook.react.bridge.ReadableMap
4
-
5
- data class EmphasisStyle(
6
- val fontFamily: String,
7
- val fontStyle: String,
8
- val color: Int?,
9
- ) {
10
- companion object {
11
- fun fromReadableMap(
12
- map: ReadableMap,
13
- parser: StyleParser,
14
- ): EmphasisStyle {
15
- val fontFamily = parser.parseString(map, "fontFamily")
16
- val fontStyle = parser.parseString(map, "fontStyle")
17
- val color = parser.parseOptionalColor(map, "color")
18
- return EmphasisStyle(fontFamily, fontStyle, color)
19
- }
20
- }
21
- }
1
+ package com.renderrichtext.styles
2
+
3
+ import com.facebook.react.bridge.ReadableMap
4
+
5
+ data class EmphasisStyle(
6
+ val fontFamily: String,
7
+ val fontStyle: String,
8
+ val color: Int?,
9
+ ) {
10
+ companion object {
11
+ fun fromReadableMap(
12
+ map: ReadableMap,
13
+ parser: StyleParser,
14
+ ): EmphasisStyle {
15
+ val fontFamily = parser.parseString(map, "fontFamily")
16
+ val fontStyle = parser.parseString(map, "fontStyle")
17
+ val color = parser.parseOptionalColor(map, "color")
18
+ return EmphasisStyle(fontFamily, fontStyle, color)
19
+ }
20
+ }
21
+ }
@@ -1,21 +1,21 @@
1
- package com.renderrichtext.styles
2
-
3
- import com.facebook.react.bridge.ReadableMap
4
-
5
- data class FactoidStyle(
6
- val color: Int,
7
- val backgroundColor: Int,
8
- val borderColor: Int,
9
- ) {
10
- companion object {
11
- fun fromReadableMap(
12
- map: ReadableMap,
13
- parser: StyleParser,
14
- ): FactoidStyle {
15
- val color = parser.parseColor(map, "color")
16
- val backgroundColor = parser.parseColor(map, "backgroundColor")
17
- val borderColor = parser.parseColor(map, "borderColor")
18
- return FactoidStyle(color, backgroundColor, borderColor)
19
- }
20
- }
21
- }
1
+ package com.renderrichtext.styles
2
+
3
+ import com.facebook.react.bridge.ReadableMap
4
+
5
+ data class FactoidStyle(
6
+ val color: Int,
7
+ val backgroundColor: Int,
8
+ val borderColor: Int,
9
+ ) {
10
+ companion object {
11
+ fun fromReadableMap(
12
+ map: ReadableMap,
13
+ parser: StyleParser,
14
+ ): FactoidStyle {
15
+ val color = parser.parseColor(map, "color")
16
+ val backgroundColor = parser.parseColor(map, "backgroundColor")
17
+ val borderColor = parser.parseColor(map, "borderColor")
18
+ return FactoidStyle(color, backgroundColor, borderColor)
19
+ }
20
+ }
21
+ }
@@ -1,33 +1,33 @@
1
- package com.renderrichtext.styles
2
-
3
- import com.facebook.react.bridge.ReadableMap
4
-
5
- data class HeadingStyle(
6
- override val fontSize: Float,
7
- override val fontFamily: String,
8
- override val fontWeight: String,
9
- override val color: Int,
10
- override val marginTop: Float,
11
- override val marginBottom: Float,
12
- override val lineHeight: Float,
13
- val textAlign: TextAlignment,
14
- ) : BaseBlockStyle {
15
- companion object {
16
- fun fromReadableMap(
17
- map: ReadableMap,
18
- parser: StyleParser,
19
- ): HeadingStyle {
20
- val fontSize = parser.toPixelFromSP(map.getDouble("fontSize").toFloat())
21
- val fontFamily = parser.parseString(map, "fontFamily")
22
- val fontWeight = parser.parseString(map, "fontWeight", "normal")
23
- val color = parser.parseColor(map, "color")
24
- val marginTop = parser.toPixelFromDIP(map.getDouble("marginTop").toFloat())
25
- val marginBottom = parser.toPixelFromDIP(map.getDouble("marginBottom").toFloat())
26
- val lineHeightRaw = map.getDouble("lineHeight").toFloat()
27
- val lineHeight = parser.toPixelFromSP(lineHeightRaw)
28
- val textAlign = parser.parseTextAlign(map, "textAlign")
29
-
30
- return HeadingStyle(fontSize, fontFamily, fontWeight, color, marginTop, marginBottom, lineHeight, textAlign)
31
- }
32
- }
33
- }
1
+ package com.renderrichtext.styles
2
+
3
+ import com.facebook.react.bridge.ReadableMap
4
+
5
+ data class HeadingStyle(
6
+ override val fontSize: Float,
7
+ override val fontFamily: String,
8
+ override val fontWeight: String,
9
+ override val color: Int,
10
+ override val marginTop: Float,
11
+ override val marginBottom: Float,
12
+ override val lineHeight: Float,
13
+ val textAlign: TextAlignment,
14
+ ) : BaseBlockStyle {
15
+ companion object {
16
+ fun fromReadableMap(
17
+ map: ReadableMap,
18
+ parser: StyleParser,
19
+ ): HeadingStyle {
20
+ val fontSize = parser.toPixelFromSP(map.getDouble("fontSize").toFloat())
21
+ val fontFamily = parser.parseString(map, "fontFamily")
22
+ val fontWeight = parser.parseString(map, "fontWeight", "normal")
23
+ val color = parser.parseColor(map, "color")
24
+ val marginTop = parser.toPixelFromDIP(map.getDouble("marginTop").toFloat())
25
+ val marginBottom = parser.toPixelFromDIP(map.getDouble("marginBottom").toFloat())
26
+ val lineHeightRaw = map.getDouble("lineHeight").toFloat()
27
+ val lineHeight = parser.toPixelFromSP(lineHeightRaw)
28
+ val textAlign = parser.parseTextAlign(map, "textAlign")
29
+
30
+ return HeadingStyle(fontSize, fontFamily, fontWeight, color, marginTop, marginBottom, lineHeight, textAlign)
31
+ }
32
+ }
33
+ }
@@ -1,19 +1,19 @@
1
- package com.renderrichtext.styles
2
-
3
- import com.facebook.react.bridge.ReadableMap
4
-
5
- data class HighlightStyle(
6
- val color: Int,
7
- val backgroundColor: Int,
8
- ) {
9
- companion object {
10
- fun fromReadableMap(
11
- map: ReadableMap,
12
- parser: StyleParser,
13
- ): HighlightStyle {
14
- val color = parser.parseColor(map, "color")
15
- val backgroundColor = parser.parseColor(map, "backgroundColor")
16
- return HighlightStyle(color, backgroundColor)
17
- }
18
- }
19
- }
1
+ package com.renderrichtext.styles
2
+
3
+ import com.facebook.react.bridge.ReadableMap
4
+
5
+ data class HighlightStyle(
6
+ val color: Int,
7
+ val backgroundColor: Int,
8
+ ) {
9
+ companion object {
10
+ fun fromReadableMap(
11
+ map: ReadableMap,
12
+ parser: StyleParser,
13
+ ): HighlightStyle {
14
+ val color = parser.parseColor(map, "color")
15
+ val backgroundColor = parser.parseColor(map, "backgroundColor")
16
+ return HighlightStyle(color, backgroundColor)
17
+ }
18
+ }
19
+ }
@@ -1,29 +1,29 @@
1
- package com.renderrichtext.styles
2
-
3
- import com.facebook.react.bridge.ReadableMap
4
-
5
- data class ImageStyle(
6
- val height: Float,
7
- val maxHeight: Float,
8
- val aspectRatio: Float,
9
- val resizeMode: String,
10
- val borderRadius: Float,
11
- val marginTop: Float,
12
- val marginBottom: Float,
13
- ) {
14
- companion object {
15
- fun fromReadableMap(
16
- map: ReadableMap,
17
- parser: StyleParser,
18
- ): ImageStyle {
19
- val height = parser.toPixelFromDIP(map.getDouble("height").toFloat())
20
- val maxHeight = parser.toPixelFromDIP(map.getDouble("maxHeight").toFloat())
21
- val aspectRatio = map.getDouble("aspectRatio").toFloat()
22
- val resizeMode = map.getString("resizeMode") ?: ""
23
- val borderRadius = parser.toPixelFromDIP(map.getDouble("borderRadius").toFloat())
24
- val marginTop = parser.toPixelFromDIP(map.getDouble("marginTop").toFloat())
25
- val marginBottom = parser.toPixelFromDIP(map.getDouble("marginBottom").toFloat())
26
- return ImageStyle(height, maxHeight, aspectRatio, resizeMode, borderRadius, marginTop, marginBottom)
27
- }
28
- }
29
- }
1
+ package com.renderrichtext.styles
2
+
3
+ import com.facebook.react.bridge.ReadableMap
4
+
5
+ data class ImageStyle(
6
+ val height: Float,
7
+ val maxHeight: Float,
8
+ val aspectRatio: Float,
9
+ val resizeMode: String,
10
+ val borderRadius: Float,
11
+ val marginTop: Float,
12
+ val marginBottom: Float,
13
+ ) {
14
+ companion object {
15
+ fun fromReadableMap(
16
+ map: ReadableMap,
17
+ parser: StyleParser,
18
+ ): ImageStyle {
19
+ val height = parser.toPixelFromDIP(map.getDouble("height").toFloat())
20
+ val maxHeight = parser.toPixelFromDIP(map.getDouble("maxHeight").toFloat())
21
+ val aspectRatio = map.getDouble("aspectRatio").toFloat()
22
+ val resizeMode = map.getString("resizeMode") ?: ""
23
+ val borderRadius = parser.toPixelFromDIP(map.getDouble("borderRadius").toFloat())
24
+ val marginTop = parser.toPixelFromDIP(map.getDouble("marginTop").toFloat())
25
+ val marginBottom = parser.toPixelFromDIP(map.getDouble("marginBottom").toFloat())
26
+ return ImageStyle(height, maxHeight, aspectRatio, resizeMode, borderRadius, marginTop, marginBottom)
27
+ }
28
+ }
29
+ }
@@ -1,17 +1,17 @@
1
- package com.renderrichtext.styles
2
-
3
- import com.facebook.react.bridge.ReadableMap
4
-
5
- data class InlineImageStyle(
6
- val size: Float,
7
- ) {
8
- companion object {
9
- fun fromReadableMap(
10
- map: ReadableMap,
11
- parser: StyleParser,
12
- ): InlineImageStyle {
13
- val size = parser.toPixelFromDIP(map.getDouble("size").toFloat())
14
- return InlineImageStyle(size)
15
- }
16
- }
17
- }
1
+ package com.renderrichtext.styles
2
+
3
+ import com.facebook.react.bridge.ReadableMap
4
+
5
+ data class InlineImageStyle(
6
+ val size: Float,
7
+ ) {
8
+ companion object {
9
+ fun fromReadableMap(
10
+ map: ReadableMap,
11
+ parser: StyleParser,
12
+ ): InlineImageStyle {
13
+ val size = parser.toPixelFromDIP(map.getDouble("size").toFloat())
14
+ return InlineImageStyle(size)
15
+ }
16
+ }
17
+ }
@@ -1,17 +1,17 @@
1
- package com.renderrichtext.styles
2
-
3
- import com.facebook.react.bridge.ReadableMap
4
-
5
- data class InlineMathStyle(
6
- val color: Int,
7
- ) {
8
- companion object {
9
- fun fromReadableMap(
10
- map: ReadableMap,
11
- parser: StyleParser,
12
- ): InlineMathStyle {
13
- val color = parser.parseColor(map, "color")
14
- return InlineMathStyle(color)
15
- }
16
- }
17
- }
1
+ package com.renderrichtext.styles
2
+
3
+ import com.facebook.react.bridge.ReadableMap
4
+
5
+ data class InlineMathStyle(
6
+ val color: Int,
7
+ ) {
8
+ companion object {
9
+ fun fromReadableMap(
10
+ map: ReadableMap,
11
+ parser: StyleParser,
12
+ ): InlineMathStyle {
13
+ val color = parser.parseColor(map, "color")
14
+ return InlineMathStyle(color)
15
+ }
16
+ }
17
+ }
@@ -1,36 +1,36 @@
1
- package com.renderrichtext.styles
2
-
3
- import com.facebook.react.bridge.ReadableMap
4
- import com.facebook.react.bridge.ReadableType
5
-
6
- /**
7
- * What a pill shows: the variant's default, or one specific link's override keyed by
8
- * exact URL in the `linkPillContent` prop. Empty strings mean "not set".
9
- */
10
- data class LinkPillContent(
11
- val label: String = "",
12
- val iconUri: String = "",
13
- /** Tint for this link's icon; null means none was set for the link. */
14
- val iconTintColor: Int? = null,
15
- ) {
16
- /**
17
- * Label and icon unset here take their value from [fallback]. The tint is left alone:
18
- * a variant's tint is for the variant's own icon, so the span decides when it applies.
19
- */
20
- fun orElse(fallback: LinkPillContent) =
21
- copy(
22
- label = label.ifEmpty { fallback.label },
23
- iconUri = iconUri.ifEmpty { fallback.iconUri },
24
- )
25
-
26
- companion object {
27
- fun fromReadableMap(map: ReadableMap): LinkPillContent {
28
- val hasTint = map.hasKey("iconTintColor") && map.getType("iconTintColor") == ReadableType.Number
29
- return LinkPillContent(
30
- label = map.getString("label") ?: "",
31
- iconUri = map.getString("iconUri") ?: "",
32
- iconTintColor = if (hasTint) map.getDouble("iconTintColor").toInt() else null,
33
- )
34
- }
35
- }
36
- }
1
+ package com.renderrichtext.styles
2
+
3
+ import com.facebook.react.bridge.ReadableMap
4
+ import com.facebook.react.bridge.ReadableType
5
+
6
+ /**
7
+ * What a pill shows: the variant's default, or one specific link's override keyed by
8
+ * exact URL in the `linkPillContent` prop. Empty strings mean "not set".
9
+ */
10
+ data class LinkPillContent(
11
+ val label: String = "",
12
+ val iconUri: String = "",
13
+ /** Tint for this link's icon; null means none was set for the link. */
14
+ val iconTintColor: Int? = null,
15
+ ) {
16
+ /**
17
+ * Label and icon unset here take their value from [fallback]. The tint is left alone:
18
+ * a variant's tint is for the variant's own icon, so the span decides when it applies.
19
+ */
20
+ fun orElse(fallback: LinkPillContent) =
21
+ copy(
22
+ label = label.ifEmpty { fallback.label },
23
+ iconUri = iconUri.ifEmpty { fallback.iconUri },
24
+ )
25
+
26
+ companion object {
27
+ fun fromReadableMap(map: ReadableMap): LinkPillContent {
28
+ val hasTint = map.hasKey("iconTintColor") && map.getType("iconTintColor") == ReadableType.Number
29
+ return LinkPillContent(
30
+ label = map.getString("label") ?: "",
31
+ iconUri = map.getString("iconUri") ?: "",
32
+ iconTintColor = if (hasTint) map.getDouble("iconTintColor").toInt() else null,
33
+ )
34
+ }
35
+ }
36
+ }
@@ -1,44 +1,44 @@
1
- package com.renderrichtext.styles
2
-
3
- import android.graphics.Color
4
- import android.graphics.ColorFilter
5
- import android.graphics.PorterDuff
6
- import android.graphics.PorterDuffColorFilter
7
- import com.facebook.react.bridge.ReadableMap
8
-
9
- /** Geometry and default content of a variant's pill. Dimensions are in pixels. */
10
- data class LinkPillStyle(
11
- val content: LinkPillContent = LinkPillContent(),
12
- val borderRadius: Float = 8f,
13
- val paddingHorizontal: Float = 6f,
14
- val paddingVertical: Float = 2f,
15
- /** Minimum line height of a block that holds the pill; 0 when unset. */
16
- val lineHeight: Float = 0f,
17
- val borderWidth: Float = 0f,
18
- val borderColor: Int = Color.TRANSPARENT,
19
- val maxWidth: Float = 0f,
20
- ) {
21
- /** Replaces the icon's colors and keeps its alpha; shared by every pill of the variant. */
22
- val iconTint: ColorFilter? = content.iconTintColor?.let { PorterDuffColorFilter(it, PorterDuff.Mode.SRC_IN) }
23
-
24
- companion object {
25
- /** Returns null when the variant does not enable pill presentation. */
26
- fun fromReadableMap(
27
- map: ReadableMap,
28
- parser: StyleParser,
29
- ): LinkPillStyle? {
30
- if (!parser.parseBoolean(map, "enabled")) return null
31
- return LinkPillStyle(
32
- content =
33
- LinkPillContent.fromReadableMap(map).copy(iconTintColor = parser.parseOptionalColor(map, "iconTintColor")),
34
- borderRadius = parser.toPixelFromDIP(parser.parseOptionalDouble(map, "borderRadius", 8.0).toFloat()),
35
- paddingHorizontal = parser.toPixelFromDIP(parser.parseOptionalDouble(map, "paddingHorizontal", 6.0).toFloat()),
36
- paddingVertical = parser.toPixelFromDIP(parser.parseOptionalDouble(map, "paddingVertical", 2.0).toFloat()),
37
- lineHeight = parser.toPixelFromSP(parser.parseOptionalDouble(map, "lineHeight").toFloat()),
38
- borderWidth = parser.toPixelFromDIP(parser.parseOptionalDouble(map, "borderWidth").toFloat()),
39
- borderColor = parser.parseOptionalColor(map, "borderColor") ?: Color.TRANSPARENT,
40
- maxWidth = parser.toPixelFromDIP(parser.parseOptionalDouble(map, "maxWidth").toFloat()),
41
- )
42
- }
43
- }
44
- }
1
+ package com.renderrichtext.styles
2
+
3
+ import android.graphics.Color
4
+ import android.graphics.ColorFilter
5
+ import android.graphics.PorterDuff
6
+ import android.graphics.PorterDuffColorFilter
7
+ import com.facebook.react.bridge.ReadableMap
8
+
9
+ /** Geometry and default content of a variant's pill. Dimensions are in pixels. */
10
+ data class LinkPillStyle(
11
+ val content: LinkPillContent = LinkPillContent(),
12
+ val borderRadius: Float = 8f,
13
+ val paddingHorizontal: Float = 6f,
14
+ val paddingVertical: Float = 2f,
15
+ /** Minimum line height of a block that holds the pill; 0 when unset. */
16
+ val lineHeight: Float = 0f,
17
+ val borderWidth: Float = 0f,
18
+ val borderColor: Int = Color.TRANSPARENT,
19
+ val maxWidth: Float = 0f,
20
+ ) {
21
+ /** Replaces the icon's colors and keeps its alpha; shared by every pill of the variant. */
22
+ val iconTint: ColorFilter? = content.iconTintColor?.let { PorterDuffColorFilter(it, PorterDuff.Mode.SRC_IN) }
23
+
24
+ companion object {
25
+ /** Returns null when the variant does not enable pill presentation. */
26
+ fun fromReadableMap(
27
+ map: ReadableMap,
28
+ parser: StyleParser,
29
+ ): LinkPillStyle? {
30
+ if (!parser.parseBoolean(map, "enabled")) return null
31
+ return LinkPillStyle(
32
+ content =
33
+ LinkPillContent.fromReadableMap(map).copy(iconTintColor = parser.parseOptionalColor(map, "iconTintColor")),
34
+ borderRadius = parser.toPixelFromDIP(parser.parseOptionalDouble(map, "borderRadius", 8.0).toFloat()),
35
+ paddingHorizontal = parser.toPixelFromDIP(parser.parseOptionalDouble(map, "paddingHorizontal", 6.0).toFloat()),
36
+ paddingVertical = parser.toPixelFromDIP(parser.parseOptionalDouble(map, "paddingVertical", 2.0).toFloat()),
37
+ lineHeight = parser.toPixelFromSP(parser.parseOptionalDouble(map, "lineHeight").toFloat()),
38
+ borderWidth = parser.toPixelFromDIP(parser.parseOptionalDouble(map, "borderWidth").toFloat()),
39
+ borderColor = parser.parseOptionalColor(map, "borderColor") ?: Color.TRANSPARENT,
40
+ maxWidth = parser.toPixelFromDIP(parser.parseOptionalDouble(map, "maxWidth").toFloat()),
41
+ )
42
+ }
43
+ }
44
+ }
@@ -1,23 +1,23 @@
1
- package com.renderrichtext.styles
2
-
3
- import com.facebook.react.bridge.ReadableMap
4
-
5
- data class LinkStyle(
6
- val fontFamily: String,
7
- val color: Int,
8
- val underline: Boolean,
9
- val backgroundColor: Int,
10
- ) {
11
- companion object {
12
- fun fromReadableMap(
13
- map: ReadableMap,
14
- parser: StyleParser,
15
- ): LinkStyle {
16
- val fontFamily = parser.parseString(map, "fontFamily")
17
- val color = parser.parseColor(map, "color")
18
- val underline = map.getBoolean("underline")
19
- val backgroundColor = parser.parseColor(map, "backgroundColor")
20
- return LinkStyle(fontFamily, color, underline, backgroundColor)
21
- }
22
- }
23
- }
1
+ package com.renderrichtext.styles
2
+
3
+ import com.facebook.react.bridge.ReadableMap
4
+
5
+ data class LinkStyle(
6
+ val fontFamily: String,
7
+ val color: Int,
8
+ val underline: Boolean,
9
+ val backgroundColor: Int,
10
+ ) {
11
+ companion object {
12
+ fun fromReadableMap(
13
+ map: ReadableMap,
14
+ parser: StyleParser,
15
+ ): LinkStyle {
16
+ val fontFamily = parser.parseString(map, "fontFamily")
17
+ val color = parser.parseColor(map, "color")
18
+ val underline = map.getBoolean("underline")
19
+ val backgroundColor = parser.parseColor(map, "backgroundColor")
20
+ return LinkStyle(fontFamily, color, underline, backgroundColor)
21
+ }
22
+ }
23
+ }
@@ -1,34 +1,34 @@
1
- package com.renderrichtext.styles
2
-
3
- import com.facebook.react.bridge.ReadableMap
4
-
5
- /**
6
- * Resolved style for a single URL-pattern variant.
7
- * The `pattern` field is a regex tested against the full URL in normalized order.
8
- * Fields are pre-merged with the base link style by the JS normalizer — native code
9
- * uses them directly without any additional fallback logic.
10
- */
11
- data class LinkVariantEntry(
12
- val pattern: String,
13
- val color: Int,
14
- val underline: Boolean,
15
- val backgroundColor: Int,
16
- val fontFamily: String = "",
17
- /** Pill presentation for links matching this variant; null renders an ordinary link. */
18
- val pill: LinkPillStyle? = null,
19
- ) {
20
- companion object {
21
- fun fromReadableMap(
22
- map: ReadableMap,
23
- parser: StyleParser,
24
- ): LinkVariantEntry =
25
- LinkVariantEntry(
26
- pattern = map.getString("pattern") ?: "",
27
- color = parser.parseColor(map, "color"),
28
- underline = parser.parseBoolean(map, "underline"),
29
- backgroundColor = parser.parseColor(map, "backgroundColor"),
30
- fontFamily = parser.parseString(map, "fontFamily"),
31
- pill = map.getMap("pill")?.let { LinkPillStyle.fromReadableMap(it, parser) },
32
- )
33
- }
34
- }
1
+ package com.renderrichtext.styles
2
+
3
+ import com.facebook.react.bridge.ReadableMap
4
+
5
+ /**
6
+ * Resolved style for a single URL-pattern variant.
7
+ * The `pattern` field is a regex tested against the full URL in normalized order.
8
+ * Fields are pre-merged with the base link style by the JS normalizer — native code
9
+ * uses them directly without any additional fallback logic.
10
+ */
11
+ data class LinkVariantEntry(
12
+ val pattern: String,
13
+ val color: Int,
14
+ val underline: Boolean,
15
+ val backgroundColor: Int,
16
+ val fontFamily: String = "",
17
+ /** Pill presentation for links matching this variant; null renders an ordinary link. */
18
+ val pill: LinkPillStyle? = null,
19
+ ) {
20
+ companion object {
21
+ fun fromReadableMap(
22
+ map: ReadableMap,
23
+ parser: StyleParser,
24
+ ): LinkVariantEntry =
25
+ LinkVariantEntry(
26
+ pattern = map.getString("pattern") ?: "",
27
+ color = parser.parseColor(map, "color"),
28
+ underline = parser.parseBoolean(map, "underline"),
29
+ backgroundColor = parser.parseColor(map, "backgroundColor"),
30
+ fontFamily = parser.parseString(map, "fontFamily"),
31
+ pill = map.getMap("pill")?.let { LinkPillStyle.fromReadableMap(it, parser) },
32
+ )
33
+ }
34
+ }