@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.
- package/Autocomplete/AutocompleteMui.d.ts +1 -1
- package/Calendar/CalendarDaygridNav.d.ts +1 -1
- package/Calendar/CalendarDaygridTable.d.ts +1 -1
- package/Carousel/CarouselCss.d.ts +1 -6
- package/Details/Details.d.ts +1 -283
- package/Dialog/DialogMui.d.ts +1 -298
- package/Dialog/css/bare.d.ts +1 -298
- package/Dialog/m/bare.d.ts +1 -298
- package/Dialog/sc/bare.d.ts +1 -298
- package/Dialog/sc/framer.d.ts +1 -298
- package/Dialog/sc/framerMaterial.d.ts +1 -298
- package/Dialog/sc/material.d.ts +1 -298
- package/Dialog/tw/bare.d.ts +7 -304
- package/Dialog/tw/elegant.d.ts +7 -304
- package/Dialog/tw/framer.d.ts +3 -300
- package/Dialog/tw/framerMaterial.d.ts +5 -302
- package/Dialog/tw/material.d.ts +7 -304
- package/Form/Form.d.ts +2 -28
- package/Form/sc/bare.d.ts +2 -27
- package/Forms/Checkbox/Checkbox.d.ts +1 -1
- package/Forms/Field/FieldControl.d.ts +1 -1
- package/Forms/Input/Input.d.ts +1 -1
- package/Forms/Password/Password.d.ts +1 -1
- package/Forms/Radio/Radio.d.ts +1 -1
- package/Forms/Switch/Switch.d.ts +1 -1
- package/MenuItem/useMenuItem.d.ts +1 -1
- package/Tabs/TabsMui.d.ts +1 -279
- package/Tabs/tw/bare.d.ts +1 -279
- package/Tabs/tw/material.d.ts +7 -285
- package/helpers/createUseMediaQueryWidth.d.ts +6 -0
- package/helpers/createUseMediaQueryWidth.js +169 -0
- package/helpers/index.d.ts +1 -0
- package/helpers/index.js +1 -0
- package/helpers/mergeRefs.d.ts +3 -0
- package/helpers/mergeRefs.js +13 -0
- package/hooks/index.d.ts +3 -1
- package/hooks/index.js +3 -1
- package/hooks/useFixedOffset.d.ts +8 -0
- package/hooks/useFixedOffset.js +50 -0
- package/hooks/useMeasure.d.ts +27 -0
- package/hooks/useMeasure.js +163 -0
- package/hooks/useSmoothScroll.d.ts +2 -0
- package/hooks/useSmoothScroll.js +26 -0
- package/node/{hooks/useMediaQueryWidthCreator.js → helpers/createUseMediaQueryWidth.js} +4 -4
- package/node/helpers/index.js +1 -0
- package/node/helpers/mergeRefs.js +17 -0
- package/node/hooks/index.js +3 -1
- package/node/hooks/useFixedOffset.js +54 -0
- package/node/hooks/useMeasure.js +167 -0
- package/node/hooks/useSmoothScroll.js +30 -0
- 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.
|
|
8
|
-
"framer-motion": "^7.
|
|
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.
|
|
11
|
-
"@koine/utils": "1.0.
|
|
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.
|
|
14
|
+
"date-fns": "^2.29.3",
|
|
16
15
|
"react-swipeable": "^7.0.0",
|
|
17
|
-
"@tiptap/react": "^2.0.0-beta.
|
|
18
|
-
"@tiptap/starter-kit": "^2.0.0-beta.
|
|
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.
|
|
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.
|
|
25
|
+
"version": "1.0.90",
|
|
26
26
|
"module": "./index.js",
|
|
27
27
|
"types": "./index.d.ts"
|
|
28
28
|
}
|