@tanstack/redact 0.0.21 → 0.1.1

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 (254) 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 -27
  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 +72 -15
  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 +17 -8
  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 -77
  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 +197 -52
  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 +689 -221
  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 +7 -2
  152. package/dist/react/context.js +3 -11
  153. package/dist/react/context.js.map +3 -3
  154. package/dist/react/element.d.ts +6 -3
  155. package/dist/react/element.js +7 -11
  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 +150 -110
  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 -28
  215. package/src/dom/features/context/full.ts +70 -13
  216. package/src/dom/features/context/stub.ts +10 -5
  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 -85
  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 +192 -55
  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 +695 -242
  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/context.ts +4 -11
  242. package/src/react/element.ts +11 -12
  243. package/src/react/hooks.ts +12 -3
  244. package/src/react/index.ts +18 -0
  245. package/src/react/shared-internals.ts +3 -3
  246. package/src/react/view-transition.ts +41 -0
  247. package/src/server/bootstrap-script.ts +36 -5
  248. package/src/server/dispatcher.ts +35 -13
  249. package/src/server/escape.ts +15 -12
  250. package/src/server/renderToString.ts +7 -5
  251. package/src/server/resource-hints.ts +165 -0
  252. package/src/server/stream.ts +154 -62
  253. package/src/server/walk.ts +79 -26
  254. package/src/vite/index.ts +30 -13
