@faiwer/react 0.8.3 → 0.9.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.
- package/README.md +20 -14
- package/dist/core/Children.d.ts +11 -0
- package/dist/core/Children.d.ts.map +1 -0
- package/dist/core/Children.js +35 -0
- package/dist/core/Children.js.map +1 -0
- package/dist/core/actions/applyAction.d.ts.map +1 -1
- package/dist/core/actions/applyAction.js +2 -0
- package/dist/core/actions/applyAction.js.map +1 -1
- package/dist/core/actions/createComment.action.d.ts +2 -2
- package/dist/core/actions/createComment.action.d.ts.map +1 -1
- package/dist/core/actions/createComment.action.js +1 -8
- package/dist/core/actions/createComment.action.js.map +1 -1
- package/dist/core/actions/createContainer.action.d.ts +7 -0
- package/dist/core/actions/createContainer.action.d.ts.map +1 -0
- package/dist/core/actions/createContainer.action.js +28 -0
- package/dist/core/actions/createContainer.action.js.map +1 -0
- package/dist/core/actions/createTag.action.d.ts +2 -1
- package/dist/core/actions/createTag.action.d.ts.map +1 -1
- package/dist/core/actions/createTag.action.js +107 -5
- package/dist/core/actions/createTag.action.js.map +1 -1
- package/dist/core/actions/createText.action.d.ts.map +1 -1
- package/dist/core/actions/createText.action.js +2 -5
- package/dist/core/actions/createText.action.js.map +1 -1
- package/dist/core/actions/dom/attributes.d.ts +4 -0
- package/dist/core/actions/dom/attributes.d.ts.map +1 -0
- package/dist/core/actions/dom/attributes.js +56 -0
- package/dist/core/actions/dom/attributes.js.map +1 -0
- package/dist/core/actions/dom/css.d.ts +6 -0
- package/dist/core/actions/dom/css.d.ts.map +1 -0
- package/dist/core/actions/dom/css.js +54 -0
- package/dist/core/actions/dom/css.js.map +1 -0
- package/dist/core/actions/dom/events.d.ts +3 -0
- package/dist/core/actions/dom/events.d.ts.map +1 -0
- package/dist/core/actions/dom/events.js +45 -0
- package/dist/core/actions/dom/events.js.map +1 -0
- package/dist/core/actions/dom/svg.d.ts +7 -0
- package/dist/core/actions/dom/svg.d.ts.map +1 -0
- package/dist/core/actions/dom/svg.js +76 -0
- package/dist/core/actions/dom/svg.js.map +1 -0
- package/dist/core/actions/dom/value.d.ts +17 -0
- package/dist/core/actions/dom/value.d.ts.map +1 -0
- package/dist/core/actions/dom/value.js +204 -0
- package/dist/core/actions/dom/value.js.map +1 -0
- package/dist/core/actions/helpers.d.ts +18 -11
- package/dist/core/actions/helpers.d.ts.map +1 -1
- package/dist/core/actions/helpers.js +78 -68
- package/dist/core/actions/helpers.js.map +1 -1
- package/dist/core/actions/relayout.action.d.ts +2 -1
- package/dist/core/actions/relayout.action.d.ts.map +1 -1
- package/dist/core/actions/relayout.action.js +119 -30
- package/dist/core/actions/relayout.action.js.map +1 -1
- package/dist/core/actions/remove.action.d.ts +3 -2
- package/dist/core/actions/remove.action.d.ts.map +1 -1
- package/dist/core/actions/remove.action.js +22 -18
- package/dist/core/actions/remove.action.js.map +1 -1
- package/dist/core/actions/replace.action.d.ts +1 -1
- package/dist/core/actions/replace.action.d.ts.map +1 -1
- package/dist/core/actions/replace.action.js +36 -11
- package/dist/core/actions/replace.action.js.map +1 -1
- package/dist/core/actions/setAttr.action.d.ts +1 -1
- package/dist/core/actions/setAttr.action.d.ts.map +1 -1
- package/dist/core/actions/setAttr.action.js +55 -87
- package/dist/core/actions/setAttr.action.js.map +1 -1
- package/dist/core/actions/setProps.action.d.ts.map +1 -1
- package/dist/core/actions/setProps.action.js +2 -1
- package/dist/core/actions/setProps.action.js.map +1 -1
- package/dist/core/actions/setRef.action.d.ts +1 -1
- package/dist/core/actions/setRef.action.d.ts.map +1 -1
- package/dist/core/actions/setRef.action.js +5 -6
- package/dist/core/actions/setRef.action.js.map +1 -1
- package/dist/core/actions/setText.action.d.ts.map +1 -1
- package/dist/core/actions/setText.action.js +3 -3
- package/dist/core/actions/setText.action.js.map +1 -1
- package/dist/core/classComponent.d.ts +33 -0
- package/dist/core/classComponent.d.ts.map +1 -0
- package/dist/core/classComponent.js +127 -0
- package/dist/core/classComponent.js.map +1 -0
- package/dist/core/compact.d.ts +10 -29
- package/dist/core/compact.d.ts.map +1 -1
- package/dist/core/compact.js +12 -100
- package/dist/core/compact.js.map +1 -1
- package/dist/core/components.d.ts +2 -2
- package/dist/core/components.d.ts.map +1 -1
- package/dist/core/components.js +22 -5
- package/dist/core/components.js.map +1 -1
- package/dist/core/createElement.d.ts +9 -9
- package/dist/core/createElement.d.ts.map +1 -1
- package/dist/core/createElement.js +19 -3
- package/dist/core/createElement.js.map +1 -1
- package/dist/core/createRoot.js.map +1 -1
- package/dist/core/reactNodeToFiberNode.d.ts.map +1 -1
- package/dist/core/reactNodeToFiberNode.js +6 -1
- package/dist/core/reactNodeToFiberNode.js.map +1 -1
- package/dist/core/reconciliation/app.js +3 -3
- package/dist/core/reconciliation/app.js.map +1 -1
- package/dist/core/reconciliation/collect/fromApp.d.ts.map +1 -1
- package/dist/core/reconciliation/collect/fromApp.js +3 -27
- package/dist/core/reconciliation/collect/fromApp.js.map +1 -1
- package/dist/core/reconciliation/collect/fromChildrenPair.d.ts.map +1 -1
- package/dist/core/reconciliation/collect/fromChildrenPair.js +24 -15
- package/dist/core/reconciliation/collect/fromChildrenPair.js.map +1 -1
- package/dist/core/reconciliation/collect/fromComponent.d.ts +2 -2
- package/dist/core/reconciliation/collect/fromComponent.d.ts.map +1 -1
- package/dist/core/reconciliation/collect/fromComponent.js +4 -8
- package/dist/core/reconciliation/collect/fromComponent.js.map +1 -1
- package/dist/core/reconciliation/collect/fromFiberPair.d.ts.map +1 -1
- package/dist/core/reconciliation/collect/fromFiberPair.js +6 -4
- package/dist/core/reconciliation/collect/fromFiberPair.js.map +1 -1
- package/dist/core/reconciliation/collect/fromNewFiber.d.ts.map +1 -1
- package/dist/core/reconciliation/collect/fromNewFiber.js +7 -15
- package/dist/core/reconciliation/collect/fromNewFiber.js.map +1 -1
- package/dist/core/reconciliation/effects.d.ts.map +1 -1
- package/dist/core/reconciliation/effects.js +0 -5
- package/dist/core/reconciliation/effects.js.map +1 -1
- package/dist/core/reconciliation/errors/ReactError.d.ts +7 -0
- package/dist/core/reconciliation/errors/ReactError.d.ts.map +1 -0
- package/dist/core/reconciliation/errors/ReactError.js +26 -0
- package/dist/core/reconciliation/errors/ReactError.js.map +1 -0
- package/dist/core/reconciliation/errors/stack.d.ts +9 -0
- package/dist/core/reconciliation/errors/stack.d.ts.map +1 -0
- package/dist/core/reconciliation/errors/stack.js +80 -0
- package/dist/core/reconciliation/errors/stack.js.map +1 -0
- package/dist/core/reconciliation/fibers.d.ts +7 -0
- package/dist/core/reconciliation/fibers.d.ts.map +1 -1
- package/dist/core/reconciliation/fibers.js +9 -2
- package/dist/core/reconciliation/fibers.js.map +1 -1
- package/dist/core/reconciliation/heap.d.ts +18 -0
- package/dist/core/reconciliation/heap.d.ts.map +1 -0
- package/dist/core/reconciliation/heap.js +81 -0
- package/dist/core/reconciliation/heap.js.map +1 -0
- package/dist/core/reconciliation/invalidateFiber.d.ts.map +1 -1
- package/dist/core/reconciliation/invalidateFiber.js +10 -4
- package/dist/core/reconciliation/invalidateFiber.js.map +1 -1
- package/dist/core/reconciliation/mount.d.ts.map +1 -1
- package/dist/core/reconciliation/mount.js +17 -7
- package/dist/core/reconciliation/mount.js.map +1 -1
- package/dist/core/reconciliation/postCommit.d.ts +1 -1
- package/dist/core/reconciliation/postCommit.d.ts.map +1 -1
- package/dist/core/reconciliation/postCommit.js +19 -4
- package/dist/core/reconciliation/postCommit.js.map +1 -1
- package/dist/core/reconciliation/queue.d.ts +21 -0
- package/dist/core/reconciliation/queue.d.ts.map +1 -0
- package/dist/core/reconciliation/queue.js +55 -0
- package/dist/core/reconciliation/queue.js.map +1 -0
- package/dist/core/reconciliation/render.js +5 -5
- package/dist/core/reconciliation/render.js.map +1 -1
- package/dist/core/reconciliation/runFiberComponents.d.ts.map +1 -1
- package/dist/core/reconciliation/runFiberComponents.js +2 -1
- package/dist/core/reconciliation/runFiberComponents.js.map +1 -1
- package/dist/core/reconciliation/typeGuards.d.ts +9 -1
- package/dist/core/reconciliation/typeGuards.d.ts.map +1 -1
- package/dist/core/reconciliation/typeGuards.js +25 -0
- package/dist/core/reconciliation/typeGuards.js.map +1 -1
- package/dist/core/reconciliation/validateApp.d.ts +3 -0
- package/dist/core/reconciliation/validateApp.d.ts.map +1 -0
- package/dist/core/reconciliation/validateApp.js +74 -0
- package/dist/core/reconciliation/validateApp.js.map +1 -0
- package/dist/hooks/helpers.d.ts +2 -2
- package/dist/hooks/helpers.d.ts.map +1 -1
- package/dist/hooks/helpers.js +3 -2
- package/dist/hooks/helpers.js.map +1 -1
- package/dist/hooks/index.d.ts +1 -1
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -1
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/useContext.d.ts.map +1 -1
- package/dist/hooks/useContext.js +16 -0
- package/dist/hooks/useContext.js.map +1 -1
- package/dist/hooks/useEffect.d.ts +2 -1
- package/dist/hooks/useEffect.d.ts.map +1 -1
- package/dist/hooks/useEffect.js +1 -1
- package/dist/hooks/useEffect.js.map +1 -1
- package/dist/hooks/useRef.d.ts +8 -3
- package/dist/hooks/useRef.d.ts.map +1 -1
- package/dist/hooks/useRef.js +27 -0
- package/dist/hooks/useRef.js.map +1 -1
- package/dist/hooks/useState.d.ts +1 -1
- package/dist/hooks/useState.d.ts.map +1 -1
- package/dist/hooks/useState.js +24 -1
- package/dist/hooks/useState.js.map +1 -1
- package/dist/index.d.ts +8 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/jsx-dev-runtime.d.ts +4 -4
- package/dist/jsx-dev-runtime.d.ts.map +1 -1
- package/dist/jsx-dev-runtime.js +4 -4
- package/dist/jsx-dev-runtime.js.map +1 -1
- package/dist/jsx-runtime.d.ts +3 -3
- package/dist/jsx-runtime.d.ts.map +1 -1
- package/dist/jsx-runtime.js +3 -3
- package/dist/jsx-runtime.js.map +1 -1
- package/dist/jsx.d.ts +176 -36
- package/dist/mocks.d.ts +21 -0
- package/dist/mocks.d.ts.map +1 -0
- package/dist/mocks.js +27 -0
- package/dist/mocks.js.map +1 -0
- package/dist/react.d.ts +46 -0
- package/dist/types/actions.d.ts +12 -4
- package/dist/types/actions.d.ts.map +1 -1
- package/dist/types/app.d.ts +17 -2
- package/dist/types/app.d.ts.map +1 -1
- package/dist/types/attributes.d.ts +42 -0
- package/dist/types/attributes.d.ts.map +1 -0
- package/dist/types/attributes.js +2 -0
- package/dist/types/attributes.js.map +1 -0
- package/dist/types/common.d.ts +13 -0
- package/dist/types/common.d.ts.map +1 -0
- package/dist/types/common.js +2 -0
- package/dist/types/common.js.map +1 -0
- package/dist/types/component.d.ts +5 -1
- package/dist/types/component.d.ts.map +1 -1
- package/dist/types/context.d.ts +3 -2
- package/dist/types/context.d.ts.map +1 -1
- package/dist/types/core.d.ts +17 -13
- package/dist/types/core.d.ts.map +1 -1
- package/dist/types/dom.d.ts +23 -27
- package/dist/types/dom.d.ts.map +1 -1
- package/dist/types/events.d.ts +31 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/events.js +2 -0
- package/dist/types/events.js.map +1 -0
- package/dist/types/fiber.d.ts +31 -11
- package/dist/types/fiber.d.ts.map +1 -1
- package/dist/types/fiber.js +5 -1
- package/dist/types/fiber.js.map +1 -1
- package/dist/types/hooks.d.ts +8 -5
- package/dist/types/hooks.d.ts.map +1 -1
- package/dist/types/react.d.ts +35 -0
- package/dist/types/react.d.ts.map +1 -0
- package/dist/types/react.js +2 -0
- package/dist/types/react.js.map +1 -0
- package/dist/types/refs.d.ts +5 -8
- package/dist/types/refs.d.ts.map +1 -1
- package/package.json +15 -3
- package/dist/core/reconciliation/validateTree.d.ts +0 -6
- package/dist/core/reconciliation/validateTree.d.ts.map +0 -1
- package/dist/core/reconciliation/validateTree.js +0 -48
- package/dist/core/reconciliation/validateTree.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/core/actions/helpers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/core/actions/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type FiberNode } from '../../types';
|
|
2
2
|
import type { RelayoutAction } from '../../types/actions';
|
|
3
3
|
/**
|
|
4
4
|
* Handles fiber tree layout updates when children have been modified. This
|
|
@@ -17,4 +17,5 @@ import type { RelayoutAction } from '../../types/actions';
|
|
|
17
17
|
* must be completed before this action runs.
|
|
18
18
|
*/
|
|
19
19
|
export declare function relayoutAction(fiber: FiberNode, { before, after }: RelayoutAction): void;
|
|
20
|
+
export declare const tryFixContainerType: (fiber: FiberNode) => void;
|
|
20
21
|
//# sourceMappingURL=relayout.action.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relayout.action.d.ts","sourceRoot":"","sources":["../../../src/core/actions/relayout.action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"relayout.action.d.ts","sourceRoot":"","sources":["../../../src/core/actions/relayout.action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAiBjE;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,SAAS,EAChB,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,cAAc,QAgDlC;AA6GD,eAAO,MAAM,mBAAmB,4BA8D/B,CAAC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { containerSym } from '../../types';
|
|
2
|
+
import { isEmptyContainer, isSingleChildContainer, isAutoContainer, } from '../compact';
|
|
3
|
+
import { asElement, getFiberDomNodes, getFirstContainerElement, } from './helpers';
|
|
4
|
+
import { nullthrowsForFiber, ReactError, } from '../reconciliation/errors/ReactError';
|
|
5
|
+
import { isFiberDead } from '../reconciliation/fibers';
|
|
4
6
|
/**
|
|
5
7
|
* Handles fiber tree layout updates when children have been modified. This
|
|
6
8
|
* action is triggered when:
|
|
@@ -18,9 +20,11 @@ import { nullthrows } from '../../utils';
|
|
|
18
20
|
* must be completed before this action runs.
|
|
19
21
|
*/
|
|
20
22
|
export function relayoutAction(fiber, { before, after }) {
|
|
21
|
-
if (
|
|
22
|
-
//
|
|
23
|
-
|
|
23
|
+
if (isSingleChildContainer(fiber)) {
|
|
24
|
+
// Fiber couldn't come here remaing a true single-child container:
|
|
25
|
+
// - Its only child is removed
|
|
26
|
+
// - … or now has a neighbor
|
|
27
|
+
fiber.element = containerSym;
|
|
24
28
|
}
|
|
25
29
|
if (after.size > 0) {
|
|
26
30
|
// Determine what can be used as a starting point for inserting new children.
|
|
@@ -46,38 +50,29 @@ export function relayoutAction(fiber, { before, after }) {
|
|
|
46
50
|
// Skip any nodes whose keys exist in `before`, since those are either
|
|
47
51
|
// unchanged or already updated (their `after` entries served only as
|
|
48
52
|
// references for the update process).
|
|
49
|
-
fiber.children = [...after.keys()].map((key) =>
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
* If the given fiber (a container) is in the compact mode we might need to
|
|
55
|
-
* unwrap it.
|
|
56
|
-
*/
|
|
57
|
-
const expandFiberWhenNeeded = (fiber, after) => {
|
|
58
|
-
if (isCompactNone(fiber)) {
|
|
59
|
-
// Case 1: it's <!--empty-->. It can't have children, so fix it.
|
|
60
|
-
unwrapCompactFiber(fiber);
|
|
53
|
+
fiber.children = [...after.keys()].map((key) => nullthrowsForFiber(fiber, before.get(key) ?? after.get(key)).fiber);
|
|
54
|
+
if (after.size > 0 && isEmptyContainer(fiber)) {
|
|
55
|
+
// Convert !-- to auto-container, 'cause now it has children.
|
|
56
|
+
fiber.element.remove();
|
|
57
|
+
fiber.element = containerSym;
|
|
61
58
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
// Case 2: It's in "single child" mode. Fix it to support multiple children.
|
|
65
|
-
unwrapCompactFiber(fiber);
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
throw new Error(`Invalid state: "remove" action didn't unwrap the parent container node during deletion of the only child`);
|
|
69
|
-
}
|
|
59
|
+
if (fiber.type !== 'tag') {
|
|
60
|
+
tryFixContainerType(fiber);
|
|
70
61
|
}
|
|
71
|
-
}
|
|
62
|
+
}
|
|
72
63
|
/**
|
|
73
64
|
* Puts the given `child` DOM nodes into the `parent`'s DOM area at the anchor
|
|
74
65
|
* position (`container` + `prev`). Updates the `child`'s parent node.
|
|
75
66
|
*/
|
|
76
67
|
const insertNewFiber = (parent, container, prev, child) => {
|
|
77
|
-
const
|
|
68
|
+
const parentElement = child.parent.element;
|
|
69
|
+
if (!(parentElement instanceof Element)) {
|
|
70
|
+
throw new ReactError(child.parent, `Wrong temporary container`);
|
|
71
|
+
}
|
|
72
|
+
const newChildren = [...parentElement.childNodes];
|
|
78
73
|
if (!prev) {
|
|
79
74
|
container.prepend(...newChildren);
|
|
80
|
-
prev =
|
|
75
|
+
prev = nullthrowsForFiber(parent, newChildren.at(-1));
|
|
81
76
|
}
|
|
82
77
|
else {
|
|
83
78
|
for (const n of newChildren) {
|
|
@@ -108,6 +103,100 @@ const repositionFiberWhenNeeded = (fiber, container, prev) => {
|
|
|
108
103
|
prev = n;
|
|
109
104
|
}
|
|
110
105
|
}
|
|
111
|
-
return
|
|
106
|
+
return nodes.at(-1);
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* Finds the anchor DOM node for attaching other nodes. There are two scenarios:
|
|
110
|
+
* 1) [element, null] - the new node should be added to the beginning of the
|
|
111
|
+
* element;
|
|
112
|
+
* 2) [element, child] - the new node should be added right after `child`.
|
|
113
|
+
*/
|
|
114
|
+
const getAnchor = (fiber) => {
|
|
115
|
+
if (fiber.type === 'tag') {
|
|
116
|
+
return [
|
|
117
|
+
asElement(fiber.data instanceof HTMLElement
|
|
118
|
+
? fiber.data // Portal's `element` is !--r:portal
|
|
119
|
+
: fiber.element),
|
|
120
|
+
null,
|
|
121
|
+
];
|
|
122
|
+
}
|
|
123
|
+
if (fiber.type === 'component' || fiber.type === 'fragment') {
|
|
124
|
+
if (isEmptyContainer(fiber)) {
|
|
125
|
+
// Put other nodes right after !--empty. The !--empty will be removed
|
|
126
|
+
// afterwards, but for now it'll be anchor.
|
|
127
|
+
return [fiber.element.parentElement, fiber.element];
|
|
128
|
+
}
|
|
129
|
+
if (isSingleChildContainer(fiber)) {
|
|
130
|
+
// The node has only one node. This node was not removed in this render
|
|
131
|
+
// (otherwise `fiber` would be converted into !--empty). Put other nodes
|
|
132
|
+
// right after this one. It can temporarily violate the right order, but
|
|
133
|
+
// it'll be automatically healed in the same for-cycle.
|
|
134
|
+
return [fiber.element.parentElement, fiber.element];
|
|
135
|
+
}
|
|
136
|
+
if (isAutoContainer(fiber)) {
|
|
137
|
+
// Find any child fiber that wasn't removed in this render. Use it's as an
|
|
138
|
+
// anchor. It's not necessarily the 1st node, but relyout will recover the
|
|
139
|
+
// right order anyway.
|
|
140
|
+
const survivedChild = nullthrowsForFiber(fiber, fiber.children.find((f) => !isFiberDead(f)));
|
|
141
|
+
const element = getFirstContainerElement(fiber, [survivedChild]);
|
|
142
|
+
return [element.parentElement, element];
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
// "text" & "null" types cannot contain children.
|
|
146
|
+
throw new ReactError(fiber, `Unsupported anchor type: ${fiber.type}`);
|
|
147
|
+
};
|
|
148
|
+
export const tryFixContainerType = (fiber) => {
|
|
149
|
+
// Handle the node itself.
|
|
150
|
+
switch (fiber.children.length) {
|
|
151
|
+
case 0: {
|
|
152
|
+
if (!isEmptyContainer(fiber)) {
|
|
153
|
+
throw new ReactError(fiber, `Can't recover !--empty fiber container`);
|
|
154
|
+
}
|
|
155
|
+
break;
|
|
156
|
+
}
|
|
157
|
+
case 1: {
|
|
158
|
+
if (isEmptyContainer(fiber)) {
|
|
159
|
+
throw new ReactError(fiber, `!--empty fibers can't have child nodes`);
|
|
160
|
+
}
|
|
161
|
+
if (isAutoContainer(fiber) && !isAutoContainer(fiber.children[0])) {
|
|
162
|
+
fiber.element = getFirstContainerElement(fiber);
|
|
163
|
+
}
|
|
164
|
+
break;
|
|
165
|
+
}
|
|
166
|
+
default: {
|
|
167
|
+
if (isEmptyContainer(fiber)) {
|
|
168
|
+
throw new ReactError(fiber, `Incorrect !--empty fiber`);
|
|
169
|
+
}
|
|
170
|
+
if (isSingleChildContainer(fiber)) {
|
|
171
|
+
fiber.element = containerSym;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
if (fiber.parent.type === 'tag') {
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
// Handle its parent.
|
|
179
|
+
switch (fiber.parent.children.length) {
|
|
180
|
+
case 0: {
|
|
181
|
+
throw new ReactError(fiber.parent, 'This fiber cannot be empty');
|
|
182
|
+
}
|
|
183
|
+
case 1: {
|
|
184
|
+
if (fiber.parent.element !== fiber.element) {
|
|
185
|
+
// Two scenarios:
|
|
186
|
+
// 1. fiber is a single-child node or a !--empty node. In such a case
|
|
187
|
+
// its parent should refer to the same DOM node.
|
|
188
|
+
// 2. fiber is an auto-container. Then the parent node must be an auto-
|
|
189
|
+
// container too.
|
|
190
|
+
tryFixContainerType(fiber.parent);
|
|
191
|
+
}
|
|
192
|
+
break;
|
|
193
|
+
}
|
|
194
|
+
default: {
|
|
195
|
+
if (!isAutoContainer(fiber.parent)) {
|
|
196
|
+
// Only auto-containers may contain 2+ nodes.
|
|
197
|
+
tryFixContainerType(fiber.parent);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
112
201
|
};
|
|
113
202
|
//# sourceMappingURL=relayout.action.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relayout.action.js","sourceRoot":"","sources":["../../../src/core/actions/relayout.action.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"relayout.action.js","sourceRoot":"","sources":["../../../src/core/actions/relayout.action.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type FiberNode } from '../../types';
|
|
2
|
+
import type { RemoveAction } from '../../types/actions';
|
|
2
3
|
/**
|
|
3
4
|
* This action can be called directly (<div/> -> []), or indirectly (<div/> ->
|
|
4
5
|
* false) from the replace action. `replaced` is `true` in the 2nd scenario.
|
|
5
6
|
*/
|
|
6
|
-
export declare function removeAction(fiber: FiberNode): void;
|
|
7
|
+
export declare function removeAction(fiber: FiberNode, { immediate, last }?: Pick<RemoveAction, 'immediate' | 'last'>): void;
|
|
7
8
|
//# sourceMappingURL=remove.action.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remove.action.d.ts","sourceRoot":"","sources":["../../../src/core/actions/remove.action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
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,QA2CnE"}
|
|
@@ -1,39 +1,43 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { emptyFiberNode, unsetRef } from './helpers';
|
|
2
|
+
import { ReactError } from '../reconciliation/errors/ReactError';
|
|
3
|
+
import { buildComment } from '../reconciliation/comments';
|
|
4
4
|
/**
|
|
5
5
|
* This action can be called directly (<div/> -> []), or indirectly (<div/> ->
|
|
6
6
|
* false) from the replace action. `replaced` is `true` in the 2nd scenario.
|
|
7
7
|
*/
|
|
8
|
-
export function removeAction(fiber) {
|
|
8
|
+
export function removeAction(fiber, { immediate, last } = {}) {
|
|
9
|
+
const lastChild = fiber.children.at(-1);
|
|
9
10
|
for (const child of fiber.children) {
|
|
10
11
|
// Recursively remove all children before removing the parent node. This is
|
|
11
12
|
// critical for components with effects - we must run cleanup effects
|
|
12
13
|
// before removing their parent nodes.
|
|
13
|
-
|
|
14
|
+
removeAction(child, { immediate, last: child === lastChild });
|
|
14
15
|
}
|
|
15
16
|
if (fiber.type === 'component') {
|
|
16
17
|
destroyHooks(fiber);
|
|
17
18
|
}
|
|
18
19
|
else if (fiber.role === 'context' && fiber.data.consumers.size > 0) {
|
|
19
|
-
throw new
|
|
20
|
+
throw new ReactError(fiber, `One of the context consumers wasn't unmounted`);
|
|
20
21
|
}
|
|
21
22
|
else if (fiber.type === 'tag' && fiber.role !== 'portal') {
|
|
22
23
|
unlistenTagEvents(fiber);
|
|
23
24
|
}
|
|
24
|
-
if (
|
|
25
|
-
//
|
|
26
|
-
//
|
|
27
|
-
|
|
25
|
+
if (last && fiber.parent.type !== 'tag') {
|
|
26
|
+
// At this point if `fiber` is a component or a fragment its element is a
|
|
27
|
+
// !--empty comment. It was converted to !--empty on the last child removal.
|
|
28
|
+
const anchor = fiber.element;
|
|
29
|
+
// Do the same for the parent fragment|component fiber node:
|
|
30
|
+
const empty = buildComment('empty', fiber.parent.id);
|
|
31
|
+
anchor.parentElement.insertBefore(empty, anchor);
|
|
32
|
+
fiber.parent.element = empty;
|
|
28
33
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
throw new Error(`Remove: Node is not empty`);
|
|
32
|
-
}
|
|
33
|
-
n.remove();
|
|
34
|
+
if (!(fiber.element instanceof Node)) {
|
|
35
|
+
throw new ReactError(fiber, `Couldn't remove a fiber without DOM element`);
|
|
34
36
|
}
|
|
37
|
+
// Text, tag, !--null or !--empty
|
|
38
|
+
fiber.element.remove();
|
|
35
39
|
if (fiber.ref) {
|
|
36
|
-
unsetRef(fiber
|
|
40
|
+
unsetRef(fiber, !!immediate);
|
|
37
41
|
}
|
|
38
42
|
emptyFiberNode(fiber); // Help with garbage collection.
|
|
39
43
|
}
|
|
@@ -44,9 +48,9 @@ export function removeAction(fiber) {
|
|
|
44
48
|
* create a memory leak. Better to mitigate this potential issue.
|
|
45
49
|
*/
|
|
46
50
|
const unlistenTagEvents = (fiber) => {
|
|
47
|
-
for (const
|
|
51
|
+
for (const record of Object.values(fiber.data.events)) {
|
|
48
52
|
if (record?.wrapper) {
|
|
49
|
-
fiber.element.removeEventListener(name, record.wrapper);
|
|
53
|
+
fiber.element.removeEventListener(record.name, record.wrapper, { capture: record.capture });
|
|
50
54
|
}
|
|
51
55
|
}
|
|
52
56
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remove.action.js","sourceRoot":"","sources":["../../../src/core/actions/remove.action.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,
|
|
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,KAAK,
|
|
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;AAKhE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,EAAE,aAAa,QAgB1E"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { getFiberDomNodes } from './helpers';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { applyAction } from './applyAction';
|
|
2
|
+
import { removeAction } from './remove.action';
|
|
3
|
+
import { nullthrowsForFiber } from '../reconciliation/errors/ReactError';
|
|
5
4
|
/**
|
|
6
5
|
* Handles fiber replacement when a component with the same key renders a
|
|
7
6
|
* completely different node. This happens when the `type`, `tag`, or
|
|
@@ -18,21 +17,15 @@ import { applyAction } from './applyAction';
|
|
|
18
17
|
*/
|
|
19
18
|
export function replaceAction(fiber, { newFiber }) {
|
|
20
19
|
const { parent } = fiber;
|
|
21
|
-
if (isCompactSingleChild(parent)) {
|
|
22
|
-
// The node we're replacing is the only child of its parent, so the parent
|
|
23
|
-
// is in compact mode. We should unwrap it before removing this node,
|
|
24
|
-
// otherwise it will be disconnected from the DOM tree.
|
|
25
|
-
unwrapCompactFiber(parent);
|
|
26
|
-
}
|
|
27
20
|
// Add new nodes right after the previous nodes.
|
|
28
21
|
const nodesBefore = getFiberDomNodes(fiber);
|
|
29
|
-
let prev =
|
|
22
|
+
let prev = nullthrowsForFiber(fiber, nodesBefore.at(-1));
|
|
30
23
|
const nodesAfter = getFiberDomNodes(newFiber);
|
|
31
24
|
for (const n of nodesAfter) {
|
|
32
25
|
prev.parentElement.insertBefore(n, prev.nextSibling);
|
|
33
26
|
prev = n;
|
|
34
27
|
}
|
|
35
|
-
|
|
28
|
+
removeAction(fiber);
|
|
36
29
|
fiber.parent = parent; // undo `parent = null` (done in "Remove").
|
|
37
30
|
displaceFiber(fiber, newFiber);
|
|
38
31
|
}
|
|
@@ -53,5 +46,37 @@ const displaceFiber = (before, after) => {
|
|
|
53
46
|
before.tag = after.tag;
|
|
54
47
|
before.props = after.props;
|
|
55
48
|
before.ref = after.ref;
|
|
49
|
+
if (after.type === 'component') {
|
|
50
|
+
moveHooks(before, after);
|
|
51
|
+
}
|
|
52
|
+
else if (after.role === 'context') {
|
|
53
|
+
updateContext(before, after);
|
|
54
|
+
}
|
|
55
|
+
// For debug purposes mark dead nodes with a negative number.
|
|
56
|
+
after.id = -after.id;
|
|
57
|
+
};
|
|
58
|
+
const moveHooks = (before, after) => {
|
|
59
|
+
for (const hook of after.data.hooks) {
|
|
60
|
+
if ('move' in hook) {
|
|
61
|
+
// Update internal fiber links
|
|
62
|
+
hook.move(before);
|
|
63
|
+
// TODO: add a test ^.
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* ContextFiberNode's `data.consumers` is a Set of components whose `useContext`
|
|
69
|
+
* target the given `data.ctx`. At the same time the `useContext` state
|
|
70
|
+
* preserves a link to the closest parent context provider of the given context
|
|
71
|
+
* type. That means once we `displace` the context provider we must update the
|
|
72
|
+
* hook states.
|
|
73
|
+
*/
|
|
74
|
+
const updateContext = (before, after) => {
|
|
75
|
+
for (const consumer of after.data.consumers) {
|
|
76
|
+
const useConextItems = consumer.data.hooks.filter((hook) => hook.type === 'context' && hook.ctx === after.data.ctx);
|
|
77
|
+
for (const hook of useConextItems) {
|
|
78
|
+
hook.providerFiber = before;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
56
81
|
};
|
|
57
82
|
//# sourceMappingURL=replace.action.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replace.action.js","sourceRoot":"","sources":["../../../src/core/actions/replace.action.ts"],"names":[],"mappings":"
|
|
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;AAEzE;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,aAAa,CAAC,KAAgB,EAAE,EAAE,QAAQ,EAAiB,EAAE;IAC3E,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAEzB,gDAAgD;IAChD,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC5C,IAAI,IAAI,GAAG,kBAAkB,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC9C,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,CAAC,aAAc,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACtD,IAAI,GAAG,CAAC,CAAC;IACX,CAAC;IAED,YAAY,CAAC,KAAK,CAAC,CAAC;IACpB,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,2CAA2C;IAElE,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAAA,CAChC;AAED,oEAAoE;AACpE,MAAM,aAAa,GAAG,CAAC,MAAiB,EAAE,KAAgB,EAAQ,EAAE,CAAC;IACnE,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IACrB,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACzB,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACzB,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IAEzB,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IACjC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpC,2EAA2E;QAC3E,4CAA4C;QAC5C,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;IACxB,CAAC;IAED,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IACnC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC/B,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;IAEvB,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC3B,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;IAEvB,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC/B,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC3B,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACpC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,6DAA6D;IAC7D,KAAK,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;AAAA,CACtB,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,MAAiB,EAAE,KAAyB,EAAQ,EAAE,CAAC;IACxE,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,KAAM,EAAE,CAAC;QACrC,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,8BAA8B;YAC9B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAClB,sBAAsB;QACxB,CAAC;IACH,CAAC;AAAA,CACF,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,aAAa,GAAG,CAAC,MAAiB,EAAE,KAAuB,EAAE,EAAE,CAAC;IACpE,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QAC5C,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAM,CAAC,MAAM,CAChD,CAAC,IAAI,EAA0B,EAAE,CAC/B,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CACzD,CAAC;QACF,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;YAClC,IAAI,CAAC,aAAa,GAAG,MAA0B,CAAC;QAClD,CAAC;IACH,CAAC;AAAA,CACF,CAAC"}
|
|
@@ -5,5 +5,5 @@ import type { SetAttrAction } from '../../types/actions';
|
|
|
5
5
|
* - Removing, adding or updating an attribute
|
|
6
6
|
* - Removing, adding or replacing an event handler
|
|
7
7
|
*/
|
|
8
|
-
export declare function setAttrAction(fiber: FiberNode, { name, value }: SetAttrAction): void;
|
|
8
|
+
export declare function setAttrAction(fiber: FiberNode, { name, value, creation }: Pick<SetAttrAction, 'name' | 'value' | 'creation'>): void;
|
|
9
9
|
//# sourceMappingURL=setAttr.action.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setAttr.action.d.ts","sourceRoot":"","sources":["../../../src/core/actions/setAttr.action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
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;AAchE;;;;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"}
|