extra-react-hooks 0.1.12 → 0.1.13

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 (36) hide show
  1. package/README.md +30 -5
  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 +41 -7
  5. package/dist/es2015/index.mjs.map +1 -1
  6. package/dist/es2015/index.umd.js +41 -6
  7. package/dist/es2015/index.umd.js.map +1 -1
  8. package/dist/es2015/index.umd.min.js +1 -1
  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 +41 -7
  13. package/dist/es2018/index.mjs.map +1 -1
  14. package/dist/es2018/index.umd.js +41 -6
  15. package/dist/es2018/index.umd.js.map +1 -1
  16. package/dist/es2018/index.umd.min.js +1 -1
  17. package/dist/es2018/index.umd.min.js.map +1 -1
  18. package/lib/es2015/index.d.ts +1 -0
  19. package/lib/es2015/index.js +1 -0
  20. package/lib/es2015/index.js.map +1 -1
  21. package/lib/es2015/use-multiple-selection.d.ts +13 -0
  22. package/lib/es2015/use-multiple-selection.js +39 -0
  23. package/lib/es2015/use-multiple-selection.js.map +1 -0
  24. package/lib/es2015/use-single-selection.d.ts +5 -6
  25. package/lib/es2015/use-single-selection.js +4 -4
  26. package/lib/es2015/use-single-selection.js.map +1 -1
  27. package/lib/es2018/index.d.ts +1 -0
  28. package/lib/es2018/index.js +1 -0
  29. package/lib/es2018/index.js.map +1 -1
  30. package/lib/es2018/use-multiple-selection.d.ts +13 -0
  31. package/lib/es2018/use-multiple-selection.js +39 -0
  32. package/lib/es2018/use-multiple-selection.js.map +1 -0
  33. package/lib/es2018/use-single-selection.d.ts +5 -6
  34. package/lib/es2018/use-single-selection.js +4 -4
  35. package/lib/es2018/use-single-selection.js.map +1 -1
  36. package/package.json +12 -11
@@ -5330,14 +5330,14 @@
5330
5330
  return es2018$6;
5331
5331
  }
5332
5332
 
5333
- var es2018Exports = requireEs2018();
5333
+ var es2018Exports$1 = requireEs2018();
5334
5334
 
5335
- function useSingleSelection(values, defaultIndex) {
5336
- es2018Exports.assert(values.length > 0, 'The parameter values must be a non-empty array');
5337
- if (es2018$7.isntUndefined(defaultIndex)) {
5338
- es2018Exports.assert(defaultIndex >= 0 && defaultIndex < values.length, 'The parameter defaultIndex must be in the range of 0 to values.length');
5335
+ function useSingleSelection(values, defaultSelectedIndex) {
5336
+ es2018Exports$1.assert(values.length > 0, 'The parameter values must be a non-empty array');
5337
+ if (es2018$7.isntUndefined(defaultSelectedIndex)) {
5338
+ es2018Exports$1.assert(defaultSelectedIndex >= 0 && defaultSelectedIndex < values.length, 'The parameter defaultSelectedIndex must be in the range of 0 to values.length');
5339
5339
  }
5340
- const [selectedIndex, setSelectedIndex] = react.exports.useState(defaultIndex);
5340
+ const [selectedIndex, setSelectedIndex] = react.exports.useState(defaultSelectedIndex);
5341
5341
  return {
5342
5342
  value: es2018$7.isUndefined(selectedIndex) ? undefined : values[selectedIndex],
5343
5343
  options: values.map((value, index) => ({
@@ -5349,6 +5349,40 @@
5349
5349
  };
5350
5350
  }
5351
5351
 
5352
+ var es2018Exports = requireEs2018$1();
5353
+
5354
+ function useMultipleSelection(values, defaultSelectedIndexes = []) {
5355
+ es2018Exports$1.assert(values.length > 0, 'The parameter values must be a non-empty array');
5356
+ for (const index of defaultSelectedIndexes) {
5357
+ es2018Exports$1.assert(index >= 0 && index < values.length, 'The index of parameter defaultSelectedIndexes must be in the range of 0 to values.length');
5358
+ }
5359
+ const [selectedIndexes, setSelectedIndexes] = react.exports.useState(new Set(defaultSelectedIndexes));
5360
+ return {
5361
+ values: es2018Exports.toArray(es2018Exports.map(selectedIndexes, i => values[i])),
5362
+ options: values.map((value, index) => {
5363
+ const selected = selectedIndexes.has(index);
5364
+ const select = () => {
5365
+ const set = new Set(selectedIndexes);
5366
+ set.add(index);
5367
+ setSelectedIndexes(set);
5368
+ };
5369
+ const unselect = () => {
5370
+ const set = new Set(selectedIndexes);
5371
+ set.delete(index);
5372
+ setSelectedIndexes(set);
5373
+ };
5374
+ return {
5375
+ value,
5376
+ index,
5377
+ selected,
5378
+ select,
5379
+ unselect,
5380
+ toggle: selected ? unselect : select
5381
+ };
5382
+ })
5383
+ };
5384
+ }
5385
+
5352
5386
  function useStateCycle(stateList, initialStateIndex = 0) {
5353
5387
  const [index, setIndex] = react.exports.useState(initialStateIndex);
5354
5388
  return [
@@ -13630,6 +13664,7 @@
13630
13664
  exports.useIncrement = useIncrement;
13631
13665
  exports.useIsMounted = useIsMounted;
13632
13666
  exports.useMount = useMount;
13667
+ exports.useMultipleSelection = useMultipleSelection;
13633
13668
  exports.useResizeObserver = useResizeObserver;
13634
13669
  exports.useSingleSelection = useSingleSelection;
13635
13670
  exports.useStateCycle = useStateCycle;