react-native-web
Version:
React Native for Web
44 lines (36 loc) • 1.22 kB
JavaScript
/**
* Copyright (c) Nicolas Gallagher.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @noflow
*/
'use client';
import AccessibilityUtil from '../../modules/AccessibilityUtil';
import createDOMProps from '../../modules/createDOMProps';
import React from 'react';
import { LocaleProvider } from '../../modules/useLocale';
const createElement = (component, props, options) => {
// Use equivalent platform elements where possible.
let accessibilityComponent;
if (component && component.constructor === String) {
accessibilityComponent =
AccessibilityUtil.propsToAccessibilityComponent(props);
}
const Component = accessibilityComponent || component;
const domProps = createDOMProps(Component, props, options);
const element = React.createElement(Component, domProps);
// Update locale context if element's writing direction prop changes
const elementWithLocaleProvider = domProps.dir ? (
<LocaleProvider
children={element}
direction={domProps.dir}
locale={domProps.lang}
/>
) : (
element
);
return elementWithLocaleProvider;
};
export default createElement;