@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.
- package/LICENSE +20 -20
- package/README.md +140 -140
- package/ReactNativeRenderRichText.podspec +23 -23
- package/android/build.gradle +86 -86
- package/android/consumer-rules.pro +3 -3
- package/android/src/main/AndroidManifest.xml +2 -2
- package/android/src/main/java/com/renderrichtext/EnrichedTiptapTextLayoutManager.kt +24 -24
- package/android/src/main/java/com/renderrichtext/EnrichedTiptapTextPackage.kt +13 -13
- package/android/src/main/java/com/renderrichtext/MeasurementStore.kt +644 -644
- package/android/src/main/java/com/renderrichtext/accessibility/AccessibilityLabels.kt +17 -17
- package/android/src/main/java/com/renderrichtext/accessibility/AccessibleTiptapTextView.kt +112 -112
- package/android/src/main/java/com/renderrichtext/accessibility/TiptapAccessibilityHelper.kt +576 -576
- package/android/src/main/java/com/renderrichtext/events/CodeBlockPressEvent.kt +24 -24
- package/android/src/main/java/com/renderrichtext/events/ContextMenuItemPressEvent.kt +28 -28
- package/android/src/main/java/com/renderrichtext/events/CopyPressEvent.kt +24 -24
- package/android/src/main/java/com/renderrichtext/events/ImagePressEvent.kt +25 -25
- package/android/src/main/java/com/renderrichtext/events/LatexErrorEvent.kt +29 -29
- package/android/src/main/java/com/renderrichtext/events/LinkLongPressEvent.kt +23 -23
- package/android/src/main/java/com/renderrichtext/events/LinkPressEvent.kt +23 -23
- package/android/src/main/java/com/renderrichtext/events/MentionLongPressEvent.kt +25 -25
- package/android/src/main/java/com/renderrichtext/events/MentionPressEvent.kt +25 -25
- package/android/src/main/java/com/renderrichtext/events/TaskListItemPressEvent.kt +26 -26
- package/android/src/main/java/com/renderrichtext/math/LatexErrorReporter.kt +9 -9
- package/android/src/main/java/com/renderrichtext/parser/Parser.kt +59 -59
- package/android/src/main/java/com/renderrichtext/parser/TextLinkMatching.kt +35 -35
- package/android/src/main/java/com/renderrichtext/renderer/BaselineShiftRenderer.kt +45 -45
- package/android/src/main/java/com/renderrichtext/renderer/BlankLineRenderer.kt +39 -39
- package/android/src/main/java/com/renderrichtext/renderer/BlockquoteRenderer.kt +243 -243
- package/android/src/main/java/com/renderrichtext/renderer/BlockquoteTextRenderer.kt +56 -56
- package/android/src/main/java/com/renderrichtext/renderer/CodeBlockRenderer.kt +135 -135
- package/android/src/main/java/com/renderrichtext/renderer/CodeRenderer.kt +37 -37
- package/android/src/main/java/com/renderrichtext/renderer/EmphasisRenderer.kt +28 -28
- package/android/src/main/java/com/renderrichtext/renderer/HeadingRenderer.kt +81 -81
- package/android/src/main/java/com/renderrichtext/renderer/HighlightRenderer.kt +26 -26
- package/android/src/main/java/com/renderrichtext/renderer/LineBreakRenderer.kt +17 -17
- package/android/src/main/java/com/renderrichtext/renderer/LinkRenderer.kt +90 -90
- package/android/src/main/java/com/renderrichtext/renderer/ListContextManager.kt +109 -109
- package/android/src/main/java/com/renderrichtext/renderer/ListItemRenderer.kt +211 -211
- package/android/src/main/java/com/renderrichtext/renderer/ListRenderer.kt +133 -133
- package/android/src/main/java/com/renderrichtext/renderer/MentionRenderer.kt +85 -85
- package/android/src/main/java/com/renderrichtext/renderer/ParagraphRenderer.kt +91 -91
- package/android/src/main/java/com/renderrichtext/renderer/Renderer.kt +148 -148
- package/android/src/main/java/com/renderrichtext/renderer/SoftBreakRenderer.kt +17 -17
- package/android/src/main/java/com/renderrichtext/renderer/SpanStyleCache.kt +143 -143
- package/android/src/main/java/com/renderrichtext/renderer/StrikethroughRenderer.kt +28 -28
- package/android/src/main/java/com/renderrichtext/renderer/StrongRenderer.kt +28 -28
- package/android/src/main/java/com/renderrichtext/renderer/TextRenderer.kt +31 -31
- package/android/src/main/java/com/renderrichtext/renderer/ThematicBreakRenderer.kt +46 -46
- package/android/src/main/java/com/renderrichtext/renderer/UnderlineRenderer.kt +28 -28
- package/android/src/main/java/com/renderrichtext/spans/BaseListSpan.kt +164 -164
- package/android/src/main/java/com/renderrichtext/spans/BaselineShiftSpan.kt +27 -27
- package/android/src/main/java/com/renderrichtext/spans/BlockquoteSpan.kt +302 -302
- package/android/src/main/java/com/renderrichtext/spans/CodeBackgroundSpan.kt +205 -205
- package/android/src/main/java/com/renderrichtext/spans/CodeBlockSpan.kt +216 -216
- package/android/src/main/java/com/renderrichtext/spans/CodeSpan.kt +32 -32
- package/android/src/main/java/com/renderrichtext/spans/EmphasisSpan.kt +42 -42
- package/android/src/main/java/com/renderrichtext/spans/FadeInSpan.kt +29 -29
- package/android/src/main/java/com/renderrichtext/spans/HeadingSpan.kt +38 -38
- package/android/src/main/java/com/renderrichtext/spans/HighlightSpan.kt +80 -80
- package/android/src/main/java/com/renderrichtext/spans/ImageSpan.kt +481 -481
- package/android/src/main/java/com/renderrichtext/spans/InlineBackgroundGeometry.kt +42 -42
- package/android/src/main/java/com/renderrichtext/spans/LineHeightSpan.kt +39 -39
- package/android/src/main/java/com/renderrichtext/spans/LinkPillIconCache.kt +154 -154
- package/android/src/main/java/com/renderrichtext/spans/LinkPillSpan.kt +381 -381
- package/android/src/main/java/com/renderrichtext/spans/LinkSpan.kt +68 -68
- package/android/src/main/java/com/renderrichtext/spans/ListItemSpacingSpan.kt +33 -33
- package/android/src/main/java/com/renderrichtext/spans/ListMarkerAnchorSpan.kt +38 -38
- package/android/src/main/java/com/renderrichtext/spans/MarginBottomSpan.kt +76 -76
- package/android/src/main/java/com/renderrichtext/spans/MentionChipSpan.kt +132 -132
- package/android/src/main/java/com/renderrichtext/spans/MentionSpan.kt +46 -46
- package/android/src/main/java/com/renderrichtext/spans/OrderedListSpan.kt +127 -127
- package/android/src/main/java/com/renderrichtext/spans/SpoilerSpan.kt +33 -33
- package/android/src/main/java/com/renderrichtext/spans/StrikethroughSpan.kt +12 -12
- package/android/src/main/java/com/renderrichtext/spans/StrongSpan.kt +39 -39
- package/android/src/main/java/com/renderrichtext/spans/TaskListSpan.kt +143 -143
- package/android/src/main/java/com/renderrichtext/spans/TextSpan.kt +26 -26
- package/android/src/main/java/com/renderrichtext/spans/ThematicBreakSpan.kt +69 -69
- package/android/src/main/java/com/renderrichtext/spans/UnorderedListSpan.kt +96 -96
- package/android/src/main/java/com/renderrichtext/spoiler/SpoilerStubs.kt +46 -46
- package/android/src/main/java/com/renderrichtext/styles/BaseBlockStyle.kt +11 -11
- package/android/src/main/java/com/renderrichtext/styles/BlockquoteStyle.kt +83 -83
- package/android/src/main/java/com/renderrichtext/styles/CodeBlockStyle.kt +80 -80
- package/android/src/main/java/com/renderrichtext/styles/CodeStyle.kt +26 -26
- package/android/src/main/java/com/renderrichtext/styles/EmphasisStyle.kt +21 -21
- package/android/src/main/java/com/renderrichtext/styles/FactoidStyle.kt +21 -21
- package/android/src/main/java/com/renderrichtext/styles/HeadingStyle.kt +33 -33
- package/android/src/main/java/com/renderrichtext/styles/HighlightStyle.kt +19 -19
- package/android/src/main/java/com/renderrichtext/styles/ImageStyle.kt +29 -29
- package/android/src/main/java/com/renderrichtext/styles/InlineImageStyle.kt +17 -17
- package/android/src/main/java/com/renderrichtext/styles/InlineMathStyle.kt +17 -17
- package/android/src/main/java/com/renderrichtext/styles/LinkPillContent.kt +36 -36
- package/android/src/main/java/com/renderrichtext/styles/LinkPillStyle.kt +44 -44
- package/android/src/main/java/com/renderrichtext/styles/LinkStyle.kt +23 -23
- package/android/src/main/java/com/renderrichtext/styles/LinkVariantEntry.kt +34 -34
- package/android/src/main/java/com/renderrichtext/styles/ListStyle.kt +65 -65
- package/android/src/main/java/com/renderrichtext/styles/MathStyle.kt +29 -29
- package/android/src/main/java/com/renderrichtext/styles/MentionStyle.kt +19 -19
- package/android/src/main/java/com/renderrichtext/styles/ParagraphStyle.kt +33 -33
- package/android/src/main/java/com/renderrichtext/styles/SpoilerStyle.kt +27 -27
- package/android/src/main/java/com/renderrichtext/styles/StrikethroughStyle.kt +17 -17
- package/android/src/main/java/com/renderrichtext/styles/StrongStyle.kt +21 -21
- package/android/src/main/java/com/renderrichtext/styles/StyleConfig.kt +411 -411
- package/android/src/main/java/com/renderrichtext/styles/StyleParser.kt +92 -92
- package/android/src/main/java/com/renderrichtext/styles/SubscriptStyle.kt +16 -16
- package/android/src/main/java/com/renderrichtext/styles/SuperscriptStyle.kt +16 -16
- package/android/src/main/java/com/renderrichtext/styles/TableStyle.kt +75 -75
- package/android/src/main/java/com/renderrichtext/styles/TaskListStyle.kt +29 -29
- package/android/src/main/java/com/renderrichtext/styles/TextAlignment.kt +32 -32
- package/android/src/main/java/com/renderrichtext/styles/ThematicBreakStyle.kt +23 -23
- package/android/src/main/java/com/renderrichtext/styles/UnderlineStyle.kt +17 -17
- package/android/src/main/java/com/renderrichtext/styles/VideoStyle.kt +31 -31
- package/android/src/main/java/com/renderrichtext/utils/common/BorderStyleUtils.kt +86 -86
- package/android/src/main/java/com/renderrichtext/utils/common/BreakStrategyUtils.kt +32 -32
- package/android/src/main/java/com/renderrichtext/utils/common/CodeBlockHighlighter.kt +36 -36
- package/android/src/main/java/com/renderrichtext/utils/common/CodeBlockNode.kt +42 -42
- package/android/src/main/java/com/renderrichtext/utils/common/EllipsizeUtils.kt +27 -27
- package/android/src/main/java/com/renderrichtext/utils/common/EnrichedTiptapAncestorUtils.kt +10 -10
- package/android/src/main/java/com/renderrichtext/utils/common/FeatureFlags.kt +9 -9
- package/android/src/main/java/com/renderrichtext/utils/common/LinkRecognitionProps.kt +31 -31
- package/android/src/main/java/com/renderrichtext/utils/common/LinkRegexConfig.kt +56 -56
- package/android/src/main/java/com/renderrichtext/utils/common/MotionPreferences.kt +18 -18
- package/android/src/main/java/com/renderrichtext/utils/common/ReadableMapExtensions.kt +28 -28
- package/android/src/main/java/com/renderrichtext/utils/common/layout/RTLUtils.kt +6 -6
- package/android/src/main/java/com/renderrichtext/utils/common/serialization/TiptapASTSerializer.kt +368 -368
- package/android/src/main/java/com/renderrichtext/utils/text/ImageCache.kt +88 -88
- package/android/src/main/java/com/renderrichtext/utils/text/ImageDownloader.kt +203 -203
- package/android/src/main/java/com/renderrichtext/utils/text/LocalImageLoader.kt +167 -167
- package/android/src/main/java/com/renderrichtext/utils/text/TailFadeInAnimator.kt +84 -84
- package/android/src/main/java/com/renderrichtext/utils/text/conversion/HTMLGenerator.kt +1105 -1105
- package/android/src/main/java/com/renderrichtext/utils/text/conversion/TiptapExtractor.kt +423 -423
- package/android/src/main/java/com/renderrichtext/utils/text/extensions/ParagraphUtils.kt +9 -9
- package/android/src/main/java/com/renderrichtext/utils/text/extensions/SpannableExtensions.kt +9 -9
- package/android/src/main/java/com/renderrichtext/utils/text/extensions/TextPaintExtensions.kt +76 -76
- package/android/src/main/java/com/renderrichtext/utils/text/interaction/CheckboxTouchHelper.kt +61 -61
- package/android/src/main/java/com/renderrichtext/utils/text/interaction/TaskListTapUtils.kt +286 -286
- package/android/src/main/java/com/renderrichtext/utils/text/span/ApplyLineHeight.kt +39 -39
- package/android/src/main/java/com/renderrichtext/utils/text/span/BlockSpacing.kt +142 -142
- package/android/src/main/java/com/renderrichtext/utils/text/span/SpanFlags.kt +43 -43
- package/android/src/main/java/com/renderrichtext/utils/text/span/WidthAwareSpans.kt +30 -30
- package/android/src/main/java/com/renderrichtext/utils/text/view/CodeBlockPressHost.kt +15 -15
- package/android/src/main/java/com/renderrichtext/utils/text/view/ImagePressHost.kt +19 -19
- package/android/src/main/java/com/renderrichtext/utils/text/view/SelectionActionMode.kt +235 -235
- package/android/src/main/java/com/renderrichtext/utils/text/view/TextSelectionColors.kt +48 -48
- package/android/src/main/java/com/renderrichtext/utils/text/view/TextViewSetup.kt +119 -119
- package/android/src/main/java/com/renderrichtext/views/ContextMenuPopup.kt +217 -217
- package/android/src/main/java/com/renderrichtext/views/CopyGlyph.kt +101 -101
- package/android/src/main/java/com/renderrichtext/views/WrapGlyph.kt +40 -40
- package/android/src/main/jni/CMakeLists.txt +52 -52
- package/android/src/main/jni/react/renderer/components/RichTextSpec/ComponentDescriptors.h +30 -30
- package/android/src/main/jni/react/renderer/components/RichTextSpec/TiptapTextComponentDescriptor.h +29 -29
- package/android/src/main/jni/react/renderer/components/RichTextSpec/TiptapTextMeasurementManager.cpp +45 -45
- package/android/src/main/jni/react/renderer/components/RichTextSpec/TiptapTextMeasurementManager.h +21 -21
- package/android/src/main/jni/react/renderer/components/RichTextSpec/TiptapTextShadowNode.cpp +38 -38
- package/android/src/main/jni/react/renderer/components/RichTextSpec/TiptapTextShadowNode.h +53 -53
- package/android/src/main/jni/react/renderer/components/RichTextSpec/TiptapTextState.cpp +9 -9
- package/android/src/main/jni/react/renderer/components/RichTextSpec/TiptapTextState.h +24 -24
- package/android/src/main/jni/react/renderer/components/RichTextSpec/conversions.h +40 -40
- package/cpp/parser/TiptapParser.hpp +13 -13
- package/cpp/vendor/nlohmann/json.hpp +24765 -24765
- package/ios/EnrichedTiptapText.h +27 -27
- package/ios/attachments/ENRMImageAttachment.h +51 -51
- package/ios/attachments/ENRMImageAttachment.m +398 -398
- package/ios/attachments/ENRMLinkPillAttachment.h +47 -47
- package/ios/attachments/ENRMLinkPillAttachment.m +324 -324
- package/ios/attachments/ENRMLinkPillIconCache.h +28 -28
- package/ios/attachments/ENRMLinkPillIconCache.m +181 -181
- package/ios/attachments/ENRMLinkPillText.h +27 -27
- package/ios/attachments/ENRMLinkPillText.m +118 -118
- package/ios/attachments/ENRMMathInlineAttachment.h +7 -7
- package/ios/attachments/ENRMMathInlineAttachment.m +4 -4
- package/ios/attachments/ThematicBreakAttachment.h +15 -15
- package/ios/attachments/ThematicBreakAttachment.m +33 -33
- package/ios/internals/ENRMViewFreeMeasurement.h +208 -208
- package/ios/internals/EnrichedTiptapTextComponentDescriptor.h +19 -19
- package/ios/internals/EnrichedTiptapTextShadowNode.h +43 -43
- package/ios/internals/EnrichedTiptapTextShadowNode.mm +69 -69
- package/ios/internals/EnrichedTiptapTextState.h +24 -24
- package/ios/internals/MeasurementCache.h +308 -308
- package/ios/internals/ShadowMeasurementUtils.h +145 -145
- package/ios/parser/ENRMTextLinkAttributes.h +7 -7
- package/ios/parser/ENRMTiptapParser.h +33 -33
- package/ios/parser/ENRMTiptapParser.mm +73 -73
- package/ios/parser/TiptapASTNode.m +52 -52
- package/ios/renderer/AttributedRenderer.h +23 -23
- package/ios/renderer/AttributedRenderer.m +229 -229
- package/ios/renderer/BaseRenderer.h +33 -33
- package/ios/renderer/BaseRenderer.m +46 -46
- package/ios/renderer/BaselineShiftTextAttributes.h +10 -10
- package/ios/renderer/BaselineShiftTextAttributes.m +26 -26
- package/ios/renderer/BlankLineRenderer.h +4 -4
- package/ios/renderer/BlankLineRenderer.m +51 -51
- package/ios/renderer/BlockquoteRenderer.h +6 -6
- package/ios/renderer/BlockquoteRenderer.m +258 -258
- package/ios/renderer/CodeBlockRenderer.h +9 -9
- package/ios/renderer/CodeBlockRenderer.m +99 -99
- package/ios/renderer/CodeRenderer.h +9 -9
- package/ios/renderer/CodeRenderer.m +69 -69
- package/ios/renderer/ENRMBlockquoteTextRenderer.h +25 -25
- package/ios/renderer/ENRMBlockquoteTextRenderer.m +48 -48
- package/ios/renderer/EmphasisRenderer.h +5 -5
- package/ios/renderer/EmphasisRenderer.m +99 -99
- package/ios/renderer/HeadingRenderer.h +6 -6
- package/ios/renderer/HeadingRenderer.m +102 -102
- package/ios/renderer/HighlightRenderer.h +7 -7
- package/ios/renderer/HighlightRenderer.m +33 -33
- package/ios/renderer/LinkRenderer.h +6 -6
- package/ios/renderer/LinkRenderer.m +157 -157
- package/ios/renderer/ListItemRenderer.h +24 -24
- package/ios/renderer/ListItemRenderer.m +283 -283
- package/ios/renderer/ListRenderer.h +13 -13
- package/ios/renderer/ListRenderer.m +126 -126
- package/ios/renderer/MentionRenderer.h +9 -9
- package/ios/renderer/MentionRenderer.m +96 -96
- package/ios/renderer/NodeRenderer.h +8 -8
- package/ios/renderer/ParagraphRenderer.h +6 -6
- package/ios/renderer/ParagraphRenderer.m +85 -85
- package/ios/renderer/RenderContext.h +145 -145
- package/ios/renderer/RenderContext.m +402 -402
- package/ios/renderer/RendererFactory.h +12 -12
- package/ios/renderer/StrikethroughRenderer.h +5 -5
- package/ios/renderer/StrikethroughRenderer.m +30 -30
- package/ios/renderer/StrongRenderer.h +5 -5
- package/ios/renderer/StrongRenderer.m +87 -87
- package/ios/renderer/TextRenderer.h +6 -6
- package/ios/renderer/TextRenderer.m +18 -18
- package/ios/renderer/ThematicBreakRenderer.h +4 -4
- package/ios/renderer/ThematicBreakRenderer.m +41 -41
- package/ios/renderer/UnderlineRenderer.h +4 -4
- package/ios/renderer/UnderlineRenderer.m +41 -41
- package/ios/styles/ENRMFontSlot.h +12 -12
- package/ios/styles/ENRMFontSlot.m +24 -24
- package/ios/styles/StyleConfig.h +488 -488
- package/ios/styles/StyleConfig.mm +2820 -2820
- package/ios/utils/AccessibilityInfo.h +35 -35
- package/ios/utils/AccessibilityInfo.m +24 -24
- package/ios/utils/BlockquoteBorder.h +26 -26
- package/ios/utils/BlockquoteBorder.m +294 -294
- package/ios/utils/CodeBackground.h +19 -19
- package/ios/utils/CodeBackground.m +196 -196
- package/ios/utils/CodeBlockBackground.h +17 -17
- package/ios/utils/CodeBlockBackground.m +102 -102
- package/ios/utils/ContextMenuUtils.h +76 -76
- package/ios/utils/ContextMenuUtils.mm +75 -75
- package/ios/utils/ENRMAccessibilityLabels.h +40 -40
- package/ios/utils/ENRMAccessibilityLabels.m +5 -5
- package/ios/utils/ENRMAsyncRenderCoordinator.h +24 -24
- package/ios/utils/ENRMAsyncRenderCoordinator.m +37 -37
- package/ios/utils/ENRMAtomicSize.h +65 -65
- package/ios/utils/ENRMCodeBlockContent.h +37 -37
- package/ios/utils/ENRMCodeBlockContent.mm +89 -89
- package/ios/utils/ENRMFeatureFlags.h +25 -25
- package/ios/utils/ENRMImageDownloader.h +30 -30
- package/ios/utils/ENRMImageDownloader.m +168 -168
- package/ios/utils/ENRMLatexErrorCoordinator.h +27 -27
- package/ios/utils/ENRMLatexErrorCoordinator.mm +75 -75
- package/ios/utils/ENRMLatexErrorReporting.h +13 -13
- package/ios/utils/ENRMLinkContextMenus.h +93 -93
- package/ios/utils/ENRMLinkContextMenus.m +178 -178
- package/ios/utils/ENRMLinkRegexConfig.h +30 -30
- package/ios/utils/ENRMLinkRegexConfig.mm +104 -104
- package/ios/utils/ENRMLinkRegexProps.h +23 -23
- package/ios/utils/ENRMLocalImageLoader.h +35 -35
- package/ios/utils/ENRMLocalImageLoader.m +111 -111
- package/ios/utils/ENRMMenuAction.h +27 -27
- package/ios/utils/ENRMMenuAction.m +33 -33
- package/ios/utils/ENRMSpoilerOverlayManager.h +15 -15
- package/ios/utils/ENRMSpoilerOverlayManager.m +19 -19
- package/ios/utils/ENRMSpoilerTapUtils.h +6 -6
- package/ios/utils/ENRMSpoilerTapUtils.m +11 -11
- package/ios/utils/ENRMTailFadeInAnimator.h +16 -16
- package/ios/utils/ENRMTailFadeInAnimator.m +161 -161
- package/ios/utils/ENRMTextHitTest.h +23 -23
- package/ios/utils/ENRMTextHitTest.m +20 -20
- package/ios/utils/ENRMTextInteractionUtils.h +20 -20
- package/ios/utils/ENRMTextInteractionUtils.m +15 -15
- package/ios/utils/ENRMTextRenderer.h +38 -38
- package/ios/utils/ENRMTextRenderer.m +54 -54
- package/ios/utils/ENRMTextViewSetup.h +132 -132
- package/ios/utils/ENRMUIKit.h +429 -429
- package/ios/utils/EditMenuUtils.h +105 -105
- package/ios/utils/EditMenuUtils.m +143 -143
- package/ios/utils/FontScaleObserver.h +10 -10
- package/ios/utils/FontScaleObserver.m +55 -55
- package/ios/utils/FontUtils.h +31 -31
- package/ios/utils/FontUtils.m +63 -63
- package/ios/utils/HTMLGenerator.h +25 -25
- package/ios/utils/HTMLGenerator.m +1041 -1041
- package/ios/utils/HeightUpdateUtils.h +25 -25
- package/ios/utils/ImageRequestHeaderUtils.h +35 -35
- package/ios/utils/LastElementUtils.h +97 -97
- package/ios/utils/LinkContextMenuUtils.h +55 -55
- package/ios/utils/LinkPillContentUtils.h +46 -46
- package/ios/utils/ListMarkerDrawer.h +15 -15
- package/ios/utils/ListMarkerDrawer.m +239 -239
- package/ios/utils/MentionBackground.h +26 -26
- package/ios/utils/MentionBackground.m +86 -86
- package/ios/utils/ParagraphStyleUtils.h +87 -87
- package/ios/utils/ParagraphStyleUtils.m +484 -484
- package/ios/utils/PasteboardUtils.h +48 -48
- package/ios/utils/PasteboardUtils.m +166 -166
- package/ios/utils/RTFExportUtils.h +24 -24
- package/ios/utils/RTFExportUtils.m +299 -299
- package/ios/utils/SelectionColorUtils.h +14 -14
- package/ios/utils/StylePropsUtils.h +1340 -1340
- package/ios/utils/TaskListTapUtils.h +6 -6
- package/ios/utils/TaskListTapUtils.m +14 -14
- package/ios/utils/TextViewLayoutManager.h +14 -14
- package/ios/utils/TiptapAccessibilityElementBuilder.h +43 -43
- package/ios/utils/TiptapAccessibilityElementBuilder.m +432 -432
- package/ios/utils/TiptapExtractor.h +17 -17
- package/ios/utils/TiptapExtractor.m +367 -367
- package/ios/views/ENRMTiptapTextView.h +25 -25
- package/ios/views/ENRMTiptapTextView.m +247 -247
- package/package.json +65 -70
- package/react-native.config.js +10 -10
- package/src/admonitionDefaults.ts +58 -58
- package/src/darkModeTextStyle.ts +99 -99
- package/src/headingDefaults.ts +21 -21
- package/src/index.tsx +4 -4
- package/src/linkVariantUtils.ts +120 -120
- package/src/normalizeTiptapStyle.ts +397 -397
- package/src/rn-globals.d.ts +1 -1
- package/src/styleUtils.ts +107 -107
- package/src/types/TiptapStyle.ts +532 -532
- package/src/types/TiptapStyleInternal.ts +299 -299
- package/src/types/linkPill.ts +9 -9
- package/src/utils/isDev.ts +4 -4
|
@@ -1,68 +1,68 @@
|
|
|
1
|
-
package com.renderrichtext.spans
|
|
2
|
-
|
|
3
|
-
import android.content.Context
|
|
4
|
-
import android.graphics.Color
|
|
5
|
-
import android.text.TextPaint
|
|
6
|
-
import android.text.style.ClickableSpan
|
|
7
|
-
import android.view.View
|
|
8
|
-
import com.renderrichtext.EnrichedTiptapText
|
|
9
|
-
import com.renderrichtext.renderer.BlockStyle
|
|
10
|
-
import com.renderrichtext.renderer.SpanStyleCache
|
|
11
|
-
import com.renderrichtext.utils.text.extensions.applyBlockStyleFont
|
|
12
|
-
|
|
13
|
-
class LinkSpan(
|
|
14
|
-
val url: String,
|
|
15
|
-
private val onLinkPress: ((String) -> Unit)?,
|
|
16
|
-
private val onLinkLongPress: ((String) -> Unit)?,
|
|
17
|
-
private val styleCache: SpanStyleCache,
|
|
18
|
-
private val blockStyle: BlockStyle,
|
|
19
|
-
private val context: Context,
|
|
20
|
-
val recognizedLink: Boolean = false,
|
|
21
|
-
// A recognized code span keeps its code font unless a link or variant font is set.
|
|
22
|
-
private val keepsCodeFont: Boolean = false,
|
|
23
|
-
) : ClickableSpan() {
|
|
24
|
-
@Volatile
|
|
25
|
-
private var longPressTriggered = false
|
|
26
|
-
|
|
27
|
-
override fun onClick(widget: View) {
|
|
28
|
-
if (longPressTriggered) {
|
|
29
|
-
longPressTriggered = false
|
|
30
|
-
return
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
onLinkPress?.invoke(url) ?: (widget as? EnrichedTiptapText)?.emitOnLinkPress(url)
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
fun onLongClick(widget: View): Boolean {
|
|
37
|
-
longPressTriggered = true
|
|
38
|
-
|
|
39
|
-
(widget as? EnrichedTiptapText)?.emitOnLinkLongPress(url)
|
|
40
|
-
|
|
41
|
-
onLinkLongPress?.invoke(url)
|
|
42
|
-
|
|
43
|
-
return true
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
override fun updateDrawState(textPaint: TextPaint) {
|
|
47
|
-
super.updateDrawState(textPaint)
|
|
48
|
-
|
|
49
|
-
val variant = styleCache.resolvedVariantForUrl(url)
|
|
50
|
-
|
|
51
|
-
val fontFamily = variant?.fontFamily?.takeIf { it.isNotEmpty() } ?: styleCache.linkFontFamily
|
|
52
|
-
if (fontFamily.isNotEmpty()) {
|
|
53
|
-
textPaint.textSize = blockStyle.fontSize
|
|
54
|
-
textPaint.applyBlockStyleFont(blockStyle.copy(fontFamily = fontFamily), context)
|
|
55
|
-
} else if (!keepsCodeFont) {
|
|
56
|
-
textPaint.textSize = blockStyle.fontSize
|
|
57
|
-
textPaint.applyBlockStyleFont(blockStyle, context)
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
textPaint.color = variant?.color ?: styleCache.linkColor
|
|
61
|
-
textPaint.isUnderlineText = variant?.underline ?: styleCache.linkUnderline
|
|
62
|
-
|
|
63
|
-
val backgroundColor = variant?.backgroundColor ?: styleCache.linkBackgroundColor
|
|
64
|
-
if (Color.alpha(backgroundColor) > 0) {
|
|
65
|
-
textPaint.bgColor = backgroundColor
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
1
|
+
package com.renderrichtext.spans
|
|
2
|
+
|
|
3
|
+
import android.content.Context
|
|
4
|
+
import android.graphics.Color
|
|
5
|
+
import android.text.TextPaint
|
|
6
|
+
import android.text.style.ClickableSpan
|
|
7
|
+
import android.view.View
|
|
8
|
+
import com.renderrichtext.EnrichedTiptapText
|
|
9
|
+
import com.renderrichtext.renderer.BlockStyle
|
|
10
|
+
import com.renderrichtext.renderer.SpanStyleCache
|
|
11
|
+
import com.renderrichtext.utils.text.extensions.applyBlockStyleFont
|
|
12
|
+
|
|
13
|
+
class LinkSpan(
|
|
14
|
+
val url: String,
|
|
15
|
+
private val onLinkPress: ((String) -> Unit)?,
|
|
16
|
+
private val onLinkLongPress: ((String) -> Unit)?,
|
|
17
|
+
private val styleCache: SpanStyleCache,
|
|
18
|
+
private val blockStyle: BlockStyle,
|
|
19
|
+
private val context: Context,
|
|
20
|
+
val recognizedLink: Boolean = false,
|
|
21
|
+
// A recognized code span keeps its code font unless a link or variant font is set.
|
|
22
|
+
private val keepsCodeFont: Boolean = false,
|
|
23
|
+
) : ClickableSpan() {
|
|
24
|
+
@Volatile
|
|
25
|
+
private var longPressTriggered = false
|
|
26
|
+
|
|
27
|
+
override fun onClick(widget: View) {
|
|
28
|
+
if (longPressTriggered) {
|
|
29
|
+
longPressTriggered = false
|
|
30
|
+
return
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
onLinkPress?.invoke(url) ?: (widget as? EnrichedTiptapText)?.emitOnLinkPress(url)
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
fun onLongClick(widget: View): Boolean {
|
|
37
|
+
longPressTriggered = true
|
|
38
|
+
|
|
39
|
+
(widget as? EnrichedTiptapText)?.emitOnLinkLongPress(url)
|
|
40
|
+
|
|
41
|
+
onLinkLongPress?.invoke(url)
|
|
42
|
+
|
|
43
|
+
return true
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
override fun updateDrawState(textPaint: TextPaint) {
|
|
47
|
+
super.updateDrawState(textPaint)
|
|
48
|
+
|
|
49
|
+
val variant = styleCache.resolvedVariantForUrl(url)
|
|
50
|
+
|
|
51
|
+
val fontFamily = variant?.fontFamily?.takeIf { it.isNotEmpty() } ?: styleCache.linkFontFamily
|
|
52
|
+
if (fontFamily.isNotEmpty()) {
|
|
53
|
+
textPaint.textSize = blockStyle.fontSize
|
|
54
|
+
textPaint.applyBlockStyleFont(blockStyle.copy(fontFamily = fontFamily), context)
|
|
55
|
+
} else if (!keepsCodeFont) {
|
|
56
|
+
textPaint.textSize = blockStyle.fontSize
|
|
57
|
+
textPaint.applyBlockStyleFont(blockStyle, context)
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
textPaint.color = variant?.color ?: styleCache.linkColor
|
|
61
|
+
textPaint.isUnderlineText = variant?.underline ?: styleCache.linkUnderline
|
|
62
|
+
|
|
63
|
+
val backgroundColor = variant?.backgroundColor ?: styleCache.linkBackgroundColor
|
|
64
|
+
if (Color.alpha(backgroundColor) > 0) {
|
|
65
|
+
textPaint.bgColor = backgroundColor
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
package com.renderrichtext.spans
|
|
2
|
-
|
|
3
|
-
import android.graphics.Paint
|
|
4
|
-
import android.text.Spanned
|
|
5
|
-
import android.text.style.LineHeightSpan
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Adds vertical spacing between list items using LineHeightSpan.
|
|
9
|
-
*
|
|
10
|
-
* Attached over the newline that separates two items; extends only the line
|
|
11
|
-
* ending at that newline so the gap appears below the preceding item.
|
|
12
|
-
*
|
|
13
|
-
* @param spacing The spacing in pixels to add below the line (0 = no spacing)
|
|
14
|
-
*/
|
|
15
|
-
class ListItemSpacingSpan(
|
|
16
|
-
val spacing: Float,
|
|
17
|
-
) : LineHeightSpan {
|
|
18
|
-
override fun chooseHeight(
|
|
19
|
-
text: CharSequence,
|
|
20
|
-
start: Int,
|
|
21
|
-
end: Int,
|
|
22
|
-
spanstartv: Int,
|
|
23
|
-
lineHeight: Int,
|
|
24
|
-
fm: Paint.FontMetricsInt,
|
|
25
|
-
) {
|
|
26
|
-
val spanEnd = (text as? Spanned)?.getSpanEnd(this) ?: return
|
|
27
|
-
if (end != spanEnd) return
|
|
28
|
-
|
|
29
|
-
val spacingPixels = spacing.toInt()
|
|
30
|
-
fm.descent += spacingPixels
|
|
31
|
-
fm.bottom += spacingPixels
|
|
32
|
-
}
|
|
33
|
-
}
|
|
1
|
+
package com.renderrichtext.spans
|
|
2
|
+
|
|
3
|
+
import android.graphics.Paint
|
|
4
|
+
import android.text.Spanned
|
|
5
|
+
import android.text.style.LineHeightSpan
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Adds vertical spacing between list items using LineHeightSpan.
|
|
9
|
+
*
|
|
10
|
+
* Attached over the newline that separates two items; extends only the line
|
|
11
|
+
* ending at that newline so the gap appears below the preceding item.
|
|
12
|
+
*
|
|
13
|
+
* @param spacing The spacing in pixels to add below the line (0 = no spacing)
|
|
14
|
+
*/
|
|
15
|
+
class ListItemSpacingSpan(
|
|
16
|
+
val spacing: Float,
|
|
17
|
+
) : LineHeightSpan {
|
|
18
|
+
override fun chooseHeight(
|
|
19
|
+
text: CharSequence,
|
|
20
|
+
start: Int,
|
|
21
|
+
end: Int,
|
|
22
|
+
spanstartv: Int,
|
|
23
|
+
lineHeight: Int,
|
|
24
|
+
fm: Paint.FontMetricsInt,
|
|
25
|
+
) {
|
|
26
|
+
val spanEnd = (text as? Spanned)?.getSpanEnd(this) ?: return
|
|
27
|
+
if (end != spanEnd) return
|
|
28
|
+
|
|
29
|
+
val spacingPixels = spacing.toInt()
|
|
30
|
+
fm.descent += spacingPixels
|
|
31
|
+
fm.bottom += spacingPixels
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -1,38 +1,38 @@
|
|
|
1
|
-
package com.renderrichtext.spans
|
|
2
|
-
|
|
3
|
-
import android.graphics.Canvas
|
|
4
|
-
import android.graphics.Paint
|
|
5
|
-
import android.text.Layout
|
|
6
|
-
import android.text.Spanned
|
|
7
|
-
import android.text.style.LeadingMarginSpan
|
|
8
|
-
|
|
9
|
-
// Draws a list marker on a line owned by another block (code block, nested
|
|
10
|
-
// sublist) without contributing any margin of its own.
|
|
11
|
-
class ListMarkerAnchorSpan(
|
|
12
|
-
internal val marker: BaseListSpan,
|
|
13
|
-
) : LeadingMarginSpan {
|
|
14
|
-
override fun getLeadingMargin(first: Boolean): Int = 0
|
|
15
|
-
|
|
16
|
-
override fun drawLeadingMargin(
|
|
17
|
-
c: Canvas,
|
|
18
|
-
p: Paint,
|
|
19
|
-
x: Int,
|
|
20
|
-
dir: Int,
|
|
21
|
-
top: Int,
|
|
22
|
-
baseline: Int,
|
|
23
|
-
bottom: Int,
|
|
24
|
-
text: CharSequence?,
|
|
25
|
-
start: Int,
|
|
26
|
-
end: Int,
|
|
27
|
-
first: Boolean,
|
|
28
|
-
layout: Layout?,
|
|
29
|
-
) {
|
|
30
|
-
if (!first) return
|
|
31
|
-
if (text is Spanned && text.getSpanStart(this) != start) return
|
|
32
|
-
|
|
33
|
-
// Pass the paragraph origin: drawMarker reconstructs its offset from depth,
|
|
34
|
-
// matching the x its own span would receive on a plain text line.
|
|
35
|
-
val originX = if (dir > 0) 0 else layout?.width ?: 0
|
|
36
|
-
marker.drawMarkerAt(c, p, originX, dir, top, baseline, bottom, layout, start)
|
|
37
|
-
}
|
|
38
|
-
}
|
|
1
|
+
package com.renderrichtext.spans
|
|
2
|
+
|
|
3
|
+
import android.graphics.Canvas
|
|
4
|
+
import android.graphics.Paint
|
|
5
|
+
import android.text.Layout
|
|
6
|
+
import android.text.Spanned
|
|
7
|
+
import android.text.style.LeadingMarginSpan
|
|
8
|
+
|
|
9
|
+
// Draws a list marker on a line owned by another block (code block, nested
|
|
10
|
+
// sublist) without contributing any margin of its own.
|
|
11
|
+
class ListMarkerAnchorSpan(
|
|
12
|
+
internal val marker: BaseListSpan,
|
|
13
|
+
) : LeadingMarginSpan {
|
|
14
|
+
override fun getLeadingMargin(first: Boolean): Int = 0
|
|
15
|
+
|
|
16
|
+
override fun drawLeadingMargin(
|
|
17
|
+
c: Canvas,
|
|
18
|
+
p: Paint,
|
|
19
|
+
x: Int,
|
|
20
|
+
dir: Int,
|
|
21
|
+
top: Int,
|
|
22
|
+
baseline: Int,
|
|
23
|
+
bottom: Int,
|
|
24
|
+
text: CharSequence?,
|
|
25
|
+
start: Int,
|
|
26
|
+
end: Int,
|
|
27
|
+
first: Boolean,
|
|
28
|
+
layout: Layout?,
|
|
29
|
+
) {
|
|
30
|
+
if (!first) return
|
|
31
|
+
if (text is Spanned && text.getSpanStart(this) != start) return
|
|
32
|
+
|
|
33
|
+
// Pass the paragraph origin: drawMarker reconstructs its offset from depth,
|
|
34
|
+
// matching the x its own span would receive on a plain text line.
|
|
35
|
+
val originX = if (dir > 0) 0 else layout?.width ?: 0
|
|
36
|
+
marker.drawMarkerAt(c, p, originX, dir, top, baseline, bottom, layout, start)
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -1,76 +1,76 @@
|
|
|
1
|
-
package com.renderrichtext.spans
|
|
2
|
-
|
|
3
|
-
import android.graphics.Paint
|
|
4
|
-
import android.text.style.LineHeightSpan
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Adds bottom margin to a block element (paragraphs/headings) using LineHeightSpan.
|
|
8
|
-
*
|
|
9
|
-
* For spacer lines (single newline), sets the line height to exactly marginBottom.
|
|
10
|
-
* For regular lines, adds marginBottom only at paragraph boundaries to preserve lineHeight.
|
|
11
|
-
*
|
|
12
|
-
* @param marginBottom The margin in pixels to add below the block (0 = no margin)
|
|
13
|
-
*/
|
|
14
|
-
class MarginBottomSpan(
|
|
15
|
-
val marginBottom: Float,
|
|
16
|
-
) : LineHeightSpan {
|
|
17
|
-
override fun chooseHeight(
|
|
18
|
-
text: CharSequence,
|
|
19
|
-
start: Int,
|
|
20
|
-
end: Int,
|
|
21
|
-
spanstartv: Int,
|
|
22
|
-
lineHeight: Int,
|
|
23
|
-
fm: Paint.FontMetricsInt,
|
|
24
|
-
) {
|
|
25
|
-
// Only process lines that end with a newline
|
|
26
|
-
if (end <= start || text[end - 1] != '\n') {
|
|
27
|
-
return
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
val marginPixels = marginBottom.toInt()
|
|
31
|
-
|
|
32
|
-
// Handle spacer lines (single newline character)
|
|
33
|
-
if (end - start == 1 && text[start] == '\n') {
|
|
34
|
-
if (hasContentAfter(text, end)) {
|
|
35
|
-
// Set line height to exactly marginBottom for spacer lines
|
|
36
|
-
fm.top = 0
|
|
37
|
-
fm.ascent = 0
|
|
38
|
-
fm.descent = marginPixels
|
|
39
|
-
fm.bottom = marginPixels
|
|
40
|
-
} else {
|
|
41
|
-
// No content after - collapse the spacer line to zero height
|
|
42
|
-
fm.top = 0
|
|
43
|
-
fm.ascent = 0
|
|
44
|
-
fm.descent = 0
|
|
45
|
-
fm.bottom = 0
|
|
46
|
-
}
|
|
47
|
-
return
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
// For regular lines, add spacing only if there's content after
|
|
51
|
-
if (hasContentAfter(text, end)) {
|
|
52
|
-
fm.descent += marginPixels
|
|
53
|
-
fm.bottom += marginPixels
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Checks if there's non-newline content after the given position.
|
|
59
|
-
* Used to determine if spacing should be applied (between items) or skipped (after last item).
|
|
60
|
-
*/
|
|
61
|
-
private fun hasContentAfter(
|
|
62
|
-
text: CharSequence,
|
|
63
|
-
pos: Int,
|
|
64
|
-
): Boolean {
|
|
65
|
-
if (pos >= text.length) return false
|
|
66
|
-
|
|
67
|
-
// If the next character is a newline, check the character after that
|
|
68
|
-
if (text[pos] == '\n') {
|
|
69
|
-
val nextPos = pos + 1
|
|
70
|
-
if (nextPos >= text.length) return false
|
|
71
|
-
return text[nextPos] != '\n' // Non-newline = content exists
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
return true // Non-newline content immediately after
|
|
75
|
-
}
|
|
76
|
-
}
|
|
1
|
+
package com.renderrichtext.spans
|
|
2
|
+
|
|
3
|
+
import android.graphics.Paint
|
|
4
|
+
import android.text.style.LineHeightSpan
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Adds bottom margin to a block element (paragraphs/headings) using LineHeightSpan.
|
|
8
|
+
*
|
|
9
|
+
* For spacer lines (single newline), sets the line height to exactly marginBottom.
|
|
10
|
+
* For regular lines, adds marginBottom only at paragraph boundaries to preserve lineHeight.
|
|
11
|
+
*
|
|
12
|
+
* @param marginBottom The margin in pixels to add below the block (0 = no margin)
|
|
13
|
+
*/
|
|
14
|
+
class MarginBottomSpan(
|
|
15
|
+
val marginBottom: Float,
|
|
16
|
+
) : LineHeightSpan {
|
|
17
|
+
override fun chooseHeight(
|
|
18
|
+
text: CharSequence,
|
|
19
|
+
start: Int,
|
|
20
|
+
end: Int,
|
|
21
|
+
spanstartv: Int,
|
|
22
|
+
lineHeight: Int,
|
|
23
|
+
fm: Paint.FontMetricsInt,
|
|
24
|
+
) {
|
|
25
|
+
// Only process lines that end with a newline
|
|
26
|
+
if (end <= start || text[end - 1] != '\n') {
|
|
27
|
+
return
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
val marginPixels = marginBottom.toInt()
|
|
31
|
+
|
|
32
|
+
// Handle spacer lines (single newline character)
|
|
33
|
+
if (end - start == 1 && text[start] == '\n') {
|
|
34
|
+
if (hasContentAfter(text, end)) {
|
|
35
|
+
// Set line height to exactly marginBottom for spacer lines
|
|
36
|
+
fm.top = 0
|
|
37
|
+
fm.ascent = 0
|
|
38
|
+
fm.descent = marginPixels
|
|
39
|
+
fm.bottom = marginPixels
|
|
40
|
+
} else {
|
|
41
|
+
// No content after - collapse the spacer line to zero height
|
|
42
|
+
fm.top = 0
|
|
43
|
+
fm.ascent = 0
|
|
44
|
+
fm.descent = 0
|
|
45
|
+
fm.bottom = 0
|
|
46
|
+
}
|
|
47
|
+
return
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// For regular lines, add spacing only if there's content after
|
|
51
|
+
if (hasContentAfter(text, end)) {
|
|
52
|
+
fm.descent += marginPixels
|
|
53
|
+
fm.bottom += marginPixels
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Checks if there's non-newline content after the given position.
|
|
59
|
+
* Used to determine if spacing should be applied (between items) or skipped (after last item).
|
|
60
|
+
*/
|
|
61
|
+
private fun hasContentAfter(
|
|
62
|
+
text: CharSequence,
|
|
63
|
+
pos: Int,
|
|
64
|
+
): Boolean {
|
|
65
|
+
if (pos >= text.length) return false
|
|
66
|
+
|
|
67
|
+
// If the next character is a newline, check the character after that
|
|
68
|
+
if (text[pos] == '\n') {
|
|
69
|
+
val nextPos = pos + 1
|
|
70
|
+
if (nextPos >= text.length) return false
|
|
71
|
+
return text[nextPos] != '\n' // Non-newline = content exists
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return true // Non-newline content immediately after
|
|
75
|
+
}
|
|
76
|
+
}
|