@mathers101/react-native-render-rich-text 0.1.9 → 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,28 +1,28 @@
1
- #pragma once
2
- #import "ENRMUIKit.h"
3
-
4
- #if !TARGET_OS_OSX
5
- NS_ASSUME_NONNULL_BEGIN
6
-
7
- /// Pill icons, kept small in one bounded cache. Local files decode synchronously, so a bundled
8
- /// icon is there on the first layout; every other source goes through the shared image
9
- /// downloader, like tiptap images, and arrives asynchronously.
10
-
11
- /// A local file icon, or nil when the source is not a readable local file.
12
- FOUNDATION_EXPORT UIImage *_Nullable ENRMLoadLinkPillIcon(NSString *_Nullable iconUri);
13
-
14
- FOUNDATION_EXPORT UIImage *_Nullable ENRMCachedLinkPillIcon(NSString *iconUri,
15
- NSDictionary<NSString *, NSString *> *_Nullable headers);
16
-
17
- /// YES for a while after an asynchronous load of this source failed; callers then do not
18
- /// reserve an icon slot. The source is tried again once that period has passed.
19
- FOUNDATION_EXPORT BOOL ENRMLinkPillIconDidFail(NSString *iconUri,
20
- NSDictionary<NSString *, NSString *> *_Nullable headers);
21
-
22
- /// Loads through the shared image pipeline. `completion` runs on the main thread; nil means the source failed.
23
- FOUNDATION_EXPORT void ENRMLoadLinkPillIconAsync(NSString *iconUri,
24
- NSDictionary<NSString *, NSString *> *_Nullable headers,
25
- void (^completion)(UIImage *_Nullable icon));
26
-
27
- NS_ASSUME_NONNULL_END
28
- #endif
1
+ #pragma once
2
+ #import "ENRMUIKit.h"
3
+
4
+ #if !TARGET_OS_OSX
5
+ NS_ASSUME_NONNULL_BEGIN
6
+
7
+ /// Pill icons, kept small in one bounded cache. Local files decode synchronously, so a bundled
8
+ /// icon is there on the first layout; every other source goes through the shared image
9
+ /// downloader, like tiptap images, and arrives asynchronously.
10
+
11
+ /// A local file icon, or nil when the source is not a readable local file.
12
+ FOUNDATION_EXPORT UIImage *_Nullable ENRMLoadLinkPillIcon(NSString *_Nullable iconUri);
13
+
14
+ FOUNDATION_EXPORT UIImage *_Nullable ENRMCachedLinkPillIcon(NSString *iconUri,
15
+ NSDictionary<NSString *, NSString *> *_Nullable headers);
16
+
17
+ /// YES for a while after an asynchronous load of this source failed; callers then do not
18
+ /// reserve an icon slot. The source is tried again once that period has passed.
19
+ FOUNDATION_EXPORT BOOL ENRMLinkPillIconDidFail(NSString *iconUri,
20
+ NSDictionary<NSString *, NSString *> *_Nullable headers);
21
+
22
+ /// Loads through the shared image pipeline. `completion` runs on the main thread; nil means the source failed.
23
+ FOUNDATION_EXPORT void ENRMLoadLinkPillIconAsync(NSString *iconUri,
24
+ NSDictionary<NSString *, NSString *> *_Nullable headers,
25
+ void (^completion)(UIImage *_Nullable icon));
26
+
27
+ NS_ASSUME_NONNULL_END
28
+ #endif
@@ -1,181 +1,181 @@
1
- #import "ENRMLinkPillIconCache.h"
2
- #import "ENRMImageDownloader.h"
3
- #import "ENRMLocalImageLoader.h"
4
- #if !TARGET_OS_OSX
5
- #import <ImageIO/ImageIO.h>
6
- #import <QuartzCore/QuartzCore.h>
7
-
8
- // Icons are drawn at the label's font size, so even a large heading at 3x needs few pixels.
9
- static const CGFloat kMaxIconPixelSize = 128;
10
-
11
- static NSCache<NSString *, UIImage *> *ENRMLinkPillIcons(void)
12
- {
13
- static NSCache<NSString *, UIImage *> *icons;
14
- static dispatch_once_t once;
15
- dispatch_once(&once, ^{
16
- icons = [NSCache new];
17
- icons.countLimit = 64;
18
- icons.totalCostLimit = 8 * 1024 * 1024;
19
- });
20
- return icons;
21
- }
22
-
23
- // A failed source is left alone for a while, so a broken URL is not requested on every
24
- // render, and then tried again, so a transient failure does not hide the icon for good.
25
- static const CFTimeInterval kFailedIconRetryInterval = 30;
26
-
27
- static NSCache<NSString *, NSNumber *> *ENRMFailedLinkPillIcons(void)
28
- {
29
- static NSCache<NSString *, NSNumber *> *failed;
30
- static dispatch_once_t once;
31
- dispatch_once(&once, ^{
32
- failed = [NSCache new];
33
- failed.countLimit = 256;
34
- });
35
- return failed;
36
- }
37
-
38
- // A local icon and the state of its file when it was decoded.
39
- @interface ENRMLocalLinkPillIcon : NSObject
40
- @property (nonatomic, strong) UIImage *image;
41
- @property (nonatomic, copy) NSString *path;
42
- @property (nonatomic, strong, nullable) NSDate *modified;
43
- @property (nonatomic, assign) unsigned long long fileSize;
44
- @property (nonatomic, assign) CFTimeInterval checkedAt;
45
- @end
46
-
47
- @implementation ENRMLocalLinkPillIcon
48
- @end
49
-
50
- // Every render asks for the same icons again, so the file is looked at no more than once
51
- // per interval; a file replaced under the same path is picked up after that.
52
- static const CFTimeInterval kLocalIconRevalidateInterval = 1;
53
-
54
- static NSCache<NSString *, ENRMLocalLinkPillIcon *> *ENRMLocalLinkPillIcons(void)
55
- {
56
- static NSCache<NSString *, ENRMLocalLinkPillIcon *> *icons;
57
- static dispatch_once_t once;
58
- dispatch_once(&once, ^{
59
- icons = [NSCache new];
60
- icons.countLimit = 64;
61
- icons.totalCostLimit = 8 * 1024 * 1024;
62
- });
63
- return icons;
64
- }
65
-
66
- static UIImage *ENRMDecodeLinkPillIcon(NSString *path)
67
- {
68
- CGImageSourceRef source = CGImageSourceCreateWithURL((__bridge CFURLRef)[NSURL fileURLWithPath:path], NULL);
69
- if (!source)
70
- return nil;
71
- NSDictionary *options = @{
72
- (__bridge NSString *)kCGImageSourceCreateThumbnailFromImageAlways : @YES,
73
- (__bridge NSString *)kCGImageSourceCreateThumbnailWithTransform : @YES,
74
- (__bridge NSString *)kCGImageSourceShouldCacheImmediately : @YES,
75
- (__bridge NSString *)kCGImageSourceThumbnailMaxPixelSize : @(kMaxIconPixelSize),
76
- };
77
- CGImageRef decoded = CGImageSourceCreateThumbnailAtIndex(source, 0, (__bridge CFDictionaryRef)options);
78
- CFRelease(source);
79
- if (!decoded)
80
- return nil;
81
- UIImage *image = [UIImage imageWithCGImage:decoded];
82
- CGImageRelease(decoded);
83
- return image;
84
- }
85
-
86
- UIImage *ENRMLoadLinkPillIcon(NSString *iconUri)
87
- {
88
- if (iconUri.length == 0)
89
- return nil;
90
- NSCache<NSString *, ENRMLocalLinkPillIcon *> *icons = ENRMLocalLinkPillIcons();
91
- ENRMLocalLinkPillIcon *cached = [icons objectForKey:iconUri];
92
- CFTimeInterval now = CACurrentMediaTime();
93
- if (cached && now - cached.checkedAt < kLocalIconRevalidateInterval)
94
- return cached.image;
95
-
96
- NSString *path = cached.path ?: ENRMResolveLocalImagePath(iconUri);
97
- if (!path)
98
- return nil;
99
- NSDictionary *attributes = [NSFileManager.defaultManager attributesOfItemAtPath:path error:nil];
100
- NSDate *modified = attributes[NSFileModificationDate];
101
- unsigned long long fileSize = [attributes[NSFileSize] unsignedLongLongValue];
102
- if (cached && attributes && cached.fileSize == fileSize && [cached.modified isEqualToDate:modified]) {
103
- cached.checkedAt = now;
104
- return cached.image;
105
- }
106
-
107
- UIImage *image = attributes ? ENRMDecodeLinkPillIcon(path) : nil;
108
- if (!image) {
109
- [icons removeObjectForKey:iconUri];
110
- return nil;
111
- }
112
- ENRMLocalLinkPillIcon *entry = [ENRMLocalLinkPillIcon new];
113
- entry.image = image;
114
- entry.path = path;
115
- entry.modified = modified;
116
- entry.fileSize = fileSize;
117
- entry.checkedAt = now;
118
- [icons setObject:entry forKey:iconUri cost:ENRMImageByteCost(image)];
119
- return image;
120
- }
121
-
122
- UIImage *ENRMCachedLinkPillIcon(NSString *iconUri, NSDictionary<NSString *, NSString *> *headers)
123
- {
124
- return [ENRMLinkPillIcons() objectForKey:ENRMImageCacheKey(iconUri, headers)];
125
- }
126
-
127
- BOOL ENRMLinkPillIconDidFail(NSString *iconUri, NSDictionary<NSString *, NSString *> *headers)
128
- {
129
- NSString *key = ENRMImageCacheKey(iconUri, headers);
130
- NSNumber *failedAt = [ENRMFailedLinkPillIcons() objectForKey:key];
131
- if (!failedAt)
132
- return NO;
133
- if (CACurrentMediaTime() - failedAt.doubleValue < kFailedIconRetryInterval)
134
- return YES;
135
- [ENRMFailedLinkPillIcons() removeObjectForKey:key];
136
- return NO;
137
- }
138
-
139
- static UIImage *ENRMLinkPillThumbnail(UIImage *image)
140
- {
141
- CGFloat pixelWidth = image.size.width * image.scale;
142
- CGFloat pixelHeight = image.size.height * image.scale;
143
- CGFloat longest = MAX(pixelWidth, pixelHeight);
144
- if (longest <= kMaxIconPixelSize || longest <= 0)
145
- return image;
146
- CGFloat ratio = kMaxIconPixelSize / longest;
147
- CGSize size = CGSizeMake(MAX(1, floor(pixelWidth * ratio)), MAX(1, floor(pixelHeight * ratio)));
148
- UIGraphicsImageRendererFormat *format = [UIGraphicsImageRendererFormat preferredFormat];
149
- format.scale = 1;
150
- format.opaque = NO;
151
- UIGraphicsImageRenderer *renderer = [[UIGraphicsImageRenderer alloc] initWithSize:size format:format];
152
- return [renderer imageWithActions:^(UIGraphicsImageRendererContext *context) {
153
- [image drawInRect:(CGRect){CGPointZero, size}];
154
- }];
155
- }
156
-
157
- void ENRMLoadLinkPillIconAsync(NSString *iconUri, NSDictionary<NSString *, NSString *> *headers,
158
- void (^completion)(UIImage *_Nullable icon))
159
- {
160
- NSString *key = ENRMImageCacheKey(iconUri, headers);
161
- [[ENRMImageDownloader shared] downloadURL:iconUri
162
- headers:headers
163
- completion:^(RCTUIImage *image) {
164
- // Drawn pills are cached by icon identity: every pill waiting
165
- // for this icon gets the same image.
166
- UIImage *icon = [ENRMLinkPillIcons() objectForKey:key];
167
- if (!icon && image) {
168
- icon = ENRMLinkPillThumbnail(image);
169
- [ENRMLinkPillIcons() setObject:icon forKey:key cost:ENRMImageByteCost(icon)];
170
- }
171
- if (!icon) {
172
- [ENRMFailedLinkPillIcons() setObject:@(CACurrentMediaTime()) forKey:key];
173
- }
174
- if (NSThread.isMainThread) {
175
- completion(icon);
176
- } else {
177
- dispatch_async(dispatch_get_main_queue(), ^{ completion(icon); });
178
- }
179
- }];
180
- }
181
- #endif
1
+ #import "ENRMLinkPillIconCache.h"
2
+ #import "ENRMImageDownloader.h"
3
+ #import "ENRMLocalImageLoader.h"
4
+ #if !TARGET_OS_OSX
5
+ #import <ImageIO/ImageIO.h>
6
+ #import <QuartzCore/QuartzCore.h>
7
+
8
+ // Icons are drawn at the label's font size, so even a large heading at 3x needs few pixels.
9
+ static const CGFloat kMaxIconPixelSize = 128;
10
+
11
+ static NSCache<NSString *, UIImage *> *ENRMLinkPillIcons(void)
12
+ {
13
+ static NSCache<NSString *, UIImage *> *icons;
14
+ static dispatch_once_t once;
15
+ dispatch_once(&once, ^{
16
+ icons = [NSCache new];
17
+ icons.countLimit = 64;
18
+ icons.totalCostLimit = 8 * 1024 * 1024;
19
+ });
20
+ return icons;
21
+ }
22
+
23
+ // A failed source is left alone for a while, so a broken URL is not requested on every
24
+ // render, and then tried again, so a transient failure does not hide the icon for good.
25
+ static const CFTimeInterval kFailedIconRetryInterval = 30;
26
+
27
+ static NSCache<NSString *, NSNumber *> *ENRMFailedLinkPillIcons(void)
28
+ {
29
+ static NSCache<NSString *, NSNumber *> *failed;
30
+ static dispatch_once_t once;
31
+ dispatch_once(&once, ^{
32
+ failed = [NSCache new];
33
+ failed.countLimit = 256;
34
+ });
35
+ return failed;
36
+ }
37
+
38
+ // A local icon and the state of its file when it was decoded.
39
+ @interface ENRMLocalLinkPillIcon : NSObject
40
+ @property (nonatomic, strong) UIImage *image;
41
+ @property (nonatomic, copy) NSString *path;
42
+ @property (nonatomic, strong, nullable) NSDate *modified;
43
+ @property (nonatomic, assign) unsigned long long fileSize;
44
+ @property (nonatomic, assign) CFTimeInterval checkedAt;
45
+ @end
46
+
47
+ @implementation ENRMLocalLinkPillIcon
48
+ @end
49
+
50
+ // Every render asks for the same icons again, so the file is looked at no more than once
51
+ // per interval; a file replaced under the same path is picked up after that.
52
+ static const CFTimeInterval kLocalIconRevalidateInterval = 1;
53
+
54
+ static NSCache<NSString *, ENRMLocalLinkPillIcon *> *ENRMLocalLinkPillIcons(void)
55
+ {
56
+ static NSCache<NSString *, ENRMLocalLinkPillIcon *> *icons;
57
+ static dispatch_once_t once;
58
+ dispatch_once(&once, ^{
59
+ icons = [NSCache new];
60
+ icons.countLimit = 64;
61
+ icons.totalCostLimit = 8 * 1024 * 1024;
62
+ });
63
+ return icons;
64
+ }
65
+
66
+ static UIImage *ENRMDecodeLinkPillIcon(NSString *path)
67
+ {
68
+ CGImageSourceRef source = CGImageSourceCreateWithURL((__bridge CFURLRef)[NSURL fileURLWithPath:path], NULL);
69
+ if (!source)
70
+ return nil;
71
+ NSDictionary *options = @{
72
+ (__bridge NSString *)kCGImageSourceCreateThumbnailFromImageAlways : @YES,
73
+ (__bridge NSString *)kCGImageSourceCreateThumbnailWithTransform : @YES,
74
+ (__bridge NSString *)kCGImageSourceShouldCacheImmediately : @YES,
75
+ (__bridge NSString *)kCGImageSourceThumbnailMaxPixelSize : @(kMaxIconPixelSize),
76
+ };
77
+ CGImageRef decoded = CGImageSourceCreateThumbnailAtIndex(source, 0, (__bridge CFDictionaryRef)options);
78
+ CFRelease(source);
79
+ if (!decoded)
80
+ return nil;
81
+ UIImage *image = [UIImage imageWithCGImage:decoded];
82
+ CGImageRelease(decoded);
83
+ return image;
84
+ }
85
+
86
+ UIImage *ENRMLoadLinkPillIcon(NSString *iconUri)
87
+ {
88
+ if (iconUri.length == 0)
89
+ return nil;
90
+ NSCache<NSString *, ENRMLocalLinkPillIcon *> *icons = ENRMLocalLinkPillIcons();
91
+ ENRMLocalLinkPillIcon *cached = [icons objectForKey:iconUri];
92
+ CFTimeInterval now = CACurrentMediaTime();
93
+ if (cached && now - cached.checkedAt < kLocalIconRevalidateInterval)
94
+ return cached.image;
95
+
96
+ NSString *path = cached.path ?: ENRMResolveLocalImagePath(iconUri);
97
+ if (!path)
98
+ return nil;
99
+ NSDictionary *attributes = [NSFileManager.defaultManager attributesOfItemAtPath:path error:nil];
100
+ NSDate *modified = attributes[NSFileModificationDate];
101
+ unsigned long long fileSize = [attributes[NSFileSize] unsignedLongLongValue];
102
+ if (cached && attributes && cached.fileSize == fileSize && [cached.modified isEqualToDate:modified]) {
103
+ cached.checkedAt = now;
104
+ return cached.image;
105
+ }
106
+
107
+ UIImage *image = attributes ? ENRMDecodeLinkPillIcon(path) : nil;
108
+ if (!image) {
109
+ [icons removeObjectForKey:iconUri];
110
+ return nil;
111
+ }
112
+ ENRMLocalLinkPillIcon *entry = [ENRMLocalLinkPillIcon new];
113
+ entry.image = image;
114
+ entry.path = path;
115
+ entry.modified = modified;
116
+ entry.fileSize = fileSize;
117
+ entry.checkedAt = now;
118
+ [icons setObject:entry forKey:iconUri cost:ENRMImageByteCost(image)];
119
+ return image;
120
+ }
121
+
122
+ UIImage *ENRMCachedLinkPillIcon(NSString *iconUri, NSDictionary<NSString *, NSString *> *headers)
123
+ {
124
+ return [ENRMLinkPillIcons() objectForKey:ENRMImageCacheKey(iconUri, headers)];
125
+ }
126
+
127
+ BOOL ENRMLinkPillIconDidFail(NSString *iconUri, NSDictionary<NSString *, NSString *> *headers)
128
+ {
129
+ NSString *key = ENRMImageCacheKey(iconUri, headers);
130
+ NSNumber *failedAt = [ENRMFailedLinkPillIcons() objectForKey:key];
131
+ if (!failedAt)
132
+ return NO;
133
+ if (CACurrentMediaTime() - failedAt.doubleValue < kFailedIconRetryInterval)
134
+ return YES;
135
+ [ENRMFailedLinkPillIcons() removeObjectForKey:key];
136
+ return NO;
137
+ }
138
+
139
+ static UIImage *ENRMLinkPillThumbnail(UIImage *image)
140
+ {
141
+ CGFloat pixelWidth = image.size.width * image.scale;
142
+ CGFloat pixelHeight = image.size.height * image.scale;
143
+ CGFloat longest = MAX(pixelWidth, pixelHeight);
144
+ if (longest <= kMaxIconPixelSize || longest <= 0)
145
+ return image;
146
+ CGFloat ratio = kMaxIconPixelSize / longest;
147
+ CGSize size = CGSizeMake(MAX(1, floor(pixelWidth * ratio)), MAX(1, floor(pixelHeight * ratio)));
148
+ UIGraphicsImageRendererFormat *format = [UIGraphicsImageRendererFormat preferredFormat];
149
+ format.scale = 1;
150
+ format.opaque = NO;
151
+ UIGraphicsImageRenderer *renderer = [[UIGraphicsImageRenderer alloc] initWithSize:size format:format];
152
+ return [renderer imageWithActions:^(UIGraphicsImageRendererContext *context) {
153
+ [image drawInRect:(CGRect){CGPointZero, size}];
154
+ }];
155
+ }
156
+
157
+ void ENRMLoadLinkPillIconAsync(NSString *iconUri, NSDictionary<NSString *, NSString *> *headers,
158
+ void (^completion)(UIImage *_Nullable icon))
159
+ {
160
+ NSString *key = ENRMImageCacheKey(iconUri, headers);
161
+ [[ENRMImageDownloader shared] downloadURL:iconUri
162
+ headers:headers
163
+ completion:^(RCTUIImage *image) {
164
+ // Drawn pills are cached by icon identity: every pill waiting
165
+ // for this icon gets the same image.
166
+ UIImage *icon = [ENRMLinkPillIcons() objectForKey:key];
167
+ if (!icon && image) {
168
+ icon = ENRMLinkPillThumbnail(image);
169
+ [ENRMLinkPillIcons() setObject:icon forKey:key cost:ENRMImageByteCost(icon)];
170
+ }
171
+ if (!icon) {
172
+ [ENRMFailedLinkPillIcons() setObject:@(CACurrentMediaTime()) forKey:key];
173
+ }
174
+ if (NSThread.isMainThread) {
175
+ completion(icon);
176
+ } else {
177
+ dispatch_async(dispatch_get_main_queue(), ^{ completion(icon); });
178
+ }
179
+ }];
180
+ }
181
+ #endif
@@ -1,27 +1,27 @@
1
- #pragma once
2
- #import "ENRMUIKit.h"
3
-
4
- NS_ASSUME_NONNULL_BEGIN
5
-
6
- /**
7
- * In text storage a link pill is one placeholder character. Wherever text leaves the
8
- * view it must carry the link text again: the Tiptap, HTML and RTF exporters expand
9
- * pills themselves, and code that reads plain text out of storage calls these functions.
10
- * On macOS, where pills are not rendered, they return their input unchanged.
11
- */
12
-
13
- /**
14
- * Returns `text` with every pill placeholder replaced by the link content it stands for,
15
- * or `text` itself when it holds no pills. `ioRange`, when given, is a range in `text` on
16
- * input and the matching range in the result on output.
17
- */
18
- FOUNDATION_EXPORT NSAttributedString *ENRMAttributedStringByExpandingLinkPills(NSAttributedString *text,
19
- NSRange *_Nullable ioRange);
20
-
21
- FOUNDATION_EXPORT NSString *ENRMStringByExpandingLinkPills(NSAttributedString *text);
22
-
23
- /// Enclosing strong/emphasis restyle the placeholder after the pill was created. Run once
24
- /// rendering is finished so each label uses the font ordinary link text would have.
25
- FOUNDATION_EXPORT void ENRMLinkPillsAdoptPlaceholderFonts(NSAttributedString *text);
26
-
27
- NS_ASSUME_NONNULL_END
1
+ #pragma once
2
+ #import "ENRMUIKit.h"
3
+
4
+ NS_ASSUME_NONNULL_BEGIN
5
+
6
+ /**
7
+ * In text storage a link pill is one placeholder character. Wherever text leaves the
8
+ * view it must carry the link text again: the Tiptap, HTML and RTF exporters expand
9
+ * pills themselves, and code that reads plain text out of storage calls these functions.
10
+ * On macOS, where pills are not rendered, they return their input unchanged.
11
+ */
12
+
13
+ /**
14
+ * Returns `text` with every pill placeholder replaced by the link content it stands for,
15
+ * or `text` itself when it holds no pills. `ioRange`, when given, is a range in `text` on
16
+ * input and the matching range in the result on output.
17
+ */
18
+ FOUNDATION_EXPORT NSAttributedString *ENRMAttributedStringByExpandingLinkPills(NSAttributedString *text,
19
+ NSRange *_Nullable ioRange);
20
+
21
+ FOUNDATION_EXPORT NSString *ENRMStringByExpandingLinkPills(NSAttributedString *text);
22
+
23
+ /// Enclosing strong/emphasis restyle the placeholder after the pill was created. Run once
24
+ /// rendering is finished so each label uses the font ordinary link text would have.
25
+ FOUNDATION_EXPORT void ENRMLinkPillsAdoptPlaceholderFonts(NSAttributedString *text);
26
+
27
+ NS_ASSUME_NONNULL_END