@reckona/mreact-compat 0.0.90 → 0.0.92

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.
Files changed (104) hide show
  1. package/README.md +1 -0
  2. package/dist/class-component.d.ts +20 -6
  3. package/dist/class-component.d.ts.map +1 -1
  4. package/dist/class-component.js +94 -51
  5. package/dist/class-component.js.map +1 -1
  6. package/dist/context.d.ts +19 -3
  7. package/dist/context.d.ts.map +1 -1
  8. package/dist/context.js +55 -6
  9. package/dist/context.js.map +1 -1
  10. package/dist/dom-children.d.ts +2 -0
  11. package/dist/dom-children.d.ts.map +1 -1
  12. package/dist/dom-children.js +103 -1
  13. package/dist/dom-children.js.map +1 -1
  14. package/dist/dom-host-rules.d.ts +10 -0
  15. package/dist/dom-host-rules.d.ts.map +1 -0
  16. package/dist/dom-host-rules.js +86 -0
  17. package/dist/dom-host-rules.js.map +1 -0
  18. package/dist/dom-props.d.ts +3 -2
  19. package/dist/dom-props.d.ts.map +1 -1
  20. package/dist/dom-props.js +229 -33
  21. package/dist/dom-props.js.map +1 -1
  22. package/dist/element.d.ts +9 -4
  23. package/dist/element.d.ts.map +1 -1
  24. package/dist/element.js +101 -26
  25. package/dist/element.js.map +1 -1
  26. package/dist/event-listeners.d.ts +4 -4
  27. package/dist/event-listeners.d.ts.map +1 -1
  28. package/dist/event-listeners.js +1 -1
  29. package/dist/event-listeners.js.map +1 -1
  30. package/dist/event-types.d.ts +10 -0
  31. package/dist/event-types.d.ts.map +1 -1
  32. package/dist/event-types.js.map +1 -1
  33. package/dist/events.js +22 -1
  34. package/dist/events.js.map +1 -1
  35. package/dist/fiber-commit.d.ts +2 -1
  36. package/dist/fiber-commit.d.ts.map +1 -1
  37. package/dist/fiber-commit.js +13 -1
  38. package/dist/fiber-commit.js.map +1 -1
  39. package/dist/fiber-reconciler.d.ts.map +1 -1
  40. package/dist/fiber-reconciler.js +28 -7
  41. package/dist/fiber-reconciler.js.map +1 -1
  42. package/dist/fiber-work-loop.d.ts.map +1 -1
  43. package/dist/fiber-work-loop.js +4 -3
  44. package/dist/fiber-work-loop.js.map +1 -1
  45. package/dist/fiber.d.ts +5 -0
  46. package/dist/fiber.d.ts.map +1 -1
  47. package/dist/fiber.js +9 -0
  48. package/dist/fiber.js.map +1 -1
  49. package/dist/hooks-entry.d.ts +3 -0
  50. package/dist/hooks-entry.d.ts.map +1 -0
  51. package/dist/hooks-entry.js +2 -0
  52. package/dist/hooks-entry.js.map +1 -0
  53. package/dist/hooks.d.ts +39 -5
  54. package/dist/hooks.d.ts.map +1 -1
  55. package/dist/hooks.js +373 -326
  56. package/dist/hooks.js.map +1 -1
  57. package/dist/host-reconciler.d.ts +3 -0
  58. package/dist/host-reconciler.d.ts.map +1 -1
  59. package/dist/host-reconciler.js +1152 -64
  60. package/dist/host-reconciler.js.map +1 -1
  61. package/dist/hydration.d.ts +1 -1
  62. package/dist/hydration.d.ts.map +1 -1
  63. package/dist/hydration.js.map +1 -1
  64. package/dist/index.d.ts +2 -1
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +2 -1
  67. package/dist/index.js.map +1 -1
  68. package/dist/react-default.d.ts +4 -4
  69. package/dist/react-default.d.ts.map +1 -1
  70. package/dist/react-default.js +2 -1
  71. package/dist/react-default.js.map +1 -1
  72. package/dist/reconciler.d.ts.map +1 -1
  73. package/dist/reconciler.js +38 -22
  74. package/dist/reconciler.js.map +1 -1
  75. package/dist/root.d.ts.map +1 -1
  76. package/dist/root.js +48 -13
  77. package/dist/root.js.map +1 -1
  78. package/dist/server-render.d.ts +6 -0
  79. package/dist/server-render.d.ts.map +1 -0
  80. package/dist/server-render.js +307 -0
  81. package/dist/server-render.js.map +1 -0
  82. package/package.json +6 -2
  83. package/src/class-component.ts +216 -51
  84. package/src/context.ts +108 -9
  85. package/src/dom-children.ts +155 -1
  86. package/src/dom-host-rules.ts +115 -0
  87. package/src/dom-props.ts +297 -46
  88. package/src/element.ts +141 -31
  89. package/src/event-listeners.ts +6 -6
  90. package/src/event-types.ts +10 -0
  91. package/src/events.ts +32 -10
  92. package/src/fiber-commit.ts +16 -1
  93. package/src/fiber-reconciler.ts +39 -6
  94. package/src/fiber-work-loop.ts +4 -3
  95. package/src/fiber.ts +14 -0
  96. package/src/hooks-entry.ts +24 -0
  97. package/src/hooks.ts +482 -479
  98. package/src/host-reconciler.ts +1628 -94
  99. package/src/hydration.ts +1 -1
  100. package/src/index.ts +1 -1
  101. package/src/react-default.ts +1 -1
  102. package/src/reconciler.ts +61 -22
  103. package/src/root.ts +55 -12
  104. package/src/server-render.ts +478 -0
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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","sourcesContent":["import { runWithEventPriority } from \"./hooks.js\";\nimport { getAppliedEventHandler } from \"./event-listeners.js\";\nimport type { SyntheticEvent } from \"./event-types.js\";\n\nconst delegatedRootListeners = new WeakMap<Element, Set<string>>();\nconst logicalEventParents = new WeakMap<Element, ParentNode>();\n\nconst reactPropToNativeEvent = new Map<string, string[]>([\n [\"onAnimationEnd\", [\"animationend\"]],\n [\"onAnimationIteration\", [\"animationiteration\"]],\n [\"onAnimationStart\", [\"animationstart\"]],\n [\"onBeforeInput\", [\"beforeinput\"]],\n [\"onCompositionEnd\", [\"compositionend\"]],\n [\"onCompositionStart\", [\"compositionstart\"]],\n [\"onCompositionUpdate\", [\"compositionupdate\"]],\n [\"onContextMenu\", [\"contextmenu\"]],\n [\"onDoubleClick\", [\"dblclick\"]],\n [\"onDragEnd\", [\"dragend\"]],\n [\"onDragEnter\", [\"dragenter\"]],\n [\"onDragExit\", [\"dragexit\"]],\n [\"onDragLeave\", [\"dragleave\"]],\n [\"onDragOver\", [\"dragover\"]],\n [\"onDragStart\", [\"dragstart\"]],\n [\"onDrop\", [\"drop\"]],\n [\"onFocus\", [\"focusin\"]],\n [\"onBlur\", [\"focusout\"]],\n [\"onGotPointerCapture\", [\"gotpointercapture\"]],\n [\"onLostPointerCapture\", [\"lostpointercapture\"]],\n [\"onMouseEnter\", [\"mouseover\"]],\n [\"onMouseLeave\", [\"mouseout\"]],\n [\"onPointerCancel\", [\"pointercancel\"]],\n [\"onPointerDown\", [\"pointerdown\"]],\n [\"onPointerEnter\", [\"pointerover\"]],\n [\"onPointerLeave\", [\"pointerout\"]],\n [\"onPointerMove\", [\"pointermove\"]],\n [\"onPointerOut\", [\"pointerout\"]],\n [\"onPointerOver\", [\"pointerover\"]],\n [\"onPointerUp\", [\"pointerup\"]],\n [\"onTouchCancel\", [\"touchcancel\"]],\n [\"onTouchEnd\", [\"touchend\"]],\n [\"onTouchMove\", [\"touchmove\"]],\n [\"onTouchStart\", [\"touchstart\"]],\n [\"onTransitionEnd\", [\"transitionend\"]],\n [\"onChange\", [\"change\", \"input\"]],\n]);\n\nconst nativeEventToReactProps = new Map<string, string[]>([\n [\"animationend\", [\"onAnimationEnd\"]],\n [\"animationiteration\", [\"onAnimationIteration\"]],\n [\"animationstart\", [\"onAnimationStart\"]],\n [\"beforeinput\", [\"onBeforeInput\"]],\n [\"compositionend\", [\"onCompositionEnd\"]],\n [\"compositionstart\", [\"onCompositionStart\"]],\n [\"compositionupdate\", [\"onCompositionUpdate\"]],\n [\"contextmenu\", [\"onContextMenu\"]],\n [\"dblclick\", [\"onDoubleClick\"]],\n [\"dragend\", [\"onDragEnd\"]],\n [\"dragenter\", [\"onDragEnter\"]],\n [\"dragexit\", [\"onDragExit\"]],\n [\"dragleave\", [\"onDragLeave\"]],\n [\"dragover\", [\"onDragOver\"]],\n [\"dragstart\", [\"onDragStart\"]],\n [\"drop\", [\"onDrop\"]],\n [\"focusin\", [\"onFocus\"]],\n [\"focusout\", [\"onBlur\"]],\n [\"gotpointercapture\", [\"onGotPointerCapture\"]],\n [\"lostpointercapture\", [\"onLostPointerCapture\"]],\n [\"input\", [\"onInput\", \"onChange\"]],\n [\"keydown\", [\"onKeyDown\"]],\n [\"keyup\", [\"onKeyUp\"]],\n [\"mousedown\", [\"onMouseDown\"]],\n [\"mousemove\", [\"onMouseMove\"]],\n [\"mouseup\", [\"onMouseUp\"]],\n [\"mouseout\", [\"onMouseOut\"]],\n [\"mouseover\", [\"onMouseOver\"]],\n [\"pointercancel\", [\"onPointerCancel\"]],\n [\"pointerdown\", [\"onPointerDown\"]],\n [\"pointermove\", [\"onPointerMove\"]],\n [\"pointerout\", [\"onPointerOut\"]],\n [\"pointerover\", [\"onPointerOver\"]],\n [\"pointerup\", [\"onPointerUp\"]],\n [\"touchcancel\", [\"onTouchCancel\"]],\n [\"touchend\", [\"onTouchEnd\"]],\n [\"touchmove\", [\"onTouchMove\"]],\n [\"touchstart\", [\"onTouchStart\"]],\n [\"transitionend\", [\"onTransitionEnd\"]],\n]);\n\nexport function toEventNames(propName: string): string[] {\n const basePropName = propName.endsWith(\"Capture\")\n ? propName.slice(0, -\"Capture\".length)\n : propName;\n return reactPropToNativeEvent.get(basePropName) ?? [\n basePropName.slice(2).toLowerCase(),\n ];\n}\n\nexport function toEventPropNames(eventName: string): string[] {\n const propNames = nativeEventToReactProps.get(eventName);\n if (propNames !== undefined) {\n return propNames;\n }\n const propName = `on${eventName.slice(0, 1).toUpperCase()}${eventName.slice(1)}`;\n return [propName];\n}\n\nexport function setLogicalEventParent(\n container: Element,\n parent: ParentNode,\n): void {\n logicalEventParents.set(container, parent);\n}\n\nexport function getEventPriority(\n eventName: string,\n): \"discrete\" | \"continuous\" | \"default\" {\n if (discreteEventNames.has(eventName)) {\n return \"discrete\";\n }\n\n if (continuousEventNames.has(eventName)) {\n return \"continuous\";\n }\n\n return \"default\";\n}\n\nconst discreteEventNames = new Set([\n \"beforeinput\",\n \"change\",\n \"click\",\n \"dblclick\",\n \"focusin\",\n \"focusout\",\n \"input\",\n \"keydown\",\n \"keyup\",\n \"mousedown\",\n \"mouseup\",\n \"pointerdown\",\n \"pointerup\",\n \"submit\",\n \"touchcancel\",\n \"touchend\",\n \"touchstart\",\n]);\n\nconst continuousEventNames = new Set([\n \"drag\",\n \"dragenter\",\n \"dragleave\",\n \"dragover\",\n \"mousemove\",\n \"mouseout\",\n \"mouseover\",\n \"pointermove\",\n \"pointerout\",\n \"pointerover\",\n \"scroll\",\n \"touchmove\",\n \"wheel\",\n]);\n\nexport function ensureDelegatedEventListener(\n root: Element,\n eventName: string,\n): void {\n const listeners = delegatedRootListeners.get(root) ?? new Set<string>();\n\n if (listeners.has(eventName)) {\n return;\n }\n\n listeners.add(eventName);\n delegatedRootListeners.set(root, listeners);\n root.addEventListener(eventName, (event) => {\n runWithEventPriority(getEventPriority(eventName), () => {\n dispatchDelegatedEvent(root, eventName, event);\n });\n });\n}\n\nfunction dispatchDelegatedEvent(\n root: Element,\n eventName: string,\n event: Event,\n): void {\n const path = getEventPath(root, event);\n const propNames = toEventPropNames(eventName);\n const state = {\n defaultPrevented: event.defaultPrevented,\n propagationStopped: false,\n };\n\n for (let index = path.length - 1; index >= 0; index -= 1) {\n const target = path[index] as HTMLElement;\n dispatchEventPropNames(propNames, \"capture\", event, target, state);\n\n if (state.propagationStopped) {\n return;\n }\n }\n\n if (eventName === \"mouseover\") {\n for (let index = path.length - 1; index >= 0; index -= 1) {\n const target = path[index] as HTMLElement;\n dispatchMouseTransitionEvent(\"onMouseEnter\", event, target, state);\n\n if (state.propagationStopped) {\n return;\n }\n }\n }\n\n if (eventName === \"mouseout\") {\n for (const target of path) {\n dispatchMouseTransitionEvent(\"onMouseLeave\", event, target, state);\n\n if (state.propagationStopped) {\n return;\n }\n }\n }\n\n if (eventName === \"pointerover\") {\n for (let index = path.length - 1; index >= 0; index -= 1) {\n const target = path[index] as HTMLElement;\n dispatchPointerTransitionEvent(\"onPointerEnter\", event, target, state);\n\n if (state.propagationStopped) {\n return;\n }\n }\n }\n\n if (eventName === \"pointerout\") {\n for (const target of path) {\n dispatchPointerTransitionEvent(\"onPointerLeave\", event, target, state);\n\n if (state.propagationStopped) {\n return;\n }\n }\n }\n\n for (const target of path) {\n dispatchEventPropNames(propNames, \"bubble\", event, target, state);\n\n if (state.propagationStopped) {\n return;\n }\n }\n}\n\nfunction dispatchPointerTransitionEvent(\n propName: \"onPointerEnter\" | \"onPointerLeave\",\n event: Event,\n target: HTMLElement,\n state: { defaultPrevented: boolean; propagationStopped: boolean },\n): void {\n if (isInternalMouseTransition(event, target)) {\n return;\n }\n\n const handler = getAppliedEventHandler(target, propName);\n\n if (handler !== undefined) {\n handler(createSyntheticEvent(event, target, state, propName.slice(2).toLowerCase()));\n }\n}\n\nfunction dispatchEventPropNames(\n propNames: readonly string[],\n phase: \"capture\" | \"bubble\",\n event: Event,\n target: HTMLElement,\n state: { defaultPrevented: boolean; propagationStopped: boolean },\n): void {\n for (const propName of propNames) {\n const listenerName = phase === \"capture\" ? `${propName}Capture` : propName;\n const handler = getAppliedEventHandler(target, listenerName);\n\n if (handler !== undefined) {\n handler(createSyntheticEvent(event, target, state));\n }\n\n if (state.propagationStopped) {\n return;\n }\n }\n}\n\nfunction dispatchMouseTransitionEvent(\n propName: \"onMouseEnter\" | \"onMouseLeave\",\n event: Event,\n target: HTMLElement,\n state: { defaultPrevented: boolean; propagationStopped: boolean },\n): void {\n if (isInternalMouseTransition(event, target)) {\n return;\n }\n\n const handler = getAppliedEventHandler(target, propName);\n\n if (handler !== undefined) {\n handler(createSyntheticEvent(event, target, state));\n }\n}\n\nfunction isInternalMouseTransition(event: Event, target: HTMLElement): boolean {\n const relatedTarget =\n event instanceof MouseEvent && event.relatedTarget instanceof Node\n ? event.relatedTarget\n : null;\n\n return relatedTarget !== null && target.contains(relatedTarget);\n}\n\nfunction getEventPath(root: Element, event: Event): HTMLElement[] {\n const path: HTMLElement[] = [];\n let cursor = event.target instanceof Node ? event.target : null;\n\n while (cursor !== null) {\n if (cursor instanceof HTMLElement) {\n path.push(cursor);\n }\n\n if (cursor === root) {\n const logicalParent = logicalEventParents.get(root);\n if (logicalParent === undefined) {\n break;\n }\n cursor = logicalParent;\n continue;\n }\n\n cursor = cursor.parentNode;\n }\n\n return path;\n}\n\nfunction createSyntheticEvent(\n nativeEvent: Event,\n currentTarget: EventTarget,\n state: { defaultPrevented: boolean; propagationStopped: boolean } = {\n defaultPrevented: nativeEvent.defaultPrevented,\n propagationStopped: false,\n },\n syntheticType = nativeEvent.type,\n): SyntheticEvent {\n return {\n bubbles: nativeEvent.bubbles,\n cancelable: nativeEvent.cancelable,\n get defaultPrevented() {\n return state.defaultPrevented;\n },\n eventPhase: nativeEvent.eventPhase,\n isTrusted: nativeEvent.isTrusted ?? false,\n nativeEvent,\n timeStamp: nativeEvent.timeStamp,\n type: syntheticType,\n target: nativeEvent.target,\n currentTarget,\n persist() {},\n preventDefault() {\n state.defaultPrevented = true;\n nativeEvent.preventDefault();\n },\n stopPropagation() {\n state.propagationStopped = true;\n nativeEvent.stopPropagation();\n },\n isDefaultPrevented() {\n return state.defaultPrevented;\n },\n isPersistent() {\n return true;\n },\n isPropagationStopped() {\n return state.propagationStopped;\n },\n };\n}\n"]}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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","sourcesContent":["import { runWithEventPriority } from \"./hooks.js\";\nimport { getAppliedEventHandler } from \"./event-listeners.js\";\nimport type { SyntheticEvent } from \"./event-types.js\";\n\nconst delegatedRootListeners = new WeakMap<Element, Set<string>>();\nconst logicalEventParents = new WeakMap<Element, ParentNode>();\n\nconst reactPropToNativeEvent = new Map<string, string[]>([\n [\"onAnimationEnd\", [\"animationend\"]],\n [\"onAnimationIteration\", [\"animationiteration\"]],\n [\"onAnimationStart\", [\"animationstart\"]],\n [\"onBeforeInput\", [\"beforeinput\"]],\n [\"onCompositionEnd\", [\"compositionend\"]],\n [\"onCompositionStart\", [\"compositionstart\"]],\n [\"onCompositionUpdate\", [\"compositionupdate\"]],\n [\"onContextMenu\", [\"contextmenu\"]],\n [\"onDoubleClick\", [\"dblclick\"]],\n [\"onDragEnd\", [\"dragend\"]],\n [\"onDragEnter\", [\"dragenter\"]],\n [\"onDragExit\", [\"dragexit\"]],\n [\"onDragLeave\", [\"dragleave\"]],\n [\"onDragOver\", [\"dragover\"]],\n [\"onDragStart\", [\"dragstart\"]],\n [\"onDrop\", [\"drop\"]],\n [\"onFocus\", [\"focusin\"]],\n [\"onBlur\", [\"focusout\"]],\n [\"onGotPointerCapture\", [\"gotpointercapture\"]],\n [\"onLostPointerCapture\", [\"lostpointercapture\"]],\n [\"onMouseEnter\", [\"mouseover\"]],\n [\"onMouseLeave\", [\"mouseout\"]],\n [\"onPointerCancel\", [\"pointercancel\"]],\n [\"onPointerDown\", [\"pointerdown\"]],\n [\"onPointerEnter\", [\"pointerover\"]],\n [\"onPointerLeave\", [\"pointerout\"]],\n [\"onPointerMove\", [\"pointermove\"]],\n [\"onPointerOut\", [\"pointerout\"]],\n [\"onPointerOver\", [\"pointerover\"]],\n [\"onPointerUp\", [\"pointerup\"]],\n [\"onTouchCancel\", [\"touchcancel\"]],\n [\"onTouchEnd\", [\"touchend\"]],\n [\"onTouchMove\", [\"touchmove\"]],\n [\"onTouchStart\", [\"touchstart\"]],\n [\"onTransitionEnd\", [\"transitionend\"]],\n [\"onChange\", [\"change\", \"input\"]],\n]);\n\nconst nativeEventToReactProps = new Map<string, string[]>([\n [\"animationend\", [\"onAnimationEnd\"]],\n [\"animationiteration\", [\"onAnimationIteration\"]],\n [\"animationstart\", [\"onAnimationStart\"]],\n [\"beforeinput\", [\"onBeforeInput\"]],\n [\"compositionend\", [\"onCompositionEnd\"]],\n [\"compositionstart\", [\"onCompositionStart\"]],\n [\"compositionupdate\", [\"onCompositionUpdate\"]],\n [\"contextmenu\", [\"onContextMenu\"]],\n [\"dblclick\", [\"onDoubleClick\"]],\n [\"dragend\", [\"onDragEnd\"]],\n [\"dragenter\", [\"onDragEnter\"]],\n [\"dragexit\", [\"onDragExit\"]],\n [\"dragleave\", [\"onDragLeave\"]],\n [\"dragover\", [\"onDragOver\"]],\n [\"dragstart\", [\"onDragStart\"]],\n [\"drop\", [\"onDrop\"]],\n [\"focusin\", [\"onFocus\"]],\n [\"focusout\", [\"onBlur\"]],\n [\"gotpointercapture\", [\"onGotPointerCapture\"]],\n [\"lostpointercapture\", [\"onLostPointerCapture\"]],\n [\"input\", [\"onInput\", \"onChange\"]],\n [\"keydown\", [\"onKeyDown\"]],\n [\"keyup\", [\"onKeyUp\"]],\n [\"mousedown\", [\"onMouseDown\"]],\n [\"mousemove\", [\"onMouseMove\"]],\n [\"mouseup\", [\"onMouseUp\"]],\n [\"mouseout\", [\"onMouseOut\"]],\n [\"mouseover\", [\"onMouseOver\"]],\n [\"pointercancel\", [\"onPointerCancel\"]],\n [\"pointerdown\", [\"onPointerDown\"]],\n [\"pointermove\", [\"onPointerMove\"]],\n [\"pointerout\", [\"onPointerOut\"]],\n [\"pointerover\", [\"onPointerOver\"]],\n [\"pointerup\", [\"onPointerUp\"]],\n [\"touchcancel\", [\"onTouchCancel\"]],\n [\"touchend\", [\"onTouchEnd\"]],\n [\"touchmove\", [\"onTouchMove\"]],\n [\"touchstart\", [\"onTouchStart\"]],\n [\"transitionend\", [\"onTransitionEnd\"]],\n]);\n\nexport function toEventNames(propName: string): string[] {\n const basePropName = propName.endsWith(\"Capture\")\n ? propName.slice(0, -\"Capture\".length)\n : propName;\n return reactPropToNativeEvent.get(basePropName) ?? [\n basePropName.slice(2).toLowerCase(),\n ];\n}\n\nexport function toEventPropNames(eventName: string): string[] {\n const propNames = nativeEventToReactProps.get(eventName);\n if (propNames !== undefined) {\n return propNames;\n }\n const propName = `on${eventName.slice(0, 1).toUpperCase()}${eventName.slice(1)}`;\n return [propName];\n}\n\nexport function setLogicalEventParent(\n container: Element,\n parent: ParentNode,\n): void {\n logicalEventParents.set(container, parent);\n}\n\nexport function getEventPriority(\n eventName: string,\n): \"discrete\" | \"continuous\" | \"default\" {\n if (discreteEventNames.has(eventName)) {\n return \"discrete\";\n }\n\n if (continuousEventNames.has(eventName)) {\n return \"continuous\";\n }\n\n return \"default\";\n}\n\nconst discreteEventNames = new Set([\n \"beforeinput\",\n \"change\",\n \"click\",\n \"dblclick\",\n \"focusin\",\n \"focusout\",\n \"input\",\n \"keydown\",\n \"keyup\",\n \"mousedown\",\n \"mouseup\",\n \"pointerdown\",\n \"pointerup\",\n \"submit\",\n \"touchcancel\",\n \"touchend\",\n \"touchstart\",\n]);\n\nconst continuousEventNames = new Set([\n \"drag\",\n \"dragenter\",\n \"dragleave\",\n \"dragover\",\n \"mousemove\",\n \"mouseout\",\n \"mouseover\",\n \"pointermove\",\n \"pointerout\",\n \"pointerover\",\n \"scroll\",\n \"touchmove\",\n \"wheel\",\n]);\n\nexport function ensureDelegatedEventListener(\n root: Element,\n eventName: string,\n): void {\n const listeners = delegatedRootListeners.get(root) ?? new Set<string>();\n\n if (listeners.has(eventName)) {\n return;\n }\n\n listeners.add(eventName);\n delegatedRootListeners.set(root, listeners);\n root.addEventListener(eventName, (event) => {\n runWithEventPriority(getEventPriority(eventName), () => {\n dispatchDelegatedEvent(root, eventName, event);\n });\n });\n}\n\nfunction dispatchDelegatedEvent(\n root: Element,\n eventName: string,\n event: Event,\n): void {\n const path = getEventPath(root, event);\n const propNames = toEventPropNames(eventName);\n const state = {\n defaultPrevented: event.defaultPrevented,\n propagationStopped: false,\n };\n\n for (let index = path.length - 1; index >= 0; index -= 1) {\n const target = path[index]!;\n dispatchEventPropNames(propNames, \"capture\", event, target, state);\n\n if (state.propagationStopped) {\n return;\n }\n }\n\n if (eventName === \"mouseover\") {\n for (let index = path.length - 1; index >= 0; index -= 1) {\n const target = path[index]!;\n dispatchMouseTransitionEvent(\"onMouseEnter\", event, target, state);\n\n if (state.propagationStopped) {\n return;\n }\n }\n }\n\n if (eventName === \"mouseout\") {\n for (const target of path) {\n dispatchMouseTransitionEvent(\"onMouseLeave\", event, target, state);\n\n if (state.propagationStopped) {\n return;\n }\n }\n }\n\n if (eventName === \"pointerover\") {\n for (let index = path.length - 1; index >= 0; index -= 1) {\n const target = path[index]!;\n dispatchPointerTransitionEvent(\"onPointerEnter\", event, target, state);\n\n if (state.propagationStopped) {\n return;\n }\n }\n }\n\n if (eventName === \"pointerout\") {\n for (const target of path) {\n dispatchPointerTransitionEvent(\"onPointerLeave\", event, target, state);\n\n if (state.propagationStopped) {\n return;\n }\n }\n }\n\n for (const target of path) {\n dispatchEventPropNames(propNames, \"bubble\", event, target, state);\n\n if (state.propagationStopped) {\n return;\n }\n }\n}\n\nfunction dispatchPointerTransitionEvent(\n propName: \"onPointerEnter\" | \"onPointerLeave\",\n event: Event,\n target: Element,\n state: { defaultPrevented: boolean; propagationStopped: boolean },\n): void {\n if (isInternalMouseTransition(event, target)) {\n return;\n }\n\n const handler = getAppliedEventHandler(target, propName);\n\n if (handler !== undefined) {\n handler(createSyntheticEvent(event, target, state, propName.slice(2).toLowerCase()));\n }\n}\n\nfunction dispatchEventPropNames(\n propNames: readonly string[],\n phase: \"capture\" | \"bubble\",\n event: Event,\n target: Element,\n state: { defaultPrevented: boolean; propagationStopped: boolean },\n): void {\n for (const propName of propNames) {\n const listenerName = phase === \"capture\" ? `${propName}Capture` : propName;\n const handler = getAppliedEventHandler(target, listenerName);\n\n if (handler !== undefined) {\n handler(createSyntheticEvent(event, target, state));\n }\n\n if (state.propagationStopped) {\n return;\n }\n }\n}\n\nfunction dispatchMouseTransitionEvent(\n propName: \"onMouseEnter\" | \"onMouseLeave\",\n event: Event,\n target: Element,\n state: { defaultPrevented: boolean; propagationStopped: boolean },\n): void {\n if (isInternalMouseTransition(event, target)) {\n return;\n }\n\n const handler = getAppliedEventHandler(target, propName);\n\n if (handler !== undefined) {\n handler(createSyntheticEvent(event, target, state));\n }\n}\n\nfunction isInternalMouseTransition(event: Event, target: Element): boolean {\n const relatedTarget =\n event instanceof MouseEvent && event.relatedTarget instanceof Node\n ? event.relatedTarget\n : null;\n\n return relatedTarget !== null && target.contains(relatedTarget);\n}\n\nfunction getEventPath(root: Element, event: Event): Element[] {\n const path: Element[] = [];\n let cursor = event.target instanceof Node ? event.target : null;\n\n while (cursor !== null) {\n if (cursor instanceof Element) {\n path.push(cursor);\n }\n\n if (cursor === root) {\n const logicalParent = logicalEventParents.get(root);\n if (logicalParent === undefined) {\n break;\n }\n cursor = logicalParent;\n continue;\n }\n\n cursor = cursor.parentNode;\n }\n\n return path;\n}\n\nfunction createSyntheticEvent(\n nativeEvent: Event,\n currentTarget: EventTarget,\n state: { defaultPrevented: boolean; propagationStopped: boolean } = {\n defaultPrevented: nativeEvent.defaultPrevented,\n propagationStopped: false,\n },\n syntheticType = nativeEvent.type,\n): SyntheticEvent {\n const mouseEvent = nativeEvent instanceof MouseEvent ? nativeEvent : undefined;\n const touchEvent = nativeEvent instanceof TouchEvent ? nativeEvent : undefined;\n const keyboardEvent = nativeEvent instanceof KeyboardEvent ? nativeEvent : undefined;\n\n return {\n bubbles: nativeEvent.bubbles,\n cancelable: nativeEvent.cancelable,\n get defaultPrevented() {\n return state.defaultPrevented;\n },\n eventPhase: nativeEvent.eventPhase,\n isTrusted: nativeEvent.isTrusted ?? false,\n nativeEvent,\n timeStamp: nativeEvent.timeStamp,\n type: syntheticType,\n target: nativeEvent.target,\n currentTarget,\n ...(mouseEvent === undefined\n ? {}\n : {\n clientX: mouseEvent.clientX,\n clientY: mouseEvent.clientY,\n pageX: mouseEvent.pageX,\n pageY: mouseEvent.pageY,\n screenX: mouseEvent.screenX,\n screenY: mouseEvent.screenY,\n relatedTarget: mouseEvent.relatedTarget,\n }),\n ...(touchEvent === undefined\n ? {}\n : {\n touches: touchEvent.touches,\n changedTouches: touchEvent.changedTouches,\n }),\n ...(keyboardEvent === undefined ? {} : { key: keyboardEvent.key }),\n persist() {},\n preventDefault() {\n state.defaultPrevented = true;\n nativeEvent.preventDefault();\n },\n stopPropagation() {\n state.propagationStopped = true;\n nativeEvent.stopPropagation();\n },\n isDefaultPrevented() {\n return state.defaultPrevented;\n },\n isPersistent() {\n return true;\n },\n isPropagationStopped() {\n return state.propagationStopped;\n },\n };\n}\n"]}
@@ -1,4 +1,5 @@
1
- import type { FiberRoot } from "./fiber.js";
1
+ import type { Fiber, FiberRoot } from "./fiber.js";
2
2
  import type { RenderOptions } from "./hydration.js";
