@hairy/react-lib 1.28.0 → 1.30.0

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
@@ -46,6 +46,7 @@ __export(index_exports, {
46
46
  track: () => track,
47
47
  tryUseCallback: () => tryUseCallback,
48
48
  tryUseEffect: () => tryUseEffect,
49
+ tryUseInsertionEffect: () => tryUseInsertionEffect,
49
50
  tryUseReducer: () => tryUseReducer,
50
51
  tryUseRef: () => tryUseRef,
51
52
  tryUseState: () => tryUseState,
@@ -360,11 +361,20 @@ var tryUseEffect = (effect, deps) => {
360
361
  }
361
362
  };
362
363
 
363
- // src/hooks/tryUseReducer.ts
364
+ // src/hooks/tryUseInsertionEffect.ts
364
365
  var import_react9 = require("react");
366
+ var tryUseInsertionEffect = (callback, deps) => {
367
+ try {
368
+ (0, import_react9.useInsertionEffect)(callback, deps);
369
+ } catch {
370
+ }
371
+ };
372
+
373
+ // src/hooks/tryUseReducer.ts
374
+ var import_react10 = require("react");
365
375
  var tryUseReducer = (reducer, initializerArg, initializer) => {
366
376
  try {
367
- return (0, import_react9.useReducer)(reducer, initializerArg, initializer);
377
+ return (0, import_react10.useReducer)(reducer, initializerArg, initializer);
368
378
  } catch {
369
379
  return [initializerArg, () => {
370
380
  }];
@@ -372,20 +382,20 @@ var tryUseReducer = (reducer, initializerArg, initializer) => {
372
382
  };
373
383
 
374
384
  // src/hooks/tryUseRef.ts
375
- var import_react10 = require("react");
385
+ var import_react11 = require("react");
376
386
  var tryUseRef = (initialValue) => {
377
387
  try {
378
- return (0, import_react10.useRef)(initialValue);
388
+ return (0, import_react11.useRef)(initialValue);
379
389
  } catch {
380
390
  return { current: initialValue };
381
391
  }
382
392
  };
383
393
 
384
394
  // src/hooks/tryUseState.ts
385
- var import_react11 = require("react");
395
+ var import_react12 = require("react");
386
396
  var tryUseState = (initialState) => {
387
397
  try {
388
- return (0, import_react11.useState)(initialState);
398
+ return (0, import_react12.useState)(initialState);
389
399
  } catch {
390
400
  return [isFunction_default(initialState) ? initialState() : initialState, noop];
391
401
  }
@@ -409,9 +419,9 @@ function tryUseUpdate() {
409
419
  }
410
420
 
411
421
  // src/hooks/useAsyncCallback.ts
412
- var import_react12 = require("react");
422
+ var import_react13 = require("react");
413
423
  function useAsyncCallback(fun) {
414
- const [state, set] = (0, import_react12.useState)({ loading: false });
424
+ const [state, set] = (0, import_react13.useState)({ loading: false });
415
425
  async function execute(...args) {
416
426
  set({ loading: true });
417
427
  return fun(...args).then((value) => {
@@ -426,11 +436,11 @@ function useAsyncCallback(fun) {
426
436
  }
427
437
 
428
438
  // src/hooks/useAsyncState.ts
429
- var import_react13 = require("react");
439
+ var import_react14 = require("react");
430
440
  function useAsyncState(fun, deps = [], options) {
431
- const [value, set] = (0, import_react13.useState)(options?.initial);
441
+ const [value, set] = (0, import_react14.useState)(options?.initial);
432
442
  const [loading, execute, error] = useAsyncCallback(async (...args) => fun(...args).then(set));
433
- (0, import_react13.useEffect)(
443
+ (0, import_react14.useEffect)(
434
444
  () => {
435
445
  execute();
436
446
  },
@@ -440,10 +450,10 @@ function useAsyncState(fun, deps = [], options) {
440
450
  }
441
451
 
442
452
  // src/hooks/useDebounce.ts
443
- var import_react14 = require("react");
453
+ var import_react15 = require("react");
444
454
  function useDebounce(value, delay) {
445
- const [debouncedValue, setDebouncedValue] = (0, import_react14.useState)(value);
446
- (0, import_react14.useEffect)(() => {
455
+ const [debouncedValue, setDebouncedValue] = (0, import_react15.useState)(value);
456
+ (0, import_react15.useEffect)(() => {
447
457
  const handler = setTimeout(() => setDebouncedValue(value), delay);
448
458
  return () => clearTimeout(handler);
449
459
  }, [value, delay]);
@@ -452,14 +462,14 @@ function useDebounce(value, delay) {
452
462
 
453
463
  // src/hooks/useEventBus.ts
454
464
  var import_mitt = __toESM(require("mitt"), 1);
455
- var import_react15 = require("react");
465
+ var import_react16 = require("react");
456
466
  var emitter = (0, import_mitt.default)();
457
467
  function useEventBus(key) {
458
- const onRef = (0, import_react15.useRef)();
468
+ const onRef = (0, import_react16.useRef)();
459
469
  function on(listener) {
460
470
  emitter.on(key, listener);
461
471
  onRef.current = listener;
462
- (0, import_react15.useEffect)(() => {
472
+ (0, import_react16.useEffect)(() => {
463
473
  if (!onRef.current)
464
474
  return;
465
475
  emitter.off(key, onRef.current);
@@ -482,9 +492,9 @@ function useEventBus(key) {
482
492
  }
483
493
 
484
494
  // ../../node_modules/.pnpm/react-use@17.6.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-use/esm/useEffectOnce.js
485
- var import_react16 = require("react");
495
+ var import_react17 = require("react");
486
496
  var useEffectOnce = function(effect) {
487
- (0, import_react16.useEffect)(effect, []);
497
+ (0, import_react17.useEffect)(effect, []);
488
498
  };
489
499
  var useEffectOnce_default = useEffectOnce;
490
500
 
@@ -520,23 +530,23 @@ function fetchRequestIntercept(intercept) {
520
530
  }
521
531
 
522
532
  // src/hooks/useMounted.ts
523
- var import_react17 = require("react");
533
+ var import_react18 = require("react");
524
534
  function useMounted() {
525
- const [mounted, setMounted] = (0, import_react17.useState)(false);
526
- (0, import_react17.useEffect)(() => setMounted(true), []);
535
+ const [mounted, setMounted] = (0, import_react18.useState)(false);
536
+ (0, import_react18.useEffect)(() => setMounted(true), []);
527
537
  return mounted;
528
538
  }
529
539
 
530
540
  // src/hooks/useWatch.ts
531
- var import_react18 = require("react");
541
+ var import_react19 = require("react");
532
542
  function useWatch(source, callback, options = {}) {
533
- const firstUpdate = (0, import_react18.useRef)(false);
534
- const then = (0, import_react18.useRef)();
535
- const deps = (0, import_react18.useMemo)(
543
+ const firstUpdate = (0, import_react19.useRef)(false);
544
+ const then = (0, import_react19.useRef)();
545
+ const deps = (0, import_react19.useMemo)(
536
546
  () => Array.isArray(source) ? source : [source],
537
547
  [source]
538
548
  );
539
- (0, import_react18.useEffect)(() => {
549
+ (0, import_react19.useEffect)(() => {
540
550
  if (!firstUpdate.current)
541
551
  recordFirst();
542
552
  else
@@ -561,7 +571,7 @@ function useWhenever(source, cb, options) {
561
571
  var import_utils11 = require("valtio/utils");
562
572
 
563
573
  // src/storage/defineStore.ts
564
- var import_react19 = require("react");
574
+ var import_react20 = require("react");
565
575
  var import_valtio4 = require("valtio");
566
576
 
567
577
  // src/storage/persistant.ts
@@ -615,10 +625,10 @@ function defineStore(store, options = {}) {
615
625
  Object.assign($state, patch);
616
626
  }
617
627
  function $signal(fn) {
618
- return (0, import_react19.createElement)(() => fn((0, import_valtio4.useSnapshot)($state)));
628
+ return (0, import_react20.createElement)(() => fn((0, import_valtio4.useSnapshot)($state)));
619
629
  }
620
630
  $signal.status = function(fn) {
621
- return (0, import_react19.createElement)(() => fn((0, import_valtio4.useSnapshot)($status)));
631
+ return (0, import_react20.createElement)(() => fn((0, import_valtio4.useSnapshot)($status)));
622
632
  };
623
633
  return {
624
634
  $subscribe,
@@ -748,6 +758,7 @@ function useStore(store) {
748
758
  track,
749
759
  tryUseCallback,
750
760
  tryUseEffect,
761
+ tryUseInsertionEffect,
751
762
  tryUseReducer,
752
763
  tryUseRef,
753
764
  tryUseState,
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { AnyFn, BooleanLike, Deferred, PromiseFn, PromiseType } from '@hairy/utils';
2
2
  import * as react from 'react';
3
- import { JSX, ReactNode, PropsWithChildren, ReactElement, FC, ComponentClass, useCallback, useEffect, useReducer, useRef, useState, DetailedHTMLProps, HTMLAttributes } from 'react';
3
+ import { JSX, ReactNode, PropsWithChildren, ReactElement, FC, ComponentClass, useCallback, useEffect, useInsertionEffect, useReducer, useRef, useState, DetailedHTMLProps, HTMLAttributes } from 'react';
4
4
  import * as valtio from 'valtio';
5
5
 
6
6
  type Value = string | boolean | undefined | null;
@@ -123,6 +123,8 @@ declare const tryUseCallback: typeof useCallback;
123
123
 
124
124
  declare const tryUseEffect: typeof useEffect;
125
125
 
126
+ declare const tryUseInsertionEffect: typeof useInsertionEffect;
127
+
126
128
  declare const tryUseReducer: typeof useReducer;
127
129
 
128
130
  declare const tryUseRef: typeof useRef;
@@ -292,4 +294,4 @@ declare function useStore<S extends object, A extends Actions<S>, G extends Gett
292
294
 
293
295
  type PropsWithDetailedHTML<T = HTMLDivElement> = DetailedHTMLProps<HTMLAttributes<T>, T>;
294
296
 
295
- export { type Argument, type ArgumentArray, type AsyncStoreOptions, Case, type CaseProps, Default, type DefaultProps, Else, type ElseProps, type EventBusListener, type Exposer, type FetchRequestInterceptCallback, type FetchResponseInterceptCallback, If, type IfProps, type InjectComponent, Injector, type InjectorProps, type Mapping, type PersistantOptions, type PropsWithDetailedHTML, type ReadonlyArgumentArray, Switch, type SwitchProps, Then, type ThenProps, Trigger, Unless, type UnlessProps, type UseAsyncStateOptions, type UseWatchCallback, type UseWatchOptions, type Value, type WrapperProps, type WrapperTag, cls, defineAsyncStore, defineStore, proxyWithPersistant, track, tryUseCallback, tryUseEffect, tryUseReducer, tryUseRef, tryUseState, tryUseUpdate, useAsyncCallback, useAsyncState, useDebounce, useEventBus, useFetchRequestIntercept, useFetchResponseIntercept, useMounted, useStatus, useStore, useUpdate, useWatch, useWhenever, wrapper };
297
+ export { type Argument, type ArgumentArray, type AsyncStoreOptions, Case, type CaseProps, Default, type DefaultProps, Else, type ElseProps, type EventBusListener, type Exposer, type FetchRequestInterceptCallback, type FetchResponseInterceptCallback, If, type IfProps, type InjectComponent, Injector, type InjectorProps, type Mapping, type PersistantOptions, type PropsWithDetailedHTML, type ReadonlyArgumentArray, Switch, type SwitchProps, Then, type ThenProps, Trigger, Unless, type UnlessProps, type UseAsyncStateOptions, type UseWatchCallback, type UseWatchOptions, type Value, type WrapperProps, type WrapperTag, cls, defineAsyncStore, defineStore, proxyWithPersistant, track, tryUseCallback, tryUseEffect, tryUseInsertionEffect, tryUseReducer, tryUseRef, tryUseState, tryUseUpdate, useAsyncCallback, useAsyncState, useDebounce, useEventBus, useFetchRequestIntercept, useFetchResponseIntercept, useMounted, useStatus, useStore, useUpdate, useWatch, useWhenever, wrapper };
@@ -58,6 +58,7 @@ var LibReact = (() => {
58
58
  track: () => track,
59
59
  tryUseCallback: () => tryUseCallback,
60
60
  tryUseEffect: () => tryUseEffect,
61
+ tryUseInsertionEffect: () => tryUseInsertionEffect,
61
62
  tryUseReducer: () => tryUseReducer,
62
63
  tryUseRef: () => tryUseRef,
63
64
  tryUseState: () => tryUseState,
@@ -1073,11 +1074,20 @@ var LibReact = (() => {
1073
1074
  }
1074
1075
  };
1075
1076
 
1076
- // src/hooks/tryUseReducer.ts
1077
+ // src/hooks/tryUseInsertionEffect.ts
1077
1078
  var import_react10 = __toESM(require_react(), 1);
1079
+ var tryUseInsertionEffect = (callback, deps) => {
1080
+ try {
1081
+ (0, import_react10.useInsertionEffect)(callback, deps);
1082
+ } catch {
1083
+ }
1084
+ };
1085
+
1086
+ // src/hooks/tryUseReducer.ts
1087
+ var import_react11 = __toESM(require_react(), 1);
1078
1088
  var tryUseReducer = (reducer, initializerArg, initializer) => {
1079
1089
  try {
1080
- return (0, import_react10.useReducer)(reducer, initializerArg, initializer);
1090
+ return (0, import_react11.useReducer)(reducer, initializerArg, initializer);
1081
1091
  } catch {
1082
1092
  return [initializerArg, () => {
1083
1093
  }];
@@ -1085,20 +1095,20 @@ var LibReact = (() => {
1085
1095
  };
1086
1096
 
1087
1097
  // src/hooks/tryUseRef.ts
1088
- var import_react11 = __toESM(require_react(), 1);
1098
+ var import_react12 = __toESM(require_react(), 1);
1089
1099
  var tryUseRef = (initialValue) => {
1090
1100
  try {
1091
- return (0, import_react11.useRef)(initialValue);
1101
+ return (0, import_react12.useRef)(initialValue);
1092
1102
  } catch {
1093
1103
  return { current: initialValue };
1094
1104
  }
1095
1105
  };
1096
1106
 
1097
1107
  // src/hooks/tryUseState.ts
1098
- var import_react12 = __toESM(require_react(), 1);
1108
+ var import_react13 = __toESM(require_react(), 1);
1099
1109
  var tryUseState = (initialState) => {
1100
1110
  try {
1101
- return (0, import_react12.useState)(initialState);
1111
+ return (0, import_react13.useState)(initialState);
1102
1112
  } catch {
1103
1113
  return [isFunction_default(initialState) ? initialState() : initialState, noop];
1104
1114
  }
@@ -1122,9 +1132,9 @@ var LibReact = (() => {
1122
1132
  }
1123
1133
 
1124
1134
  // src/hooks/useAsyncCallback.ts
1125
- var import_react13 = __toESM(require_react(), 1);
1135
+ var import_react14 = __toESM(require_react(), 1);
1126
1136
  function useAsyncCallback(fun) {
1127
- const [state, set] = (0, import_react13.useState)({ loading: false });
1137
+ const [state, set] = (0, import_react14.useState)({ loading: false });
1128
1138
  async function execute(...args) {
1129
1139
  set({ loading: true });
1130
1140
  return fun(...args).then((value) => {
@@ -1139,11 +1149,11 @@ var LibReact = (() => {
1139
1149
  }
1140
1150
 
1141
1151
  // src/hooks/useAsyncState.ts
1142
- var import_react14 = __toESM(require_react(), 1);
1152
+ var import_react15 = __toESM(require_react(), 1);
1143
1153
  function useAsyncState(fun, deps = [], options) {
1144
- const [value, set] = (0, import_react14.useState)(options?.initial);
1154
+ const [value, set] = (0, import_react15.useState)(options?.initial);
1145
1155
  const [loading, execute, error] = useAsyncCallback(async (...args) => fun(...args).then(set));
1146
- (0, import_react14.useEffect)(
1156
+ (0, import_react15.useEffect)(
1147
1157
  () => {
1148
1158
  execute();
1149
1159
  },
@@ -1153,10 +1163,10 @@ var LibReact = (() => {
1153
1163
  }
1154
1164
 
1155
1165
  // src/hooks/useDebounce.ts
1156
- var import_react15 = __toESM(require_react(), 1);
1166
+ var import_react16 = __toESM(require_react(), 1);
1157
1167
  function useDebounce(value, delay) {
1158
- const [debouncedValue, setDebouncedValue] = (0, import_react15.useState)(value);
1159
- (0, import_react15.useEffect)(() => {
1168
+ const [debouncedValue, setDebouncedValue] = (0, import_react16.useState)(value);
1169
+ (0, import_react16.useEffect)(() => {
1160
1170
  const handler = setTimeout(() => setDebouncedValue(value), delay);
1161
1171
  return () => clearTimeout(handler);
1162
1172
  }, [value, delay]);
@@ -1182,14 +1192,14 @@ var LibReact = (() => {
1182
1192
  }
1183
1193
 
1184
1194
  // src/hooks/useEventBus.ts
1185
- var import_react16 = __toESM(require_react(), 1);
1195
+ var import_react17 = __toESM(require_react(), 1);
1186
1196
  var emitter = mitt_default();
1187
1197
  function useEventBus(key) {
1188
- const onRef = (0, import_react16.useRef)();
1198
+ const onRef = (0, import_react17.useRef)();
1189
1199
  function on(listener) {
1190
1200
  emitter.on(key, listener);
1191
1201
  onRef.current = listener;
1192
- (0, import_react16.useEffect)(() => {
1202
+ (0, import_react17.useEffect)(() => {
1193
1203
  if (!onRef.current)
1194
1204
  return;
1195
1205
  emitter.off(key, onRef.current);
@@ -1212,9 +1222,9 @@ var LibReact = (() => {
1212
1222
  }
1213
1223
 
1214
1224
  // ../../node_modules/.pnpm/react-use@17.6.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-use/esm/useEffectOnce.js
1215
- var import_react17 = __toESM(require_react());
1225
+ var import_react18 = __toESM(require_react());
1216
1226
  var useEffectOnce = function(effect) {
1217
- (0, import_react17.useEffect)(effect, []);
1227
+ (0, import_react18.useEffect)(effect, []);
1218
1228
  };
1219
1229
  var useEffectOnce_default = useEffectOnce;
1220
1230
 
@@ -1250,23 +1260,23 @@ var LibReact = (() => {
1250
1260
  }
1251
1261
 
1252
1262
  // src/hooks/useMounted.ts
1253
- var import_react18 = __toESM(require_react(), 1);
1263
+ var import_react19 = __toESM(require_react(), 1);
1254
1264
  function useMounted() {
1255
- const [mounted, setMounted] = (0, import_react18.useState)(false);
1256
- (0, import_react18.useEffect)(() => setMounted(true), []);
1265
+ const [mounted, setMounted] = (0, import_react19.useState)(false);
1266
+ (0, import_react19.useEffect)(() => setMounted(true), []);
1257
1267
  return mounted;
1258
1268
  }
1259
1269
 
1260
1270
  // src/hooks/useWatch.ts
1261
- var import_react19 = __toESM(require_react(), 1);
1271
+ var import_react20 = __toESM(require_react(), 1);
1262
1272
  function useWatch(source, callback, options = {}) {
1263
- const firstUpdate = (0, import_react19.useRef)(false);
1264
- const then = (0, import_react19.useRef)();
1265
- const deps = (0, import_react19.useMemo)(
1273
+ const firstUpdate = (0, import_react20.useRef)(false);
1274
+ const then = (0, import_react20.useRef)();
1275
+ const deps = (0, import_react20.useMemo)(
1266
1276
  () => Array.isArray(source) ? source : [source],
1267
1277
  [source]
1268
1278
  );
1269
- (0, import_react19.useEffect)(() => {
1279
+ (0, import_react20.useEffect)(() => {
1270
1280
  if (!firstUpdate.current)
1271
1281
  recordFirst();
1272
1282
  else
@@ -1288,7 +1298,7 @@ var LibReact = (() => {
1288
1298
  }
1289
1299
 
1290
1300
  // src/storage/defineStore.ts
1291
- var import_react20 = __toESM(require_react(), 1);
1301
+ var import_react21 = __toESM(require_react(), 1);
1292
1302
 
1293
1303
  // src/storage/persistant.ts
1294
1304
  function proxyWithPersistant(keyOrOptions, initialObject) {
@@ -1340,10 +1350,10 @@ var LibReact = (() => {
1340
1350
  Object.assign($state, patch);
1341
1351
  }
1342
1352
  function $signal(fn) {
1343
- return (0, import_react20.createElement)(() => fn(useSnapshot($state)));
1353
+ return (0, import_react21.createElement)(() => fn(useSnapshot($state)));
1344
1354
  }
1345
1355
  $signal.status = function(fn) {
1346
- return (0, import_react20.createElement)(() => fn(useSnapshot($status)));
1356
+ return (0, import_react21.createElement)(() => fn(useSnapshot($status)));
1347
1357
  };
1348
1358
  return {
1349
1359
  $subscribe,
package/dist/index.js CHANGED
@@ -292,6 +292,15 @@ var tryUseEffect = (effect, deps) => {
292
292
  }
293
293
  };
294
294
 
295
+ // src/hooks/tryUseInsertionEffect.ts
296
+ import { useInsertionEffect } from "react";
297
+ var tryUseInsertionEffect = (callback, deps) => {
298
+ try {
299
+ useInsertionEffect(callback, deps);
300
+ } catch {
301
+ }
302
+ };
303
+
295
304
  // src/hooks/tryUseReducer.ts
296
305
  import { useReducer } from "react";
297
306
  var tryUseReducer = (reducer, initializerArg, initializer) => {
@@ -679,6 +688,7 @@ export {
679
688
  track,
680
689
  tryUseCallback,
681
690
  tryUseEffect,
691
+ tryUseInsertionEffect,
682
692
  tryUseReducer,
683
693
  tryUseRef,
684
694
  tryUseState,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@hairy/react-lib",
3
3
  "type": "module",
4
- "version": "1.28.0",
4
+ "version": "1.30.0",
5
5
  "description": "Library for react",
6
6
  "author": "Hairyf <wwu710632@gmail.com>",
7
7
  "license": "MIT",
@@ -38,7 +38,7 @@
38
38
  "react-dom": "^18.2.0",
39
39
  "react-i18next": "^14.1.2",
40
40
  "react-use": "^17.6.0",
41
- "@hairy/utils": "1.28.0"
41
+ "@hairy/utils": "1.30.0"
42
42
  },
43
43
  "scripts": {
44
44
  "build": "tsup",