@reactuses/core 5.0.22 → 5.0.23-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -5,6 +5,7 @@ var lodashEs = require('lodash-es');
5
5
  var Cookies = require('js-cookie');
6
6
  var screenfull = require('screenfull');
7
7
  var index_js = require('use-sync-external-store/shim/index.js');
8
+ var fetchEventSource = require('@microsoft/fetch-event-source');
8
9
 
9
10
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
10
11
 
@@ -153,7 +154,7 @@ function useMountedState() {
153
154
  return get;
154
155
  }
155
156
 
156
- function asyncGeneratorStep$6(gen, resolve, reject, _next, _throw, key, arg) {
157
+ function asyncGeneratorStep$7(gen, resolve, reject, _next, _throw, key, arg) {
157
158
  try {
158
159
  var info = gen[key](arg);
159
160
  var value = info.value;
@@ -167,16 +168,16 @@ function asyncGeneratorStep$6(gen, resolve, reject, _next, _throw, key, arg) {
167
168
  Promise.resolve(value).then(_next, _throw);
168
169
  }
169
170
  }
170
- function _async_to_generator$6(fn) {
171
+ function _async_to_generator$7(fn) {
171
172
  return function() {
172
173
  var self = this, args = arguments;
173
174
  return new Promise(function(resolve, reject) {
174
175
  var gen = fn.apply(self, args);
175
176
  function _next(value) {
176
- asyncGeneratorStep$6(gen, resolve, reject, _next, _throw, "next", value);
177
+ asyncGeneratorStep$7(gen, resolve, reject, _next, _throw, "next", value);
177
178
  }
178
179
  function _throw(err) {
179
- asyncGeneratorStep$6(gen, resolve, reject, _next, _throw, "throw", err);
180
+ asyncGeneratorStep$7(gen, resolve, reject, _next, _throw, "throw", err);
180
181
  }
181
182
  _next(undefined);
182
183
  });
@@ -185,7 +186,7 @@ function _async_to_generator$6(fn) {
185
186
  const useAsyncEffect = (effect, cleanup = noop, deps)=>{
186
187
  const mounted = useMountedState();
187
188
  React.useEffect(()=>{
188
- const execute = /*#__PURE__*/ _async_to_generator$6(function*() {
189
+ const execute = /*#__PURE__*/ _async_to_generator$7(function*() {
189
190
  if (!mounted()) {
190
191
  return;
191
192
  }
@@ -1204,7 +1205,7 @@ function useSupported(callback, sync = false) {
1204
1205
  return supported;
1205
1206
  }
1206
1207
 
1207
- function asyncGeneratorStep$5(gen, resolve, reject, _next, _throw, key, arg) {
1208
+ function asyncGeneratorStep$6(gen, resolve, reject, _next, _throw, key, arg) {
1208
1209
  try {
1209
1210
  var info = gen[key](arg);
1210
1211
  var value = info.value;
@@ -1218,16 +1219,16 @@ function asyncGeneratorStep$5(gen, resolve, reject, _next, _throw, key, arg) {
1218
1219
  Promise.resolve(value).then(_next, _throw);
1219
1220
  }
1220
1221
  }
1221
- function _async_to_generator$5(fn) {
1222
+ function _async_to_generator$6(fn) {
1222
1223
  return function() {
1223
1224
  var self = this, args = arguments;
1224
1225
  return new Promise(function(resolve, reject) {
1225
1226
  var gen = fn.apply(self, args);
1226
1227
  function _next(value) {
1227
- asyncGeneratorStep$5(gen, resolve, reject, _next, _throw, "next", value);
1228
+ asyncGeneratorStep$6(gen, resolve, reject, _next, _throw, "next", value);
1228
1229
  }
1229
1230
  function _throw(err) {
1230
- asyncGeneratorStep$5(gen, resolve, reject, _next, _throw, "throw", err);
1231
+ asyncGeneratorStep$6(gen, resolve, reject, _next, _throw, "throw", err);
1231
1232
  }
1232
1233
  _next(undefined);
1233
1234
  });
@@ -1235,7 +1236,7 @@ function _async_to_generator$5(fn) {
1235
1236
  }
1236
1237
  const useEyeDropper = ()=>{
1237
1238
  const isSupported = useSupported(()=>typeof window !== 'undefined' && 'EyeDropper' in window, true);
1238
- const open = React.useCallback(/*#__PURE__*/ _async_to_generator$5(function*(options = {}) {
1239
+ const open = React.useCallback(/*#__PURE__*/ _async_to_generator$6(function*(options = {}) {
1239
1240
  if (!isSupported) {
1240
1241
  return {
1241
1242
  sRGBHex: ''
@@ -1270,7 +1271,7 @@ function useFavicon(href, baseUrl = '', rel = 'icon') {
1270
1271
  ]);
1271
1272
  }
1272
1273
 
1273
- function asyncGeneratorStep$4(gen, resolve, reject, _next, _throw, key, arg) {
1274
+ function asyncGeneratorStep$5(gen, resolve, reject, _next, _throw, key, arg) {
1274
1275
  try {
1275
1276
  var info = gen[key](arg);
1276
1277
  var value = info.value;
@@ -1284,23 +1285,23 @@ function asyncGeneratorStep$4(gen, resolve, reject, _next, _throw, key, arg) {
1284
1285
  Promise.resolve(value).then(_next, _throw);
1285
1286
  }
1286
1287
  }
1287
- function _async_to_generator$4(fn) {
1288
+ function _async_to_generator$5(fn) {
1288
1289
  return function() {
1289
1290
  var self = this, args = arguments;
1290
1291
  return new Promise(function(resolve, reject) {
1291
1292
  var gen = fn.apply(self, args);
1292
1293
  function _next(value) {
1293
- asyncGeneratorStep$4(gen, resolve, reject, _next, _throw, "next", value);
1294
+ asyncGeneratorStep$5(gen, resolve, reject, _next, _throw, "next", value);
1294
1295
  }
1295
1296
  function _throw(err) {
1296
- asyncGeneratorStep$4(gen, resolve, reject, _next, _throw, "throw", err);
1297
+ asyncGeneratorStep$5(gen, resolve, reject, _next, _throw, "throw", err);
1297
1298
  }
1298
1299
  _next(undefined);
1299
1300
  });
1300
1301
  };
1301
1302
  }
1302
- function _extends$2() {
1303
- _extends$2 = Object.assign || function(target) {
1303
+ function _extends$3() {
1304
+ _extends$3 = Object.assign || function(target) {
1304
1305
  for(var i = 1; i < arguments.length; i++){
1305
1306
  var source = arguments[i];
1306
1307
  for(var key in source){
@@ -1311,7 +1312,7 @@ function _extends$2() {
1311
1312
  }
1312
1313
  return target;
1313
1314
  };
1314
- return _extends$2.apply(this, arguments);
1315
+ return _extends$3.apply(this, arguments);
1315
1316
  }
1316
1317
  const DEFAULT_OPTIONS = {
1317
1318
  multiple: true,
@@ -1336,11 +1337,11 @@ const useFileDialog = (options = defaultOptions$1)=>{
1336
1337
  return input;
1337
1338
  }, []);
1338
1339
  inputRef.current = initFn();
1339
- const open = /*#__PURE__*/ _async_to_generator$4(function*(localOptions) {
1340
+ const open = /*#__PURE__*/ _async_to_generator$5(function*(localOptions) {
1340
1341
  if (!inputRef.current) {
1341
1342
  return;
1342
1343
  }
1343
- const _options = _extends$2({}, DEFAULT_OPTIONS, options, localOptions);
1344
+ const _options = _extends$3({}, DEFAULT_OPTIONS, options, localOptions);
1344
1345
  inputRef.current.multiple = _options.multiple;
1345
1346
  inputRef.current.accept = _options.accept;
1346
1347
  inputRef.current.capture = _options.capture;
@@ -1746,7 +1747,7 @@ const createUpdateEffect = (hook)=>(effect, deps)=>{
1746
1747
 
1747
1748
  const useUpdateEffect = createUpdateEffect(React.useEffect);
1748
1749
 
1749
- function asyncGeneratorStep$3(gen, resolve, reject, _next, _throw, key, arg) {
1750
+ function asyncGeneratorStep$4(gen, resolve, reject, _next, _throw, key, arg) {
1750
1751
  try {
1751
1752
  var info = gen[key](arg);
1752
1753
  var value = info.value;
@@ -1760,23 +1761,23 @@ function asyncGeneratorStep$3(gen, resolve, reject, _next, _throw, key, arg) {
1760
1761
  Promise.resolve(value).then(_next, _throw);
1761
1762
  }
1762
1763
  }
1763
- function _async_to_generator$3(fn) {
1764
+ function _async_to_generator$4(fn) {
1764
1765
  return function() {
1765
1766
  var self = this, args = arguments;
1766
1767
  return new Promise(function(resolve, reject) {
1767
1768
  var gen = fn.apply(self, args);
1768
1769
  function _next(value) {
1769
- asyncGeneratorStep$3(gen, resolve, reject, _next, _throw, "next", value);
1770
+ asyncGeneratorStep$4(gen, resolve, reject, _next, _throw, "next", value);
1770
1771
  }
1771
1772
  function _throw(err) {
1772
- asyncGeneratorStep$3(gen, resolve, reject, _next, _throw, "throw", err);
1773
+ asyncGeneratorStep$4(gen, resolve, reject, _next, _throw, "throw", err);
1773
1774
  }
1774
1775
  _next(undefined);
1775
1776
  });
1776
1777
  };
1777
1778
  }
1778
- function _extends$1() {
1779
- _extends$1 = Object.assign || function(target) {
1779
+ function _extends$2() {
1780
+ _extends$2 = Object.assign || function(target) {
1780
1781
  for(var i = 1; i < arguments.length; i++){
1781
1782
  var source = arguments[i];
1782
1783
  for(var key in source){
@@ -1787,22 +1788,22 @@ function _extends$1() {
1787
1788
  }
1788
1789
  return target;
1789
1790
  };
1790
- return _extends$1.apply(this, arguments);
1791
+ return _extends$2.apply(this, arguments);
1791
1792
  }
1792
1793
  const useInfiniteScroll = (target, onLoadMore, options = defaultOptions$1)=>{
1793
1794
  const savedLoadMore = useLatest(onLoadMore);
1794
1795
  var _options_direction;
1795
1796
  const direction = (_options_direction = options.direction) != null ? _options_direction : 'bottom';
1796
1797
  var _options_distance;
1797
- const state = useScroll(target, _extends$1({}, options, {
1798
- offset: _extends$1({
1798
+ const state = useScroll(target, _extends$2({}, options, {
1799
+ offset: _extends$2({
1799
1800
  [direction]: (_options_distance = options.distance) != null ? _options_distance : 0
1800
1801
  }, options.offset)
1801
1802
  }));
1802
1803
  const di = state[3][direction];
1803
1804
  useUpdateEffect(()=>{
1804
1805
  const element = getTargetElement(target);
1805
- const fn = /*#__PURE__*/ _async_to_generator$3(function*() {
1806
+ const fn = /*#__PURE__*/ _async_to_generator$4(function*() {
1806
1807
  var _element_scrollHeight, _element_scrollWidth;
1807
1808
  const previous = {
1808
1809
  height: (_element_scrollHeight = element == null ? void 0 : element.scrollHeight) != null ? _element_scrollHeight : 0,
@@ -1952,7 +1953,7 @@ const useMeasure = (target, options = defaultOptions$1)=>{
1952
1953
  ];
1953
1954
  };
1954
1955
 
1955
- function asyncGeneratorStep$2(gen, resolve, reject, _next, _throw, key, arg) {
1956
+ function asyncGeneratorStep$3(gen, resolve, reject, _next, _throw, key, arg) {
1956
1957
  try {
1957
1958
  var info = gen[key](arg);
1958
1959
  var value = info.value;
@@ -1966,16 +1967,16 @@ function asyncGeneratorStep$2(gen, resolve, reject, _next, _throw, key, arg) {
1966
1967
  Promise.resolve(value).then(_next, _throw);
1967
1968
  }
1968
1969
  }
1969
- function _async_to_generator$2(fn) {
1970
+ function _async_to_generator$3(fn) {
1970
1971
  return function() {
1971
1972
  var self = this, args = arguments;
1972
1973
  return new Promise(function(resolve, reject) {
1973
1974
  var gen = fn.apply(self, args);
1974
1975
  function _next(value) {
1975
- asyncGeneratorStep$2(gen, resolve, reject, _next, _throw, "next", value);
1976
+ asyncGeneratorStep$3(gen, resolve, reject, _next, _throw, "next", value);
1976
1977
  }
1977
1978
  function _throw(err) {
1978
- asyncGeneratorStep$2(gen, resolve, reject, _next, _throw, "throw", err);
1979
+ asyncGeneratorStep$3(gen, resolve, reject, _next, _throw, "throw", err);
1979
1980
  }
1980
1981
  _next(undefined);
1981
1982
  });
@@ -2009,7 +2010,7 @@ const useMediaDevices = (options = {})=>{
2009
2010
  });
2010
2011
  }).catch(noop);
2011
2012
  }, []);
2012
- const ensurePermissions = React.useCallback(/*#__PURE__*/ _async_to_generator$2(function*() {
2013
+ const ensurePermissions = React.useCallback(/*#__PURE__*/ _async_to_generator$3(function*() {
2013
2014
  if (!isSupported) {
2014
2015
  return false;
2015
2016
  }
@@ -2892,8 +2893,8 @@ function useSessionStorage(key, defaultValue, options = defaultOptions$1) {
2892
2893
  return useStorage(key, defaultValue, ()=>isBrowser ? sessionStorage : undefined, options);
2893
2894
  }
2894
2895
 
2895
- function _extends() {
2896
- _extends = Object.assign || function(target) {
2896
+ function _extends$1() {
2897
+ _extends$1 = Object.assign || function(target) {
2897
2898
  for(var i = 1; i < arguments.length; i++){
2898
2899
  var source = arguments[i];
2899
2900
  for(var key in source){
@@ -2904,11 +2905,11 @@ function _extends() {
2904
2905
  }
2905
2906
  return target;
2906
2907
  };
2907
- return _extends.apply(this, arguments);
2908
+ return _extends$1.apply(this, arguments);
2908
2909
  }
2909
2910
  const useSetState = (initialState)=>{
2910
2911
  const [state, _setState] = React.useState(initialState);
2911
- const setState = React.useCallback((statePartial)=>_setState((current)=>_extends({}, current, typeof statePartial === 'function' ? statePartial(current) : statePartial)), []);
2912
+ const setState = React.useCallback((statePartial)=>_setState((current)=>_extends$1({}, current, typeof statePartial === 'function' ? statePartial(current) : statePartial)), []);
2912
2913
  return [
2913
2914
  state,
2914
2915
  setState
@@ -3094,7 +3095,7 @@ const useToggle = (initialValue)=>{
3094
3095
 
3095
3096
  const useUpdateLayoutEffect = createUpdateEffect(React.useLayoutEffect);
3096
3097
 
3097
- function asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, key, arg) {
3098
+ function asyncGeneratorStep$2(gen, resolve, reject, _next, _throw, key, arg) {
3098
3099
  try {
3099
3100
  var info = gen[key](arg);
3100
3101
  var value = info.value;
@@ -3108,16 +3109,16 @@ function asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, key, arg) {
3108
3109
  Promise.resolve(value).then(_next, _throw);
3109
3110
  }
3110
3111
  }
3111
- function _async_to_generator$1(fn) {
3112
+ function _async_to_generator$2(fn) {
3112
3113
  return function() {
3113
3114
  var self = this, args = arguments;
3114
3115
  return new Promise(function(resolve, reject) {
3115
3116
  var gen = fn.apply(self, args);
3116
3117
  function _next(value) {
3117
- asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, "next", value);
3118
+ asyncGeneratorStep$2(gen, resolve, reject, _next, _throw, "next", value);
3118
3119
  }
3119
3120
  function _throw(err) {
3120
- asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, "throw", err);
3121
+ asyncGeneratorStep$2(gen, resolve, reject, _next, _throw, "throw", err);
3121
3122
  }
3122
3123
  _next(undefined);
3123
3124
  });
@@ -3147,7 +3148,7 @@ const useWebNotification = (requestPermissions = false)=>{
3147
3148
  }, [
3148
3149
  isSupported
3149
3150
  ]);
3150
- const ensurePermissions = React.useCallback(/*#__PURE__*/ _async_to_generator$1(function*() {
3151
+ const ensurePermissions = React.useCallback(/*#__PURE__*/ _async_to_generator$2(function*() {
3151
3152
  if (!isSupported) return;
3152
3153
  if (!permissionGranted.current && Notification.permission !== 'denied') {
3153
3154
  const result = yield Notification.requestPermission();
@@ -3258,7 +3259,7 @@ const useWindowSize = ()=>{
3258
3259
  };
3259
3260
  };
3260
3261
 
3261
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
3262
+ function asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, key, arg) {
3262
3263
  try {
3263
3264
  var info = gen[key](arg);
3264
3265
  var value = info.value;
@@ -3272,16 +3273,16 @@ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
3272
3273
  Promise.resolve(value).then(_next, _throw);
3273
3274
  }
3274
3275
  }
3275
- function _async_to_generator(fn) {
3276
+ function _async_to_generator$1(fn) {
3276
3277
  return function() {
3277
3278
  var self = this, args = arguments;
3278
3279
  return new Promise(function(resolve, reject) {
3279
3280
  var gen = fn.apply(self, args);
3280
3281
  function _next(value) {
3281
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
3282
+ asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, "next", value);
3282
3283
  }
3283
3284
  function _throw(err) {
3284
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
3285
+ asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, "throw", err);
3285
3286
  }
3286
3287
  _next(undefined);
3287
3288
  });
@@ -3296,7 +3297,7 @@ const useClipboard = ()=>{
3296
3297
  }, []);
3297
3298
  useEventListener('copy', updateText);
3298
3299
  useEventListener('cut', updateText);
3299
- const copy = React.useCallback(/*#__PURE__*/ _async_to_generator(function*(txt) {
3300
+ const copy = React.useCallback(/*#__PURE__*/ _async_to_generator$1(function*(txt) {
3300
3301
  setText(txt);
3301
3302
  yield window.navigator.clipboard.writeText(txt);
3302
3303
  }), []);
@@ -3785,6 +3786,201 @@ const useElementByPoint = (options)=>{
3785
3786
  };
3786
3787
  };
3787
3788
 
3789
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
3790
+ try {
3791
+ var info = gen[key](arg);
3792
+ var value = info.value;
3793
+ } catch (error) {
3794
+ reject(error);
3795
+ return;
3796
+ }
3797
+ if (info.done) {
3798
+ resolve(value);
3799
+ } else {
3800
+ Promise.resolve(value).then(_next, _throw);
3801
+ }
3802
+ }
3803
+ function _async_to_generator(fn) {
3804
+ return function() {
3805
+ var self = this, args = arguments;
3806
+ return new Promise(function(resolve, reject) {
3807
+ var gen = fn.apply(self, args);
3808
+ function _next(value) {
3809
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
3810
+ }
3811
+ function _throw(err) {
3812
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
3813
+ }
3814
+ _next(undefined);
3815
+ });
3816
+ };
3817
+ }
3818
+ function _extends() {
3819
+ _extends = Object.assign || function(target) {
3820
+ for(var i = 1; i < arguments.length; i++){
3821
+ var source = arguments[i];
3822
+ for(var key in source){
3823
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
3824
+ target[key] = source[key];
3825
+ }
3826
+ }
3827
+ }
3828
+ return target;
3829
+ };
3830
+ return _extends.apply(this, arguments);
3831
+ }
3832
+ function _object_without_properties_loose(source, excluded) {
3833
+ if (source == null) return {};
3834
+ var target = {};
3835
+ var sourceKeys = Object.keys(source);
3836
+ var key, i;
3837
+ for(i = 0; i < sourceKeys.length; i++){
3838
+ key = sourceKeys[i];
3839
+ if (excluded.indexOf(key) >= 0) continue;
3840
+ target[key] = source[key];
3841
+ }
3842
+ return target;
3843
+ }
3844
+ const useFetchEventSource = (url, options = {})=>{
3845
+ const [data, setData] = React.useState(null);
3846
+ const [error, setError] = React.useState(null);
3847
+ const [status, setStatus] = React.useState("DISCONNECTED");
3848
+ const [event, setEvent] = React.useState(null);
3849
+ const [lastEventId, setLastEventId] = React.useState(null);
3850
+ const retries = React.useRef(0);
3851
+ const abortController = React.useRef(null);
3852
+ const explicitlyClosed = React.useRef(false);
3853
+ const close = useEvent(()=>{
3854
+ if (!explicitlyClosed.current) {
3855
+ var _abortController_current;
3856
+ explicitlyClosed.current = true;
3857
+ (_abortController_current = abortController.current) == null ? void 0 : _abortController_current.abort();
3858
+ abortController.current = null;
3859
+ setStatus("DISCONNECTED");
3860
+ options.onClose == null ? void 0 : options.onClose.call(options);
3861
+ }
3862
+ });
3863
+ const open = useEvent(/*#__PURE__*/ _async_to_generator(function*() {
3864
+ close();
3865
+ setStatus("CONNECTING");
3866
+ explicitlyClosed.current = false;
3867
+ retries.current = 0;
3868
+ // 创建新的 AbortController
3869
+ abortController.current = new AbortController();
3870
+ try {
3871
+ // 从选项中提取 FetchEventSourceInit 相关的选项
3872
+ const { immediate, autoReconnect, onOpen, onMessage, onError, onClose, withCredentials, body } = options, fetchOptions = _object_without_properties_loose(options, [
3873
+ "immediate",
3874
+ "autoReconnect",
3875
+ "onOpen",
3876
+ "onMessage",
3877
+ "onError",
3878
+ "onClose",
3879
+ "withCredentials",
3880
+ "body"
3881
+ ]);
3882
+ // 构建请求配置
3883
+ const finalOptions = _extends({
3884
+ method: options.method || "GET",
3885
+ headers: _extends({
3886
+ Accept: "text/event-stream",
3887
+ "Cache-Control": "no-cache",
3888
+ Connection: "keep-alive"
3889
+ }, options.headers),
3890
+ signal: abortController.current.signal,
3891
+ credentials: withCredentials ? "include" : "same-origin"
3892
+ }, fetchOptions);
3893
+ // 只在 POST 请求时添加 body
3894
+ if (options.method === "POST" && body) {
3895
+ finalOptions.body = body;
3896
+ finalOptions.headers = _extends({}, finalOptions.headers, {
3897
+ "Content-Type": "application/json"
3898
+ });
3899
+ }
3900
+ yield fetchEventSource.fetchEventSource(url.toString(), _extends({}, finalOptions, {
3901
+ openWhenHidden: false,
3902
+ onopen (response) {
3903
+ return _async_to_generator(function*() {
3904
+ if (response.ok) {
3905
+ setStatus("CONNECTED");
3906
+ setError(null);
3907
+ options.onOpen == null ? void 0 : options.onOpen.call(options);
3908
+ } else {
3909
+ const error = new Error(`Failed to connect: ${response.status} ${response.statusText}`);
3910
+ setError(error);
3911
+ throw error;
3912
+ }
3913
+ })();
3914
+ },
3915
+ onmessage (msg) {
3916
+ if (!explicitlyClosed.current) {
3917
+ setData(msg.data);
3918
+ var _msg_id;
3919
+ setLastEventId((_msg_id = msg.id) != null ? _msg_id : null);
3920
+ setEvent(msg.event || null);
3921
+ options.onMessage == null ? void 0 : options.onMessage.call(options, msg);
3922
+ }
3923
+ },
3924
+ onerror (err) {
3925
+ setError(err);
3926
+ setStatus("DISCONNECTED");
3927
+ const retryDelay = options.onError == null ? void 0 : options.onError.call(options, err);
3928
+ if (options.autoReconnect && !explicitlyClosed.current) {
3929
+ const { retries: maxRetries = -1, delay = 1000, onFailed } = options.autoReconnect;
3930
+ retries.current += 1;
3931
+ if (typeof maxRetries === "number" && (maxRetries < 0 || retries.current < maxRetries) || typeof maxRetries === "function" && maxRetries()) {
3932
+ return retryDelay != null ? retryDelay : delay;
3933
+ } else {
3934
+ onFailed == null ? void 0 : onFailed();
3935
+ throw err;
3936
+ }
3937
+ }
3938
+ throw err;
3939
+ },
3940
+ onclose () {
3941
+ if (!explicitlyClosed.current) {
3942
+ setStatus("DISCONNECTED");
3943
+ options.onClose == null ? void 0 : options.onClose.call(options);
3944
+ }
3945
+ }
3946
+ }));
3947
+ } catch (err) {
3948
+ // 只处理非主动关闭导致的错误
3949
+ if (!explicitlyClosed.current) {
3950
+ console.error("EventSource Error:", err);
3951
+ setError(err);
3952
+ setStatus("DISCONNECTED");
3953
+ }
3954
+ }
3955
+ }));
3956
+ React.useEffect(()=>{
3957
+ if (options.immediate !== false) {
3958
+ open();
3959
+ }
3960
+ return ()=>{
3961
+ // 组件卸载时关闭连接
3962
+ close();
3963
+ };
3964
+ }, [
3965
+ open,
3966
+ close,
3967
+ options.immediate
3968
+ ]);
3969
+ // 组件卸载时确保连接关闭
3970
+ useUnmount(()=>{
3971
+ close();
3972
+ });
3973
+ return {
3974
+ data,
3975
+ error,
3976
+ status,
3977
+ lastEventId,
3978
+ event,
3979
+ close,
3980
+ open
3981
+ };
3982
+ };
3983
+
3788
3984
  exports.assignRef = assignRef;
3789
3985
  exports.defaultOptions = defaultOptions;
3790
3986
  exports.mergeRefs = mergeRefs;
@@ -3821,6 +4017,7 @@ exports.useEventListener = useEventListener;
3821
4017
  exports.useEventSource = useEventSource;
3822
4018
  exports.useEyeDropper = useEyeDropper;
3823
4019
  exports.useFavicon = useFavicon;
4020
+ exports.useFetchEventSource = useFetchEventSource;
3824
4021
  exports.useFileDialog = useFileDialog;
3825
4022
  exports.useFirstMountState = useFirstMountState;
3826
4023
  exports.useFocus = useFocus;