extra-react-hooks 0.1.13 → 0.2.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.
Files changed (54) hide show
  1. package/README.md +21 -3
  2. package/dist/es2015/index.min.mjs +2 -2
  3. package/dist/es2015/index.min.mjs.map +1 -1
  4. package/dist/es2015/index.mjs +42 -7
  5. package/dist/es2015/index.mjs.map +1 -1
  6. package/dist/es2015/index.umd.js +44 -6
  7. package/dist/es2015/index.umd.js.map +1 -1
  8. package/dist/es2015/index.umd.min.js +2 -2
  9. package/dist/es2015/index.umd.min.js.map +1 -1
  10. package/dist/es2018/index.min.mjs +2 -2
  11. package/dist/es2018/index.min.mjs.map +1 -1
  12. package/dist/es2018/index.mjs +42 -7
  13. package/dist/es2018/index.mjs.map +1 -1
  14. package/dist/es2018/index.umd.js +44 -6
  15. package/dist/es2018/index.umd.js.map +1 -1
  16. package/dist/es2018/index.umd.min.js +2 -2
  17. package/dist/es2018/index.umd.min.js.map +1 -1
  18. package/lib/es2015/index.d.ts +3 -0
  19. package/lib/es2015/index.js +3 -0
  20. package/lib/es2015/index.js.map +1 -1
  21. package/lib/es2015/use-is-first-render.d.ts +1 -0
  22. package/lib/es2015/use-is-first-render.js +25 -0
  23. package/lib/es2015/use-is-first-render.js.map +1 -0
  24. package/lib/es2015/use-multiple-selection.d.ts +1 -1
  25. package/lib/es2015/use-multiple-selection.js +3 -3
  26. package/lib/es2015/use-multiple-selection.js.map +1 -1
  27. package/lib/es2015/use-render-counter.d.ts +1 -0
  28. package/lib/es2015/use-render-counter.js +11 -0
  29. package/lib/es2015/use-render-counter.js.map +1 -0
  30. package/lib/es2015/use-single-selection.d.ts +2 -2
  31. package/lib/es2015/use-single-selection.js +3 -3
  32. package/lib/es2015/use-single-selection.js.map +1 -1
  33. package/lib/es2015/use-update-effect.d.ts +2 -0
  34. package/lib/es2015/use-update-effect.js +15 -0
  35. package/lib/es2015/use-update-effect.js.map +1 -0
  36. package/lib/es2018/index.d.ts +3 -0
  37. package/lib/es2018/index.js +3 -0
  38. package/lib/es2018/index.js.map +1 -1
  39. package/lib/es2018/use-is-first-render.d.ts +1 -0
  40. package/lib/es2018/use-is-first-render.js +25 -0
  41. package/lib/es2018/use-is-first-render.js.map +1 -0
  42. package/lib/es2018/use-multiple-selection.d.ts +1 -1
  43. package/lib/es2018/use-multiple-selection.js +3 -3
  44. package/lib/es2018/use-multiple-selection.js.map +1 -1
  45. package/lib/es2018/use-render-counter.d.ts +1 -0
  46. package/lib/es2018/use-render-counter.js +11 -0
  47. package/lib/es2018/use-render-counter.js.map +1 -0
  48. package/lib/es2018/use-single-selection.d.ts +2 -2
  49. package/lib/es2018/use-single-selection.js +3 -3
  50. package/lib/es2018/use-single-selection.js.map +1 -1
  51. package/lib/es2018/use-update-effect.d.ts +2 -0
  52. package/lib/es2018/use-update-effect.js +15 -0
  53. package/lib/es2018/use-update-effect.js.map +1 -0
  54. package/package.json +1 -1
@@ -2515,6 +2515,41 @@
2515
2515
  return () => isMounted.current;
2516
2516
  }
2517
2517
 
