@mui/utils 9.0.0 → 9.1.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.
- package/CHANGELOG.md +216 -1245
- package/LICENSE +1 -1
- package/contains/contains.d.mts +14 -0
- package/contains/contains.d.ts +14 -0
- package/contains/contains.js +42 -0
- package/contains/contains.mjs +36 -0
- package/contains/index.d.mts +1 -0
- package/contains/index.d.ts +1 -0
- package/contains/index.js +13 -0
- package/contains/index.mjs +1 -0
- package/elementTypeAcceptingRef/elementTypeAcceptingRef.js +1 -0
- package/elementTypeAcceptingRef/elementTypeAcceptingRef.mjs +1 -0
- package/extractEventHandlers/extractEventHandlers.d.mts +1 -2
- package/extractEventHandlers/extractEventHandlers.d.ts +1 -2
- package/extractEventHandlers/extractEventHandlers.js +8 -5
- package/extractEventHandlers/extractEventHandlers.mjs +7 -5
- package/fastDeepAssign/fastDeepAssign.js +6 -1
- package/fastDeepAssign/fastDeepAssign.mjs +6 -1
- package/getEventTarget/getEventTarget.d.mts +14 -0
- package/getEventTarget/getEventTarget.d.ts +14 -0
- package/getEventTarget/getEventTarget.js +22 -0
- package/getEventTarget/getEventTarget.mjs +16 -0
- package/getEventTarget/index.d.mts +1 -0
- package/getEventTarget/index.d.ts +1 -0
- package/getEventTarget/index.js +13 -0
- package/getEventTarget/index.mjs +1 -0
- package/index.d.mts +5 -0
- package/index.d.ts +5 -0
- package/index.js +42 -2
- package/index.mjs +6 -1
- package/isEventHandler/index.d.mts +1 -0
- package/isEventHandler/index.d.ts +1 -0
- package/isEventHandler/index.js +13 -0
- package/isEventHandler/index.mjs +1 -0
- package/isEventHandler/isEventHandler.d.mts +1 -0
- package/isEventHandler/isEventHandler.d.ts +1 -0
- package/isEventHandler/isEventHandler.js +13 -0
- package/isEventHandler/isEventHandler.mjs +7 -0
- package/isHostComponent/isHostComponent.d.mts +1 -1
- package/isHostComponent/isHostComponent.d.ts +1 -1
- package/package.json +72 -2
- package/resolveProps/resolveProps.js +1 -1
- package/resolveProps/resolveProps.mjs +1 -1
- package/useForcedRerendering/index.d.mts +1 -0
- package/useForcedRerendering/index.d.ts +1 -0
- package/useForcedRerendering/index.js +13 -0
- package/useForcedRerendering/index.mjs +1 -0
- package/useForcedRerendering/useForcedRerendering.d.mts +6 -0
- package/useForcedRerendering/useForcedRerendering.d.ts +6 -0
- package/useForcedRerendering/useForcedRerendering.js +20 -0
- package/useForcedRerendering/useForcedRerendering.mjs +15 -0
- package/useIsFocusVisible/useIsFocusVisible.js +1 -1
- package/useIsFocusVisible/useIsFocusVisible.mjs +1 -1
- package/useRovingTabIndex/useRovingTabIndex.js +3 -3
- package/useRovingTabIndex/useRovingTabIndex.mjs +3 -3
- package/useValueAsRef/index.d.mts +1 -0
- package/useValueAsRef/index.d.ts +1 -0
- package/useValueAsRef/index.js +13 -0
- package/useValueAsRef/index.mjs +1 -0
- package/useValueAsRef/useValueAsRef.d.mts +14 -0
- package/useValueAsRef/useValueAsRef.d.ts +14 -0
- package/useValueAsRef/useValueAsRef.js +35 -0
- package/useValueAsRef/useValueAsRef.mjs +29 -0
- package/visuallyHidden/visuallyHidden.d.mts +2 -1
- package/visuallyHidden/visuallyHidden.d.ts +2 -1
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// Brought from [Base UI](https://github.com/mui/base-ui/blob/master/packages/react/src/merge-props/mergeProps.ts#L119)
|
|
2
|
+
// Use it directly from Base UI once it's a package dependency.
|
|
3
|
+
export default function isEventHandler(key, value) {
|
|
4
|
+
// This approach is more efficient than using a regex.
|
|
5
|
+
const thirdCharCode = key.charCodeAt(2);
|
|
6
|
+
return key[0] === 'o' && key[1] === 'n' && thirdCharCode >= 65 /* A */ && thirdCharCode <= 90 /* Z */ && typeof value === 'function';
|
|
7
|
+
}
|
|
@@ -2,5 +2,5 @@ import * as React from 'react';
|
|
|
2
2
|
/**
|
|
3
3
|
* Determines if a given element is a DOM element name (i.e. not a React component).
|
|
4
4
|
*/
|
|
5
|
-
declare function isHostComponent(element: React.ElementType): element is "symbol" | "object" | "search" | "big" | "link" | "small" | "sub" | "sup" | "map" | "filter" | "input" | "set" | "base" | "code" | "data" | "time" | "
|
|
5
|
+
declare function isHostComponent(element: React.ElementType): element is "symbol" | "object" | "search" | "big" | "link" | "small" | "sub" | "sup" | "map" | "filter" | "input" | "set" | "base" | "code" | "data" | "time" | "source" | "progress" | "stop" | "track" | "button" | "address" | "center" | "view" | "clipPath" | "marker" | "mask" | "a" | "abbr" | "area" | "article" | "aside" | "audio" | "b" | "bdi" | "bdo" | "blockquote" | "body" | "br" | "canvas" | "caption" | "cite" | "col" | "colgroup" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "ins" | "kbd" | "label" | "legend" | "li" | "main" | "mark" | "menu" | "meta" | "meter" | "nav" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "picture" | "pre" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "script" | "section" | "select" | "slot" | "span" | "strong" | "style" | "summary" | "table" | "tbody" | "td" | "template" | "textarea" | "tfoot" | "th" | "thead" | "title" | "tr" | "u" | "ul" | "var" | "video" | "wbr" | "keygen" | "menuitem" | "param" | "animate" | "animateMotion" | "animateTransform" | "circle" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "svg" | "switch" | "text" | "textPath" | "tspan" | "use" | "noindex" | "webview";
|
|
6
6
|
export default isHostComponent;
|
|
@@ -2,5 +2,5 @@ import * as React from 'react';
|
|
|
2
2
|
/**
|
|
3
3
|
* Determines if a given element is a DOM element name (i.e. not a React component).
|
|
4
4
|
*/
|
|
5
|
-
declare function isHostComponent(element: React.ElementType): element is "symbol" | "object" | "search" | "big" | "link" | "small" | "sub" | "sup" | "map" | "filter" | "input" | "set" | "base" | "code" | "data" | "time" | "
|
|
5
|
+
declare function isHostComponent(element: React.ElementType): element is "symbol" | "object" | "search" | "big" | "link" | "small" | "sub" | "sup" | "map" | "filter" | "input" | "set" | "base" | "code" | "data" | "time" | "source" | "progress" | "stop" | "track" | "button" | "address" | "center" | "view" | "clipPath" | "marker" | "mask" | "a" | "abbr" | "area" | "article" | "aside" | "audio" | "b" | "bdi" | "bdo" | "blockquote" | "body" | "br" | "canvas" | "caption" | "cite" | "col" | "colgroup" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "ins" | "kbd" | "label" | "legend" | "li" | "main" | "mark" | "menu" | "meta" | "meter" | "nav" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "picture" | "pre" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "script" | "section" | "select" | "slot" | "span" | "strong" | "style" | "summary" | "table" | "tbody" | "td" | "template" | "textarea" | "tfoot" | "th" | "thead" | "title" | "tr" | "u" | "ul" | "var" | "video" | "wbr" | "keygen" | "menuitem" | "param" | "animate" | "animateMotion" | "animateTransform" | "circle" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feDropShadow" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "metadata" | "mpath" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "svg" | "switch" | "text" | "textPath" | "tspan" | "use" | "noindex" | "webview";
|
|
6
6
|
export default isHostComponent;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mui/utils",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.1.0",
|
|
4
4
|
"author": "MUI Team",
|
|
5
5
|
"description": "Utility functions for React components.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"@types/prop-types": "^15.7.15",
|
|
29
29
|
"clsx": "^2.1.1",
|
|
30
30
|
"prop-types": "^15.8.1",
|
|
31
|
-
"react-is": "^19.2.
|
|
31
|
+
"react-is": "^19.2.6",
|
|
32
32
|
"@mui/types": "^9.0.0"
|
|
33
33
|
},
|
|
34
34
|
"peerDependencies": {
|
|
@@ -162,6 +162,20 @@
|
|
|
162
162
|
"default": "./composeClasses/index.mjs"
|
|
163
163
|
}
|
|
164
164
|
},
|
|
165
|
+
"./contains": {
|
|
166
|
+
"import": {
|
|
167
|
+
"types": "./contains/index.d.mts",
|
|
168
|
+
"default": "./contains/index.mjs"
|
|
169
|
+
},
|
|
170
|
+
"require": {
|
|
171
|
+
"types": "./contains/index.d.ts",
|
|
172
|
+
"default": "./contains/index.js"
|
|
173
|
+
},
|
|
174
|
+
"default": {
|
|
175
|
+
"types": "./contains/index.d.mts",
|
|
176
|
+
"default": "./contains/index.mjs"
|
|
177
|
+
}
|
|
178
|
+
},
|
|
165
179
|
"./createChainedFunction": {
|
|
166
180
|
"import": {
|
|
167
181
|
"types": "./createChainedFunction/index.d.mts",
|
|
@@ -372,6 +386,20 @@
|
|
|
372
386
|
"default": "./getDisplayName/index.mjs"
|
|
373
387
|
}
|
|
374
388
|
},
|
|
389
|
+
"./getEventTarget": {
|
|
390
|
+
"import": {
|
|
391
|
+
"types": "./getEventTarget/index.d.mts",
|
|
392
|
+
"default": "./getEventTarget/index.mjs"
|
|
393
|
+
},
|
|
394
|
+
"require": {
|
|
395
|
+
"types": "./getEventTarget/index.d.ts",
|
|
396
|
+
"default": "./getEventTarget/index.js"
|
|
397
|
+
},
|
|
398
|
+
"default": {
|
|
399
|
+
"types": "./getEventTarget/index.d.mts",
|
|
400
|
+
"default": "./getEventTarget/index.mjs"
|
|
401
|
+
}
|
|
402
|
+
},
|
|
375
403
|
"./getReactElementRef": {
|
|
376
404
|
"import": {
|
|
377
405
|
"types": "./getReactElementRef/index.d.mts",
|
|
@@ -442,6 +470,20 @@
|
|
|
442
470
|
"default": "./integerPropType/index.mjs"
|
|
443
471
|
}
|
|
444
472
|
},
|
|
473
|
+
"./isEventHandler": {
|
|
474
|
+
"import": {
|
|
475
|
+
"types": "./isEventHandler/index.d.mts",
|
|
476
|
+
"default": "./isEventHandler/index.mjs"
|
|
477
|
+
},
|
|
478
|
+
"require": {
|
|
479
|
+
"types": "./isEventHandler/index.d.ts",
|
|
480
|
+
"default": "./isEventHandler/index.js"
|
|
481
|
+
},
|
|
482
|
+
"default": {
|
|
483
|
+
"types": "./isEventHandler/index.d.mts",
|
|
484
|
+
"default": "./isEventHandler/index.mjs"
|
|
485
|
+
}
|
|
486
|
+
},
|
|
445
487
|
"./isFocusVisible": {
|
|
446
488
|
"import": {
|
|
447
489
|
"types": "./isFocusVisible/index.d.mts",
|
|
@@ -708,6 +750,20 @@
|
|
|
708
750
|
"default": "./useEventCallback/index.mjs"
|
|
709
751
|
}
|
|
710
752
|
},
|
|
753
|
+
"./useForcedRerendering": {
|
|
754
|
+
"import": {
|
|
755
|
+
"types": "./useForcedRerendering/index.d.mts",
|
|
756
|
+
"default": "./useForcedRerendering/index.mjs"
|
|
757
|
+
},
|
|
758
|
+
"require": {
|
|
759
|
+
"types": "./useForcedRerendering/index.d.ts",
|
|
760
|
+
"default": "./useForcedRerendering/index.js"
|
|
761
|
+
},
|
|
762
|
+
"default": {
|
|
763
|
+
"types": "./useForcedRerendering/index.d.mts",
|
|
764
|
+
"default": "./useForcedRerendering/index.mjs"
|
|
765
|
+
}
|
|
766
|
+
},
|
|
711
767
|
"./useForkRef": {
|
|
712
768
|
"import": {
|
|
713
769
|
"types": "./useForkRef/index.d.mts",
|
|
@@ -848,6 +904,20 @@
|
|
|
848
904
|
"default": "./useTimeout/index.mjs"
|
|
849
905
|
}
|
|
850
906
|
},
|
|
907
|
+
"./useValueAsRef": {
|
|
908
|
+
"import": {
|
|
909
|
+
"types": "./useValueAsRef/index.d.mts",
|
|
910
|
+
"default": "./useValueAsRef/index.mjs"
|
|
911
|
+
},
|
|
912
|
+
"require": {
|
|
913
|
+
"types": "./useValueAsRef/index.d.ts",
|
|
914
|
+
"default": "./useValueAsRef/index.js"
|
|
915
|
+
},
|
|
916
|
+
"default": {
|
|
917
|
+
"types": "./useValueAsRef/index.d.mts",
|
|
918
|
+
"default": "./useValueAsRef/index.mjs"
|
|
919
|
+
}
|
|
920
|
+
},
|
|
851
921
|
"./visuallyHidden": {
|
|
852
922
|
"import": {
|
|
853
923
|
"types": "./visuallyHidden/index.d.mts",
|
|
@@ -45,7 +45,7 @@ function resolveProps(defaultProps, props, mergeClassNameAndStyle = false) {
|
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
|
-
} else if (propName === 'className' && mergeClassNameAndStyle && props.className) {
|
|
48
|
+
} else if (propName === 'className' && mergeClassNameAndStyle && props.className !== undefined) {
|
|
49
49
|
output.className = (0, _clsx.default)(defaultProps?.className, props?.className);
|
|
50
50
|
} else if (propName === 'style' && mergeClassNameAndStyle && props.style) {
|
|
51
51
|
output.style = {
|
|
@@ -39,7 +39,7 @@ export default function resolveProps(defaultProps, props, mergeClassNameAndStyle
|
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
|
-
} else if (propName === 'className' && mergeClassNameAndStyle && props.className) {
|
|
42
|
+
} else if (propName === 'className' && mergeClassNameAndStyle && props.className !== undefined) {
|
|
43
43
|
output.className = clsx(defaultProps?.className, props?.className);
|
|
44
44
|
} else if (propName === 'style' && mergeClassNameAndStyle && props.style) {
|
|
45
45
|
output.style = {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from "./useForcedRerendering.mjs";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from "./useForcedRerendering.js";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
Object.defineProperty(exports, "default", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () {
|
|
10
|
+
return _useForcedRerendering.default;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
var _useForcedRerendering = _interopRequireDefault(require("./useForcedRerendering"));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from "./useForcedRerendering.mjs";
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
|
|
4
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = useForcedRerendering;
|
|
9
|
+
var React = _interopRequireWildcard(require("react"));
|
|
10
|
+
/**
|
|
11
|
+
* Copied from @base-ui/utils
|
|
12
|
+
*
|
|
13
|
+
* Returns a function that forces a rerender.
|
|
14
|
+
*/
|
|
15
|
+
function useForcedRerendering() {
|
|
16
|
+
const [, setState] = React.useState({});
|
|
17
|
+
return React.useCallback(() => {
|
|
18
|
+
setState({});
|
|
19
|
+
}, []);
|
|
20
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Copied from @base-ui/utils
|
|
7
|
+
*
|
|
8
|
+
* Returns a function that forces a rerender.
|
|
9
|
+
*/
|
|
10
|
+
export default function useForcedRerendering() {
|
|
11
|
+
const [, setState] = React.useState({});
|
|
12
|
+
return React.useCallback(() => {
|
|
13
|
+
setState({});
|
|
14
|
+
}, []);
|
|
15
|
+
}
|
|
@@ -134,7 +134,7 @@ function useIsFocusVisible() {
|
|
|
134
134
|
// checking against potential state variable does not suffice if we focus and blur synchronously.
|
|
135
135
|
// React wouldn't have time to trigger a re-render so `focusVisible` would be stale.
|
|
136
136
|
// Ideally we would adjust `isFocusVisible(event)` to look at `relatedTarget` for blur events.
|
|
137
|
-
// This doesn't work in
|
|
137
|
+
// This doesn't work in IE 11 due to https://github.com/facebook/react/issues/3751
|
|
138
138
|
// TODO: check again if React releases their internal changes to focus event handling (https://github.com/facebook/react/pull/19186).
|
|
139
139
|
if (isFocusVisibleRef.current) {
|
|
140
140
|
// To detect a tab/window switch, we look for a blur event followed
|
|
@@ -127,7 +127,7 @@ export default function useIsFocusVisible() {
|
|
|
127
127
|
// checking against potential state variable does not suffice if we focus and blur synchronously.
|
|
128
128
|
// React wouldn't have time to trigger a re-render so `focusVisible` would be stale.
|
|
129
129
|
// Ideally we would adjust `isFocusVisible(event)` to look at `relatedTarget` for blur events.
|
|
130
|
-
// This doesn't work in
|
|
130
|
+
// This doesn't work in IE 11 due to https://github.com/facebook/react/issues/3751
|
|
131
131
|
// TODO: check again if React releases their internal changes to focus event handling (https://github.com/facebook/react/pull/19186).
|
|
132
132
|
if (isFocusVisibleRef.current) {
|
|
133
133
|
// To detect a tab/window switch, we look for a blur event followed
|
|
@@ -36,10 +36,10 @@ function useRovingTabIndexRoot(params) {
|
|
|
36
36
|
wrap = true
|
|
37
37
|
} = params;
|
|
38
38
|
const [activeItemIdState, setActiveItemIdState] = React.useState(activeItemIdProp);
|
|
39
|
-
const
|
|
39
|
+
const [previousActiveItemIdProp, setPreviousActiveItemIdProp] = React.useState(activeItemIdProp);
|
|
40
40
|
let activeItemIdCandidate = activeItemIdState;
|
|
41
|
-
if (activeItemIdProp !==
|
|
42
|
-
|
|
41
|
+
if (activeItemIdProp !== previousActiveItemIdProp) {
|
|
42
|
+
setPreviousActiveItemIdProp(activeItemIdProp);
|
|
43
43
|
if (activeItemIdProp !== undefined && activeItemIdProp !== activeItemIdState) {
|
|
44
44
|
activeItemIdCandidate = activeItemIdProp;
|
|
45
45
|
setActiveItemIdState(activeItemIdProp);
|
|
@@ -27,10 +27,10 @@ export function useRovingTabIndexRoot(params) {
|
|
|
27
27
|
wrap = true
|
|
28
28
|
} = params;
|
|
29
29
|
const [activeItemIdState, setActiveItemIdState] = React.useState(activeItemIdProp);
|
|
30
|
-
const
|
|
30
|
+
const [previousActiveItemIdProp, setPreviousActiveItemIdProp] = React.useState(activeItemIdProp);
|
|
31
31
|
let activeItemIdCandidate = activeItemIdState;
|
|
32
|
-
if (activeItemIdProp !==
|
|
33
|
-
|
|
32
|
+
if (activeItemIdProp !== previousActiveItemIdProp) {
|
|
33
|
+
setPreviousActiveItemIdProp(activeItemIdProp);
|
|
34
34
|
if (activeItemIdProp !== undefined && activeItemIdProp !== activeItemIdState) {
|
|
35
35
|
activeItemIdCandidate = activeItemIdProp;
|
|
36
36
|
setActiveItemIdState(activeItemIdProp);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from "./useValueAsRef.mjs";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from "./useValueAsRef.js";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
Object.defineProperty(exports, "default", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () {
|
|
10
|
+
return _useValueAsRef.default;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
var _useValueAsRef = _interopRequireDefault(require("./useValueAsRef"));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from "./useValueAsRef.mjs";
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
interface ValueRef<T> {
|
|
2
|
+
current: T;
|
|
3
|
+
next: T;
|
|
4
|
+
effect: () => void;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Copied from `@base-ui/utils/useValueAsRef`.
|
|
8
|
+
*
|
|
9
|
+
* Stores the latest value in a stable ref. The ref updates after React commits,
|
|
10
|
+
* so effects and delayed callbacks can read the current value without depending
|
|
11
|
+
* on it and rerunning.
|
|
12
|
+
*/
|
|
13
|
+
export default function useValueAsRef<T>(value: T): ValueRef<T>;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
interface ValueRef<T> {
|
|
2
|
+
current: T;
|
|
3
|
+
next: T;
|
|
4
|
+
effect: () => void;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Copied from `@base-ui/utils/useValueAsRef`.
|
|
8
|
+
*
|
|
9
|
+
* Stores the latest value in a stable ref. The ref updates after React commits,
|
|
10
|
+
* so effects and delayed callbacks can read the current value without depending
|
|
11
|
+
* on it and rerunning.
|
|
12
|
+
*/
|
|
13
|
+
export default function useValueAsRef<T>(value: T): ValueRef<T>;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = useValueAsRef;
|
|
9
|
+
var _useEnhancedEffect = _interopRequireDefault(require("../useEnhancedEffect/useEnhancedEffect"));
|
|
10
|
+
var _useLazyRef = _interopRequireDefault(require("../useLazyRef/useLazyRef"));
|
|
11
|
+
/**
|
|
12
|
+
* Copied from `@base-ui/utils/useValueAsRef`.
|
|
13
|
+
*
|
|
14
|
+
* Stores the latest value in a stable ref. The ref updates after React commits,
|
|
15
|
+
* so effects and delayed callbacks can read the current value without depending
|
|
16
|
+
* on it and rerunning.
|
|
17
|
+
*/
|
|
18
|
+
function useValueAsRef(value) {
|
|
19
|
+
const latest = (0, _useLazyRef.default)(() => createValueRef(value)).current;
|
|
20
|
+
latest.next = value;
|
|
21
|
+
|
|
22
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps -- effect never changes; it reads latest.next.
|
|
23
|
+
(0, _useEnhancedEffect.default)(latest.effect);
|
|
24
|
+
return latest;
|
|
25
|
+
}
|
|
26
|
+
function createValueRef(value) {
|
|
27
|
+
const latest = {
|
|
28
|
+
current: value,
|
|
29
|
+
next: value,
|
|
30
|
+
effect: () => {
|
|
31
|
+
latest.current = latest.next;
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
return latest;
|
|
35
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import useEnhancedEffect from "../useEnhancedEffect/useEnhancedEffect.mjs";
|
|
4
|
+
import useLazyRef from "../useLazyRef/useLazyRef.mjs";
|
|
5
|
+
/**
|
|
6
|
+
* Copied from `@base-ui/utils/useValueAsRef`.
|
|
7
|
+
*
|
|
8
|
+
* Stores the latest value in a stable ref. The ref updates after React commits,
|
|
9
|
+
* so effects and delayed callbacks can read the current value without depending
|
|
10
|
+
* on it and rerunning.
|
|
11
|
+
*/
|
|
12
|
+
export default function useValueAsRef(value) {
|
|
13
|
+
const latest = useLazyRef(() => createValueRef(value)).current;
|
|
14
|
+
latest.next = value;
|
|
15
|
+
|
|
16
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps -- effect never changes; it reads latest.next.
|
|
17
|
+
useEnhancedEffect(latest.effect);
|
|
18
|
+
return latest;
|
|
19
|
+
}
|
|
20
|
+
function createValueRef(value) {
|
|
21
|
+
const latest = {
|
|
22
|
+
current: value,
|
|
23
|
+
next: value,
|
|
24
|
+
effect: () => {
|
|
25
|
+
latest.current = latest.next;
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
return latest;
|
|
29
|
+
}
|