@reckona/mreact-compat 0.0.172 → 0.0.174
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/fiber-commit.js +2 -2
- 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/hooks.d.ts +2 -0
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +5 -3
- 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 +37 -5
- package/dist/host-reconciler.js.map +1 -1
- package/dist/root.js +5 -4
- package/dist/root.js.map +1 -1
- package/package.json +3 -3
- package/src/fiber-commit.ts +2 -2
- package/src/fiber-host.ts +1 -0
- package/src/hooks.ts +14 -5
- package/src/host-reconciler.ts +52 -6
- package/src/root.ts +11 -4
|
@@ -16,5 +16,6 @@ export declare function renderHydratingHostFiberRoot(root: FiberRoot, element: R
|
|
|
16
16
|
export declare function commitHostFiberRoot(root: FiberRoot, finishedWork: Fiber, options?: RenderOptions): void;
|
|
17
17
|
export declare function commitHydratingHostFiberRoot(root: FiberRoot, finishedWork: Fiber, scope: HydrationScope, options?: FiberHydrationOptions): void;
|
|
18
18
|
export declare function disposeHostFiberResources(fiber: Fiber | undefined): void;
|
|
19
|
+
export declare function disposeUnretainedHostFiberResources(fiber: Fiber | undefined, retained: ReadonlySet<Fiber>): void;
|
|
19
20
|
export {};
|
|
20
21
|
//# sourceMappingURL=host-reconciler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-reconciler.d.ts","sourceRoot":"","sources":["../src/host-reconciler.ts"],"names":[],"mappings":"AAAA,OAAO,EAoBL,KAAK,eAAe,EACrB,MAAM,cAAc,CAAC;AAkBtB,OAAO,EAOL,KAAK,kBAAkB,EAEvB,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAqC,KAAK,KAAK,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAC3F,OAAO,EAaL,KAAK,WAAW,EACjB,MAAM,YAAY,CAAC;AAUpB,OAAO,EAOL,KAAK,cAAc,EACnB,KAAK,aAAa,EAEnB,MAAM,gBAAgB,CAAC;AAyBxB,UAAU,qBAAsB,SAAQ,aAAa;IACnD,aAAa,CAAC,EAAE,SAAS,IAAI,EAAE,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,WAAW,CAAC,EAAE,QAAQ,GAAG,kBAAkB,CAAC;CAC7C;AA0BD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CA6EjE;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,eAAe,EACxB,OAAO,CAAC,EAAE,WAAW,EACrB,OAAO,GAAE,qBAA0B,GAClC,KAAK,CAeP;AAED,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,cAAc,EACrB,OAAO,GAAE,qBAA0B,GAClC,KAAK,CAYP;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,SAAS,EACf,YAAY,EAAE,KAAK,EACnB,OAAO,GAAE,aAAkB,GAC1B,IAAI,CAuDN;AAED,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,SAAS,EACf,YAAY,EAAE,KAAK,EACnB,KAAK,EAAE,cAAc,EACrB,OAAO,GAAE,qBAA0B,GAClC,IAAI,CAwBN;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,IAAI,CAexE"}
|
|
1
|
+
{"version":3,"file":"host-reconciler.d.ts","sourceRoot":"","sources":["../src/host-reconciler.ts"],"names":[],"mappings":"AAAA,OAAO,EAoBL,KAAK,eAAe,EACrB,MAAM,cAAc,CAAC;AAkBtB,OAAO,EAOL,KAAK,kBAAkB,EAEvB,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAqC,KAAK,KAAK,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAC3F,OAAO,EAaL,KAAK,WAAW,EACjB,MAAM,YAAY,CAAC;AAUpB,OAAO,EAOL,KAAK,cAAc,EACnB,KAAK,aAAa,EAEnB,MAAM,gBAAgB,CAAC;AAyBxB,UAAU,qBAAsB,SAAQ,aAAa;IACnD,aAAa,CAAC,EAAE,SAAS,IAAI,EAAE,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,WAAW,CAAC,EAAE,QAAQ,GAAG,kBAAkB,CAAC;CAC7C;AA0BD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CA6EjE;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,eAAe,EACxB,OAAO,CAAC,EAAE,WAAW,EACrB,OAAO,GAAE,qBAA0B,GAClC,KAAK,CAeP;AAED,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,cAAc,EACrB,OAAO,GAAE,qBAA0B,GAClC,KAAK,CAYP;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,SAAS,EACf,YAAY,EAAE,KAAK,EACnB,OAAO,GAAE,aAAkB,GAC1B,IAAI,CAuDN;AAED,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,SAAS,EACf,YAAY,EAAE,KAAK,EACnB,KAAK,EAAE,cAAc,EACrB,OAAO,GAAE,qBAA0B,GAClC,IAAI,CAwBN;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,IAAI,CAexE;AAED,wBAAgB,mCAAmC,CACjD,KAAK,EAAE,KAAK,GAAG,SAAS,EACxB,QAAQ,EAAE,WAAW,CAAC,KAAK,CAAC,GAC3B,IAAI,CAON"}
|
package/dist/host-reconciler.js
CHANGED
|
@@ -176,6 +176,13 @@ export function disposeHostFiberResources(fiber) {
|
|
|
176
176
|
}
|
|
177
177
|
disposeHostFiberChildResources(fiber.child, seen);
|
|
178
178
|
}
|
|
179
|
+
export function disposeUnretainedHostFiberResources(fiber, retained) {
|
|
180
|
+
if (fiber === undefined || fiber.hasDisposableResources !== true || retained.has(fiber)) {
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
const seen = new Set();
|
|
184
|
+
disposeUnretainedHostFiberSubtreeResources(fiber, seen, retained);
|
|
185
|
+
}
|
|
179
186
|
function disposeHostFiberChildResources(fiber, seen) {
|
|
180
187
|
let cursor = fiber;
|
|
181
188
|
while (cursor !== undefined) {
|
|
@@ -188,6 +195,19 @@ function disposeHostFiberChildResources(fiber, seen) {
|
|
|
188
195
|
cursor = cursor.sibling;
|
|
189
196
|
}
|
|
190
197
|
}
|
|
198
|
+
function disposeUnretainedHostFiberSubtreeResources(fiber, seen, retained) {
|
|
199
|
+
if (fiber === undefined || retained.has(fiber) || fiber.hasDisposableResources !== true) {
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
if (fiber.tag === "reactive-dom-block") {
|
|
203
|
+
disposeReactiveDomBlockState(fiber.stateNode, seen);
|
|
204
|
+
}
|
|
205
|
+
let child = fiber.child;
|
|
206
|
+
while (child !== undefined) {
|
|
207
|
+
disposeUnretainedHostFiberSubtreeResources(child, seen, retained);
|
|
208
|
+
child = child.sibling;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
191
211
|
function reconcileHostChild(parent, currentFirstChild, node, runtime, path, options = {}) {
|
|
192
212
|
resetFiberRefSubtree(parent);
|
|
193
213
|
parent.subtreeFlags = NoFlags;
|
|
@@ -1706,7 +1726,7 @@ function commitHostDirtyFiber(fiber, parent, eventRoot, path, options = {}) {
|
|
|
1706
1726
|
: container instanceof Element
|
|
1707
1727
|
? container
|
|
1708
1728
|
: eventRoot;
|
|
1709
|
-
const portalOptions =
|
|
1729
|
+
const portalOptions = withPortalHostOptions(options, container);
|
|
1710
1730
|
if (fiber.childListChanged ||
|
|
1711
1731
|
fiber.subtreeChildListChanged ||
|
|
1712
1732
|
(fiber.subtreeFlags & Placement) !== NoFlags) {
|
|
@@ -2129,7 +2149,7 @@ function commitHostFiber(fiber, parent, eventRoot, path, options = {}) {
|
|
|
2129
2149
|
: container instanceof Element
|
|
2130
2150
|
? container
|
|
2131
2151
|
: eventRoot;
|
|
2132
|
-
const portalOptions =
|
|
2152
|
+
const portalOptions = withPortalHostOptions(options, container);
|
|
2133
2153
|
const childNodes = commitHostChildren(fiber.child, container, portalEventRoot, `${path}.portal`, portalOptions);
|
|
2134
2154
|
const previousNodes = committedHostNodesFromState(fiber.alternate?.memoizedState);
|
|
2135
2155
|
syncOwnedChildNodes(container, previousNodes, childNodes);
|
|
@@ -2729,7 +2749,11 @@ function createPortalFiber(parent, current, portal, key, runtime, path, options
|
|
|
2729
2749
|
? createWorkInProgress(current, portal.children)
|
|
2730
2750
|
: createFiber("portal", portal.children, key);
|
|
2731
2751
|
fiber.stateNode = portal.container;
|
|
2732
|
-
const childResult = reconcileHostChild(fiber, current?.tag === "portal" ? current.child : undefined, portal.children, runtime, `${path}.portal`, {
|
|
2752
|
+
const childResult = reconcileHostChild(fiber, current?.tag === "portal" ? current.child : undefined, portal.children, runtime, `${path}.portal`, {
|
|
2753
|
+
...options,
|
|
2754
|
+
documentRef: portal.container.ownerDocument,
|
|
2755
|
+
namespace: namespaceForPortalContainer(portal.container),
|
|
2756
|
+
});
|
|
2733
2757
|
fiber.child = childResult.fiber;
|
|
2734
2758
|
fiber.return = parent;
|
|
2735
2759
|
return { fiber, consumed: childResult.consumed };
|
|
@@ -3022,7 +3046,8 @@ function isPortalHostContainer(value) {
|
|
|
3022
3046
|
typeof candidate.removeChild === "function" &&
|
|
3023
3047
|
typeof candidate.ownerDocument?.createElement === "function");
|
|
3024
3048
|
}
|
|
3025
|
-
function
|
|
3049
|
+
function withPortalHostOptions(options, container) {
|
|
3050
|
+
const namespace = namespaceForPortalContainer(container);
|
|
3026
3051
|
const ownerDocument = container.ownerDocument;
|
|
3027
3052
|
if (typeof ownerDocument === "object" &&
|
|
3028
3053
|
ownerDocument !== null &&
|
|
@@ -3030,9 +3055,16 @@ function withPortalDocumentRef(options, container) {
|
|
|
3030
3055
|
return {
|
|
3031
3056
|
...options,
|
|
3032
3057
|
documentRef: ownerDocument,
|
|
3058
|
+
namespace,
|
|
3033
3059
|
};
|
|
3034
3060
|
}
|
|
3035
|
-
return options;
|
|
3061
|
+
return { ...options, namespace };
|
|
3062
|
+
}
|
|
3063
|
+
function namespaceForPortalContainer(container) {
|
|
3064
|
+
if (container instanceof SVGElement && container.localName !== "foreignObject") {
|
|
3065
|
+
return "svg";
|
|
3066
|
+
}
|
|
3067
|
+
return "html";
|
|
3036
3068
|
}
|
|
3037
3069
|
function committedHostNodesFromState(state) {
|
|
3038
3070
|
return Array.isArray(state) ? state : [];
|