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
@@ -5324,14 +5324,14 @@ function requireEs2018 () {
5324
5324
  return es2018$6;
5325
5325
  }
5326
5326
 
5327
- var es2018Exports = requireEs2018();
5327
+ var es2018Exports$1 = requireEs2018();
5328
5328
 
5329
- function useSingleSelection(values, defaultIndex) {
5330
- es2018Exports.assert(values.length > 0, 'The parameter values must be a non-empty array');
5331
- if (es2018$7.isntUndefined(defaultIndex)) {
5332
- es2018Exports.assert(defaultIndex >= 0 && defaultIndex < values.length, 'The parameter defaultIndex must be in the range of 0 to values.length');
5329
+ function useSingleSelection(values, defaultSelectedIndex) {
5330
+ es2018Exports$1.assert(values.length > 0, 'The parameter values must be a non-empty array');
5331
+ if (es2018$7.isntUndefined(defaultSelectedIndex)) {
5332
+ es2018Exports$1.assert(defaultSelectedIndex >= 0 && defaultSelectedIndex < values.length, 'The parameter defaultSelectedIndex must be in the range of 0 to values.length');
5333
5333
  }
5334
- const [selectedIndex, setSelectedIndex] = react.exports.useState(defaultIndex);
5334
+ const [selectedIndex, setSelectedIndex] = react.exports.useState(defaultSelectedIndex);
5335
5335
  return {
5336
5336
  value: es2018$7.isUndefined(selectedIndex) ? undefined : values[selectedIndex],
5337
5337
  options: values.map((value, index) => ({
@@ -5343,6 +5343,40 @@ function useSingleSelection(values, defaultIndex) {
5343
5343
  };
5344
5344
  }
5345
5345
 
5346
+ var es2018Exports = requireEs2018$1();
5347
+
5348
+ function useMultipleSelection(values, defaultSelectedIndexes = []) {
5349
+ es2018Exports$1.assert(values.length > 0, 'The parameter values must be a non-empty array');
5350
+ for (const index of defaultSelectedIndexes) {
5351
+ es2018Exports$1.assert(index >= 0 && index < values.length, 'The index of parameter defaultSelectedIndexes must be in the range of 0 to values.length');
5352
+ }
5353
+ const [selectedIndexes, setSelectedIndexes] = react.exports.useState(new Set(defaultSelectedIndexes));
5354
+ return {
5355
+ values: es2018Exports.toArray(es2018Exports.map(selectedIndexes, i => values[i])),
5356
+ options: values.map((value, index) => {
5357
+ const selected = selectedIndexes.has(index);
5358
+ const select = () => {
5359
+ const set = new Set(selectedIndexes);
5360
+ set.add(index);
5361
+ setSelectedIndexes(set);
5362
+ };
5363
+ const unselect = () => {
5364
+ const set = new Set(selectedIndexes);
5365
+ set.delete(index);
5366
+ setSelectedIndexes(set);
5367
+ };
5368
+ return {
5369
+ value,
5370
+ index,
5371
+ selected,
5372
+ select,
5373
+ unselect,
5374
+ toggle: selected ? unselect : select
5375
+ };
5376
+ })
5377
+ };
5378
+ }
5379
+
5346
5380
  function useStateCycle(stateList, initialStateIndex = 0) {
5347
5381
  const [index, setIndex] = react.exports.useState(initialStateIndex);
5348
5382
  return [
@@ -13619,5 +13653,5 @@ function useFiniteStateMachine(schema, initialState) {
13619
13653
  }
13620
13654
 
13621
13655
  var ObservableFiniteStateMachine = es2018$2.ObservableFiniteStateMachine;
13622
- export { ObservableFiniteStateMachine, useFiniteStateMachine, useForceUpdate, useIncrement, useIsMounted, useMount, useResizeObserver, useSingleSelection, useStateCycle, useStep, useToggle };
13656
+ export { ObservableFiniteStateMachine, useFiniteStateMachine, useForceUpdate, useIncrement, useIsMounted, useMount, useMultipleSelection, useResizeObserver, useSingleSelection, useStateCycle, useStep, useToggle };
13623
13657
  //# sourceMappingURL=index.mjs.map