@my-react/react-reconciler-compact 0.0.4 → 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_production_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;
@@ -2581,7 +2582,7 @@ function requireIndex_production_1 () {
2581
2582
  react.__my_react_shared__.enableDebugFiled;
2582
2583
  var currentScheduler$c = react.__my_react_internal__.currentScheduler;
2583
2584
  // TODO 整合
2584
- var processClassComponentUpdateQueue = function (renderDispatch, fiber, enableTaskPriority) {
2585
+ var processClassComponentUpdateQueueLatest = function (renderDispatch, fiber, enableTaskPriority) {
2585
2586
  if (myreactSharedExports.include(fiber.state, myreactSharedExports.STATE_TYPE.__unmount__))
2586
2587
  return;
2587
2588
  if (myreactSharedExports.exclude(fiber.type, exports.NODE_TYPE.__class__))
@@ -2707,7 +2708,75 @@ function requireIndex_production_1 () {
2707
2708
  }
2708
2709
  }
2709
2710
  };
2710
- var processFunctionComponentUpdateQueue = function (renderDispatch, fiber, enableTaskPriority) {
2711
+ var processClassComponentUpdateQueueLegacy = function (renderDispatch, fiber) {
2712
+ if (myreactSharedExports.include(fiber.state, myreactSharedExports.STATE_TYPE.__unmount__))
2713
+ return;
2714
+ if (myreactSharedExports.exclude(fiber.type, exports.NODE_TYPE.__class__))
2715
+ throw new Error("[@my-react/react] current fiber is not a class component, look like a bug for @my-react");
2716
+ var renderScheduler = currentScheduler$c.current;
2717
+ var allQueue = fiber.updateQueue;
2718
+ var node = allQueue === null || allQueue === void 0 ? void 0 : allQueue.head;
2719
+ var needUpdate = true;
2720
+ var isSync = false;
2721
+ var isForce = false;
2722
+ var isImmediate = false;
2723
+ var isRetrigger = false;
2724
+ var callbacks = [];
2725
+ var typedInstance = fiber.instance;
2726
+ var baseState = Object.assign({}, fiber.pendingState);
2727
+ var baseProps = Object.assign({}, typedInstance.props);
2728
+ var pendingState = Object.assign({}, fiber.pendingState);
2729
+ if (node) {
2730
+ var updater = node.value;
2731
+ if (updater.type === myreactSharedExports.UpdateQueueType.component) {
2732
+ allQueue.delete(node);
2733
+ var payLoad_3 = updater.payLoad;
2734
+ fiber.pendingState = safeCallWithCurrentFiber({
2735
+ fiber: fiber,
2736
+ fallback: function safeFallbackForState() {
2737
+ return pendingState;
2738
+ },
2739
+ action: function safeGetNextState() {
2740
+ return Object.assign({}, fiber.pendingState, typeof payLoad_3 === "function" ? payLoad_3(baseState, baseProps) : payLoad_3);
2741
+ },
2742
+ });
2743
+ isSync = isSync || updater.isSync;
2744
+ isForce = isForce || updater.isForce;
2745
+ isImmediate = isImmediate || updater.isImmediate;
2746
+ isRetrigger = isRetrigger || updater.isRetrigger;
2747
+ updater.callback && callbacks.push(updater.callback);
2748
+ }
2749
+ else {
2750
+ allQueue.delete(node);
2751
+ isSync = isSync || updater.isSync;
2752
+ isForce = isForce || updater.isForce;
2753
+ isImmediate = isImmediate || updater.isImmediate;
2754
+ isRetrigger = isRetrigger || updater.isRetrigger;
2755
+ updater.callback && callbacks.push(updater.callback);
2756
+ }
2757
+ }
2758
+ if (allQueue.length) {
2759
+ renderScheduler.microTask(function prepareUpdateOnFiberTask() {
2760
+ prepareUpdateOnFiber(renderDispatch, fiber, true);
2761
+ });
2762
+ }
2763
+ var invokeCallbackArray = callbacks.length
2764
+ ? function invokeCallbackArray() {
2765
+ return callbacks.forEach(function (cb) { return cb === null || cb === void 0 ? void 0 : cb(); });
2766
+ }
2767
+ : void 0;
2768
+ {
2769
+ return {
2770
+ needUpdate: needUpdate,
2771
+ isSync: isSync,
2772
+ isForce: isForce,
2773
+ isImmediate: isImmediate,
2774
+ isRetrigger: isRetrigger,
2775
+ callback: invokeCallbackArray,
2776
+ };
2777
+ }
2778
+ };
2779
+ var processFunctionComponentUpdateQueueLatest = function (renderDispatch, fiber, enableTaskPriority) {
2711
2780
  var _a, _b;
2712
2781
  if (myreactSharedExports.include(fiber.state, myreactSharedExports.STATE_TYPE.__unmount__))
2713
2782
  return;
@@ -2729,7 +2798,7 @@ function requireIndex_production_1 () {
2729
2798
  var nextNode = node.next;
2730
2799
  if (updater.type === myreactSharedExports.UpdateQueueType.hook && updater.isSync) {
2731
2800
  allQueue.delete(node);
2732
- var trigger = updater.trigger, payLoad_3 = updater.payLoad, reducer_1 = updater.reducer;
2801
+ var trigger = updater.trigger, payLoad_4 = updater.payLoad, reducer_1 = updater.reducer;
2733
2802
  var typedTrigger_1 = trigger;
2734
2803
  var lastResult_1 = typedTrigger_1.result;
2735
2804
  if (typedTrigger_1.type === myreactSharedExports.HOOK_TYPE.useSyncExternalStore) {
@@ -2744,10 +2813,10 @@ function requireIndex_production_1 () {
2744
2813
  },
2745
2814
  action: function safeGetNextState() {
2746
2815
  if (reducer_1 && typeof reducer_1 === "function") {
2747
- return reducer_1(lastResult_1, payLoad_3);
2816
+ return reducer_1(lastResult_1, payLoad_4);
2748
2817
  }
2749
2818
  else {
2750
- return typedTrigger_1.reducer(lastResult_1, payLoad_3);
2819
+ return typedTrigger_1.reducer(lastResult_1, payLoad_4);
2751
2820
  }
2752
2821
  },
2753
2822
  });
@@ -2801,7 +2870,7 @@ function requireIndex_production_1 () {
2801
2870
  var nextNode = node.next;
2802
2871
  if (updater.type === myreactSharedExports.UpdateQueueType.hook) {
2803
2872
  allQueue.delete(node);
2804
- var trigger = updater.trigger, payLoad_4 = updater.payLoad, reducer_2 = updater.reducer;
2873
+ var trigger = updater.trigger, payLoad_5 = updater.payLoad, reducer_2 = updater.reducer;
2805
2874
  var typedTrigger_2 = trigger;
2806
2875
  var lastResult_2 = typedTrigger_2.result;
2807
2876
  if (typedTrigger_2.type === myreactSharedExports.HOOK_TYPE.useSyncExternalStore) {
@@ -2816,10 +2885,10 @@ function requireIndex_production_1 () {
2816
2885
  },
2817
2886
  action: function safeGetNextState() {
2818
2887
  if (reducer_2 && typeof reducer_2 === "function") {
2819
- return reducer_2(lastResult_2, payLoad_4);
2888
+ return reducer_2(lastResult_2, payLoad_5);
2820
2889
  }
2821
2890
  else {
2822
- return typedTrigger_2.reducer(lastResult_2, payLoad_4);
2891
+ return typedTrigger_2.reducer(lastResult_2, payLoad_5);
2823
2892
  }
2824
2893
  },
2825
2894
  });
@@ -2863,7 +2932,89 @@ function requireIndex_production_1 () {
2863
2932
  }
2864
2933
  }
2865
2934
  };
2866
- var processNormalComponentUpdate = function (fiber) {
2935
+ var processFunctionComponentUpdateQueueLegacy = function (renderDispatch, fiber) {
2936
+ var _a;
2937
+ if (myreactSharedExports.include(fiber.state, myreactSharedExports.STATE_TYPE.__unmount__))
2938
+ return;
2939
+ if (myreactSharedExports.exclude(fiber.type, exports.NODE_TYPE.__function__)) {
2940
+ throw new Error("[@my-react/react] current fiber is not a function component, look like a bug for @my-react");
2941
+ }
2942
+ var renderScheduler = currentScheduler$c.current;
2943
+ var allQueue = fiber.updateQueue;
2944
+ var node = allQueue === null || allQueue === void 0 ? void 0 : allQueue.head;
2945
+ var needUpdate = false;
2946
+ var isSync = false;
2947
+ var isForce = false;
2948
+ var isImmediate = false;
2949
+ var isRetrigger = false;
2950
+ var callbacks = [];
2951
+ if (node) {
2952
+ var updater = node.value;
2953
+ if (updater.type === myreactSharedExports.UpdateQueueType.hook) {
2954
+ allQueue.delete(node);
2955
+ var trigger = updater.trigger, payLoad_6 = updater.payLoad, reducer_3 = updater.reducer;
2956
+ var typedTrigger_3 = trigger;
2957
+ var lastResult_3 = typedTrigger_3.result;
2958
+ if (typedTrigger_3.type === myreactSharedExports.HOOK_TYPE.useSyncExternalStore) {
2959
+ lastResult_3 = (_a = trigger.value) === null || _a === void 0 ? void 0 : _a.result;
2960
+ }
2961
+ var hasError_3 = false;
2962
+ typedTrigger_3.result = safeCallWithCurrentFiber({
2963
+ fiber: fiber,
2964
+ fallback: function safeFallbackForState() {
2965
+ hasError_3 = true;
2966
+ return lastResult_3;
2967
+ },
2968
+ action: function safeGetNextState() {
2969
+ if (reducer_3 && typeof reducer_3 === "function") {
2970
+ return reducer_3(lastResult_3, payLoad_6);
2971
+ }
2972
+ else {
2973
+ return typedTrigger_3.reducer(lastResult_3, payLoad_6);
2974
+ }
2975
+ },
2976
+ });
2977
+ isSync = isSync || updater.isSync;
2978
+ isForce = isForce || updater.isForce;
2979
+ isImmediate = isImmediate || updater.isImmediate;
2980
+ isRetrigger = isRetrigger || updater.isRetrigger;
2981
+ updater.callback && callbacks.push(updater.callback);
2982
+ if (!needUpdate && (isForce || hasError_3 || callbacks.length || !Object.is(lastResult_3, typedTrigger_3.result)))
2983
+ needUpdate = true;
2984
+ }
2985
+ else {
2986
+ allQueue.delete(node);
2987
+ updater.payLoad;
2988
+ isSync = isSync || updater.isSync;
2989
+ isForce = isForce || updater.isForce;
2990
+ isImmediate = isImmediate || updater.isImmediate;
2991
+ isRetrigger = isRetrigger || updater.isRetrigger;
2992
+ updater.callback && callbacks.push(updater.callback);
2993
+ needUpdate = true;
2994
+ }
2995
+ }
2996
+ if (allQueue.length) {
2997
+ renderScheduler.microTask(function prepareUpdateOnFiberTask() {
2998
+ prepareUpdateOnFiber(renderDispatch, fiber, true);
2999
+ });
3000
+ }
3001
+ var invokeCallbackArray = callbacks.length
3002
+ ? function invokeCallbackArray() {
3003
+ return callbacks.forEach(function (cb) { return cb === null || cb === void 0 ? void 0 : cb(); });
3004
+ }
3005
+ : void 0;
3006
+ {
3007
+ return {
3008
+ needUpdate: needUpdate,
3009
+ isSync: isSync,
3010
+ isForce: isForce,
3011
+ isImmediate: isImmediate,
3012
+ isRetrigger: isRetrigger,
3013
+ callback: invokeCallbackArray,
3014
+ };
3015
+ }
3016
+ };
3017
+ var processNormalComponentUpdateLatest = function (renderDispatch, fiber) {
2867
3018
  if (myreactSharedExports.include(fiber.state, myreactSharedExports.STATE_TYPE.__unmount__))
2868
3019
  return;
2869
3020
  var allQueue = fiber.updateQueue;
@@ -2902,6 +3053,49 @@ function requireIndex_production_1 () {
2902
3053
  };
2903
3054
  }
2904
3055
  };
3056
+ var processNormalComponentUpdateLegacy = function (renderDispatch, fiber) {
3057
+ if (myreactSharedExports.include(fiber.state, myreactSharedExports.STATE_TYPE.__unmount__))
3058
+ return;
3059
+ var allQueue = fiber.updateQueue;
3060
+ var renderScheduler = currentScheduler$c.current;
3061
+ var node = allQueue === null || allQueue === void 0 ? void 0 : allQueue.head;
3062
+ var needUpdate = true;
3063
+ var isSync = false;
3064
+ var isForce = false;
3065
+ var isImmediate = false;
3066
+ var isRetrigger = false;
3067
+ var callbacks = [];
3068
+ if (node) {
3069
+ var updater = node.value;
3070
+ allQueue.delete(node);
3071
+ updater.payLoad;
3072
+ isSync = isSync || updater.isSync;
3073
+ isForce = isForce || updater.isForce;
3074
+ isImmediate = isImmediate || updater.isImmediate;
3075
+ isRetrigger = isRetrigger || updater.isRetrigger;
3076
+ updater.callback && callbacks.push(updater.callback);
3077
+ }
3078
+ if (allQueue.length) {
3079
+ renderScheduler.microTask(function prepareUpdateOnFiberTask() {
3080
+ prepareUpdateOnFiber(renderDispatch, fiber, true);
3081
+ });
3082
+ }
3083
+ var invokeCallbackArray = callbacks.length
3084
+ ? function invokeCallbackArray() {
3085
+ return callbacks.forEach(function (cb) { return cb === null || cb === void 0 ? void 0 : cb(); });
3086
+ }
3087
+ : void 0;
3088
+ {
3089
+ return {
3090
+ needUpdate: needUpdate,
3091
+ isSync: isSync,
3092
+ isForce: isForce,
3093
+ isImmediate: isImmediate,
3094
+ isRetrigger: isRetrigger,
3095
+ callback: invokeCallbackArray,
3096
+ };
3097
+ }
3098
+ };
2905
3099
  /**
2906
3100
  * @deprecated
2907
3101
  */
@@ -2915,7 +3109,7 @@ function requireIndex_production_1 () {
2915
3109
  * @deprecated
2916
3110
  */
2917
3111
  var syncFlushComponentQueue = function (renderDispatch, fiber) {
2918
- var _a = processClassComponentUpdateQueue(renderDispatch, fiber), needUpdate = _a.needUpdate, callback = _a.callback;
3112
+ var _a = processClassComponentUpdateQueueLatest(renderDispatch, fiber), needUpdate = _a.needUpdate, callback = _a.callback;
2919
3113
  needUpdate && syncFiberStateToComponent(renderDispatch, fiber, callback);
2920
3114
  syncComponentStateToFiber(fiber);
2921
3115
  };
@@ -3372,6 +3566,7 @@ function requireIndex_production_1 () {
3372
3566
  var defaultReducer = function (state, action) {
3373
3567
  return typeof action === "function" ? action(state) : action;
3374
3568
  };
3569
+ var defaultOptimisticReducer = function (state) { return state; };
3375
3570
  var createHookNode = function (renderDispatch, _a, fiber) {
3376
3571
  var _b;
3377
3572
  var type = _a.type, value = _a.value, reducer = _a.reducer, deps = _a.deps;
@@ -3403,7 +3598,7 @@ function requireIndex_production_1 () {
3403
3598
  hookNode.result = hookNode.value;
3404
3599
  }
3405
3600
  if (hookNode.type === myreactSharedExports.HOOK_TYPE.useId) {
3406
- hookNode.result = "_-".concat(currentHookIndex, "-").concat(renderDispatch.uniqueIdCount++, "-_");
3601
+ hookNode.result = "\u00AB-".concat(currentHookIndex, "-").concat(renderDispatch.uniqueIdCount++, "-\u00BB");
3407
3602
  hookNode.cancel = function () { return renderDispatch.uniqueIdCount--; };
3408
3603
  }
3409
3604
  if (hookNode.type === myreactSharedExports.HOOK_TYPE.useDebugValue) {
@@ -3488,20 +3683,17 @@ function requireIndex_production_1 () {
3488
3683
  hookNode.result = new MyReactSignal(hookNode.value.call(null), renderDispatch);
3489
3684
  }
3490
3685
  if (hookNode.type === myreactSharedExports.HOOK_TYPE.useTransition) {
3491
- hookNode.result = [
3492
- false,
3493
- // TODO
3494
- function startTransitionByHook(cb) {
3686
+ hookNode.result = {
3687
+ value: false,
3688
+ start: function startTransitionByHook(cb) {
3495
3689
  var loadingCallback = function (cb) {
3496
3690
  react.startTransition(function () {
3497
- hookNode.result[0] = true;
3498
- hookNode._update({ isForce: true, isSync: true, callback: cb });
3691
+ hookNode._update({ isForce: true, isSync: true, callback: cb, payLoad: function (last) { return ({ value: true, start: last.start }); } });
3499
3692
  });
3500
3693
  };
3501
3694
  var loadedCallback = function () {
3502
3695
  react.startTransition(function () {
3503
- hookNode.result[0] = false;
3504
- hookNode._update({ isForce: true, isSync: true });
3696
+ hookNode._update({ isForce: true, isSync: true, payLoad: function (last) { return ({ value: false, start: last.start }); } });
3505
3697
  });
3506
3698
  };
3507
3699
  var taskCallback = function () {
@@ -3512,7 +3704,19 @@ function requireIndex_production_1 () {
3512
3704
  };
3513
3705
  loadingCallback(taskCallback);
3514
3706
  },
3515
- ];
3707
+ };
3708
+ }
3709
+ if (hookNode.type === myreactSharedExports.HOOK_TYPE.useOptimistic) {
3710
+ hookNode.result = {
3711
+ value: value.value,
3712
+ start: function startOptimisticByHook(newValue) {
3713
+ var mergeFunc = hookNode.value.reducer || defaultOptimisticReducer;
3714
+ var nextValue = mergeFunc(newValue, hookNode.result.value.value);
3715
+ var payloadRef = { current: function (last) { return ({ value: nextValue, start: last.start }); } };
3716
+ hookNode._update({ isForce: true, isSync: true, payLoad: function (last) { return payloadRef.current(last); } });
3717
+ hookNode.cancel = function () { return payloadRef.current = function (last) { return last; }; };
3718
+ },
3719
+ };
3516
3720
  }
3517
3721
  return hookNode;
3518
3722
  };
@@ -3579,7 +3783,7 @@ function requireIndex_production_1 () {
3579
3783
  var enableDebugLog = react.__my_react_shared__.enableDebugLog;
3580
3784
  var currentHookTreeNode$1 = react.__my_react_internal__.currentHookTreeNode, currentScheduler$7 = react.__my_react_internal__.currentScheduler;
3581
3785
  var updateHookNode = function (renderDispatch, _a, fiber, isHMR) {
3582
- var _b, _c;
3786
+ var _b, _c, _d;
3583
3787
  var type = _a.type, value = _a.value, reducer = _a.reducer, deps = _a.deps;
3584
3788
  var renderScheduler = currentScheduler$7.current;
3585
3789
  var currentHook = (_b = currentHookTreeNode$1.current) === null || _b === void 0 ? void 0 : _b.value;
@@ -3742,12 +3946,19 @@ function requireIndex_production_1 () {
3742
3946
  currentHook.value = value;
3743
3947
  if (!Object.is(currentHook.value, currentHook.result)) {
3744
3948
  currentHook.cancel = renderScheduler.yieldTask(function triggerHookUpdate() {
3745
- currentHook.result = currentHook.value;
3746
- currentHook._update({ isForce: true });
3949
+ currentHook._update({ isForce: true, payLoad: function () { return currentHook.value; } });
3747
3950
  currentHook.cancel = null;
3748
3951
  });
3749
3952
  }
3750
3953
  }
3954
+ if (currentHook.type === myreactSharedExports.HOOK_TYPE.useOptimistic) {
3955
+ (_d = currentHook.cancel) === null || _d === void 0 ? void 0 : _d.call(currentHook);
3956
+ currentHook.value = value;
3957
+ if (!Object.is(currentHook.result.value, value.value)) {
3958
+ currentHook.result.value = value.value;
3959
+ // currentHook._update({ isForce: true, payLoad: (last) => ({ value: value.value, start: last.start }) });
3960
+ }
3961
+ }
3751
3962
  if (currentHook.type === myreactSharedExports.HOOK_TYPE.useDebugValue) {
3752
3963
  if (!myreactSharedExports.isArrayEquals(currentHook.value, value)) {
3753
3964
  currentHook.value = value;
@@ -3836,13 +4047,15 @@ function requireIndex_production_1 () {
3836
4047
  var flag = enableConcurrentMode.current;
3837
4048
  var updateState = null;
3838
4049
  if (myreactSharedExports.include(fiber.type, exports.NODE_TYPE.__class__)) {
3839
- updateState = processClassComponentUpdateQueue(renderDispatch, fiber, flag);
4050
+ updateState = flag ? processClassComponentUpdateQueueLatest(renderDispatch, fiber, flag) : processClassComponentUpdateQueueLegacy(renderDispatch, fiber);
3840
4051
  }
3841
4052
  else if (myreactSharedExports.include(fiber.type, exports.NODE_TYPE.__function__)) {
3842
- updateState = processFunctionComponentUpdateQueue(renderDispatch, fiber, flag);
4053
+ updateState = flag
4054
+ ? processFunctionComponentUpdateQueueLatest(renderDispatch, fiber, flag)
4055
+ : processFunctionComponentUpdateQueueLegacy(renderDispatch, fiber);
3843
4056
  }
3844
4057
  else {
3845
- updateState = processNormalComponentUpdate(fiber);
4058
+ updateState = flag ? processNormalComponentUpdateLatest(renderDispatch, fiber) : processNormalComponentUpdateLegacy(renderDispatch, fiber);
3846
4059
  }
3847
4060
  if (updateState === null || updateState === void 0 ? void 0 : updateState.needUpdate) {
3848
4061
  safeCallWithCurrentFiber({
@@ -4233,7 +4446,7 @@ function requireIndex_production_1 () {
4233
4446
  return createFiberNode(renderDispatch, { parent: parentFiber }, newChild);
4234
4447
  };
4235
4448
  var transformChildrenFiber = function (renderDispatch, parentFiber, children) {
4236
- var isUpdate = myreactSharedExports.exclude(parentFiber.state, myreactSharedExports.STATE_TYPE.__create__);
4449
+ var isUpdate = myreactSharedExports.exclude(parentFiber.state, myreactSharedExports.STATE_TYPE.__create__) && renderDispatch.isAppMounted;
4237
4450
  var isHMR = myreactSharedExports.include(parentFiber.state, myreactSharedExports.STATE_TYPE.__hmr__);
4238
4451
  var isRetrigger = myreactSharedExports.include(parentFiber.state, myreactSharedExports.STATE_TYPE.__retrigger__);
4239
4452
  // is current is retrigger update, skip update children
@@ -5279,67 +5492,12 @@ function requireIndex_production_1 () {
5279
5492
 
5280
5493
  var currentScheduler$2 = react.__my_react_internal__.currentScheduler;
5281
5494
  react.__my_react_shared__.enableScopeTreeLog;
5282
- var defaultDispatchMountLegacy = function (_dispatch, _fiber) {
5283
- var mountInsertionEffectList = function (_fiber) {
5284
- if (_fiber.child)
5285
- mountInsertionEffectList(_fiber.child);
5286
- insertionEffect(_dispatch, _fiber);
5287
- if (_fiber.sibling)
5288
- mountInsertionEffectList(_fiber.sibling);
5289
- };
5290
- var mountCommit = function (_fiber) {
5291
- safeCallWithCurrentFiber({
5292
- fiber: _fiber,
5293
- action: function safeCallCreateAndUpdate() {
5294
- _dispatch.commitCreate(_fiber);
5295
- _dispatch.commitUpdate(_fiber);
5296
- },
5297
- });
5298
- if (_fiber.child)
5299
- mountCommit(_fiber.child);
5300
- safeCallWithCurrentFiber({
5301
- fiber: _fiber,
5302
- action: function safeCallAppendAndSetRef() {
5303
- _dispatch.commitAppend(_fiber);
5304
- _dispatch.commitSetRef(_fiber);
5305
- },
5306
- });
5307
- if (_fiber.sibling) {
5308
- mountCommit(_fiber.sibling);
5309
- }
5310
- };
5311
- var mountLayoutEffectList = function (_fiber) {
5312
- if (_fiber.child)
5313
- mountLayoutEffectList(_fiber.child);
5314
- layoutEffect(_dispatch, _fiber);
5315
- if (_fiber.sibling)
5316
- mountLayoutEffectList(_fiber.sibling);
5317
- };
5318
- var mountEffectList = function (_fiber) {
5319
- if (_fiber.child)
5320
- mountEffectList(_fiber.child);
5321
- effect(_dispatch, _fiber);
5322
- if (_fiber.sibling)
5323
- mountEffectList(_fiber.sibling);
5324
- };
5325
- var mountLoop = function (_fiber) {
5326
- beforeSyncUpdate();
5327
- mountInsertionEffectList(_fiber);
5328
- afterSyncUpdate();
5329
- mountCommit(_fiber);
5330
- beforeSyncUpdate();
5331
- mountLayoutEffectList(_fiber);
5332
- afterSyncUpdate();
5333
- var renderScheduler = currentScheduler$2.current;
5334
- renderScheduler.microTask(function invokeEffectList() {
5335
- mountEffectList(_fiber);
5336
- });
5337
- };
5338
- mountLoop(_fiber);
5339
- };
5340
5495
  var defaultDispatchMountLatest = function (_dispatch, _fiber) {
5341
5496
  var _list = generateFiberToMountList(_fiber);
5342
5497
  beforeSyncUpdate();
5498
+ _list.listToFoot(function invokeUnmountPendingAndInsertionEffectList(_fiber) {
5499
+ defaultInvokeUnmountList(_dispatch, _fiber);
5500
+ });
5343
5501
  _list.listToFoot(function invokeInsertionEffectList(_fiber) {
5344
5502
  insertionEffect(_dispatch, _fiber);
5345
5503
  });
@@ -5558,7 +5716,7 @@ function requireIndex_production_1 () {
5558
5716
  _this.isAppMounted = false;
5559
5717
  _this.isAppCrashed = false;
5560
5718
  _this.isAppUnmounted = false;
5561
- _this.version = "0.3.12";
5719
+ _this.version = "0.3.14";
5562
5720
  _this.mode = "production";
5563
5721
  _this.renderMode = "render";
5564
5722
  _this.pendingCommitFiberList = null;
@@ -5861,10 +6019,12 @@ function requireIndex_production_1 () {
5861
6019
  case myreactSharedExports.HOOK_TYPE.useMemo:
5862
6020
  case myreactSharedExports.HOOK_TYPE.useContext:
5863
6021
  case myreactSharedExports.HOOK_TYPE.useCallback:
5864
- case myreactSharedExports.HOOK_TYPE.useTransition:
5865
6022
  case myreactSharedExports.HOOK_TYPE.useDeferredValue:
5866
6023
  case myreactSharedExports.HOOK_TYPE.useSyncExternalStore:
5867
6024
  return hookNode.result;
6025
+ case myreactSharedExports.HOOK_TYPE.useOptimistic:
6026
+ case myreactSharedExports.HOOK_TYPE.useTransition:
6027
+ return [hookNode.result.value, hookNode.result.start];
5868
6028
  case myreactSharedExports.HOOK_TYPE.useSignal:
5869
6029
  return [hookNode.result.getValue, hookNode.result.setValue];
5870
6030
  }
@@ -5909,12 +6069,10 @@ function requireIndex_production_1 () {
5909
6069
  processAsyncLoadListOnSyncMount(renderDispatch);
5910
6070
  (function finishMount() {
5911
6071
  renderDispatch.reconcileCommit(fiber);
5912
- var commitList = renderDispatch.pendingCommitFiberList;
5913
6072
  var changedList = renderDispatch.pendingChangedFiberList;
5914
6073
  renderDispatch.resetUpdateFlowRuntimeFiber();
5915
6074
  renderDispatch.pendingCommitFiberList = null;
5916
6075
  renderDispatch.pendingChangedFiberList = null;
5917
- (commitList === null || commitList === void 0 ? void 0 : commitList.length) && renderDispatch.reconcileUpdate(commitList);
5918
6076
  (changedList === null || changedList === void 0 ? void 0 : changedList.length) &&
5919
6077
  safeCallWithCurrentFiber({
5920
6078
  fiber: fiber,
@@ -5937,12 +6095,10 @@ function requireIndex_production_1 () {
5937
6095
  _a.sent();
5938
6096
  (function finishMount() {
5939
6097
  renderDispatch.reconcileCommit(fiber);
5940
- var commitList = renderDispatch.pendingCommitFiberList;
5941
6098
  var changedList = renderDispatch.pendingChangedFiberList;
5942
6099
  renderDispatch.resetUpdateFlowRuntimeFiber();
5943
6100
  renderDispatch.pendingCommitFiberList = null;
5944
6101
  renderDispatch.pendingChangedFiberList = null;
5945
- (commitList === null || commitList === void 0 ? void 0 : commitList.length) && renderDispatch.reconcileUpdate(commitList);
5946
6102
  (changedList === null || changedList === void 0 ? void 0 : changedList.length) &&
5947
6103
  safeCallWithCurrentFiber({
5948
6104
  fiber: fiber,
@@ -5958,7 +6114,7 @@ function requireIndex_production_1 () {
5958
6114
  });
5959
6115
  }); };
5960
6116
 
5961
- var version = "0.3.12";
6117
+ var version = "0.3.14";
5962
6118
 
5963
6119
  exports.CustomRenderDispatch = CustomRenderDispatch;
5964
6120
  exports.MyReactFiberNode = MyReactFiberNode;
@@ -5986,7 +6142,6 @@ function requireIndex_production_1 () {
5986
6142
  exports.defaultDeleteCurrentEffect = defaultDeleteCurrentEffect;
5987
6143
  exports.defaultDispatchMount = defaultDispatchMount;
5988
6144
  exports.defaultDispatchMountLatest = defaultDispatchMountLatest;
5989
- exports.defaultDispatchMountLegacy = defaultDispatchMountLegacy;
5990
6145
  exports.defaultDispatchUnmount = defaultDispatchUnmount;
5991
6146
  exports.defaultDispatchUpdate = defaultDispatchUpdate;
5992
6147
  exports.defaultGenerateEffectMap = defaultGenerateEffectMap;
@@ -6091,13 +6246,16 @@ function requireIndex_production_1 () {
6091
6246
  exports.processClassComponentMount = processClassComponentMount;
6092
6247
  exports.processClassComponentUnmount = processClassComponentUnmount;
6093
6248
  exports.processClassComponentUpdate = processClassComponentUpdate;
6094
- exports.processClassComponentUpdateQueue = processClassComponentUpdateQueue;
6249
+ exports.processClassComponentUpdateQueueLatest = processClassComponentUpdateQueueLatest;
6250
+ exports.processClassComponentUpdateQueueLegacy = processClassComponentUpdateQueueLegacy;
6095
6251
  exports.processConsumer = processConsumer;
6096
6252
  exports.processFunction = processFunction;
6097
- exports.processFunctionComponentUpdateQueue = processFunctionComponentUpdateQueue;
6253
+ exports.processFunctionComponentUpdateQueueLatest = processFunctionComponentUpdateQueueLatest;
6254
+ exports.processFunctionComponentUpdateQueueLegacy = processFunctionComponentUpdateQueueLegacy;
6098
6255
  exports.processHook = processHook;
6099
6256
  exports.processLazy = processLazy;
6100
- exports.processNormalComponentUpdate = processNormalComponentUpdate;
6257
+ exports.processNormalComponentUpdateLatest = processNormalComponentUpdateLatest;
6258
+ exports.processNormalComponentUpdateLegacy = processNormalComponentUpdateLegacy;
6101
6259
  exports.processPromise = processPromise;
6102
6260
  exports.processProvider = processProvider;
6103
6261
  exports.processState = processState;
@@ -6349,6 +6507,7 @@ function requireIndex_production () {
6349
6507
  HOOK_TYPE[HOOK_TYPE["useInsertionEffect"] = 13] = "useInsertionEffect";
6350
6508
  HOOK_TYPE[HOOK_TYPE["useImperativeHandle"] = 14] = "useImperativeHandle";
6351
6509
  HOOK_TYPE[HOOK_TYPE["useSyncExternalStore"] = 15] = "useSyncExternalStore";
6510
+ HOOK_TYPE[HOOK_TYPE["useOptimistic"] = 16] = "useOptimistic";
6352
6511
  })(exports.HOOK_TYPE || (exports.HOOK_TYPE = {}));
6353
6512
 
6354
6513
  exports.UpdateQueueType = void 0;
@@ -7305,12 +7464,15 @@ var ReconcilerDispatchFiber = function (renderDispatch, fiber) {
7305
7464
  }
7306
7465
  };
7307
7466
 
7308
- var currentScheduler$1 = require$$0.__my_react_internal__.currentScheduler;
7467
+ var currentScheduler$2 = require$$0.__my_react_internal__.currentScheduler;
7309
7468
  require$$0.__my_react_shared__.enableScopeTreeLog;
7310
7469
  var ReconcilerDispatchMount = function (_dispatch, _fiber, config) {
7311
7470
  var _list = myreactReconcilerExports.generateFiberToMountList(_fiber);
7312
7471
  var pendingCommitFiberArray = [];
7313
7472
  myreactReconcilerExports.beforeSyncUpdate();
7473
+ _list.listToFoot(function invokeUnmountPendingAndInsertionEffectList(_fiber) {
7474
+ myreactReconcilerExports.defaultInvokeUnmountList(_dispatch, _fiber);
7475
+ });
7314
7476
  _list.listToFoot(function invokeInsertionEffectList(_fiber) {
7315
7477
  myreactReconcilerExports.insertionEffect(_dispatch, _fiber);
7316
7478
  });
@@ -7364,7 +7526,7 @@ var ReconcilerDispatchMount = function (_dispatch, _fiber, config) {
7364
7526
  myreactReconcilerExports.layoutEffect(_dispatch, _fiber);
7365
7527
  });
7366
7528
  myreactReconcilerExports.afterSyncUpdate();
7367
- var renderScheduler = currentScheduler$1.current;
7529
+ var renderScheduler = currentScheduler$2.current;
7368
7530
  renderScheduler.microTask(function invokeEffectListTask() {
7369
7531
  _list.listToFoot(function invokeEffectList(_fiber) {
7370
7532
  myreactReconcilerExports.effect(_dispatch, _fiber);
@@ -7372,6 +7534,106 @@ var ReconcilerDispatchMount = function (_dispatch, _fiber, config) {
7372
7534
  });
7373
7535
  };
7374
7536
 
7537
+ var currentScheduler$1 = require$$0.__my_react_internal__.currentScheduler;
7538
+ require$$0.__my_react_shared__.enableScopeTreeLog;
7539
+ var ReconcilerDispatchUpdate = function (_dispatch, _list, config) {
7540
+ myreactReconcilerExports.beforeSyncUpdate();
7541
+ _list.listToFoot(function invokeUnmountPendingAndInsertionEffectList(_fiber) {
7542
+ if (myreactSharedExports.exclude(_fiber.state, myreactSharedExports.STATE_TYPE.__unmount__) && !_dispatch.isAppUnmounted) {
7543
+ myreactReconcilerExports.defaultInvokeUnmountList(_dispatch, _fiber);
7544
+ }
7545
+ });
7546
+ _list.listToFoot(function invokeUnmountPendingAndInsertionEffectList(_fiber) {
7547
+ if (myreactSharedExports.exclude(_fiber.state, myreactSharedExports.STATE_TYPE.__unmount__) && !_dispatch.isAppUnmounted) {
7548
+ myreactReconcilerExports.insertionEffect(_dispatch, _fiber);
7549
+ }
7550
+ });
7551
+ myreactReconcilerExports.afterSyncUpdate();
7552
+ var pendingCreateFiberArray = [];
7553
+ var pendingCommitFiberArray = [];
7554
+ _list.listToFoot(function invokeCreateAndUpdateList(_fiber) {
7555
+ if (myreactSharedExports.exclude(_fiber.state, myreactSharedExports.STATE_TYPE.__unmount__) && !_dispatch.isAppUnmounted) {
7556
+ var beforeHasNode = _fiber.nativeNode;
7557
+ myreactReconcilerExports.safeCallWithCurrentFiber({
7558
+ fiber: _fiber,
7559
+ action: function safeCallCreateAndUpdate() {
7560
+ _dispatch.commitCreate(_fiber);
7561
+ _dispatch.commitUpdate(_fiber);
7562
+ },
7563
+ });
7564
+ var afterHasNode = _fiber.nativeNode;
7565
+ if (!beforeHasNode && afterHasNode) {
7566
+ pendingCreateFiberArray.push(_fiber);
7567
+ }
7568
+ }
7569
+ });
7570
+ _list.listToHead(function invokePositionList(_fiber) {
7571
+ if (myreactSharedExports.exclude(_fiber.state, myreactSharedExports.STATE_TYPE.__unmount__) && !_dispatch.isAppUnmounted) {
7572
+ myreactReconcilerExports.safeCallWithCurrentFiber({
7573
+ fiber: _fiber,
7574
+ action: function safeCallPosition() {
7575
+ _dispatch.commitPosition(_fiber);
7576
+ },
7577
+ });
7578
+ }
7579
+ });
7580
+ _list.listToFoot(function invokeAppendList(_fiber) {
7581
+ if (myreactSharedExports.exclude(_fiber.state, myreactSharedExports.STATE_TYPE.__unmount__) && !_dispatch.isAppUnmounted) {
7582
+ myreactReconcilerExports.safeCallWithCurrentFiber({
7583
+ fiber: _fiber,
7584
+ action: function safeCallAppendList() {
7585
+ _dispatch.commitAppend(_fiber);
7586
+ },
7587
+ });
7588
+ }
7589
+ });
7590
+ _list.listToFoot(function invokeSetRefList(_fiber) {
7591
+ if (myreactSharedExports.exclude(_fiber.state, myreactSharedExports.STATE_TYPE.__unmount__) && !_dispatch.isAppUnmounted) {
7592
+ myreactReconcilerExports.safeCallWithCurrentFiber({
7593
+ fiber: _fiber,
7594
+ action: function safeCallSetRefList() {
7595
+ _dispatch.commitSetRef(_fiber);
7596
+ },
7597
+ });
7598
+ }
7599
+ });
7600
+ pendingCreateFiberArray.forEach(function invokeFinalizeInitialChildren(_fiber) {
7601
+ if (_fiber.nativeNode) {
7602
+ var node = config.getPublicInstance(_fiber.nativeNode);
7603
+ var type = _fiber.elementType;
7604
+ var props = _fiber.pendingProps;
7605
+ var rootContainerInstance = config.getPublicInstance(_dispatch.rootNode);
7606
+ var hostContext = _dispatch.runtimeDom.hostContextMap.get(_fiber.parent || _fiber);
7607
+ if (config.finalizeInitialChildren(node, type, props, rootContainerInstance, hostContext)) {
7608
+ pendingCommitFiberArray.push(_fiber);
7609
+ }
7610
+ }
7611
+ });
7612
+ pendingCommitFiberArray.forEach(function invokeCommitMount(_fiber) {
7613
+ var _a;
7614
+ var node = config.getPublicInstance(_fiber.nativeNode);
7615
+ var type = _fiber.elementType;
7616
+ var props = _fiber.pendingProps;
7617
+ (_a = config.commitMount) === null || _a === void 0 ? void 0 : _a.call(config, node, type, props, _fiber);
7618
+ });
7619
+ myreactReconcilerExports.beforeSyncUpdate();
7620
+ _list.listToFoot(function invokeLayoutEffectList(_fiber) {
7621
+ if (myreactSharedExports.exclude(_fiber.state, myreactSharedExports.STATE_TYPE.__unmount__) && !_dispatch.isAppUnmounted) {
7622
+ myreactReconcilerExports.layoutEffect(_dispatch, _fiber);
7623
+ }
7624
+ });
7625
+ myreactReconcilerExports.afterSyncUpdate();
7626
+ var renderScheduler = currentScheduler$1.current;
7627
+ // TODO before next update flow, make sure all the effect has done
7628
+ renderScheduler.microTask(function invokeEffectListTask() {
7629
+ _list.listToFoot(function invokeEffectList(_fiber) {
7630
+ if (myreactSharedExports.exclude(_fiber.state, myreactSharedExports.STATE_TYPE.__unmount__) && !_dispatch.isAppUnmounted) {
7631
+ myreactReconcilerExports.effect(_dispatch, _fiber);
7632
+ }
7633
+ });
7634
+ });
7635
+ };
7636
+
7375
7637
  require$$0.__my_react_internal__.currentComponentFiber;
7376
7638
  var initialRef = {
7377
7639
  typeForRef: myreactReconcilerExports.NODE_TYPE.__plain__ | myreactReconcilerExports.NODE_TYPE.__class__,
@@ -7442,7 +7704,22 @@ var createDispatch = function (rootNode, rootFiber, rootElement, config) {
7442
7704
  ReconcilerDispatch.prototype.reconcileUpdate = function (_list) {
7443
7705
  var _a, _b;
7444
7706
  (_a = config.prepareForCommit) === null || _a === void 0 ? void 0 : _a.call(config, rootNode);
7445
- _super.prototype.reconcileUpdate.call(this, _list);
7707
+ var instance = this;
7708
+ myreactReconcilerExports.safeCall(function safeCallBeforeUpdate() {
7709
+ var _a;
7710
+ (_a = instance.beforeUpdate) === null || _a === void 0 ? void 0 : _a.call(instance);
7711
+ });
7712
+ myreactReconcilerExports.safeCall(function safeCallBeforeUpdateListener() {
7713
+ myreactReconcilerExports.listenerMap.get(instance).beforeUpdate.forEach(function (cb) { return cb(); });
7714
+ });
7715
+ ReconcilerDispatchUpdate(this, _list, config);
7716
+ myreactReconcilerExports.safeCall(function safeCallAfterUpdateListener() {
7717
+ myreactReconcilerExports.listenerMap.get(instance).afterUpdate.forEach(function (cb) { return cb(); });
7718
+ });
7719
+ myreactReconcilerExports.safeCall(function safeCallAfterUpdate() {
7720
+ var _a;
7721
+ (_a = instance.afterUpdate) === null || _a === void 0 ? void 0 : _a.call(instance);
7722
+ });
7446
7723
  (_b = config.resetAfterCommit) === null || _b === void 0 ? void 0 : _b.call(config, rootNode);
7447
7724
  };
7448
7725
  ReconcilerDispatch.prototype.patchToFiberInitial = function (_fiber) {
@@ -7533,6 +7810,7 @@ var enableDebugFiled$1 = require$$0.__my_react_shared__.enableDebugFiled, enable
7533
7810
  * @internal
7534
7811
  */
7535
7812
  var prepareScheduler = function () {
7813
+ // enableConcurrentMode.current = false;
7536
7814
  enableDebugFiled$1.current = true;
7537
7815
  enableScopeTreeLog$1.current = true;
7538
7816
  myreactReconcilerExports.enableFiberForLog.current = true;
@@ -7643,7 +7921,7 @@ var Reconciler = function (_config) {
7643
7921
  };
7644
7922
  };
7645
7923
 
7646
- var version = "0.0.3";
7924
+ var version = "0.0.5";
7647
7925
  var createReconciler = Reconciler;
7648
7926
 
7649
7927
  exports.createReconciler = createReconciler;