@tanstack/redact 0.0.14 → 0.0.15

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 (90) hide show
  1. package/dist/core/internal.d.ts +23 -39
  2. package/dist/core/internal.js +7 -23
  3. package/dist/core/internal.js.map +3 -3
  4. package/dist/dom/dispatcher.d.ts +3 -1
  5. package/dist/dom/dispatcher.js +104 -97
  6. package/dist/dom/dispatcher.js.map +2 -2
  7. package/dist/dom/dom.js +1 -1
  8. package/dist/dom/dom.js.map +2 -2
  9. package/dist/dom/event-replay.js +7 -29
  10. package/dist/dom/event-replay.js.map +2 -2
  11. package/dist/dom/features/class/full.js +16 -16
  12. package/dist/dom/features/class/full.js.map +2 -2
  13. package/dist/dom/features/class/stub.js +7 -7
  14. package/dist/dom/features/class/stub.js.map +2 -2
  15. package/dist/dom/features/context/full.js +7 -7
  16. package/dist/dom/features/context/full.js.map +2 -2
  17. package/dist/dom/features/context/stub.js +3 -3
  18. package/dist/dom/features/context/stub.js.map +2 -2
  19. package/dist/dom/features/forward-ref/full.js +11 -11
  20. package/dist/dom/features/forward-ref/full.js.map +2 -2
  21. package/dist/dom/features/hydration/full.d.ts +26 -14
  22. package/dist/dom/features/hydration/full.js +412 -92
  23. package/dist/dom/features/hydration/full.js.map +2 -2
  24. package/dist/dom/features/hydration/stub.d.ts +13 -12
  25. package/dist/dom/features/hydration/stub.js +23 -8
  26. package/dist/dom/features/hydration/stub.js.map +2 -2
  27. package/dist/dom/features/lazy/full.js +3 -43
  28. package/dist/dom/features/lazy/full.js.map +2 -2
  29. package/dist/dom/features/lazy/stub.js +1 -1
  30. package/dist/dom/features/lazy/stub.js.map +2 -2
  31. package/dist/dom/features/memo/full.js +3 -3
  32. package/dist/dom/features/memo/full.js.map +2 -2
  33. package/dist/dom/features/memo/stub.js +1 -1
  34. package/dist/dom/features/memo/stub.js.map +2 -2
  35. package/dist/dom/features/portal/full.js +2 -2
  36. package/dist/dom/features/portal/full.js.map +2 -2
  37. package/dist/dom/features/suspense/full.js +151 -109
  38. package/dist/dom/features/suspense/full.js.map +2 -2
  39. package/dist/dom/reconcile.d.ts +3 -1
  40. package/dist/dom/reconcile.js +141 -129
  41. package/dist/dom/reconcile.js.map +2 -2
  42. package/dist/dom/root-internal.d.ts +9 -0
  43. package/dist/dom/root-internal.js +31 -0
  44. package/dist/dom/root-internal.js.map +7 -0
  45. package/dist/dom/root.d.ts +1 -1
  46. package/dist/dom/root.js +4 -136
  47. package/dist/dom/root.js.map +2 -2
  48. package/dist/dom/test-utils.js +1 -1
  49. package/dist/dom/test-utils.js.map +2 -2
  50. package/dist/react/children.js +4 -1
  51. package/dist/react/children.js.map +2 -2
  52. package/dist/react/class.js +8 -2
  53. package/dist/react/class.js.map +2 -2
  54. package/dist/react/context.js +4 -1
  55. package/dist/react/context.js.map +2 -2
  56. package/dist/react/index.js +1 -1
  57. package/dist/react/index.js.map +2 -2
  58. package/dist/react/shared-internals.d.ts +4 -7
  59. package/dist/react/shared-internals.js +4 -7
  60. package/dist/react/shared-internals.js.map +2 -2
  61. package/dist/server/stream.d.ts +5 -1
  62. package/dist/server/stream.js.map +2 -2
  63. package/package.json +1 -1
  64. package/src/core/internal.ts +30 -50
  65. package/src/dom/dispatcher.ts +114 -105
  66. package/src/dom/dom.ts +1 -1
  67. package/src/dom/event-replay.ts +14 -30
  68. package/src/dom/features/class/full.ts +16 -16
  69. package/src/dom/features/class/stub.ts +7 -7
  70. package/src/dom/features/context/full.ts +7 -7
  71. package/src/dom/features/context/stub.ts +3 -3
  72. package/src/dom/features/forward-ref/full.ts +11 -11
  73. package/src/dom/features/hydration/full.ts +516 -104
  74. package/src/dom/features/hydration/stub.ts +28 -14
  75. package/src/dom/features/lazy/full.ts +3 -56
  76. package/src/dom/features/lazy/stub.ts +1 -1
  77. package/src/dom/features/memo/full.ts +3 -3
  78. package/src/dom/features/memo/stub.ts +1 -1
  79. package/src/dom/features/portal/full.ts +2 -2
  80. package/src/dom/features/suspense/full.ts +176 -129
  81. package/src/dom/reconcile.ts +164 -170
  82. package/src/dom/root-internal.ts +40 -0
  83. package/src/dom/root.ts +5 -165
  84. package/src/dom/test-utils.ts +1 -1
  85. package/src/react/children.ts +4 -1
  86. package/src/react/class.ts +8 -2
  87. package/src/react/context.ts +4 -1
  88. package/src/react/index.ts +1 -1
  89. package/src/react/shared-internals.ts +8 -14
  90. package/src/server/stream.ts +9 -4
@@ -14,62 +14,46 @@ export declare const enum FiberTag {
14
14
  Suspense = 11,
15
15
  Root = 12
16
16
  }
17
- export declare const enum FiberFlag {
18
- None = 0,
19
- Placement = 1,
20
- Update = 2,
21
- Deletion = 4,
22
- Ref = 8,
23
- Effect = 16,
24
- LayoutEffect = 32,
25
- ContentReset = 64,
26
- DidCapture = 128
27
- }
28
17
  export interface Hook {
29
- state: any;
30
- queue: any;
31
- deps: any;
32
- cleanup: any;
33
- next: Hook | null;
18
+ s: any;
19
+ q: any;
20
+ d: any;
21
+ c: any;
22
+ n: Hook | null;
34
23
  }
35
24
  export interface Effect {
36
- tag: 'effect' | 'layout' | 'insertion';
37
- create: () => any;
38
- destroy: (() => void) | void;
39
- deps: ReadonlyArray<unknown> | undefined;
25
+ t: 0 | 1;
26
+ c: () => any;
40
27
  }
41
28
  export interface Fiber {
42
29
  tag: FiberTag;
43
30
  type: any;
44
31
  key: string | null;
45
32
  ref: Ref<any> | null;
46
- pendingProps: any;
47
- memoizedProps: any;
48
- memoizedState: any;
49
- stateNode: any;
33
+ pp: any;
34
+ mp: any;
35
+ ms: any;
36
+ sn: any;
50
37
  dom: Node | null;
51
38
  parent: Fiber | null;
52
39
  child: Fiber | null;
53
40
  sibling: Fiber | null;
54
41
  hooks: Hook | null;
55
- effects: Effect[] | null;
56
- layoutEffects: Effect[] | null;
57
- cleanups: Array<() => void> | null;
58
- flags: FiberFlag;
59
- dirty: boolean;
60
- unmounted: boolean;
42
+ cu: Array<() => void> | null;
43
+ dy: boolean;
44
+ um: boolean;
61
45
  root: FiberRoot | null;
62
46
  }
63
47
  export interface FiberRoot {
64
- container: Element | DocumentFragment;
65
- current: Fiber;
66
- pending: Set<Fiber>;
67
- scheduled: boolean;
68
- onRecoverableError?: ((err: unknown) => void) | undefined;
69
- onCaughtError?: ((err: unknown) => void) | undefined;
70
- onUncaughtError?: ((err: unknown) => void) | undefined;
71
- identifierPrefix: string;
72
- hydrating: boolean;
48
+ c: Element | DocumentFragment;
49
+ r: Fiber;
50
+ p: Set<Fiber>;
51
+ s: boolean;
52
+ re?: ((err: unknown) => void) | undefined;
53
+ ce?: ((err: unknown) => void) | undefined;
54
+ ue?: ((err: unknown) => void) | undefined;
55
+ i: string;
56
+ h: boolean;
73
57
  }
74
58
  export declare function createFiber(tag: FiberTag, type: any, key: string | null): Fiber;
75
59
  export type ChildNode = ReactElement | string | number | boolean | null | undefined | ChildNode[];
@@ -15,44 +15,28 @@ var FiberTag = /* @__PURE__ */ ((FiberTag2) => {
15
15
  FiberTag2[FiberTag2["Root"] = 12] = "Root";
16
16
  return FiberTag2;
17
17
  })(FiberTag || {});
