@tanstack/redact 0.0.20 → 0.1.0

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 (253) hide show
  1. package/dist/core/attributes.js +2 -1
  2. package/dist/core/attributes.js.map +2 -2
  3. package/dist/core/browser.d.ts +9 -0
  4. package/dist/core/browser.js +35 -0
  5. package/dist/core/browser.js.map +7 -0
  6. package/dist/core/index.d.ts +2 -2
  7. package/dist/core/index.js +3 -3
  8. package/dist/core/internal.d.ts +31 -8
  9. package/dist/core/internal.js +3 -1
  10. package/dist/core/internal.js.map +2 -2
  11. package/dist/core/resource-hints.d.ts +7 -0
  12. package/dist/core/resource-hints.js +19 -0
  13. package/dist/core/resource-hints.js.map +7 -0
  14. package/dist/core/types.js +1 -1
  15. package/dist/dom/_all.d.ts +11 -16
  16. package/dist/dom/_all.js +9 -20
  17. package/dist/dom/_all.js.map +2 -2
  18. package/dist/dom/client.d.ts +4 -4
  19. package/dist/dom/client.js +4 -4
  20. package/dist/dom/commit.d.ts +23 -0
  21. package/dist/dom/commit.js +191 -0
  22. package/dist/dom/commit.js.map +7 -0
  23. package/dist/dom/dispatcher.d.ts +4 -22
  24. package/dist/dom/dispatcher.js +184 -126
  25. package/dist/dom/dispatcher.js.map +3 -3
  26. package/dist/dom/dom.d.ts +2 -0
  27. package/dist/dom/dom.js +72 -52
  28. package/dist/dom/dom.js.map +2 -2
  29. package/dist/dom/error-info.d.ts +2 -0
  30. package/dist/dom/error-info.js +16 -0
  31. package/dist/dom/error-info.js.map +7 -0
  32. package/dist/dom/event-replay.js +1 -1
  33. package/dist/dom/features/activity/full.d.ts +1 -0
  34. package/dist/dom/features/activity/full.js +162 -0
  35. package/dist/dom/features/activity/full.js.map +7 -0
  36. package/dist/dom/features/activity/index.d.ts +1 -0
  37. package/dist/dom/features/activity/index.js +3 -0
  38. package/dist/dom/features/activity/index.js.map +7 -0
  39. package/dist/dom/features/activity/stub.d.ts +1 -0
  40. package/dist/dom/features/activity/stub.js +12 -0
  41. package/dist/dom/features/activity/stub.js.map +7 -0
  42. package/dist/dom/features/class/full.js +87 -21
  43. package/dist/dom/features/class/full.js.map +2 -2
  44. package/dist/dom/features/class/index.d.ts +1 -1
  45. package/dist/dom/features/class/index.js +2 -2
  46. package/dist/dom/features/class/stub.js +3 -3
  47. package/dist/dom/features/context/full.d.ts +4 -1
  48. package/dist/dom/features/context/full.js +69 -9
  49. package/dist/dom/features/context/full.js.map +2 -2
  50. package/dist/dom/features/context/index.d.ts +1 -1
  51. package/dist/dom/features/context/index.js +2 -2
  52. package/dist/dom/features/context/stub.d.ts +4 -1
  53. package/dist/dom/features/context/stub.js +15 -4
  54. package/dist/dom/features/context/stub.js.map +2 -2
  55. package/dist/dom/features/forward-ref/full.js +12 -21
  56. package/dist/dom/features/forward-ref/full.js.map +2 -2
  57. package/dist/dom/features/forward-ref/index.d.ts +1 -1
  58. package/dist/dom/features/forward-ref/index.js +2 -2
  59. package/dist/dom/features/forward-ref/stub.js +4 -4
  60. package/dist/dom/features/fragment-refs/index.d.ts +1 -0
  61. package/dist/dom/features/fragment-refs/index.js +8 -0
  62. package/dist/dom/features/fragment-refs/index.js.map +7 -0
  63. package/dist/dom/features/fragment-refs/stub.d.ts +3 -0
  64. package/dist/dom/features/fragment-refs/stub.js +14 -0
  65. package/dist/dom/features/fragment-refs/stub.js.map +7 -0
  66. package/dist/dom/features/hydration/full.d.ts +11 -6
  67. package/dist/dom/features/hydration/full.js +76 -76
  68. package/dist/dom/features/hydration/full.js.map +2 -2
  69. package/dist/dom/features/hydration/index.d.ts +1 -1
  70. package/dist/dom/features/hydration/index.js +2 -2
  71. package/dist/dom/features/hydration/stub.d.ts +7 -2
  72. package/dist/dom/features/hydration/stub.js +1 -1
  73. package/dist/dom/features/hydration/stub.js.map +1 -1
  74. package/dist/dom/features/index.d.ts +8 -7
  75. package/dist/dom/features/index.js +9 -8
  76. package/dist/dom/features/index.js.map +2 -2
  77. package/dist/dom/features/lazy/full.js +4 -4
  78. package/dist/dom/features/lazy/index.d.ts +1 -1
  79. package/dist/dom/features/lazy/index.js +2 -2
  80. package/dist/dom/features/lazy/stub.js +4 -4
  81. package/dist/dom/features/memo/full.js +8 -6
  82. package/dist/dom/features/memo/full.js.map +2 -2
  83. package/dist/dom/features/memo/index.d.ts +1 -1
  84. package/dist/dom/features/memo/index.js +2 -2
  85. package/dist/dom/features/memo/stub.js +4 -4
  86. package/dist/dom/features/portal/full.js +4 -4
  87. package/dist/dom/features/portal/index.d.ts +1 -1
  88. package/dist/dom/features/portal/index.js +2 -2
  89. package/dist/dom/features/portal/stub.js +4 -4
  90. package/dist/dom/features/suspense/full.js +192 -47
  91. package/dist/dom/features/suspense/full.js.map +2 -2
  92. package/dist/dom/features/suspense/index.d.ts +1 -1
  93. package/dist/dom/features/suspense/index.js +2 -2
  94. package/dist/dom/features/suspense/stub.js +4 -4
  95. package/dist/dom/features/view-transition/full.d.ts +6 -0
  96. package/dist/dom/features/view-transition/full.js +280 -0
  97. package/dist/dom/features/view-transition/full.js.map +7 -0
  98. package/dist/dom/features/view-transition/index.d.ts +1 -0
  99. package/dist/dom/features/view-transition/index.js +3 -0
  100. package/dist/dom/features/view-transition/index.js.map +7 -0
  101. package/dist/dom/features/view-transition/resources.d.ts +11 -0
  102. package/dist/dom/features/view-transition/resources.js +108 -0
  103. package/dist/dom/features/view-transition/resources.js.map +7 -0
  104. package/dist/dom/features/view-transition/stub.d.ts +6 -0
  105. package/dist/dom/features/view-transition/stub.js +22 -0
  106. package/dist/dom/features/view-transition/stub.js.map +7 -0
  107. package/dist/dom/features/view-transition/visual.d.ts +14 -0
  108. package/dist/dom/features/view-transition/visual.js +356 -0
  109. package/dist/dom/features/view-transition/visual.js.map +7 -0
  110. package/dist/dom/fragment-instance.d.ts +40 -0
  111. package/dist/dom/fragment-instance.js +324 -0
  112. package/dist/dom/fragment-instance.js.map +7 -0
  113. package/dist/dom/index.d.ts +11 -11
  114. package/dist/dom/index.js +11 -18
  115. package/dist/dom/index.js.map +3 -3
  116. package/dist/dom/portal.d.ts +2 -2
  117. package/dist/dom/portal.js +2 -2
  118. package/dist/dom/portal.js.map +1 -1
  119. package/dist/dom/reconcile.d.ts +32 -3
  120. package/dist/dom/reconcile.js +686 -222
  121. package/dist/dom/reconcile.js.map +2 -2
  122. package/dist/dom/resource-hints.d.ts +6 -0
  123. package/dist/dom/resource-hints.js +115 -0
  124. package/dist/dom/resource-hints.js.map +7 -0
  125. package/dist/dom/resource-store.d.ts +13 -0
  126. package/dist/dom/resource-store.js +43 -0
  127. package/dist/dom/resource-store.js.map +7 -0
  128. package/dist/dom/resources.d.ts +1 -0
  129. package/dist/dom/resources.js +44 -0
  130. package/dist/dom/resources.js.map +7 -0
  131. package/dist/dom/retained-effects.d.ts +6 -0
  132. package/dist/dom/retained-effects.js +49 -0
  133. package/dist/dom/retained-effects.js.map +7 -0
  134. package/dist/dom/root-internal.d.ts +4 -4
  135. package/dist/dom/root-internal.js +2 -2
  136. package/dist/dom/root-internal.js.map +2 -2
  137. package/dist/dom/root.d.ts +5 -5
  138. package/dist/dom/root.js +11 -11
  139. package/dist/dom/root.js.map +2 -2
  140. package/dist/dom/test-utils.js +1 -1
  141. package/dist/react/activity.d.ts +7 -0
  142. package/dist/react/activity.js +8 -0
  143. package/dist/react/activity.js.map +7 -0
  144. package/dist/react/children.d.ts +1 -1
  145. package/dist/react/children.js +3 -3
  146. package/dist/react/children.js.map +1 -1
  147. package/dist/react/class.d.ts +1 -1
  148. package/dist/react/class.js +3 -3
  149. package/dist/react/class.js.map +1 -1
  150. package/dist/react/compiler-runtime.js +2 -2
  151. package/dist/react/context.d.ts +1 -1
  152. package/dist/react/context.js +3 -3
  153. package/dist/react/context.js.map +1 -1
  154. package/dist/react/element.d.ts +6 -3
  155. package/dist/react/element.js +2 -2
  156. package/dist/react/element.js.map +2 -2
  157. package/dist/react/hooks.d.ts +26 -7
  158. package/dist/react/hooks.js +13 -3
  159. package/dist/react/hooks.js.map +2 -2
  160. package/dist/react/index.d.ts +39 -24
  161. package/dist/react/index.js +39 -19
  162. package/dist/react/index.js.map +3 -3
  163. package/dist/react/jsx-runtime.d.ts +2 -2
  164. package/dist/react/jsx-runtime.js +3 -3
  165. package/dist/react/memo.d.ts +1 -1
  166. package/dist/react/memo.js +1 -1
  167. package/dist/react/portal.js +1 -1
  168. package/dist/react/shared-internals.d.ts +15 -5
  169. package/dist/react/shared-internals.js +2 -3
  170. package/dist/react/shared-internals.js.map +2 -2
  171. package/dist/react/suspense.js +1 -1
  172. package/dist/react/view-transition.d.ts +32 -0
  173. package/dist/react/view-transition.js +13 -0
  174. package/dist/react/view-transition.js.map +7 -0
  175. package/dist/scheduler/index.js +1 -1
  176. package/dist/server/bootstrap-script.d.ts +1 -23
  177. package/dist/server/bootstrap-script.js +7 -6
  178. package/dist/server/bootstrap-script.js.map +2 -2
  179. package/dist/server/dispatcher.d.ts +28 -6
  180. package/dist/server/dispatcher.js +33 -15
  181. package/dist/server/dispatcher.js.map +2 -2
  182. package/dist/server/escape.js +16 -15
  183. package/dist/server/escape.js.map +2 -2
  184. package/dist/server/index.d.ts +6 -6
  185. package/dist/server/index.js +7 -7
  186. package/dist/server/renderToString.d.ts +1 -1
  187. package/dist/server/renderToString.js +12 -8
  188. package/dist/server/renderToString.js.map +2 -2
  189. package/dist/server/resource-hints.d.ts +22 -0
  190. package/dist/server/resource-hints.js +148 -0
  191. package/dist/server/resource-hints.js.map +7 -0
  192. package/dist/server/stream.d.ts +15 -2
  193. package/dist/server/stream.js +155 -63
  194. package/dist/server/stream.js.map +2 -2
  195. package/dist/server/walk.d.ts +15 -2
  196. package/dist/server/walk.js +143 -96
  197. package/dist/server/walk.js.map +2 -2
  198. package/dist/vite/index.d.ts +6 -0
  199. package/dist/vite/index.js +22 -6
  200. package/dist/vite/index.js.map +2 -2
  201. package/package.json +1 -1
  202. package/src/core/attributes.ts +1 -0
  203. package/src/core/browser.ts +33 -0
  204. package/src/core/internal.ts +24 -6
  205. package/src/core/resource-hints.ts +36 -0
  206. package/src/dom/_all.ts +1 -7
  207. package/src/dom/commit.ts +186 -0
  208. package/src/dom/dispatcher.ts +190 -134
  209. package/src/dom/dom.ts +70 -54
  210. package/src/dom/error-info.ts +15 -0
  211. package/src/dom/features/activity/full.ts +166 -0
  212. package/src/dom/features/activity/index.ts +1 -0
  213. package/src/dom/features/activity/stub.ts +14 -0
  214. package/src/dom/features/class/full.ts +72 -21
  215. package/src/dom/features/context/full.ts +66 -4
  216. package/src/dom/features/context/stub.ts +6 -0
  217. package/src/dom/features/forward-ref/full.ts +9 -19
  218. package/src/dom/features/fragment-refs/index.ts +1 -0
  219. package/src/dom/features/fragment-refs/stub.ts +3 -0
  220. package/src/dom/features/hydration/full.ts +84 -82
  221. package/src/dom/features/hydration/stub.ts +1 -1
  222. package/src/dom/features/index.ts +1 -0
  223. package/src/dom/features/memo/full.ts +4 -3
  224. package/src/dom/features/suspense/full.ts +187 -50
  225. package/src/dom/features/view-transition/full.ts +288 -0
  226. package/src/dom/features/view-transition/index.ts +1 -0
  227. package/src/dom/features/view-transition/resources.ts +107 -0
  228. package/src/dom/features/view-transition/stub.ts +7 -0
  229. package/src/dom/features/view-transition/visual.ts +406 -0
  230. package/src/dom/fragment-instance.ts +337 -0
  231. package/src/dom/index.ts +6 -7
  232. package/src/dom/portal.ts +1 -1
  233. package/src/dom/reconcile.ts +691 -244
  234. package/src/dom/resource-hints.ts +115 -0
  235. package/src/dom/resource-store.ts +52 -0
  236. package/src/dom/resources.ts +39 -0
  237. package/src/dom/retained-effects.ts +38 -0
  238. package/src/dom/root-internal.ts +4 -4
  239. package/src/dom/root.ts +12 -14
  240. package/src/react/activity.ts +10 -0
  241. package/src/react/element.ts +6 -2
  242. package/src/react/hooks.ts +12 -3
  243. package/src/react/index.ts +18 -0
  244. package/src/react/shared-internals.ts +3 -3
  245. package/src/react/view-transition.ts +41 -0
  246. package/src/server/bootstrap-script.ts +36 -5
  247. package/src/server/dispatcher.ts +35 -13
  248. package/src/server/escape.ts +15 -12
  249. package/src/server/renderToString.ts +7 -5
  250. package/src/server/resource-hints.ts +165 -0
  251. package/src/server/stream.ts +154 -62
  252. package/src/server/walk.ts +72 -11
  253. package/src/vite/index.ts +30 -13
