{"ast":null,"code":"import { canUseDOM } from 'fbjs/lib/ExecutionEnvironment';\nimport createCSSStyleSheet from \"./createCSSStyleSheet\";\nimport createCompileableStyle from \"./createCompileableStyle\";\nimport createOrderedCSSStyleSheet from \"./createOrderedCSSStyleSheet\";\nimport flattenArray from \"../../modules/flattenArray\";\nimport flattenStyle from \"./flattenStyle\";\nimport I18nManager from \"../I18nManager\";\nimport i18nStyle from \"./i18nStyle\";\nimport { atomic, classic, inline, stringifyValueWithProperty } from \"./compile\";\nimport initialRules from \"./initialRules\";\nimport modality from \"./modality\";\nimport { STYLE_ELEMENT_ID, STYLE_GROUPS } from \"./constants\";\nexport default function createStyleResolver() {\n  var inserted, sheet, cache;\n  var resolved = {\n    css: {},\n    ltr: {},\n    rtl: {},\n    rtlNoSwap: {}\n  };\n\n  var init = function init() {\n    inserted = {\n      css: {},\n      ltr: {},\n      rtl: {},\n      rtlNoSwap: {}\n    };\n    sheet = createOrderedCSSStyleSheet(createCSSStyleSheet(STYLE_ELEMENT_ID));\n    cache = {};\n    modality(function (rule) {\n      return sheet.insert(rule, STYLE_GROUPS.modality);\n    });\n    initialRules.forEach(function (rule) {\n      sheet.insert(rule, STYLE_GROUPS.reset);\n    });\n  };\n\n  init();\n\n  function addToCache(className, prop, value) {\n    if (!cache[prop]) {\n      cache[prop] = {};\n    }\n\n    cache[prop][value] = className;\n  }\n\n  function getClassName(prop, value) {\n    var val = stringifyValueWithProperty(value, prop);\n    return cache[prop] && cache[prop].hasOwnProperty(val) && cache[prop][val];\n  }\n\n  function _injectRegisteredStyle(id) {\n    var doLeftAndRightSwapInRTL = I18nManager.doLeftAndRightSwapInRTL,\n        isRTL = I18nManager.isRTL;\n    var dir = isRTL ? doLeftAndRightSwapInRTL ? 'rtl' : 'rtlNoSwap' : 'ltr';\n\n    if (!inserted[dir][id]) {\n      var style = createCompileableStyle(i18nStyle(flattenStyle(id)));\n      var results = atomic(style);\n      Object.keys(results).forEach(function (key) {\n        var _results$key = results[key],\n            identifier = _results$key.identifier,\n            property = _results$key.property,\n            rules = _results$key.rules,\n            value = _results$key.value;\n        addToCache(identifier, property, value);\n        rules.forEach(function (rule) {\n          var group = STYLE_GROUPS.custom[property] || STYLE_GROUPS.atomic;\n          sheet.insert(rule, group);\n        });\n      });\n      inserted[dir][id] = true;\n    }\n  }\n\n  function resolve(style, classList) {\n    var nextClassList = [];\n    var props = {};\n\n    if (!style && !classList) {\n      return props;\n    }\n\n    if (Array.isArray(classList)) {\n      flattenArray(classList).forEach(function (identifier) {\n        if (identifier) {\n          if (inserted.css[identifier] == null && resolved.css[identifier] != null) {\n            var item = resolved.css[identifier];\n            item.rules.forEach(function (rule) {\n              sheet.insert(rule, item.group);\n            });\n            inserted.css[identifier] = true;\n          }\n\n          nextClassList.push(identifier);\n        }\n      });\n    }\n\n    if (typeof style === 'number') {\n      _injectRegisteredStyle(style);\n\n      var key = createCacheKey(style);\n      props = _resolveStyle(style, key);\n    } else if (!Array.isArray(style)) {\n      props = _resolveStyle(style);\n    } else {\n      var flatArray = flattenArray(style);\n      var isArrayOfNumbers = true;\n      var cacheKey = '';\n\n      for (var i = 0; i < flatArray.length; i++) {\n        var id = flatArray[i];\n\n        if (typeof id !== 'number') {\n          isArrayOfNumbers = false;\n        } else {\n          if (isArrayOfNumbers) {\n            cacheKey += id + '-';\n          }\n\n          _injectRegisteredStyle(id);\n        }\n      }\n\n      var _key = isArrayOfNumbers ? createCacheKey(cacheKey) : null;\n\n      props = _resolveStyle(flatArray, _key);\n    }\n\n    nextClassList.push.apply(nextClassList, props.classList);\n    var finalProps = {\n      className: classListToString(nextClassList),\n      classList: nextClassList\n    };\n\n    if (props.style) {\n      finalProps.style = props.style;\n    }\n\n    return finalProps;\n  }\n\n  function _resolveStyle(style, key) {\n    var doLeftAndRightSwapInRTL = I18nManager.doLeftAndRightSwapInRTL,\n        isRTL = I18nManager.isRTL;\n    var dir = isRTL ? doLeftAndRightSwapInRTL ? 'rtl' : 'rtlNoSwap' : 'ltr';\n\n    if (key != null && resolved[dir][key] != null) {\n      return resolved[dir][key];\n    }\n\n    var flatStyle = flattenStyle(style);\n    var localizedStyle = createCompileableStyle(i18nStyle(flatStyle));\n    var props = Object.keys(localizedStyle).sort().reduce(function (props, styleProp) {\n      var value = localizedStyle[styleProp];\n\n      if (value != null) {\n        var className = getClassName(styleProp, value);\n\n        if (className) {\n          props.classList.push(className);\n        } else {\n          if (styleProp === 'animationKeyframes' || styleProp === 'placeholderTextColor' || styleProp === 'pointerEvents' || styleProp === 'scrollbarWidth') {\n            var _atomic;\n\n            var a = atomic((_atomic = {}, _atomic[styleProp] = value, _atomic));\n            Object.keys(a).forEach(function (key) {\n              var _a$key = a[key],\n                  identifier = _a$key.identifier,\n                  rules = _a$key.rules;\n              props.classList.push(identifier);\n              rules.forEach(function (rule) {\n                sheet.insert(rule, STYLE_GROUPS.atomic);\n              });\n            });\n          } else {\n            if (!props.style) {\n              props.style = {};\n            }\n\n            props.style[styleProp] = value;\n          }\n        }\n      }\n\n      return props;\n    }, {\n      classList: []\n    });\n\n    if (props.style) {\n      props.style = inline(props.style);\n    }\n\n    if (key != null) {\n      resolved[dir][key] = props;\n    }\n\n    return props;\n  }\n\n  return {\n    getStyleSheet: function getStyleSheet() {\n      var textContent = sheet.getTextContent();\n\n      if (!canUseDOM) {\n        init();\n      }\n\n      return {\n        id: STYLE_ELEMENT_ID,\n        textContent: textContent\n      };\n    },\n    createCSS: function createCSS(rules, group) {\n      var result = {};\n      Object.keys(rules).forEach(function (name) {\n        var style = rules[name];\n        var compiled = classic(style, name);\n        Object.keys(compiled).forEach(function (key) {\n          var _compiled$key = compiled[key],\n              identifier = _compiled$key.identifier,\n              rules = _compiled$key.rules;\n          resolved.css[identifier] = {\n            group: group || STYLE_GROUPS.classic,\n            rules: rules\n          };\n          result[name] = identifier;\n        });\n      });\n      return result;\n    },\n    resolve: resolve,\n\n    get sheet() {\n      return sheet;\n    }\n\n  };\n}\n\nvar createCacheKey = function createCacheKey(id) {\n  var prefix = 'rn';\n  return prefix + \"-\" + id;\n};\n\nvar classListToString = function classListToString(list) {\n  return list.join(' ').trim();\n};","map":{"version":3,"sources":["/Users/nishan/Desktop/oss/responsive-breakpoints/example/node_modules/react-native-web/dist/exports/StyleSheet/createStyleResolver.js"],"names":["canUseDOM","createCSSStyleSheet","createCompileableStyle","createOrderedCSSStyleSheet","flattenArray","flattenStyle","I18nManager","i18nStyle","atomic","classic","inline","stringifyValueWithProperty","initialRules","modality","STYLE_ELEMENT_ID","STYLE_GROUPS","createStyleResolver","inserted","sheet","cache","resolved","css","ltr","rtl","rtlNoSwap","init","rule","insert","forEach","reset","addToCache","className","prop","value","getClassName","val","hasOwnProperty","_injectRegisteredStyle","id","doLeftAndRightSwapInRTL","isRTL","dir","style","results","Object","keys","key","_results$key","identifier","property","rules","group","custom","resolve","classList","nextClassList","props","Array","isArray","item","push","createCacheKey","_resolveStyle","flatArray","isArrayOfNumbers","cacheKey","i","length","_key","apply","finalProps","classListToString","flatStyle","localizedStyle","sort","reduce","styleProp","_atomic","a","_a$key","getStyleSheet","textContent","getTextContent","createCSS","result","name","compiled","_compiled$key","prefix","list","join","trim"],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Nicolas Gallagher.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n/**\n * WARNING: changes to this file in particular can cause significant changes to\n * the results of render performance benchmarks.\n */\nimport { canUseDOM } from 'fbjs/lib/ExecutionEnvironment';\nimport createCSSStyleSheet from './createCSSStyleSheet';\nimport createCompileableStyle from './createCompileableStyle';\nimport createOrderedCSSStyleSheet from './createOrderedCSSStyleSheet';\nimport flattenArray from '../../modules/flattenArray';\nimport flattenStyle from './flattenStyle';\nimport I18nManager from '../I18nManager';\nimport i18nStyle from './i18nStyle';\nimport { atomic, classic, inline, stringifyValueWithProperty } from './compile';\nimport initialRules from './initialRules';\nimport modality from './modality';\nimport { STYLE_ELEMENT_ID, STYLE_GROUPS } from './constants';\nexport default function createStyleResolver() {\n  var inserted, sheet, cache;\n  var resolved = {\n    css: {},\n    ltr: {},\n    rtl: {},\n    rtlNoSwap: {}\n  };\n\n  var init = function init() {\n    inserted = {\n      css: {},\n      ltr: {},\n      rtl: {},\n      rtlNoSwap: {}\n    };\n    sheet = createOrderedCSSStyleSheet(createCSSStyleSheet(STYLE_ELEMENT_ID));\n    cache = {};\n    modality(function (rule) {\n      return sheet.insert(rule, STYLE_GROUPS.modality);\n    });\n    initialRules.forEach(function (rule) {\n      sheet.insert(rule, STYLE_GROUPS.reset);\n    });\n  };\n\n  init();\n\n  function addToCache(className, prop, value) {\n    if (!cache[prop]) {\n      cache[prop] = {};\n    }\n\n    cache[prop][value] = className;\n  }\n\n  function getClassName(prop, value) {\n    var val = stringifyValueWithProperty(value, prop);\n    return cache[prop] && cache[prop].hasOwnProperty(val) && cache[prop][val];\n  }\n\n  function _injectRegisteredStyle(id) {\n    var doLeftAndRightSwapInRTL = I18nManager.doLeftAndRightSwapInRTL,\n        isRTL = I18nManager.isRTL;\n    var dir = isRTL ? doLeftAndRightSwapInRTL ? 'rtl' : 'rtlNoSwap' : 'ltr';\n\n    if (!inserted[dir][id]) {\n      var style = createCompileableStyle(i18nStyle(flattenStyle(id)));\n      var results = atomic(style);\n      Object.keys(results).forEach(function (key) {\n        var _results$key = results[key],\n            identifier = _results$key.identifier,\n            property = _results$key.property,\n            rules = _results$key.rules,\n            value = _results$key.value;\n        addToCache(identifier, property, value);\n        rules.forEach(function (rule) {\n          var group = STYLE_GROUPS.custom[property] || STYLE_GROUPS.atomic;\n          sheet.insert(rule, group);\n        });\n      });\n      inserted[dir][id] = true;\n    }\n  }\n  /**\n   * Resolves a React Native style object to DOM attributes\n   */\n\n\n  function resolve(style, classList) {\n    var nextClassList = [];\n    var props = {};\n\n    if (!style && !classList) {\n      return props;\n    }\n\n    if (Array.isArray(classList)) {\n      flattenArray(classList).forEach(function (identifier) {\n        if (identifier) {\n          if (inserted.css[identifier] == null && resolved.css[identifier] != null) {\n            var item = resolved.css[identifier];\n            item.rules.forEach(function (rule) {\n              sheet.insert(rule, item.group);\n            });\n            inserted.css[identifier] = true;\n          }\n\n          nextClassList.push(identifier);\n        }\n      });\n    }\n\n    if (typeof style === 'number') {\n      // fast and cachable\n      _injectRegisteredStyle(style);\n\n      var key = createCacheKey(style);\n      props = _resolveStyle(style, key);\n    } else if (!Array.isArray(style)) {\n      // resolve a plain RN style object\n      props = _resolveStyle(style);\n    } else {\n      // flatten the style array\n      // cache resolved props when all styles are registered\n      // otherwise fallback to resolving\n      var flatArray = flattenArray(style);\n      var isArrayOfNumbers = true;\n      var cacheKey = '';\n\n      for (var i = 0; i < flatArray.length; i++) {\n        var id = flatArray[i];\n\n        if (typeof id !== 'number') {\n          isArrayOfNumbers = false;\n        } else {\n          if (isArrayOfNumbers) {\n            cacheKey += id + '-';\n          }\n\n          _injectRegisteredStyle(id);\n        }\n      }\n\n      var _key = isArrayOfNumbers ? createCacheKey(cacheKey) : null;\n\n      props = _resolveStyle(flatArray, _key);\n    }\n\n    nextClassList.push.apply(nextClassList, props.classList);\n    var finalProps = {\n      className: classListToString(nextClassList),\n      classList: nextClassList\n    };\n\n    if (props.style) {\n      finalProps.style = props.style;\n    }\n\n    return finalProps;\n  }\n  /**\n   * Resolves a React Native style object\n   */\n\n\n  function _resolveStyle(style, key) {\n    var doLeftAndRightSwapInRTL = I18nManager.doLeftAndRightSwapInRTL,\n        isRTL = I18nManager.isRTL;\n    var dir = isRTL ? doLeftAndRightSwapInRTL ? 'rtl' : 'rtlNoSwap' : 'ltr'; // faster: memoized\n\n    if (key != null && resolved[dir][key] != null) {\n      return resolved[dir][key];\n    }\n\n    var flatStyle = flattenStyle(style);\n    var localizedStyle = createCompileableStyle(i18nStyle(flatStyle)); // slower: convert style object to props and cache\n\n    var props = Object.keys(localizedStyle).sort().reduce(function (props, styleProp) {\n      var value = localizedStyle[styleProp];\n\n      if (value != null) {\n        var className = getClassName(styleProp, value);\n\n        if (className) {\n          props.classList.push(className);\n        } else {\n          // Certain properties and values are not transformed by 'createReactDOMStyle' as they\n          // require more complex transforms into multiple CSS rules. Here we assume that StyleManager\n          // can bind these styles to a className, and prevent them becoming invalid inline-styles.\n          if (styleProp === 'animationKeyframes' || styleProp === 'placeholderTextColor' || styleProp === 'pointerEvents' || styleProp === 'scrollbarWidth') {\n            var _atomic;\n\n            var a = atomic((_atomic = {}, _atomic[styleProp] = value, _atomic));\n            Object.keys(a).forEach(function (key) {\n              var _a$key = a[key],\n                  identifier = _a$key.identifier,\n                  rules = _a$key.rules;\n              props.classList.push(identifier);\n              rules.forEach(function (rule) {\n                sheet.insert(rule, STYLE_GROUPS.atomic);\n              });\n            });\n          } else {\n            if (!props.style) {\n              props.style = {};\n            } // 4x slower render\n\n\n            props.style[styleProp] = value;\n          }\n        }\n      }\n\n      return props;\n    }, {\n      classList: []\n    });\n\n    if (props.style) {\n      props.style = inline(props.style);\n    }\n\n    if (key != null) {\n      resolved[dir][key] = props;\n    }\n\n    return props;\n  }\n\n  return {\n    getStyleSheet: function getStyleSheet() {\n      var textContent = sheet.getTextContent(); // Reset state on the server so critical css is always the result\n\n      if (!canUseDOM) {\n        init();\n      }\n\n      return {\n        id: STYLE_ELEMENT_ID,\n        textContent: textContent\n      };\n    },\n    createCSS: function createCSS(rules, group) {\n      var result = {};\n      Object.keys(rules).forEach(function (name) {\n        var style = rules[name];\n        var compiled = classic(style, name);\n        Object.keys(compiled).forEach(function (key) {\n          var _compiled$key = compiled[key],\n              identifier = _compiled$key.identifier,\n              rules = _compiled$key.rules;\n          resolved.css[identifier] = {\n            group: group || STYLE_GROUPS.classic,\n            rules: rules\n          };\n          result[name] = identifier;\n        });\n      });\n      return result;\n    },\n    resolve: resolve,\n\n    get sheet() {\n      return sheet;\n    }\n\n  };\n}\n/**\n * Misc helpers\n */\n\nvar createCacheKey = function createCacheKey(id) {\n  var prefix = 'rn';\n  return prefix + \"-\" + id;\n};\n\nvar classListToString = function classListToString(list) {\n  return list.join(' ').trim();\n};"]},"metadata":{},"sourceType":"module"}