2518
+ var State;
2519
+ (function (State) {
2520
+ State[State["InitialValue"] = 0] = "InitialValue";
2521
+ State[State["First"] = 1] = "First";
2522
+ State[State["NotFirst"] = 2] = "NotFirst";
2523
+ })(State || (State = {}));
2524
+ function useIsFirstRender() {
2525
+ const state = react.exports.useRef(State.InitialValue);
2526
+ switch (state.current) {
2527
+ case State.InitialValue:
2528
+ state.current = State.First;
2529
+ break;
2530
+ case State.First:
2531
+ state.current = State.NotFirst;
2532
+ break;
2533
+ case State.NotFirst: break;
2534
+ }
2535
+ return () => state.current === State.First;
2536
+ }
2537
+
2538
+ function useRenderCounter() {
2539
+ const counter = react.exports.useRef(0);
2540
+ counter.current++;
2541
+ return counter.current;
2542
+ }
2543
+
2544
+ function useUpdateEffect(effect, deps) {
2545
+ const isFirstRender = useIsFirstRender();
2546
+ react.exports.useEffect(() => {
2547
+ if (!isFirstRender()) {
2548
+ return effect();
2549
+ }
2550
+ }, deps);
2551
+ }
2552
+
2518
2553
  var es2018$7 = {};
2519
2554
 
2520
2555
  var array = {};
@@ -5338,15 +5373,15 @@
5338
5373
  es2018Exports$1.assert(defaultSelectedIndex >= 0 && defaultSelectedIndex < values.length, 'The parameter defaultSelectedIndex must be in the range of 0 to values.length');
5339
5374
  }
5340
5375
  const [selectedIndex, setSelectedIndex] = react.exports.useState(defaultSelectedIndex);
5341
- return {
5342
- value: es2018$7.isUndefined(selectedIndex) ? undefined : values[selectedIndex],
5376
+ return react.exports.useMemo(() => ({
5377
+ selectedValue: es2018$7.isUndefined(selectedIndex) ? undefined : values[selectedIndex],
5343
5378
  options: values.map((value, index) => ({
5344
5379
  value,
5345
5380
  index,
5346
5381
  selected: index === selectedIndex,
5347
5382
  select: () => setSelectedIndex(index)
5348
5383
  }))
5349
- };
5384
+ }), [selectedIndex]);
5350
5385
  }
5351
5386
 
5352
5387
  var es2018Exports = requireEs2018$1();
@@ -5357,8 +5392,8 @@
5357
5392
  es2018Exports$1.assert(index >= 0 && index < values.length, 'The index of parameter defaultSelectedIndexes must be in the range of 0 to values.length');
5358
5393
  }
5359
5394
  const [selectedIndexes, setSelectedIndexes] = react.exports.useState(new Set(defaultSelectedIndexes));
5360
- return {
5361
- values: es2018Exports.toArray(es2018Exports.map(selectedIndexes, i => values[i])),
5395
+ return react.exports.useMemo(() => ({
5396
+ selectedValues: es2018Exports.toArray(es2018Exports.map(selectedIndexes, i => values[i])),
5362
5397
  options: values.map((value, index) => {
5363
5398
  const selected = selectedIndexes.has(index);
5364
5399
  const select = () => {
@@ -5380,7 +5415,7 @@
5380
5415
  toggle: selected ? unselect : select
5381
5416
  };
5382
5417
  })
5383
- };
5418
+ }), [selectedIndexes]);
5384
5419
  }
5385
5420
 
5386
5421
  function useStateCycle(stateList, initialStateIndex = 0) {
@@ -13662,14 +13697,17 @@
13662
13697
  exports.useFiniteStateMachine = useFiniteStateMachine;
13663
13698
  exports.useForceUpdate = useForceUpdate;
13664
13699
  exports.useIncrement = useIncrement;
13700
+ exports.useIsFirstRender = useIsFirstRender;
13665
13701
  exports.useIsMounted = useIsMounted;
13666
13702
  exports.useMount = useMount;
13667
13703
  exports.useMultipleSelection = useMultipleSelection;
13704
+ exports.useRenderCounter = useRenderCounter;
13668
13705
  exports.useResizeObserver = useResizeObserver;
13669
13706
  exports.useSingleSelection = useSingleSelection;
13670
13707
  exports.useStateCycle = useStateCycle;
13671
13708
  exports.useStep = useStep;
13672
13709
  exports.useToggle = useToggle;
13710
+ exports.useUpdateEffect = useUpdateEffect;
13673
13711
 
13674
13712
  Object.defineProperty(exports, '__esModule', { value: true });
13675
13713