@faiwer/react 0.9.0 → 19.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -9
- package/dist/core/actions/applyAction.d.ts.map +1 -1
- package/dist/core/actions/applyAction.js +4 -0
- package/dist/core/actions/applyAction.js.map +1 -1
- package/dist/core/actions/catchError.action.d.ts +10 -0
- package/dist/core/actions/catchError.action.d.ts.map +1 -0
- package/dist/core/actions/catchError.action.js +51 -0
- package/dist/core/actions/catchError.action.js.map +1 -0
- package/dist/core/actions/dom/value.d.ts +3 -2
- package/dist/core/actions/dom/value.d.ts.map +1 -1
- package/dist/core/actions/dom/value.js +20 -13
- package/dist/core/actions/dom/value.js.map +1 -1
- package/dist/core/actions/helpers.d.ts.map +1 -1
- package/dist/core/actions/helpers.js +1 -2
- package/dist/core/actions/helpers.js.map +1 -1
- package/dist/core/actions/remove.action.d.ts.map +1 -1
- package/dist/core/actions/remove.action.js +2 -3
- package/dist/core/actions/remove.action.js.map +1 -1
- package/dist/core/actions/replace.action.d.ts.map +1 -1
- package/dist/core/actions/replace.action.js +4 -0
- package/dist/core/actions/replace.action.js.map +1 -1
- package/dist/core/actions/scheduleEffect.action.d.ts +7 -0
- package/dist/core/actions/scheduleEffect.action.d.ts.map +1 -0
- package/dist/core/actions/scheduleEffect.action.js +8 -0
- package/dist/core/actions/scheduleEffect.action.js.map +1 -0
- package/dist/core/actions/setAttr.action.d.ts.map +1 -1
- package/dist/core/actions/setAttr.action.js +2 -3
- package/dist/core/actions/setAttr.action.js.map +1 -1
- package/dist/core/actions/setRef.action.d.ts.map +1 -1
- package/dist/core/actions/setRef.action.js +1 -2
- package/dist/core/actions/setRef.action.js.map +1 -1
- package/dist/core/classComponent.d.ts +2 -1
- package/dist/core/classComponent.d.ts.map +1 -1
- package/dist/core/classComponent.js +17 -10
- package/dist/core/classComponent.js.map +1 -1
- package/dist/core/components.d.ts +5 -3
- package/dist/core/components.d.ts.map +1 -1
- package/dist/core/components.js +8 -3
- package/dist/core/components.js.map +1 -1
- package/dist/core/reactNodeToFiberNode.d.ts +3 -1
- package/dist/core/reactNodeToFiberNode.d.ts.map +1 -1
- package/dist/core/reactNodeToFiberNode.js +74 -16
- package/dist/core/reactNodeToFiberNode.js.map +1 -1
- package/dist/core/reconciliation/collect/fromApp.d.ts +2 -1
- package/dist/core/reconciliation/collect/fromApp.d.ts.map +1 -1
- package/dist/core/reconciliation/collect/fromApp.js +6 -1
- package/dist/core/reconciliation/collect/fromApp.js.map +1 -1
- package/dist/core/reconciliation/collect/fromChildrenPair.d.ts +2 -1
- package/dist/core/reconciliation/collect/fromChildrenPair.d.ts.map +1 -1
- package/dist/core/reconciliation/collect/fromChildrenPair.js +26 -4
- package/dist/core/reconciliation/collect/fromChildrenPair.js.map +1 -1
- package/dist/core/reconciliation/collect/fromComponent.d.ts +2 -1
- package/dist/core/reconciliation/collect/fromComponent.d.ts.map +1 -1
- package/dist/core/reconciliation/collect/fromComponent.js +25 -3
- package/dist/core/reconciliation/collect/fromComponent.js.map +1 -1
- package/dist/core/reconciliation/collect/fromFiberPair.d.ts +2 -1
- package/dist/core/reconciliation/collect/fromFiberPair.d.ts.map +1 -1
- package/dist/core/reconciliation/collect/fromFiberPair.js +6 -1
- package/dist/core/reconciliation/collect/fromFiberPair.js.map +1 -1
- package/dist/core/reconciliation/effects.d.ts +2 -2
- package/dist/core/reconciliation/effects.d.ts.map +1 -1
- package/dist/core/reconciliation/effects.js +52 -4
- package/dist/core/reconciliation/effects.js.map +1 -1
- package/dist/core/reconciliation/errors/ReactError.d.ts +8 -0
- package/dist/core/reconciliation/errors/ReactError.d.ts.map +1 -1
- package/dist/core/reconciliation/errors/ReactError.js +30 -0
- package/dist/core/reconciliation/errors/ReactError.js.map +1 -1
- package/dist/core/reconciliation/errors/stack.d.ts +1 -1
- package/dist/core/reconciliation/errors/stack.d.ts.map +1 -1
- package/dist/core/reconciliation/errors/stack.js +3 -3
- package/dist/core/reconciliation/errors/stack.js.map +1 -1
- package/dist/core/reconciliation/mount.d.ts.map +1 -1
- package/dist/core/reconciliation/mount.js +10 -2
- package/dist/core/reconciliation/mount.js.map +1 -1
- package/dist/core/reconciliation/render.d.ts.map +1 -1
- package/dist/core/reconciliation/render.js +8 -2
- package/dist/core/reconciliation/render.js.map +1 -1
- package/dist/core/reconciliation/runFiberComponents.d.ts +3 -1
- package/dist/core/reconciliation/runFiberComponents.d.ts.map +1 -1
- package/dist/core/reconciliation/runFiberComponents.js +31 -4
- package/dist/core/reconciliation/runFiberComponents.js.map +1 -1
- package/dist/hooks/helpers.d.ts +2 -2
- package/dist/hooks/helpers.d.ts.map +1 -1
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/useEffect.d.ts.map +1 -1
- package/dist/hooks/useEffect.js +20 -6
- package/dist/hooks/useEffect.js.map +1 -1
- package/dist/hooks/useError.d.ts +5 -0
- package/dist/hooks/useError.d.ts.map +1 -0
- package/dist/hooks/useError.js +19 -0
- package/dist/hooks/useError.js.map +1 -0
- package/dist/hooks/useReducer.d.ts +7 -0
- package/dist/hooks/useReducer.d.ts.map +1 -0
- package/dist/hooks/useReducer.js +10 -0
- package/dist/hooks/useReducer.js.map +1 -0
- package/dist/hooks/useState.d.ts.map +1 -1
- package/dist/hooks/useState.js +0 -1
- package/dist/hooks/useState.js.map +1 -1
- package/dist/types/actions.d.ts +12 -1
- package/dist/types/actions.d.ts.map +1 -1
- package/dist/types/app.d.ts +5 -1
- package/dist/types/app.d.ts.map +1 -1
- package/dist/types/component.d.ts +6 -0
- package/dist/types/component.d.ts.map +1 -1
- package/dist/types/fiber.d.ts +1 -1
- package/dist/types/fiber.d.ts.map +1 -1
- package/dist/types/hooks.d.ts +12 -2
- package/dist/types/hooks.d.ts.map +1 -1
- package/dist/types/react.d.ts +0 -4
- package/dist/types/react.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,7 +2,27 @@
|
|
|
2
2
|
|
|
3
3
|
A naive React implementation. Why? What's wrong with the existing one? Nothing. I just wanted to implement it from scratch by myself. It can be used as a drop-in replacement for some simple React apps. May require some trivial changes, though.
|
|
4
4
|
|
|
5
|
+
A few stats:
|
|
6
|
+
|
|
7
|
+
- ~5.5k LoC in TypeScript
|
|
8
|
+
- ~122 KiB: transpiled JS code
|
|
9
|
+
- ~44 KiB: minified by `terser`
|
|
10
|
+
- ~16 KiB: minified gzipped
|
|
11
|
+
- `preact` is about ~10 KiB
|
|
12
|
+
|
|
13
|
+
- areFiberNodesEq
|
|
14
|
+
// what if a context's ctx was changed? switch one context to another
|
|
15
|
+
// how does it work in React?
|
|
16
|
+
|
|
17
|
+
- Multiple setState work?
|
|
18
|
+
setNumber(n => n + 1);
|
|
19
|
+
setNumber(n => n + 1);
|
|
20
|
+
setNumber(n => n + 1);
|
|
21
|
+
= +3
|
|
22
|
+
|
|
5
23
|
## It supports
|
|
24
|
+
https://github.com/preactjs/preact-devtools/blob/main/src/adapter/renderer.ts
|
|
25
|
+
|
|
6
26
|
|
|
7
27
|
- JSX
|
|
8
28
|
- Functional components
|
|
@@ -51,14 +71,13 @@ createRoot(container).render(<App />);
|
|
|
51
71
|
|
|
52
72
|
## TODO
|
|
53
73
|
|
|
54
|
-
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
- leverage `isStaticChildren` in `jsx()`
|
|
74
|
+
- HMR
|
|
75
|
+
- Preact Devtools?
|
|
76
|
+
- JSX: Math namespace
|
|
77
|
+
- Lazy
|
|
78
|
+
- Make all hooks pure
|
|
79
|
+
- Resolve "TODO: add a test" comments
|
|
80
|
+
- leverage `isStaticChildren` in `jsx()`
|
|
62
81
|
|
|
63
82
|
## It does NOT support
|
|
64
83
|
|
|
@@ -91,5 +110,5 @@ createRoot(container).render(<App />);
|
|
|
91
110
|
- It renders HTML-comment for nullable nodes and some fragments. Why? It helps a lot to keep the reconciliation algorithm simple. Took this idea from Angular.
|
|
92
111
|
- No synthetic events. I don't see any reason to implement them.
|
|
93
112
|
- All components are memoized by default. Why not?
|
|
94
|
-
-
|
|
113
|
+
- Not too much custom DOM-related code. This library is supposed to be simple and silly. Whereas React-DOM lib is huge.
|
|
95
114
|
- No modern fiber-driven stuff like `<Suspense>`, `cacheSignal`, or `use`. Too much work. It took React many years to cook it well :)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"applyAction.d.ts","sourceRoot":"","sources":["../../../src/core/actions/applyAction.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"applyAction.d.ts","sourceRoot":"","sources":["../../../src/core/actions/applyAction.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAezD;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,0BAGvB,CAAC"}
|
|
@@ -9,6 +9,8 @@ import { removeAction } from './remove.action';
|
|
|
9
9
|
import { replaceAction } from './replace.action';
|
|
10
10
|
import { relayoutAction } from './relayout.action';
|
|
11
11
|
import { createContainerAction } from './createContainer.action';
|
|
12
|
+
import { scheduleEffectAction } from './scheduleEffect.action';
|
|
13
|
+
import { catchErrorAction } from './catchError.action';
|
|
12
14
|
/**
|
|
13
15
|
* The commit phase of the rendering process contains two parts:
|
|
14
16
|
* - Applying DOM changes
|
|
@@ -33,5 +35,7 @@ const actionHandlers = {
|
|
|
33
35
|
Remove: removeAction,
|
|
34
36
|
Replace: replaceAction,
|
|
35
37
|
Relayout: relayoutAction,
|
|
38
|
+
ScheduleEffect: scheduleEffectAction,
|
|
39
|
+
CatchError: catchErrorAction,
|
|
36
40
|
};
|
|
37
41
|
//# sourceMappingURL=applyAction.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"applyAction.js","sourceRoot":"","sources":["../../../src/core/actions/applyAction.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"applyAction.js","sourceRoot":"","sources":["../../../src/core/actions/applyAction.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAAc,EAAQ,EAAE,CAAC;IACnD,kCAAkC;IAClC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,MAAa,CAAC,CAAC;AAAA,CAC1D,CAAC;AAEF,MAAM,cAAc,GAKhB;IACF,SAAS,EAAE,eAAe;IAC1B,UAAU,EAAE,gBAAgB;IAC5B,aAAa,EAAE,mBAAmB;IAClC,eAAe,EAAE,qBAAqB;IACtC,QAAQ,EAAE,cAAc;IACxB,MAAM,EAAE,YAAY;IACpB,OAAO,EAAE,aAAa;IACtB,OAAO,EAAE,aAAa;IACtB,MAAM,EAAE,YAAY;IACpB,OAAO,EAAE,aAAa;IACtB,QAAQ,EAAE,cAAc;IACxB,cAAc,EAAE,oBAAoB;IACpC,UAAU,EAAE,gBAAgB;CAC7B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type FiberNode } from '../../types';
|
|
2
|
+
import type { CatchErrorAction } from '../../types/actions';
|
|
3
|
+
/**
|
|
4
|
+
* During the current render one of the components failed. This is the error
|
|
5
|
+
* handler for the closest error boundary component.
|
|
6
|
+
* - It removes the existing content
|
|
7
|
+
* - Runs the error handler
|
|
8
|
+
*/
|
|
9
|
+
export declare function catchErrorAction(fiber: FiberNode, { error }: Pick<CatchErrorAction, 'error'>): void;
|
|
10
|
+
//# sourceMappingURL=catchError.action.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catchError.action.d.ts","sourceRoot":"","sources":["../../../src/core/actions/catchError.action.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,SAAS,EACf,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAMnE;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,EAChB,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,QA4C3C"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { removeAction } from './remove.action';
|
|
2
|
+
import { scheduleEffect } from '../reconciliation/effects';
|
|
3
|
+
import { tryFixContainerType } from './relayout.action';
|
|
4
|
+
import { isFiberDead } from '../reconciliation/fibers';
|
|
5
|
+
import { getAppByFiber } from '../reconciliation/app';
|
|
6
|
+
import { ReactError } from '../reconciliation/errors/ReactError';
|
|
7
|
+
/**
|
|
8
|
+
* During the current render one of the components failed. This is the error
|
|
9
|
+
* handler for the closest error boundary component.
|
|
10
|
+
* - It removes the existing content
|
|
11
|
+
* - Runs the error handler
|
|
12
|
+
*/
|
|
13
|
+
export function catchErrorAction(fiber, { error }) {
|
|
14
|
+
scheduleEffect(fiber, () => {
|
|
15
|
+
const compFiber = fiber;
|
|
16
|
+
// Disable this node as an error boundary for one render cycle to avoid
|
|
17
|
+
// an eternal loop if the sequential render again leads to an error.
|
|
18
|
+
compFiber.data.isErrorBoundary = false;
|
|
19
|
+
const info = {
|
|
20
|
+
componentStack: error.fullStack,
|
|
21
|
+
};
|
|
22
|
+
const handlers = compFiber.data.hooks.filter((h) => h.type === 'error');
|
|
23
|
+
for (const { fn } of handlers) {
|
|
24
|
+
fn(error, info);
|
|
25
|
+
}
|
|
26
|
+
if (!getAppByFiber(fiber).invalidatedComponents.has(compFiber)) {
|
|
27
|
+
throw new ReactError(compFiber, `ErrorBoundaries must update their state on error`);
|
|
28
|
+
}
|
|
29
|
+
// Recover `isErrorBoundary` after a sucessful rerender.
|
|
30
|
+
scheduleEffect(fiber, () => {
|
|
31
|
+
if (!isFiberDead(compFiber)) {
|
|
32
|
+
compFiber.data.isErrorBoundary = true;
|
|
33
|
+
}
|
|
34
|
+
}, 'afterActions');
|
|
35
|
+
}, 'normal');
|
|
36
|
+
if (fiber.element) {
|
|
37
|
+
killChildrenOnError(fiber);
|
|
38
|
+
}
|
|
39
|
+
// else: fiber.children === [nullNode].
|
|
40
|
+
}
|
|
41
|
+
const killChildrenOnError = (fiber) => {
|
|
42
|
+
// Not the 1st render. Nodes are mounted. Must be removed.
|
|
43
|
+
for (const [idx, child] of fiber.children.entries()) {
|
|
44
|
+
removeAction(child, { last: idx === fiber.children.length - 1 });
|
|
45
|
+
}
|
|
46
|
+
fiber.children = [];
|
|
47
|
+
if (fiber.parent.type === 'component') {
|
|
48
|
+
tryFixContainerType(fiber.parent);
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=catchError.action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catchError.action.js","sourceRoot":"","sources":["../../../src/core/actions/catchError.action.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAEjE;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAgB,EAChB,EAAE,KAAK,EAAmC,EAC1C;IACA,cAAc,CACZ,KAAK,EACL,GAAG,EAAE,CAAC;QACJ,MAAM,SAAS,GAAG,KAA2B,CAAC;QAC9C,uEAAuE;QACvE,oEAAoE;QACpE,SAAS,CAAC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAEvC,MAAM,IAAI,GAAc;YACtB,cAAc,EAAE,KAAK,CAAC,SAAS;SAChC,CAAC;QAEF,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,KAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;QACzE,KAAK,MAAM,EAAE,EAAE,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC9B,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/D,MAAM,IAAI,UAAU,CAClB,SAAS,EACT,kDAAkD,CACnD,CAAC;QACJ,CAAC;QAED,wDAAwD;QACxD,cAAc,CACZ,KAAK,EACL,GAAG,EAAE,CAAC;YACJ,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC5B,SAAS,CAAC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YACxC,CAAC;QAAA,CACF,EACD,cAAc,CACf,CAAC;IAAA,CACH,EACD,QAAQ,CACT,CAAC;IAEF,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IACD,uCAAuC;AADtC,CAEF;AAED,MAAM,mBAAmB,GAAG,CAAC,KAAgB,EAAE,EAAE,CAAC;IAChD,0DAA0D;IAC1D,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;QACpD,YAAY,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,KAAK,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC;IACpB,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QACtC,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;AAAA,CACF,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { FiberNode, TagAttrValue, TagFiberNode } from '../../../types';
|
|
2
2
|
/**
|
|
3
3
|
* Original React has a very special behavior for the "onChange" event:
|
|
4
4
|
* - It treats "onChange" as an "onInput" event for form controls
|
|
@@ -11,7 +11,8 @@ import type { App, TagAttrValue, TagFiberNode } from '../../../types';
|
|
|
11
11
|
* element to intercept and track all value changes
|
|
12
12
|
*/
|
|
13
13
|
export declare const setValueAttr: (fiber: TagFiberNode, attrName: "checked" | "value", attrValue: TagAttrValue) => void;
|
|
14
|
-
export declare const changeControlValue: (
|
|
14
|
+
export declare const changeControlValue: (fiber: FiberNode, element: FormControl, attrName: "checked" | "value", valueRaw: unknown, restoreCursor?: boolean) => void;
|
|
15
15
|
type FormControl = HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement;
|
|
16
|
+
export declare const updateValueStore: (fiber: FiberNode) => void;
|
|
16
17
|
export {};
|
|
17
18
|
//# sourceMappingURL=value.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"value.d.ts","sourceRoot":"","sources":["../../../../src/core/actions/dom/value.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"value.d.ts","sourceRoot":"","sources":["../../../../src/core/actions/dom/value.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,SAAS,EACT,YAAY,EACZ,YAAY,EACb,MAAM,oBAAoB,CAAC;AAI5B;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,uFAsCxB,CAAC;AA2BF,eAAO,MAAM,kBAAkB,6HAiC9B,CAAC;AAgLF,KAAK,WAAW,GAAG,gBAAgB,GAAG,mBAAmB,GAAG,iBAAiB,CAAC;AAE9E,eAAO,MAAM,gBAAgB,4BAK5B,CAAC"}
|
|
@@ -20,7 +20,7 @@ export const setValueAttr = (fiber, attrName, attrValue) => {
|
|
|
20
20
|
// `displaceFiber`, so this assumption should hold
|
|
21
21
|
const { events } = fiber.data;
|
|
22
22
|
if (!events[VALUE_EVENT]) {
|
|
23
|
-
const store = setUpStore(
|
|
23
|
+
const store = setUpStore(fiber, element, attrName);
|
|
24
24
|
const onInput = createOnInputHandler(app, element, attrName, store);
|
|
25
25
|
events[VALUE_EVENT] = {
|
|
26
26
|
name: 'input',
|
|
@@ -39,19 +39,20 @@ export const setValueAttr = (fiber, attrName, attrValue) => {
|
|
|
39
39
|
}
|
|
40
40
|
};
|
|
41
41
|
const VALUE_EVENT = 'x:input';
|
|
42
|
-
const setUpStore = (
|
|
42
|
+
const setUpStore = (fiber, element, attrName) => {
|
|
43
43
|
const store = {
|
|
44
|
+
fiber,
|
|
44
45
|
prev: null,
|
|
45
46
|
cursor: null,
|
|
46
|
-
set:
|
|
47
|
+
set: (valueRaw, restoreCursor) => changeControlValue(store.fiber, element, attrName, valueRaw, restoreCursor),
|
|
47
48
|
};
|
|
48
49
|
stores.set(element, store);
|
|
49
50
|
return store;
|
|
50
51
|
};
|
|
51
|
-
export const changeControlValue = (
|
|
52
|
+
export const changeControlValue = (fiber, element, attrName, valueRaw, restoreCursor = false) => {
|
|
52
53
|
const value = toNativeValue(attrName, valueRaw);
|
|
53
54
|
if (element instanceof HTMLSelectElement) {
|
|
54
|
-
setSelectValue(
|
|
55
|
+
setSelectValue(fiber, element, value);
|
|
55
56
|
return;
|
|
56
57
|
}
|
|
57
58
|
if (element[attrName] === value) {
|
|
@@ -76,7 +77,7 @@ const createOnInputHandler = (app, element, attrName, store) => {
|
|
|
76
77
|
element.type === 'radio' &&
|
|
77
78
|
element.name) {
|
|
78
79
|
// Radio buttons require special group-based handling
|
|
79
|
-
onRadioClick(app, element);
|
|
80
|
+
onRadioClick(app, store.fiber, element);
|
|
80
81
|
return;
|
|
81
82
|
}
|
|
82
83
|
const newValue = element[attrName];
|
|
@@ -84,7 +85,7 @@ const createOnInputHandler = (app, element, attrName, store) => {
|
|
|
84
85
|
return; // Uncontrolled component - allow changes
|
|
85
86
|
if (store.prev === newValue)
|
|
86
87
|
return; // No actual change occurred
|
|
87
|
-
scheduleResetValueEffect(
|
|
88
|
+
scheduleResetValueEffect(store.fiber, () => {
|
|
88
89
|
// The following render could make the control uncontrolled. In such a
|
|
89
90
|
// case we shouldn't restore the value. Now it's in free flight.
|
|
90
91
|
if (store.prev == null)
|
|
@@ -116,8 +117,8 @@ const createOnInputHandler = (app, element, attrName, store) => {
|
|
|
116
117
|
* radio buttons in the group must have "checked=false", even if they don't
|
|
117
118
|
* explicitly define a "checked" attribute (React assumes they do).
|
|
118
119
|
*/
|
|
119
|
-
const onRadioClick = (app, element) => {
|
|
120
|
-
scheduleResetValueEffect(
|
|
120
|
+
const onRadioClick = (app, fiber, element) => {
|
|
121
|
+
scheduleResetValueEffect(fiber, () => {
|
|
121
122
|
// Find all radio buttons in the same group (same name within the form)
|
|
122
123
|
const form = element.closest('form') ?? app.root.element;
|
|
123
124
|
const radios = form.querySelectorAll(`input[type="radio"]`);
|
|
@@ -161,7 +162,7 @@ const toNativeValue = (attrName, newValue) => attrName === 'checked'
|
|
|
161
162
|
* where the new value hasn't been reset yet. This function ensures the callback
|
|
162
163
|
* runs at the appropriate time to restore the controlled value.
|
|
163
164
|
*/
|
|
164
|
-
const scheduleResetValueEffect = (
|
|
165
|
+
const scheduleResetValueEffect = (fiber, fn) => {
|
|
165
166
|
let executed = false;
|
|
166
167
|
requestAnimationFrame(() => {
|
|
167
168
|
if (!executed) {
|
|
@@ -169,7 +170,7 @@ const scheduleResetValueEffect = (app, fn) => {
|
|
|
169
170
|
fn();
|
|
170
171
|
}
|
|
171
172
|
});
|
|
172
|
-
scheduleEffect(
|
|
173
|
+
scheduleEffect(fiber, () => {
|
|
173
174
|
if (!executed) {
|
|
174
175
|
executed = true;
|
|
175
176
|
fn();
|
|
@@ -186,11 +187,11 @@ const scheduleResetValueEffect = (app, fn) => {
|
|
|
186
187
|
* So, how do we handle it without `value`? We just need to update `selected`
|
|
187
188
|
* for each of the <option/>s.
|
|
188
189
|
*/
|
|
189
|
-
const setSelectValue = (
|
|
190
|
+
const setSelectValue = (fiber, element, value) => {
|
|
190
191
|
// Unfortunately, we can't do it right away, because:
|
|
191
192
|
// 1. on the 1st render we have no inner options here yet
|
|
192
193
|
// 2. on subsequent render the inner options may not be fully updated yet.
|
|
193
|
-
scheduleResetValueEffect(
|
|
194
|
+
scheduleResetValueEffect(fiber, () => {
|
|
194
195
|
const arr = Array.isArray(value) ? value : [value];
|
|
195
196
|
const set = new Set(arr.map((v) => String(v)));
|
|
196
197
|
for (const option of element.options) {
|
|
@@ -201,4 +202,10 @@ const setSelectValue = (app, element, value) => {
|
|
|
201
202
|
}
|
|
202
203
|
});
|
|
203
204
|
};
|
|
205
|
+
export const updateValueStore = (fiber) => {
|
|
206
|
+
const store = stores.get(fiber.element);
|
|
207
|
+
if (store) {
|
|
208
|
+
store.fiber = fiber;
|
|
209
|
+
}
|
|
210
|
+
};
|
|
204
211
|
//# sourceMappingURL=value.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"value.js","sourceRoot":"","sources":["../../../../src/core/actions/dom/value.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oDAAoD,CAAC;
|
|
1
|
+
{"version":3,"file":"value.js","sourceRoot":"","sources":["../../../../src/core/actions/dom/value.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/core/actions/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,SAAS,EACd,KAAK,YAAY,EAClB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/core/actions/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,SAAS,EACd,KAAK,YAAY,EAClB,MAAM,oBAAoB,CAAC;AAa5B;;;;;;;;;;GAUG;AACH,eAAO,MAAM,WAAW,2BAAmD,CAAC;AAE5E;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,+BAa5B,CAAC;AAEF,eAAO,MAAM,SAAS,gCAMrB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,wBAAwB,uDAUpC,CAAC;AAEF,kEAAkE;AAClE,eAAO,MAAM,uBAAuB,+BAOnC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,iCAuC5B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,QAAQ,mDAsBpB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,4BAW1B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,yEAe7B,CAAC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { isEmptyContainer, isSingleChildContainer, isAutoContainer, } from '../compact';
|
|
2
2
|
import { isFiberDead, NULL_FIBER } from '../reconciliation/fibers';
|
|
3
3
|
import { scheduleEffect } from '../reconciliation/effects';
|
|
4
|
-
import { getAppByFiber } from '../reconciliation/app';
|
|
5
4
|
import { nullthrowsForFiber, ReactError, } from '../reconciliation/errors/ReactError';
|
|
6
5
|
/**
|
|
7
6
|
* Determines if a prop name represents an event handler by checking if it
|
|
@@ -109,7 +108,7 @@ export const unsetRef = (fiber, immediate) => {
|
|
|
109
108
|
// It can be a setter (e.g., <div onRef={setContainer}/>). Since we
|
|
110
109
|
// shouldn't allow invalidating components during commit phase we need
|
|
111
110
|
// to schedule an async update.
|
|
112
|
-
scheduleEffect(
|
|
111
|
+
scheduleEffect(fiber, () => {
|
|
113
112
|
ref(null);
|
|
114
113
|
}, 'refsUnmount');
|
|
115
114
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/core/actions/helpers.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/core/actions/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remove.action.d.ts","sourceRoot":"","sources":["../../../src/core/actions/remove.action.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,SAAS,EAEf,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAI/D;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,SAAS,EAChB,EAAE,SAAS,EAAE,IAAI,EAAE,GAAE,IAAI,CAAC,YAAY,EAAE,WAAW,GAAG,MAAM,CAAM,
|
|
1
|
+
{"version":3,"file":"remove.action.d.ts","sourceRoot":"","sources":["../../../src/core/actions/remove.action.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,SAAS,EAEf,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAI/D;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,SAAS,EAChB,EAAE,SAAS,EAAE,IAAI,EAAE,GAAE,IAAI,CAAC,YAAY,EAAE,WAAW,GAAG,MAAM,CAAM,QA0CnE"}
|
|
@@ -6,12 +6,11 @@ import { buildComment } from '../reconciliation/comments';
|
|
|
6
6
|
* false) from the replace action. `replaced` is `true` in the 2nd scenario.
|
|
7
7
|
*/
|
|
8
8
|
export function removeAction(fiber, { immediate, last } = {}) {
|
|
9
|
-
const
|
|
10
|
-
for (const child of fiber.children) {
|
|
9
|
+
for (const [idx, child] of fiber.children.entries()) {
|
|
11
10
|
// Recursively remove all children before removing the parent node. This is
|
|
12
11
|
// critical for components with effects - we must run cleanup effects
|
|
13
12
|
// before removing their parent nodes.
|
|
14
|
-
removeAction(child, { immediate, last:
|
|
13
|
+
removeAction(child, { immediate, last: idx === fiber.children.length - 1 });
|
|
15
14
|
}
|
|
16
15
|
if (fiber.type === 'component') {
|
|
17
16
|
destroyHooks(fiber);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remove.action.js","sourceRoot":"","sources":["../../../src/core/actions/remove.action.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErD,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D;;;GAGG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAgB,EAChB,EAAE,SAAS,EAAE,IAAI,EAAE,GAA6C,EAAE,EAClE;IACA,MAAM,
|
|
1
|
+
{"version":3,"file":"remove.action.js","sourceRoot":"","sources":["../../../src/core/actions/remove.action.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replace.action.d.ts","sourceRoot":"","sources":["../../../src/core/actions/replace.action.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,SAAS,EAEf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"replace.action.d.ts","sourceRoot":"","sources":["../../../src/core/actions/replace.action.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,SAAS,EAEf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAMhE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,EAAE,aAAa,QAgB1E"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { getFiberDomNodes } from './helpers';
|
|
2
2
|
import { removeAction } from './remove.action';
|
|
3
3
|
import { nullthrowsForFiber } from '../reconciliation/errors/ReactError';
|
|
4
|
+
import { updateValueStore } from './dom/value';
|
|
4
5
|
/**
|
|
5
6
|
* Handles fiber replacement when a component with the same key renders a
|
|
6
7
|
* completely different node. This happens when the `type`, `tag`, or
|
|
@@ -52,6 +53,9 @@ const displaceFiber = (before, after) => {
|
|
|
52
53
|
else if (after.role === 'context') {
|
|
53
54
|
updateContext(before, after);
|
|
54
55
|
}
|
|
56
|
+
else if (after.type === 'tag') {
|
|
57
|
+
updateValueStore(before);
|
|
58
|
+
}
|
|
55
59
|
// For debug purposes mark dead nodes with a negative number.
|
|
56
60
|
after.id = -after.id;
|
|
57
61
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replace.action.js","sourceRoot":"","sources":["../../../src/core/actions/replace.action.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"replace.action.js","sourceRoot":"","sources":["../../../src/core/actions/replace.action.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type FiberNode } from '../../types';
|
|
2
|
+
import type { ScheduleEffectAction } from '../../types/actions';
|
|
3
|
+
/**
|
|
4
|
+
* Adds the given effect to the appropriate effect queue.
|
|
5
|
+
*/
|
|
6
|
+
export declare function scheduleEffectAction(fiber: FiberNode, { fn, mode }: Pick<ScheduleEffectAction, 'fn' | 'mode'>): void;
|
|
7
|
+
//# sourceMappingURL=scheduleEffect.action.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduleEffect.action.d.ts","sourceRoot":"","sources":["../../../src/core/actions/scheduleEffect.action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGvE;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,SAAS,EAChB,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,oBAAoB,EAAE,IAAI,GAAG,MAAM,CAAC,QAGxD"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { scheduleEffect } from '../reconciliation/effects';
|
|
2
|
+
/**
|
|
3
|
+
* Adds the given effect to the appropriate effect queue.
|
|
4
|
+
*/
|
|
5
|
+
export function scheduleEffectAction(fiber, { fn, mode }) {
|
|
6
|
+
scheduleEffect(fiber, fn, mode);
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=scheduleEffect.action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduleEffect.action.js","sourceRoot":"","sources":["../../../src/core/actions/scheduleEffect.action.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAgB,EAChB,EAAE,EAAE,EAAE,IAAI,EAA6C,EACvD;IACA,cAAc,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AAAA,CACjC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setAttr.action.d.ts","sourceRoot":"","sources":["../../../src/core/actions/setAttr.action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"setAttr.action.d.ts","sourceRoot":"","sources":["../../../src/core/actions/setAttr.action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAahE;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,SAAS,EAChB,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC,QA+C9E"}
|
|
@@ -4,7 +4,6 @@ import { setTagStyles } from './dom/css';
|
|
|
4
4
|
import { setEventHandler } from './dom/events';
|
|
5
5
|
import { setHtmlAttribute } from './dom/attributes';
|
|
6
6
|
import { changeControlValue, setValueAttr } from './dom/value';
|
|
7
|
-
import { getAppByFiber } from '../reconciliation/app';
|
|
8
7
|
import { nullthrowsForFiber, ReactError, } from '../reconciliation/errors/ReactError';
|
|
9
8
|
import { isSetHtml } from '../reconciliation/typeGuards';
|
|
10
9
|
/**
|
|
@@ -25,7 +24,7 @@ export function setAttrAction(fiber, { name, value, creation }) {
|
|
|
25
24
|
}
|
|
26
25
|
else if (name === 'defaultChecked' && element instanceof HTMLInputElement) {
|
|
27
26
|
if (creation) {
|
|
28
|
-
changeControlValue(
|
|
27
|
+
changeControlValue(fiber, element, 'checked', value);
|
|
29
28
|
}
|
|
30
29
|
}
|
|
31
30
|
else if (name === 'defaultValue' &&
|
|
@@ -33,7 +32,7 @@ export function setAttrAction(fiber, { name, value, creation }) {
|
|
|
33
32
|
element instanceof HTMLTextAreaElement ||
|
|
34
33
|
element instanceof HTMLSelectElement)) {
|
|
35
34
|
if (creation) {
|
|
36
|
-
changeControlValue(
|
|
35
|
+
changeControlValue(fiber, element, 'value', value);
|
|
37
36
|
}
|
|
38
37
|
}
|
|
39
38
|
else if (isEventName(name) || name in fiber.data.events) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setAttr.action.js","sourceRoot":"","sources":["../../../src/core/actions/setAttr.action.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,
|
|
1
|
+
{"version":3,"file":"setAttr.action.js","sourceRoot":"","sources":["../../../src/core/actions/setAttr.action.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setRef.action.d.ts","sourceRoot":"","sources":["../../../src/core/actions/setRef.action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"setRef.action.d.ts","sourceRoot":"","sources":["../../../src/core/actions/setRef.action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAQ/D;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,SAAS,EAChB,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,GAAG,cAAc,CAAC,QAmClE"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { unsetRef } from './helpers';
|
|
2
2
|
import { scheduleEffect } from '../reconciliation/effects';
|
|
3
|
-
import { getAppByFiber } from '../reconciliation/app';
|
|
4
3
|
import { nullthrowsForFiber, ReactError, } from '../reconciliation/errors/ReactError';
|
|
5
4
|
/**
|
|
6
5
|
* A ref or ref handler for the given node was:
|
|
@@ -20,7 +19,7 @@ export function setRefAction(fiber, { ref, dontUnsetRef }) {
|
|
|
20
19
|
unsetRef(fiber, false);
|
|
21
20
|
}
|
|
22
21
|
// Run effects only when the DOM node is already mounted to a real DOM node.
|
|
23
|
-
scheduleEffect(
|
|
22
|
+
scheduleEffect(fiber, () => {
|
|
24
23
|
const element = nullthrowsForFiber(fiber, fiber.element);
|
|
25
24
|
if (typeof ref === 'function') {
|
|
26
25
|
ref(element);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setRef.action.js","sourceRoot":"","sources":["../../../src/core/actions/setRef.action.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,
|
|
1
|
+
{"version":3,"file":"setRef.action.js","sourceRoot":"","sources":["../../../src/core/actions/setRef.action.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EACL,kBAAkB,EAClB,UAAU,GACX,MAAM,qCAAqC,CAAC;AAE7C;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAgB,EAChB,EAAE,GAAG,EAAE,YAAY,EAA8C,EACjE;IACA,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,UAAU,CAClB,KAAK,EACL,uCAAuC,KAAK,CAAC,IAAI,QAAQ,CAC1D,CAAC;IACJ,CAAC;IAED,IACE,KAAK,CAAC,GAAG;QACT,6EAA6E;QAC7E,kBAAkB;QAClB,CAAC,YAAY,EACb,CAAC;QACD,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,4EAA4E;IAC5E,cAAc,CACZ,KAAK,EACL,GAAG,EAAE,CAAC;QACJ,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAgB,CAAC;QACxE,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE,CAAC;YAC9B,GAAG,CAAC,OAAO,CAAC,CAAC;QACf,CAAC;aAAM,IAAI,GAAG,EAAE,CAAC;YACf,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;QACxB,CAAC;IAAA,CACF;IACD,+DAA+D;IAC/D,WAAW,CACZ,CAAC;IAEF,KAAK,CAAC,GAAG,GAAG,GAAuB,CAAC;IACpC,OAAO;AAAA,CACR"}
|
|
@@ -11,6 +11,8 @@ export declare class Component<Props extends UnknownProps = UnknownProps, State
|
|
|
11
11
|
context: unknown;
|
|
12
12
|
static defaultProps?: object;
|
|
13
13
|
static contextType?: ReactContext<any>;
|
|
14
|
+
static getDerivedStateFromError?: (error: unknown) => object;
|
|
15
|
+
static getDerivedStateFromProps?: (_props: any, _state: any) => object;
|
|
14
16
|
constructor(props: Props);
|
|
15
17
|
setState(_update: Partial<State>): void;
|
|
16
18
|
componentDidMount(): void;
|
|
@@ -21,7 +23,6 @@ export declare class Component<Props extends UnknownProps = UnknownProps, State
|
|
|
21
23
|
render(): JSX.Element;
|
|
22
24
|
componentDidCatch(_error: unknown, _info: unknown): void;
|
|
23
25
|
getSnapshotBeforeUpdate(_prevProps: unknown, _prevState: unknown): unknown;
|
|
24
|
-
static getDerivedStateFromProps(_props: any, _state: any): Partial<any>;
|
|
25
26
|
}
|
|
26
27
|
/**
|
|
27
28
|
* Since I'm too lazy to implement a proper support for this legacy stuff, but
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"classComponent.d.ts","sourceRoot":"","sources":["../../src/core/classComponent.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACb,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"classComponent.d.ts","sourceRoot":"","sources":["../../src/core/classComponent.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACb,MAAM,oBAAoB,CAAC;AAK5B,eAAO,MAAM,gBAAgB,yEAO5B,CAAC;AAEF;;;;GAIG;AACH,qBAAa,SAAS,CACpB,KAAK,SAAS,YAAY,GAAG,YAAY,EACzC,KAAK,SAAS,YAAY,GAAG,YAAY;IAEzC,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAG,KAAK,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC7B,MAAM,CAAC,WAAW,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,CAAC,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC;IAC7D,MAAM,CAAC,wBAAwB,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,MAAM,CAAC;IAEvE,YAAY,KAAK,EAAE,KAAK,EAEvB;IAGD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,QAAI;IAGpC,iBAAiB,IAAI,IAAI,CAAG;IAC5B,oBAAoB,IAAI,IAAI,CAAG;IAE/B,WAAW,CAAC,EAAE,CAAC,EAAE,MAAM,IAAI,QAK1B;IAED,kBAAkB,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,QAAI;IAE3D,qBAAqB,CACnB,UAAU,EAAE,KAAK,EACjB,UAAU,EAAE,KAAK,EACjB,YAAY,CAAC,EAAE,OAAO,WAGvB;IAED,MAAM,IAAI,GAAG,CAAC,OAAO,CAKpB;IAED,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAG;IAE3D,uBAAuB,CAAC,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAEzE;CACF;AAWD;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,GACpC,KAAK,uBACL,KAAK,uGA4GN,CAAC;AAEF,MAAM,MAAM,cAAc,CACxB,KAAK,SAAS,YAAY,GAAG,YAAY,EACzC,KAAK,SAAS,YAAY,GAAG,YAAY,IACvC,KAAK,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC"}
|