Skip to content

Commit d4c3311

Browse files
cubuspl42facebook-github-bot
authored andcommitted
Move all ReactSpan subclasses to a separate folder (#42594)
Summary: Move all `ReactSpan` subclasses to a separate folder. This is a minor improvement in the context of my multi-PR work on react-native-community/discussions-and-proposals#695. I'm adding a new span class later, which was the direct motivation for this change. ## Changelog: <!-- Help reviewers and the release process by writing your own changelog entry. Pick one each for the category and type tags: [ANDROID|GENERAL|IOS|INTERNAL] [BREAKING|ADDED|CHANGED|DEPRECATED|REMOVED|FIXED|SECURITY] - Message For more details, see: https://reactnative.dev/contributing/changelogs-in-pull-requests --> [INTERNAL] [CHANGE] - Move all `ReactSpan` subclasses to a separate folder Pull Request resolved: #42594 Reviewed By: mdvacca Differential Revision: D53123733 Pulled By: cortinico fbshipit-source-id: 10db214a520d157c231e6f3b97948b4209a7ad4b
1 parent f8f7949 commit d4c3311

30 files changed

+114
-129
lines changed

packages/react-native/ReactAndroid/api/ReactAndroid.api

Lines changed: 0 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -6733,29 +6733,6 @@ public class com/facebook/react/views/switchview/ReactSwitchManager$ReactSwitchS
67336733
public fun setProperty (Lcom/facebook/react/views/switchview/ReactSwitchManager$ReactSwitchShadowNode;Ljava/lang/String;Ljava/lang/Object;)V
67346734
}
67356735

