UNPKG

react-native-macos

Version:

[Microsoft Fork] A framework for building native apps using React

59 lines (46 loc) 1.76 kB
/** * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * @format * @flow strict-local */ 'use strict'; const Platform = require('../Utilities/Platform'); const normalizeColor = require('../Color/normalizeColor'); import type {NativeOrDynamicColorType} from '../Color/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;