text: /**
   * Copyright (c) Microsoft Corporation.
   * Licensed under the MIT License.
   *
   * @format
   * @flow strict-local
   */
  
  'use strict';
  
  const Platform = require('../Utilities/Platform');
  
  const normalizeColor = require('./normalizeColor');
  import type {NativeOrDynamicColorType} from './NativeOrDynamicColorType'; // ]TODO(macOS ISS#2323203)
  
  /* eslint no-bitwise: 0 */
  function processColor(
    color?: ?(string | number | NativeOrDynamicColorType),
  ): ?(number | NativeOrDynamicColorType) /* TODO(macOS ISS#2323203) */ {
    if (color === undefined || color === null) {
      return color;
    }
  
    let int32Color = normalizeColor(color);
    if (int32Color === null || int32Color === undefined) {
      return undefined;
    }
  
    if (typeof int32Color === 'object') {
      const processColorObject = require('./processColorObject'); // TODO(macOS ISS#2323203)
  
      const processedColorObj = processColorObject(int32Color);
  
      if (processedColorObj !== null) {
        return processedColorObj;
      }
    }
  
    if (typeof int32Color !== 'number') {
      return null;
    } // ]TODO(macOS ISS#2323203)
  
    // Converts 0xrrggbbaa into 0xaarrggbb
    int32Color = ((int32Color << 24) | (int32Color >>> 8)) >>> 0;
  
    if (Platform.OS === 'android') {
      // Android use 32 bit *signed* integer to represent the color
      // We utilize the fact that bitwise operations in JS also operates on
      // signed 32 bit integers, so that we can use those to convert from
      // *unsigned* to *signed* 32bit int that way.
      int32Color = int32Color | 0x0;
    }
    return int32Color;
  }
  
  module.exports = processColor;
  