@koine/react 1.0.87 → 1.0.90

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 (51) hide show
  1. package/Autocomplete/AutocompleteMui.d.ts +1 -1
  2. package/Calendar/CalendarDaygridNav.d.ts +1 -1
  3. package/Calendar/CalendarDaygridTable.d.ts +1 -1
  4. package/Carousel/CarouselCss.d.ts +1 -6
  5. package/Details/Details.d.ts +1 -283
  6. package/Dialog/DialogMui.d.ts +1 -298
  7. package/Dialog/css/bare.d.ts +1 -298
  8. package/Dialog/m/bare.d.ts +1 -298
  9. package/Dialog/sc/bare.d.ts +1 -298
  10. package/Dialog/sc/framer.d.ts +1 -298
  11. package/Dialog/sc/framerMaterial.d.ts +1 -298
  12. package/Dialog/sc/material.d.ts +1 -298
  13. package/Dialog/tw/bare.d.ts +7 -304
  14. package/Dialog/tw/elegant.d.ts +7 -304
  15. package/Dialog/tw/framer.d.ts +3 -300
  16. package/Dialog/tw/framerMaterial.d.ts +5 -302
  17. package/Dialog/tw/material.d.ts +7 -304
  18. package/Form/Form.d.ts +2 -28
  19. package/Form/sc/bare.d.ts +2 -27
  20. package/Forms/Checkbox/Checkbox.d.ts +1 -1
  21. package/Forms/Field/FieldControl.d.ts +1 -1
  22. package/Forms/Input/Input.d.ts +1 -1
  23. package/Forms/Password/Password.d.ts +1 -1
  24. package/Forms/Radio/Radio.d.ts +1 -1
  25. package/Forms/Switch/Switch.d.ts +1 -1
  26. package/MenuItem/useMenuItem.d.ts +1 -1
  27. package/Tabs/TabsMui.d.ts +1 -279
  28. package/Tabs/tw/bare.d.ts +1 -279
  29. package/Tabs/tw/material.d.ts +7 -285
  30. package/helpers/createUseMediaQueryWidth.d.ts +6 -0
  31. package/helpers/createUseMediaQueryWidth.js +169 -0
  32. package/helpers/index.d.ts +1 -0
  33. package/helpers/index.js +1 -0
  34. package/helpers/mergeRefs.d.ts +3 -0
  35. package/helpers/mergeRefs.js +13 -0
  36. package/hooks/index.d.ts +3 -1
  37. package/hooks/index.js +3 -1
  38. package/hooks/useFixedOffset.d.ts +8 -0
  39. package/hooks/useFixedOffset.js +50 -0
  40. package/hooks/useMeasure.d.ts +27 -0
  41. package/hooks/useMeasure.js +163 -0
  42. package/hooks/useSmoothScroll.d.ts +2 -0
  43. package/hooks/useSmoothScroll.js +26 -0
  44. package/node/{hooks/useMediaQueryWidthCreator.js → helpers/createUseMediaQueryWidth.js} +4 -4
  45. package/node/helpers/index.js +1 -0
  46. package/node/helpers/mergeRefs.js +17 -0
  47. package/node/hooks/index.js +3 -1
  48. package/node/hooks/useFixedOffset.js +54 -0
  49. package/node/hooks/useMeasure.js +167 -0
  50. package/node/hooks/useSmoothScroll.js +30 -0
  51. package/package.json +10 -10
