woby
Version:
A high-performance framework with fine-grained observable/signal-based reactivity for building rich applications.
278 lines (277 loc) • 11.7 kB
JavaScript
;
var _a, _b;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const runtime = require("./runtime-BkkHnWaw.cjs");
const setters = require("./setters-CyO2VUT6.cjs");
const merge_style = require("./merge_style-DkxC2kon.cjs");
const root = require("./root-D1a_tPqg.cjs");
const fragment = require("./fragment-DZv7GBzl.cjs");
const render_to_string = require("./render_to_string-QEFRB-Fu.cjs");
const template = require("./template-C8XYMS58.cjs");
const wrap_clone_element = require("./wrap_clone_element-C4XivH3I.cjs");
const IS_BROWSER = !!((_b = (_a = globalThis.CDATASection) == null ? void 0 : _a.toString) == null ? void 0 : _b.call(_a).match(/^\s*function\s+CDATASection\s*\(\s*\)\s*\{\s*\[native code\]\s*\}\s*$/));
const isServer = () => {
return !IS_BROWSER;
};
const Dynamic = ({ component, props, children }) => {
if (setters.isFunction(component) || setters.isFunction(props)) {
return merge_style.memo(() => {
return merge_style.resolve(runtime.createElement(setters.get(component, false), setters.get(props), children));
});
} else {
return runtime.createElement(component, props, children);
}
};
const cache = {};
const runWithSuperRoot = setters._with();
let lockId = 1;
const KeepAlive = ({ id, ttl, children }) => {
return merge_style.memo((stack) => {
return merge_style.useResolved([id, ttl], (id2, ttl2) => {
var _a2;
const lock = lockId++;
const item = cache[id2] || (cache[id2] = { id: id2, lock });
item.lock = lock;
(_a2 = item.reset) == null ? void 0 : _a2.call(item, stack);
item.suspended || (item.suspended = merge_style.observable(false));
item.suspended(false);
if (!item.dispose || !item.result) {
runWithSuperRoot(() => {
root.root((stack2, dispose) => {
item.dispose = () => {
delete cache[id2];
dispose(stack2);
};
merge_style.suspense(item.suspended, () => {
item.result = merge_style.resolve(children);
}, stack2);
});
}, stack);
}
setters.cleanup(() => {
var _a3;
const hasLock = () => lock === item.lock;
if (!hasLock()) return;
(_a3 = item.suspended) == null ? void 0 : _a3.call(item, true);
if (!ttl2 || ttl2 <= 0 || ttl2 >= Infinity) return;
const dispose = () => {
var _a4;
return hasLock() && ((_a4 = item.dispose) == null ? void 0 : _a4.call(item, stack));
};
const timeoutId = setTimeout(dispose, ttl2);
const reset = () => clearTimeout(timeoutId);
item.reset = reset;
});
return item.result;
});
});
};
const types = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null
}, Symbol.toStringTag, { value: "Module" }));
const cloneElement = (element, props, ...children) => {
if (setters.isPrimitive(element))
return element;
else if (setters.isFunction(element)) {
if (!element[setters.SYMBOL_CLONE])
throw new Error("target is not cloneable, it is not created by jsx.createElement");
const { Component, props: oldProps } = element[setters.SYMBOL_CLONE];
const newProps = { ...oldProps, ...props };
if (children.length > 0)
Object.assign(props, { children });
return wrap_clone_element.wrapCloneElement(runtime.createElement(Component, newProps), Component, newProps);
} else if (Array.isArray(element))
return element.map((e) => cloneElement(e, props));
else if (element.cloneNode)
return element.cloneNode();
throw new Error("Unknown element");
};
function h$1(component, props, ...children) {
if (children.length || setters.isObject(props) && !setters.isArray(props)) {
if (!props) props = { children };
else props = { ...props, children };
return runtime.createElement(component, props);
} else {
return runtime.createElement(component, null, props);
}
}
const registry = {};
const h = (type, props, ...children) => runtime.createElement(registry[type] || type, props, ...children);
const register = (components) => void setters.assign(registry, components);
const html = setters.assign(merge_style.htm.bind(h), { register });
const lazy = (fetcher) => {
const fetcherOnce = setters.once(fetcher);
const component = (props) => {
const resource = merge_style.useResource(fetcherOnce);
return merge_style.memo(() => {
return merge_style.useResolved(resource, ({ pending, error, value }) => {
if (pending) return;
if (error) throw error;
const component2 = "default" in value ? value.default : value;
return merge_style.resolve(runtime.createElement(component2, props));
});
});
};
component.preload = () => {
return new Promise((resolve2, reject) => {
const resource = merge_style.useResource(fetcherOnce);
merge_style.useResolved(resource, ({ pending, error }) => {
if (pending) return;
if (error) return reject(error);
return resolve2();
});
});
};
return component;
};
const ObservableSymbol = setters.SYMBOL_OBSERVABLE;
exports.createElement = runtime.createElement;
exports.getMeta = runtime.getMeta;
exports.jsx = runtime.jsx;
exports.jsxDEV = runtime.jsxDEV;
exports.jsxs = runtime.jsx;
exports.$$ = setters.get;
exports.CONTEXTS_DATA = setters.CONTEXTS_DATA;
exports.DEBUGGER = setters.DEBUGGER;
exports.DIRECTIVES = setters.DIRECTIVES;
exports.FragmentUtils = setters.FragmentUtils;
exports.SYMBOLS_DIRECTIVES = setters.SYMBOLS_DIRECTIVES;
exports.SYMBOL_CLONE = setters.SYMBOL_CLONE;
exports.SYMBOL_OBSERVABLE = setters.SYMBOL_OBSERVABLE;
exports.SYMBOL_OBSERVABLE_FROZEN = setters.SYMBOL_OBSERVABLE_FROZEN;
exports.SYMBOL_OBSERVABLE_READABLE = setters.SYMBOL_OBSERVABLE_READABLE;
exports.SYMBOL_OBSERVABLE_WRITABLE = setters.SYMBOL_OBSERVABLE_WRITABLE;
exports.SYMBOL_SUSPENSE = setters.SYMBOL_SUSPENSE$1;
exports.SYMBOL_SUSPENSE_COLLECTOR = setters.SYMBOL_SUSPENSE_COLLECTOR;
exports.SYMBOL_TEMPLATE_ACCESSOR = setters.SYMBOL_TEMPLATE_ACCESSOR;
exports.SYMBOL_UNCACHED = setters.SYMBOL_UNCACHED;
exports.SYMBOL_UNTRACKED = setters.SYMBOL_UNTRACKED;
exports.SYMBOL_UNTRACKED_UNWRAPPED = setters.SYMBOL_UNTRACKED_UNWRAPPED;
exports.Stack = setters.Stack;
exports.assign = setters.assign;
exports.callStack = setters.callStack;
exports.castArray = setters.castArray;
exports.castError = setters.castError;
exports.classesToggle = setters.classesToggle;
exports.createComment = setters.createComment;
exports.createDocumentFragment = setters.createDocumentFragment;
exports.createHTMLNode = setters.createHTMLNode;
exports.createSVGNode = setters.createSVGNode;
exports.createText = setters.createText;
exports.fixBigInt = setters.fixBigInt;
exports.flatten = setters.flatten;
exports.indexOf = setters.indexOf;
exports.isArray = setters.isArray;
exports.isBatching = setters.isBatching;
exports.isBoolean = setters.isBoolean;
exports.isComponent = setters.isComponent;
exports.isError = setters.isError;
exports.isFalsy = setters.isFalsy;
exports.isFunction = setters.isFunction;
exports.isFunctionReactive = setters.isFunctionReactive;
exports.isNil = setters.isNil;
exports.isNode = setters.isNode;
exports.isObject = setters.isObject;
exports.isObservable = setters.isObservable;
exports.isPrimitive = setters.isPrimitive;
exports.isPromise = setters.isPromise;
exports.isProxy = setters.isProxy;
exports.isSVG = setters.isSVG;
exports.isSVGElement = setters.isSVGElement;
exports.isStore = setters.isStore;
exports.isString = setters.isString;
exports.isTemplateAccessor = setters.isTemplateAccessor;
exports.isTruthy = setters.isTruthy;
exports.isVoidChild = setters.isVoidChild;
exports.noop = setters.noop;
exports.once = setters.once;
exports.resolveArraysAndStatics = setters.resolveArraysAndStatics;
exports.resolveChild = setters.resolveChild;
exports.resolveClass = setters.resolveClass;
exports.resolveStyle = setters.resolveStyle;
exports.setAttribute = setters.setAttribute;
exports.setAttributeStatic = setters.setAttributeStatic;
exports.setChild = setters.setChild;
exports.setChildReplacement = setters.setChildReplacement;
exports.setChildReplacementFunction = setters.setChildReplacementFunction;
exports.setChildReplacementText = setters.setChildReplacementText;
exports.setChildStatic = setters.setChildStatic;
exports.setClass = setters.setClass;
exports.setClassBooleanStatic = setters.setClassBooleanStatic;
exports.setClassStatic = setters.setClassStatic;
exports.setClasses = setters.setClasses;
exports.setClassesStatic = setters.setClassesStatic;
exports.setEvent = setters.setEvent;
exports.setEventStatic = setters.setEventStatic;
exports.setHTML = setters.setHTML;
exports.setHTMLStatic = setters.setHTMLStatic;
exports.setProp = setters.setProp;
exports.setProperty = setters.setProperty;
exports.setPropertyStatic = setters.setPropertyStatic;
exports.setProps = setters.setProps;
exports.setRef = setters.setRef;
exports.setStyle = setters.setStyle;
exports.setStyleStatic = setters.setStyleStatic;
exports.setStyles = setters.setStyles;
exports.setStylesStatic = setters.setStylesStatic;
exports.setTemplateAccessor = setters.setTemplateAccessor;
exports.store = setters.store;
exports.toArray = setters.toArray;
exports.untrack = setters.untrack;
exports.useCleanup = setters.cleanup;
exports.useEffect = setters.effect;
exports.useMicrotask = setters.useMicrotask;
exports.$ = merge_style.observable;
exports.ErrorBoundary = merge_style.ErrorBoundary;
exports.For = merge_style.For;
exports.If = merge_style.If;
exports.Suspense = merge_style.Suspense;
exports.Switch = merge_style.Switch;
exports.Ternary = merge_style.Ternary;
exports.batch = merge_style.batch;
exports.createContext = merge_style.createContext;
exports.createDirective = merge_style.createDirective;
exports.hmr = merge_style.hmr;
exports.isObservableWritable = merge_style.isObservableWritable;
exports.mergeStyles = merge_style.mergeStyles;
exports.resolve = merge_style.resolve;
exports.tick = merge_style.tick;
exports.useAbortController = merge_style.useAbortController;
exports.useAbortSignal = merge_style.useAbortSignal;
exports.useAnimationFrame = merge_style.useAnimationFrame;
exports.useAnimationLoop = merge_style.useAnimationLoop;
exports.useBoolean = merge_style.boolean;
exports.useContext = merge_style.useContext;
exports.useDisposed = merge_style.disposed;
exports.useEventListener = merge_style.useEventListener;
exports.useFetch = merge_style.useFetch;
exports.useIdleCallback = merge_style.useIdleCallback;
exports.useIdleLoop = merge_style.useIdleLoop;
exports.useInterval = merge_style.useInterval;
exports.useMemo = merge_style.memo;
exports.usePromise = merge_style.usePromise;
exports.useReadonly = merge_style.readonly;
exports.useResolved = merge_style.useResolved;
exports.useResource = merge_style.useResource;
exports.useSelector = merge_style.selector;
exports.useSuspended = merge_style.suspended;
exports.useTimeout = merge_style.useTimeout;
exports.useUntracked = merge_style.untracked;
exports.useRoot = root.root;
exports.Fragment = fragment.Fragment;
exports.Portal = render_to_string.Portal;
exports.render = render_to_string.render;
exports.renderToString = render_to_string.renderToString;
exports.template = template.template;
exports.SYMBOL_STACK = wrap_clone_element.SYMBOL_STACK;
exports.wrapCloneElement = wrap_clone_element.wrapCloneElement;
exports.Dynamic = Dynamic;
exports.JSX = types;
exports.KeepAlive = KeepAlive;
exports.ObservableSymbol = ObservableSymbol;
exports.cloneElement = cloneElement;
exports.h = h$1;
exports.html = html;
exports.isServer = isServer;
exports.lazy = lazy;
//# sourceMappingURL=index.cjs.js.map