@tamagui/react-native-web-lite
Version:
React Native for Web
69 lines (68 loc) • 2.76 kB
JavaScript
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
import { AccessibilityUtil, LocaleProvider, createDOMProps, stylesFromProps } from "@tamagui/react-native-web-internals";
import { getStyleTags, insertStyleRules, useDidFinishSSR } from "@tamagui/web";
import React, { useInsertionEffect, useMemo } from "react";
var useCreateElement = function (component, props, options) {
var {
element,
styles
} = createElementAndStyles(component, props, options),
isHydrated = useDidFinishSSR(),
styleTags = useMemo(function () {
return isHydrated || !styles ? null : getStyleTags(styles);
}, []);
return useInsertionEffect(function () {
if (styles) {
var styleObj = {},
_iteratorNormalCompletion = !0,
_didIteratorError = !1,
_iteratorError = void 0;
try {
for (var _iterator = styles[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
var style = _step.value;
styleObj[style[0]] = style;
}
} catch (err) {
_didIteratorError = !0, _iteratorError = err;
} finally {
try {
!_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
} finally {
if (_didIteratorError) throw _iteratorError;
}
}
insertStyleRules(styleObj);
}
}, [styles]), /* @__PURE__ */_jsxs(_Fragment, {
children: [element, styleTags]
});
},
createElement = function (component, props, options) {
var {
element,
styles
} = createElementAndStyles(component, props, options);
return /* @__PURE__ */_jsxs(_Fragment, {
children: [element, styles ? getStyleTags(styles) : null]
});
},
createElementAndStyles = function (component, props, options) {
var accessibilityComponent;
component && component.constructor === String && (accessibilityComponent = AccessibilityUtil.propsToAccessibilityComponent(props));
var Component = accessibilityComponent || component,
domProps = createDOMProps(Component, props, options),
styles = stylesFromProps.get(domProps),
element = /* @__PURE__ */React.createElement(Component, domProps),
elementWithLocaleProvider = domProps.dir ? /* @__PURE__ */_jsx(LocaleProvider, {
direction: domProps.dir,
locale: domProps.lang,
children: element
}) : element;
return {
element: elementWithLocaleProvider,
styles
};
},
createElement_default = createElement;
export { createElement_default as default, useCreateElement };
//# sourceMappingURL=index.native.js.map