|
15 | 15 | const ColorPropType = require('ColorPropType'); |
16 | 16 | const EdgeInsetsPropType = require('EdgeInsetsPropType'); |
17 | 17 | const NativeMethodsMixin = require('NativeMethodsMixin'); |
| 18 | +const Platform = require('Platform'); |
18 | 19 | const React = require('React'); |
19 | 20 | const PropTypes = require('prop-types'); |
| 21 | +const ReactNativeViewAttributes = require('ReactNativeViewAttributes'); |
20 | 22 | const StyleSheetPropType = require('StyleSheetPropType'); |
21 | 23 | const TextStylePropTypes = require('TextStylePropTypes'); |
22 | 24 | const Touchable = require('Touchable'); |
23 | | -const UIManager = require('UIManager'); |
24 | 25 |
|
25 | 26 | const createReactClass = require('create-react-class'); |
26 | | -const requireNativeComponent = require('requireNativeComponent'); |
| 27 | +const createReactNativeComponentClass = require('createReactNativeComponentClass'); |
27 | 28 | const mergeFast = require('mergeFast'); |
28 | 29 | const processColor = require('processColor'); |
29 | 30 | const {ViewContextTypes} = require('ViewContext'); |
30 | 31 |
|
31 | 32 | const stylePropType = StyleSheetPropType(TextStylePropTypes); |
32 | 33 |
|
| 34 | +const viewConfig = { |
| 35 | + validAttributes: mergeFast(ReactNativeViewAttributes.UIView, { |
| 36 | + isHighlighted: true, |
| 37 | + numberOfLines: true, |
| 38 | + ellipsizeMode: true, |
| 39 | + allowFontScaling: true, |
| 40 | + disabled: true, |
| 41 | + selectable: true, |
| 42 | + selectionColor: true, |
| 43 | + adjustsFontSizeToFit: true, |
| 44 | + minimumFontScale: true, |
| 45 | + textBreakStrategy: true, |
| 46 | + }), |
| 47 | + uiViewClassName: 'RCTText', |
| 48 | +}; |
| 49 | + |
33 | 50 | import type {ViewChildContext} from 'ViewContext'; |
34 | 51 |
|
35 | 52 | /** |
@@ -404,6 +421,7 @@ const Text = createReactClass({ |
404 | 421 | }); |
405 | 422 | }, |
406 | 423 | mixins: [NativeMethodsMixin], |
| 424 | + viewConfig: viewConfig, |
407 | 425 | getChildContext(): ViewChildContext { |
408 | 426 | return { |
409 | 427 | isInAParentText: true, |
@@ -551,11 +569,21 @@ type RectOffset = { |
551 | 569 | bottom: number, |
552 | 570 | }; |
553 | 571 |
|
554 | | -const PRESS_RECT_OFFSET = {top: 20, left: 20, right: 20, bottom: 30}; |
| 572 | +var PRESS_RECT_OFFSET = {top: 20, left: 20, right: 20, bottom: 30}; |
| 573 | + |
| 574 | +var RCTText = createReactNativeComponentClass( |
| 575 | + viewConfig.uiViewClassName, |
| 576 | + () => viewConfig, |
| 577 | +); |
| 578 | +var RCTVirtualText = RCTText; |
555 | 579 |
|
556 | | -const RCTText = requireNativeComponent('RCTText'); |
557 | | -const RCTVirtualText = UIManager.RCTVirtualText |
558 | | - ? requireNativeComponent('RCTVirtualText') |
559 | | - : RCTText; |
| 580 | +if (Platform.OS === 'android') { |
| 581 | + RCTVirtualText = createReactNativeComponentClass('RCTVirtualText', () => ({ |
| 582 | + validAttributes: mergeFast(ReactNativeViewAttributes.UIView, { |
| 583 | + isHighlighted: true, |
| 584 | + }), |
| 585 | + uiViewClassName: 'RCTVirtualText', |
| 586 | + })); |
| 587 | +} |
560 | 588 |
|
561 | 589 | module.exports = Text; |
0 commit comments