Skip to content

Commit 4cb6e75

Browse files
fix..
1 parent e4b8de1 commit 4cb6e75

File tree

5 files changed

+54
-33
lines changed

5 files changed

+54
-33
lines changed

chrome/public/bundle/hook.js

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2451,10 +2451,6 @@
24512451
};
24522452

24532453
var typeKeys = [];
2454-
var platform = null;
2455-
var setPlatform = function (p) {
2456-
platform = p;
2457-
};
24582454
// SEE https://github.com/facebook/react/blob/main/compiler/packages/react-compiler-runtime/src/index.ts
24592455
var reactCompilerSymbol = Symbol.for("react.memo_cache_sentinel");
24602456
Object.keys(exports.NODE_TYPE).forEach(function (key) {
@@ -2825,6 +2821,18 @@
28252821
};
28262822
});
28272823
};
2824+
var getDispatch = function (fiber) {
2825+
var dispatch;
2826+
while (fiber) {
2827+
var typedFiber = fiber;
2828+
if (typedFiber.renderDispatch) {
2829+
dispatch = typedFiber.renderDispatch;
2830+
break;
2831+
}
2832+
fiber = fiber.parent;
2833+
}
2834+
return dispatch;
2835+
};
28282836
var getHookNormal = function (fiber) {
28292837
var _a;
28302838
var final = [];
@@ -2847,19 +2855,20 @@
28472855
return final;
28482856
};
28492857
// disable all log
2850-
var getHookStack = function (fiber) {
2858+
var getHookStack = function (fiber, dispatch) {
28512859
var final = [];
28522860
if (!fiber.hookList)
28532861
return final;
28542862
disableLogs();
2855-
var hookTree = inspectHooksOfFiber(fiber, platform.dispatcher);
2863+
var hookTree = inspectHooksOfFiber(fiber, dispatch.dispatcher);
28562864
reenableLogs();
28572865
return parseHooksTreeToHOOKTree(hookTree, 0);
28582866
};
28592867
var getHook = function (fiber) {
2860-
if (platform && platform.dispatcher) {
2868+
var dispatch = getDispatch(fiber);
2869+
if (dispatch && dispatch.dispatcher) {
28612870
try {
2862-
return getHookStack(fiber);
2871+
return getHookStack(fiber, dispatch);
28632872
}
28642873
catch (e) {
28652874
console.error(e);
@@ -3893,7 +3902,7 @@
38933902
}
38943903
}
38953904
function overridePatchToFiberInit(dispatch, runtime) {
3896-
if (typeof dispatch.onFiberInitial === 'function') {
3905+
if (typeof dispatch.onFiberInitial === "function") {
38973906
dispatch.onFiberInitial(function (f) { return initPlainNode(f); });
38983907
}
38993908
else {
@@ -4019,7 +4028,6 @@
40194028
}
40204029
if (platform) {
40214030
this._platform = platform;
4022-
setPlatform(this._platform);
40234031
}
40244032
this.patchDispatch(dispatch);
40254033
};
@@ -4563,7 +4571,6 @@
45634571
exports.isValidElement = isValidElement;
45644572
exports.loopChangedTree = loopChangedTree;
45654573
exports.loopTree = loopTree;
4566-
exports.setPlatform = setPlatform;
45674574
exports.shallowAssignFiber = shallowAssignFiber;
45684575
exports.throttle = throttle;
45694576
exports.typeKeys = typeKeys;

chrome/src/hooks/useConfig.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { createState } from "reactivity-store";
22

3-
export const useConfig = createState(() => ({ state: { enableEdit: false, enableHover: false, enableUpdate: false, enableHoverOnBrowser: false, enableRetrigger: false } }), {
3+
export const useConfig = createState(() => ({ state: { enableEdit: true, enableHover: false, enableUpdate: false, enableHoverOnBrowser: false, enableRetrigger: false } }), {
44
withActions: (s) => ({
55
setEnableEdit(enableEdit: boolean) {
66
s.state.enableEdit = enableEdit;

packages/core/src/instance.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import { isNormalEquals } from "@my-react/react-shared";
55
import { getNode, getNodeFromId } from "./data";
66
import { DevToolMessageEnum, HMRStatus } from "./event";
77
import { Highlight, Select } from "./highlight";
8-
import { type DispatcherType } from "./hook";
98
import { disableBrowserHover, enableBrowserHover, inspectCom, inspectDom, inspectSource } from "./inspect";
109
import { setupDispatch, type DevToolRenderDispatch } from "./setup";
1110
import {
@@ -19,7 +18,7 @@ import {
1918
getElementNodesFromFiber,
2019
updateFiberNode,
2120
} from "./tree";
22-
import { debounce, setPlatform, throttle } from "./utils";
21+
import { debounce, throttle } from "./utils";
2322

2423
import type { Tree } from "./tree";
2524
import type { CustomRenderPlatform, MyReactFiberNode, UpdateState } from "@my-react/react-reconciler";
@@ -30,9 +29,7 @@ export type DevToolMessageType = {
3029
data: any;
3130
};
3231

33-
export type DevToolRenderPlatform = CustomRenderPlatform & {
34-
dispatcher: { current: DispatcherType };
35-
};
32+
export type DevToolRenderPlatform = CustomRenderPlatform;
3633

3734
const map = new Map();
3835

@@ -177,8 +174,6 @@ export class DevToolCore {
177174

178175
if (platform) {
179176
this._platform = platform as DevToolRenderPlatform;
180-
181-
setPlatform(this._platform);
182177
}
183178

184179
this.patchDispatch(dispatch);

packages/core/src/setup.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ function overridePatchToFiberUnmount(dispatch: DevToolRenderDispatch, runtime: D
3232
}
3333

3434
function overridePatchToFiberInit(dispatch: DevToolRenderDispatch, runtime: DevToolCore) {
35-
if (typeof dispatch.onFiberInitial === 'function') {
35+
if (typeof dispatch.onFiberInitial === "function") {
3636
dispatch.onFiberInitial((f) => initPlainNode(f, runtime));
3737
} else {
3838
if (__DEV__) {

packages/core/src/utils.ts

Lines changed: 32 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
/* eslint-disable max-lines */
22
/* eslint-disable @typescript-eslint/no-unsafe-function-type */
3-
import { type MyReactFiberNode, type MyReactFiberNodeDev, type MyReactHookNode, type MyReactHookNodeDev } from "@my-react/react-reconciler";
43
import {
54
Consumer,
65
Context,
@@ -25,12 +24,12 @@ import {
2524
} from "@my-react/react-shared";
2625

2726
import { getNode } from "./data";
28-
import { inspectHooksOfFiber, type HooksTree } from "./hook";
27+
import { inspectHooksOfFiber } from "./hook";
2928
import { disableLogs, reenableLogs } from "./log";
3029
import { getPlainNodeByFiber } from "./tree";
3130
import { NODE_TYPE } from "./type";
3231

33-
import type { DevToolRenderPlatform } from "./instance";
32+
import type { DispatcherType, HooksTree } from "./hook";
3433
import type { HOOKTree, PlainNode } from "./plain";
3534
import type { DevToolRenderDispatch } from "./setup";
3635
import type {
@@ -45,15 +44,17 @@ import type {
4544
lazy,
4645
memo,
4746
} from "@my-react/react";
47+
import type {
48+
MyReactFiberNode,
49+
MyReactHookNode,
50+
MyReactFiberNodeDev,
51+
MyReactFiberRoot,
52+
MyReactHookNodeDev,
53+
CustomRenderDispatch,
54+
} from "@my-react/react-reconciler";
4855

4956
export const typeKeys: number[] = [];
5057

51-
let platform: DevToolRenderPlatform | null = null;
52-
53-
export const setPlatform = (p: DevToolRenderPlatform) => {
54-
platform = p;
55-
};
56-
5758
// SEE https://github.com/facebook/react/blob/main/compiler/packages/react-compiler-runtime/src/index.ts
5859
const reactCompilerSymbol = Symbol.for("react.memo_cache_sentinel");
5960

@@ -443,6 +444,23 @@ const parseHooksTreeToHOOKTree = (node: HooksTree, d: number): HOOKTree[] => {
443444
});
444445
};
445446

447+
const getDispatch = (fiber: MyReactFiberNode) => {
448+
let dispatch: DevToolRenderDispatch | undefined;
449+
450+
while (fiber) {
451+
const typedFiber = fiber as unknown as MyReactFiberRoot;
452+
453+
if (typedFiber.renderDispatch) {
454+
dispatch = typedFiber.renderDispatch;
455+
456+
break;
457+
}
458+
fiber = fiber.parent;
459+
}
460+
461+
return dispatch;
462+
};
463+
446464
const getHookNormal = (fiber: MyReactFiberNodeDev) => {
447465
const final: HOOKTree[] = [];
448466

@@ -469,24 +487,25 @@ const getHookNormal = (fiber: MyReactFiberNodeDev) => {
469487
};
470488

471489
// disable all log
472-
const getHookStack = (fiber: MyReactFiberNodeDev) => {
490+
const getHookStack = (fiber: MyReactFiberNodeDev, dispatch: CustomRenderDispatch) => {
473491
const final: HOOKTree[] = [];
474492

475493
if (!fiber.hookList) return final;
476494

477495
disableLogs();
478496

479-
const hookTree = inspectHooksOfFiber(fiber, platform.dispatcher);
497+
const hookTree = inspectHooksOfFiber(fiber, dispatch.dispatcher as { current: DispatcherType });
480498

481499
reenableLogs();
482500

483501
return parseHooksTreeToHOOKTree(hookTree, 0);
484502
};
485503

486504
export const getHook = (fiber: MyReactFiberNodeDev) => {
487-
if (platform && platform.dispatcher) {
505+
const dispatch = getDispatch(fiber);
506+
if (dispatch && dispatch.dispatcher) {
488507
try {
489-
return getHookStack(fiber);
508+
return getHookStack(fiber, dispatch);
490509
} catch (e) {
491510
console.error(e);
492511
return getHookNormal(fiber);

0 commit comments

Comments
 (0)