Files
react-native/Libraries/NativeComponent/ViewConfig.js
T
Tim Yung 494c47360f RN: Sort Imports via ESLint
Summary:
Applies the autofix from the newly introduced `lint/sort-imports` ESLint rule.

Changelog:
[Internal]

Reviewed By: cortinico, skinsshark

Differential Revision: D39907798

fbshipit-source-id: 17f5f11b08a5b4bb66286816b78eb26e07e829b8
2022-09-30 14:28:48 -07:00

52 lines
1.4 KiB
JavaScript

/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @flow strict-local
* @format
*/
import type {
PartialViewConfig,
ViewConfig,
} from '../Renderer/shims/ReactNativeTypes';
import PlatformBaseViewConfig from './PlatformBaseViewConfig';
/**
* Creates a complete `ViewConfig` from a `PartialViewConfig`.
*/
export function createViewConfig(
partialViewConfig: PartialViewConfig,
): ViewConfig {
return {
uiViewClassName: partialViewConfig.uiViewClassName,
Commands: {},
bubblingEventTypes: composeIndexers(
PlatformBaseViewConfig.bubblingEventTypes,
partialViewConfig.bubblingEventTypes,
),
directEventTypes: composeIndexers(
PlatformBaseViewConfig.directEventTypes,
partialViewConfig.directEventTypes,
),
validAttributes: composeIndexers(
// $FlowFixMe[incompatible-call] `style` property confuses Flow.
PlatformBaseViewConfig.validAttributes,
// $FlowFixMe[incompatible-call] `style` property confuses Flow.
partialViewConfig.validAttributes,
),
};
}
function composeIndexers<T>(
maybeA: ?{+[string]: T},
maybeB: ?{+[string]: T},
): {+[string]: T} {
return maybeA == null || maybeB == null
? maybeA ?? maybeB ?? {}
: {...maybeA, ...maybeB};
}