reactors
Version:
View components and APIs that work web, mobile and desktop!
134 lines (90 loc) • 3.85 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');
var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _compact = require('lodash/compact');
var _compact2 = _interopRequireDefault(_compact);
var _border = require('./transforms/border');
var _border2 = _interopRequireDefault(_border);
var _borderWidth = require('./transforms/borderWidth');
var _borderWidth2 = _interopRequireDefault(_borderWidth);
var _boxShadow = require('./transforms/boxShadow');
var _boxShadow2 = _interopRequireDefault(_boxShadow);
var _boxSizing = require('./transforms/boxSizing');
var _boxSizing2 = _interopRequireDefault(_boxSizing);
var _cursor = require('./transforms/cursor');
var _cursor2 = _interopRequireDefault(_cursor);
var _display = require('./transforms/display');
var _display2 = _interopRequireDefault(_display);
var _flexDirection = require('./transforms/flexDirection');
var _flexDirection2 = _interopRequireDefault(_flexDirection);
var _marginHorizontal = require('./transforms/marginHorizontal');
var _marginHorizontal2 = _interopRequireDefault(_marginHorizontal);
var _marginVertical = require('./transforms/marginVertical');
var _marginVertical2 = _interopRequireDefault(_marginVertical);
var _Core = require('../Core');
var _Core2 = _interopRequireDefault(_Core);
var _resizeMode = require('./transforms/resizeMode');
var _resizeMode2 = _interopRequireDefault(_resizeMode);
var _transform = require('./transforms/transform');
var _transform2 = _interopRequireDefault(_transform);
var _transition = require('./transforms/transition');
var _transition2 = _interopRequireDefault(_transition);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var StyleSheet = function () {
(0, _createClass3.default)(StyleSheet, null, [{
key: 'create',
value: function create(styles) {
if (_Core2.default.isMobile()) {
var RNSS = require('react-native').StyleSheet;
var sheet = RNSS.create(styles);
for (var selector in sheet) {
var number = sheet[selector];
StyleSheet.sheets[number.toString()] = styles[selector];
}
return sheet;
}
return new this(styles);
}
}]);
function StyleSheet(rules) {
(0, _classCallCheck3.default)(this, StyleSheet);
for (var selector in rules) {
this[selector] = rules[selector];
}
}
return StyleSheet;
}();
StyleSheet.sheets = {};
StyleSheet.merge = function (styles) {
var array = [];
if (Array.isArray(styles)) {
array.push.apply(array, (0, _toConsumableArray3.default)((0, _compact2.default)(styles)));
} else {
array.push(styles);
}
var transformed = {};
array.forEach(function (style) {
if (typeof style === 'number') {
Object.assign(transformed, StyleSheet.sheets[style.toString()]);
} else {
Object.assign(transformed, style);
}
});
return transformed;
};
StyleSheet.transform = function (styles) {
var transformers = [_border2.default, _borderWidth2.default, _boxShadow2.default, _boxSizing2.default, _cursor2.default, _display2.default, _flexDirection2.default, _marginHorizontal2.default, _marginVertical2.default, _resizeMode2.default, _transform2.default, _transition2.default];
var transformed = StyleSheet.merge(styles);
transformers.forEach(function (transformer) {
transformed = transformer(transformed);
});
return transformed;
};
exports.default = StyleSheet;