// src/jsx/dom/index.ts import { isValidElement, reactAPICompatVersion, shallowEqual } from "../base.js"; import { Children } from "../children.js"; import { DOM_MEMO } from "../constants.js"; import { useContext } from "../context.js"; import { createRef, forwardRef, startTransition, startViewTransition, use, useCallback, useDebugValue, useDeferredValue, useEffect, useId, useImperativeHandle, useInsertionEffect, useLayoutEffect, useMemo, useReducer, useRef, useState, useSyncExternalStore, useTransition, useViewTransition } from "../hooks/index.js"; import { ErrorBoundary, Suspense } from "./components.js"; import { createContext } from "./context.js"; import { useActionState, useFormStatus, useOptimistic } from "./hooks/index.js"; import { Fragment, jsx } from "./jsx-runtime.js"; import { createPortal, flushSync } from "./render.js"; import { render } from "./render.js"; var createElement = (tag, props, ...children) => { const jsxProps = props ? { ...props } : {}; if (children.length) { jsxProps.children = children.length === 1 ? children[0] : children; } let key = void 0; if ("key" in jsxProps) { key = jsxProps.key; delete jsxProps.key; } return jsx(tag, jsxProps, key); }; var cloneElement = (element, props, ...children) => { return jsx( element.tag, { ...element.props, ...props, children: children.length ? children : element.props.children }, element.key ); }; var memo = (component, propsAreEqual = shallowEqual) => { const wrapper = ((props) => component(props)); wrapper[DOM_MEMO] = propsAreEqual; return wrapper; }; var dom_default = { version: reactAPICompatVersion, useState, useEffect, useRef, useCallback, use, startTransition, useTransition, useDeferredValue, startViewTransition, useViewTransition, useMemo, useLayoutEffect, useInsertionEffect, useReducer, useId, useDebugValue, createRef, forwardRef, useImperativeHandle, useSyncExternalStore, useFormStatus, useActionState, useOptimistic, Suspense, ErrorBoundary, createContext, useContext, memo, isValidElement, createElement, cloneElement, Children, Fragment, StrictMode: Fragment, flushSync, createPortal }; export { Children, ErrorBoundary, Fragment, Fragment as StrictMode, Suspense, cloneElement, createContext, createElement, createPortal, createRef, dom_default as default, flushSync, forwardRef, isValidElement, createElement as jsx, memo, render, startTransition, startViewTransition, use, useActionState, useCallback, useContext, useDebugValue, useDeferredValue, useEffect, useFormStatus, useId, useImperativeHandle, useInsertionEffect, useLayoutEffect, useMemo, useOptimistic, useReducer, useRef, useState, useSyncExternalStore, useTransition, useViewTransition, reactAPICompatVersion as version };