Erster Docker-Stand
This commit is contained in:
53
_node_modules/hono/dist/jsx/dom/client.js
generated
vendored
Normal file
53
_node_modules/hono/dist/jsx/dom/client.js
generated
vendored
Normal file
@@ -0,0 +1,53 @@
|
||||
// src/jsx/dom/client.ts
|
||||
import { useState } from "../hooks/index.js";
|
||||
import { buildNode, renderNode } from "./render.js";
|
||||
var createRoot = (element, options = {}) => {
|
||||
let setJsxNode = (
|
||||
// unmounted
|
||||
void 0
|
||||
);
|
||||
if (Object.keys(options).length > 0) {
|
||||
console.warn("createRoot options are not supported yet");
|
||||
}
|
||||
return {
|
||||
render(jsxNode) {
|
||||
if (setJsxNode === null) {
|
||||
throw new Error("Cannot update an unmounted root");
|
||||
}
|
||||
if (setJsxNode) {
|
||||
setJsxNode(jsxNode);
|
||||
} else {
|
||||
renderNode(
|
||||
buildNode({
|
||||
tag: () => {
|
||||
const [_jsxNode, _setJsxNode] = useState(jsxNode);
|
||||
setJsxNode = _setJsxNode;
|
||||
return _jsxNode;
|
||||
},
|
||||
props: {}
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
}),
|
||||
element
|
||||
);
|
||||
}
|
||||
},
|
||||
unmount() {
|
||||
setJsxNode?.(null);
|
||||
setJsxNode = null;
|
||||
}
|
||||
};
|
||||
};
|
||||
var hydrateRoot = (element, reactNode, options = {}) => {
|
||||
const root = createRoot(element, options);
|
||||
root.render(reactNode);
|
||||
return root;
|
||||
};
|
||||
var client_default = {
|
||||
createRoot,
|
||||
hydrateRoot
|
||||
};
|
||||
export {
|
||||
createRoot,
|
||||
client_default as default,
|
||||
hydrateRoot
|
||||
};
|
||||
32
_node_modules/hono/dist/jsx/dom/components.js
generated
vendored
Normal file
32
_node_modules/hono/dist/jsx/dom/components.js
generated
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
// src/jsx/dom/components.ts
|
||||
import { DOM_ERROR_HANDLER } from "../constants.js";
|
||||
import { Fragment } from "./jsx-runtime.js";
|
||||
var ErrorBoundary = (({ children, fallback, fallbackRender, onError }) => {
|
||||
const res = Fragment({ children });
|
||||
res[DOM_ERROR_HANDLER] = (err) => {
|
||||
if (err instanceof Promise) {
|
||||
throw err;
|
||||
}
|
||||
onError?.(err);
|
||||
return fallbackRender?.(err) || fallback;
|
||||
};
|
||||
return res;
|
||||
});
|
||||
var Suspense = (({
|
||||
children,
|
||||
fallback
|
||||
}) => {
|
||||
const res = Fragment({ children });
|
||||
res[DOM_ERROR_HANDLER] = (err, retry) => {
|
||||
if (!(err instanceof Promise)) {
|
||||
throw err;
|
||||
}
|
||||
err.finally(retry);
|
||||
return fallback;
|
||||
};
|
||||
return res;
|
||||
});
|
||||
export {
|
||||
ErrorBoundary,
|
||||
Suspense
|
||||
};
|
||||
48
_node_modules/hono/dist/jsx/dom/context.js
generated
vendored
Normal file
48
_node_modules/hono/dist/jsx/dom/context.js
generated
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
// src/jsx/dom/context.ts
|
||||
import { DOM_ERROR_HANDLER } from "../constants.js";
|
||||
import { globalContexts } from "../context.js";
|
||||
import { setInternalTagFlag } from "./utils.js";
|
||||
var createContextProviderFunction = (values) => ({ value, children }) => {
|
||||
if (!children) {
|
||||
return void 0;
|
||||
}
|
||||
const props = {
|
||||
children: [
|
||||
{
|
||||
tag: setInternalTagFlag(() => {
|
||||
values.push(value);
|
||||
}),
|
||||
props: {}
|
||||
}
|
||||
]
|
||||
};
|
||||
if (Array.isArray(children)) {
|
||||
props.children.push(...children.flat());
|
||||
} else {
|
||||
props.children.push(children);
|
||||
}
|
||||
props.children.push({
|
||||
tag: setInternalTagFlag(() => {
|
||||
values.pop();
|
||||
}),
|
||||
props: {}
|
||||
});
|
||||
const res = { tag: "", props, type: "" };
|
||||
res[DOM_ERROR_HANDLER] = (err) => {
|
||||
values.pop();
|
||||
throw err;
|
||||
};
|
||||
return res;
|
||||
};
|
||||
var createContext = (defaultValue) => {
|
||||
const values = [defaultValue];
|
||||
const context = createContextProviderFunction(values);
|
||||
context.values = values;
|
||||
context.Provider = context;
|
||||
globalContexts.push(context);
|
||||
return context;
|
||||
};
|
||||
export {
|
||||
createContext,
|
||||
createContextProviderFunction
|
||||
};
|
||||
143
_node_modules/hono/dist/jsx/dom/css.js
generated
vendored
Normal file
143
_node_modules/hono/dist/jsx/dom/css.js
generated
vendored
Normal file
@@ -0,0 +1,143 @@
|
||||
// src/jsx/dom/css.ts
|
||||
import {
|
||||
CLASS_NAME,
|
||||
DEFAULT_STYLE_ID,
|
||||
PSEUDO_GLOBAL_SELECTOR,
|
||||
SELECTOR,
|
||||
SELECTORS,
|
||||
STYLE_STRING,
|
||||
cssCommon,
|
||||
cxCommon,
|
||||
keyframesCommon,
|
||||
viewTransitionCommon
|
||||
} from "../../helper/css/common.js";
|
||||
import { rawCssString } from "../../helper/css/common.js";
|
||||
var splitRule = (rule) => {
|
||||
const result = [];
|
||||
let startPos = 0;
|
||||
let depth = 0;
|
||||
for (let i = 0, len = rule.length; i < len; i++) {
|
||||
const char = rule[i];
|
||||
if (char === "'" || char === '"') {
|
||||
const quote = char;
|
||||
i++;
|
||||
for (; i < len; i++) {
|
||||
if (rule[i] === "\\") {
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
if (rule[i] === quote) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (char === "{") {
|
||||
depth++;
|
||||
continue;
|
||||
}
|
||||
if (char === "}") {
|
||||
depth--;
|
||||
if (depth === 0) {
|
||||
result.push(rule.slice(startPos, i + 1));
|
||||
startPos = i + 1;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
};
|
||||
var createCssJsxDomObjects = ({ id }) => {
|
||||
let styleSheet = void 0;
|
||||
const findStyleSheet = () => {
|
||||
if (!styleSheet) {
|
||||
styleSheet = document.querySelector(`style#${id}`)?.sheet;
|
||||
if (styleSheet) {
|
||||
;
|
||||
styleSheet.addedStyles = /* @__PURE__ */ new Set();
|
||||
}
|
||||
}
|
||||
return styleSheet ? [styleSheet, styleSheet.addedStyles] : [];
|
||||
};
|
||||
const insertRule = (className, styleString) => {
|
||||
const [sheet, addedStyles] = findStyleSheet();
|
||||
if (!sheet || !addedStyles) {
|
||||
Promise.resolve().then(() => {
|
||||
if (!findStyleSheet()[0]) {
|
||||
throw new Error("style sheet not found");
|
||||
}
|
||||
insertRule(className, styleString);
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (!addedStyles.has(className)) {
|
||||
addedStyles.add(className);
|
||||
(className.startsWith(PSEUDO_GLOBAL_SELECTOR) ? splitRule(styleString) : [`${className[0] === "@" ? "" : "."}${className}{${styleString}}`]).forEach((rule) => {
|
||||
sheet.insertRule(rule, sheet.cssRules.length);
|
||||
});
|
||||
}
|
||||
};
|
||||
const cssObject = {
|
||||
toString() {
|
||||
const selector = this[SELECTOR];
|
||||
insertRule(selector, this[STYLE_STRING]);
|
||||
this[SELECTORS].forEach(({ [CLASS_NAME]: className, [STYLE_STRING]: styleString }) => {
|
||||
insertRule(className, styleString);
|
||||
});
|
||||
return this[CLASS_NAME];
|
||||
}
|
||||
};
|
||||
const Style2 = ({ children, nonce }) => ({
|
||||
tag: "style",
|
||||
props: {
|
||||
id,
|
||||
nonce,
|
||||
children: children && (Array.isArray(children) ? children : [children]).map(
|
||||
(c) => c[STYLE_STRING]
|
||||
)
|
||||
}
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
});
|
||||
return [cssObject, Style2];
|
||||
};
|
||||
var createCssContext = ({ id }) => {
|
||||
const [cssObject, Style2] = createCssJsxDomObjects({ id });
|
||||
const newCssClassNameObject = (cssClassName) => {
|
||||
cssClassName.toString = cssObject.toString;
|
||||
return cssClassName;
|
||||
};
|
||||
const css2 = (strings, ...values) => {
|
||||
return newCssClassNameObject(cssCommon(strings, values));
|
||||
};
|
||||
const cx2 = (...args) => {
|
||||
args = cxCommon(args);
|
||||
return css2(Array(args.length).fill(""), ...args);
|
||||
};
|
||||
const keyframes2 = keyframesCommon;
|
||||
const viewTransition2 = ((strings, ...values) => {
|
||||
return newCssClassNameObject(viewTransitionCommon(strings, values));
|
||||
});
|
||||
return {
|
||||
css: css2,
|
||||
cx: cx2,
|
||||
keyframes: keyframes2,
|
||||
viewTransition: viewTransition2,
|
||||
Style: Style2
|
||||
};
|
||||
};
|
||||
var defaultContext = createCssContext({ id: DEFAULT_STYLE_ID });
|
||||
var css = defaultContext.css;
|
||||
var cx = defaultContext.cx;
|
||||
var keyframes = defaultContext.keyframes;
|
||||
var viewTransition = defaultContext.viewTransition;
|
||||
var Style = defaultContext.Style;
|
||||
export {
|
||||
Style,
|
||||
createCssContext,
|
||||
createCssJsxDomObjects,
|
||||
css,
|
||||
cx,
|
||||
keyframes,
|
||||
rawCssString,
|
||||
viewTransition
|
||||
};
|
||||
48
_node_modules/hono/dist/jsx/dom/hooks/index.js
generated
vendored
Normal file
48
_node_modules/hono/dist/jsx/dom/hooks/index.js
generated
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
// src/jsx/dom/hooks/index.ts
|
||||
import { PERMALINK } from "../../constants.js";
|
||||
import { useContext } from "../../context.js";
|
||||
import { useCallback, useState } from "../../hooks/index.js";
|
||||
import { createContext } from "../context.js";
|
||||
var FormContext = createContext({
|
||||
pending: false,
|
||||
data: null,
|
||||
method: null,
|
||||
action: null
|
||||
});
|
||||
var actions = /* @__PURE__ */ new Set();
|
||||
var registerAction = (action) => {
|
||||
actions.add(action);
|
||||
action.finally(() => actions.delete(action));
|
||||
};
|
||||
var useFormStatus = () => {
|
||||
return useContext(FormContext);
|
||||
};
|
||||
var useOptimistic = (state, updateState) => {
|
||||
const [optimisticState, setOptimisticState] = useState(state);
|
||||
if (actions.size > 0) {
|
||||
Promise.all(actions).finally(() => {
|
||||
setOptimisticState(state);
|
||||
});
|
||||
} else {
|
||||
setOptimisticState(state);
|
||||
}
|
||||
const cb = useCallback((newData) => {
|
||||
setOptimisticState((currentState) => updateState(currentState, newData));
|
||||
}, []);
|
||||
return [optimisticState, cb];
|
||||
};
|
||||
var useActionState = (fn, initialState, permalink) => {
|
||||
const [state, setState] = useState(initialState);
|
||||
const actionState = async (data) => {
|
||||
setState(await fn(state, data));
|
||||
};
|
||||
actionState[PERMALINK] = permalink;
|
||||
return [state, actionState];
|
||||
};
|
||||
export {
|
||||
FormContext,
|
||||
registerAction,
|
||||
useActionState,
|
||||
useFormStatus,
|
||||
useOptimistic
|
||||
};
|
||||
142
_node_modules/hono/dist/jsx/dom/index.js
generated
vendored
Normal file
142
_node_modules/hono/dist/jsx/dom/index.js
generated
vendored
Normal file
@@ -0,0 +1,142 @@
|
||||
// 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
|
||||
};
|
||||
337
_node_modules/hono/dist/jsx/dom/intrinsic-element/components.js
generated
vendored
Normal file
337
_node_modules/hono/dist/jsx/dom/intrinsic-element/components.js
generated
vendored
Normal file
@@ -0,0 +1,337 @@
|
||||
// src/jsx/dom/intrinsic-element/components.ts
|
||||
import { useContext } from "../../context.js";
|
||||
import { use, useCallback, useMemo, useState } from "../../hooks/index.js";
|
||||
import { dataPrecedenceAttr, deDupeKeyMap, domRenderers } from "../../intrinsic-element/common.js";
|
||||
import { FormContext, registerAction } from "../hooks/index.js";
|
||||
import { createPortal, getNameSpaceContext } from "../render.js";
|
||||
var clearCache = () => {
|
||||
blockingPromiseMap = /* @__PURE__ */ Object.create(null);
|
||||
createdElements = /* @__PURE__ */ Object.create(null);
|
||||
};
|
||||
var composeRef = (ref, cb) => {
|
||||
return useMemo(
|
||||
() => (e) => {
|
||||
let refCleanup;
|
||||
if (ref) {
|
||||
if (typeof ref === "function") {
|
||||
refCleanup = ref(e) || (() => {
|
||||
ref(null);
|
||||
});
|
||||
} else if (ref && "current" in ref) {
|
||||
ref.current = e;
|
||||
refCleanup = () => {
|
||||
ref.current = null;
|
||||
};
|
||||
}
|
||||
}
|
||||
const cbCleanup = cb(e);
|
||||
return () => {
|
||||
cbCleanup?.();
|
||||
refCleanup?.();
|
||||
};
|
||||
},
|
||||
[ref]
|
||||
);
|
||||
};
|
||||
var blockingPromiseMap = /* @__PURE__ */ Object.create(null);
|
||||
var createdElements = /* @__PURE__ */ Object.create(null);
|
||||
var documentMetadataTag = (tag, props, preserveNodeType, supportSort, supportBlocking) => {
|
||||
if (props?.itemProp) {
|
||||
return {
|
||||
tag,
|
||||
props,
|
||||
type: tag,
|
||||
ref: props.ref
|
||||
};
|
||||
}
|
||||
const head = document.head;
|
||||
let { onLoad, onError, precedence, blocking, ...restProps } = props;
|
||||
let element = null;
|
||||
let created = false;
|
||||
const deDupeKeys = deDupeKeyMap[tag];
|
||||
let existingElements = void 0;
|
||||
if (deDupeKeys.length > 0) {
|
||||
const tags = head.querySelectorAll(tag);
|
||||
LOOP: for (const e of tags) {
|
||||
for (const key of deDupeKeyMap[tag]) {
|
||||
if (e.getAttribute(key) === props[key]) {
|
||||
element = e;
|
||||
break LOOP;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!element) {
|
||||
const cacheKey = deDupeKeys.reduce(
|
||||
(acc, key) => props[key] === void 0 ? acc : `${acc}-${key}-${props[key]}`,
|
||||
tag
|
||||
);
|
||||
created = !createdElements[cacheKey];
|
||||
element = createdElements[cacheKey] ||= (() => {
|
||||
const e = document.createElement(tag);
|
||||
for (const key of deDupeKeys) {
|
||||
if (props[key] !== void 0) {
|
||||
e.setAttribute(key, props[key]);
|
||||
}
|
||||
if (props.rel) {
|
||||
e.setAttribute("rel", props.rel);
|
||||
}
|
||||
}
|
||||
return e;
|
||||
})();
|
||||
}
|
||||
} else {
|
||||
existingElements = head.querySelectorAll(tag);
|
||||
}
|
||||
precedence = supportSort ? precedence ?? "" : void 0;
|
||||
if (supportSort) {
|
||||
restProps[dataPrecedenceAttr] = precedence;
|
||||
}
|
||||
const insert = useCallback(
|
||||
(e) => {
|
||||
if (deDupeKeys.length > 0) {
|
||||
let found = false;
|
||||
for (const existingElement of head.querySelectorAll(tag)) {
|
||||
if (found && existingElement.getAttribute(dataPrecedenceAttr) !== precedence) {
|
||||
head.insertBefore(e, existingElement);
|
||||
return;
|
||||
}
|
||||
if (existingElement.getAttribute(dataPrecedenceAttr) === precedence) {
|
||||
found = true;
|
||||
}
|
||||
}
|
||||
head.appendChild(e);
|
||||
} else if (existingElements) {
|
||||
let found = false;
|
||||
for (const existingElement of existingElements) {
|
||||
if (existingElement === e) {
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found) {
|
||||
head.insertBefore(
|
||||
e,
|
||||
head.contains(existingElements[0]) ? existingElements[0] : head.querySelector(tag)
|
||||
);
|
||||
}
|
||||
existingElements = void 0;
|
||||
}
|
||||
},
|
||||
[precedence]
|
||||
);
|
||||
const ref = composeRef(props.ref, (e) => {
|
||||
const key = deDupeKeys[0];
|
||||
if (preserveNodeType === 2) {
|
||||
e.innerHTML = "";
|
||||
}
|
||||
if (created || existingElements) {
|
||||
insert(e);
|
||||
}
|
||||
if (!onError && !onLoad) {
|
||||
return;
|
||||
}
|
||||
let promise = blockingPromiseMap[e.getAttribute(key)] ||= new Promise(
|
||||
(resolve, reject) => {
|
||||
e.addEventListener("load", resolve);
|
||||
e.addEventListener("error", reject);
|
||||
}
|
||||
);
|
||||
if (onLoad) {
|
||||
promise = promise.then(onLoad);
|
||||
}
|
||||
if (onError) {
|
||||
promise = promise.catch(onError);
|
||||
}
|
||||
promise.catch(() => {
|
||||
});
|
||||
});
|
||||
if (supportBlocking && blocking === "render") {
|
||||
const key = deDupeKeyMap[tag][0];
|
||||
if (props[key]) {
|
||||
const value = props[key];
|
||||
const promise = blockingPromiseMap[value] ||= new Promise((resolve, reject) => {
|
||||
insert(element);
|
||||
element.addEventListener("load", resolve);
|
||||
element.addEventListener("error", reject);
|
||||
});
|
||||
use(promise);
|
||||
}
|
||||
}
|
||||
const jsxNode = {
|
||||
tag,
|
||||
type: tag,
|
||||
props: {
|
||||
...restProps,
|
||||
ref
|
||||
},
|
||||
ref
|
||||
};
|
||||
jsxNode.p = preserveNodeType;
|
||||
if (element) {
|
||||
jsxNode.e = element;
|
||||
}
|
||||
return createPortal(
|
||||
jsxNode,
|
||||
head
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
);
|
||||
};
|
||||
var title = (props) => {
|
||||
const nameSpaceContext = getNameSpaceContext();
|
||||
const ns = nameSpaceContext && useContext(nameSpaceContext);
|
||||
if (ns?.endsWith("svg")) {
|
||||
return {
|
||||
tag: "title",
|
||||
props,
|
||||
type: "title",
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
ref: props.ref
|
||||
};
|
||||
}
|
||||
return documentMetadataTag("title", props, void 0, false, false);
|
||||
};
|
||||
var script = (props) => {
|
||||
if (!props || ["src", "async"].some((k) => !props[k])) {
|
||||
return {
|
||||
tag: "script",
|
||||
props,
|
||||
type: "script",
|
||||
ref: props.ref
|
||||
};
|
||||
}
|
||||
return documentMetadataTag("script", props, 1, false, true);
|
||||
};
|
||||
var style = (props) => {
|
||||
if (!props || !["href", "precedence"].every((k) => k in props)) {
|
||||
return {
|
||||
tag: "style",
|
||||
props,
|
||||
type: "style",
|
||||
ref: props.ref
|
||||
};
|
||||
}
|
||||
props["data-href"] = props.href;
|
||||
delete props.href;
|
||||
return documentMetadataTag("style", props, 2, true, true);
|
||||
};
|
||||
var link = (props) => {
|
||||
if (!props || ["onLoad", "onError"].some((k) => k in props) || props.rel === "stylesheet" && (!("precedence" in props) || "disabled" in props)) {
|
||||
return {
|
||||
tag: "link",
|
||||
props,
|
||||
type: "link",
|
||||
ref: props.ref
|
||||
};
|
||||
}
|
||||
return documentMetadataTag("link", props, 1, "precedence" in props, true);
|
||||
};
|
||||
var meta = (props) => {
|
||||
return documentMetadataTag("meta", props, void 0, false, false);
|
||||
};
|
||||
var customEventFormAction = /* @__PURE__ */ Symbol();
|
||||
var form = (props) => {
|
||||
const { action, ...restProps } = props;
|
||||
if (typeof action !== "function") {
|
||||
;
|
||||
restProps.action = action;
|
||||
}
|
||||
const [state, setState] = useState([null, false]);
|
||||
const onSubmit = useCallback(
|
||||
async (ev) => {
|
||||
const currentAction = ev.isTrusted ? action : ev.detail[customEventFormAction];
|
||||
if (typeof currentAction !== "function") {
|
||||
return;
|
||||
}
|
||||
ev.preventDefault();
|
||||
const formData = new FormData(ev.target);
|
||||
setState([formData, true]);
|
||||
const actionRes = currentAction(formData);
|
||||
if (actionRes instanceof Promise) {
|
||||
registerAction(actionRes);
|
||||
await actionRes;
|
||||
}
|
||||
setState([null, true]);
|
||||
},
|
||||
[]
|
||||
);
|
||||
const ref = composeRef(props.ref, (el) => {
|
||||
el.addEventListener("submit", onSubmit);
|
||||
return () => {
|
||||
el.removeEventListener("submit", onSubmit);
|
||||
};
|
||||
});
|
||||
const [data, isDirty] = state;
|
||||
state[1] = false;
|
||||
return {
|
||||
tag: FormContext,
|
||||
props: {
|
||||
value: {
|
||||
pending: data !== null,
|
||||
data,
|
||||
method: data ? "post" : null,
|
||||
action: data ? action : null
|
||||
},
|
||||
children: {
|
||||
tag: "form",
|
||||
props: {
|
||||
...restProps,
|
||||
ref
|
||||
},
|
||||
type: "form",
|
||||
ref
|
||||
}
|
||||
},
|
||||
f: isDirty
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
};
|
||||
};
|
||||
var formActionableElement = (tag, {
|
||||
formAction,
|
||||
...props
|
||||
}) => {
|
||||
if (typeof formAction === "function") {
|
||||
const onClick = useCallback((ev) => {
|
||||
ev.preventDefault();
|
||||
ev.currentTarget.form.dispatchEvent(
|
||||
new CustomEvent("submit", { detail: { [customEventFormAction]: formAction } })
|
||||
);
|
||||
}, []);
|
||||
props.ref = composeRef(props.ref, (el) => {
|
||||
el.addEventListener("click", onClick);
|
||||
return () => {
|
||||
el.removeEventListener("click", onClick);
|
||||
};
|
||||
});
|
||||
}
|
||||
return {
|
||||
tag,
|
||||
props,
|
||||
type: tag,
|
||||
ref: props.ref
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
};
|
||||
};
|
||||
var input = (props) => formActionableElement("input", props);
|
||||
var button = (props) => formActionableElement("button", props);
|
||||
Object.assign(domRenderers, {
|
||||
title,
|
||||
script,
|
||||
style,
|
||||
link,
|
||||
meta,
|
||||
form,
|
||||
input,
|
||||
button
|
||||
});
|
||||
export {
|
||||
button,
|
||||
clearCache,
|
||||
composeRef,
|
||||
form,
|
||||
input,
|
||||
link,
|
||||
meta,
|
||||
script,
|
||||
style,
|
||||
title
|
||||
};
|
||||
19
_node_modules/hono/dist/jsx/dom/jsx-dev-runtime.js
generated
vendored
Normal file
19
_node_modules/hono/dist/jsx/dom/jsx-dev-runtime.js
generated
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
// src/jsx/dom/jsx-dev-runtime.ts
|
||||
import * as intrinsicElementTags from "./intrinsic-element/components.js";
|
||||
var jsxDEV = (tag, props, key) => {
|
||||
if (typeof tag === "string" && intrinsicElementTags[tag]) {
|
||||
tag = intrinsicElementTags[tag];
|
||||
}
|
||||
return {
|
||||
tag,
|
||||
type: tag,
|
||||
props,
|
||||
key,
|
||||
ref: props.ref
|
||||
};
|
||||
};
|
||||
var Fragment = (props) => jsxDEV("", props, void 0);
|
||||
export {
|
||||
Fragment,
|
||||
jsxDEV
|
||||
};
|
||||
8
_node_modules/hono/dist/jsx/dom/jsx-runtime.js
generated
vendored
Normal file
8
_node_modules/hono/dist/jsx/dom/jsx-runtime.js
generated
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
// src/jsx/dom/jsx-runtime.ts
|
||||
import { jsxDEV, Fragment } from "./jsx-dev-runtime.js";
|
||||
import { jsxDEV as jsxDEV2 } from "./jsx-dev-runtime.js";
|
||||
export {
|
||||
Fragment,
|
||||
jsxDEV as jsx,
|
||||
jsxDEV2 as jsxs
|
||||
};
|
||||
597
_node_modules/hono/dist/jsx/dom/render.js
generated
vendored
Normal file
597
_node_modules/hono/dist/jsx/dom/render.js
generated
vendored
Normal file
@@ -0,0 +1,597 @@
|
||||
// src/jsx/dom/render.ts
|
||||
import { toArray } from "../children.js";
|
||||
import {
|
||||
DOM_ERROR_HANDLER,
|
||||
DOM_INTERNAL_TAG,
|
||||
DOM_MEMO,
|
||||
DOM_RENDERER,
|
||||
DOM_STASH
|
||||
} from "../constants.js";
|
||||
import { globalContexts as globalJSXContexts, useContext } from "../context.js";
|
||||
import { STASH_EFFECT } from "../hooks/index.js";
|
||||
import { normalizeIntrinsicElementKey, styleObjectForEach } from "../utils.js";
|
||||
import { createContext } from "./context.js";
|
||||
var HONO_PORTAL_ELEMENT = "_hp";
|
||||
var eventAliasMap = {
|
||||
Change: "Input",
|
||||
DoubleClick: "DblClick"
|
||||
};
|
||||
var nameSpaceMap = {
|
||||
svg: "2000/svg",
|
||||
math: "1998/Math/MathML"
|
||||
};
|
||||
var buildDataStack = [];
|
||||
var refCleanupMap = /* @__PURE__ */ new WeakMap();
|
||||
var nameSpaceContext = void 0;
|
||||
var getNameSpaceContext = () => nameSpaceContext;
|
||||
var isNodeString = (node) => "t" in node;
|
||||
var eventCache = {
|
||||
// pre-define events that are used very frequently
|
||||
onClick: ["click", false]
|
||||
};
|
||||
var getEventSpec = (key) => {
|
||||
if (!key.startsWith("on")) {
|
||||
return void 0;
|
||||
}
|
||||
if (eventCache[key]) {
|
||||
return eventCache[key];
|
||||
}
|
||||
const match = key.match(/^on([A-Z][a-zA-Z]+?(?:PointerCapture)?)(Capture)?$/);
|
||||
if (match) {
|
||||
const [, eventName, capture] = match;
|
||||
return eventCache[key] = [(eventAliasMap[eventName] || eventName).toLowerCase(), !!capture];
|
||||
}
|
||||
return void 0;
|
||||
};
|
||||
var toAttributeName = (element, key) => nameSpaceContext && element instanceof SVGElement && /[A-Z]/.test(key) && (key in element.style || // Presentation attributes are findable in style object. "clip-path", "font-size", "stroke-width", etc.
|
||||
key.match(/^(?:o|pai|str|u|ve)/)) ? key.replace(/([A-Z])/g, "-$1").toLowerCase() : key;
|
||||
var applyProps = (container, attributes, oldAttributes) => {
|
||||
attributes ||= {};
|
||||
for (let key in attributes) {
|
||||
const value = attributes[key];
|
||||
if (key !== "children" && (!oldAttributes || oldAttributes[key] !== value)) {
|
||||
key = normalizeIntrinsicElementKey(key);
|
||||
const eventSpec = getEventSpec(key);
|
||||
if (eventSpec) {
|
||||
if (oldAttributes?.[key] !== value) {
|
||||
if (oldAttributes) {
|
||||
container.removeEventListener(eventSpec[0], oldAttributes[key], eventSpec[1]);
|
||||
}
|
||||
if (value != null) {
|
||||
if (typeof value !== "function") {
|
||||
throw new Error(`Event handler for "${key}" is not a function`);
|
||||
}
|
||||
container.addEventListener(eventSpec[0], value, eventSpec[1]);
|
||||
}
|
||||
}
|
||||
} else if (key === "dangerouslySetInnerHTML" && value) {
|
||||
container.innerHTML = value.__html;
|
||||
} else if (key === "ref") {
|
||||
let cleanup;
|
||||
if (typeof value === "function") {
|
||||
cleanup = value(container) || (() => value(null));
|
||||
} else if (value && "current" in value) {
|
||||
value.current = container;
|
||||
cleanup = () => value.current = null;
|
||||
}
|
||||
refCleanupMap.set(container, cleanup);
|
||||
} else if (key === "style") {
|
||||
const style = container.style;
|
||||
if (typeof value === "string") {
|
||||
style.cssText = value;
|
||||
} else {
|
||||
style.cssText = "";
|
||||
if (value != null) {
|
||||
styleObjectForEach(value, style.setProperty.bind(style));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (key === "value") {
|
||||
const nodeName = container.nodeName;
|
||||
if (nodeName === "INPUT" || nodeName === "TEXTAREA" || nodeName === "SELECT") {
|
||||
;
|
||||
container.value = value === null || value === void 0 || value === false ? null : value;
|
||||
if (nodeName === "TEXTAREA") {
|
||||
container.textContent = value;
|
||||
continue;
|
||||
} else if (nodeName === "SELECT") {
|
||||
if (container.selectedIndex === -1) {
|
||||
;
|
||||
container.selectedIndex = 0;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
}
|
||||
} else if (key === "checked" && container.nodeName === "INPUT" || key === "selected" && container.nodeName === "OPTION") {
|
||||
;
|
||||
container[key] = value;
|
||||
}
|
||||
const k = toAttributeName(container, key);
|
||||
if (value === null || value === void 0 || value === false) {
|
||||
container.removeAttribute(k);
|
||||
} else if (value === true) {
|
||||
container.setAttribute(k, "");
|
||||
} else if (typeof value === "string" || typeof value === "number") {
|
||||
container.setAttribute(k, value);
|
||||
} else {
|
||||
container.setAttribute(k, value.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (oldAttributes) {
|
||||
for (let key in oldAttributes) {
|
||||
const value = oldAttributes[key];
|
||||
if (key !== "children" && !(key in attributes)) {
|
||||
key = normalizeIntrinsicElementKey(key);
|
||||
const eventSpec = getEventSpec(key);
|
||||
if (eventSpec) {
|
||||
container.removeEventListener(eventSpec[0], value, eventSpec[1]);
|
||||
} else if (key === "ref") {
|
||||
refCleanupMap.get(container)?.();
|
||||
} else {
|
||||
container.removeAttribute(toAttributeName(container, key));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
var invokeTag = (context, node) => {
|
||||
node[DOM_STASH][0] = 0;
|
||||
buildDataStack.push([context, node]);
|
||||
const func = node.tag[DOM_RENDERER] || node.tag;
|
||||
const props = func.defaultProps ? {
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
...func.defaultProps,
|
||||
...node.props
|
||||
} : node.props;
|
||||
try {
|
||||
return [func.call(null, props)];
|
||||
} finally {
|
||||
buildDataStack.pop();
|
||||
}
|
||||
};
|
||||
var getNextChildren = (node, container, nextChildren, childrenToRemove, callbacks) => {
|
||||
if (node.vR?.length) {
|
||||
childrenToRemove.push(...node.vR);
|
||||
delete node.vR;
|
||||
}
|
||||
if (typeof node.tag === "function") {
|
||||
node[DOM_STASH][1][STASH_EFFECT]?.forEach((data) => callbacks.push(data));
|
||||
}
|
||||
node.vC.forEach((child) => {
|
||||
if (isNodeString(child)) {
|
||||
nextChildren.push(child);
|
||||
} else {
|
||||
if (typeof child.tag === "function" || child.tag === "") {
|
||||
child.c = container;
|
||||
const currentNextChildrenIndex = nextChildren.length;
|
||||
getNextChildren(child, container, nextChildren, childrenToRemove, callbacks);
|
||||
if (child.s) {
|
||||
for (let i = currentNextChildrenIndex; i < nextChildren.length; i++) {
|
||||
nextChildren[i].s = true;
|
||||
}
|
||||
child.s = false;
|
||||
}
|
||||
} else {
|
||||
nextChildren.push(child);
|
||||
if (child.vR?.length) {
|
||||
childrenToRemove.push(...child.vR);
|
||||
delete child.vR;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
var findInsertBefore = (node) => {
|
||||
for (; ; node = node.tag === HONO_PORTAL_ELEMENT || !node.vC || !node.pP ? node.nN : node.vC[0]) {
|
||||
if (!node) {
|
||||
return null;
|
||||
}
|
||||
if (node.tag !== HONO_PORTAL_ELEMENT && node.e) {
|
||||
return node.e;
|
||||
}
|
||||
}
|
||||
};
|
||||
var removeNode = (node) => {
|
||||
if (!isNodeString(node)) {
|
||||
node[DOM_STASH]?.[1][STASH_EFFECT]?.forEach((data) => data[2]?.());
|
||||
refCleanupMap.get(node.e)?.();
|
||||
if (node.p === 2) {
|
||||
node.vC?.forEach((n) => n.p = 2);
|
||||
}
|
||||
node.vC?.forEach(removeNode);
|
||||
}
|
||||
if (!node.p) {
|
||||
node.e?.remove();
|
||||
delete node.e;
|
||||
}
|
||||
if (typeof node.tag === "function") {
|
||||
updateMap.delete(node);
|
||||
fallbackUpdateFnArrayMap.delete(node);
|
||||
delete node[DOM_STASH][3];
|
||||
node.a = true;
|
||||
}
|
||||
};
|
||||
var apply = (node, container, isNew) => {
|
||||
node.c = container;
|
||||
applyNodeObject(node, container, isNew);
|
||||
};
|
||||
var findChildNodeIndex = (childNodes, child) => {
|
||||
if (!child) {
|
||||
return;
|
||||
}
|
||||
for (let i = 0, len = childNodes.length; i < len; i++) {
|
||||
if (childNodes[i] === child) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return;
|
||||
};
|
||||
var cancelBuild = /* @__PURE__ */ Symbol();
|
||||
var applyNodeObject = (node, container, isNew) => {
|
||||
const next = [];
|
||||
const remove = [];
|
||||
const callbacks = [];
|
||||
getNextChildren(node, container, next, remove, callbacks);
|
||||
remove.forEach(removeNode);
|
||||
const childNodes = isNew ? void 0 : container.childNodes;
|
||||
let offset;
|
||||
let insertBeforeNode = null;
|
||||
if (isNew) {
|
||||
offset = -1;
|
||||
} else if (!childNodes.length) {
|
||||
offset = 0;
|
||||
} else {
|
||||
const offsetByNextNode = findChildNodeIndex(childNodes, findInsertBefore(node.nN));
|
||||
if (offsetByNextNode !== void 0) {
|
||||
insertBeforeNode = childNodes[offsetByNextNode];
|
||||
offset = offsetByNextNode;
|
||||
} else {
|
||||
offset = findChildNodeIndex(childNodes, next.find((n) => n.tag !== HONO_PORTAL_ELEMENT && n.e)?.e) ?? -1;
|
||||
}
|
||||
if (offset === -1) {
|
||||
isNew = true;
|
||||
}
|
||||
}
|
||||
for (let i = 0, len = next.length; i < len; i++, offset++) {
|
||||
const child = next[i];
|
||||
let el;
|
||||
if (child.s && child.e) {
|
||||
el = child.e;
|
||||
child.s = false;
|
||||
} else {
|
||||
const isNewLocal = isNew || !child.e;
|
||||
if (isNodeString(child)) {
|
||||
if (child.e && child.d) {
|
||||
child.e.textContent = child.t;
|
||||
}
|
||||
child.d = false;
|
||||
el = child.e ||= document.createTextNode(child.t);
|
||||
} else {
|
||||
el = child.e ||= child.n ? document.createElementNS(child.n, child.tag) : document.createElement(child.tag);
|
||||
applyProps(el, child.props, child.pP);
|
||||
applyNodeObject(child, el, isNewLocal);
|
||||
}
|
||||
}
|
||||
if (child.tag === HONO_PORTAL_ELEMENT) {
|
||||
offset--;
|
||||
} else if (isNew) {
|
||||
if (!el.parentNode) {
|
||||
container.appendChild(el);
|
||||
}
|
||||
} else if (childNodes[offset] !== el && childNodes[offset - 1] !== el) {
|
||||
if (childNodes[offset + 1] === el) {
|
||||
container.appendChild(childNodes[offset]);
|
||||
} else {
|
||||
container.insertBefore(el, insertBeforeNode || childNodes[offset] || null);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (node.pP) {
|
||||
delete node.pP;
|
||||
}
|
||||
if (callbacks.length) {
|
||||
const useLayoutEffectCbs = [];
|
||||
const useEffectCbs = [];
|
||||
callbacks.forEach(([, useLayoutEffectCb, , useEffectCb, useInsertionEffectCb]) => {
|
||||
if (useLayoutEffectCb) {
|
||||
useLayoutEffectCbs.push(useLayoutEffectCb);
|
||||
}
|
||||
if (useEffectCb) {
|
||||
useEffectCbs.push(useEffectCb);
|
||||
}
|
||||
useInsertionEffectCb?.();
|
||||
});
|
||||
useLayoutEffectCbs.forEach((cb) => cb());
|
||||
if (useEffectCbs.length) {
|
||||
requestAnimationFrame(() => {
|
||||
useEffectCbs.forEach((cb) => cb());
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
var isSameContext = (oldContexts, newContexts) => !!(oldContexts && oldContexts.length === newContexts.length && oldContexts.every((ctx, i) => ctx[1] === newContexts[i][1]));
|
||||
var fallbackUpdateFnArrayMap = /* @__PURE__ */ new WeakMap();
|
||||
var build = (context, node, children) => {
|
||||
const buildWithPreviousChildren = !children && node.pC;
|
||||
if (children) {
|
||||
node.pC ||= node.vC;
|
||||
}
|
||||
let foundErrorHandler;
|
||||
try {
|
||||
children ||= typeof node.tag == "function" ? invokeTag(context, node) : toArray(node.props.children);
|
||||
if (children[0]?.tag === "" && children[0][DOM_ERROR_HANDLER]) {
|
||||
foundErrorHandler = children[0][DOM_ERROR_HANDLER];
|
||||
context[5].push([context, foundErrorHandler, node]);
|
||||
}
|
||||
const oldVChildren = buildWithPreviousChildren ? [...node.pC] : node.vC ? [...node.vC] : void 0;
|
||||
const vChildren = [];
|
||||
let prevNode;
|
||||
for (let i = 0; i < children.length; i++) {
|
||||
if (Array.isArray(children[i])) {
|
||||
children.splice(i, 1, ...children[i].flat());
|
||||
}
|
||||
let child = buildNode(children[i]);
|
||||
if (child) {
|
||||
if (typeof child.tag === "function" && // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
!child.tag[DOM_INTERNAL_TAG]) {
|
||||
if (globalJSXContexts.length > 0) {
|
||||
child[DOM_STASH][2] = globalJSXContexts.map((c) => [c, c.values.at(-1)]);
|
||||
}
|
||||
if (context[5]?.length) {
|
||||
child[DOM_STASH][3] = context[5].at(-1);
|
||||
}
|
||||
}
|
||||
let oldChild;
|
||||
if (oldVChildren && oldVChildren.length) {
|
||||
const i2 = oldVChildren.findIndex(
|
||||
isNodeString(child) ? (c) => isNodeString(c) : child.key !== void 0 ? (c) => c.key === child.key && c.tag === child.tag : (c) => c.tag === child.tag
|
||||
);
|
||||
if (i2 !== -1) {
|
||||
oldChild = oldVChildren[i2];
|
||||
oldVChildren.splice(i2, 1);
|
||||
}
|
||||
}
|
||||
if (oldChild) {
|
||||
if (isNodeString(child)) {
|
||||
if (oldChild.t !== child.t) {
|
||||
;
|
||||
oldChild.t = child.t;
|
||||
oldChild.d = true;
|
||||
}
|
||||
child = oldChild;
|
||||
} else {
|
||||
const pP = oldChild.pP = oldChild.props;
|
||||
oldChild.props = child.props;
|
||||
oldChild.f ||= child.f || node.f;
|
||||
if (typeof child.tag === "function") {
|
||||
const oldContexts = oldChild[DOM_STASH][2];
|
||||
oldChild[DOM_STASH][2] = child[DOM_STASH][2] || [];
|
||||
oldChild[DOM_STASH][3] = child[DOM_STASH][3];
|
||||
if (!oldChild.f && ((oldChild.o || oldChild) === child.o || // The code generated by the react compiler is memoized under this condition.
|
||||
oldChild.tag[DOM_MEMO]?.(pP, oldChild.props)) && // The `memo` function is memoized under this condition.
|
||||
isSameContext(oldContexts, oldChild[DOM_STASH][2])) {
|
||||
oldChild.s = true;
|
||||
}
|
||||
}
|
||||
child = oldChild;
|
||||
}
|
||||
} else if (!isNodeString(child) && nameSpaceContext) {
|
||||
const ns = useContext(nameSpaceContext);
|
||||
if (ns) {
|
||||
child.n = ns;
|
||||
}
|
||||
}
|
||||
if (!isNodeString(child) && !child.s) {
|
||||
build(context, child);
|
||||
delete child.f;
|
||||
}
|
||||
vChildren.push(child);
|
||||
if (prevNode && !prevNode.s && !child.s) {
|
||||
for (let p = prevNode; p && !isNodeString(p); p = p.vC?.at(-1)) {
|
||||
p.nN = child;
|
||||
}
|
||||
}
|
||||
prevNode = child;
|
||||
}
|
||||
}
|
||||
node.vR = buildWithPreviousChildren ? [...node.vC, ...oldVChildren || []] : oldVChildren || [];
|
||||
node.vC = vChildren;
|
||||
if (buildWithPreviousChildren) {
|
||||
delete node.pC;
|
||||
}
|
||||
} catch (e) {
|
||||
node.f = true;
|
||||
if (e === cancelBuild) {
|
||||
if (foundErrorHandler) {
|
||||
return;
|
||||
} else {
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
const [errorHandlerContext, errorHandler, errorHandlerNode] = node[DOM_STASH]?.[3] || [];
|
||||
if (errorHandler) {
|
||||
const fallbackUpdateFn = () => update([0, false, context[2]], errorHandlerNode);
|
||||
const fallbackUpdateFnArray = fallbackUpdateFnArrayMap.get(errorHandlerNode) || [];
|
||||
fallbackUpdateFnArray.push(fallbackUpdateFn);
|
||||
fallbackUpdateFnArrayMap.set(errorHandlerNode, fallbackUpdateFnArray);
|
||||
const fallback = errorHandler(e, () => {
|
||||
const fnArray = fallbackUpdateFnArrayMap.get(errorHandlerNode);
|
||||
if (fnArray) {
|
||||
const i = fnArray.indexOf(fallbackUpdateFn);
|
||||
if (i !== -1) {
|
||||
fnArray.splice(i, 1);
|
||||
return fallbackUpdateFn();
|
||||
}
|
||||
}
|
||||
});
|
||||
if (fallback) {
|
||||
if (context[0] === 1) {
|
||||
context[1] = true;
|
||||
} else {
|
||||
build(context, errorHandlerNode, [fallback]);
|
||||
if ((errorHandler.length === 1 || context !== errorHandlerContext) && errorHandlerNode.c) {
|
||||
apply(errorHandlerNode, errorHandlerNode.c, false);
|
||||
return;
|
||||
}
|
||||
}
|
||||
throw cancelBuild;
|
||||
}
|
||||
}
|
||||
throw e;
|
||||
} finally {
|
||||
if (foundErrorHandler) {
|
||||
context[5].pop();
|
||||
}
|
||||
}
|
||||
};
|
||||
var buildNode = (node) => {
|
||||
if (node === void 0 || node === null || typeof node === "boolean") {
|
||||
return void 0;
|
||||
} else if (typeof node === "string" || typeof node === "number") {
|
||||
return { t: node.toString(), d: true };
|
||||
} else {
|
||||
if ("vR" in node) {
|
||||
node = {
|
||||
tag: node.tag,
|
||||
props: node.props,
|
||||
key: node.key,
|
||||
f: node.f,
|
||||
type: node.tag,
|
||||
ref: node.props.ref,
|
||||
o: node.o || node
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
};
|
||||
}
|
||||
if (typeof node.tag === "function") {
|
||||
;
|
||||
node[DOM_STASH] = [0, []];
|
||||
} else {
|
||||
const ns = nameSpaceMap[node.tag];
|
||||
if (ns) {
|
||||
nameSpaceContext ||= createContext("");
|
||||
node.props.children = [
|
||||
{
|
||||
tag: nameSpaceContext,
|
||||
props: {
|
||||
value: node.n = `http://www.w3.org/${ns}`,
|
||||
children: node.props.children
|
||||
}
|
||||
}
|
||||
];
|
||||
}
|
||||
}
|
||||
return node;
|
||||
}
|
||||
};
|
||||
var replaceContainer = (node, from, to) => {
|
||||
if (node.c === from) {
|
||||
node.c = to;
|
||||
node.vC.forEach((child) => replaceContainer(child, from, to));
|
||||
}
|
||||
};
|
||||
var updateSync = (context, node) => {
|
||||
node[DOM_STASH][2]?.forEach(([c, v]) => {
|
||||
c.values.push(v);
|
||||
});
|
||||
try {
|
||||
build(context, node, void 0);
|
||||
} catch {
|
||||
return;
|
||||
}
|
||||
if (node.a) {
|
||||
delete node.a;
|
||||
return;
|
||||
}
|
||||
node[DOM_STASH][2]?.forEach(([c]) => {
|
||||
c.values.pop();
|
||||
});
|
||||
if (context[0] !== 1 || !context[1]) {
|
||||
apply(node, node.c, false);
|
||||
}
|
||||
};
|
||||
var updateMap = /* @__PURE__ */ new WeakMap();
|
||||
var currentUpdateSets = [];
|
||||
var update = async (context, node) => {
|
||||
context[5] ||= [];
|
||||
const existing = updateMap.get(node);
|
||||
if (existing) {
|
||||
existing[0](void 0);
|
||||
}
|
||||
let resolve;
|
||||
const promise = new Promise((r) => resolve = r);
|
||||
updateMap.set(node, [
|
||||
resolve,
|
||||
() => {
|
||||
if (context[2]) {
|
||||
context[2](context, node, (context2) => {
|
||||
updateSync(context2, node);
|
||||
}).then(() => resolve(node));
|
||||
} else {
|
||||
updateSync(context, node);
|
||||
resolve(node);
|
||||
}
|
||||
}
|
||||
]);
|
||||
if (currentUpdateSets.length) {
|
||||
;
|
||||
currentUpdateSets.at(-1).add(node);
|
||||
} else {
|
||||
await Promise.resolve();
|
||||
const latest = updateMap.get(node);
|
||||
if (latest) {
|
||||
updateMap.delete(node);
|
||||
latest[1]();
|
||||
}
|
||||
}
|
||||
return promise;
|
||||
};
|
||||
var renderNode = (node, container) => {
|
||||
const context = [];
|
||||
context[5] = [];
|
||||
context[4] = true;
|
||||
build(context, node, void 0);
|
||||
context[4] = false;
|
||||
const fragment = document.createDocumentFragment();
|
||||
apply(node, fragment, true);
|
||||
replaceContainer(node, fragment, container);
|
||||
container.replaceChildren(fragment);
|
||||
};
|
||||
var render = (jsxNode, container) => {
|
||||
renderNode(buildNode({ tag: "", props: { children: jsxNode } }), container);
|
||||
};
|
||||
var flushSync = (callback) => {
|
||||
const set = /* @__PURE__ */ new Set();
|
||||
currentUpdateSets.push(set);
|
||||
callback();
|
||||
set.forEach((node) => {
|
||||
const latest = updateMap.get(node);
|
||||
if (latest) {
|
||||
updateMap.delete(node);
|
||||
latest[1]();
|
||||
}
|
||||
});
|
||||
currentUpdateSets.pop();
|
||||
};
|
||||
var createPortal = (children, container, key) => ({
|
||||
tag: HONO_PORTAL_ELEMENT,
|
||||
props: {
|
||||
children
|
||||
},
|
||||
key,
|
||||
e: container,
|
||||
p: 1
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
});
|
||||
export {
|
||||
build,
|
||||
buildDataStack,
|
||||
buildNode,
|
||||
createPortal,
|
||||
flushSync,
|
||||
getNameSpaceContext,
|
||||
render,
|
||||
renderNode,
|
||||
update
|
||||
};
|
||||
33
_node_modules/hono/dist/jsx/dom/server.js
generated
vendored
Normal file
33
_node_modules/hono/dist/jsx/dom/server.js
generated
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
// src/jsx/dom/server.ts
|
||||
import { renderToReadableStream as renderToReadableStreamHono } from "../streaming.js";
|
||||
import version from "./index.js";
|
||||
var renderToString = (element, options = {}) => {
|
||||
if (Object.keys(options).length > 0) {
|
||||
console.warn("options are not supported yet");
|
||||
}
|
||||
const res = element?.toString() ?? "";
|
||||
if (typeof res !== "string") {
|
||||
throw new Error("Async component is not supported in renderToString");
|
||||
}
|
||||
return res;
|
||||
};
|
||||
var renderToReadableStream = async (element, options = {}) => {
|
||||
if (Object.keys(options).some((key) => key !== "onError")) {
|
||||
console.warn("options are not supported yet, except onError");
|
||||
}
|
||||
if (!element || typeof element !== "object") {
|
||||
element = element?.toString() ?? "";
|
||||
}
|
||||
return renderToReadableStreamHono(element, options.onError);
|
||||
};
|
||||
var server_default = {
|
||||
renderToString,
|
||||
renderToReadableStream,
|
||||
version
|
||||
};
|
||||
export {
|
||||
server_default as default,
|
||||
renderToReadableStream,
|
||||
renderToString,
|
||||
version
|
||||
};
|
||||
10
_node_modules/hono/dist/jsx/dom/utils.js
generated
vendored
Normal file
10
_node_modules/hono/dist/jsx/dom/utils.js
generated
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
// src/jsx/dom/utils.ts
|
||||
import { DOM_INTERNAL_TAG } from "../constants.js";
|
||||
var setInternalTagFlag = (fn) => {
|
||||
;
|
||||
fn[DOM_INTERNAL_TAG] = true;
|
||||
return fn;
|
||||
};
|
||||
export {
|
||||
setInternalTagFlag
|
||||
};
|
||||
Reference in New Issue
Block a user