3
3
  export declare function commitFiberRoot(root: FiberRoot, options?: RenderOptions): void;
4
+ export declare function detachFiberRefs(fiber: Fiber): void;
4
5
  //# sourceMappingURL=fiber-commit.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fiber-commit.d.ts","sourceRoot":"","sources":["../src/fiber-commit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAS,SAAS,EAAE,MAAM,YAAY,CAAC;AAGnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAOpD,wBAAgB,eAAe,CAC7B,IAAI,EAAE,SAAS,EACf,OAAO,GAAE,aAAkB,GAC1B,IAAI,CAgBN"}
1
+ {"version":3,"file":"fiber-commit.d.ts","sourceRoot":"","sources":["../src/fiber-commit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAInD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAOpD,wBAAgB,eAAe,CAC7B,IAAI,EAAE,SAAS,EACf,OAAO,GAAE,aAAkB,GAC1B,IAAI,CAwBN;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAIlD"}
@@ -1,11 +1,18 @@
1
1
  import { commitHostFiberRoot } from "./fiber-host.js";
2
2
  import { markRootFinished } from "./fiber-lanes.js";
3
+ import { runWithHostCommit } from "./hooks.js";
3
4
  export function commitFiberRoot(root, options = {}) {
4
5
  const finishedWork = root.finishedWork;
5
6
  if (finishedWork === undefined) {
6
7
  return;
7
8
  }
8
- cleanupDeletedRefs(root.current, finishedWork);
9
+ if (root.refCleanupKnown !== true ||
10
+ root.current.hasRefSubtree ||
11
+ finishedWork.hasRefSubtree) {
12
+ runWithHostCommit(() => {
13
+ cleanupDeletedRefs(root.current, finishedWork);
14
+ });
15
+ }
9
16
  commitHostFiberRoot(root, finishedWork, options);
10
17
  root.current = finishedWork;
11
18
  root.current.stateNode = root;
@@ -15,6 +22,11 @@ export function commitFiberRoot(root, options = {}) {
15
22
  root.workInProgress = undefined;
16
23
  root.workInProgressRootRenderLanes = 0;
17
24
  }
25
+ export function detachFiberRefs(fiber) {
26
+ for (const record of collectRefRecords(fiber)) {
27
+ detachRef(record.ref);
28
+ }
29
+ }
18
30
  function cleanupDeletedRefs(previous, next) {
19
31
  const nextRefs = new Set();
20
32
  collectRefRecords(next, nextRefs);
@@ -1 +1 @@
1
- {"version":3,"file":"fiber-commit.js","sourceRoot":"","sources":["../src/fiber-commit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAQpD,MAAM,UAAU,eAAe,CAC7B,IAAe,EACf,UAAyB,EAAE;IAE3B,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;IAEvC,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO;IACT,CAAC;IAED,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC/C,mBAAmB,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IACjD,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC;IAC5B,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAC9B,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC;IAC/D,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;IAC9B,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;IAChC,IAAI,CAAC,6BAA6B,GAAG,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,kBAAkB,CAAC,QAAe,EAAE,IAAW;IACtD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAW,CAAC;IAEpC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAElC,KAAK,MAAM,MAAM,IAAI,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CACxB,KAAwB,EACxB,OAAqB,IAAI,GAAG,EAAE;IAE9B,MAAM,OAAO,GAAgB,EAAE,CAAC;IAChC,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,OAAO,MAAM,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QAEhC,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACtC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QAChD,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QACvD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;IAC1B,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,WAAW,CAAC,KAAY;IAC/B,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,YAAY,CAE3C,CAAC;IAEd,OAAO,KAAK,EAAE,GAAG,CAAC;AACpB,CAAC;AAED,SAAS,SAAS,CAAC,GAAY;IAC7B,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 type { Fiber, FiberRoot } from \"./fiber.js\";\nimport { commitHostFiberRoot } from \"./fiber-host.js\";\nimport { markRootFinished } from \"./fiber-lanes.js\";\nimport type { RenderOptions } from \"./hydration.js\";\n\ninterface RefRecord {\n ref: unknown;\n node: unknown;\n}\n\nexport function commitFiberRoot(\n root: FiberRoot,\n options: RenderOptions = {},\n): void {\n const finishedWork = root.finishedWork;\n\n if (finishedWork === undefined) {\n return;\n }\n\n cleanupDeletedRefs(root.current, finishedWork);\n commitHostFiberRoot(root, finishedWork, options);\n root.current = finishedWork;\n root.current.stateNode = root;\n markRootFinished(root, finishedWork.lanes);\n root.callbackPriority = root.pendingLanes & -root.pendingLanes;\n root.finishedWork = undefined;\n root.workInProgress = undefined;\n root.workInProgressRootRenderLanes = 0;\n}\n\nfunction cleanupDeletedRefs(previous: Fiber, next: Fiber): void {\n const nextRefs = new Set<unknown>();\n\n collectRefRecords(next, nextRefs);\n\n for (const record of collectRefRecords(previous)) {\n if (!nextRefs.has(record.ref)) {\n detachRef(record.ref);\n }\n }\n}\n\nfunction collectRefRecords(\n fiber: Fiber | undefined,\n refs: Set<unknown> = new Set(),\n): RefRecord[] {\n const records: RefRecord[] = [];\n let cursor = fiber;\n\n while (cursor !== undefined) {\n const ref = getFiberRef(cursor);\n\n if (ref !== undefined && ref !== null) {\n refs.add(ref);\n records.push({ ref, node: cursor.stateNode });\n }\n\n records.push(...collectRefRecords(cursor.child, refs));\n cursor = cursor.sibling;\n }\n\n return records;\n}\n\nfunction getFiberRef(fiber: Fiber): unknown {\n const props = (fiber.memoizedProps ?? fiber.pendingProps) as\n | { ref?: unknown }\n | undefined;\n\n return props?.ref;\n}\n\nfunction detachRef(ref: unknown): void {\n if (typeof ref === \"function\") {\n ref(null);\n return;\n }\n\n if (typeof ref === \"object\" && ref !== null && \"current\" in ref) {\n (ref as { current: unknown }).current = null;\n }\n}\n"]}
1
+ {"version":3,"file":"fiber-commit.js","sourceRoot":"","sources":["../src/fiber-commit.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Fiber, FiberRoot } from \"./fiber.js\";\nimport { commitHostFiberRoot } from \"./fiber-host.js\";\nimport { markRootFinished } from \"./fiber-lanes.js\";\nimport { runWithHostCommit } from \"./hooks.js\";\nimport type { RenderOptions } from \"./hydration.js\";\n\ninterface RefRecord {\n ref: unknown;\n node: unknown;\n}\n\nexport function commitFiberRoot(\n root: FiberRoot,\n options: RenderOptions = {},\n): void {\n const finishedWork = root.finishedWork;\n\n if (finishedWork === undefined) {\n return;\n }\n\n if (\n root.refCleanupKnown !== true ||\n root.current.hasRefSubtree ||\n finishedWork.hasRefSubtree\n ) {\n runWithHostCommit(() => {\n cleanupDeletedRefs(root.current, finishedWork);\n });\n }\n commitHostFiberRoot(root, finishedWork, options);\n root.current = finishedWork;\n root.current.stateNode = root;\n markRootFinished(root, finishedWork.lanes);\n root.callbackPriority = root.pendingLanes & -root.pendingLanes;\n root.finishedWork = undefined;\n root.workInProgress = undefined;\n root.workInProgressRootRenderLanes = 0;\n}\n\nexport function detachFiberRefs(fiber: Fiber): void {\n for (const record of collectRefRecords(fiber)) {\n detachRef(record.ref);\n }\n}\n\nfunction cleanupDeletedRefs(previous: Fiber, next: Fiber): void {\n const nextRefs = new Set<unknown>();\n\n collectRefRecords(next, nextRefs);\n\n for (const record of collectRefRecords(previous)) {\n if (!nextRefs.has(record.ref)) {\n detachRef(record.ref);\n }\n }\n}\n\nfunction collectRefRecords(\n fiber: Fiber | undefined,\n refs: Set<unknown> = new Set(),\n): RefRecord[] {\n const records: RefRecord[] = [];\n let cursor = fiber;\n\n while (cursor !== undefined) {\n const ref = getFiberRef(cursor);\n\n if (ref !== undefined && ref !== null) {\n refs.add(ref);\n records.push({ ref, node: cursor.stateNode });\n }\n\n records.push(...collectRefRecords(cursor.child, refs));\n cursor = cursor.sibling;\n }\n\n return records;\n}\n\nfunction getFiberRef(fiber: Fiber): unknown {\n const props = (fiber.memoizedProps ?? fiber.pendingProps) as\n | { ref?: unknown }\n | undefined;\n\n return props?.ref;\n}\n\nfunction detachRef(ref: unknown): void {\n if (typeof ref === \"function\") {\n ref(null);\n return;\n }\n\n if (typeof ref === \"object\" && ref !== null && \"current\" in ref) {\n (ref as { current: unknown }).current = null;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"fiber-reconciler.d.ts","sourceRoot":"","sources":["../src/fiber-reconciler.ts"],"names":[],"mappings":"AAAA,OAAO,EAaL,KAAK,eAAe,EACrB,MAAM,cAAc,CAAC;AAUtB,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAqBxD,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,KAAK,GACV,KAAK,GAAG,SAAS,CAcnB;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,SAAS,CAmKxD;AAwDD,wBAAgB,YAAY,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,CAyB9C;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,KAAK,GAAG,SAAS,GAAG,IAAI,CAYnE;AA6CD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAqDvE"}
1
+ {"version":3,"file":"fiber-reconciler.d.ts","sourceRoot":"","sources":["../src/fiber-reconciler.ts"],"names":[],"mappings":"AAAA,OAAO,EAaL,KAAK,eAAe,EACrB,MAAM,cAAc,CAAC;AAWtB,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AA6BxD,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,KAAK,GACV,KAAK,GAAG,SAAS,CAcnB;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,SAAS,CAmKxD;AAwDD,wBAAgB,YAAY,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,CA4B9C;AAuBD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,KAAK,GAAG,SAAS,GAAG,IAAI,CAYnE;AA6CD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAqDvE"}
@@ -1,12 +1,13 @@
1
1
  import { ERROR_BOUNDARY_TYPE, FORWARD_REF_TYPE, Fragment, LAZY_TYPE, MEMO_TYPE, STRICT_MODE_TYPE, Suspense, SuspenseList, createElement, isReactCompatElement, } from "./element.js";
2
- import { isReactCompatConsumer, isReactCompatProvider, popContextProvider, pushContextProvider, useContext, } from "./context.js";
2
+ import { consumerContext, isReactCompatConsumer, isReactCompatProvider, popContextProvider, pushContextProvider, useContext, } from "./context.js";
3
3
  import { reconcileChildFibers } from "./fiber-child.js";
4
4
  import {} from "./fiber.js";
5
5
  import { DidCapture } from "./fiber-flags.js";
6
6
  import { mergeLanes, NoLanes } from "./fiber-lanes.js";
7
7
  import { isThenable } from "./thenable.js";
8
- import { applyDerivedStateFromProps, isClassComponentType, } from "./class-component.js";
8
+ import { isClassComponentType, resolveDerivedStateFromProps, } from "./class-component.js";
9
9
  import { areMemoPropsEqual } from "./prop-comparison.js";
10
+ import { createHostElement, hostElementMatches, isHostElement, namespaceForHostChildren, namespaceForHostElement, } from "./dom-host-rules.js";
10
11
  export function performUnitOfWork(root, unit) {
11
12
  let next;
12
13
  try {
@@ -72,7 +73,7 @@ export function beginWork(unit) {
72
73
  const render = typeof props.children === "function"
73
74
  ? props.children
74
75
  : () => null;
75
- return reconcileChildFibers(unit, unit.alternate?.child, render(useContext(unit.type.context)));
76
+ return reconcileChildFibers(unit, unit.alternate?.child, render(useContext(consumerContext(unit.type))));
76
77
  }
77
78
  if (unit.tag === "class-component" && isClassComponentType(unit.type)) {
78
79
  return beginClassComponent(unit, unit.type);
@@ -155,12 +156,15 @@ export function completeWork(unit) {
155
156
  }
156
157
  if (unit.tag === "host-component") {
157
158
  const current = unit.alternate;
159
+ const parentNamespace = parentHostNamespace(unit);
160
+ const elementNamespace = namespaceForHostElement(parentNamespace, String(unit.type));
158
161
  unit.stateNode =
159
162
  current?.tag === "host-component" &&
160
163
  current.type === unit.type &&
161
- current.stateNode instanceof HTMLElement
164
+ isHostElement(current.stateNode) &&
165
+ hostElementMatches(current.stateNode, String(unit.type), elementNamespace)
162
166
  ? current.stateNode
163
- : document.createElement(String(unit.type));
167
+ : createHostElement(document, String(unit.type), parentNamespace);
164
168
  return;
165
169
  }
166
170
  if (unit.tag === "host-text") {
@@ -171,6 +175,23 @@ export function completeWork(unit) {
171
175
  : document.createTextNode("");
172
176
  }
173
177
  }
178
+ function parentHostNamespace(unit) {
179
+ const ancestors = [];
180
+ let current = unit.return;
181
+ while (current !== undefined) {
182
+ if (current.tag === "host-component" && typeof current.type === "string") {
183
+ ancestors.push(current.type);
184
+ }
185
+ current = current.return;
186
+ }
187
+ let namespace = "html";
188
+ for (let index = ancestors.length - 1; index >= 0; index -= 1) {
189
+ const tagName = ancestors[index] ?? "";
190
+ const elementNamespace = namespaceForHostElement(namespace, tagName);
191
+ namespace = namespaceForHostChildren(elementNamespace, tagName);
192
+ }
193
+ return namespace;
194
+ }
174
195
  export function cleanupUnfinishedWork(unit) {
175
196
  if (unit === undefined) {
176
197
  return;
@@ -311,8 +332,7 @@ function beginClassComponent(unit, type) {
311
332
  : undefined;
312
333
  const instance = currentInstance ?? new type(nextProps);
313
334
  const previousState = instance.state ?? {};
314
- applyDerivedStateFromProps(type, instance, nextProps, previousState);
315
- const nextState = instance.state ?? {};
335
+ const nextState = resolveDerivedStateFromProps(type, nextProps, previousState);
316
336
  unit.stateNode = instance;
317
337
  if (unit.alternate !== undefined &&
318
338
  instance.shouldComponentUpdate?.(nextProps, nextState) === false) {
@@ -321,6 +341,7 @@ function beginClassComponent(unit, type) {
321
341
  return undefined;
322
342
  }
323
343
  instance.props = nextProps;
344
+ instance.state = nextState;
324
345
  return reconcileChildFibers(unit, unit.alternate?.child, instance.render());
325
346
  }
326
347
  function captureClassErrorBoundary(root, boundary, thrownValue) {
@@ -1 +1 @@
1
- {"version":3,"file":"fiber-reconciler.js","sourceRoot":"","sources":["../src/fiber-reconciler.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ERROR_BOUNDARY_TYPE,\n FORWARD_REF_TYPE,\n Fragment,\n LAZY_TYPE,\n MEMO_TYPE,\n STRICT_MODE_TYPE,\n Suspense,\n SuspenseList,\n createElement,\n isReactCompatElement,\n type LazyType,\n type MemoType,\n type ReactCompatNode,\n} from \"./element.js\";\nimport {\n isReactCompatConsumer,\n isReactCompatProvider,\n popContextProvider,\n pushContextProvider,\n useContext,\n type ReactCompatProvider,\n} from \"./context.js\";\nimport { reconcileChildFibers } from \"./fiber-child.js\";\nimport { type Fiber, type FiberRoot } from \"./fiber.js\";\nimport { DidCapture } from \"./fiber-flags.js\";\nimport { mergeLanes, NoLanes } from \"./fiber-lanes.js\";\nimport { isThenable } from \"./thenable.js\";\nimport {\n applyDerivedStateFromProps,\n isClassComponentType,\n type ClassComponentInstance,\n type ClassComponentType,\n} from \"./class-component.js\";\nimport { areMemoPropsEqual } from \"./prop-comparison.js\";\n\ninterface ContextProviderFiberState {\n provider: ReactCompatProvider<unknown>;\n pushed: boolean;\n}\n\ninterface SuspenseFiberState {\n didSuspend: boolean;\n}\n\nexport function performUnitOfWork(\n root: FiberRoot,\n unit: Fiber,\n): Fiber | undefined {\n let next: Fiber | undefined;\n\n try {\n next = beginWork(unit);\n } catch (error) {\n return captureThrownValue(root, unit, error);\n }\n\n if (next !== undefined) {\n return next;\n }\n\n return completeUnitOfWork(root, unit);\n}\n\nexport function beginWork(unit: Fiber): Fiber | undefined {\n if (unit.tag === \"host-root\") {\n const children = (unit.pendingProps as { children?: ReactCompatNode })\n .children;\n return reconcileChildFibers(\n unit,\n unit.alternate?.child,\n children as ReactCompatNode,\n );\n }\n\n if (unit.tag === \"host-component\") {\n const children = (unit.pendingProps as { children?: ReactCompatNode })\n .children;\n return reconcileChildFibers(\n unit,\n unit.alternate?.child,\n children as ReactCompatNode,\n );\n }\n\n if (unit.tag === \"fragment\") {\n return reconcileChildFibers(\n unit,\n unit.alternate?.child,\n unit.pendingProps as ReactCompatNode,\n );\n }\n\n if (unit.tag === \"strict-mode\") {\n previewStrictModeNode(\n (unit.pendingProps as { children?: ReactCompatNode }).children,\n );\n return reconcileChildFibers(\n unit,\n unit.alternate?.child,\n (unit.pendingProps as { children?: ReactCompatNode }).children,\n );\n }\n\n if (unit.tag === \"function-component\" && isFunctionComponentType(unit.type)) {\n const children = unit.type(unit.pendingProps as Record<string, unknown>);\n return reconcileChildFibers(unit, unit.alternate?.child, children);\n }\n\n if (unit.tag === \"forward-ref\" && isForwardRefType(unit.type)) {\n const props = unit.pendingProps as Record<string, unknown>;\n const children = unit.type.render(props, props.ref ?? null);\n return reconcileChildFibers(unit, unit.alternate?.child, children);\n }\n\n if (unit.tag === \"memo\" && isMemoType(unit.type)) {\n const previousProps = unit.alternate?.memoizedProps as\n | Record<string, unknown>\n | undefined;\n const nextProps = unit.pendingProps as Record<string, unknown>;\n\n if (\n unit.alternate !== undefined &&\n previousProps !== undefined &&\n areMemoPropsEqual(unit.type, previousProps, nextProps)\n ) {\n unit.child = unit.alternate.child;\n return undefined;\n }\n\n return reconcileChildFibers(\n unit,\n unit.alternate?.child,\n createElement(unit.type.type, nextProps),\n );\n }\n\n if (unit.tag === \"context-provider\" && isReactCompatProvider(unit.type)) {\n const props = unit.pendingProps as {\n value: unknown;\n children?: ReactCompatNode;\n };\n pushContextProvider(unit.type, props.value);\n unit.memoizedState = {\n provider: unit.type,\n pushed: true,\n } satisfies ContextProviderFiberState;\n return reconcileChildFibers(unit, unit.alternate?.child, props.children);\n }\n\n if (unit.tag === \"context-consumer\" && isReactCompatConsumer(unit.type)) {\n const props = unit.pendingProps as {\n children?: unknown;\n };\n const render =\n typeof props.children === \"function\"\n ? (props.children as (value: unknown) => ReactCompatNode)\n : () => null;\n return reconcileChildFibers(\n unit,\n unit.alternate?.child,\n render(useContext(unit.type.context)),\n );\n }\n\n if (unit.tag === \"class-component\" && isClassComponentType(unit.type)) {\n return beginClassComponent(unit, unit.type);\n }\n\n if (unit.tag === \"lazy\" && isLazyType(unit.type)) {\n const lazyType = unit.type;\n\n if (lazyType.status === \"resolved\" && lazyType.resolved !== undefined) {\n return reconcileChildFibers(\n unit,\n unit.alternate?.child,\n createElement(lazyType.resolved, unit.pendingProps as Record<string, unknown>),\n );\n }\n\n if (lazyType.status === \"rejected\") {\n throw lazyType.error;\n }\n\n if (lazyType.status === \"uninitialized\") {\n lazyType.status = \"pending\";\n lazyType.promise = lazyType\n .load()\n .then((module) => {\n lazyType.status = \"resolved\";\n lazyType.resolved = module.default;\n })\n .catch((error: unknown) => {\n lazyType.status = \"rejected\";\n lazyType.error = error;\n });\n }\n\n throw lazyType.promise;\n }\n\n if (unit.tag === \"suspense\" && unit.type === Suspense) {\n unit.memoizedState = { didSuspend: false } satisfies SuspenseFiberState;\n return reconcileChildFibers(\n unit,\n unit.alternate?.child,\n (unit.pendingProps as { children?: ReactCompatNode }).children,\n );\n }\n\n if (unit.tag === \"suspense-list\" && unit.type === SuspenseList) {\n return reconcileChildFibers(\n unit,\n unit.alternate?.child,\n (unit.pendingProps as { children?: ReactCompatNode }).children,\n );\n }\n\n if (unit.tag === \"error-boundary\" && unit.type === ERROR_BOUNDARY_TYPE) {\n return reconcileChildFibers(\n unit,\n unit.alternate?.child,\n (unit.pendingProps as { children?: ReactCompatNode }).children,\n );\n }\n\n return undefined;\n}\n\nfunction previewStrictModeNode(node: ReactCompatNode): void {\n if (\n node === null ||\n node === undefined ||\n typeof node === \"boolean\" ||\n typeof node === \"string\" ||\n typeof node === \"number\"\n ) {\n return;\n }\n\n if (Array.isArray(node)) {\n for (const child of node) {\n previewStrictModeNode(child);\n }\n return;\n }\n\n if (!isReactCompatElement(node)) {\n return;\n }\n\n if (isClassComponentType(node.type)) {\n const instance = new node.type(node.props as Record<string, unknown>);\n previewStrictModeNode(instance.render());\n return;\n }\n\n if (isForwardRefType(node.type)) {\n previewStrictModeNode(\n node.type.render(\n node.props as Record<string, unknown>,\n (node.props as { ref?: unknown }).ref ?? null,\n ),\n );\n return;\n }\n\n if (isMemoType(node.type)) {\n previewStrictModeNode(createElement(node.type.type, node.props));\n return;\n }\n\n if (typeof node.type === \"function\") {\n const component = node.type as (props: Record<string, unknown>) => ReactCompatNode;\n previewStrictModeNode(\n component(node.props as Record<string, unknown>),\n );\n return;\n }\n\n previewStrictModeNode(node.props.children as ReactCompatNode);\n}\n\nexport function completeWork(unit: Fiber): void {\n if (unit.tag === \"context-provider\") {\n popPushedContextProvider(unit);\n }\n\n if (unit.tag === \"host-component\") {\n const current = unit.alternate;\n\n unit.stateNode =\n current?.tag === \"host-component\" &&\n current.type === unit.type &&\n current.stateNode instanceof HTMLElement\n ? current.stateNode\n : document.createElement(String(unit.type));\n return;\n }\n\n if (unit.tag === \"host-text\") {\n const current = unit.alternate;\n\n unit.stateNode =\n current?.tag === \"host-text\" && current.stateNode instanceof Text\n ? current.stateNode\n : document.createTextNode(\"\");\n }\n}\n\nexport function cleanupUnfinishedWork(unit: Fiber | undefined): void {\n if (unit === undefined) {\n return;\n }\n\n let cursor: Fiber | undefined = unit;\n\n while (cursor !== undefined) {\n cleanupUnfinishedWork(cursor.child);\n popPushedContextProvider(cursor);\n cursor = cursor.sibling;\n }\n}\n\nfunction completeUnitOfWork(\n root: FiberRoot,\n completedWork: Fiber,\n): Fiber | undefined {\n let unit: Fiber | undefined = completedWork;\n\n while (unit !== undefined) {\n completeWork(unit);\n bubbleCompletedProperties(unit);\n\n if (unit.sibling !== undefined) {\n return unit.sibling;\n }\n\n if (unit.return === undefined) {\n unit.memoizedProps = unit.pendingProps;\n root.finishedWork = unit;\n return undefined;\n }\n\n unit.memoizedProps = unit.pendingProps;\n unit = unit.return;\n }\n\n return undefined;\n}\n\nfunction bubbleCompletedProperties(unit: Fiber): void {\n let subtreeFlags = unit.subtreeFlags;\n let childLanes = NoLanes;\n let child = unit.child;\n\n while (child !== undefined) {\n subtreeFlags |= child.subtreeFlags | child.flags;\n childLanes = mergeLanes(childLanes, mergeLanes(child.lanes, child.childLanes));\n child.return = unit;\n child = child.sibling;\n }\n\n unit.subtreeFlags = subtreeFlags;\n unit.childLanes = childLanes;\n}\n\nexport function canReconcileConcurrently(node: ReactCompatNode): boolean {\n if (\n node === null ||\n node === undefined ||\n typeof node === \"boolean\" ||\n typeof node === \"string\" ||\n typeof node === \"number\"\n ) {\n return true;\n }\n\n if (Array.isArray(node)) {\n return node.every(canReconcileConcurrently);\n }\n\n if (!isReactCompatElement(node)) {\n return false;\n }\n\n if (\n typeof node.type === \"string\" ||\n node.type === Fragment ||\n node.type === STRICT_MODE_TYPE\n ) {\n return canReconcileConcurrently(node.props.children as ReactCompatNode);\n }\n\n if (node.type === Suspense || node.type === SuspenseList) {\n return true;\n }\n\n if (node.type === ERROR_BOUNDARY_TYPE) {\n return canReconcileConcurrently(node.props.children as ReactCompatNode);\n }\n\n if (isReactCompatProvider(node.type)) {\n return canReconcileConcurrently(node.props.children as ReactCompatNode);\n }\n\n if (isReactCompatConsumer(node.type)) {\n return typeof node.props.children === \"function\";\n }\n\n if (isMemoType(node.type)) {\n return canReconcileElementTypeConcurrently(node.type.type);\n }\n\n return (\n isFunctionComponentType(node.type) ||\n isForwardRefType(node.type) ||\n isLazyType(node.type) ||\n isClassComponentType(node.type)\n );\n}\n\nfunction popPushedContextProvider(unit: Fiber): void {\n const state = unit.memoizedState as ContextProviderFiberState | undefined;\n\n if (state?.pushed === true) {\n popContextProvider(state.provider);\n state.pushed = false;\n }\n}\n\nfunction isFunctionComponentType(\n type: unknown,\n): type is (props: Record<string, unknown>) => ReactCompatNode {\n return typeof type === \"function\";\n}\n\nfunction isForwardRefType(\n type: unknown,\n): type is {\n $$typeof: typeof FORWARD_REF_TYPE;\n render: (props: Record<string, unknown>, ref: unknown) => ReactCompatNode;\n} {\n return (\n typeof type === \"object\" &&\n type !== null &&\n (type as { $$typeof?: unknown }).$$typeof === FORWARD_REF_TYPE\n );\n}\n\nfunction isMemoType(\n type: unknown,\n): type is MemoType<Record<string, unknown>> {\n return (\n typeof type === \"object\" &&\n type !== null &&\n (type as { $$typeof?: unknown }).$$typeof === MEMO_TYPE\n );\n}\n\nfunction isLazyType(\n type: unknown,\n): type is LazyType<Record<string, unknown>> {\n return (\n typeof type === \"object\" &&\n type !== null &&\n (type as { $$typeof?: unknown }).$$typeof === LAZY_TYPE\n );\n}\n\nfunction canReconcileElementTypeConcurrently(type: unknown): boolean {\n return (\n typeof type === \"string\" ||\n type === Fragment ||\n isFunctionComponentType(type) ||\n isForwardRefType(type) ||\n isLazyType(type) ||\n (isMemoType(type) && canReconcileElementTypeConcurrently(type.type))\n );\n}\n\nfunction captureThrownValue(\n root: FiberRoot,\n source: Fiber,\n thrownValue: unknown,\n): Fiber | undefined {\n let boundary = source.return;\n\n while (boundary !== undefined) {\n if (isThenable(thrownValue) && boundary.tag === \"suspense\") {\n return captureSuspenseBoundary(root, boundary);\n }\n\n if (!isThenable(thrownValue) && boundary.tag === \"error-boundary\") {\n return captureErrorBoundary(root, boundary, thrownValue);\n }\n\n if (!isThenable(thrownValue) && boundary.tag === \"class-component\") {\n const captured = captureClassErrorBoundary(root, boundary, thrownValue);\n\n if (captured !== undefined) {\n return captured;\n }\n }\n\n boundary = boundary.return;\n }\n\n throw thrownValue;\n}\n\nfunction beginClassComponent(\n unit: Fiber,\n type: ClassComponentType,\n): Fiber | undefined {\n const nextProps = unit.pendingProps as Record<string, unknown>;\n const currentInstance =\n unit.alternate?.stateNode instanceof type\n ? unit.alternate.stateNode\n : undefined;\n const instance = currentInstance ?? new type(nextProps);\n const previousState = instance.state ?? {};\n applyDerivedStateFromProps(type, instance, nextProps, previousState);\n const nextState = instance.state ?? {};\n\n unit.stateNode = instance;\n\n if (\n unit.alternate !== undefined &&\n instance.shouldComponentUpdate?.(nextProps, nextState) === false\n ) {\n instance.props = nextProps;\n unit.child = unit.alternate.child;\n return undefined;\n }\n\n instance.props = nextProps;\n return reconcileChildFibers(unit, unit.alternate?.child, instance.render());\n}\n\nfunction captureClassErrorBoundary(\n root: FiberRoot,\n boundary: Fiber,\n thrownValue: unknown,\n): Fiber | undefined {\n if (!isClassComponentType(boundary.type)) {\n return undefined;\n }\n\n const instance = boundary.stateNode as ClassComponentInstance | undefined;\n\n if (instance === undefined || !isClassErrorBoundary(boundary.type, instance)) {\n return undefined;\n }\n\n cleanupUnfinishedWork(boundary.child);\n boundary.flags |= DidCapture;\n const error = thrownValue instanceof Error ? thrownValue : new Error(String(thrownValue));\n const derivedState = boundary.type.getDerivedStateFromError?.(error);\n\n if (derivedState !== undefined && derivedState !== null) {\n instance.state = {\n ...instance.state,\n ...derivedState,\n };\n }\n\n instance.componentDidCatch?.(error, { componentStack: \"\" });\n boundary.child = reconcileChildFibers(\n boundary,\n boundary.alternate?.child,\n instance.render(),\n );\n return boundary.child ?? completeUnitOfWork(root, boundary);\n}\n\nfunction isClassErrorBoundary(\n type: ClassComponentType,\n instance: ClassComponentInstance,\n): boolean {\n return (\n typeof type.getDerivedStateFromError === \"function\" ||\n typeof instance.componentDidCatch === \"function\"\n );\n}\n\nfunction captureSuspenseBoundary(\n root: FiberRoot,\n boundary: Fiber,\n): Fiber | undefined {\n cleanupUnfinishedWork(boundary.child);\n boundary.flags |= DidCapture;\n boundary.memoizedState = { didSuspend: true } satisfies SuspenseFiberState;\n boundary.child = reconcileChildFibers(\n boundary,\n boundary.alternate?.child,\n (boundary.pendingProps as { fallback?: ReactCompatNode }).fallback,\n );\n applySuspenseListRevealOrder(boundary);\n return boundary.child ?? completeUnitOfWork(root, boundary);\n}\n\nfunction captureErrorBoundary(\n root: FiberRoot,\n boundary: Fiber,\n thrownValue: unknown,\n): Fiber | undefined {\n cleanupUnfinishedWork(boundary.child);\n boundary.flags |= DidCapture;\n const error = thrownValue instanceof Error ? thrownValue : new Error(String(thrownValue));\n const props = boundary.pendingProps as {\n fallback?: unknown;\n onError?: unknown;\n };\n\n if (typeof props.onError === \"function\") {\n (props.onError as (error: Error) => void)(error);\n }\n\n const fallback =\n typeof props.fallback === \"function\"\n ? (props.fallback as (error: Error) => ReactCompatNode)(error)\n : null;\n boundary.child = reconcileChildFibers(boundary, boundary.alternate?.child, fallback);\n return boundary.child ?? completeUnitOfWork(root, boundary);\n}\n\nfunction applySuspenseListRevealOrder(boundary: Fiber): void {\n const parent = boundary.return;\n\n if (parent?.tag !== \"suspense-list\") {\n return;\n }\n\n const revealOrder = (parent.pendingProps as { revealOrder?: unknown }).revealOrder;\n\n if (revealOrder === \"forwards\") {\n boundary.sibling = undefined;\n } else if (revealOrder === \"backwards\") {\n parent.child = boundary;\n }\n}\n"]}
1
+ {"version":3,"file":"fiber-reconciler.js","sourceRoot":"","sources":["../src/fiber-reconciler.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ERROR_BOUNDARY_TYPE,\n FORWARD_REF_TYPE,\n Fragment,\n LAZY_TYPE,\n MEMO_TYPE,\n STRICT_MODE_TYPE,\n Suspense,\n SuspenseList,\n createElement,\n isReactCompatElement,\n type LazyType,\n type MemoType,\n type ReactCompatNode,\n} from \"./element.js\";\nimport {\n consumerContext,\n isReactCompatConsumer,\n isReactCompatProvider,\n popContextProvider,\n pushContextProvider,\n useContext,\n type ReactCompatProvider,\n} from \"./context.js\";\nimport { reconcileChildFibers } from \"./fiber-child.js\";\nimport { type Fiber, type FiberRoot } from \"./fiber.js\";\nimport { DidCapture } from \"./fiber-flags.js\";\nimport { mergeLanes, NoLanes } from \"./fiber-lanes.js\";\nimport { isThenable } from \"./thenable.js\";\nimport {\n isClassComponentType,\n resolveDerivedStateFromProps,\n type ClassComponentInstance,\n type ClassComponentType,\n} from \"./class-component.js\";\nimport { areMemoPropsEqual } from \"./prop-comparison.js\";\nimport {\n createHostElement,\n hostElementMatches,\n isHostElement,\n namespaceForHostChildren,\n namespaceForHostElement,\n type HostNamespace,\n} from \"./dom-host-rules.js\";\n\ninterface ContextProviderFiberState {\n provider: ReactCompatProvider<unknown>;\n pushed: boolean;\n}\n\ninterface SuspenseFiberState {\n didSuspend: boolean;\n}\n\nexport function performUnitOfWork(\n root: FiberRoot,\n unit: Fiber,\n): Fiber | undefined {\n let next: Fiber | undefined;\n\n try {\n next = beginWork(unit);\n } catch (error) {\n return captureThrownValue(root, unit, error);\n }\n\n if (next !== undefined) {\n return next;\n }\n\n return completeUnitOfWork(root, unit);\n}\n\nexport function beginWork(unit: Fiber): Fiber | undefined {\n if (unit.tag === \"host-root\") {\n const children = (unit.pendingProps as { children?: ReactCompatNode })\n .children;\n return reconcileChildFibers(\n unit,\n unit.alternate?.child,\n children as ReactCompatNode,\n );\n }\n\n if (unit.tag === \"host-component\") {\n const children = (unit.pendingProps as { children?: ReactCompatNode })\n .children;\n return reconcileChildFibers(\n unit,\n unit.alternate?.child,\n children as ReactCompatNode,\n );\n }\n\n if (unit.tag === \"fragment\") {\n return reconcileChildFibers(\n unit,\n unit.alternate?.child,\n unit.pendingProps as ReactCompatNode,\n );\n }\n\n if (unit.tag === \"strict-mode\") {\n previewStrictModeNode(\n (unit.pendingProps as { children?: ReactCompatNode }).children,\n );\n return reconcileChildFibers(\n unit,\n unit.alternate?.child,\n (unit.pendingProps as { children?: ReactCompatNode }).children,\n );\n }\n\n if (unit.tag === \"function-component\" && isFunctionComponentType(unit.type)) {\n const children = unit.type(unit.pendingProps as Record<string, unknown>);\n return reconcileChildFibers(unit, unit.alternate?.child, children);\n }\n\n if (unit.tag === \"forward-ref\" && isForwardRefType(unit.type)) {\n const props = unit.pendingProps as Record<string, unknown>;\n const children = unit.type.render(props, props.ref ?? null);\n return reconcileChildFibers(unit, unit.alternate?.child, children);\n }\n\n if (unit.tag === \"memo\" && isMemoType(unit.type)) {\n const previousProps = unit.alternate?.memoizedProps as\n | Record<string, unknown>\n | undefined;\n const nextProps = unit.pendingProps as Record<string, unknown>;\n\n if (\n unit.alternate !== undefined &&\n previousProps !== undefined &&\n areMemoPropsEqual(unit.type, previousProps, nextProps)\n ) {\n unit.child = unit.alternate.child;\n return undefined;\n }\n\n return reconcileChildFibers(\n unit,\n unit.alternate?.child,\n createElement(unit.type.type, nextProps),\n );\n }\n\n if (unit.tag === \"context-provider\" && isReactCompatProvider(unit.type)) {\n const props = unit.pendingProps as {\n value: unknown;\n children?: ReactCompatNode;\n };\n pushContextProvider(unit.type, props.value);\n unit.memoizedState = {\n provider: unit.type,\n pushed: true,\n } satisfies ContextProviderFiberState;\n return reconcileChildFibers(unit, unit.alternate?.child, props.children);\n }\n\n if (unit.tag === \"context-consumer\" && isReactCompatConsumer(unit.type)) {\n const props = unit.pendingProps as {\n children?: unknown;\n };\n const render =\n typeof props.children === \"function\"\n ? (props.children as (value: unknown) => ReactCompatNode)\n : () => null;\n return reconcileChildFibers(\n unit,\n unit.alternate?.child,\n render(useContext(consumerContext(unit.type))),\n );\n }\n\n if (unit.tag === \"class-component\" && isClassComponentType(unit.type)) {\n return beginClassComponent(unit, unit.type);\n }\n\n if (unit.tag === \"lazy\" && isLazyType(unit.type)) {\n const lazyType = unit.type;\n\n if (lazyType.status === \"resolved\" && lazyType.resolved !== undefined) {\n return reconcileChildFibers(\n unit,\n unit.alternate?.child,\n createElement(lazyType.resolved, unit.pendingProps as Record<string, unknown>),\n );\n }\n\n if (lazyType.status === \"rejected\") {\n throw lazyType.error;\n }\n\n if (lazyType.status === \"uninitialized\") {\n lazyType.status = \"pending\";\n lazyType.promise = lazyType\n .load()\n .then((module) => {\n lazyType.status = \"resolved\";\n lazyType.resolved = module.default;\n })\n .catch((error: unknown) => {\n lazyType.status = \"rejected\";\n lazyType.error = error;\n });\n }\n\n throw lazyType.promise;\n }\n\n if (unit.tag === \"suspense\" && unit.type === Suspense) {\n unit.memoizedState = { didSuspend: false } satisfies SuspenseFiberState;\n return reconcileChildFibers(\n unit,\n unit.alternate?.child,\n (unit.pendingProps as { children?: ReactCompatNode }).children,\n );\n }\n\n if (unit.tag === \"suspense-list\" && unit.type === SuspenseList) {\n return reconcileChildFibers(\n unit,\n unit.alternate?.child,\n (unit.pendingProps as { children?: ReactCompatNode }).children,\n );\n }\n\n if (unit.tag === \"error-boundary\" && unit.type === ERROR_BOUNDARY_TYPE) {\n return reconcileChildFibers(\n unit,\n unit.alternate?.child,\n (unit.pendingProps as { children?: ReactCompatNode }).children,\n );\n }\n\n return undefined;\n}\n\nfunction previewStrictModeNode(node: ReactCompatNode): void {\n if (\n node === null ||\n node === undefined ||\n typeof node === \"boolean\" ||\n typeof node === \"string\" ||\n typeof node === \"number\"\n ) {\n return;\n }\n\n if (Array.isArray(node)) {\n for (const child of node) {\n previewStrictModeNode(child);\n }\n return;\n }\n\n if (!isReactCompatElement(node)) {\n return;\n }\n\n if (isClassComponentType(node.type)) {\n const instance = new node.type(node.props as Record<string, unknown>);\n previewStrictModeNode(instance.render());\n return;\n }\n\n if (isForwardRefType(node.type)) {\n previewStrictModeNode(\n node.type.render(\n node.props as Record<string, unknown>,\n (node.props as { ref?: unknown }).ref ?? null,\n ),\n );\n return;\n }\n\n if (isMemoType(node.type)) {\n previewStrictModeNode(createElement(node.type.type, node.props));\n return;\n }\n\n if (typeof node.type === \"function\") {\n const component = node.type as (props: Record<string, unknown>) => ReactCompatNode;\n previewStrictModeNode(\n component(node.props as Record<string, unknown>),\n );\n return;\n }\n\n previewStrictModeNode(node.props.children as ReactCompatNode);\n}\n\nexport function completeWork(unit: Fiber): void {\n if (unit.tag === \"context-provider\") {\n popPushedContextProvider(unit);\n }\n\n if (unit.tag === \"host-component\") {\n const current = unit.alternate;\n const parentNamespace = parentHostNamespace(unit);\n const elementNamespace = namespaceForHostElement(parentNamespace, String(unit.type));\n\n unit.stateNode =\n current?.tag === \"host-component\" &&\n current.type === unit.type &&\n isHostElement(current.stateNode) &&\n hostElementMatches(current.stateNode, String(unit.type), elementNamespace)\n ? current.stateNode\n : createHostElement(document, String(unit.type), parentNamespace);\n return;\n }\n\n if (unit.tag === \"host-text\") {\n const current = unit.alternate;\n\n unit.stateNode =\n current?.tag === \"host-text\" && current.stateNode instanceof Text\n ? current.stateNode\n : document.createTextNode(\"\");\n }\n}\n\nfunction parentHostNamespace(unit: Fiber): HostNamespace {\n const ancestors: string[] = [];\n let current = unit.return;\n\n while (current !== undefined) {\n if (current.tag === \"host-component\" && typeof current.type === \"string\") {\n ancestors.push(current.type);\n }\n current = current.return;\n }\n\n let namespace: HostNamespace = \"html\";\n for (let index = ancestors.length - 1; index >= 0; index -= 1) {\n const tagName = ancestors[index] ?? \"\";\n const elementNamespace = namespaceForHostElement(namespace, tagName);\n namespace = namespaceForHostChildren(elementNamespace, tagName);\n }\n\n return namespace;\n}\n\nexport function cleanupUnfinishedWork(unit: Fiber | undefined): void {\n if (unit === undefined) {\n return;\n }\n\n let cursor: Fiber | undefined = unit;\n\n while (cursor !== undefined) {\n cleanupUnfinishedWork(cursor.child);\n popPushedContextProvider(cursor);\n cursor = cursor.sibling;\n }\n}\n\nfunction completeUnitOfWork(\n root: FiberRoot,\n completedWork: Fiber,\n): Fiber | undefined {\n let unit: Fiber | undefined = completedWork;\n\n while (unit !== undefined) {\n completeWork(unit);\n bubbleCompletedProperties(unit);\n\n if (unit.sibling !== undefined) {\n return unit.sibling;\n }\n\n if (unit.return === undefined) {\n unit.memoizedProps = unit.pendingProps;\n root.finishedWork = unit;\n return undefined;\n }\n\n unit.memoizedProps = unit.pendingProps;\n unit = unit.return;\n }\n\n return undefined;\n}\n\nfunction bubbleCompletedProperties(unit: Fiber): void {\n let subtreeFlags = unit.subtreeFlags;\n let childLanes = NoLanes;\n let child = unit.child;\n\n while (child !== undefined) {\n subtreeFlags |= child.subtreeFlags | child.flags;\n childLanes = mergeLanes(childLanes, mergeLanes(child.lanes, child.childLanes));\n child.return = unit;\n child = child.sibling;\n }\n\n unit.subtreeFlags = subtreeFlags;\n unit.childLanes = childLanes;\n}\n\nexport function canReconcileConcurrently(node: ReactCompatNode): boolean {\n if (\n node === null ||\n node === undefined ||\n typeof node === \"boolean\" ||\n typeof node === \"string\" ||\n typeof node === \"number\"\n ) {\n return true;\n }\n\n if (Array.isArray(node)) {\n return node.every(canReconcileConcurrently);\n }\n\n if (!isReactCompatElement(node)) {\n return false;\n }\n\n if (\n typeof node.type === \"string\" ||\n node.type === Fragment ||\n node.type === STRICT_MODE_TYPE\n ) {\n return canReconcileConcurrently(node.props.children as ReactCompatNode);\n }\n\n if (node.type === Suspense || node.type === SuspenseList) {\n return true;\n }\n\n if (node.type === ERROR_BOUNDARY_TYPE) {\n return canReconcileConcurrently(node.props.children as ReactCompatNode);\n }\n\n if (isReactCompatProvider(node.type)) {\n return canReconcileConcurrently(node.props.children as ReactCompatNode);\n }\n\n if (isReactCompatConsumer(node.type)) {\n return typeof node.props.children === \"function\";\n }\n\n if (isMemoType(node.type)) {\n return canReconcileElementTypeConcurrently(node.type.type);\n }\n\n return (\n isFunctionComponentType(node.type) ||\n isForwardRefType(node.type) ||\n isLazyType(node.type) ||\n isClassComponentType(node.type)\n );\n}\n\nfunction popPushedContextProvider(unit: Fiber): void {\n const state = unit.memoizedState as ContextProviderFiberState | undefined;\n\n if (state?.pushed === true) {\n popContextProvider(state.provider);\n state.pushed = false;\n }\n}\n\nfunction isFunctionComponentType(\n type: unknown,\n): type is (props: Record<string, unknown>) => ReactCompatNode {\n return typeof type === \"function\";\n}\n\nfunction isForwardRefType(\n type: unknown,\n): type is {\n $$typeof: typeof FORWARD_REF_TYPE;\n render: (props: Record<string, unknown>, ref: unknown) => ReactCompatNode;\n} {\n return (\n typeof type === \"object\" &&\n type !== null &&\n (type as { $$typeof?: unknown }).$$typeof === FORWARD_REF_TYPE\n );\n}\n\nfunction isMemoType(\n type: unknown,\n): type is MemoType<Record<string, unknown>> {\n return (\n typeof type === \"object\" &&\n type !== null &&\n (type as { $$typeof?: unknown }).$$typeof === MEMO_TYPE\n );\n}\n\nfunction isLazyType(\n type: unknown,\n): type is LazyType<Record<string, unknown>> {\n return (\n typeof type === \"object\" &&\n type !== null &&\n (type as { $$typeof?: unknown }).$$typeof === LAZY_TYPE\n );\n}\n\nfunction canReconcileElementTypeConcurrently(type: unknown): boolean {\n return (\n typeof type === \"string\" ||\n type === Fragment ||\n isFunctionComponentType(type) ||\n isForwardRefType(type) ||\n isLazyType(type) ||\n (isMemoType(type) && canReconcileElementTypeConcurrently(type.type))\n );\n}\n\nfunction captureThrownValue(\n root: FiberRoot,\n source: Fiber,\n thrownValue: unknown,\n): Fiber | undefined {\n let boundary = source.return;\n\n while (boundary !== undefined) {\n if (isThenable(thrownValue) && boundary.tag === \"suspense\") {\n return captureSuspenseBoundary(root, boundary);\n }\n\n if (!isThenable(thrownValue) && boundary.tag === \"error-boundary\") {\n return captureErrorBoundary(root, boundary, thrownValue);\n }\n\n if (!isThenable(thrownValue) && boundary.tag === \"class-component\") {\n const captured = captureClassErrorBoundary(root, boundary, thrownValue);\n\n if (captured !== undefined) {\n return captured;\n }\n }\n\n boundary = boundary.return;\n }\n\n throw thrownValue;\n}\n\nfunction beginClassComponent(\n unit: Fiber,\n type: ClassComponentType,\n): Fiber | undefined {\n const nextProps = unit.pendingProps as Record<string, unknown>;\n const currentInstance =\n unit.alternate?.stateNode instanceof type\n ? unit.alternate.stateNode\n : undefined;\n const instance = currentInstance ?? new type(nextProps);\n const previousState = instance.state ?? {};\n const nextState = resolveDerivedStateFromProps(type, nextProps, previousState);\n\n unit.stateNode = instance;\n\n if (\n unit.alternate !== undefined &&\n instance.shouldComponentUpdate?.(nextProps, nextState) === false\n ) {\n instance.props = nextProps;\n unit.child = unit.alternate.child;\n return undefined;\n }\n\n instance.props = nextProps;\n instance.state = nextState;\n return reconcileChildFibers(unit, unit.alternate?.child, instance.render());\n}\n\nfunction captureClassErrorBoundary(\n root: FiberRoot,\n boundary: Fiber,\n thrownValue: unknown,\n): Fiber | undefined {\n if (!isClassComponentType(boundary.type)) {\n return undefined;\n }\n\n const instance = boundary.stateNode as ClassComponentInstance | undefined;\n\n if (instance === undefined || !isClassErrorBoundary(boundary.type, instance)) {\n return undefined;\n }\n\n cleanupUnfinishedWork(boundary.child);\n boundary.flags |= DidCapture;\n const error = thrownValue instanceof Error ? thrownValue : new Error(String(thrownValue));\n const derivedState = boundary.type.getDerivedStateFromError?.(error);\n\n if (derivedState !== undefined && derivedState !== null) {\n instance.state = {\n ...instance.state,\n ...derivedState,\n };\n }\n\n instance.componentDidCatch?.(error, { componentStack: \"\" });\n boundary.child = reconcileChildFibers(\n boundary,\n boundary.alternate?.child,\n instance.render(),\n );\n return boundary.child ?? completeUnitOfWork(root, boundary);\n}\n\nfunction isClassErrorBoundary(\n type: ClassComponentType,\n instance: ClassComponentInstance,\n): boolean {\n return (\n typeof type.getDerivedStateFromError === \"function\" ||\n typeof instance.componentDidCatch === \"function\"\n );\n}\n\nfunction captureSuspenseBoundary(\n root: FiberRoot,\n boundary: Fiber,\n): Fiber | undefined {\n cleanupUnfinishedWork(boundary.child);\n boundary.flags |= DidCapture;\n boundary.memoizedState = { didSuspend: true } satisfies SuspenseFiberState;\n boundary.child = reconcileChildFibers(\n boundary,\n boundary.alternate?.child,\n (boundary.pendingProps as { fallback?: ReactCompatNode }).fallback,\n );\n applySuspenseListRevealOrder(boundary);\n return boundary.child ?? completeUnitOfWork(root, boundary);\n}\n\nfunction captureErrorBoundary(\n root: FiberRoot,\n boundary: Fiber,\n thrownValue: unknown,\n): Fiber | undefined {\n cleanupUnfinishedWork(boundary.child);\n boundary.flags |= DidCapture;\n const error = thrownValue instanceof Error ? thrownValue : new Error(String(thrownValue));\n const props = boundary.pendingProps as {\n fallback?: unknown;\n onError?: unknown;\n };\n\n if (typeof props.onError === \"function\") {\n (props.onError as (error: Error) => void)(error);\n }\n\n const fallback =\n typeof props.fallback === \"function\"\n ? (props.fallback as (error: Error) => ReactCompatNode)(error)\n : null;\n boundary.child = reconcileChildFibers(boundary, boundary.alternate?.child, fallback);\n return boundary.child ?? completeUnitOfWork(root, boundary);\n}\n\nfunction applySuspenseListRevealOrder(boundary: Fiber): void {\n const parent = boundary.return;\n\n if (parent?.tag !== \"suspense-list\") {\n return;\n }\n\n const revealOrder = (parent.pendingProps as { revealOrder?: unknown }).revealOrder;\n\n if (revealOrder === \"forwards\") {\n boundary.sibling = undefined;\n } else if (revealOrder === \"backwards\") {\n parent.child = boundary;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"fiber-work-loop.d.ts","sourceRoot":"","sources":["../src/fiber-work-loop.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,KAAK,EACV,KAAK,SAAS,EACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAIL,KAAK,IAAI,EACT,KAAK,KAAK,EACX,MAAM,kBAAkB,CAAC;AAc1B,MAAM,WAAW,uBAAuB;IACtC,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC;CAC7B;AAED,MAAM,MAAM,sBAAsB,GAC9B;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,YAAY,EAAE,KAAK,CAAA;CAAE,GAC5C;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,CAAC;AAE1B,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,OAAO,GAAG,SAAS,CAUtE;AAED,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,OAAO,GACjB,SAAS,GAAG,SAAS,CAEvB;AAED,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,KAAK,GAAG,IAAI,GACzB,IAAI,CAYN;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,OAAO,CAOlE;AAED,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,GACX,IAAI,CAYN;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE,uBAA4B,GACpC,sBAAsB,CAiCxB;AAED,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,SAAS,EACf,OAAO,GAAE,uBAA4B,GACpC,sBAAsB,CAGxB;AAED,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,KAAK,GACX,IAAI,CAKN;AAeD,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,KAAK,GAAG,IAAI,GACzB,IAAI,CAeN"}
1
+ {"version":3,"file":"fiber-work-loop.d.ts","sourceRoot":"","sources":["../src/fiber-work-loop.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,KAAK,EACV,KAAK,SAAS,EACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAIL,KAAK,IAAI,EACT,KAAK,KAAK,EACX,MAAM,kBAAkB,CAAC;AAc1B,MAAM,WAAW,uBAAuB;IACtC,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC;CAC7B;AAED,MAAM,MAAM,sBAAsB,GAC9B;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,YAAY,EAAE,KAAK,CAAA;CAAE,GAC5C;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,CAAC;AAE1B,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,OAAO,GAAG,SAAS,CAUtE;AAED,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,OAAO,GACjB,SAAS,GAAG,SAAS,CAEvB;AAED,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,KAAK,GAAG,IAAI,GACzB,IAAI,CAYN;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,OAAO,CAOlE;AAED,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,GACX,IAAI,CAYN;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE,uBAA4B,GACpC,sBAAsB,CAiCxB;AAED,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,SAAS,EACf,OAAO,GAAE,uBAA4B,GACpC,sBAAsB,CAGxB;AAED,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,KAAK,GACX,IAAI,CAKN;AAeD,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,KAAK,GAAG,IAAI,GACzB,IAAI,CAgBN"}
@@ -87,9 +87,10 @@ export function performSyncWorkOnRoot(root, element, commit) {
87
87
  fallbackFinishedWork.lanes = lanes;
88
88
  fallbackFinishedWork.memoizedProps = { children: element };
89
89
  const committedWork = commit();
90
- const finishedWork = committedWork ?? fallbackFinishedWork;
91
- root.current = finishedWork;
92
- root.current.stateNode = root;
90
+ if (committedWork === undefined) {
91
+ root.current = fallbackFinishedWork;
92
+ root.current.stateNode = root;
93
+ }
93
94
  root.finishedWork = undefined;
94
95
  root.workInProgress = undefined;
95
96
  root.workInProgressRootRenderLanes = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"fiber-work-loop.js","sourceRoot":"","sources":["../src/fiber-work-loop.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n createFiberRoot,\n createWorkInProgress,\n type Fiber,\n type FiberRoot,\n} from \"./fiber.js\";\nimport {\n getNextLanes,\n markRootUpdated,\n SyncLane,\n type Lane,\n type Lanes,\n} from \"./fiber-lanes.js\";\nimport {\n isPerformingSchedulerWork,\n scheduleCallback,\n shouldYieldToHost,\n type SchedulerCallback,\n} from \"./fiber-scheduler.js\";\nimport {\n cleanupUnfinishedWork,\n performUnitOfWork,\n} from \"./fiber-reconciler.js\";\n\nconst fiberRootsByContainer = new WeakMap<Element, FiberRoot>();\n\nexport interface ConcurrentRenderOptions {\n shouldYield?: () => boolean;\n}\n\nexport type ConcurrentRenderResult =\n | { status: \"completed\"; finishedWork: Fiber }\n | { status: \"yielded\" };\n\nexport function createContainerFiberRoot(container: Element): FiberRoot {\n const existing = fiberRootsByContainer.get(container);\n\n if (existing !== undefined) {\n return existing;\n }\n\n const root = createFiberRoot(container);\n fiberRootsByContainer.set(container, root);\n return root;\n}\n\nexport function getFiberRootForContainer(\n container: Element,\n): FiberRoot | undefined {\n return fiberRootsByContainer.get(container);\n}\n\nexport function enqueueRootRender(\n root: FiberRoot,\n element: unknown,\n lane: Lane,\n commit: () => Fiber | void,\n): void {\n markRootUpdated(root, lane);\n root.workInProgressElement = element;\n\n if ((lane & SyncLane) === 0 && !isPerformingSchedulerWork()) {\n scheduleCallback(getSchedulerPriorityForLanes(lane), () => {\n performSyncWorkOnRoot(root, element, commit);\n });\n return;\n }\n\n performSyncWorkOnRoot(root, element, commit);\n}\n\nexport function shouldYieldAfterUnits(limit: number): () => boolean {\n let units = 0;\n\n return () => {\n units += 1;\n return units > limit;\n };\n}\n\nexport function prepareFreshStack(\n root: FiberRoot,\n element: unknown,\n lanes: Lanes,\n): void {\n const workInProgress = createWorkInProgress(root.current, {\n children: element,\n });\n\n workInProgress.lanes = lanes;\n workInProgress.memoizedProps = { children: element };\n root.workInProgress = workInProgress;\n root.workInProgressRootRenderLanes = lanes;\n root.workInProgressElement = element;\n root.finishedWork = undefined;\n markRootUpdated(root, lanes);\n}\n\nexport function renderRootConcurrent(\n root: FiberRoot,\n lanes: Lanes,\n options: ConcurrentRenderOptions = {},\n): ConcurrentRenderResult {\n if (\n shouldPreemptWorkInProgress(root.workInProgressRootRenderLanes, lanes)\n ) {\n discardWorkInProgress(root);\n }\n\n if (root.workInProgress === undefined) {\n prepareFreshStack(\n root,\n root.workInProgressElement ??\n (root.current.memoizedProps as { children?: unknown } | undefined)?.children,\n lanes,\n );\n }\n\n while (root.workInProgress !== undefined) {\n if (options.shouldYield?.() === true || shouldYieldToHost()) {\n return { status: \"yielded\" };\n }\n\n root.workInProgress = performUnitOfWork(root, root.workInProgress);\n }\n\n const finishedWork = root.finishedWork;\n\n if (finishedWork === undefined) {\n throw new Error(\"Fiber concurrent render completed without finished work.\");\n }\n\n finishedWork.lanes = lanes;\n root.workInProgressRootRenderLanes = 0;\n return { status: \"completed\", finishedWork };\n}\n\nexport function performConcurrentWorkOnRoot(\n root: FiberRoot,\n options: ConcurrentRenderOptions = {},\n): ConcurrentRenderResult {\n const lanes = getNextLanes(root);\n return renderRootConcurrent(root, lanes, options);\n}\n\nexport function scheduleConcurrentWorkOnRoot(\n root: FiberRoot,\n lanes: Lanes,\n): void {\n scheduleCallback(\n getSchedulerPriorityForLanes(lanes),\n createConcurrentRootCallback(root, lanes),\n );\n}\n\nfunction createConcurrentRootCallback(\n root: FiberRoot,\n lanes: Lanes,\n): SchedulerCallback {\n const callback: SchedulerCallback = () => {\n const result = renderRootConcurrent(root, lanes);\n\n return result.status === \"yielded\" ? callback : undefined;\n };\n\n return callback;\n}\n\nexport function performSyncWorkOnRoot(\n root: FiberRoot,\n element: unknown,\n commit: () => Fiber | void,\n): void {\n const lanes = root.pendingLanes;\n const fallbackFinishedWork = createWorkInProgress(root.current, { children: element });\n\n fallbackFinishedWork.lanes = lanes;\n fallbackFinishedWork.memoizedProps = { children: element };\n const committedWork = commit();\n const finishedWork = committedWork ?? fallbackFinishedWork;\n root.current = finishedWork;\n root.current.stateNode = root;\n root.finishedWork = undefined;\n root.workInProgress = undefined;\n root.workInProgressRootRenderLanes = 0;\n root.pendingLanes &= ~lanes;\n root.callbackPriority = root.pendingLanes & -root.pendingLanes;\n}\n\nfunction shouldPreemptWorkInProgress(\n currentLanes: Lanes,\n nextLanes: Lanes,\n): boolean {\n return currentLanes !== 0 && nextLanes !== 0 && nextLanes < currentLanes;\n}\n\nfunction discardWorkInProgress(root: FiberRoot): void {\n cleanupUnfinishedWork(root.current.alternate);\n\n if (root.current.alternate === root.workInProgress) {\n root.current.alternate = undefined;\n }\n\n root.workInProgress = undefined;\n root.workInProgressRootRenderLanes = 0;\n}\n\nfunction getSchedulerPriorityForLanes(\n lanes: Lanes,\n): \"immediate\" | \"user-blocking\" | \"normal\" | \"low\" {\n if ((lanes & 1) !== 0) {\n return \"immediate\";\n }\n\n if ((lanes & 2) !== 0) {\n return \"user-blocking\";\n }\n\n if ((lanes & 8) !== 0) {\n return \"normal\";\n }\n\n return \"low\";\n}\n"]}
1
+ {"version":3,"file":"fiber-work-loop.js","sourceRoot":"","sources":["../src/fiber-work-loop.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n createFiberRoot,\n createWorkInProgress,\n type Fiber,\n type FiberRoot,\n} from \"./fiber.js\";\nimport {\n getNextLanes,\n markRootUpdated,\n SyncLane,\n type Lane,\n type Lanes,\n} from \"./fiber-lanes.js\";\nimport {\n isPerformingSchedulerWork,\n scheduleCallback,\n shouldYieldToHost,\n type SchedulerCallback,\n} from \"./fiber-scheduler.js\";\nimport {\n cleanupUnfinishedWork,\n performUnitOfWork,\n} from \"./fiber-reconciler.js\";\n\nconst fiberRootsByContainer = new WeakMap<Element, FiberRoot>();\n\nexport interface ConcurrentRenderOptions {\n shouldYield?: () => boolean;\n}\n\nexport type ConcurrentRenderResult =\n | { status: \"completed\"; finishedWork: Fiber }\n | { status: \"yielded\" };\n\nexport function createContainerFiberRoot(container: Element): FiberRoot {\n const existing = fiberRootsByContainer.get(container);\n\n if (existing !== undefined) {\n return existing;\n }\n\n const root = createFiberRoot(container);\n fiberRootsByContainer.set(container, root);\n return root;\n}\n\nexport function getFiberRootForContainer(\n container: Element,\n): FiberRoot | undefined {\n return fiberRootsByContainer.get(container);\n}\n\nexport function enqueueRootRender(\n root: FiberRoot,\n element: unknown,\n lane: Lane,\n commit: () => Fiber | void,\n): void {\n markRootUpdated(root, lane);\n root.workInProgressElement = element;\n\n if ((lane & SyncLane) === 0 && !isPerformingSchedulerWork()) {\n scheduleCallback(getSchedulerPriorityForLanes(lane), () => {\n performSyncWorkOnRoot(root, element, commit);\n });\n return;\n }\n\n performSyncWorkOnRoot(root, element, commit);\n}\n\nexport function shouldYieldAfterUnits(limit: number): () => boolean {\n let units = 0;\n\n return () => {\n units += 1;\n return units > limit;\n };\n}\n\nexport function prepareFreshStack(\n root: FiberRoot,\n element: unknown,\n lanes: Lanes,\n): void {\n const workInProgress = createWorkInProgress(root.current, {\n children: element,\n });\n\n workInProgress.lanes = lanes;\n workInProgress.memoizedProps = { children: element };\n root.workInProgress = workInProgress;\n root.workInProgressRootRenderLanes = lanes;\n root.workInProgressElement = element;\n root.finishedWork = undefined;\n markRootUpdated(root, lanes);\n}\n\nexport function renderRootConcurrent(\n root: FiberRoot,\n lanes: Lanes,\n options: ConcurrentRenderOptions = {},\n): ConcurrentRenderResult {\n if (\n shouldPreemptWorkInProgress(root.workInProgressRootRenderLanes, lanes)\n ) {\n discardWorkInProgress(root);\n }\n\n if (root.workInProgress === undefined) {\n prepareFreshStack(\n root,\n root.workInProgressElement ??\n (root.current.memoizedProps as { children?: unknown } | undefined)?.children,\n lanes,\n );\n }\n\n while (root.workInProgress !== undefined) {\n if (options.shouldYield?.() === true || shouldYieldToHost()) {\n return { status: \"yielded\" };\n }\n\n root.workInProgress = performUnitOfWork(root, root.workInProgress);\n }\n\n const finishedWork = root.finishedWork;\n\n if (finishedWork === undefined) {\n throw new Error(\"Fiber concurrent render completed without finished work.\");\n }\n\n finishedWork.lanes = lanes;\n root.workInProgressRootRenderLanes = 0;\n return { status: \"completed\", finishedWork };\n}\n\nexport function performConcurrentWorkOnRoot(\n root: FiberRoot,\n options: ConcurrentRenderOptions = {},\n): ConcurrentRenderResult {\n const lanes = getNextLanes(root);\n return renderRootConcurrent(root, lanes, options);\n}\n\nexport function scheduleConcurrentWorkOnRoot(\n root: FiberRoot,\n lanes: Lanes,\n): void {\n scheduleCallback(\n getSchedulerPriorityForLanes(lanes),\n createConcurrentRootCallback(root, lanes),\n );\n}\n\nfunction createConcurrentRootCallback(\n root: FiberRoot,\n lanes: Lanes,\n): SchedulerCallback {\n const callback: SchedulerCallback = () => {\n const result = renderRootConcurrent(root, lanes);\n\n return result.status === \"yielded\" ? callback : undefined;\n };\n\n return callback;\n}\n\nexport function performSyncWorkOnRoot(\n root: FiberRoot,\n element: unknown,\n commit: () => Fiber | void,\n): void {\n const lanes = root.pendingLanes;\n const fallbackFinishedWork = createWorkInProgress(root.current, { children: element });\n\n fallbackFinishedWork.lanes = lanes;\n fallbackFinishedWork.memoizedProps = { children: element };\n const committedWork = commit();\n if (committedWork === undefined) {\n root.current = fallbackFinishedWork;\n root.current.stateNode = root;\n }\n root.finishedWork = undefined;\n root.workInProgress = undefined;\n root.workInProgressRootRenderLanes = 0;\n root.pendingLanes &= ~lanes;\n root.callbackPriority = root.pendingLanes & -root.pendingLanes;\n}\n\nfunction shouldPreemptWorkInProgress(\n currentLanes: Lanes,\n nextLanes: Lanes,\n): boolean {\n return currentLanes !== 0 && nextLanes !== 0 && nextLanes < currentLanes;\n}\n\nfunction discardWorkInProgress(root: FiberRoot): void {\n cleanupUnfinishedWork(root.current.alternate);\n\n if (root.current.alternate === root.workInProgress) {\n root.current.alternate = undefined;\n }\n\n root.workInProgress = undefined;\n root.workInProgressRootRenderLanes = 0;\n}\n\nfunction getSchedulerPriorityForLanes(\n lanes: Lanes,\n): \"immediate\" | \"user-blocking\" | \"normal\" | \"low\" {\n if ((lanes & 1) !== 0) {\n return \"immediate\";\n }\n\n if ((lanes & 2) !== 0) {\n return \"user-blocking\";\n }\n\n if ((lanes & 8) !== 0) {\n return \"normal\";\n }\n\n return \"low\";\n}\n"]}
package/dist/fiber.d.ts CHANGED
@@ -15,10 +15,14 @@ export interface Fiber {
15
15
  stateNode: unknown;
16
16
  flags: Flags;
17
17
  subtreeFlags: Flags;
18
+ childListChanged: boolean;
19
+ subtreeChildListChanged: boolean;
18
20
  deletions: Fiber[] | undefined;
19
21
  lanes: Lanes;
20
22
  childLanes: Lanes;
21
23
  hydrateExisting: boolean;
24
+ hasRefSubtree: boolean;
25
+ hostChildListChanged: boolean;
22
26
  }
23
27
  export interface FiberRoot {
24
28
  container: Element;
@@ -35,6 +39,7 @@ export interface FiberRoot {
35
39
  workInProgressRootRenderLanes: Lanes;
36
40
  workInProgressElement: unknown;
37
41
  hydrationState: FiberHydrationState | undefined;
42
+ refCleanupKnown: boolean;
38
43
  }
39
44
  export interface FiberHydrationState {
40
45
  parent: ParentNode;
@@ -1 +1 @@
1
- {"version":3,"file":"fiber.d.ts","sourceRoot":"","sources":["../src/fiber.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAW,KAAK,IAAI,EAAE,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAElE,MAAM,MAAM,QAAQ,GAChB,WAAW,GACX,gBAAgB,GAChB,WAAW,GACX,UAAU,GACV,oBAAoB,GACpB,aAAa,GACb,iBAAiB,GACjB,kBAAkB,GAClB,kBAAkB,GAClB,QAAQ,GACR,MAAM,GACN,MAAM,GACN,UAAU,GACV,aAAa,GACb,UAAU,GACV,eAAe,GACf,gBAAgB,CAAC;AAErB,MAAM,WAAW,KAAK;IACpB,GAAG,EAAE,QAAQ,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,KAAK,GAAG,SAAS,CAAC;IAC1B,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;IACzB,OAAO,EAAE,KAAK,GAAG,SAAS,CAAC;IAC3B,SAAS,EAAE,KAAK,GAAG,SAAS,CAAC;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC;IACb,YAAY,EAAE,KAAK,CAAC;IACpB,SAAS,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC;IAC/B,KAAK,EAAE,KAAK,CAAC;IACb,UAAU,EAAE,KAAK,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,KAAK,CAAC;IACf,YAAY,EAAE,KAAK,GAAG,SAAS,CAAC;IAChC,YAAY,EAAE,KAAK,CAAC;IACpB,cAAc,EAAE,KAAK,CAAC;IACtB,WAAW,EAAE,KAAK,CAAC;IACnB,YAAY,EAAE,KAAK,CAAC;IACpB,cAAc,EAAE,KAAK,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,EAAE,IAAI,CAAC;IACvB,cAAc,EAAE,KAAK,GAAG,SAAS,CAAC;IAClC,6BAA6B,EAAE,KAAK,CAAC;IACrC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,cAAc,EAAE,mBAAmB,GAAG,SAAS,CAAC;CACjD;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,UAAU,CAAC;IACnB,kBAAkB,EAAE,IAAI,GAAG,IAAI,CAAC;IAChC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,WAAW,CACzB,GAAG,EAAE,QAAQ,EACb,YAAY,GAAE,OAAmB,EACjC,GAAG,CAAC,EAAE,MAAM,GACX,KAAK,CAoBP;AAED,wBAAgB,mBAAmB,IAAI,KAAK,CAE3C;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,OAAO,GAAG,SAAS,CAoB7D;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,KAAK,EACd,YAAY,EAAE,OAAO,GACpB,KAAK,CAyBP"}
1
+ {"version":3,"file":"fiber.d.ts","sourceRoot":"","sources":["../src/fiber.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAW,KAAK,IAAI,EAAE,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAElE,MAAM,MAAM,QAAQ,GAChB,WAAW,GACX,gBAAgB,GAChB,WAAW,GACX,UAAU,GACV,oBAAoB,GACpB,aAAa,GACb,iBAAiB,GACjB,kBAAkB,GAClB,kBAAkB,GAClB,QAAQ,GACR,MAAM,GACN,MAAM,GACN,UAAU,GACV,aAAa,GACb,UAAU,GACV,eAAe,GACf,gBAAgB,CAAC;AAErB,MAAM,WAAW,KAAK;IACpB,GAAG,EAAE,QAAQ,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,KAAK,GAAG,SAAS,CAAC;IAC1B,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;IACzB,OAAO,EAAE,KAAK,GAAG,SAAS,CAAC;IAC3B,SAAS,EAAE,KAAK,GAAG,SAAS,CAAC;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC;IACb,YAAY,EAAE,KAAK,CAAC;IACpB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,uBAAuB,EAAE,OAAO,CAAC;IACjC,SAAS,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC;IAC/B,KAAK,EAAE,KAAK,CAAC;IACb,UAAU,EAAE,KAAK,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,KAAK,CAAC;IACf,YAAY,EAAE,KAAK,GAAG,SAAS,CAAC;IAChC,YAAY,EAAE,KAAK,CAAC;IACpB,cAAc,EAAE,KAAK,CAAC;IACtB,WAAW,EAAE,KAAK,CAAC;IACnB,YAAY,EAAE,KAAK,CAAC;IACpB,cAAc,EAAE,KAAK,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,EAAE,IAAI,CAAC;IACvB,cAAc,EAAE,KAAK,GAAG,SAAS,CAAC;IAClC,6BAA6B,EAAE,KAAK,CAAC;IACrC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,cAAc,EAAE,mBAAmB,GAAG,SAAS,CAAC;IAChD,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,UAAU,CAAC;IACnB,kBAAkB,EAAE,IAAI,GAAG,IAAI,CAAC;IAChC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,WAAW,CACzB,GAAG,EAAE,QAAQ,EACb,YAAY,GAAE,OAAmB,EACjC,GAAG,CAAC,EAAE,MAAM,GACX,KAAK,CAwBP;AAED,wBAAgB,mBAAmB,IAAI,KAAK,CAE3C;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,OAAO,GAAG,SAAS,CAqB7D;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,KAAK,EACd,YAAY,EAAE,OAAO,GACpB,KAAK,CA6BP"}
package/dist/fiber.js CHANGED
@@ -15,10 +15,14 @@ export function createFiber(tag, pendingProps = undefined, key) {
15
15
  stateNode: undefined,
16
16
  flags: NoFlags,
17
17
  subtreeFlags: NoFlags,
18
+ childListChanged: false,
19
+ subtreeChildListChanged: false,
18
20
  deletions: undefined,
19
21
  lanes: NoLanes,
20
22
  childLanes: NoLanes,
21
23
  hydrateExisting: false,
24
+ hasRefSubtree: false,
25
+ hostChildListChanged: false,
22
26
  };
23
27
  }
24
28
  export function createHostRootFiber() {
@@ -41,6 +45,7 @@ export function createFiberRoot(container) {
41
45
  workInProgressRootRenderLanes: NoLanes,
42
46
  workInProgressElement: undefined,
43
47
  hydrationState: undefined,
48
+ refCleanupKnown: false,
44
49
  };
45
50
  current.stateNode = root;
46
51
  return root;
@@ -58,6 +63,8 @@ export function createWorkInProgress(current, pendingProps) {
58
63
  workInProgress.pendingProps = pendingProps;
59
64
  workInProgress.flags = NoFlags;
60
65
  workInProgress.subtreeFlags = NoFlags;
66
+ workInProgress.childListChanged = false;
67
+ workInProgress.subtreeChildListChanged = false;
61
68
  workInProgress.deletions = undefined;
62
69
  }
63
70
  workInProgress.child = current.child;
@@ -68,6 +75,8 @@ export function createWorkInProgress(current, pendingProps) {
68
75
  workInProgress.lanes = current.lanes;
69
76
  workInProgress.childLanes = current.childLanes;
70
77
  workInProgress.hydrateExisting = false;
78
+ workInProgress.hasRefSubtree = current.hasRefSubtree;
79
+ workInProgress.hostChildListChanged = current.hostChildListChanged;
71
80
  return workInProgress;
72
81
  }
73
82
  //# sourceMappingURL=fiber.js.map