@@ -0,0 +1,167 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useMeasure = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var react_1 = require("react");
6
+ var utils_1 = require("@koine/utils");
7
+ var dom_1 = require("@koine/dom");
8
+ var observer;
9
+ // Adds native resize listener to window
10
+ function useOnWindowResize(onWindowResize) {
11
+ (0, react_1.useEffect)(function () {
12
+ var listener = (0, dom_1.listenResize)(onWindowResize);
13
+ return listener;
14
+ }, [onWindowResize]);
15
+ }
16
+ function useOnWindowScroll(onScroll, enabled) {
17
+ (0, react_1.useEffect)(function () {
18
+ if (enabled) {
19
+ var listener = (0, dom_1.listenScroll)(onScroll);
20
+ return listener;
21
+ }
22
+ return function () { return 0; };
23
+ }, [onScroll, enabled]);
24
+ }
25
+ // Returns a list of scroll offsets
26
+ function findScrollContainers(element) {
27
+ var result = [];
28
+ if (!element || element === document.body)
29
+ return result;
30
+ var _a = window.getComputedStyle(element), overflow = _a.overflow, overflowX = _a.overflowX, overflowY = _a.overflowY;
31
+ if ([overflow, overflowX, overflowY].some(function (prop) { return prop === "auto" || prop === "scroll"; }))
32
+ result.push(element);
33
+ return tslib_1.__spreadArray(tslib_1.__spreadArray([], result, true), findScrollContainers(element.parentElement), true);
34
+ }
35
+ var keys = [
36
+ "x",
37
+ "y",
38
+ "top",
39
+ "bottom",
40
+ "left",
41
+ "right",
42
+ "width",
43
+ "height",
44
+ ];
45
+ var areBoundsEqual = function (a, b) {
46
+ return keys.every(function (key) { return a[key] === b[key]; });
47
+ };
48
+ /**
49
+ * Use measure hook
50
+ *
51
+ * @borrows [pmndrs/react-use-measure](https://github.com/pmndrs/react-use-measure)
52
+ */
53
+ function useMeasure(options) {
54
+ var _a = (options || {}).scroll /* offsetSize = false */, scroll = _a === void 0 ? false : _a /* offsetSize = false */;
55
+ var _b = (0, react_1.useState)({
56
+ left: 0,
57
+ top: 0,
58
+ width: 0,
59
+ height: 0,
60
+ bottom: 0,
61
+ right: 0,
62
+ x: 0,
63
+ y: 0,
64
+ }), bounds = _b[0], setBounds = _b[1];
65
+ // keep all state in a ref
66
+ var state = (0, react_1.useRef)([
67
+ // element
68
+ null,
69
+ // scrollContainers
70
+ null,
71
+ // resizeObserver
72
+ null,
73
+ // lastBounds
74
+ bounds,
75
+ ]);
76
+ // make sure to update state only as long as the component is truly mounted
77
+ var mounted = (0, react_1.useRef)(false);
78
+ (0, react_1.useEffect)(function () {
79
+ mounted.current = true;
80
+ return function () { return void (mounted.current = false); };
81
+ }, []);
82
+ // memoize handlers, so event-listeners know when they should update
83
+ var _c = (0, react_1.useMemo)(function () {
84
+ var callback = function () {
85
+ var _args = [];
86
+ for (var _i = 0; _i < arguments.length; _i++) {
87
+ _args[_i] = arguments[_i];
88
+ }
89
+ var _a = state.current, element = _a[0], lastBounds = _a[3];
90
+ if (!element)
91
+ return;
92
+ var size = element.getBoundingClientRect();
93
+ // if (element instanceof HTMLElement && offsetSize) {
94
+ // size.height = element.offsetHeight;
95
+ // size.width = element.offsetWidth;
96
+ // }
97
+ Object.freeze(size);
98
+ if (mounted.current && !areBoundsEqual(lastBounds, size)) {
99
+ state.current[3] = size;
100
+ setBounds(size);
101
+ }
102
+ };
103
+ var debouncedCallback = (0, utils_1.debounce)(callback);
104
+ return [callback, debouncedCallback, debouncedCallback];
105
+ }, [setBounds /* , offsetSize */]), forceRefresh = _c[0] /* resizeChange */, scrollChange = _c[2];
106
+ // cleanup current scroll-listeners / observers
107
+ function removeListeners() {
108
+ var _a = state.current, scrollContainers = _a[1], resizeObserver = _a[2];
109
+ if (scrollContainers) {
110
+ scrollContainers.forEach(function (element) {
111
+ return (0, dom_1.off)(element, "scroll", scrollChange);
112
+ });
113
+ state.current[1] = null;
114
+ }
115
+ if (resizeObserver) {
116
+ resizeObserver.disconnect();
117
+ state.current[2] = null;
118
+ }
119
+ }
120
+ // add scroll-listeners / observers
121
+ function addListeners() {
122
+ var _a = state.current, element = _a[0], scrollContainers = _a[1];
123
+ if (!element)
124
+ return;
125
+ if (!observer && ResizeObserver) {
126
+ observer = new ResizeObserver(scrollChange);
127
+ state.current[2] = observer;
128
+ observer.observe(element);
129
+ if (scroll && scrollContainers) {
130
+ scrollContainers.forEach(function (scrollContainer) {
131
+ return (0, dom_1.on)(scrollContainer, "scroll", scrollChange, {
132
+ capture: true,
133
+ passive: true,
134
+ });
135
+ });
136
+ }
137
+ }
138
+ }
139
+ // the ref we expose to the user
140
+ var ref = function (node) {
141
+ if (!node || node === state.current[0])
142
+ return;
143
+ removeListeners();
144
+ state.current[0] = node;
145
+ state.current[1] = findScrollContainers(node);
146
+ addListeners();
147
+ };
148
+ // add general event listeners
149
+ useOnWindowScroll(forceRefresh, Boolean(scroll));
150
+ useOnWindowResize(forceRefresh);
151
+ // respond to changes that are relevant for the listeners
152
+ (0, react_1.useEffect)(function () {
153
+ removeListeners();
154
+ addListeners();
155
+ // eslint-disable-next-line react-hooks/exhaustive-deps
156
+ }, [scroll /* , scrollChange, resizeChange */]);
157
+ (0, react_1.useEffect)(function () {
158
+ // operate on mount, @kuus on the original version there is no call on mount?
159
+ forceRefresh();
160
+ // remove all listeners when the components unmounts
161
+ return removeListeners;
162
+ // eslint-disable-next-line react-hooks/exhaustive-deps
163
+ }, []);
164
+ return [ref, bounds, forceRefresh];
165
+ }
166
+ exports.useMeasure = useMeasure;
167
+ exports.default = useMeasure;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useSmoothScroll = void 0;
4
+ var react_1 = require("react");
5
+ var utils_1 = require("@koine/utils");
6
+ var dom_1 = require("@koine/dom");
7
+ var useFixedOffset_1 = require("./useFixedOffset");
8
+ function useSmoothScroll() {
9
+ var fixedOffset = (0, useFixedOffset_1.useFixedOffset)();
10
+ var scroll = (0, react_1.useCallback)(function (to, offset, callback) {
11
+ if (offset === void 0) { offset = 0; }
12
+ var top = undefined;
13
+ if ((0, utils_1.isNumber)(to)) {
14
+ top = to;
15
+ }
16
+ else if (to) {
17
+ var el = document.getElementById(to);
18
+ if (el) {
19
+ top = el.getBoundingClientRect().top;
20
+ }
21
+ }
22
+ if ((0, utils_1.isNumber)(top)) {
23
+ top = top + window.scrollY - (fixedOffset.current + offset);
24
+ (0, dom_1.scrollTo)(top, callback);
25
+ }
26
+ }, [fixedOffset]);
27
+ return scroll;
28
+ }
29
+ exports.useSmoothScroll = useSmoothScroll;
30
+ exports.default = useSmoothScroll;
package/package.json CHANGED
@@ -4,25 +4,25 @@
4
4
  "main": "./node/index.js",
