@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.
- 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,12 +1,12 @@
|
|
|
1
|
-
#import "TiptapASTNode.h"
|
|
2
|
-
#import "NodeRenderer.h"
|
|
3
|
-
|
|
4
|
-
@class RenderContext;
|
|
5
|
-
|
|
6
|
-
@interface RendererFactory : NSObject
|
|
7
|
-
- (instancetype)initWithConfig:(id)config;
|
|
8
|
-
- (id<NodeRenderer>)rendererForNodeType:(TiptapNodeType)type;
|
|
9
|
-
- (void)renderChildrenOfNode:(TiptapASTNode *)node
|
|
10
|
-
into:(NSMutableAttributedString *)output
|
|
11
|
-
context:(RenderContext *)context;
|
|
12
|
-
@end
|
|
1
|
+
#import "TiptapASTNode.h"
|
|
2
|
+
#import "NodeRenderer.h"
|
|
3
|
+
|
|
4
|
+
@class RenderContext;
|
|
5
|
+
|
|
6
|
+
@interface RendererFactory : NSObject
|
|
7
|
+
- (instancetype)initWithConfig:(id)config;
|
|
8
|
+
- (id<NodeRenderer>)rendererForNodeType:(TiptapNodeType)type;
|
|
9
|
+
- (void)renderChildrenOfNode:(TiptapASTNode *)node
|
|
10
|
+
into:(NSMutableAttributedString *)output
|
|
11
|
+
context:(RenderContext *)context;
|
|
12
|
+
@end
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
#import "BaseRenderer.h"
|
|
3
|
-
|
|
4
|
-
@interface StrikethroughRenderer : BaseRenderer
|
|
5
|
-
@end
|
|
1
|
+
#pragma once
|
|
2
|
+
#import "BaseRenderer.h"
|
|
3
|
+
|
|
4
|
+
@interface StrikethroughRenderer : BaseRenderer
|
|
5
|
+
@end
|
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
#import "StrikethroughRenderer.h"
|
|
2
|
-
#import "TiptapASTNode.h"
|
|
3
|
-
#import "RenderContext.h"
|
|
4
|
-
#import "RendererFactory.h"
|
|
5
|
-
#import "StyleConfig.h"
|
|
6
|
-
|
|
7
|
-
@implementation StrikethroughRenderer
|
|
8
|
-
|
|
9
|
-
#pragma mark - Rendering
|
|
10
|
-
|
|
11
|
-
- (void)renderNodeContent:(TiptapASTNode *)node
|
|
12
|
-
into:(NSMutableAttributedString *)output
|
|
13
|
-
context:(RenderContext *)context
|
|
14
|
-
{
|
|
15
|
-
NSUInteger start = output.length;
|
|
16
|
-
[_rendererFactory renderChildrenOfNode:node into:output context:context];
|
|
17
|
-
|
|
18
|
-
NSRange range = NSMakeRange(start, output.length - start);
|
|
19
|
-
if (range.length == 0)
|
|
20
|
-
return;
|
|
21
|
-
|
|
22
|
-
// Apply strikethrough style
|
|
23
|
-
[output addAttribute:NSStrikethroughStyleAttributeName value:@(NSUnderlineStyleSingle) range:range];
|
|
24
|
-
|
|
25
|
-
// Apply strikethrough line color (not text color)
|
|
26
|
-
RCTUIColor *strikethroughColor = [_config strikethroughColor];
|
|
27
|
-
[output addAttribute:NSStrikethroughColorAttributeName value:strikethroughColor range:range];
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
@end
|
|
1
|
+
#import "StrikethroughRenderer.h"
|
|
2
|
+
#import "TiptapASTNode.h"
|
|
3
|
+
#import "RenderContext.h"
|
|
4
|
+
#import "RendererFactory.h"
|
|
5
|
+
#import "StyleConfig.h"
|
|
6
|
+
|
|
7
|
+
@implementation StrikethroughRenderer
|
|
8
|
+
|
|
9
|
+
#pragma mark - Rendering
|
|
10
|
+
|
|
11
|
+
- (void)renderNodeContent:(TiptapASTNode *)node
|
|
12
|
+
into:(NSMutableAttributedString *)output
|
|
13
|
+
context:(RenderContext *)context
|
|
14
|
+
{
|
|
15
|
+
NSUInteger start = output.length;
|
|
16
|
+
[_rendererFactory renderChildrenOfNode:node into:output context:context];
|
|
17
|
+
|
|
18
|
+
NSRange range = NSMakeRange(start, output.length - start);
|
|
19
|
+
if (range.length == 0)
|
|
20
|
+
return;
|
|
21
|
+
|
|
22
|
+
// Apply strikethrough style
|
|
23
|
+
[output addAttribute:NSStrikethroughStyleAttributeName value:@(NSUnderlineStyleSingle) range:range];
|
|
24
|
+
|
|
25
|
+
// Apply strikethrough line color (not text color)
|
|
26
|
+
RCTUIColor *strikethroughColor = [_config strikethroughColor];
|
|
27
|
+
[output addAttribute:NSStrikethroughColorAttributeName value:strikethroughColor range:range];
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
@end
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
#import "BaseRenderer.h"
|
|
3
|
-
|
|
4
|
-
@interface StrongRenderer : BaseRenderer
|
|
5
|
-
@end
|
|
1
|
+
#pragma once
|
|
2
|
+
#import "BaseRenderer.h"
|
|
3
|
+
|
|
4
|
+
@interface StrongRenderer : BaseRenderer
|
|
5
|
+
@end
|
|
@@ -1,88 +1,88 @@
|
|
|
1
|
-
#import "StrongRenderer.h"
|
|
2
|
-
#import "FontUtils.h"
|
|
3
|
-
#import "TiptapASTNode.h"
|
|
4
|
-
#import "RenderContext.h"
|
|
5
|
-
#import "RendererFactory.h"
|
|
6
|
-
#import "StyleConfig.h"
|
|
7
|
-
#import <React/RCTFont.h>
|
|
8
|
-
|
|
9
|
-
@implementation StrongRenderer
|
|
10
|
-
|
|
11
|
-
#pragma mark - Rendering
|
|
12
|
-
|
|
13
|
-
- (void)renderNodeContent:(TiptapASTNode *)node
|
|
14
|
-
into:(NSMutableAttributedString *)output
|
|
15
|
-
context:(RenderContext *)context
|
|
16
|
-
{
|
|
17
|
-
NSUInteger start = output.length;
|
|
18
|
-
[_rendererFactory renderChildrenOfNode:node into:output context:context];
|
|
19
|
-
|
|
20
|
-
NSRange range = NSMakeRange(start, output.length - start);
|
|
21
|
-
if (range.length == 0)
|
|
22
|
-
return;
|
|
23
|
-
|
|
24
|
-
BlockStyle *blockStyle = [context getBlockStyle];
|
|
25
|
-
RCTUIColor *configStrongColor = [_config strongColor];
|
|
26
|
-
RCTUIColor *calculatedColor =
|
|
27
|
-
configStrongColor ? [RenderContext calculateStrongColor:configStrongColor blockColor:blockStyle.color] : nil;
|
|
28
|
-
NSString *strongFontFamily = [_config strongFontFamily];
|
|
29
|
-
NSString *strongFontWeight = [_config strongFontWeight];
|
|
30
|
-
BOOL useNormalWeight = [strongFontWeight isEqualToString:@"normal"];
|
|
31
|
-
|
|
32
|
-
[output enumerateAttributesInRange:range
|
|
33
|
-
options:NSAttributedStringEnumerationLongestEffectiveRangeNotRequired
|
|
34
|
-
usingBlock:^(NSDictionary<NSAttributedStringKey, id> *attrs, NSRange subrange, BOOL *stop) {
|
|
35
|
-
// 1. Resolve Font
|
|
36
|
-
UIFont *currentFont =
|
|
37
|
-
attrs[NSFontAttributeName] ?: cachedFontFromBlockStyle(blockStyle, context);
|
|
38
|
-
|
|
39
|
-
UIFont *resolvedFont = currentFont;
|
|
40
|
-
|
|
41
|
-
if (strongFontFamily.length > 0) {
|
|
42
|
-
NSString *weight = useNormalWeight ? nil : @"bold";
|
|
43
|
-
resolvedFont = [RCTFont updateFont:currentFont
|
|
44
|
-
withFamily:strongFontFamily
|
|
45
|
-
size:nil
|
|
46
|
-
weight:weight
|
|
47
|
-
style:nil
|
|
48
|
-
variant:nil
|
|
49
|
-
scaleMultiplier:1.0];
|
|
50
|
-
} else if (!([currentFont.fontDescriptor symbolicTraits] & UIFontDescriptorTraitBold)) {
|
|
51
|
-
resolvedFont = [self ensureFontIsBold:currentFont];
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
if (resolvedFont && ![resolvedFont isEqual:currentFont]) {
|
|
55
|
-
[output addAttribute:NSFontAttributeName value:resolvedFont range:subrange];
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
// 2. Resolve Color
|
|
59
|
-
// Only apply if we have a color and the current segment doesn't explicitly forbid overrides
|
|
60
|
-
if (calculatedColor && ![RenderContext shouldPreserveColors:attrs]) {
|
|
61
|
-
// Optimization: Check if this color is already set to avoid redundant attribute changes
|
|
62
|
-
if (![attrs[NSForegroundColorAttributeName] isEqual:calculatedColor]) {
|
|
63
|
-
[output addAttribute:NSForegroundColorAttributeName
|
|
64
|
-
value:calculatedColor
|
|
65
|
-
range:subrange];
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}];
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
#pragma mark - Helper Methods
|
|
72
|
-
|
|
73
|
-
- (UIFont *)ensureFontIsBold:(UIFont *)font
|
|
74
|
-
{
|
|
75
|
-
if (!font)
|
|
76
|
-
return nil;
|
|
77
|
-
|
|
78
|
-
UIFontDescriptor *descriptor = font.fontDescriptor;
|
|
79
|
-
UIFontDescriptorSymbolicTraits traits = descriptor.symbolicTraits;
|
|
80
|
-
|
|
81
|
-
// Create new descriptor combining current traits with Bold
|
|
82
|
-
UIFontDescriptor *boldDescriptor = [descriptor fontDescriptorWithSymbolicTraits:(traits | UIFontDescriptorTraitBold)];
|
|
83
|
-
|
|
84
|
-
// Fallback to original font if bold version is unavailable
|
|
85
|
-
return boldDescriptor ? [UIFont fontWithDescriptor:boldDescriptor size:0] : font;
|
|
86
|
-
}
|
|
87
|
-
|
|
1
|
+
#import "StrongRenderer.h"
|
|
2
|
+
#import "FontUtils.h"
|
|
3
|
+
#import "TiptapASTNode.h"
|
|
4
|
+
#import "RenderContext.h"
|
|
5
|
+
#import "RendererFactory.h"
|
|
6
|
+
#import "StyleConfig.h"
|
|
7
|
+
#import <React/RCTFont.h>
|
|
8
|
+
|
|
9
|
+
@implementation StrongRenderer
|
|
10
|
+
|
|
11
|
+
#pragma mark - Rendering
|
|
12
|
+
|
|
13
|
+
- (void)renderNodeContent:(TiptapASTNode *)node
|
|
14
|
+
into:(NSMutableAttributedString *)output
|
|
15
|
+
context:(RenderContext *)context
|
|
16
|
+
{
|
|
17
|
+
NSUInteger start = output.length;
|
|
18
|
+
[_rendererFactory renderChildrenOfNode:node into:output context:context];
|
|
19
|
+
|
|
20
|
+
NSRange range = NSMakeRange(start, output.length - start);
|
|
21
|
+
if (range.length == 0)
|
|
22
|
+
return;
|
|
23
|
+
|
|
24
|
+
BlockStyle *blockStyle = [context getBlockStyle];
|
|
25
|
+
RCTUIColor *configStrongColor = [_config strongColor];
|
|
26
|
+
RCTUIColor *calculatedColor =
|
|
27
|
+
configStrongColor ? [RenderContext calculateStrongColor:configStrongColor blockColor:blockStyle.color] : nil;
|
|
28
|
+
NSString *strongFontFamily = [_config strongFontFamily];
|
|
29
|
+
NSString *strongFontWeight = [_config strongFontWeight];
|
|
30
|
+
BOOL useNormalWeight = [strongFontWeight isEqualToString:@"normal"];
|
|
31
|
+
|
|
32
|
+
[output enumerateAttributesInRange:range
|
|
33
|
+
options:NSAttributedStringEnumerationLongestEffectiveRangeNotRequired
|
|
34
|
+
usingBlock:^(NSDictionary<NSAttributedStringKey, id> *attrs, NSRange subrange, BOOL *stop) {
|
|
35
|
+
// 1. Resolve Font
|
|
36
|
+
UIFont *currentFont =
|
|
37
|
+
attrs[NSFontAttributeName] ?: cachedFontFromBlockStyle(blockStyle, context);
|
|
38
|
+
|
|
39
|
+
UIFont *resolvedFont = currentFont;
|
|
40
|
+
|
|
41
|
+
if (strongFontFamily.length > 0) {
|
|
42
|
+
NSString *weight = useNormalWeight ? nil : @"bold";
|
|
43
|
+
resolvedFont = [RCTFont updateFont:currentFont
|
|
44
|
+
withFamily:strongFontFamily
|
|
45
|
+
size:nil
|
|
46
|
+
weight:weight
|
|
47
|
+
style:nil
|
|
48
|
+
variant:nil
|
|
49
|
+
scaleMultiplier:1.0];
|
|
50
|
+
} else if (!([currentFont.fontDescriptor symbolicTraits] & UIFontDescriptorTraitBold)) {
|
|
51
|
+
resolvedFont = [self ensureFontIsBold:currentFont];
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
if (resolvedFont && ![resolvedFont isEqual:currentFont]) {
|
|
55
|
+
[output addAttribute:NSFontAttributeName value:resolvedFont range:subrange];
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// 2. Resolve Color
|
|
59
|
+
// Only apply if we have a color and the current segment doesn't explicitly forbid overrides
|
|
60
|
+
if (calculatedColor && ![RenderContext shouldPreserveColors:attrs]) {
|
|
61
|
+
// Optimization: Check if this color is already set to avoid redundant attribute changes
|
|
62
|
+
if (![attrs[NSForegroundColorAttributeName] isEqual:calculatedColor]) {
|
|
63
|
+
[output addAttribute:NSForegroundColorAttributeName
|
|
64
|
+
value:calculatedColor
|
|
65
|
+
range:subrange];
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}];
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
#pragma mark - Helper Methods
|
|
72
|
+
|
|
73
|
+
- (UIFont *)ensureFontIsBold:(UIFont *)font
|
|
74
|
+
{
|
|
75
|
+
if (!font)
|
|
76
|
+
return nil;
|
|
77
|
+
|
|
78
|
+
UIFontDescriptor *descriptor = font.fontDescriptor;
|
|
79
|
+
UIFontDescriptorSymbolicTraits traits = descriptor.symbolicTraits;
|
|
80
|
+
|
|
81
|
+
// Create new descriptor combining current traits with Bold
|
|
82
|
+
UIFontDescriptor *boldDescriptor = [descriptor fontDescriptorWithSymbolicTraits:(traits | UIFontDescriptorTraitBold)];
|
|
83
|
+
|
|
84
|
+
// Fallback to original font if bold version is unavailable
|
|
85
|
+
return boldDescriptor ? [UIFont fontWithDescriptor:boldDescriptor size:0] : font;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
88
|
@end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
#import "BaseRenderer.h"
|
|
2
|
-
#import "TiptapASTNode.h"
|
|
3
|
-
#import "RenderContext.h"
|
|
4
|
-
|
|
5
|
-
@interface TextRenderer : BaseRenderer
|
|
6
|
-
@end
|
|
1
|
+
#import "BaseRenderer.h"
|
|
2
|
+
#import "TiptapASTNode.h"
|
|
3
|
+
#import "RenderContext.h"
|
|
4
|
+
|
|
5
|
+
@interface TextRenderer : BaseRenderer
|
|
6
|
+
@end
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
#import "TextRenderer.h"
|
|
2
|
-
#import "RenderContext.h"
|
|
3
|
-
|
|
4
|
-
@implementation TextRenderer
|
|
5
|
-
|
|
6
|
-
- (void)renderNodeContent:(TiptapASTNode *)node
|
|
7
|
-
into:(NSMutableAttributedString *)output
|
|
8
|
-
context:(RenderContext *)context
|
|
9
|
-
{
|
|
10
|
-
if (!node.content)
|
|
11
|
-
return;
|
|
12
|
-
|
|
13
|
-
NSAttributedString *text = [[NSAttributedString alloc] initWithString:node.content
|
|
14
|
-
attributes:[context getTextAttributes]];
|
|
15
|
-
[output appendAttributedString:text];
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
@end
|
|
1
|
+
#import "TextRenderer.h"
|
|
2
|
+
#import "RenderContext.h"
|
|
3
|
+
|
|
4
|
+
@implementation TextRenderer
|
|
5
|
+
|
|
6
|
+
- (void)renderNodeContent:(TiptapASTNode *)node
|
|
7
|
+
into:(NSMutableAttributedString *)output
|
|
8
|
+
context:(RenderContext *)context
|
|
9
|
+
{
|
|
10
|
+
if (!node.content)
|
|
11
|
+
return;
|
|
12
|
+
|
|
13
|
+
NSAttributedString *text = [[NSAttributedString alloc] initWithString:node.content
|
|
14
|
+
attributes:[context getTextAttributes]];
|
|
15
|
+
[output appendAttributedString:text];
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
@end
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#import "BaseRenderer.h"
|
|
2
|
-
|
|
3
|
-
@interface ThematicBreakRenderer : BaseRenderer
|
|
4
|
-
@end
|
|
1
|
+
#import "BaseRenderer.h"
|
|
2
|
+
|
|
3
|
+
@interface ThematicBreakRenderer : BaseRenderer
|
|
4
|
+
@end
|
|
@@ -1,42 +1,42 @@
|
|
|
1
|
-
#import "ThematicBreakRenderer.h"
|
|
2
|
-
#import "TiptapASTNode.h"
|
|
3
|
-
#import "StyleConfig.h"
|
|
4
|
-
#import "ThematicBreakAttachment.h"
|
|
5
|
-
|
|
6
|
-
#pragma mark - Renderer Implementation
|
|
7
|
-
|
|
8
|
-
@implementation ThematicBreakRenderer
|
|
9
|
-
|
|
10
|
-
- (void)renderNodeContent:(TiptapASTNode *)node
|
|
11
|
-
into:(NSMutableAttributedString *)output
|
|
12
|
-
context:(RenderContext *)context
|
|
13
|
-
{
|
|
14
|
-
[self ensureStartingNewline:output];
|
|
15
|
-
|
|
16
|
-
ThematicBreakAttachment *attachment = [[ThematicBreakAttachment alloc] init];
|
|
17
|
-
attachment.lineColor = _config.thematicBreakColor ?: [RCTUIColor separatorColor];
|
|
18
|
-
attachment.lineHeight = _config.thematicBreakHeight > 0 ? _config.thematicBreakHeight : 1.0;
|
|
19
|
-
attachment.marginTop = _config.thematicBreakMarginTop;
|
|
20
|
-
attachment.marginBottom = _config.thematicBreakMarginBottom;
|
|
21
|
-
|
|
22
|
-
NSDictionary *attributes = @{
|
|
23
|
-
NSAttachmentAttributeName : attachment,
|
|
24
|
-
NSParagraphStyleAttributeName : [NSParagraphStyle defaultParagraphStyle]
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
NSAttributedString *breakString = [[NSAttributedString alloc] initWithString:@"\uFFFC" attributes:attributes];
|
|
28
|
-
|
|
29
|
-
[output appendAttributedString:breakString];
|
|
30
|
-
[output appendAttributedString:[[NSAttributedString alloc] initWithString:@"\n"]];
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
#pragma mark - Private Utilities
|
|
34
|
-
|
|
35
|
-
- (void)ensureStartingNewline:(NSMutableAttributedString *)output
|
|
36
|
-
{
|
|
37
|
-
if (output.length > 0 && ![output.string hasSuffix:@"\n"]) {
|
|
38
|
-
[output appendAttributedString:[[NSAttributedString alloc] initWithString:@"\n"]];
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
1
|
+
#import "ThematicBreakRenderer.h"
|
|
2
|
+
#import "TiptapASTNode.h"
|
|
3
|
+
#import "StyleConfig.h"
|
|
4
|
+
#import "ThematicBreakAttachment.h"
|
|
5
|
+
|
|
6
|
+
#pragma mark - Renderer Implementation
|
|
7
|
+
|
|
8
|
+
@implementation ThematicBreakRenderer
|
|
9
|
+
|
|
10
|
+
- (void)renderNodeContent:(TiptapASTNode *)node
|
|
11
|
+
into:(NSMutableAttributedString *)output
|
|
12
|
+
context:(RenderContext *)context
|
|
13
|
+
{
|
|
14
|
+
[self ensureStartingNewline:output];
|
|
15
|
+
|
|
16
|
+
ThematicBreakAttachment *attachment = [[ThematicBreakAttachment alloc] init];
|
|
17
|
+
attachment.lineColor = _config.thematicBreakColor ?: [RCTUIColor separatorColor];
|
|
18
|
+
attachment.lineHeight = _config.thematicBreakHeight > 0 ? _config.thematicBreakHeight : 1.0;
|
|
19
|
+
attachment.marginTop = _config.thematicBreakMarginTop;
|
|
20
|
+
attachment.marginBottom = _config.thematicBreakMarginBottom;
|
|
21
|
+
|
|
22
|
+
NSDictionary *attributes = @{
|
|
23
|
+
NSAttachmentAttributeName : attachment,
|
|
24
|
+
NSParagraphStyleAttributeName : [NSParagraphStyle defaultParagraphStyle]
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
NSAttributedString *breakString = [[NSAttributedString alloc] initWithString:@"\uFFFC" attributes:attributes];
|
|
28
|
+
|
|
29
|
+
[output appendAttributedString:breakString];
|
|
30
|
+
[output appendAttributedString:[[NSAttributedString alloc] initWithString:@"\n"]];
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
#pragma mark - Private Utilities
|
|
34
|
+
|
|
35
|
+
- (void)ensureStartingNewline:(NSMutableAttributedString *)output
|
|
36
|
+
{
|
|
37
|
+
if (output.length > 0 && ![output.string hasSuffix:@"\n"]) {
|
|
38
|
+
[output appendAttributedString:[[NSAttributedString alloc] initWithString:@"\n"]];
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
42
|
@end
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#import "BaseRenderer.h"
|
|
2
|
-
|
|
3
|
-
@interface UnderlineRenderer : BaseRenderer
|
|
4
|
-
@end
|
|
1
|
+
#import "BaseRenderer.h"
|
|
2
|
+
|
|
3
|
+
@interface UnderlineRenderer : BaseRenderer
|
|
4
|
+
@end
|
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
#import "UnderlineRenderer.h"
|
|
2
|
-
#import "ENRMTextLinkAttributes.h"
|
|
3
|
-
#import "TiptapASTNode.h"
|
|
4
|
-
#import "RenderContext.h"
|
|
5
|
-
#import "RendererFactory.h"
|
|
6
|
-
#import "StyleConfig.h"
|
|
7
|
-
|
|
8
|
-
@implementation UnderlineRenderer
|
|
9
|
-
|
|
10
|
-
#pragma mark - Rendering
|
|
11
|
-
|
|
12
|
-
- (void)renderNodeContent:(TiptapASTNode *)node
|
|
13
|
-
into:(NSMutableAttributedString *)output
|
|
14
|
-
context:(RenderContext *)context
|
|
15
|
-
{
|
|
16
|
-
NSUInteger start = output.length;
|
|
17
|
-
[_rendererFactory renderChildrenOfNode:node into:output context:context];
|
|
18
|
-
|
|
19
|
-
NSRange range = NSMakeRange(start, output.length - start);
|
|
20
|
-
if (range.length == 0)
|
|
21
|
-
return;
|
|
22
|
-
|
|
23
|
-
[output addAttribute:NSUnderlineStyleAttributeName value:@(NSUnderlineStyleSingle) range:range];
|
|
24
|
-
// Recognized links inside this span were styled before it closed; record the underline for them too.
|
|
25
|
-
[output enumerateAttribute:ENRMRecognizedLinkAttributeName
|
|
26
|
-
inRange:range
|
|
27
|
-
options:0
|
|
28
|
-
usingBlock:^(id value, NSRange linkRange, BOOL *stop) {
|
|
29
|
-
if ([value boolValue]) {
|
|
30
|
-
[output addAttribute:ENRMRecognizedLinkOriginalUnderlineAttributeName
|
|
31
|
-
value:@(NSUnderlineStyleSingle)
|
|
32
|
-
range:linkRange];
|
|
33
|
-
}
|
|
34
|
-
}];
|
|
35
|
-
|
|
36
|
-
RCTUIColor *underlineColor = [_config underlineColor];
|
|
37
|
-
|
|
38
|
-
[output addAttribute:NSUnderlineColorAttributeName value:underlineColor range:range];
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
@end
|
|
1
|
+
#import "UnderlineRenderer.h"
|
|
2
|
+
#import "ENRMTextLinkAttributes.h"
|
|
3
|
+
#import "TiptapASTNode.h"
|
|
4
|
+
#import "RenderContext.h"
|
|
5
|
+
#import "RendererFactory.h"
|
|
6
|
+
#import "StyleConfig.h"
|
|
7
|
+
|
|
8
|
+
@implementation UnderlineRenderer
|
|
9
|
+
|
|
10
|
+
#pragma mark - Rendering
|
|
11
|
+
|
|
12
|
+
- (void)renderNodeContent:(TiptapASTNode *)node
|
|
13
|
+
into:(NSMutableAttributedString *)output
|
|
14
|
+
context:(RenderContext *)context
|
|
15
|
+
{
|
|
16
|
+
NSUInteger start = output.length;
|
|
17
|
+
[_rendererFactory renderChildrenOfNode:node into:output context:context];
|
|
18
|
+
|
|
19
|
+
NSRange range = NSMakeRange(start, output.length - start);
|
|
20
|
+
if (range.length == 0)
|
|
21
|
+
return;
|
|
22
|
+
|
|
23
|
+
[output addAttribute:NSUnderlineStyleAttributeName value:@(NSUnderlineStyleSingle) range:range];
|
|
24
|
+
// Recognized links inside this span were styled before it closed; record the underline for them too.
|
|
25
|
+
[output enumerateAttribute:ENRMRecognizedLinkAttributeName
|
|
26
|
+
inRange:range
|
|
27
|
+
options:0
|
|
28
|
+
usingBlock:^(id value, NSRange linkRange, BOOL *stop) {
|
|
29
|
+
if ([value boolValue]) {
|
|
30
|
+
[output addAttribute:ENRMRecognizedLinkOriginalUnderlineAttributeName
|
|
31
|
+
value:@(NSUnderlineStyleSingle)
|
|
32
|
+
range:linkRange];
|
|
33
|
+
}
|
|
34
|
+
}];
|
|
35
|
+
|
|
36
|
+
RCTUIColor *underlineColor = [_config underlineColor];
|
|
37
|
+
|
|
38
|
+
[output addAttribute:NSUnderlineColorAttributeName value:underlineColor range:range];
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
@end
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
#import "ENRMUIKit.h"
|
|
3
|
-
|
|
4
|
-
NS_ASSUME_NONNULL_BEGIN
|
|
5
|
-
|
|
6
|
-
@interface ENRMFontSlot : NSObject <NSCopying>
|
|
7
|
-
@property (nonatomic) BOOL needsRecreation;
|
|
8
|
-
@property (nonatomic, strong, nullable) UIFont *cachedFont;
|
|
9
|
-
- (void)invalidate;
|
|
10
|
-
@end
|
|
11
|
-
|
|
12
|
-
NS_ASSUME_NONNULL_END
|
|
1
|
+
#pragma once
|
|
2
|
+
#import "ENRMUIKit.h"
|
|
3
|
+
|
|
4
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
5
|
+
|
|
6
|
+
@interface ENRMFontSlot : NSObject <NSCopying>
|
|
7
|
+
@property (nonatomic) BOOL needsRecreation;
|
|
8
|
+
@property (nonatomic, strong, nullable) UIFont *cachedFont;
|
|
9
|
+
- (void)invalidate;
|
|
10
|
+
@end
|
|
11
|
+
|
|
12
|
+
NS_ASSUME_NONNULL_END
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
#import "ENRMFontSlot.h"
|
|
2
|
-
|
|
3
|
-
@implementation ENRMFontSlot
|
|
4
|
-
|
|
5
|
-
- (instancetype)init
|
|
6
|
-
{
|
|
7
|
-
if (self = [super init]) {
|
|
8
|
-
_needsRecreation = YES;
|
|
9
|
-
}
|
|
10
|
-
return self;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
- (void)invalidate
|
|
14
|
-
{
|
|
15
|
-
_needsRecreation = YES;
|
|
16
|
-
_cachedFont = nil;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
- (id)copyWithZone:(NSZone *)zone
|
|
20
|
-
{
|
|
21
|
-
return [[[self class] allocWithZone:zone] init];
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
@end
|
|
1
|
+
#import "ENRMFontSlot.h"
|
|
2
|
+
|
|
3
|
+
@implementation ENRMFontSlot
|
|
4
|
+
|
|
5
|
+
- (instancetype)init
|
|
6
|
+
{
|
|
7
|
+
if (self = [super init]) {
|
|
8
|
+
_needsRecreation = YES;
|
|
9
|
+
}
|
|
10
|
+
return self;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
- (void)invalidate
|
|
14
|
+
{
|
|
15
|
+
_needsRecreation = YES;
|
|
16
|
+
_cachedFont = nil;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
- (id)copyWithZone:(NSZone *)zone
|
|
20
|
+
{
|
|
21
|
+
return [[[self class] allocWithZone:zone] init];
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
@end
|