import { preactHooks, preact, serverRender } from './3rd-party/preact.js';
import { virtualDocument } from './3rd-party/virtual-document.js';
import { act } from './3rd-party/preact-test-utils.js';
var createContext = preact.createContext, h = preact.h, render = preact.render, options = preact.options;
var useCallback = preactHooks.useCallback, useEffect = preactHooks.useEffect, useMemo = preactHooks.useMemo, useState = preactHooks.useState, useContext = preactHooks.useContext, useLayoutEffect = preactHooks.useLayoutEffect, useRef = preactHooks.useRef, useReducer = preactHooks.useReducer;
var createElement = h;
options.requestAnimationFrame = function (cb) {
    return setTimeout(cb);
};
options.debounceRendering = function (cb) {
    return setTimeout(cb);
};
export { act, useRef, createElement, createContext, serverRender, useCallback, useEffect, useMemo, useState, useContext, useLayoutEffect, useReducer, };
export var mountElement = function (element) {
    var entryDom = virtualDocument.createElement('div');
    render(element, entryDom);
    return {
        unmount: function () {
            render(h('div', {}, 'unmounted'), entryDom);
        },
        update: function (newElement) {
            render(newElement, entryDom);
        },
        toString: function () {
            return entryDom.innerHTML;
        },
        dom: entryDom,
    };
};