@faiwer/react 0.9.0 → 19.0.2
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 +61 -10
- 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 +6 -1
- package/dist/core/actions/helpers.d.ts.map +1 -1
- package/dist/core/actions/helpers.js +20 -3
- 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 +4 -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 +17 -4
- package/dist/core/components.js.map +1 -1
- package/dist/core/devTools/devTools.d.ts +2 -0
- package/dist/core/devTools/devTools.d.ts.map +1 -0
- package/dist/core/devTools/devTools.js +43 -0
- package/dist/core/devTools/devTools.js.map +1 -0
- package/dist/core/devTools/hmr.d.ts +6 -0
- package/dist/core/devTools/hmr.d.ts.map +1 -0
- package/dist/core/devTools/hmr.js +55 -0
- package/dist/core/devTools/hmr.js.map +1 -0
- package/dist/core/devTools/toRFiber.d.ts +7 -0
- package/dist/core/devTools/toRFiber.d.ts.map +1 -0
- package/dist/core/devTools/toRFiber.js +143 -0
- package/dist/core/devTools/toRFiber.js.map +1 -0
- package/dist/core/devTools/toRJsx.d.ts +10 -0
- package/dist/core/devTools/toRJsx.d.ts.map +1 -0
- package/dist/core/devTools/toRJsx.js +62 -0
- package/dist/core/devTools/toRJsx.js.map +1 -0
- package/dist/core/devTools/types.d.ts +157 -0
- package/dist/core/devTools/types.d.ts.map +1 -0
- package/dist/core/devTools/types.js +19 -0
- package/dist/core/devTools/types.js.map +1 -0
- package/dist/core/preact/connect.d.ts +3 -0
- package/dist/core/preact/connect.d.ts.map +1 -0
- package/dist/core/preact/connect.js +162 -0
- package/dist/core/preact/connect.js.map +1 -0
- package/dist/core/preact/helpers.d.ts +12 -0
- package/dist/core/preact/helpers.d.ts.map +1 -0
- package/dist/core/preact/helpers.js +52 -0
- package/dist/core/preact/helpers.js.map +1 -0
- package/dist/core/preact/inspect.d.ts +9 -0
- package/dist/core/preact/inspect.d.ts.map +1 -0
- package/dist/core/preact/inspect.js +169 -0
- package/dist/core/preact/inspect.js.map +1 -0
- package/dist/core/preact/toVNode.d.ts +11 -0
- package/dist/core/preact/toVNode.d.ts.map +1 -0
- package/dist/core/preact/toVNode.js +150 -0
- package/dist/core/preact/toVNode.js.map +1 -0
- package/dist/core/preact/types.d.ts +180 -0
- package/dist/core/preact/types.d.ts.map +1 -0
- package/dist/core/preact/types.js +29 -0
- package/dist/core/preact/types.js.map +1 -0
- package/dist/core/preact/update.d.ts +13 -0
- package/dist/core/preact/update.d.ts.map +1 -0
- package/dist/core/preact/update.js +40 -0
- package/dist/core/preact/update.js.map +1 -0
- package/dist/core/reactNodeToFiberNode.d.ts +3 -1
- package/dist/core/reactNodeToFiberNode.d.ts.map +1 -1
- package/dist/core/reactNodeToFiberNode.js +79 -16
- package/dist/core/reactNodeToFiberNode.js.map +1 -1
- package/dist/core/reconciliation/applyActions.d.ts.map +1 -1
- package/dist/core/reconciliation/applyActions.js +1 -0
- package/dist/core/reconciliation/applyActions.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 +15 -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/compare/areFiberNodesEq.d.ts.map +1 -1
- package/dist/core/reconciliation/compare/areFiberNodesEq.js +4 -0
- package/dist/core/reconciliation/compare/areFiberNodesEq.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 +53 -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 +33 -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/fibers.d.ts +12 -2
- package/dist/core/reconciliation/fibers.d.ts.map +1 -1
- package/dist/core/reconciliation/fibers.js +60 -1
- package/dist/core/reconciliation/fibers.js.map +1 -1
- package/dist/core/reconciliation/invalidateFiber.js +2 -2
- 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 +32 -2
- package/dist/core/reconciliation/mount.js.map +1 -1
- package/dist/core/reconciliation/postCommit.d.ts.map +1 -1
- package/dist/core/reconciliation/postCommit.js +1 -0
- package/dist/core/reconciliation/postCommit.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/debug.d.ts +2 -0
- package/dist/debug.d.ts.map +1 -0
- package/dist/debug.js +2 -0
- package/dist/debug.js.map +1 -0
- 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/index.d.ts +40 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -0
- package/dist/index.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 +14 -1
- package/dist/types/app.d.ts.map +1 -1
- package/dist/types/component.d.ts +8 -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 +14 -1
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { PreactVNodeFields as F, PreactFragmentComponent, } from './types';
|
|
2
|
+
import { isRootFiber } from '../reconciliation/fibers';
|
|
3
|
+
const vnodesCache = new WeakMap();
|
|
4
|
+
/**
|
|
5
|
+
* Converts the given fiber node to a Preact VNode.
|
|
6
|
+
*/
|
|
7
|
+
export const fiberToVNode = (fiber,
|
|
8
|
+
/** Position of the node within its parent container. */
|
|
9
|
+
idx,
|
|
10
|
+
/** Provide true to skip the cache. */
|
|
11
|
+
skipCache) => {
|
|
12
|
+
let cached = !skipCache && vnodesCache.get(fiber);
|
|
13
|
+
if (cached) {
|
|
14
|
+
updateVNode(fiber, cached, idx);
|
|
15
|
+
return cached;
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
const vnode = createVNode(fiber, idx);
|
|
19
|
+
vnodesCache.set(fiber, vnode);
|
|
20
|
+
return vnode;
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Created a node Preact VNode from scratch based on the given fiber node.
|
|
25
|
+
*/
|
|
26
|
+
const createVNode = (fiber, idx) => {
|
|
27
|
+
const props = getPreactProps(fiber);
|
|
28
|
+
const component = getComponent(fiber);
|
|
29
|
+
return {
|
|
30
|
+
constructor: undefined,
|
|
31
|
+
ref: undefined,
|
|
32
|
+
key: fiber.key ?? undefined,
|
|
33
|
+
props,
|
|
34
|
+
type: component ?? fiber.tag,
|
|
35
|
+
[F.parent]: null, // Filled in `./connect.ts`
|
|
36
|
+
[F.diffIndicator]: 0, // Not used.
|
|
37
|
+
[F.compContext]: component ? getCompContext(fiber, component, props) : null,
|
|
38
|
+
[F.element]: fiber.role === 'portal'
|
|
39
|
+
? fiber.data
|
|
40
|
+
: fiber.element instanceof Element || fiber.element instanceof Text
|
|
41
|
+
? fiber.element
|
|
42
|
+
: // Comments are not supported
|
|
43
|
+
undefined,
|
|
44
|
+
[F.index]: isRootFiber(fiber) ? -1 : idx,
|
|
45
|
+
[F.children]: [], // Filled in `./connect.ts`
|
|
46
|
+
__o: null, // Not used.
|
|
47
|
+
[F.flags]: 0, // Not used.
|
|
48
|
+
[F.id]: fiber.id,
|
|
49
|
+
__source: fiber.source ?? undefined,
|
|
50
|
+
registered: false,
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
const compCtxCache = new WeakMap();
|
|
54
|
+
/**
|
|
55
|
+
* Generates a __c object. It's not unique per component, but unique per fiber.
|
|
56
|
+
* I.e., different versions of the same fiber node should have exactly the same
|
|
57
|
+
* __c node.
|
|
58
|
+
*/
|
|
59
|
+
const getCompContext = (fiber, component, props) => {
|
|
60
|
+
let [fiberId, compCtx] = compCtxCache.get(fiber) ?? [];
|
|
61
|
+
if (!compCtx || fiberId !== fiber.id) {
|
|
62
|
+
compCtx = {
|
|
63
|
+
render: component,
|
|
64
|
+
props,
|
|
65
|
+
context: {},
|
|
66
|
+
constructor: component,
|
|
67
|
+
};
|
|
68
|
+
compCtxCache.set(fiber, [fiber.id, compCtx]);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
compCtx.props = props;
|
|
72
|
+
}
|
|
73
|
+
return compCtx;
|
|
74
|
+
};
|
|
75
|
+
const updateVNode = (fiber, vnode, idx) => {
|
|
76
|
+
vnode.props = getPreactProps(fiber);
|
|
77
|
+
vnode[F.index] = idx;
|
|
78
|
+
const compCtx = vnode[F.compContext];
|
|
79
|
+
if (compCtx) {
|
|
80
|
+
compCtx.props = getPreactProps(fiber);
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* Return `PreactVNode.type`. It has to be either a string (a tag name) or a
|
|
85
|
+
* function. We generate pseudo component functions for portal and context nodes
|
|
86
|
+
* because in such a case it's better visualized in the UI.
|
|
87
|
+
*/
|
|
88
|
+
const getComponent = (fiber) => {
|
|
89
|
+
if (fiber.role === 'portal') {
|
|
90
|
+
// Generate a unique portal-component. Preact renders its own kind of
|
|
91
|
+
// portals as separate root nodes named "Z". Not very handy, TBH. So this
|
|
92
|
+
// tradeoff seems to be reasonable.
|
|
93
|
+
return getPortalComp(fiber);
|
|
94
|
+
}
|
|
95
|
+
if (fiber.role === 'context') {
|
|
96
|
+
// Generate a unique (per context kind) context-component.
|
|
97
|
+
return getContextComp(fiber.data.ctx);
|
|
98
|
+
}
|
|
99
|
+
if (isRootFiber(fiber) || fiber.type === 'fragment') {
|
|
100
|
+
// Critical: Preact DevTools expect here ONLY the fragment component.
|
|
101
|
+
return PreactFragmentComponent;
|
|
102
|
+
}
|
|
103
|
+
return fiber.component ?? null;
|
|
104
|
+
};
|
|
105
|
+
/**
|
|
106
|
+
* Returns `PreactVNode.props` + `__c.props`.
|
|
107
|
+
*/
|
|
108
|
+
export const getPreactProps = (fiber) => {
|
|
109
|
+
if (fiber.role === 'context' || fiber.type === 'component') {
|
|
110
|
+
return { ...fiber.props };
|
|
111
|
+
}
|
|
112
|
+
if (fiber.role === 'portal') {
|
|
113
|
+
const domNode = fiber.data;
|
|
114
|
+
const tagName = domNode.tagName.toLowerCase();
|
|
115
|
+
const classes = domNode.classList.length
|
|
116
|
+
? '.' + [...domNode.classList].join('.')
|
|
117
|
+
: '';
|
|
118
|
+
return {
|
|
119
|
+
// Preact DevTools will show it as "<div/>"
|
|
120
|
+
target: {
|
|
121
|
+
[F.element]: fiber.data,
|
|
122
|
+
type: tagName,
|
|
123
|
+
},
|
|
124
|
+
selector: `${tagName}${domNode.id ? `#${domNode.id}` : ''}${classes}`,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
// tag, null, fragment, text nodes. None of them is shown in the UI.
|
|
128
|
+
return {};
|
|
129
|
+
};
|
|
130
|
+
const ctxCache = new WeakMap();
|
|
131
|
+
const getContextComp = (ctx) => {
|
|
132
|
+
let component = ctxCache.get(ctx);
|
|
133
|
+
if (!component) {
|
|
134
|
+
component = function FragmentDummy() { return null; }; // prettier-ignore
|
|
135
|
+
component.displayName = (ctx.displayName || 'Provider') + '.Provider';
|
|
136
|
+
ctxCache.set(ctx, component);
|
|
137
|
+
}
|
|
138
|
+
return component;
|
|
139
|
+
};
|
|
140
|
+
const portalCache = new WeakMap();
|
|
141
|
+
const getPortalComp = (fiber) => {
|
|
142
|
+
let component = portalCache.get(fiber);
|
|
143
|
+
if (!component) {
|
|
144
|
+
component = function PortalDummy() { return null; }; // prettier-ignore
|
|
145
|
+
component.displayName = `Portal`;
|
|
146
|
+
portalCache.set(fiber, component);
|
|
147
|
+
}
|
|
148
|
+
return component;
|
|
149
|
+
};
|
|
150
|
+
//# sourceMappingURL=toVNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toVNode.js","sourceRoot":"","sources":["../../../src/core/preact/toVNode.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,iBAAiB,IAAI,CAAC,EACtB,uBAAuB,GAGxB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,MAAM,WAAW,GAAG,IAAI,OAAO,EAA0B,CAAC;AAC1D;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,KAAgB;AAChB,wDAAwD;AACxD,GAAW;AACX,sCAAsC;AACtC,SAAkB,EACL,EAAE,CAAC;IAChB,IAAI,MAAM,GAAG,CAAC,SAAS,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAClD,IAAI,MAAM,EAAE,CAAC;QACX,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QAChC,OAAO,MAAM,CAAC;IAChB,CAAC;SAAM,CAAC;QACN,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACtC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;AAAA,CACF,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,GAAG,CAAC,KAAgB,EAAE,GAAW,EAAe,EAAE,CAAC;IAClE,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IAEtC,OAAO;QACL,WAAW,EAAE,SAAS;QACtB,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,SAAS;QAC3B,KAAK;QACL,IAAI,EAAE,SAAS,IAAI,KAAK,CAAC,GAAG;QAC5B,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,2BAA2B;QAC7C,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,YAAY;QAClC,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;QAC3E,CAAC,CAAC,CAAC,OAAO,CAAC,EACT,KAAK,CAAC,IAAI,KAAK,QAAQ;YACrB,CAAC,CAAC,KAAK,CAAC,IAAI;YACZ,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,OAAO,IAAI,KAAK,CAAC,OAAO,YAAY,IAAI;gBACjE,CAAC,CAAC,KAAK,CAAC,OAAO;gBACf,CAAC,CAAC,6BAA6B;oBAC7B,SAAS;QACjB,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;QACxC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,2BAA2B;QAC7C,GAAG,EAAE,IAAI,EAAE,YAAY;QACvB,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,YAAY;QAC1B,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE;QAChB,QAAQ,EAAE,KAAK,CAAC,MAAM,IAAI,SAAS;QACnC,UAAU,EAAE,KAAK;KAClB,CAAC;AAAA,CACH,CAAC;AAEF,MAAM,YAAY,GAAG,IAAI,OAAO,EAG7B,CAAC;AACJ;;;;GAIG;AACH,MAAM,cAAc,GAAG,CACrB,KAAgB,EAChB,SAA4B,EAC5B,KAAmB,EACA,EAAE,CAAC;IACtB,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACvD,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,KAAK,CAAC,EAAE,EAAE,CAAC;QACrC,OAAO,GAAG;YACR,MAAM,EAAE,SAAU;YAClB,KAAK;YACL,OAAO,EAAE,EAAE;YACX,WAAW,EAAE,SAAU;SACxB,CAAC;QACF,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/C,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;IACxB,CAAC;IAED,OAAO,OAAO,CAAC;AAAA,CAChB,CAAC;AAEF,MAAM,WAAW,GAAG,CAClB,KAAgB,EAChB,KAAkB,EAClB,GAAW,EACL,EAAE,CAAC;IACT,KAAK,CAAC,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACpC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;IACrB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IACrC,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;AAAA,CACF,CAAC;AAEF;;;;GAIG;AACH,MAAM,YAAY,GAAG,CAAC,KAAgB,EAA8B,EAAE,CAAC;IACrE,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5B,qEAAqE;QACrE,yEAAyE;QACzE,mCAAmC;QACnC,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7B,0DAA0D;QAC1D,OAAO,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACpD,qEAAqE;QACrE,OAAO,uBAAuB,CAAC;IACjC,CAAC;IAED,OAAO,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC;AAAA,CAChC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAgB,EAAgB,EAAE,CAAC;IAChE,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC3D,OAAO,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC;QAC3B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM;YACtC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YACxC,CAAC,CAAC,EAAE,CAAC;QACP,OAAO;YACL,2CAA2C;YAC3C,MAAM,EAAE;gBACN,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,IAAI;gBACvB,IAAI,EAAE,OAAO;aACd;YACD,QAAQ,EAAE,GAAG,OAAO,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE;SACtE,CAAC;IACJ,CAAC;IAED,oEAAoE;IACpE,OAAO,EAAE,CAAC;AAAA,CACX,CAAC;AAEF,MAAM,QAAQ,GAAG,IAAI,OAAO,EAAuC,CAAC;AACpE,MAAM,cAAc,GAAG,CAAC,GAAqB,EAAqB,EAAE,CAAC;IACnE,IAAI,SAAS,GAAkC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjE,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,GAAG,SAAS,aAAa,GAAG,EAAE,OAAO,IAAI,CAAC,CAAA,CAAE,CAAC,CAAC,kBAAkB;QACzE,SAAS,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,WAAW,IAAI,UAAU,CAAC,GAAG,WAAW,CAAC;QACtE,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,SAAS,CAAC;AAAA,CAClB,CAAC;AAEF,MAAM,WAAW,GAAG,IAAI,OAAO,EAAsC,CAAC;AACtE,MAAM,aAAa,GAAG,CAAC,KAAsB,EAAqB,EAAE,CAAC;IACnE,IAAI,SAAS,GAA+B,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACnE,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,GAAG,SAAS,WAAW,GAAG,EAAE,OAAO,IAAI,CAAC,CAAA,CAAE,CAAC,CAAC,kBAAkB;QACvE,SAAS,CAAC,WAAW,GAAG,QAAQ,CAAC;QACjC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,SAAS,CAAC;AAAA,CAClB,CAAC"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import type { FiberNode, ReactComponent, ReactContext, UnknownProps } from '../../types';
|
|
2
|
+
export declare const PreactVNodeFields: {
|
|
3
|
+
readonly parent: "__";
|
|
4
|
+
readonly element: "__e";
|
|
5
|
+
readonly children: "__k";
|
|
6
|
+
readonly id: "__v";
|
|
7
|
+
readonly compContext: "__c";
|
|
8
|
+
readonly diffIndicator: "__b";
|
|
9
|
+
readonly flags: "__u";
|
|
10
|
+
readonly index: "__i";
|
|
11
|
+
};
|
|
12
|
+
declare const F: {
|
|
13
|
+
readonly parent: "__";
|
|
14
|
+
readonly element: "__e";
|
|
15
|
+
readonly children: "__k";
|
|
16
|
+
readonly id: "__v";
|
|
17
|
+
readonly compContext: "__c";
|
|
18
|
+
readonly diffIndicator: "__b";
|
|
19
|
+
readonly flags: "__u";
|
|
20
|
+
readonly index: "__i";
|
|
21
|
+
};
|
|
22
|
+
export declare function PreactFragmentComponent({ children }: {
|
|
23
|
+
children: JSX.Element;
|
|
24
|
+
}): import("../../index.js").JsxElement;
|
|
25
|
+
export type PreactCompContext = {
|
|
26
|
+
constructor: AnyReactComponent;
|
|
27
|
+
render: AnyReactComponent;
|
|
28
|
+
props: UnknownProps;
|
|
29
|
+
context: object;
|
|
30
|
+
base?: Element | Comment;
|
|
31
|
+
state?: object;
|
|
32
|
+
};
|
|
33
|
+
export type PreactVNode = {
|
|
34
|
+
constructor: unknown | undefined;
|
|
35
|
+
key: string | number | undefined;
|
|
36
|
+
props: UnknownProps | string | number;
|
|
37
|
+
ref: unknown | undefined;
|
|
38
|
+
/** Component function or a tag name */
|
|
39
|
+
type: string | AnyReactComponent | ReactContext<any> | null;
|
|
40
|
+
/** A parent VNode. */
|
|
41
|
+
[F.parent]: PreactVNode | null;
|
|
42
|
+
/** Diff/patch flag/counter. */
|
|
43
|
+
[F.diffIndicator]: number;
|
|
44
|
+
/** An object describing the component and its state. */
|
|
45
|
+
[F.compContext]: PreactCompContext | null;
|
|
46
|
+
/** A DOM node. Refers to the 1st real child DOM element if doesn't have its own. */
|
|
47
|
+
[F.element]: Element | Text | undefined;
|
|
48
|
+
/** Index within the parent's children array. -1 for the root node. */
|
|
49
|
+
[F.index]: number;
|
|
50
|
+
/** Internal children list. */
|
|
51
|
+
[F.children]: Array<PreactVNode | null>;
|
|
52
|
+
/** Not used by dev tools. */
|
|
53
|
+
__o: null;
|
|
54
|
+
/** Hook state counter. */
|
|
55
|
+
[F.flags]: number;
|
|
56
|
+
/** VNode unique ID. */
|
|
57
|
+
[F.id]: number;
|
|
58
|
+
__self?: object;
|
|
59
|
+
__source?: {
|
|
60
|
+
columnNumber: number;
|
|
61
|
+
fileName: string;
|
|
62
|
+
lineNumber: number;
|
|
63
|
+
};
|
|
64
|
+
/** Our fields. */
|
|
65
|
+
registered: boolean;
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* A special object that:
|
|
69
|
+
* - A preact app creates it on its start up
|
|
70
|
+
* - And then the Preact Dev Tools injected script fills this object with extra
|
|
71
|
+
* API hooks that must be called during the render cycle.
|
|
72
|
+
*/
|
|
73
|
+
export type PreactOptions = {
|
|
74
|
+
/** Should be called once on app mount. vNode is `app.root.children[0].
|
|
75
|
+
* `Element` is the DOM node where the app is mounted. */
|
|
76
|
+
_root: (vNode: unknown, element: Element) => void;
|
|
77
|
+
/** Called when a new VNode is created. */
|
|
78
|
+
vnode: (vNode: unknown) => void;
|
|
79
|
+
/** Called at the end of each render. */
|
|
80
|
+
_commit: (vNode: PreactVNode, commitQueue: unknown[]) => void;
|
|
81
|
+
/** Called before Preact handles a node. */
|
|
82
|
+
_diff: (vNode: PreactVNode) => void;
|
|
83
|
+
/** Called after Preact handled a node. */
|
|
84
|
+
diffed: (vnode: PreactVNode) => void;
|
|
85
|
+
/** Called when Preact render engine handle children of a container like node. */
|
|
86
|
+
_render: (vNode: PreactVNode, parent?: PreactVNode) => void;
|
|
87
|
+
/** Called when Preact removes a node. */
|
|
88
|
+
unmount: (vnode: PreactVNode) => void;
|
|
89
|
+
};
|
|
90
|
+
export type PreactRendererConfig = {
|
|
91
|
+
Fragment: typeof PreactFragmentComponent;
|
|
92
|
+
};
|
|
93
|
+
/** Preact DevTools support was build based on this Preact codebase version. */
|
|
94
|
+
export declare const PREACT_VERSION = "10.28.0";
|
|
95
|
+
/** window.__PREACT_DEVTOOLS__ */
|
|
96
|
+
export type PreactDevTools = {
|
|
97
|
+
renderers: Map<number, PreactRenderer>;
|
|
98
|
+
/** A hook that should be called once per app. Automatically created a new
|
|
99
|
+
* Preact-renderer and registers it. */
|
|
100
|
+
attachPreact: (version: typeof PREACT_VERSION, options: PreactOptions, rendererConfig: PreactRendererConfig) => number;
|
|
101
|
+
};
|
|
102
|
+
export type PreactRenderer = {
|
|
103
|
+
getVNodeById: (id: number) => PreactVNode | null;
|
|
104
|
+
/** Called on a tree node selection. */
|
|
105
|
+
inspect: (id: number) => PreactInspection;
|
|
106
|
+
/** Called on manual props/context/state changes for the selected tree node. */
|
|
107
|
+
update: (id: number, type: string, path: string[], value: unknown) => void;
|
|
108
|
+
};
|
|
109
|
+
/** A hook representation. Or sub-value of a hook value. */
|
|
110
|
+
export interface PreactHookInspection {
|
|
111
|
+
/** Unique ID. */
|
|
112
|
+
id: string;
|
|
113
|
+
/** IDs of subhooks. */
|
|
114
|
+
children: string[];
|
|
115
|
+
/** The hierarhcy level. */
|
|
116
|
+
depth: number;
|
|
117
|
+
/** Hook name to display. */
|
|
118
|
+
name: unknown;
|
|
119
|
+
/** When `true` the `.value` can be temporarily edited. */
|
|
120
|
+
editable: boolean;
|
|
121
|
+
/**
|
|
122
|
+
* - `typeof` is it's a field of a hook's value.
|
|
123
|
+
* - `undefined` for regular hooks.
|
|
124
|
+
* - `object` for the root pseudo-hook
|
|
125
|
+
*/
|
|
126
|
+
type: string;
|
|
127
|
+
meta: null | {
|
|
128
|
+
index: number;
|
|
129
|
+
type: string;
|
|
130
|
+
};
|
|
131
|
+
/** An order within the parent hook or the component. */
|
|
132
|
+
index?: number;
|
|
133
|
+
/** The value of the hook. May be null. */
|
|
134
|
+
value: unknown;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* A component representation for the selected tree node.
|
|
138
|
+
*/
|
|
139
|
+
export interface PreactInspection {
|
|
140
|
+
context: null;
|
|
141
|
+
canSuspend: boolean;
|
|
142
|
+
key: FiberNode['key'] | null;
|
|
143
|
+
hooks: PreactHookInspection[];
|
|
144
|
+
/** Long DevTools' ID, not VNode.id */
|
|
145
|
+
id: number;
|
|
146
|
+
name: string;
|
|
147
|
+
props: UnknownProps;
|
|
148
|
+
state: null;
|
|
149
|
+
signals: null;
|
|
150
|
+
type: number;
|
|
151
|
+
suspended: boolean;
|
|
152
|
+
version: typeof PREACT_VERSION;
|
|
153
|
+
}
|
|
154
|
+
export declare enum PreactVNodeType {
|
|
155
|
+
FN_COMPONENT = 3
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* App['preact']
|
|
159
|
+
*/
|
|
160
|
+
export type PreactAdapter = {
|
|
161
|
+
/** A middleware layer over the Preact DevTools API. */
|
|
162
|
+
api: PreactAPI;
|
|
163
|
+
/** window.__PREACT_DEVTOOLS__ */
|
|
164
|
+
global: PreactDevTools;
|
|
165
|
+
/** Fiber IDs of nodes invalidated within the last render. */
|
|
166
|
+
invalidated: Set<number>;
|
|
167
|
+
/** createRoot().render(_this_). */
|
|
168
|
+
userRootVNode: PreactVNode | null;
|
|
169
|
+
/** A banch of helper methods on the page side created by the Preact DevTools
|
|
170
|
+
* extension */
|
|
171
|
+
renderer: PreactRenderer;
|
|
172
|
+
};
|
|
173
|
+
/** A middleware layer over the Preact DevTools API. */
|
|
174
|
+
export type PreactAPI = {
|
|
175
|
+
afterRender: () => void;
|
|
176
|
+
unmount: (fiber: FiberNode) => void;
|
|
177
|
+
};
|
|
178
|
+
type AnyReactComponent = ReactComponent<any>;
|
|
179
|
+
export {};
|
|
180
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/preact/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,cAAc,EACd,YAAY,EACZ,YAAY,EACb,MAAM,oBAAoB,CAAC;AAE5B,eAAO,MAAM,iBAAiB;;;;;;;;;CASpB,CAAC;AACX,QAAA,MAAM,CAAC;;;;;;;;;CAAoB,CAAC;AAG5B,wBAAgB,uBAAuB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;CAAE,qCAE/E;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,iBAAiB,CAAC;IAC/B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,WAAW,EAAE,OAAO,GAAG,SAAS,CAAC;IACjC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACjC,KAAK,EACD,YAAY,GAEZ,MAAM,GACN,MAAM,CAAC;IACX,GAAG,EAAE,OAAO,GAAG,SAAS,CAAC;IACzB,uCAAuC;IACvC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IAC5D,sBAAsB;IACtB,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC/B,+BAA+B;IAC/B,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAC1B,wDAAwD;IACxD,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC1C,oFAAoF;IACpF,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;IACxC,sEAAsE;IACtE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IACxC,6BAA6B;IAC7B,GAAG,EAAE,IAAI,CAAC;IACV,0BAA0B;IAC1B,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAClB,uBAAuB;IACvB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1E,kBAAkB;IAClB,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B;6DACyD;IACzD,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAClD,0CAA0C;IAC1C,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAChC,wCAAwC;IACxC,OAAO,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAC9D,2CAA2C;IAC3C,KAAK,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IACpC,0CAA0C;IAC1C,MAAM,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IACrC,iFAAiF;IACjF,OAAO,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,IAAI,CAAC;IAC5D,yCAAyC;IACzC,OAAO,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;CACvC,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,OAAO,uBAAuB,CAAC;CAC1C,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,cAAc,YAAY,CAAC;AAExC,iCAAiC;AACjC,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACvC;2CACuC;IACvC,YAAY,EAAE,CACZ,OAAO,EAAE,OAAO,cAAc,EAC9B,OAAO,EAAE,aAAa,EACtB,cAAc,EAAE,oBAAoB,KACjC,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,WAAW,GAAG,IAAI,CAAC;IACjD,uCAAuC;IACvC,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,gBAAgB,CAAC;IAC1C,+EAA+E;IAC/E,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CAC5E,CAAC;AAEF,2DAA2D;AAC3D,MAAM,WAAW,oBAAoB;IACnC,iBAAiB;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,uBAAuB;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,4BAA4B;IAC5B,IAAI,EAAE,OAAO,CAAC;IACd,0DAA0D;IAC1D,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,IAAI,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,IAAI,CAAC;IACd,UAAU,EAAE,OAAO,CAAC;IACpB,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAC7B,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAC9B,sCAAsC;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,YAAY,CAAC;IACpB,KAAK,EAAE,IAAI,CAAC;IACZ,OAAO,EAAE,IAAI,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,cAAc,CAAC;CAChC;AAED,oBAAY,eAAe;IACzB,YAAY,IAAI;CAOjB;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,uDAAuD;IACvD,GAAG,EAAE,SAAS,CAAC;IACf,iCAAiC;IACjC,MAAM,EAAE,cAAc,CAAC;IACvB,6DAA6D;IAC7D,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,mCAAmC;IACnC,aAAa,EAAE,WAAW,GAAG,IAAI,CAAC;IAClC;mBACe;IACf,QAAQ,EAAE,cAAc,CAAC;CAC1B,CAAC;AAEF,uDAAuD;AACvD,MAAM,MAAM,SAAS,GAAG;IACtB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;CACrC,CAAC;AAEF,KAAK,iBAAiB,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export const PreactVNodeFields = {
|
|
2
|
+
parent: '__',
|
|
3
|
+
element: '__e',
|
|
4
|
+
children: '__k',
|
|
5
|
+
id: '__v',
|
|
6
|
+
compContext: '__c',
|
|
7
|
+
diffIndicator: '__b',
|
|
8
|
+
flags: '__u',
|
|
9
|
+
index: '__i',
|
|
10
|
+
};
|
|
11
|
+
const F = PreactVNodeFields;
|
|
12
|
+
// prettier-ignore
|
|
13
|
+
export function PreactFragmentComponent({ children }) {
|
|
14
|
+
return children;
|
|
15
|
+
}
|
|
16
|
+
/** Preact DevTools support was build based on this Preact codebase version. */
|
|
17
|
+
export const PREACT_VERSION = '10.28.0';
|
|
18
|
+
export { PreactVNodeType };
|
|
19
|
+
var PreactVNodeType;
|
|
20
|
+
(function (PreactVNodeType) {
|
|
21
|
+
PreactVNodeType[PreactVNodeType["FN_COMPONENT"] = 3] = "FN_COMPONENT";
|
|
22
|
+
// Since we don't use them it's better to comment them
|
|
23
|
+
// MEMO = 5,
|
|
24
|
+
// FORWARD_REF = 4,
|
|
25
|
+
// SUSPENCE = 6,
|
|
26
|
+
// PORTAL = 9,
|
|
27
|
+
// ELEMENT = 1,
|
|
28
|
+
})(PreactVNodeType || (PreactVNodeType = {}));
|
|
29
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/preact/types.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,KAAK;IACf,EAAE,EAAE,KAAK;IACT,WAAW,EAAE,KAAK;IAClB,aAAa,EAAE,KAAK;IACpB,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;CACJ,CAAC;AACX,MAAM,CAAC,GAAG,iBAAiB,CAAC;AAE5B,kBAAkB;AAClB,MAAM,UAAU,uBAAuB,CAAC,EAAE,QAAQ,EAA8B,EAAE;IAChF,OAAO,QAAQ,CAAC;AAAA,CACjB;AAyED,+EAA+E;AAC/E,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC;SAkE5B,eAAe;AAA3B,IAAY,eAQX;AARD,WAAY,eAAe;IACzB,qEAAgB,CAAA;IAChB,sDAAsD;IACtD,YAAY;IACZ,mBAAmB;IACnB,gBAAgB;IAChB,cAAc;IACd,eAAe;AANE,CACnB,EAFY,eAAe,KAAf,eAAe,QAQ1B"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { App } from '../../types';
|
|
2
|
+
import type { PreactRenderer } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Custom implementation for PreactRenderer.update. It's simpler to intercept
|
|
5
|
+
* update messages at the top level, than to support it via `__c.forceUpdate()`.
|
|
6
|
+
* Internally PreactDev Tools patches `vnode.__c.props` and calls
|
|
7
|
+
* `forceUpdate()`. `__c.props` are not real props. We prettify them for
|
|
8
|
+
* dev-tools. E.g. we convert children JSX nodes into Preact VNodes. So we
|
|
9
|
+
* cannot rely in the default behavior, it'll break components due to wrong type
|
|
10
|
+
* of children JSX elements.
|
|
11
|
+
*/
|
|
12
|
+
export declare function patchedPreactRendererUpdate(app: App, renderer: PreactRenderer, devToolsNodeId: number, type: string, path: string[], value: unknown): void;
|
|
13
|
+
//# sourceMappingURL=update.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/core/preact/update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,GAAG,EAIJ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAM9C;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,cAAc,EACxB,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EAAE,EACd,KAAK,EAAE,OAAO,GACb,IAAI,CA+BN"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { nullthrows } from '../../utils';
|
|
2
|
+
import { findFiberById } from '../actions/helpers';
|
|
3
|
+
import { invalidateFiber } from '../reconciliation/invalidateFiber';
|
|
4
|
+
import { ReactError } from '../reconciliation/errors/ReactError';
|
|
5
|
+
/**
|
|
6
|
+
* Custom implementation for PreactRenderer.update. It's simpler to intercept
|
|
7
|
+
* update messages at the top level, than to support it via `__c.forceUpdate()`.
|
|
8
|
+
* Internally PreactDev Tools patches `vnode.__c.props` and calls
|
|
9
|
+
* `forceUpdate()`. `__c.props` are not real props. We prettify them for
|
|
10
|
+
* dev-tools. E.g. we convert children JSX nodes into Preact VNodes. So we
|
|
11
|
+
* cannot rely in the default behavior, it'll break components due to wrong type
|
|
12
|
+
* of children JSX elements.
|
|
13
|
+
*/
|
|
14
|
+
export function patchedPreactRendererUpdate(app, renderer, devToolsNodeId, type, path, value) {
|
|
15
|
+
const vnode = nullthrows(renderer.getVNodeById(devToolsNodeId));
|
|
16
|
+
// prettier-ignore
|
|
17
|
+
const fiber = nullthrows(findFiberById(app.root, vnode.__v));
|
|
18
|
+
if (fiber.type === 'tag') {
|
|
19
|
+
throw new ReactError(fiber, `Updating portal props is not supported`);
|
|
20
|
+
}
|
|
21
|
+
if (type !== 'props') {
|
|
22
|
+
// - `state` & `context`: only for class components, which are not directly
|
|
23
|
+
// supported. Instead they are presented as fn-component hooks.
|
|
24
|
+
// - `signal`: signals are not supported.
|
|
25
|
+
throw new ReactError(fiber, `Updating ${type} is not yet implemented`);
|
|
26
|
+
}
|
|
27
|
+
let root = fiber.props;
|
|
28
|
+
for (const k of path.slice(0, -1))
|
|
29
|
+
root = root[k];
|
|
30
|
+
root[path.at(-1)] = value;
|
|
31
|
+
if (fiber.type === 'component') {
|
|
32
|
+
invalidateFiber(fiber);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
for (const consumer of fiber.data.consumers) {
|
|
36
|
+
invalidateFiber(consumer);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/core/preact/update.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAEjE;;;;;;;;GAQG;AACH,MAAM,UAAU,2BAA2B,CACzC,GAAQ,EACR,QAAwB,EACxB,cAAsB,EACtB,IAAY,EACZ,IAAc,EACd,KAAc,EACR;IACN,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC;IAChE,kBAAkB;IAClB,MAAM,KAAK,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAIxC,CAAC;IAEpB,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,UAAU,CAAC,KAAK,EAAE,wCAAwC,CAAC,CAAC;IACxE,CAAC;IAED,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,2EAA2E;QAC3E,kEAAkE;QAClE,yCAAyC;QACzC,MAAM,IAAI,UAAU,CAAC,KAAK,EAAE,YAAY,IAAI,yBAAyB,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,IAAI,GAAG,KAAK,CAAC,KAAqB,CAAC;IACvC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAAE,IAAI,GAAG,IAAI,CAAC,CAAC,CAAiB,CAAC;IAClE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,GAAG,KAAK,CAAC;IAE3B,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC/B,eAAe,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAC5C,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;AAAA,CACF"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import type { Action } from '../types/actions';
|
|
1
2
|
import { type FiberNode } from '../types';
|
|
3
|
+
import { ReactError } from './reconciliation/errors/ReactError';
|
|
2
4
|
/**
|
|
3
5
|
* Converts any possible JSX.Element to a FiberNode, that is used by the engine
|
|
4
6
|
* everywhere. We don't use JSX.Elements outside of this function.
|
|
5
7
|
* <div/> -> FiberNode.
|
|
6
8
|
*/
|
|
7
|
-
export declare const jsxElementToFiberNode: (jsxElement: import("../index.js").JsxElement, parent: FiberNode, unwrapComponents: boolean) => FiberNode;
|
|
9
|
+
export declare const jsxElementToFiberNode: (jsxElement: import("../index.js").JsxElement, parent: FiberNode, unwrapComponents: boolean) => ReactError | [FiberNode, Action[]];
|
|
8
10
|
//# sourceMappingURL=reactNodeToFiberNode.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reactNodeToFiberNode.d.ts","sourceRoot":"","sources":["../../src/core/reactNodeToFiberNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,SAAS,EAUf,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"reactNodeToFiberNode.d.ts","sourceRoot":"","sources":["../../src/core/reactNodeToFiberNode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAGL,KAAK,SAAS,EAUf,MAAM,UAAU,CAAC;AAQlB,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAGhE;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,qIA4LjC,CAAC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { runComponent } from './components';
|
|
2
2
|
import { createFiberNode, FRAGMENT_TAG, toFiberChildren, } from './reconciliation/fibers';
|
|
3
3
|
import { isContextProvider } from './reconciliation/typeGuards';
|
|
4
|
+
import { ReactError } from './reconciliation/errors/ReactError';
|
|
5
|
+
import { isErrorBoundary } from '../hooks/useError';
|
|
4
6
|
/**
|
|
5
7
|
* Converts any possible JSX.Element to a FiberNode, that is used by the engine
|
|
6
8
|
* everywhere. We don't use JSX.Elements outside of this function.
|
|
@@ -30,7 +32,7 @@ unwrapComponents) => {
|
|
|
30
32
|
parent,
|
|
31
33
|
props: null,
|
|
32
34
|
};
|
|
33
|
-
return nullFiber;
|
|
35
|
+
return [nullFiber, NO_ACTIONS];
|
|
34
36
|
}
|
|
35
37
|
// A text node (string, number or boolean).
|
|
36
38
|
if (typeof jsxElement !== 'object') {
|
|
@@ -40,7 +42,7 @@ unwrapComponents) => {
|
|
|
40
42
|
parent,
|
|
41
43
|
props: { text: String(jsxElement) },
|
|
42
44
|
};
|
|
43
|
-
return textFiber;
|
|
45
|
+
return [textFiber, NO_ACTIONS];
|
|
44
46
|
}
|
|
45
47
|
const { key = null } = jsxElement;
|
|
46
48
|
const { ref = null, ...props } = jsxElement.props;
|
|
@@ -54,8 +56,13 @@ unwrapComponents) => {
|
|
|
54
56
|
role: 'portal',
|
|
55
57
|
data: jsxElement.type,
|
|
56
58
|
};
|
|
57
|
-
|
|
58
|
-
|
|
59
|
+
const childrenX = childrenToNodes(portalFiber, jsxElement.children, unwrapComponents);
|
|
60
|
+
// Portals cannot be error boundaries. Pass through.
|
|
61
|
+
if (childrenX instanceof ReactError)
|
|
62
|
+
return childrenX;
|
|
63
|
+
const [children, childrenActions] = childrenX;
|
|
64
|
+
portalFiber.children = children;
|
|
65
|
+
return [portalFiber, childrenActions];
|
|
59
66
|
}
|
|
60
67
|
// <ctx.Provider value=?/>
|
|
61
68
|
if (isContextProvider(jsxElement.type)) {
|
|
@@ -69,8 +76,13 @@ unwrapComponents) => {
|
|
|
69
76
|
data: { ctx: jsxElement.type.__ctx, consumers: new Set() },
|
|
70
77
|
source: jsxElement.source,
|
|
71
78
|
};
|
|
72
|
-
|
|
73
|
-
|
|
79
|
+
const childrenX = childrenToNodes(contextFiber, jsxElement.children, unwrapComponents);
|
|
80
|
+
// Context providers cannot be error boundaries. Pass through.
|
|
81
|
+
if (childrenX instanceof ReactError)
|
|
82
|
+
return childrenX;
|
|
83
|
+
const [children, childrenActions] = childrenX;
|
|
84
|
+
contextFiber.children = children;
|
|
85
|
+
return [contextFiber, childrenActions];
|
|
74
86
|
}
|
|
75
87
|
// [], </> or <Fragment/>.
|
|
76
88
|
if (jsxElement.type === FRAGMENT_TAG) {
|
|
@@ -80,26 +92,59 @@ unwrapComponents) => {
|
|
|
80
92
|
key,
|
|
81
93
|
source: jsxElement.source,
|
|
82
94
|
};
|
|
83
|
-
|
|
84
|
-
|
|
95
|
+
const childrenX = childrenToNodes(fragmentFiber, jsxElement.children, unwrapComponents);
|
|
96
|
+
// Fragments cannot be error boundaries. Pass through.
|
|
97
|
+
if (childrenX instanceof ReactError)
|
|
98
|
+
return childrenX;
|
|
99
|
+
const [children, childrenActions] = childrenX;
|
|
100
|
+
fragmentFiber.children = children;
|
|
101
|
+
return [fragmentFiber, childrenActions];
|
|
85
102
|
}
|
|
86
103
|
// A component node (<Message/>):
|
|
87
104
|
if (typeof jsxElement.type === 'function') {
|
|
105
|
+
const actions = [];
|
|
88
106
|
const fiber = {
|
|
89
107
|
...createFiberNode(parent),
|
|
90
108
|
type: 'component',
|
|
91
109
|
component: jsxElement.type,
|
|
92
110
|
key,
|
|
93
111
|
props: jsxElement.props,
|
|
94
|
-
data: {
|
|
112
|
+
data: {
|
|
113
|
+
hooks: null,
|
|
114
|
+
actions: [],
|
|
115
|
+
isErrorBoundary: false,
|
|
116
|
+
remount: false,
|
|
117
|
+
},
|
|
95
118
|
source: jsxElement.source,
|
|
96
119
|
};
|
|
97
120
|
if (unwrapComponents) {
|
|
98
|
-
const
|
|
99
|
-
|
|
121
|
+
const compX = runComponent(fiber, null);
|
|
122
|
+
// Component can't be its own error boundary, thus pass it through.
|
|
123
|
+
if (compX instanceof ReactError)
|
|
124
|
+
return compX;
|
|
125
|
+
const [content, compActions] = compX;
|
|
126
|
+
let childrenX = jsxElementToFiberNode(content, fiber, unwrapComponents);
|
|
127
|
+
if (childrenX instanceof ReactError) {
|
|
128
|
+
if (isErrorBoundary(fiber)) {
|
|
129
|
+
// Since it's a brand new fiber we don't have any DOM nodes yet. But
|
|
130
|
+
// it must have one. Create a new null nodes to make it an anchor for
|
|
131
|
+
// the error boundary.
|
|
132
|
+
const nullFiber = {
|
|
133
|
+
...createFiberNode(fiber),
|
|
134
|
+
type: 'null',
|
|
135
|
+
parent: fiber,
|
|
136
|
+
props: null,
|
|
137
|
+
};
|
|
138
|
+
childrenX = [nullFiber, [childrenX.genCatchAction()]];
|
|
139
|
+
}
|
|
140
|
+
else
|
|
141
|
+
return childrenX;
|
|
142
|
+
}
|
|
143
|
+
const [child, childrenActions] = childrenX;
|
|
100
144
|
fiber.children = toFiberChildren(child);
|
|
145
|
+
actions.push(...compActions, ...childrenActions);
|
|
101
146
|
}
|
|
102
|
-
return fiber;
|
|
147
|
+
return [fiber, actions];
|
|
103
148
|
}
|
|
104
149
|
if (typeof jsxElement.type === 'string') {
|
|
105
150
|
validateRef(ref);
|
|
@@ -113,13 +158,30 @@ unwrapComponents) => {
|
|
|
113
158
|
data: { events: {}, styles: null },
|
|
114
159
|
source: jsxElement.source,
|
|
115
160
|
};
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
161
|
+
const childrenX = childrenToNodes(tagFiber, jsxElement.children, unwrapComponents);
|
|
162
|
+
// Tags cannot be error boundaries. Pass through.
|
|
163
|
+
if (childrenX instanceof ReactError)
|
|
164
|
+
return childrenX;
|
|
165
|
+
const [children, childrenActions] = childrenX;
|
|
166
|
+
tagFiber.children = children;
|
|
167
|
+
return [tagFiber, childrenActions];
|
|
120
168
|
}
|
|
121
169
|
throw new Error(`Unknown format of JSX.Element (${jsxElement.type})`);
|
|
122
170
|
};
|
|
171
|
+
const childrenToNodes = (fiber, elements, unwrapComponents) => {
|
|
172
|
+
const children = [];
|
|
173
|
+
const actions = [];
|
|
174
|
+
for (const childEl of elements) {
|
|
175
|
+
const childX = jsxElementToFiberNode(childEl, fiber, unwrapComponents);
|
|
176
|
+
// `fiber` can't be a component here, thus it can't be an error boundary.
|
|
177
|
+
if (childX instanceof ReactError)
|
|
178
|
+
return childX;
|
|
179
|
+
const [node, childrenActions] = childX;
|
|
180
|
+
children.push(node);
|
|
181
|
+
actions.push(...childrenActions);
|
|
182
|
+
}
|
|
183
|
+
return [children, actions];
|
|
184
|
+
};
|
|
123
185
|
function validateContextProviderProps(props) {
|
|
124
186
|
if (!('value' in props)) {
|
|
125
187
|
throw new Error(`Context provider value is not provided`);
|
|
@@ -134,4 +196,5 @@ function validateRef(src) {
|
|
|
134
196
|
}
|
|
135
197
|
throw new Error(`Unsupported format of a ref or a ref handler`);
|
|
136
198
|
}
|
|
199
|
+
const NO_ACTIONS = [];
|
|
137
200
|
//# sourceMappingURL=reactNodeToFiberNode.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reactNodeToFiberNode.js","sourceRoot":"","sources":["../../src/core/reactNodeToFiberNode.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"reactNodeToFiberNode.js","sourceRoot":"","sources":["../../src/core/reactNodeToFiberNode.ts"],"names":[],"mappings":"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"}
|