@bigbinary/neeto-commons-frontend 4.13.93 → 4.13.94
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/README.md +1 -0
- package/dist/cjs/react-utils/index.js +3 -0
- package/dist/cjs/react-utils/index.js.map +1 -1
- package/dist/cjs/react-utils/usePrefersReducedMotion/constants.js +6 -0
- package/dist/cjs/react-utils/usePrefersReducedMotion/constants.js.map +1 -0
- package/dist/cjs/react-utils/usePrefersReducedMotion/index.js +12 -0
- package/dist/cjs/react-utils/usePrefersReducedMotion/index.js.map +1 -0
- package/dist/cjs/react-utils/usePrefersReducedMotion/usePrefersReducedMotion.js +46 -0
- package/dist/cjs/react-utils/usePrefersReducedMotion/usePrefersReducedMotion.js.map +1 -0
- package/dist/react-utils/index.js +2 -0
- package/dist/react-utils/index.js.map +1 -1
- package/dist/react-utils/usePrefersReducedMotion/constants.js +4 -0
- package/dist/react-utils/usePrefersReducedMotion/constants.js.map +1 -0
- package/dist/react-utils/usePrefersReducedMotion/index.js +6 -0
- package/dist/react-utils/usePrefersReducedMotion/index.js.map +1 -0
- package/dist/react-utils/usePrefersReducedMotion/usePrefersReducedMotion.js +44 -0
- package/dist/react-utils/usePrefersReducedMotion/usePrefersReducedMotion.js.map +1 -0
- package/package.json +1 -1
- package/react-utils.d.ts +65 -0
package/README.md
CHANGED
|
@@ -64,6 +64,7 @@ React utilities [↗](./docs/react/README.md)
|
|
|
64
64
|
- [useMutationWithInvalidation](./docs/react/hooks/useMutationWithInvalidation.md)
|
|
65
65
|
- [useFetchNeetoApps](./docs/react/hooks/useFetchNeetoApps.md)
|
|
66
66
|
- [usePersistedQuery](./docs/react/hooks/usePersistedQuery.md)
|
|
67
|
+
- [usePrefersReducedMotion](./docs/react/hooks/usePrefersReducedMotion.md)
|
|
67
68
|
- [useIsElementVisibleInDom](./docs/react/hooks/useIsElementVisibleInDom.md)
|
|
68
69
|
- [useStateWithDependency](./docs/react/hooks/useStateWithDependency.md)
|
|
69
70
|
- [useQueryParams](./docs/react/hooks/useQueryParams.md)
|
|
@@ -15,6 +15,7 @@ var reactUtils_useMutationWithInvalidation_useMutationWithInvalidation = require
|
|
|
15
15
|
var reactUtils_useOnClickOutside_useOnClickOutside = require('./useOnClickOutside/useOnClickOutside.js');
|
|
16
16
|
var reactUtils_usePersistedQuery_usePersistedQuery = require('./usePersistedQuery/usePersistedQuery.js');
|
|
17
17
|
var reactUtils_usePrevious_usePrevious = require('./usePrevious/usePrevious.js');
|
|
18
|
+
var reactUtils_usePrefersReducedMotion_usePrefersReducedMotion = require('./usePrefersReducedMotion/usePrefersReducedMotion.js');
|
|
18
19
|
var reactUtils_useQueryParams_useQueryParams = require('./useQueryParams/useQueryParams.js');
|
|
19
20
|
var reactUtils_useRegisterNavigationCheckpoint_useRegisterNavigationCheckpoint = require('./useRegisterNavigationCheckpoint/useRegisterNavigationCheckpoint.js');
|
|
20
21
|
var reactUtils_useStateWithDependency_useStateWithDependency = require('./useStateWithDependency/useStateWithDependency.js');
|
|
@@ -79,6 +80,7 @@ require('../lodash-yQg9l0eZ.js');
|
|
|
79
80
|
require('@bigbinary/neeto-time-zones');
|
|
80
81
|
require('ua-parser-js');
|
|
81
82
|
require('@tanstack/react-query');
|
|
83
|
+
require('./usePrefersReducedMotion/constants.js');
|
|
82
84
|
require('./useBreakpoints/utils.js');
|
|
83
85
|
require('./useColumnConfig/useConfigApi.js');
|
|
84
86
|
require('./useColumnConfig/api.js');
|
|
@@ -113,6 +115,7 @@ exports.useMutationWithInvalidation = reactUtils_useMutationWithInvalidation_use
|
|
|
113
115
|
exports.useOnClickOutside = reactUtils_useOnClickOutside_useOnClickOutside;
|
|
114
116
|
exports.usePersistedQuery = reactUtils_usePersistedQuery_usePersistedQuery;
|
|
115
117
|
exports.usePrevious = reactUtils_usePrevious_usePrevious;
|
|
118
|
+
exports.usePrefersReducedMotion = reactUtils_usePrefersReducedMotion_usePrefersReducedMotion;
|
|
116
119
|
exports.useQueryParams = reactUtils_useQueryParams_useQueryParams;
|
|
117
120
|
exports.useNavigationCheckpoints = reactUtils_useRegisterNavigationCheckpoint_useRegisterNavigationCheckpoint.useNavigationCheckpoints;
|
|
118
121
|
exports.useRegisterNavigationCheckpoint = reactUtils_useRegisterNavigationCheckpoint_useRegisterNavigationCheckpoint.default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../../../../src/react-utils/usePrefersReducedMotion/constants.js"],"sourcesContent":["export const QUERY = \"(prefers-reduced-motion: no-preference)\";\n"],"names":["QUERY"],"mappings":";;AAAO,IAAMA,KAAK,GAAG;;;;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var reactUtils_usePrefersReducedMotion_usePrefersReducedMotion = require('./usePrefersReducedMotion.js');
|
|
4
|
+
require('../../slicedToArray-BcL7fKuL.js');
|
|
5
|
+
require('../../unsupportedIterableToArray-BoHMiKNA.js');
|
|
6
|
+
require('react');
|
|
7
|
+
require('./constants.js');
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
module.exports = reactUtils_usePrefersReducedMotion_usePrefersReducedMotion;
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var slicedToArray = require('../../slicedToArray-BcL7fKuL.js');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var reactUtils_usePrefersReducedMotion_constants = require('./constants.js');
|
|
6
|
+
require('../../unsupportedIterableToArray-BoHMiKNA.js');
|
|
7
|
+
|
|
8
|
+
var isRenderingOnServer = typeof window === "undefined";
|
|
9
|
+
var getInitialState = function getInitialState() {
|
|
10
|
+
return (
|
|
11
|
+
// For our initial server render, we won't know if the user
|
|
12
|
+
// prefers reduced motion, but it doesn't matter. This value
|
|
13
|
+
// will be overwritten on the client, before any animations
|
|
14
|
+
// occur.
|
|
15
|
+
isRenderingOnServer ? true : !window.matchMedia(reactUtils_usePrefersReducedMotion_constants.QUERY).matches
|
|
16
|
+
);
|
|
17
|
+
};
|
|
18
|
+
var usePrefersReducedMotion = function usePrefersReducedMotion() {
|
|
19
|
+
var _useState = React.useState(getInitialState),
|
|
20
|
+
_useState2 = slicedToArray._slicedToArray(_useState, 2),
|
|
21
|
+
prefersReducedMotion = _useState2[0],
|
|
22
|
+
setPrefersReducedMotion = _useState2[1];
|
|
23
|
+
React.useEffect(function () {
|
|
24
|
+
if (isRenderingOnServer) return undefined;
|
|
25
|
+
var mediaQueryList = window.matchMedia(reactUtils_usePrefersReducedMotion_constants.QUERY);
|
|
26
|
+
var listener = function listener(event) {
|
|
27
|
+
setPrefersReducedMotion(!event.matches);
|
|
28
|
+
};
|
|
29
|
+
if (mediaQueryList.addEventListener) {
|
|
30
|
+
mediaQueryList.addEventListener("change", listener);
|
|
31
|
+
} else {
|
|
32
|
+
mediaQueryList.addListener(listener);
|
|
33
|
+
}
|
|
34
|
+
return function () {
|
|
35
|
+
if (mediaQueryList.removeEventListener) {
|
|
36
|
+
mediaQueryList.removeEventListener("change", listener);
|
|
37
|
+
} else {
|
|
38
|
+
mediaQueryList.removeListener(listener);
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
}, []);
|
|
42
|
+
return prefersReducedMotion;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
module.exports = usePrefersReducedMotion;
|
|
46
|
+
//# sourceMappingURL=usePrefersReducedMotion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePrefersReducedMotion.js","sources":["../../../../src/react-utils/usePrefersReducedMotion/usePrefersReducedMotion.js"],"sourcesContent":["import { useState, useEffect } from \"react\";\n\nimport { QUERY } from \"./constants\";\n\nconst isRenderingOnServer = typeof window === \"undefined\";\n\nconst getInitialState = () =>\n // For our initial server render, we won't know if the user\n // prefers reduced motion, but it doesn't matter. This value\n // will be overwritten on the client, before any animations\n // occur.\n isRenderingOnServer ? true : !window.matchMedia(QUERY).matches;\n\nconst usePrefersReducedMotion = () => {\n const [prefersReducedMotion, setPrefersReducedMotion] =\n useState(getInitialState);\n\n useEffect(() => {\n if (isRenderingOnServer) return undefined;\n\n const mediaQueryList = window.matchMedia(QUERY);\n\n const listener = event => {\n setPrefersReducedMotion(!event.matches);\n };\n\n if (mediaQueryList.addEventListener) {\n mediaQueryList.addEventListener(\"change\", listener);\n } else {\n mediaQueryList.addListener(listener);\n }\n\n return () => {\n if (mediaQueryList.removeEventListener) {\n mediaQueryList.removeEventListener(\"change\", listener);\n } else {\n mediaQueryList.removeListener(listener);\n }\n };\n }, []);\n\n return prefersReducedMotion;\n};\n\nexport default usePrefersReducedMotion;\n"],"names":["isRenderingOnServer","window","getInitialState","matchMedia","QUERY","matches","usePrefersReducedMotion","_useState","useState","_useState2","_slicedToArray","prefersReducedMotion","setPrefersReducedMotion","useEffect","undefined","mediaQueryList","listener","event","addEventListener","addListener","removeEventListener","removeListener"],"mappings":";;;;;;;AAIA,IAAMA,mBAAmB,GAAG,OAAOC,MAAM,KAAK,WAAW;AAEzD,IAAMC,eAAe,GAAG,SAAlBA,eAAeA,GAAA;AAAA,EAAA;AACnB;AACA;AACA;AACA;IACAF,mBAAmB,GAAG,IAAI,GAAG,CAACC,MAAM,CAACE,UAAU,CAACC,kDAAK,CAAC,CAACC;AAAO;AAAA,CAAA;AAEhE,IAAMC,uBAAuB,GAAG,SAA1BA,uBAAuBA,GAAS;AACpC,EAAA,IAAAC,SAAA,GACEC,cAAQ,CAACN,eAAe,CAAC;IAAAO,UAAA,GAAAC,4BAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AADpBI,IAAAA,oBAAoB,GAAAF,UAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,uBAAuB,GAAAH,UAAA,CAAA,CAAA,CAAA;AAGpDI,EAAAA,eAAS,CAAC,YAAM;IACd,IAAIb,mBAAmB,EAAE,OAAOc,SAAS;AAEzC,IAAA,IAAMC,cAAc,GAAGd,MAAM,CAACE,UAAU,CAACC,kDAAK,CAAC;AAE/C,IAAA,IAAMY,QAAQ,GAAG,SAAXA,QAAQA,CAAGC,KAAK,EAAI;AACxBL,MAAAA,uBAAuB,CAAC,CAACK,KAAK,CAACZ,OAAO,CAAC;KACxC;IAED,IAAIU,cAAc,CAACG,gBAAgB,EAAE;AACnCH,MAAAA,cAAc,CAACG,gBAAgB,CAAC,QAAQ,EAAEF,QAAQ,CAAC;AACrD,KAAC,MAAM;AACLD,MAAAA,cAAc,CAACI,WAAW,CAACH,QAAQ,CAAC;AACtC;AAEA,IAAA,OAAO,YAAM;MACX,IAAID,cAAc,CAACK,mBAAmB,EAAE;AACtCL,QAAAA,cAAc,CAACK,mBAAmB,CAAC,QAAQ,EAAEJ,QAAQ,CAAC;AACxD,OAAC,MAAM;AACLD,QAAAA,cAAc,CAACM,cAAc,CAACL,QAAQ,CAAC;AACzC;KACD;GACF,EAAE,EAAE,CAAC;AAEN,EAAA,OAAOL,oBAAoB;AAC7B;;;;"}
|
|
@@ -13,6 +13,7 @@ export { default as useMutationWithInvalidation } from './useMutationWithInvalid
|
|
|
13
13
|
export { default as useOnClickOutside } from './useOnClickOutside/useOnClickOutside.js';
|
|
14
14
|
export { default as usePersistedQuery } from './usePersistedQuery/usePersistedQuery.js';
|
|
15
15
|
export { default as usePrevious } from './usePrevious/usePrevious.js';
|
|
16
|
+
export { default as usePrefersReducedMotion } from './usePrefersReducedMotion/usePrefersReducedMotion.js';
|
|
16
17
|
export { default as useQueryParams } from './useQueryParams/useQueryParams.js';
|
|
17
18
|
export { useNavigationCheckpoints, default as useRegisterNavigationCheckpoint, useRemoveNavigationCheckpoint } from './useRegisterNavigationCheckpoint/useRegisterNavigationCheckpoint.js';
|
|
18
19
|
export { default as useStateWithDependency } from './useStateWithDependency/useStateWithDependency.js';
|
|
@@ -77,6 +78,7 @@ import '../lodash-M8VRFvKw.js';
|
|
|
77
78
|
import '@bigbinary/neeto-time-zones';
|
|
78
79
|
import 'ua-parser-js';
|
|
79
80
|
import '@tanstack/react-query';
|
|
81
|
+
import './usePrefersReducedMotion/constants.js';
|
|
80
82
|
import './useBreakpoints/utils.js';
|
|
81
83
|
import './useColumnConfig/useConfigApi.js';
|
|
82
84
|
import './useColumnConfig/api.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../../../src/react-utils/usePrefersReducedMotion/constants.js"],"sourcesContent":["export const QUERY = \"(prefers-reduced-motion: no-preference)\";\n"],"names":["QUERY"],"mappings":"AAAO,IAAMA,KAAK,GAAG;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { _ as _slicedToArray } from '../../slicedToArray-DmsZvA_9.js';
|
|
2
|
+
import { useState, useEffect } from 'react';
|
|
3
|
+
import { QUERY } from './constants.js';
|
|
4
|
+
import '../../unsupportedIterableToArray-Dqz8Y8_I.js';
|
|
5
|
+
|
|
6
|
+
var isRenderingOnServer = typeof window === "undefined";
|
|
7
|
+
var getInitialState = function getInitialState() {
|
|
8
|
+
return (
|
|
9
|
+
// For our initial server render, we won't know if the user
|
|
10
|
+
// prefers reduced motion, but it doesn't matter. This value
|
|
11
|
+
// will be overwritten on the client, before any animations
|
|
12
|
+
// occur.
|
|
13
|
+
isRenderingOnServer ? true : !window.matchMedia(QUERY).matches
|
|
14
|
+
);
|
|
15
|
+
};
|
|
16
|
+
var usePrefersReducedMotion = function usePrefersReducedMotion() {
|
|
17
|
+
var _useState = useState(getInitialState),
|
|
18
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
19
|
+
prefersReducedMotion = _useState2[0],
|
|
20
|
+
setPrefersReducedMotion = _useState2[1];
|
|
21
|
+
useEffect(function () {
|
|
22
|
+
if (isRenderingOnServer) return undefined;
|
|
23
|
+
var mediaQueryList = window.matchMedia(QUERY);
|
|
24
|
+
var listener = function listener(event) {
|
|
25
|
+
setPrefersReducedMotion(!event.matches);
|
|
26
|
+
};
|
|
27
|
+
if (mediaQueryList.addEventListener) {
|
|
28
|
+
mediaQueryList.addEventListener("change", listener);
|
|
29
|
+
} else {
|
|
30
|
+
mediaQueryList.addListener(listener);
|
|
31
|
+
}
|
|
32
|
+
return function () {
|
|
33
|
+
if (mediaQueryList.removeEventListener) {
|
|
34
|
+
mediaQueryList.removeEventListener("change", listener);
|
|
35
|
+
} else {
|
|
36
|
+
mediaQueryList.removeListener(listener);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
}, []);
|
|
40
|
+
return prefersReducedMotion;
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
export { usePrefersReducedMotion as default };
|
|
44
|
+
//# sourceMappingURL=usePrefersReducedMotion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePrefersReducedMotion.js","sources":["../../../src/react-utils/usePrefersReducedMotion/usePrefersReducedMotion.js"],"sourcesContent":["import { useState, useEffect } from \"react\";\n\nimport { QUERY } from \"./constants\";\n\nconst isRenderingOnServer = typeof window === \"undefined\";\n\nconst getInitialState = () =>\n // For our initial server render, we won't know if the user\n // prefers reduced motion, but it doesn't matter. This value\n // will be overwritten on the client, before any animations\n // occur.\n isRenderingOnServer ? true : !window.matchMedia(QUERY).matches;\n\nconst usePrefersReducedMotion = () => {\n const [prefersReducedMotion, setPrefersReducedMotion] =\n useState(getInitialState);\n\n useEffect(() => {\n if (isRenderingOnServer) return undefined;\n\n const mediaQueryList = window.matchMedia(QUERY);\n\n const listener = event => {\n setPrefersReducedMotion(!event.matches);\n };\n\n if (mediaQueryList.addEventListener) {\n mediaQueryList.addEventListener(\"change\", listener);\n } else {\n mediaQueryList.addListener(listener);\n }\n\n return () => {\n if (mediaQueryList.removeEventListener) {\n mediaQueryList.removeEventListener(\"change\", listener);\n } else {\n mediaQueryList.removeListener(listener);\n }\n };\n }, []);\n\n return prefersReducedMotion;\n};\n\nexport default usePrefersReducedMotion;\n"],"names":["isRenderingOnServer","window","getInitialState","matchMedia","QUERY","matches","usePrefersReducedMotion","_useState","useState","_useState2","_slicedToArray","prefersReducedMotion","setPrefersReducedMotion","useEffect","undefined","mediaQueryList","listener","event","addEventListener","addListener","removeEventListener","removeListener"],"mappings":";;;;;AAIA,IAAMA,mBAAmB,GAAG,OAAOC,MAAM,KAAK,WAAW;AAEzD,IAAMC,eAAe,GAAG,SAAlBA,eAAeA,GAAA;AAAA,EAAA;AACnB;AACA;AACA;AACA;IACAF,mBAAmB,GAAG,IAAI,GAAG,CAACC,MAAM,CAACE,UAAU,CAACC,KAAK,CAAC,CAACC;AAAO;AAAA,CAAA;AAEhE,IAAMC,uBAAuB,GAAG,SAA1BA,uBAAuBA,GAAS;AACpC,EAAA,IAAAC,SAAA,GACEC,QAAQ,CAACN,eAAe,CAAC;IAAAO,UAAA,GAAAC,cAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AADpBI,IAAAA,oBAAoB,GAAAF,UAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,uBAAuB,GAAAH,UAAA,CAAA,CAAA,CAAA;AAGpDI,EAAAA,SAAS,CAAC,YAAM;IACd,IAAIb,mBAAmB,EAAE,OAAOc,SAAS;AAEzC,IAAA,IAAMC,cAAc,GAAGd,MAAM,CAACE,UAAU,CAACC,KAAK,CAAC;AAE/C,IAAA,IAAMY,QAAQ,GAAG,SAAXA,QAAQA,CAAGC,KAAK,EAAI;AACxBL,MAAAA,uBAAuB,CAAC,CAACK,KAAK,CAACZ,OAAO,CAAC;KACxC;IAED,IAAIU,cAAc,CAACG,gBAAgB,EAAE;AACnCH,MAAAA,cAAc,CAACG,gBAAgB,CAAC,QAAQ,EAAEF,QAAQ,CAAC;AACrD,KAAC,MAAM;AACLD,MAAAA,cAAc,CAACI,WAAW,CAACH,QAAQ,CAAC;AACtC;AAEA,IAAA,OAAO,YAAM;MACX,IAAID,cAAc,CAACK,mBAAmB,EAAE;AACtCL,QAAAA,cAAc,CAACK,mBAAmB,CAAC,QAAQ,EAAEJ,QAAQ,CAAC;AACxD,OAAC,MAAM;AACLD,QAAAA,cAAc,CAACM,cAAc,CAACL,QAAQ,CAAC;AACzC;KACD;GACF,EAAE,EAAE,CAAC;AAEN,EAAA,OAAOL,oBAAoB;AAC7B;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bigbinary/neeto-commons-frontend",
|
|
3
|
-
"version": "4.13.
|
|
3
|
+
"version": "4.13.94",
|
|
4
4
|
"description": "A package encapsulating common code across neeto projects including initializers, utility functions, common components and hooks and so on.",
|
|
5
5
|
"repository": "git@github.com:bigbinary/neeto-commons-frontend.git",
|
|
6
6
|
"author": "Amaljith K <amaljith.k@bigbinary.com>",
|
package/react-utils.d.ts
CHANGED
|
@@ -527,6 +527,71 @@ export function useOnClickOutside<T>(ref: React.MutableRefObject<T>, handler: (e
|
|
|
527
527
|
*
|
|
528
528
|
*/
|
|
529
529
|
export function usePrevious<T>(value: T): T;
|
|
530
|
+
/**
|
|
531
|
+
*
|
|
532
|
+
* The usePrefersReducedMotion hook is a utility that detects whether the user has
|
|
533
|
+
*
|
|
534
|
+
* preferred reduced motion enabled in their system settings. This is particularly
|
|
535
|
+
*
|
|
536
|
+
* useful for creating accessible user interfaces that respect user preferences for
|
|
537
|
+
*
|
|
538
|
+
* motion and animations. The hook listens to changes in the user's motion
|
|
539
|
+
*
|
|
540
|
+
* preferences and updates accordingly.
|
|
541
|
+
*
|
|
542
|
+
* This hook uses the CSS media query (prefers-reduced-motion: no-preference) to
|
|
543
|
+
*
|
|
544
|
+
* determine if the user prefers reduced motion. When the user has reduced motion
|
|
545
|
+
*
|
|
546
|
+
* enabled, the media query will not match, and the hook will return true.
|
|
547
|
+
*
|
|
548
|
+
* This hook does not accept any arguments.
|
|
549
|
+
*
|
|
550
|
+
* The following code snippet demonstrates the usage of usePrefersReducedMotion to
|
|
551
|
+
*
|
|
552
|
+
* conditionally apply animations based on user preferences.
|
|
553
|
+
*
|
|
554
|
+
* @example
|
|
555
|
+
*
|
|
556
|
+
* import { usePrefersReducedMotion } from "@bigbinary/neeto-commons-frontend/react-utils";
|
|
557
|
+
*
|
|
558
|
+
* const MyComponent = () => {
|
|
559
|
+
* const prefersReducedMotion = usePrefersReducedMotion();
|
|
560
|
+
*
|
|
561
|
+
* return (
|
|
562
|
+
* <div
|
|
563
|
+
* className={prefersReducedMotion ? "static" : "animate-fade-in"}
|
|
564
|
+
* >
|
|
565
|
+
* Content that respects motion preferences
|
|
566
|
+
* </div>
|
|
567
|
+
* );
|
|
568
|
+
* };
|
|
569
|
+
* @endexample
|
|
570
|
+
* You can also use this hook to conditionally render animation libraries or
|
|
571
|
+
*
|
|
572
|
+
* components:
|
|
573
|
+
*
|
|
574
|
+
* @example
|
|
575
|
+
*
|
|
576
|
+
* import { usePrefersReducedMotion } from "@bigbinary/neeto-commons-frontend/react-utils";
|
|
577
|
+
* import { motion } from "framer-motion";
|
|
578
|
+
*
|
|
579
|
+
* const AnimatedComponent = ({ children }) => {
|
|
580
|
+
* const prefersReducedMotion = usePrefersReducedMotion();
|
|
581
|
+
*
|
|
582
|
+
* return (
|
|
583
|
+
* <motion.div
|
|
584
|
+
* initial={{ opacity: 0 }}
|
|
585
|
+
* animate={{ opacity: 1 }}
|
|
586
|
+
* transition={{ duration: prefersReducedMotion ? 0 : 0.5 }}
|
|
587
|
+
* >
|
|
588
|
+
* {children}
|
|
589
|
+
* </motion.div>
|
|
590
|
+
* );
|
|
591
|
+
* };
|
|
592
|
+
* @endexample
|
|
593
|
+
*/
|
|
594
|
+
export function usePrefersReducedMotion(): boolean;
|
|
530
595
|
/**
|
|
531
596
|
*
|
|
532
597
|
* The useUpdateEffect hook is a variation of the standard useEffect hook in
|