@reckona/mreact-compat 0.0.172 → 0.0.173

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.
@@ -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"}
@@ -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 = withPortalDocumentRef(options, container);
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 = withPortalDocumentRef(options, container);
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`, { ...options, documentRef: portal.container.ownerDocument });
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 withPortalDocumentRef(options, container) {
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 : [];