@assistant-ui/tap 0.4.5 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/README.md +20 -17
  2. package/dist/core/ResourceFiber.d.ts +2 -2
  3. package/dist/core/ResourceFiber.d.ts.map +1 -1
  4. package/dist/core/ResourceFiber.js +11 -9
  5. package/dist/core/ResourceFiber.js.map +1 -1
  6. package/dist/core/createResourceRoot.d.ts +6 -0
  7. package/dist/core/createResourceRoot.d.ts.map +1 -0
  8. package/dist/core/createResourceRoot.js +32 -0
  9. package/dist/core/createResourceRoot.js.map +1 -0
  10. package/dist/core/helpers/callResourceFn.d.ts.map +1 -0
  11. package/dist/core/helpers/callResourceFn.js.map +1 -0
  12. package/dist/core/helpers/commit.d.ts +4 -0
  13. package/dist/core/helpers/commit.d.ts.map +1 -0
  14. package/dist/core/{commit.js → helpers/commit.js} +2 -2
  15. package/dist/core/helpers/commit.js.map +1 -0
  16. package/dist/core/helpers/env.d.ts.map +1 -0
  17. package/dist/core/helpers/env.js +3 -0
  18. package/dist/core/helpers/env.js.map +1 -0
  19. package/dist/core/{execution-context.d.ts → helpers/execution-context.d.ts} +1 -1
  20. package/dist/core/helpers/execution-context.d.ts.map +1 -0
  21. package/dist/core/helpers/execution-context.js.map +1 -0
  22. package/dist/core/helpers/root.d.ts +8 -0
  23. package/dist/core/helpers/root.d.ts.map +1 -0
  24. package/dist/core/helpers/root.js +52 -0
  25. package/dist/core/helpers/root.js.map +1 -0
  26. package/dist/core/resource.js +1 -1
  27. package/dist/core/resource.js.map +1 -1
  28. package/dist/core/scheduler.d.ts.map +1 -1
  29. package/dist/core/scheduler.js +12 -1
  30. package/dist/core/scheduler.js.map +1 -1
  31. package/dist/core/types.d.ts +25 -7
  32. package/dist/core/types.d.ts.map +1 -1
  33. package/dist/hooks/tap-effect-event.d.ts.map +1 -1
  34. package/dist/hooks/tap-effect-event.js +3 -2
  35. package/dist/hooks/tap-effect-event.js.map +1 -1
  36. package/dist/hooks/tap-memo.d.ts.map +1 -1
  37. package/dist/hooks/tap-memo.js +16 -17
  38. package/dist/hooks/tap-memo.js.map +1 -1
  39. package/dist/hooks/tap-reducer.d.ts +7 -0
  40. package/dist/hooks/tap-reducer.d.ts.map +1 -0
  41. package/dist/hooks/tap-reducer.js +87 -0
  42. package/dist/hooks/tap-reducer.js.map +1 -0
  43. package/dist/hooks/tap-resource.js +9 -9
  44. package/dist/hooks/tap-resource.js.map +1 -1
  45. package/dist/hooks/tap-resources.d.ts.map +1 -1
  46. package/dist/hooks/tap-resources.js +11 -11
  47. package/dist/hooks/tap-resources.js.map +1 -1
  48. package/dist/hooks/tap-state.d.ts.map +1 -1
  49. package/dist/hooks/tap-state.js +6 -63
  50. package/dist/hooks/tap-state.js.map +1 -1
  51. package/dist/hooks/utils/tapHook.d.ts +1 -1
  52. package/dist/hooks/utils/tapHook.d.ts.map +1 -1
  53. package/dist/hooks/utils/tapHook.js +2 -2
  54. package/dist/hooks/utils/tapHook.js.map +1 -1
  55. package/dist/index.d.ts +3 -3
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +3 -3
  58. package/dist/index.js.map +1 -1
  59. package/dist/react/use-resource.d.ts +1 -1
  60. package/dist/react/use-resource.d.ts.map +1 -1
  61. package/dist/react/use-resource.js +14 -8
  62. package/dist/react/use-resource.js.map +1 -1
  63. package/dist/{tapSubscribableResource.d.ts → tapResourceRoot.d.ts} +3 -3
  64. package/dist/tapResourceRoot.d.ts.map +1 -0
  65. package/dist/tapResourceRoot.js +80 -0
  66. package/dist/tapResourceRoot.js.map +1 -0
  67. package/package.json +1 -1
  68. package/src/__tests__/basic/resourceHandle.test.ts +17 -14
  69. package/src/__tests__/basic/tapReducer.basic.test.ts +200 -0
  70. package/src/__tests__/react/concurrent-mode.test.tsx +1 -4
  71. package/src/__tests__/strictmode/react-strictmode-behavior.test.tsx +215 -2
  72. package/src/__tests__/strictmode/react-strictmode-rerender-sources.test.tsx +77 -0
  73. package/src/__tests__/strictmode/strictmode.test.ts +82 -21
  74. package/src/__tests__/strictmode/tap-strictmode-rerender-sources.test.ts +67 -110
  75. package/src/__tests__/test-utils.ts +5 -1
  76. package/src/core/ResourceFiber.ts +22 -10
  77. package/src/core/createResourceRoot.ts +53 -0
  78. package/src/core/{callResourceFn.ts → helpers/callResourceFn.ts} +1 -1
  79. package/src/core/{commit.ts → helpers/commit.ts} +3 -3
  80. package/src/core/helpers/env.ts +3 -0
  81. package/src/core/{execution-context.ts → helpers/execution-context.ts} +1 -1
  82. package/src/core/helpers/root.ts +67 -0
  83. package/src/core/resource.ts +1 -1
  84. package/src/core/scheduler.ts +13 -1
  85. package/src/core/types.ts +27 -7
  86. package/src/hooks/tap-effect-event.ts +3 -2
  87. package/src/hooks/tap-memo.ts +24 -19
  88. package/src/hooks/tap-reducer.ts +148 -0
  89. package/src/hooks/tap-resource.ts +9 -9
  90. package/src/hooks/tap-resources.ts +23 -10
  91. package/src/hooks/tap-state.ts +11 -88
  92. package/src/hooks/utils/tapHook.ts +3 -3
  93. package/src/index.ts +3 -3
  94. package/src/react/use-resource.ts +24 -11
  95. package/src/tapResourceRoot.ts +131 -0
  96. package/dist/core/callResourceFn.d.ts.map +0 -1
  97. package/dist/core/callResourceFn.js.map +0 -1
  98. package/dist/core/commit.d.ts +0 -4
  99. package/dist/core/commit.d.ts.map +0 -1
  100. package/dist/core/commit.js.map +0 -1
  101. package/dist/core/createResource.d.ts +0 -15
  102. package/dist/core/createResource.d.ts.map +0 -1
  103. package/dist/core/createResource.js +0 -101
  104. package/dist/core/createResource.js.map +0 -1
  105. package/dist/core/env.d.ts.map +0 -1
  106. package/dist/core/env.js +0 -4
  107. package/dist/core/env.js.map +0 -1
  108. package/dist/core/execution-context.d.ts.map +0 -1
  109. package/dist/core/execution-context.js.map +0 -1
  110. package/dist/hooks/tap-inline-resource.d.ts +0 -3
  111. package/dist/hooks/tap-inline-resource.d.ts.map +0 -1
  112. package/dist/hooks/tap-inline-resource.js +0 -5
  113. package/dist/hooks/tap-inline-resource.js.map +0 -1
  114. package/dist/tapSubscribableResource.d.ts.map +0 -1
  115. package/dist/tapSubscribableResource.js +0 -60
  116. package/dist/tapSubscribableResource.js.map +0 -1
  117. package/src/core/createResource.ts +0 -155
  118. package/src/core/env.ts +0 -4
  119. package/src/hooks/tap-inline-resource.ts +0 -8
  120. package/src/tapSubscribableResource.ts +0 -101
  121. /package/dist/core/{callResourceFn.d.ts → helpers/callResourceFn.d.ts} +0 -0
  122. /package/dist/core/{callResourceFn.js → helpers/callResourceFn.js} +0 -0
  123. /package/dist/core/{env.d.ts → helpers/env.d.ts} +0 -0
  124. /package/dist/core/{execution-context.js → helpers/execution-context.js} +0 -0