6736-
public class com/facebook/react/views/text/CustomLetterSpacingSpan : android/text/style/MetricAffectingSpan, com/facebook/react/views/text/ReactSpan {
6737-
public fun <init> (F)V
6738-
public fun getSpacing ()F
6739-
public fun updateDrawState (Landroid/text/TextPaint;)V
6740-
public fun updateMeasureState (Landroid/text/TextPaint;)V
6741-
}
6742-
6743-
public class com/facebook/react/views/text/CustomLineHeightSpan : android/text/style/LineHeightSpan, com/facebook/react/views/text/ReactSpan {
6744-
public fun <init> (F)V
6745-
public fun chooseHeight (Ljava/lang/CharSequence;IIIILandroid/graphics/Paint$FontMetricsInt;)V
6746-
public fun getLineHeight ()I
6747-
}
6748-
6749-
public class com/facebook/react/views/text/CustomStyleSpan : android/text/style/MetricAffectingSpan, com/facebook/react/views/text/ReactSpan {
6750-
public fun <init> (IILjava/lang/String;Ljava/lang/String;Landroid/content/res/AssetManager;)V
6751-
public fun getFontFamily ()Ljava/lang/String;
6752-
public fun getFontFeatureSettings ()Ljava/lang/String;
6753-
public fun getStyle ()I
6754-
public fun getWeight ()I
6755-
public fun updateDrawState (Landroid/text/TextPaint;)V
6756-
public fun updateMeasureState (Landroid/text/TextPaint;)V
6757-
}
6758-
67596736
public final class com/facebook/react/views/text/DefaultStyleValuesUtil {
67606737
public static fun getDefaultTextColor (Landroid/content/Context;)Landroid/content/res/ColorStateList;
67616738
public static fun getDefaultTextColorHighlight (Landroid/content/Context;)I
@@ -6767,14 +6744,6 @@ public class com/facebook/react/views/text/FontMetricsUtil {
67676744
public static fun getFontMetrics (Ljava/lang/CharSequence;Landroid/text/Layout;Landroid/text/TextPaint;Landroid/content/Context;)Lcom/facebook/react/bridge/WritableArray;
67686745
}
67696746

6770-
public class com/facebook/react/views/text/ReactAbsoluteSizeSpan : android/text/style/AbsoluteSizeSpan, com/facebook/react/views/text/ReactSpan {
6771-
public fun <init> (I)V
6772-
}
6773-
6774-
public class com/facebook/react/views/text/ReactBackgroundColorSpan : android/text/style/BackgroundColorSpan, com/facebook/react/views/text/ReactSpan {
6775-
public fun <init> (I)V
6776-
}
6777-
67786747
public abstract class com/facebook/react/views/text/ReactBaseTextShadowNode : com/facebook/react/uimanager/LayoutShadowNode, com/facebook/react/views/text/BasicTextAttributeProvider {
67796748
public static final field DEFAULT_TEXT_SHADOW_COLOR I
67806749
public static final field PROP_SHADOW_COLOR Ljava/lang/String;
@@ -6866,10 +6835,6 @@ public class com/facebook/react/views/text/ReactFontManager {
68666835
public fun setTypeface (Ljava/lang/String;ILandroid/graphics/Typeface;)V
68676836
}
68686837

6869-
public class com/facebook/react/views/text/ReactForegroundColorSpan : android/text/style/ForegroundColorSpan, com/facebook/react/views/text/ReactSpan {
6870-
public fun <init> (I)V
6871-
}
6872-
68736838
public class com/facebook/react/views/text/ReactRawTextManager : com/facebook/react/uimanager/ViewManager {
68746839
public fun <init> ()V
68756840
public synthetic fun createShadowNodeInstance ()Lcom/facebook/react/uimanager/ReactShadowNode;
@@ -6903,18 +6868,6 @@ public class com/facebook/react/views/text/ReactRawTextShadowNode$$PropsSetter :
69036868
public fun setProperty (Lcom/facebook/react/views/text/ReactRawTextShadowNode;Ljava/lang/String;Ljava/lang/Object;)V
69046869
}
69056870

6906-
public abstract interface class com/facebook/react/views/text/ReactSpan {
6907-
}
6908-
6909-
public class com/facebook/react/views/text/ReactStrikethroughSpan : android/text/style/StrikethroughSpan, com/facebook/react/views/text/ReactSpan {
6910-
public fun <init> ()V
6911-
}
6912-
6913-
public class com/facebook/react/views/text/ReactTagSpan : com/facebook/react/views/text/ReactSpan {
6914-
public fun <init> (I)V
6915-
public fun getReactTag ()I
6916-
}
6917-
69186871
public abstract class com/facebook/react/views/text/ReactTextAnchorViewManager : com/facebook/react/uimanager/BaseViewManager {
69196872
public fun <init> ()V
69206873
public fun setAccessible (Lcom/facebook/react/views/text/ReactTextView;Z)V
@@ -6937,11 +6890,6 @@ public abstract class com/facebook/react/views/text/ReactTextAnchorViewManager :
69376890
public fun setTextAlignVertical (Lcom/facebook/react/views/text/ReactTextView;Ljava/lang/String;)V
69386891
}
69396892

6940-
public abstract class com/facebook/react/views/text/ReactTextInlineImageShadowNode : com/facebook/react/uimanager/LayoutShadowNode {
6941-
public fun <init> ()V
6942-
public abstract fun buildInlineImageSpan ()Lcom/facebook/react/views/text/TextInlineImageSpan;
6943-
}
6944-
69456893
public class com/facebook/react/views/text/ReactTextShadowNode : com/facebook/react/views/text/ReactBaseTextShadowNode {
69466894
public fun <init> ()V
69476895
public fun <init> (Lcom/facebook/react/views/text/ReactTextViewManagerCallback;)V
@@ -7056,10 +7004,6 @@ public class com/facebook/react/views/text/ReactTypefaceUtils {
70567004
public static fun parseFontWeight (Ljava/lang/String;)I
70577005
}
70587006

7059-
public class com/facebook/react/views/text/ReactUnderlineSpan : android/text/style/UnderlineSpan, com/facebook/react/views/text/ReactSpan {
7060-
public fun <init> ()V
7061-
}
7062-
70637007
public class com/facebook/react/views/text/ReactVirtualTextShadowNode : com/facebook/react/views/text/ReactBaseTextShadowNode {
70647008
public fun <init> ()V
70657009
public fun isVirtual ()Z
@@ -7089,18 +7033,6 @@ public class com/facebook/react/views/text/ReactVirtualTextViewManager$$PropsSet
70897033
public fun setProperty (Lcom/facebook/react/views/text/ReactVirtualTextViewManager;Landroid/view/View;Ljava/lang/String;Ljava/lang/Object;)V
70907034
}
70917035

7092-
public class com/facebook/react/views/text/SetSpanOperation {
7093-
protected field end I
7094-
protected field start I
7095-
protected field what Lcom/facebook/react/views/text/ReactSpan;
7096-
public fun execute (Landroid/text/SpannableStringBuilder;I)V
7097-
}
7098-
7099-
public class com/facebook/react/views/text/ShadowStyleSpan : android/text/style/CharacterStyle, com/facebook/react/views/text/ReactSpan {
7100-
public fun <init> (FFFI)V
7101-
public fun updateDrawState (Landroid/text/TextPaint;)V
7102-
}
7103-
71047036
public class com/facebook/react/views/text/TextAttributeProps : com/facebook/react/views/text/EffectiveTextAttributeProvider {
71057037
public static final field TA_KEY_ACCESSIBILITY_ROLE S
71067038
public static final field TA_KEY_ALIGNMENT S
@@ -7213,28 +7145,6 @@ public class com/facebook/react/views/text/TextAttributes {
72137145
public fun toString ()Ljava/lang/String;
72147146
}
72157147

7216-
public abstract class com/facebook/react/views/text/TextInlineImageSpan : android/text/style/ReplacementSpan, com/facebook/react/views/text/ReactSpan {
7217-
public fun <init> ()V
7218-
public abstract fun getDrawable ()Landroid/graphics/drawable/Drawable;
7219-
public abstract fun getHeight ()I
7220-
public abstract fun getWidth ()I
7221-
public abstract fun onAttachedToWindow ()V
7222-
public abstract fun onDetachedFromWindow ()V
7223-
public abstract fun onFinishTemporaryDetach ()V
7224-
public abstract fun onStartTemporaryDetach ()V
7225-
public static fun possiblyUpdateInlineImageSpans (Landroid/text/Spannable;Landroid/widget/TextView;)V
7226-
public abstract fun setTextView (Landroid/widget/TextView;)V
7227-
}
7228-
7229-
public class com/facebook/react/views/text/TextInlineViewPlaceholderSpan : android/text/style/ReplacementSpan, com/facebook/react/views/text/ReactSpan {
7230-
public fun <init> (III)V
7231-
public fun draw (Landroid/graphics/Canvas;Ljava/lang/CharSequence;IIFIIILandroid/graphics/Paint;)V
7232-
public fun getHeight ()I
7233-
public fun getReactTag ()I
7234-
public fun getSize (Landroid/graphics/Paint;Ljava/lang/CharSequence;IILandroid/graphics/Paint$FontMetricsInt;)I
7235-
public fun getWidth ()I
7236-
}
7237-
72387148
public class com/facebook/react/views/text/TextLayoutManager {
72397149
public fun <init> ()V
72407150
public static fun deleteCachedSpannableForTag (I)V

packages/react-native/ReactAndroid/gradle.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ binaryCompatibilityValidator.ignoredPackages=com.facebook.debug,\
2020
com.facebook.react.internal,\
2121
com.facebook.react.module.processing,\
2222
com.facebook.react.processing,\
23+
com.facebook.react.views.text.internal,\
2324
com.facebook.systrace,\
2425
com.facebook.yoga
2526
binaryCompatibilityValidator.nonPublicMarkers=com.facebook.react.common.annotations.VisibleForTesting,\

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactBaseTextShadowNode.java

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,22 @@
3131
import com.facebook.react.uimanager.ReactShadowNode;
3232
import com.facebook.react.uimanager.ViewProps;
3333
import com.facebook.react.uimanager.annotations.ReactProp;
34+
import com.facebook.react.views.text.internal.ReactTextInlineImageShadowNode;
35+
import com.facebook.react.views.text.internal.span.CustomLetterSpacingSpan;
36+
import com.facebook.react.views.text.internal.span.CustomLineHeightSpan;
37+
import com.facebook.react.views.text.internal.span.CustomStyleSpan;
38+
import com.facebook.react.views.text.internal.span.ReactAbsoluteSizeSpan;
39+
import com.facebook.react.views.text.internal.span.ReactBackgroundColorSpan;
40+
import com.facebook.react.views.text.internal.span.ReactClickableSpan;
41+
import com.facebook.react.views.text.internal.span.ReactForegroundColorSpan;
42+
import com.facebook.react.views.text.internal.span.ReactSpan;
43+
import com.facebook.react.views.text.internal.span.ReactStrikethroughSpan;
44+
import com.facebook.react.views.text.internal.span.ReactTagSpan;
45+
import com.facebook.react.views.text.internal.span.ReactUnderlineSpan;
46+
import com.facebook.react.views.text.internal.span.SetSpanOperation;
47+
import com.facebook.react.views.text.internal.span.ShadowStyleSpan;
48+
import com.facebook.react.views.text.internal.span.TextInlineImageSpan;
49+
import com.facebook.react.views.text.internal.span.TextInlineViewPlaceholderSpan;
3450
import com.facebook.yoga.YogaDirection;
3551
import com.facebook.yoga.YogaUnit;
3652
import com.facebook.yoga.YogaValue;
@@ -366,15 +382,16 @@ protected Spannable spannedFromShadowNode(
366382
// or images.
367383
for (int priorityIndex = 0; priorityIndex < ops.size(); priorityIndex++) {
368384
final SetSpanOperation op = ops.get(ops.size() - priorityIndex - 1);
385+
final ReactSpan what = op.getWhat();
369386

370-
boolean isInlineImage = op.what instanceof TextInlineImageSpan;
371-
if (isInlineImage || op.what instanceof TextInlineViewPlaceholderSpan) {
387+
boolean isInlineImage = what instanceof TextInlineImageSpan;
388+
if (isInlineImage || what instanceof TextInlineViewPlaceholderSpan) {
372389
int height;
373390
if (isInlineImage) {
374-
height = ((TextInlineImageSpan) op.what).getHeight();
391+
height = ((TextInlineImageSpan) what).getHeight();
375392
textShadowNode.mContainsImages = true;
376393
} else {
377-
TextInlineViewPlaceholderSpan placeholder = (TextInlineViewPlaceholderSpan) op.what;
394+
TextInlineViewPlaceholderSpan placeholder = (TextInlineViewPlaceholderSpan) what;
378395
height = placeholder.getHeight();
379396

380397
// Inline views cannot be layout-only because the ReactTextView needs to be able to grab

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextShadowNode.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@
3232
import com.facebook.react.uimanager.UIViewOperationQueue;
3333
import com.facebook.react.uimanager.annotations.ReactProp;
3434
import com.facebook.react.uimanager.events.RCTEventEmitter;
35+
import com.facebook.react.views.text.internal.span.ReactAbsoluteSizeSpan;
36+
import com.facebook.react.views.text.internal.span.TextInlineViewPlaceholderSpan;
3537
import com.facebook.yoga.YogaBaselineFunction;
3638
import com.facebook.yoga.YogaConstants;
3739
import com.facebook.yoga.YogaDirection;

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@
4040
import com.facebook.react.uimanager.ViewDefaults;
4141
import com.facebook.react.uimanager.common.UIManagerType;
4242
import com.facebook.react.uimanager.common.ViewUtil;
43+
import com.facebook.react.views.text.internal.span.ReactTagSpan;
44+
import com.facebook.react.views.text.internal.span.TextInlineImageSpan;
45+
import com.facebook.react.views.text.internal.span.TextInlineViewPlaceholderSpan;
4346
import com.facebook.react.views.view.ReactViewBackgroundManager;
4447
import java.util.ArrayList;
4548
import java.util.Collections;

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextViewManager.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
import com.facebook.react.uimanager.StateWrapper;
2626
import com.facebook.react.uimanager.ThemedReactContext;
2727
import com.facebook.react.uimanager.ViewProps;
28+
import com.facebook.react.views.text.internal.span.ReactClickableSpan;
29+
import com.facebook.react.views.text.internal.span.TextInlineImageSpan;
2830
import com.facebook.yoga.YogaMeasureMode;
2931
import java.util.HashMap;
3032
import java.util.Map;

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,19 @@
3838
import com.facebook.react.uimanager.ReactStylesDiffMap;
3939
import com.facebook.react.uimanager.ViewProps;
4040
import com.facebook.react.views.text.fragments.BridgeTextFragmentList;
41+
import com.facebook.react.views.text.internal.span.CustomLetterSpacingSpan;
42+
import com.facebook.react.views.text.internal.span.CustomLineHeightSpan;
43+
import com.facebook.react.views.text.internal.span.CustomStyleSpan;
44+
import com.facebook.react.views.text.internal.span.ReactAbsoluteSizeSpan;
45+
import com.facebook.react.views.text.internal.span.ReactBackgroundColorSpan;
46+
import com.facebook.react.views.text.internal.span.ReactClickableSpan;
47+
import com.facebook.react.views.text.internal.span.ReactForegroundColorSpan;
48+
import com.facebook.react.views.text.internal.span.ReactStrikethroughSpan;
49+
import com.facebook.react.views.text.internal.span.ReactTagSpan;
50+
import com.facebook.react.views.text.internal.span.ReactUnderlineSpan;
51+
import com.facebook.react.views.text.internal.span.SetSpanOperation;
52+
import com.facebook.react.views.text.internal.span.ShadowStyleSpan;
53+
import com.facebook.react.views.text.internal.span.TextInlineViewPlaceholderSpan;
4154
import com.facebook.yoga.YogaConstants;
4255
import com.facebook.yoga.YogaMeasureMode;
4356
import com.facebook.yoga.YogaMeasureOutput;

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManagerMapBuffer.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,19 @@
3737
import com.facebook.react.uimanager.ReactAccessibilityDelegate.AccessibilityRole;
3838
import com.facebook.react.uimanager.ReactAccessibilityDelegate.Role;
3939
import com.facebook.react.views.text.fragments.MapBufferTextFragmentList;
40+
import com.facebook.react.views.text.internal.span.CustomLetterSpacingSpan;
41+
import com.facebook.react.views.text.internal.span.CustomLineHeightSpan;
42+
import com.facebook.react.views.text.internal.span.CustomStyleSpan;
43+
import com.facebook.react.views.text.internal.span.ReactAbsoluteSizeSpan;
44+
import com.facebook.react.views.text.internal.span.ReactBackgroundColorSpan;
45+
import com.facebook.react.views.text.internal.span.ReactClickableSpan;
46+
import com.facebook.react.views.text.internal.span.ReactForegroundColorSpan;
47+
import com.facebook.react.views.text.internal.span.ReactStrikethroughSpan;
48+
import com.facebook.react.views.text.internal.span.ReactTagSpan;
49+
import com.facebook.react.views.text.internal.span.ReactUnderlineSpan;
50+
import com.facebook.react.views.text.internal.span.SetSpanOperation;
51+
import com.facebook.react.views.text.internal.span.ShadowStyleSpan;
52+
import com.facebook.react.views.text.internal.span.TextInlineViewPlaceholderSpan;
4053
import com.facebook.yoga.YogaConstants;
4154
import com.facebook.yoga.YogaMeasureMode;
4255
import com.facebook.yoga.YogaMeasureOutput;

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutUtils.kt

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,27 @@ package com.facebook.react.views.text
99

1010
import android.content.Context
1111
import android.graphics.Color
12-
import android.text.*
12+
import android.text.Spannable
13+
import android.text.SpannableStringBuilder
1314
import android.view.View
1415
import com.facebook.react.common.ReactConstants
1516
import com.facebook.react.uimanager.PixelUtil
1617
import com.facebook.react.uimanager.ReactAccessibilityDelegate
1718
import com.facebook.react.views.text.fragments.TextFragment
1819
import com.facebook.react.views.text.fragments.TextFragmentList
20+
import com.facebook.react.views.text.internal.span.CustomLetterSpacingSpan
21+
import com.facebook.react.views.text.internal.span.CustomLineHeightSpan
22+
import com.facebook.react.views.text.internal.span.CustomStyleSpan
23+
import com.facebook.react.views.text.internal.span.ReactAbsoluteSizeSpan
24+
import com.facebook.react.views.text.internal.span.ReactBackgroundColorSpan
25+
import com.facebook.react.views.text.internal.span.ReactClickableSpan
26+
import com.facebook.react.views.text.internal.span.ReactForegroundColorSpan
27+
import com.facebook.react.views.text.internal.span.ReactStrikethroughSpan
28+
import com.facebook.react.views.text.internal.span.ReactTagSpan
29+
import com.facebook.react.views.text.internal.span.ReactUnderlineSpan
30+
import com.facebook.react.views.text.internal.span.SetSpanOperation
31+
import com.facebook.react.views.text.internal.span.ShadowStyleSpan
32+
import com.facebook.react.views.text.internal.span.TextInlineViewPlaceholderSpan
1933

2034
/** Utility methods for building [Spannable]s */
2135
internal object TextLayoutUtils {

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/frescosupport/FrescoBasedReactTextInlineImageShadowNode.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@
2121
import com.facebook.react.common.ReactConstants;
2222
import com.facebook.react.uimanager.ViewProps;
2323
import com.facebook.react.uimanager.annotations.ReactProp;
24-
import com.facebook.react.views.text.ReactTextInlineImageShadowNode;
25-
import com.facebook.react.views.text.TextInlineImageSpan;
24+
import com.facebook.react.views.text.internal.ReactTextInlineImageShadowNode;
25+
import com.facebook.react.views.text.internal.span.TextInlineImageSpan;
2626
import com.facebook.yoga.YogaConstants;
2727
import java.util.Locale;
2828

0 commit comments

Comments
 (0)