From 626f9b595991c5f80016623e369f0a2874e8622c Mon Sep 17 00:00:00 2001 From: Eric Lewis Date: Wed, 15 May 2019 19:13:15 -0400 Subject: [PATCH 1/6] [Fabric] use state in paragraph --- .../Text/RCTParagraphComponentView.mm | 28 ++++----- .../text/paragraph/ParagraphLocalData.cpp | 58 ------------------- .../text/paragraph/ParagraphShadowNode.cpp | 19 +++--- .../text/paragraph/ParagraphShadowNode.h | 8 ++- .../text/paragraph/ParagraphState.cpp | 43 ++++++++++++++ ...{ParagraphLocalData.h => ParagraphState.h} | 29 +++------- .../components/text/paragraph/conversions.h | 14 ++--- 7 files changed, 86 insertions(+), 113 deletions(-) delete mode 100644 ReactCommon/fabric/components/text/paragraph/ParagraphLocalData.cpp create mode 100644 ReactCommon/fabric/components/text/paragraph/ParagraphState.cpp rename ReactCommon/fabric/components/text/paragraph/{ParagraphLocalData.h => ParagraphState.h} (55%) diff --git a/React/Fabric/Mounting/ComponentViews/Text/RCTParagraphComponentView.mm b/React/Fabric/Mounting/ComponentViews/Text/RCTParagraphComponentView.mm index 9a64f5c30dce93..80e92cb33496f0 100644 --- a/React/Fabric/Mounting/ComponentViews/Text/RCTParagraphComponentView.mm +++ b/React/Fabric/Mounting/ComponentViews/Text/RCTParagraphComponentView.mm @@ -8,7 +8,7 @@ #import "RCTParagraphComponentView.h" #import -#import +#import #import #import #import @@ -21,7 +21,7 @@ using namespace facebook::react; @implementation RCTParagraphComponentView { - SharedParagraphLocalData _paragraphLocalData; + ParagraphShadowNode::ConcreteState::Shared _state; ParagraphAttributes _paragraphAttributes; } @@ -63,32 +63,32 @@ - (void)updateProps:(SharedProps)props oldProps:(SharedProps)oldProps _paragraphAttributes = paragraphProps->paragraphAttributes; } -- (void)updateLocalData:(SharedLocalData)localData oldLocalData:(SharedLocalData)oldLocalData +- (void)updateState:(State::Shared)state oldState:(State::Shared)oldState { - _paragraphLocalData = std::static_pointer_cast(localData); - assert(_paragraphLocalData); + _state = std::static_pointer_cast(state); + assert(_state); [self setNeedsDisplay]; } - (void)prepareForRecycle { [super prepareForRecycle]; - _paragraphLocalData.reset(); + _state.reset(); } - (void)drawRect:(CGRect)rect { - if (!_paragraphLocalData) { + if (!_state) { return; } - SharedTextLayoutManager textLayoutManager = _paragraphLocalData->getTextLayoutManager(); + SharedTextLayoutManager textLayoutManager = _state->getData().getTextLayoutManager(); RCTTextLayoutManager *nativeTextLayoutManager = (__bridge RCTTextLayoutManager *)textLayoutManager->getNativeTextLayoutManager(); CGRect frame = RCTCGRectFromRect(_layoutMetrics.getContentFrame()); - [nativeTextLayoutManager drawAttributedString:_paragraphLocalData->getAttributedString() + [nativeTextLayoutManager drawAttributedString:_state->getData().getAttributedString() paragraphAttributes:_paragraphAttributes frame:frame]; } @@ -102,26 +102,26 @@ - (NSString *)accessibilityLabel return superAccessibilityLabel; } - if (!_paragraphLocalData) { + if (!_state) { return nil; } - return RCTNSStringFromString(_paragraphLocalData->getAttributedString().getString()); + return RCTNSStringFromString(_state->getData().getAttributedString().getString()); } - (SharedTouchEventEmitter)touchEventEmitterAtPoint:(CGPoint)point { - if (!_paragraphLocalData) { + if (!_state) { return _eventEmitter; } - SharedTextLayoutManager textLayoutManager = _paragraphLocalData->getTextLayoutManager(); + SharedTextLayoutManager textLayoutManager = _state->getData().getTextLayoutManager(); RCTTextLayoutManager *nativeTextLayoutManager = (__bridge RCTTextLayoutManager *)textLayoutManager->getNativeTextLayoutManager(); CGRect frame = RCTCGRectFromRect(_layoutMetrics.getContentFrame()); SharedEventEmitter eventEmitter = - [nativeTextLayoutManager getEventEmitterWithAttributeString:_paragraphLocalData->getAttributedString() + [nativeTextLayoutManager getEventEmitterWithAttributeString:_state->getData().getAttributedString() paragraphAttributes:_paragraphAttributes frame:frame atPoint:point]; diff --git a/ReactCommon/fabric/components/text/paragraph/ParagraphLocalData.cpp b/ReactCommon/fabric/components/text/paragraph/ParagraphLocalData.cpp deleted file mode 100644 index fb9426da9975f6..00000000000000 --- a/ReactCommon/fabric/components/text/paragraph/ParagraphLocalData.cpp +++ /dev/null @@ -1,58 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -#include "ParagraphLocalData.h" - -#include -#include - -namespace facebook { -namespace react { - -AttributedString ParagraphLocalData::getAttributedString() const { - return attributedString_; -} - -void ParagraphLocalData::setAttributedString( - AttributedString attributedString) { - ensureUnsealed(); - attributedString_ = attributedString; -} - -SharedTextLayoutManager ParagraphLocalData::getTextLayoutManager() const { - return textLayoutManager_; -} - -void ParagraphLocalData::setTextLayoutManager( - SharedTextLayoutManager textLayoutManager) { - ensureUnsealed(); - textLayoutManager_ = textLayoutManager; -} - -#ifdef ANDROID - -folly::dynamic ParagraphLocalData::getDynamic() const { - return toDynamic(*this); -} - -#endif - -#pragma mark - DebugStringConvertible - -#if RN_DEBUG_STRING_CONVERTIBLE -std::string ParagraphLocalData::getDebugName() const { - return "ParagraphLocalData"; -} - -SharedDebugStringConvertibleList ParagraphLocalData::getDebugProps() const { - return { - debugStringConvertibleItem("attributedString", attributedString_, "")}; -} -#endif - -} // namespace react -} // namespace facebook diff --git a/ReactCommon/fabric/components/text/paragraph/ParagraphShadowNode.cpp b/ReactCommon/fabric/components/text/paragraph/ParagraphShadowNode.cpp index 028652ca5cbcc7..5b3762e5b4aec7 100644 --- a/ReactCommon/fabric/components/text/paragraph/ParagraphShadowNode.cpp +++ b/ReactCommon/fabric/components/text/paragraph/ParagraphShadowNode.cpp @@ -6,7 +6,7 @@ */ #include "ParagraphShadowNode.h" -#include "ParagraphLocalData.h" +#include "ParagraphState.h" #include "ParagraphMeasurementCache.h" namespace facebook { @@ -38,21 +38,18 @@ void ParagraphShadowNode::setMeasureCache( measureCache_ = cache; } -void ParagraphShadowNode::updateLocalDataIfNeeded() { +void ParagraphShadowNode::updateStateIfNeeded() { ensureUnsealed(); auto attributedString = getAttributedString(); - auto currentLocalData = - std::static_pointer_cast(getLocalData()); - if (currentLocalData && - currentLocalData->getAttributedString() == attributedString) { + auto state = getStateData(); + if (state.getAttributedString() == attributedString) { return; } - auto localData = std::make_shared(); - localData->setAttributedString(std::move(attributedString)); - localData->setTextLayoutManager(textLayoutManager_); - setLocalData(localData); + state.setAttributedString(std::move(attributedString)); + state.setTextLayoutManager(textLayoutManager_); + setStateData(std::move(state)); } #pragma mark - LayoutableShadowNode @@ -83,7 +80,7 @@ Size ParagraphShadowNode::measure(LayoutConstraints layoutConstraints) const { } void ParagraphShadowNode::layout(LayoutContext layoutContext) { - updateLocalDataIfNeeded(); + updateStateIfNeeded(); ConcreteViewShadowNode::layout(layoutContext); } diff --git a/ReactCommon/fabric/components/text/paragraph/ParagraphShadowNode.h b/ReactCommon/fabric/components/text/paragraph/ParagraphShadowNode.h index 9d03af4a3a6006..28198ae4ef9762 100644 --- a/ReactCommon/fabric/components/text/paragraph/ParagraphShadowNode.h +++ b/ReactCommon/fabric/components/text/paragraph/ParagraphShadowNode.h @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -32,7 +33,8 @@ using ParagraphEventEmitter = ViewEventEmitter; class ParagraphShadowNode : public ConcreteViewShadowNode< ParagraphComponentName, ParagraphProps, - ParagraphEventEmitter>, + ParagraphEventEmitter, + ParagraphState>, public BaseTextShadowNode { public: using ConcreteViewShadowNode::ConcreteViewShadowNode; @@ -45,7 +47,7 @@ class ParagraphShadowNode : public ConcreteViewShadowNode< /* * Associates a shared TextLayoutManager with the node. * `ParagraphShadowNode` uses the manager to measure text content - * and construct `ParagraphLocalData` objects. + * and construct `ParagraphState` objects. */ void setTextLayoutManager(SharedTextLayoutManager textLayoutManager); @@ -68,7 +70,7 @@ class ParagraphShadowNode : public ConcreteViewShadowNode< * Creates a `LocalData` object (with `AttributedText` and * `TextLayoutManager`) if needed. */ - void updateLocalDataIfNeeded(); + void updateStateIfNeeded(); SharedTextLayoutManager textLayoutManager_; const ParagraphMeasurementCache *measureCache_; diff --git a/ReactCommon/fabric/components/text/paragraph/ParagraphState.cpp b/ReactCommon/fabric/components/text/paragraph/ParagraphState.cpp new file mode 100644 index 00000000000000..7c55b6885e65f7 --- /dev/null +++ b/ReactCommon/fabric/components/text/paragraph/ParagraphState.cpp @@ -0,0 +1,43 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#include "ParagraphState.h" + +#include +#include + +namespace facebook { +namespace react { + +AttributedString ParagraphState::getAttributedString() const { + return attributedString_; +} + +void ParagraphState::setAttributedString(const AttributedString &attributedString) const { + assert(!attributedStringIsInitialized_); + attributedString_ = attributedString; + attributedStringIsInitialized_ = true; +} + +SharedTextLayoutManager ParagraphState::getTextLayoutManager() const { + return textLayoutManager_; +} + +void ParagraphState::setTextLayoutManager(const SharedTextLayoutManager &textLayoutManager) const { + textLayoutManager_ = textLayoutManager; +} + +#ifdef ANDROID + +folly::dynamic ParagraphState::getDynamic() const { + return toDynamic(*this); +} + +#endif + +} // namespace react +} // namespace facebook diff --git a/ReactCommon/fabric/components/text/paragraph/ParagraphLocalData.h b/ReactCommon/fabric/components/text/paragraph/ParagraphState.h similarity index 55% rename from ReactCommon/fabric/components/text/paragraph/ParagraphLocalData.h rename to ReactCommon/fabric/components/text/paragraph/ParagraphState.h index 15e370573566ab..9ed00f55ece77e 100644 --- a/ReactCommon/fabric/components/text/paragraph/ParagraphLocalData.h +++ b/ReactCommon/fabric/components/text/paragraph/ParagraphState.h @@ -8,27 +8,22 @@ #pragma once #include -#include #include namespace facebook { namespace react { - -class ParagraphLocalData; - -using SharedParagraphLocalData = std::shared_ptr; - + /* - * LocalData for component. + * State for component. * Represents what to render and how to render. */ -class ParagraphLocalData : public LocalData { +class ParagraphState final { public: /* * All content of component represented as an `AttributedString`. */ AttributedString getAttributedString() const; - void setAttributedString(AttributedString attributedString); + void setAttributedString(AttributedString const &attributedString) const; /* * `TextLayoutManager` provides a connection to platform-specific @@ -36,22 +31,16 @@ class ParagraphLocalData : public LocalData { * `AttributedString`. */ SharedTextLayoutManager getTextLayoutManager() const; - void setTextLayoutManager(SharedTextLayoutManager textLayoutManager); + void setTextLayoutManager(SharedTextLayoutManager const &textLayoutManager) const; #ifdef ANDROID - folly::dynamic getDynamic() const override; -#endif - -#pragma mark - DebugStringConvertible - -#if RN_DEBUG_STRING_CONVERTIBLE - std::string getDebugName() const override; - SharedDebugStringConvertibleList getDebugProps() const override; + folly::dynamic getDynamic() const; #endif private: - AttributedString attributedString_; - SharedTextLayoutManager textLayoutManager_; + mutable AttributedString attributedString_; + mutable SharedTextLayoutManager textLayoutManager_; + mutable bool attributedStringIsInitialized_; }; } // namespace react diff --git a/ReactCommon/fabric/components/text/paragraph/conversions.h b/ReactCommon/fabric/components/text/paragraph/conversions.h index dd507cefa0d7c3..aecb0e42733296 100644 --- a/ReactCommon/fabric/components/text/paragraph/conversions.h +++ b/ReactCommon/fabric/components/text/paragraph/conversions.h @@ -5,19 +5,19 @@ #include #include -#include +#include namespace facebook { namespace react { #ifdef ANDROID -inline folly::dynamic toDynamic(const ParagraphLocalData ¶graphLocalData) { - folly::dynamic newLocalData = folly::dynamic::object(); - newLocalData["attributedString"] = - toDynamic(paragraphLocalData.getAttributedString()); - newLocalData["hash"] = newLocalData["attributedString"]["hash"]; - return newLocalData; +inline folly::dynamic toDynamic(const ParagraphState ¶graphState) { + folly::dynamic newState = folly::dynamic::object(); + newState["attributedString"] = + toDynamic(paragraphState->getData().getAttributedString()); + newState["hash"] = newState["attributedString"]["hash"]; + return newState; } #endif From 9e07fb410c9ad728dff6c78ca4b9b6906fbaf8d9 Mon Sep 17 00:00:00 2001 From: Eric Lewis Date: Wed, 15 May 2019 19:17:40 -0400 Subject: [PATCH 2/6] Fix comment --- .../fabric/components/text/paragraph/ParagraphShadowNode.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ReactCommon/fabric/components/text/paragraph/ParagraphShadowNode.h b/ReactCommon/fabric/components/text/paragraph/ParagraphShadowNode.h index 28198ae4ef9762..4052b3c5f5781f 100644 --- a/ReactCommon/fabric/components/text/paragraph/ParagraphShadowNode.h +++ b/ReactCommon/fabric/components/text/paragraph/ParagraphShadowNode.h @@ -67,7 +67,7 @@ class ParagraphShadowNode : public ConcreteViewShadowNode< private: /* - * Creates a `LocalData` object (with `AttributedText` and + * Creates a `State` object (with `AttributedText` and * `TextLayoutManager`) if needed. */ void updateStateIfNeeded(); From 1babc81ad6e25d55a8252fcd3cef2028e940fa92 Mon Sep 17 00:00:00 2001 From: Eric Lewis Date: Thu, 16 May 2019 14:10:42 -0400 Subject: [PATCH 3/6] Simplify. --- .../Text/RCTParagraphComponentView.mm | 10 +++++----- .../text/paragraph/ParagraphShadowNode.cpp | 12 +++++++----- .../text/paragraph/ParagraphState.cpp | 18 ------------------ .../components/text/paragraph/ParagraphState.h | 12 +++--------- 4 files changed, 15 insertions(+), 37 deletions(-) diff --git a/React/Fabric/Mounting/ComponentViews/Text/RCTParagraphComponentView.mm b/React/Fabric/Mounting/ComponentViews/Text/RCTParagraphComponentView.mm index 80e92cb33496f0..5a6f880432bd0f 100644 --- a/React/Fabric/Mounting/ComponentViews/Text/RCTParagraphComponentView.mm +++ b/React/Fabric/Mounting/ComponentViews/Text/RCTParagraphComponentView.mm @@ -82,13 +82,13 @@ - (void)drawRect:(CGRect)rect return; } - SharedTextLayoutManager textLayoutManager = _state->getData().getTextLayoutManager(); + SharedTextLayoutManager textLayoutManager = _state->getData().layoutManager; RCTTextLayoutManager *nativeTextLayoutManager = (__bridge RCTTextLayoutManager *)textLayoutManager->getNativeTextLayoutManager(); CGRect frame = RCTCGRectFromRect(_layoutMetrics.getContentFrame()); - [nativeTextLayoutManager drawAttributedString:_state->getData().getAttributedString() + [nativeTextLayoutManager drawAttributedString:_state->getData().attributedString paragraphAttributes:_paragraphAttributes frame:frame]; } @@ -106,7 +106,7 @@ - (NSString *)accessibilityLabel return nil; } - return RCTNSStringFromString(_state->getData().getAttributedString().getString()); + return RCTNSStringFromString(_state->getData().attributedString.getString()); } - (SharedTouchEventEmitter)touchEventEmitterAtPoint:(CGPoint)point @@ -115,13 +115,13 @@ - (SharedTouchEventEmitter)touchEventEmitterAtPoint:(CGPoint)point return _eventEmitter; } - SharedTextLayoutManager textLayoutManager = _state->getData().getTextLayoutManager(); + SharedTextLayoutManager textLayoutManager = _state->getData().layoutManager; RCTTextLayoutManager *nativeTextLayoutManager = (__bridge RCTTextLayoutManager *)textLayoutManager->getNativeTextLayoutManager(); CGRect frame = RCTCGRectFromRect(_layoutMetrics.getContentFrame()); SharedEventEmitter eventEmitter = - [nativeTextLayoutManager getEventEmitterWithAttributeString:_state->getData().getAttributedString() + [nativeTextLayoutManager getEventEmitterWithAttributeString:_state->getData().attributedString paragraphAttributes:_paragraphAttributes frame:frame atPoint:point]; diff --git a/ReactCommon/fabric/components/text/paragraph/ParagraphShadowNode.cpp b/ReactCommon/fabric/components/text/paragraph/ParagraphShadowNode.cpp index 5b3762e5b4aec7..ab569e7d7ebbab 100644 --- a/ReactCommon/fabric/components/text/paragraph/ParagraphShadowNode.cpp +++ b/ReactCommon/fabric/components/text/paragraph/ParagraphShadowNode.cpp @@ -42,14 +42,16 @@ void ParagraphShadowNode::updateStateIfNeeded() { ensureUnsealed(); auto attributedString = getAttributedString(); - auto state = getStateData(); - if (state.getAttributedString() == attributedString) { + auto const &state = getStateData(); + if (state.attributedString == attributedString) { return; } - state.setAttributedString(std::move(attributedString)); - state.setTextLayoutManager(textLayoutManager_); - setStateData(std::move(state)); + auto newStateData = ParagraphState(); + newStateData.attributedString = attributedString; + newStateData.layoutManager = textLayoutManager_; + + setStateData(std::move(newStateData)); } #pragma mark - LayoutableShadowNode diff --git a/ReactCommon/fabric/components/text/paragraph/ParagraphState.cpp b/ReactCommon/fabric/components/text/paragraph/ParagraphState.cpp index 7c55b6885e65f7..886bc73371929d 100644 --- a/ReactCommon/fabric/components/text/paragraph/ParagraphState.cpp +++ b/ReactCommon/fabric/components/text/paragraph/ParagraphState.cpp @@ -13,24 +13,6 @@ namespace facebook { namespace react { -AttributedString ParagraphState::getAttributedString() const { - return attributedString_; -} - -void ParagraphState::setAttributedString(const AttributedString &attributedString) const { - assert(!attributedStringIsInitialized_); - attributedString_ = attributedString; - attributedStringIsInitialized_ = true; -} - -SharedTextLayoutManager ParagraphState::getTextLayoutManager() const { - return textLayoutManager_; -} - -void ParagraphState::setTextLayoutManager(const SharedTextLayoutManager &textLayoutManager) const { - textLayoutManager_ = textLayoutManager; -} - #ifdef ANDROID folly::dynamic ParagraphState::getDynamic() const { diff --git a/ReactCommon/fabric/components/text/paragraph/ParagraphState.h b/ReactCommon/fabric/components/text/paragraph/ParagraphState.h index 9ed00f55ece77e..de6f5a5fc100a0 100644 --- a/ReactCommon/fabric/components/text/paragraph/ParagraphState.h +++ b/ReactCommon/fabric/components/text/paragraph/ParagraphState.h @@ -22,25 +22,19 @@ class ParagraphState final { /* * All content of component represented as an `AttributedString`. */ - AttributedString getAttributedString() const; - void setAttributedString(AttributedString const &attributedString) const; + AttributedString attributedString; /* * `TextLayoutManager` provides a connection to platform-specific * text rendering infrastructure which is capable to render the * `AttributedString`. */ - SharedTextLayoutManager getTextLayoutManager() const; - void setTextLayoutManager(SharedTextLayoutManager const &textLayoutManager) const; + SharedTextLayoutManager layoutManager; #ifdef ANDROID folly::dynamic getDynamic() const; #endif - - private: - mutable AttributedString attributedString_; - mutable SharedTextLayoutManager textLayoutManager_; - mutable bool attributedStringIsInitialized_; + }; } // namespace react From 35a3ddbf7cec8e6c1ee3f5e45e63616da947a9d2 Mon Sep 17 00:00:00 2001 From: Eric Lewis Date: Thu, 16 May 2019 14:12:50 -0400 Subject: [PATCH 4/6] almost missed android --- ReactCommon/fabric/components/text/paragraph/conversions.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ReactCommon/fabric/components/text/paragraph/conversions.h b/ReactCommon/fabric/components/text/paragraph/conversions.h index aecb0e42733296..fdb9b65bf04a59 100644 --- a/ReactCommon/fabric/components/text/paragraph/conversions.h +++ b/ReactCommon/fabric/components/text/paragraph/conversions.h @@ -15,7 +15,7 @@ namespace react { inline folly::dynamic toDynamic(const ParagraphState ¶graphState) { folly::dynamic newState = folly::dynamic::object(); newState["attributedString"] = - toDynamic(paragraphState->getData().getAttributedString()); + toDynamic(paragraphState->getData().attributedString); newState["hash"] = newState["attributedString"]["hash"]; return newState; } From b74ba60aab58da37c9d646904aa6a5a15a95a0e8 Mon Sep 17 00:00:00 2001 From: Eric Lewis Date: Thu, 16 May 2019 15:34:37 -0400 Subject: [PATCH 5/6] Simplify --- .../components/text/paragraph/ParagraphShadowNode.cpp | 6 +----- .../fabric/components/text/paragraph/ParagraphState.h | 3 +-- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/ReactCommon/fabric/components/text/paragraph/ParagraphShadowNode.cpp b/ReactCommon/fabric/components/text/paragraph/ParagraphShadowNode.cpp index ab569e7d7ebbab..78dfb6f165c271 100644 --- a/ReactCommon/fabric/components/text/paragraph/ParagraphShadowNode.cpp +++ b/ReactCommon/fabric/components/text/paragraph/ParagraphShadowNode.cpp @@ -47,11 +47,7 @@ void ParagraphShadowNode::updateStateIfNeeded() { return; } - auto newStateData = ParagraphState(); - newStateData.attributedString = attributedString; - newStateData.layoutManager = textLayoutManager_; - - setStateData(std::move(newStateData)); + setStateData({attributedString, textLayoutManager_}); } #pragma mark - LayoutableShadowNode diff --git a/ReactCommon/fabric/components/text/paragraph/ParagraphState.h b/ReactCommon/fabric/components/text/paragraph/ParagraphState.h index de6f5a5fc100a0..ef4eab942c2233 100644 --- a/ReactCommon/fabric/components/text/paragraph/ParagraphState.h +++ b/ReactCommon/fabric/components/text/paragraph/ParagraphState.h @@ -12,7 +12,7 @@ namespace facebook { namespace react { - + /* * State for component. * Represents what to render and how to render. @@ -34,7 +34,6 @@ class ParagraphState final { #ifdef ANDROID folly::dynamic getDynamic() const; #endif - }; } // namespace react From 402a3e52a2e3e5de74d4947ad20a128c3f48bc83 Mon Sep 17 00:00:00 2001 From: Eric Lewis Date: Thu, 16 May 2019 15:35:32 -0400 Subject: [PATCH 6/6] alphabetical --- .../Mounting/ComponentViews/Text/RCTParagraphComponentView.mm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/React/Fabric/Mounting/ComponentViews/Text/RCTParagraphComponentView.mm b/React/Fabric/Mounting/ComponentViews/Text/RCTParagraphComponentView.mm index 5a6f880432bd0f..9497b406f536a6 100644 --- a/React/Fabric/Mounting/ComponentViews/Text/RCTParagraphComponentView.mm +++ b/React/Fabric/Mounting/ComponentViews/Text/RCTParagraphComponentView.mm @@ -8,8 +8,8 @@ #import "RCTParagraphComponentView.h" #import -#import #import +#import #import #import #import