@reckona/mreact-compat 0.0.171 → 0.0.172
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/devtools.js +2 -0
- package/dist/devtools.js.map +1 -1
- package/dist/dom-host-rules.d.ts.map +1 -1
- package/dist/dom-host-rules.js +4 -1
- package/dist/dom-host-rules.js.map +1 -1
- package/dist/dom-props.js +2 -1
- package/dist/dom-props.js.map +1 -1
- package/dist/element.d.ts +13 -1
- package/dist/element.d.ts.map +1 -1
- package/dist/element.js +30 -2
- package/dist/element.js.map +1 -1
- package/dist/fiber-commit.js +2 -1
- package/dist/fiber-commit.js.map +1 -1
- package/dist/fiber-host.d.ts +1 -1
- package/dist/fiber-host.d.ts.map +1 -1
- package/dist/fiber-host.js +1 -1
- package/dist/fiber-host.js.map +1 -1
- package/dist/fiber.d.ts +2 -1
- package/dist/fiber.d.ts.map +1 -1
- package/dist/fiber.js +2 -0
- package/dist/fiber.js.map +1 -1
- package/dist/hooks.d.ts +7 -0
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +122 -41
- package/dist/hooks.js.map +1 -1
- package/dist/host-reconciler.d.ts +1 -0
- package/dist/host-reconciler.d.ts.map +1 -1
- package/dist/host-reconciler.js +659 -50
- package/dist/host-reconciler.js.map +1 -1
- package/dist/jsx-dev-runtime.d.ts +3 -1
- package/dist/jsx-dev-runtime.d.ts.map +1 -1
- package/dist/jsx-dev-runtime.js +3 -1
- package/dist/jsx-dev-runtime.js.map +1 -1
- package/dist/jsx-runtime.d.ts +4 -2
- package/dist/jsx-runtime.d.ts.map +1 -1
- package/dist/jsx-runtime.js +9 -1
- package/dist/jsx-runtime.js.map +1 -1
- package/dist/reactive-prop-cell.d.ts +13 -0
- package/dist/reactive-prop-cell.d.ts.map +1 -0
- package/dist/reactive-prop-cell.js +36 -0
- package/dist/reactive-prop-cell.js.map +1 -0
- package/dist/root.d.ts.map +1 -1
- package/dist/root.js +3 -1
- package/dist/root.js.map +1 -1
- package/package.json +3 -3
- package/src/devtools.ts +2 -0
- package/src/dom-host-rules.ts +4 -1
- package/src/dom-props.ts +2 -1
- package/src/element.ts +60 -3
- package/src/fiber-commit.ts +3 -1
- package/src/fiber-host.ts +1 -0
- package/src/fiber.ts +4 -0
- package/src/hooks.ts +173 -41
- package/src/host-reconciler.ts +979 -64
- package/src/jsx-dev-runtime.ts +4 -0
- package/src/jsx-runtime.ts +16 -0
- package/src/reactive-prop-cell.ts +67 -0
- package/src/root.ts +3 -0
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import { Fragment, REACTIVE_TEXT_BINDING_META } from "./jsx-runtime.js";
|
|
1
|
+
import { createReactiveDomBlock, Fragment, REACTIVE_STATE_BINDING_META, REACTIVE_TEXT_BINDING_META } from "./jsx-runtime.js";
|
|
2
2
|
import type { ElementType, ReactCompatElement, ReactCompatNode } from "./element.js";
|
|
3
3
|
import type { JSXIntrinsicAttributes, JSXIntrinsicElements } from "./jsx-runtime.js";
|
|
4
4
|
/** Fragment marker used by the development JSX runtime. */
|
|
5
5
|
export { Fragment };
|
|
6
6
|
/** Metadata key used by compiled JSX for reactive text bindings. */
|
|
7
7
|
export { REACTIVE_TEXT_BINDING_META };
|
|
8
|
+
export { REACTIVE_STATE_BINDING_META };
|
|
9
|
+
export { createReactiveDomBlock };
|
|
8
10
|
/** JSX event and attribute types re-exported by the development JSX runtime. */
|
|
9
11
|
export type { FormEvent, FormEventHandler, JSXEvent, JSXEventHandler, JSXHTMLAttributes, JSXIntrinsicAttributes, JSXIntrinsicElements, } from "./jsx-runtime.js";
|
|
10
12
|
/** JSX namespace exported by the development JSX runtime. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsx-dev-runtime.d.ts","sourceRoot":"","sources":["../src/jsx-dev-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,0BAA0B,EAE3B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAClB,eAAe,EAChB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EACV,sBAAsB,EACtB,oBAAoB,EACrB,MAAM,kBAAkB,CAAC;AAE1B,2DAA2D;AAC3D,OAAO,EAAE,QAAQ,EAAE,CAAC;AACpB,oEAAoE;AACpE,OAAO,EAAE,0BAA0B,EAAE,CAAC;AACtC,gFAAgF;AAChF,YAAY,EACV,SAAS,EACT,gBAAgB,EAChB,QAAQ,EACR,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAE1B,6DAA6D;AAC7D,yBAAiB,GAAG,CAAC;IACnB,UAAiB,OAAQ,SAAQ,kBAAkB;KAAG;IAEtD,UAAiB,mBAAoB,SAAQ,sBAAsB;KAAG;IAEtE,UAAiB,iBAAkB,SAAQ,oBAAoB;KAAG;CACnE;AAED,iEAAiE;AACjE,wBAAgB,MAAM,CAAC,CAAC,SAAS,MAAM,EACrC,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,EAAE,OAAO,EACZ,iBAAiB,EAAE,OAAO,EAC1B,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,OAAO,GACb,kBAAkB,CAAC,CAAC,CAAC,CAEvB"}
|
|
1
|
+
{"version":3,"file":"jsx-dev-runtime.d.ts","sourceRoot":"","sources":["../src/jsx-dev-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,QAAQ,EACR,2BAA2B,EAC3B,0BAA0B,EAE3B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAClB,eAAe,EAChB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EACV,sBAAsB,EACtB,oBAAoB,EACrB,MAAM,kBAAkB,CAAC;AAE1B,2DAA2D;AAC3D,OAAO,EAAE,QAAQ,EAAE,CAAC;AACpB,oEAAoE;AACpE,OAAO,EAAE,0BAA0B,EAAE,CAAC;AACtC,OAAO,EAAE,2BAA2B,EAAE,CAAC;AACvC,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAClC,gFAAgF;AAChF,YAAY,EACV,SAAS,EACT,gBAAgB,EAChB,QAAQ,EACR,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAE1B,6DAA6D;AAC7D,yBAAiB,GAAG,CAAC;IACnB,UAAiB,OAAQ,SAAQ,kBAAkB;KAAG;IAEtD,UAAiB,mBAAoB,SAAQ,sBAAsB;KAAG;IAEtE,UAAiB,iBAAkB,SAAQ,oBAAoB;KAAG;CACnE;AAED,iEAAiE;AACjE,wBAAgB,MAAM,CAAC,CAAC,SAAS,MAAM,EACrC,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,EAAE,OAAO,EACZ,iBAAiB,EAAE,OAAO,EAC1B,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,OAAO,GACb,kBAAkB,CAAC,CAAC,CAAC,CAEvB"}
|
package/dist/jsx-dev-runtime.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { Fragment, REACTIVE_TEXT_BINDING_META, jsx, } from "./jsx-runtime.js";
|
|
1
|
+
import { createReactiveDomBlock, Fragment, REACTIVE_STATE_BINDING_META, REACTIVE_TEXT_BINDING_META, jsx, } from "./jsx-runtime.js";
|
|
2
2
|
/** Fragment marker used by the development JSX runtime. */
|
|
3
3
|
export { Fragment };
|
|
4
4
|
/** Metadata key used by compiled JSX for reactive text bindings. */
|
|
5
5
|
export { REACTIVE_TEXT_BINDING_META };
|
|
6
|
+
export { REACTIVE_STATE_BINDING_META };
|
|
7
|
+
export { createReactiveDomBlock };
|
|
6
8
|
/** Creates a JSX element with development metadata arguments. */
|
|
7
9
|
export function jsxDEV(type, props, key, _isStaticChildren, _source, _self) {
|
|
8
10
|
return jsx(type, props, key);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsx-dev-runtime.js","sourceRoot":"","sources":["../src/jsx-dev-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,0BAA0B,EAC1B,GAAG,GACJ,MAAM,kBAAkB,CAAC;AAW1B,2DAA2D;AAC3D,OAAO,EAAE,QAAQ,EAAE,CAAC;AACpB,oEAAoE;AACpE,OAAO,EAAE,0BAA0B,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"jsx-dev-runtime.js","sourceRoot":"","sources":["../src/jsx-dev-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,QAAQ,EACR,2BAA2B,EAC3B,0BAA0B,EAC1B,GAAG,GACJ,MAAM,kBAAkB,CAAC;AAW1B,2DAA2D;AAC3D,OAAO,EAAE,QAAQ,EAAE,CAAC;AACpB,oEAAoE;AACpE,OAAO,EAAE,0BAA0B,EAAE,CAAC;AACtC,OAAO,EAAE,2BAA2B,EAAE,CAAC;AACvC,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAqBlC,iEAAiE;AACjE,MAAM,UAAU,MAAM,CACpB,IAAoB,EACpB,KAAgF,EAChF,GAAY,EACZ,iBAA0B,EAC1B,OAAgB,EAChB,KAAc;IAEd,OAAO,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC","sourcesContent":["import {\n createReactiveDomBlock,\n Fragment,\n REACTIVE_STATE_BINDING_META,\n REACTIVE_TEXT_BINDING_META,\n jsx,\n} from \"./jsx-runtime.js\";\nimport type {\n ElementType,\n ReactCompatElement,\n ReactCompatNode,\n} from \"./element.js\";\nimport type {\n JSXIntrinsicAttributes,\n JSXIntrinsicElements,\n} from \"./jsx-runtime.js\";\n\n/** Fragment marker used by the development JSX runtime. */\nexport { Fragment };\n/** Metadata key used by compiled JSX for reactive text bindings. */\nexport { REACTIVE_TEXT_BINDING_META };\nexport { REACTIVE_STATE_BINDING_META };\nexport { createReactiveDomBlock };\n/** JSX event and attribute types re-exported by the development JSX runtime. */\nexport type {\n FormEvent,\n FormEventHandler,\n JSXEvent,\n JSXEventHandler,\n JSXHTMLAttributes,\n JSXIntrinsicAttributes,\n JSXIntrinsicElements,\n} from \"./jsx-runtime.js\";\n\n/** JSX namespace exported by the development JSX runtime. */\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\n/** Creates a JSX element with development metadata arguments. */\nexport function jsxDEV<P extends object>(\n type: ElementType<P>,\n props: (P & { children?: ReactCompatNode; key?: unknown; ref?: unknown }) | null,\n key: unknown,\n _isStaticChildren: boolean,\n _source: unknown,\n _self: unknown,\n): ReactCompatElement<P> {\n return jsx(type, props, key);\n}\n"]}
|
package/dist/jsx-runtime.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import { Fragment, REACTIVE_TEXT_BINDING_META } from "./element.js";
|
|
2
|
-
import type { ElementType, ReactCompatElement, ReactCompatNode } from "./element.js";
|
|
1
|
+
import { Fragment, REACTIVE_STATE_BINDING_META, REACTIVE_TEXT_BINDING_META } from "./element.js";
|
|
2
|
+
import type { ElementType, ReactiveDomBlockProps, ReactiveDomBlockRender, ReactCompatElement, ReactCompatNode } from "./element.js";
|
|
3
3
|
/** Fragment marker used by the automatic JSX runtime. */
|
|
4
4
|
export { Fragment };
|
|
5
5
|
/** Metadata key used by compiled JSX for reactive text bindings. */
|
|
6
6
|
export { REACTIVE_TEXT_BINDING_META };
|
|
7
|
+
export { REACTIVE_STATE_BINDING_META };
|
|
8
|
+
export declare function createReactiveDomBlock<P extends object = Record<string, unknown>>(render: ReactiveDomBlockRender<P>, blockProps?: P): ReactCompatElement<ReactiveDomBlockProps>;
|
|
7
9
|
/** DOM event type with a narrowed currentTarget. */
|
|
8
10
|
export type JSXEvent<TCurrentTarget extends EventTarget, TEvent extends Event = Event> = TEvent & {
|
|
9
11
|
readonly currentTarget: TCurrentTarget;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsx-runtime.d.ts","sourceRoot":"","sources":["../src/jsx-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,
|
|
1
|
+
{"version":3,"file":"jsx-runtime.d.ts","sourceRoot":"","sources":["../src/jsx-runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/jsx-runtime.js
CHANGED
|
@@ -1,8 +1,16 @@
|
|
|
1
|
-
import { createElementFromJsxConfig, Fragment, REACTIVE_TEXT_BINDING_META, } from "./element.js";
|
|
1
|
+
import { createElementFromJsxConfig, Fragment, REACTIVE_DOM_BLOCK_TYPE, REACTIVE_STATE_BINDING_META, REACTIVE_TEXT_BINDING_META, } from "./element.js";
|
|
2
2
|
/** Fragment marker used by the automatic JSX runtime. */
|
|
3
3
|
export { Fragment };
|
|
4
4
|
/** Metadata key used by compiled JSX for reactive text bindings. */
|
|
5
5
|
export { REACTIVE_TEXT_BINDING_META };
|
|
6
|
+
export { REACTIVE_STATE_BINDING_META };
|
|
7
|
+
export function createReactiveDomBlock(render, blockProps) {
|
|
8
|
+
const props = { render: render };
|
|
9
|
+
if (blockProps !== undefined) {
|
|
10
|
+
props.blockProps = blockProps;
|
|
11
|
+
}
|
|
12
|
+
return createElementFromJsxConfig(REACTIVE_DOM_BLOCK_TYPE, props);
|
|
13
|
+
}
|
|
6
14
|
/** Creates a single-child JSX element for the automatic JSX runtime. */
|
|
7
15
|
export function jsx(type, props, key) {
|
|
8
16
|
return createElementFromJsx(type, props, key);
|
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,EACL,0BAA0B,EAC1B,QAAQ,EACR,0BAA0B,GAC3B,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"jsx-runtime.js","sourceRoot":"","sources":["../src/jsx-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,QAAQ,EACR,uBAAuB,EACvB,2BAA2B,EAC3B,0BAA0B,GAC3B,MAAM,cAAc,CAAC;AAStB,yDAAyD;AACzD,OAAO,EAAE,QAAQ,EAAE,CAAC;AACpB,oEAAoE;AACpE,OAAO,EAAE,0BAA0B,EAAE,CAAC;AACtC,OAAO,EAAE,2BAA2B,EAAE,CAAC;AAEvC,MAAM,UAAU,sBAAsB,CACpC,MAAiC,EACjC,UAAc;IAEd,MAAM,KAAK,GAA0B,EAAE,MAAM,EAAE,MAAgC,EAAE,CAAC;IAClF,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,KAAK,CAAC,UAAU,GAAG,UAAqC,CAAC;IAC3D,CAAC;IACD,OAAO,0BAA0B,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;AACpE,CAAC;AAkFD,wEAAwE;AACxE,MAAM,UAAU,GAAG,CACjB,IAAoB,EACpB,KAAgF,EAChF,GAAa;IAEb,OAAO,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AAChD,CAAC;AAED,uEAAuE;AACvE,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 {\n createElementFromJsxConfig,\n Fragment,\n REACTIVE_DOM_BLOCK_TYPE,\n REACTIVE_STATE_BINDING_META,\n REACTIVE_TEXT_BINDING_META,\n} from \"./element.js\";\nimport type {\n ElementType,\n ReactiveDomBlockProps,\n ReactiveDomBlockRender,\n ReactCompatElement,\n ReactCompatNode,\n} from \"./element.js\";\n\n/** Fragment marker used by the automatic JSX runtime. */\nexport { Fragment };\n/** Metadata key used by compiled JSX for reactive text bindings. */\nexport { REACTIVE_TEXT_BINDING_META };\nexport { REACTIVE_STATE_BINDING_META };\n\nexport function createReactiveDomBlock<P extends object = Record<string, unknown>>(\n render: ReactiveDomBlockRender<P>,\n blockProps?: P,\n): ReactCompatElement<ReactiveDomBlockProps> {\n const props: ReactiveDomBlockProps = { render: render as ReactiveDomBlockRender };\n if (blockProps !== undefined) {\n props.blockProps = blockProps as Record<string, unknown>;\n }\n return createElementFromJsxConfig(REACTIVE_DOM_BLOCK_TYPE, props);\n}\n\n/** DOM event type with a narrowed currentTarget. */\nexport type JSXEvent<\n TCurrentTarget extends EventTarget,\n TEvent extends Event = Event,\n> = TEvent & {\n readonly currentTarget: TCurrentTarget;\n};\n\n/** Event handler type used by JSX DOM attributes. */\nexport type JSXEventHandler<\n TCurrentTarget extends EventTarget,\n TEvent extends Event = Event,\n> = (event: JSXEvent<TCurrentTarget, TEvent>) => unknown;\n\n/** Submit event type used by form-related JSX attributes. */\nexport type FormEvent<TCurrentTarget extends EventTarget = Element> = JSXEvent<\n TCurrentTarget,\n SubmitEvent\n>;\n\n/** Submit event handler type used by form-related JSX attributes. */\nexport type FormEventHandler<TCurrentTarget extends EventTarget = Element> =\n JSXEventHandler<TCurrentTarget, SubmitEvent>;\n\n/** DOM event attributes accepted by JSX elements. */\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\n/** HTML attributes accepted by JSX host elements. */\nexport interface JSXHTMLAttributes<TElement extends HTMLElement>\n extends JSXDOMAttributes<TElement> {\n [attributeName: string]: unknown;\n}\n\n/** Attributes accepted by every JSX element. */\nexport interface JSXIntrinsicAttributes {\n key?: unknown;\n ref?: unknown;\n}\n\n/** Built-in JSX element names and their attribute types. */\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\n/** JSX namespace exported by the automatic JSX runtime. */\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\n/** Creates a single-child JSX element for the automatic JSX runtime. */\nexport function jsx<P extends object>(\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\n/** Creates a multi-child JSX element for the automatic JSX runtime. */\nexport function jsxs<P extends object>(\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 object>(\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"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type Source } from "@reckona/mreact-reactive-core/internal";
|
|
2
|
+
import type { ReactiveDomBlockResult } from "./element.js";
|
|
3
|
+
export interface ReactivePropCell {
|
|
4
|
+
value: Record<string, unknown>;
|
|
5
|
+
source: Source;
|
|
6
|
+
}
|
|
7
|
+
export interface ReactiveDomBlockState extends ReactiveDomBlockResult {
|
|
8
|
+
propCell?: ReactivePropCell | undefined;
|
|
9
|
+
}
|
|
10
|
+
export declare function createReactivePropCell(props: Record<string, unknown>): ReactivePropCell;
|
|
11
|
+
export declare function createReactivePropProxy<P extends object>(cell: ReactivePropCell): P;
|
|
12
|
+
export declare function setReactivePropCell(cell: ReactivePropCell, next: Record<string, unknown>): void;
|
|
13
|
+
//# sourceMappingURL=reactive-prop-cell.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reactive-prop-cell.d.ts","sourceRoot":"","sources":["../src/reactive-prop-cell.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,MAAM,EACZ,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAQ3D,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;CAChB;AAID,MAAM,WAAW,qBAAsB,SAAQ,sBAAsB;IACnE,QAAQ,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;CACzC;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,gBAAgB,CAEvF;AAqBD,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,CAAC,CAEnF;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,gBAAgB,EACtB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,IAAI,CAWN"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { flushQueuedComputations, notifySubscribers, trackSource, } from "@reckona/mreact-reactive-core/internal";
|
|
2
|
+
export function createReactivePropCell(props) {
|
|
3
|
+
return { value: props, source: { subscribers: null } };
|
|
4
|
+
}
|
|
5
|
+
const PROP_PROXY_HANDLER = {
|
|
6
|
+
get(cell, property) {
|
|
7
|
+
trackSource(cell.source);
|
|
8
|
+
return cell.value[property];
|
|
9
|
+
},
|
|
10
|
+
has(cell, property) {
|
|
11
|
+
trackSource(cell.source);
|
|
12
|
+
return property in cell.value;
|
|
13
|
+
},
|
|
14
|
+
ownKeys(cell) {
|
|
15
|
+
trackSource(cell.source);
|
|
16
|
+
return Reflect.ownKeys(cell.value);
|
|
17
|
+
},
|
|
18
|
+
getOwnPropertyDescriptor(cell, property) {
|
|
19
|
+
trackSource(cell.source);
|
|
20
|
+
return Reflect.getOwnPropertyDescriptor(cell.value, property);
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
export function createReactivePropProxy(cell) {
|
|
24
|
+
return new Proxy(cell, PROP_PROXY_HANDLER);
|
|
25
|
+
}
|
|
26
|
+
export function setReactivePropCell(cell, next) {
|
|
27
|
+
if (Object.is(cell.value, next)) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
cell.value = next;
|
|
31
|
+
if (cell.source.subscribers !== null) {
|
|
32
|
+
notifySubscribers(cell.source);
|
|
33
|
+
flushQueuedComputations();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=reactive-prop-cell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reactive-prop-cell.js","sourceRoot":"","sources":["../src/reactive-prop-cell.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,WAAW,GAEZ,MAAM,wCAAwC,CAAC;AAoBhD,MAAM,UAAU,sBAAsB,CAAC,KAA8B;IACnE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC;AACzD,CAAC;AAED,MAAM,kBAAkB,GAAmC;IACzD,GAAG,CAAC,IAAI,EAAE,QAAQ;QAChB,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC,KAAK,CAAC,QAAkB,CAAC,CAAC;IACxC,CAAC;IACD,GAAG,CAAC,IAAI,EAAE,QAAQ;QAChB,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzB,OAAO,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC;IAChC,CAAC;IACD,OAAO,CAAC,IAAI;QACV,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzB,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IACD,wBAAwB,CAAC,IAAI,EAAE,QAAQ;QACrC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzB,OAAO,OAAO,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAChE,CAAC;CACF,CAAC;AAEF,MAAM,UAAU,uBAAuB,CAAmB,IAAsB;IAC9E,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,kBAAkB,CAAiB,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,IAAsB,EACtB,IAA6B;IAE7B,IAAI,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;QAChC,OAAO;IACT,CAAC;IAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IAElB,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;QACrC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/B,uBAAuB,EAAE,CAAC;IAC5B,CAAC;AACH,CAAC","sourcesContent":["import {\n flushQueuedComputations,\n notifySubscribers,\n trackSource,\n type Source,\n} from \"@reckona/mreact-reactive-core/internal\";\nimport type { ReactiveDomBlockResult } from \"./element.js\";\n\n// A stable reactive box over a component's incoming props, analogous to the\n// native keyed list's KeyedItemCell (packages/reactive-dom/src/bind-list.ts).\n// A reactive-dom-block reads its props through a proxy backed by this cell;\n// when the component re-renders with new props the reconciler swaps the cell's\n// value and notifies, so bound text/attributes update without re-running the\n// block's render closure or reconciling its subtree.\nexport interface ReactivePropCell {\n value: Record<string, unknown>;\n source: Source;\n}\n\n// What a reactive-dom-block fiber stores in stateNode: the committed node and\n// its dispose, plus the prop cell when the block bridges component props.\nexport interface ReactiveDomBlockState extends ReactiveDomBlockResult {\n propCell?: ReactivePropCell | undefined;\n}\n\nexport function createReactivePropCell(props: Record<string, unknown>): ReactivePropCell {\n return { value: props, source: { subscribers: null } };\n}\n\nconst PROP_PROXY_HANDLER: ProxyHandler<ReactivePropCell> = {\n get(cell, property) {\n trackSource(cell.source);\n return cell.value[property as string];\n },\n has(cell, property) {\n trackSource(cell.source);\n return property in cell.value;\n },\n ownKeys(cell) {\n trackSource(cell.source);\n return Reflect.ownKeys(cell.value);\n },\n getOwnPropertyDescriptor(cell, property) {\n trackSource(cell.source);\n return Reflect.getOwnPropertyDescriptor(cell.value, property);\n },\n};\n\nexport function createReactivePropProxy<P extends object>(cell: ReactivePropCell): P {\n return new Proxy(cell, PROP_PROXY_HANDLER) as unknown as P;\n}\n\nexport function setReactivePropCell(\n cell: ReactivePropCell,\n next: Record<string, unknown>,\n): void {\n if (Object.is(cell.value, next)) {\n return;\n }\n\n cell.value = next;\n\n if (cell.source.subscribers !== null) {\n notifySubscribers(cell.source);\n flushQueuedComputations();\n }\n}\n"]}
|
package/dist/root.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../src/root.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAUpD,OAAO,EAIL,KAAK,6BAA6B,EAEnC,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAIL,KAAK,sBAAsB,EAC5B,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../src/root.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAUpD,OAAO,EAIL,KAAK,6BAA6B,EAEnC,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAIL,KAAK,sBAAsB,EAC5B,MAAM,mBAAmB,CAAC;AAsB3B,8DAA8D;AAC9D,MAAM,WAAW,IAAI;IACnB,MAAM,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;IACvC,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,uDAAuD;AACvD,MAAM,WAAW,WAAW;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,0DAA0D;AAC1D,MAAM,WAAW,kBAAkB;IACjC,kBAAkB,CAAC,EAAE,CACnB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,6BAA6B,KAChC,IAAI,CAAC;IACV,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,gEAAgE;AAChE,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACtE,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,uDAAuD;AACvD,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC,YAAY,CAAC,EAAE,UAAU,CAAC;IAC1B,YAAY,CAAC,EAAE,UAAU,CAAC;IAC1B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,kBAAkB,CAAC,EAAE,yBAAyB,CAAC;CAChD;AAED,0EAA0E;AAC1E,MAAM,WAAW,yBAAyB;IACxC,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,OAAO,CAAC,EAAE,kBAAkB,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,kBAAkB,CAAC,CAAC;IACtE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;CACzD;AAED,kEAAkE;AAClE,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,CAAC,EAAE,kBAAkB,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,kBAAkB,CAAC,CAAC;CACvE;AAID,+EAA+E;AAC/E,wBAAgB,UAAU,CACxB,SAAS,EAAE,OAAO,EAClB,OAAO,GAAE,WAAgB,GACxB,IAAI,CAwCN;AA2GD,oEAAoE;AACpE,wBAAgB,MAAM,CAAC,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI,CAIzE;AAED,qFAAqF;AACrF,wBAAgB,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,CAEjD;AAED,4EAA4E;AAC5E,wBAAgB,WAAW,CACzB,SAAS,EAAE,OAAO,EAClB,OAAO,EAAE,eAAe,EACxB,OAAO,GAAE,kBAAuB,GAC/B,IAAI,CA4FN;AAcD,+EAA+E;AAC/E,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,OAAO,EAClB,OAAO,GAAE,6BAAkC,GAC1C,sBAAsB,CA0ExB;AAED,wFAAwF;AACxF,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,CAYlE"}
|
package/dist/root.js
CHANGED
|
@@ -6,7 +6,7 @@ import { enableEventHydrationManifestReplay, readEventHydrationManifest, replayQ
|
|
|
6
6
|
import { ContinuousEventLane, SyncLane, TransitionLane, } from "./fiber-lanes.js";
|
|
7
7
|
import { createContainerFiberRoot, enqueueRootRender, } from "./fiber-work-loop.js";
|
|
8
8
|
import { commitFiberRoot, detachFiberRefs } from "./fiber-commit.js";
|
|
9
|
-
import { canRenderHostFiber, commitHydratingHostFiberRoot, renderHydratingHostFiberRoot, renderHostFiberRoot, } from "./fiber-host.js";
|
|
9
|
+
import { canRenderHostFiber, commitHydratingHostFiberRoot, disposeHostFiberResources, renderHydratingHostFiberRoot, renderHostFiberRoot, } from "./fiber-host.js";
|
|
10
10
|
import { renderIntoContainer } from "./reconciler.js";
|
|
11
11
|
const legacyRoots = new WeakMap();
|
|
12
12
|
/** Creates a root that renders React-compatible nodes into a DOM container. */
|
|
@@ -36,6 +36,7 @@ export function createRoot(container, options = {}) {
|
|
|
36
36
|
runtime.currentElement = undefined;
|
|
37
37
|
runtime.dispose();
|
|
38
38
|
detachFiberRefs(fiberRoot.current);
|
|
39
|
+
disposeHostFiberResources(fiberRoot.current);
|
|
39
40
|
runtime.instances.clear();
|
|
40
41
|
unmountDevToolsRoot(container);
|
|
41
42
|
clearElementChildren(container);
|
|
@@ -173,6 +174,7 @@ export function hydrateRoot(container, element, options = {}) {
|
|
|
173
174
|
runtime.currentElement = undefined;
|
|
174
175
|
runtime.dispose();
|
|
175
176
|
detachFiberRefs(fiberRoot.current);
|
|
177
|
+
disposeHostFiberResources(fiberRoot.current);
|
|
176
178
|
runtime.instances.clear();
|
|
177
179
|
unmountDevToolsRoot(container);
|
|
178
180
|
clearElementChildren(container);
|
package/dist/root.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"root.js","sourceRoot":"","sources":["../src/root.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ReactCompatNode } from \"./element.js\";\nimport {\n createRootRuntime,\n flushSyncUpdates,\n hasStableExternalStores,\n type RenderPriority,\n type RootRuntime,\n} from \"./hooks.js\";\nimport { collectOwnedChildNodes, removeChildIfPresent } from \"./dom-children.js\";\nimport { commitDevToolsRoot, unmountDevToolsRoot } from \"./devtools.js\";\nimport {\n applyStreamingHydrationFragments,\n findContainingResumeBoundaryId,\n getHydrationScope,\n type HydrationRecoverableErrorInfo,\n type RenderOptions,\n} from \"./hydration.js\";\nimport {\n enableEventHydrationManifestReplay,\n readEventHydrationManifest,\n replayQueuedHydrationEvents,\n type EventHydrationManifest,\n} from \"./event-replay.js\";\nimport {\n ContinuousEventLane,\n SyncLane,\n TransitionLane,\n type Lane,\n} from \"./fiber-lanes.js\";\nimport {\n createContainerFiberRoot,\n enqueueRootRender,\n} from \"./fiber-work-loop.js\";\nimport { commitFiberRoot, detachFiberRefs } from \"./fiber-commit.js\";\nimport {\n canRenderHostFiber,\n commitHydratingHostFiberRoot,\n renderHydratingHostFiberRoot,\n renderHostFiberRoot,\n} from \"./fiber-host.js\";\nimport type { Fiber, FiberRoot } from \"./fiber.js\";\nimport { renderIntoContainer } from \"./reconciler.js\";\n\n/** Root controller returned by createRoot and hydrateRoot. */\nexport interface Root {\n render(element: ReactCompatNode): void;\n unmount(): void;\n}\n\n/** Options used when creating a client render root. */\nexport interface RootOptions {\n identifierPrefix?: string;\n}\n\n/** Options used when hydrating server-rendered markup. */\nexport interface HydrateRootOptions {\n onRecoverableError?: (\n error: Error,\n info: HydrationRecoverableErrorInfo,\n ) => void;\n resumeId?: string;\n consumeResumeMarkers?: boolean;\n identifierPrefix?: string;\n}\n\n/** Controller for deferred or selective streaming hydration. */\nexport interface StreamingHydrationRoot {\n hydrate(element: ReactCompatNode, options?: HydrateRootOptions): Root;\n dispose(): void;\n}\n\n/** Options for creating a streaming hydration root. */\nexport interface StreamingHydrationRootOptions {\n manifest?: EventHydrationManifest;\n manifestRoot?: ParentNode;\n fragmentRoot?: ParentNode;\n applyOutOfOrderFragments?: boolean;\n observeOutOfOrderFragments?: boolean;\n selectiveHydration?: SelectiveHydrationOptions;\n}\n\n/** Rules that choose which boundary to hydrate after a captured event. */\nexport interface SelectiveHydrationOptions {\n element?: ReactCompatNode;\n options?: HydrateRootOptions | ((event: Event) => HydrateRootOptions);\n boundaries?: Record<string, SelectiveHydrationBoundary>;\n}\n\n/** Element and options used to hydrate one selective boundary. */\nexport interface SelectiveHydrationBoundary {\n element: ReactCompatNode;\n options?: HydrateRootOptions | ((event: Event) => HydrateRootOptions);\n}\n\nconst legacyRoots = new WeakMap<Element, Root>();\n\n/** Creates a root that renders React-compatible nodes into a DOM container. */\nexport function createRoot(\n container: Element,\n options: RootOptions = {},\n): Root {\n const fiberRoot = createContainerFiberRoot(container);\n const runtime = createRootRuntime((priority = \"sync\") => {\n if (runtime.currentElement !== undefined) {\n enqueueRootRender(fiberRoot, runtime.currentElement, laneForRenderPriority(priority), () => {\n if (canRenderHostFiber(runtime.currentElement as ReactCompatNode)) {\n return renderHostFiberIntoContainer(\n container,\n fiberRoot,\n runtime,\n runtime.currentElement as ReactCompatNode,\n );\n }\n\n renderIntoContainer(container, runtime.currentElement, runtime);\n });\n }\n }, options);\n\n return {\n render(element) {\n runtime.currentElement = element;\n enqueueRootRender(fiberRoot, element, SyncLane, () => {\n if (canRenderHostFiber(element)) {\n return renderHostFiberIntoContainer(container, fiberRoot, runtime, element);\n }\n\n renderIntoContainer(container, element, runtime);\n });\n },\n unmount() {\n runtime.currentElement = undefined;\n runtime.dispose();\n detachFiberRefs(fiberRoot.current);\n runtime.instances.clear();\n unmountDevToolsRoot(container);\n clearElementChildren(container);\n },\n };\n}\n\nfunction renderHostFiberIntoContainer(\n container: Element,\n fiberRoot: FiberRoot,\n runtime: RootRuntime,\n element: ReactCompatNode,\n): Fiber {\n for (let attempt = 0; attempt < 25; attempt += 1) {\n const portalSnapshot = beginPortalRender(runtime);\n runtime.beginRender();\n let committed = false;\n\n try {\n const finishedWork = renderHostFiberRoot(fiberRoot, element, runtime);\n\n if (runtime.renderPhaseUpdate) {\n runtime.renderPhaseUpdate = false;\n continue;\n }\n\n if (!hasStableExternalStores(runtime)) {\n continue;\n }\n\n fiberRoot.finishedWork = finishedWork;\n commitFiberRoot(fiberRoot);\n collectPortalNodes(fiberRoot.current, runtime);\n removeStalePortalNodes(portalSnapshot, runtime);\n commitDevToolsRoot(container, fiberRoot);\n runtime.idMode = \"client\";\n committed = true;\n return finishedWork;\n } finally {\n if (!committed) {\n restorePortalRender(runtime, portalSnapshot);\n }\n runtime.endRender(committed);\n if (committed) {\n runtime.flushEffects();\n }\n }\n }\n\n throw new Error(\"Store unstable.\");\n}\n\nfunction renderHydratingHostFiberIntoContainer(\n container: Element,\n fiberRoot: FiberRoot,\n runtime: RootRuntime,\n element: ReactCompatNode,\n options: RenderOptions & {\n resumeId?: string;\n consumeResumeMarkers?: boolean;\n },\n): Fiber {\n for (let attempt = 0; attempt < 25; attempt += 1) {\n const portalSnapshot = beginPortalRender(runtime);\n runtime.beginRender();\n let committed = false;\n\n try {\n const scope = getHydrationScope(container, options.resumeId);\n const finishedWork = renderHydratingHostFiberRoot(\n fiberRoot,\n element,\n runtime,\n scope,\n options,\n );\n\n if (runtime.renderPhaseUpdate) {\n runtime.renderPhaseUpdate = false;\n continue;\n }\n\n if (!hasStableExternalStores(runtime)) {\n continue;\n }\n\n commitHydratingHostFiberRoot(fiberRoot, finishedWork, scope, options);\n fiberRoot.current = finishedWork;\n fiberRoot.current.stateNode = fiberRoot;\n fiberRoot.finishedWork = undefined;\n fiberRoot.workInProgress = undefined;\n fiberRoot.workInProgressRootRenderLanes = 0;\n collectPortalNodes(fiberRoot.current, runtime);\n removeStalePortalNodes(portalSnapshot, runtime);\n commitDevToolsRoot(container, fiberRoot);\n runtime.idMode = \"client\";\n committed = true;\n return finishedWork;\n } finally {\n if (!committed) {\n restorePortalRender(runtime, portalSnapshot);\n }\n runtime.endRender(committed);\n if (committed) {\n runtime.flushEffects();\n }\n }\n }\n\n throw new Error(\"Store unstable.\");\n}\n\n/** Renders a React-compatible node into a legacy root container. */\nexport function render(element: ReactCompatNode, container: Element): void {\n const root = legacyRoots.get(container) ?? createRoot(container);\n legacyRoots.set(container, root);\n root.render(element);\n}\n\n/** Runs updates synchronously and flushes pending reactive work before returning. */\nexport function flushSync<T>(callback: () => T): T {\n return flushSyncUpdates(callback);\n}\n\n/** Hydrates server-rendered markup with a React-compatible element tree. */\nexport function hydrateRoot(\n container: Element,\n element: ReactCompatNode,\n options: HydrateRootOptions = {},\n): Root {\n const fiberRoot = createContainerFiberRoot(container);\n const renderOptions: RenderOptions & {\n resumeId?: string;\n consumeResumeMarkers?: boolean;\n } = {\n hydration:\n options.onRecoverableError === undefined\n ? {}\n : { onRecoverableError: options.onRecoverableError },\n ...(options.resumeId === undefined ? {} : { resumeId: options.resumeId }),\n ...(options.consumeResumeMarkers === undefined\n ? {}\n : { consumeResumeMarkers: options.consumeResumeMarkers }),\n };\n const runtime = createRootRuntime((priority = \"sync\") => {\n if (runtime.currentElement !== undefined) {\n enqueueRootRender(fiberRoot, runtime.currentElement, laneForRenderPriority(priority), () => {\n const useHydratingRerender =\n runtime.idMode === \"server\" ||\n renderOptions.resumeId !== undefined ||\n renderOptions.consumeResumeMarkers !== undefined;\n if (canRenderHostFiber(runtime.currentElement as ReactCompatNode)) {\n return useHydratingRerender\n ? renderHydratingHostFiberIntoContainer(\n container,\n fiberRoot,\n runtime,\n runtime.currentElement as ReactCompatNode,\n renderOptions,\n )\n : renderHostFiberIntoContainer(\n container,\n fiberRoot,\n runtime,\n runtime.currentElement as ReactCompatNode,\n );\n }\n\n renderIntoContainer(\n container,\n runtime.currentElement,\n runtime,\n useHydratingRerender ? renderOptions : {},\n );\n });\n }\n }, {\n ...(options.identifierPrefix === undefined\n ? {}\n : { identifierPrefix: options.identifierPrefix }),\n idMode: \"server\",\n });\n\n const root: Root = {\n render(nextElement) {\n runtime.currentElement = nextElement;\n enqueueRootRender(fiberRoot, nextElement, SyncLane, () => {\n if (canRenderHostFiber(nextElement)) {\n return renderHostFiberIntoContainer(container, fiberRoot, runtime, nextElement);\n }\n\n renderIntoContainer(container, nextElement, runtime);\n });\n },\n unmount() {\n runtime.currentElement = undefined;\n runtime.dispose();\n detachFiberRefs(fiberRoot.current);\n runtime.instances.clear();\n unmountDevToolsRoot(container);\n clearElementChildren(container);\n },\n };\n\n runtime.currentElement = element;\n enqueueRootRender(fiberRoot, element, SyncLane, () => {\n if (canRenderHostFiber(element)) {\n return renderHydratingHostFiberIntoContainer(\n container,\n fiberRoot,\n runtime,\n element,\n renderOptions,\n );\n }\n\n renderIntoContainer(container, element, runtime, renderOptions);\n });\n replayQueuedHydrationEvents(container);\n return root;\n}\n\nfunction laneForRenderPriority(priority: RenderPriority): Lane {\n if (priority === \"transition\") {\n return TransitionLane;\n }\n\n if (priority === \"continuous\") {\n return ContinuousEventLane;\n }\n\n return SyncLane;\n}\n\n/** Creates a root that can hydrate streamed or selectively revealed markup. */\nexport function createStreamingHydrationRoot(\n container: Element,\n options: StreamingHydrationRootOptions = {},\n): StreamingHydrationRoot {\n const fragmentRoot = options.fragmentRoot ?? container.ownerDocument;\n const manifestRoot = options.manifestRoot ?? container;\n const manifest = options.manifest ?? readEventHydrationManifest(manifestRoot);\n\n if (options.applyOutOfOrderFragments !== false) {\n applyStreamingHydrationFragments(fragmentRoot);\n }\n\n let hydratedRoot: Root | undefined;\n const hydrate = (\n element: ReactCompatNode,\n hydrateOptions: HydrateRootOptions = {},\n ): Root => {\n if (options.applyOutOfOrderFragments !== false) {\n applyStreamingHydrationFragments(fragmentRoot);\n }\n\n const root = hydrateRoot(container, element, hydrateOptions);\n hydratedRoot = root;\n disposeReplayCaptureOnce();\n return root;\n };\n const disposeReplayCapture = enableEventHydrationManifestReplay(\n container,\n manifest,\n {\n onCapturedEvent(event, target) {\n const selectiveHydration = options.selectiveHydration;\n const selectiveBoundary = resolveSelectiveHydrationBoundary(\n container,\n event,\n target,\n manifest,\n selectiveHydration,\n );\n\n if (selectiveBoundary === undefined || hydratedRoot !== undefined) {\n return;\n }\n\n hydrate(\n selectiveBoundary.element,\n resolveSelectiveHydrationOptions(event, selectiveBoundary),\n );\n },\n },\n );\n const observer =\n options.observeOutOfOrderFragments === true &&\n typeof MutationObserver !== \"undefined\" &&\n fragmentRoot instanceof Node\n ? new MutationObserver(() => {\n applyStreamingHydrationFragments(fragmentRoot);\n })\n : undefined;\n let replayDisposed = false;\n\n observer?.observe(fragmentRoot as Node, { childList: true, subtree: true });\n\n const disposeReplayCaptureOnce = (): void => {\n if (!replayDisposed) {\n disposeReplayCapture();\n replayDisposed = true;\n }\n };\n\n return {\n hydrate,\n dispose() {\n disposeReplayCaptureOnce();\n observer?.disconnect();\n },\n };\n}\n\n/** Unmounts a legacy root from a container and reports whether anything was removed. */\nexport function unmountComponentAtNode(container: Element): boolean {\n const root = legacyRoots.get(container);\n\n if (root !== undefined) {\n root.unmount();\n legacyRoots.delete(container);\n return true;\n }\n\n const hadChildren = container.childNodes.length > 0;\n clearElementChildren(container);\n return hadChildren;\n}\n\nfunction clearElementChildren(element: Element): void {\n if (typeof element.replaceChildren === \"function\") {\n element.replaceChildren();\n return;\n }\n\n while (element.firstChild !== null) {\n element.removeChild(element.firstChild);\n }\n}\n\nfunction collectPortalNodes(fiber: Fiber | undefined, runtime: RootRuntime): void {\n if (fiber === undefined || runtime.portalContainers.size === 0) {\n return;\n }\n\n const deferredSiblings: Fiber[] = [];\n let cursor: Fiber | undefined = fiber;\n\n while (cursor !== undefined) {\n if (cursor.tag === \"portal\" && cursor.stateNode instanceof Element) {\n const nodes = Array.isArray(cursor.memoizedState)\n ? cursor.memoizedState.filter((node): node is Node => node instanceof Node)\n : [];\n runtime.portalContainers.add(cursor.stateNode);\n const ownedNodes = runtime.portalNodes.get(cursor.stateNode) ?? new Set<Node>();\n for (const node of nodes) {\n ownedNodes.add(node);\n }\n runtime.portalNodes.set(cursor.stateNode, ownedNodes);\n }\n\n if (cursor.child !== undefined) {\n if (cursor.sibling !== undefined) {\n deferredSiblings.push(cursor.sibling);\n }\n cursor = cursor.child;\n continue;\n }\n\n cursor = cursor.sibling ?? deferredSiblings.pop();\n }\n}\n\ninterface PortalRenderSnapshot {\n containers: Set<Element>;\n nodes: Map<Element, Set<Node>>;\n}\n\nfunction beginPortalRender(runtime: RootRuntime): PortalRenderSnapshot {\n const snapshot = {\n containers: new Set(runtime.portalContainers),\n nodes: clonePortalNodes(runtime.portalNodes),\n };\n runtime.portalContainers.clear();\n runtime.portalNodes.clear();\n return snapshot;\n}\n\nfunction restorePortalRender(\n runtime: RootRuntime,\n snapshot: PortalRenderSnapshot,\n): void {\n runtime.portalContainers = snapshot.containers;\n runtime.portalNodes = snapshot.nodes;\n}\n\nfunction removeStalePortalNodes(\n snapshot: PortalRenderSnapshot,\n runtime: RootRuntime,\n): void {\n for (const container of snapshot.containers) {\n const nodes = snapshot.nodes.get(container) ?? new Set(collectOwnedChildNodes(container));\n const currentNodes = runtime.portalNodes.get(container);\n\n for (const node of nodes) {\n if (currentNodes?.has(node) !== true) {\n removeChildIfPresent(container, node);\n }\n }\n }\n}\n\nfunction clonePortalNodes(source: Map<Element, Set<Node>>): Map<Element, Set<Node>> {\n const clone = new Map<Element, Set<Node>>();\n\n for (const [container, nodes] of source) {\n clone.set(container, new Set(nodes));\n }\n\n return clone;\n}\n\nfunction resolveSelectiveHydrationBoundary(\n container: Element,\n event: Event,\n target: EventTarget,\n manifest: EventHydrationManifest | undefined,\n selectiveHydration: SelectiveHydrationOptions | undefined,\n): SelectiveHydrationBoundary | undefined {\n if (selectiveHydration === undefined) {\n return undefined;\n }\n\n const resumeId = resolveSelectiveHydrationResumeId(\n container,\n event,\n target,\n manifest,\n );\n const boundary =\n resumeId === undefined ? undefined : selectiveHydration.boundaries?.[resumeId];\n\n if (boundary !== undefined && resumeId !== undefined) {\n return {\n element: boundary.element,\n options: boundary.options ?? { resumeId, consumeResumeMarkers: true },\n };\n }\n\n if (selectiveHydration.element === undefined) {\n return undefined;\n }\n\n return {\n element: selectiveHydration.element,\n ...(selectiveHydration.options === undefined\n ? {}\n : { options: selectiveHydration.options }),\n };\n}\n\nfunction resolveSelectiveHydrationOptions(\n event: Event,\n boundary: SelectiveHydrationBoundary,\n): HydrateRootOptions {\n return typeof boundary.options === \"function\"\n ? boundary.options(event)\n : boundary.options ?? {};\n}\n\nfunction resolveSelectiveHydrationResumeId(\n container: Element,\n event: Event,\n target: EventTarget,\n manifest: EventHydrationManifest | undefined,\n): string | undefined {\n if (!(target instanceof Node) || manifest === undefined) {\n return undefined;\n }\n\n const containingResumeId = findContainingResumeBoundaryId(container, target);\n\n if (containingResumeId === undefined) {\n return undefined;\n }\n\n return manifest.events.some(\n (entry) =>\n entry.event === event.type &&\n getManifestResumeId(entry.id) === containingResumeId,\n )\n ? containingResumeId\n : undefined;\n}\n\nfunction getManifestResumeId(id: string): string {\n return id.split(\":\")[0] ?? id;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"root.js","sourceRoot":"","sources":["../src/root.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ReactCompatNode } from \"./element.js\";\nimport {\n createRootRuntime,\n flushSyncUpdates,\n hasStableExternalStores,\n type RenderPriority,\n type RootRuntime,\n} from \"./hooks.js\";\nimport { collectOwnedChildNodes, removeChildIfPresent } from \"./dom-children.js\";\nimport { commitDevToolsRoot, unmountDevToolsRoot } from \"./devtools.js\";\nimport {\n applyStreamingHydrationFragments,\n findContainingResumeBoundaryId,\n getHydrationScope,\n type HydrationRecoverableErrorInfo,\n type RenderOptions,\n} from \"./hydration.js\";\nimport {\n enableEventHydrationManifestReplay,\n readEventHydrationManifest,\n replayQueuedHydrationEvents,\n type EventHydrationManifest,\n} from \"./event-replay.js\";\nimport {\n ContinuousEventLane,\n SyncLane,\n TransitionLane,\n type Lane,\n} from \"./fiber-lanes.js\";\nimport {\n createContainerFiberRoot,\n enqueueRootRender,\n} from \"./fiber-work-loop.js\";\nimport { commitFiberRoot, detachFiberRefs } from \"./fiber-commit.js\";\nimport {\n canRenderHostFiber,\n commitHydratingHostFiberRoot,\n disposeHostFiberResources,\n renderHydratingHostFiberRoot,\n renderHostFiberRoot,\n} from \"./fiber-host.js\";\nimport type { Fiber, FiberRoot } from \"./fiber.js\";\nimport { renderIntoContainer } from \"./reconciler.js\";\n\n/** Root controller returned by createRoot and hydrateRoot. */\nexport interface Root {\n render(element: ReactCompatNode): void;\n unmount(): void;\n}\n\n/** Options used when creating a client render root. */\nexport interface RootOptions {\n identifierPrefix?: string;\n}\n\n/** Options used when hydrating server-rendered markup. */\nexport interface HydrateRootOptions {\n onRecoverableError?: (\n error: Error,\n info: HydrationRecoverableErrorInfo,\n ) => void;\n resumeId?: string;\n consumeResumeMarkers?: boolean;\n identifierPrefix?: string;\n}\n\n/** Controller for deferred or selective streaming hydration. */\nexport interface StreamingHydrationRoot {\n hydrate(element: ReactCompatNode, options?: HydrateRootOptions): Root;\n dispose(): void;\n}\n\n/** Options for creating a streaming hydration root. */\nexport interface StreamingHydrationRootOptions {\n manifest?: EventHydrationManifest;\n manifestRoot?: ParentNode;\n fragmentRoot?: ParentNode;\n applyOutOfOrderFragments?: boolean;\n observeOutOfOrderFragments?: boolean;\n selectiveHydration?: SelectiveHydrationOptions;\n}\n\n/** Rules that choose which boundary to hydrate after a captured event. */\nexport interface SelectiveHydrationOptions {\n element?: ReactCompatNode;\n options?: HydrateRootOptions | ((event: Event) => HydrateRootOptions);\n boundaries?: Record<string, SelectiveHydrationBoundary>;\n}\n\n/** Element and options used to hydrate one selective boundary. */\nexport interface SelectiveHydrationBoundary {\n element: ReactCompatNode;\n options?: HydrateRootOptions | ((event: Event) => HydrateRootOptions);\n}\n\nconst legacyRoots = new WeakMap<Element, Root>();\n\n/** Creates a root that renders React-compatible nodes into a DOM container. */\nexport function createRoot(\n container: Element,\n options: RootOptions = {},\n): Root {\n const fiberRoot = createContainerFiberRoot(container);\n const runtime = createRootRuntime((priority = \"sync\") => {\n if (runtime.currentElement !== undefined) {\n enqueueRootRender(fiberRoot, runtime.currentElement, laneForRenderPriority(priority), () => {\n if (canRenderHostFiber(runtime.currentElement as ReactCompatNode)) {\n return renderHostFiberIntoContainer(\n container,\n fiberRoot,\n runtime,\n runtime.currentElement as ReactCompatNode,\n );\n }\n\n renderIntoContainer(container, runtime.currentElement, runtime);\n });\n }\n }, options);\n\n return {\n render(element) {\n runtime.currentElement = element;\n enqueueRootRender(fiberRoot, element, SyncLane, () => {\n if (canRenderHostFiber(element)) {\n return renderHostFiberIntoContainer(container, fiberRoot, runtime, element);\n }\n\n renderIntoContainer(container, element, runtime);\n });\n },\n unmount() {\n runtime.currentElement = undefined;\n runtime.dispose();\n detachFiberRefs(fiberRoot.current);\n disposeHostFiberResources(fiberRoot.current);\n runtime.instances.clear();\n unmountDevToolsRoot(container);\n clearElementChildren(container);\n },\n };\n}\n\nfunction renderHostFiberIntoContainer(\n container: Element,\n fiberRoot: FiberRoot,\n runtime: RootRuntime,\n element: ReactCompatNode,\n): Fiber {\n for (let attempt = 0; attempt < 25; attempt += 1) {\n const portalSnapshot = beginPortalRender(runtime);\n runtime.beginRender();\n let committed = false;\n\n try {\n const finishedWork = renderHostFiberRoot(fiberRoot, element, runtime);\n\n if (runtime.renderPhaseUpdate) {\n runtime.renderPhaseUpdate = false;\n continue;\n }\n\n if (!hasStableExternalStores(runtime)) {\n continue;\n }\n\n fiberRoot.finishedWork = finishedWork;\n commitFiberRoot(fiberRoot);\n collectPortalNodes(fiberRoot.current, runtime);\n removeStalePortalNodes(portalSnapshot, runtime);\n commitDevToolsRoot(container, fiberRoot);\n runtime.idMode = \"client\";\n committed = true;\n return finishedWork;\n } finally {\n if (!committed) {\n restorePortalRender(runtime, portalSnapshot);\n }\n runtime.endRender(committed);\n if (committed) {\n runtime.flushEffects();\n }\n }\n }\n\n throw new Error(\"Store unstable.\");\n}\n\nfunction renderHydratingHostFiberIntoContainer(\n container: Element,\n fiberRoot: FiberRoot,\n runtime: RootRuntime,\n element: ReactCompatNode,\n options: RenderOptions & {\n resumeId?: string;\n consumeResumeMarkers?: boolean;\n },\n): Fiber {\n for (let attempt = 0; attempt < 25; attempt += 1) {\n const portalSnapshot = beginPortalRender(runtime);\n runtime.beginRender();\n let committed = false;\n\n try {\n const scope = getHydrationScope(container, options.resumeId);\n const finishedWork = renderHydratingHostFiberRoot(\n fiberRoot,\n element,\n runtime,\n scope,\n options,\n );\n\n if (runtime.renderPhaseUpdate) {\n runtime.renderPhaseUpdate = false;\n continue;\n }\n\n if (!hasStableExternalStores(runtime)) {\n continue;\n }\n\n commitHydratingHostFiberRoot(fiberRoot, finishedWork, scope, options);\n fiberRoot.current = finishedWork;\n fiberRoot.current.stateNode = fiberRoot;\n fiberRoot.finishedWork = undefined;\n fiberRoot.workInProgress = undefined;\n fiberRoot.workInProgressRootRenderLanes = 0;\n collectPortalNodes(fiberRoot.current, runtime);\n removeStalePortalNodes(portalSnapshot, runtime);\n commitDevToolsRoot(container, fiberRoot);\n runtime.idMode = \"client\";\n committed = true;\n return finishedWork;\n } finally {\n if (!committed) {\n restorePortalRender(runtime, portalSnapshot);\n }\n runtime.endRender(committed);\n if (committed) {\n runtime.flushEffects();\n }\n }\n }\n\n throw new Error(\"Store unstable.\");\n}\n\n/** Renders a React-compatible node into a legacy root container. */\nexport function render(element: ReactCompatNode, container: Element): void {\n const root = legacyRoots.get(container) ?? createRoot(container);\n legacyRoots.set(container, root);\n root.render(element);\n}\n\n/** Runs updates synchronously and flushes pending reactive work before returning. */\nexport function flushSync<T>(callback: () => T): T {\n return flushSyncUpdates(callback);\n}\n\n/** Hydrates server-rendered markup with a React-compatible element tree. */\nexport function hydrateRoot(\n container: Element,\n element: ReactCompatNode,\n options: HydrateRootOptions = {},\n): Root {\n const fiberRoot = createContainerFiberRoot(container);\n const renderOptions: RenderOptions & {\n resumeId?: string;\n consumeResumeMarkers?: boolean;\n } = {\n hydration:\n options.onRecoverableError === undefined\n ? {}\n : { onRecoverableError: options.onRecoverableError },\n ...(options.resumeId === undefined ? {} : { resumeId: options.resumeId }),\n ...(options.consumeResumeMarkers === undefined\n ? {}\n : { consumeResumeMarkers: options.consumeResumeMarkers }),\n };\n const runtime = createRootRuntime((priority = \"sync\") => {\n if (runtime.currentElement !== undefined) {\n enqueueRootRender(fiberRoot, runtime.currentElement, laneForRenderPriority(priority), () => {\n const useHydratingRerender =\n runtime.idMode === \"server\" ||\n renderOptions.resumeId !== undefined ||\n renderOptions.consumeResumeMarkers !== undefined;\n if (canRenderHostFiber(runtime.currentElement as ReactCompatNode)) {\n return useHydratingRerender\n ? renderHydratingHostFiberIntoContainer(\n container,\n fiberRoot,\n runtime,\n runtime.currentElement as ReactCompatNode,\n renderOptions,\n )\n : renderHostFiberIntoContainer(\n container,\n fiberRoot,\n runtime,\n runtime.currentElement as ReactCompatNode,\n );\n }\n\n renderIntoContainer(\n container,\n runtime.currentElement,\n runtime,\n useHydratingRerender ? renderOptions : {},\n );\n });\n }\n }, {\n ...(options.identifierPrefix === undefined\n ? {}\n : { identifierPrefix: options.identifierPrefix }),\n idMode: \"server\",\n });\n\n const root: Root = {\n render(nextElement) {\n runtime.currentElement = nextElement;\n enqueueRootRender(fiberRoot, nextElement, SyncLane, () => {\n if (canRenderHostFiber(nextElement)) {\n return renderHostFiberIntoContainer(container, fiberRoot, runtime, nextElement);\n }\n\n renderIntoContainer(container, nextElement, runtime);\n });\n },\n unmount() {\n runtime.currentElement = undefined;\n runtime.dispose();\n detachFiberRefs(fiberRoot.current);\n disposeHostFiberResources(fiberRoot.current);\n runtime.instances.clear();\n unmountDevToolsRoot(container);\n clearElementChildren(container);\n },\n };\n\n runtime.currentElement = element;\n enqueueRootRender(fiberRoot, element, SyncLane, () => {\n if (canRenderHostFiber(element)) {\n return renderHydratingHostFiberIntoContainer(\n container,\n fiberRoot,\n runtime,\n element,\n renderOptions,\n );\n }\n\n renderIntoContainer(container, element, runtime, renderOptions);\n });\n replayQueuedHydrationEvents(container);\n return root;\n}\n\nfunction laneForRenderPriority(priority: RenderPriority): Lane {\n if (priority === \"transition\") {\n return TransitionLane;\n }\n\n if (priority === \"continuous\") {\n return ContinuousEventLane;\n }\n\n return SyncLane;\n}\n\n/** Creates a root that can hydrate streamed or selectively revealed markup. */\nexport function createStreamingHydrationRoot(\n container: Element,\n options: StreamingHydrationRootOptions = {},\n): StreamingHydrationRoot {\n const fragmentRoot = options.fragmentRoot ?? container.ownerDocument;\n const manifestRoot = options.manifestRoot ?? container;\n const manifest = options.manifest ?? readEventHydrationManifest(manifestRoot);\n\n if (options.applyOutOfOrderFragments !== false) {\n applyStreamingHydrationFragments(fragmentRoot);\n }\n\n let hydratedRoot: Root | undefined;\n const hydrate = (\n element: ReactCompatNode,\n hydrateOptions: HydrateRootOptions = {},\n ): Root => {\n if (options.applyOutOfOrderFragments !== false) {\n applyStreamingHydrationFragments(fragmentRoot);\n }\n\n const root = hydrateRoot(container, element, hydrateOptions);\n hydratedRoot = root;\n disposeReplayCaptureOnce();\n return root;\n };\n const disposeReplayCapture = enableEventHydrationManifestReplay(\n container,\n manifest,\n {\n onCapturedEvent(event, target) {\n const selectiveHydration = options.selectiveHydration;\n const selectiveBoundary = resolveSelectiveHydrationBoundary(\n container,\n event,\n target,\n manifest,\n selectiveHydration,\n );\n\n if (selectiveBoundary === undefined || hydratedRoot !== undefined) {\n return;\n }\n\n hydrate(\n selectiveBoundary.element,\n resolveSelectiveHydrationOptions(event, selectiveBoundary),\n );\n },\n },\n );\n const observer =\n options.observeOutOfOrderFragments === true &&\n typeof MutationObserver !== \"undefined\" &&\n fragmentRoot instanceof Node\n ? new MutationObserver(() => {\n applyStreamingHydrationFragments(fragmentRoot);\n })\n : undefined;\n let replayDisposed = false;\n\n observer?.observe(fragmentRoot as Node, { childList: true, subtree: true });\n\n const disposeReplayCaptureOnce = (): void => {\n if (!replayDisposed) {\n disposeReplayCapture();\n replayDisposed = true;\n }\n };\n\n return {\n hydrate,\n dispose() {\n disposeReplayCaptureOnce();\n observer?.disconnect();\n },\n };\n}\n\n/** Unmounts a legacy root from a container and reports whether anything was removed. */\nexport function unmountComponentAtNode(container: Element): boolean {\n const root = legacyRoots.get(container);\n\n if (root !== undefined) {\n root.unmount();\n legacyRoots.delete(container);\n return true;\n }\n\n const hadChildren = container.childNodes.length > 0;\n clearElementChildren(container);\n return hadChildren;\n}\n\nfunction clearElementChildren(element: Element): void {\n if (typeof element.replaceChildren === \"function\") {\n element.replaceChildren();\n return;\n }\n\n while (element.firstChild !== null) {\n element.removeChild(element.firstChild);\n }\n}\n\nfunction collectPortalNodes(fiber: Fiber | undefined, runtime: RootRuntime): void {\n if (fiber === undefined || runtime.portalContainers.size === 0) {\n return;\n }\n\n const deferredSiblings: Fiber[] = [];\n let cursor: Fiber | undefined = fiber;\n\n while (cursor !== undefined) {\n if (cursor.tag === \"portal\" && cursor.stateNode instanceof Element) {\n const nodes = Array.isArray(cursor.memoizedState)\n ? cursor.memoizedState.filter((node): node is Node => node instanceof Node)\n : [];\n runtime.portalContainers.add(cursor.stateNode);\n const ownedNodes = runtime.portalNodes.get(cursor.stateNode) ?? new Set<Node>();\n for (const node of nodes) {\n ownedNodes.add(node);\n }\n runtime.portalNodes.set(cursor.stateNode, ownedNodes);\n }\n\n if (cursor.child !== undefined) {\n if (cursor.sibling !== undefined) {\n deferredSiblings.push(cursor.sibling);\n }\n cursor = cursor.child;\n continue;\n }\n\n cursor = cursor.sibling ?? deferredSiblings.pop();\n }\n}\n\ninterface PortalRenderSnapshot {\n containers: Set<Element>;\n nodes: Map<Element, Set<Node>>;\n}\n\nfunction beginPortalRender(runtime: RootRuntime): PortalRenderSnapshot {\n const snapshot = {\n containers: new Set(runtime.portalContainers),\n nodes: clonePortalNodes(runtime.portalNodes),\n };\n runtime.portalContainers.clear();\n runtime.portalNodes.clear();\n return snapshot;\n}\n\nfunction restorePortalRender(\n runtime: RootRuntime,\n snapshot: PortalRenderSnapshot,\n): void {\n runtime.portalContainers = snapshot.containers;\n runtime.portalNodes = snapshot.nodes;\n}\n\nfunction removeStalePortalNodes(\n snapshot: PortalRenderSnapshot,\n runtime: RootRuntime,\n): void {\n for (const container of snapshot.containers) {\n const nodes = snapshot.nodes.get(container) ?? new Set(collectOwnedChildNodes(container));\n const currentNodes = runtime.portalNodes.get(container);\n\n for (const node of nodes) {\n if (currentNodes?.has(node) !== true) {\n removeChildIfPresent(container, node);\n }\n }\n }\n}\n\nfunction clonePortalNodes(source: Map<Element, Set<Node>>): Map<Element, Set<Node>> {\n const clone = new Map<Element, Set<Node>>();\n\n for (const [container, nodes] of source) {\n clone.set(container, new Set(nodes));\n }\n\n return clone;\n}\n\nfunction resolveSelectiveHydrationBoundary(\n container: Element,\n event: Event,\n target: EventTarget,\n manifest: EventHydrationManifest | undefined,\n selectiveHydration: SelectiveHydrationOptions | undefined,\n): SelectiveHydrationBoundary | undefined {\n if (selectiveHydration === undefined) {\n return undefined;\n }\n\n const resumeId = resolveSelectiveHydrationResumeId(\n container,\n event,\n target,\n manifest,\n );\n const boundary =\n resumeId === undefined ? undefined : selectiveHydration.boundaries?.[resumeId];\n\n if (boundary !== undefined && resumeId !== undefined) {\n return {\n element: boundary.element,\n options: boundary.options ?? { resumeId, consumeResumeMarkers: true },\n };\n }\n\n if (selectiveHydration.element === undefined) {\n return undefined;\n }\n\n return {\n element: selectiveHydration.element,\n ...(selectiveHydration.options === undefined\n ? {}\n : { options: selectiveHydration.options }),\n };\n}\n\nfunction resolveSelectiveHydrationOptions(\n event: Event,\n boundary: SelectiveHydrationBoundary,\n): HydrateRootOptions {\n return typeof boundary.options === \"function\"\n ? boundary.options(event)\n : boundary.options ?? {};\n}\n\nfunction resolveSelectiveHydrationResumeId(\n container: Element,\n event: Event,\n target: EventTarget,\n manifest: EventHydrationManifest | undefined,\n): string | undefined {\n if (!(target instanceof Node) || manifest === undefined) {\n return undefined;\n }\n\n const containingResumeId = findContainingResumeBoundaryId(container, target);\n\n if (containingResumeId === undefined) {\n return undefined;\n }\n\n return manifest.events.some(\n (entry) =>\n entry.event === event.type &&\n getManifestResumeId(entry.id) === containingResumeId,\n )\n ? containingResumeId\n : undefined;\n}\n\nfunction getManifestResumeId(id: string): string {\n return id.split(\":\")[0] ?? id;\n}\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.172",
|
|
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.172",
|
|
73
|
+
"@reckona/mreact-shared": "0.0.172"
|
|
74
74
|
}
|
|
75
75
|
}
|
package/src/devtools.ts
CHANGED
package/src/dom-host-rules.ts
CHANGED
|
@@ -113,7 +113,10 @@ export function hostElementMatches(
|
|
|
113
113
|
return false;
|
|
114
114
|
}
|
|
115
115
|
|
|
116
|
-
|
|
116
|
+
// localName is already lowercase for HTML (and preserves case for SVG), so it
|
|
117
|
+
// matches the lowercase tag from the element type without allocating the
|
|
118
|
+
// lowercased string that element.tagName.toLowerCase() would.
|
|
119
|
+
return element.localName === tagName && element.namespaceURI === namespaceUri(namespace);
|
|
117
120
|
}
|
|
118
121
|
|
|
119
122
|
export function serializeClientStyleValue(name: string, value: unknown): string {
|
package/src/dom-props.ts
CHANGED
|
@@ -707,7 +707,8 @@ function sanitizeMetaRefreshElementProps(
|
|
|
707
707
|
element: Element,
|
|
708
708
|
props: Record<string, unknown>,
|
|
709
709
|
): Record<string, unknown> {
|
|
710
|
-
|
|
710
|
+
const tagName = element.tagName;
|
|
711
|
+
if (tagName !== "META" && tagName !== "meta") {
|
|
711
712
|
return props;
|
|
712
713
|
}
|
|
713
714
|
|
package/src/element.ts
CHANGED
|
@@ -5,6 +5,7 @@ export const MEMO_TYPE = Symbol.for("react.memo");
|
|
|
5
5
|
export const LAZY_TYPE = Symbol.for("react.lazy");
|
|
6
6
|
export const STRICT_MODE_TYPE = Symbol.for("react.strict_mode");
|
|
7
7
|
export const PORTAL_TYPE = Symbol.for("react.portal");
|
|
8
|
+
export const REACTIVE_DOM_BLOCK_TYPE = Symbol.for("modular.react.reactive_dom_block");
|
|
8
9
|
const REACT_COMPAT_PROVIDER_TYPE = Symbol.for("react.context");
|
|
9
10
|
/** Symbol used to group JSX children without adding a host element. */
|
|
10
11
|
export const Fragment = Symbol.for("react.fragment");
|
|
@@ -23,6 +24,10 @@ export const HOST_CHILDREN_ONLY_PROPS_META = Symbol.for(
|
|
|
23
24
|
export const REACTIVE_TEXT_BINDING_META = Symbol.for(
|
|
24
25
|
"modular.react.reactive_text_binding_meta",
|
|
25
26
|
);
|
|
27
|
+
/** Metadata key that links compiler-owned DOM blocks to component state. */
|
|
28
|
+
export const REACTIVE_STATE_BINDING_META = Symbol.for(
|
|
29
|
+
"modular.react.reactive_state_binding_meta",
|
|
30
|
+
);
|
|
26
31
|
const hasOwnProperty = Object.prototype.hasOwnProperty;
|
|
27
32
|
|
|
28
33
|
export interface ReactCompatProviderType {
|
|
@@ -44,6 +49,7 @@ export type ElementType<P = Record<string, unknown>> =
|
|
|
44
49
|
| typeof Activity
|
|
45
50
|
| typeof Profiler
|
|
46
51
|
| typeof ERROR_BOUNDARY_TYPE
|
|
52
|
+
| typeof REACTIVE_DOM_BLOCK_TYPE
|
|
47
53
|
| typeof STRICT_MODE_TYPE
|
|
48
54
|
| ReactCompatContextProviderShorthand
|
|
49
55
|
| ReactCompatProviderType
|
|
@@ -95,6 +101,24 @@ export interface ReactCompatPortal {
|
|
|
95
101
|
key: string | null;
|
|
96
102
|
}
|
|
97
103
|
|
|
104
|
+
export interface ReactiveDomBlockResult {
|
|
105
|
+
node: ChildNode;
|
|
106
|
+
dispose?: (() => void) | undefined;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// The render receives a stable reactive props proxy when the block is created
|
|
110
|
+
// with props (createReactiveDomBlock(render, props)); state-only blocks ignore
|
|
111
|
+
// the argument.
|
|
112
|
+
export type ReactiveDomBlockRender<P = unknown> = (props: P) => ReactiveDomBlockResult;
|
|
113
|
+
|
|
114
|
+
export interface ReactiveDomBlockProps {
|
|
115
|
+
render: ReactiveDomBlockRender;
|
|
116
|
+
// Present when the block bridges its component's props into the reactive
|
|
117
|
+
// runtime; carries the latest props on every re-render so the reconciler can
|
|
118
|
+
// push them into the block's prop cell.
|
|
119
|
+
blockProps?: Record<string, unknown> | undefined;
|
|
120
|
+
}
|
|
121
|
+
|
|
98
122
|
/** Creates a React-compatible element from a type, config object, and children. */
|
|
99
123
|
export function createElement<P extends object>(
|
|
100
124
|
type: ElementType<P>,
|
|
@@ -110,14 +134,12 @@ export function createElement<P extends object>(
|
|
|
110
134
|
if (typeof type === "string") {
|
|
111
135
|
const key = config?.key === undefined ? null : String(config.key);
|
|
112
136
|
const ref = config?.ref ?? null;
|
|
113
|
-
const props =
|
|
137
|
+
const props = copyHostCreateElementProps(config) as P & {
|
|
114
138
|
children?: ReactCompatNode;
|
|
115
139
|
};
|
|
116
140
|
|
|
117
141
|
assignCreateElementChildren(props, childCount, arguments);
|
|
118
142
|
|
|
119
|
-
setHostOwnPropsMeta(props);
|
|
120
|
-
|
|
121
143
|
return {
|
|
122
144
|
$$typeof: REACT_COMPAT_ELEMENT_TYPE,
|
|
123
145
|
type,
|
|
@@ -389,6 +411,41 @@ function copyCreateElementProps(
|
|
|
389
411
|
return props as Record<string, unknown>;
|
|
390
412
|
}
|
|
391
413
|
|
|
414
|
+
function copyHostCreateElementProps(
|
|
415
|
+
source: object | null | undefined,
|
|
416
|
+
): Record<string, unknown> {
|
|
417
|
+
const props: Record<PropertyKey, unknown> = {};
|
|
418
|
+
|
|
419
|
+
if (source === null || source === undefined) {
|
|
420
|
+
props[HOST_CHILDREN_ONLY_PROPS_META] = true;
|
|
421
|
+
return props as Record<string, unknown>;
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
let hasNonChildrenProp = false;
|
|
425
|
+
const stringSource = source as Record<string, unknown>;
|
|
426
|
+
for (const name in source) {
|
|
427
|
+
if (!hasOwnProperty.call(source, name)) {
|
|
428
|
+
continue;
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
if (
|
|
432
|
+
name !== "key" &&
|
|
433
|
+
name !== "ref" &&
|
|
434
|
+
name !== "__self" &&
|
|
435
|
+
name !== "__source"
|
|
436
|
+
) {
|
|
437
|
+
props[name] = stringSource[name];
|
|
438
|
+
hasNonChildrenProp ||= name !== "children";
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
copyInternalElementSymbolProps(source, props);
|
|
443
|
+
if (!hasNonChildrenProp) {
|
|
444
|
+
props[HOST_CHILDREN_ONLY_PROPS_META] = true;
|
|
445
|
+
}
|
|
446
|
+
return props as Record<string, unknown>;
|
|
447
|
+
}
|
|
448
|
+
|
|
392
449
|
function copyOwnStringElementProps(
|
|
393
450
|
source: object,
|
|
394
451
|
target: Record<string, unknown>,
|
package/src/fiber-commit.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Fiber, FiberRoot } from "./fiber.js";
|
|
2
2
|
import { ChildDeletion } from "./fiber-flags.js";
|
|
3
|
-
import { commitHostFiberRoot } from "./fiber-host.js";
|
|
3
|
+
import { commitHostFiberRoot, disposeHostFiberResources } from "./fiber-host.js";
|
|
4
4
|
import { markRootFinished } from "./fiber-lanes.js";
|
|
5
5
|
import { runWithHostCommit } from "./hooks.js";
|
|
6
6
|
import type { RenderOptions } from "./hydration.js";
|
|
@@ -122,6 +122,8 @@ function detachDeletedFiberSubtrees(
|
|
|
122
122
|
}
|
|
123
123
|
|
|
124
124
|
function detachFiberSubtree(fiber: Fiber, retained: ReadonlySet<Fiber>): void {
|
|
125
|
+
disposeHostFiberResources(fiber);
|
|
126
|
+
|
|
125
127
|
const stack = [fiber];
|
|
126
128
|
const seen = new Set<Fiber>();
|
|
127
129
|
|
package/src/fiber-host.ts
CHANGED
package/src/fiber.ts
CHANGED
|
@@ -15,6 +15,7 @@ export type FiberTag =
|
|
|
15
15
|
| "memo"
|
|
16
16
|
| "lazy"
|
|
17
17
|
| "profiler"
|
|
18
|
+
| "reactive-dom-block"
|
|
18
19
|
| "strict-mode"
|
|
19
20
|
| "suspense"
|
|
20
21
|
| "suspense-list"
|
|
@@ -41,6 +42,7 @@ export interface Fiber {
|
|
|
41
42
|
childLanes: Lanes;
|
|
42
43
|
hydrateExisting: boolean;
|
|
43
44
|
hasRefSubtree: boolean;
|
|
45
|
+
hasDisposableResources: boolean;
|
|
44
46
|
hostChildListChanged: boolean;
|
|
45
47
|
}
|
|
46
48
|
|
|
@@ -96,6 +98,7 @@ export function createFiber(
|
|
|
96
98
|
childLanes: NoLanes,
|
|
97
99
|
hydrateExisting: false,
|
|
98
100
|
hasRefSubtree: false,
|
|
101
|
+
hasDisposableResources: false,
|
|
99
102
|
hostChildListChanged: false,
|
|
100
103
|
};
|
|
101
104
|
}
|
|
@@ -157,6 +160,7 @@ export function createWorkInProgress(
|
|
|
157
160
|
workInProgress.childLanes = current.childLanes;
|
|
158
161
|
workInProgress.hydrateExisting = false;
|
|
159
162
|
workInProgress.hasRefSubtree = current.hasRefSubtree;
|
|
163
|
+
workInProgress.hasDisposableResources = current.hasDisposableResources;
|
|
160
164
|
workInProgress.hostChildListChanged = current.hostChildListChanged;
|
|
161
165
|
return workInProgress;
|
|
162
166
|
}
|