@@ -0,0 +1,87 @@
1
+ import { isDevelopment } from "../core/helpers/env.js";
2
+ import { getCurrentResourceFiber } from "../core/helpers/execution-context.js";
3
+ import { markCellDirty } from "../core/helpers/root.js";
4
+ import { tapHook } from "./utils/tapHook.js";
5
+ const dispatchOnFiber = (fiber, callback) => {
6
+ if (fiber.renderContext) {
7
+ throw new Error("Resource updated during render");
8
+ }
9
+ if (fiber.isNeverMounted) {
10
+ throw new Error("Resource updated before mount");
11
+ }
12
+ fiber.root.dispatchUpdate(() => {
13
+ const result = callback();
14
+ if (result) {
15
+ result();
16
+ fiber.root.changelog.push(result);
17
+ return true;
18
+ }
19
+ return false;
20
+ });
21
+ };
22
+ function tapReducerImpl(reducer, getDerivedState, initialArg, initFn) {
23
+ const cell = tapHook("reducer", () => {
24
+ const fiber = getCurrentResourceFiber();
25
+ // First render: compute initial state
26
+ const initialState = initFn ? initFn(initialArg) : initialArg;
27
+ if (isDevelopment && fiber.devStrictMode && initFn) {
28
+ void initFn(initialArg);
29
+ }
30
+ return {
31
+ type: "reducer",
32
+ queue: new Set(),
33
+ dirty: false,
34
+ workInProgress: initialState,
35
+ current: initialState,
36
+ reducer,
37
+ dispatch: (action) => {
38
+ const entry = {
39
+ action,
40
+ hasEagerState: false,
41
+ eagerState: undefined,
42
+ };
43
+ dispatchOnFiber(fiber, () => {
44
+ if (fiber.root.dirtyCells.length === 0 && !entry.hasEagerState) {
45
+ entry.eagerState = reducer(cell.workInProgress, action);
46
+ entry.hasEagerState = true;
47
+ if (Object.is(cell.current, entry.eagerState))
48
+ return null;
49
+ }
50
+ return () => {
51
+ markCellDirty(fiber, cell);
52
+ cell.queue.add(entry);
53
+ };
54
+ });
55
+ },
56
+ };
57
+ });
58
+ const fiber = getCurrentResourceFiber();
59
+ const sameReducer = reducer === cell.reducer;
60
+ cell.reducer = reducer;
61
+ for (const item of cell.queue) {
62
+ if (!item.hasEagerState || !sameReducer) {
63
+ item.eagerState = reducer(cell.workInProgress, item.action);
64
+ item.hasEagerState = true;
65
+ }
66
+ if (isDevelopment && fiber.devStrictMode) {
67
+ void reducer(cell.workInProgress, item.action);
68
+ }
69
+ cell.workInProgress = item.eagerState;
70
+ }
71
+ cell.queue.clear();
72
+ if (getDerivedState) {
73
+ const derived = getDerivedState(cell.workInProgress);
74
+ if (!Object.is(derived, cell.workInProgress)) {
75
+ markCellDirty(fiber, cell);
76
+ cell.workInProgress = derived;
77
+ }
78
+ }
79
+ return [cell.workInProgress, cell.dispatch];
80
+ }
81
+ export function tapReducer(reducer, initialArg, init) {
82
+ return tapReducerImpl(reducer, undefined, initialArg, init);
83
+ }
84
+ export function tapReducerWithDerivedState(reducer, getDerivedState, initialArg, init) {
85
+ return tapReducerImpl(reducer, getDerivedState, initialArg, init);
86
+ }
87
+ //# sourceMappingURL=tap-reducer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tap-reducer.js","sourceRoot":"","sources":["../../src/hooks/tap-reducer.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,21 @@
1
1
  import { tapEffect } from "./tap-effect.js";
2
2
  import { createResourceFiber, unmountResourceFiber, renderResourceFiber, commitResourceFiber, } from "../core/ResourceFiber.js";
3
3
  import { tapMemo } from "./tap-memo.js";