5
5
  "typings": "./index.d.ts",
6
6
  "dependencies": {
7
- "styled-components": "^5.3.5",
8
- "framer-motion": "^7.2.1",
7
+ "styled-components": "^5.3.6",
8
+ "framer-motion": "^7.5.3",
9
9
  "react": "^18.2.0",
10
- "@mui/base": "^5.0.0-alpha.95",
11
- "@koine/utils": "1.0.87",
10
+ "@mui/base": "^5.0.0-alpha.101",
11
+ "@koine/utils": "1.0.90",
12
12
  "ts-debounce": "^4.0.0",
13
- "date-fns-tz": "^1.3.7",
14
13
  "react-icons": "^4.4.0",
15
- "date-fns": "^2.29.2",
14
+ "date-fns": "^2.29.3",
16
15
  "react-swipeable": "^7.0.0",
17
- "@tiptap/react": "^2.0.0-beta.115",
18
- "@tiptap/starter-kit": "^2.0.0-beta.192",
16
+ "@tiptap/react": "^2.0.0-beta.199",
17
+ "@tiptap/starter-kit": "^2.0.0-beta.199",
19
18
  "@kuus/yup": "^1.0.0-beta.4",
20
- "react-hook-form": "^7.34.2",
19
+ "react-hook-form": "^7.37.0",
20
+ "@koine/dom": "1.0.90",
21
21
  "react-popper": "^2.3.0",
22
22
  "tslib": "^2.4.0"
23
23
  },
24
24
  "peerDependencies": {},
25
- "version": "1.0.87",
25
+ "version": "1.0.90",
26
26
  "module": "./index.js",
27
27
  "types": "./index.d.ts"
28
28
  }