18
- var FiberFlag = /* @__PURE__ */ ((FiberFlag2) => {
19
- FiberFlag2[FiberFlag2["None"] = 0] = "None";
20
- FiberFlag2[FiberFlag2["Placement"] = 1] = "Placement";
21
- FiberFlag2[FiberFlag2["Update"] = 2] = "Update";
22
- FiberFlag2[FiberFlag2["Deletion"] = 4] = "Deletion";
23
- FiberFlag2[FiberFlag2["Ref"] = 8] = "Ref";
24
- FiberFlag2[FiberFlag2["Effect"] = 16] = "Effect";
25
- FiberFlag2[FiberFlag2["LayoutEffect"] = 32] = "LayoutEffect";
26
- FiberFlag2[FiberFlag2["ContentReset"] = 64] = "ContentReset";
27
- FiberFlag2[FiberFlag2["DidCapture"] = 128] = "DidCapture";
28
- return FiberFlag2;
29
- })(FiberFlag || {});
30
18
  function createFiber(tag, type, key) {
31
19
  return {
32
20
  tag,
33
21
  type,
34
22
  key,
35
23
  ref: null,
36
- pendingProps: null,
37
- memoizedProps: null,
38
- memoizedState: null,
39
- stateNode: null,
24
+ pp: null,
25
+ mp: null,
26
+ ms: null,
27
+ sn: null,
40
28
  dom: null,
41
29
  parent: null,
42
30
  child: null,
43
31
  sibling: null,
44
32
  hooks: null,
45
- effects: null,
46
- layoutEffects: null,
47
- cleanups: null,
48
- flags: 0 /* None */,
49
- dirty: false,
50
- unmounted: false,
33
+ cu: null,
34
+ dy: false,
35
+ um: false,
51
36
  root: null
52
37
  };
53
38
  }
54
39
  export {
55
- FiberFlag,
56
40
  FiberTag,
57
41
  createFiber
58
42
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/core/internal.ts"],
4
- "sourcesContent": ["import type { ReactElement, ReactNode, Ref } from './types'\n\nexport const enum FiberTag {\n Host = 0,\n Text = 1,\n Function = 2,\n Class = 3,\n Fragment = 4,\n Portal = 5,\n Provider = 6,\n Consumer = 7,\n ForwardRef = 8,\n Memo = 9,\n Lazy = 10,\n Suspense = 11,\n Root = 12,\n}\n\nexport const enum FiberFlag {\n None = 0,\n Placement = 1 << 0,\n Update = 1 << 1,\n Deletion = 1 << 2,\n Ref = 1 << 3,\n Effect = 1 << 4,\n LayoutEffect = 1 << 5,\n ContentReset = 1 << 6,\n DidCapture = 1 << 7,\n}\n\nexport interface Hook {\n state: any\n queue: any\n deps: any\n cleanup: any\n next: Hook | null\n}\n\nexport interface Effect {\n tag: 'effect' | 'layout' | 'insertion'\n create: () => any\n destroy: (() => void) | void\n deps: ReadonlyArray<unknown> | undefined\n}\n\nexport interface Fiber {\n tag: FiberTag\n type: any\n key: string | null\n ref: Ref<any> | null\n pendingProps: any\n memoizedProps: any\n memoizedState: any\n stateNode: any\n dom: Node | null\n parent: Fiber | null\n child: Fiber | null\n sibling: Fiber | null\n hooks: Hook | null\n effects: Effect[] | null\n layoutEffects: Effect[] | null\n cleanups: Array<() => void> | null\n flags: FiberFlag\n dirty: boolean\n unmounted: boolean\n root: FiberRoot | null\n}\n\nexport interface FiberRoot {\n container: Element | DocumentFragment\n current: Fiber\n pending: Set<Fiber>\n scheduled: boolean\n onRecoverableError?: ((err: unknown) => void) | undefined\n onCaughtError?: ((err: unknown) => void) | undefined\n onUncaughtError?: ((err: unknown) => void) | undefined\n identifierPrefix: string\n hydrating: boolean\n}\n\nexport function createFiber(tag: FiberTag, type: any, key: string | null): Fiber {\n return {\n tag,\n type,\n key,\n ref: null,\n pendingProps: null,\n memoizedProps: null,\n memoizedState: null,\n stateNode: null,\n dom: null,\n parent: null,\n child: null,\n sibling: null,\n hooks: null,\n effects: null,\n layoutEffects: null,\n cleanups: null,\n flags: FiberFlag.None,\n dirty: false,\n unmounted: false,\n root: null,\n }\n}\n\nexport type ChildNode = ReactElement | string | number | boolean | null | undefined | ChildNode[]\nexport type { ReactElement, ReactNode }\n"],
5
- "mappings": ";AAEO,IAAW,WAAX,kBAAWA,cAAX;AACL,EAAAA,oBAAA,UAAO,KAAP;AACA,EAAAA,oBAAA,UAAO,KAAP;AACA,EAAAA,oBAAA,cAAW,KAAX;AACA,EAAAA,oBAAA,WAAQ,KAAR;AACA,EAAAA,oBAAA,cAAW,KAAX;AACA,EAAAA,oBAAA,YAAS,KAAT;AACA,EAAAA,oBAAA,cAAW,KAAX;AACA,EAAAA,oBAAA,cAAW,KAAX;AACA,EAAAA,oBAAA,gBAAa,KAAb;AACA,EAAAA,oBAAA,UAAO,KAAP;AACA,EAAAA,oBAAA,UAAO,MAAP;AACA,EAAAA,oBAAA,cAAW,MAAX;AACA,EAAAA,oBAAA,UAAO,MAAP;AAbgB,SAAAA;AAAA,GAAA;AAgBX,IAAW,YAAX,kBAAWC,eAAX;AACL,EAAAA,sBAAA,UAAO,KAAP;AACA,EAAAA,sBAAA,eAAY,KAAZ;AACA,EAAAA,sBAAA,YAAS,KAAT;AACA,EAAAA,sBAAA,cAAW,KAAX;AACA,EAAAA,sBAAA,SAAM,KAAN;AACA,EAAAA,sBAAA,YAAS,MAAT;AACA,EAAAA,sBAAA,kBAAe,MAAf;AACA,EAAAA,sBAAA,kBAAe,MAAf;AACA,EAAAA,sBAAA,gBAAa,OAAb;AATgB,SAAAA;AAAA,GAAA;AA8DX,SAAS,YAAY,KAAe,MAAW,KAA2B;AAC/E,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,KAAK;AAAA,IACL,cAAc;AAAA,IACd,eAAe;AAAA,IACf,eAAe;AAAA,IACf,WAAW;AAAA,IACX,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,SAAS;AAAA,IACT,OAAO;AAAA,IACP,SAAS;AAAA,IACT,eAAe;AAAA,IACf,UAAU;AAAA,IACV,OAAO;AAAA,IACP,OAAO;AAAA,IACP,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AACF;",
6
- "names": ["FiberTag", "FiberFlag"]
4
+ "sourcesContent": ["import type { ReactElement, ReactNode, Ref } from './types'\n\nexport const enum FiberTag {\n Host = 0,\n Text = 1,\n Function = 2,\n Class = 3,\n Fragment = 4,\n Portal = 5,\n Provider = 6,\n Consumer = 7,\n ForwardRef = 8,\n Memo = 9,\n Lazy = 10,\n Suspense = 11,\n Root = 12,\n}\n\nexport interface Hook {\n s: any\n q: any\n d: any\n c: any\n n: Hook | null\n}\n\nexport interface Effect {\n t: 0 | 1\n c: () => any\n}\n\nexport interface Fiber {\n tag: FiberTag\n type: any\n key: string | null\n ref: Ref<any> | null\n pp: any\n mp: any\n ms: any\n sn: any\n dom: Node | null\n parent: Fiber | null\n child: Fiber | null\n sibling: Fiber | null\n hooks: Hook | null\n cu: Array<() => void> | null\n dy: boolean\n um: boolean\n root: FiberRoot | null\n}\n\nexport interface FiberRoot {\n c: Element | DocumentFragment\n r: Fiber\n p: Set<Fiber>\n s: boolean\n re?: ((err: unknown) => void) | undefined\n ce?: ((err: unknown) => void) | undefined\n ue?: ((err: unknown) => void) | undefined\n i: string\n h: boolean\n}\n\nexport function createFiber(tag: FiberTag, type: any, key: string | null): Fiber {\n return {\n tag,\n type,\n key,\n ref: null,\n pp: null,\n mp: null,\n ms: null,\n sn: null,\n dom: null,\n parent: null,\n child: null,\n sibling: null,\n hooks: null,\n cu: null,\n dy: false,\n um: false,\n root: null,\n }\n}\n\nexport type ChildNode = ReactElement | string | number | boolean | null | undefined | ChildNode[]\nexport type { ReactElement, ReactNode }\n"],
5
+ "mappings": ";AAEO,IAAW,WAAX,kBAAWA,cAAX;AACL,EAAAA,oBAAA,UAAO,KAAP;AACA,EAAAA,oBAAA,UAAO,KAAP;AACA,EAAAA,oBAAA,cAAW,KAAX;AACA,EAAAA,oBAAA,WAAQ,KAAR;AACA,EAAAA,oBAAA,cAAW,KAAX;AACA,EAAAA,oBAAA,YAAS,KAAT;AACA,EAAAA,oBAAA,cAAW,KAAX;AACA,EAAAA,oBAAA,cAAW,KAAX;AACA,EAAAA,oBAAA,gBAAa,KAAb;AACA,EAAAA,oBAAA,UAAO,KAAP;AACA,EAAAA,oBAAA,UAAO,MAAP;AACA,EAAAA,oBAAA,cAAW,MAAX;AACA,EAAAA,oBAAA,UAAO,MAAP;AAbgB,SAAAA;AAAA,GAAA;AA6DX,SAAS,YAAY,KAAe,MAAW,KAA2B;AAC/E,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,KAAK;AAAA,IACL,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,SAAS;AAAA,IACT,OAAO;AAAA,IACP,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,MAAM;AAAA,EACR;AACF;",
6
+ "names": ["FiberTag"]
7
7
  }
