{"ast":null,"code":"import NativeAnimatedNonTurboModule from \"./NativeAnimatedModule\";\nimport NativeAnimatedTurboModule from \"./NativeAnimatedTurboModule\";\nimport NativeEventEmitter from \"../NativeEventEmitter\";\nimport Platform from \"../../../exports/Platform\";\nimport invariant from 'fbjs/lib/invariant';\nvar NativeAnimatedModule = Platform.OS === 'ios' && global.RN$Bridgeless ? NativeAnimatedTurboModule : NativeAnimatedNonTurboModule;\nvar __nativeAnimatedNodeTagCount = 1;\nvar __nativeAnimationIdCount = 1;\nvar nativeEventEmitter;\nvar waitingForQueuedOperations = new Set();\nvar queueOperations = false;\nvar queue = [];\nvar API = {\n  getValue: function getValue(tag, saveValueCallback) {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n\n    if (NativeAnimatedModule.getValue) {\n      NativeAnimatedModule.getValue(tag, saveValueCallback);\n    }\n  },\n  setWaitingForIdentifier: function setWaitingForIdentifier(id) {\n    waitingForQueuedOperations.add(id);\n    queueOperations = true;\n  },\n  unsetWaitingForIdentifier: function unsetWaitingForIdentifier(id) {\n    waitingForQueuedOperations.delete(id);\n\n    if (waitingForQueuedOperations.size === 0) {\n      queueOperations = false;\n      API.disableQueue();\n    }\n  },\n  disableQueue: function disableQueue() {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n\n    if (Platform.OS === 'android') {\n      NativeAnimatedModule.startOperationBatch();\n    }\n\n    for (var q = 0, l = queue.length; q < l; q++) {\n      queue[q]();\n    }\n\n    queue.length = 0;\n\n    if (Platform.OS === 'android') {\n      NativeAnimatedModule.finishOperationBatch();\n    }\n  },\n  queueOperation: function queueOperation(fn) {\n    if (queueOperations) {\n      queue.push(fn);\n    } else {\n      fn();\n    }\n  },\n  createAnimatedNode: function createAnimatedNode(tag, config) {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(function () {\n      return NativeAnimatedModule.createAnimatedNode(tag, config);\n    });\n  },\n  startListeningToAnimatedNodeValue: function startListeningToAnimatedNodeValue(tag) {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(function () {\n      return NativeAnimatedModule.startListeningToAnimatedNodeValue(tag);\n    });\n  },\n  stopListeningToAnimatedNodeValue: function stopListeningToAnimatedNodeValue(tag) {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(function () {\n      return NativeAnimatedModule.stopListeningToAnimatedNodeValue(tag);\n    });\n  },\n  connectAnimatedNodes: function connectAnimatedNodes(parentTag, childTag) {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(function () {\n      return NativeAnimatedModule.connectAnimatedNodes(parentTag, childTag);\n    });\n  },\n  disconnectAnimatedNodes: function disconnectAnimatedNodes(parentTag, childTag) {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(function () {\n      return NativeAnimatedModule.disconnectAnimatedNodes(parentTag, childTag);\n    });\n  },\n  startAnimatingNode: function startAnimatingNode(animationId, nodeTag, config, endCallback) {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(function () {\n      return NativeAnimatedModule.startAnimatingNode(animationId, nodeTag, config, endCallback);\n    });\n  },\n  stopAnimation: function stopAnimation(animationId) {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(function () {\n      return NativeAnimatedModule.stopAnimation(animationId);\n    });\n  },\n  setAnimatedNodeValue: function setAnimatedNodeValue(nodeTag, value) {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(function () {\n      return NativeAnimatedModule.setAnimatedNodeValue(nodeTag, value);\n    });\n  },\n  setAnimatedNodeOffset: function setAnimatedNodeOffset(nodeTag, offset) {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(function () {\n      return NativeAnimatedModule.setAnimatedNodeOffset(nodeTag, offset);\n    });\n  },\n  flattenAnimatedNodeOffset: function flattenAnimatedNodeOffset(nodeTag) {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(function () {\n      return NativeAnimatedModule.flattenAnimatedNodeOffset(nodeTag);\n    });\n  },\n  extractAnimatedNodeOffset: function extractAnimatedNodeOffset(nodeTag) {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(function () {\n      return NativeAnimatedModule.extractAnimatedNodeOffset(nodeTag);\n    });\n  },\n  connectAnimatedNodeToView: function connectAnimatedNodeToView(nodeTag, viewTag) {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(function () {\n      return NativeAnimatedModule.connectAnimatedNodeToView(nodeTag, viewTag);\n    });\n  },\n  disconnectAnimatedNodeFromView: function disconnectAnimatedNodeFromView(nodeTag, viewTag) {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(function () {\n      return NativeAnimatedModule.disconnectAnimatedNodeFromView(nodeTag, viewTag);\n    });\n  },\n  restoreDefaultValues: function restoreDefaultValues(nodeTag) {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n\n    if (NativeAnimatedModule.restoreDefaultValues != null) {\n      API.queueOperation(function () {\n        return NativeAnimatedModule.restoreDefaultValues(nodeTag);\n      });\n    }\n  },\n  dropAnimatedNode: function dropAnimatedNode(tag) {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(function () {\n      return NativeAnimatedModule.dropAnimatedNode(tag);\n    });\n  },\n  addAnimatedEventToView: function addAnimatedEventToView(viewTag, eventName, eventMapping) {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(function () {\n      return NativeAnimatedModule.addAnimatedEventToView(viewTag, eventName, eventMapping);\n    });\n  },\n  removeAnimatedEventFromView: function removeAnimatedEventFromView(viewTag, eventName, animatedNodeTag) {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(function () {\n      return NativeAnimatedModule.removeAnimatedEventFromView(viewTag, eventName, animatedNodeTag);\n    });\n  }\n};\nvar SUPPORTED_STYLES = {\n  opacity: true,\n  transform: true,\n  borderRadius: true,\n  borderBottomEndRadius: true,\n  borderBottomLeftRadius: true,\n  borderBottomRightRadius: true,\n  borderBottomStartRadius: true,\n  borderTopEndRadius: true,\n  borderTopLeftRadius: true,\n  borderTopRightRadius: true,\n  borderTopStartRadius: true,\n  elevation: true,\n  zIndex: true,\n  shadowOpacity: true,\n  shadowRadius: true,\n  scaleX: true,\n  scaleY: true,\n  translateX: true,\n  translateY: true\n};\nvar SUPPORTED_TRANSFORMS = {\n  translateX: true,\n  translateY: true,\n  scale: true,\n  scaleX: true,\n  scaleY: true,\n  rotate: true,\n  rotateX: true,\n  rotateY: true,\n  rotateZ: true,\n  perspective: true\n};\nvar SUPPORTED_INTERPOLATION_PARAMS = {\n  inputRange: true,\n  outputRange: true,\n  extrapolate: true,\n  extrapolateRight: true,\n  extrapolateLeft: true\n};\n\nfunction addWhitelistedStyleProp(prop) {\n  SUPPORTED_STYLES[prop] = true;\n}\n\nfunction addWhitelistedTransformProp(prop) {\n  SUPPORTED_TRANSFORMS[prop] = true;\n}\n\nfunction addWhitelistedInterpolationParam(param) {\n  SUPPORTED_INTERPOLATION_PARAMS[param] = true;\n}\n\nfunction validateTransform(configs) {\n  configs.forEach(function (config) {\n    if (!SUPPORTED_TRANSFORMS.hasOwnProperty(config.property)) {\n      throw new Error(\"Property '\" + config.property + \"' is not supported by native animated module\");\n    }\n  });\n}\n\nfunction validateStyles(styles) {\n  for (var _key in styles) {\n    if (!SUPPORTED_STYLES.hasOwnProperty(_key)) {\n      throw new Error(\"Style property '\" + _key + \"' is not supported by native animated module\");\n    }\n  }\n}\n\nfunction validateInterpolation(config) {\n  for (var _key2 in config) {\n    if (!SUPPORTED_INTERPOLATION_PARAMS.hasOwnProperty(_key2)) {\n      throw new Error(\"Interpolation property '\" + _key2 + \"' is not supported by native animated module\");\n    }\n  }\n}\n\nfunction generateNewNodeTag() {\n  return __nativeAnimatedNodeTagCount++;\n}\n\nexport function generateNewAnimationId() {\n  return __nativeAnimationIdCount++;\n}\n\nfunction assertNativeAnimatedModule() {\n  invariant(NativeAnimatedModule, 'Native animated module is not available');\n}\n\nvar _warnedMissingNativeAnimated = false;\nexport function shouldUseNativeDriver(config) {\n  if (config.useNativeDriver == null) {\n    console.warn('Animated: `useNativeDriver` was not specified. This is a required ' + 'option and must be explicitly set to `true` or `false`');\n  }\n\n  if (config.useNativeDriver === true && !NativeAnimatedModule) {\n    if (!_warnedMissingNativeAnimated) {\n      console.warn('Animated: `useNativeDriver` is not supported because the native ' + 'animated module is missing. Falling back to JS-based animation. To ' + 'resolve this, add `RCTAnimation` module to this app, or remove ' + '`useNativeDriver`. ' + 'Make sure to run `pod install` first. Read more about autolinking: https://github.com/react-native-community/cli/blob/master/docs/autolinking.md');\n      _warnedMissingNativeAnimated = true;\n    }\n\n    return false;\n  }\n\n  return config.useNativeDriver || false;\n}\n\nfunction transformDataType(value) {\n  if (typeof value !== 'string') {\n    return value;\n  }\n\n  if (/deg$/.test(value)) {\n    var degrees = parseFloat(value) || 0;\n    var radians = degrees * Math.PI / 180.0;\n    return radians;\n  } else {\n    return value;\n  }\n}\n\nexport default {\n  API: API,\n  addWhitelistedStyleProp: addWhitelistedStyleProp,\n  addWhitelistedTransformProp: addWhitelistedTransformProp,\n  addWhitelistedInterpolationParam: addWhitelistedInterpolationParam,\n  validateStyles: validateStyles,\n  validateTransform: validateTransform,\n  validateInterpolation: validateInterpolation,\n  generateNewNodeTag: generateNewNodeTag,\n  generateNewAnimationId: generateNewAnimationId,\n  assertNativeAnimatedModule: assertNativeAnimatedModule,\n  shouldUseNativeDriver: shouldUseNativeDriver,\n  transformDataType: transformDataType,\n\n  get nativeEventEmitter() {\n    if (!nativeEventEmitter) {\n      nativeEventEmitter = new NativeEventEmitter(NativeAnimatedModule);\n    }\n\n    return nativeEventEmitter;\n  }\n\n};","map":{"version":3,"sources":["/Users/rohitsingh/Documents/projects/new-nativebase-setup/NativeBase/example/node_modules/react-native-web/dist/vendor/react-native/Animated/NativeAnimatedHelper.js"],"names":["NativeAnimatedNonTurboModule","NativeAnimatedTurboModule","NativeEventEmitter","Platform","invariant","NativeAnimatedModule","OS","global","RN$Bridgeless","__nativeAnimatedNodeTagCount","__nativeAnimationIdCount","nativeEventEmitter","waitingForQueuedOperations","Set","queueOperations","queue","API","getValue","tag","saveValueCallback","setWaitingForIdentifier","id","add","unsetWaitingForIdentifier","delete","size","disableQueue","startOperationBatch","q","l","length","finishOperationBatch","queueOperation","fn","push","createAnimatedNode","config","startListeningToAnimatedNodeValue","stopListeningToAnimatedNodeValue","connectAnimatedNodes","parentTag","childTag","disconnectAnimatedNodes","startAnimatingNode","animationId","nodeTag","endCallback","stopAnimation","setAnimatedNodeValue","value","setAnimatedNodeOffset","offset","flattenAnimatedNodeOffset","extractAnimatedNodeOffset","connectAnimatedNodeToView","viewTag","disconnectAnimatedNodeFromView","restoreDefaultValues","dropAnimatedNode","addAnimatedEventToView","eventName","eventMapping","removeAnimatedEventFromView","animatedNodeTag","SUPPORTED_STYLES","opacity","transform","borderRadius","borderBottomEndRadius","borderBottomLeftRadius","borderBottomRightRadius","borderBottomStartRadius","borderTopEndRadius","borderTopLeftRadius","borderTopRightRadius","borderTopStartRadius","elevation","zIndex","shadowOpacity","shadowRadius","scaleX","scaleY","translateX","translateY","SUPPORTED_TRANSFORMS","scale","rotate","rotateX","rotateY","rotateZ","perspective","SUPPORTED_INTERPOLATION_PARAMS","inputRange","outputRange","extrapolate","extrapolateRight","extrapolateLeft","addWhitelistedStyleProp","prop","addWhitelistedTransformProp","addWhitelistedInterpolationParam","param","validateTransform","configs","forEach","hasOwnProperty","property","Error","validateStyles","styles","_key","validateInterpolation","_key2","generateNewNodeTag","generateNewAnimationId","assertNativeAnimatedModule","_warnedMissingNativeAnimated","shouldUseNativeDriver","useNativeDriver","console","warn","transformDataType","test","degrees","parseFloat","radians","Math","PI"],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Facebook, Inc. and its affiliates.\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 * @format\n */\nimport NativeAnimatedNonTurboModule from './NativeAnimatedModule';\nimport NativeAnimatedTurboModule from './NativeAnimatedTurboModule';\nimport NativeEventEmitter from '../NativeEventEmitter';\nimport Platform from '../../../exports/Platform';\nimport invariant from 'fbjs/lib/invariant'; // TODO T69437152 @petetheheat - Delete this fork when Fabric ships to 100%.\n\nvar NativeAnimatedModule = Platform.OS === 'ios' && global.RN$Bridgeless ? NativeAnimatedTurboModule : NativeAnimatedNonTurboModule;\nvar __nativeAnimatedNodeTagCount = 1;\n/* used for animated nodes */\n\nvar __nativeAnimationIdCount = 1;\n/* used for started animations */\n\nvar nativeEventEmitter;\nvar waitingForQueuedOperations = new Set();\nvar queueOperations = false;\nvar queue = [];\n/**\n * Simple wrappers around NativeAnimatedModule to provide flow and autocomplete support for\n * the native module methods\n */\n\nvar API = {\n  getValue: function getValue(tag, saveValueCallback) {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n\n    if (NativeAnimatedModule.getValue) {\n      NativeAnimatedModule.getValue(tag, saveValueCallback);\n    }\n  },\n  setWaitingForIdentifier: function setWaitingForIdentifier(id) {\n    waitingForQueuedOperations.add(id);\n    queueOperations = true;\n  },\n  unsetWaitingForIdentifier: function unsetWaitingForIdentifier(id) {\n    waitingForQueuedOperations.delete(id);\n\n    if (waitingForQueuedOperations.size === 0) {\n      queueOperations = false;\n      API.disableQueue();\n    }\n  },\n  disableQueue: function disableQueue() {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n\n    if (Platform.OS === 'android') {\n      NativeAnimatedModule.startOperationBatch();\n    }\n\n    for (var q = 0, l = queue.length; q < l; q++) {\n      queue[q]();\n    }\n\n    queue.length = 0;\n\n    if (Platform.OS === 'android') {\n      NativeAnimatedModule.finishOperationBatch();\n    }\n  },\n  queueOperation: function queueOperation(fn) {\n    if (queueOperations) {\n      queue.push(fn);\n    } else {\n      fn();\n    }\n  },\n  createAnimatedNode: function createAnimatedNode(tag, config) {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(function () {\n      return NativeAnimatedModule.createAnimatedNode(tag, config);\n    });\n  },\n  startListeningToAnimatedNodeValue: function startListeningToAnimatedNodeValue(tag) {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(function () {\n      return NativeAnimatedModule.startListeningToAnimatedNodeValue(tag);\n    });\n  },\n  stopListeningToAnimatedNodeValue: function stopListeningToAnimatedNodeValue(tag) {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(function () {\n      return NativeAnimatedModule.stopListeningToAnimatedNodeValue(tag);\n    });\n  },\n  connectAnimatedNodes: function connectAnimatedNodes(parentTag, childTag) {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(function () {\n      return NativeAnimatedModule.connectAnimatedNodes(parentTag, childTag);\n    });\n  },\n  disconnectAnimatedNodes: function disconnectAnimatedNodes(parentTag, childTag) {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(function () {\n      return NativeAnimatedModule.disconnectAnimatedNodes(parentTag, childTag);\n    });\n  },\n  startAnimatingNode: function startAnimatingNode(animationId, nodeTag, config, endCallback) {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(function () {\n      return NativeAnimatedModule.startAnimatingNode(animationId, nodeTag, config, endCallback);\n    });\n  },\n  stopAnimation: function stopAnimation(animationId) {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(function () {\n      return NativeAnimatedModule.stopAnimation(animationId);\n    });\n  },\n  setAnimatedNodeValue: function setAnimatedNodeValue(nodeTag, value) {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(function () {\n      return NativeAnimatedModule.setAnimatedNodeValue(nodeTag, value);\n    });\n  },\n  setAnimatedNodeOffset: function setAnimatedNodeOffset(nodeTag, offset) {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(function () {\n      return NativeAnimatedModule.setAnimatedNodeOffset(nodeTag, offset);\n    });\n  },\n  flattenAnimatedNodeOffset: function flattenAnimatedNodeOffset(nodeTag) {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(function () {\n      return NativeAnimatedModule.flattenAnimatedNodeOffset(nodeTag);\n    });\n  },\n  extractAnimatedNodeOffset: function extractAnimatedNodeOffset(nodeTag) {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(function () {\n      return NativeAnimatedModule.extractAnimatedNodeOffset(nodeTag);\n    });\n  },\n  connectAnimatedNodeToView: function connectAnimatedNodeToView(nodeTag, viewTag) {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(function () {\n      return NativeAnimatedModule.connectAnimatedNodeToView(nodeTag, viewTag);\n    });\n  },\n  disconnectAnimatedNodeFromView: function disconnectAnimatedNodeFromView(nodeTag, viewTag) {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(function () {\n      return NativeAnimatedModule.disconnectAnimatedNodeFromView(nodeTag, viewTag);\n    });\n  },\n  restoreDefaultValues: function restoreDefaultValues(nodeTag) {\n    invariant(NativeAnimatedModule, 'Native animated module is not available'); // Backwards compat with older native runtimes, can be removed later.\n\n    if (NativeAnimatedModule.restoreDefaultValues != null) {\n      API.queueOperation(function () {\n        return NativeAnimatedModule.restoreDefaultValues(nodeTag);\n      });\n    }\n  },\n  dropAnimatedNode: function dropAnimatedNode(tag) {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(function () {\n      return NativeAnimatedModule.dropAnimatedNode(tag);\n    });\n  },\n  addAnimatedEventToView: function addAnimatedEventToView(viewTag, eventName, eventMapping) {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(function () {\n      return NativeAnimatedModule.addAnimatedEventToView(viewTag, eventName, eventMapping);\n    });\n  },\n  removeAnimatedEventFromView: function removeAnimatedEventFromView(viewTag, eventName, animatedNodeTag) {\n    invariant(NativeAnimatedModule, 'Native animated module is not available');\n    API.queueOperation(function () {\n      return NativeAnimatedModule.removeAnimatedEventFromView(viewTag, eventName, animatedNodeTag);\n    });\n  }\n};\n/**\n * Styles allowed by the native animated implementation.\n *\n * In general native animated implementation should support any numeric property that doesn't need\n * to be updated through the shadow view hierarchy (all non-layout properties).\n */\n\nvar SUPPORTED_STYLES = {\n  opacity: true,\n  transform: true,\n  borderRadius: true,\n  borderBottomEndRadius: true,\n  borderBottomLeftRadius: true,\n  borderBottomRightRadius: true,\n  borderBottomStartRadius: true,\n  borderTopEndRadius: true,\n  borderTopLeftRadius: true,\n  borderTopRightRadius: true,\n  borderTopStartRadius: true,\n  elevation: true,\n  zIndex: true,\n\n  /* ios styles */\n  shadowOpacity: true,\n  shadowRadius: true,\n\n  /* legacy android transform properties */\n  scaleX: true,\n  scaleY: true,\n  translateX: true,\n  translateY: true\n};\nvar SUPPORTED_TRANSFORMS = {\n  translateX: true,\n  translateY: true,\n  scale: true,\n  scaleX: true,\n  scaleY: true,\n  rotate: true,\n  rotateX: true,\n  rotateY: true,\n  rotateZ: true,\n  perspective: true\n};\nvar SUPPORTED_INTERPOLATION_PARAMS = {\n  inputRange: true,\n  outputRange: true,\n  extrapolate: true,\n  extrapolateRight: true,\n  extrapolateLeft: true\n};\n\nfunction addWhitelistedStyleProp(prop) {\n  SUPPORTED_STYLES[prop] = true;\n}\n\nfunction addWhitelistedTransformProp(prop) {\n  SUPPORTED_TRANSFORMS[prop] = true;\n}\n\nfunction addWhitelistedInterpolationParam(param) {\n  SUPPORTED_INTERPOLATION_PARAMS[param] = true;\n}\n\nfunction validateTransform(configs) {\n  configs.forEach(function (config) {\n    if (!SUPPORTED_TRANSFORMS.hasOwnProperty(config.property)) {\n      throw new Error(\"Property '\" + config.property + \"' is not supported by native animated module\");\n    }\n  });\n}\n\nfunction validateStyles(styles) {\n  for (var _key in styles) {\n    if (!SUPPORTED_STYLES.hasOwnProperty(_key)) {\n      throw new Error(\"Style property '\" + _key + \"' is not supported by native animated module\");\n    }\n  }\n}\n\nfunction validateInterpolation(config) {\n  for (var _key2 in config) {\n    if (!SUPPORTED_INTERPOLATION_PARAMS.hasOwnProperty(_key2)) {\n      throw new Error(\"Interpolation property '\" + _key2 + \"' is not supported by native animated module\");\n    }\n  }\n}\n\nfunction generateNewNodeTag() {\n  return __nativeAnimatedNodeTagCount++;\n}\n\nexport function generateNewAnimationId() {\n  return __nativeAnimationIdCount++;\n}\n\nfunction assertNativeAnimatedModule() {\n  invariant(NativeAnimatedModule, 'Native animated module is not available');\n}\n\nvar _warnedMissingNativeAnimated = false;\nexport function shouldUseNativeDriver(config) {\n  if (config.useNativeDriver == null) {\n    console.warn('Animated: `useNativeDriver` was not specified. This is a required ' + 'option and must be explicitly set to `true` or `false`');\n  }\n\n  if (config.useNativeDriver === true && !NativeAnimatedModule) {\n    if (!_warnedMissingNativeAnimated) {\n      console.warn('Animated: `useNativeDriver` is not supported because the native ' + 'animated module is missing. Falling back to JS-based animation. To ' + 'resolve this, add `RCTAnimation` module to this app, or remove ' + '`useNativeDriver`. ' + 'Make sure to run `pod install` first. Read more about autolinking: https://github.com/react-native-community/cli/blob/master/docs/autolinking.md');\n      _warnedMissingNativeAnimated = true;\n    }\n\n    return false;\n  }\n\n  return config.useNativeDriver || false;\n}\n\nfunction transformDataType(value) {\n  // Change the string type to number type so we can reuse the same logic in\n  // iOS and Android platform\n  if (typeof value !== 'string') {\n    return value;\n  }\n\n  if (/deg$/.test(value)) {\n    var degrees = parseFloat(value) || 0;\n    var radians = degrees * Math.PI / 180.0;\n    return radians;\n  } else {\n    return value;\n  }\n}\n\nexport default {\n  API: API,\n  addWhitelistedStyleProp: addWhitelistedStyleProp,\n  addWhitelistedTransformProp: addWhitelistedTransformProp,\n  addWhitelistedInterpolationParam: addWhitelistedInterpolationParam,\n  validateStyles: validateStyles,\n  validateTransform: validateTransform,\n  validateInterpolation: validateInterpolation,\n  generateNewNodeTag: generateNewNodeTag,\n  generateNewAnimationId: generateNewAnimationId,\n  assertNativeAnimatedModule: assertNativeAnimatedModule,\n  shouldUseNativeDriver: shouldUseNativeDriver,\n  transformDataType: transformDataType,\n\n  // $FlowExpectedError - unsafe getter lint suppresion\n  get nativeEventEmitter() {\n    if (!nativeEventEmitter) {\n      nativeEventEmitter = new NativeEventEmitter(NativeAnimatedModule);\n    }\n\n    return nativeEventEmitter;\n  }\n\n};"]},"metadata":{},"sourceType":"module"}