1 | import React, { Component } from 'react';
|
2 | import extractText from '../lib/extract/extractText';
|
3 | import extractProps, { propsAndStyles } from '../lib/extract/extractProps';
|
4 | import extractTransform from '../lib/extract/extractTransform';
|
5 | import { TransformProps } from '../lib/extract/types';
|
6 | import { pickNotNil } from '../lib/util';
|
7 | import Shape from './Shape';
|
8 | import './TSpan';
|
9 | import { RNSVGText } from './NativeComponents';
|
10 |
|
11 | export default class Text extends Shape<{}> {
|
12 | static displayName = 'Text';
|
13 |
|
14 | setNativeProps = (
|
15 | props: Object & {
|
16 | matrix?: number[];
|
17 | style?: [] | {};
|
18 | } & TransformProps,
|
19 | ) => {
|
20 | const matrix = props && !props.matrix && extractTransform(props);
|
21 | if (matrix) {
|
22 | props.matrix = matrix;
|
23 | }
|
24 | const prop = propsAndStyles(props);
|
25 | Object.assign(prop, pickNotNil(extractText(prop, true)));
|
26 | this.root && this.root.setNativeProps(prop);
|
27 | };
|
28 |
|
29 | render() {
|
30 | const prop = propsAndStyles(this.props);
|
31 | const props = extractProps(
|
32 | {
|
33 | ...prop,
|
34 | x: null,
|
35 | y: null,
|
36 | },
|
37 | this,
|
38 | );
|
39 | Object.assign(props, extractText(prop, true));
|
40 | props.ref = this.refMethod as (instance: Component | null) => void;
|
41 | return <RNSVGText {...props} />;
|
42 | }
|
43 | }
|