@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
@@ -0,0 +1,324 @@
1
+ // src/dom/fragment-instance.ts
2
+ import { FiberTag } from "../core/index.js";
3
+ import { findRoot, getCurrentRoot, isActivityHidden } from "./reconcile.js";
4
+ import { onCommitFailure, onCommitRollback, queueMutation } from "./commit.js";
5
+ var instances = /* @__PURE__ */ new WeakMap();
6
+ function hosts(fiber, deep = false, result = []) {
7
+ for (let child = fiber.child; child; child = child.sibling) {
8
+ if (child.um || isActivityHidden(child)) continue;
9
+ const host = child.tag === FiberTag.Host || child.tag === FiberTag.Text;
10
+ if (host) result.push(child);
11
+ if (!host || deep) hosts(child, deep, result);
12
+ }
13
+ if (deep && fiber.tag === FiberTag.Suspense && fiber.ms?.f) hosts(fiber.ms.f, true, result);
14
+ return result;
15
+ }
16
+ function node(fiber) {
17
+ return fiber.tag === FiberTag.Root ? fiber.root.c : fiber.dom;
18
+ }
19
+ function siblings(fiber, parent) {
20
+ let previous = null;
21
+ let next = null;
22
+ let found = false;
23
+ function visit(parent2) {
24
+ for (let child = parent2.child; child && !next; child = child.sibling) {
25
+ if (child === fiber) found = true;
26
+ else if (child.tag === FiberTag.Host || child.tag === FiberTag.Text) {
27
+ if (found) next = node(child);
28
+ else previous = node(child);
29
+ } else if (!isActivityHidden(child)) visit(child);
30
+ }
31
+ }
32
+ if (parent) visit(parent);
33
+ return [previous, next];
34
+ }
35
+ function containsFiber(parent, child) {
36
+ for (; child; child = child.parent) if (child === parent) return true;
37
+ return false;
38
+ }
39
+ var FragmentInstance = class {
40
+ constructor(fiber) {
41
+ this.fiber = fiber;
42
+ }
43
+ fiber;
44
+ nodes = /* @__PURE__ */ new Set();
45
+ listeners = [];
46
+ observers = /* @__PURE__ */ new Set();
47
+ pending = /* @__PURE__ */ new Map();
48
+ children = [];
49
+ ordered = [];
50
+ parent = null;
51
+ adjacent = [null, null];
52
+ portalContainer = null;
53
+ refresh(ordered) {
54
+ this.children = hosts(this.fiber).map(node);
55
+ let parent = this.fiber.parent;
56
+ this.portalContainer = null;
57
+ for (; parent; parent = parent.parent) {
58
+ if (parent.tag === FiberTag.Host || parent.tag === FiberTag.Root) break;
59
+ if (parent.tag === FiberTag.Portal && !this.portalContainer) this.portalContainer = parent.mp.container;
60
+ }
61
+ this.parent = parent && node(parent);
62
+ this.adjacent = siblings(this.fiber, parent);
63
+ this.ordered = ordered;
64
+ const current = new Set(this.children);
65
+ for (const child of this.nodes) if (!current.has(child)) this.update(child, false);
66
+ for (const child of current) this.update(child, true);
67
+ }
68
+ /** Renderer hook, called only for first-level host insertion/removal. */
69
+ update(child, adding) {
70
+ if (adding === this.nodes.has(child)) return;
71
+ if (adding) {
72
+ this.nodes.add(child);
73
+ (child.reactFragments ??= /* @__PURE__ */ new Set()).add(this);
74
+ } else {
75
+ this.nodes.delete(child);
76
+ child.reactFragments?.delete(this);
77
+ }
78
+ for (const entry of this.listeners) {
79
+ if (adding) child.addEventListener(entry.type, entry.attached, entry.options);
80
+ else child.removeEventListener(entry.type, entry.attached, entry.capture);
81
+ }
82
+ if (child.nodeType !== 1) return;
83
+ for (const observer of this.observers) {
84
+ if (adding) {
85
+ this.pending.get(observer)?.delete(child);
86
+ observer.observe(child);
87
+ } else if (typeof observer.rootMargin === "string") {
88
+ let pending = this.pending.get(observer);
89
+ if (!pending) {
90
+ this.pending.set(observer, pending = /* @__PURE__ */ new Set());
91
+ const flush = () => {
92
+ for (const element of pending) observer.unobserve(element);
93
+ if (this.pending.get(observer) === pending) this.pending.delete(observer);
94
+ };
95
+ const frame = child.ownerDocument?.defaultView?.requestAnimationFrame;
96
+ if (frame) frame(() => frame(flush));
97
+ else queueMicrotask(flush);
98
+ }
99
+ pending.add(child);
100
+ } else observer.unobserve(child);
101
+ }
102
+ }
103
+ addEventListener(type, listener, options) {
104
+ if (!listener) return;
105
+ const opts = typeof options === "boolean" ? { capture: options } : options ?? {};
106
+ const capture = !!opts.capture;
107
+ if (opts.signal?.aborted || this.listeners.some((entry2) => entry2.type === type && entry2.listener === listener && entry2.capture === capture)) return;
108
+ const instance = this;
109
+ const entry = {
110
+ type,
111
+ listener,
112
+ capture,
113
+ options: opts.passive === void 0 ? { capture } : { capture, passive: opts.passive },
114
+ attached: opts.once ? function(event) {
115
+ instance.removeEventListener(type, listener, capture);
116
+ if (typeof listener === "function") listener.call(this, event);
117
+ else listener.handleEvent(event);
118
+ } : listener
119
+ };
120
+ if (opts.signal) {
121
+ const abort = () => this.removeEventListener(type, listener, capture);
122
+ opts.signal.addEventListener("abort", abort, { once: true });
123
+ entry.cleanup = () => opts.signal.removeEventListener("abort", abort);
124
+ }
125
+ this.listeners.push(entry);
126
+ for (const child of this.nodes) child.addEventListener(type, entry.attached, entry.options);
127
+ }
128
+ removeEventListener(type, listener, options) {
129
+ const capture = typeof options === "boolean" ? options : !!options?.capture;
130
+ const index = this.listeners.findIndex((entry2) => entry2.type === type && entry2.listener === listener && entry2.capture === capture);
131
+ if (index < 0) return;
132
+ const entry = this.listeners.splice(index, 1)[0];
133
+ for (const child of this.nodes) child.removeEventListener(type, entry.attached, capture);
134
+ entry.cleanup?.();
135
+ }
136
+ dispatchEvent(event) {
137
+ const parent = !this.fiber.um && this.parent;
138
+ if (!parent) return true;
139
+ const target = parent;
140
+ if (!this.listeners.length && event.bubbles) return target.dispatchEvent(event);
141
+ const document = target.nodeType === 9 ? target : target.ownerDocument;
142
+ const temporary = target.nodeType === 9 ? document.createComment("") : document.createTextNode("");
143
+ for (const entry of this.listeners) temporary.addEventListener(entry.type, entry.attached, entry.options);
144
+ target.appendChild(temporary);
145
+ try {
146
+ return temporary.dispatchEvent(event);
147
+ } finally {
148
+ temporary.parentNode?.removeChild(temporary);
149
+ }
150
+ }
151
+ focusChild(last, options) {
152
+ const children = this.ordered.filter((child) => containsFiber(this.fiber, child));
153
+ if (last) children.reverse();
154
+ for (const child of children) {
155
+ if (child.tag === FiberTag.Text) continue;
156
+ const element = child.dom;
157
+ if (element.ownerDocument.activeElement === element) return;
158
+ let focused = false;
159
+ const handleFocus = () => {
160
+ focused = true;
161
+ };
162
+ element.ownerDocument.addEventListener("focus", handleFocus, true);
163
+ try {
164
+ (element.focus ?? HTMLElement.prototype.focus).call(element, options);
165
+ } finally {
166
+ element.ownerDocument.removeEventListener("focus", handleFocus, true);
167
+ }
168
+ if (focused) return;
169
+ }
170
+ }
171
+ focus(options) {
172
+ this.focusChild(false, options);
173
+ }
174
+ focusLast(options) {
175
+ this.focusChild(true, options);
176
+ }
177
+ blur() {
178
+ const parent = this.parent;
179
+ const active = parent && (parent.ownerDocument ?? parent).activeElement;
180
+ if (active && this.children.some((child) => child.contains(active))) active.blur();
181
+ }
182
+ observeUsing(observer) {
183
+ this.observers.add(observer);
184
+ for (const child of this.nodes) if (child.nodeType === 1) observer.observe(child);
185
+ }
186
+ unobserveUsing(observer) {
187
+ if (!this.observers.delete(observer)) return;
188
+ for (const child of this.nodes) if (child.nodeType === 1) observer.unobserve(child);
189
+ for (const child of this.pending.get(observer) ?? []) observer.unobserve(child);
190
+ this.pending.get(observer)?.clear();
191
+ this.pending.delete(observer);
192
+ }
193
+ getClientRects() {
194
+ const rects = [];
195
+ for (const child of this.children) {
196
+ if (child.nodeType === 3) {
197
+ const range = child.ownerDocument.createRange();
198
+ range.selectNodeContents(child);
199
+ rects.push(...range.getClientRects());
200
+ } else rects.push(...child.getClientRects());
201
+ }
202
+ return rects;
203
+ }
204
+ getRootNode(options) {
205
+ const parent = !this.fiber.um && this.parent;
206
+ return parent ? parent.getRootNode(options) : this;
207
+ }
208
+ compareDocumentPosition(other) {
209
+ const parent = !this.fiber.um && this.parent;
210
+ if (!parent) return 1;
211
+ const children = this.children;
212
+ let parentNode = parent;
213
+ if (!children.length) {
214
+ if (this.portalContainer) parentNode = this.portalContainer;
215
+ let result2 = parentNode.compareDocumentPosition(other);
216
+ if (parentNode === other) result2 = 8;
217
+ else if (result2 & 16) {
218
+ const following = this.adjacent[1];
219
+ const position = following && following.compareDocumentPosition(other);
220
+ result2 = following && (position === 0 || position & 4) ? 4 : 2;
221
+ }
222
+ return result2 | 32;
223
+ }
224
+ const first = children[0];
225
+ const last = children[children.length - 1];
226
+ if (this.portalContainer) parentNode = first.parentNode;
227
+ if (!parentNode) return 1;
228
+ const firstContained = parentNode.compareDocumentPosition(first) & 16;
229
+ const lastContained = parentNode.compareDocumentPosition(last) & 16;
230
+ const firstPosition = first.compareDocumentPosition(other);
231
+ const lastPosition = last.compareDocumentPosition(other);
232
+ const result = firstContained && first === other || lastContained && last === other || firstPosition & 16 || lastPosition & 16 || firstContained && lastContained && firstPosition & 4 && lastPosition & 2 ? 16 : !firstContained && first === other || !lastContained && last === other ? 32 : firstPosition;
233
+ if (result & 33) return result;
234
+ const ordered = this.ordered;
235
+ let otherFiber;
236
+ for (let target = other; target && !otherFiber; target = target.parentNode) {
237
+ otherFiber = ordered.find((fiber) => fiber.dom === target);
238
+ }
239
+ if (result & 16) return containsFiber(this.fiber, otherFiber ?? null) ? result : 32;
240
+ if (result & 8) return otherFiber || other === other.ownerDocument || other === other.ownerDocument?.documentElement || other === other.ownerDocument?.body ? result : 32;
241
+ if (!otherFiber) return 32;
242
+ const otherIndex = ordered.indexOf(otherFiber);
243
+ return result & 2 && otherIndex <= ordered.findIndex((fiber) => fiber.dom === first) || result & 4 && otherIndex >= ordered.findIndex((fiber) => fiber.dom === last) ? result : 32;
244
+ }
245
+ scrollIntoView(alignToTop) {
246
+ if (typeof alignToTop === "object") throw new Error("FragmentInstance.scrollIntoView expects a boolean, not an options object.");
247
+ if (this.fiber.um) return;
248
+ const children = this.children.slice();
249
+ const top = alignToTop !== false;
250
+ if (!children.length) {
251
+ const [previous, next] = this.adjacent;
252
+ const fallback = top ? next ?? previous ?? this.parent : previous ?? next;
253
+ if (fallback) children.push(fallback);
254
+ }
255
+ if (top) children.reverse();
256
+ for (const target of children) {
257
+ if (target.nodeType === 3) {
258
+ const range = target.ownerDocument.createRange();
259
+ range.selectNodeContents(target);
260
+ const rect = range.getBoundingClientRect();
261
+ const window = target.ownerDocument.defaultView;
262
+ window.scrollTo(window.scrollX + rect.left, window.scrollY + (top ? rect.top : rect.bottom - window.innerHeight));
263
+ } else if (target.nodeType === 11) {
264
+ ;
265
+ target.host?.scrollIntoView(alignToTop);
266
+ } else if (target.nodeType !== 9) target.scrollIntoView(alignToTop);
267
+ }
268
+ }
269
+ dispose() {
270
+ for (const child of this.nodes) this.update(child, false);
271
+ for (const entry of this.listeners) entry.cleanup?.();
272
+ this.listeners = [];
273
+ this.children = [];
274
+ this.ordered = [];
275
+ this.parent = null;
276
+ const root = this.fiber.root ?? findRoot(this.fiber);
277
+ if (root) instances.get(root)?.delete(this);
278
+ }
279
+ };
280
+ function createFragmentInstance(fiber) {
281
+ const root = fiber.root ?? findRoot(fiber);
282
+ if (root) root.fr = true;
283
+ const instance = new FragmentInstance(fiber);
284
+ if (root) {
285
+ let registered = instances.get(root);
286
+ if (!registered) instances.set(root, registered = /* @__PURE__ */ new Set());
287
+ registered.add(instance);
288
+ onCommitRollback(() => {
289
+ registered.delete(instance);
290
+ });
291
+ onCommitFailure(() => {
292
+ registered.delete(instance);
293
+ });
294
+ }
295
+ return instance;
296
+ }
297
+ function updateFragmentHost(fiber, adding) {
298
+ if (!(fiber.root ?? getCurrentRoot() ?? findRoot(fiber))?.fr || !fiber.dom) return;
299
+ const dom = fiber.dom;
300
+ queueMutation(() => {
301
+ for (let parent = fiber.parent; parent; parent = parent.parent) {
302
+ if (adding && isActivityHidden(parent)) break;
303
+ if (parent.tag === FiberTag.Fragment && parent.sn instanceof FragmentInstance) parent.sn.update(dom, adding);
304
+ if (parent.tag === FiberTag.Host || parent.tag === FiberTag.Root) break;
305
+ }
306
+ });
307
+ }
308
+ function refreshFragmentInstances(root) {
309
+ if (!root.fr) return;
310
+ const registered = instances.get(root);
311
+ if (!registered?.size) return;
312
+ queueMutation(() => {
313
+ if (!registered.size) return;
314
+ const ordered = hosts(root.r, true);
315
+ for (const instance of registered) instance.refresh(ordered);
316
+ });
317
+ }
318
+ export {
319
+ FragmentInstance,
320
+ createFragmentInstance,
321
+ refreshFragmentInstances,
322
+ updateFragmentHost
323
+ };
324
+ //# sourceMappingURL=fragment-instance.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/dom/fragment-instance.ts"],
4
+ "sourcesContent": ["import { FiberTag, type Fiber, type FiberRoot } from '../core'\nimport { findRoot, getCurrentRoot, isActivityHidden } from './reconcile'\nimport { onCommitFailure, onCommitRollback, queueMutation } from './commit'\n\ntype Listener = EventListenerOrEventListenerObject\ntype Observer = IntersectionObserver | ResizeObserver\ntype OwnedNode = Node & { reactFragments?: Set<FragmentInstance> }\ntype Registration = {\n type: string\n listener: Listener\n attached: Listener\n capture: boolean\n options: AddEventListenerOptions\n cleanup?: () => void\n}\n\nconst instances = new WeakMap<FiberRoot, Set<FragmentInstance>>()\n\nfunction hosts(fiber: Fiber, deep = false, result: Fiber[] = []): Fiber[] {\n for (let child = fiber.child; child; child = child.sibling) {\n if (child.um || isActivityHidden(child)) continue\n const host = child.tag === FiberTag.Host || child.tag === FiberTag.Text\n if (host) result.push(child)\n if (!host || deep) hosts(child, deep, result)\n }\n if (deep && fiber.tag === FiberTag.Suspense && fiber.ms?.f) hosts(fiber.ms.f, true, result)\n return result\n}\n\nfunction node(fiber: Fiber): Node {\n return fiber.tag === FiberTag.Root ? fiber.root!.c : fiber.dom!\n}\n\nfunction siblings(fiber: Fiber, parent: Fiber | null): [Node | null, Node | null] {\n let previous: Node | null = null\n let next: Node | null = null\n let found = false\n function visit(parent: Fiber): void {\n for (let child = parent.child; child && !next; child = child.sibling) {\n if (child === fiber) found = true\n else if (child.tag === FiberTag.Host || child.tag === FiberTag.Text) {\n if (found) next = node(child)\n else previous = node(child)\n } else if (!isActivityHidden(child)) visit(child)\n }\n }\n if (parent) visit(parent)\n return [previous, next]\n}\n\nfunction containsFiber(parent: Fiber, child: Fiber | null): boolean {\n for (; child; child = child.parent) if (child === parent) return true\n return false\n}\n\nexport class FragmentInstance {\n private nodes = new Set<OwnedNode>()\n private listeners: Registration[] = []\n private observers = new Set<Observer>()\n private pending = new Map<Observer, Set<Element>>()\n private children: Node[] = []\n private ordered: Fiber[] = []\n private parent: Node | null = null\n private adjacent: [Node | null, Node | null] = [null, null]\n private portalContainer: Node | null = null\n\n constructor(private fiber: Fiber) {}\n\n refresh(ordered: Fiber[]): void {\n this.children = hosts(this.fiber).map(node)\n let parent = this.fiber.parent\n this.portalContainer = null\n for (; parent; parent = parent.parent) {\n if (parent.tag === FiberTag.Host || parent.tag === FiberTag.Root) break\n if (parent.tag === FiberTag.Portal && !this.portalContainer) this.portalContainer = parent.mp.container\n }\n this.parent = parent && node(parent)\n this.adjacent = siblings(this.fiber, parent)\n this.ordered = ordered\n const current = new Set(this.children)\n for (const child of this.nodes) if (!current.has(child)) this.update(child, false)\n for (const child of current) this.update(child, true)\n }\n\n /** Renderer hook, called only for first-level host insertion/removal. */\n update(child: OwnedNode, adding: boolean): void {\n if (adding === this.nodes.has(child)) return\n if (adding) {\n this.nodes.add(child)\n ;(child.reactFragments ??= new Set()).add(this)\n } else {\n this.nodes.delete(child)\n child.reactFragments?.delete(this)\n }\n for (const entry of this.listeners) {\n if (adding) child.addEventListener(entry.type, entry.attached, entry.options)\n else child.removeEventListener(entry.type, entry.attached, entry.capture)\n }\n if (child.nodeType !== 1) return\n for (const observer of this.observers) {\n if (adding) {\n this.pending.get(observer)?.delete(child as Element)\n observer.observe(child as Element)\n } else if (typeof (observer as IntersectionObserver).rootMargin === 'string') {\n let pending = this.pending.get(observer)\n if (!pending) {\n this.pending.set(observer, pending = new Set())\n const flush = () => {\n for (const element of pending!) observer.unobserve(element)\n if (this.pending.get(observer) === pending) this.pending.delete(observer)\n }\n const frame = child.ownerDocument?.defaultView?.requestAnimationFrame\n if (frame) frame(() => frame(flush))\n else queueMicrotask(flush)\n }\n pending.add(child as Element)\n } else observer.unobserve(child as Element)\n }\n }\n\n addEventListener(type: string, listener: Listener | null, options?: boolean | AddEventListenerOptions): void {\n if (!listener) return\n const opts = typeof options === 'boolean' ? { capture: options } : options ?? {}\n const capture = !!opts.capture\n if (opts.signal?.aborted || this.listeners.some((entry) => entry.type === type && entry.listener === listener && entry.capture === capture)) return\n const instance = this\n const entry: Registration = {\n type, listener, capture,\n options: opts.passive === undefined ? { capture } : { capture, passive: opts.passive },\n attached: opts.once ? function (this: EventTarget, event: Event) {\n instance.removeEventListener(type, listener, capture)\n if (typeof listener === 'function') listener.call(this, event)\n else listener.handleEvent(event)\n } : listener,\n }\n if (opts.signal) {\n const abort = () => this.removeEventListener(type, listener, capture)\n opts.signal.addEventListener('abort', abort, { once: true })\n entry.cleanup = () => opts.signal!.removeEventListener('abort', abort)\n }\n this.listeners.push(entry)\n for (const child of this.nodes) child.addEventListener(type, entry.attached, entry.options)\n }\n\n removeEventListener(type: string, listener: Listener | null, options?: boolean | EventListenerOptions): void {\n const capture = typeof options === 'boolean' ? options : !!options?.capture\n const index = this.listeners.findIndex((entry) => entry.type === type && entry.listener === listener && entry.capture === capture)\n if (index < 0) return\n const entry = this.listeners.splice(index, 1)[0]!\n for (const child of this.nodes) child.removeEventListener(type, entry.attached, capture)\n entry.cleanup?.()\n }\n\n dispatchEvent(event: Event): boolean {\n const parent = !this.fiber.um && this.parent\n if (!parent) return true\n const target = parent\n if (!this.listeners.length && event.bubbles) return target.dispatchEvent(event)\n const document = target.nodeType === 9 ? target as Document : target.ownerDocument!\n const temporary = target.nodeType === 9 ? document.createComment('') : document.createTextNode('')\n for (const entry of this.listeners) temporary.addEventListener(entry.type, entry.attached, entry.options)\n target.appendChild(temporary)\n try { return temporary.dispatchEvent(event) }\n finally { temporary.parentNode?.removeChild(temporary) }\n }\n\n private focusChild(last: boolean, options?: FocusOptions): void {\n // Parent links survive reconciliation. Filter the committed root order,\n // not the work-in-progress child pointers, when focus is actually used.\n const children = this.ordered.filter(child => containsFiber(this.fiber, child))\n if (last) children.reverse()\n for (const child of children) {\n if (child.tag === FiberTag.Text) continue\n const element = child.dom as HTMLElement\n if (element.ownerDocument.activeElement === element) return\n let focused = false\n const handleFocus = () => { focused = true }\n element.ownerDocument.addEventListener('focus', handleFocus, true)\n try { (element.focus ?? HTMLElement.prototype.focus).call(element, options) }\n finally { element.ownerDocument.removeEventListener('focus', handleFocus, true) }\n if (focused) return\n }\n }\n\n focus(options?: FocusOptions): void { this.focusChild(false, options) }\n focusLast(options?: FocusOptions): void { this.focusChild(true, options) }\n\n blur(): void {\n const parent = this.parent\n const active = parent && (parent.ownerDocument ?? parent as Document).activeElement as HTMLElement | null\n if (active && this.children.some((child) => child.contains(active))) active.blur()\n }\n\n observeUsing(observer: Observer): void {\n this.observers.add(observer)\n for (const child of this.nodes) if (child.nodeType === 1) observer.observe(child as Element)\n }\n\n unobserveUsing(observer: Observer): void {\n if (!this.observers.delete(observer)) return\n for (const child of this.nodes) if (child.nodeType === 1) observer.unobserve(child as Element)\n for (const child of this.pending.get(observer) ?? []) observer.unobserve(child)\n this.pending.get(observer)?.clear()\n this.pending.delete(observer)\n }\n\n getClientRects(): DOMRect[] {\n const rects: DOMRect[] = []\n for (const child of this.children) {\n if (child.nodeType === 3) {\n const range = child.ownerDocument!.createRange()\n range.selectNodeContents(child)\n rects.push(...range.getClientRects())\n } else rects.push(...(child as Element).getClientRects())\n }\n return rects\n }\n\n getRootNode(options?: GetRootNodeOptions): Node | FragmentInstance {\n const parent = !this.fiber.um && this.parent\n return parent ? parent.getRootNode(options) : this\n }\n\n compareDocumentPosition(other: Node): number {\n const parent = !this.fiber.um && this.parent\n if (!parent) return 1\n const children = this.children\n let parentNode = parent\n if (!children.length) {\n if (this.portalContainer) parentNode = this.portalContainer\n let result = parentNode.compareDocumentPosition(other)\n if (parentNode === other) result = 8\n else if (result & 16) {\n const following = this.adjacent[1]\n const position = following && following.compareDocumentPosition(other)\n result = following && (position === 0 || position! & 4) ? 4 : 2\n }\n return result | 32\n }\n const first = children[0]!\n const last = children[children.length - 1]!\n if (this.portalContainer) parentNode = first.parentNode!\n if (!parentNode) return 1\n const firstContained = parentNode.compareDocumentPosition(first) & 16\n const lastContained = parentNode.compareDocumentPosition(last) & 16\n const firstPosition = first.compareDocumentPosition(other)\n const lastPosition = last.compareDocumentPosition(other)\n const result = (firstContained && first === other) || (lastContained && last === other) ||\n (firstPosition & 16) || (lastPosition & 16) ||\n (firstContained && lastContained && (firstPosition & 4) && (lastPosition & 2)) ? 16 :\n (!firstContained && first === other) || (!lastContained && last === other) ? 32 : firstPosition\n if (result & 33) return result\n const ordered = this.ordered\n let otherFiber: Fiber | undefined\n for (let target: Node | null = other; target && !otherFiber; target = target.parentNode) {\n otherFiber = ordered.find((fiber) => fiber.dom === target)\n }\n if (result & 16) return containsFiber(this.fiber, otherFiber ?? null) ? result : 32\n if (result & 8) return otherFiber || other === other.ownerDocument || other === other.ownerDocument?.documentElement || other === other.ownerDocument?.body ? result : 32\n if (!otherFiber) return 32\n const otherIndex = ordered.indexOf(otherFiber)\n return ((result & 2) && otherIndex <= ordered.findIndex(fiber => fiber.dom === first)) ||\n ((result & 4) && otherIndex >= ordered.findIndex(fiber => fiber.dom === last)) ? result : 32\n }\n\n scrollIntoView(alignToTop?: boolean): void {\n if (typeof alignToTop === 'object') throw new Error('FragmentInstance.scrollIntoView expects a boolean, not an options object.')\n if (this.fiber.um) return\n const children = this.children.slice()\n const top = alignToTop !== false\n if (!children.length) {\n const [previous, next] = this.adjacent\n const fallback = top ? next ?? previous ?? this.parent : previous ?? next\n if (fallback) children.push(fallback)\n }\n if (top) children.reverse()\n for (const target of children) {\n if (target.nodeType === 3) {\n const range = target.ownerDocument!.createRange()\n range.selectNodeContents(target)\n const rect = range.getBoundingClientRect()\n const window = target.ownerDocument!.defaultView!\n window.scrollTo(window.scrollX + rect.left, window.scrollY + (top ? rect.top : rect.bottom - window.innerHeight))\n } else if (target.nodeType === 11) {\n ;(target as ShadowRoot).host?.scrollIntoView(alignToTop)\n } else if (target.nodeType !== 9) (target as Element).scrollIntoView(alignToTop)\n }\n }\n\n dispose(): void {\n for (const child of this.nodes) this.update(child, false)\n for (const entry of this.listeners) entry.cleanup?.()\n this.listeners = []\n this.children = []\n this.ordered = []\n this.parent = null\n const root = this.fiber.root ?? findRoot(this.fiber)\n if (root) instances.get(root)?.delete(this)\n }\n}\n\nexport function createFragmentInstance(fiber: Fiber): FragmentInstance {\n const root = fiber.root ?? findRoot(fiber)\n if (root) root.fr = true\n const instance = new FragmentInstance(fiber)\n if (root) {\n let registered = instances.get(root)\n if (!registered) instances.set(root, registered = new Set())\n registered.add(instance)\n onCommitRollback(() => { registered.delete(instance) })\n onCommitFailure(() => { registered.delete(instance) })\n }\n return instance\n}\n\nexport function updateFragmentHost(fiber: Fiber, adding: boolean): void {\n if (!(fiber.root ?? getCurrentRoot() ?? findRoot(fiber))?.fr || !fiber.dom) return\n const dom = fiber.dom\n queueMutation(() => {\n for (let parent = fiber.parent; parent; parent = parent.parent) {\n if (adding && isActivityHidden(parent)) break\n if (parent.tag === FiberTag.Fragment && parent.sn instanceof FragmentInstance) parent.sn.update(dom, adding)\n if (parent.tag === FiberTag.Host || parent.tag === FiberTag.Root) break\n }\n })\n}\n\nexport function refreshFragmentInstances(root: FiberRoot): void {\n if (!root.fr) return\n const registered = instances.get(root)\n if (!registered?.size) return\n queueMutation(() => {\n if (!registered.size) return\n const ordered = hosts(root.r, true)\n for (const instance of registered) instance.refresh(ordered)\n })\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["parent", "entry", "result"]
7
+ }
@@ -1,12 +1,10 @@
1
- import './features';
2
- export { flushSync, batchedUpdates as unstable_batchedUpdates } from './root';
3
- export { createPortal } from './portal';
4
- export declare function preconnect(_href: string, _opts?: any): void;
5
- export declare function prefetchDNS(_href: string): void;
6
- export declare function preload(_href: string, _opts?: any): void;
7
- export declare function preinit(_href: string, _opts?: any): void;
8
- export declare function preloadModule(_href: string, _opts?: any): void;
9
- export declare function preinitModule(_href: string, _opts?: any): void;
1
+ import "./features/index.js";
2
+ export { flushSync, batchedUpdates as unstable_batchedUpdates } from "./root.js";
3
+ export { createPortal } from "./portal.js";
4
+ export { browser } from "../core/browser.js";
5
+ export type { BrowserToken } from "../core/browser.js";
6
+ import { preconnect, prefetchDNS, preload, preinit, preloadModule, preinitModule } from "./resource-hints.js";
7
+ export { preconnect, prefetchDNS, preload, preinit, preloadModule, preinitModule };
10
8
  export declare const __DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE: {
11
9
  d: {
12
10
  f(): void;
@@ -23,12 +21,14 @@ export declare const __DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRAD
23
21
  findDOMNode: any;
24
22
  };
25
23
  export declare const version = "19.2.3";
26
- import { flushSync, batchedUpdates } from './root';
27
- import { createPortal } from './portal';
24
+ import { flushSync, batchedUpdates } from "./root.js";
25
+ import { createPortal } from "./portal.js";
26
+ import { browser } from "../core/browser.js";
28
27
  declare const _default: {
29
28
  flushSync: typeof flushSync;
30
29
  unstable_batchedUpdates: typeof batchedUpdates;
31
30
  createPortal: typeof createPortal;
31
+ browser: typeof browser;
32
32
  preconnect: typeof preconnect;
33
33
  prefetchDNS: typeof prefetchDNS;
34
34
  preload: typeof preload;
package/dist/dom/index.js CHANGED
@@ -1,21 +1,12 @@
1
- // packages/redact/src/dom/index.ts
2
- import "./features";
3
- import { flushSync, batchedUpdates } from "./root";
4
- import { createPortal } from "./portal";
5
- import { flushSync as flushSync2, batchedUpdates as batchedUpdates2 } from "./root";
6
- import { createPortal as createPortal2 } from "./portal";
7
- function preconnect(_href, _opts) {
8
- }
9
- function prefetchDNS(_href) {
10
- }
11
- function preload(_href, _opts) {
12
- }
13
- function preinit(_href, _opts) {
14
- }
15
- function preloadModule(_href, _opts) {
16
- }
17
- function preinitModule(_href, _opts) {
18
- }
1
+ // src/dom/index.ts
2
+ import "./features/index.js";
3
+ import { flushSync, batchedUpdates } from "./root.js";
4
+ import { createPortal } from "./portal.js";
5
+ import { browser } from "../core/browser.js";
6
+ import { preconnect, prefetchDNS, preload, preinit, preloadModule, preinitModule } from "./resource-hints.js";
7
+ import { flushSync as flushSync2, batchedUpdates as batchedUpdates2 } from "./root.js";
8
+ import { createPortal as createPortal2 } from "./portal.js";
9
+ import { browser as browser2 } from "../core/browser.js";
19
10
  var __DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = {
20
11
  d: {
21
12
  f() {
@@ -45,6 +36,7 @@ var dom_default = {
45
36
  flushSync: flushSync2,
46
37
  unstable_batchedUpdates: batchedUpdates2,
47
38
  createPortal: createPortal2,
39
+ browser: browser2,
48
40
  preconnect,
49
41
  prefetchDNS,
50
42
  preload,
@@ -56,6 +48,7 @@ var dom_default = {
56
48
  };
57
49
  export {
58
50
  __DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,
51
+ browser,
59
52
  createPortal,
60
53
  dom_default as default,
61
54
  flushSync,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/dom/index.ts"],
4
- "sourcesContent": ["// Side-effect import: registers opt-in features (Portal, etc.) with the\n// reconciler. A vite plugin may alias individual feature modules to their\n// stub variants to strip them from the bundle.\nimport './features'\n\nexport { flushSync, batchedUpdates as unstable_batchedUpdates } from './root'\nexport { createPortal } from './portal'\n\n// Resource hints \u2014 stubs\nexport function preconnect(_href: string, _opts?: any): void {}\nexport function prefetchDNS(_href: string): void {}\nexport function preload(_href: string, _opts?: any): void {}\nexport function preinit(_href: string, _opts?: any): void {}\nexport function preloadModule(_href: string, _opts?: any): void {}\nexport function preinitModule(_href: string, _opts?: any): void {}\n\nexport const __DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = {\n d: {\n f() {},\n r() {},\n D() {},\n C() {},\n L() {},\n m() {},\n X() {},\n S() {},\n M() {},\n },\n p: 0,\n findDOMNode: null,\n}\n\nexport const version = '19.2.3'\n\n// Required by React's default export consumers\nimport { flushSync, batchedUpdates } from './root'\nimport { createPortal } from './portal'\nexport default {\n flushSync,\n unstable_batchedUpdates: batchedUpdates,\n createPortal,\n preconnect,\n prefetchDNS,\n preload,\n preinit,\n preloadModule,\n preinitModule,\n __DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n version: '19.2.3',\n}\n"],
5
- "mappings": ";AAGA,OAAO;AAEP,SAAS,WAA6B,sBAA+B;AACrE,SAAS,oBAAoB;AA6B7B,SAAS,aAAAA,YAAW,kBAAAC,uBAAsB;AAC1C,SAAS,gBAAAC,qBAAoB;AA3BtB,SAAS,WAAW,OAAe,OAAmB;AAAC;AACvD,SAAS,YAAY,OAAqB;AAAC;AAC3C,SAAS,QAAQ,OAAe,OAAmB;AAAC;AACpD,SAAS,QAAQ,OAAe,OAAmB;AAAC;AACpD,SAAS,cAAc,OAAe,OAAmB;AAAC;AAC1D,SAAS,cAAc,OAAe,OAAmB;AAAC;AAE1D,IAAM,+DAA+D;AAAA,EAC1E,GAAG;AAAA,IACD,IAAI;AAAA,IAAC;AAAA,IACL,IAAI;AAAA,IAAC;AAAA,IACL,IAAI;AAAA,IAAC;AAAA,IACL,IAAI;AAAA,IAAC;AAAA,IACL,IAAI;AAAA,IAAC;AAAA,IACL,IAAI;AAAA,IAAC;AAAA,IACL,IAAI;AAAA,IAAC;AAAA,IACL,IAAI;AAAA,IAAC;AAAA,IACL,IAAI;AAAA,IAAC;AAAA,EACP;AAAA,EACA,GAAG;AAAA,EACH,aAAa;AACf;AAEO,IAAM,UAAU;AAKvB,IAAO,cAAQ;AAAA,EACb,WAAAF;AAAA,EACA,yBAAyBC;AAAA,EACzB,cAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AACX;",
6
- "names": ["flushSync", "batchedUpdates", "createPortal"]
4
+ "sourcesContent": ["// Side-effect import: registers opt-in features (Portal, etc.) with the\n// reconciler. A vite plugin may alias individual feature modules to their\n// stub variants to strip them from the bundle.\nimport './features'\n\nexport { flushSync, batchedUpdates as unstable_batchedUpdates } from './root'\nexport { createPortal } from './portal'\nexport { browser } from '../core/browser'\nexport type { BrowserToken } from '../core/browser'\n\nimport { preconnect, prefetchDNS, preload, preinit, preloadModule, preinitModule } from './resource-hints'\nexport { preconnect, prefetchDNS, preload, preinit, preloadModule, preinitModule }\n\nexport const __DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = {\n d: {\n f() {},\n r() {},\n D() {},\n C() {},\n L() {},\n m() {},\n X() {},\n S() {},\n M() {},\n },\n p: 0,\n findDOMNode: null,\n}\n\nexport const version = '19.2.3'\n\n// Required by React's default export consumers\nimport { flushSync, batchedUpdates } from './root'\nimport { createPortal } from './portal'\nimport { browser } from '../core/browser'\nexport default {\n flushSync,\n unstable_batchedUpdates: batchedUpdates,\n createPortal,\n browser,\n preconnect,\n prefetchDNS,\n preload,\n preinit,\n preloadModule,\n preinitModule,\n __DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n version: '19.2.3',\n}\n"],
5
+ "mappings": ";AAGA,OAAO;AAEP,SAAS,WAA6B,sBAA+B;AACrE,SAAS,oBAAoB;AAC7B,SAAS,eAAe;AAGxB,SAAS,YAAY,aAAa,SAAS,SAAS,eAAe,qBAAqB;AAsBxF,SAAS,aAAAA,YAAW,kBAAAC,uBAAsB;AAC1C,SAAS,gBAAAC,qBAAoB;AAC7B,SAAS,WAAAC,gBAAe;AArBjB,IAAM,+DAA+D;AAAA,EAC1E,GAAG;AAAA,IACD,IAAI;AAAA,IAAC;AAAA,IACL,IAAI;AAAA,IAAC;AAAA,IACL,IAAI;AAAA,IAAC;AAAA,IACL,IAAI;AAAA,IAAC;AAAA,IACL,IAAI;AAAA,IAAC;AAAA,IACL,IAAI;AAAA,IAAC;AAAA,IACL,IAAI;AAAA,IAAC;AAAA,IACL,IAAI;AAAA,IAAC;AAAA,IACL,IAAI;AAAA,IAAC;AAAA,EACP;AAAA,EACA,GAAG;AAAA,EACH,aAAa;AACf;AAEO,IAAM,UAAU;AAMvB,IAAO,cAAQ;AAAA,EACb,WAAAC;AAAA,EACA,yBAAyBC;AAAA,EACzB,cAAAC;AAAA,EACA,SAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AACX;",
6
+ "names": ["flushSync", "batchedUpdates", "createPortal", "browser", "flushSync", "batchedUpdates", "createPortal", "browser"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import type { ReactNode, ReactElement } from '../core';
2
- export declare function createPortal(children: ReactNode, container: Element, key?: string | null): ReactElement;
1
+ import type { ReactNode, ReactElement } from "../core/index.js";
2
+ export declare function createPortal(children: ReactNode, container: Element | DocumentFragment, key?: string | null): ReactElement;
@@ -1,5 +1,5 @@
1
- // packages/redact/src/dom/portal.ts
2
- import { REACT_PORTAL_TYPE } from "../react";
1
+ // src/dom/portal.ts
2
+ import { REACT_PORTAL_TYPE } from "../react/index.js";
3
3
  function createPortal(children, container, key = null) {
4
4
  return {
5
5
  $$typeof: REACT_PORTAL_TYPE,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/dom/portal.ts"],
4
- "sourcesContent": ["import type { ReactNode, ReactElement } from '../core'\nimport { REACT_PORTAL_TYPE } from '../react'\n\nexport function createPortal(\n children: ReactNode,\n container: Element,\n key: string | null = null,\n): ReactElement {\n return {\n $$typeof: REACT_PORTAL_TYPE as any,\n type: REACT_PORTAL_TYPE as any,\n key: key == null ? null : '' + key,\n ref: null,\n props: { children, container },\n }\n}\n"],
4
+ "sourcesContent": ["import type { ReactNode, ReactElement } from '../core'\nimport { REACT_PORTAL_TYPE } from '../react'\n\nexport function createPortal(\n children: ReactNode,\n container: Element | DocumentFragment,\n key: string | null = null,\n): ReactElement {\n return {\n $$typeof: REACT_PORTAL_TYPE as any,\n type: REACT_PORTAL_TYPE as any,\n key: key == null ? null : '' + key,\n ref: null,\n props: { children, container },\n }\n}\n"],
5
5
  "mappings": ";AACA,SAAS,yBAAyB;AAE3B,SAAS,aACd,UACA,WACA,MAAqB,MACP;AACd,SAAO;AAAA,IACL,UAAU;AAAA,IACV,MAAM;AAAA,IACN,KAAK,OAAO,OAAO,OAAO,KAAK;AAAA,IAC/B,KAAK;AAAA,IACL,OAAO,EAAE,UAAU,UAAU;AAAA,EAC/B;AACF;",
6
6
  "names": []
7
7
  }
@@ -1,8 +1,10 @@
1
- import { FiberTag, type Fiber, type FiberRoot, type ReactElement, type ReactNode, type Effect } from '../core';
1
+ import { FiberTag, type Fiber, type FiberRoot, type ReactElement, type ReactNode, type Effect, type Hook } from "../core/index.js";
2
2
  export declare function scheduleUpdate(fiber: Fiber): void;
3
3
  export declare function flushSyncWork(fn: () => void): void;
4
4
  export declare function batchedUpdates<T>(fn: () => T): T;
5
+ export declare function scheduleRootRender(root: FiberRoot, render: () => void): void;
5
6
  export declare function discardPendingWork(root: FiberRoot): void;
7
+ export declare function discardPendingEffects(root: FiberRoot): void;
6
8
  export declare function findRoot(fiber: Fiber): FiberRoot | null;
7
9
  export declare function renderRoot(root: FiberRoot, children: ReactNode): void;
8
10
  type NormalizedChild = ReactElement | string | null;
@@ -26,15 +28,42 @@ export declare function deferHydration(fiber: Fiber, thenable: Promise<any>): bo
26
28
  export interface Capabilities {
27
29
  handleSuspended: (fiber: Fiber, thenable: Promise<any>) => void;
28
30
  readContext: (fiber: Fiber, ctx: any) => any;
31
+ isActivityHidden: (fiber: Fiber) => boolean;
32
+ activityIsDisconnected: (fiber: Fiber) => boolean;
33
+ prepareActivityFiber: (fiber: Fiber) => void;
34
+ syncActivity: (fiber: Fiber) => void;
29
35
  }
36
+ export declare function isActivityHidden(fiber: Fiber): boolean;
37
+ export declare function activityIsDisconnected(fiber: Fiber): boolean;
38
+ export declare function layoutIsDisconnected(fiber: Fiber): boolean;
39
+ export declare function rememberActivityEffect(fiber: Fiber, hook: Hook, effect: Effect): void;
30
40
  export declare function installCapability<K extends keyof Capabilities>(name: K, fn: Capabilities[K]): void;
31
41
  export declare function handleSuspended(fiber: Fiber, thenable: Promise<any>): void;
42
+ export declare class RenderSuspenseCapture {
43
+ boundary: Fiber;
44
+ constructor(boundary: Fiber);
45
+ }
46
+ export declare function findSuspenseBoundary(fiber: Fiber): Fiber | null;
47
+ export declare class RenderErrorCapture {
48
+ boundary: Fiber;
49
+ error: unknown;
50
+ stack: string;
51
+ constructor(boundary: Fiber, error: unknown, source?: Fiber);
52
+ }
53
+ export declare function recoverRootError(error: unknown, abort?: () => void): boolean;
54
+ export declare function handleCommitError(fiber: Fiber, error: unknown): void;
32
55
  export declare function handleErrorInRender(fiber: Fiber, err: any): void;
33
56
  export declare function isThenable(x: any): x is Promise<any>;
34
- export declare function unmountFiber(fiber: Fiber, domParent: Node): void;
57
+ export declare function unmountFiber(fiber: Fiber, domParent: Node, remove?: boolean): void;
35
58
  export declare function unmountAllChildren(parent: Fiber, domParent: Node): void;
59
+ export declare function getHostParent(fiber: Fiber): Node;
60
+ export declare function getAnchor(fiber: Fiber, domParent: Node): Node | null;
36
61
  export declare function readContext(fiber: Fiber, ctx: any): any;
62
+ export declare function attachRef(fiber: Fiber, value: any): void;
63
+ export declare function syncRefIfChanged(fiber: Fiber, value: any): void;
64
+ export declare function detachRef(ref: any, fiber?: Fiber): void;
65
+ export declare function flushFiberCommits(fiber: Fiber): void;
37
66
  export declare function enqueueEffect(fiber: Fiber, effect: Effect): void;
38
- export declare function scheduleLifecycle(_fiber: Fiber, fn: () => void): void;
67
+ export declare function scheduleLifecycle(fiber: Fiber, fn: () => void): void;
39
68
  export declare function runEffects(root: FiberRoot): void;
40
69
  export {};