@@ -1,5 +1,6 @@
1
+ type BasicStateAction<S> = S | ((p: S) => S);
1
2
  export declare function makeDispatcher(): {
2
- useState<S>(initial: S | (() => S)): any;
3
+ useState<S>(initial: S | (() => S)): [S, (a: BasicStateAction<S>) => void];
3
4
  useReducer<S, A>(reducer: (s: S, a: A) => S, initialArg: any, init?: (a: any) => S): [S, (a: A) => void];
4
5
  useEffect(create: () => any, deps?: ReadonlyArray<unknown>): void;
5
6
  useLayoutEffect(create: () => any, deps?: ReadonlyArray<unknown>): void;
@@ -18,3 +19,4 @@ export declare function makeDispatcher(): {
18
19
  useSyncExternalStore<T>(subscribe: (cb: () => void) => () => void, getSnapshot: () => T, getServerSnapshot?: () => T): T;
19
20
  use<T>(resource: any): T;
20
21
  };
22
+ export {};
@@ -2,32 +2,37 @@
2
2
  import { ReactSharedInternals, REACT_CONTEXT_TYPE } from "../react";
3
3
  import { scheduleUpdate, enqueueEffect, readContext } from "./reconcile";
4
4
  function getCurrentFiber() {
5
- const f = ReactSharedInternals.currentFiber;
6
- if (!f) throw new Error("Hook called outside a function component render.");
5
+ const f = ReactSharedInternals.F;
6
+ if (!f) {
7
+ if (true) {
8
+ throw new Error("Hook called outside a function component render.");
9
+ }
10
+ throw new Error();
11
+ }
7
12
  return f;
8
13
  }
9
14
  function nextHook() {
10
15
  const fiber = getCurrentFiber();
11
- const idx = ReactSharedInternals.hookIndex++;
12
- let prev = ReactSharedInternals.currentHook;
16
+ const idx = ReactSharedInternals.I++;
17
+ let prev = ReactSharedInternals.K;
13
18
  if (idx === 0) {
14
19
  if (fiber.hooks) {
15
- ReactSharedInternals.currentHook = fiber.hooks;
20
+ ReactSharedInternals.K = fiber.hooks;
16
21
  return fiber.hooks;
17
22
  }
18
- const h2 = { state: void 0, queue: void 0, deps: void 0, cleanup: void 0, next: null };
23
+ const h2 = { s: void 0, q: void 0, d: void 0, c: void 0, n: null };
19
24
  fiber.hooks = h2;
20
- ReactSharedInternals.currentHook = h2;
25
+ ReactSharedInternals.K = h2;
21
26
  return h2;
22
27
  }
23
- if (prev && prev.next) {
24
- ReactSharedInternals.currentHook = prev.next;
25
- return prev.next;
28
+ if (prev && prev.n) {
29
+ ReactSharedInternals.K = prev.n;
30
+ return prev.n;
26
31
  }
27
- const h = { state: void 0, queue: void 0, deps: void 0, cleanup: void 0, next: null };
28
- if (prev) prev.next = h;
32
+ const h = { s: void 0, q: void 0, d: void 0, c: void 0, n: null };
33
+ if (prev) prev.n = h;
29
34
  else fiber.hooks = h;
30
- ReactSharedInternals.currentHook = h;
35
+ ReactSharedInternals.K = h;
31
36
  return h;
32
37
  }
33
38
  function depsEqual(a, b) {
@@ -48,85 +53,81 @@ function makeDispatcherImpl() {
48
53
  useState(initial) {
49
54
  return this.useReducer(
50
55
  basicReducer,
51
- typeof initial === "function" ? initial() : initial
56
+ typeof initial == "function" ? initial() : initial
52
57
  );
53
58
  },
54
59
  useReducer(reducer, initialArg, init) {
55
60
  const hook = nextHook();
56
61
  const fiber = getCurrentFiber();
57
- if (hook.queue === void 0) {
58
- hook.state = init ? init(initialArg) : initialArg;
59
- const queue = { reducer };
62
+ if (hook.q === void 0) {
63
+ hook.s = init ? init(initialArg) : initialArg;
64
+ const queue = { r: reducer };
60
65
  const dispatch = (action) => {
61
- const currentState = hook.state;
62
- const next = queue.reducer(currentState, action);
66
+ const currentState = hook.s;
67
+ const next = queue.r(currentState, action);
63
68
  if (!Object.is(next, currentState)) {
64
- hook.state = next;
69
+ hook.s = next;
65
70
  scheduleUpdate(fiber);
66
71
  }
67
72
  };
68
- queue.dispatch = dispatch;
69
- hook.queue = queue;
73
+ queue.d = dispatch;
74
+ hook.q = queue;
70
75
  } else {
71
- hook.queue.reducer = reducer;
76
+ hook.q.r = reducer;
72
77
  }
73
- return [hook.state, hook.queue.dispatch];
78
+ return [hook.s, hook.q.d];
74
79
  },
75
80
  useEffect(create, deps) {
76
81
  const hook = nextHook();
77
82
  const fiber = getCurrentFiber();
78
- const prevDeps = hook.deps;
83
+ const prevDeps = hook.d;
79
84
  if (prevDeps !== void 0 && depsEqual(prevDeps, deps)) return;
80
- hook.deps = deps;
85
+ hook.d = deps;
81
86
  const effect = {
82
- tag: "effect",
83
- create: () => {
84
- if (hook.cleanup) {
87
+ t: 0,
88
+ c: () => {
89
+ if (hook.c) {
85
90
  try {
86
- hook.cleanup();
91
+ hook.c();
87
92
  } catch {
88
93
  }
89
- if (fiber.cleanups) {
90
- const i = fiber.cleanups.indexOf(hook.cleanup);
91
- if (i >= 0) fiber.cleanups.splice(i, 1);
94
+ if (fiber.cu) {
95
+ const i = fiber.cu.indexOf(hook.c);
96
+ if (i >= 0) fiber.cu.splice(i, 1);
92
97
  }
93
- hook.cleanup = null;
98
+ hook.c = null;
94
99
  }
95
100
  const c = create();
96
- hook.cleanup = typeof c === "function" ? c : null;
97
- return hook.cleanup;
98
- },
99
- destroy: void 0,
100
- deps
101
+ hook.c = typeof c == "function" ? c : null;
102
+ return hook.c;
103
+ }
101
104
  };
102
105
  enqueueEffect(fiber, effect);
103
106
  },
104
107
  useLayoutEffect(create, deps) {
105
108
  const hook = nextHook();
106
109
  const fiber = getCurrentFiber();
107
- const prevDeps = hook.deps;
110
+ const prevDeps = hook.d;
108
111
  if (prevDeps !== void 0 && depsEqual(prevDeps, deps)) return;
109
- hook.deps = deps;
112
+ hook.d = deps;
110
113
  const effect = {
111
- tag: "layout",
112
- create: () => {
113
- if (hook.cleanup) {
114
+ t: 1,
115
+ c: () => {
116
+ if (hook.c) {
114
117
  try {
115
- hook.cleanup();
118
+ hook.c();
116
119
  } catch {
117
120
  }
118
- if (fiber.cleanups) {
119
- const i = fiber.cleanups.indexOf(hook.cleanup);
120
- if (i >= 0) fiber.cleanups.splice(i, 1);
121
+ if (fiber.cu) {
122
+ const i = fiber.cu.indexOf(hook.c);
123
+ if (i >= 0) fiber.cu.splice(i, 1);
121
124
  }
122
- hook.cleanup = null;
125
+ hook.c = null;
123
126
  }
124
127
  const c = create();
125
- hook.cleanup = typeof c === "function" ? c : null;
126
- return hook.cleanup;
127
- },
128
- destroy: void 0,
129
- deps
128
+ hook.c = typeof c == "function" ? c : null;
129
+ return hook.c;
130
+ }
130
131
  };
131
132
  enqueueEffect(fiber, effect);
132
133
  },
@@ -135,17 +136,17 @@ function makeDispatcherImpl() {
135
136
  },
136
137
  useRef(initial) {
137
138
  const hook = nextHook();
138
- if (hook.state === void 0) hook.state = { current: initial };
139
- return hook.state;
139
+ if (hook.s === void 0) hook.s = { current: initial };
140
+ return hook.s;
140
141
  },
141
142
  useMemo(factory, deps) {
142
143
  const hook = nextHook();
143
- if (hook.deps !== void 0 && depsEqual(hook.deps, deps)) {
144
- return hook.state;
144
+ if (hook.d !== void 0 && depsEqual(hook.d, deps)) {
145
+ return hook.s;
145
146
  }
146
147
  const value = factory();
147
- hook.state = value;
148
- hook.deps = deps;
148
+ hook.s = value;
149
+ hook.d = deps;
149
150
  return value;
150
151
  },
151
152
  useCallback(fn, deps) {
@@ -157,11 +158,11 @@ function makeDispatcherImpl() {
157
158
  },
158
159
  useImperativeHandle(ref, factory, deps) {
159
160
  const hook = nextHook();
160
- if (hook.deps !== void 0 && depsEqual(hook.deps, deps)) return;
161
- hook.deps = deps;
161
+ if (hook.d !== void 0 && depsEqual(hook.d, deps)) return;
162
+ hook.d = deps;
162
163
  const value = factory();
163
164
  if (ref) {
164
- if (typeof ref === "function") ref(value);
165
+ if (typeof ref == "function") ref(value);
165
166
  else ref.current = value;
166
167
  }
167
168
  },
@@ -169,12 +170,12 @@ function makeDispatcherImpl() {
169
170
  },
170
171
  useId() {
171
172
  const hook = nextHook();
172
- if (hook.state === void 0) {
173
+ if (hook.s === void 0) {
173
174
  const fiber = getCurrentFiber();
174
175
  const root = findRootFromFiber(fiber);
175
- hook.state = (root?.identifierPrefix ?? ":r") + (idCounter++).toString(36);
176
+ hook.s = (root?.i ?? ":r") + (idCounter++).toString(36);
176
177
  }
177
- return hook.state;
178
+ return hook.s;
178
179
  },
179
180
  useTransition() {
180
181
  return [false, (fn) => fn()];
@@ -185,65 +186,63 @@ function makeDispatcherImpl() {
185
186
  useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {
186
187
  const fiber = getCurrentFiber();
187
188
  const hook = nextHook();
188
- const store = hook.queue ?? {
189
- getSnapshot,
190
- getServerSnapshot
189
+ const store = hook.q ?? {
190
+ g: getSnapshot,
191
+ s: getServerSnapshot
191
192
  };
192
- hook.queue = store;
193
- store.getSnapshot = getSnapshot;
194
- store.getServerSnapshot = getServerSnapshot;
193
+ hook.q = store;
194
+ store.g = getSnapshot;
195
+ store.s = getServerSnapshot;
195
196
  const root = fiber.root ?? findRootFromFiber(fiber);
196
- const isHydrating = Boolean(root?.hydrating);
197
+ const isHydrating = Boolean(root?.h);
197
198
  const value = isHydrating && getServerSnapshot ? getServerSnapshot() : getSnapshot();
198
- hook.state = value;
199
+ hook.s = value;
199
200
  const deps = [subscribe];
200
- if (hook.deps === void 0 || !depsEqual(hook.deps, deps)) {
201
- hook.deps = deps;
201
+ if (hook.d === void 0 || !depsEqual(hook.d, deps)) {
202
+ hook.d = deps;
202
203
  const effect = {
203
- tag: "layout",
204
- deps,
205
- destroy: void 0,
206
- create: () => {
207
- if (hook.cleanup) {
204
+ t: 1,
205
+ c: () => {
206
+ if (hook.c) {
208
207
  try {
209
- hook.cleanup();
208
+ hook.c();
210
209
  } catch {
211
210
  }
212
- if (fiber.cleanups) {
213
- const i = fiber.cleanups.indexOf(hook.cleanup);
214
- if (i >= 0) fiber.cleanups.splice(i, 1);
211
+ if (fiber.cu) {
212
+ const i = fiber.cu.indexOf(hook.c);
213
+ if (i >= 0) fiber.cu.splice(i, 1);
215
214
  }
216
- hook.cleanup = null;
215
+ hook.c = null;
217
216
  }
218
217
  let unsubscribed = false;
219
218
  const cleanup = () => {
220
219
  unsubscribed = true;
221
- if (typeof unsubscribe === "function") {
220
+ if (typeof unsubscribe == "function") {
222
221
  unsubscribe();
223
222
  }
224
223
  };
225
224
  const forceUpdate = () => {
226
- if (unsubscribed || fiber.unmounted) {
225
+ if (unsubscribed || fiber.um) {
227
226
  return;
228
227
  }
229
228
  let next;
230
229
  try {
231
- next = store.getSnapshot();
230
+ next = store.g();
232
231
  } catch {
233
232
  scheduleUpdate(fiber);
234
233
  return;
235
234
  }
236
- if (!Object.is(hook.state, next)) {
237
- hook.state = next;
235
+ if (!Object.is(hook.s, next)) {
236
+ hook.s = next;
238
237
  scheduleUpdate(fiber);
239
238
  }
240
239
  };
241
240
  const unsubscribe = subscribe(forceUpdate);
242
- if (isHydrating && store.getServerSnapshot) {
241
+ if (isHydrating && store.s) {
243
242
  queueMicrotask(() => queueMicrotask(forceUpdate));
244
243
  }
245
244
  forceUpdate();
246
- hook.cleanup = cleanup;
245
+ hook.c = cleanup;
247
246
  return cleanup;
248
247
  }
249
248
  };
@@ -252,11 +251,16 @@ function makeDispatcherImpl() {
252
251
  return value;
253
252
  },
254
253
  use(resource) {
255
- if (resource == null) throw new Error("use() received null or undefined");
254
+ if (resource == null) {
255
+ if (true) {
256
+ throw new Error("use() received null or undefined");
257
+ }
258
+ throw new Error();
259
+ }
256
260
  if (resource.$$typeof === REACT_CONTEXT_TYPE) {
257
261
  return readContext(getCurrentFiber(), resource);
258
262
  }
259
- if (typeof resource.then === "function") {
263
+ if (typeof resource.then == "function") {
260
264
  const thenable = resource;
261
265
  switch (thenable.status) {
262
266
  case "fulfilled":
@@ -285,12 +289,15 @@ function makeDispatcherImpl() {
285
289
  }
286
290
  }
287
291
  }
288
- throw new Error("use() expected a Promise or Context");
292
+ if (true) {
293
+ throw new Error("use() expected a Promise or Context");
294
+ }
295
+ throw new Error();
289
296
  }
290
297
  };
291
298
  }
292
299
  function basicReducer(state, action) {
293
- return typeof action === "function" ? action(state) : action;
300
+ return typeof action == "function" ? action(state) : action;
294
301
  }
295
302
  var idCounter = 0;
296
303
  function findRootFromFiber(fiber) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/dom/dispatcher.ts"],
4
- "sourcesContent": ["import type { Hook, Fiber, FiberRoot, Effect } from '../core'\nimport { ReactSharedInternals, REACT_CONTEXT_TYPE } from '../react'\nimport { scheduleUpdate, enqueueEffect, readContext } from './reconcile'\n\nfunction getCurrentFiber(): Fiber {\n const f = ReactSharedInternals.currentFiber\n if (!f) throw new Error('Hook called outside a function component render.')\n return f\n}\n\nfunction nextHook(): Hook {\n const fiber = getCurrentFiber()\n const idx = ReactSharedInternals.hookIndex++\n\n let prev = ReactSharedInternals.currentHook\n\n if (idx === 0) {\n if (fiber.hooks) {\n ReactSharedInternals.currentHook = fiber.hooks\n return fiber.hooks\n }\n const h: Hook = { state: undefined, queue: undefined, deps: undefined, cleanup: undefined, next: null }\n fiber.hooks = h\n ReactSharedInternals.currentHook = h\n return h\n }\n\n if (prev && prev.next) {\n ReactSharedInternals.currentHook = prev.next\n return prev.next\n }\n\n const h: Hook = { state: undefined, queue: undefined, deps: undefined, cleanup: undefined, next: null }\n if (prev) prev.next = h\n else fiber.hooks = h\n ReactSharedInternals.currentHook = h\n return h\n}\n\nfunction depsEqual(\n a: ReadonlyArray<unknown> | undefined,\n b: ReadonlyArray<unknown> | undefined,\n): boolean {\n if (a === b) return true\n if (!a || !b) return false\n if (a.length !== b.length) return false\n for (let i = 0; i < a.length; i++) {\n if (!Object.is(a[i], b[i])) return false\n }\n return true\n}\n\n// Singleton \u2014 every method reads render context via ReactSharedInternals,\n// and per-hook closures live on the hook itself, so nothing is render-local\n// to capture. Allocating a fresh wrapper + 17 method closures per function-\n// component render was pure GC pressure.\nconst DISPATCHER = makeDispatcherImpl()\n\nexport function makeDispatcher() {\n return DISPATCHER\n}\n\nfunction makeDispatcherImpl() {\n return {\n useState<S>(initial: S | (() => S)) {\n return this.useReducer<S, S | ((p: S) => S)>(\n basicReducer as any,\n typeof initial === 'function' ? (initial as () => S)() : initial,\n )\n },\n\n useReducer<S, A>(reducer: (s: S, a: A) => S, initialArg: any, init?: (a: any) => S) {\n const hook = nextHook()\n const fiber = getCurrentFiber()\n if (hook.queue === undefined) {\n hook.state = init ? init(initialArg) : initialArg\n const queue: any = { reducer }\n const dispatch = (action: A) => {\n const currentState = hook.state as S\n const next = queue.reducer(currentState, action)\n if (!Object.is(next, currentState)) {\n hook.state = next\n scheduleUpdate(fiber)\n }\n }\n queue.dispatch = dispatch\n hook.queue = queue\n } else {\n hook.queue.reducer = reducer\n }\n return [hook.state, hook.queue.dispatch] as [S, (a: A) => void]\n },\n\n useEffect(create: () => any, deps?: ReadonlyArray<unknown>) {\n const hook = nextHook()\n const fiber = getCurrentFiber()\n const prevDeps = hook.deps\n if (prevDeps !== undefined && depsEqual(prevDeps, deps)) return\n hook.deps = deps\n const effect: Effect = {\n tag: 'effect',\n create: () => {\n // Run the prior cleanup INSIDE the effect run, not during the\n // dispatch/render phase. If render A \u2192 B \u2192 C all happen back-to-\n // back before the passive microtask drains, dispatch-time cleanup\n // only fires once (between A\u2192B) and effects B + C both run fresh,\n // leaving two side-effects (e.g. two plot SVGs) in the DOM. Doing\n // it here, at effect-run time, means every new create first tears\n // down whatever cleanup is currently live on the hook.\n if (hook.cleanup) {\n try { hook.cleanup() } catch {}\n // The prior cleanup was also pushed onto fiber.cleanups; remove\n // it so unmount doesn't double-call it.\n if (fiber.cleanups) {\n const i = fiber.cleanups.indexOf(hook.cleanup)\n if (i >= 0) fiber.cleanups.splice(i, 1)\n }\n hook.cleanup = null\n }\n const c = create()\n hook.cleanup = typeof c === 'function' ? c : null\n return hook.cleanup\n },\n destroy: undefined,\n deps,\n }\n enqueueEffect(fiber, effect)\n },\n\n useLayoutEffect(create: () => any, deps?: ReadonlyArray<unknown>) {\n const hook = nextHook()\n const fiber = getCurrentFiber()\n const prevDeps = hook.deps\n if (prevDeps !== undefined && depsEqual(prevDeps, deps)) return\n hook.deps = deps\n const effect: Effect = {\n tag: 'layout',\n create: () => {\n // Mirror useEffect: tear down the prior cleanup at run time so\n // coalesced renders don't leak side-effects.\n if (hook.cleanup) {\n try { hook.cleanup() } catch {}\n if (fiber.cleanups) {\n const i = fiber.cleanups.indexOf(hook.cleanup)\n if (i >= 0) fiber.cleanups.splice(i, 1)\n }\n hook.cleanup = null\n }\n const c = create()\n hook.cleanup = typeof c === 'function' ? c : null\n return hook.cleanup\n },\n destroy: undefined,\n deps,\n }\n enqueueEffect(fiber, effect)\n },\n\n useInsertionEffect(create: () => any, deps?: ReadonlyArray<unknown>) {\n return this.useLayoutEffect(create, deps)\n },\n\n useRef<T>(initial: T) {\n const hook = nextHook()\n if (hook.state === undefined) hook.state = { current: initial }\n return hook.state as { current: T }\n },\n\n useMemo<T>(factory: () => T, deps?: ReadonlyArray<unknown>) {\n const hook = nextHook()\n if (hook.deps !== undefined && depsEqual(hook.deps, deps)) {\n return hook.state as T\n }\n const value = factory()\n hook.state = value\n hook.deps = deps\n return value\n },\n\n useCallback<T extends Function>(fn: T, deps?: ReadonlyArray<unknown>): T {\n return this.useMemo(() => fn, deps) as T\n },\n\n useContext<T>(ctx: any): T {\n const fiber = getCurrentFiber()\n return readContext(fiber, ctx)\n },\n\n useImperativeHandle<T>(ref: any, factory: () => T, deps?: ReadonlyArray<unknown>) {\n const hook = nextHook()\n if (hook.deps !== undefined && depsEqual(hook.deps, deps)) return\n hook.deps = deps\n const value = factory()\n if (ref) {\n if (typeof ref === 'function') ref(value)\n else ref.current = value\n }\n },\n\n useDebugValue<T>(_value: T, _formatter?: (v: T) => any): void {\n // noop\n },\n\n useId(): string {\n const hook = nextHook()\n if (hook.state === undefined) {\n const fiber = getCurrentFiber()\n const root = findRootFromFiber(fiber)\n hook.state = (root?.identifierPrefix ?? ':r') + (idCounter++).toString(36)\n }\n return hook.state as string\n },\n\n useTransition(): [boolean, (fn: () => void) => void] {\n return [false, (fn: () => void) => fn()]\n },\n\n useDeferredValue<T>(v: T): T {\n return v\n },\n\n useSyncExternalStore<T>(\n subscribe: (cb: () => void) => () => void,\n getSnapshot: () => T,\n getServerSnapshot?: () => T,\n ): T {\n const fiber = getCurrentFiber()\n const hook = nextHook()\n const store: {\n getSnapshot: () => T\n getServerSnapshot: (() => T) | undefined\n } = hook.queue ?? {\n getSnapshot,\n getServerSnapshot,\n }\n hook.queue = store\n store.getSnapshot = getSnapshot\n store.getServerSnapshot = getServerSnapshot\n\n // During hydration, use the server snapshot (if provided) so the tree\n // matches the SSR output. Components like TanStack Router's ClientOnly\n // rely on this: they render `false` on server, `true` on client \u2014 and\n // if we return `true` during hydration, client and server diverge and\n // the tree mounts fresh next to the SSR fallback DOM.\n const root = fiber.root ?? findRootFromFiber(fiber)\n const isHydrating = Boolean(root?.hydrating)\n const value =\n isHydrating && getServerSnapshot ? getServerSnapshot() : getSnapshot()\n hook.state = value\n\n const deps = [subscribe]\n if (hook.deps === undefined || !depsEqual(hook.deps, deps)) {\n hook.deps = deps\n const effect: Effect = {\n tag: 'layout',\n deps,\n destroy: undefined,\n create: () => {\n if (hook.cleanup) {\n try {\n hook.cleanup()\n } catch {\n // ignore cleanup failures\n }\n if (fiber.cleanups) {\n const i = fiber.cleanups.indexOf(hook.cleanup)\n if (i >= 0) fiber.cleanups.splice(i, 1)\n }\n hook.cleanup = null\n }\n\n let unsubscribed = false\n const cleanup = () => {\n unsubscribed = true\n if (typeof unsubscribe === 'function') {\n unsubscribe()\n }\n }\n const forceUpdate = () => {\n if (unsubscribed || fiber.unmounted) {\n return\n }\n\n let next: T\n try {\n next = store.getSnapshot()\n } catch {\n scheduleUpdate(fiber)\n return\n }\n\n if (!Object.is(hook.state, next)) {\n hook.state = next\n scheduleUpdate(fiber)\n }\n }\n const unsubscribe = subscribe(forceUpdate)\n\n // If we served the server snapshot, run a post-hydration check so\n // components like `useHydrated()` flip from false \u2192 true after the\n // initial render commits. Queued late so hydration finishes first.\n if (isHydrating && store.getServerSnapshot) {\n queueMicrotask(() => queueMicrotask(forceUpdate))\n }\n\n forceUpdate()\n hook.cleanup = cleanup\n return cleanup\n },\n }\n enqueueEffect(fiber, effect)\n }\n return value\n },\n\n use<T>(resource: any): T {\n if (resource == null) throw new Error('use() received null or undefined')\n if (resource.$$typeof === REACT_CONTEXT_TYPE) {\n return readContext(getCurrentFiber(), resource)\n }\n if (typeof resource.then === 'function') {\n const thenable = resource\n switch (thenable.status) {\n case 'fulfilled':\n return thenable.value\n case 'rejected':\n throw thenable.reason\n default: {\n if (thenable.status === undefined) {\n thenable.status = 'pending'\n thenable.then(\n (v: any) => {\n if (thenable.status === 'pending') {\n thenable.status = 'fulfilled'\n thenable.value = v\n }\n },\n (e: any) => {\n if (thenable.status === 'pending') {\n thenable.status = 'rejected'\n thenable.reason = e\n }\n },\n )\n }\n throw thenable\n }\n }\n }\n throw new Error('use() expected a Promise or Context')\n },\n }\n}\n\nfunction basicReducer<S>(state: S, action: S | ((p: S) => S)): S {\n return typeof action === 'function' ? (action as (p: S) => S)(state) : action\n}\n\nlet idCounter = 0\n\nfunction findRootFromFiber(fiber: Fiber): FiberRoot | null {\n let f: Fiber | null = fiber\n while (f) {\n if (f.root) return f.root\n f = f.parent\n }\n return null\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import type { Hook, Fiber, FiberRoot, Effect } from '../core'\nimport { ReactSharedInternals, REACT_CONTEXT_TYPE } from '../react'\nimport { scheduleUpdate, enqueueEffect, readContext } from './reconcile'\n\nfunction getCurrentFiber(): Fiber {\n const f = ReactSharedInternals.F\n if (!f) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error('Hook called outside a function component render.')\n }\n throw new Error()\n }\n return f\n}\n\nfunction nextHook(): Hook {\n const fiber = getCurrentFiber()\n const idx = ReactSharedInternals.I++\n\n let prev = ReactSharedInternals.K\n\n if (idx === 0) {\n if (fiber.hooks) {\n ReactSharedInternals.K = fiber.hooks\n return fiber.hooks\n }\n const h: Hook = { s: undefined, q: undefined, d: undefined, c: undefined, n: null }\n fiber.hooks = h\n ReactSharedInternals.K = h\n return h\n }\n\n if (prev && prev.n) {\n ReactSharedInternals.K = prev.n\n return prev.n\n }\n\n const h: Hook = { s: undefined, q: undefined, d: undefined, c: undefined, n: null }\n if (prev) prev.n = h\n else fiber.hooks = h\n ReactSharedInternals.K = h\n return h\n}\n\nfunction depsEqual(\n a: ReadonlyArray<unknown> | undefined,\n b: ReadonlyArray<unknown> | undefined,\n): boolean {\n if (a === b) return true\n if (!a || !b) return false\n if (a.length !== b.length) return false\n for (let i = 0; i < a.length; i++) {\n if (!Object.is(a[i], b[i])) return false\n }\n return true\n}\n\ntype BasicStateAction<S> = S | ((p: S) => S)\n\n// Singleton \u2014 every method reads render context via ReactSharedInternals,\n// and per-hook closures live on the hook itself, so nothing is render-local\n// to capture. Allocating a fresh wrapper + 17 method closures per function-\n// component render was pure GC pressure.\nconst DISPATCHER = makeDispatcherImpl()\n\nexport function makeDispatcher() {\n return DISPATCHER\n}\n\nfunction makeDispatcherImpl() {\n return {\n useState<S>(initial: S | (() => S)): [S, (a: BasicStateAction<S>) => void] {\n return this.useReducer(\n basicReducer as (state: S, action: BasicStateAction<S>) => S,\n typeof initial == 'function' ? (initial as () => S)() : initial,\n )\n },\n\n useReducer<S, A>(reducer: (s: S, a: A) => S, initialArg: any, init?: (a: any) => S) {\n const hook = nextHook()\n const fiber = getCurrentFiber()\n if (hook.q === undefined) {\n hook.s = init ? init(initialArg) : initialArg\n const queue: any = { r: reducer }\n const dispatch = (action: A) => {\n const currentState = hook.s as S\n const next = queue.r(currentState, action)\n if (!Object.is(next, currentState)) {\n hook.s = next\n scheduleUpdate(fiber)\n }\n }\n queue.d = dispatch\n hook.q = queue\n } else {\n hook.q.r = reducer\n }\n return [hook.s, hook.q.d] as [S, (a: A) => void]\n },\n\n useEffect(create: () => any, deps?: ReadonlyArray<unknown>) {\n const hook = nextHook()\n const fiber = getCurrentFiber()\n const prevDeps = hook.d\n if (prevDeps !== undefined && depsEqual(prevDeps, deps)) return\n hook.d = deps\n const effect: Effect = {\n t: 0,\n c: () => {\n // Run the prior cleanup INSIDE the effect run, not during the\n // dispatch/render phase. If render A \u2192 B \u2192 C all happen back-to-\n // back before the passive microtask drains, dispatch-time cleanup\n // only fires once (between A\u2192B) and fx B + C both run fresh,\n // leaving two side-fx (e.g. two plot SVGs) in the DOM. Doing\n // it here, at effect-run time, means every new create first tears\n // down whatever cleanup is currently live on the hook.\n if (hook.c) {\n try { hook.c() } catch {}\n // The prior cleanup was also pushed onto fiber.cu; remove\n // it so unmount doesn't double-call it.\n if (fiber.cu) {\n const i = fiber.cu.indexOf(hook.c)\n if (i >= 0) fiber.cu.splice(i, 1)\n }\n hook.c = null\n }\n const c = create()\n hook.c = typeof c == 'function' ? c : null\n return hook.c\n },\n }\n enqueueEffect(fiber, effect)\n },\n\n useLayoutEffect(create: () => any, deps?: ReadonlyArray<unknown>) {\n const hook = nextHook()\n const fiber = getCurrentFiber()\n const prevDeps = hook.d\n if (prevDeps !== undefined && depsEqual(prevDeps, deps)) return\n hook.d = deps\n const effect: Effect = {\n t: 1,\n c: () => {\n // Mirror useEffect: tear down the prior cleanup at run time so\n // coalesced renders don't leak side-fx.\n if (hook.c) {\n try { hook.c() } catch {}\n if (fiber.cu) {\n const i = fiber.cu.indexOf(hook.c)\n if (i >= 0) fiber.cu.splice(i, 1)\n }\n hook.c = null\n }\n const c = create()\n hook.c = typeof c == 'function' ? c : null\n return hook.c\n },\n }\n enqueueEffect(fiber, effect)\n },\n\n useInsertionEffect(create: () => any, deps?: ReadonlyArray<unknown>) {\n return this.useLayoutEffect(create, deps)\n },\n\n useRef<T>(initial: T) {\n const hook = nextHook()\n if (hook.s === undefined) hook.s = { current: initial }\n return hook.s as { current: T }\n },\n\n useMemo<T>(factory: () => T, deps?: ReadonlyArray<unknown>) {\n const hook = nextHook()\n if (hook.d !== undefined && depsEqual(hook.d, deps)) {\n return hook.s as T\n }\n const value = factory()\n hook.s = value\n hook.d = deps\n return value\n },\n\n useCallback<T extends Function>(fn: T, deps?: ReadonlyArray<unknown>): T {\n return this.useMemo(() => fn, deps) as T\n },\n\n useContext<T>(ctx: any): T {\n const fiber = getCurrentFiber()\n return readContext(fiber, ctx)\n },\n\n useImperativeHandle<T>(ref: any, factory: () => T, deps?: ReadonlyArray<unknown>) {\n const hook = nextHook()\n if (hook.d !== undefined && depsEqual(hook.d, deps)) return\n hook.d = deps\n const value = factory()\n if (ref) {\n if (typeof ref == 'function') ref(value)\n else ref.current = value\n }\n },\n\n useDebugValue<T>(_value: T, _formatter?: (v: T) => any): void {\n // noop\n },\n\n useId(): string {\n const hook = nextHook()\n if (hook.s === undefined) {\n const fiber = getCurrentFiber()\n const root = findRootFromFiber(fiber)\n hook.s = (root?.i ?? ':r') + (idCounter++).toString(36)\n }\n return hook.s as string\n },\n\n useTransition(): [boolean, (fn: () => void) => void] {\n return [false, (fn: () => void) => fn()]\n },\n\n useDeferredValue<T>(v: T): T {\n return v\n },\n\n useSyncExternalStore<T>(\n subscribe: (cb: () => void) => () => void,\n getSnapshot: () => T,\n getServerSnapshot?: () => T,\n ): T {\n const fiber = getCurrentFiber()\n const hook = nextHook()\n const store: {\n g: () => T\n s: (() => T) | undefined\n } = hook.q ?? {\n g: getSnapshot,\n s: getServerSnapshot,\n }\n hook.q = store\n store.g = getSnapshot\n store.s = getServerSnapshot\n\n // During hydration, use the server snapshot (if provided) so the tree\n // matches the SSR output. Components like TanStack Router's ClientOnly\n // rely on this: they render `false` on server, `true` on client \u2014 and\n // if we return `true` during hydration, client and server diverge and\n // the tree mounts fresh next to the SSR fallback DOM.\n const root = fiber.root ?? findRootFromFiber(fiber)\n const isHydrating = Boolean(root?.h)\n const value =\n isHydrating && getServerSnapshot ? getServerSnapshot() : getSnapshot()\n hook.s = value\n\n const deps = [subscribe]\n if (hook.d === undefined || !depsEqual(hook.d, deps)) {\n hook.d = deps\n const effect: Effect = {\n t: 1,\n c: () => {\n if (hook.c) {\n try {\n hook.c()\n } catch {\n // ignore cleanup failures\n }\n if (fiber.cu) {\n const i = fiber.cu.indexOf(hook.c)\n if (i >= 0) fiber.cu.splice(i, 1)\n }\n hook.c = null\n }\n\n let unsubscribed = false\n const cleanup = () => {\n unsubscribed = true\n if (typeof unsubscribe == 'function') {\n unsubscribe()\n }\n }\n const forceUpdate = () => {\n if (unsubscribed || fiber.um) {\n return\n }\n\n let next: T\n try {\n next = store.g()\n } catch {\n scheduleUpdate(fiber)\n return\n }\n\n if (!Object.is(hook.s, next)) {\n hook.s = next\n scheduleUpdate(fiber)\n }\n }\n const unsubscribe = subscribe(forceUpdate)\n\n // If we served the server snapshot, run a post-hydration check so\n // components like `useHydrated()` flip from false \u2192 true after the\n // initial render commits. Queued late so hydration finishes first.\n if (isHydrating && store.s) {\n queueMicrotask(() => queueMicrotask(forceUpdate))\n }\n\n forceUpdate()\n hook.c = cleanup\n return cleanup\n },\n }\n enqueueEffect(fiber, effect)\n }\n return value\n },\n\n use<T>(resource: any): T {\n if (resource == null) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error('use() received null or undefined')\n }\n throw new Error()\n }\n if (resource.$$typeof === REACT_CONTEXT_TYPE) {\n return readContext(getCurrentFiber(), resource)\n }\n if (typeof resource.then == 'function') {\n const thenable = resource\n switch (thenable.status) {\n case 'fulfilled':\n return thenable.value\n case 'rejected':\n throw thenable.reason\n default: {\n if (thenable.status === undefined) {\n thenable.status = 'pending'\n thenable.then(\n (v: any) => {\n if (thenable.status === 'pending') {\n thenable.status = 'fulfilled'\n thenable.value = v\n }\n },\n (e: any) => {\n if (thenable.status === 'pending') {\n thenable.status = 'rejected'\n thenable.reason = e\n }\n },\n )\n }\n throw thenable\n }\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n throw new Error('use() expected a Promise or Context')\n }\n throw new Error()\n },\n }\n}\n\nfunction basicReducer<S>(state: S, action: BasicStateAction<S>): S {\n return typeof action == 'function' ? (action as (p: S) => S)(state) : action\n}\n\nlet idCounter = 0\n\nfunction findRootFromFiber(fiber: Fiber): FiberRoot | null {\n let f: Fiber | null = fiber\n while (f) {\n if (f.root) return f.root\n f = f.parent\n }\n return null\n}\n"],
5
+ "mappings": ";AACA,SAAS,sBAAsB,0BAA0B;AACzD,SAAS,gBAAgB,eAAe,mBAAmB;AAE3D,SAAS,kBAAyB;AAChC,QAAM,IAAI,qBAAqB;AAC/B,MAAI,CAAC,GAAG;AACN,QAAI,MAAuC;AACzC,YAAM,IAAI,MAAM,kDAAkD;AAAA,IACpE;AACA,UAAM,IAAI,MAAM;AAAA,EAClB;AACA,SAAO;AACT;AAEA,SAAS,WAAiB;AACxB,QAAM,QAAQ,gBAAgB;AAC9B,QAAM,MAAM,qBAAqB;AAEjC,MAAI,OAAO,qBAAqB;AAEhC,MAAI,QAAQ,GAAG;AACb,QAAI,MAAM,OAAO;AACf,2BAAqB,IAAI,MAAM;AAC/B,aAAO,MAAM;AAAA,IACf;AACA,UAAMA,KAAU,EAAE,GAAG,QAAW,GAAG,QAAW,GAAG,QAAW,GAAG,QAAW,GAAG,KAAK;AAClF,UAAM,QAAQA;AACd,yBAAqB,IAAIA;AACzB,WAAOA;AAAA,EACT;AAEA,MAAI,QAAQ,KAAK,GAAG;AAClB,yBAAqB,IAAI,KAAK;AAC9B,WAAO,KAAK;AAAA,EACd;AAEA,QAAM,IAAU,EAAE,GAAG,QAAW,GAAG,QAAW,GAAG,QAAW,GAAG,QAAW,GAAG,KAAK;AAClF,MAAI,KAAM,MAAK,IAAI;AAAA,MACd,OAAM,QAAQ;AACnB,uBAAqB,IAAI;AACzB,SAAO;AACT;AAEA,SAAS,UACP,GACA,GACS;AACT,MAAI,MAAM,EAAG,QAAO;AACpB,MAAI,CAAC,KAAK,CAAC,EAAG,QAAO;AACrB,MAAI,EAAE,WAAW,EAAE,OAAQ,QAAO;AAClC,WAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AACjC,QAAI,CAAC,OAAO,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAG,QAAO;AAAA,EACrC;AACA,SAAO;AACT;AAQA,IAAM,aAAa,mBAAmB;AAE/B,SAAS,iBAAiB;AAC/B,SAAO;AACT;AAEA,SAAS,qBAAqB;AAC5B,SAAO;AAAA,IACL,SAAY,SAA+D;AACzE,aAAO,KAAK;AAAA,QACV;AAAA,QACA,OAAO,WAAW,aAAc,QAAoB,IAAI;AAAA,MAC1D;AAAA,IACF;AAAA,IAEA,WAAiB,SAA4B,YAAiB,MAAsB;AAClF,YAAM,OAAO,SAAS;AACtB,YAAM,QAAQ,gBAAgB;AAC9B,UAAI,KAAK,MAAM,QAAW;AACxB,aAAK,IAAI,OAAO,KAAK,UAAU,IAAI;AACnC,cAAM,QAAa,EAAE,GAAG,QAAQ;AAChC,cAAM,WAAW,CAAC,WAAc;AAC9B,gBAAM,eAAe,KAAK;AAC1B,gBAAM,OAAO,MAAM,EAAE,cAAc,MAAM;AACzC,cAAI,CAAC,OAAO,GAAG,MAAM,YAAY,GAAG;AAClC,iBAAK,IAAI;AACT,2BAAe,KAAK;AAAA,UACtB;AAAA,QACF;AACA,cAAM,IAAI;AACV,aAAK,IAAI;AAAA,MACX,OAAO;AACL,aAAK,EAAE,IAAI;AAAA,MACb;AACA,aAAO,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC;AAAA,IAC1B;AAAA,IAEA,UAAU,QAAmB,MAA+B;AAC1D,YAAM,OAAO,SAAS;AACtB,YAAM,QAAQ,gBAAgB;AAC9B,YAAM,WAAW,KAAK;AACtB,UAAI,aAAa,UAAa,UAAU,UAAU,IAAI,EAAG;AACzD,WAAK,IAAI;AACT,YAAM,SAAiB;AAAA,QACrB,GAAG;AAAA,QACH,GAAG,MAAM;AAQP,cAAI,KAAK,GAAG;AACV,gBAAI;AAAE,mBAAK,EAAE;AAAA,YAAE,QAAQ;AAAA,YAAC;AAGxB,gBAAI,MAAM,IAAI;AACZ,oBAAM,IAAI,MAAM,GAAG,QAAQ,KAAK,CAAC;AACjC,kBAAI,KAAK,EAAG,OAAM,GAAG,OAAO,GAAG,CAAC;AAAA,YAClC;AACA,iBAAK,IAAI;AAAA,UACX;AACA,gBAAM,IAAI,OAAO;AACjB,eAAK,IAAI,OAAO,KAAK,aAAa,IAAI;AACtC,iBAAO,KAAK;AAAA,QACd;AAAA,MACF;AACA,oBAAc,OAAO,MAAM;AAAA,IAC7B;AAAA,IAEA,gBAAgB,QAAmB,MAA+B;AAChE,YAAM,OAAO,SAAS;AACtB,YAAM,QAAQ,gBAAgB;AAC9B,YAAM,WAAW,KAAK;AACtB,UAAI,aAAa,UAAa,UAAU,UAAU,IAAI,EAAG;AACzD,WAAK,IAAI;AACT,YAAM,SAAiB;AAAA,QACrB,GAAG;AAAA,QACH,GAAG,MAAM;AAGP,cAAI,KAAK,GAAG;AACV,gBAAI;AAAE,mBAAK,EAAE;AAAA,YAAE,QAAQ;AAAA,YAAC;AACxB,gBAAI,MAAM,IAAI;AACZ,oBAAM,IAAI,MAAM,GAAG,QAAQ,KAAK,CAAC;AACjC,kBAAI,KAAK,EAAG,OAAM,GAAG,OAAO,GAAG,CAAC;AAAA,YAClC;AACA,iBAAK,IAAI;AAAA,UACX;AACA,gBAAM,IAAI,OAAO;AACjB,eAAK,IAAI,OAAO,KAAK,aAAa,IAAI;AACtC,iBAAO,KAAK;AAAA,QACd;AAAA,MACF;AACA,oBAAc,OAAO,MAAM;AAAA,IAC7B;AAAA,IAEA,mBAAmB,QAAmB,MAA+B;AACnE,aAAO,KAAK,gBAAgB,QAAQ,IAAI;AAAA,IAC1C;AAAA,IAEA,OAAU,SAAY;AACpB,YAAM,OAAO,SAAS;AACtB,UAAI,KAAK,MAAM,OAAW,MAAK,IAAI,EAAE,SAAS,QAAQ;AACtD,aAAO,KAAK;AAAA,IACd;AAAA,IAEA,QAAW,SAAkB,MAA+B;AAC1D,YAAM,OAAO,SAAS;AACtB,UAAI,KAAK,MAAM,UAAa,UAAU,KAAK,GAAG,IAAI,GAAG;AACnD,eAAO,KAAK;AAAA,MACd;AACA,YAAM,QAAQ,QAAQ;AACtB,WAAK,IAAI;AACT,WAAK,IAAI;AACT,aAAO;AAAA,IACT;AAAA,IAEA,YAAgC,IAAO,MAAkC;AACvE,aAAO,KAAK,QAAQ,MAAM,IAAI,IAAI;AAAA,IACpC;AAAA,IAEA,WAAc,KAAa;AACzB,YAAM,QAAQ,gBAAgB;AAC9B,aAAO,YAAY,OAAO,GAAG;AAAA,IAC/B;AAAA,IAEA,oBAAuB,KAAU,SAAkB,MAA+B;AAChF,YAAM,OAAO,SAAS;AACtB,UAAI,KAAK,MAAM,UAAa,UAAU,KAAK,GAAG,IAAI,EAAG;AACrD,WAAK,IAAI;AACT,YAAM,QAAQ,QAAQ;AACtB,UAAI,KAAK;AACP,YAAI,OAAO,OAAO,WAAY,KAAI,KAAK;AAAA,YAClC,KAAI,UAAU;AAAA,MACrB;AAAA,IACF;AAAA,IAEA,cAAiB,QAAW,YAAkC;AAAA,IAE9D;AAAA,IAEA,QAAgB;AACd,YAAM,OAAO,SAAS;AACtB,UAAI,KAAK,MAAM,QAAW;AACxB,cAAM,QAAQ,gBAAgB;AAC9B,cAAM,OAAO,kBAAkB,KAAK;AACpC,aAAK,KAAK,MAAM,KAAK,SAAS,aAAa,SAAS,EAAE;AAAA,MACxD;AACA,aAAO,KAAK;AAAA,IACd;AAAA,IAEA,gBAAqD;AACnD,aAAO,CAAC,OAAO,CAAC,OAAmB,GAAG,CAAC;AAAA,IACzC;AAAA,IAEA,iBAAoB,GAAS;AAC3B,aAAO;AAAA,IACT;AAAA,IAEA,qBACE,WACA,aACA,mBACG;AACH,YAAM,QAAQ,gBAAgB;AAC9B,YAAM,OAAO,SAAS;AACtB,YAAM,QAGF,KAAK,KAAK;AAAA,QACZ,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AACA,WAAK,IAAI;AACT,YAAM,IAAI;AACV,YAAM,IAAI;AAOV,YAAM,OAAO,MAAM,QAAQ,kBAAkB,KAAK;AAClD,YAAM,cAAc,QAAQ,MAAM,CAAC;AACnC,YAAM,QACJ,eAAe,oBAAoB,kBAAkB,IAAI,YAAY;AACvE,WAAK,IAAI;AAET,YAAM,OAAO,CAAC,SAAS;AACvB,UAAI,KAAK,MAAM,UAAa,CAAC,UAAU,KAAK,GAAG,IAAI,GAAG;AACpD,aAAK,IAAI;AACT,cAAM,SAAiB;AAAA,UACrB,GAAG;AAAA,UACH,GAAG,MAAM;AACP,gBAAI,KAAK,GAAG;AACV,kBAAI;AACF,qBAAK,EAAE;AAAA,cACT,QAAQ;AAAA,cAER;AACA,kBAAI,MAAM,IAAI;AACZ,sBAAM,IAAI,MAAM,GAAG,QAAQ,KAAK,CAAC;AACjC,oBAAI,KAAK,EAAG,OAAM,GAAG,OAAO,GAAG,CAAC;AAAA,cAClC;AACA,mBAAK,IAAI;AAAA,YACX;AAEA,gBAAI,eAAe;AACnB,kBAAM,UAAU,MAAM;AACpB,6BAAe;AACf,kBAAI,OAAO,eAAe,YAAY;AACpC,4BAAY;AAAA,cACd;AAAA,YACF;AACA,kBAAM,cAAc,MAAM;AACxB,kBAAI,gBAAgB,MAAM,IAAI;AAC5B;AAAA,cACF;AAEA,kBAAI;AACJ,kBAAI;AACF,uBAAO,MAAM,EAAE;AAAA,cACjB,QAAQ;AACN,+BAAe,KAAK;AACpB;AAAA,cACF;AAEA,kBAAI,CAAC,OAAO,GAAG,KAAK,GAAG,IAAI,GAAG;AAC5B,qBAAK,IAAI;AACT,+BAAe,KAAK;AAAA,cACtB;AAAA,YACF;AACA,kBAAM,cAAc,UAAU,WAAW;AAKzC,gBAAI,eAAe,MAAM,GAAG;AAC1B,6BAAe,MAAM,eAAe,WAAW,CAAC;AAAA,YAClD;AAEA,wBAAY;AACZ,iBAAK,IAAI;AACT,mBAAO;AAAA,UACT;AAAA,QACF;AACA,sBAAc,OAAO,MAAM;AAAA,MAC7B;AACA,aAAO;AAAA,IACT;AAAA,IAEA,IAAO,UAAkB;AACvB,UAAI,YAAY,MAAM;AACpB,YAAI,MAAuC;AACzC,gBAAM,IAAI,MAAM,kCAAkC;AAAA,QACpD;AACA,cAAM,IAAI,MAAM;AAAA,MAClB;AACA,UAAI,SAAS,aAAa,oBAAoB;AAC5C,eAAO,YAAY,gBAAgB,GAAG,QAAQ;AAAA,MAChD;AACA,UAAI,OAAO,SAAS,QAAQ,YAAY;AACtC,cAAM,WAAW;AACjB,gBAAQ,SAAS,QAAQ;AAAA,UACvB,KAAK;AACH,mBAAO,SAAS;AAAA,UAClB,KAAK;AACH,kBAAM,SAAS;AAAA,UACjB,SAAS;AACP,gBAAI,SAAS,WAAW,QAAW;AACjC,uBAAS,SAAS;AAClB,uBAAS;AAAA,gBACP,CAAC,MAAW;AACV,sBAAI,SAAS,WAAW,WAAW;AACjC,6BAAS,SAAS;AAClB,6BAAS,QAAQ;AAAA,kBACnB;AAAA,gBACF;AAAA,gBACA,CAAC,MAAW;AACV,sBAAI,SAAS,WAAW,WAAW;AACjC,6BAAS,SAAS;AAClB,6BAAS,SAAS;AAAA,kBACpB;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AACA,kBAAM;AAAA,UACR;AAAA,QACF;AAAA,MACF;AACA,UAAI,MAAuC;AACzC,cAAM,IAAI,MAAM,qCAAqC;AAAA,MACvD;AACA,YAAM,IAAI,MAAM;AAAA,IAClB;AAAA,EACF;AACF;AAEA,SAAS,aAAgB,OAAU,QAAgC;AACjE,SAAO,OAAO,UAAU,aAAc,OAAuB,KAAK,IAAI;AACxE;AAEA,IAAI,YAAY;AAEhB,SAAS,kBAAkB,OAAgC;AACzD,MAAI,IAAkB;AACtB,SAAO,GAAG;AACR,QAAI,EAAE,KAAM,QAAO,EAAE;AACrB,QAAI,EAAE;AAAA,EACR;AACA,SAAO;AACT;",
6
6
  "names": ["h"]
7
7
  }
package/dist/dom/dom.js CHANGED
@@ -202,7 +202,7 @@ var UNITLESS_STYLE = /* @__PURE__ */ new Set([
202
202
  "strokeWidth"
203
203
  ]);
204
204
  function setEventHandler(el, name, next, prev) {
205
- if (next != null && typeof next !== "function") next = null;
205
+ if (next != null && typeof next != "function") next = null;
206
206
  const capture = name.endsWith("Capture");
207
207
  const reactEventName = name.slice(2, capture ? -7 : void 0);
208
208
  const eventName = domEventFor(reactEventName, el);