import React , { useState } from 'react';
import { StyleSheet, Text, View, TextInput, Button } from 'react-native';

import Types from '../../lib/Types';

export default class BaseHolder extends React.Component {
	constructor(props){
		super(props);
	}

	render() {
		let {
			children,
			selected,
			justifyContent,
			alignItems,
			alignContent,
			flexDirection,
			flexWrap,

			order,
			alignSelf,
			flexGrow,
			flexShrink,
			flexBasis,


			width,
			height,
			minWidth,
			minHeight,
			paddingTop,
			paddingBottom,
			paddingLeft,
			paddingRight,
			marginLeft,
			marginRight,
			marginTop,
			marginBottom,

			overflow,
			CoreSystem,
			stretchContainer,
			content,
			...restProps
		} = this.props;
		if(!width) width = undefined;
		if(!height) height = undefined;
		let styl = [styles.base];
		if (CoreSystem && CoreSystem._devMode && selected) styl.push(styles.selected); 
		if (stretchContainer) styl.push(styles.stretchToContent);
		return (
			// self container
		    <View {...restProps} style={[styl, {
				alignSelf,
				flexGrow,
				flexShrink,
				flexBasis,
				width,
				height,
				minWidth,
				minHeight,
				paddingTop,
				paddingBottom,
				paddingRight,
				paddingLeft,
				marginLeft,
				marginRight,
				marginTop,
				marginBottom,
				overflow,

				pointerEvents: 'auto'
			}]}>
	    		{content}
				<View WRAPPER={true} style={ //children Container 
		    	 	[
		    	 	(!!content || stretchContainer) ? styles.stretchToContent : {},
		    	 	{
		    	 		pointerEvents: 'none',
		    	 		justifyContent,
						alignItems,
						alignContent,
						flexDirection,
						flexWrap
		    	 	}
		    	 	]}>
					{children}
				</View>
 
		    	
		    </View>
		);
	}
}

const styles = StyleSheet.create({
	base: {
		minHeight: 10, 
		// borderColor: 'blue',
		// borderWidth: 1
	}, 
	stretchToContent: {
		position: 'absolute',
		top: 0,
		left: 0,
		bottom: 0,
		right: 0,
		// borderColor: 'red',
		// borderWidth: 1
	},
	contentWrapper: {
	},
	selected: {
		
		borderWidth: 1,
		borderColor: '#f28d8d',
		shadowColor: "rgba(250,10,0,0.81)",
		shadowOffset: {
			width: 0,
			height: 4,
		},
		shadowOpacity: 0.30,
		shadowRadius: 4.65,

		elevation: 8
		// border: '1px solid green'
	}
});

BaseHolder.Inputs = {
	minWidth: new Types.Integer(),
	minHeight: new Types.Integer(),
	width: new Types.Integer(),
	height: new Types.Integer(),

	paddingTop: new Types.Integer(),
	paddingBottom: new Types.Integer(),
	paddingLeft: new Types.Integer(),
	paddingRight: new Types.Integer(),

	marginTop: new Types.Integer(),
	marginBottom: new Types.Integer(),
	marginLeft: new Types.Integer(),
	marginRight: new Types.Integer(),

	stretchContainer: new Types.Bool().default(false),
	overflow: new Types.Text().default('visible'),
	justifyContent: new Types.Text().default("flex-start"),
	alignItems: new Types.Text(),
	alignContent: new Types.Text(),
	flexDirection: new Types.Text(),
	flexWrap: new Types.Text(),
	alignSelf: new Types.Text(),
	flexGrow: new Types.Real(),
	flexShrink: new Types.Real(),
	flexBasis: new Types.Real()
}