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
@@ -2509,6 +2509,41 @@ function useIsMounted() {
2509
2509
  return () => isMounted.current;
2510
2510
  }
2511
2511
 
2512
+ var State;
2513
+ (function (State) {
2514
+ State[State["InitialValue"] = 0] = "InitialValue";
2515
+ State[State["First"] = 1] = "First";
2516
+ State[State["NotFirst"] = 2] = "NotFirst";
2517
+ })(State || (State = {}));
2518
+ function useIsFirstRender() {
2519
+ const state = react.exports.useRef(State.InitialValue);
2520
+ switch (state.current) {
2521
+ case State.InitialValue:
2522
+ state.current = State.First;
2523
+ break;
2524
+ case State.First:
2525
+ state.current = State.NotFirst;
2526
+ break;
2527
+ case State.NotFirst: break;
2528
+ }
2529
+ return () => state.current === State.First;
2530
+ }
2531
+
2532
+ function useRenderCounter() {
2533
+ const counter = react.exports.useRef(0);
2534
+ counter.current++;
2535
+ return counter.current;
2536
+ }
2537
+
2538
+ function useUpdateEffect(effect, deps) {
2539
+ const isFirstRender = useIsFirstRender();
2540
+ react.exports.useEffect(() => {
2541
+ if (!isFirstRender()) {
2542
+ return effect();
2543
+ }
2544
+ }, deps);
2545
+ }
2546
+
2512
2547
  var es2018$7 = {};
2513
2548
 
2514
2549
  var array = {};
@@ -5332,15 +5367,15 @@ function useSingleSelection(values, defaultSelectedIndex) {
5332
5367
  es2018Exports$1.assert(defaultSelectedIndex >= 0 && defaultSelectedIndex < values.length, 'The parameter defaultSelectedIndex must be in the range of 0 to values.length');
5333
5368
  }
5334
5369
  const [selectedIndex, setSelectedIndex] = react.exports.useState(defaultSelectedIndex);
5335
- return {
5336
- value: es2018$7.isUndefined(selectedIndex) ? undefined : values[selectedIndex],
5370
+ return react.exports.useMemo(() => ({
5371
+ selectedValue: es2018$7.isUndefined(selectedIndex) ? undefined : values[selectedIndex],
5337
5372
  options: values.map((value, index) => ({
5338
5373
  value,
5339
5374
  index,
5340
5375
  selected: index === selectedIndex,
5341
5376
  select: () => setSelectedIndex(index)
5342
5377
  }))
5343
- };
5378
+ }), [selectedIndex]);
5344
5379
  }
5345
5380
 
5346
5381
  var es2018Exports = requireEs2018$1();
@@ -5351,8 +5386,8 @@ function useMultipleSelection(values, defaultSelectedIndexes = []) {
5351
5386
  es2018Exports$1.assert(index >= 0 && index < values.length, 'The index of parameter defaultSelectedIndexes must be in the range of 0 to values.length');
5352
5387
  }
5353
5388
  const [selectedIndexes, setSelectedIndexes] = react.exports.useState(new Set(defaultSelectedIndexes));
5354
- return {
5355
- values: es2018Exports.toArray(es2018Exports.map(selectedIndexes, i => values[i])),
5389
+ return react.exports.useMemo(() => ({
5390
+ selectedValues: es2018Exports.toArray(es2018Exports.map(selectedIndexes, i => values[i])),
5356
5391
  options: values.map((value, index) => {
5357
5392
  const selected = selectedIndexes.has(index);
5358
5393
  const select = () => {
@@ -5374,7 +5409,7 @@ function useMultipleSelection(values, defaultSelectedIndexes = []) {
5374
5409
  toggle: selected ? unselect : select
5375
5410
  };
5376
5411
  })
5377
- };
5412
+ }), [selectedIndexes]);
5378
5413
  }
5379
5414
 
5380
5415
  function useStateCycle(stateList, initialStateIndex = 0) {
@@ -13653,5 +13688,5 @@ function useFiniteStateMachine(schema, initialState) {
13653
13688
  }
13654
13689
 
13655
13690
  var ObservableFiniteStateMachine = es2018$2.ObservableFiniteStateMachine;
13656
- export { ObservableFiniteStateMachine, useFiniteStateMachine, useForceUpdate, useIncrement, useIsMounted, useMount, useMultipleSelection, useResizeObserver, useSingleSelection, useStateCycle, useStep, useToggle };
13691
+ export { ObservableFiniteStateMachine, useFiniteStateMachine, useForceUpdate, useIncrement, useIsFirstRender, useIsMounted, useMount, useMultipleSelection, useRenderCounter, useResizeObserver, useSingleSelection, useStateCycle, useStep, useToggle, useUpdateEffect };
13657
13692
  //# sourceMappingURL=index.mjs.map