@my-react/react-reconciler-compact 0.0.3 → 0.0.5

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.
@@ -281,6 +281,7 @@ function requireIndex_development_1 () {
281
281
  HOOK_TYPE[HOOK_TYPE["useInsertionEffect"] = 13] = "useInsertionEffect";
282
282
  HOOK_TYPE[HOOK_TYPE["useImperativeHandle"] = 14] = "useImperativeHandle";
283
283
  HOOK_TYPE[HOOK_TYPE["useSyncExternalStore"] = 15] = "useSyncExternalStore";
284
+ HOOK_TYPE[HOOK_TYPE["useOptimistic"] = 16] = "useOptimistic";
284
285
  })(exports.HOOK_TYPE || (exports.HOOK_TYPE = {}));
285
286
 
286
287
  exports.UpdateQueueType = void 0;
@@ -309,6 +310,7 @@ function requireIndex_development_1 () {
309
310
  STATE_TYPE[STATE_TYPE["__hmr__"] = 256] = "__hmr__";
310
311
  STATE_TYPE[STATE_TYPE["__retrigger__"] = 512] = "__retrigger__";
311
312
  STATE_TYPE[STATE_TYPE["__reschedule__"] = 1024] = "__reschedule__";
313
+ STATE_TYPE[STATE_TYPE["__recreate__"] = 2048] = "__recreate__";
312
314
  })(exports.STATE_TYPE || (exports.STATE_TYPE = {}));
313
315
 
314
316
  exports.PATCH_TYPE = void 0;
@@ -1781,7 +1783,8 @@ function requireIndex_development_1 () {
1781
1783
  myreactSharedExports.STATE_TYPE.__triggerConcurrent__ |
1782
1784
  myreactSharedExports.STATE_TYPE.__triggerConcurrentForce__ |
1783
1785
  myreactSharedExports.STATE_TYPE.__retrigger__ |
1784
- myreactSharedExports.STATE_TYPE.__reschedule__)) {
1786
+ myreactSharedExports.STATE_TYPE.__reschedule__ |
1787
+ myreactSharedExports.STATE_TYPE.__recreate__)) {
1785
1788
  fiber.state = myreactSharedExports.remove(fiber.state, myreactSharedExports.STATE_TYPE.__retrigger__);
1786
1789
  currentRunningFiber$2.current = fiber;
1787
1790
  {
@@ -1821,7 +1824,8 @@ function requireIndex_development_1 () {
1821
1824
  myreactSharedExports.STATE_TYPE.__triggerConcurrent__ |
1822
1825
  myreactSharedExports.STATE_TYPE.__triggerConcurrentForce__ |
1823
1826
  myreactSharedExports.STATE_TYPE.__retrigger__ |
1824
- myreactSharedExports.STATE_TYPE.__reschedule__)) {
1827
+ myreactSharedExports.STATE_TYPE.__reschedule__ |
1828
+ myreactSharedExports.STATE_TYPE.__recreate__)) {
1825
1829
  fiber.state = myreactSharedExports.remove(fiber.state, myreactSharedExports.STATE_TYPE.__retrigger__);
1826
1830
  currentRunningFiber$2.current = fiber;
1827
1831
  {
@@ -2174,58 +2178,72 @@ function requireIndex_development_1 () {
2174
2178
  }
2175
2179
  }
2176
2180
  // TODO update flow
2177
- // if (enableSuspenseRoot.current) {
2178
- // const suspenseField = getInstanceFieldByInstance(renderDispatch) as SuspenseInstanceField;
2179
- // const list = suspenseField.asyncLoadList.getAll();
2180
- // if (list.length === 0) return;
2181
- // if (renderDispatch.enableAsyncLoad) {
2182
- // defaultDeleteCurrentEffect(renderDispatch, renderDispatch.rootFiber);
2183
- // defaultDeleteChildEffect(renderDispatch, renderDispatch.rootFiber);
2184
- // const allPendingLoadArray = list.filter((item) => {
2185
- // if (isPromise(item)) {
2186
- // return typeof item.status !== "string";
2187
- // } else {
2188
- // return !item._loading && !item._loaded && !item._error;
2189
- // }
2190
- // });
2191
- // if (allPendingLoadArray.length) {
2192
- // Promise.all(
2193
- // allPendingLoadArray.map(async (item) => {
2194
- // if (isPromise(item)) {
2195
- // await renderDispatch.processPromise(item);
2196
- // } else {
2197
- // await renderDispatch.processLazy(item);
2198
- // }
2199
- // item._list?.clear();
2200
- // suspenseField.asyncLoadList.uniDelete(item);
2201
- // })
2202
- // ).then(() => {
2203
- // const aliveNode = defaultResolveAliveSuspenseFiber(node);
2204
- // aliveNode.state = STATE_TYPE.__triggerSyncForce__;
2205
- // const renderScheduler = currentScheduler.current;
2206
- // const updater: SuspenseUpdateQueue = {
2207
- // type: UpdateQueueType.suspense,
2208
- // trigger: aliveNode,
2209
- // isSync: true,
2210
- // isForce: true,
2211
- // payLoad: allPendingLoadArray,
2212
- // };
2213
- // renderScheduler.dispatchState(updater);
2214
- // });
2215
- // }
2216
- // suspenseField.isHidden = true;
2217
- // const root = renderDispatch.rootFiber;
2218
- // root.state = remove(root.state, STATE_TYPE.__stable__);
2219
- // root.state = merge(root.state, STATE_TYPE.__retrigger__);
2220
- // // TODO use hide tree to improve
2221
- // mountLoopAll(renderDispatch, root);
2222
- // suspenseField.isHidden = false;
2223
- // } else {
2224
- // throw new Error(
2225
- // "[@my-react/reconciler] should not process async load list on sync mount without enableAsyncLoad, you may use a wrong renderDispatch instance"
2226
- // );
2227
- // }
2228
- // }
2181
+ if (enableSuspenseRoot$2.current) {
2182
+ var suspenseField_2 = getInstanceFieldByInstance(renderDispatch);
2183
+ var list = suspenseField_2.asyncLoadList.getAll();
2184
+ if (list.length === 0)
2185
+ return;
2186
+ if (renderDispatch.enableAsyncLoad) {
2187
+ // defaultDeleteCurrentEffect(renderDispatch, renderDispatch.rootFiber);
2188
+ // defaultDeleteChildEffect(renderDispatch, renderDispatch.rootFiber);
2189
+ var allPendingLoadArray = list.filter(function (item) {
2190
+ if (myreactSharedExports.isPromise(item)) {
2191
+ return typeof item.status !== "string";
2192
+ }
2193
+ else {
2194
+ return !item._loading && !item._loaded && !item._error;
2195
+ }
2196
+ });
2197
+ if (allPendingLoadArray.length) {
2198
+ allPendingLoadArray.forEach(function (item) { var _a; return (_a = item._list) === null || _a === void 0 ? void 0 : _a.forEach(function (node) { return defaultDeleteCurrentEffect(renderDispatch, node); }); });
2199
+ Promise.all(allPendingLoadArray.map(function (item) { return __awaiter(void 0, void 0, void 0, function () {
2200
+ var allFiber;
2201
+ var _a;
2202
+ return __generator(this, function (_b) {
2203
+ switch (_b.label) {
2204
+ case 0:
2205
+ if (!myreactSharedExports.isPromise(item)) return [3 /*break*/, 2];
2206
+ return [4 /*yield*/, renderDispatch.processPromise(item)];
2207
+ case 1:
2208
+ _b.sent();
2209
+ return [3 /*break*/, 4];
2210
+ case 2: return [4 /*yield*/, renderDispatch.processLazy(item)];
2211
+ case 3:
2212
+ _b.sent();
2213
+ _b.label = 4;
2214
+ case 4:
2215
+ allFiber = new Set(item._list);
2216
+ (_a = item._list) === null || _a === void 0 ? void 0 : _a.clear();
2217
+ allFiber.forEach(function (node) {
2218
+ node.state = myreactSharedExports.STATE_TYPE.__recreate__;
2219
+ var renderScheduler = currentScheduler$d.current;
2220
+ var updater = {
2221
+ type: myreactSharedExports.UpdateQueueType.suspense,
2222
+ trigger: node,
2223
+ isSync: true,
2224
+ isForce: true,
2225
+ payLoad: [item],
2226
+ };
2227
+ renderScheduler.dispatchState(updater);
2228
+ });
2229
+ suspenseField_2.asyncLoadList.uniDelete(item);
2230
+ return [2 /*return*/];
2231
+ }
2232
+ });
2233
+ }); }));
2234
+ }
2235
+ // suspenseField.isHidden = true;
2236
+ // const root = renderDispatch.rootFiber;
2237
+ // root.state = remove(root.state, STATE_TYPE.__stable__);
2238
+ // root.state = merge(root.state, STATE_TYPE.__retrigger__);
2239
+ // // TODO use hide tree to improve
2240
+ // mountLoopAll(renderDispatch, root);
2241
+ // suspenseField.isHidden = false;
2242
+ }
2243
+ else {
2244
+ throw new Error("[@my-react/reconciler] should not process async load list on sync mount without enableAsyncLoad, you may use a wrong renderDispatch instance");
2245
+ }
2246
+ }
2229
2247
  };
