@reckona/mreact-compat 0.0.138 → 0.0.140
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dom-props.d.ts.map +1 -1
- package/dist/dom-props.js +111 -44
- package/dist/dom-props.js.map +1 -1
- package/dist/element.d.ts +3 -0
- package/dist/element.d.ts.map +1 -1
- package/dist/element.js +32 -2
- package/dist/element.js.map +1 -1
- package/dist/event-listeners.d.ts +2 -4
- package/dist/event-listeners.d.ts.map +1 -1
- package/dist/event-listeners.js +2 -1
- package/dist/event-listeners.js.map +1 -1
- package/dist/fiber-child.d.ts.map +1 -1
- package/dist/fiber-child.js +44 -0
- package/dist/fiber-child.js.map +1 -1
- package/dist/fiber-commit.d.ts.map +1 -1
- package/dist/fiber-commit.js +70 -0
- package/dist/fiber-commit.js.map +1 -1
- package/dist/hooks.d.ts +4 -2
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +64 -6
- package/dist/hooks.js.map +1 -1
- package/dist/host-reconciler.d.ts.map +1 -1
- package/dist/host-reconciler.js +2 -2
- package/dist/host-reconciler.js.map +1 -1
- package/dist/jsx-runtime.d.ts.map +1 -1
- package/dist/jsx-runtime.js +2 -11
- package/dist/jsx-runtime.js.map +1 -1
- package/dist/reconciler.d.ts.map +1 -1
- package/dist/reconciler.js +2 -2
- package/dist/reconciler.js.map +1 -1
- package/dist/server-render.d.ts.map +1 -1
- package/dist/server-render.js +29 -4
- package/dist/server-render.js.map +1 -1
- package/dist/url-safety.d.ts +1 -1
- package/dist/url-safety.d.ts.map +1 -1
- package/dist/url-safety.js +1 -1
- package/dist/url-safety.js.map +1 -1
- package/package.json +3 -3
- package/src/dom-props.ts +189 -49
- package/src/element.ts +45 -1
- package/src/event-listeners.ts +4 -5
- package/src/fiber-child.ts +67 -0
- package/src/fiber-commit.ts +92 -0
- package/src/hooks.ts +88 -8
- package/src/host-reconciler.ts +2 -3
- package/src/jsx-runtime.ts +2 -18
- package/src/reconciler.ts +2 -3
- package/src/server-render.ts +43 -4
- package/src/url-safety.ts +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsx-runtime.d.ts","sourceRoot":"","sources":["../src/jsx-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"jsx-runtime.d.ts","sourceRoot":"","sources":["../src/jsx-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,QAAQ,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAClB,eAAe,EAChB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,QAAQ,EAAE,CAAC;AAEpB,MAAM,MAAM,QAAQ,CAClB,cAAc,SAAS,WAAW,EAClC,MAAM,SAAS,KAAK,GAAG,KAAK,IAC1B,MAAM,GAAG;IACX,QAAQ,CAAC,aAAa,EAAE,cAAc,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,eAAe,CACzB,cAAc,SAAS,WAAW,EAClC,MAAM,SAAS,KAAK,GAAG,KAAK,IAC1B,CAAC,KAAK,EAAE,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,KAAK,OAAO,CAAC;AAEzD,MAAM,MAAM,SAAS,CAAC,cAAc,SAAS,WAAW,GAAG,OAAO,IAAI,QAAQ,CAC5E,cAAc,EACd,WAAW,CACZ,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,cAAc,SAAS,WAAW,GAAG,OAAO,IACvE,eAAe,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;AAE/C,MAAM,WAAW,gBAAgB,CAAC,QAAQ,SAAS,WAAW;IAC5D,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,OAAO,CAAC,EAAE,eAAe,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAChD,QAAQ,CAAC,EAAE,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC5C,OAAO,CAAC,EAAE,eAAe,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAChD,QAAQ,CAAC,EAAE,eAAe,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;CACnD;AAED,MAAM,WAAW,iBAAiB,CAAC,QAAQ,SAAS,WAAW,CAC7D,SAAQ,gBAAgB,CAAC,QAAQ,CAAC;IAClC,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,sBAAsB;IACrC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,iBAAiB,CAAC,eAAe,CAAC,GAAG;QACzC,QAAQ,CAAC,EAAE,eAAe,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;KAC1D,CAAC;IACF,KAAK,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IAC3C,MAAM,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAC7C,QAAQ,EAAE,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;IACjD,MAAM,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAC7C,MAAM,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAC7C,CAAC,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IACxC,GAAG,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IACzC,IAAI,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAC;IACrC,GAAG,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;IACvC,IAAI,EAAE,iBAAiB,CAAC,eAAe,CAAC,CAAC;IACzC,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChD;AAED,yBAAiB,GAAG,CAAC;IACnB,UAAiB,OAAQ,SAAQ,kBAAkB;KAAG;IAEtD,UAAiB,mBAAoB,SAAQ,sBAAsB;KAAG;IAEtE,UAAiB,iBAAkB,SAAQ,oBAAoB;KAAG;CACnE;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,GAAG,CAAC;QACZ,UAAU,OAAQ,SAAQ,kBAAkB;SAAG;QAC/C,UAAU,mBAAoB,SAAQ,sBAAsB;SAAG;QAC/D,UAAU,iBAAkB,SAAQ,oBAAoB;SAAG;KAC5D;CACF;AAED,wBAAgB,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnD,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EACpB,KAAK,EAAE,CAAC,CAAC,GAAG;IAAE,QAAQ,CAAC,EAAE,eAAe,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GAAG,IAAI,EAChF,GAAG,CAAC,EAAE,OAAO,GACZ,kBAAkB,CAAC,CAAC,CAAC,CAEvB;AAED,wBAAgB,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpD,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EACpB,KAAK,EAAE,CAAC,CAAC,GAAG;IAAE,QAAQ,CAAC,EAAE,eAAe,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GAAG,IAAI,EAChF,GAAG,CAAC,EAAE,OAAO,GACZ,kBAAkB,CAAC,CAAC,CAAC,CAEvB"}
|
package/dist/jsx-runtime.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createElementFromJsxConfig, Fragment } from "./element.js";
|
|
2
2
|
export { Fragment };
|
|
3
3
|
export function jsx(type, props, key) {
|
|
4
4
|
return createElementFromJsx(type, props, key);
|
|
@@ -7,15 +7,6 @@ export function jsxs(type, props, key) {
|
|
|
7
7
|
return createElementFromJsx(type, props, key);
|
|
8
8
|
}
|
|
9
9
|
function createElementFromJsx(type, props, key) {
|
|
10
|
-
|
|
11
|
-
const hasChildren = Object.hasOwn(config, "children");
|
|
12
|
-
const children = config.children;
|
|
13
|
-
if (key !== undefined) {
|
|
14
|
-
config.key = key;
|
|
15
|
-
}
|
|
16
|
-
delete config.children;
|
|
17
|
-
return hasChildren
|
|
18
|
-
? createElement(type, config, children)
|
|
19
|
-
: createElement(type, config);
|
|
10
|
+
return createElementFromJsxConfig(type, props, key);
|
|
20
11
|
}
|
|
21
12
|
//# sourceMappingURL=jsx-runtime.js.map
|
package/dist/jsx-runtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsx-runtime.js","sourceRoot":"","sources":["../src/jsx-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"jsx-runtime.js","sourceRoot":"","sources":["../src/jsx-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAOpE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAyEpB,MAAM,UAAU,GAAG,CACjB,IAAoB,EACpB,KAAgF,EAChF,GAAa;IAEb,OAAO,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,IAAI,CAClB,IAAoB,EACpB,KAAgF,EAChF,GAAa;IAEb,OAAO,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,oBAAoB,CAC3B,IAAoB,EACpB,KAAgF,EAChF,GAAY;IAEZ,OAAO,0BAA0B,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AACtD,CAAC","sourcesContent":["import { createElementFromJsxConfig, Fragment } from \"./element.js\";\nimport type {\n ElementType,\n ReactCompatElement,\n ReactCompatNode,\n} from \"./element.js\";\n\nexport { Fragment };\n\nexport type JSXEvent<\n TCurrentTarget extends EventTarget,\n TEvent extends Event = Event,\n> = TEvent & {\n readonly currentTarget: TCurrentTarget;\n};\n\nexport type JSXEventHandler<\n TCurrentTarget extends EventTarget,\n TEvent extends Event = Event,\n> = (event: JSXEvent<TCurrentTarget, TEvent>) => unknown;\n\nexport type FormEvent<TCurrentTarget extends EventTarget = Element> = JSXEvent<\n TCurrentTarget,\n SubmitEvent\n>;\n\nexport type FormEventHandler<TCurrentTarget extends EventTarget = Element> =\n JSXEventHandler<TCurrentTarget, SubmitEvent>;\n\nexport interface JSXDOMAttributes<TElement extends EventTarget> {\n children?: ReactCompatNode;\n onClick?: JSXEventHandler<TElement, MouseEvent>;\n onChange?: JSXEventHandler<TElement, Event>;\n onInput?: JSXEventHandler<TElement, InputEvent>;\n onSubmit?: JSXEventHandler<TElement, SubmitEvent>;\n}\n\nexport interface JSXHTMLAttributes<TElement extends HTMLElement>\n extends JSXDOMAttributes<TElement> {\n [attributeName: string]: unknown;\n}\n\nexport interface JSXIntrinsicAttributes {\n key?: unknown;\n ref?: unknown;\n}\n\nexport interface JSXIntrinsicElements {\n form: JSXHTMLAttributes<HTMLFormElement> & {\n onSubmit?: JSXEventHandler<HTMLFormElement, SubmitEvent>;\n };\n input: JSXHTMLAttributes<HTMLInputElement>;\n button: JSXHTMLAttributes<HTMLButtonElement>;\n textarea: JSXHTMLAttributes<HTMLTextAreaElement>;\n select: JSXHTMLAttributes<HTMLSelectElement>;\n option: JSXHTMLAttributes<HTMLOptionElement>;\n a: JSXHTMLAttributes<HTMLAnchorElement>;\n img: JSXHTMLAttributes<HTMLImageElement>;\n main: JSXHTMLAttributes<HTMLElement>;\n div: JSXHTMLAttributes<HTMLDivElement>;\n span: JSXHTMLAttributes<HTMLSpanElement>;\n [elementName: string]: Record<string, unknown>;\n}\n\nexport namespace JSX {\n export interface Element extends ReactCompatElement {}\n\n export interface IntrinsicAttributes extends JSXIntrinsicAttributes {}\n\n export interface IntrinsicElements extends JSXIntrinsicElements {}\n}\n\ndeclare global {\n namespace JSX {\n interface Element extends ReactCompatElement {}\n interface IntrinsicAttributes extends JSXIntrinsicAttributes {}\n interface IntrinsicElements extends JSXIntrinsicElements {}\n }\n}\n\nexport function jsx<P extends Record<string, unknown>>(\n type: ElementType<P>,\n props: (P & { children?: ReactCompatNode; key?: unknown; ref?: unknown }) | null,\n key?: unknown,\n): ReactCompatElement<P> {\n return createElementFromJsx(type, props, key);\n}\n\nexport function jsxs<P extends Record<string, unknown>>(\n type: ElementType<P>,\n props: (P & { children?: ReactCompatNode; key?: unknown; ref?: unknown }) | null,\n key?: unknown,\n): ReactCompatElement<P> {\n return createElementFromJsx(type, props, key);\n}\n\nfunction createElementFromJsx<P extends Record<string, unknown>>(\n type: ElementType<P>,\n props: (P & { children?: ReactCompatNode; key?: unknown; ref?: unknown }) | null,\n key: unknown,\n): ReactCompatElement<P> {\n return createElementFromJsxConfig(type, props, key);\n}\n"]}
|
package/dist/reconciler.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reconciler.d.ts","sourceRoot":"","sources":["../src/reconciler.ts"],"names":[],"mappings":"AAwBA,OAAO,
|
|
1
|
+
{"version":3,"file":"reconciler.d.ts","sourceRoot":"","sources":["../src/reconciler.ts"],"names":[],"mappings":"AAwBA,OAAO,EASL,KAAK,WAAW,EACjB,MAAM,YAAY,CAAC;AAapB,OAAO,EAOL,KAAK,aAAa,EAEnB,MAAM,gBAAgB,CAAC;AAyBxB,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,OAAO,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,WAAW,EACpB,OAAO,GAAE,aAAa,GAAG;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAC3B,GACL,IAAI,CAwCN"}
|
package/dist/reconciler.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Activity, Fragment, ERROR_BOUNDARY_TYPE, FORWARD_REF_TYPE, Profiler, Suspense, SuspenseList, LAZY_TYPE, MEMO_TYPE, STRICT_MODE_TYPE, isReactCompatElement, isReactCompatPortal, } from "./element.js";
|
|
2
2
|
import { consumerContext, isReactCompatConsumer, isReactCompatProvider, renderWithContextProvider, useContext, } from "./context.js";
|
|
3
|
-
import { clearRuntimePortalNodes, hasStableExternalStores, restoreRuntimeSnapshot, renderWithProfiler, renderWithStrictMode, renderWithRootRuntime, takeRuntimeSnapshot, } from "./hooks.js";
|
|
3
|
+
import { clearRuntimePortalNodes, collectRuntimeInstanceKeys, hasStableExternalStores, restoreRuntimeSnapshot, renderWithProfiler, renderWithStrictMode, renderWithRootRuntime, takeRuntimeSnapshot, } from "./hooks.js";
|
|
4
4
|
import { commitDevToolsRoot } from "./devtools.js";
|
|
5
5
|
import { applyPostChildFormProps, applyProps } from "./dom-props.js";
|
|
6
6
|
import { syncChildNodes, syncOwnedChildNodes, syncScopedChildNodes } from "./dom-children.js";
|
|
@@ -307,7 +307,7 @@ function getMemoRenderStates(runtime) {
|
|
|
307
307
|
return created;
|
|
308
308
|
}
|
|
309
309
|
function collectInstanceKeys(runtime, prefix) {
|
|
310
|
-
return
|
|
310
|
+
return collectRuntimeInstanceKeys(runtime, prefix);
|
|
311
311
|
}
|
|
312
312
|
function markActiveInstanceKeys(runtime, keys) {
|
|
313
313
|
for (const key of keys) {
|
package/dist/reconciler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reconciler.js","sourceRoot":"","sources":["../src/reconciler.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,mBAAmB,EACnB,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,GAIpB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,EACzB,UAAU,GACX,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,GAEpB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9F,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,wBAAwB,EACxB,uBAAuB,GAExB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,yBAAyB,EACzB,+BAA+B,EAC/B,0BAA0B,EAC1B,iBAAiB,EAEjB,2BAA2B,GAC5B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,6BAA6B,EAC7B,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGzD,MAAM,QAAQ,GAAG,IAAI,OAAO,EAAgB,CAAC;AAS7C,MAAM,gBAAgB,GAAG,IAAI,OAAO,EAA6C,CAAC;AAElF,MAAM,UAAU,mBAAmB,CACjC,SAAkB,EAClB,OAAgB,EAChB,OAAoB,EACpB,UAGI,EAAE;IAEN,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,EAAE,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;QACjD,OAAO,CAAC,WAAW,EAAE,CAAC;QACtB,IAAI,SAAS,GAAG,KAAK,CAAC;QAEtB,IAAI,CAAC;YACH,uBAAuB,CAAC,OAAO,CAAC,CAAC;YAEjC,MAAM,KAAK,GAAG,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC7D,MAAM,aAAa,GAAG,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;YAC3D,MAAM,KAAK,GAAG,iBAAiB,CAC7B,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,aAAa,EACnB,OAA0B,EAC1B,OAAO,EACP,GAAG,EACH,aAAa,CACd,CAAC;YAEF,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtC,SAAS;YACX,CAAC;YAED,oBAAoB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAErE,IAAI,OAAO,CAAC,oBAAoB,KAAK,IAAI,EAAE,CAAC;gBAC1C,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACpD,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACpD,CAAC;YACD,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC/B,CAAC;QAED,OAAO,CAAC,YAAY,EAAE,CAAC;QACvB,kBAAkB,CAAC,SAAS,EAAE,OAA0B,CAAC,CAAC;QAC1D,OAAO;IACT,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,iBAAiB,CACxB,MAAkB,EAClB,aAA8B,EAC9B,IAAqB,EACrB,OAAoB,EACpB,IAAY,EACZ,UAA4B,EAAE;IAE9B,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAClF,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB,CAAC;AAED,SAAS,aAAa,CACpB,MAAkB,EAClB,aAA8B,EAC9B,IAAqB,EACrB,OAAoB,EACpB,IAAY,EACZ,UAA4B,EAAE;IAE9B,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,KAAK,SAAS,EAAE,CAAC;QACrE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IACpC,CAAC;IAED,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACzD,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,IAAI,GACR,QAAQ,YAAY,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QACpE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,0BAA0B,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC5C,CAAC;aAAM,IAAI,CAAC,CAAC,QAAQ,YAAY,IAAI,CAAC,EAAE,CAAC;YACvC,+BAA+B,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,QAAQ,YAAY,IAAI,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/D,iBAAiB,CACf,OAAO,EACP,MAAM,EACN,IAAI,EACJ,IAAI,KAAK,CAAC,0BAA0B,CAAC,CACtC,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACzB,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAQ,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACvE,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO,iBAAiB,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAChF,CAAC;IAED,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,OAAO,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,gBAAgB,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC/E,CAAC;AAED,SAAS,eAAe,CACtB,MAAyB,EACzB,MAAkB,EAClB,OAAoB,EACpB,IAAY,EACZ,UAA4B,EAAE;IAE9B,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC/C,qBAAqB,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAChD,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IAClF,MAAM,KAAK,GAAG,iBAAiB,CAC7B,MAAM,CAAC,SAAS,EAChB,aAAa,EACb,MAAM,CAAC,QAAQ,EACf,OAAO,EACP,GAAG,IAAI,SAAS,EAChB,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAC5C,CAAC;IACF,mBAAmB,CAAC,MAAM,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;IAC5D,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;AACpC,CAAC;AAED,SAAS,iBAAiB,CACxB,MAAkB,EAClB,aAA8B,EAC9B,QAAoC,EACpC,OAAoB,EACpB,IAAY,EACZ,UAAyB,EAAE;IAE3B,MAAM,UAAU,GAAG,iBAAiB,CAAC,aAAa,CAAC,CAAC;IACpD,MAAM,KAAK,GAAW,EAAE,CAAC;IACzB,IAAI,aAAa,GAAG,CAAC,CAAC;IAEtB,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAChC,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,gBAAgB,GACpB,GAAG,KAAK,SAAS;YACf,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC;YACpC,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC;gBACrB,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC;gBACpC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS;oBACnC,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAS,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,aAAa,CAC1B,MAAM,EACN,gBAAgB,EAChB,KAAK,EACL,OAAO,EACP,GAAG,IAAI,IAAI,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAC7C,OAAO,CACR,CAAC;QAEF,IAAI,GAAG,KAAK,SAAS,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC/C,aAAa,IAAI,MAAM,CAAC,QAAQ,CAAC;QACnC,CAAC;QAED,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACrC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACtB,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YAC/B,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;AAC3C,CAAC;AAED,SAAS,gBAAgB,CACvB,MAAkB,EAClB,aAA8B,EAC9B,OAA2B,EAC3B,OAAoB,EACpB,IAAY,EACZ,UAA4B,EAAE;IAE9B,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,aAAa,CAClB,MAAM,EACN,aAAa,EACb,OAAO,CAAC,KAAK,CAAC,QAAQ,EACtB,OAAO,EACP,GAAG,IAAI,IAAI,EACX,OAAO,CACR,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,QAAQ,GACX,OAAO,CAAC,KAA4B,CAAC,IAAI,KAAK,QAAQ;YACrD,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC7B,OAAO,aAAa,CAClB,MAAM,EACN,aAAa,EACb,QAAQ,EACR,OAAO,EACP,GAAG,IAAI,WAAW,EAClB,OAAO,CACR,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,kBAAkB,CACvB,OAAO,EACP,GAAG,IAAI,WAAW,EAClB,OAAO,CAAC,KAAK,EACb,GAAG,EAAE,CACH,aAAa,CACX,MAAM,EACN,aAAa,EACb,OAAO,CAAC,KAAK,CAAC,QAAQ,EACtB,OAAO,EACP,GAAG,IAAI,WAAW,EAClB,OAAO,CACR,CACJ,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC;YACH,aAAa,CACX,MAAM,EACN,EAAE,EACF,OAAO,CAAC,KAAK,CAAC,QAAQ,EACtB,OAAO,EACP,GAAG,IAAI,iBAAiB,EACxB,OAAO,CACR,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,oBAAoB,CAAC,OAAO,EAAE,GAAG,EAAE,CACxC,aAAa,CACX,MAAM,EACN,aAAa,EACb,OAAO,CAAC,KAAK,CAAC,QAAQ,EACtB,OAAO,EACP,GAAG,IAAI,SAAS,EAChB,OAAO,CACR,CACF,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,iBAAiB,CACtB,MAAM,EACN,aAAa,EACb,OAAO,EACP,OAAO,EACP,IAAI,EACJ,OAAO,EACP,aAAa,CACd,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAClC,OAAO,qBAAqB,CAC1B,MAAM,EACN,aAAa,EACb,OAAO,EACP,OAAO,EACP,IAAI,EACJ,OAAO,EACP,aAAa,EACb,iBAAiB,CAClB,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;QACzC,OAAO,sBAAsB,CAC3B,MAAM,EACN,aAAa,EACb,OAAO,EACP,OAAO,EACP,IAAI,EACJ,OAAO,EACP,aAAa,CACd,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAEjC,IAAI,qBAAqB,CAAC,WAAW,CAAC,EAAE,CAAC;QACvC,OAAO,yBAAyB,CAC9B,WAAW,EACX,OAAO,CAAC,KAAK,CAAC,KAAK,EACnB,GAAG,EAAE,CACH,aAAa,CACX,MAAM,EACN,aAAa,EACb,OAAO,CAAC,KAAK,CAAC,QAAQ,EACtB,OAAO,EACP,GAAG,IAAI,IAAI,EACX,OAAO,CACR,CACJ,CAAC;IACJ,CAAC;IAED,IAAI,qBAAqB,CAAC,WAAW,CAAC,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;QACxC,MAAM,MAAM,GACV,OAAO,QAAQ,KAAK,UAAU;YAC5B,CAAC,CAAE,QAAgD;YACnD,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;QACjB,OAAO,aAAa,CAClB,MAAM,EACN,aAAa,EACb,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,EAChD,OAAO,EACP,GAAG,IAAI,WAAW,EAClB,OAAO,CACR,CAAC;IACJ,CAAC;IAED,IAAI,gBAAgB,CAAC,WAAW,CAAC,EAAE,CAAC;QAClC,OAAO,qBAAqB,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAC/C,aAAa,CACX,MAAM,EACN,aAAa,EACb,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,EAC9C,OAAO,EACP,GAAG,IAAI,aAAa,EACpB,OAAO,CACR,EACD,WAAW,CACZ,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,GAAG,IAAI,OAAO,CAAC;QAChC,MAAM,UAAU,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAChD,MAAM,iBAAiB,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEnD,IACE,iBAAiB,KAAK,SAAS;YAC/B,aAAa,CAAC,MAAM,IAAI,iBAAiB,CAAC,SAAS;YACnD,CAAC,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,CAAC,YAAY,CAAC;YAC1D,iBAAiB,CAAC,WAAW,EAAE,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,EACtE,CAAC;YACD,sBAAsB,CAAC,OAAO,EAAE,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAChE,OAAO;gBACL,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,SAAS,CAAC;gBAC1D,QAAQ,EAAE,iBAAiB,CAAC,SAAS;aACtC,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,gBAAgB,CAC7B,MAAM,EACN,aAAa,EACb;YACE,GAAG,OAAO;YACV,IAAI,EAAE,WAAW,CAAC,IAAI;SACvB,EACD,OAAO,EACP,QAAQ,EACR,OAAO,CACR,CAAC;QACF,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE;YACvB,KAAK,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE;YAC3B,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;YAC9B,YAAY,EAAE,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC;SACrD,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,IAAI,WAAW,CAAC,MAAM,KAAK,UAAU,IAAI,WAAW,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC5E,OAAO,gBAAgB,CACrB,MAAM,EACN,aAAa,EACb,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,QAAQ,EAAE,EAC1C,OAAO,EACP,GAAG,IAAI,OAAO,EACd,OAAO,CACR,CAAC;QACJ,CAAC;QAED,IAAI,WAAW,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACtC,MAAM,WAAW,CAAC,KAAK,CAAC;QAC1B,CAAC;QAED,IAAI,WAAW,CAAC,MAAM,KAAK,eAAe,EAAE,CAAC;YAC3C,WAAW,CAAC,MAAM,GAAG,SAAS,CAAC;YAC/B,WAAW,CAAC,OAAO,GAAG,WAAW;iBAC9B,IAAI,EAAE;iBACN,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBACf,WAAW,CAAC,MAAM,GAAG,UAAU,CAAC;gBAChC,WAAW,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;gBACtC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;gBACxB,WAAW,CAAC,MAAM,GAAG,UAAU,CAAC;gBAChC,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC;gBAC1B,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,CAAC,CAAC,CAAC;QACP,CAAC;QAED,IAAI,6BAA6B,EAAE,EAAE,CAAC;YACpC,MAAM,WAAW,CAAC,OAAO,CAAC;QAC5B,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IACpC,CAAC;IAED,IAAI,oBAAoB,CAAC,WAAW,CAAC,EAAE,CAAC;QACtC,OAAO,uBAAuB,CAC5B,MAAM,EACN,aAAa,EACb,WAAW,EACX,OAAO,CAAC,KAAK,EACb,OAAO,EACP,IAAI,EACJ,OAAO,EACP,aAAa,EACb,CAAC,QAAQ,EAAE,EAAE;YACX,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAClC,CAAC,CACF,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,WAAW,KAAK,UAAU,EAAE,CAAC;QACtC,MAAM,iBAAiB,GAAG,WAEN,CAAC;QACrB,OAAO,qBAAqB,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAC/C,aAAa,CACX,MAAM,EACN,aAAa,EACb,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,EAChC,OAAO,EACP,GAAG,IAAI,IAAI,EACX,2BAA2B,CAAC,OAAO,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,CAC1E,EACD,iBAAiB,CAClB,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,OAAO,CAAC,SAAS,IAAI,MAAM,EAAE,WAAW,CAAC,CAAC;IAC3F,MAAM,cAAc,GAAG,wBAAwB,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;IAC/E,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAClC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,0BAA0B,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;SAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,+BAA+B,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,WAAW,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC/E,CAAC;IACD,IACE,aAAa,CAAC,QAAQ,CAAC;QACvB,CAAC,kBAAkB,CAAC,QAAQ,EAAE,WAAW,EAAE,gBAAgB,CAAC,EAC5D,CAAC;QACD,iBAAiB,CACf,OAAO,EACP,KAAK,EACL,IAAI,EACJ,IAAI,KAAK,CACP,qCAAqC,WAAW,gBAAgB,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CACnG,CACF,CAAC;QACF,yBAAyB,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACpF,CAAC;IACD,MAAM,UAAU,GACd,aAAa,CAAC,QAAQ,CAAC;QACvB,kBAAkB,CAAC,QAAQ,EAAE,WAAW,EAAE,gBAAgB,CAAC;QACzD,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,iBAAiB,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC;IAE5E,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE;QAC1C,GAAG,OAAO;QACV,2BAA2B,EACzB,OAAO,CAAC,SAAS,KAAK,SAAS;YAC/B,aAAa,CAAC,QAAQ,CAAC;YACvB,kBAAkB,CAAC,QAAQ,EAAE,WAAW,EAAE,gBAAgB,CAAC;KAC9D,CAAC,CAAC;IACH,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAC7D,MAAM,WAAW,GAAG,aAAa,CAC/B,UAAU,EACV,kBAAkB,EAClB,OAAO,CAAC,KAAK,CAAC,QAAQ,EACtB,OAAO,EACP,GAAG,IAAI,IAAI,EACX,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,CAC1C,CAAC;IACF,yBAAyB,CACvB,OAAO,EACP,GAAG,IAAI,IAAI,EACX,kBAAkB,EAClB,WAAW,CAAC,QAAQ,CACrB,CAAC;IACF,IAAI,CAAC,qCAAqC,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QACzF,cAAc,CAAC,UAAU,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IACD,uBAAuB,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACnD,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAClC,OAAO,EAAE,KAAK,EAAE,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3E,CAAC;AAED,SAAS,qCAAqC,CAC5C,OAAgB,EAChB,KAA8B,EAC9B,UAA2B;IAE3B,KAAK,UAAU,CAAC;IAEhB,IACE,CAAC,OAAO,CAAC,YAAY,CAAC,iBAAiB,CAAC;QACxC,OAAO,CAAC,YAAY,CAAC,iBAAiB,CAAC,KAAK,OAAO,EACnD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAChC,OAAO,CACL,QAAQ,KAAK,SAAS;QACtB,QAAQ,KAAK,IAAI;QACjB,QAAQ,KAAK,KAAK;QAClB,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CACnD,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAsB;IAC/C,MAAM,UAAU,GAAG,IAAI,GAAG,EAAgB,CAAC;IAE3C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAE/B,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAqB,EAAE,KAAa;IAC9D,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC7B,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;AACxD,CAAC;AAED,SAAS,UAAU,CAAC,IAAqB;IACvC,OAAO,oBAAoB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI;QACpD,CAAC,CAAC,IAAI,CAAC,GAAG;QACV,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,SAAS,gBAAgB,CAAC,SAAmB;IAC3C,OAAO,SAAS,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC;AAC9D,CAAC;AAED,SAAS,gBAAgB,CACvB,KAAc;IAEd,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACb,KAAgC,CAAC,QAAQ,KAAK,gBAAgB,CAChE,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CACjB,KAAc;IASd,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACb,KAAgC,CAAC,QAAQ,KAAK,SAAS,CACzD,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAoB;IAC/C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAE/C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAA2B,CAAC;IACnD,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACvC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAoB,EAAE,MAAc;IAC/D,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CACzD,GAAG,KAAK,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,CAAC,CAC/C,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAoB,EAAE,IAAuB;IAC3E,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAoB,EAAE,IAAuB;IACrE,OAAO,IAAI,CAAC,IAAI,CACd,CAAC,GAAG,EAAE,EAAE,CACL,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAqC,EAAE,KAAK,KAAK,IAAI,CAClF,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CACjB,KAAc;IASd,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACb,KAAgC,CAAC,QAAQ,KAAK,SAAS,CACzD,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,GAAY,EAAE,IAAa;IAC3C,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE,CAAC;QAC9B,GAAG,CAAC,IAAI,CAAC,CAAC;QACV,OAAO;IACT,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,SAAS,IAAI,GAAG,EAAE,CAAC;QAC/D,GAA4B,CAAC,OAAO,GAAG,IAAI,CAAC;IAC/C,CAAC;AACH,CAAC","sourcesContent":["import {\n Activity,\n Fragment,\n ERROR_BOUNDARY_TYPE,\n FORWARD_REF_TYPE,\n Profiler,\n Suspense,\n SuspenseList,\n LAZY_TYPE,\n MEMO_TYPE,\n STRICT_MODE_TYPE,\n isReactCompatElement,\n isReactCompatPortal,\n type ReactCompatElement,\n type ReactCompatNode,\n type ReactCompatPortal,\n} from \"./element.js\";\nimport {\n consumerContext,\n isReactCompatConsumer,\n isReactCompatProvider,\n renderWithContextProvider,\n useContext,\n} from \"./context.js\";\nimport {\n clearRuntimePortalNodes,\n hasStableExternalStores,\n restoreRuntimeSnapshot,\n renderWithProfiler,\n renderWithStrictMode,\n renderWithRootRuntime,\n takeRuntimeSnapshot,\n type RootRuntime,\n} from \"./hooks.js\";\nimport { commitDevToolsRoot } from \"./devtools.js\";\nimport { applyPostChildFormProps, applyProps } from \"./dom-props.js\";\nimport { syncChildNodes, syncOwnedChildNodes, syncScopedChildNodes } from \"./dom-children.js\";\nimport { setLogicalEventParent } from \"./events.js\";\nimport {\n createHostElement,\n hostElementMatches,\n isHostElement,\n namespaceForHostChildren,\n namespaceForHostElement,\n type HostNamespace,\n} from \"./dom-host-rules.js\";\nimport {\n getHydrationScope,\n reportElementTextMismatch,\n reportExtraHydrationNodes,\n reportHydrationNodeTypeMismatch,\n reportMissingHydrationNode,\n reportRecoverable,\n type RenderOptions,\n withHydrationComponentStack,\n} from \"./hydration.js\";\nimport {\n isClassComponentType,\n reconcileClassComponent,\n reconcileErrorBoundary,\n} from \"./class-component.js\";\nimport {\n isSuspensePrimaryRenderActive,\n reconcileSuspense,\n reconcileSuspenseList,\n} from \"./suspense.js\";\nimport { areMemoPropsEqual } from \"./prop-comparison.js\";\nimport type { ReconcileResult } from \"./reconcile-types.js\";\n\nconst nodeKeys = new WeakMap<Node, string>();\ntype ReconcileOptions = RenderOptions & { namespace?: HostNamespace };\n\ninterface MemoRenderState {\n props: Record<string, unknown>;\n nodeCount: number;\n instanceKeys: string[];\n}\n\nconst memoRenderStates = new WeakMap<RootRuntime, Map<string, MemoRenderState>>();\n\nexport function renderIntoContainer(\n container: Element,\n element: unknown,\n runtime: RootRuntime,\n options: RenderOptions & {\n resumeId?: string;\n consumeResumeMarkers?: boolean;\n } = {},\n): void {\n for (let attempt = 0; attempt < 25; attempt += 1) {\n runtime.beginRender();\n let committed = false;\n\n try {\n clearRuntimePortalNodes(runtime);\n\n const scope = getHydrationScope(container, options.resumeId);\n const renderOptions = { ...options, eventRoot: container };\n const nodes = reconcileNodeList(\n scope.parent,\n scope.previousNodes,\n element as ReactCompatNode,\n runtime,\n \"0\",\n renderOptions,\n );\n\n if (!hasStableExternalStores(runtime)) {\n continue;\n }\n\n syncScopedChildNodes(scope.parent, scope.before, scope.after, nodes);\n\n if (options.consumeResumeMarkers === true) {\n scope.before?.parentNode?.removeChild(scope.before);\n scope.after?.parentNode?.removeChild(scope.after);\n }\n committed = true;\n } finally {\n runtime.endRender(committed);\n }\n\n runtime.flushEffects();\n commitDevToolsRoot(container, element as ReactCompatNode);\n return;\n }\n\n throw new Error(\"Store unstable.\");\n}\n\nfunction reconcileNodeList(\n parent: ParentNode,\n previousNodes: readonly Node[],\n node: ReactCompatNode,\n runtime: RootRuntime,\n path: string,\n options: ReconcileOptions = {},\n): Node[] {\n const result = reconcileNode(parent, previousNodes, node, runtime, path, options);\n return result.nodes;\n}\n\nfunction reconcileNode(\n parent: ParentNode,\n previousNodes: readonly Node[],\n node: ReactCompatNode,\n runtime: RootRuntime,\n path: string,\n options: ReconcileOptions = {},\n): ReconcileResult {\n if (node === null || node === undefined || typeof node === \"boolean\") {\n return { nodes: [], consumed: 0 };\n }\n\n if (typeof node === \"string\" || typeof node === \"number\") {\n const existing = previousNodes[0];\n const text =\n existing instanceof Text ? existing : document.createTextNode(\"\");\n if (existing === undefined) {\n reportMissingHydrationNode(options, path);\n } else if (!(existing instanceof Text)) {\n reportHydrationNodeTypeMismatch(options, path, \"text\", existing);\n }\n if (existing instanceof Text && existing.data !== String(node)) {\n reportRecoverable(\n options,\n \"text\",\n path,\n new Error(\"Hydration text mismatch.\"),\n );\n }\n text.data = String(node);\n return { nodes: [text], consumed: existing instanceof Text ? 1 : 0 };\n }\n\n if (Array.isArray(node)) {\n return reconcileSequence(parent, previousNodes, node, runtime, path, options);\n }\n\n if (!isReactCompatElement(node)) {\n if (isReactCompatPortal(node)) {\n return reconcilePortal(node, parent, runtime, path, options);\n }\n\n throw new Error(\"Invalid react-compat element.\");\n }\n\n return reconcileElement(parent, previousNodes, node, runtime, path, options);\n}\n\nfunction reconcilePortal(\n portal: ReactCompatPortal,\n parent: ParentNode,\n runtime: RootRuntime,\n path: string,\n options: ReconcileOptions = {},\n): ReconcileResult {\n runtime.portalContainers.add(portal.container);\n setLogicalEventParent(portal.container, parent);\n const previousNodes = Array.from(runtime.portalNodes.get(portal.container) ?? []);\n const nodes = reconcileNodeList(\n portal.container,\n previousNodes,\n portal.children,\n runtime,\n `${path}.portal`,\n { ...options, eventRoot: portal.container },\n );\n syncOwnedChildNodes(portal.container, previousNodes, nodes);\n runtime.portalNodes.set(portal.container, new Set(nodes));\n return { nodes: [], consumed: 0 };\n}\n\nfunction reconcileSequence(\n parent: ParentNode,\n previousNodes: readonly Node[],\n children: readonly ReactCompatNode[],\n runtime: RootRuntime,\n path: string,\n options: RenderOptions = {},\n): ReconcileResult {\n const keyedNodes = collectKeyedNodes(previousNodes);\n const nodes: Node[] = [];\n let previousIndex = 0;\n\n children.forEach((child, index) => {\n const key = getNodeKey(child);\n const previousForChild =\n key === undefined\n ? previousNodes.slice(previousIndex)\n : keyedNodes.size === 0\n ? previousNodes.slice(previousIndex)\n : keyedNodes.get(key) === undefined\n ? []\n : [keyedNodes.get(key) as Node];\n const result = reconcileNode(\n parent,\n previousForChild,\n child,\n runtime,\n `${path}.${getNodePathSegment(child, index)}`,\n options,\n );\n\n if (key === undefined || keyedNodes.size === 0) {\n previousIndex += result.consumed;\n }\n\n for (const childNode of result.nodes) {\n if (key !== undefined) {\n nodeKeys.set(childNode, key);\n }\n\n nodes.push(childNode);\n }\n });\n\n return { nodes, consumed: nodes.length };\n}\n\nfunction reconcileElement(\n parent: ParentNode,\n previousNodes: readonly Node[],\n element: ReactCompatElement,\n runtime: RootRuntime,\n path: string,\n options: ReconcileOptions = {},\n): ReconcileResult {\n if (element.type === Fragment) {\n return reconcileNode(\n parent,\n previousNodes,\n element.props.children,\n runtime,\n `${path}.f`,\n options,\n );\n }\n\n if (element.type === Activity) {\n const children =\n (element.props as { mode?: unknown }).mode === \"hidden\"\n ? null\n : element.props.children;\n return reconcileNode(\n parent,\n previousNodes,\n children,\n runtime,\n `${path}.activity`,\n options,\n );\n }\n\n if (element.type === Profiler) {\n return renderWithProfiler(\n runtime,\n `${path}.profiler`,\n element.props,\n () =>\n reconcileNode(\n parent,\n previousNodes,\n element.props.children,\n runtime,\n `${path}.profiler`,\n options,\n ),\n );\n }\n\n if (element.type === STRICT_MODE_TYPE) {\n const snapshot = takeRuntimeSnapshot(runtime);\n try {\n reconcileNode(\n parent,\n [],\n element.props.children,\n runtime,\n `${path}.strict.preview`,\n options,\n );\n } finally {\n restoreRuntimeSnapshot(runtime, snapshot);\n }\n\n return renderWithStrictMode(runtime, () =>\n reconcileNode(\n parent,\n previousNodes,\n element.props.children,\n runtime,\n `${path}.strict`,\n options,\n ),\n );\n }\n\n if (element.type === Suspense) {\n return reconcileSuspense(\n parent,\n previousNodes,\n element,\n runtime,\n path,\n options,\n reconcileNode,\n );\n }\n\n if (element.type === SuspenseList) {\n return reconcileSuspenseList(\n parent,\n previousNodes,\n element,\n runtime,\n path,\n options,\n reconcileNode,\n reconcileSequence,\n );\n }\n\n if (element.type === ERROR_BOUNDARY_TYPE) {\n return reconcileErrorBoundary(\n parent,\n previousNodes,\n element,\n runtime,\n path,\n options,\n reconcileNode,\n );\n }\n\n const elementType = element.type;\n\n if (isReactCompatProvider(elementType)) {\n return renderWithContextProvider(\n elementType,\n element.props.value,\n () =>\n reconcileNode(\n parent,\n previousNodes,\n element.props.children,\n runtime,\n `${path}.p`,\n options,\n ),\n );\n }\n\n if (isReactCompatConsumer(elementType)) {\n const children = element.props.children;\n const render =\n typeof children === \"function\"\n ? (children as (value: unknown) => ReactCompatNode)\n : () => null;\n return reconcileNode(\n parent,\n previousNodes,\n render(useContext(consumerContext(elementType))),\n runtime,\n `${path}.consumer`,\n options,\n );\n }\n\n if (isForwardRefType(elementType)) {\n return renderWithRootRuntime(runtime, path, () =>\n reconcileNode(\n parent,\n previousNodes,\n elementType.render(element.props, element.ref),\n runtime,\n `${path}.forwardRef`,\n options,\n ),\n elementType,\n );\n }\n\n if (isMemoType(elementType)) {\n const memoPath = `${path}.memo`;\n const memoStates = getMemoRenderStates(runtime);\n const previousMemoState = memoStates.get(memoPath);\n\n if (\n previousMemoState !== undefined &&\n previousNodes.length >= previousMemoState.nodeCount &&\n !hasDirtyInstance(runtime, previousMemoState.instanceKeys) &&\n areMemoPropsEqual(elementType, previousMemoState.props, element.props)\n ) {\n markActiveInstanceKeys(runtime, previousMemoState.instanceKeys);\n return {\n nodes: previousNodes.slice(0, previousMemoState.nodeCount),\n consumed: previousMemoState.nodeCount,\n };\n }\n\n const result = reconcileElement(\n parent,\n previousNodes,\n {\n ...element,\n type: elementType.type,\n },\n runtime,\n memoPath,\n options,\n );\n memoStates.set(memoPath, {\n props: { ...element.props },\n nodeCount: result.nodes.length,\n instanceKeys: collectInstanceKeys(runtime, memoPath),\n });\n return result;\n }\n\n if (isLazyType(elementType)) {\n if (elementType.status === \"resolved\" && elementType.resolved !== undefined) {\n return reconcileElement(\n parent,\n previousNodes,\n { ...element, type: elementType.resolved },\n runtime,\n `${path}.lazy`,\n options,\n );\n }\n\n if (elementType.status === \"rejected\") {\n throw elementType.error;\n }\n\n if (elementType.status === \"uninitialized\") {\n elementType.status = \"pending\";\n elementType.promise = elementType\n .load()\n .then((module) => {\n elementType.status = \"resolved\";\n elementType.resolved = module.default;\n runtime.rerender();\n })\n .catch((error: unknown) => {\n elementType.status = \"rejected\";\n elementType.error = error;\n runtime.rerender();\n });\n }\n\n if (isSuspensePrimaryRenderActive()) {\n throw elementType.promise;\n }\n\n return { nodes: [], consumed: 0 };\n }\n\n if (isClassComponentType(elementType)) {\n return reconcileClassComponent(\n parent,\n previousNodes,\n elementType,\n element.props,\n runtime,\n path,\n options,\n reconcileNode,\n (instance) => {\n applyRef(element.ref, instance);\n },\n );\n }\n\n if (typeof elementType === \"function\") {\n const functionComponent = elementType as (\n props: Record<string, unknown>,\n ) => ReactCompatNode;\n return renderWithRootRuntime(runtime, path, () =>\n reconcileNode(\n parent,\n previousNodes,\n functionComponent(element.props),\n runtime,\n `${path}.0`,\n withHydrationComponentStack(options, getComponentName(functionComponent)),\n ),\n functionComponent,\n );\n }\n\n if (typeof elementType !== \"string\") {\n throw new Error(\"Invalid react-compat element type.\");\n }\n\n const elementNamespace = namespaceForHostElement(options.namespace ?? \"html\", elementType);\n const childNamespace = namespaceForHostChildren(elementNamespace, elementType);\n const existing = previousNodes[0];\n if (existing === undefined) {\n reportMissingHydrationNode(options, path);\n } else if (!isHostElement(existing)) {\n reportHydrationNodeTypeMismatch(options, path, `<${elementType}>`, existing);\n }\n if (\n isHostElement(existing) &&\n !hostElementMatches(existing, elementType, elementNamespace)\n ) {\n reportRecoverable(\n options,\n \"tag\",\n path,\n new Error(\n `Hydration tag mismatch: expected <${elementType}> but found <${existing.tagName.toLowerCase()}>.`,\n ),\n );\n reportElementTextMismatch(options, `${path}.c`, existing, element.props.children);\n }\n const domElement =\n isHostElement(existing) &&\n hostElementMatches(existing, elementType, elementNamespace)\n ? existing\n : createHostElement(document, elementType, options.namespace ?? \"html\");\n\n applyProps(domElement, element.props, path, {\n ...options,\n preserveHydrationAttributes:\n options.hydration !== undefined &&\n isHostElement(existing) &&\n hostElementMatches(existing, elementType, elementNamespace),\n });\n const previousChildNodes = Array.from(domElement.childNodes);\n const childResult = reconcileNode(\n domElement,\n previousChildNodes,\n element.props.children,\n runtime,\n `${path}.c`,\n { ...options, namespace: childNamespace },\n );\n reportExtraHydrationNodes(\n options,\n `${path}.c`,\n previousChildNodes,\n childResult.consumed,\n );\n if (!shouldPreserveContentEditableChildren(domElement, element.props, childResult.nodes)) {\n syncChildNodes(domElement, childResult.nodes);\n }\n applyPostChildFormProps(domElement, element.props);\n applyRef(element.ref, domElement);\n return { nodes: [domElement], consumed: existing === undefined ? 0 : 1 };\n}\n\nfunction shouldPreserveContentEditableChildren(\n element: Element,\n props: Record<string, unknown>,\n childNodes: readonly Node[],\n): boolean {\n void childNodes;\n\n if (\n !element.hasAttribute(\"contenteditable\") ||\n element.getAttribute(\"contenteditable\") === \"false\"\n ) {\n return false;\n }\n\n const children = props.children;\n return (\n children === undefined ||\n children === null ||\n children === false ||\n (Array.isArray(children) && children.length === 0)\n );\n}\n\nfunction collectKeyedNodes(nodes: readonly Node[]): Map<string, Node> {\n const keyedNodes = new Map<string, Node>();\n\n for (const node of nodes) {\n const key = nodeKeys.get(node);\n\n if (key !== undefined) {\n keyedNodes.set(key, node);\n }\n }\n\n return keyedNodes;\n}\n\nfunction getNodePathSegment(node: ReactCompatNode, index: number): string {\n const key = getNodeKey(node);\n return key === undefined ? String(index) : `k:${key}`;\n}\n\nfunction getNodeKey(node: ReactCompatNode): string | undefined {\n return isReactCompatElement(node) && node.key !== null\n ? node.key\n : undefined;\n}\n\nfunction getComponentName(component: Function): string {\n return component.name === \"\" ? \"Anonymous\" : component.name;\n}\n\nfunction isForwardRefType(\n value: unknown,\n): value is { $$typeof: typeof FORWARD_REF_TYPE; render: (props: Record<string, unknown>, ref: unknown) => ReactCompatNode } {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as { $$typeof?: unknown }).$$typeof === FORWARD_REF_TYPE\n );\n}\n\nfunction isMemoType(\n value: unknown,\n): value is {\n $$typeof: typeof MEMO_TYPE;\n type: ReactCompatElement[\"type\"];\n compare?: (\n previous: Record<string, unknown>,\n next: Record<string, unknown>,\n ) => boolean;\n} {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as { $$typeof?: unknown }).$$typeof === MEMO_TYPE\n );\n}\n\nfunction getMemoRenderStates(runtime: RootRuntime): Map<string, MemoRenderState> {\n const existing = memoRenderStates.get(runtime);\n\n if (existing !== undefined) {\n return existing;\n }\n\n const created = new Map<string, MemoRenderState>();\n memoRenderStates.set(runtime, created);\n return created;\n}\n\nfunction collectInstanceKeys(runtime: RootRuntime, prefix: string): string[] {\n return Array.from(runtime.instances.keys()).filter((key) =>\n key === prefix || key.startsWith(`${prefix}.`),\n );\n}\n\nfunction markActiveInstanceKeys(runtime: RootRuntime, keys: readonly string[]): void {\n for (const key of keys) {\n runtime.activeInstanceKeys?.add(key);\n }\n}\n\nfunction hasDirtyInstance(runtime: RootRuntime, keys: readonly string[]): boolean {\n return keys.some(\n (key) =>\n (runtime.instances.get(key) as { dirty?: boolean } | undefined)?.dirty === true,\n );\n}\n\nfunction isLazyType(\n value: unknown,\n): value is {\n $$typeof: typeof LAZY_TYPE;\n load: () => Promise<{ default: ReactCompatElement[\"type\"] }>;\n status: \"uninitialized\" | \"pending\" | \"resolved\" | \"rejected\";\n promise?: Promise<void>;\n resolved?: ReactCompatElement[\"type\"];\n error?: unknown;\n} {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as { $$typeof?: unknown }).$$typeof === LAZY_TYPE\n );\n}\n\nfunction applyRef(ref: unknown, node: unknown): void {\n if (typeof ref === \"function\") {\n ref(node);\n return;\n }\n\n if (typeof ref === \"object\" && ref !== null && \"current\" in ref) {\n (ref as { current: unknown }).current = node;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"reconciler.js","sourceRoot":"","sources":["../src/reconciler.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Activity,\n Fragment,\n ERROR_BOUNDARY_TYPE,\n FORWARD_REF_TYPE,\n Profiler,\n Suspense,\n SuspenseList,\n LAZY_TYPE,\n MEMO_TYPE,\n STRICT_MODE_TYPE,\n isReactCompatElement,\n isReactCompatPortal,\n type ReactCompatElement,\n type ReactCompatNode,\n type ReactCompatPortal,\n} from \"./element.js\";\nimport {\n consumerContext,\n isReactCompatConsumer,\n isReactCompatProvider,\n renderWithContextProvider,\n useContext,\n} from \"./context.js\";\nimport {\n clearRuntimePortalNodes,\n collectRuntimeInstanceKeys,\n hasStableExternalStores,\n restoreRuntimeSnapshot,\n renderWithProfiler,\n renderWithStrictMode,\n renderWithRootRuntime,\n takeRuntimeSnapshot,\n type RootRuntime,\n} from \"./hooks.js\";\nimport { commitDevToolsRoot } from \"./devtools.js\";\nimport { applyPostChildFormProps, applyProps } from \"./dom-props.js\";\nimport { syncChildNodes, syncOwnedChildNodes, syncScopedChildNodes } from \"./dom-children.js\";\nimport { setLogicalEventParent } from \"./events.js\";\nimport {\n createHostElement,\n hostElementMatches,\n isHostElement,\n namespaceForHostChildren,\n namespaceForHostElement,\n type HostNamespace,\n} from \"./dom-host-rules.js\";\nimport {\n getHydrationScope,\n reportElementTextMismatch,\n reportExtraHydrationNodes,\n reportHydrationNodeTypeMismatch,\n reportMissingHydrationNode,\n reportRecoverable,\n type RenderOptions,\n withHydrationComponentStack,\n} from \"./hydration.js\";\nimport {\n isClassComponentType,\n reconcileClassComponent,\n reconcileErrorBoundary,\n} from \"./class-component.js\";\nimport {\n isSuspensePrimaryRenderActive,\n reconcileSuspense,\n reconcileSuspenseList,\n} from \"./suspense.js\";\nimport { areMemoPropsEqual } from \"./prop-comparison.js\";\nimport type { ReconcileResult } from \"./reconcile-types.js\";\n\nconst nodeKeys = new WeakMap<Node, string>();\ntype ReconcileOptions = RenderOptions & { namespace?: HostNamespace };\n\ninterface MemoRenderState {\n props: Record<string, unknown>;\n nodeCount: number;\n instanceKeys: string[];\n}\n\nconst memoRenderStates = new WeakMap<RootRuntime, Map<string, MemoRenderState>>();\n\nexport function renderIntoContainer(\n container: Element,\n element: unknown,\n runtime: RootRuntime,\n options: RenderOptions & {\n resumeId?: string;\n consumeResumeMarkers?: boolean;\n } = {},\n): void {\n for (let attempt = 0; attempt < 25; attempt += 1) {\n runtime.beginRender();\n let committed = false;\n\n try {\n clearRuntimePortalNodes(runtime);\n\n const scope = getHydrationScope(container, options.resumeId);\n const renderOptions = { ...options, eventRoot: container };\n const nodes = reconcileNodeList(\n scope.parent,\n scope.previousNodes,\n element as ReactCompatNode,\n runtime,\n \"0\",\n renderOptions,\n );\n\n if (!hasStableExternalStores(runtime)) {\n continue;\n }\n\n syncScopedChildNodes(scope.parent, scope.before, scope.after, nodes);\n\n if (options.consumeResumeMarkers === true) {\n scope.before?.parentNode?.removeChild(scope.before);\n scope.after?.parentNode?.removeChild(scope.after);\n }\n committed = true;\n } finally {\n runtime.endRender(committed);\n }\n\n runtime.flushEffects();\n commitDevToolsRoot(container, element as ReactCompatNode);\n return;\n }\n\n throw new Error(\"Store unstable.\");\n}\n\nfunction reconcileNodeList(\n parent: ParentNode,\n previousNodes: readonly Node[],\n node: ReactCompatNode,\n runtime: RootRuntime,\n path: string,\n options: ReconcileOptions = {},\n): Node[] {\n const result = reconcileNode(parent, previousNodes, node, runtime, path, options);\n return result.nodes;\n}\n\nfunction reconcileNode(\n parent: ParentNode,\n previousNodes: readonly Node[],\n node: ReactCompatNode,\n runtime: RootRuntime,\n path: string,\n options: ReconcileOptions = {},\n): ReconcileResult {\n if (node === null || node === undefined || typeof node === \"boolean\") {\n return { nodes: [], consumed: 0 };\n }\n\n if (typeof node === \"string\" || typeof node === \"number\") {\n const existing = previousNodes[0];\n const text =\n existing instanceof Text ? existing : document.createTextNode(\"\");\n if (existing === undefined) {\n reportMissingHydrationNode(options, path);\n } else if (!(existing instanceof Text)) {\n reportHydrationNodeTypeMismatch(options, path, \"text\", existing);\n }\n if (existing instanceof Text && existing.data !== String(node)) {\n reportRecoverable(\n options,\n \"text\",\n path,\n new Error(\"Hydration text mismatch.\"),\n );\n }\n text.data = String(node);\n return { nodes: [text], consumed: existing instanceof Text ? 1 : 0 };\n }\n\n if (Array.isArray(node)) {\n return reconcileSequence(parent, previousNodes, node, runtime, path, options);\n }\n\n if (!isReactCompatElement(node)) {\n if (isReactCompatPortal(node)) {\n return reconcilePortal(node, parent, runtime, path, options);\n }\n\n throw new Error(\"Invalid react-compat element.\");\n }\n\n return reconcileElement(parent, previousNodes, node, runtime, path, options);\n}\n\nfunction reconcilePortal(\n portal: ReactCompatPortal,\n parent: ParentNode,\n runtime: RootRuntime,\n path: string,\n options: ReconcileOptions = {},\n): ReconcileResult {\n runtime.portalContainers.add(portal.container);\n setLogicalEventParent(portal.container, parent);\n const previousNodes = Array.from(runtime.portalNodes.get(portal.container) ?? []);\n const nodes = reconcileNodeList(\n portal.container,\n previousNodes,\n portal.children,\n runtime,\n `${path}.portal`,\n { ...options, eventRoot: portal.container },\n );\n syncOwnedChildNodes(portal.container, previousNodes, nodes);\n runtime.portalNodes.set(portal.container, new Set(nodes));\n return { nodes: [], consumed: 0 };\n}\n\nfunction reconcileSequence(\n parent: ParentNode,\n previousNodes: readonly Node[],\n children: readonly ReactCompatNode[],\n runtime: RootRuntime,\n path: string,\n options: RenderOptions = {},\n): ReconcileResult {\n const keyedNodes = collectKeyedNodes(previousNodes);\n const nodes: Node[] = [];\n let previousIndex = 0;\n\n children.forEach((child, index) => {\n const key = getNodeKey(child);\n const previousForChild =\n key === undefined\n ? previousNodes.slice(previousIndex)\n : keyedNodes.size === 0\n ? previousNodes.slice(previousIndex)\n : keyedNodes.get(key) === undefined\n ? []\n : [keyedNodes.get(key) as Node];\n const result = reconcileNode(\n parent,\n previousForChild,\n child,\n runtime,\n `${path}.${getNodePathSegment(child, index)}`,\n options,\n );\n\n if (key === undefined || keyedNodes.size === 0) {\n previousIndex += result.consumed;\n }\n\n for (const childNode of result.nodes) {\n if (key !== undefined) {\n nodeKeys.set(childNode, key);\n }\n\n nodes.push(childNode);\n }\n });\n\n return { nodes, consumed: nodes.length };\n}\n\nfunction reconcileElement(\n parent: ParentNode,\n previousNodes: readonly Node[],\n element: ReactCompatElement,\n runtime: RootRuntime,\n path: string,\n options: ReconcileOptions = {},\n): ReconcileResult {\n if (element.type === Fragment) {\n return reconcileNode(\n parent,\n previousNodes,\n element.props.children,\n runtime,\n `${path}.f`,\n options,\n );\n }\n\n if (element.type === Activity) {\n const children =\n (element.props as { mode?: unknown }).mode === \"hidden\"\n ? null\n : element.props.children;\n return reconcileNode(\n parent,\n previousNodes,\n children,\n runtime,\n `${path}.activity`,\n options,\n );\n }\n\n if (element.type === Profiler) {\n return renderWithProfiler(\n runtime,\n `${path}.profiler`,\n element.props,\n () =>\n reconcileNode(\n parent,\n previousNodes,\n element.props.children,\n runtime,\n `${path}.profiler`,\n options,\n ),\n );\n }\n\n if (element.type === STRICT_MODE_TYPE) {\n const snapshot = takeRuntimeSnapshot(runtime);\n try {\n reconcileNode(\n parent,\n [],\n element.props.children,\n runtime,\n `${path}.strict.preview`,\n options,\n );\n } finally {\n restoreRuntimeSnapshot(runtime, snapshot);\n }\n\n return renderWithStrictMode(runtime, () =>\n reconcileNode(\n parent,\n previousNodes,\n element.props.children,\n runtime,\n `${path}.strict`,\n options,\n ),\n );\n }\n\n if (element.type === Suspense) {\n return reconcileSuspense(\n parent,\n previousNodes,\n element,\n runtime,\n path,\n options,\n reconcileNode,\n );\n }\n\n if (element.type === SuspenseList) {\n return reconcileSuspenseList(\n parent,\n previousNodes,\n element,\n runtime,\n path,\n options,\n reconcileNode,\n reconcileSequence,\n );\n }\n\n if (element.type === ERROR_BOUNDARY_TYPE) {\n return reconcileErrorBoundary(\n parent,\n previousNodes,\n element,\n runtime,\n path,\n options,\n reconcileNode,\n );\n }\n\n const elementType = element.type;\n\n if (isReactCompatProvider(elementType)) {\n return renderWithContextProvider(\n elementType,\n element.props.value,\n () =>\n reconcileNode(\n parent,\n previousNodes,\n element.props.children,\n runtime,\n `${path}.p`,\n options,\n ),\n );\n }\n\n if (isReactCompatConsumer(elementType)) {\n const children = element.props.children;\n const render =\n typeof children === \"function\"\n ? (children as (value: unknown) => ReactCompatNode)\n : () => null;\n return reconcileNode(\n parent,\n previousNodes,\n render(useContext(consumerContext(elementType))),\n runtime,\n `${path}.consumer`,\n options,\n );\n }\n\n if (isForwardRefType(elementType)) {\n return renderWithRootRuntime(runtime, path, () =>\n reconcileNode(\n parent,\n previousNodes,\n elementType.render(element.props, element.ref),\n runtime,\n `${path}.forwardRef`,\n options,\n ),\n elementType,\n );\n }\n\n if (isMemoType(elementType)) {\n const memoPath = `${path}.memo`;\n const memoStates = getMemoRenderStates(runtime);\n const previousMemoState = memoStates.get(memoPath);\n\n if (\n previousMemoState !== undefined &&\n previousNodes.length >= previousMemoState.nodeCount &&\n !hasDirtyInstance(runtime, previousMemoState.instanceKeys) &&\n areMemoPropsEqual(elementType, previousMemoState.props, element.props)\n ) {\n markActiveInstanceKeys(runtime, previousMemoState.instanceKeys);\n return {\n nodes: previousNodes.slice(0, previousMemoState.nodeCount),\n consumed: previousMemoState.nodeCount,\n };\n }\n\n const result = reconcileElement(\n parent,\n previousNodes,\n {\n ...element,\n type: elementType.type,\n },\n runtime,\n memoPath,\n options,\n );\n memoStates.set(memoPath, {\n props: { ...element.props },\n nodeCount: result.nodes.length,\n instanceKeys: collectInstanceKeys(runtime, memoPath),\n });\n return result;\n }\n\n if (isLazyType(elementType)) {\n if (elementType.status === \"resolved\" && elementType.resolved !== undefined) {\n return reconcileElement(\n parent,\n previousNodes,\n { ...element, type: elementType.resolved },\n runtime,\n `${path}.lazy`,\n options,\n );\n }\n\n if (elementType.status === \"rejected\") {\n throw elementType.error;\n }\n\n if (elementType.status === \"uninitialized\") {\n elementType.status = \"pending\";\n elementType.promise = elementType\n .load()\n .then((module) => {\n elementType.status = \"resolved\";\n elementType.resolved = module.default;\n runtime.rerender();\n })\n .catch((error: unknown) => {\n elementType.status = \"rejected\";\n elementType.error = error;\n runtime.rerender();\n });\n }\n\n if (isSuspensePrimaryRenderActive()) {\n throw elementType.promise;\n }\n\n return { nodes: [], consumed: 0 };\n }\n\n if (isClassComponentType(elementType)) {\n return reconcileClassComponent(\n parent,\n previousNodes,\n elementType,\n element.props,\n runtime,\n path,\n options,\n reconcileNode,\n (instance) => {\n applyRef(element.ref, instance);\n },\n );\n }\n\n if (typeof elementType === \"function\") {\n const functionComponent = elementType as (\n props: Record<string, unknown>,\n ) => ReactCompatNode;\n return renderWithRootRuntime(runtime, path, () =>\n reconcileNode(\n parent,\n previousNodes,\n functionComponent(element.props),\n runtime,\n `${path}.0`,\n withHydrationComponentStack(options, getComponentName(functionComponent)),\n ),\n functionComponent,\n );\n }\n\n if (typeof elementType !== \"string\") {\n throw new Error(\"Invalid react-compat element type.\");\n }\n\n const elementNamespace = namespaceForHostElement(options.namespace ?? \"html\", elementType);\n const childNamespace = namespaceForHostChildren(elementNamespace, elementType);\n const existing = previousNodes[0];\n if (existing === undefined) {\n reportMissingHydrationNode(options, path);\n } else if (!isHostElement(existing)) {\n reportHydrationNodeTypeMismatch(options, path, `<${elementType}>`, existing);\n }\n if (\n isHostElement(existing) &&\n !hostElementMatches(existing, elementType, elementNamespace)\n ) {\n reportRecoverable(\n options,\n \"tag\",\n path,\n new Error(\n `Hydration tag mismatch: expected <${elementType}> but found <${existing.tagName.toLowerCase()}>.`,\n ),\n );\n reportElementTextMismatch(options, `${path}.c`, existing, element.props.children);\n }\n const domElement =\n isHostElement(existing) &&\n hostElementMatches(existing, elementType, elementNamespace)\n ? existing\n : createHostElement(document, elementType, options.namespace ?? \"html\");\n\n applyProps(domElement, element.props, path, {\n ...options,\n preserveHydrationAttributes:\n options.hydration !== undefined &&\n isHostElement(existing) &&\n hostElementMatches(existing, elementType, elementNamespace),\n });\n const previousChildNodes = Array.from(domElement.childNodes);\n const childResult = reconcileNode(\n domElement,\n previousChildNodes,\n element.props.children,\n runtime,\n `${path}.c`,\n { ...options, namespace: childNamespace },\n );\n reportExtraHydrationNodes(\n options,\n `${path}.c`,\n previousChildNodes,\n childResult.consumed,\n );\n if (!shouldPreserveContentEditableChildren(domElement, element.props, childResult.nodes)) {\n syncChildNodes(domElement, childResult.nodes);\n }\n applyPostChildFormProps(domElement, element.props);\n applyRef(element.ref, domElement);\n return { nodes: [domElement], consumed: existing === undefined ? 0 : 1 };\n}\n\nfunction shouldPreserveContentEditableChildren(\n element: Element,\n props: Record<string, unknown>,\n childNodes: readonly Node[],\n): boolean {\n void childNodes;\n\n if (\n !element.hasAttribute(\"contenteditable\") ||\n element.getAttribute(\"contenteditable\") === \"false\"\n ) {\n return false;\n }\n\n const children = props.children;\n return (\n children === undefined ||\n children === null ||\n children === false ||\n (Array.isArray(children) && children.length === 0)\n );\n}\n\nfunction collectKeyedNodes(nodes: readonly Node[]): Map<string, Node> {\n const keyedNodes = new Map<string, Node>();\n\n for (const node of nodes) {\n const key = nodeKeys.get(node);\n\n if (key !== undefined) {\n keyedNodes.set(key, node);\n }\n }\n\n return keyedNodes;\n}\n\nfunction getNodePathSegment(node: ReactCompatNode, index: number): string {\n const key = getNodeKey(node);\n return key === undefined ? String(index) : `k:${key}`;\n}\n\nfunction getNodeKey(node: ReactCompatNode): string | undefined {\n return isReactCompatElement(node) && node.key !== null\n ? node.key\n : undefined;\n}\n\nfunction getComponentName(component: Function): string {\n return component.name === \"\" ? \"Anonymous\" : component.name;\n}\n\nfunction isForwardRefType(\n value: unknown,\n): value is { $$typeof: typeof FORWARD_REF_TYPE; render: (props: Record<string, unknown>, ref: unknown) => ReactCompatNode } {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as { $$typeof?: unknown }).$$typeof === FORWARD_REF_TYPE\n );\n}\n\nfunction isMemoType(\n value: unknown,\n): value is {\n $$typeof: typeof MEMO_TYPE;\n type: ReactCompatElement[\"type\"];\n compare?: (\n previous: Record<string, unknown>,\n next: Record<string, unknown>,\n ) => boolean;\n} {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as { $$typeof?: unknown }).$$typeof === MEMO_TYPE\n );\n}\n\nfunction getMemoRenderStates(runtime: RootRuntime): Map<string, MemoRenderState> {\n const existing = memoRenderStates.get(runtime);\n\n if (existing !== undefined) {\n return existing;\n }\n\n const created = new Map<string, MemoRenderState>();\n memoRenderStates.set(runtime, created);\n return created;\n}\n\nfunction collectInstanceKeys(runtime: RootRuntime, prefix: string): string[] {\n return collectRuntimeInstanceKeys(runtime, prefix);\n}\n\nfunction markActiveInstanceKeys(runtime: RootRuntime, keys: readonly string[]): void {\n for (const key of keys) {\n runtime.activeInstanceKeys?.add(key);\n }\n}\n\nfunction hasDirtyInstance(runtime: RootRuntime, keys: readonly string[]): boolean {\n return keys.some(\n (key) =>\n (runtime.instances.get(key) as { dirty?: boolean } | undefined)?.dirty === true,\n );\n}\n\nfunction isLazyType(\n value: unknown,\n): value is {\n $$typeof: typeof LAZY_TYPE;\n load: () => Promise<{ default: ReactCompatElement[\"type\"] }>;\n status: \"uninitialized\" | \"pending\" | \"resolved\" | \"rejected\";\n promise?: Promise<void>;\n resolved?: ReactCompatElement[\"type\"];\n error?: unknown;\n} {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as { $$typeof?: unknown }).$$typeof === LAZY_TYPE\n );\n}\n\nfunction applyRef(ref: unknown, node: unknown): void {\n if (typeof ref === \"function\") {\n ref(node);\n return;\n }\n\n if (typeof ref === \"object\" && ref !== null && \"current\" in ref) {\n (ref as { current: unknown }).current = node;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-render.d.ts","sourceRoot":"","sources":["../src/server-render.ts"],"names":[],"mappings":"AAAA,OAAO,EAUL,KAAK,eAAe,EACrB,MAAM,cAAc,CAAC;AAQtB,OAAO,EAML,KAAK,kBAAkB,EACxB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"server-render.d.ts","sourceRoot":"","sources":["../src/server-render.ts"],"names":[],"mappings":"AAAA,OAAO,EAUL,KAAK,eAAe,EACrB,MAAM,cAAc,CAAC;AAQtB,OAAO,EAML,KAAK,kBAAkB,EACxB,MAAM,YAAY,CAAC;AAUpB,wBAAgB,cAAc,CAAC,MAAM,EACnC,SAAS,EACL,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,eAAe,CAAC,GACpC,CAAC,KAAK,KAAK,EAAE,MAAM,KAAK;IAAE,MAAM,IAAI,eAAe,CAAA;CAAE,CAAC,EAC1D,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,GAAE,kBAAuB,GAC/B,MAAM,CAuBR"}
|
package/dist/server-render.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Activity, FORWARD_REF_TYPE, Fragment, MEMO_TYPE, Profiler, isReactCompatElement, } from "./element.js";
|
|
2
2
|
import { consumerContext, isReactCompatConsumer, isReactCompatProvider, renderWithContextProvider, useContext, } from "./context.js";
|
|
3
3
|
import { createCacheScope, createRootRuntime, renderWithRootRuntime, runWithCacheScope, } from "./hooks.js";
|
|
4
|
-
import { isDangerousHtmlAttribute, isDangerousHtmlOptIn } from "./url-safety.js";
|
|
4
|
+
import { isDangerousHtmlAttribute, isDangerousHtmlOptIn, isUnsafeMetaRefreshContent, isUnsafeUrlAttribute, } from "./url-safety.js";
|
|
5
5
|
import { escapeHtmlAttribute as escapeHtml } from "@reckona/mreact-shared/html-escape";
|
|
6
6
|
import { isVoidHtmlElement } from "@reckona/mreact-shared";
|
|
7
7
|
export function renderToString(component, props, options = {}) {
|
|
@@ -105,7 +105,8 @@ function renderElementToString(element, runtime, path) {
|
|
|
105
105
|
return "";
|
|
106
106
|
}
|
|
107
107
|
function renderAttributesToString(props) {
|
|
108
|
-
const
|
|
108
|
+
const sanitizedProps = sanitizeMetaRefreshProps(props);
|
|
109
|
+
const entries = Object.entries(sanitizedProps);
|
|
109
110
|
if (entries.length === 0 ||
|
|
110
111
|
(entries.length === 1 && entries[0]?.[0] === "children")) {
|
|
111
112
|
return "";
|
|
@@ -116,6 +117,19 @@ function renderAttributesToString(props) {
|
|
|
116
117
|
}
|
|
117
118
|
return attributes;
|
|
118
119
|
}
|
|
120
|
+
function sanitizeMetaRefreshProps(props) {
|
|
121
|
+
const httpEquiv = props["http-equiv"] ?? props.httpEquiv;
|
|
122
|
+
const content = props.content;
|
|
123
|
+
if (typeof httpEquiv !== "string" || typeof content !== "string") {
|
|
124
|
+
return props;
|
|
125
|
+
}
|
|
126
|
+
if (!isUnsafeMetaRefreshContent(httpEquiv, content)) {
|
|
127
|
+
return props;
|
|
128
|
+
}
|
|
129
|
+
const sanitized = { ...props };
|
|
130
|
+
delete sanitized.content;
|
|
131
|
+
return sanitized;
|
|
132
|
+
}
|
|
119
133
|
function isClassComponentType(value) {
|
|
120
134
|
return (typeof value === "function" &&
|
|
121
135
|
typeof value.prototype?.render === "function");
|
|
@@ -169,7 +183,7 @@ function renderHtmlAttribute(name, value) {
|
|
|
169
183
|
if (name === "children" ||
|
|
170
184
|
name === "key" ||
|
|
171
185
|
name === "ref" ||
|
|
172
|
-
/^on
|
|
186
|
+
/^on/i.test(name) ||
|
|
173
187
|
value === null ||
|
|
174
188
|
value === undefined ||
|
|
175
189
|
typeof value === "function") {
|
|
@@ -180,6 +194,12 @@ function renderHtmlAttribute(name, value) {
|
|
|
180
194
|
return style === "" ? "" : ` style="${escapeHtml(style)}"`;
|
|
181
195
|
}
|
|
182
196
|
const attributeName = toHtmlAttributeName(name);
|
|
197
|
+
if (!VALID_ATTRIBUTE_NAME.test(attributeName)) {
|
|
198
|
+
return "";
|
|
199
|
+
}
|
|
200
|
+
if (/^on/i.test(attributeName)) {
|
|
201
|
+
return "";
|
|
202
|
+
}
|
|
183
203
|
if (typeof value === "boolean" && isBooleanishStringAttribute(attributeName)) {
|
|
184
204
|
return ` ${attributeName}="${value ? "true" : "false"}"`;
|
|
185
205
|
}
|
|
@@ -200,8 +220,13 @@ function renderHtmlAttribute(name, value) {
|
|
|
200
220
|
if (value === true) {
|
|
201
221
|
return ` ${attributeName}=""`;
|
|
202
222
|
}
|
|
203
|
-
|
|
223
|
+
const stringValue = String(value);
|
|
224
|
+
if (isUnsafeUrlAttribute(attributeName, stringValue)) {
|
|
225
|
+
return "";
|
|
226
|
+
}
|
|
227
|
+
return ` ${attributeName}="${escapeHtml(stringValue)}"`;
|
|
204
228
|
}
|
|
229
|
+
const VALID_ATTRIBUTE_NAME = /^[A-Za-z_][\w.\-:]*$/;
|
|
205
230
|
function isBooleanishStringAttribute(name) {
|
|
206
231
|
const attributeName = toHtmlAttributeName(name).toLowerCase();
|
|
207
232
|
return attributeName.startsWith("aria-") || BOOLEANISH_STRING_ATTRIBUTES.has(attributeName);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-render.js","sourceRoot":"","sources":["../src/server-render.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Activity,\n FORWARD_REF_TYPE,\n Fragment,\n MEMO_TYPE,\n Profiler,\n isReactCompatElement,\n type ForwardRefType,\n type MemoType,\n type ReactCompatElement,\n type ReactCompatNode,\n} from \"./element.js\";\nimport {\n consumerContext,\n isReactCompatConsumer,\n isReactCompatProvider,\n renderWithContextProvider,\n useContext,\n} from \"./context.js\";\nimport {\n createCacheScope,\n createRootRuntime,\n renderWithRootRuntime,\n runWithCacheScope,\n type RootRuntime,\n type RootRuntimeOptions,\n} from \"./hooks.js\";\nimport { isDangerousHtmlAttribute, isDangerousHtmlOptIn } from \"./url-safety.js\";\nimport { escapeHtmlAttribute as escapeHtml } from \"@reckona/mreact-shared/html-escape\";\nimport { isVoidHtmlElement } from \"@reckona/mreact-shared\";\n\nexport function renderToString<TProps>(\n component:\n | ((props: TProps) => ReactCompatNode)\n | (new (props: TProps) => { render(): ReactCompatNode }),\n props?: TProps,\n options: RootRuntimeOptions = {},\n): string {\n const runtime = createRootRuntime(() => undefined, {\n ...options,\n idMode: \"server\",\n });\n\n return runWithCacheScope(createCacheScope(), () => {\n try {\n const rendered = renderWithRootRuntime(runtime, \"0\", () => {\n if (isClassComponentType(component)) {\n const instance = new component(props as Record<string, unknown>);\n return instance.render();\n }\n\n return (component as (props: TProps) => ReactCompatNode)(props as TProps);\n });\n return typeof rendered === \"string\"\n ? rendered\n : renderNodeToString(rendered, runtime, \"0.0\");\n } finally {\n runtime.dispose();\n }\n });\n}\n\nfunction renderNodeToString(\n node: ReactCompatNode,\n runtime: RootRuntime,\n path: string,\n): string {\n if (node === null || node === undefined || typeof node === \"boolean\") {\n return \"\";\n }\n\n if (typeof node === \"string\" || typeof node === \"number\") {\n return escapeHtml(node);\n }\n\n if (Array.isArray(node)) {\n let html = \"\";\n for (let index = 0; index < node.length; index += 1) {\n html += renderNodeToString(node[index], runtime, `${path}.${index}`);\n }\n return html;\n }\n\n if (!isReactCompatElement(node)) {\n return \"\";\n }\n\n return renderElementToString(node, runtime, path);\n}\n\nfunction renderElementToString(\n element: ReactCompatElement,\n runtime: RootRuntime,\n path: string,\n): string {\n if (typeof element.type === \"string\") {\n if (element.type === \"textarea\") {\n return renderTextareaToString(element, runtime, path);\n }\n\n if (element.type === \"select\") {\n return renderSelectToString(element, runtime, path);\n }\n\n const attributes =\n element.type === \"input\"\n ? renderInputAttributesToString(element.props)\n : renderAttributesToString(element.props);\n if (isVoidHtmlElement(element.type)) {\n return `<${element.type}${attributes}/>`;\n }\n\n return `<${element.type}${attributes}>${renderNodeToString(element.props.children, runtime, `${path}.children`)}</${element.type}>`;\n }\n\n if (element.type === Fragment) {\n return renderNodeToString(element.props.children, runtime, `${path}.fragment`);\n }\n\n if (element.type === Activity) {\n if ((element.props as { mode?: unknown }).mode === \"hidden\") {\n return \"\";\n }\n\n return `<!--&-->${renderNodeToString(element.props.children, runtime, `${path}.activity`)}<!--/&-->`;\n }\n\n if (element.type === Profiler) {\n return renderNodeToString(element.props.children, runtime, `${path}.profiler`);\n }\n\n if (isReactCompatProvider(element.type)) {\n return renderWithContextProvider(\n element.type,\n (element.props as { value?: unknown }).value,\n () => renderNodeToString(element.props.children, runtime, `${path}.provider`),\n );\n }\n\n if (isReactCompatConsumer(element.type)) {\n const children = element.props.children;\n\n if (typeof children === \"function\") {\n return renderNodeToString(\n (children as (value: unknown) => ReactCompatNode)(useContext(consumerContext(element.type))),\n runtime,\n `${path}.consumer`,\n );\n }\n\n return \"\";\n }\n\n if (isForwardRefType(element.type)) {\n const forwardRefType = element.type;\n return renderNodeToString(\n renderWithRootRuntime(runtime, path, () =>\n forwardRefType.render(element.props, element.ref),\n ),\n runtime,\n `${path}.forwardRef`,\n );\n }\n\n if (isMemoType(element.type)) {\n return renderNodeToString(\n {\n ...element,\n type: element.type.type,\n },\n runtime,\n `${path}.memo`,\n );\n }\n\n if (isClassComponentType(element.type)) {\n const instance = new element.type(element.props);\n return renderNodeToString(\n renderWithRootRuntime(runtime, path, () => instance.render()),\n runtime,\n `${path}.class`,\n );\n }\n\n if (typeof element.type === \"function\") {\n const component = element.type as (props: typeof element.props) => ReactCompatNode;\n return renderNodeToString(\n renderWithRootRuntime(runtime, path, () => component(element.props)),\n runtime,\n `${path}.0`,\n );\n }\n\n return \"\";\n}\n\nfunction renderAttributesToString(props: Record<string, unknown>): string {\n const entries = Object.entries(props);\n if (\n entries.length === 0 ||\n (entries.length === 1 && entries[0]?.[0] === \"children\")\n ) {\n return \"\";\n }\n\n let attributes = \"\";\n for (const [name, value] of entries) {\n attributes += renderHtmlAttribute(name, value);\n }\n return attributes;\n}\n\nfunction isClassComponentType(\n value: unknown,\n): value is new (props: Record<string, unknown>) => { render(): ReactCompatNode } {\n return (\n typeof value === \"function\" &&\n typeof (value as { prototype?: { render?: unknown } }).prototype?.render === \"function\"\n );\n}\n\nfunction renderTextareaToString(\n element: ReactCompatElement,\n runtime: RootRuntime,\n path: string,\n): string {\n const value =\n (element.props as { value?: unknown; defaultValue?: unknown }).value ??\n (element.props as { value?: unknown; defaultValue?: unknown }).defaultValue ??\n element.props.children;\n const attributes = Object.entries(element.props)\n .filter(([name]) => name !== \"value\" && name !== \"defaultValue\")\n .map(([name, child]) => renderHtmlAttribute(name, child))\n .filter((attribute) => attribute !== \"\")\n .join(\"\");\n\n return `<textarea${attributes}>${renderNodeToString(value as ReactCompatNode, runtime, `${path}.textarea`)}</textarea>`;\n}\n\nfunction renderSelectToString(\n element: ReactCompatElement,\n runtime: RootRuntime,\n path: string,\n): string {\n const selectedValue =\n (element.props as { value?: unknown; defaultValue?: unknown }).value ??\n (element.props as { value?: unknown; defaultValue?: unknown }).defaultValue;\n const attributes = Object.entries(element.props)\n .filter(([name]) => name !== \"value\" && name !== \"defaultValue\")\n .map(([name, child]) => renderHtmlAttribute(name, child))\n .filter((attribute) => attribute !== \"\")\n .join(\"\");\n\n return `<select${attributes}>${renderSelectChildrenToString(\n element.props.children,\n selectedValue,\n runtime,\n `${path}.select`,\n )}</select>`;\n}\n\nfunction renderSelectChildrenToString(\n children: ReactCompatNode,\n selectedValue: unknown,\n runtime: RootRuntime,\n path: string,\n): string {\n const childArray = Array.isArray(children) ? children : [children];\n\n return childArray.map((child, index) => {\n if (!isReactCompatElement(child) || child.type !== \"option\") {\n return renderNodeToString(child, runtime, `${path}.${index}`);\n }\n\n const optionValue =\n (child.props as { value?: unknown }).value ?? child.props.children;\n const selected =\n selectedValue !== undefined && String(optionValue) === String(selectedValue);\n const props = selected\n ? { ...child.props, selected: true }\n : child.props;\n\n return renderElementToString({ ...child, props }, runtime, `${path}.${index}`);\n }).join(\"\");\n}\n\nfunction renderInputAttributesToString(props: Record<string, unknown>): string {\n const hasValue = props.value !== undefined;\n const hasChecked = props.checked !== undefined;\n\n return Object.entries(props)\n .filter(([name]) =>\n !((name === \"defaultValue\" && hasValue) || (name === \"defaultChecked\" && hasChecked))\n )\n .sort(([leftName], [rightName]) =>\n Number(isInputValueAttribute(leftName)) - Number(isInputValueAttribute(rightName))\n )\n .map(([name, value]) => renderHtmlAttribute(toInputHtmlAttributeName(name), value))\n .filter((attribute) => attribute !== \"\")\n .join(\"\");\n}\n\nfunction renderHtmlAttribute(name: string, value: unknown): string {\n if (\n name === \"children\" ||\n name === \"key\" ||\n name === \"ref\" ||\n /^on[A-Z]/.test(name) ||\n value === null ||\n value === undefined ||\n typeof value === \"function\"\n ) {\n return \"\";\n }\n\n if (name === \"style\") {\n const style = renderStyleAttribute(value);\n return style === \"\" ? \"\" : ` style=\"${escapeHtml(style)}\"`;\n }\n\n const attributeName = toHtmlAttributeName(name);\n\n if (typeof value === \"boolean\" && isBooleanishStringAttribute(attributeName)) {\n return ` ${attributeName}=\"${value ? \"true\" : \"false\"}\"`;\n }\n\n if (typeof value === \"boolean\" && isDataAttribute(attributeName)) {\n return ` ${attributeName}=\"${value ? \"true\" : \"false\"}\"`;\n }\n\n if (value === false) {\n return \"\";\n }\n\n if (isDangerousHtmlAttribute(attributeName)) {\n return isDangerousHtmlOptIn(value)\n ? ` ${attributeName}=\"${escapeHtml(value.__html)}\"`\n : \"\";\n }\n\n if (typeof value === \"object\") {\n return \"\";\n }\n\n if (value === true) {\n return ` ${attributeName}=\"\"`;\n }\n\n return ` ${attributeName}=\"${escapeHtml(value)}\"`;\n}\n\nfunction isBooleanishStringAttribute(name: string): boolean {\n const attributeName = toHtmlAttributeName(name).toLowerCase();\n return attributeName.startsWith(\"aria-\") || BOOLEANISH_STRING_ATTRIBUTES.has(attributeName);\n}\n\nfunction isDataAttribute(name: string): boolean {\n return toHtmlAttributeName(name).toLowerCase().startsWith(\"data-\");\n}\n\nconst BOOLEANISH_STRING_ATTRIBUTES = new Set<string>([\n \"contenteditable\",\n \"draggable\",\n \"spellcheck\",\n]);\n\nfunction isInputValueAttribute(name: string): boolean {\n return name === \"value\" || name === \"defaultValue\";\n}\n\nfunction toInputHtmlAttributeName(name: string): string {\n if (name === \"defaultValue\") {\n return \"value\";\n }\n\n if (name === \"defaultChecked\") {\n return \"checked\";\n }\n\n return name;\n}\n\nfunction toHtmlAttributeName(name: string): string {\n return HTML_ATTRIBUTE_ALIASES[name] ?? name;\n}\n\nconst HTML_ATTRIBUTE_ALIASES: Record<string, string> = {\n acceptCharset: \"accept-charset\",\n autoFocus: \"autofocus\",\n autoPlay: \"autoplay\",\n charSet: \"charset\",\n className: \"class\",\n colSpan: \"colspan\",\n contentEditable: \"contenteditable\",\n crossOrigin: \"crossorigin\",\n encType: \"enctype\",\n formAction: \"formaction\",\n frameBorder: \"frameborder\",\n htmlFor: \"for\",\n httpEquiv: \"http-equiv\",\n maxLength: \"maxlength\",\n minLength: \"minlength\",\n noValidate: \"novalidate\",\n playsInline: \"playsinline\",\n readOnly: \"readOnly\",\n rowSpan: \"rowspan\",\n spellCheck: \"spellcheck\",\n srcDoc: \"srcdoc\",\n srcSet: \"srcset\",\n tabIndex: \"tabindex\",\n useMap: \"usemap\",\n};\n\nfunction renderStyleAttribute(value: unknown): string {\n if (typeof value !== \"object\" || value === null) {\n return \"\";\n }\n\n return Object.entries(value)\n .filter(([, propertyValue]) =>\n propertyValue !== null &&\n propertyValue !== undefined &&\n typeof propertyValue !== \"boolean\" &&\n propertyValue !== \"\",\n )\n .map(([name, propertyValue]) =>\n `${toKebabCase(name)}:${renderCssValue(name, propertyValue)}`,\n )\n .join(\";\");\n}\n\nfunction renderCssValue(name: string, value: unknown): string {\n if (typeof value !== \"number\" || value === 0 || isUnitlessCssProperty(name)) {\n return String(value);\n }\n\n return `${value}px`;\n}\n\nfunction toKebabCase(value: string): string {\n return value.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`);\n}\n\nfunction isUnitlessCssProperty(name: string): boolean {\n return (\n name === \"flex\" ||\n name === \"fontWeight\" ||\n name === \"lineHeight\" ||\n name === \"opacity\" ||\n name === \"order\" ||\n name === \"zIndex\" ||\n name === \"zoom\"\n );\n}\n\nfunction isForwardRefType(value: unknown): value is ForwardRefType {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as { $$typeof?: unknown }).$$typeof === FORWARD_REF_TYPE\n );\n}\n\nfunction isMemoType(value: unknown): value is MemoType {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as { $$typeof?: unknown }).$$typeof === MEMO_TYPE\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"server-render.js","sourceRoot":"","sources":["../src/server-render.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Activity,\n FORWARD_REF_TYPE,\n Fragment,\n MEMO_TYPE,\n Profiler,\n isReactCompatElement,\n type ForwardRefType,\n type MemoType,\n type ReactCompatElement,\n type ReactCompatNode,\n} from \"./element.js\";\nimport {\n consumerContext,\n isReactCompatConsumer,\n isReactCompatProvider,\n renderWithContextProvider,\n useContext,\n} from \"./context.js\";\nimport {\n createCacheScope,\n createRootRuntime,\n renderWithRootRuntime,\n runWithCacheScope,\n type RootRuntime,\n type RootRuntimeOptions,\n} from \"./hooks.js\";\nimport {\n isDangerousHtmlAttribute,\n isDangerousHtmlOptIn,\n isUnsafeMetaRefreshContent,\n isUnsafeUrlAttribute,\n} from \"./url-safety.js\";\nimport { escapeHtmlAttribute as escapeHtml } from \"@reckona/mreact-shared/html-escape\";\nimport { isVoidHtmlElement } from \"@reckona/mreact-shared\";\n\nexport function renderToString<TProps>(\n component:\n | ((props: TProps) => ReactCompatNode)\n | (new (props: TProps) => { render(): ReactCompatNode }),\n props?: TProps,\n options: RootRuntimeOptions = {},\n): string {\n const runtime = createRootRuntime(() => undefined, {\n ...options,\n idMode: \"server\",\n });\n\n return runWithCacheScope(createCacheScope(), () => {\n try {\n const rendered = renderWithRootRuntime(runtime, \"0\", () => {\n if (isClassComponentType(component)) {\n const instance = new component(props as Record<string, unknown>);\n return instance.render();\n }\n\n return (component as (props: TProps) => ReactCompatNode)(props as TProps);\n });\n return typeof rendered === \"string\"\n ? rendered\n : renderNodeToString(rendered, runtime, \"0.0\");\n } finally {\n runtime.dispose();\n }\n });\n}\n\nfunction renderNodeToString(\n node: ReactCompatNode,\n runtime: RootRuntime,\n path: string,\n): string {\n if (node === null || node === undefined || typeof node === \"boolean\") {\n return \"\";\n }\n\n if (typeof node === \"string\" || typeof node === \"number\") {\n return escapeHtml(node);\n }\n\n if (Array.isArray(node)) {\n let html = \"\";\n for (let index = 0; index < node.length; index += 1) {\n html += renderNodeToString(node[index], runtime, `${path}.${index}`);\n }\n return html;\n }\n\n if (!isReactCompatElement(node)) {\n return \"\";\n }\n\n return renderElementToString(node, runtime, path);\n}\n\nfunction renderElementToString(\n element: ReactCompatElement,\n runtime: RootRuntime,\n path: string,\n): string {\n if (typeof element.type === \"string\") {\n if (element.type === \"textarea\") {\n return renderTextareaToString(element, runtime, path);\n }\n\n if (element.type === \"select\") {\n return renderSelectToString(element, runtime, path);\n }\n\n const attributes =\n element.type === \"input\"\n ? renderInputAttributesToString(element.props)\n : renderAttributesToString(element.props);\n if (isVoidHtmlElement(element.type)) {\n return `<${element.type}${attributes}/>`;\n }\n\n return `<${element.type}${attributes}>${renderNodeToString(element.props.children, runtime, `${path}.children`)}</${element.type}>`;\n }\n\n if (element.type === Fragment) {\n return renderNodeToString(element.props.children, runtime, `${path}.fragment`);\n }\n\n if (element.type === Activity) {\n if ((element.props as { mode?: unknown }).mode === \"hidden\") {\n return \"\";\n }\n\n return `<!--&-->${renderNodeToString(element.props.children, runtime, `${path}.activity`)}<!--/&-->`;\n }\n\n if (element.type === Profiler) {\n return renderNodeToString(element.props.children, runtime, `${path}.profiler`);\n }\n\n if (isReactCompatProvider(element.type)) {\n return renderWithContextProvider(\n element.type,\n (element.props as { value?: unknown }).value,\n () => renderNodeToString(element.props.children, runtime, `${path}.provider`),\n );\n }\n\n if (isReactCompatConsumer(element.type)) {\n const children = element.props.children;\n\n if (typeof children === \"function\") {\n return renderNodeToString(\n (children as (value: unknown) => ReactCompatNode)(useContext(consumerContext(element.type))),\n runtime,\n `${path}.consumer`,\n );\n }\n\n return \"\";\n }\n\n if (isForwardRefType(element.type)) {\n const forwardRefType = element.type;\n return renderNodeToString(\n renderWithRootRuntime(runtime, path, () =>\n forwardRefType.render(element.props, element.ref),\n ),\n runtime,\n `${path}.forwardRef`,\n );\n }\n\n if (isMemoType(element.type)) {\n return renderNodeToString(\n {\n ...element,\n type: element.type.type,\n },\n runtime,\n `${path}.memo`,\n );\n }\n\n if (isClassComponentType(element.type)) {\n const instance = new element.type(element.props);\n return renderNodeToString(\n renderWithRootRuntime(runtime, path, () => instance.render()),\n runtime,\n `${path}.class`,\n );\n }\n\n if (typeof element.type === \"function\") {\n const component = element.type as (props: typeof element.props) => ReactCompatNode;\n return renderNodeToString(\n renderWithRootRuntime(runtime, path, () => component(element.props)),\n runtime,\n `${path}.0`,\n );\n }\n\n return \"\";\n}\n\nfunction renderAttributesToString(props: Record<string, unknown>): string {\n const sanitizedProps = sanitizeMetaRefreshProps(props);\n const entries = Object.entries(sanitizedProps);\n if (\n entries.length === 0 ||\n (entries.length === 1 && entries[0]?.[0] === \"children\")\n ) {\n return \"\";\n }\n\n let attributes = \"\";\n for (const [name, value] of entries) {\n attributes += renderHtmlAttribute(name, value);\n }\n return attributes;\n}\n\nfunction sanitizeMetaRefreshProps(\n props: Record<string, unknown>,\n): Record<string, unknown> {\n const httpEquiv = props[\"http-equiv\"] ?? props.httpEquiv;\n const content = props.content;\n if (typeof httpEquiv !== \"string\" || typeof content !== \"string\") {\n return props;\n }\n if (!isUnsafeMetaRefreshContent(httpEquiv, content)) {\n return props;\n }\n\n const sanitized = { ...props };\n delete sanitized.content;\n return sanitized;\n}\n\nfunction isClassComponentType(\n value: unknown,\n): value is new (props: Record<string, unknown>) => { render(): ReactCompatNode } {\n return (\n typeof value === \"function\" &&\n typeof (value as { prototype?: { render?: unknown } }).prototype?.render === \"function\"\n );\n}\n\nfunction renderTextareaToString(\n element: ReactCompatElement,\n runtime: RootRuntime,\n path: string,\n): string {\n const value =\n (element.props as { value?: unknown; defaultValue?: unknown }).value ??\n (element.props as { value?: unknown; defaultValue?: unknown }).defaultValue ??\n element.props.children;\n const attributes = Object.entries(element.props)\n .filter(([name]) => name !== \"value\" && name !== \"defaultValue\")\n .map(([name, child]) => renderHtmlAttribute(name, child))\n .filter((attribute) => attribute !== \"\")\n .join(\"\");\n\n return `<textarea${attributes}>${renderNodeToString(value as ReactCompatNode, runtime, `${path}.textarea`)}</textarea>`;\n}\n\nfunction renderSelectToString(\n element: ReactCompatElement,\n runtime: RootRuntime,\n path: string,\n): string {\n const selectedValue =\n (element.props as { value?: unknown; defaultValue?: unknown }).value ??\n (element.props as { value?: unknown; defaultValue?: unknown }).defaultValue;\n const attributes = Object.entries(element.props)\n .filter(([name]) => name !== \"value\" && name !== \"defaultValue\")\n .map(([name, child]) => renderHtmlAttribute(name, child))\n .filter((attribute) => attribute !== \"\")\n .join(\"\");\n\n return `<select${attributes}>${renderSelectChildrenToString(\n element.props.children,\n selectedValue,\n runtime,\n `${path}.select`,\n )}</select>`;\n}\n\nfunction renderSelectChildrenToString(\n children: ReactCompatNode,\n selectedValue: unknown,\n runtime: RootRuntime,\n path: string,\n): string {\n const childArray = Array.isArray(children) ? children : [children];\n\n return childArray.map((child, index) => {\n if (!isReactCompatElement(child) || child.type !== \"option\") {\n return renderNodeToString(child, runtime, `${path}.${index}`);\n }\n\n const optionValue =\n (child.props as { value?: unknown }).value ?? child.props.children;\n const selected =\n selectedValue !== undefined && String(optionValue) === String(selectedValue);\n const props = selected\n ? { ...child.props, selected: true }\n : child.props;\n\n return renderElementToString({ ...child, props }, runtime, `${path}.${index}`);\n }).join(\"\");\n}\n\nfunction renderInputAttributesToString(props: Record<string, unknown>): string {\n const hasValue = props.value !== undefined;\n const hasChecked = props.checked !== undefined;\n\n return Object.entries(props)\n .filter(([name]) =>\n !((name === \"defaultValue\" && hasValue) || (name === \"defaultChecked\" && hasChecked))\n )\n .sort(([leftName], [rightName]) =>\n Number(isInputValueAttribute(leftName)) - Number(isInputValueAttribute(rightName))\n )\n .map(([name, value]) => renderHtmlAttribute(toInputHtmlAttributeName(name), value))\n .filter((attribute) => attribute !== \"\")\n .join(\"\");\n}\n\nfunction renderHtmlAttribute(name: string, value: unknown): string {\n if (\n name === \"children\" ||\n name === \"key\" ||\n name === \"ref\" ||\n /^on/i.test(name) ||\n value === null ||\n value === undefined ||\n typeof value === \"function\"\n ) {\n return \"\";\n }\n\n if (name === \"style\") {\n const style = renderStyleAttribute(value);\n return style === \"\" ? \"\" : ` style=\"${escapeHtml(style)}\"`;\n }\n\n const attributeName = toHtmlAttributeName(name);\n\n if (!VALID_ATTRIBUTE_NAME.test(attributeName)) {\n return \"\";\n }\n\n if (/^on/i.test(attributeName)) {\n return \"\";\n }\n\n if (typeof value === \"boolean\" && isBooleanishStringAttribute(attributeName)) {\n return ` ${attributeName}=\"${value ? \"true\" : \"false\"}\"`;\n }\n\n if (typeof value === \"boolean\" && isDataAttribute(attributeName)) {\n return ` ${attributeName}=\"${value ? \"true\" : \"false\"}\"`;\n }\n\n if (value === false) {\n return \"\";\n }\n\n if (isDangerousHtmlAttribute(attributeName)) {\n return isDangerousHtmlOptIn(value)\n ? ` ${attributeName}=\"${escapeHtml(value.__html)}\"`\n : \"\";\n }\n\n if (typeof value === \"object\") {\n return \"\";\n }\n\n if (value === true) {\n return ` ${attributeName}=\"\"`;\n }\n\n const stringValue = String(value);\n\n if (isUnsafeUrlAttribute(attributeName, stringValue)) {\n return \"\";\n }\n\n return ` ${attributeName}=\"${escapeHtml(stringValue)}\"`;\n}\n\nconst VALID_ATTRIBUTE_NAME = /^[A-Za-z_][\\w.\\-:]*$/;\n\nfunction isBooleanishStringAttribute(name: string): boolean {\n const attributeName = toHtmlAttributeName(name).toLowerCase();\n return attributeName.startsWith(\"aria-\") || BOOLEANISH_STRING_ATTRIBUTES.has(attributeName);\n}\n\nfunction isDataAttribute(name: string): boolean {\n return toHtmlAttributeName(name).toLowerCase().startsWith(\"data-\");\n}\n\nconst BOOLEANISH_STRING_ATTRIBUTES = new Set<string>([\n \"contenteditable\",\n \"draggable\",\n \"spellcheck\",\n]);\n\nfunction isInputValueAttribute(name: string): boolean {\n return name === \"value\" || name === \"defaultValue\";\n}\n\nfunction toInputHtmlAttributeName(name: string): string {\n if (name === \"defaultValue\") {\n return \"value\";\n }\n\n if (name === \"defaultChecked\") {\n return \"checked\";\n }\n\n return name;\n}\n\nfunction toHtmlAttributeName(name: string): string {\n return HTML_ATTRIBUTE_ALIASES[name] ?? name;\n}\n\nconst HTML_ATTRIBUTE_ALIASES: Record<string, string> = {\n acceptCharset: \"accept-charset\",\n autoFocus: \"autofocus\",\n autoPlay: \"autoplay\",\n charSet: \"charset\",\n className: \"class\",\n colSpan: \"colspan\",\n contentEditable: \"contenteditable\",\n crossOrigin: \"crossorigin\",\n encType: \"enctype\",\n formAction: \"formaction\",\n frameBorder: \"frameborder\",\n htmlFor: \"for\",\n httpEquiv: \"http-equiv\",\n maxLength: \"maxlength\",\n minLength: \"minlength\",\n noValidate: \"novalidate\",\n playsInline: \"playsinline\",\n readOnly: \"readOnly\",\n rowSpan: \"rowspan\",\n spellCheck: \"spellcheck\",\n srcDoc: \"srcdoc\",\n srcSet: \"srcset\",\n tabIndex: \"tabindex\",\n useMap: \"usemap\",\n};\n\nfunction renderStyleAttribute(value: unknown): string {\n if (typeof value !== \"object\" || value === null) {\n return \"\";\n }\n\n return Object.entries(value)\n .filter(([, propertyValue]) =>\n propertyValue !== null &&\n propertyValue !== undefined &&\n typeof propertyValue !== \"boolean\" &&\n propertyValue !== \"\",\n )\n .map(([name, propertyValue]) =>\n `${toKebabCase(name)}:${renderCssValue(name, propertyValue)}`,\n )\n .join(\";\");\n}\n\nfunction renderCssValue(name: string, value: unknown): string {\n if (typeof value !== \"number\" || value === 0 || isUnitlessCssProperty(name)) {\n return String(value);\n }\n\n return `${value}px`;\n}\n\nfunction toKebabCase(value: string): string {\n return value.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`);\n}\n\nfunction isUnitlessCssProperty(name: string): boolean {\n return (\n name === \"flex\" ||\n name === \"fontWeight\" ||\n name === \"lineHeight\" ||\n name === \"opacity\" ||\n name === \"order\" ||\n name === \"zIndex\" ||\n name === \"zoom\"\n );\n}\n\nfunction isForwardRefType(value: unknown): value is ForwardRefType {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as { $$typeof?: unknown }).$$typeof === FORWARD_REF_TYPE\n );\n}\n\nfunction isMemoType(value: unknown): value is MemoType {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as { $$typeof?: unknown }).$$typeof === MEMO_TYPE\n );\n}\n"]}
|
package/dist/url-safety.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { isDangerousHtmlAttribute, isDangerousHtmlOptIn, isSrcsetAttribute, isUnsafeUrlAttribute, isUrlAttribute, } from "@reckona/mreact-shared/url-safety";
|
|
1
|
+
export { isDangerousHtmlAttribute, isDangerousHtmlOptIn, isSrcsetAttribute, isUnsafeMetaRefreshContent, isUnsafeUrlAttribute, isUrlAttribute, } from "@reckona/mreact-shared/url-safety";
|
|
2
2
|
//# sourceMappingURL=url-safety.d.ts.map
|
package/dist/url-safety.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url-safety.d.ts","sourceRoot":"","sources":["../src/url-safety.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,GACf,MAAM,mCAAmC,CAAC"}
|
|
1
|
+
{"version":3,"file":"url-safety.d.ts","sourceRoot":"","sources":["../src/url-safety.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,iBAAiB,EACjB,0BAA0B,EAC1B,oBAAoB,EACpB,cAAc,GACf,MAAM,mCAAmC,CAAC"}
|
package/dist/url-safety.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { isDangerousHtmlAttribute, isDangerousHtmlOptIn, isSrcsetAttribute, isUnsafeUrlAttribute, isUrlAttribute, } from "@reckona/mreact-shared/url-safety";
|
|
1
|
+
export { isDangerousHtmlAttribute, isDangerousHtmlOptIn, isSrcsetAttribute, isUnsafeMetaRefreshContent, isUnsafeUrlAttribute, isUrlAttribute, } from "@reckona/mreact-shared/url-safety";
|
|
2
2
|
//# sourceMappingURL=url-safety.js.map
|
package/dist/url-safety.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url-safety.js","sourceRoot":"","sources":["../src/url-safety.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,GACf,MAAM,mCAAmC,CAAC","sourcesContent":["export {\n isDangerousHtmlAttribute,\n isDangerousHtmlOptIn,\n isSrcsetAttribute,\n isUnsafeUrlAttribute,\n isUrlAttribute,\n} from \"@reckona/mreact-shared/url-safety\";\n"]}
|
|
1
|
+
{"version":3,"file":"url-safety.js","sourceRoot":"","sources":["../src/url-safety.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,iBAAiB,EACjB,0BAA0B,EAC1B,oBAAoB,EACpB,cAAc,GACf,MAAM,mCAAmC,CAAC","sourcesContent":["export {\n isDangerousHtmlAttribute,\n isDangerousHtmlOptIn,\n isSrcsetAttribute,\n isUnsafeMetaRefreshContent,\n isUnsafeUrlAttribute,\n isUrlAttribute,\n} from \"@reckona/mreact-shared/url-safety\";\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reckona/mreact-compat",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.140",
|
|
4
4
|
"description": "React-compatible runtime implementation for mreact.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"compatibility",
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
"access": "public"
|
|
70
70
|
},
|
|
71
71
|
"dependencies": {
|
|
72
|
-
"@reckona/mreact-reactive-core": "0.0.
|
|
73
|
-
"@reckona/mreact-shared": "0.0.
|
|
72
|
+
"@reckona/mreact-reactive-core": "0.0.140",
|
|
73
|
+
"@reckona/mreact-shared": "0.0.140"
|
|
74
74
|
}
|
|
75
75
|
}
|