0.1.7 • Published 9 years ago
babel-plugin-react-native-layout v0.1.7
babel-plugin-react-native-layout
Dynamic layout for react native components
Installation
npm i --save babel-plugin-react-native-layoutUsage
Create file .babelrc in an apentle project folder
{
  "presets": [ "react-native" ],
  "plugins": [ "react-native-layout" ]
}Layout transform
FROM
'use strict';
import React, { Text, View } from 'react-native';
import { styles } from 'react-native-theme';
const ListItem = require('./listItem');
function moreView() {
  return (
    <Text style={styles.more}>
      More...
    </Text>
  );
}
<layout>
  <addChildren type={View} ref="content" name="container">
    <props style={styles.container} name="new" />
    {moreView()}
    {
      this.props.results.map(function(result) {
        return <ListItem data={result} />
      })
    }
  </addChildren>
</layout>TO
'use strict';
import React, { Text, View } from 'react-native';
import { styles } from 'react-native-theme';
const ListItem = require('./listItem');
function moreView() {
  return React.createElement(
    Text,
    { style: styles.more },
    'More...'
  );
}
module.exports = function (o) {
  if (o.type === View && o.config && o.config['ref'] === 'content' && o.config['name'] === 'container') {
    o.config = o.config || {};
    o.config['style'] = styles.container;
    o.config['name'] = 'new';
    o.children.push(moreView());
    o.children.push(this.props.results.map(function (result) {
      return React.createElement(ListItem, { data: result });
    }));
  }
};