2230
2248
 
2231
2249
  exports.updateTypeEnum = void 0;
@@ -2694,7 +2712,7 @@ function requireIndex_development_1 () {
2694
2712
  var enableDebugFiled$8 = react.__my_react_shared__.enableDebugFiled;
2695
2713
  var currentScheduler$c = react.__my_react_internal__.currentScheduler;
2696
2714
  // TODO 整合
2697
- var processClassComponentUpdateQueue = function (renderDispatch, fiber, enableTaskPriority) {
2715
+ var processClassComponentUpdateQueueLatest = function (renderDispatch, fiber, enableTaskPriority) {
2698
2716
  if (myreactSharedExports.include(fiber.state, myreactSharedExports.STATE_TYPE.__unmount__))
2699
2717
  return;
2700
2718
  if (myreactSharedExports.exclude(fiber.type, exports.NODE_TYPE.__class__))
@@ -2885,7 +2903,108 @@ function requireIndex_development_1 () {
2885
2903
  }
2886
2904
  }
2887
2905
  };
2888
- var processFunctionComponentUpdateQueue = function (renderDispatch, fiber, enableTaskPriority) {
2906
+ var processClassComponentUpdateQueueLegacy = function (renderDispatch, fiber) {
2907
+ if (myreactSharedExports.include(fiber.state, myreactSharedExports.STATE_TYPE.__unmount__))
2908
+ return;
2909
+ if (myreactSharedExports.exclude(fiber.type, exports.NODE_TYPE.__class__))
2910
+ throw new Error("[@my-react/react] current fiber is not a class component, look like a bug for @my-react");
2911
+ var renderScheduler = currentScheduler$c.current;
2912
+ var allQueue = fiber.updateQueue;
2913
+ var typedFiber = fiber;
2914
+ var node = allQueue === null || allQueue === void 0 ? void 0 : allQueue.head;
2915
+ var needUpdate = true;
2916
+ var isSync = false;
2917
+ var isForce = false;
2918
+ var isImmediate = false;
2919
+ var isRetrigger = false;
2920
+ var callbacks = [];
2921
+ var processedNodes = [];
2922
+ var typedInstance = fiber.instance;
2923
+ var baseState = Object.assign({}, fiber.pendingState);
2924
+ var baseProps = Object.assign({}, typedInstance.props);
2925
+ var pendingState = Object.assign({}, fiber.pendingState);
2926
+ if (node) {
2927
+ var updater = node.value;
2928
+ if (updater.type === myreactSharedExports.UpdateQueueType.component) {
2929
+ if (updater.trigger !== typedInstance)
2930
+ throw new Error("[@my-react/react] current update not valid, look like a bug for @my-react");
2931
+ allQueue.delete(node);
2932
+ {
2933
+ processedNodes.push(updater);
2934
+ }
2935
+ var payLoad_3 = updater.payLoad;
2936
+ fiber.pendingState = safeCallWithCurrentFiber({
2937
+ fiber: fiber,
2938
+ fallback: function safeFallbackForState() {
2939
+ return pendingState;
2940
+ },
2941
+ action: function safeGetNextState() {
2942
+ return Object.assign({}, fiber.pendingState, typeof payLoad_3 === "function" ? payLoad_3(baseState, baseProps) : payLoad_3);
2943
+ },
2944
+ });
2945
+ isSync = isSync || updater.isSync;
2946
+ isForce = isForce || updater.isForce;
2947
+ isImmediate = isImmediate || updater.isImmediate;
2948
+ isRetrigger = isRetrigger || updater.isRetrigger;
2949
+ updater.callback && callbacks.push(updater.callback);
2950
+ if (enableDebugFiled$8.current) {
2951
+ var typedNode = updater;
2952
+ typedNode._debugRunTime = Date.now();
2953
+ typedNode._debugBeforeValue = pendingState;
2954
+ typedNode._debugBaseValue = baseState;
2955
+ typedNode._debugAfterValue = fiber.pendingState;
2956
+ if (enableDebugUpdateQueue.current) {
2957
+ typedFiber._debugUpdateQueue = typedFiber._debugUpdateQueue || new myreactSharedExports.ListTree();
2958
+ typedFiber._debugUpdateQueue.push(typedNode);
2959
+ }
2960
+ }
2961
+ }
2962
+ else {
2963
+ allQueue.delete(node);
2964
+ {
2965
+ processedNodes.push(updater);
2966
+ }
2967
+ isSync = isSync || updater.isSync;
2968
+ isForce = isForce || updater.isForce;
2969
+ isImmediate = isImmediate || updater.isImmediate;
2970
+ isRetrigger = isRetrigger || updater.isRetrigger;
2971
+ updater.callback && callbacks.push(updater.callback);
2972
+ if (enableDebugFiled$8.current) {
2973
+ var typedNode = updater;
2974
+ typedNode._debugRunTime = Date.now();
2975
+ typedNode._debugBeforeValue = pendingState;
2976
+ typedNode._debugBaseValue = baseState;
2977
+ typedNode._debugAfterValue = fiber.pendingState;
2978
+ if (enableDebugUpdateQueue.current) {
2979
+ typedFiber._debugUpdateQueue = typedFiber._debugUpdateQueue || new myreactSharedExports.ListTree();
2980
+ typedFiber._debugUpdateQueue.push(typedNode);
2981
+ }
2982
+ }
2983
+ }
2984
+ }
2985
+ if (allQueue.length) {
2986
+ renderScheduler.microTask(function prepareUpdateOnFiberTask() {
2987
+ prepareUpdateOnFiber(renderDispatch, fiber, true);
2988
+ });
2989
+ }
2990
+ var invokeCallbackArray = callbacks.length
2991
+ ? function invokeCallbackArray() {
2992
+ return callbacks.forEach(function (cb) { return cb === null || cb === void 0 ? void 0 : cb(); });
2993
+ }
2994
+ : void 0;
2995
+ {
2996
+ return {
2997
+ needUpdate: needUpdate,
2998
+ nodes: processedNodes,
2999
+ isSync: isSync,
3000
+ isForce: isForce,
3001
+ isImmediate: isImmediate,
3002
+ isRetrigger: isRetrigger,
3003
+ callback: invokeCallbackArray,
3004
+ };
3005
+ }
3006
+ };
3007
+ var processFunctionComponentUpdateQueueLatest = function (renderDispatch, fiber, enableTaskPriority) {
2889
3008
  var _a, _b;
2890
3009
  if (myreactSharedExports.include(fiber.state, myreactSharedExports.STATE_TYPE.__unmount__))
2891
3010
  return;
@@ -2915,7 +3034,7 @@ function requireIndex_development_1 () {
2915
3034
  {
2916
3035
  processedNodes.push(updater);
2917
3036
  }
2918
- var trigger = updater.trigger, payLoad_3 = updater.payLoad, reducer_1 = updater.reducer;
3037
+ var trigger = updater.trigger, payLoad_4 = updater.payLoad, reducer_1 = updater.reducer;
2919
3038
  var typedTrigger_1 = trigger;
2920
3039
  var lastResult_1 = typedTrigger_1.result;
2921
3040
  if (typedTrigger_1.type === myreactSharedExports.HOOK_TYPE.useSyncExternalStore) {
@@ -2930,10 +3049,10 @@ function requireIndex_development_1 () {
2930
3049
  },
2931
3050
  action: function safeGetNextState() {
2932
3051
  if (reducer_1 && typeof reducer_1 === "function") {
2933
- return reducer_1(lastResult_1, payLoad_3);
3052
+ return reducer_1(lastResult_1, payLoad_4);
2934
3053
  }
2935
3054
  else {
2936
- return typedTrigger_1.reducer(lastResult_1, payLoad_3);
3055
+ return typedTrigger_1.reducer(lastResult_1, payLoad_4);
2937
3056
  }
2938
3057
  },
2939
3058
  });
@@ -3019,7 +3138,7 @@ function requireIndex_development_1 () {
3019
3138
  {
3020
3139
  processedNodes.push(updater);
3021
3140
  }
3022
- var trigger = updater.trigger, payLoad_4 = updater.payLoad, reducer_2 = updater.reducer;
3141
+ var trigger = updater.trigger, payLoad_5 = updater.payLoad, reducer_2 = updater.reducer;
3023
3142
  var typedTrigger_2 = trigger;
3024
3143
  var lastResult_2 = typedTrigger_2.result;
3025
3144
  if (typedTrigger_2.type === myreactSharedExports.HOOK_TYPE.useSyncExternalStore) {
@@ -3034,10 +3153,10 @@ function requireIndex_development_1 () {
3034
3153
  },
3035
3154
  action: function safeGetNextState() {
3036
3155
  if (reducer_2 && typeof reducer_2 === "function") {
3037
- return reducer_2(lastResult_2, payLoad_4);
3156
+ return reducer_2(lastResult_2, payLoad_5);
3038
3157
  }
3039
3158
  else {
3040
- return typedTrigger_2.reducer(lastResult_2, payLoad_4);
3159
+ return typedTrigger_2.reducer(lastResult_2, payLoad_5);
3041
3160
  }
3042
3161
  },
3043
3162
  });
@@ -3107,7 +3226,123 @@ function requireIndex_development_1 () {
3107
3226
  }
3108
3227
  }
3109
3228
  };
3110
- var processNormalComponentUpdate = function (fiber) {
3229
+ var processFunctionComponentUpdateQueueLegacy = function (renderDispatch, fiber) {
3230
+ var _a;
3231
+ if (myreactSharedExports.include(fiber.state, myreactSharedExports.STATE_TYPE.__unmount__))
3232
+ return;
3233
+ if (myreactSharedExports.exclude(fiber.type, exports.NODE_TYPE.__function__)) {
3234
+ throw new Error("[@my-react/react] current fiber is not a function component, look like a bug for @my-react");
3235
+ }
3236
+ var renderScheduler = currentScheduler$c.current;
3237
+ var allQueue = fiber.updateQueue;
3238
+ var typedFiber = fiber;
3239
+ var node = allQueue === null || allQueue === void 0 ? void 0 : allQueue.head;
3240
+ var needUpdate = false;
3241
+ var isSync = false;
3242
+ var isForce = false;
3243
+ var isImmediate = false;
3244
+ var isRetrigger = false;
3245
+ var processedNodes = [];
3246
+ var callbacks = [];
3247
+ if (node) {
3248
+ var updater = node.value;
3249
+ if (updater.type === myreactSharedExports.UpdateQueueType.hook) {
3250
+ if (getInstanceOwnerFiber(updater.trigger) !== fiber) {
3251
+ throw new Error("[@my-react/react] current update not valid, look like a bug for @my-react");
3252
+ }
3253
+ allQueue.delete(node);
3254
+ {
3255
+ processedNodes.push(updater);
3256
+ }
3257
+ var trigger = updater.trigger, payLoad_6 = updater.payLoad, reducer_3 = updater.reducer;
3258
+ var typedTrigger_3 = trigger;
3259
+ var lastResult_3 = typedTrigger_3.result;
3260
+ if (typedTrigger_3.type === myreactSharedExports.HOOK_TYPE.useSyncExternalStore) {
3261
+ lastResult_3 = (_a = trigger.value) === null || _a === void 0 ? void 0 : _a.result;
3262
+ }
3263
+ var hasError_3 = false;
3264
+ typedTrigger_3.result = safeCallWithCurrentFiber({
3265
+ fiber: fiber,
3266
+ fallback: function safeFallbackForState() {
3267
+ hasError_3 = true;
3268
+ return lastResult_3;
3269
+ },
3270
+ action: function safeGetNextState() {
3271
+ if (reducer_3 && typeof reducer_3 === "function") {
3272
+ return reducer_3(lastResult_3, payLoad_6);
3273
+ }
3274
+ else {
3275
+ return typedTrigger_3.reducer(lastResult_3, payLoad_6);
3276
+ }
3277
+ },
3278
+ });
3279
+ isSync = isSync || updater.isSync;
3280
+ isForce = isForce || updater.isForce;
3281
+ isImmediate = isImmediate || updater.isImmediate;
3282
+ isRetrigger = isRetrigger || updater.isRetrigger;
3283
+ updater.callback && callbacks.push(updater.callback);
3284
+ if (!needUpdate && (isForce || hasError_3 || callbacks.length || !Object.is(lastResult_3, typedTrigger_3.result)))
3285
+ needUpdate = true;
3286
+ if (enableDebugFiled$8.current) {
3287
+ var typedNode = updater;
3288
+ typedNode._debugRunTime = Date.now();
3289
+ typedNode._debugBeforeValue = lastResult_3;
3290
+ typedNode._debugAfterValue = typedTrigger_3.result;
3291
+ if (enableDebugUpdateQueue.current) {
3292
+ typedFiber._debugUpdateQueue = typedFiber._debugUpdateQueue || new myreactSharedExports.ListTree();
3293
+ typedFiber._debugUpdateQueue.push(typedNode);
3294
+ typedTrigger_3._debugUpdateQueue = typedTrigger_3._debugUpdateQueue || new myreactSharedExports.ListTree();
3295
+ typedTrigger_3._debugUpdateQueue.push(typedNode);
3296
+ }
3297
+ }
3298
+ }
3299
+ else {
3300
+ allQueue.delete(node);
3301
+ {
3302
+ processedNodes.push(updater);
3303
+ }
3304
+ var payLoad = updater.payLoad;
3305
+ isSync = isSync || updater.isSync;
3306
+ isForce = isForce || updater.isForce;
3307
+ isImmediate = isImmediate || updater.isImmediate;
3308
+ isRetrigger = isRetrigger || updater.isRetrigger;
3309
+ updater.callback && callbacks.push(updater.callback);
3310
+ needUpdate = true;
3311
+ if (enableDebugFiled$8.current) {
3312
+ var typedNode = updater;
3313
+ typedNode._debugRunTime = Date.now();
3314
+ typedNode._debugBeforeValue = undefined;
3315
+ typedNode._debugAfterValue = payLoad;
3316
+ if (enableDebugUpdateQueue.current) {
3317
+ typedFiber._debugUpdateQueue = typedFiber._debugUpdateQueue || new myreactSharedExports.ListTree();
3318
+ typedFiber._debugUpdateQueue.push(typedNode);
3319
+ }
3320
+ }
3321
+ }
3322
+ }
3323
+ if (allQueue.length) {
3324
+ renderScheduler.microTask(function prepareUpdateOnFiberTask() {
3325
+ prepareUpdateOnFiber(renderDispatch, fiber, true);
3326
+ });
3327
+ }
3328
+ var invokeCallbackArray = callbacks.length
3329
+ ? function invokeCallbackArray() {
3330
+ return callbacks.forEach(function (cb) { return cb === null || cb === void 0 ? void 0 : cb(); });
3331
+ }
3332
+ : void 0;
3333
+ {
3334
+ return {
3335
+ needUpdate: needUpdate,
3336
+ nodes: processedNodes,
3337
+ isSync: isSync,
3338
+ isForce: isForce,
3339
+ isImmediate: isImmediate,
3340
+ isRetrigger: isRetrigger,
3341
+ callback: invokeCallbackArray,
3342
+ };
3343
+ }
3344
+ };
3345
+ var processNormalComponentUpdateLatest = function (renderDispatch, fiber) {
3111
3346
  if (myreactSharedExports.include(fiber.state, myreactSharedExports.STATE_TYPE.__unmount__))
3112
3347
  return;
3113
3348
  var allQueue = fiber.updateQueue;
@@ -3162,6 +3397,65 @@ function requireIndex_development_1 () {
3162
3397
  };
3163
3398
  }
3164
3399
  };
3400
+ var processNormalComponentUpdateLegacy = function (renderDispatch, fiber) {
3401
+ if (myreactSharedExports.include(fiber.state, myreactSharedExports.STATE_TYPE.__unmount__))
3402
+ return;
3403
+ var allQueue = fiber.updateQueue;
3404
+ var typedFiber = fiber;
3405
+ var renderScheduler = currentScheduler$c.current;
3406
+ var node = allQueue === null || allQueue === void 0 ? void 0 : allQueue.head;
3407
+ var needUpdate = true;
3408
+ var isSync = false;
3409
+ var isForce = false;
3410
+ var isImmediate = false;
3411
+ var isRetrigger = false;
3412
+ var processedNodes = [];
3413
+ var callbacks = [];
3414
+ if (node) {
3415
+ var updater = node.value;
3416
+ allQueue.delete(node);
3417
+ {
3418
+ processedNodes.push(updater);
3419
+ }
3420
+ var payLoad = updater.payLoad;
3421
+ isSync = isSync || updater.isSync;
3422
+ isForce = isForce || updater.isForce;
3423
+ isImmediate = isImmediate || updater.isImmediate;
3424
+ isRetrigger = isRetrigger || updater.isRetrigger;
3425
+ updater.callback && callbacks.push(updater.callback);
3426
+ if (enableDebugFiled$8.current) {
3427
+ var typedNode = updater;
3428
+ typedNode._debugRunTime = Date.now();
3429
+ typedNode._debugBeforeValue = undefined;
3430
+ typedNode._debugAfterValue = payLoad;
3431
+ if (enableDebugUpdateQueue.current) {
3432
+ typedFiber._debugUpdateQueue = typedFiber._debugUpdateQueue || new myreactSharedExports.ListTree();
3433
+ typedFiber._debugUpdateQueue.push(typedNode);
3434
+ }
3435
+ }
3436
+ }
3437
+ if (allQueue.length) {
3438
+ renderScheduler.microTask(function prepareUpdateOnFiberTask() {
3439
+ prepareUpdateOnFiber(renderDispatch, fiber, true);
3440
+ });
3441
+ }
3442
+ var invokeCallbackArray = callbacks.length
3443
+ ? function invokeCallbackArray() {
3444
+ return callbacks.forEach(function (cb) { return cb === null || cb === void 0 ? void 0 : cb(); });
3445
+ }
3446
+ : void 0;
3447
+ {
3448
+ return {
3449
+ needUpdate: needUpdate,
3450
+ nodes: processedNodes,
3451
+ isSync: isSync,
3452
+ isForce: isForce,
3453
+ isImmediate: isImmediate,
3454
+ isRetrigger: isRetrigger,
3455
+ callback: invokeCallbackArray,
3456
+ };
3457
+ }
3458
+ };
3165
3459
  /**
3166
3460
  * @deprecated
3167
3461
  */
@@ -3175,7 +3469,7 @@ function requireIndex_development_1 () {
3175
3469
  * @deprecated
3176
3470
  */
3177
3471
  var syncFlushComponentQueue = function (renderDispatch, fiber) {
3178
- var _a = processClassComponentUpdateQueue(renderDispatch, fiber), needUpdate = _a.needUpdate, callback = _a.callback;
3472
+ var _a = processClassComponentUpdateQueueLatest(renderDispatch, fiber), needUpdate = _a.needUpdate, callback = _a.callback;
3179
3473
  needUpdate && syncFiberStateToComponent(renderDispatch, fiber, callback);
3180
3474
  syncComponentStateToFiber(fiber);
3181
3475
  };
@@ -3672,6 +3966,12 @@ function requireIndex_development_1 () {
3672
3966
  throw new Error("[@my-react/react] ".concat(myreactSharedExports.HOOK_TYPE[hookNode.type], " initial error"));
3673
3967
  }
3674
3968
  }
3969
+ if (hookNode.type === myreactSharedExports.HOOK_TYPE.useOptimistic) {
3970
+ var value = hookNode.value;
3971
+ if (value.reducer && typeof value.reducer !== 'function') {
3972
+ throw new Error("[@my-react/react] ".concat(myreactSharedExports.HOOK_TYPE[hookNode.type], " initial error"));
3973
+ }
3974
+ }
3675
3975
  };
