UNPKG

@tamagui/react-native-web-lite

Version:
69 lines (68 loc) 2.76 kB
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