UNPKG

react-native-styleman

Version:
725 lines (581 loc) 31.4 kB
(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(require("react"), require("react-native")); else if(typeof define === 'function' && define.amd) define("react-native-styleman", ["react", "react-native"], factory); else if(typeof exports === 'object') exports["react-native-styleman"] = factory(require("react"), require("react-native")); else root["react-native-styleman"] = factory(root["React"], root["react-native"]); })(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_react__, __WEBPACK_EXTERNAL_MODULE_react_native__) { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ /******/ // create a fake namespace object /******/ // mode & 1: value is a module id, require it /******/ // mode & 2: merge all properties of value into the ns /******/ // mode & 4: return value when already ns object /******/ // mode & 8|1: behave like require /******/ __webpack_require__.t = function(value, mode) { /******/ if(mode & 1) value = __webpack_require__(value); /******/ if(mode & 8) return value; /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; /******/ var ns = Object.create(null); /******/ __webpack_require__.r(ns); /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); /******/ return ns; /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = "./src/index.js"); /******/ }) /************************************************************************/ /******/ ({ /***/ "./src/Memo.js": /*!*********************!*\ !*** ./src/Memo.js ***! \*********************/ /*! exports provided: memo */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "memo", function() { return memo; }); /** * Cache size 1. * @param fn * @returns {Function} */ function memo(fn) { var result; var cacheInput; return function (input) { if (cacheInput === input) { return result; } else { cacheInput = input; result = fn(input); return result; } }; } /***/ }), /***/ "./src/NodeProcessors/MediaQuery.js": /*!******************************************!*\ !*** ./src/NodeProcessors/MediaQuery.js ***! \******************************************/ /*! exports provided: mediaProcessor */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mediaProcessor", function() { return mediaProcessor; }); /* harmony import */ var react_native__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react-native */ "react-native"); /* harmony import */ var react_native__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_native__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _Utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Utils */ "./src/Utils.js"); /* harmony import */ var _Memo__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Memo */ "./src/Memo.js"); var getCalcDims = function getCalcDims() { // CSS pixel equivalent resolution or DP resolution. var dims = react_native__WEBPACK_IMPORTED_MODULE_0__["Dimensions"].get('window'); return { width: dims.width, height: dims.height, screenWidth: dims.width * dims.scale, screenHeight: dims.height * dims.scale }; }; var getMediaQueryData = Object(_Memo__WEBPACK_IMPORTED_MODULE_2__["memo"])(function () { var calcDims = getCalcDims(); return { width: calcDims.width, height: calcDims.height, version: parseFloat(react_native__WEBPACK_IMPORTED_MODULE_0__["Platform"].Version), orientation: calcDims.width > calcDims.height ? 'landscape' : 'portrait', platform: react_native__WEBPACK_IMPORTED_MODULE_0__["Platform"].OS, direction: react_native__WEBPACK_IMPORTED_MODULE_0__["I18nManager"].isRTL ? 'rtl' : 'ltr' }; }); // validators var mediaValidators = { platform: function platform(mediaQueryData, checkDevice) { return mediaQueryData.device === checkDevice; }, minVersion: function minVersion(mediaQueryData, _minVersion) { return mediaQueryData.version >= _minVersion; }, maxVersion: function maxVersion(mediaQueryData, _maxVersion) { return mediaQueryData.version <= _maxVersion; }, minWidth: function minWidth(mediaQueryData, _minWidth) { return mediaQueryData.width >= _minWidth; }, maxWidth: function maxWidth(mediaQueryData, _maxWidth) { return mediaQueryData.width <= _maxWidth; }, minHeight: function minHeight(mediaQueryData, _minHeight) { return mediaQueryData.height >= _minHeight; }, maxHeight: function maxHeight(mediaQueryData, _maxHeight) { return mediaQueryData.height <= _maxHeight; }, orientation: function orientation(mediaQueryData, checkOrientation) { return checkOrientation === mediaQueryData.orientation; }, direction: function direction(mediaQueryData, layoutDirection) { return layoutDirection === mediaQueryData.direction; }, styles: function styles() { return true; } }; /** * Supported queries: * - platform: ios | android * - platformVersion: minVersion, maxVersion, * - height: minHeight, maxHeight (Normalized, dpi based measure) * - width: minWidth, maxWidth (Normalized, dpi based measure) * - orientation: landscape, portrait * - direction: rtl, ltr */ function mediaProcessor(cacheId, styles, key, value) { if (!Array.isArray(value)) { value = [value]; } var mediaQueryData = getMediaQueryData(cacheId); for (var i = 0; i < value.length; i++) { var valid = true; for (var rule in value[i]) { if (value[i].hasOwnProperty(rule)) { var validator = mediaValidators[rule]; if (!validator) { throw new Error('React Native Styleman: Unkown Media rule defined.'); } if (!validator(mediaQueryData, value[i][rule])) { valid = false; break; } } } if (valid) { // rule matched apply styles and quit. var processedStyles = Object(_Utils__WEBPACK_IMPORTED_MODULE_1__["processStyles"])(value[i].styles, cacheId); Object.assign(styles, processedStyles); break; } } return styles; } /***/ }), /***/ "./src/NodeProcessors/index.js": /*!*************************************!*\ !*** ./src/NodeProcessors/index.js ***! \*************************************/ /*! exports provided: nodeProcessors, registerNodeProcessor */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "nodeProcessors", function() { return nodeProcessors; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "registerNodeProcessor", function() { return registerNodeProcessor; }); /* harmony import */ var _MediaQuery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./MediaQuery */ "./src/NodeProcessors/MediaQuery.js"); /** * Supports following node processors * @type {Array} */ var nodeProcessors = []; function registerNodeProcessor(keyName, processFunction) { nodeProcessors.push([keyName, processFunction]); } // register default processors registerNodeProcessor('@media', _MediaQuery__WEBPACK_IMPORTED_MODULE_0__["mediaProcessor"]); /***/ }), /***/ "./src/Utils.js": /*!**********************!*\ !*** ./src/Utils.js ***! \**********************/ /*! exports provided: processStyles, provideValueProcessors */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "processStyles", function() { return processStyles; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "provideValueProcessors", function() { return provideValueProcessors; }); /* harmony import */ var _NodeProcessors__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./NodeProcessors */ "./src/NodeProcessors/index.js"); /* harmony import */ var _ValueProcessors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ValueProcessors */ "./src/ValueProcessors/index.js"); function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function processStyles(stylesObj, cacheId) { var updatedStylesObj = _objectSpread({}, stylesObj); for (var i = 0; i < _NodeProcessors__WEBPACK_IMPORTED_MODULE_0__["nodeProcessors"].length; i++) { var _nodeProcessors$i = _slicedToArray(_NodeProcessors__WEBPACK_IMPORTED_MODULE_0__["nodeProcessors"][i], 2), key = _nodeProcessors$i[0], processor = _nodeProcessors$i[1]; if (updatedStylesObj[key]) { processor(cacheId, updatedStylesObj, key, updatedStylesObj[key]); delete updatedStylesObj[key]; } } return updatedStylesObj; } function provideValueProcessors(themeFn) { return themeFn(_ValueProcessors__WEBPACK_IMPORTED_MODULE_1__["valueProcessors"]); } /***/ }), /***/ "./src/ValueProcessors/Mrem.js": /*!*************************************!*\ !*** ./src/ValueProcessors/Mrem.js ***! \*************************************/ /*! exports provided: getMRem */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getMRem", function() { return getMRem; }); /* harmony import */ var react_native__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react-native */ "react-native"); /* harmony import */ var react_native__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_native__WEBPACK_IMPORTED_MODULE_0__); // Styling Utils var getMRem = function getMRem(SCREEN_WIDTH_DP, DESIGN_GUIDELINES_BASE_WIDTH_DP, MODERATE_SCALING_FACTOR) { var mulFactor = SCREEN_WIDTH_DP / DESIGN_GUIDELINES_BASE_WIDTH_DP; return function (value) { return react_native__WEBPACK_IMPORTED_MODULE_0__["PixelRatio"].roundToNearestPixel(value + (mulFactor * value - value) * MODERATE_SCALING_FACTOR); }; }; /***/ }), /***/ "./src/ValueProcessors/Rem.js": /*!************************************!*\ !*** ./src/ValueProcessors/Rem.js ***! \************************************/ /*! exports provided: getRem */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getRem", function() { return getRem; }); /* harmony import */ var react_native__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react-native */ "react-native"); /* harmony import */ var react_native__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_native__WEBPACK_IMPORTED_MODULE_0__); // Styling Utils var getRem = function getRem(SCREEN_WIDTH_DP, DESIGN_GUIDELINES_BASE_WIDTH_DP) { var mulFactor = SCREEN_WIDTH_DP / DESIGN_GUIDELINES_BASE_WIDTH_DP; return function (value) { return react_native__WEBPACK_IMPORTED_MODULE_0__["PixelRatio"].roundToNearestPixel(mulFactor * value); }; }; /***/ }), /***/ "./src/ValueProcessors/Round.js": /*!**************************************!*\ !*** ./src/ValueProcessors/Round.js ***! \**************************************/ /*! exports provided: getRound */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getRound", function() { return getRound; }); /* harmony import */ var react_native__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react-native */ "react-native"); /* harmony import */ var react_native__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_native__WEBPACK_IMPORTED_MODULE_0__); var getRound = function getRound() { return function (value) { return react_native__WEBPACK_IMPORTED_MODULE_0__["PixelRatio"].roundToNearestPixel(value); }; }; /***/ }), /***/ "./src/ValueProcessors/ScreenDimsDP.js": /*!*********************************************!*\ !*** ./src/ValueProcessors/ScreenDimsDP.js ***! \*********************************************/ /*! exports provided: getScreenWidthDP, getScreenHeightDP */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getScreenWidthDP", function() { return getScreenWidthDP; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getScreenHeightDP", function() { return getScreenHeightDP; }); /* harmony import */ var react_native__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react-native */ "react-native"); /* harmony import */ var react_native__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_native__WEBPACK_IMPORTED_MODULE_0__); var getScreenWidthDP = function getScreenWidthDP() { return react_native__WEBPACK_IMPORTED_MODULE_0__["Dimensions"].get('window').width; }; var getScreenHeightDP = function getScreenHeightDP() { return react_native__WEBPACK_IMPORTED_MODULE_0__["Dimensions"].get('window').height; }; /***/ }), /***/ "./src/ValueProcessors/ScreenDimsPX.js": /*!*********************************************!*\ !*** ./src/ValueProcessors/ScreenDimsPX.js ***! \*********************************************/ /*! exports provided: getScreenWidthPX, getScreenHeightPX */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getScreenWidthPX", function() { return getScreenWidthPX; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getScreenHeightPX", function() { return getScreenHeightPX; }); /* harmony import */ var react_native__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react-native */ "react-native"); /* harmony import */ var react_native__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_native__WEBPACK_IMPORTED_MODULE_0__); var getScreenWidthPX = function getScreenWidthPX() { var dims = react_native__WEBPACK_IMPORTED_MODULE_0__["Dimensions"].get('window'); return dims.width * dims.scale; }; var getScreenHeightPX = function getScreenHeightPX() { var dims = react_native__WEBPACK_IMPORTED_MODULE_0__["Dimensions"].get('window'); return dims.height * dims.scale; }; /***/ }), /***/ "./src/ValueProcessors/VRem.js": /*!*************************************!*\ !*** ./src/ValueProcessors/VRem.js ***! \*************************************/ /*! exports provided: getVRem */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getVRem", function() { return getVRem; }); /* harmony import */ var react_native__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react-native */ "react-native"); /* harmony import */ var react_native__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_native__WEBPACK_IMPORTED_MODULE_0__); // Styling Utils var getVRem = function getVRem(SCREEN_HEIGHT_DP, DESIGN_GUIDELINES_BASE_HEIGHT_DP) { var mulFactor = SCREEN_HEIGHT_DP / DESIGN_GUIDELINES_BASE_HEIGHT_DP; return function (value) { return react_native__WEBPACK_IMPORTED_MODULE_0__["PixelRatio"].roundToNearestPixel(mulFactor * value); }; }; /***/ }), /***/ "./src/ValueProcessors/index.js": /*!**************************************!*\ !*** ./src/ValueProcessors/index.js ***! \**************************************/ /*! exports provided: valueProcessors, registerValueProcessor */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "valueProcessors", function() { return valueProcessors; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "registerValueProcessor", function() { return registerValueProcessor; }); /* harmony import */ var _Mrem__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Mrem */ "./src/ValueProcessors/Mrem.js"); /* harmony import */ var _VRem__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./VRem */ "./src/ValueProcessors/VRem.js"); /* harmony import */ var _Rem__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Rem */ "./src/ValueProcessors/Rem.js"); /* harmony import */ var _Round__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Round */ "./src/ValueProcessors/Round.js"); /* harmony import */ var _ScreenDimsDP__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ScreenDimsDP */ "./src/ValueProcessors/ScreenDimsDP.js"); /* harmony import */ var _ScreenDimsPX__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ScreenDimsPX */ "./src/ValueProcessors/ScreenDimsPX.js"); var valueProcessors = {}; function registerValueProcessor(processFunctionName, processFunction) { if (!valueProcessors[processFunctionName]) { valueProcessors[processFunctionName] = processFunction; } else { throw new Error("".concat(processFunctionName, " is already registered")); } } registerValueProcessor('getScreenWidthDP', _ScreenDimsDP__WEBPACK_IMPORTED_MODULE_4__["getScreenWidthDP"]); registerValueProcessor('getScreenHeightDP', _ScreenDimsDP__WEBPACK_IMPORTED_MODULE_4__["getScreenHeightDP"]); registerValueProcessor('getScreenWidthPX', _ScreenDimsPX__WEBPACK_IMPORTED_MODULE_5__["getScreenWidthPX"]); registerValueProcessor('getScreenHeightPX', _ScreenDimsPX__WEBPACK_IMPORTED_MODULE_5__["getScreenHeightPX"]); registerValueProcessor('getRem', _Rem__WEBPACK_IMPORTED_MODULE_2__["getRem"]); registerValueProcessor('getMRem', _Mrem__WEBPACK_IMPORTED_MODULE_0__["getMRem"]); registerValueProcessor('getVRem', _VRem__WEBPACK_IMPORTED_MODULE_1__["getVRem"]); registerValueProcessor('getRound', _Round__WEBPACK_IMPORTED_MODULE_3__["getRound"]); /***/ }), /***/ "./src/index.js": /*!**********************!*\ !*** ./src/index.js ***! \**********************/ /*! exports provided: withStyles, StyleManProvider */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "withStyles", function() { return withStyles; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StyleManProvider", function() { return StyleManProvider; }); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var react_native__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-native */ "react-native"); /* harmony import */ var react_native__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_native__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _Memo__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Memo */ "./src/Memo.js"); /* harmony import */ var _Utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Utils */ "./src/Utils.js"); function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } var View = react_native__WEBPACK_IMPORTED_MODULE_1___default.a.View; var ThemeContext = react__WEBPACK_IMPORTED_MODULE_0___default.a.createContext(); var StyleManProvider = /*#__PURE__*/ function (_React$Component) { _inherits(StyleManProvider, _React$Component); function StyleManProvider(props) { var _this; _classCallCheck(this, StyleManProvider); _this = _possibleConstructorReturn(this, _getPrototypeOf(StyleManProvider).call(this, props)); _this.setTheme = _this.setTheme.bind(_assertThisInitialized(_this)); _this.getTheme = _this.getTheme.bind(_assertThisInitialized(_this)); _this.onLayout = _this.onLayout.bind(_assertThisInitialized(_this)); _this.state = { defaultStyles: { flex: 1 }, theme: {}, cacheId: 1, setTheme: _this.setTheme, getTheme: _this.getTheme }; return _this; } _createClass(StyleManProvider, [{ key: "setTheme", value: function setTheme(themeFn) { this.processStyles(themeFn); } }, { key: "getTheme", value: function getTheme() { return this.state.theme; } }, { key: "componentWillMount", value: function componentWillMount() { this.processStyles(); } }, { key: "onLayout", value: function onLayout(e) { this.processStyles(); } }, { key: "processStyles", value: function processStyles(themeArg) { var themeFn = themeArg || this.props.theme; if (!themeFn || typeof themeFn !== 'function') { throw 'React Native Styleman: theme prop should be a function.'; } var cacheId = this.state.cacheId + 1; var partiallyComputedTheme = Object(_Utils__WEBPACK_IMPORTED_MODULE_3__["provideValueProcessors"])(themeFn); this.setState({ theme: Object(_Utils__WEBPACK_IMPORTED_MODULE_3__["processStyles"])(partiallyComputedTheme, cacheId), cacheId: cacheId }); } }, { key: "render", value: function render() { return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(ThemeContext.Provider, { value: this.state }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(View, { style: this.props.styles || this.state.defaultStyles, onLayout: this.onLayout }, react__WEBPACK_IMPORTED_MODULE_0___default.a.Children.only(this.props.children) && this.props.children)); } }]); return StyleManProvider; }(react__WEBPACK_IMPORTED_MODULE_0___default.a.Component); function withStyles(stylesFn) { if (!stylesFn || typeof stylesFn !== 'function') { throw 'React Native Styleman: styles passed in withStyles function should be wrapped in a function.'; } var stylesSelector = Object(_Memo__WEBPACK_IMPORTED_MODULE_2__["memo"])(function (themeObj) { var styles = stylesFn(themeObj.theme); var processedStyles = {}; var generatedStylesheet; Object.keys(styles).forEach(function (componentName) { processedStyles[componentName] = Object(_Utils__WEBPACK_IMPORTED_MODULE_3__["processStyles"])(styles[componentName], themeObj.cacheId); }); generatedStylesheet = react_native__WEBPACK_IMPORTED_MODULE_1___default.a.StyleSheet.create(processedStyles); return { styles: generatedStylesheet, getTheme: themeObj.getTheme, setTheme: themeObj.setTheme }; }); return function (WrapperComponent) { return function (props) { return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(ThemeContext.Consumer, null, function (themeObj) { var stylesObj = stylesSelector(themeObj); return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(WrapperComponent, _extends({}, props, { styles: stylesObj.styles, setTheme: stylesObj.setTheme, getTheme: stylesObj.getTheme })); }); }; }; } /***/ }), /***/ "react": /*!**************************************************************************************!*\ !*** external {"commonjs":"react","commonjs2":"react","amd":"react","root":"React"} ***! \**************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE_react__; /***/ }), /***/ "react-native": /*!*******************************!*\ !*** external "react-native" ***! \*******************************/ /*! no static exports found */ /***/ (function(module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE_react_native__; /***/ }) /******/ }); }); //# sourceMappingURL=react-native-styleman.js.map