@@ -0,0 +1,22 @@
1
+ // src/dom/features/view-transition/stub.ts
2
+ function markTransitionUpdate(_root) {
3
+ }
4
+ function deferTransition(_root, _commit, _flush) {
5
+ return false;
6
+ }
7
+ function cancelTransitions() {
8
+ }
9
+ function deferTransitionLayout(_work) {
10
+ return false;
11
+ }
12
+ function deferTransitionPassive(_work) {
13
+ return false;
14
+ }
15
+ export {
16
+ cancelTransitions,
17
+ deferTransition,
18
+ deferTransitionLayout,
19
+ deferTransitionPassive,
20
+ markTransitionUpdate
21
+ };
22
+ //# sourceMappingURL=stub.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/dom/features/view-transition/stub.ts"],
4
+ "sourcesContent": ["import type { FiberRoot } from '../../../core'\n\nexport function markTransitionUpdate(_root: FiberRoot): void {}\nexport function deferTransition(_root: FiberRoot, _commit: () => void, _flush: () => void): boolean { return false }\nexport function cancelTransitions(): void {}\nexport function deferTransitionLayout(_work: () => void): boolean { return false }\nexport function deferTransitionPassive(_work: () => void): boolean { return false }\n"],
5
+ "mappings": ";AAEO,SAAS,qBAAqB,OAAwB;AAAC;AACvD,SAAS,gBAAgB,OAAkB,SAAqB,QAA6B;AAAE,SAAO;AAAM;AAC5G,SAAS,oBAA0B;AAAC;AACpC,SAAS,sBAAsB,OAA4B;AAAE,SAAO;AAAM;AAC1E,SAAS,uBAAuB,OAA4B;AAAE,SAAO;AAAM;",
6
+ "names": []
7
+ }
@@ -0,0 +1,14 @@
1
+ import { type FiberRoot } from "../../../core/index.js";
2
+ export interface PreparedViewTransition {
3
+ document: Document;
4
+ exclude(root: FiberRoot): void;
5
+ prepare(): Promise<void> | undefined;
6
+ waitForResources(fontsWereLoaded: boolean): Promise<void> | undefined;
7
+ beforeCommit(): boolean;
8
+ afterCommit(): void;
9
+ ready(): void;
10
+ restore(): void;
11
+ finish(): void;
12
+ cancel(): void;
13
+ }
14
+ export declare function prepareViewTransition(rootIterable: Iterable<FiberRoot>, types: string[]): PreparedViewTransition | null;
@@ -0,0 +1,356 @@
1
+ // src/dom/features/view-transition/visual.ts
2
+ import { FiberTag } from "../../../core/index.js";
3
+ import {
4
+ REACT_VIEW_TRANSITION_TYPE
5
+ } from "../../../react/view-transition.js";
6
+ import { transitionResources } from "./resources.js";
7
+ var names = /* @__PURE__ */ new WeakMap();
8
+ var styleProperties = ["view-transition-name", "view-transition-class"];
9
+ var nextName = 0;
10
+ function byType(value, types) {
11
+ if (typeof value === "string") return value;
12
+ if (!value) return void 0;
13
+ let result;
14
+ for (const type of types) {
15
+ const match = value[type];
16
+ if (match === "none") return match;
17
+ if (match != null) result = result == null ? match : result + " " + match;
18
+ }
19
+ return result ?? value.default;
20
+ }
21
+ function className(props, kind, types) {
22
+ const value = byType(props[kind], types) ?? byType(props.default, types);
23
+ return value === "auto" ? void 0 : value;
24
+ }
25
+ function visibleChildren(fiber, visit) {
26
+ if (fiber.tag === FiberTag.Activity && fiber.pp?.mode === "hidden") return;
27
+ if (fiber.tag === FiberTag.Suspense && fiber.ms?.f) {
28
+ visit(fiber.ms.f);
29
+ return;
30
+ }
31
+ for (let child = fiber.child; child; child = child.sibling) visit(child);
32
+ }
33
+ function contents(node, nested, first = false) {
34
+ if (!first && nested.has(node)) return "|";
35
+ if (node.nodeType === 3) return JSON.stringify(node.nodeValue);
36
+ if (node.nodeType !== 1) return "";
37
+ const element = node;
38
+ let result = "<" + element.nodeName;
39
+ for (const attribute of element.attributes) {
40
+ if (attribute.name !== "style") result += " " + attribute.name + "=" + JSON.stringify(attribute.value);
41
+ }
42
+ for (let i = 0; i < element.style.length; i++) {
43
+ const property = element.style[i];
44
+ if (property !== "view-transition-name" && property !== "view-transition-class") {
45
+ result += ";" + property + ":" + element.style.getPropertyValue(property) + "!" + element.style.getPropertyPriority(property);
46
+ }
47
+ }
48
+ if ("value" in element) result += "=" + element.value;
49
+ if ("checked" in element) result += ":" + element.checked;
50
+ result += ">";
51
+ for (let child = node.firstChild; child; child = child.nextSibling) result += contents(child, nested);
52
+ return result + "</" + element.nodeName + ">";
53
+ }
54
+ function snapshot(roots, doc, types, connected = true) {
55
+ const boundaries = /* @__PURE__ */ new Map();
56
+ const visible = /* @__PURE__ */ new Set();
57
+ const images = /* @__PURE__ */ new Map();
58
+ const allHosts = /* @__PURE__ */ new Set();
59
+ const empty = [];
60
+ const ancestors = [];
61
+ function walk(fiber, parent, pending) {
62
+ if (fiber.um) return;
63
+ if (fiber.type === REACT_VIEW_TRANSITION_TYPE) {
64
+ const props = fiber.pp ?? {};
65
+ const explicitName = byType(props.name, types);
66
+ let name = explicitName;
67
+ if (name == null || name === "auto") {
68
+ name = names.get(fiber);
69
+ if (!name) names.set(fiber, name = "_redact_t_" + (++nextName).toString(32));
70
+ }
71
+ const boundary = {
72
+ fiber,
73
+ props,
74
+ hosts: [],
75
+ ancestors: ancestors.slice(),
76
+ parent,
77
+ name,
78
+ explicit: explicitName != null && explicitName !== "auto",
79
+ rects: [],
80
+ content: "",
81
+ inViewport: false
82
+ };
83
+ boundaries.set(fiber, boundary);
84
+ pending = pending.concat(boundary);
85
+ parent = fiber;
86
+ }
87
+ if (fiber.tag === FiberTag.Host) {
88
+ visible.add(fiber);
89
+ const dom = fiber.dom;
90
+ if (parent && fiber.type === "img" && dom?.ownerDocument === doc) {
91
+ images.set(dom, fiber.pp);
92
+ }
93
+ if (pending.length && dom?.ownerDocument === doc && (!connected || dom.isConnected) && dom.style) {
94
+ for (const boundary of pending) boundary.hosts.push(dom);
95
+ allHosts.add(dom);
96
+ }
97
+ pending = empty;
98
+ ancestors.push(fiber);
99
+ }
100
+ visibleChildren(fiber, (child) => walk(child, parent, pending));
101
+ if (fiber.tag === FiberTag.Host) ancestors.pop();
102
+ }
103
+ for (const root of roots) walk(root.r, null, empty);
104
+ const view = doc.defaultView;
105
+ if (connected) for (const boundary of boundaries.values()) {
106
+ boundary.rects = boundary.hosts.map((host) => {
107
+ const rect = host.getBoundingClientRect();
108
+ return [rect.x, rect.y, rect.width, rect.height];
109
+ });
110
+ boundary.inViewport = boundary.rects.some(([x, y, width, height]) => width > 0 && height > 0 && x + width > 0 && y + height > 0 && x < (view?.innerWidth ?? Infinity) && y < (view?.innerHeight ?? Infinity));
111
+ boundary.content = boundary.hosts.map((host) => contents(host, allHosts, true)).join("");
112
+ }
113
+ return { boundaries, visible, images };
114
+ }
115
+ function pseudo(doc, kind, name) {
116
+ const scope = doc.documentElement;
117
+ const selector = "::view-transition-" + kind + "(" + nativeName(name) + ")";
118
+ return {
119
+ animate(keyframes, options) {
120
+ return scope.animate(keyframes, { ...typeof options === "number" ? { duration: options } : options, pseudoElement: selector });
121
+ },
122
+ getAnimations() {
123
+ return scope.getAnimations({ subtree: true }).filter((animation) => {
124
+ const effect = animation.effect;
125
+ return effect?.target === scope && effect.pseudoElement === selector;
126
+ });
127
+ },
128
+ getComputedStyle() {
129
+ return doc.defaultView.getComputedStyle(scope, selector);
130
+ }
131
+ };
132
+ }
133
+ function nativeName(name) {
134
+ return CSS.escape(name) === name ? name : CSS.escape("r-" + btoa(name).replace(/=/g, ""));
135
+ }
136
+ function instance(doc, name) {
137
+ return {
138
+ name,
139
+ group: pseudo(doc, "group", name),
140
+ imagePair: pseudo(doc, "image-pair", name),
141
+ old: pseudo(doc, "old", name),
142
+ new: pseudo(doc, "new", name)
143
+ };
144
+ }
145
+ function topLevel(boundary, other, side) {
146
+ if (boundary.ancestors.some((fiber) => !other.visible.has(fiber))) return false;
147
+ for (let parent = boundary.parent; parent; parent = side.boundaries.get(parent)?.parent ?? null) {
148
+ if (!other.boundaries.has(parent)) return false;
149
+ }
150
+ return true;
151
+ }
152
+ function changed(before, after) {
153
+ return before.content !== after.content || before.hosts.length !== after.hosts.length || before.hosts.some((host, i) => host !== after.hosts[i] || before.rects[i].some((value, axis) => value !== after.rects[i][axis]));
154
+ }
155
+ function prepareViewTransition(rootIterable, types) {
156
+ const roots = Array.from(rootIterable);
157
+ const container = roots[0]?.c;
158
+ const doc = container?.nodeType === 9 ? container : container?.ownerDocument;
159
+ if (!doc?.documentElement) return null;
160
+ const before = snapshot(roots, doc, types);
161
+ const saved = /* @__PURE__ */ new Map();
162
+ const suppressed = /* @__PURE__ */ new Set();
163
+ const events = [];
164
+ const cleanups = [];
165
+ const captures = [];
166
+ let done = false;
167
+ let after;
168
+ let resources;
169
+ function apply(host, name, classes) {
170
+ let previous = saved.get(host);
171
+ if (!previous) saved.set(host, previous = []);
172
+ for (let index = 0; index < 2; index++) {
173
+ const property = styleProperties[index];
174
+ const offset = index * 3;
175
+ const current = host.style.getPropertyValue(property);
176
+ if (current !== previous[offset + 2]) {
177
+ previous[offset] = current;
178
+ previous[offset + 1] = host.style.getPropertyPriority(property);
179
+ }
180
+ const value = index ? classes === "none" ? "" : classes ?? previous[offset] : nativeName(name);
181
+ host.style.setProperty(property, previous[offset + 2] = value, "important");
182
+ }
183
+ }
184
+ function applyHosts(hosts, name, props, kind) {
185
+ const classes = className(props, kind, types);
186
+ hosts.forEach((host, index) => apply(host, index ? name + "_" + index : name, classes));
187
+ }
188
+ function suppress(hosts, name) {
189
+ hosts.forEach((_, index) => suppressed.add(index ? name + "_" + index : name));
190
+ }
191
+ function ownership(side) {
192
+ const owners = /* @__PURE__ */ new Map();
193
+ for (const capture2 of captures) {
194
+ if (side === "next" && !capture2.newEnabled) continue;
195
+ for (const host of capture2[side]?.hosts ?? []) owners.set(host, capture2);
196
+ }
197
+ return owners;
198
+ }
199
+ function capture(kind, old, next, enabled = true) {
200
+ captures.push({ old, next, kind, name: (old ?? next).name, oldHosts: [], newEnabled: !!next && enabled });
201
+ }
202
+ function restore() {
203
+ for (const [host, previous] of saved) {
204
+ for (let index = 0; index < 2; index++) {
205
+ const property = styleProperties[index];
206
+ const offset = index * 3;
207
+ if (host.style.getPropertyValue(property) === previous[offset + 2]) {
208
+ host.style.setProperty(property, previous[offset], previous[offset + 1]);
209
+ }
210
+ }
211
+ }
212
+ saved.clear();
213
+ }
214
+ function finish() {
215
+ if (done) return;
216
+ done = true;
217
+ resources?.cancel();
218
+ restore();
219
+ let error;
220
+ let failed = false;
221
+ for (const cleanup of cleanups.splice(0)) {
222
+ try {
223
+ cleanup();
224
+ } catch (caught) {
225
+ if (!failed) {
226
+ error = caught;
227
+ failed = true;
228
+ }
229
+ }
230
+ }
231
+ if (failed) throw error;
232
+ }
233
+ return {
234
+ document: doc,
235
+ exclude(root) {
236
+ const index = roots.indexOf(root);
237
+ if (index >= 0) roots.splice(index, 1);
238
+ for (const [fiber] of before.boundaries) if (fiber.root === root) before.boundaries.delete(fiber);
239
+ },
240
+ prepare() {
241
+ after = snapshot(roots, doc, types, false);
242
+ resources = transitionResources(doc, before.images, after.images);
243
+ return resources.before();
244
+ },
245
+ waitForResources(fontsWereLoaded) {
246
+ if (!done) return resources?.after(fontsWereLoaded);
247
+ },
248
+ beforeCommit() {
249
+ if (done) return false;
250
+ const entering = /* @__PURE__ */ new Map();
251
+ const paired = /* @__PURE__ */ new Set();
252
+ for (const boundary of after.boundaries.values()) {
253
+ if (!before.boundaries.has(boundary.fiber) && boundary.explicit) entering.set(boundary.name, boundary);
254
+ }
255
+ for (const old of before.boundaries.values()) {
256
+ const current = after.boundaries.get(old.fiber);
257
+ if (current) {
258
+ if (className(current.props, "update", types) !== "none") capture("update", old, current);
259
+ } else {
260
+ const shared = old.explicit && old.inViewport ? entering.get(old.name) : void 0;
261
+ if (shared) {
262
+ entering.delete(old.name);
263
+ if (className(old.props, "share", types) !== "none") {
264
+ paired.add(shared.fiber);
265
+ capture("share", old, shared, className(shared.props, "share", types) !== "none");
266
+ }
267
+ } else if (topLevel(old, after, before) && old.inViewport && className(old.props, "exit", types) !== "none") {
268
+ capture("exit", old);
269
+ }
270
+ }
271
+ }
272
+ for (const boundary of after.boundaries.values()) {
273
+ if (before.boundaries.has(boundary.fiber) || paired.has(boundary.fiber)) continue;
274
+ if (topLevel(boundary, before, after) && className(boundary.props, "enter", types) !== "none") {
275
+ capture("enter", void 0, boundary);
276
+ }
277
+ }
278
+ captures.sort((a, b) => (a.kind === "share" ? 2 : a.kind === "update" ? 0 : 1) - (b.kind === "share" ? 2 : b.kind === "update" ? 0 : 1));
279
+ if (!captures.some((capture2) => capture2.old?.hosts.length || capture2.newEnabled && capture2.next?.hosts.length)) return false;
280
+ const owners = ownership("old");
281
+ apply(doc.documentElement, "none");
282
+ for (const boundary of before.boundaries.values()) for (const host of boundary.hosts) apply(host, "none");
283
+ for (const capture2 of captures) {
284
+ capture2.oldHosts = capture2.old?.hosts.filter((host) => owners.get(host) === capture2) ?? [];
285
+ const props = capture2.kind === "update" ? capture2.next.props : capture2.old?.props;
286
+ if (props) applyHosts(capture2.oldHosts, capture2.name, props, capture2.kind);
287
+ }
288
+ return true;
289
+ },
290
+ afterCommit() {
291
+ if (done) return;
292
+ const after2 = snapshot(roots, doc, types);
293
+ for (const capture2 of captures) {
294
+ if (capture2.next) capture2.next = after2.boundaries.get(capture2.next.fiber);
295
+ if (capture2.kind !== "update" && !capture2.next?.inViewport) capture2.newEnabled = false;
296
+ }
297
+ const owners = ownership("next");
298
+ for (const boundary of after2.boundaries.values()) for (const host of boundary.hosts) apply(host, "none");
299
+ for (const capture2 of captures) {
300
+ const newHosts = capture2.next?.hosts.filter((host) => owners.get(host) === capture2) ?? [];
301
+ if (capture2.next) applyHosts(newHosts, capture2.name, capture2.next.props, capture2.kind);
302
+ if (!capture2.oldHosts.length && !newHosts.length) continue;
303
+ if (capture2.kind === "update") {
304
+ if (capture2.next && capture2.old && changed(capture2.old, capture2.next)) events.push({ boundary: capture2.next, name: capture2.name, kind: "update" });
305
+ else suppress(capture2.oldHosts, capture2.name);
306
+ } else {
307
+ const boundary = capture2.kind === "enter" ? capture2.next : capture2.old;
308
+ if (boundary) events.push({ boundary, name: capture2.name, kind: capture2.kind });
309
+ }
310
+ }
311
+ },
312
+ ready() {
313
+ if (done) return;
314
+ const nativeSuppressed = new Set([...suppressed].map(nativeName));
315
+ for (const animation of doc.documentElement.getAnimations({ subtree: true })) {
316
+ const effect = animation.effect;
317
+ const selector = effect?.pseudoElement;
318
+ if (effect?.target !== doc.documentElement || !selector) continue;
319
+ const start = selector.indexOf("(");
320
+ if (start >= 0 && nativeSuppressed.has(selector.slice(start + 1, -1))) animation.cancel();
321
+ }
322
+ for (const name of suppressed) {
323
+ const animation = pseudo(doc, "group", name).animate({ opacity: 0 }, { duration: 0, fill: "forwards" });
324
+ cleanups.push(() => animation.cancel());
325
+ }
326
+ let error;
327
+ let failed = false;
328
+ for (const event of events) {
329
+ if (done) break;
330
+ const callback = event.boundary.props["on" + event.kind[0].toUpperCase() + event.kind.slice(1)];
331
+ if (callback) {
332
+ try {
333
+ const cleanup = callback(instance(doc, event.name), types);
334
+ if (typeof cleanup === "function") {
335
+ if (done) cleanup();
336
+ else cleanups.push(cleanup);
337
+ }
338
+ } catch (caught) {
339
+ if (!failed) {
340
+ error = caught;
341
+ failed = true;
342
+ }
343
+ }
344
+ }
345
+ }
346
+ if (failed) throw error;
347
+ },
348
+ restore,
349
+ finish,
350
+ cancel: finish
351
+ };
352
+ }
353
+ export {
354
+ prepareViewTransition
355
+ };
356
+ //# sourceMappingURL=visual.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/dom/features/view-transition/visual.ts"],
4
+ "sourcesContent": ["import { FiberTag, type Fiber, type FiberRoot } from '../../../core'\nimport {\n REACT_VIEW_TRANSITION_TYPE,\n type ViewTransitionClass,\n type ViewTransitionInstance,\n type ViewTransitionProps,\n type ViewTransitionPseudoElement,\n} from '../../../react/view-transition'\nimport { transitionResources, type TransitionImages } from './resources'\n\ntype Kind = 'enter' | 'exit' | 'update' | 'share'\ntype Host = HTMLElement | SVGElement\ntype Rect = [number, number, number, number]\ninterface Boundary {\n fiber: Fiber\n props: ViewTransitionProps\n hosts: Host[]\n ancestors: Fiber[]\n parent: Fiber | null\n name: string\n explicit: boolean\n rects: Rect[]\n content: string\n inViewport: boolean\n}\ninterface Snapshot {\n boundaries: Map<Fiber, Boundary>\n visible: Set<Fiber>\n images: TransitionImages\n}\ninterface Capture {\n old?: Boundary | undefined\n next?: Boundary | undefined\n kind: Kind\n name: string\n oldHosts: Host[]\n newEnabled: boolean\n}\ninterface Event {\n boundary: Boundary\n kind: Kind\n name: string\n}\n\nconst names = new WeakMap<Fiber, string>()\nconst styleProperties = ['view-transition-name', 'view-transition-class']\nlet nextName = 0\n\nfunction byType(value: ViewTransitionClass | undefined, types: string[]): string | undefined {\n if (typeof value === 'string') return value\n if (!value) return undefined\n let result: string | undefined\n for (const type of types) {\n const match = value[type]\n if (match === 'none') return match\n if (match != null) result = result == null ? match : result + ' ' + match\n }\n return result ?? value.default\n}\n\nfunction className(props: ViewTransitionProps, kind: Kind, types: string[]): string | undefined {\n const value = byType(props[kind], types) ?? byType(props.default, types)\n return value === 'auto' ? undefined : value\n}\n\nfunction visibleChildren(fiber: Fiber, visit: (child: Fiber) => void): void {\n if (fiber.tag === FiberTag.Activity && fiber.pp?.mode === 'hidden') return\n if (fiber.tag === FiberTag.Suspense && fiber.ms?.f) {\n visit(fiber.ms.f)\n return\n }\n for (let child = fiber.child; child; child = child.sibling) visit(child)\n}\n\n// Ignore nested boundary content: its mutations belong to that boundary.\nfunction contents(node: Node, nested: Set<Node>, first = false): string {\n if (!first && nested.has(node)) return '|'\n if (node.nodeType === 3) return JSON.stringify(node.nodeValue)\n if (node.nodeType !== 1) return ''\n const element = node as Host\n let result = '<' + element.nodeName\n for (const attribute of element.attributes) {\n if (attribute.name !== 'style') result += ' ' + attribute.name + '=' + JSON.stringify(attribute.value)\n }\n for (let i = 0; i < element.style.length; i++) {\n const property = element.style[i]!\n if (property !== 'view-transition-name' && property !== 'view-transition-class') {\n result += ';' + property + ':' + element.style.getPropertyValue(property) + '!' + element.style.getPropertyPriority(property)\n }\n }\n if ('value' in element) result += '=' + (element as HTMLInputElement).value\n if ('checked' in element) result += ':' + (element as HTMLInputElement).checked\n result += '>'\n for (let child = node.firstChild; child; child = child.nextSibling) result += contents(child, nested)\n return result + '</' + element.nodeName + '>'\n}\n\nfunction snapshot(roots: FiberRoot[], doc: Document, types: string[], connected = true): Snapshot {\n const boundaries = new Map<Fiber, Boundary>()\n const visible = new Set<Fiber>()\n const images: TransitionImages = new Map()\n const allHosts = new Set<Node>()\n const empty: Boundary[] = []\n const ancestors: Fiber[] = []\n function walk(fiber: Fiber, parent: Fiber | null, pending: Boundary[]): void {\n if (fiber.um) return\n if (fiber.type === REACT_VIEW_TRANSITION_TYPE) {\n const props: ViewTransitionProps = fiber.pp ?? {}\n const explicitName = byType(props.name, types)\n let name = explicitName\n if (name == null || name === 'auto') {\n name = names.get(fiber)\n if (!name) names.set(fiber, name = '_redact_t_' + (++nextName).toString(32))\n }\n const boundary: Boundary = {\n fiber, props, hosts: [], ancestors: ancestors.slice(), parent, name,\n explicit: explicitName != null && explicitName !== 'auto', rects: [], content: '', inViewport: false,\n }\n boundaries.set(fiber, boundary)\n pending = pending.concat(boundary)\n parent = fiber\n }\n if (fiber.tag === FiberTag.Host) {\n visible.add(fiber)\n const dom = fiber.dom as Host | null\n if (parent && fiber.type === 'img' && dom?.ownerDocument === doc) {\n images.set(dom as HTMLImageElement, fiber.pp)\n }\n if (pending.length && dom?.ownerDocument === doc && (!connected || dom.isConnected) && dom.style) {\n for (const boundary of pending) boundary.hosts.push(dom)\n allHosts.add(dom)\n }\n pending = empty\n ancestors.push(fiber)\n }\n visibleChildren(fiber, child => walk(child, parent, pending))\n if (fiber.tag === FiberTag.Host) ancestors.pop()\n }\n for (const root of roots) walk(root.r, null, empty)\n const view = doc.defaultView\n if (connected) for (const boundary of boundaries.values()) {\n boundary.rects = boundary.hosts.map(host => {\n const rect = host.getBoundingClientRect()\n return [rect.x, rect.y, rect.width, rect.height]\n })\n boundary.inViewport = boundary.rects.some(([x, y, width, height]) => width > 0 && height > 0 && x + width > 0 && y + height > 0 && x < (view?.innerWidth ?? Infinity) && y < (view?.innerHeight ?? Infinity))\n boundary.content = boundary.hosts.map(host => contents(host, allHosts, true)).join('')\n }\n return { boundaries, visible, images }\n}\n\nfunction pseudo(doc: Document, kind: string, name: string): ViewTransitionPseudoElement {\n const scope = doc.documentElement\n const selector = '::view-transition-' + kind + '(' + nativeName(name) + ')'\n return {\n animate(keyframes, options) {\n return scope.animate(keyframes, { ...(typeof options === 'number' ? { duration: options } : options), pseudoElement: selector })\n },\n getAnimations() {\n return scope.getAnimations({ subtree: true }).filter(animation => {\n const effect = animation.effect as KeyframeEffect | null\n return effect?.target === scope && effect.pseudoElement === selector\n })\n },\n getComputedStyle() { return doc.defaultView!.getComputedStyle(scope, selector) },\n }\n}\n\nfunction nativeName(name: string): string {\n return CSS.escape(name) === name ? name : CSS.escape('r-' + btoa(name).replace(/=/g, ''))\n}\n\nfunction instance(doc: Document, name: string): ViewTransitionInstance {\n return {\n name,\n group: pseudo(doc, 'group', name),\n imagePair: pseudo(doc, 'image-pair', name),\n old: pseudo(doc, 'old', name),\n new: pseudo(doc, 'new', name),\n }\n}\n\nfunction topLevel(boundary: Boundary, other: Snapshot, side: Snapshot): boolean {\n // An inserted/deleted host wrapper owns its subtree's enter/exit animation.\n if (boundary.ancestors.some(fiber => !other.visible.has(fiber))) return false\n for (let parent = boundary.parent; parent; parent = side.boundaries.get(parent)?.parent ?? null) {\n if (!other.boundaries.has(parent)) return false\n }\n return true\n}\n\nfunction changed(before: Boundary, after: Boundary): boolean {\n return before.content !== after.content || before.hosts.length !== after.hosts.length ||\n before.hosts.some((host, i) => host !== after.hosts[i] || before.rects[i]!.some((value, axis) => value !== after.rects[i]![axis]))\n}\n\nexport interface PreparedViewTransition {\n document: Document\n exclude(root: FiberRoot): void\n prepare(): Promise<void> | undefined\n waitForResources(fontsWereLoaded: boolean): Promise<void> | undefined\n beforeCommit(): boolean\n afterCommit(): void\n ready(): void\n restore(): void\n finish(): void\n cancel(): void\n}\n\nexport function prepareViewTransition(rootIterable: Iterable<FiberRoot>, types: string[]): PreparedViewTransition | null {\n const roots = Array.from(rootIterable)\n const container = roots[0]?.c\n const doc = container?.nodeType === 9 ? container as unknown as Document : container?.ownerDocument\n if (!doc?.documentElement) return null\n const before = snapshot(roots, doc, types)\n const saved = new Map<Host, string[]>()\n const suppressed = new Set<string>()\n const events: Event[] = []\n const cleanups: (() => void)[] = []\n const captures: Capture[] = []\n let done = false\n let after: Snapshot\n let resources: ReturnType<typeof transitionResources> | undefined\n\n function apply(host: Host, name: string, classes?: string): void {\n let previous = saved.get(host)\n if (!previous) saved.set(host, previous = [])\n for (let index = 0; index < 2; index++) {\n const property = styleProperties[index]!\n const offset = index * 3\n const current = host.style.getPropertyValue(property)\n // A committed style prop may replace either temporary value.\n if (current !== previous[offset + 2]) {\n previous[offset] = current\n previous[offset + 1] = host.style.getPropertyPriority(property)\n }\n const value = index ? classes === 'none' ? '' : classes ?? previous[offset]! : nativeName(name)\n host.style.setProperty(property, previous[offset + 2] = value, 'important')\n }\n }\n\n function applyHosts(hosts: Host[], name: string, props: ViewTransitionProps, kind: Kind): void {\n const classes = className(props, kind, types)\n hosts.forEach((host, index) => apply(host, index ? name + '_' + index : name, classes))\n }\n\n function suppress(hosts: Host[], name: string): void {\n hosts.forEach((_, index) => suppressed.add(index ? name + '_' + index : name))\n }\n\n function ownership(side: 'old' | 'next'): Map<Host, Capture> {\n const owners = new Map<Host, Capture>()\n for (const capture of captures) {\n if (side === 'next' && !capture.newEnabled) continue\n for (const host of capture[side]?.hosts ?? []) owners.set(host, capture)\n }\n return owners\n }\n\n function capture(kind: Kind, old?: Boundary, next?: Boundary, enabled = true): void {\n captures.push({ old, next, kind, name: (old ?? next)!.name, oldHosts: [], newEnabled: !!next && enabled })\n }\n\n function restore(): void {\n for (const [host, previous] of saved) {\n for (let index = 0; index < 2; index++) {\n const property = styleProperties[index]!\n const offset = index * 3\n if (host.style.getPropertyValue(property) === previous[offset + 2]) {\n host.style.setProperty(property, previous[offset]!, previous[offset + 1])\n }\n }\n }\n saved.clear()\n }\n\n function finish(): void {\n if (done) return\n done = true\n resources?.cancel()\n restore()\n let error: unknown\n let failed = false\n for (const cleanup of cleanups.splice(0)) {\n try { cleanup() } catch (caught) { if (!failed) { error = caught; failed = true } }\n }\n if (failed) throw error\n }\n\n return {\n document: doc,\n exclude(root) {\n const index = roots.indexOf(root)\n if (index >= 0) roots.splice(index, 1)\n for (const [fiber] of before.boundaries) if (fiber.root === root) before.boundaries.delete(fiber)\n },\n prepare() {\n after = snapshot(roots, doc, types, false)\n resources = transitionResources(doc, before.images, after.images)\n return resources.before()\n },\n waitForResources(fontsWereLoaded) { if (!done) return resources?.after(fontsWereLoaded) },\n beforeCommit() {\n if (done) return false\n const entering = new Map<string, Boundary>()\n const paired = new Set<Fiber>()\n for (const boundary of after.boundaries.values()) {\n if (!before.boundaries.has(boundary.fiber) && boundary.explicit) entering.set(boundary.name, boundary)\n }\n for (const old of before.boundaries.values()) {\n const current = after.boundaries.get(old.fiber)\n if (current) {\n if (className(current.props, 'update', types) !== 'none') capture('update', old, current)\n } else {\n const shared = old.explicit && old.inViewport ? entering.get(old.name) : undefined\n if (shared) {\n entering.delete(old.name)\n if (className(old.props, 'share', types) !== 'none') {\n paired.add(shared.fiber)\n capture('share', old, shared, className(shared.props, 'share', types) !== 'none')\n }\n } else if (topLevel(old, after, before) && old.inViewport && className(old.props, 'exit', types) !== 'none') {\n capture('exit', old)\n }\n }\n }\n for (const boundary of after.boundaries.values()) {\n if (before.boundaries.has(boundary.fiber) || paired.has(boundary.fiber)) continue\n if (topLevel(boundary, before, after) && className(boundary.props, 'enter', types) !== 'none') {\n capture('enter', undefined, boundary)\n }\n }\n // A directly nested boundary owns updates; an outer presence boundary\n // owns entering/exiting hosts. Shared descendants take precedence.\n captures.sort((a, b) => (a.kind === 'share' ? 2 : a.kind === 'update' ? 0 : 1) - (b.kind === 'share' ? 2 : b.kind === 'update' ? 0 : 1))\n if (!captures.some(capture => capture.old?.hosts.length || (capture.newEnabled && capture.next?.hosts.length))) return false\n const owners = ownership('old')\n apply(doc.documentElement, 'none')\n for (const boundary of before.boundaries.values()) for (const host of boundary.hosts) apply(host, 'none')\n for (const capture of captures) {\n capture.oldHosts = capture.old?.hosts.filter(host => owners.get(host) === capture) ?? []\n const props = capture.kind === 'update' ? capture.next!.props : capture.old?.props\n if (props) applyHosts(capture.oldHosts, capture.name, props, capture.kind)\n }\n return true\n },\n afterCommit() {\n if (done) return\n const after = snapshot(roots, doc, types)\n for (const capture of captures) {\n if (capture.next) capture.next = after.boundaries.get(capture.next.fiber)\n if (capture.kind !== 'update' && !capture.next?.inViewport) capture.newEnabled = false\n }\n const owners = ownership('next')\n for (const boundary of after.boundaries.values()) for (const host of boundary.hosts) apply(host, 'none')\n for (const capture of captures) {\n const newHosts = capture.next?.hosts.filter(host => owners.get(host) === capture) ?? []\n if (capture.next) applyHosts(newHosts, capture.name, capture.next.props, capture.kind)\n if (!capture.oldHosts.length && !newHosts.length) continue\n if (capture.kind === 'update') {\n if (capture.next && capture.old && changed(capture.old, capture.next)) events.push({ boundary: capture.next, name: capture.name, kind: 'update' })\n else suppress(capture.oldHosts, capture.name)\n } else {\n const boundary = capture.kind === 'enter' ? capture.next : capture.old\n if (boundary) events.push({ boundary, name: capture.name, kind: capture.kind })\n }\n }\n },\n ready() {\n if (done) return\n // These captures were needed before the synchronous commit could tell\n // which boundaries changed. Cancel their native animations, not the DOM.\n const nativeSuppressed = new Set([...suppressed].map(nativeName))\n for (const animation of doc.documentElement.getAnimations({ subtree: true })) {\n const effect = animation.effect as KeyframeEffect | null\n const selector = effect?.pseudoElement\n if (effect?.target !== doc.documentElement || !selector) continue\n const start = selector.indexOf('(')\n if (start >= 0 && nativeSuppressed.has(selector.slice(start + 1, -1))) animation.cancel()\n }\n for (const name of suppressed) {\n const animation = pseudo(doc, 'group', name).animate({ opacity: 0 }, { duration: 0, fill: 'forwards' })\n cleanups.push(() => animation.cancel())\n }\n let error: unknown\n let failed = false\n for (const event of events) {\n if (done) break\n const callback = event.boundary.props[('on' + event.kind[0]!.toUpperCase() + event.kind.slice(1)) as 'onEnter']\n if (callback) {\n try {\n const cleanup = callback(instance(doc, event.name), types)\n if (typeof cleanup === 'function') {\n if (done) cleanup()\n else cleanups.push(cleanup)\n }\n } catch (caught) { if (!failed) { error = caught; failed = true } }\n }\n }\n if (failed) throw error\n },\n restore,\n finish,\n cancel: finish,\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["capture", "after"]
7
+ }
@@ -0,0 +1,40 @@
1
+ import { type Fiber, type FiberRoot } from "../core/index.js";
2
+ type Listener = EventListenerOrEventListenerObject;
3
+ type Observer = IntersectionObserver | ResizeObserver;
4
+ type OwnedNode = Node & {
5
+ reactFragments?: Set<FragmentInstance>;
6
+ };
7
+ export declare class FragmentInstance {
8
+ private fiber;
9
+ private nodes;
10
+ private listeners;
11
+ private observers;
12
+ private pending;
13
+ private children;
14
+ private ordered;
15
+ private parent;
16
+ private adjacent;
17
+ private portalContainer;
18
+ constructor(fiber: Fiber);
19
+ refresh(ordered: Fiber[]): void;
20
+ /** Renderer hook, called only for first-level host insertion/removal. */
21
+ update(child: OwnedNode, adding: boolean): void;
22
+ addEventListener(type: string, listener: Listener | null, options?: boolean | AddEventListenerOptions): void;
23
+ removeEventListener(type: string, listener: Listener | null, options?: boolean | EventListenerOptions): void;
24
+ dispatchEvent(event: Event): boolean;
25
+ private focusChild;
26
+ focus(options?: FocusOptions): void;
27
+ focusLast(options?: FocusOptions): void;
28
+ blur(): void;
29
+ observeUsing(observer: Observer): void;
30
+ unobserveUsing(observer: Observer): void;
31
+ getClientRects(): DOMRect[];
32
+ getRootNode(options?: GetRootNodeOptions): Node | FragmentInstance;
33
+ compareDocumentPosition(other: Node): number;
34
+ scrollIntoView(alignToTop?: boolean): void;
35
+ dispose(): void;
36
+ }
37
+ export declare function createFragmentInstance(fiber: Fiber): FragmentInstance;
38
+ export declare function updateFragmentHost(fiber: Fiber, adding: boolean): void;
39
+ export declare function refreshFragmentInstances(root: FiberRoot): void;
40
+ export {};