@my-react/react-reconciler-compact 0.0.7 → 0.0.9

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.
@@ -311,6 +311,7 @@ function requireIndex_development_1 () {
311
311
  STATE_TYPE[STATE_TYPE["__retrigger__"] = 512] = "__retrigger__";
312
312
  STATE_TYPE[STATE_TYPE["__reschedule__"] = 1024] = "__reschedule__";
313
313
  STATE_TYPE[STATE_TYPE["__recreate__"] = 2048] = "__recreate__";
314
+ STATE_TYPE[STATE_TYPE["__suspense__"] = 4096] = "__suspense__";
314
315
  })(exports.STATE_TYPE || (exports.STATE_TYPE = {}));
315
316
 
316
317
  exports.PATCH_TYPE = void 0;
@@ -920,7 +921,7 @@ function requireIndex_development_1 () {
920
921
  enableSyncFlush$1.current = stack.pop();
921
922
  };
922
923
 
923
- var currentRunningFiber$5 = react.__my_react_internal__.currentRunningFiber, currentScheduler$g = react.__my_react_internal__.currentScheduler, currentScopeFiber$1 = react.__my_react_internal__.currentScopeFiber, currentError$1 = react.__my_react_internal__.currentError, currentCallingFiber$1 = react.__my_react_internal__.currentCallingFiber;
924
+ var currentRunningFiber$5 = react.__my_react_internal__.currentRunningFiber, currentScheduler$h = react.__my_react_internal__.currentScheduler, currentScopeFiber$1 = react.__my_react_internal__.currentScopeFiber, currentError$1 = react.__my_react_internal__.currentError, currentCallingFiber$1 = react.__my_react_internal__.currentCallingFiber;
924
925
  var safeCall = function (action) {
925
926
  var args = [];
926
927
  for (var _i = 1; _i < arguments.length; _i++) {
@@ -931,7 +932,7 @@ function requireIndex_development_1 () {
931
932
  }
932
933
  catch (e) {
933
934
  var fiber = (currentCallingFiber$1 === null || currentCallingFiber$1 === void 0 ? void 0 : currentCallingFiber$1[(currentCallingFiber$1 === null || currentCallingFiber$1 === void 0 ? void 0 : currentCallingFiber$1.length) - 1]) || currentScopeFiber$1.current || currentRunningFiber$5.current;
934
- var renderScheduler = currentScheduler$g.current;
935
+ var renderScheduler = currentScheduler$h.current;
935
936
  currentError$1.current = currentError$1.current || e;
936
937
  renderScheduler.dispatchError({ fiber: fiber, error: currentError$1.current });
937
938
  }
@@ -951,7 +952,7 @@ function requireIndex_development_1 () {
951
952
  return fallback();
952
953
  }
953
954
  else {
954
- var renderScheduler = currentScheduler$g.current;
955
+ var renderScheduler = currentScheduler$h.current;
955
956
  currentError$1.current = currentError$1.current || e;
956
957
  renderScheduler.dispatchError({ fiber: fiber, error: currentError$1.current });
957
958
  }
@@ -985,7 +986,7 @@ function requireIndex_development_1 () {
985
986
  }
986
987
  catch (e) {
987
988
  var fiber = (currentCallingFiber$1 === null || currentCallingFiber$1 === void 0 ? void 0 : currentCallingFiber$1[(currentCallingFiber$1 === null || currentCallingFiber$1 === void 0 ? void 0 : currentCallingFiber$1.length) - 1]) || currentScopeFiber$1.current || currentRunningFiber$5.current;
988
- var renderScheduler = currentScheduler$g.current;
989
+ var renderScheduler = currentScheduler$h.current;
989
990
  currentError$1.current = currentError$1.current || e;
990
991
  renderScheduler.dispatchError({ fiber: fiber, error: currentError$1.current });
991
992
  }
@@ -994,7 +995,7 @@ function requireIndex_development_1 () {
994
995
  }
995
996
  };
996
997
 
997
- var currentScheduler$f = react.__my_react_internal__.currentScheduler, currentRunningFiber$4 = react.__my_react_internal__.currentRunningFiber, currentScopeFiber = react.__my_react_internal__.currentScopeFiber, currentCallingFiber = react.__my_react_internal__.currentCallingFiber;
998
+ var currentScheduler$g = react.__my_react_internal__.currentScheduler, currentRunningFiber$4 = react.__my_react_internal__.currentRunningFiber, currentScopeFiber = react.__my_react_internal__.currentScopeFiber, currentCallingFiber = react.__my_react_internal__.currentCallingFiber;
998
999
  var enableOptimizeTreeLog = react.__my_react_shared__.enableOptimizeTreeLog;
999
1000
  var typeColor = {
1000
1001
  normal: "rgba(10, 190, 235, 0.8)",
@@ -1049,7 +1050,7 @@ function requireIndex_development_1 () {
1049
1050
  for (var _i = 0; _i < arguments.length; _i++) {
1050
1051
  args[_i] = arguments[_i];
1051
1052
  }
1052
- var renderScheduler = currentScheduler$f.current;
1053
+ var renderScheduler = currentScheduler$g.current;
1053
1054
  var startWithPlain = typeof args[0] === "string";
1054
1055
  var renderFiber = warnFiber || (currentCallingFiber === null || currentCallingFiber === void 0 ? void 0 : currentCallingFiber[(currentCallingFiber === null || currentCallingFiber === void 0 ? void 0 : currentCallingFiber.length) - 1]) || currentScopeFiber.current || currentRunningFiber$4.current;
1055
1056
  renderFiber && fiberWarn.apply(void 0, __spreadArray([renderFiber], args, false));
@@ -1086,7 +1087,7 @@ function requireIndex_development_1 () {
1086
1087
  for (var _i = 0; _i < arguments.length; _i++) {
1087
1088
  args[_i] = arguments[_i];
1088
1089
  }
1089
- var renderScheduler = currentScheduler$f.current;
1090
+ var renderScheduler = currentScheduler$g.current;
1090
1091
  var startWithPlain = typeof args[0] === "string";
1091
1092
  var renderFiber = errorFiber || (currentCallingFiber === null || currentCallingFiber === void 0 ? void 0 : currentCallingFiber[(currentCallingFiber === null || currentCallingFiber === void 0 ? void 0 : currentCallingFiber.length) - 1]) || currentScopeFiber.current || currentRunningFiber$4.current;
1092
1093
  renderFiber && fiberError.apply(void 0, __spreadArray([renderFiber], args, false));
@@ -1330,7 +1331,7 @@ function requireIndex_development_1 () {
1330
1331
  for (var _i = 2; _i < arguments.length; _i++) {
1331
1332
  args[_i - 2] = arguments[_i];
1332
1333
  }
1333
- var renderScheduler = currentScheduler$f.current;
1334
+ var renderScheduler = currentScheduler$g.current;
1334
1335
  var tree = renderScheduler.getFiberTree(fiber);
1335
1336
  if ((_b = warnMap === null || warnMap === void 0 ? void 0 : warnMap[tree]) === null || _b === void 0 ? void 0 : _b[key])
1336
1337
  return;
@@ -1346,7 +1347,7 @@ function requireIndex_development_1 () {
1346
1347
  for (var _i = 2; _i < arguments.length; _i++) {
1347
1348
  args[_i - 2] = arguments[_i];
1348
1349
  }
1349
- var renderScheduler = currentScheduler$f.current;
1350
+ var renderScheduler = currentScheduler$g.current;
1350
1351
  var tree = renderScheduler.getFiberTree(fiber);
1351
1352
  if ((_b = errorMap === null || errorMap === void 0 ? void 0 : errorMap[tree]) === null || _b === void 0 ? void 0 : _b[key])
1352
1353
  return;
@@ -1391,7 +1392,7 @@ function requireIndex_development_1 () {
1391
1392
  }
1392
1393
  nodeType = myreactSharedExports.merge(nodeType, exports.NODE_TYPE.__empty__);
1393
1394
  }
1394
- else if (element === null || element === undefined || typeof element === "boolean" || typeof element === "function") {
1395
+ else if (element === null || element === undefined || typeof element === "boolean" || typeof element === "function" || element === "") {
1395
1396
  nodeType = myreactSharedExports.merge(nodeType, exports.NODE_TYPE.__null__);
1396
1397
  }
1397
1398
  else {
@@ -1519,7 +1520,7 @@ function requireIndex_development_1 () {
1519
1520
  throw new Error("[@my-react/react] invalid symbol element type \"".concat(elementType === null || elementType === void 0 ? void 0 : elementType.toString(), "\""));
1520
1521
  }
1521
1522
  }
1522
- else if (typeof elementType === "string") {
1523
+ else if (typeof elementType === "string" && elementType !== "") {
1523
1524
  nodeType = myreactSharedExports.merge(nodeType, exports.NODE_TYPE.__plain__);
1524
1525
  }
1525
1526
  else {
@@ -1567,7 +1568,17 @@ function requireIndex_development_1 () {
1567
1568
  return new Set(Array.from(fibers || []).map(function (fiber) { return fiberToDispatchMap.get(fiber); }));
1568
1569
  };
1569
1570
  var getCurrentDispatchFromFiber = function (fiber) {
1570
- return fiberToDispatchMap.get(fiber);
1571
+ var dispatch = fiberToDispatchMap.get(fiber);
1572
+ if (dispatch)
1573
+ return dispatch;
1574
+ var parent = fiber.parent;
1575
+ while (parent) {
1576
+ var typedFiberRoot = parent;
1577
+ if (typedFiberRoot.renderDispatch) {
1578
+ return typedFiberRoot.renderDispatch;
1579
+ }
1580
+ parent = parent.parent;
1581
+ }
1571
1582
  };
1572
1583
  var getElementFromRefreshIfExist = function (element) {
1573
1584
  var _a, _b;
@@ -1605,7 +1616,7 @@ function requireIndex_development_1 () {
1605
1616
  }
1606
1617
  };
1607
1618
 
1608
- var currentRunningFiber$3 = react.__my_react_internal__.currentRunningFiber, currentScheduler$e = react.__my_react_internal__.currentScheduler;
1619
+ var currentRunningFiber$3 = react.__my_react_internal__.currentRunningFiber, currentScheduler$f = react.__my_react_internal__.currentScheduler;
1609
1620
  var dispatchHook = function (params) {
1610
1621
  var fiber = currentRunningFiber$3.current;
1611
1622
  if (!fiber) {
@@ -1636,10 +1647,10 @@ function requireIndex_development_1 () {
1636
1647
  var dispatchError = function (_params) {
1637
1648
  var fiber = _params.fiber || currentRunningFiber$3.current;
1638
1649
  if (!fiber) {
1639
- throw new Error("No fiber found for dispatching error.");
1650
+ // a normal error
1651
+ throw _params.error;
1640
1652
  }
1641
- if (myreactSharedExports.include(fiber.state, myreactSharedExports.STATE_TYPE.__unmount__))
1642
- return;
1653
+ // if (include(fiber.state, STATE_TYPE.__unmount__)) return;
1643
1654
  var dispatch = getCurrentDispatchFromFiber(fiber);
1644
1655
  if (!dispatch) {
1645
1656
  throw new Error("No dispatch found for the current running fiber.");
@@ -1651,14 +1662,25 @@ function requireIndex_development_1 () {
1651
1662
  if (!fiber) {
1652
1663
  throw new Error("No fiber found for dispatching promise.");
1653
1664
  }
1654
- if (myreactSharedExports.include(fiber.state, myreactSharedExports.STATE_TYPE.__unmount__))
1655
- return;
1665
+ // if (include(fiber.state, STATE_TYPE.__unmount__)) return;
1656
1666
  var dispatch = getCurrentDispatchFromFiber(fiber);
1657
1667
  if (!dispatch) {
1658
1668
  throw new Error("No dispatch found for the current running fiber.");
1659
1669
  }
1660
1670
  return dispatch.dispatchPromise(_params);
1661
1671
  };
1672
+ var dispatchSuspensePromise = function (_params) {
1673
+ var fiber = _params.fiber || currentRunningFiber$3.current;
1674
+ if (!fiber) {
1675
+ throw new Error("No fiber found for dispatching suspense promise.");
1676
+ }
1677
+ // if (include(fiber.state, STATE_TYPE.__unmount__)) return;
1678
+ var dispatch = getCurrentDispatchFromFiber(fiber);
1679
+ if (!dispatch) {
1680
+ throw new Error("No dispatch found for the current running fiber.");
1681
+ }
1682
+ return dispatch.dispatchSuspensePromise(_params);
1683
+ };
1662
1684
  var readContext = function (_params) {
1663
1685
  var fiber = currentRunningFiber$3.current;
1664
1686
  if (!fiber) {
@@ -1695,7 +1717,7 @@ function requireIndex_development_1 () {
1695
1717
  }
1696
1718
  };
1697
1719
  var initScheduler = function () {
1698
- var scheduler = currentScheduler$e.current;
1720
+ var scheduler = currentScheduler$f.current;
1699
1721
  scheduler.getFiberTree = getFiberTree;
1700
1722
  scheduler.readPromise = readPromise;
1701
1723
  scheduler.readContext = readContext;
@@ -1703,6 +1725,7 @@ function requireIndex_development_1 () {
1703
1725
  scheduler.dispatchHook = dispatchHook;
1704
1726
  scheduler.dispatchError = dispatchError;
1705
1727
  scheduler.dispatchPromise = dispatchPromise;
1728
+ scheduler.dispatchSuspensePromise = dispatchSuspensePromise;
1706
1729
  };
1707
1730
 
1708
1731
  var enableHMRForDev = react.__my_react_shared__.enableHMRForDev;
@@ -1813,110 +1836,6 @@ function requireIndex_development_1 () {
1813
1836
  return listTree;
1814
1837
  };
1815
1838
 
1816
- var currentRunningFiber$2 = react.__my_react_internal__.currentRunningFiber;
1817
- var mountToNextFiberFromRoot = function (renderDispatch, fiber) {
1818
- if (myreactSharedExports.include(fiber.state, myreactSharedExports.STATE_TYPE.__unmount__) || renderDispatch.isAppCrashed)
1819
- return null;
1820
- if (myreactSharedExports.include(fiber.state, myreactSharedExports.STATE_TYPE.__stable__) && fiber.state !== myreactSharedExports.STATE_TYPE.__stable__) {
1821
- devErrorWithFiber(fiber, "[@my-react/react] current fiber state not valid, look like a bug for @my-react");
1822
- }
1823
- if (myreactSharedExports.include(fiber.state, myreactSharedExports.STATE_TYPE.__create__ |
1824
- myreactSharedExports.STATE_TYPE.__inherit__ |
1825
- myreactSharedExports.STATE_TYPE.__triggerSync__ |
1826
- myreactSharedExports.STATE_TYPE.__triggerSyncForce__ |
1827
- myreactSharedExports.STATE_TYPE.__triggerConcurrent__ |
1828
- myreactSharedExports.STATE_TYPE.__triggerConcurrentForce__ |
1829
- myreactSharedExports.STATE_TYPE.__retrigger__ |
1830
- myreactSharedExports.STATE_TYPE.__reschedule__ |
1831
- myreactSharedExports.STATE_TYPE.__recreate__)) {
1832
- fiber.state = myreactSharedExports.remove(fiber.state, myreactSharedExports.STATE_TYPE.__retrigger__);
1833
- currentRunningFiber$2.current = fiber;
1834
- {
1835
- runtimeNextWorkDev(renderDispatch, fiber);
1836
- }
1837
- currentRunningFiber$2.current = null;
1838
- }
1839
- if (!myreactSharedExports.include(fiber.state, myreactSharedExports.STATE_TYPE.__retrigger__)) {
1840
- fiber.state = myreactSharedExports.STATE_TYPE.__stable__;
1841
- }
1842
- else {
1843
- fiber.state = myreactSharedExports.STATE_TYPE.__triggerSync__;
1844
- }
1845
- if (fiber.child)
1846
- return fiber.child;
1847
- var nextFiber = fiber;
1848
- while (nextFiber && nextFiber !== renderDispatch.runtimeFiber.scheduledFiber) {
1849
- renderDispatch.generateCommitList(nextFiber);
1850
- if (nextFiber.sibling)
1851
- return nextFiber.sibling;
1852
- // current nextFiber is all done, back to parent
1853
- {
1854
- safeCallWithCurrentFiber({
1855
- fiber: nextFiber,
1856
- action: function safeCallAfterFiberDone() {
1857
- var _a, _b;
1858
- (_b = (_a = listenerMap.get(renderDispatch)) === null || _a === void 0 ? void 0 : _a.afterFiberDone) === null || _b === void 0 ? void 0 : _b.forEach(function (cb) { return cb(nextFiber); });
1859
- },
1860
- });
1861
- }
1862
- nextFiber = nextFiber.parent;
1863
- }
1864
- if (nextFiber === renderDispatch.runtimeFiber.scheduledFiber)
1865
- renderDispatch.generateCommitList(nextFiber);
1866
- return null;
1867
- };
1868
- var performToNextFiberFromRoot = function (renderDispatch, fiber) {
1869
- if (myreactSharedExports.include(fiber.state, myreactSharedExports.STATE_TYPE.__unmount__) || renderDispatch.isAppCrashed)
1870
- return null;
1871
- if (myreactSharedExports.include(fiber.state, myreactSharedExports.STATE_TYPE.__stable__) && fiber.state !== myreactSharedExports.STATE_TYPE.__stable__) {
1872
- devErrorWithFiber(fiber, "[@my-react/react] current fiber state not valid, look like a bug for @my-react");
1873
- }
1874
- if (myreactSharedExports.include(fiber.state, myreactSharedExports.STATE_TYPE.__create__ |
1875
- myreactSharedExports.STATE_TYPE.__inherit__ |
1876
- myreactSharedExports.STATE_TYPE.__triggerSync__ |
1877
- myreactSharedExports.STATE_TYPE.__triggerSyncForce__ |
1878
- myreactSharedExports.STATE_TYPE.__triggerConcurrent__ |
1879
- myreactSharedExports.STATE_TYPE.__triggerConcurrentForce__ |
1880
- myreactSharedExports.STATE_TYPE.__retrigger__ |
1881
- myreactSharedExports.STATE_TYPE.__reschedule__ |
1882
- myreactSharedExports.STATE_TYPE.__recreate__)) {
1883
- fiber.state = myreactSharedExports.remove(fiber.state, myreactSharedExports.STATE_TYPE.__retrigger__);
1884
- currentRunningFiber$2.current = fiber;
1885
- {
1886
- runtimeNextWorkDev(renderDispatch, fiber);
1887
- }
1888
- currentRunningFiber$2.current = null;
1889
- triggerFiberUpdateListener(renderDispatch, fiber);
1890
- }
1891
- if (!myreactSharedExports.include(fiber.state, myreactSharedExports.STATE_TYPE.__retrigger__)) {
1892
- fiber.state = myreactSharedExports.STATE_TYPE.__stable__;
1893
- }
1894
- else {
1895
- fiber.state = myreactSharedExports.STATE_TYPE.__triggerSync__;
1896
- }
1897
- if (fiber.child)
1898
- return fiber.child;
1899
- var nextFiber = fiber;
1900
- while (nextFiber && nextFiber !== renderDispatch.runtimeFiber.scheduledFiber) {
1901
- renderDispatch.generateCommitList(nextFiber);
1902
- if (nextFiber.sibling)
1903
- return nextFiber.sibling;
1904
- {
1905
- safeCallWithCurrentFiber({
1906
- fiber: nextFiber,
1907
- action: function safeCallAfterFiberDone() {
1908
- var _a, _b;
1909
- (_b = (_a = listenerMap.get(renderDispatch)) === null || _a === void 0 ? void 0 : _a.afterFiberDone) === null || _b === void 0 ? void 0 : _b.forEach(function (cb) { return cb(nextFiber); });
1910
- },
1911
- });
1912
- }
1913
- nextFiber = nextFiber.parent;
1914
- }
1915
- if (nextFiber === renderDispatch.runtimeFiber.scheduledFiber)
1916
- renderDispatch.generateCommitList(nextFiber);
1917
- return null;
1918
- };
1919
-
1920
1839
  var defaultGenerateEffectMap = function (fiber, effect, map, option) {
1921
1840
  var list = map.get(fiber);
1922
1841
  if (!list) {
@@ -2017,6 +1936,16 @@ function requireIndex_development_1 () {
2017
1936
  child = child.sibling;
2018
1937
  }
2019
1938
  };
1939
+ var effectCallbackList = new myreactSharedExports.ListTree();
1940
+ var addEffectCallback = function (cb) {
1941
+ effectCallbackList.push(cb);
1942
+ };
1943
+ var flushEffectCallback = function () {
1944
+ effectCallbackList.listToFoot(function (cb) {
1945
+ cb();
1946
+ });
1947
+ effectCallbackList.clear();
1948
+ };
2020
1949
  var effect = defaultInvokeEffect;
2021
1950
  var layoutEffect = defaultInvokeLayoutEffect;
2022
1951
  var insertionEffect = defaultInvokeInsertionEffect;
@@ -2063,8 +1992,118 @@ function requireIndex_development_1 () {
2063
1992
  }
2064
1993
  };
2065
1994
 
2066
- var enableSuspenseRoot$2 = react.__my_react_shared__.enableSuspenseRoot;
2067
- var currentScheduler$d = react.__my_react_internal__.currentScheduler;
1995
+ var currentRunningFiber$2 = react.__my_react_internal__.currentRunningFiber;
1996
+ var mountToNextFiberFromRoot = function (renderDispatch, fiber) {
1997
+ if (myreactSharedExports.include(fiber.state, myreactSharedExports.STATE_TYPE.__unmount__) || renderDispatch.isAppCrashed)
1998
+ return null;
1999
+ if (myreactSharedExports.include(fiber.state, myreactSharedExports.STATE_TYPE.__stable__) && fiber.state !== myreactSharedExports.STATE_TYPE.__stable__) {
2000
+ devErrorWithFiber(fiber, "[@my-react/react] current fiber state not valid, look like a bug for @my-react");
2001
+ }
2002
+ if (myreactSharedExports.include(fiber.state, myreactSharedExports.STATE_TYPE.__create__ |
2003
+ myreactSharedExports.STATE_TYPE.__inherit__ |
2004
+ myreactSharedExports.STATE_TYPE.__triggerSync__ |
2005
+ myreactSharedExports.STATE_TYPE.__triggerSyncForce__ |
2006
+ myreactSharedExports.STATE_TYPE.__triggerConcurrent__ |
2007
+ myreactSharedExports.STATE_TYPE.__triggerConcurrentForce__ |
2008
+ myreactSharedExports.STATE_TYPE.__retrigger__ |
2009
+ myreactSharedExports.STATE_TYPE.__reschedule__ |
2010
+ myreactSharedExports.STATE_TYPE.__recreate__)) {
2011
+ fiber.state = myreactSharedExports.remove(fiber.state, myreactSharedExports.STATE_TYPE.__retrigger__);
2012
+ currentRunningFiber$2.current = fiber;
2013
+ {
2014
+ runtimeNextWorkDev(renderDispatch, fiber);
2015
+ }
2016
+ currentRunningFiber$2.current = null;
2017
+ }
2018
+ if (myreactSharedExports.include(fiber.state, myreactSharedExports.STATE_TYPE.__suspense__)) {
2019
+ fiber.state = myreactSharedExports.STATE_TYPE.__recreate__;
2020
+ }
2021
+ else if (!myreactSharedExports.include(fiber.state, myreactSharedExports.STATE_TYPE.__retrigger__)) {
2022
+ fiber.state = myreactSharedExports.STATE_TYPE.__stable__;
2023
+ }
2024
+ else {
2025
+ fiber.state = myreactSharedExports.STATE_TYPE.__triggerSync__;
2026
+ }
2027
+ if (fiber.child)
2028
+ return fiber.child;
2029
+ var nextFiber = fiber;
2030
+ while (nextFiber && nextFiber !== renderDispatch.runtimeFiber.scheduledFiber) {
2031
+ renderDispatch.generateCommitList(nextFiber);
2032
+ if (nextFiber.sibling)
2033
+ return nextFiber.sibling;
2034
+ // current nextFiber is all done, back to parent
2035
+ {
2036
+ safeCallWithCurrentFiber({
2037
+ fiber: nextFiber,
2038
+ action: function safeCallAfterFiberDone() {
2039
+ var _a, _b;
2040
+ (_b = (_a = listenerMap.get(renderDispatch)) === null || _a === void 0 ? void 0 : _a.afterFiberDone) === null || _b === void 0 ? void 0 : _b.forEach(function (cb) { return cb(nextFiber); });
2041
+ },
2042
+ });
2043
+ }
2044
+ nextFiber = nextFiber.parent;
2045
+ }
2046
+ if (nextFiber === renderDispatch.runtimeFiber.scheduledFiber)
2047
+ renderDispatch.generateCommitList(nextFiber);
2048
+ return null;
2049
+ };
2050
+ var performToNextFiberFromRoot = function (renderDispatch, fiber) {
2051
+ if (myreactSharedExports.include(fiber.state, myreactSharedExports.STATE_TYPE.__unmount__) || renderDispatch.isAppCrashed)
2052
+ return null;
2053
+ if (myreactSharedExports.include(fiber.state, myreactSharedExports.STATE_TYPE.__stable__) && fiber.state !== myreactSharedExports.STATE_TYPE.__stable__) {
2054
+ devErrorWithFiber(fiber, "[@my-react/react] current fiber state not valid, look like a bug for @my-react");
2055
+ }
2056
+ if (myreactSharedExports.include(fiber.state, myreactSharedExports.STATE_TYPE.__create__ |
2057
+ myreactSharedExports.STATE_TYPE.__inherit__ |
2058
+ myreactSharedExports.STATE_TYPE.__triggerSync__ |
2059
+ myreactSharedExports.STATE_TYPE.__triggerSyncForce__ |
2060
+ myreactSharedExports.STATE_TYPE.__triggerConcurrent__ |
2061
+ myreactSharedExports.STATE_TYPE.__triggerConcurrentForce__ |
2062
+ myreactSharedExports.STATE_TYPE.__retrigger__ |
2063
+ myreactSharedExports.STATE_TYPE.__reschedule__ |
2064
+ myreactSharedExports.STATE_TYPE.__recreate__)) {
2065
+ fiber.state = myreactSharedExports.remove(fiber.state, myreactSharedExports.STATE_TYPE.__retrigger__);
2066
+ currentRunningFiber$2.current = fiber;
2067
+ {
2068
+ runtimeNextWorkDev(renderDispatch, fiber);
2069
+ }
2070
+ currentRunningFiber$2.current = null;
2071
+ triggerFiberUpdateListener(renderDispatch, fiber);
2072
+ }
2073
+ if (myreactSharedExports.include(fiber.state, myreactSharedExports.STATE_TYPE.__suspense__)) {
2074
+ fiber.state = myreactSharedExports.STATE_TYPE.__recreate__;
2075
+ }
2076
+ else if (!myreactSharedExports.include(fiber.state, myreactSharedExports.STATE_TYPE.__retrigger__)) {
2077
+ fiber.state = myreactSharedExports.STATE_TYPE.__stable__;
2078
+ }
2079
+ else {
2080
+ fiber.state = myreactSharedExports.STATE_TYPE.__triggerSync__;
2081
+ }
2082
+ if (fiber.child)
2083
+ return fiber.child;
2084
+ var nextFiber = fiber;
2085
+ while (nextFiber && nextFiber !== renderDispatch.runtimeFiber.scheduledFiber) {
2086
+ renderDispatch.generateCommitList(nextFiber);
2087
+ if (nextFiber.sibling)
2088
+ return nextFiber.sibling;
2089
+ {
2090
+ safeCallWithCurrentFiber({
2091
+ fiber: nextFiber,
2092
+ action: function safeCallAfterFiberDone() {
2093
+ var _a, _b;
2094
+ (_b = (_a = listenerMap.get(renderDispatch)) === null || _a === void 0 ? void 0 : _a.afterFiberDone) === null || _b === void 0 ? void 0 : _b.forEach(function (cb) { return cb(nextFiber); });
2095
+ },
2096
+ });
2097
+ }
2098
+ nextFiber = nextFiber.parent;
2099
+ }
2100
+ if (nextFiber === renderDispatch.runtimeFiber.scheduledFiber)
2101
+ renderDispatch.generateCommitList(nextFiber);
2102
+ return null;
2103
+ };
2104
+
2105
+ var enableSuspenseRoot$3 = react.__my_react_shared__.enableSuspenseRoot;
2106
+ var currentScheduler$e = react.__my_react_internal__.currentScheduler;
2068
2107
  var mountLoopAllFromScheduler = function (renderDispatch) {
2069
2108
  while (renderDispatch.runtimeFiber.nextWorkingFiber) {
2070
2109
  renderDispatch.runtimeFiber.retriggerFiber = null;
@@ -2135,7 +2174,7 @@ function requireIndex_development_1 () {
2135
2174
  _a.sent();
2136
2175
  return [3 /*break*/, 1];
2137
2176
  case 3:
2138
- if (!enableSuspenseRoot$2.current) return [3 /*break*/, 5];
2177
+ if (!enableSuspenseRoot$3.current) return [3 /*break*/, 5];
2139
2178
  suspenseField_1 = getInstanceFieldByInstance(renderDispatch);
2140
2179
  list = suspenseField_1.asyncLoadList.getAll();
2141
2180
  if (list.length === 0)
@@ -2216,7 +2255,7 @@ function requireIndex_development_1 () {
2216
2255
  }); })).then(function () {
2217
2256
  var aliveNode = defaultResolveAliveSuspenseFiber(node) || renderDispatch.rootFiber;
2218
2257
  aliveNode.state = myreactSharedExports.STATE_TYPE.__triggerSyncForce__;
2219
- var renderScheduler = currentScheduler$d.current;
2258
+ var renderScheduler = currentScheduler$e.current;
2220
2259
  var updater = {
2221
2260
  type: myreactSharedExports.UpdateQueueType.suspense,
2222
2261
  trigger: aliveNode,
@@ -2243,15 +2282,12 @@ function requireIndex_development_1 () {
2243
2282
  throw new Error("[@my-react/reconciler] should not process async load list on sync mount without enableAsyncLoad, you may use a wrong renderDispatch instance");
2244
2283
  }
2245
2284
  }
2246
- // TODO update flow
2247
- if (enableSuspenseRoot$2.current) {
2285
+ if (enableSuspenseRoot$3.current) {
2248
2286
  var suspenseField_2 = getInstanceFieldByInstance(renderDispatch);
2249
2287
  var list = suspenseField_2.asyncLoadList.getAll();
2250
2288
  if (list.length === 0)
2251
2289
  return;
2252
2290
  if (renderDispatch.enableAsyncLoad) {
2253
- // defaultDeleteCurrentEffect(renderDispatch, renderDispatch.rootFiber);
2254
- // defaultDeleteChildEffect(renderDispatch, renderDispatch.rootFiber);
2255
2291
  var allPendingLoadArray = list.filter(function (item) {
2256
2292
  if (myreactSharedExports.isPromise(item)) {
2257
2293
  return typeof item.status !== "string";
@@ -2282,7 +2318,7 @@ function requireIndex_development_1 () {
2282
2318
  (_a = item._list) === null || _a === void 0 ? void 0 : _a.clear();
2283
2319
  allFiber.forEach(function (node) {
2284
2320
  node.state = myreactSharedExports.STATE_TYPE.__recreate__;
2285
- var renderScheduler = currentScheduler$d.current;
2321
+ var renderScheduler = currentScheduler$e.current;
2286
2322
  var updater = {
2287
2323
  type: myreactSharedExports.UpdateQueueType.suspense,
2288
2324
  trigger: node,
@@ -2298,13 +2334,6 @@ function requireIndex_development_1 () {
2298
2334
  });
2299
2335
  }); }));
2300
2336
  }
2301
- // suspenseField.isHidden = true;
2302
- // const root = renderDispatch.rootFiber;
2303
- // root.state = remove(root.state, STATE_TYPE.__stable__);
2304
- // root.state = merge(root.state, STATE_TYPE.__retrigger__);
2305
- // // TODO use hide tree to improve
2306
- // mountLoopAll(renderDispatch, root);
2307
- // suspenseField.isHidden = false;
2308
2337
  }
2309
2338
  else {
2310
2339
  throw new Error("[@my-react/reconciler] should not process async load list on sync mount without enableAsyncLoad, you may use a wrong renderDispatch instance");
@@ -2312,6 +2341,8 @@ function requireIndex_development_1 () {
2312
2341
  }
2313
2342
  };
2314
2343
 
2344
+ var enableSuspenseRoot$2 = react.__my_react_shared__.enableSuspenseRoot;
2345
+ var currentScheduler$d = react.__my_react_internal__.currentScheduler;
2315
2346
  exports.updateTypeEnum = void 0;
2316
2347
  (function (updateTypeEnum) {
2317
2348
  updateTypeEnum[updateTypeEnum["syncFromRoot"] = 0] = "syncFromRoot";
@@ -2358,7 +2389,89 @@ function requireIndex_development_1 () {
2358
2389
  }
2359
2390
  return hasSync;
2360
2391
  };
2361
- var processAsyncLoadListOnUpdate = processAsyncLoadListOnSyncMount;
2392
+ var processAsyncLoadListOnUpdate = function (renderDispatch) {
2393
+ var _a;
2394
+ if ((_a = renderDispatch.pendingSuspenseFiberArray) === null || _a === void 0 ? void 0 : _a.length) {
2395
+ var allPendingSuspenseFiberArray = renderDispatch.pendingSuspenseFiberArray.getAll();
2396
+ if (renderDispatch.enableAsyncLoad) {
2397
+ var allField_1 = [];
2398
+ allPendingSuspenseFiberArray.forEach(function (node) {
2399
+ defaultDeleteChildEffect(renderDispatch, node);
2400
+ var field = getInstanceFieldByInstance(node.instance);
2401
+ var allPendingLoadArray = field.asyncLoadList.getAll().filter(function (item) {
2402
+ if (myreactSharedExports.isPromise(item)) {
2403
+ return typeof item.status !== "string";
2404
+ }
2405
+ else {
2406
+ return !item._loading && !item._loaded && !item._error;
2407
+ }
2408
+ });
2409
+ if (allPendingLoadArray.length) {
2410
+ Promise.all(allPendingLoadArray.map(function (item) { return __awaiter(void 0, void 0, void 0, function () {
2411
+ var _a;
2412
+ return __generator(this, function (_b) {
2413
+ switch (_b.label) {
2414
+ case 0:
2415
+ if (!myreactSharedExports.isPromise(item)) return [3 /*break*/, 2];
2416
+ return [4 /*yield*/, renderDispatch.processPromise(item)];
2417
+ case 1:
2418
+ _b.sent();
2419
+ return [3 /*break*/, 4];
2420
+ case 2: return [4 /*yield*/, renderDispatch.processLazy(item)];
2421
+ case 3:
2422
+ _b.sent();
2423
+ _b.label = 4;
2424
+ case 4:
2425
+ (_a = item._list) === null || _a === void 0 ? void 0 : _a.clear();
2426
+ field.asyncLoadList.uniDelete(item);
2427
+ return [2 /*return*/];
2428
+ }
2429
+ });
2430
+ }); })).then(function () {
2431
+ var aliveNode = defaultResolveAliveSuspenseFiber(node) || renderDispatch.rootFiber;
2432
+ aliveNode.state = myreactSharedExports.STATE_TYPE.__triggerSyncForce__;
2433
+ var renderScheduler = currentScheduler$d.current;
2434
+ var updater = {
2435
+ type: myreactSharedExports.UpdateQueueType.suspense,
2436
+ trigger: aliveNode,
2437
+ isSync: true,
2438
+ isForce: true,
2439
+ payLoad: allPendingLoadArray,
2440
+ };
2441
+ renderScheduler.dispatchState(updater);
2442
+ });
2443
+ }
2444
+ // fix hmr
2445
+ node.state = myreactSharedExports.STATE_TYPE.__reschedule__;
2446
+ field.isHidden = true;
2447
+ allField_1.push(field);
2448
+ });
2449
+ var root = renderDispatch.rootFiber;
2450
+ root.state = myreactSharedExports.remove(root.state, myreactSharedExports.STATE_TYPE.__stable__);
2451
+ root.state = myreactSharedExports.merge(root.state, myreactSharedExports.STATE_TYPE.__retrigger__);
2452
+ // TODO use hide tree to improve
2453
+ mountLoopAll(renderDispatch, root);
2454
+ allField_1.forEach(function (field) { return (field.isHidden = false); });
2455
+ renderDispatch.pendingSuspenseFiberArray.clear();
2456
+ }
2457
+ else {
2458
+ throw new Error("[@my-react/reconciler] should not process async load list on sync mount without enableAsyncLoad, you may use a wrong renderDispatch instance");
2459
+ }
2460
+ }
2461
+ // TODO update flow
2462
+ if (enableSuspenseRoot$2.current) {
2463
+ var suspenseField = getInstanceFieldByInstance(renderDispatch);
2464
+ var list = suspenseField.asyncLoadList.getAll();
2465
+ if (list.length === 0)
2466
+ return;
2467
+ if (renderDispatch.enableAsyncLoad) {
2468
+ throw new Error("[@my-react/reconciler] not implemented yet");
2469
+ }
2470
+ else {
2471
+ throw new Error("[@my-react/reconciler] should not process async load list on sync mount without enableAsyncLoad, you may use a wrong renderDispatch instance");
2472
+ }
2473
+ }
2474
+ };
2362
2475
 
2363
2476
  var isErrorBoundariesInstance = function (instance, Component) {
2364
2477
  return typeof instance.componentDidCatch === "function" || typeof Component.getDerivedStateFromError === "function";
@@ -2967,7 +3080,7 @@ function requireIndex_development_1 () {
2967
3080
  var typedFiber = fiber;
2968
3081
  var node = allQueue === null || allQueue === void 0 ? void 0 : allQueue.head;
2969
3082
  var needUpdate = true;
2970
- var isSync = false;
3083
+ var isSync = true;
2971
3084
  var isForce = false;
2972
3085
  var isImmediate = false;
2973
3086
  var isRetrigger = false;
@@ -3274,7 +3387,7 @@ function requireIndex_development_1 () {
3274
3387
  var typedFiber = fiber;
3275
3388
  var node = allQueue === null || allQueue === void 0 ? void 0 : allQueue.head;
3276
3389
  var needUpdate = false;
3277
- var isSync = false;
3390
+ var isSync = true;
3278
3391
  var isForce = false;
3279
3392
  var isImmediate = false;
3280
3393
  var isRetrigger = false;
@@ -3431,7 +3544,7 @@ function requireIndex_development_1 () {
3431
3544
  var renderScheduler = currentScheduler$c.current;
3432
3545
  var node = allQueue === null || allQueue === void 0 ? void 0 : allQueue.head;
3433
3546
  var needUpdate = true;
3434
- var isSync = false;
3547
+ var isSync = true;
3435
3548
  var isForce = false;
3436
3549
  var isImmediate = false;
3437
3550
  var isRetrigger = false;
@@ -3841,9 +3954,9 @@ function requireIndex_development_1 () {
3841
3954
  };
3842
3955
 
3843
3956
  var globalLoop$2 = react.__my_react_internal__.globalLoop, currentScheduler$a = react.__my_react_internal__.currentScheduler;
3844
- var enableConcurrentMode$1 = react.__my_react_shared__.enableConcurrentMode;
3845
3957
  var scheduleUpdateFromRoot = function (renderDispatch) {
3846
3958
  var _a, _b, _c, _d;
3959
+ flushEffectCallback();
3847
3960
  var allLive = renderDispatch.pendingUpdateFiberArray.getAll().filter(function (f) { return myreactSharedExports.exclude(f.state, myreactSharedExports.STATE_TYPE.__unmount__); });
3848
3961
  renderDispatch.pendingUpdateFiberArray.clear();
3849
3962
  if (allLive.length) {
@@ -3851,7 +3964,7 @@ function requireIndex_development_1 () {
3851
3964
  renderDispatch.runtimeFiber.nextWorkingFiber = renderDispatch.rootFiber;
3852
3965
  currentTriggerFiber.current = allLive.length > 1 ? allLive : allLive[0];
3853
3966
  allLive.forEach(function (fiber) { return applyTriggerFiberCb(renderDispatch, fiber); });
3854
- if (!enableConcurrentMode$1.current || allLive.some(function (f) { return myreactSharedExports.include(f.state, myreactSharedExports.STATE_TYPE.__triggerSync__ | myreactSharedExports.STATE_TYPE.__triggerSyncForce__); })) {
3967
+ if (!renderDispatch.enableConcurrentMode || allLive.some(function (f) { return myreactSharedExports.include(f.state, myreactSharedExports.STATE_TYPE.__triggerSync__ | myreactSharedExports.STATE_TYPE.__triggerSyncForce__); })) {
3855
3968
  {
3856
3969
  (_b = (_a = listenerMap.get(renderDispatch)) === null || _a === void 0 ? void 0 : _a.beforeDispatchUpdate) === null || _b === void 0 ? void 0 : _b.forEach(function (cb) { return cb(renderDispatch, allLive); });
3857
3970
  }
@@ -3967,7 +4080,7 @@ function requireIndex_development_1 () {
3967
4080
  return myreactSharedExports.include(renderDispatch.runtimeFiber.nextWorkingFiber.state, myreactSharedExports.STATE_TYPE.__triggerSync__ | myreactSharedExports.STATE_TYPE.__triggerSyncForce__);
3968
4081
  // include(renderDispatch.runtimeFiber.nextWorkingFiber.state, STATE_TYPE.__retrigger__)
3969
4082
  }
3970
- function updateConCurrentNextFrame(renderDispatch) {
4083
+ function updateConcurrentNextFrame(renderDispatch) {
3971
4084
  var renderScheduler = currentScheduler$9.current;
3972
4085
  enableScopeTreeLog$3.current && setLogScope();
3973
4086
  var hasSync = updateLoopConcurrentFromRoot(renderDispatch);
@@ -3982,7 +4095,7 @@ function requireIndex_development_1 () {
3982
4095
  updateSyncFromRoot(renderDispatch);
3983
4096
  }
3984
4097
  else {
3985
- updateConCurrentNextFrame(renderDispatch);
4098
+ updateConcurrentNextFrame(renderDispatch);
3986
4099
  }
3987
4100
  });
3988
4101
  }
@@ -3990,8 +4103,7 @@ function requireIndex_development_1 () {
3990
4103
  else {
3991
4104
  processAsyncLoadListOnUpdate(renderDispatch);
3992
4105
  finishUpdateConcurrentFromRoot(renderDispatch);
3993
- renderScheduler.microTask(function callScheduleNext() {
3994
- // TODO! flash all effect
4106
+ renderScheduler.macroTask(function callScheduleNext() {
3995
4107
  globalLoop$1.current = false;
3996
4108
  scheduleNext(renderDispatch);
3997
4109
  });
@@ -4013,7 +4125,7 @@ function requireIndex_development_1 () {
4013
4125
  updateSyncFromRoot(renderDispatch);
4014
4126
  }
4015
4127
  else {
4016
- updateConCurrentNextFrame(renderDispatch);
4128
+ updateConcurrentNextFrame(renderDispatch);
4017
4129
  }
4018
4130
  });
4019
4131
  }
@@ -4021,8 +4133,7 @@ function requireIndex_development_1 () {
4021
4133
  else {
4022
4134
  processAsyncLoadListOnUpdate(renderDispatch);
4023
4135
  finishUpdateConcurrentFromRoot(renderDispatch);
4024
- renderScheduler.microTask(function callScheduleNext() {
4025
- // TODO! flash all effect
4136
+ renderScheduler.macroTask(function callScheduleNext() {
4026
4137
  globalLoop$1.current = false;
4027
4138
  scheduleNext(renderDispatch);
4028
4139
  });
@@ -4091,7 +4202,9 @@ function requireIndex_development_1 () {
4091
4202
  if (!field)
4092
4203
  throw new Error("[@my-react/react] hook instance not found, look like a bug for @my-react");
4093
4204
  var typedField = field;
4094
- typedField.dispatch = function (action) { return hookNode._update({ payLoad: action, isForce: false, isSync: enableSyncFlush.current }); };
4205
+ typedField.dispatch = function dispatchAction(action) {
4206
+ hookNode._update({ payLoad: action, isForce: false, isSync: enableSyncFlush.current });
4207
+ };
4095
4208
  };
4096
4209
 
4097
4210
  var currentComponentFiber$3 = react.__my_react_internal__.currentComponentFiber;
@@ -4127,12 +4240,22 @@ function requireIndex_development_1 () {
4127
4240
  };
4128
4241
  var defaultOptimisticReducer = function (state) { return state; };
4129
4242
  var createHookNode = function (renderDispatch, _a, fiber) {
4130
- var _b;
4243
+ var _b, _c;
4131
4244
  var type = _a.type, value = _a.value, reducer = _a.reducer, deps = _a.deps;
4132
4245
  var currentHook = (_b = currentHookTreeNode$2.current) === null || _b === void 0 ? void 0 : _b.value;
4133
4246
  var currentHookIndex = currentHookNodeIndex$2.current;
4247
+ var currentIsReCreate = myreactSharedExports.include(fiber.state, myreactSharedExports.STATE_TYPE.__recreate__);
4134
4248
  if (currentHook) {
4135
- throw new Error("[@my-react/react] should not have a hookList for current node, this is a bug for @my-react");
4249
+ if (currentIsReCreate) {
4250
+ if (currentHookIndex === 0) {
4251
+ defaultDeleteChildEffect(renderDispatch, fiber);
4252
+ defaultDeleteCurrentEffect(renderDispatch, fiber);
4253
+ fiber.hookList.clear();
4254
+ }
4255
+ }
4256
+ else {
4257
+ throw new Error("[@my-react/react] should not have a hookList for current node, this is a bug for @my-react");
4258
+ }
4136
4259
  }
4137
4260
  var hookNode = new MyReactHookNode(type, value, reducer || defaultReducer, deps);
4138
4261
  initInstance(hookNode);
@@ -4157,6 +4280,10 @@ function requireIndex_development_1 () {
4157
4280
  if (hookNode.type === myreactSharedExports.HOOK_TYPE.useRef || hookNode.type === myreactSharedExports.HOOK_TYPE.useCallback || hookNode.type === myreactSharedExports.HOOK_TYPE.useDeferredValue) {
4158
4281
  hookNode.result = hookNode.value;
4159
4282
  }
4283
+ // cache ref state from recreate
4284
+ if (hookNode.type === myreactSharedExports.HOOK_TYPE.useRef && currentHook && currentHook.type === myreactSharedExports.HOOK_TYPE.useRef) {
4285
+ hookNode.result = currentHook.result;
4286
+ }
4160
4287
  if (hookNode.type === myreactSharedExports.HOOK_TYPE.useId) {
4161
4288
  hookNode.result = "\u00AB-".concat(currentHookIndex, "-").concat(renderDispatch.uniqueIdCount++, "-\u00BB");
4162
4289
  hookNode.cancel = function () { return renderDispatch.uniqueIdCount--; };
@@ -4179,12 +4306,13 @@ function requireIndex_development_1 () {
4179
4306
  return safeCallWithCurrentFiber({
4180
4307
  fiber: fiber,
4181
4308
  action: function safeCallGetSnapshot() {
4182
- var _a;
4183
4309
  return renderDispatch.isAppMounted
4184
4310
  ? storeApi_1.getSnapshot.call(null)
4185
- : storeApi_1.getServerSnapshot
4186
- ? (_a = storeApi_1.getServerSnapshot) === null || _a === void 0 ? void 0 : _a.call(null)
4187
- : storeApi_1.getSnapshot.call(null);
4311
+ : // SEE https://github.com/facebook/react/blob/main/packages/use-sync-external-store/src/useSyncExternalStoreShimClient.js#L33
4312
+ // : storeApi.getServerSnapshot
4313
+ // ? storeApi.getServerSnapshot?.call(null)
4314
+ // : storeApi.getSnapshot.call(null);
4315
+ storeApi_1.getSnapshot.call(null);
4188
4316
  },
4189
4317
  });
4190
4318
  };
@@ -4286,6 +4414,7 @@ function requireIndex_development_1 () {
4286
4414
  typedHook._debugType = myreactSharedExports.HOOK_TYPE[hookNode.type];
4287
4415
  typedHook._debugIndex = currentHookIndex;
4288
4416
  }
4417
+ currentHookTreeNode$2.current = (_c = currentHookTreeNode$2.current) === null || _c === void 0 ? void 0 : _c.next;
4289
4418
  return hookNode;
4290
4419
  };
4291
4420
 
@@ -4641,11 +4770,10 @@ function requireIndex_development_1 () {
4641
4770
  fiber.constructor.prototype.isMyReactFiberNode);
4642
4771
  };
4643
4772
 
4644
- var enableConcurrentMode = react.__my_react_shared__.enableConcurrentMode;
4645
4773
  var currentScheduler$5 = react.__my_react_internal__.currentScheduler;
4646
4774
  var processUpdateOnFiber = function (renderDispatch, fiber, _isImmediate, _isRetrigger) {
4647
4775
  var renderScheduler = currentScheduler$5.current;
4648
- var flag = enableConcurrentMode.current;
4776
+ var flag = renderDispatch.enableConcurrentMode;
4649
4777
  var updateState = null;
4650
4778
  if (myreactSharedExports.include(fiber.type, exports.NODE_TYPE.__class__)) {
4651
4779
  updateState = flag ? processClassComponentUpdateQueueLatest(renderDispatch, fiber, flag) : processClassComponentUpdateQueueLegacy(renderDispatch, fiber);
@@ -4886,7 +5014,8 @@ function requireIndex_development_1 () {
4886
5014
  renderDispatch.pendingUpdate(fiber);
4887
5015
  }
4888
5016
  }
4889
- if (nextRef && prevRef !== nextRef) {
5017
+ if (prevRef !== nextRef) {
5018
+ fiber.refPrevious = prevRef;
4890
5019
  renderDispatch.pendingRef(fiber);
4891
5020
  }
4892
5021
  if (fiber !== prevFiber) {
@@ -5045,8 +5174,8 @@ function requireIndex_development_1 () {
5045
5174
  return updateFiberNode(renderDispatch, { fiber: draftFiber_1, parent: parentFiber, prevFiber: prevFiberChild }, newElement);
5046
5175
  }
5047
5176
  else {
5048
- renderDispatch.generateChangedList(parentFiber);
5049
- renderDispatch.pendingUnmount(parentFiber, draftFiber_1);
5177
+ draftFiber_1 && renderDispatch.generateChangedList(parentFiber);
5178
+ draftFiber_1 && renderDispatch.pendingUnmount(parentFiber, draftFiber_1);
5050
5179
  return createFragmentWithUpdate(renderDispatch, newChild, parentFiber);
5051
5180
  }
5052
5181
  }
@@ -5063,7 +5192,7 @@ function requireIndex_development_1 () {
5063
5192
  }
5064
5193
  else {
5065
5194
  draftFiber && renderDispatch.pendingUnmount(parentFiber, draftFiber);
5066
- renderDispatch.generateChangedList(parentFiber);
5195
+ draftFiber && renderDispatch.generateChangedList(parentFiber);
5067
5196
  return createFiberNode(renderDispatch, { parent: parentFiber, type: "position" }, newChild);
5068
5197
  }
5069
5198
  };
@@ -5078,9 +5207,13 @@ function requireIndex_development_1 () {
5078
5207
  var isUpdate = myreactSharedExports.exclude(parentFiber.state, myreactSharedExports.STATE_TYPE.__create__);
5079
5208
  var isHMR = myreactSharedExports.include(parentFiber.state, myreactSharedExports.STATE_TYPE.__hmr__);
5080
5209
  var isRetrigger = myreactSharedExports.include(parentFiber.state, myreactSharedExports.STATE_TYPE.__retrigger__);
5210
+ var isSuspense = myreactSharedExports.include(parentFiber.state, myreactSharedExports.STATE_TYPE.__suspense__);
5081
5211
  // is current is retrigger update, skip update children
5082
5212
  if (isRetrigger)
5083
5213
  return;
5214
+ // if is suspense, skip update children
5215
+ if (isSuspense)
5216
+ return;
5084
5217
  if (isUpdate || isHMR) {
5085
5218
  var _a = getExistingChildren(parentFiber), existingChildrenMap = _a.existingChildrenMap, existingChildrenArray = _a.existingChildrenArray;
5086
5219
  parentFiber.child = null;
@@ -5184,6 +5317,11 @@ function requireIndex_development_1 () {
5184
5317
  };
5185
5318
 
5186
5319
  var currentHookTreeNode = react.__my_react_internal__.currentHookTreeNode, currentHookNodeIndex$1 = react.__my_react_internal__.currentHookNodeIndex, currentScheduler$4 = react.__my_react_internal__.currentScheduler;
5320
+ var triggerState = myreactSharedExports.STATE_TYPE.__triggerSync__ |
5321
+ myreactSharedExports.STATE_TYPE.__triggerSyncForce__ |
5322
+ myreactSharedExports.STATE_TYPE.__triggerConcurrent__ |
5323
+ myreactSharedExports.STATE_TYPE.__triggerConcurrentForce__ |
5324
+ myreactSharedExports.STATE_TYPE.__retrigger__;
5187
5325
  var processFunction = function (fiber) {
5188
5326
  var _a;
5189
5327
  currentHookTreeNode.current = (_a = fiber.hookList) === null || _a === void 0 ? void 0 : _a.head;
@@ -5195,14 +5333,20 @@ function requireIndex_development_1 () {
5195
5333
  children = safeCallWithCurrentFiber({
5196
5334
  fiber: fiber,
5197
5335
  action: function safeCallForwardRefFunctionalComponent() {
5198
- var _a, _b;
5336
+ var _a, _b, _c, _d;
5199
5337
  var re = undefined;
5200
5338
  try {
5201
5339
  re = typedElementTypeWithRef_1(fiber.pendingProps, fiber.ref);
5202
5340
  }
5203
5341
  catch (e) {
5204
5342
  if (myreactSharedExports.isPromise(e)) {
5205
- re = (_b = (_a = currentScheduler$4.current) === null || _a === void 0 ? void 0 : _a.dispatchPromise) === null || _b === void 0 ? void 0 : _b.call(_a, { fiber: fiber, promise: e });
5343
+ var currentIsTrigger = myreactSharedExports.include(fiber.state, triggerState);
5344
+ if (currentIsTrigger) {
5345
+ re = (_b = (_a = currentScheduler$4.current) === null || _a === void 0 ? void 0 : _a.dispatchSuspensePromise) === null || _b === void 0 ? void 0 : _b.call(_a, { fiber: fiber, promise: e });
5346
+ }
5347
+ else {
5348
+ re = (_d = (_c = currentScheduler$4.current) === null || _c === void 0 ? void 0 : _c.dispatchPromise) === null || _d === void 0 ? void 0 : _d.call(_c, { fiber: fiber, promise: e });
5349
+ }
5206
5350
  }
5207
5351
  else {
5208
5352
  throw e;
@@ -5216,14 +5360,20 @@ function requireIndex_development_1 () {
5216
5360
  children = safeCallWithCurrentFiber({
5217
5361
  fiber: fiber,
5218
5362
  action: function safeCallFunctionalComponent() {
5219
- var _a, _b;
5363
+ var _a, _b, _c, _d;
5220
5364
  var re = undefined;
5221
5365
  try {
5222
5366
  re = typedElementType(fiber.pendingProps);
5223
5367
  }
5224
5368
  catch (e) {
5225
5369
  if (myreactSharedExports.isPromise(e)) {
5226
- re = (_b = (_a = currentScheduler$4.current) === null || _a === void 0 ? void 0 : _a.dispatchPromise) === null || _b === void 0 ? void 0 : _b.call(_a, { fiber: fiber, promise: e });
5370
+ var currentIsTrigger = myreactSharedExports.include(fiber.state, triggerState);
5371
+ if (currentIsTrigger) {
5372
+ re = (_b = (_a = currentScheduler$4.current) === null || _a === void 0 ? void 0 : _a.dispatchSuspensePromise) === null || _b === void 0 ? void 0 : _b.call(_a, { fiber: fiber, promise: e });
5373
+ }
5374
+ else {
5375
+ re = (_d = (_c = currentScheduler$4.current) === null || _c === void 0 ? void 0 : _c.dispatchPromise) === null || _d === void 0 ? void 0 : _d.call(_c, { fiber: fiber, promise: e });
5376
+ }
5227
5377
  }
5228
5378
  else {
5229
5379
  throw e;
@@ -5312,7 +5462,7 @@ function requireIndex_development_1 () {
5312
5462
  return null;
5313
5463
  }
5314
5464
  else {
5315
- // TODO update flow
5465
+ // TODO update flow
5316
5466
  if (enableSuspenseRoot$1.current && !renderDispatch.isAppMounted) {
5317
5467
  var suspenseField = getInstanceFieldByInstance(renderDispatch);
5318
5468
  suspenseField.asyncLoadList.uniPush(typedElementType);
@@ -5721,6 +5871,9 @@ function requireIndex_development_1 () {
5721
5871
  RenderDispatchEvent.prototype.dispatchPromise = function (_params) {
5722
5872
  throw new Error("Method not implemented.");
5723
5873
  };
5874
+ RenderDispatchEvent.prototype.dispatchSuspensePromise = function (_params) {
5875
+ throw new Error("Method not implemented.");
5876
+ };
5724
5877
  RenderDispatchEvent.prototype.trigger = function (_fiber, _state, cb) {
5725
5878
  return triggerUpdateOnFiber(_fiber, _state, cb);
5726
5879
  };
@@ -6251,14 +6404,25 @@ function requireIndex_development_1 () {
6251
6404
  layoutEffect(_dispatch, _fiber);
6252
6405
  });
6253
6406
  afterSyncUpdate();
6254
- var renderScheduler = currentScheduler$2.current;
6255
- renderScheduler.microTask(function invokeEffectListTask() {
6407
+ function invokeEffectListTask() {
6256
6408
  enableScopeTreeLog$2.current && setLogScope();
6257
6409
  _list.listToFoot(function invokeEffectList(_fiber) {
6258
6410
  effect(_dispatch, _fiber);
6259
6411
  });
6260
6412
  enableScopeTreeLog$2.current && resetLogScope();
6261
- });
6413
+ }
6414
+ addEffectCallback(invokeEffectListTask);
6415
+ var renderScheduler = currentScheduler$2.current;
6416
+ if (_dispatch.enableConcurrentMode) {
6417
+ renderScheduler.macroTask(function flushEffect() {
6418
+ flushEffectCallback();
6419
+ });
6420
+ }
6421
+ else {
6422
+ renderScheduler.microTask(function flushEffect() {
6423
+ flushEffectCallback();
6424
+ });
6425
+ }
6262
6426
  };
6263
6427
  var defaultDispatchMount = defaultDispatchMountLatest;
6264
6428
 
@@ -6359,9 +6523,7 @@ function requireIndex_development_1 () {
6359
6523
  }
6360
6524
  });
6361
6525
  afterSyncUpdate();
6362
- var renderScheduler = currentScheduler$1.current;
6363
- // TODO before next update flow, make sure all the effect has done
6364
- renderScheduler.microTask(function invokeEffectListTask() {
6526
+ function invokeEffectListTask() {
6365
6527
  enableScopeTreeLog$1.current && setLogScope();
6366
6528
  _list.listToFoot(function invokeEffectList(_fiber) {
6367
6529
  if (myreactSharedExports.exclude(_fiber.state, myreactSharedExports.STATE_TYPE.__unmount__) && !_dispatch.isAppUnmounted) {
@@ -6369,7 +6531,19 @@ function requireIndex_development_1 () {
6369
6531
  }
6370
6532
  });
6371
6533
  enableScopeTreeLog$1.current && resetLogScope();
6372
- });
6534
+ }
6535
+ addEffectCallback(invokeEffectListTask);
6536
+ var renderScheduler = currentScheduler$1.current;
6537
+ if (_dispatch.enableConcurrentMode) {
6538
+ renderScheduler.macroTask(function flushEffect() {
6539
+ flushEffectCallback();
6540
+ });
6541
+ }
6542
+ else {
6543
+ renderScheduler.microTask(function flushEffect() {
6544
+ flushEffectCallback();
6545
+ });
6546
+ }
6373
6547
  };
6374
6548
 
6375
6549
  var enableSuspenseRoot = react.__my_react_shared__.enableSuspenseRoot;
@@ -6434,7 +6608,9 @@ function requireIndex_development_1 () {
6434
6608
  promise._loading = true;
6435
6609
  promise.status = "pending";
6436
6610
  var renderScheduler_1 = currentScheduler.current;
6437
- renderDispatch.processPromise(promise).then(function () {
6611
+ renderDispatch
6612
+ .processPromise(promise)
6613
+ .then(function () {
6438
6614
  fiber.state = myreactSharedExports.STATE_TYPE.__recreate__;
6439
6615
  promise._list.delete(fiber);
6440
6616
  promise._loading = false;
@@ -6446,10 +6622,49 @@ function requireIndex_development_1 () {
6446
6622
  payLoad: promise,
6447
6623
  };
6448
6624
  renderScheduler_1.dispatchState(updater);
6449
- });
6625
+ })
6626
+ .catch(function (e) { return renderScheduler_1.dispatchError({ fiber: fiber, error: e }); });
6450
6627
  return null;
6451
6628
  }
6452
6629
  };
6630
+ var processSuspensePromise = function (renderDispatch, fiber, promise) {
6631
+ var _a, _b;
6632
+ defaultDeleteCurrentEffect(renderDispatch, fiber);
6633
+ fiber.state = myreactSharedExports.STATE_TYPE.__suspense__;
6634
+ if (promise.status === "rejected") {
6635
+ (_b = (_a = currentScheduler.current).dispatchError) === null || _b === void 0 ? void 0 : _b.call(_a, { fiber: fiber, error: promise._reason });
6636
+ return null;
6637
+ }
6638
+ if (promise.status === "fulfilled") {
6639
+ {
6640
+ console.warn("[@my-react/react] throw a promise what has already fulfilled, this is not a valid usage");
6641
+ }
6642
+ }
6643
+ promise._list = promise._list || new Set();
6644
+ promise._list.add(fiber);
6645
+ if (promise._loading)
6646
+ return null;
6647
+ promise._loading = true;
6648
+ promise.status = "pending";
6649
+ var renderScheduler = currentScheduler.current;
6650
+ renderDispatch
6651
+ .processPromise(promise)
6652
+ .then(function () {
6653
+ fiber.state = myreactSharedExports.STATE_TYPE.__recreate__;
6654
+ promise._list.delete(fiber);
6655
+ promise._loading = false;
6656
+ var updater = {
6657
+ type: myreactSharedExports.UpdateQueueType.promise,
6658
+ trigger: fiber,
6659
+ isSync: true,
6660
+ isForce: true,
6661
+ payLoad: promise,
6662
+ };
6663
+ renderScheduler.dispatchState(updater);
6664
+ })
6665
+ .catch(function (e) { return renderScheduler.dispatchError({ fiber: fiber, error: e }); });
6666
+ return null;
6667
+ };
6453
6668
 
6454
6669
  var CustomRenderDispatch = /** @class */ (function (_super) {
6455
6670
  __extends(CustomRenderDispatch, _super);
@@ -6460,7 +6675,7 @@ function requireIndex_development_1 () {
6460
6675
  _this.isAppMounted = false;
6461
6676
  _this.isAppCrashed = false;
6462
6677
  _this.isAppUnmounted = false;
6463
- _this.version = "0.3.16";
6678
+ _this.version = "0.3.18";
6464
6679
  _this.mode = "development" ;
6465
6680
  _this.renderMode = "render";
6466
6681
  _this.pendingCommitFiberList = null;
@@ -6899,7 +7114,7 @@ function requireIndex_development_1 () {
6899
7114
  });
6900
7115
  }); };
6901
7116
 
6902
- var version = "0.3.16";
7117
+ var version = "0.3.18";
6903
7118
 
6904
7119
  exports.CustomRenderDispatch = CustomRenderDispatch;
6905
7120
  exports.MyReactFiberNode = MyReactFiberNode;
@@ -6908,6 +7123,7 @@ function requireIndex_development_1 () {
6908
7123
  exports.RenderDispatchEvent = RenderDispatchEvent;
6909
7124
  exports.WrapperByLazyScope = WrapperByLazyScope;
6910
7125
  exports.WrapperBySuspenseScope = WrapperBySuspenseScope;
7126
+ exports.addEffectCallback = addEffectCallback;
6911
7127
  exports.afterSyncFlush = afterSyncFlush;
6912
7128
  exports.afterSyncUpdate = afterSyncUpdate;
6913
7129
  exports.applyTriggerFiberCb = applyTriggerFiberCb;
@@ -6957,6 +7173,7 @@ function requireIndex_development_1 () {
6957
7173
  exports.enableLogForCurrentFlowIsRunning = enableLogForCurrentFlowIsRunning;
6958
7174
  exports.enableValidMyReactElement = enableValidMyReactElement;
6959
7175
  exports.fiberToDispatchMap = fiberToDispatchMap;
7176
+ exports.flushEffectCallback = flushEffectCallback;
6960
7177
  exports.generateFiberToListWithAction = generateFiberToListWithAction;
6961
7178
  exports.generateFiberToMountList = generateFiberToMountList;
6962
7179
  exports.generateFiberToUnmountList = generateFiberToUnmountList;
@@ -7046,6 +7263,7 @@ function requireIndex_development_1 () {
7046
7263
  exports.processProvider = processProvider;
7047
7264
  exports.processState = processState;
7048
7265
  exports.processSuspense = processSuspense;
7266
+ exports.processSuspensePromise = processSuspensePromise;
7049
7267
  exports.resetLogScope = resetLogScope;
7050
7268
  exports.runtimeNextWork = runtimeNextWork;
7051
7269
  exports.runtimeNextWorkDev = runtimeNextWorkDev;
@@ -7322,6 +7540,7 @@ function requireIndex_development () {
7322
7540
  STATE_TYPE[STATE_TYPE["__retrigger__"] = 512] = "__retrigger__";
7323
7541
  STATE_TYPE[STATE_TYPE["__reschedule__"] = 1024] = "__reschedule__";
7324
7542
  STATE_TYPE[STATE_TYPE["__recreate__"] = 2048] = "__recreate__";
7543
+ STATE_TYPE[STATE_TYPE["__suspense__"] = 4096] = "__suspense__";
7325
7544
  })(exports.STATE_TYPE || (exports.STATE_TYPE = {}));
7326
7545
 
7327
7546
  exports.PATCH_TYPE = void 0;
@@ -7807,27 +8026,51 @@ var delGlobalDispatch = function (dispatch) {
7807
8026
  * @internal
7808
8027
  */
7809
8028
  var setRef = function (_fiber, config) {
7810
- var _a, _b;
7811
8029
  if (myreactSharedExports.include(_fiber.patch, myreactSharedExports.PATCH_TYPE.__ref__)) {
8030
+ var cleanUp = function () {
8031
+ var refPrevious = _fiber.refPrevious;
8032
+ myreactReconcilerExports.safeCallWithCurrentFiber({
8033
+ fiber: _fiber,
8034
+ action: function safeCallRefPrevious() {
8035
+ if (typeof refPrevious === "object" && refPrevious !== null) {
8036
+ refPrevious.current = null;
8037
+ }
8038
+ else if (typeof refPrevious === "function") {
8039
+ refPrevious === null || refPrevious === void 0 ? void 0 : refPrevious(null);
8040
+ }
8041
+ },
8042
+ });
8043
+ _fiber.refPrevious = undefined;
8044
+ var refCleanup = _fiber.refCleanup;
8045
+ myreactReconcilerExports.safeCallWithCurrentFiber({
8046
+ fiber: _fiber,
8047
+ action: function safeCallRefCleanup() {
8048
+ if (typeof refCleanup === "function") {
8049
+ refCleanup();
8050
+ }
8051
+ },
8052
+ });
8053
+ _fiber.refCleanup = undefined;
8054
+ };
7812
8055
  if (myreactSharedExports.include(_fiber.type, myreactReconcilerExports.NODE_TYPE.__plain__)) {
7813
8056
  if (_fiber.nativeNode) {
8057
+ cleanUp();
7814
8058
  var ref_1 = _fiber.ref;
7815
- if (typeof ref_1 === "object" && ref_1 !== null) {
7816
- ref_1.current = (_a = config === null || config === void 0 ? void 0 : config.getPublicInstance) === null || _a === void 0 ? void 0 : _a.call(config, _fiber.nativeNode);
7817
- }
7818
- else if (typeof ref_1 === "function") {
7819
- myreactReconcilerExports.safeCallWithCurrentFiber({
7820
- fiber: _fiber,
7821
- action: function safeCallSetRef() {
7822
- var _a, _b;
7823
- (_a = _fiber.refCleanup) === null || _a === void 0 ? void 0 : _a.call(_fiber);
8059
+ myreactReconcilerExports.safeCallWithCurrentFiber({
8060
+ fiber: _fiber,
8061
+ action: function safeCallSetRef() {
8062
+ var _a, _b;
8063
+ if (typeof ref_1 === "object" && ref_1 !== null) {
8064
+ ref_1.current = (_a = config === null || config === void 0 ? void 0 : config.getPublicInstance) === null || _a === void 0 ? void 0 : _a.call(config, _fiber.nativeNode);
8065
+ }
8066
+ else if (typeof ref_1 === "function") {
7824
8067
  var refCleanUp = ref_1((_b = config === null || config === void 0 ? void 0 : config.getPublicInstance) === null || _b === void 0 ? void 0 : _b.call(config, _fiber.nativeNode));
7825
8068
  if (typeof refCleanUp === "function") {
7826
8069
  _fiber.refCleanup = refCleanUp;
7827
8070
  }
7828
- },
7829
- });
7830
- }
8071
+ }
8072
+ },
8073
+ });
7831
8074
  }
7832
8075
  else {
7833
8076
  throw new Error("[@my-react/react] plain element do not have a native node");
@@ -7835,23 +8078,23 @@ var setRef = function (_fiber, config) {
7835
8078
  }
7836
8079
  else if (myreactSharedExports.include(_fiber.type, myreactReconcilerExports.NODE_TYPE.__class__)) {
7837
8080
  if (_fiber.instance) {
8081
+ cleanUp();
7838
8082
  var ref_2 = _fiber.ref;
7839
- if (typeof ref_2 === "object" && ref_2 !== null) {
7840
- ref_2.current = (_b = config === null || config === void 0 ? void 0 : config.getPublicInstance) === null || _b === void 0 ? void 0 : _b.call(config, _fiber.instance);
7841
- }
7842
- else if (typeof ref_2 === "function") {
7843
- myreactReconcilerExports.safeCallWithCurrentFiber({
7844
- fiber: _fiber,
7845
- action: function safeCallSetRef() {
7846
- var _a, _b;
7847
- (_a = _fiber.refCleanup) === null || _a === void 0 ? void 0 : _a.call(_fiber);
8083
+ myreactReconcilerExports.safeCallWithCurrentFiber({
8084
+ fiber: _fiber,
8085
+ action: function safeCallSetRef() {
8086
+ var _a, _b;
8087
+ if (typeof ref_2 === "object" && ref_2 !== null) {
8088
+ ref_2.current = (_a = config === null || config === void 0 ? void 0 : config.getPublicInstance) === null || _a === void 0 ? void 0 : _a.call(config, _fiber.instance);
8089
+ }
8090
+ else if (typeof ref_2 === "function") {
7848
8091
  var refCleanUp = ref_2((_b = config === null || config === void 0 ? void 0 : config.getPublicInstance) === null || _b === void 0 ? void 0 : _b.call(config, _fiber.instance));
7849
8092
  if (typeof refCleanUp === "function") {
7850
8093
  _fiber.refCleanup = refCleanUp;
7851
8094
  }
7852
- },
7853
- });
7854
- }
8095
+ }
8096
+ },
8097
+ });
7855
8098
  }
7856
8099
  else {
7857
8100
  throw new Error("[@my-react/react-dom] class component do not have a instance");
@@ -8321,13 +8564,17 @@ var ReconcilerDispatchMount = function (_dispatch, _fiber, config) {
8321
8564
  myreactReconcilerExports.layoutEffect(_dispatch, _fiber);
8322
8565
  });
8323
8566
  myreactReconcilerExports.afterSyncUpdate();
8324
- var renderScheduler = currentScheduler$2.current;
8325
- renderScheduler.microTask(function invokeEffectListTask() {
8567
+ function invokeEffectListTask() {
8326
8568
  enableScopeTreeLog$3.current && myreactReconcilerExports.setLogScope();
8327
8569
  _list.listToFoot(function invokeEffectList(_fiber) {
8328
8570
  myreactReconcilerExports.effect(_dispatch, _fiber);
8329
8571
  });
8330
8572
  enableScopeTreeLog$3.current && myreactReconcilerExports.resetLogScope();
8573
+ }
8574
+ myreactReconcilerExports.addEffectCallback(invokeEffectListTask);
8575
+ var renderScheduler = currentScheduler$2.current;
8576
+ renderScheduler.macroTask(function flushEffect() {
8577
+ myreactReconcilerExports.flushEffectCallback();
8331
8578
  });
8332
8579
  };
8333
8580
 
@@ -8346,7 +8593,7 @@ var ReconcilerDispatchUpdate = function (_dispatch, _list, config) {
8346
8593
  }
8347
8594
  });
8348
8595
  myreactReconcilerExports.afterSyncUpdate();
8349
- var pendingCreateFiberArray = [];
8596
+ var pendingFinalizeInitialChildrenFiberSet = new Set();
8350
8597
  var pendingCommitFiberArray = [];
8351
8598
  _list.listToFoot(function invokeCreateAndUpdateList(_fiber) {
8352
8599
  if (myreactSharedExports.exclude(_fiber.state, myreactSharedExports.STATE_TYPE.__unmount__) && !_dispatch.isAppUnmounted) {
@@ -8360,7 +8607,7 @@ var ReconcilerDispatchUpdate = function (_dispatch, _list, config) {
8360
8607
  });
8361
8608
  var afterHasNode = _fiber.nativeNode;
8362
8609
  if (!beforeHasNode && afterHasNode) {
8363
- pendingCreateFiberArray.push(_fiber);
8610
+ pendingFinalizeInitialChildrenFiberSet.add(_fiber);
8364
8611
  }
8365
8612
  }
8366
8613
  });
@@ -8370,6 +8617,8 @@ var ReconcilerDispatchUpdate = function (_dispatch, _list, config) {
8370
8617
  fiber: _fiber,
8371
8618
  action: function safeCallPosition() {
8372
8619
  _dispatch.commitPosition(_fiber);
8620
+ var parentFiber = getValidParentFiberWithNode(_dispatch, _fiber);
8621
+ parentFiber && pendingFinalizeInitialChildrenFiberSet.add(parentFiber);
8373
8622
  },
8374
8623
  });
8375
8624
  }
@@ -8380,6 +8629,8 @@ var ReconcilerDispatchUpdate = function (_dispatch, _list, config) {
8380
8629
  fiber: _fiber,
8381
8630
  action: function safeCallAppendList() {
8382
8631
  _dispatch.commitAppend(_fiber);
8632
+ var parentFiber = getValidParentFiberWithNode(_dispatch, _fiber);
8633
+ parentFiber && pendingFinalizeInitialChildrenFiberSet.add(parentFiber);
8383
8634
  },
8384
8635
  });
8385
8636
  }
@@ -8394,7 +8645,7 @@ var ReconcilerDispatchUpdate = function (_dispatch, _list, config) {
8394
8645
  });
8395
8646
  }
8396
8647
  });
8397
- pendingCreateFiberArray.forEach(function invokeFinalizeInitialChildren(_fiber) {
8648
+ pendingFinalizeInitialChildrenFiberSet.forEach(function invokeFinalizeInitialChildren(_fiber) {
8398
8649
  if (_fiber.nativeNode) {
8399
8650
  var node = config.getPublicInstance(_fiber.nativeNode);
8400
8651
  var type = _fiber.elementType;
@@ -8420,9 +8671,7 @@ var ReconcilerDispatchUpdate = function (_dispatch, _list, config) {
8420
8671
  }
8421
8672
  });
8422
8673
  myreactReconcilerExports.afterSyncUpdate();
8423
- var renderScheduler = currentScheduler$1.current;
8424
- // TODO before next update flow, make sure all the effect has done
8425
- renderScheduler.microTask(function invokeEffectListTask() {
8674
+ function invokeEffectListTask() {
8426
8675
  enableScopeTreeLog$2.current && myreactReconcilerExports.setLogScope();
8427
8676
  _list.listToFoot(function invokeEffectList(_fiber) {
8428
8677
  if (myreactSharedExports.exclude(_fiber.state, myreactSharedExports.STATE_TYPE.__unmount__) && !_dispatch.isAppUnmounted) {
@@ -8430,7 +8679,19 @@ var ReconcilerDispatchUpdate = function (_dispatch, _list, config) {
8430
8679
  }
8431
8680
  });
8432
8681
  enableScopeTreeLog$2.current && myreactReconcilerExports.resetLogScope();
8433
- });
8682
+ }
8683
+ myreactReconcilerExports.addEffectCallback(invokeEffectListTask);
8684
+ var renderScheduler = currentScheduler$1.current;
8685
+ if (_dispatch.enableConcurrentMode) {
8686
+ renderScheduler.macroTask(function flushEffect() {
8687
+ myreactReconcilerExports.flushEffectCallback();
8688
+ });
8689
+ }
8690
+ else {
8691
+ renderScheduler.microTask(function flushEffect() {
8692
+ myreactReconcilerExports.flushEffectCallback();
8693
+ });
8694
+ }
8434
8695
  };
8435
8696
 
8436
8697
  var currentComponentFiber = require$$0.__my_react_internal__.currentComponentFiber;
@@ -8441,7 +8702,7 @@ var initialRef = {
8441
8702
  typeForAppend: myreactReconcilerExports.NODE_TYPE.__text__ | myreactReconcilerExports.NODE_TYPE.__plain__,
8442
8703
  typeForNativeNode: myreactReconcilerExports.NODE_TYPE.__text__ | myreactReconcilerExports.NODE_TYPE.__plain__ | myreactReconcilerExports.NODE_TYPE.__portal__,
8443
8704
  };
8444
- var createDispatch = function (rootNode, rootFiber, rootElement, config) {
8705
+ var createDispatch = function (rootNode, rootFiber, rootElement, config, flag) {
8445
8706
  var ReconcilerDispatch = /** @class */ (function (_super) {
8446
8707
  __extends(ReconcilerDispatch, _super);
8447
8708
  function ReconcilerDispatch() {
@@ -8536,6 +8797,9 @@ var createDispatch = function (rootNode, rootFiber, rootElement, config) {
8536
8797
  ReconcilerDispatch.prototype.dispatchPromise = function (_params) {
8537
8798
  return myreactReconcilerExports.processPromise(this, _params.fiber, _params.promise);
8538
8799
  };
8800
+ ReconcilerDispatch.prototype.dispatchSuspensePromise = function (_params) {
8801
+ return myreactReconcilerExports.processSuspensePromise(this, _params.fiber, _params.promise);
8802
+ };
8539
8803
  ReconcilerDispatch.prototype.dispatchError = function (_params) {
8540
8804
  {
8541
8805
  myreactReconcilerExports.devErrorWithFiber(_params.fiber, _params.error);
@@ -8564,7 +8828,10 @@ var createDispatch = function (rootNode, rootFiber, rootElement, config) {
8564
8828
  },
8565
8829
  });
8566
8830
  }
8567
- return new ReconcilerDispatch(rootNode, rootFiber, rootElement);
8831
+ var dispatch = new ReconcilerDispatch(rootNode, rootFiber, rootElement);
8832
+ dispatch.enableConcurrentMode = flag !== 0;
8833
+ dispatch.renderMode = flag !== 0 ? "concurrent" : "legacy";
8834
+ return dispatch;
8568
8835
  };
8569
8836
 
8570
8837
  var DEV_REFRESH_FIELD = "__@my-react/react-refresh-inject__";
@@ -8640,12 +8907,11 @@ var loadScript = function (url) {
8640
8907
  }
8641
8908
  };
8642
8909
 
8643
- var enableDebugFiled$1 = require$$0.__my_react_shared__.enableDebugFiled, enableScopeTreeLog$1 = require$$0.__my_react_shared__.enableScopeTreeLog /* enableConcurrentMode */;
8910
+ var enableDebugFiled$1 = require$$0.__my_react_shared__.enableDebugFiled, enableScopeTreeLog$1 = require$$0.__my_react_shared__.enableScopeTreeLog;
8644
8911
  /**
8645
8912
  * @internal
8646
8913
  */
8647
8914
  var prepareScheduler = function () {
8648
- // enableConcurrentMode.current = false;
8649
8915
  enableDebugFiled$1.current = true;
8650
8916
  enableScopeTreeLog$1.current = true;
8651
8917
  myreactReconcilerExports.enableFiberForLog.current = true;
@@ -8659,11 +8925,19 @@ var currentScheduler = require$$0.__my_react_internal__.currentScheduler;
8659
8925
  var Reconciler = function (_config) {
8660
8926
  var rendererPackageName = "@my-react";
8661
8927
  var ReconcilerSet = new Set();
8662
- var createContainer = function (_container) {
8928
+ var createContainer = function (_container, flag) {
8663
8929
  prepareScheduler();
8930
+ if (flag === 0) {
8931
+ // legacy mode
8932
+ _container.__flag__ = 0;
8933
+ }
8934
+ else {
8935
+ // concurrent mode
8936
+ _container.__flag__ = 1;
8937
+ }
8664
8938
  enableDebugFiled.current = true;
8665
8939
  enableScopeTreeLog.current = false;
8666
- // enableFiberForLog.current = false;
8940
+ myreactReconcilerExports.enableFiberForLog.current = false;
8667
8941
  return _container;
8668
8942
  };
8669
8943
  var updateContainer = function (_element, _container, _ignore, _cb) {
@@ -8689,7 +8963,7 @@ var Reconciler = function (_config) {
8689
8963
  delGlobalDispatch(renderDispatch);
8690
8964
  }
8691
8965
  var _fiber = new myreactReconcilerExports.MyReactFiberNode(_element);
8692
- var _renderDispatch = createDispatch(_container, _fiber, _element, _config);
8966
+ var _renderDispatch = createDispatch(_container, _fiber, _element, _config, _container.__flag__);
8693
8967
  _cb && _renderDispatch.pendingEffect(_fiber, _cb);
8694
8968
  ReconcilerSet.add(_renderDispatch);
8695
8969
  renderScheduler.dispatchSet.uniPush(_renderDispatch);
@@ -8757,7 +9031,7 @@ var Reconciler = function (_config) {
8757
9031
  };
8758
9032
  };
8759
9033
 
8760
- var version = "0.0.7";
9034
+ var version = "0.0.9";
8761
9035
  var createReconciler = Reconciler;
8762
9036
 
8763
9037
  exports.createReconciler = createReconciler;