<commit_before>import React, { Component, PropTypes } from 'react';
import emptyFunction from 'fbjs/lib/emptyFunction';
import cx from 'classnames';
import bt from 'bootstrap/dist/css/bootstrap.css?root=./node_modules/bootstrap/dist/'; // eslint-disable-line import/no-unresolved, max-len
import s from './App.scss';
import Header from '../Header';
import Footer from '../Footer';

class App extends Component {

	static propTypes = {
		context: PropTypes.shape({
			insertCss: PropTypes.func,
			onSetTitle: PropTypes.func,
			onSetMeta: PropTypes.func,
			onPageNotFound: PropTypes.func,
			categories: PropTypes.array,
			vehicle: PropTypes.array,
			params: PropTypes.object,
			siteContents: PropTypes.array,
			siteMenu: PropTypes.array,
		}),
		children: PropTypes.element.isRequired,
		error: PropTypes.object,
	};

	static childContextTypes = {
		insertCss: PropTypes.func.isRequired,
		onSetTitle: PropTypes.func.isRequired,
		onSetMeta: PropTypes.func.isRequired,
		onPageNotFound: PropTypes.func.isRequired,
		seo: PropTypes.func.isRequired,
	};

	getChildContext() {
		const context = this.props.context;
		return {
			insertCss: context.insertCss || emptyFunction,
			onSetTitle: context.onSetTitle || emptyFunction,
			onSetMeta: context.onSetMeta || emptyFunction,
			onPageNotFound: context.onPageNotFound || emptyFunction,
			seo: context.seo || emptyFunction,
		};
	}

	componentWillMount() {
		this.removeCss = this.props.context.insertCss(s);
		this.removeBootstrap = this.props.context.insertCss(bt);
	}

	componentWillUnmount() {
		this.removeCss();
		this.removeBootstrap();
	}

	render() {
		const styles = {
			background: "url('https://storage.googleapis.com/aries-website/site-assets/bgtexture.png')",
		};
		return (
			<div className={cx(s.root)} style={styles}>
				<Header context={this.props.context} />
				<div className="children">
					{this.props.children}
				</div>
				<Footer siteContents={this.props.context.siteContents} />
			</div>
		);
	}

}

export default App;
<commit_msg>fixed CSS hierarchy with bootstrap<commit_after>import React, { Component, PropTypes } from 'react';
import emptyFunction from 'fbjs/lib/emptyFunction';
import cx from 'classnames';
import bt from 'bootstrap/dist/css/bootstrap.css?root=./node_modules/bootstrap/dist/'; // eslint-disable-line import/no-unresolved, max-len
import s from './App.scss';
import Header from '../Header';
import Footer from '../Footer';

class App extends Component {

	static propTypes = {
		context: PropTypes.shape({
			insertCss: PropTypes.func,
			onSetTitle: PropTypes.func,
			onSetMeta: PropTypes.func,
			onPageNotFound: PropTypes.func,
			categories: PropTypes.array,
			vehicle: PropTypes.array,
			params: PropTypes.object,
			siteContents: PropTypes.array,
			siteMenu: PropTypes.array,
		}),
		children: PropTypes.element.isRequired,
		error: PropTypes.object,
	};

	static childContextTypes = {
		insertCss: PropTypes.func.isRequired,
		onSetTitle: PropTypes.func.isRequired,
		onSetMeta: PropTypes.func.isRequired,
		onPageNotFound: PropTypes.func.isRequired,
		seo: PropTypes.func.isRequired,
	};

	getChildContext() {
		const context = this.props.context;
		return {
			insertCss: context.insertCss || emptyFunction,
			onSetTitle: context.onSetTitle || emptyFunction,
			onSetMeta: context.onSetMeta || emptyFunction,
			onPageNotFound: context.onPageNotFound || emptyFunction,
			seo: context.seo || emptyFunction,
		};
	}

	componentWillMount() {
		this.removeBootstrap = this.props.context.insertCss(bt);
		this.removeCss = this.props.context.insertCss(s);
	}

	componentWillUnmount() {
		this.removeBootstrap();
		this.removeCss();
	}

	render() {
		const styles = {
			background: "url('https://storage.googleapis.com/aries-website/site-assets/bgtexture.png')",
		};
		return (
			<div className={cx(s.root)} style={styles}>
				<Header context={this.props.context} />
				<div className="children">
					{this.props.children}
				</div>
				<Footer siteContents={this.props.context.siteContents} />
			</div>
		);
	}

}

export default App;

{'fraction_non_alphanumeric': 0.13333333333333333, 'fraction_numerical': 0.0, 'mean_word_length': 4.27367055771725, 'pattern_counts': {'":': 0, '<': 15, '<?xml version=': 0, '>': 15, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2328520', 'n_tokens_mistral': 1426, 'n_tokens_neox': 1302, 'n_words': 252}