3676
3976
 
3677
3977
  var MyReactInternalInstance$4 = react.__my_react_internal__.MyReactInternalInstance, currentScheduler$8 = react.__my_react_internal__.currentScheduler;
@@ -3742,6 +4042,7 @@ function requireIndex_development_1 () {
3742
4042
  var defaultReducer = function (state, action) {
3743
4043
  return typeof action === "function" ? action(state) : action;
3744
4044
  };
4045
+ var defaultOptimisticReducer = function (state) { return state; };
3745
4046
  var createHookNode = function (renderDispatch, _a, fiber) {
3746
4047
  var _b;
3747
4048
  var type = _a.type, value = _a.value, reducer = _a.reducer, deps = _a.deps;
@@ -3774,7 +4075,7 @@ function requireIndex_development_1 () {
3774
4075
  hookNode.result = hookNode.value;
3775
4076
  }
3776
4077
  if (hookNode.type === myreactSharedExports.HOOK_TYPE.useId) {
3777
- hookNode.result = "_-".concat(currentHookIndex, "-").concat(renderDispatch.uniqueIdCount++, "-_");
4078
+ hookNode.result = "\u00AB-".concat(currentHookIndex, "-").concat(renderDispatch.uniqueIdCount++, "-\u00BB");
3778
4079
  hookNode.cancel = function () { return renderDispatch.uniqueIdCount--; };
3779
4080
  }
3780
4081
  if (hookNode.type === myreactSharedExports.HOOK_TYPE.useDebugValue) {
@@ -3859,20 +4160,17 @@ function requireIndex_development_1 () {
3859
4160
  hookNode.result = new MyReactSignal(hookNode.value.call(null), renderDispatch);
3860
4161
  }
3861
4162
  if (hookNode.type === myreactSharedExports.HOOK_TYPE.useTransition) {
3862
- hookNode.result = [
3863
- false,
3864
- // TODO
3865
- function startTransitionByHook(cb) {
4163
+ hookNode.result = {
4164
+ value: false,
4165
+ start: function startTransitionByHook(cb) {
3866
4166
  var loadingCallback = function (cb) {
3867
4167
  react.startTransition(function () {
3868
- hookNode.result[0] = true;
3869
- hookNode._update({ isForce: true, isSync: true, callback: cb });
4168
+ hookNode._update({ isForce: true, isSync: true, callback: cb, payLoad: function (last) { return ({ value: true, start: last.start }); } });
3870
4169
  });
3871
4170
  };
3872
4171
  var loadedCallback = function () {
3873
4172
  react.startTransition(function () {
3874
- hookNode.result[0] = false;
3875
- hookNode._update({ isForce: true, isSync: true });
4173
+ hookNode._update({ isForce: true, isSync: true, payLoad: function (last) { return ({ value: false, start: last.start }); } });
3876
4174
  });
3877
4175
  };
3878
4176
  var taskCallback = function () {
@@ -3883,7 +4181,19 @@ function requireIndex_development_1 () {
3883
4181
  };
3884
4182
  loadingCallback(taskCallback);
3885
4183
  },
3886
- ];
4184
+ };
4185
+ }
4186
+ if (hookNode.type === myreactSharedExports.HOOK_TYPE.useOptimistic) {
4187
+ hookNode.result = {
4188
+ value: value.value,
4189
+ start: function startOptimisticByHook(newValue) {
4190
+ var mergeFunc = hookNode.value.reducer || defaultOptimisticReducer;
4191
+ var nextValue = mergeFunc(newValue, hookNode.result.value.value);
4192
+ var payloadRef = { current: function (last) { return ({ value: nextValue, start: last.start }); } };
4193
+ hookNode._update({ isForce: true, isSync: true, payLoad: function (last) { return payloadRef.current(last); } });
4194
+ hookNode.cancel = function () { return payloadRef.current = function (last) { return last; }; };
4195
+ },
4196
+ };
3887
4197
  }
3888
4198
  var typedHook = hookNode;
3889
4199
  if (enableDebugFiled$6.current) {
@@ -3958,7 +4268,7 @@ function requireIndex_development_1 () {
3958
4268
  var enableDebugLog = react.__my_react_shared__.enableDebugLog;
3959
4269
  var currentHookTreeNode$1 = react.__my_react_internal__.currentHookTreeNode, currentScheduler$7 = react.__my_react_internal__.currentScheduler;
3960
4270
  var updateHookNode = function (renderDispatch, _a, fiber, isHMR) {
3961
- var _b, _c;
4271
+ var _b, _c, _d;
3962
4272
  var type = _a.type, value = _a.value, reducer = _a.reducer, deps = _a.deps;
3963
4273
  var renderScheduler = currentScheduler$7.current;
3964
4274
  var currentHook = (_b = currentHookTreeNode$1.current) === null || _b === void 0 ? void 0 : _b.value;
@@ -4121,12 +4431,19 @@ function requireIndex_development_1 () {
4121
4431
  currentHook.value = value;
4122
4432
  if (!Object.is(currentHook.value, currentHook.result)) {
4123
4433
  currentHook.cancel = renderScheduler.yieldTask(function triggerHookUpdate() {
4124
- currentHook.result = currentHook.value;
4125
- currentHook._update({ isForce: true });
4434
+ currentHook._update({ isForce: true, payLoad: function () { return currentHook.value; } });
4126
4435
  currentHook.cancel = null;
4127
4436
  });
4128
4437
  }
4129
4438
  }
4439
+ if (currentHook.type === myreactSharedExports.HOOK_TYPE.useOptimistic) {
4440
+ (_d = currentHook.cancel) === null || _d === void 0 ? void 0 : _d.call(currentHook);
4441
+ currentHook.value = value;
4442
+ if (!Object.is(currentHook.result.value, value.value)) {
4443
+ currentHook.result.value = value.value;
4444
+ // currentHook._update({ isForce: true, payLoad: (last) => ({ value: value.value, start: last.start }) });
4445
+ }
4446
+ }
4130
4447
  if (currentHook.type === myreactSharedExports.HOOK_TYPE.useDebugValue) {
4131
4448
  if (!myreactSharedExports.isArrayEquals(currentHook.value, value)) {
4132
4449
  currentHook.value = value;
@@ -4248,13 +4565,15 @@ function requireIndex_development_1 () {
4248
4565
  var flag = enableConcurrentMode.current;
4249
4566
  var updateState = null;
4250
4567
  if (myreactSharedExports.include(fiber.type, exports.NODE_TYPE.__class__)) {
4251
- updateState = processClassComponentUpdateQueue(renderDispatch, fiber, flag);
4568
+ updateState = flag ? processClassComponentUpdateQueueLatest(renderDispatch, fiber, flag) : processClassComponentUpdateQueueLegacy(renderDispatch, fiber);
4252
4569
  }
4253
4570
  else if (myreactSharedExports.include(fiber.type, exports.NODE_TYPE.__function__)) {
4254
- updateState = processFunctionComponentUpdateQueue(renderDispatch, fiber, flag);
4571
+ updateState = flag
4572
+ ? processFunctionComponentUpdateQueueLatest(renderDispatch, fiber, flag)
4573
+ : processFunctionComponentUpdateQueueLegacy(renderDispatch, fiber);
4255
4574
  }
4256
4575
  else {
4257
- updateState = processNormalComponentUpdate(fiber);
4576
+ updateState = flag ? processNormalComponentUpdateLatest(renderDispatch, fiber) : processNormalComponentUpdateLegacy(renderDispatch, fiber);
4258
4577
  }
4259
4578
  if (updateState === null || updateState === void 0 ? void 0 : updateState.needUpdate) {
4260
4579
  safeCallWithCurrentFiber({
@@ -4673,7 +4992,7 @@ function requireIndex_development_1 () {
4673
4992
  return createFiberNode(renderDispatch, { parent: parentFiber }, newChild);
4674
4993
  };
4675
4994
  var transformChildrenFiber = function (renderDispatch, parentFiber, children) {
4676
- var isUpdate = myreactSharedExports.exclude(parentFiber.state, myreactSharedExports.STATE_TYPE.__create__);
4995
+ var isUpdate = myreactSharedExports.exclude(parentFiber.state, myreactSharedExports.STATE_TYPE.__create__) && renderDispatch.isAppMounted;
4677
4996
  var isHMR = myreactSharedExports.include(parentFiber.state, myreactSharedExports.STATE_TYPE.__hmr__);
4678
4997
  var isRetrigger = myreactSharedExports.include(parentFiber.state, myreactSharedExports.STATE_TYPE.__retrigger__);
4679
4998
  // is current is retrigger update, skip update children
@@ -4922,7 +5241,7 @@ function requireIndex_development_1 () {
4922
5241
  typedElementType._loading = true;
4923
5242
  var renderScheduler_1 = currentScheduler$3.current;
4924
5243
  renderDispatch.processLazy(typedElementType).then(function () {
4925
- fiber.state = myreactSharedExports.STATE_TYPE.__create__;
5244
+ fiber.state = myreactSharedExports.STATE_TYPE.__recreate__;
4926
5245
  typedElementType._list.delete(fiber);
4927
5246
  var updater = {
4928
5247
  type: myreactSharedExports.UpdateQueueType.lazy,
@@ -5758,69 +6077,12 @@ function requireIndex_development_1 () {
5758
6077
 
5759
6078
  var currentScheduler$2 = react.__my_react_internal__.currentScheduler;
5760
6079
  var enableScopeTreeLog$2 = react.__my_react_shared__.enableScopeTreeLog;
5761
- var defaultDispatchMountLegacy = function (_dispatch, _fiber) {
5762
- var mountInsertionEffectList = function (_fiber) {
5763
- if (_fiber.child)
5764
- mountInsertionEffectList(_fiber.child);
5765
- insertionEffect(_dispatch, _fiber);
5766
- if (_fiber.sibling)
5767
- mountInsertionEffectList(_fiber.sibling);
5768
- };
5769
- var mountCommit = function (_fiber) {
5770
- safeCallWithCurrentFiber({
5771
- fiber: _fiber,
5772
- action: function safeCallCreateAndUpdate() {
5773
- _dispatch.commitCreate(_fiber);
5774
- _dispatch.commitUpdate(_fiber);
5775
- },
5776
- });
5777
- if (_fiber.child)
5778
- mountCommit(_fiber.child);
5779
- safeCallWithCurrentFiber({
5780
- fiber: _fiber,
5781
- action: function safeCallAppendAndSetRef() {
5782
- _dispatch.commitAppend(_fiber);
5783
- _dispatch.commitSetRef(_fiber);
5784
- },
5785
- });
5786
- if (_fiber.sibling) {
5787
- mountCommit(_fiber.sibling);
5788
- }
5789
- };
5790
- var mountLayoutEffectList = function (_fiber) {
5791
- if (_fiber.child)
5792
- mountLayoutEffectList(_fiber.child);
5793
- layoutEffect(_dispatch, _fiber);
5794
- if (_fiber.sibling)
5795
- mountLayoutEffectList(_fiber.sibling);
5796
- };
5797
- var mountEffectList = function (_fiber) {
5798
- if (_fiber.child)
5799
- mountEffectList(_fiber.child);
5800
- effect(_dispatch, _fiber);
5801
- if (_fiber.sibling)
5802
- mountEffectList(_fiber.sibling);
5803
- };
5804
- var mountLoop = function (_fiber) {
5805
- beforeSyncUpdate();
5806
- mountInsertionEffectList(_fiber);
5807
- afterSyncUpdate();
5808
- mountCommit(_fiber);
5809
- beforeSyncUpdate();
5810
- mountLayoutEffectList(_fiber);
5811
- afterSyncUpdate();
5812
- var renderScheduler = currentScheduler$2.current;
5813
- renderScheduler.microTask(function invokeEffectList() {
5814
- enableScopeTreeLog$2.current && setLogScope();
5815
- mountEffectList(_fiber);
5816
- enableScopeTreeLog$2.current && resetLogScope();
5817
- });
5818
- };
5819
- mountLoop(_fiber);
5820
- };
5821
6080
  var defaultDispatchMountLatest = function (_dispatch, _fiber) {
5822
6081
  var _list = generateFiberToMountList(_fiber);
5823
6082
  beforeSyncUpdate();
6083
+ _list.listToFoot(function invokeUnmountPendingAndInsertionEffectList(_fiber) {
6084
+ defaultInvokeUnmountList(_dispatch, _fiber);
6085
+ });
5824
6086
  _list.listToFoot(function invokeInsertionEffectList(_fiber) {
5825
6087
  insertionEffect(_dispatch, _fiber);
5826
6088
  });
@@ -6039,7 +6301,7 @@ function requireIndex_development_1 () {
6039
6301
  promise.status = "pending";
6040
6302
  var renderScheduler_1 = currentScheduler.current;
6041
6303
  renderDispatch.processPromise(promise).then(function () {
6042
- fiber.state = myreactSharedExports.STATE_TYPE.__create__;
6304
+ fiber.state = myreactSharedExports.STATE_TYPE.__recreate__;
6043
6305
  promise._list.delete(fiber);
6044
6306
  promise._loading = false;
6045
6307
  var updater = {
@@ -6064,7 +6326,7 @@ function requireIndex_development_1 () {
6064
6326
  _this.isAppMounted = false;
6065
6327
  _this.isAppCrashed = false;
6066
6328
  _this.isAppUnmounted = false;
6067
- _this.version = "0.3.12";
6329
+ _this.version = "0.3.14";
6068
6330
  _this.mode = "development" ;
6069
6331
  _this.renderMode = "render";
6070
6332
  _this.pendingCommitFiberList = null;
@@ -6392,10 +6654,12 @@ function requireIndex_development_1 () {
6392
6654
  case myreactSharedExports.HOOK_TYPE.useMemo:
6393
6655
  case myreactSharedExports.HOOK_TYPE.useContext:
6394
6656
  case myreactSharedExports.HOOK_TYPE.useCallback:
6395
- case myreactSharedExports.HOOK_TYPE.useTransition:
6396
6657
  case myreactSharedExports.HOOK_TYPE.useDeferredValue:
6397
6658
  case myreactSharedExports.HOOK_TYPE.useSyncExternalStore:
6398
6659
  return hookNode.result;
6660
+ case myreactSharedExports.HOOK_TYPE.useOptimistic:
6661
+ case myreactSharedExports.HOOK_TYPE.useTransition:
6662
+ return [hookNode.result.value, hookNode.result.start];
6399
6663
  case myreactSharedExports.HOOK_TYPE.useSignal:
6400
6664
  return [hookNode.result.getValue, hookNode.result.setValue];
6401
6665
  }
@@ -6411,7 +6675,7 @@ function requireIndex_development_1 () {
6411
6675
  fiber.hookList = fiber.hookList || new myreactSharedExports.ListTree();
6412
6676
  var currentHook = null;
6413
6677
  // initial
6414
- if (myreactSharedExports.include(fiber.state, myreactSharedExports.STATE_TYPE.__create__)) {
6678
+ if (myreactSharedExports.include(fiber.state, myreactSharedExports.STATE_TYPE.__create__ | myreactSharedExports.STATE_TYPE.__recreate__)) {
6415
6679
  currentHook = createHookNode(renderDispatch, { type: type, reducer: reducer, value: value, deps: deps }, fiber);
6416
6680
  safeCall(function safeCallHookInitialListener() {
6417
6681
  var _a, _b;
@@ -6443,12 +6707,10 @@ function requireIndex_development_1 () {
6443
6707
  (function finishMount() {
6444
6708
  enableScopeTreeLog.current && setLogScope();
6445
6709
  renderDispatch.reconcileCommit(fiber);
6446
- var commitList = renderDispatch.pendingCommitFiberList;
6447
6710
  var changedList = renderDispatch.pendingChangedFiberList;
6448
6711
  renderDispatch.resetUpdateFlowRuntimeFiber();
6449
6712
  renderDispatch.pendingCommitFiberList = null;
6450
6713
  renderDispatch.pendingChangedFiberList = null;
6451
- (commitList === null || commitList === void 0 ? void 0 : commitList.length) && renderDispatch.reconcileUpdate(commitList);
6452
6714
  enableScopeTreeLog.current && resetLogScope();
6453
6715
  (changedList === null || changedList === void 0 ? void 0 : changedList.length) &&
6454
6716
  safeCallWithCurrentFiber({
@@ -6475,12 +6737,10 @@ function requireIndex_development_1 () {
6475
6737
  (function finishMount() {
6476
6738
  enableScopeTreeLog.current && setLogScope();
6477
6739
  renderDispatch.reconcileCommit(fiber);
6478
- var commitList = renderDispatch.pendingCommitFiberList;
6479
6740
  var changedList = renderDispatch.pendingChangedFiberList;
6480
6741
  renderDispatch.resetUpdateFlowRuntimeFiber();
6481
6742
  renderDispatch.pendingCommitFiberList = null;
6482
6743
  renderDispatch.pendingChangedFiberList = null;
6483
- (commitList === null || commitList === void 0 ? void 0 : commitList.length) && renderDispatch.reconcileUpdate(commitList);
6484
6744
  enableScopeTreeLog.current && setLogScope();
6485
6745
  (changedList === null || changedList === void 0 ? void 0 : changedList.length) &&
6486
6746
  safeCallWithCurrentFiber({
@@ -6497,7 +6757,7 @@ function requireIndex_development_1 () {
6497
6757
  });
6498
6758
  }); };
6499
6759
 
6500
- var version = "0.3.12";
6760
+ var version = "0.3.14";
6501
6761
 
6502
6762
  exports.CustomRenderDispatch = CustomRenderDispatch;
6503
6763
  exports.MyReactFiberNode = MyReactFiberNode;
@@ -6525,7 +6785,6 @@ function requireIndex_development_1 () {
6525
6785
  exports.defaultDeleteCurrentEffect = defaultDeleteCurrentEffect;
6526
6786
  exports.defaultDispatchMount = defaultDispatchMount;
6527
6787
  exports.defaultDispatchMountLatest = defaultDispatchMountLatest;
6528
- exports.defaultDispatchMountLegacy = defaultDispatchMountLegacy;
6529
6788
  exports.defaultDispatchUnmount = defaultDispatchUnmount;
6530
6789
  exports.defaultDispatchUpdate = defaultDispatchUpdate;
6531
6790
  exports.defaultGenerateEffectMap = defaultGenerateEffectMap;
@@ -6630,13 +6889,16 @@ function requireIndex_development_1 () {
6630
6889
  exports.processClassComponentMount = processClassComponentMount;
6631
6890
  exports.processClassComponentUnmount = processClassComponentUnmount;
6632
6891
  exports.processClassComponentUpdate = processClassComponentUpdate;
6633
- exports.processClassComponentUpdateQueue = processClassComponentUpdateQueue;
6892
+ exports.processClassComponentUpdateQueueLatest = processClassComponentUpdateQueueLatest;
6893
+ exports.processClassComponentUpdateQueueLegacy = processClassComponentUpdateQueueLegacy;
6634
6894
  exports.processConsumer = processConsumer;
6635
6895
  exports.processFunction = processFunction;
6636
- exports.processFunctionComponentUpdateQueue = processFunctionComponentUpdateQueue;
6896
+ exports.processFunctionComponentUpdateQueueLatest = processFunctionComponentUpdateQueueLatest;
6897
+ exports.processFunctionComponentUpdateQueueLegacy = processFunctionComponentUpdateQueueLegacy;
6637
6898
  exports.processHook = processHook;
6638
6899
  exports.processLazy = processLazy;
6639
- exports.processNormalComponentUpdate = processNormalComponentUpdate;
6900
+ exports.processNormalComponentUpdateLatest = processNormalComponentUpdateLatest;
6901
+ exports.processNormalComponentUpdateLegacy = processNormalComponentUpdateLegacy;
6640
6902
  exports.processPromise = processPromise;
6641
6903
  exports.processProvider = processProvider;
6642
6904
  exports.processState = processState;
@@ -6888,6 +7150,7 @@ function requireIndex_development () {
6888
7150
  HOOK_TYPE[HOOK_TYPE["useInsertionEffect"] = 13] = "useInsertionEffect";
6889
7151
  HOOK_TYPE[HOOK_TYPE["useImperativeHandle"] = 14] = "useImperativeHandle";
6890
7152
  HOOK_TYPE[HOOK_TYPE["useSyncExternalStore"] = 15] = "useSyncExternalStore";
7153
+ HOOK_TYPE[HOOK_TYPE["useOptimistic"] = 16] = "useOptimistic";
6891
7154
  })(exports.HOOK_TYPE || (exports.HOOK_TYPE = {}));
6892
7155
 
6893
7156
  exports.UpdateQueueType = void 0;
@@ -6916,6 +7179,7 @@ function requireIndex_development () {
6916
7179
  STATE_TYPE[STATE_TYPE["__hmr__"] = 256] = "__hmr__";
6917
7180
  STATE_TYPE[STATE_TYPE["__retrigger__"] = 512] = "__retrigger__";
6918
7181
  STATE_TYPE[STATE_TYPE["__reschedule__"] = 1024] = "__reschedule__";
7182
+ STATE_TYPE[STATE_TYPE["__recreate__"] = 2048] = "__recreate__";
6919
7183
  })(exports.STATE_TYPE || (exports.STATE_TYPE = {}));
6920
7184
 
6921
7185
  exports.PATCH_TYPE = void 0;
@@ -7854,12 +8118,15 @@ var ReconcilerDispatchFiber = function (renderDispatch, fiber) {
7854
8118
  }
7855
8119
  };
7856
8120
 
7857
- var currentScheduler$1 = require$$0.__my_react_internal__.currentScheduler;
7858
- var enableScopeTreeLog$2 = require$$0.__my_react_shared__.enableScopeTreeLog;
8121
+ var currentScheduler$2 = require$$0.__my_react_internal__.currentScheduler;
8122
+ var enableScopeTreeLog$3 = require$$0.__my_react_shared__.enableScopeTreeLog;
7859
8123
  var ReconcilerDispatchMount = function (_dispatch, _fiber, config) {
7860
8124
  var _list = myreactReconcilerExports.generateFiberToMountList(_fiber);
7861
8125
  var pendingCommitFiberArray = [];
7862
8126
  myreactReconcilerExports.beforeSyncUpdate();
8127
+ _list.listToFoot(function invokeUnmountPendingAndInsertionEffectList(_fiber) {
8128
+ myreactReconcilerExports.defaultInvokeUnmountList(_dispatch, _fiber);
8129
+ });
7863
8130
  _list.listToFoot(function invokeInsertionEffectList(_fiber) {
7864
8131
  myreactReconcilerExports.insertionEffect(_dispatch, _fiber);
7865
8132
  });
@@ -7913,11 +8180,113 @@ var ReconcilerDispatchMount = function (_dispatch, _fiber, config) {
7913
8180
  myreactReconcilerExports.layoutEffect(_dispatch, _fiber);
7914
8181
  });
7915
8182
  myreactReconcilerExports.afterSyncUpdate();
8183
+ var renderScheduler = currentScheduler$2.current;
8184
+ renderScheduler.microTask(function invokeEffectListTask() {
8185
+ enableScopeTreeLog$3.current && myreactReconcilerExports.setLogScope();
8186
+ _list.listToFoot(function invokeEffectList(_fiber) {
8187
+ myreactReconcilerExports.effect(_dispatch, _fiber);
8188
+ });
8189
+ enableScopeTreeLog$3.current && myreactReconcilerExports.resetLogScope();
8190
+ });
8191
+ };
8192
+
8193
+ var currentScheduler$1 = require$$0.__my_react_internal__.currentScheduler;
8194
+ var enableScopeTreeLog$2 = require$$0.__my_react_shared__.enableScopeTreeLog;
8195
+ var ReconcilerDispatchUpdate = function (_dispatch, _list, config) {
8196
+ myreactReconcilerExports.beforeSyncUpdate();
8197
+ _list.listToFoot(function invokeUnmountPendingAndInsertionEffectList(_fiber) {
8198
+ if (myreactSharedExports.exclude(_fiber.state, myreactSharedExports.STATE_TYPE.__unmount__) && !_dispatch.isAppUnmounted) {
8199
+ myreactReconcilerExports.defaultInvokeUnmountList(_dispatch, _fiber);
8200
+ }
8201
+ });
8202
+ _list.listToFoot(function invokeUnmountPendingAndInsertionEffectList(_fiber) {
8203
+ if (myreactSharedExports.exclude(_fiber.state, myreactSharedExports.STATE_TYPE.__unmount__) && !_dispatch.isAppUnmounted) {
8204
+ myreactReconcilerExports.insertionEffect(_dispatch, _fiber);
8205
+ }
8206
+ });
8207
+ myreactReconcilerExports.afterSyncUpdate();
8208
+ var pendingCreateFiberArray = [];
8209
+ var pendingCommitFiberArray = [];
8210
+ _list.listToFoot(function invokeCreateAndUpdateList(_fiber) {
8211
+ if (myreactSharedExports.exclude(_fiber.state, myreactSharedExports.STATE_TYPE.__unmount__) && !_dispatch.isAppUnmounted) {
8212
+ var beforeHasNode = _fiber.nativeNode;
8213
+ myreactReconcilerExports.safeCallWithCurrentFiber({
8214
+ fiber: _fiber,
8215
+ action: function safeCallCreateAndUpdate() {
8216
+ _dispatch.commitCreate(_fiber);
8217
+ _dispatch.commitUpdate(_fiber);
8218
+ },
8219
+ });
8220
+ var afterHasNode = _fiber.nativeNode;
8221
+ if (!beforeHasNode && afterHasNode) {
8222
+ pendingCreateFiberArray.push(_fiber);
8223
+ }
8224
+ }
8225
+ });
8226
+ _list.listToHead(function invokePositionList(_fiber) {
8227
+ if (myreactSharedExports.exclude(_fiber.state, myreactSharedExports.STATE_TYPE.__unmount__) && !_dispatch.isAppUnmounted) {
8228
+ myreactReconcilerExports.safeCallWithCurrentFiber({
8229
+ fiber: _fiber,
8230
+ action: function safeCallPosition() {
8231
+ _dispatch.commitPosition(_fiber);
8232
+ },
8233
+ });
8234
+ }
8235
+ });
8236
+ _list.listToFoot(function invokeAppendList(_fiber) {
8237
+ if (myreactSharedExports.exclude(_fiber.state, myreactSharedExports.STATE_TYPE.__unmount__) && !_dispatch.isAppUnmounted) {
8238
+ myreactReconcilerExports.safeCallWithCurrentFiber({
8239
+ fiber: _fiber,
8240
+ action: function safeCallAppendList() {
8241
+ _dispatch.commitAppend(_fiber);
8242
+ },
8243
+ });
8244
+ }
8245
+ });
8246
+ _list.listToFoot(function invokeSetRefList(_fiber) {
8247
+ if (myreactSharedExports.exclude(_fiber.state, myreactSharedExports.STATE_TYPE.__unmount__) && !_dispatch.isAppUnmounted) {
8248
+ myreactReconcilerExports.safeCallWithCurrentFiber({
8249
+ fiber: _fiber,
8250
+ action: function safeCallSetRefList() {
8251
+ _dispatch.commitSetRef(_fiber);
8252
+ },
8253
+ });
8254
+ }
8255
+ });
8256
+ pendingCreateFiberArray.forEach(function invokeFinalizeInitialChildren(_fiber) {
8257
+ if (_fiber.nativeNode) {
8258
+ var node = config.getPublicInstance(_fiber.nativeNode);
8259
+ var type = _fiber.elementType;
8260
+ var props = _fiber.pendingProps;
8261
+ var rootContainerInstance = config.getPublicInstance(_dispatch.rootNode);
8262
+ var hostContext = _dispatch.runtimeDom.hostContextMap.get(_fiber.parent || _fiber);
8263
+ if (config.finalizeInitialChildren(node, type, props, rootContainerInstance, hostContext)) {
8264
+ pendingCommitFiberArray.push(_fiber);
8265
+ }
8266
+ }
8267
+ });
8268
+ pendingCommitFiberArray.forEach(function invokeCommitMount(_fiber) {
8269
+ var _a;
8270
+ var node = config.getPublicInstance(_fiber.nativeNode);
8271
+ var type = _fiber.elementType;
8272
+ var props = _fiber.pendingProps;
8273
+ (_a = config.commitMount) === null || _a === void 0 ? void 0 : _a.call(config, node, type, props, _fiber);
8274
+ });
8275
+ myreactReconcilerExports.beforeSyncUpdate();
8276
+ _list.listToFoot(function invokeLayoutEffectList(_fiber) {
8277
+ if (myreactSharedExports.exclude(_fiber.state, myreactSharedExports.STATE_TYPE.__unmount__) && !_dispatch.isAppUnmounted) {
8278
+ myreactReconcilerExports.layoutEffect(_dispatch, _fiber);
8279
+ }
8280
+ });
8281
+ myreactReconcilerExports.afterSyncUpdate();
7916
8282
  var renderScheduler = currentScheduler$1.current;
8283
+ // TODO before next update flow, make sure all the effect has done
7917
8284
  renderScheduler.microTask(function invokeEffectListTask() {
7918
8285
  enableScopeTreeLog$2.current && myreactReconcilerExports.setLogScope();
7919
8286
  _list.listToFoot(function invokeEffectList(_fiber) {
7920
- myreactReconcilerExports.effect(_dispatch, _fiber);
8287
+ if (myreactSharedExports.exclude(_fiber.state, myreactSharedExports.STATE_TYPE.__unmount__) && !_dispatch.isAppUnmounted) {
8288
+ myreactReconcilerExports.effect(_dispatch, _fiber);
8289
+ }
7921
8290
  });
7922
8291
  enableScopeTreeLog$2.current && myreactReconcilerExports.resetLogScope();
7923
8292
  });
@@ -7993,7 +8362,22 @@ var createDispatch = function (rootNode, rootFiber, rootElement, config) {
7993
8362
  ReconcilerDispatch.prototype.reconcileUpdate = function (_list) {
7994
8363
  var _a, _b;
7995
8364
  (_a = config.prepareForCommit) === null || _a === void 0 ? void 0 : _a.call(config, rootNode);
7996
- _super.prototype.reconcileUpdate.call(this, _list);
8365
+ var instance = this;
8366
+ myreactReconcilerExports.safeCall(function safeCallBeforeUpdate() {
8367
+ var _a;
8368
+ (_a = instance.beforeUpdate) === null || _a === void 0 ? void 0 : _a.call(instance);
8369
+ });
8370
+ myreactReconcilerExports.safeCall(function safeCallBeforeUpdateListener() {
8371
+ myreactReconcilerExports.listenerMap.get(instance).beforeUpdate.forEach(function (cb) { return cb(); });
8372
+ });
8373
+ ReconcilerDispatchUpdate(this, _list, config);
8374
+ myreactReconcilerExports.safeCall(function safeCallAfterUpdateListener() {
8375
+ myreactReconcilerExports.listenerMap.get(instance).afterUpdate.forEach(function (cb) { return cb(); });
8376
+ });
8377
+ myreactReconcilerExports.safeCall(function safeCallAfterUpdate() {
8378
+ var _a;
8379
+ (_a = instance.afterUpdate) === null || _a === void 0 ? void 0 : _a.call(instance);
8380
+ });
7997
8381
  (_b = config.resetAfterCommit) === null || _b === void 0 ? void 0 : _b.call(config, rootNode);
7998
8382
  };
7999
8383
  ReconcilerDispatch.prototype.patchToFiberInitial = function (_fiber) {
@@ -8120,6 +8504,7 @@ var enableDebugFiled$1 = require$$0.__my_react_shared__.enableDebugFiled, enable
8120
8504
  * @internal
8121
8505
  */
8122
8506
  var prepareScheduler = function () {
8507
+ // enableConcurrentMode.current = false;
8123
8508
  enableDebugFiled$1.current = true;
8124
8509
  enableScopeTreeLog$1.current = true;
8125
8510
  myreactReconcilerExports.enableFiberForLog.current = true;
@@ -8231,7 +8616,7 @@ var Reconciler = function (_config) {
8231
8616
  };
8232
8617
  };
8233
8618
 
8234
- var version = "0.0.3";
8619
+ var version = "0.0.5";
8235
8620
  var createReconciler = Reconciler;
8236
8621
 
8237
8622
  exports.createReconciler = createReconciler;