@@ -1,5 +1,6 @@
1
- // packages/redact/src/dom/features/class/full.ts
2
- import { FiberTag } from "../../../core";
1
+ // src/dom/features/class/full.ts
2
+ import { FiberTag } from "../../../core/index.js";
3
+ import { checkpointCommit, rewindCommit, queueBeforeMutation, queueMutation } from "../../commit.js";
3
4
  import {
4
5
  registerRenderer,
5
6
  reconcileChildren,
@@ -8,14 +9,27 @@ import {
8
9
  scheduleLifecycle,
9
10
  isThenable,
10
11
  handleSuspended,
11
- handleErrorInRender
12
- } from "../../reconcile";
12
+ handleErrorInRender,
13
+ readContext,
14
+ attachRef,
15
+ syncRefIfChanged,
16
+ isActivityHidden,
17
+ layoutIsDisconnected,
18
+ RenderErrorCapture,
19
+ handleCommitError
20
+ } from "../../reconcile.js";
13
21
  function renderClass(fiber, domParent, anchor) {
22
+ fiber.cx?.clear();
14
23
  const Ctor = fiber.type;
15
24
  let instance = fiber.sn;
16
25
  const props = fiber.pp ?? {};
17
26
  const isNew = !instance;
18
- const ctxValue = Ctor.contextType ? Ctor.contextType._currentValue : void 0;
27
+ const previous = fiber.ms?.c;
28
+ let didRender = true;
29
+ let captured = fiber.ms?.error instanceof RenderErrorCapture ? fiber.ms.error : void 0;
30
+ if (captured) delete fiber.ms.error;
31
+ const ctxValue = Ctor.contextType ? readContext(fiber, Ctor.contextType) : void 0;
32
+ const contextChanged = instance && !Object.is(instance.context, ctxValue);
19
33
  if (isNew) {
20
34
  instance = new Ctor(props, ctxValue);
21
35
  instance.props = props;
@@ -43,48 +57,100 @@ function renderClass(fiber, domParent, anchor) {
43
57
  if (d) instance.state = { ...instance.state, ...d };
44
58
  }
45
59
  } else {
46
- const prevProps = instance.props;
47
- const prevState = instance.state;
48
60
  instance.context = ctxValue;
49
61
  if (Ctor.getDerivedStateFromProps) {
50
62
  const d = Ctor.getDerivedStateFromProps(props, instance.state);
51
63
  if (d) instance.state = { ...instance.state, ...d };
52
64
  }
53
- if (instance.shouldComponentUpdate) {
65
+ if (!captured && instance.shouldComponentUpdate && !contextChanged) {
54
66
  if (!instance.shouldComponentUpdate(props, instance.state, instance.context)) {
55
- instance.props = props;
56
- fiber.mp = props;
57
- if (fiber.ms?.r) {
58
- reconcileChildren(fiber, childrenToArray(fiber.ms.r), domParent, anchor);
59
- }
60
- return;
67
+ didRender = false;
61
68
  }
62
69
  }
63
70
  instance.props = props;
64
- fiber.ms = { ...fiber.ms ?? {}, p: prevProps, s: prevState };
71
+ }
72
+ if (captured && Ctor.getDerivedStateFromError) {
73
+ const update = Ctor.getDerivedStateFromError(captured.error);
74
+ if (update != null) instance.state = { ...instance.state, ...update };
65
75
  }
66
76
  let rendered;
67
77
  try {
68
- rendered = instance.render();
78
+ rendered = captured && !Ctor.getDerivedStateFromError ? null : didRender ? instance.render() : fiber.ms?.r;
69
79
  } catch (e) {
70
80
  if (isThenable(e)) {
71
81
  handleSuspended(fiber, e);
72
- rendered = null;
82
+ return;
73
83
  } else {
74
84
  handleErrorInRender(fiber, e);
75
85
  return;
76
86
  }
77
87
  }
78
88
  fiber.ms = { ...fiber.ms ?? {}, r: rendered };
79
- reconcileChildren(fiber, childrenToArray(rendered), domParent, anchor);
89
+ const canCatch = Ctor.getDerivedStateFromError || instance.componentDidCatch;
90
+ if (canCatch) fiber.ms.b = Ctor;
91
+ if (canCatch && fiber.root) fiber.root.eb = true;
92
+ const checkpoint = canCatch ? checkpointCommit(fiber) : -1;
93
+ try {
94
+ reconcileChildren(fiber, childrenToArray(rendered), domParent, anchor);
95
+ } catch (error) {
96
+ if (!(error instanceof RenderErrorCapture) || error.boundary !== fiber) throw error;
97
+ rewindCommit(checkpoint);
98
+ captured = error;
99
+ didRender = true;
100
+ if (Ctor.getDerivedStateFromError) {
101
+ const update = Ctor.getDerivedStateFromError(error.error);
102
+ if (update != null) instance.state = { ...instance.state, ...update };
103
+ try {
104
+ rendered = instance.render();
105
+ } catch (fallbackError) {
106
+ handleErrorInRender(fiber, fallbackError);
107
+ return;
108
+ }
109
+ } else rendered = null;
110
+ fiber.ms = { ...fiber.ms ?? {}, r: rendered };
111
+ reconcileChildren(fiber, childrenToArray(rendered), domParent, anchor);
112
+ }
80
113
  fiber.mp = props;
114
+ const state = instance.state;
115
+ queueMutation(() => {
116
+ fiber.ms.c = { props, state };
117
+ });
118
+ if (isNew) attachRef(fiber, instance);
119
+ else syncRefIfChanged(fiber, instance);
81
120
  if (isNew) {
82
121
  if (instance.componentDidMount) {
83
122
  scheduleLifecycle(fiber, () => instance.componentDidMount());
84
123
  }
85
- } else if (instance.componentDidUpdate) {
86
- const { p, s } = fiber.ms ?? {};
87
- scheduleLifecycle(fiber, () => instance.componentDidUpdate(p, s));
124
+ } else if (previous && didRender) {
125
+ let snapshot;
126
+ if (instance.getSnapshotBeforeUpdate && !layoutIsDisconnected(fiber)) {
127
+ queueBeforeMutation(() => {
128
+ if (!fiber.um && !fiber.pd && !isActivityHidden(fiber) && !layoutIsDisconnected(fiber)) {
129
+ try {
130
+ snapshot = instance.getSnapshotBeforeUpdate(previous.props, previous.state);
131
+ } catch (error) {
132
+ handleCommitError(fiber, error);
133
+ }
134
+ }
135
+ });
136
+ }
137
+ if (instance.componentDidUpdate) {
138
+ scheduleLifecycle(fiber, () => instance.componentDidUpdate(previous.props, previous.state, snapshot));
139
+ }
140
+ }
141
+ if (captured) {
142
+ const error = captured.error;
143
+ const info = { componentStack: captured.stack };
144
+ scheduleLifecycle(fiber, () => {
145
+ try {
146
+ fiber.root?.ce?.(error, { ...info, errorBoundary: instance });
147
+ } catch (callbackError) {
148
+ setTimeout(() => {
149
+ throw callbackError;
150
+ });
151
+ }
152
+ instance.componentDidCatch?.(error, info);
153
+ });
88
154
  }
89
155
  }
90
156
  registerRenderer(FiberTag.Class, renderClass);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/dom/features/class/full.ts"],
4
- "sourcesContent": ["import { FiberTag, type Fiber, type ReactNode } from '../../../core'\nimport {\n registerRenderer,\n reconcileChildren,\n childrenToArray,\n scheduleUpdate,\n scheduleLifecycle,\n isThenable,\n handleSuspended,\n handleErrorInRender,\n} from '../../reconcile'\n\nfunction renderClass(fiber: Fiber, domParent: Node, anchor: Node | null): void {\n const Ctor = fiber.type as any\n let instance = fiber.sn\n const props = fiber.pp ?? {}\n const isNew = !instance\n\n // Class contextType: read the current value of the subscribed context so\n // `this.context` reflects the nearest Provider. Evaluated every render.\n const ctxValue = Ctor.contextType ? Ctor.contextType._currentValue : undefined\n\n if (isNew) {\n instance = new Ctor(props, ctxValue)\n instance.props = props\n instance.context = ctxValue\n instance._fiber = fiber\n instance._enqueueUpdate = (updater: any, cb?: () => void) => {\n const next = typeof updater == 'function' ? updater(instance.state, instance.props) : updater\n if (next != null) instance.state = { ...instance.state, ...next }\n if (cb) {\n fiber.cu ||= []\n fiber.cu.push(cb)\n }\n scheduleUpdate(fiber)\n }\n instance._forceUpdate = (cb?: () => void) => {\n if (cb) {\n fiber.cu ||= []\n fiber.cu.push(cb)\n }\n scheduleUpdate(fiber)\n }\n fiber.sn = instance\n if (Ctor.getDerivedStateFromProps) {\n const d = Ctor.getDerivedStateFromProps(props, instance.state)\n if (d) instance.state = { ...instance.state, ...d }\n }\n } else {\n const prevProps = instance.props\n const prevState = instance.state\n // Refresh context on every render \u2014 Providers higher up may have changed.\n instance.context = ctxValue\n if (Ctor.getDerivedStateFromProps) {\n const d = Ctor.getDerivedStateFromProps(props, instance.state)\n if (d) instance.state = { ...instance.state, ...d }\n }\n if (instance.shouldComponentUpdate) {\n if (!instance.shouldComponentUpdate(props, instance.state, instance.context)) {\n instance.props = props\n fiber.mp = props\n // Still need to render children with previous output\n if (fiber.ms?.r) {\n reconcileChildren(fiber, childrenToArray(fiber.ms.r), domParent, anchor)\n }\n return\n }\n }\n instance.props = props\n // New snapshot must win over any stale one from a previous render \u2014\n // otherwise componentDidUpdate keeps seeing the original props and can\n // ping-pong setState forever.\n fiber.ms = { ...(fiber.ms ?? {}), p: prevProps, s: prevState }\n }\n\n let rendered: ReactNode\n try {\n rendered = instance.render()\n } catch (e: any) {\n if (isThenable(e)) {\n handleSuspended(fiber, e)\n rendered = null\n } else {\n handleErrorInRender(fiber, e)\n return\n }\n }\n fiber.ms = { ...(fiber.ms ?? {}), r: rendered }\n\n reconcileChildren(fiber, childrenToArray(rendered), domParent, anchor)\n fiber.mp = props\n\n // Schedule lifecycle\n if (isNew) {\n if (instance.componentDidMount) {\n scheduleLifecycle(fiber, () => instance.componentDidMount())\n }\n } else if (instance.componentDidUpdate) {\n const { p, s } = fiber.ms ?? {}\n scheduleLifecycle(fiber, () => instance.componentDidUpdate(p, s))\n }\n}\n\nregisterRenderer(FiberTag.Class, renderClass)\n"],
5
- "mappings": ";AAAA,SAAS,gBAA4C;AACrD;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,YAAY,OAAc,WAAiB,QAA2B;AAC7E,QAAM,OAAO,MAAM;AACnB,MAAI,WAAW,MAAM;AACrB,QAAM,QAAQ,MAAM,MAAM,CAAC;AAC3B,QAAM,QAAQ,CAAC;AAIf,QAAM,WAAW,KAAK,cAAc,KAAK,YAAY,gBAAgB;AAErE,MAAI,OAAO;AACT,eAAW,IAAI,KAAK,OAAO,QAAQ;AACnC,aAAS,QAAQ;AACjB,aAAS,UAAU;AACnB,aAAS,SAAS;AAClB,aAAS,iBAAiB,CAAC,SAAc,OAAoB;AAC3D,YAAM,OAAO,OAAO,WAAW,aAAa,QAAQ,SAAS,OAAO,SAAS,KAAK,IAAI;AACtF,UAAI,QAAQ,KAAM,UAAS,QAAQ,EAAE,GAAG,SAAS,OAAO,GAAG,KAAK;AAChE,UAAI,IAAI;AACN,cAAM,OAAO,CAAC;AACd,cAAM,GAAG,KAAK,EAAE;AAAA,MAClB;AACA,qBAAe,KAAK;AAAA,IACtB;AACA,aAAS,eAAe,CAAC,OAAoB;AAC3C,UAAI,IAAI;AACN,cAAM,OAAO,CAAC;AACd,cAAM,GAAG,KAAK,EAAE;AAAA,MAClB;AACA,qBAAe,KAAK;AAAA,IACtB;AACA,UAAM,KAAK;AACX,QAAI,KAAK,0BAA0B;AACjC,YAAM,IAAI,KAAK,yBAAyB,OAAO,SAAS,KAAK;AAC7D,UAAI,EAAG,UAAS,QAAQ,EAAE,GAAG,SAAS,OAAO,GAAG,EAAE;AAAA,IACpD;AAAA,EACF,OAAO;AACL,UAAM,YAAY,SAAS;AAC3B,UAAM,YAAY,SAAS;AAE3B,aAAS,UAAU;AACnB,QAAI,KAAK,0BAA0B;AACjC,YAAM,IAAI,KAAK,yBAAyB,OAAO,SAAS,KAAK;AAC7D,UAAI,EAAG,UAAS,QAAQ,EAAE,GAAG,SAAS,OAAO,GAAG,EAAE;AAAA,IACpD;AACA,QAAI,SAAS,uBAAuB;AAClC,UAAI,CAAC,SAAS,sBAAsB,OAAO,SAAS,OAAO,SAAS,OAAO,GAAG;AAC5E,iBAAS,QAAQ;AACjB,cAAM,KAAK;AAEX,YAAI,MAAM,IAAI,GAAG;AACf,4BAAkB,OAAO,gBAAgB,MAAM,GAAG,CAAC,GAAG,WAAW,MAAM;AAAA,QACzE;AACA;AAAA,MACF;AAAA,IACF;AACA,aAAS,QAAQ;AAIjB,UAAM,KAAK,EAAE,GAAI,MAAM,MAAM,CAAC,GAAI,GAAG,WAAW,GAAG,UAAU;AAAA,EAC/D;AAEA,MAAI;AACJ,MAAI;AACF,eAAW,SAAS,OAAO;AAAA,EAC7B,SAAS,GAAQ;AACf,QAAI,WAAW,CAAC,GAAG;AACjB,sBAAgB,OAAO,CAAC;AACxB,iBAAW;AAAA,IACb,OAAO;AACL,0BAAoB,OAAO,CAAC;AAC5B;AAAA,IACF;AAAA,EACF;AACA,QAAM,KAAK,EAAE,GAAI,MAAM,MAAM,CAAC,GAAI,GAAG,SAAS;AAE9C,oBAAkB,OAAO,gBAAgB,QAAQ,GAAG,WAAW,MAAM;AACrE,QAAM,KAAK;AAGX,MAAI,OAAO;AACT,QAAI,SAAS,mBAAmB;AAC9B,wBAAkB,OAAO,MAAM,SAAS,kBAAkB,CAAC;AAAA,IAC7D;AAAA,EACF,WAAW,SAAS,oBAAoB;AACtC,UAAM,EAAE,GAAG,EAAE,IAAI,MAAM,MAAM,CAAC;AAC9B,sBAAkB,OAAO,MAAM,SAAS,mBAAmB,GAAG,CAAC,CAAC;AAAA,EAClE;AACF;AAEA,iBAAiB,SAAS,OAAO,WAAW;",
4
+ "sourcesContent": ["import { FiberTag, type Fiber, type ReactNode } from '../../../core'\nimport { checkpointCommit, rewindCommit, queueBeforeMutation, queueMutation } from '../../commit'\nimport {\n registerRenderer,\n reconcileChildren,\n childrenToArray,\n scheduleUpdate,\n scheduleLifecycle,\n isThenable,\n handleSuspended,\n handleErrorInRender,\n readContext,\n attachRef,\n syncRefIfChanged,\n isActivityHidden,\n layoutIsDisconnected,\n RenderErrorCapture,\n handleCommitError,\n} from '../../reconcile'\n\nfunction renderClass(fiber: Fiber, domParent: Node, anchor: Node | null): void {\n fiber.cx?.clear()\n const Ctor = fiber.type as any\n let instance = fiber.sn\n const props = fiber.pp ?? {}\n const isNew = !instance\n const previous = fiber.ms?.c\n let didRender = true\n let captured = fiber.ms?.error instanceof RenderErrorCapture ? fiber.ms.error as RenderErrorCapture : undefined\n if (captured) delete fiber.ms.error\n\n // Class contextType: read the current value of the subscribed context so\n // `this.context` reflects the nearest Provider. Evaluated every render.\n const ctxValue = Ctor.contextType ? readContext(fiber, Ctor.contextType) : undefined\n const contextChanged = instance && !Object.is(instance.context, ctxValue)\n\n if (isNew) {\n instance = new Ctor(props, ctxValue)\n instance.props = props\n instance.context = ctxValue\n instance._fiber = fiber\n instance._enqueueUpdate = (updater: any, cb?: () => void) => {\n const next = typeof updater == 'function' ? updater(instance.state, instance.props) : updater\n if (next != null) instance.state = { ...instance.state, ...next }\n if (cb) {\n fiber.cu ||= []\n fiber.cu.push(cb)\n }\n scheduleUpdate(fiber)\n }\n instance._forceUpdate = (cb?: () => void) => {\n if (cb) {\n fiber.cu ||= []\n fiber.cu.push(cb)\n }\n scheduleUpdate(fiber)\n }\n fiber.sn = instance\n if (Ctor.getDerivedStateFromProps) {\n const d = Ctor.getDerivedStateFromProps(props, instance.state)\n if (d) instance.state = { ...instance.state, ...d }\n }\n } else {\n // Refresh context on every render \u2014 Providers higher up may have changed.\n instance.context = ctxValue\n if (Ctor.getDerivedStateFromProps) {\n const d = Ctor.getDerivedStateFromProps(props, instance.state)\n if (d) instance.state = { ...instance.state, ...d }\n }\n if (!captured && instance.shouldComponentUpdate && !contextChanged) {\n if (!instance.shouldComponentUpdate(props, instance.state, instance.context)) {\n didRender = false\n }\n }\n instance.props = props\n }\n if (captured && Ctor.getDerivedStateFromError) {\n const update = Ctor.getDerivedStateFromError(captured.error)\n if (update != null) instance.state = { ...instance.state, ...update }\n }\n\n let rendered: ReactNode\n try {\n rendered = captured && !Ctor.getDerivedStateFromError ? null : didRender ? instance.render() : fiber.ms?.r\n } catch (e: any) {\n if (isThenable(e)) {\n handleSuspended(fiber, e)\n return\n } else {\n handleErrorInRender(fiber, e)\n return\n }\n }\n fiber.ms = { ...(fiber.ms ?? {}), r: rendered }\n\n const canCatch = Ctor.getDerivedStateFromError || instance.componentDidCatch\n if (canCatch) fiber.ms.b = Ctor\n if (canCatch && fiber.root) fiber.root.eb = true\n const checkpoint = canCatch ? checkpointCommit(fiber) : -1\n try {\n reconcileChildren(fiber, childrenToArray(rendered), domParent, anchor)\n } catch (error) {\n if (!(error instanceof RenderErrorCapture) || error.boundary !== fiber) throw error\n rewindCommit(checkpoint)\n captured = error\n didRender = true\n if (Ctor.getDerivedStateFromError) {\n const update = Ctor.getDerivedStateFromError(error.error)\n if (update != null) instance.state = { ...instance.state, ...update }\n try { rendered = instance.render() } catch (fallbackError) {\n handleErrorInRender(fiber, fallbackError)\n return\n }\n } else rendered = null\n fiber.ms = { ...(fiber.ms ?? {}), r: rendered }\n reconcileChildren(fiber, childrenToArray(rendered), domParent, anchor)\n }\n fiber.mp = props\n const state = instance.state\n queueMutation(() => { fiber.ms.c = { props, state } })\n\n if (isNew) attachRef(fiber, instance)\n else syncRefIfChanged(fiber, instance)\n\n // Schedule lifecycle\n if (isNew) {\n if (instance.componentDidMount) {\n scheduleLifecycle(fiber, () => instance.componentDidMount())\n }\n } else if (previous && didRender) {\n let snapshot: any\n if (instance.getSnapshotBeforeUpdate && !layoutIsDisconnected(fiber)) {\n queueBeforeMutation(() => {\n if (!fiber.um && !fiber.pd && !isActivityHidden(fiber) && !layoutIsDisconnected(fiber)) {\n try { snapshot = instance.getSnapshotBeforeUpdate(previous.props, previous.state) }\n catch (error) { handleCommitError(fiber, error) }\n }\n })\n }\n if (instance.componentDidUpdate) {\n scheduleLifecycle(fiber, () => instance.componentDidUpdate(previous.props, previous.state, snapshot))\n }\n }\n if (captured) {\n const error = captured.error\n const info = { componentStack: captured.stack }\n scheduleLifecycle(fiber, () => {\n try { fiber.root?.ce?.(error, { ...info, errorBoundary: instance }) }\n catch (callbackError) { setTimeout(() => { throw callbackError }) }\n instance.componentDidCatch?.(error, info)\n })\n }\n}\n\nregisterRenderer(FiberTag.Class, renderClass)\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1 +1 @@
1
- export * from './full';
1
+ export * from "./full.js";
@@ -1,3 +1,3 @@
1
- // packages/redact/src/dom/features/class/index.ts
2
- export * from "./full";
1
+ // src/dom/features/class/index.ts
2
+ export * from "./full.js";
3
3
  //# sourceMappingURL=index.js.map
@@ -1,5 +1,5 @@
1
- // packages/redact/src/dom/features/class/stub.ts
2
- import { FiberTag } from "../../../core";
1
+ // src/dom/features/class/stub.ts
2
+ import { FiberTag } from "../../../core/index.js";
3
3
  import {
4
4
  registerRenderer,
5
5
  reconcileChildren,
@@ -8,7 +8,7 @@ import {
8
8
  isThenable,
9
9
  handleSuspended,
10
10
  handleErrorInRender
11
- } from "../../reconcile";
11
+ } from "../../reconcile.js";
12
12
  function renderClassStub(fiber, domParent, anchor) {
13
13
  const Ctor = fiber.type;
14
14
  let instance = fiber.sn;
@@ -1 +1,4 @@
1
- export {};
1
+ import { type Fiber } from "../../../core/index.js";
2
+ export declare function ownContextChanged(fiber: Fiber): boolean;
3
+ export declare function hasContextChanged(fiber: Fiber, includeFallback?: boolean): boolean;
4
+ export declare function renderContextConsumers(fiber: Fiber): void;
@@ -1,14 +1,18 @@
1
- // packages/redact/src/dom/features/context/full.ts
2
- import { FiberTag } from "../../../core";
3
- import { REACT_PROVIDER_TYPE, REACT_CONSUMER_TYPE } from "../../../react";
1
+ // src/dom/features/context/full.ts
2
+ import { FiberTag } from "../../../core/index.js";
3
+ import { REACT_PROVIDER_TYPE, REACT_CONSUMER_TYPE } from "../../../react/index.js";
4
4
  import {
5
5
  registerRenderer,
6
6
  registerTypeMatcher,
7
7
  installCapability,
8
8
  reconcileChildren,
9
- childrenToArray
10
- } from "../../reconcile";
11
- function realReadContext(fiber, ctx) {
9
+ childrenToArray,
10
+ renderFiber,
11
+ getHostParent,
12
+ getAnchor
13
+ } from "../../reconcile.js";
14
+ var changingProviders = 0;
15
+ function contextValue(fiber, ctx) {
12
16
  let p = fiber.parent;
13
17
  while (p) {
14
18
  if (p.tag === FiberTag.Provider && p.type._context === ctx) {
@@ -18,20 +22,71 @@ function realReadContext(fiber, ctx) {
18
22
  }
19
23
  return ctx._currentValue;
20
24
  }
25
+ function remember(fiber, ctx, value) {
26
+ ;
27
+ (fiber.cx ??= /* @__PURE__ */ new Map()).set(ctx, value);
28
+ }
29
+ function realReadContext(fiber, ctx) {
30
+ const value = contextValue(fiber, ctx);
31
+ remember(fiber, ctx, value);
32
+ let child = fiber;
33
+ let p = fiber.parent;
34
+ while (p) {
35
+ if (p.tag === FiberTag.Provider && p.type._context === ctx) break;
36
+ if (p.tag === FiberTag.Suspense && p.ms?.f !== child) remember(p, ctx, value);
37
+ child = p;
38
+ p = p.parent;
39
+ }
40
+ return value;
41
+ }
42
+ function ownContextChanged(fiber) {
43
+ if (!changingProviders) return false;
44
+ const reads = fiber.cx;
45
+ if (reads) {
46
+ for (const [ctx, value] of reads) {
47
+ if (!Object.is(value, contextValue(fiber, ctx))) return true;
48
+ }
49
+ }
50
+ return false;
51
+ }
52
+ function hasContextChanged(fiber, includeFallback = true) {
53
+ if (!changingProviders) return false;
54
+ if (ownContextChanged(fiber)) return true;
55
+ let child = fiber.child;
56
+ while (child) {
57
+ if (hasContextChanged(child)) return true;
58
+ child = child.sibling;
59
+ }
60
+ return includeFallback && fiber.tag === FiberTag.Suspense && !!fiber.ms?.f && hasContextChanged(fiber.ms.f);
61
+ }
62
+ function renderContextConsumers(fiber) {
63
+ if (!changingProviders) return;
64
+ let child = fiber.child;
65
+ while (child) {
66
+ if (child.tag === FiberTag.Suspense ? hasContextChanged(child) : ownContextChanged(child)) {
67
+ const domParent = getHostParent(child);
68
+ renderFiber(child, domParent, getAnchor(child, domParent));
69
+ } else {
70
+ renderContextConsumers(child);
71
+ }
72
+ child = child.sibling;
73
+ }
74
+ }
21
75
  function renderProvider(fiber, domParent, anchor) {
22
76
  const ctx = fiber.type._context;
23
77
  const props = fiber.pp ?? {};
24
- const prevValue = ctx._currentValue;
25
- ctx._currentValue = props.value;
78
+ const changed = fiber.mp && !Object.is(fiber.mp.value, props.value);
79
+ if (changed) changingProviders++;
26
80
  try {
27
81
  reconcileChildren(fiber, childrenToArray(props.children), domParent, anchor);
28
82
  } finally {
29
- ctx._currentValue = prevValue;
83
+ if (changed) changingProviders--;
30
84
  }
31
85
  fiber.ms = props.value;
32
86
  fiber.mp = props;
33
87
  }
34
88
  function renderConsumer(fiber, domParent, anchor) {
89
+ fiber.cx?.clear();
35
90
  const ctx = fiber.type._context;
36
91
  const props = fiber.pp ?? {};
37
92
  const children = props.children;
@@ -46,4 +101,9 @@ registerTypeMatcher(
46
101
  registerRenderer(FiberTag.Provider, renderProvider);
47
102
  registerRenderer(FiberTag.Consumer, renderConsumer);
48
103
  installCapability("readContext", realReadContext);
104
+ export {
105
+ hasContextChanged,
106
+ ownContextChanged,
107
+ renderContextConsumers
108
+ };
49
109
  //# sourceMappingURL=full.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/dom/features/context/full.ts"],
4
- "sourcesContent": ["import { FiberTag, type Fiber } from '../../../core'\nimport { REACT_PROVIDER_TYPE, REACT_CONSUMER_TYPE } from '../../../react'\nimport {\n registerRenderer,\n registerTypeMatcher,\n installCapability,\n reconcileChildren,\n childrenToArray,\n} from '../../reconcile'\n\nfunction realReadContext(fiber: Fiber, ctx: any): any {\n let p: Fiber | null = fiber.parent\n while (p) {\n if (p.tag === FiberTag.Provider && (p.type as any)._context === ctx) {\n return (p.pp ?? p.mp)?.value\n }\n p = p.parent\n }\n return ctx._currentValue\n}\n\nfunction renderProvider(fiber: Fiber, domParent: Node, anchor: Node | null): void {\n const ctx = (fiber.type as any)._context\n const props = fiber.pp ?? {}\n const prevValue = ctx._currentValue\n ctx._currentValue = props.value\n try {\n reconcileChildren(fiber, childrenToArray(props.children), domParent, anchor)\n } finally {\n ctx._currentValue = prevValue\n }\n // Also store the value on the fiber so descendants rendering later (via updates)\n // can read through by walking up.\n fiber.ms = props.value\n fiber.mp = props\n}\n\nfunction renderConsumer(fiber: Fiber, domParent: Node, anchor: Node | null): void {\n const ctx = (fiber.type as any)._context\n const props = fiber.pp ?? {}\n const children = props.children\n const value = realReadContext(fiber, ctx)\n const rendered = typeof children == 'function' ? children(value) : null\n reconcileChildren(fiber, childrenToArray(rendered), domParent, anchor)\n fiber.mp = props\n}\n\nregisterTypeMatcher((_type, marker) =>\n marker === REACT_PROVIDER_TYPE\n ? FiberTag.Provider\n : marker === REACT_CONSUMER_TYPE\n ? FiberTag.Consumer\n : null,\n)\nregisterRenderer(FiberTag.Provider, renderProvider)\nregisterRenderer(FiberTag.Consumer, renderConsumer)\ninstallCapability('readContext', realReadContext)\n"],
5
- "mappings": ";AAAA,SAAS,gBAA4B;AACrC,SAAS,qBAAqB,2BAA2B;AACzD;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,gBAAgB,OAAc,KAAe;AACpD,MAAI,IAAkB,MAAM;AAC5B,SAAO,GAAG;AACR,QAAI,EAAE,QAAQ,SAAS,YAAa,EAAE,KAAa,aAAa,KAAK;AACnE,cAAQ,EAAE,MAAM,EAAE,KAAK;AAAA,IACzB;AACA,QAAI,EAAE;AAAA,EACR;AACA,SAAO,IAAI;AACb;AAEA,SAAS,eAAe,OAAc,WAAiB,QAA2B;AAChF,QAAM,MAAO,MAAM,KAAa;AAChC,QAAM,QAAQ,MAAM,MAAM,CAAC;AAC3B,QAAM,YAAY,IAAI;AACtB,MAAI,gBAAgB,MAAM;AAC1B,MAAI;AACF,sBAAkB,OAAO,gBAAgB,MAAM,QAAQ,GAAG,WAAW,MAAM;AAAA,EAC7E,UAAE;AACA,QAAI,gBAAgB;AAAA,EACtB;AAGA,QAAM,KAAK,MAAM;AACjB,QAAM,KAAK;AACb;AAEA,SAAS,eAAe,OAAc,WAAiB,QAA2B;AAChF,QAAM,MAAO,MAAM,KAAa;AAChC,QAAM,QAAQ,MAAM,MAAM,CAAC;AAC3B,QAAM,WAAW,MAAM;AACvB,QAAM,QAAQ,gBAAgB,OAAO,GAAG;AACxC,QAAM,WAAW,OAAO,YAAY,aAAa,SAAS,KAAK,IAAI;AACnE,oBAAkB,OAAO,gBAAgB,QAAQ,GAAG,WAAW,MAAM;AACrE,QAAM,KAAK;AACb;AAEA;AAAA,EAAoB,CAAC,OAAO,WAC1B,WAAW,sBACP,SAAS,WACT,WAAW,sBACT,SAAS,WACT;AACR;AACA,iBAAiB,SAAS,UAAU,cAAc;AAClD,iBAAiB,SAAS,UAAU,cAAc;AAClD,kBAAkB,eAAe,eAAe;",
4
+ "sourcesContent": ["import { FiberTag, type Fiber } from '../../../core'\nimport { REACT_PROVIDER_TYPE, REACT_CONSUMER_TYPE } from '../../../react'\nimport {\n registerRenderer,\n registerTypeMatcher,\n installCapability,\n reconcileChildren,\n childrenToArray,\n renderFiber,\n getHostParent,\n getAnchor,\n} from '../../reconcile'\n\nlet changingProviders = 0\n\nfunction contextValue(fiber: Fiber, ctx: any): any {\n let p: Fiber | null = fiber.parent\n while (p) {\n if (p.tag === FiberTag.Provider && (p.type as any)._context === ctx) {\n return (p.pp ?? p.mp)?.value\n }\n p = p.parent\n }\n return ctx._currentValue\n}\n\nfunction remember(fiber: Fiber, ctx: any, value: any): void {\n ;(fiber.cx ??= new Map()).set(ctx, value)\n}\n\nfunction realReadContext(fiber: Fiber, ctx: any): any {\n const value = contextValue(fiber, ctx)\n remember(fiber, ctx, value)\n // Initial suspended attempts are discarded. Keep their external context\n // reads on the boundary so a provider can retry them before a promise settles.\n let child = fiber\n let p = fiber.parent\n while (p) {\n if (p.tag === FiberTag.Provider && p.type._context === ctx) break\n if (p.tag === FiberTag.Suspense && p.ms?.f !== child) remember(p, ctx, value)\n child = p\n p = p.parent\n }\n return value\n}\n\nexport function ownContextChanged(fiber: Fiber): boolean {\n if (!changingProviders) return false\n const reads = fiber.cx\n if (reads) {\n for (const [ctx, value] of reads) {\n if (!Object.is(value, contextValue(fiber, ctx))) return true\n }\n }\n return false\n}\n\nexport function hasContextChanged(fiber: Fiber, includeFallback = true): boolean {\n if (!changingProviders) return false\n if (ownContextChanged(fiber)) return true\n let child = fiber.child\n while (child) {\n if (hasContextChanged(child)) return true\n child = child.sibling\n }\n return includeFallback && fiber.tag === FiberTag.Suspense && !!fiber.ms?.f && hasContextChanged(fiber.ms.f)\n}\n\nexport function renderContextConsumers(fiber: Fiber): void {\n if (!changingProviders) return\n let child = fiber.child\n while (child) {\n if (child.tag === FiberTag.Suspense ? hasContextChanged(child) : ownContextChanged(child)) {\n const domParent = getHostParent(child)\n renderFiber(child, domParent, getAnchor(child, domParent))\n } else {\n renderContextConsumers(child)\n }\n child = child.sibling\n }\n}\n\nfunction renderProvider(fiber: Fiber, domParent: Node, anchor: Node | null): void {\n const ctx = (fiber.type as any)._context\n const props = fiber.pp ?? {}\n const changed = fiber.mp && !Object.is(fiber.mp.value, props.value)\n if (changed) changingProviders++\n try {\n reconcileChildren(fiber, childrenToArray(props.children), domParent, anchor)\n } finally {\n if (changed) changingProviders--\n }\n // Also store the value on the fiber so descendants rendering later (via updates)\n // can read through by walking up.\n fiber.ms = props.value\n fiber.mp = props\n}\n\nfunction renderConsumer(fiber: Fiber, domParent: Node, anchor: Node | null): void {\n fiber.cx?.clear()\n const ctx = (fiber.type as any)._context\n const props = fiber.pp ?? {}\n const children = props.children\n const value = realReadContext(fiber, ctx)\n const rendered = typeof children == 'function' ? children(value) : null\n reconcileChildren(fiber, childrenToArray(rendered), domParent, anchor)\n fiber.mp = props\n}\n\nregisterTypeMatcher((_type, marker) =>\n marker === REACT_PROVIDER_TYPE\n ? FiberTag.Provider\n : marker === REACT_CONSUMER_TYPE\n ? FiberTag.Consumer\n : null,\n)\nregisterRenderer(FiberTag.Provider, renderProvider)\nregisterRenderer(FiberTag.Consumer, renderConsumer)\ninstallCapability('readContext', realReadContext)\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1 +1 @@
1
- export * from './full';
1
+ export * from "./full.js";
@@ -1,3 +1,3 @@
1
- // packages/redact/src/dom/features/context/index.ts
2
- export * from "./full";
1
+ // src/dom/features/context/index.ts
2
+ export * from "./full.js";
3
3
  //# sourceMappingURL=index.js.map
@@ -1 +1,4 @@
1
- export {};
1
+ import { type Fiber } from "../../../core/index.js";
2
+ export declare function hasContextChanged(_fiber: Fiber, _includeFallback?: boolean): boolean;
3
+ export declare const ownContextChanged: typeof hasContextChanged;
4
+ export declare function renderContextConsumers(_fiber: Fiber): void;
@@ -1,12 +1,18 @@
1
- // packages/redact/src/dom/features/context/stub.ts
2
- import { FiberTag } from "../../../core";
3
- import { REACT_PROVIDER_TYPE, REACT_CONSUMER_TYPE } from "../../../react";
1
+ // src/dom/features/context/stub.ts
2
+ import { FiberTag } from "../../../core/index.js";
3
+ import { REACT_PROVIDER_TYPE, REACT_CONSUMER_TYPE } from "../../../react/index.js";
4
4
  import {
5
5
  registerRenderer,
6
6
  registerTypeMatcher,
7
7
  reconcileChildren,
8
8
  childrenToArray
9
- } from "../../reconcile";
9
+ } from "../../reconcile.js";
10
+ function hasContextChanged(_fiber, _includeFallback = true) {
11
+ return false;
12
+ }
13
+ var ownContextChanged = hasContextChanged;
14
+ function renderContextConsumers(_fiber) {
15
+ }
10
16
  function renderConsumerStub(fiber, domParent, anchor) {
11
17
  const ctx = fiber.type._context;
12
18
  const props = fiber.pp ?? {};
@@ -19,4 +25,9 @@ registerTypeMatcher(
19
25
  (_type, marker) => marker === REACT_PROVIDER_TYPE ? FiberTag.Fragment : marker === REACT_CONSUMER_TYPE ? FiberTag.Consumer : null
20
26
  );
21
27
  registerRenderer(FiberTag.Consumer, renderConsumerStub);
28
+ export {
29
+ hasContextChanged,
30
+ ownContextChanged,
31
+ renderContextConsumers
32
+ };
22
33
  //# sourceMappingURL=stub.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/dom/features/context/stub.ts"],
4
- "sourcesContent": ["import { FiberTag, type Fiber } from '../../../core'\nimport { REACT_PROVIDER_TYPE, REACT_CONSUMER_TYPE } from '../../../react'\nimport {\n registerRenderer,\n registerTypeMatcher,\n reconcileChildren,\n childrenToArray,\n} from '../../reconcile'\n\n// Stub: Context feature disabled. Provider elements render as Fragments\n// (value is never propagated \u2014 descendants see only the Context's default).\n// Consumer elements still invoke their function-children with the default\n// value, so `<Ctx.Consumer>{v => ...}</Ctx.Consumer>` patterns keep working.\n// The default `readContext` capability returns `ctx._currentValue` without\n// walking, which matches the no-Provider-fibers-in-tree reality.\nfunction renderConsumerStub(fiber: Fiber, domParent: Node, anchor: Node | null): void {\n const ctx = (fiber.type as any)._context\n const props = fiber.pp ?? {}\n const value = ctx._currentValue\n const rendered = typeof props.children == 'function' ? props.children(value) : null\n reconcileChildren(fiber, childrenToArray(rendered), domParent, anchor)\n fiber.mp = props\n}\n\nregisterTypeMatcher((_type, marker) =>\n marker === REACT_PROVIDER_TYPE\n ? FiberTag.Fragment\n : marker === REACT_CONSUMER_TYPE\n ? FiberTag.Consumer\n : null,\n)\nregisterRenderer(FiberTag.Consumer, renderConsumerStub)\n"],
5
- "mappings": ";AAAA,SAAS,gBAA4B;AACrC,SAAS,qBAAqB,2BAA2B;AACzD;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAQP,SAAS,mBAAmB,OAAc,WAAiB,QAA2B;AACpF,QAAM,MAAO,MAAM,KAAa;AAChC,QAAM,QAAQ,MAAM,MAAM,CAAC;AAC3B,QAAM,QAAQ,IAAI;AAClB,QAAM,WAAW,OAAO,MAAM,YAAY,aAAa,MAAM,SAAS,KAAK,IAAI;AAC/E,oBAAkB,OAAO,gBAAgB,QAAQ,GAAG,WAAW,MAAM;AACrE,QAAM,KAAK;AACb;AAEA;AAAA,EAAoB,CAAC,OAAO,WAC1B,WAAW,sBACP,SAAS,WACT,WAAW,sBACT,SAAS,WACT;AACR;AACA,iBAAiB,SAAS,UAAU,kBAAkB;",
4
+ "sourcesContent": ["import { FiberTag, type Fiber } from '../../../core'\nimport { REACT_PROVIDER_TYPE, REACT_CONSUMER_TYPE } from '../../../react'\nimport {\n registerRenderer,\n registerTypeMatcher,\n reconcileChildren,\n childrenToArray,\n} from '../../reconcile'\n\nexport function hasContextChanged(_fiber: Fiber, _includeFallback = true): boolean {\n return false\n}\nexport const ownContextChanged = hasContextChanged\nexport function renderContextConsumers(_fiber: Fiber): void {}\n\n// Stub: Context feature disabled. Provider elements render as Fragments\n// (value is never propagated \u2014 descendants see only the Context's default).\n// Consumer elements still invoke their function-children with the default\n// value, so `<Ctx.Consumer>{v => ...}</Ctx.Consumer>` patterns keep working.\n// The default `readContext` capability returns `ctx._currentValue` without\n// walking, which matches the no-Provider-fibers-in-tree reality.\nfunction renderConsumerStub(fiber: Fiber, domParent: Node, anchor: Node | null): void {\n const ctx = (fiber.type as any)._context\n const props = fiber.pp ?? {}\n const value = ctx._currentValue\n const rendered = typeof props.children == 'function' ? props.children(value) : null\n reconcileChildren(fiber, childrenToArray(rendered), domParent, anchor)\n fiber.mp = props\n}\n\nregisterTypeMatcher((_type, marker) =>\n marker === REACT_PROVIDER_TYPE\n ? FiberTag.Fragment\n : marker === REACT_CONSUMER_TYPE\n ? FiberTag.Consumer\n : null,\n)\nregisterRenderer(FiberTag.Consumer, renderConsumerStub)\n"],
5
+ "mappings": ";AAAA,SAAS,gBAA4B;AACrC,SAAS,qBAAqB,2BAA2B;AACzD;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEA,SAAS,kBAAkB,QAAe,mBAAmB,MAAe;AACjF,SAAO;AACT;AACO,IAAM,oBAAoB;AAC1B,SAAS,uBAAuB,QAAqB;AAAC;AAQ7D,SAAS,mBAAmB,OAAc,WAAiB,QAA2B;AACpF,QAAM,MAAO,MAAM,KAAa;AAChC,QAAM,QAAQ,MAAM,MAAM,CAAC;AAC3B,QAAM,QAAQ,IAAI;AAClB,QAAM,WAAW,OAAO,MAAM,YAAY,aAAa,MAAM,SAAS,KAAK,IAAI;AAC/E,oBAAkB,OAAO,gBAAgB,QAAQ,GAAG,WAAW,MAAM;AACrE,QAAM,KAAK;AACb;AAEA;AAAA,EAAoB,CAAC,OAAO,WAC1B,WAAW,sBACP,SAAS,WACT,WAAW,sBACT,SAAS,WACT;AACR;AACA,iBAAiB,SAAS,UAAU,kBAAkB;",
6
6
  "names": []
7
7
  }
@@ -1,6 +1,6 @@
1
- // packages/redact/src/dom/features/forward-ref/full.ts
2
- import { FiberTag } from "../../../core";
3
- import { ReactSharedInternals, REACT_FORWARD_REF_TYPE } from "../../../react";
1
+ // src/dom/features/forward-ref/full.ts
2
+ import { FiberTag } from "../../../core/index.js";
3
+ import { REACT_FORWARD_REF_TYPE } from "../../../react/index.js";
4
4
  import {
5
5
  registerRenderer,
6
6
  registerTypeMatcher,
@@ -8,39 +8,30 @@ import {
8
8
  childrenToArray,
9
9
  isThenable,
10
10
  handleSuspended,
11
- handleErrorInRender
12
- } from "../../reconcile";
13
- import { makeDispatcher } from "../../dispatcher";
11
+ handleErrorInRender,
12
+ getForceRerenderingFiber
13
+ } from "../../reconcile.js";
14
+ import { HOOK_BAILOUT, renderWithHooks } from "../../dispatcher.js";
14
15
  function renderForwardRef(fiber, domParent, anchor) {
16
+ const canBail = fiber === getForceRerenderingFiber() && fiber.pp === fiber.mp;
17
+ fiber.cx?.clear();
15
18
  const props = fiber.pp ?? {};
16
19
  const render = fiber.type.render;
17
20
  const ref = fiber.ref ?? (props.ref ?? null);
18
- const prevDispatcher = ReactSharedInternals.H;
19
- const prevFiber = ReactSharedInternals.F;
20
- const prevHook = ReactSharedInternals.K;
21
- const prevIndex = ReactSharedInternals.I;
22
- ReactSharedInternals.H = makeDispatcher();
23
- ReactSharedInternals.F = fiber;
24
- ReactSharedInternals.K = null;
25
- ReactSharedInternals.I = 0;
26
21
  let rendered;
27
22
  try {
28
23
  const { ref: _omit, ...rest } = props;
29
- rendered = render(rest, ref);
24
+ rendered = renderWithHooks(fiber, render, rest, ref, canBail);
30
25
  } catch (e) {
31
26
  if (isThenable(e)) {
32
27
  handleSuspended(fiber, e);
33
- rendered = null;
28
+ return;
34
29
  } else {
35
30
  handleErrorInRender(fiber, e);
36
31
  return;
37
32
  }
38
- } finally {
39
- ReactSharedInternals.H = prevDispatcher;
40
- ReactSharedInternals.F = prevFiber;
41
- ReactSharedInternals.K = prevHook;
42
- ReactSharedInternals.I = prevIndex;
43
33
  }
34
+ if (rendered === HOOK_BAILOUT) return;
44
35
  reconcileChildren(fiber, childrenToArray(rendered), domParent, anchor);
45
36
  fiber.mp = props;
46
37
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/dom/features/forward-ref/full.ts"],
4
- "sourcesContent": ["import { FiberTag, type Fiber, type ReactNode } from '../../../core'\nimport { ReactSharedInternals, REACT_FORWARD_REF_TYPE } from '../../../react'\nimport {\n registerRenderer,\n registerTypeMatcher,\n reconcileChildren,\n childrenToArray,\n isThenable,\n handleSuspended,\n handleErrorInRender,\n} from '../../reconcile'\nimport { makeDispatcher } from '../../dispatcher'\n\nfunction renderForwardRef(fiber: Fiber, domParent: Node, anchor: Node | null): void {\n const props = fiber.pp ?? {}\n const render = (fiber.type as any).render\n const ref = fiber.ref ?? (props.ref ?? null)\n\n const prevDispatcher = ReactSharedInternals.H\n const prevFiber = ReactSharedInternals.F\n const prevHook = ReactSharedInternals.K\n const prevIndex = ReactSharedInternals.I\n ReactSharedInternals.H = makeDispatcher()\n ReactSharedInternals.F = fiber\n ReactSharedInternals.K = null\n ReactSharedInternals.I = 0\n\n let rendered: ReactNode\n try {\n const { ref: _omit, ...rest } = props\n rendered = render(rest, ref)\n } catch (e: any) {\n if (isThenable(e)) {\n handleSuspended(fiber, e)\n rendered = null\n } else {\n handleErrorInRender(fiber, e)\n return\n }\n } finally {\n ReactSharedInternals.H = prevDispatcher\n ReactSharedInternals.F = prevFiber\n ReactSharedInternals.K = prevHook\n ReactSharedInternals.I = prevIndex\n }\n\n reconcileChildren(fiber, childrenToArray(rendered), domParent, anchor)\n fiber.mp = props\n}\n\nregisterTypeMatcher((_type, marker) =>\n marker === REACT_FORWARD_REF_TYPE ? FiberTag.ForwardRef : null,\n)\nregisterRenderer(FiberTag.ForwardRef, renderForwardRef)\n"],
5
- "mappings": ";AAAA,SAAS,gBAA4C;AACrD,SAAS,sBAAsB,8BAA8B;AAC7D;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,sBAAsB;AAE/B,SAAS,iBAAiB,OAAc,WAAiB,QAA2B;AAClF,QAAM,QAAQ,MAAM,MAAM,CAAC;AAC3B,QAAM,SAAU,MAAM,KAAa;AACnC,QAAM,MAAM,MAAM,QAAQ,MAAM,OAAO;AAEvC,QAAM,iBAAiB,qBAAqB;AAC5C,QAAM,YAAY,qBAAqB;AACvC,QAAM,WAAW,qBAAqB;AACtC,QAAM,YAAY,qBAAqB;AACvC,uBAAqB,IAAI,eAAe;AACxC,uBAAqB,IAAI;AACzB,uBAAqB,IAAI;AACzB,uBAAqB,IAAI;AAEzB,MAAI;AACJ,MAAI;AACF,UAAM,EAAE,KAAK,OAAO,GAAG,KAAK,IAAI;AAChC,eAAW,OAAO,MAAM,GAAG;AAAA,EAC7B,SAAS,GAAQ;AACf,QAAI,WAAW,CAAC,GAAG;AACjB,sBAAgB,OAAO,CAAC;AACxB,iBAAW;AAAA,IACb,OAAO;AACL,0BAAoB,OAAO,CAAC;AAC5B;AAAA,IACF;AAAA,EACF,UAAE;AACA,yBAAqB,IAAI;AACzB,yBAAqB,IAAI;AACzB,yBAAqB,IAAI;AACzB,yBAAqB,IAAI;AAAA,EAC3B;AAEA,oBAAkB,OAAO,gBAAgB,QAAQ,GAAG,WAAW,MAAM;AACrE,QAAM,KAAK;AACb;AAEA;AAAA,EAAoB,CAAC,OAAO,WAC1B,WAAW,yBAAyB,SAAS,aAAa;AAC5D;AACA,iBAAiB,SAAS,YAAY,gBAAgB;",
4
+ "sourcesContent": ["import { FiberTag, type Fiber, type ReactNode } from '../../../core'\nimport { REACT_FORWARD_REF_TYPE } from '../../../react'\nimport {\n registerRenderer,\n registerTypeMatcher,\n reconcileChildren,\n childrenToArray,\n isThenable,\n handleSuspended,\n handleErrorInRender,\n getForceRerenderingFiber,\n} from '../../reconcile'\nimport { HOOK_BAILOUT, renderWithHooks } from '../../dispatcher'\n\nfunction renderForwardRef(fiber: Fiber, domParent: Node, anchor: Node | null): void {\n const canBail = fiber === getForceRerenderingFiber() && fiber.pp === fiber.mp\n fiber.cx?.clear()\n const props = fiber.pp ?? {}\n const render = (fiber.type as any).render\n const ref = fiber.ref ?? (props.ref ?? null)\n\n let rendered: ReactNode | typeof HOOK_BAILOUT\n try {\n const { ref: _omit, ...rest } = props\n rendered = renderWithHooks(fiber, render, rest, ref, canBail)\n } catch (e: any) {\n if (isThenable(e)) {\n handleSuspended(fiber, e)\n return\n } else {\n handleErrorInRender(fiber, e)\n return\n }\n }\n\n if (rendered === HOOK_BAILOUT) return\n reconcileChildren(fiber, childrenToArray(rendered), domParent, anchor)\n fiber.mp = props\n}\n\nregisterTypeMatcher((_type, marker) =>\n marker === REACT_FORWARD_REF_TYPE ? FiberTag.ForwardRef : null,\n)\nregisterRenderer(FiberTag.ForwardRef, renderForwardRef)\n"],
5
+ "mappings": ";AAAA,SAAS,gBAA4C;AACrD,SAAS,8BAA8B;AACvC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,cAAc,uBAAuB;AAE9C,SAAS,iBAAiB,OAAc,WAAiB,QAA2B;AAClF,QAAM,UAAU,UAAU,yBAAyB,KAAK,MAAM,OAAO,MAAM;AAC3E,QAAM,IAAI,MAAM;AAChB,QAAM,QAAQ,MAAM,MAAM,CAAC;AAC3B,QAAM,SAAU,MAAM,KAAa;AACnC,QAAM,MAAM,MAAM,QAAQ,MAAM,OAAO;AAEvC,MAAI;AACJ,MAAI;AACF,UAAM,EAAE,KAAK,OAAO,GAAG,KAAK,IAAI;AAChC,eAAW,gBAAgB,OAAO,QAAQ,MAAM,KAAK,OAAO;AAAA,EAC9D,SAAS,GAAQ;AACf,QAAI,WAAW,CAAC,GAAG;AACjB,sBAAgB,OAAO,CAAC;AACxB;AAAA,IACF,OAAO;AACL,0BAAoB,OAAO,CAAC;AAC5B;AAAA,IACF;AAAA,EACF;AAEA,MAAI,aAAa,aAAc;AAC/B,oBAAkB,OAAO,gBAAgB,QAAQ,GAAG,WAAW,MAAM;AACrE,QAAM,KAAK;AACb;AAEA;AAAA,EAAoB,CAAC,OAAO,WAC1B,WAAW,yBAAyB,SAAS,aAAa;AAC5D;AACA,iBAAiB,SAAS,YAAY,gBAAgB;",
6
6
  "names": []
7
7
  }
@@ -1 +1 @@
1
- export * from './full';
1
+ export * from "./full.js";
@@ -1,3 +1,3 @@
1
- // packages/redact/src/dom/features/forward-ref/index.ts
2
- export * from "./full";
1
+ // src/dom/features/forward-ref/index.ts
2
+ export * from "./full.js";
3
3
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
- // packages/redact/src/dom/features/forward-ref/stub.ts
2
- import { FiberTag } from "../../../core";
3
- import { REACT_FORWARD_REF_TYPE } from "../../../react";
4
- import { registerRenderer, registerTypeMatcher, renderFiber } from "../../reconcile";
1
+ // src/dom/features/forward-ref/stub.ts
2
+ import { FiberTag } from "../../../core/index.js";
3
+ import { REACT_FORWARD_REF_TYPE } from "../../../react/index.js";
4
+ import { registerRenderer, registerTypeMatcher, renderFiber } from "../../reconcile.js";
5
5
  function renderForwardRefStub(fiber, domParent, anchor) {
6
6
  const render = fiber.type.render;
7
7
  const savedTag = fiber.tag;
@@ -0,0 +1 @@
1
+ export { createFragmentInstance, updateFragmentHost, refreshFragmentInstances } from "../../fragment-instance.js";
@@ -0,0 +1,8 @@
1
+ // src/dom/features/fragment-refs/index.ts
2
+ import { createFragmentInstance, updateFragmentHost, refreshFragmentInstances } from "../../fragment-instance.js";
3
+ export {
4
+ createFragmentInstance,
5
+ refreshFragmentInstances,
6
+ updateFragmentHost
7
+ };
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/dom/features/fragment-refs/index.ts"],
4
+ "sourcesContent": ["export { createFragmentInstance, updateFragmentHost, refreshFragmentInstances } from '../../fragment-instance'\n"],
5
+ "mappings": ";AAAA,SAAS,wBAAwB,oBAAoB,gCAAgC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,3 @@
1
+ export declare function createFragmentInstance(_fiber: unknown): any;
2
+ export declare function updateFragmentHost(_fiber: unknown, _adding: boolean): void;
3
+ export declare function refreshFragmentInstances(_root: unknown): void;
@@ -0,0 +1,14 @@
1
+ // src/dom/features/fragment-refs/stub.ts
2
+ function createFragmentInstance(_fiber) {
3
+ return null;
4
+ }
5
+ function updateFragmentHost(_fiber, _adding) {
6
+ }
7
+ function refreshFragmentInstances(_root) {
8
+ }
9
+ export {
10
+ createFragmentInstance,
11
+ refreshFragmentInstances,
12
+ updateFragmentHost
13
+ };
14
+ //# sourceMappingURL=stub.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/dom/features/fragment-refs/stub.ts"],
4
+ "sourcesContent": ["export function createFragmentInstance(_fiber: unknown): any { return null }\nexport function updateFragmentHost(_fiber: unknown, _adding: boolean): void {}\nexport function refreshFragmentInstances(_root: unknown): void {}\n"],
5
+ "mappings": ";AAAO,SAAS,uBAAuB,QAAsB;AAAE,SAAO;AAAK;AACpE,SAAS,mBAAmB,QAAiB,SAAwB;AAAC;AACtE,SAAS,yBAAyB,OAAsB;AAAC;",
6
+ "names": []
7
+ }