@rio-cloud/rio-uikit 0.15.0-beta-46 → 0.15.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 (184) hide show
  1. package/README.md +197 -192
  2. package/lib/components/actionBarItem/ActionBarItem.js +9 -0
  3. package/lib/components/actionBarItem/ActionBarItemList.js +38 -0
  4. package/lib/components/actionBarItem/ActionBarItemListItem.js +51 -0
  5. package/lib/components/actionBarItem/ActionBarItemListSeparator.js +37 -0
  6. package/lib/components/actionBarItem/ActionBarOverlay.js +2 -2
  7. package/lib/components/animatedNumber/AnimatedNumber.js +81 -0
  8. package/lib/components/applicationHeader/ApplicationHeader.js +4 -1
  9. package/lib/components/applicationLayout/ApplicationLayoutBody.js +3 -1
  10. package/lib/components/assetTree/AssetTree.less +3 -2
  11. package/lib/components/assetTree/Tree.js +3 -3
  12. package/lib/components/autosuggest/AutoSuggest.js +5 -3
  13. package/lib/components/bottomSheet/BottomSheet.js +157 -0
  14. package/lib/components/browserWarning/BrowserWarningMessageDE.js +1 -1
  15. package/lib/components/browserWarning/BrowserWarningMessageEN.js +1 -1
  16. package/lib/components/button/Button.js +127 -7
  17. package/lib/components/button/ToggleButton.js +11 -108
  18. package/lib/components/charts/BarChart.js +4 -3
  19. package/lib/components/charts/ChartNeedle.js +2 -2
  20. package/lib/components/charts/PieChart.js +11 -6
  21. package/lib/components/charts/RadialBarChart.js +4 -1
  22. package/lib/components/charts/chartHelper.js +3 -3
  23. package/lib/components/checkbox/Checkbox.js +127 -171
  24. package/lib/components/checkbox/Checkbox.less +4 -2
  25. package/lib/components/clearableInput/ClearableInput.js +2 -2
  26. package/lib/components/clearableInput/ClearableInput.less +2 -1
  27. package/lib/components/dataTabs/DataTabs.js +78 -120
  28. package/lib/components/datepicker/DatePicker.js +41 -72
  29. package/lib/components/datepicker/DatePicker.less +35 -5
  30. package/lib/components/datepicker/DateRangePicker.js +3 -3
  31. package/lib/components/dialog/Dialog.js +2 -2
  32. package/lib/components/dialog/InfoDialog.js +2 -2
  33. package/lib/components/dialog/MediaDialog.js +2 -2
  34. package/lib/components/dialog/SaveDialog.js +2 -2
  35. package/lib/components/dialog/SimpleDialog.js +2 -2
  36. package/lib/components/dialog/SplitDialog.js +2 -2
  37. package/lib/components/driverName/DriverName.js +1 -1
  38. package/lib/components/dropdown/ButtonDropdown.js +2 -2
  39. package/lib/components/dropdown/DropdownSubmenu.less +2 -2
  40. package/lib/components/fade/Fade.js +2 -2
  41. package/lib/components/filepicker/FilePicker.js +2 -2
  42. package/lib/components/listMenu/ListMenu.js +2 -2
  43. package/lib/components/loadMore/LoadMoreButton.js +1 -1
  44. package/lib/components/map/components/Map.js +2 -2
  45. package/lib/components/map/components/constants.js +1 -1
  46. package/lib/components/map/components/features/Route.js +2 -2
  47. package/lib/components/map/components/features/basics/MapLayerGroup.js +2 -2
  48. package/lib/components/map/components/features/basics/marker/Marker.js +2 -1
  49. package/lib/components/map/components/features/basics/marker/TextMarker.js +1 -1
  50. package/lib/components/map/components/features/layers/MarkerLayer.js +2 -2
  51. package/lib/components/map/components/features/layers/clustering/SimpleClusterLayer.js +2 -2
  52. package/lib/components/map/utils/eventHandling.js +5 -4
  53. package/lib/components/map/utils/hooks.js +1 -1
  54. package/lib/components/map/utils/validation.js +1 -1
  55. package/lib/components/numberControl/NumberControl.js +165 -145
  56. package/lib/components/numberInput/NumberInput.js +152 -233
  57. package/lib/components/onboarding/OnboardingTip.js +1 -1
  58. package/lib/components/overlay/OverlayTrigger.js +2 -1
  59. package/lib/components/radiobutton/RadioButton.js +116 -148
  60. package/lib/components/radiobutton/RadioButton.less +10 -6
  61. package/lib/components/resizer/Resizer.less +2 -2
  62. package/lib/components/selects/BaseDropdownMenu.js +2 -2
  63. package/lib/components/selects/DropdownHeader.js +2 -6
  64. package/lib/components/spinner/Spinner.js +1 -1
  65. package/lib/components/spinner/Spinner.less +2 -2
  66. package/lib/components/states/MaintenanceState.js +25 -0
  67. package/lib/components/states/baseStatePropTypes.js +1 -1
  68. package/lib/components/supportMarker/toggleSupportMarker.js +1 -1
  69. package/lib/components/table/SortArrows.js +1 -1
  70. package/lib/components/table/TableCardsSorting.js +7 -7
  71. package/lib/components/table/TableSettingsDialog.js +2 -2
  72. package/lib/components/table/TableSettingsListItem.js +1 -1
  73. package/lib/components/teaser/Teaser.js +1 -1
  74. package/lib/components/timepicker/TimePicker.js +10 -2
  75. package/lib/components/tooltip/Tooltip.js +4 -4
  76. package/lib/components/tooltip/Tooltip.less +0 -10
  77. package/lib/es/ActionBarItem.d.ts +6 -0
  78. package/lib/es/ActionBarItemList.d.ts +5 -0
  79. package/lib/es/ActionBarItemList.js +15 -0
  80. package/lib/es/ActionBarItemListItem.d.ts +5 -0
  81. package/lib/es/ActionBarItemListItem.js +15 -0
  82. package/lib/es/ActionBarItemListSeparator.d.ts +5 -0
  83. package/lib/es/ActionBarItemListSeparator.js +15 -0
  84. package/lib/es/AnimatedNumber.d.ts +5 -0
  85. package/lib/es/AnimatedNumber.js +15 -0
  86. package/lib/es/BottomSheet.d.ts +5 -0
  87. package/lib/es/BottomSheet.js +15 -0
  88. package/lib/es/DeviceUtils.d.ts +5 -0
  89. package/lib/es/MaintenanceState.d.ts +5 -0
  90. package/lib/es/MaintenanceState.js +15 -0
  91. package/lib/es/SortDirection.d.ts +6 -0
  92. package/lib/es/SortDirection.js +13 -0
  93. package/lib/es/SortUtils.d.ts +6 -0
  94. package/lib/es/SortUtils.js +19 -0
  95. package/lib/es/SupportMarker.js +15 -0
  96. package/lib/es/deviceUtils.js +14 -2
  97. package/lib/es/routeUtils.js +6 -6
  98. package/lib/es/useAfterMount.d.ts +4 -0
  99. package/lib/es/useAfterMount.js +15 -0
  100. package/lib/es/useClickOutside.d.ts +4 -0
  101. package/lib/es/useClickOutside.js +15 -0
  102. package/lib/es/useClipboard.d.ts +4 -0
  103. package/lib/es/useClipboard.js +15 -0
  104. package/lib/es/useDebugInfo.d.ts +4 -0
  105. package/lib/es/useDebugInfo.js +15 -0
  106. package/lib/es/useEffectOnce.d.ts +4 -0
  107. package/lib/es/useEffectOnce.js +15 -0
  108. package/lib/es/useElementSize.d.ts +4 -0
  109. package/lib/es/useElementSize.js +15 -0
  110. package/lib/es/useEsc.d.ts +4 -0
  111. package/lib/es/useEsc.js +15 -0
  112. package/lib/es/useEvent.d.ts +4 -0
  113. package/lib/es/useEvent.js +15 -0
  114. package/lib/es/useInterval.d.ts +4 -0
  115. package/lib/es/useInterval.js +15 -0
  116. package/lib/es/useKey.d.ts +4 -0
  117. package/lib/es/useKey.js +15 -0
  118. package/lib/es/useLocalStorage.d.ts +4 -0
  119. package/lib/es/useLocalStorage.js +13 -0
  120. package/lib/es/useOnMount.js +15 -0
  121. package/lib/es/useOnScreen.d.ts +4 -0
  122. package/lib/es/useOnScreen.js +15 -0
  123. package/lib/es/useOnlineStatus.d.ts +4 -0
  124. package/lib/es/useOnlineStatus.js +15 -0
  125. package/lib/es/useRenderCount.d.ts +4 -0
  126. package/lib/es/useRenderCount.js +15 -0
  127. package/lib/es/useSessionStorage.d.ts +4 -0
  128. package/lib/es/useSessionStorage.js +13 -0
  129. package/lib/es/useStateWithValidation.d.ts +4 -0
  130. package/lib/es/useStateWithValidation.js +15 -0
  131. package/lib/es/useTimeout.d.ts +4 -0
  132. package/lib/es/useTimeout.js +15 -0
  133. package/lib/es/useWindowResize.d.ts +4 -0
  134. package/lib/es/useWindowResize.js +15 -0
  135. package/lib/hooks/useDebugInfo.js +55 -0
  136. package/lib/hooks/useInterval.js +30 -0
  137. package/lib/hooks/useOnScreen.js +46 -0
  138. package/lib/hooks/useOnlineStatus.js +30 -0
  139. package/lib/hooks/useRenderCount.js +17 -0
  140. package/lib/hooks/useStateWithValidation.js +33 -0
  141. package/lib/hooks/useStorage.js +53 -0
  142. package/lib/hooks/useTimeout.js +9 -6
  143. package/lib/index.js +274 -266
  144. package/lib/mapIndex.js +72 -72
  145. package/lib/style/css/_exports/man-uikit.less +1 -0
  146. package/lib/style/css/_exports/rio-buyButton.less +5 -0
  147. package/lib/style/css/_exports/rio-uikit-core.less +2 -2
  148. package/lib/style/css/_exports/rio-uikit-print-utilities.less +21 -0
  149. package/lib/style/css/_exports/rio-uikit-responsive-utilities.less +2 -1
  150. package/lib/style/css/_exports/rio-uikit.less +1 -0
  151. package/lib/style/css/_exports/rio-website.less +131 -0
  152. package/lib/style/css/_exports/vw-uikit.less +2 -1
  153. package/lib/style/css/bootstrap/badges.less +0 -12
  154. package/lib/style/css/bootstrap/dropdowns.less +13 -13
  155. package/lib/style/css/bootstrap/type.less +11 -4
  156. package/lib/style/css/rio-theme/badges.less +48 -1
  157. package/lib/style/css/rio-theme/button-groups.less +1 -1
  158. package/lib/style/css/rio-theme/buttons.less +58 -16
  159. package/lib/style/css/rio-theme/carousel.less +1 -1
  160. package/lib/style/css/rio-theme/dropdowns.less +6 -26
  161. package/lib/style/css/rio-theme/navbar.less +46 -3
  162. package/lib/style/css/rio-theme/navs.less +19 -0
  163. package/lib/style/css/rio-theme/pagination.less +1 -1
  164. package/lib/style/css/utils/_imports.less +82 -0
  165. package/lib/style/css/utils/animations/translate.less +4 -1
  166. package/lib/style/css/utils/responsive/border.less +27 -19
  167. package/lib/style/css/utils/responsive/display.less +2 -0
  168. package/lib/style/css/utils/responsive/grid.less +6 -0
  169. package/lib/style/css/utils/responsive/sizing.less +1 -1
  170. package/lib/style/css/utils/text.less +3 -0
  171. package/lib/style/fonts/rioglyph/rioglyph.less +74 -14
  172. package/lib/style/fonts/rioglyph/rioglyph.svg +106 -34
  173. package/lib/style/fonts/rioglyph/rioglyph.ttf +0 -0
  174. package/lib/style/fonts/rioglyph/rioglyph.woff +0 -0
  175. package/lib/types.ts +139 -22
  176. package/lib/utils/SortUtils.js +54 -0
  177. package/lib/utils/buttonEffect.js +68 -0
  178. package/lib/utils/deviceUtils.js +1 -5
  179. package/lib/utils/logDeprecatedWarnings.js +1 -1
  180. package/lib/utils/logPropError.js +1 -1
  181. package/lib/utils/routeUtils.js +7 -6
  182. package/lib/utils/scrollItemIntoView.js +1 -1
  183. package/lib/version.json +1 -1
  184. package/package.json +73 -75
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ Object.defineProperty(exports, "default", {
9
+ enumerable: true,
10
+ get: function get() {
11
+ return _useRenderCount2.default;
12
+ }
13
+ });
14
+
15
+ var _useRenderCount2 = _interopRequireDefault(require("../hooks/useRenderCount"));
@@ -0,0 +1,4 @@
1
+ declare module '@rio-cloud/rio-uikit/lib/es/useSessionStorage' {
2
+ import { UseSessionStorage } from '../types';
3
+ export default UseSessionStorage;
4
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "default", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _useStorage.useSessionStorage;
10
+ }
11
+ });
12
+
13
+ var _useStorage = require("../hooks/useStorage");
@@ -0,0 +1,4 @@
1
+ declare module '@rio-cloud/rio-uikit/lib/es/useStateWithValidation' {
2
+ import { UseStateWithValidation } from '../types';
3
+ export default UseStateWithValidation;
4
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ Object.defineProperty(exports, "default", {
9
+ enumerable: true,
10
+ get: function get() {
11
+ return _useStateWithValidation2.default;
12
+ }
13
+ });
14
+
15
+ var _useStateWithValidation2 = _interopRequireDefault(require("../hooks/useStateWithValidation"));
@@ -0,0 +1,4 @@
1
+ declare module '@rio-cloud/rio-uikit/lib/es/useTimeout' {
2
+ import { UseTimeout } from '../types';
3
+ export default UseTimeout;
4
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ Object.defineProperty(exports, "default", {
9
+ enumerable: true,
10
+ get: function get() {
11
+ return _useTimeout2.default;
12
+ }
13
+ });
14
+
15
+ var _useTimeout2 = _interopRequireDefault(require("../hooks/useTimeout"));
@@ -0,0 +1,4 @@
1
+ declare module '@rio-cloud/rio-uikit/lib/es/useWindowResize' {
2
+ import { UseWindowResize } from '../types';
3
+ export default UseWindowResize;
4
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ Object.defineProperty(exports, "default", {
9
+ enumerable: true,
10
+ get: function get() {
11
+ return _useWindowResize2.default;
12
+ }
13
+ });
14
+
15
+ var _useWindowResize2 = _interopRequireDefault(require("../hooks/useWindowResize"));
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = useDebugInfo;
9
+
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ var _react = require("react");
13
+
14
+ var _useRenderCount = _interopRequireDefault(require("./useRenderCount"));
15
+
16
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
17
+
18
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
19
+
20
+ var logStyle = ["color: #4c5667", "background-color: #e5ebf0", "padding: 2px 4px", "border-radius: 2px"].join(";");
21
+
22
+ function useDebugInfo(componentName, props) {
23
+ var renderCount = (0, _useRenderCount.default)();
24
+ var changedProps = (0, _react.useRef)({});
25
+ var previousProps = (0, _react.useRef)(props);
26
+ var lastRenderTimestamp = (0, _react.useRef)(Date.now());
27
+ var propKeys = Object.keys(_objectSpread(_objectSpread({}, props), previousProps));
28
+ changedProps.current = propKeys.reduce(function (obj, key) {
29
+ if (props[key] === previousProps.current[key]) {
30
+ return obj;
31
+ }
32
+
33
+ return _objectSpread(_objectSpread({}, obj), {}, (0, _defineProperty2.default)({}, key, {
34
+ previous: previousProps.current[key],
35
+ current: props[key]
36
+ }));
37
+ }, {});
38
+ var info = {
39
+ renderCount: renderCount,
40
+ changedProps: changedProps.current,
41
+ timeSinceLastRender: Date.now() - lastRenderTimestamp.current,
42
+ lastRenderTimestamp: lastRenderTimestamp.current
43
+ };
44
+ (0, _react.useEffect)(function () {
45
+ previousProps.current = props;
46
+ lastRenderTimestamp.current = Date.now();
47
+
48
+ if (console) {
49
+ console.groupCollapsed("%c[debug-info] ".concat(componentName), logStyle);
50
+ console.log(info);
51
+ console.groupEnd();
52
+ }
53
+ });
54
+ return info;
55
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = useInterval;
7
+
8
+ var _react = require("react");
9
+
10
+ // See https://overreacted.io/making-setinterval-declarative-with-react-hooks/
11
+ function useInterval(callback, delay) {
12
+ var intervalRef = (0, _react.useRef)(null);
13
+ var savedCallback = (0, _react.useRef)(callback);
14
+ (0, _react.useEffect)(function () {
15
+ savedCallback.current = callback;
16
+ }, [callback]);
17
+ (0, _react.useEffect)(function () {
18
+ var tick = function tick() {
19
+ return savedCallback.current();
20
+ };
21
+
22
+ if (typeof delay === 'number') {
23
+ intervalRef.current = window.setInterval(tick, delay);
24
+ return function () {
25
+ return window.clearInterval(intervalRef.current);
26
+ };
27
+ }
28
+ }, [delay]);
29
+ return intervalRef;
30
+ }
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = useOnScreen;
9
+
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+
12
+ var _react = require("react");
13
+
14
+ // Inspired by https://github.com/WebDevSimplified/useful-custom-react-hooks/blob/main/src/14-useOnScreen/useOnScreen.js
15
+ function useOnScreen(ref) {
16
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
17
+ rootMargin: '0px'
18
+ };
19
+
20
+ var _useState = (0, _react.useState)(false),
21
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
22
+ isVisible = _useState2[0],
23
+ setIsVisible = _useState2[1];
24
+
25
+ (0, _react.useEffect)(function () {
26
+ if (!ref.current) {
27
+ return;
28
+ }
29
+
30
+ var observer = new IntersectionObserver(function (_ref) {
31
+ var _ref2 = (0, _slicedToArray2.default)(_ref, 1),
32
+ entry = _ref2[0];
33
+
34
+ return setIsVisible(entry.isIntersecting);
35
+ }, options);
36
+ observer.observe(ref.current);
37
+ return function () {
38
+ if (!ref.current) {
39
+ return;
40
+ }
41
+
42
+ observer.unobserve(ref.current);
43
+ };
44
+ }, [ref.current, options]);
45
+ return isVisible;
46
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = useOnlineStatus;
9
+
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+
12
+ var _react = require("react");
13
+
14
+ var _useEvent = _interopRequireDefault(require("./useEvent"));
15
+
16
+ // Inspired by https://github.com/WebDevSimplified/useful-custom-react-hooks/blob/main/src/26-useOnlineStatus/useOnlineStatus.js
17
+ function useOnlineStatus() {
18
+ var _useState = (0, _react.useState)(navigator.onLine),
19
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
20
+ online = _useState2[0],
21
+ setOnline = _useState2[1];
22
+
23
+ (0, _useEvent.default)('online', function () {
24
+ return setOnline(navigator.onLine);
25
+ }, false, window);
26
+ (0, _useEvent.default)('offline', function () {
27
+ return setOnline(navigator.onLine);
28
+ }, false, window);
29
+ return online;
30
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = useRenderCount;
7
+
8
+ var _react = require("react");
9
+
10
+ // Inspired by https://github.com/WebDevSimplified/useful-custom-react-hooks/blob/main/src/27-useRenderCount/useRenderCount.js
11
+ function useRenderCount() {
12
+ var count = (0, _react.useRef)(1);
13
+ (0, _react.useEffect)(function () {
14
+ count.current++;
15
+ });
16
+ return count.current;
17
+ }
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = useStateWithValidation;
9
+
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+
12
+ var _react = require("react");
13
+
14
+ function useStateWithValidation(validationFn, initialValue) {
15
+ var _useState = (0, _react.useState)(initialValue),
16
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
17
+ state = _useState2[0],
18
+ setState = _useState2[1];
19
+
20
+ var _useState3 = (0, _react.useState)(function () {
21
+ return validationFn(state);
22
+ }),
23
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
24
+ isValid = _useState4[0],
25
+ setIsValid = _useState4[1];
26
+
27
+ var onChange = (0, _react.useCallback)(function (nextState) {
28
+ var value = typeof nextState === 'function' ? nextState(state) : nextState;
29
+ setState(value);
30
+ setIsValid(validationFn(value));
31
+ }, [validationFn]);
32
+ return [state, onChange, isValid];
33
+ }
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.useLocalStorage = useLocalStorage;
9
+ exports.useSessionStorage = useSessionStorage;
10
+
11
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
+
13
+ var _react = require("react");
14
+
15
+ // Inspired by https://github.com/WebDevSimplified/useful-custom-react-hooks/blob/main/src/8-useStorage/useStorage.js
16
+ function useLocalStorage(key, defaultValue) {
17
+ return useStorage(key, defaultValue, window.localStorage);
18
+ }
19
+
20
+ function useSessionStorage(key, defaultValue) {
21
+ return useStorage(key, defaultValue, window.sessionStorage);
22
+ }
23
+
24
+ function useStorage(key, defaultValue, storageObject) {
25
+ var _useState = (0, _react.useState)(function () {
26
+ var jsonValue = storageObject.getItem(key);
27
+
28
+ if (jsonValue) {
29
+ return JSON.parse(jsonValue);
30
+ }
31
+
32
+ if (typeof defaultValue === 'function') {
33
+ return defaultValue();
34
+ }
35
+
36
+ return defaultValue;
37
+ }),
38
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
39
+ value = _useState2[0],
40
+ setValue = _useState2[1];
41
+
42
+ (0, _react.useEffect)(function () {
43
+ if (!value) {
44
+ return storageObject.removeItem(key);
45
+ }
46
+
47
+ storageObject.setItem(key, JSON.stringify(value));
48
+ }, [key, value, storageObject]);
49
+ var remove = (0, _react.useCallback)(function () {
50
+ setValue(undefined);
51
+ }, []);
52
+ return [value, setValue, remove];
53
+ }
@@ -7,21 +7,24 @@ exports.default = useTimeout;
7
7
 
8
8
  var _react = require("react");
9
9
 
10
+ // See www.joshwcomeau.com/snippets/react-hooks/use-timeout/
10
11
  function useTimeout(callback, delay) {
12
+ var timeoutRef = (0, _react.useRef)(null);
11
13
  var savedCallback = (0, _react.useRef)(callback);
12
14
  (0, _react.useEffect)(function () {
13
15
  savedCallback.current = callback;
14
16
  }, [callback]);
15
17
  (0, _react.useEffect)(function () {
16
- function tick() {
17
- savedCallback.current();
18
- }
18
+ var tick = function tick() {
19
+ return savedCallback.current();
20
+ };
19
21
 
20
- if (delay !== null) {
21
- var id = setTimeout(tick, delay);
22
+ if (typeof delay === 'number') {
23
+ timeoutRef.current = window.setTimeout(tick, delay);
22
24
  return function () {
23
- return clearTimeout(id);
25
+ return window.clearTimeout(timeoutRef.current);
24
26
  };
25
27
  }
26
28
  }, [delay]);
29
+ return timeoutRef;
27
30
  }