4
- import { tapState } from "./tap-state.js";
5
- import { tapConst } from "./tap-const.js";
4
+ import { tapRef } from "./tap-ref.js";
5
+ import { getCurrentResourceFiber } from "../core/helpers/execution-context.js";
6
6
  export function tapResource(element, propsDeps) {
7
- const [version, setVersion] = tapState(0);
8
- const rerender = tapConst(() => () => setVersion((v) => v + 1), []);
7
+ const parentFiber = getCurrentResourceFiber();
8
+ const versionRef = tapRef(0);
9
9
  const fiber = tapMemo(() => {
10
10
  void element.key;
11
- return createResourceFiber(element.type, (callback) => {
12
- if (callback())
13
- rerender();
11
+ return createResourceFiber(element.type, parentFiber.root, () => {
12
+ versionRef.current++;
13
+ parentFiber.markDirty?.();
14
14
  });
15
- }, [element.type, element.key]);
15
+ }, [element.type, element.key, parentFiber]);
16
16
  const result = propsDeps
17
17
  ? // biome-ignore lint/correctness/useExhaustiveDependencies: user provided deps instead of prop identity
18
- tapMemo(() => renderResourceFiber(fiber, element.props), [fiber, ...propsDeps, version])
18
+ tapMemo(() => renderResourceFiber(fiber, element.props), [fiber, ...propsDeps, versionRef.current])
19
19
  : renderResourceFiber(fiber, element.props);
20
20
  tapEffect(() => () => unmountResourceFiber(fiber), [fiber]);
21
21
  tapEffect(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"tap-resource.js","sourceRoot":"","sources":["../../src/hooks/tap-resource.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,wBAAqB;AACzC,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,GACpB,iCAA8B;AAC/B,OAAO,EAAE,OAAO,EAAE,sBAAmB;AACrC,OAAO,EAAE,QAAQ,EAAE,uBAAoB;AACvC,OAAO,EAAE,QAAQ,EAAE,uBAAoB;AASvC,MAAM,UAAU,WAAW,CACzB,OAAU,EACV,SAA8B;IAE9B,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEpE,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE;QACzB,KAAK,OAAO,CAAC,GAAG,CAAC;QACjB,OAAO,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE;YACpD,IAAI,QAAQ,EAAE;gBAAE,QAAQ,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAEhC,MAAM,MAAM,GAAG,SAAS;QACtB,CAAC,CAAC,uGAAuG;YACvG,OAAO,CACL,GAAG,EAAE,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,EAC/C,CAAC,KAAK,EAAE,GAAG,SAAS,EAAE,OAAO,CAAC,CAC/B;QACH,CAAC,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAE9C,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5D,SAAS,CAAC,GAAG,EAAE;QACb,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAEpB,OAAO,MAAM,CAAC,MAAM,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"tap-resource.js","sourceRoot":"","sources":["../../src/hooks/tap-resource.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,wBAAqB;AACzC,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,GACpB,iCAA8B;AAC/B,OAAO,EAAE,OAAO,EAAE,sBAAmB;AACrC,OAAO,EAAE,MAAM,EAAE,qBAAkB;AACnC,OAAO,EAAE,uBAAuB,EAAE,6CAA0C;AAS5E,MAAM,UAAU,WAAW,CACzB,OAAU,EACV,SAA8B;IAE9B,MAAM,WAAW,GAAG,uBAAuB,EAAE,CAAC;IAC9C,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE;QACzB,KAAK,OAAO,CAAC,GAAG,CAAC;QACjB,OAAO,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE;YAC9D,UAAU,CAAC,OAAO,EAAE,CAAC;YACrB,WAAW,CAAC,SAAS,EAAE,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;IAE7C,MAAM,MAAM,GAAG,SAAS;QACtB,CAAC,CAAC,uGAAuG;YACvG,OAAO,CACL,GAAG,EAAE,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,EAC/C,CAAC,KAAK,EAAE,GAAG,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,CAC1C;QACH,CAAC,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAE9C,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5D,SAAS,CAAC,GAAG,EAAE;QACb,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAEpB,OAAO,MAAM,CAAC,MAAM,CAAC;AACvB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tap-resources.d.ts","sourceRoot":"","sources":["../../src/hooks/tap-resources.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EAEzB,eAAe,EAEhB,yBAAsB;AAqBvB,wBAAgB,YAAY,CAAC,CAAC,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,EAC9D,WAAW,EAAE,MAAM,SAAS,CAAC,EAAE,EAC/B,eAAe,CAAC,EAAE,SAAS,OAAO,EAAE,GACnC,yBAAyB,CAAC,CAAC,CAAC,EAAE,CAyGhC"}
1
+ {"version":3,"file":"tap-resources.d.ts","sourceRoot":"","sources":["../../src/hooks/tap-resources.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EAEzB,eAAe,EAEhB,yBAAsB;AAsBvB,wBAAgB,YAAY,CAAC,CAAC,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,EAC9D,WAAW,EAAE,MAAM,SAAS,CAAC,EAAE,EAC/B,eAAe,CAAC,EAAE,SAAS,OAAO,EAAE,GACnC,yBAAyB,CAAC,CAAC,CAAC,EAAE,CAqHhC"}
@@ -1,12 +1,18 @@
1
1
  import { tapEffect } from "./tap-effect.js";
2
2
  import { tapMemo } from "./tap-memo.js";
3
- import { tapState } from "./tap-state.js";
4
3
  import { tapCallback } from "./tap-callback.js";
5
4
  import { createResourceFiber, unmountResourceFiber, renderResourceFiber, commitResourceFiber, } from "../core/ResourceFiber.js";
6
5
  import { tapConst } from "./tap-const.js";
6
+ import { tapRef } from "./tap-ref.js";
7
+ import { getCurrentResourceFiber } from "../core/helpers/execution-context.js";
7
8
  export function tapResources(getElements, getElementsDeps) {
8
- const [version, setVersion] = tapState(0);
9
- const rerender = tapConst(() => () => setVersion((v) => v + 1), []);
9
+ const versionRef = tapRef(0);
10
+ const version = versionRef.current;
11
+ const parentFiber = tapConst(getCurrentResourceFiber, []);
12
+ const markDirty = tapConst(() => () => {
13
+ versionRef.current++;
14
+ parentFiber.markDirty?.();
15
+ }, []);
10
16
  const fibers = tapConst(() => new Map(), []);
11
17
  const getElementsMemo = getElementsDeps
12
18
  ? // biome-ignore lint/correctness/useExhaustiveDependencies: library code
@@ -31,10 +37,7 @@ export function tapResources(getElements, getElementsDeps) {
31
37
  seenKeys.add(elementKey);
32
38
  let state = fibers.get(elementKey);
33
39
  if (!state) {
34
- const fiber = createResourceFiber(element.type, (callback) => {
35
- if (callback())
36
- rerender();
37
- });
40
+ const fiber = createResourceFiber(element.type, parentFiber.root, markDirty);
38
41
  const result = renderResourceFiber(fiber, element.props);
39
42
  state = {
40
43
  fiber,
@@ -45,10 +48,7 @@ export function tapResources(getElements, getElementsDeps) {
45
48
  results.push(result.output);
46
49
  }
47
50
  else if (state.fiber.type !== element.type) {
48
- const fiber = createResourceFiber(element.type, (callback) => {
49
- if (callback())
50
- rerender();
51
- });
51
+ const fiber = createResourceFiber(element.type, parentFiber.root, markDirty);
52
52
  const result = renderResourceFiber(fiber, element.props);
53
53
  state.next = [fiber, result];
54
54
  results.push(result.output);
@@ -1 +1 @@
1
- {"version":3,"file":"tap-resources.js","sourceRoot":"","sources":["../../src/hooks/tap-resources.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tap-resources.js","sourceRoot":"","sources":["../../src/hooks/tap-resources.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,wBAAqB;AACzC,OAAO,EAAE,OAAO,EAAE,sBAAmB;AACrC,OAAO,EAAE,WAAW,EAAE,0BAAuB;AAC7C,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,GACpB,iCAA8B;AAC/B,OAAO,EAAE,QAAQ,EAAE,uBAAoB;AACvC,OAAO,EAAE,MAAM,EAAE,qBAAkB;AACnC,OAAO,EAAE,uBAAuB,EAAE,6CAA0C;AAU5E,MAAM,UAAU,YAAY,CAC1B,WAA+B,EAC/B,eAAoC;IAEpC,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;IAEnC,MAAM,WAAW,GAAG,QAAQ,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;IAC1D,MAAM,SAAS,GAAG,QAAQ,CACxB,GAAG,EAAE,CAAC,GAAG,EAAE;QACT,UAAU,CAAC,OAAO,EAAE,CAAC;QACrB,WAAW,CAAC,SAAS,EAAE,EAAE,CAAC;IAC5B,CAAC,EACD,EAAE,CACH,CAAC;IACF,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,EAA+B,EAAE,EAAE,CAAC,CAAC;IAE1E,MAAM,eAAe,GAAG,eAAe;QACrC,CAAC,CAAC,wEAAwE;YACxE,WAAW,CAAC,WAAW,EAAE,eAAe,CAAC;QAC3C,CAAC,CAAC,WAAW,CAAC;IAEhB,uBAAuB;IAEvB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;QACvB,KAAK,OAAO,CAAC;QAEb,MAAM,aAAa,GAAG,eAAe,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAC;QAC5C,MAAM,OAAO,GAAU,EAAE,CAAC;QAC1B,IAAI,QAAQ,GAAG,CAAC,CAAC;QAEjB,kCAAkC;QAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAE,CAAC;YAElC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;YAC/B,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CACb,yDAAyD,CAAC,EAAE,CAC7D,CAAC;YACJ,CAAC;YAED,IAAI,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,iBAAiB,UAAU,kBAAkB,CAAC,CAAC;YACjE,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAEzB,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACnC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,KAAK,GAAG,mBAAmB,CAC/B,OAAO,CAAC,IAAI,EACZ,WAAW,CAAC,IAAI,EAChB,SAAS,CACV,CAAC;gBACF,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;gBACzD,KAAK,GAAG;oBACN,KAAK;oBACL,IAAI,EAAE,MAAM;iBACb,CAAC;gBACF,QAAQ,EAAE,CAAC;gBACX,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;gBAC9B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC9B,CAAC;iBAAM,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;gBAC7C,MAAM,KAAK,GAAG,mBAAmB,CAC/B,OAAO,CAAC,IAAI,EACZ,WAAW,CAAC,IAAI,EAChB,SAAS,CACV,CAAC;gBACF,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;gBACzD,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBAC7B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,GAAG,mBAAmB,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC7D,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;QAED,8DAA8D;QAC9D,IAAI,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;YAC5C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;gBAChC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBACvB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,GAAG,QAAQ,CAAC;gBACnC,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC,EAAE,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;IAE/B,qBAAqB;IACrB,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,GAAG,EAAE;YACV,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;gBAChC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,KAAK,CAAC;gBACrC,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,GAAG,EAAE;QACb,GAAG,CAAC,CAAC,yEAAyE;QAE9E,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;YAC5C,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC5B,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;oBAC1B,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACpC,CAAC;gBAED,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACrB,CAAC;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrC,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAClC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC5B,mBAAmB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,CAAC;iBAAM,CAAC;gBACN,mBAAmB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;IACH,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAEV,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tap-state.d.ts","sourceRoot":"","sources":["../../src/hooks/tap-state.ts"],"names":[],"mappings":"AAIA,yBAAiB,QAAQ,CAAC;IACxB,KAAY,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;CACpD;AAsFD,wBAAgB,QAAQ,CAAC,CAAC,GAAG,SAAS,KAAK;IACzC,CAAC,GAAG,SAAS;IACb,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI;CAC5C,CAAC;AACF,wBAAgB,QAAQ,CAAC,CAAC,EACxB,OAAO,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GACrB,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"tap-state.d.ts","sourceRoot":"","sources":["../../src/hooks/tap-state.ts"],"names":[],"mappings":"AAEA,yBAAiB,QAAQ,CAAC;IACxB,KAAY,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;CACpD;AAaD,wBAAgB,QAAQ,CAAC,CAAC,GAAG,SAAS,KAAK;IACzC,CAAC,GAAG,SAAS;IACb,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI;CAC5C,CAAC;AACF,wBAAgB,QAAQ,CAAC,CAAC,EACxB,OAAO,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GACrB,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC"}
@@ -1,66 +1,9 @@
1
- import { isDevelopment } from "../core/env.js";
2
- import { getCurrentResourceFiber } from "../core/execution-context.js";
3
- const dispatchOnFiber = (fiber, callback) => {
4
- if (fiber.renderContext) {
5
- throw new Error("Resource updated during render");
6
- }
7
- if (fiber.isMounted) {
8
- // Only schedule rerender if currently mounted
9
- fiber.dispatchUpdate(callback);
10
- }
11
- else if (fiber.isNeverMounted) {
12
- throw new Error("Resource updated before mount");
13
- }
14
- // TODO mark dirty
15
- };
16
- function getStateCell(initialValue) {
17
- const fiber = getCurrentResourceFiber();
18
- const index = fiber.currentIndex++;
19
- // Check if we're trying to use more hooks than in previous renders
20
- if (!fiber.isFirstRender && index >= fiber.cells.length) {
21
- throw new Error("Rendered more hooks than during the previous render. " +
22
- "Hooks must be called in the exact same order in every render.");
23
- }
24
- const cell = fiber.cells[index];
25
- if (cell) {
26
- if (cell.type !== "state")
27
- throw new Error("Hook order changed between renders");
28
- return cell;
29
- }
30
- const value = typeof initialValue === "function"
31
- ? initialValue()
32
- : initialValue;
33
- if (isDevelopment &&
34
- fiber.devStrictMode &&
35
- typeof initialValue === "function") {
36
- void initialValue();
37
- }
38
- const newCell = {
39
- type: "state",
40
- value,
41
- set: (updater) => {
42
- dispatchOnFiber(fiber, () => {
43
- const currentValue = newCell.value;
44
- const nextValue = typeof updater === "function"
45
- ? updater(currentValue)
46
- : updater;
47
- if (isDevelopment &&
48
- fiber.devStrictMode &&
49
- typeof updater === "function") {
50
- void updater(currentValue);
51
- }
52
- if (Object.is(currentValue, nextValue))
53
- return false;
54
- newCell.value = nextValue;
55
- return true;
56
- });
57
- },
58
- };
59
- fiber.cells[index] = newCell;
60
- return newCell;
61
- }
1
+ import { tapReducer } from "./tap-reducer.js";
2
+ const stateReducer = (state, action) => typeof action === "function"
3
+ ? action(state)
4
+ : action;
5
+ const stateInit = (initial) => typeof initial === "function" ? initial() : initial;
62
6
  export function tapState(initial) {
63
- const cell = getStateCell(initial);
64
- return [cell.value, cell.set];
7
+ return tapReducer(stateReducer, initial, stateInit);
65
8
  }
66
9
  //# sourceMappingURL=tap-state.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tap-state.js","sourceRoot":"","sources":["../../src/hooks/tap-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,uBAAoB;AAC5C,OAAO,EAAE,uBAAuB,EAAE,qCAAkC;AAOpE,MAAM,eAAe,GAAG,CACtB,KAA8B,EAC9B,QAAuB,EACvB,EAAE;IACF,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACpB,8CAA8C;QAC9C,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;SAAM,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,kBAAkB;AACpB,CAAC,CAAC;AAEF,SAAS,YAAY,CACnB,YAA2B;IAE3B,MAAM,KAAK,GAAG,uBAAuB,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;IAEnC,mEAAmE;IACnE,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CACb,uDAAuD;YACrD,+DAA+D,CAClE,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,IAAI,EAAE,CAAC;QACT,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;YACvB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAExD,OAAO,IAAgC,CAAC;IAC1C,CAAC;IAED,MAAM,KAAK,GACT,OAAO,YAAY,KAAK,UAAU;QAChC,CAAC,CAAE,YAAwB,EAAE;QAC7B,CAAC,CAAC,YAAY,CAAC;IAEnB,IACE,aAAa;QACb,KAAK,CAAC,aAAa;QACnB,OAAO,YAAY,KAAK,UAAU,EAClC,CAAC;QACD,KAAM,YAAwB,EAAE,CAAC;IACnC,CAAC;IAED,MAAM,OAAO,GAA6B;QACxC,IAAI,EAAE,OAAO;QACb,KAAK;QACL,GAAG,EAAE,CAAC,OAAiC,EAAE,EAAE;YACzC,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE;gBAC1B,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC;gBACnC,MAAM,SAAS,GACb,OAAO,OAAO,KAAK,UAAU;oBAC3B,CAAC,CAAE,OAA0B,CAAC,YAAY,CAAC;oBAC3C,CAAC,CAAC,OAAO,CAAC;gBAEd,IACE,aAAa;oBACb,KAAK,CAAC,aAAa;oBACnB,OAAO,OAAO,KAAK,UAAU,EAC7B,CAAC;oBACD,KAAM,OAA0B,CAAC,YAAY,CAAC,CAAC;gBACjD,CAAC;gBAED,IAAI,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC;oBAAE,OAAO,KAAK,CAAC;gBAErD,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;gBAC1B,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;IAEF,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;IAC7B,OAAO,OAAO,CAAC;AACjB,CAAC;AASD,MAAM,UAAU,QAAQ,CACtB,OAAuB;IAEvB,MAAM,IAAI,GAAG,YAAY,CAAC,OAAwB,CAAC,CAAC;IAEpD,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"tap-state.js","sourceRoot":"","sources":["../../src/hooks/tap-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,yBAAsB;AAM3C,MAAM,YAAY,GAAG,CACnB,KAAoB,EACpB,MAAgC,EAC7B,EAAE,CACL,OAAO,MAAM,KAAK,UAAU;IAC1B,CAAC,CAAE,MAAqC,CAAC,KAAK,CAAC;IAC/C,CAAC,CAAC,MAAM,CAAC;AAEb,MAAM,SAAS,GAAG,CAAI,OAAsB,EAAK,EAAE,CACjD,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,CAAE,OAAmB,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;AASnE,MAAM,UAAU,QAAQ,CACtB,OAAuB;IAEvB,OAAO,UAAU,CAAC,YAAY,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AACtD,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { Cell } from "../../core/types.js";
2
- export declare const tapHook: <T extends "effect" | "memo">(type: T, init: () => Cell) => Cell & {
2
+ export declare const tapHook: <T extends Cell["type"]>(type: T, init: () => Cell) => Cell & {
3
3
  type: T;
4
4
  };
5
5
  export declare const registerRenderMountTask: (task: () => void) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"tapHook.d.ts","sourceRoot":"","sources":["../../../src/hooks/utils/tapHook.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,4BAAyB;AAExC,eAAO,MAAM,OAAO,GAAI,CAAC,SAAS,QAAQ,GAAG,MAAM,EACjD,MAAM,CAAC,EACP,MAAM,MAAM,IAAI,KACf,IAAI,GAAG;IAAE,IAAI,EAAE,CAAC,CAAA;CAuBlB,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,MAAM,MAAM,IAAI,SAGvD,CAAC"}
1
+ {"version":3,"file":"tapHook.d.ts","sourceRoot":"","sources":["../../../src/hooks/utils/tapHook.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,4BAAyB;AAExC,eAAO,MAAM,OAAO,GAAI,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,EAC5C,MAAM,CAAC,EACP,MAAM,MAAM,IAAI,KACf,IAAI,GAAG;IAAE,IAAI,EAAE,CAAC,CAAA;CAuBlB,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,MAAM,MAAM,IAAI,SAGvD,CAAC"}
@@ -1,4 +1,4 @@
1
- import { getCurrentResourceFiber } from "../../core/execution-context.js";
1
+ import { getCurrentResourceFiber } from "../../core/helpers/execution-context.js";
2
2
  export const tapHook = (type, init) => {
3
3
  const fiber = getCurrentResourceFiber();
4
4
  const index = fiber.currentIndex++;
@@ -19,6 +19,6 @@ export const tapHook = (type, init) => {
19
19
  };
20
20
  export const registerRenderMountTask = (task) => {
21
21
  const fiber = getCurrentResourceFiber();
22
- fiber.renderContext.commitTasks.push(task);
22
+ fiber.renderContext.effectTasks.push(task);
23
23
  };
24
24
  //# sourceMappingURL=tapHook.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tapHook.js","sourceRoot":"","sources":["../../../src/hooks/utils/tapHook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,wCAAqC;AAGvE,MAAM,CAAC,MAAM,OAAO,GAAG,CACrB,IAAO,EACP,IAAgB,EACI,EAAE;IACtB,MAAM,KAAK,GAAG,uBAAuB,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;IAEnC,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACxD,mEAAmE;QACnE,MAAM,IAAI,KAAK,CACb,uDAAuD;YACrD,+DAA+D,CAClE,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,IAAI,GAAG,IAAI,EAAE,CAAC;QACd,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,IAA0B,CAAC;AACpC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,IAAgB,EAAE,EAAE;IAC1D,MAAM,KAAK,GAAG,uBAAuB,EAAE,CAAC;IACxC,KAAK,CAAC,aAAc,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9C,CAAC,CAAC"}
1
+ {"version":3,"file":"tapHook.js","sourceRoot":"","sources":["../../../src/hooks/utils/tapHook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,gDAA6C;AAG/E,MAAM,CAAC,MAAM,OAAO,GAAG,CACrB,IAAO,EACP,IAAgB,EACI,EAAE;IACtB,MAAM,KAAK,GAAG,uBAAuB,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;IAEnC,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACxD,mEAAmE;QACnE,MAAM,IAAI,KAAK,CACb,uDAAuD;YACrD,+DAA+D,CAClE,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,IAAI,GAAG,IAAI,EAAE,CAAC;QACd,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,IAA0B,CAAC;AACpC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,IAAgB,EAAE,EAAE;IAC1D,MAAM,KAAK,GAAG,uBAAuB,EAAE,CAAC;IACxC,KAAK,CAAC,aAAc,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9C,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export { resource } from "./core/resource.js";
2
2
  export { withKey } from "./core/withKey.js";
3
3
  export { tapState } from "./hooks/tap-state.js";
4
+ export { tapReducer, tapReducerWithDerivedState } from "./hooks/tap-reducer.js";
4
5
  export { tapEffect } from "./hooks/tap-effect.js";
5
6
  export { tapRef } from "./hooks/tap-ref.js";
6
7
  export { tapConst } from "./hooks/tap-const.js";
@@ -8,10 +9,9 @@ export { tapMemo } from "./hooks/tap-memo.js";
8
9
  export { tapCallback } from "./hooks/tap-callback.js";
9
10
  export { tapEffectEvent } from "./hooks/tap-effect-event.js";
10
11
  export { tapResource } from "./hooks/tap-resource.js";
11
- export { tapInlineResource } from "./hooks/tap-inline-resource.js";
12
12
  export { tapResources } from "./hooks/tap-resources.js";
13
- export { tapSubscribableResource } from "./tapSubscribableResource.js";
14
- export { createResource } from "./core/createResource.js";
13
+ export { tapResourceRoot } from "./tapResourceRoot.js";
14
+ export { createResourceRoot } from "./core/createResourceRoot.js";
15
15
  export { flushResourcesSync } from "./core/scheduler.js";
16
16
  export { createResourceContext, tap, withContextProvider, } from "./core/context.js";
17
17
  export type { Resource, ContravariantResource, ResourceElement, } from "./core/types.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,2BAAwB;AAC3C,OAAO,EAAE,OAAO,EAAE,0BAAuB;AAGzC,OAAO,EAAE,QAAQ,EAAE,6BAA0B;AAC7C,OAAO,EAAE,SAAS,EAAE,8BAA2B;AAG/C,OAAO,EAAE,MAAM,EAAE,2BAAwB;AACzC,OAAO,EAAE,QAAQ,EAAE,6BAA0B;AAC7C,OAAO,EAAE,OAAO,EAAE,4BAAyB;AAC3C,OAAO,EAAE,WAAW,EAAE,gCAA6B;AACnD,OAAO,EAAE,cAAc,EAAE,oCAAiC;AAG1D,OAAO,EAAE,WAAW,EAAE,gCAA6B;AACnD,OAAO,EAAE,iBAAiB,EAAE,uCAAoC;AAChE,OAAO,EAAE,YAAY,EAAE,iCAA8B;AAGrD,OAAO,EAAE,uBAAuB,EAAE,qCAAkC;AAGpE,OAAO,EAAE,cAAc,EAAE,iCAA8B;AACvD,OAAO,EAAE,kBAAkB,EAAE,4BAAyB;AAGtD,OAAO,EACL,qBAAqB,EACrB,GAAG,EACH,mBAAmB,GACpB,0BAAuB;AAGxB,YAAY,EACV,QAAQ,EACR,qBAAqB,EACrB,eAAe,GAChB,wBAAqB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,2BAAwB;AAC3C,OAAO,EAAE,OAAO,EAAE,0BAAuB;AAGzC,OAAO,EAAE,QAAQ,EAAE,6BAA0B;AAC7C,OAAO,EAAE,UAAU,EAAE,0BAA0B,EAAE,+BAA4B;AAC7E,OAAO,EAAE,SAAS,EAAE,8BAA2B;AAG/C,OAAO,EAAE,MAAM,EAAE,2BAAwB;AACzC,OAAO,EAAE,QAAQ,EAAE,6BAA0B;AAC7C,OAAO,EAAE,OAAO,EAAE,4BAAyB;AAC3C,OAAO,EAAE,WAAW,EAAE,gCAA6B;AACnD,OAAO,EAAE,cAAc,EAAE,oCAAiC;AAG1D,OAAO,EAAE,WAAW,EAAE,gCAA6B;AACnD,OAAO,EAAE,YAAY,EAAE,iCAA8B;AAGrD,OAAO,EAAE,eAAe,EAAE,6BAA0B;AAGpD,OAAO,EAAE,kBAAkB,EAAE,qCAAkC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,4BAAyB;AAGtD,OAAO,EACL,qBAAqB,EACrB,GAAG,EACH,mBAAmB,GACpB,0BAAuB;AAGxB,YAAY,EACV,QAAQ,EACR,qBAAqB,EACrB,eAAe,GAChB,wBAAqB"}
package/dist/index.js CHANGED
@@ -2,6 +2,7 @@ export { resource } from "./core/resource.js";
2
2
  export { withKey } from "./core/withKey.js";
3
3
  // primitive hooks
4
4
  export { tapState } from "./hooks/tap-state.js";
5
+ export { tapReducer, tapReducerWithDerivedState } from "./hooks/tap-reducer.js";
5
6
  export { tapEffect } from "./hooks/tap-effect.js";
6
7
  // utility hooks
7
8
  export { tapRef } from "./hooks/tap-ref.js";
@@ -11,12 +12,11 @@ export { tapCallback } from "./hooks/tap-callback.js";
11
12
  export { tapEffectEvent } from "./hooks/tap-effect-event.js";
12
13
  // resources
13
14
  export { tapResource } from "./hooks/tap-resource.js";
14
- export { tapInlineResource } from "./hooks/tap-inline-resource.js";
15
15
  export { tapResources } from "./hooks/tap-resources.js";
16
16
  // subscribable
17
- export { tapSubscribableResource } from "./tapSubscribableResource.js";
17
+ export { tapResourceRoot } from "./tapResourceRoot.js";
18
18
  // imperative
19
- export { createResource } from "./core/createResource.js";
19
+ export { createResourceRoot } from "./core/createResourceRoot.js";
20
20
  export { flushResourcesSync } from "./core/scheduler.js";
21
21
  // context
22
22
  export { createResourceContext, tap, withContextProvider, } from "./core/context.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,2BAAwB;AAC3C,OAAO,EAAE,OAAO,EAAE,0BAAuB;AAEzC,kBAAkB;AAClB,OAAO,EAAE,QAAQ,EAAE,6BAA0B;AAC7C,OAAO,EAAE,SAAS,EAAE,8BAA2B;AAE/C,gBAAgB;AAChB,OAAO,EAAE,MAAM,EAAE,2BAAwB;AACzC,OAAO,EAAE,QAAQ,EAAE,6BAA0B;AAC7C,OAAO,EAAE,OAAO,EAAE,4BAAyB;AAC3C,OAAO,EAAE,WAAW,EAAE,gCAA6B;AACnD,OAAO,EAAE,cAAc,EAAE,oCAAiC;AAE1D,YAAY;AACZ,OAAO,EAAE,WAAW,EAAE,gCAA6B;AACnD,OAAO,EAAE,iBAAiB,EAAE,uCAAoC;AAChE,OAAO,EAAE,YAAY,EAAE,iCAA8B;AAErD,eAAe;AACf,OAAO,EAAE,uBAAuB,EAAE,qCAAkC;AAEpE,aAAa;AACb,OAAO,EAAE,cAAc,EAAE,iCAA8B;AACvD,OAAO,EAAE,kBAAkB,EAAE,4BAAyB;AAEtD,UAAU;AACV,OAAO,EACL,qBAAqB,EACrB,GAAG,EACH,mBAAmB,GACpB,0BAAuB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,2BAAwB;AAC3C,OAAO,EAAE,OAAO,EAAE,0BAAuB;AAEzC,kBAAkB;AAClB,OAAO,EAAE,QAAQ,EAAE,6BAA0B;AAC7C,OAAO,EAAE,UAAU,EAAE,0BAA0B,EAAE,+BAA4B;AAC7E,OAAO,EAAE,SAAS,EAAE,8BAA2B;AAE/C,gBAAgB;AAChB,OAAO,EAAE,MAAM,EAAE,2BAAwB;AACzC,OAAO,EAAE,QAAQ,EAAE,6BAA0B;AAC7C,OAAO,EAAE,OAAO,EAAE,4BAAyB;AAC3C,OAAO,EAAE,WAAW,EAAE,gCAA6B;AACnD,OAAO,EAAE,cAAc,EAAE,oCAAiC;AAE1D,YAAY;AACZ,OAAO,EAAE,WAAW,EAAE,gCAA6B;AACnD,OAAO,EAAE,YAAY,EAAE,iCAA8B;AAErD,eAAe;AACf,OAAO,EAAE,eAAe,EAAE,6BAA0B;AAEpD,aAAa;AACb,OAAO,EAAE,kBAAkB,EAAE,qCAAkC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,4BAAyB;AAEtD,UAAU;AACV,OAAO,EACL,qBAAqB,EACrB,GAAG,EACH,mBAAmB,GACpB,0BAAuB"}
@@ -1,3 +1,3 @@
1
- import type { ExtractResourceReturnType, ResourceElement } from "../core/types.js";
1
+ import { type ExtractResourceReturnType, type ResourceElement } from "../core/types.js";
2
2
  export declare function useResource<E extends ResourceElement<any, any>>(element: E): ExtractResourceReturnType<E>;
3
3
  //# sourceMappingURL=use-resource.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-resource.d.ts","sourceRoot":"","sources":["../../src/react/use-resource.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,eAAe,EAAE,yBAAsB;AAuBhF,wBAAgB,WAAW,CAAC,CAAC,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,EAC7D,OAAO,EAAE,CAAC,GACT,yBAAyB,CAAC,CAAC,CAAC,CAmB9B"}
1
+ {"version":3,"file":"use-resource.d.ts","sourceRoot":"","sources":["../../src/react/use-resource.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,yBAAyB,EAC9B,KAAK,eAAe,EACrB,yBAAsB;AAwBvB,wBAAgB,WAAW,CAAC,CAAC,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,EAC7D,OAAO,EAAE,CAAC,GACT,yBAAyB,CAAC,CAAC,CAAC,CA2B9B"}
@@ -1,6 +1,7 @@
1
1
  import { useLayoutEffect, useMemo, useReducer, useRef, useState } from "react";
2
2
  import { createResourceFiber, unmountResourceFiber, renderResourceFiber, commitResourceFiber, } from "../core/ResourceFiber.js";
3
- import { isDevelopment } from "../core/env.js";
3
+ import { isDevelopment } from "../core/helpers/env.js";
4
+ import { commitRoot, createResourceFiberRoot, setRootVersion, } from "../core/helpers/root.js";
4
5
  const useDevStrictMode = () => {
5
6
  if (!isDevelopment)
6
7
  return null;
@@ -11,21 +12,26 @@ const useDevStrictMode = () => {
11
12
  return null;
12
13
  return isFirstRender ? "child" : "root";
13
14
  };
14
- const resourceReducer = (version, callback) => {
15
- return version + (callback() ? 1 : 0);
16
- };
17
15
  export function useResource(element) {
18
- const [, dispatch] = useReducer(resourceReducer, 0);
16
+ const root = useMemo(() => {
17
+ return createResourceFiberRoot((cb) => dispatch(cb));
18
+ }, []);
19
+ const [version, dispatch] = useReducer((v, cb) => {
20
+ setRootVersion(root, v);
21
+ return v + (cb() ? 1 : 0);
22
+ }, 0);
23
+ setRootVersion(root, version);
19
24
  const devStrictMode = useDevStrictMode();
20
- // biome-ignore lint/correctness/useExhaustiveDependencies: user provided deps instead of prop identity
21
25
  const fiber = useMemo(() => {
22
- return createResourceFiber(element.type, dispatch, devStrictMode);
23
- }, [element.type, element.key]);
26
+ void element.key;
27
+ return createResourceFiber(element.type, root, undefined, devStrictMode);
28
+ }, [element.type, element.key, root, devStrictMode]);
24
29
  const result = renderResourceFiber(fiber, element.props);
25
30
  useLayoutEffect(() => {
26
31
  return () => unmountResourceFiber(fiber);
27
32
  }, [fiber]);
28
33
  useLayoutEffect(() => {
34
+ commitRoot(root);
29
35
  commitResourceFiber(fiber, result);
30
36
  });
31
37
  return result.output;
@@ -1 +1 @@
1
- {"version":3,"file":"use-resource.js","sourceRoot":"","sources":["../../src/react/use-resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE/E,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,GACpB,iCAA8B;AAC/B,OAAO,EAAE,aAAa,EAAE,uBAAoB;AAE5C,MAAM,gBAAgB,GAAG,GAAG,EAAE;IAC5B,IAAI,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC;IAEhC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACxB,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,KAAK,CAAC,CAAC;IAC1C,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAChC,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,OAAO,aAAa,CAAC,CAAC,CAAE,OAAiB,CAAC,CAAC,CAAE,MAAgB,CAAC;AAChE,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,OAAe,EAAE,QAAuB,EAAE,EAAE;IACnE,OAAO,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,CAAC,CAAC;AAEF,MAAM,UAAU,WAAW,CACzB,OAAU;IAEV,MAAM,CAAC,EAAE,QAAQ,CAAC,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;IAEpD,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;IAEzC,uGAAuG;IACvG,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE;QACzB,OAAO,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;IACpE,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAEhC,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACzD,eAAe,CAAC,GAAG,EAAE;QACnB,OAAO,GAAG,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACZ,eAAe,CAAC,GAAG,EAAE;QACnB,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,MAAM,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"use-resource.js","sourceRoot":"","sources":["../../src/react/use-resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAM/E,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,GACpB,iCAA8B;AAC/B,OAAO,EAAE,aAAa,EAAE,+BAA4B;AACpD,OAAO,EACL,UAAU,EACV,uBAAuB,EACvB,cAAc,GACf,gCAA6B;AAE9B,MAAM,gBAAgB,GAAG,GAAG,EAAE;IAC5B,IAAI,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC;IAEhC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACxB,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,KAAK,CAAC,CAAC;IAC1C,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAChC,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,OAAO,aAAa,CAAC,CAAC,CAAE,OAAiB,CAAC,CAAC,CAAE,MAAgB,CAAC;AAChE,CAAC,CAAC;AAEF,MAAM,UAAU,WAAW,CACzB,OAAU;IAEV,MAAM,IAAI,GAAG,OAAO,CAAoB,GAAG,EAAE;QAC3C,OAAO,uBAAuB,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACvD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,UAAU,CAAC,CAAC,CAAS,EAAE,EAAiB,EAAE,EAAE;QACtE,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC,EAAE,CAAC,CAAC,CAAC;IACN,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAE9B,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE;QACzB,KAAK,OAAO,CAAC,GAAG,CAAC;QACjB,OAAO,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;IAC3E,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;IAErD,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACzD,eAAe,CAAC,GAAG,EAAE;QACnB,OAAO,GAAG,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACZ,eAAe,CAAC,GAAG,EAAE;QACnB,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,MAAM,CAAC;AACvB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { ResourceElement } from "./core/types.js";
2
- export declare namespace tapSubscribableResource {
2
+ export declare namespace tapResourceRoot {
3
3
  type Unsubscribe = () => void;
4
4
  interface SubscribableResource<TState> {
5
5
  /**
@@ -12,5 +12,5 @@ export declare namespace tapSubscribableResource {
12
12
  subscribe(listener: () => void): Unsubscribe;
13
13
  }
14
14
  }
15
- export declare const tapSubscribableResource: <TState>(element: ResourceElement<TState>) => tapSubscribableResource.SubscribableResource<TState>;
16
- //# sourceMappingURL=tapSubscribableResource.d.ts.map
15
+ export declare const tapResourceRoot: <TState>(element: ResourceElement<TState>) => tapResourceRoot.SubscribableResource<TState>;
16
+ //# sourceMappingURL=tapResourceRoot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tapResourceRoot.d.ts","sourceRoot":"","sources":["../src/tapResourceRoot.ts"],"names":[],"mappings":"AAYA,OAAO,EAAgB,eAAe,EAAE,wBAAqB;AAQ7D,yBAAiB,eAAe,CAAC;IAC/B,KAAY,WAAW,GAAG,MAAM,IAAI,CAAC;IAErC,UAAiB,oBAAoB,CAAC,MAAM;QAC1C;;WAEG;QACH,QAAQ,IAAI,MAAM,CAAC;QAEnB;;WAEG;QACH,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,WAAW,CAAC;KAC9C;CACF;AAID,eAAO,MAAM,eAAe,GAAI,MAAM,EACpC,SAAS,eAAe,CAAC,MAAM,CAAC,KAC/B,eAAe,CAAC,oBAAoB,CAAC,MAAM,CA0F7C,CAAC"}
@@ -0,0 +1,80 @@
1
+ import { commitResourceFiber, createResourceFiber, renderResourceFiber, unmountResourceFiber, } from "./core/ResourceFiber.js";
2
+ import { UpdateScheduler } from "./core/scheduler.js";
3
+ import { tapConst } from "./hooks/tap-const.js";
4
+ import { tapMemo } from "./hooks/tap-memo.js";
5
+ import { tapEffect } from "./hooks/tap-effect.js";
6
+ import { tapEffectEvent } from "./hooks/tap-effect-event.js";
7
+ import { tapRef } from "./hooks/tap-ref.js";
8
+ import { isDevelopment } from "./core/helpers/env.js";
9
+ import { commitRoot, createResourceFiberRoot, setRootVersion, } from "./core/helpers/root.js";
10
+ // currently we never reset the root, because rollbakcs are not supported in tapResourceRoot
11
+ export const tapResourceRoot = (element) => {
12
+ const scheduler = tapConst(() => new UpdateScheduler(() => handleUpdate(null)), []);
13
+ const queue = tapConst(() => [], []);
14
+ const fiber = tapMemo(() => {
15
+ void element.key;
16
+ return createResourceFiber(element.type, createResourceFiberRoot((callback) => {
17
+ if (!scheduler.isDirty && !callback())
18
+ return;
19
+ queue.push(callback);
20
+ scheduler.markDirty();
21
+ }));
22
+ }, [element.type, element.key]);
23
+ setRootVersion(fiber.root, fiber.root.committedVersion);
24
+ const render = renderResourceFiber(fiber, element.props);
25
+ const isMountedRef = tapRef(false);
26
+ const committedPropsRef = tapRef(element.props);
27
+ const valueRef = tapRef(render.output);
28
+ const subscribers = tapConst(() => new Set(), []);
29
+ const handleUpdate = tapEffectEvent((render) => {
30
+ if (render === null) {
31
+ setRootVersion(fiber.root, 2);
32
+ setRootVersion(fiber.root, 1);
33
+ queue.forEach((callback) => {
34
+ if (isDevelopment && fiber.devStrictMode) {
35
+ callback();
36
+ }
37
+ callback();
38
+ });
39
+ if (isDevelopment && fiber.devStrictMode) {
40
+ void renderResourceFiber(fiber, committedPropsRef.current);
41
+ }
42
+ render = renderResourceFiber(fiber, committedPropsRef.current);
43
+ }
44
+ if (scheduler.isDirty)
45
+ throw new Error("Scheduler is dirty, this should never happen");
46
+ commitRoot(fiber.root);
47
+ queue.length = 0;
48
+ if (isMountedRef.current) {
49
+ commitResourceFiber(fiber, render);
50
+ }
51
+ if (scheduler.isDirty || valueRef.current === render.output)
52
+ return;
53
+ valueRef.current = render.output;
54
+ subscribers.forEach((callback) => callback());
55
+ });
56
+ tapEffect(() => {
57
+ isMountedRef.current = true;
58
+ return () => {
59
+ isMountedRef.current = false;
60
+ unmountResourceFiber(fiber);
61
+ };
62
+ }, [fiber]);
63
+ tapEffect(() => {
64
+ committedPropsRef.current = render.props;
65
+ commitRoot(fiber.root);
66
+ commitResourceFiber(fiber, render);
67
+ if (scheduler.isDirty || valueRef.current === render.output)
68
+ return;
69
+ valueRef.current = render.output;
70
+ subscribers.forEach((callback) => callback());
71
+ });
72
+ return tapMemo(() => ({
73
+ getValue: () => valueRef.current,
74
+ subscribe: (listener) => {
75
+ subscribers.add(listener);
76
+ return () => subscribers.delete(listener);
77
+ },
78
+ }), []);
79
+ };
80
+ //# sourceMappingURL=tapResourceRoot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tapResourceRoot.js","sourceRoot":"","sources":["../src/tapResourceRoot.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,GACrB,gCAA6B;AAC9B,OAAO,EAAE,eAAe,EAAE,4BAAyB;AACnD,OAAO,EAAE,QAAQ,EAAE,6BAA0B;AAC7C,OAAO,EAAE,OAAO,EAAE,4BAAyB;AAC3C,OAAO,EAAE,SAAS,EAAE,8BAA2B;AAC/C,OAAO,EAAE,cAAc,EAAE,oCAAiC;AAC1D,OAAO,EAAE,MAAM,EAAE,2BAAwB;AAEzC,OAAO,EAAE,aAAa,EAAE,8BAA2B;AACnD,OAAO,EACL,UAAU,EACV,uBAAuB,EACvB,cAAc,GACf,+BAA4B;AAkB7B,4FAA4F;AAE5F,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,OAAgC,EACc,EAAE;IAChD,MAAM,SAAS,GAAG,QAAQ,CACxB,GAAG,EAAE,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EACnD,EAAE,CACH,CAAC;IACF,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAoB,EAAE,EAAE,CAAC,CAAC;IAEvD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE;QACzB,KAAK,OAAO,CAAC,GAAG,CAAC;QAEjB,OAAO,mBAAmB,CACxB,OAAO,CAAC,IAAI,EACZ,uBAAuB,CAAC,CAAC,QAAQ,EAAE,EAAE;YACnC,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE;gBAAE,OAAO;YAC9C,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrB,SAAS,CAAC,SAAS,EAAE,CAAC;QACxB,CAAC,CAAC,CACH,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAEhC,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAEzD,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,iBAAiB,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,MAAM,CAAS,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,EAAc,EAAE,EAAE,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,cAAc,CAAC,CAAC,MAA2B,EAAE,EAAE;QAClE,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC9B,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAE9B,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACzB,IAAI,aAAa,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;oBACzC,QAAQ,EAAE,CAAC;gBACb,CAAC;gBAED,QAAQ,EAAE,CAAC;YACb,CAAC,CAAC,CAAC;YAEH,IAAI,aAAa,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;gBACzC,KAAK,mBAAmB,CAAC,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAC7D,CAAC;YAED,MAAM,GAAG,mBAAmB,CAAC,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,SAAS,CAAC,OAAO;YACnB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAElE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvB,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAEjB,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;YACzB,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACrC,CAAC;QAED,IAAI,SAAS,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,KAAK,MAAM,CAAC,MAAM;YAAE,OAAO;QACpE,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC;QAC5B,OAAO,GAAG,EAAE;YACV,YAAY,CAAC,OAAO,GAAG,KAAK,CAAC;YAC7B,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,SAAS,CAAC,GAAG,EAAE;QACb,iBAAiB,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;QACzC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvB,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAEnC,IAAI,SAAS,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,KAAK,MAAM,CAAC,MAAM;YAAE,OAAO;QACpE,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,CAAC;QACL,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO;QAChC,SAAS,EAAE,CAAC,QAAoB,EAAE,EAAE;YAClC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC1B,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC;KACF,CAAC,EACF,EAAE,CACH,CAAC;AACJ,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@assistant-ui/tap",
3
- "version": "0.4.5",
3
+ "version": "0.5.0",
4
4
  "description": "Zero-dependency reactive state management inspired by React hooks",
5
5
  "keywords": [
6
6
  "state-management",