/** * Copyright (c) Nicolas Gallagher. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * */ import ReactNativePropRegistry from './ReactNativePropRegistry'; import flattenStyle from './flattenStyle'; var absoluteFillObject = { position: 'absolute', left: 0, right: 0, top: 0, bottom: 0 }; var absoluteFill = ReactNativePropRegistry.register(absoluteFillObject); var StyleSheet = { absoluteFill: absoluteFill, absoluteFillObject: absoluteFillObject, compose: function compose(style1, style2) { if (process.env.NODE_ENV !== 'production') { /* eslint-disable prefer-rest-params */ var len = arguments.length; if (len > 2) { var readableStyles = Array.prototype.slice.call(arguments).map(function (a) { return flattenStyle(a); }); throw new Error("StyleSheet.compose() only accepts 2 arguments, received " + len + ": " + JSON.stringify(readableStyles)); } /* eslint-enable prefer-rest-params */ } if (style1 && style2) { return [style1, style2]; } else { return style1 || style2; } }, create: function create(styles) { var result = {}; Object.keys(styles).forEach(function (key) { if (process.env.NODE_ENV !== 'production') { var validate = require('./validate'); var interopValidate = validate.default ? validate.default : validate; interopValidate(key, styles); } var id = styles[key] && ReactNativePropRegistry.register(styles[key]); result[key] = id; }); return result; }, flatten: flattenStyle, // `hairlineWidth` is not implemented using screen density as browsers may // round sub-pixel values down to `0`, causing the line not to be rendered. hairlineWidth: 1 }; export default StyleSheet;