63 lines
1.8 KiB
JavaScript
63 lines
1.8 KiB
JavaScript
|
/**
|
||
|
* 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;
|