@bigbinary/neeto-commons-frontend 4.1.4 → 4.2.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/cjs/react-utils/index.js +19 -0
- package/cjs/react-utils/index.js.map +1 -1
- package/cjs/react-utils/useRestoreScrollPosition/index.js +28 -0
- package/cjs/react-utils/useRestoreScrollPosition/index.js.map +1 -0
- package/cjs/react-utils/useRestoreScrollPosition/useRestoreScrollPosition.js +72 -0
- package/cjs/react-utils/useRestoreScrollPosition/useRestoreScrollPosition.js.map +1 -0
- package/package.json +1 -1
- package/react-utils/index.js +2 -0
- package/react-utils/index.js.map +1 -1
- package/react-utils/useRestoreScrollPosition/index.js +3 -0
- package/react-utils/useRestoreScrollPosition/index.js.map +1 -0
- package/react-utils/useRestoreScrollPosition/useRestoreScrollPosition.js +62 -0
- package/react-utils/useRestoreScrollPosition/useRestoreScrollPosition.js.map +1 -0
- package/react-utils.d.ts +76 -0
package/cjs/react-utils/index.js
CHANGED
|
@@ -27,6 +27,7 @@ var _exportNames = {
|
|
|
27
27
|
useTimer: true,
|
|
28
28
|
useUpdateEffect: true,
|
|
29
29
|
useBreakpoints: true,
|
|
30
|
+
useRestoreScrollPosition: true,
|
|
30
31
|
withImmutableActions: true,
|
|
31
32
|
withT: true,
|
|
32
33
|
withTitle: true
|
|
@@ -139,6 +140,12 @@ Object.defineProperty(exports, "useRegisterNavigationCheckpoint", {
|
|
|
139
140
|
return _useRegisterNavigationCheckpoint["default"];
|
|
140
141
|
}
|
|
141
142
|
});
|
|
143
|
+
Object.defineProperty(exports, "useRestoreScrollPosition", {
|
|
144
|
+
enumerable: true,
|
|
145
|
+
get: function get() {
|
|
146
|
+
return _useRestoreScrollPosition["default"];
|
|
147
|
+
}
|
|
148
|
+
});
|
|
142
149
|
Object.defineProperty(exports, "useStateWithDependency", {
|
|
143
150
|
enumerable: true,
|
|
144
151
|
get: function get() {
|
|
@@ -218,6 +225,18 @@ var _useStateWithDependency = _interopRequireDefault(require("./useStateWithDepe
|
|
|
218
225
|
var _useTimer = _interopRequireDefault(require("./useTimer"));
|
|
219
226
|
var _useUpdateEffect = _interopRequireDefault(require("./useUpdateEffect"));
|
|
220
227
|
var _useBreakpoints = _interopRequireDefault(require("./useBreakpoints"));
|
|
228
|
+
var _useRestoreScrollPosition = _interopRequireWildcard(require("./useRestoreScrollPosition"));
|
|
229
|
+
Object.keys(_useRestoreScrollPosition).forEach(function (key) {
|
|
230
|
+
if (key === "default" || key === "__esModule") return;
|
|
231
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
232
|
+
if (key in exports && exports[key] === _useRestoreScrollPosition[key]) return;
|
|
233
|
+
Object.defineProperty(exports, key, {
|
|
234
|
+
enumerable: true,
|
|
235
|
+
get: function get() {
|
|
236
|
+
return _useRestoreScrollPosition[key];
|
|
237
|
+
}
|
|
238
|
+
});
|
|
239
|
+
});
|
|
221
240
|
var _BrowserPushNotifications = require("./BrowserPushNotifications");
|
|
222
241
|
Object.keys(_BrowserPushNotifications).forEach(function (key) {
|
|
223
242
|
if (key === "default" || key === "__esModule") return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_HoneybadgerErrorBoundary","_interopRequireDefault","require","_PrivateRoute","_PageTitle","_useDebounce","_useDisplayErrorPage","_interopRequireWildcard","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_useFetchNeetoApps","_useFieldSubmit","_useFuncDebounce","_useIsElementVisibleInDom","_useKeyboardShortcutsPaneState","_useLocalStorage","_useMutationWithInvalidation","_useOnClickOutside","_usePersistedQuery","_usePrevious","_useQueryParams","_useRegisterNavigationCheckpoint","_useStateWithDependency","_useTimer","_useUpdateEffect","_useBreakpoints","_BrowserPushNotifications","_metaClick","_withImmutableActions","_withT","_withTitle","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","desc","set"],"sources":["../../../src/react-utils/index.js"],"sourcesContent":["// components\nexport { default as HoneybadgerErrorBoundary } from \"./HoneybadgerErrorBoundary\";\nexport { default as PrivateRoute } from \"./PrivateRoute\";\nexport { default as PageTitle } from \"./PageTitle\";\n\n// hooks\nexport { default as useDebounce } from \"./useDebounce\";\nexport * from \"./useDisplayErrorPage\";\nexport { default as useDisplayErrorPage } from \"./useDisplayErrorPage\";\nexport { default as useFetchNeetoApps } from \"./useFetchNeetoApps\";\nexport { default as useFieldSubmit } from \"./useFieldSubmit\";\nexport { default as useFuncDebounce } from \"./useFuncDebounce\";\nexport { default as useIsElementVisibleInDom } from \"./useIsElementVisibleInDom\";\nexport { default as useKeyboardShortcutsPaneState } from \"./useKeyboardShortcutsPaneState\";\nexport { default as useLocalStorage } from \"./useLocalStorage\";\nexport { default as useMutationWithInvalidation } from \"./useMutationWithInvalidation\";\nexport { default as useOnClickOutside } from \"./useOnClickOutside\";\nexport { default as usePersistedQuery } from \"./usePersistedQuery\";\nexport { default as usePrevious } from \"./usePrevious\";\nexport { default as useQueryParams } from \"./useQueryParams\";\nexport * from \"./useRegisterNavigationCheckpoint\";\nexport { default as useRegisterNavigationCheckpoint } from \"./useRegisterNavigationCheckpoint\";\nexport { default as useStateWithDependency } from \"./useStateWithDependency\";\nexport { default as useTimer } from \"./useTimer\";\nexport { default as useUpdateEffect } from \"./useUpdateEffect\";\nexport { default as useBreakpoints } from \"./useBreakpoints\";\n\n// utils\nexport * from \"./BrowserPushNotifications\";\nexport * from \"./metaClick\";\nexport { default as withImmutableActions } from \"./withImmutableActions\";\nexport { default as withT } from \"./withT\";\nexport { default as withTitle } from \"./withTitle\";\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","names":["_HoneybadgerErrorBoundary","_interopRequireDefault","require","_PrivateRoute","_PageTitle","_useDebounce","_useDisplayErrorPage","_interopRequireWildcard","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_useFetchNeetoApps","_useFieldSubmit","_useFuncDebounce","_useIsElementVisibleInDom","_useKeyboardShortcutsPaneState","_useLocalStorage","_useMutationWithInvalidation","_useOnClickOutside","_usePersistedQuery","_usePrevious","_useQueryParams","_useRegisterNavigationCheckpoint","_useStateWithDependency","_useTimer","_useUpdateEffect","_useBreakpoints","_useRestoreScrollPosition","_BrowserPushNotifications","_metaClick","_withImmutableActions","_withT","_withTitle","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","desc","set"],"sources":["../../../src/react-utils/index.js"],"sourcesContent":["// components\nexport { default as HoneybadgerErrorBoundary } from \"./HoneybadgerErrorBoundary\";\nexport { default as PrivateRoute } from \"./PrivateRoute\";\nexport { default as PageTitle } from \"./PageTitle\";\n\n// hooks\nexport { default as useDebounce } from \"./useDebounce\";\nexport * from \"./useDisplayErrorPage\";\nexport { default as useDisplayErrorPage } from \"./useDisplayErrorPage\";\nexport { default as useFetchNeetoApps } from \"./useFetchNeetoApps\";\nexport { default as useFieldSubmit } from \"./useFieldSubmit\";\nexport { default as useFuncDebounce } from \"./useFuncDebounce\";\nexport { default as useIsElementVisibleInDom } from \"./useIsElementVisibleInDom\";\nexport { default as useKeyboardShortcutsPaneState } from \"./useKeyboardShortcutsPaneState\";\nexport { default as useLocalStorage } from \"./useLocalStorage\";\nexport { default as useMutationWithInvalidation } from \"./useMutationWithInvalidation\";\nexport { default as useOnClickOutside } from \"./useOnClickOutside\";\nexport { default as usePersistedQuery } from \"./usePersistedQuery\";\nexport { default as usePrevious } from \"./usePrevious\";\nexport { default as useQueryParams } from \"./useQueryParams\";\nexport * from \"./useRegisterNavigationCheckpoint\";\nexport { default as useRegisterNavigationCheckpoint } from \"./useRegisterNavigationCheckpoint\";\nexport { default as useStateWithDependency } from \"./useStateWithDependency\";\nexport { default as useTimer } from \"./useTimer\";\nexport { default as useUpdateEffect } from \"./useUpdateEffect\";\nexport { default as useBreakpoints } from \"./useBreakpoints\";\nexport * from \"./useRestoreScrollPosition\";\nexport { default as useRestoreScrollPosition } from \"./useRestoreScrollPosition\";\n\n// utils\nexport * from \"./BrowserPushNotifications\";\nexport * from \"./metaClick\";\nexport { default as withImmutableActions } from \"./withImmutableActions\";\nexport { default as withT } from \"./withT\";\nexport { default as withTitle } from \"./withTitle\";\n"],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
var _exportNames = {};
|
|
8
|
+
Object.defineProperty(exports, "default", {
|
|
9
|
+
enumerable: true,
|
|
10
|
+
get: function get() {
|
|
11
|
+
return _useRestoreScrollPosition["default"];
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
var _useRestoreScrollPosition = _interopRequireWildcard(require("./useRestoreScrollPosition"));
|
|
15
|
+
Object.keys(_useRestoreScrollPosition).forEach(function (key) {
|
|
16
|
+
if (key === "default" || key === "__esModule") return;
|
|
17
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
18
|
+
if (key in exports && exports[key] === _useRestoreScrollPosition[key]) return;
|
|
19
|
+
Object.defineProperty(exports, key, {
|
|
20
|
+
enumerable: true,
|
|
21
|
+
get: function get() {
|
|
22
|
+
return _useRestoreScrollPosition[key];
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
27
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
28
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["_useRestoreScrollPosition","_interopRequireWildcard","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","desc","set"],"sources":["../../../../src/react-utils/useRestoreScrollPosition/index.js"],"sourcesContent":["export { default } from \"./useRestoreScrollPosition\";\nexport * from \"./useRestoreScrollPosition\";\n"],"mappings":";;;;;;;;;;;;;AAAA,IAAAA,yBAAA,GAAAC,uBAAA,CAAAC,OAAA;AACAC,MAAA,CAAAC,IAAA,CAAAJ,yBAAA,EAAAK,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAN,yBAAA,CAAAM,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAd,yBAAA,CAAAM,GAAA;IAAA;EAAA;AAAA;AAA2C,SAAAS,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,yBAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAf,wBAAAmB,GAAA,EAAAJ,WAAA,SAAAA,WAAA,IAAAI,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,aAAAE,OAAA,CAAAF,GAAA,yBAAAA,GAAA,uCAAAA,GAAA,UAAAG,KAAA,GAAAR,wBAAA,CAAAC,WAAA,OAAAO,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAJ,GAAA,YAAAG,KAAA,CAAAT,GAAA,CAAAM,GAAA,SAAAK,MAAA,WAAAC,qBAAA,GAAAvB,MAAA,CAAAS,cAAA,IAAAT,MAAA,CAAAwB,wBAAA,WAAArB,GAAA,IAAAc,GAAA,QAAAd,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAW,GAAA,EAAAd,GAAA,SAAAsB,IAAA,GAAAF,qBAAA,GAAAvB,MAAA,CAAAwB,wBAAA,CAAAP,GAAA,EAAAd,GAAA,cAAAsB,IAAA,KAAAA,IAAA,CAAAd,GAAA,IAAAc,IAAA,CAAAC,GAAA,KAAA1B,MAAA,CAAAS,cAAA,CAAAa,MAAA,EAAAnB,GAAA,EAAAsB,IAAA,YAAAH,MAAA,CAAAnB,GAAA,IAAAc,GAAA,CAAAd,GAAA,SAAAmB,MAAA,cAAAL,GAAA,MAAAG,KAAA,IAAAA,KAAA,CAAAM,GAAA,CAAAT,GAAA,EAAAK,MAAA,YAAAA,MAAA"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.useSetScrollPosition = exports.useRemoveScrollPosition = exports.useGetScrollPosition = exports["default"] = void 0;
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
var _ramda = require("ramda");
|
|
10
|
+
var _useFuncDebounce = _interopRequireDefault(require("../useFuncDebounce"));
|
|
11
|
+
var _withImmutableActions = _interopRequireDefault(require("../withImmutableActions"));
|
|
12
|
+
var _zustand = require("zustand");
|
|
13
|
+
/** @type {import("neetocommons/react-utils").ZustandStoreHook} */
|
|
14
|
+
var useScrollStore = (0, _zustand.create)((0, _withImmutableActions["default"])(function (set, get) {
|
|
15
|
+
return {
|
|
16
|
+
scrollPositions: {},
|
|
17
|
+
setScrollPosition: function setScrollPosition(key, value) {
|
|
18
|
+
return set(function (state) {
|
|
19
|
+
return {
|
|
20
|
+
scrollPositions: (0, _ramda.assoc)(key, value, state.scrollPositions)
|
|
21
|
+
};
|
|
22
|
+
});
|
|
23
|
+
},
|
|
24
|
+
removeScrollPosition: function removeScrollPosition(key) {
|
|
25
|
+
return set(function (state) {
|
|
26
|
+
return {
|
|
27
|
+
scrollPositions: (0, _ramda.dissoc)(key, state.scrollPositions)
|
|
28
|
+
};
|
|
29
|
+
});
|
|
30
|
+
},
|
|
31
|
+
getScrollPosition: function getScrollPosition(key) {
|
|
32
|
+
return get().scrollPositions[key];
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
}));
|
|
36
|
+
var useRestoreScrollPosition = function useRestoreScrollPosition(key, ref) {
|
|
37
|
+
var setScrollPosition = useScrollStore((0, _ramda.prop)("setScrollPosition"));
|
|
38
|
+
var getScrollPosition = useScrollStore((0, _ramda.prop)("getScrollPosition"));
|
|
39
|
+
var handleScroll = (0, _useFuncDebounce["default"])(function () {
|
|
40
|
+
if (!ref.current) return;
|
|
41
|
+
setScrollPosition(key, ref.current.scrollTop);
|
|
42
|
+
}, 500);
|
|
43
|
+
(0, _react.useEffect)(function () {
|
|
44
|
+
if (ref.current) {
|
|
45
|
+
var savedScrollPosition = getScrollPosition(key);
|
|
46
|
+
if (savedScrollPosition !== undefined) {
|
|
47
|
+
ref.current.scrollTop = savedScrollPosition;
|
|
48
|
+
}
|
|
49
|
+
ref.current.addEventListener("scroll", handleScroll);
|
|
50
|
+
}
|
|
51
|
+
return function () {
|
|
52
|
+
if (ref.current) {
|
|
53
|
+
ref.current.removeEventListener("scroll", handleScroll);
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
}, [key]);
|
|
57
|
+
};
|
|
58
|
+
var useSetScrollPosition = function useSetScrollPosition() {
|
|
59
|
+
return useScrollStore((0, _ramda.prop)("setScrollPosition"));
|
|
60
|
+
};
|
|
61
|
+
exports.useSetScrollPosition = useSetScrollPosition;
|
|
62
|
+
var useGetScrollPosition = function useGetScrollPosition() {
|
|
63
|
+
return useScrollStore((0, _ramda.prop)("getScrollPosition"));
|
|
64
|
+
};
|
|
65
|
+
exports.useGetScrollPosition = useGetScrollPosition;
|
|
66
|
+
var useRemoveScrollPosition = function useRemoveScrollPosition() {
|
|
67
|
+
return useScrollStore((0, _ramda.prop)("removeScrollPosition"));
|
|
68
|
+
};
|
|
69
|
+
exports.useRemoveScrollPosition = useRemoveScrollPosition;
|
|
70
|
+
var _default = useRestoreScrollPosition;
|
|
71
|
+
exports["default"] = _default;
|
|
72
|
+
//# sourceMappingURL=useRestoreScrollPosition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useRestoreScrollPosition.js","names":["_react","require","_ramda","_useFuncDebounce","_interopRequireDefault","_withImmutableActions","_zustand","useScrollStore","create","withImmutableActions","set","get","scrollPositions","setScrollPosition","key","value","state","assoc","removeScrollPosition","dissoc","getScrollPosition","useRestoreScrollPosition","ref","prop","handleScroll","useFuncDebounce","current","scrollTop","useEffect","savedScrollPosition","undefined","addEventListener","removeEventListener","useSetScrollPosition","exports","useGetScrollPosition","useRemoveScrollPosition","_default"],"sources":["../../../../src/react-utils/useRestoreScrollPosition/useRestoreScrollPosition.js"],"sourcesContent":["import { useEffect } from \"react\";\n\nimport { assoc, dissoc, prop } from \"ramda\";\nimport useFuncDebounce from \"react-utils/useFuncDebounce\";\nimport withImmutableActions from \"react-utils/withImmutableActions\";\nimport { create } from \"zustand\";\n\n/** @type {import(\"neetocommons/react-utils\").ZustandStoreHook} */\nconst useScrollStore = create(\n withImmutableActions((set, get) => ({\n scrollPositions: {},\n setScrollPosition: (key, value) =>\n set(state => ({\n scrollPositions: assoc(key, value, state.scrollPositions),\n })),\n removeScrollPosition: key =>\n set(state => ({ scrollPositions: dissoc(key, state.scrollPositions) })),\n getScrollPosition: key => get().scrollPositions[key],\n }))\n);\n\nconst useRestoreScrollPosition = (key, ref) => {\n const setScrollPosition = useScrollStore(prop(\"setScrollPosition\"));\n const getScrollPosition = useScrollStore(prop(\"getScrollPosition\"));\n\n const handleScroll = useFuncDebounce(() => {\n if (!ref.current) return;\n setScrollPosition(key, ref.current.scrollTop);\n }, 500);\n\n useEffect(() => {\n if (ref.current) {\n const savedScrollPosition = getScrollPosition(key);\n if (savedScrollPosition !== undefined) {\n ref.current.scrollTop = savedScrollPosition;\n }\n ref.current.addEventListener(\"scroll\", handleScroll);\n }\n\n return () => {\n if (ref.current) {\n ref.current.removeEventListener(\"scroll\", handleScroll);\n }\n };\n }, [key]);\n};\n\nexport const useSetScrollPosition = () =>\n useScrollStore(prop(\"setScrollPosition\"));\n\nexport const useGetScrollPosition = () =>\n useScrollStore(prop(\"getScrollPosition\"));\n\nexport const useRemoveScrollPosition = () =>\n useScrollStore(prop(\"removeScrollPosition\"));\n\nexport default useRestoreScrollPosition;\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bigbinary/neeto-commons-frontend",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.2.0",
|
|
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/index.js
CHANGED
|
@@ -24,6 +24,8 @@ export { default as useStateWithDependency } from "./useStateWithDependency";
|
|
|
24
24
|
export { default as useTimer } from "./useTimer";
|
|
25
25
|
export { default as useUpdateEffect } from "./useUpdateEffect";
|
|
26
26
|
export { default as useBreakpoints } from "./useBreakpoints";
|
|
27
|
+
export * from "./useRestoreScrollPosition";
|
|
28
|
+
export { default as useRestoreScrollPosition } from "./useRestoreScrollPosition";
|
|
27
29
|
|
|
28
30
|
// utils
|
|
29
31
|
export * from "./BrowserPushNotifications";
|
package/react-utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["default","HoneybadgerErrorBoundary","PrivateRoute","PageTitle","useDebounce","useDisplayErrorPage","useFetchNeetoApps","useFieldSubmit","useFuncDebounce","useIsElementVisibleInDom","useKeyboardShortcutsPaneState","useLocalStorage","useMutationWithInvalidation","useOnClickOutside","usePersistedQuery","usePrevious","useQueryParams","useRegisterNavigationCheckpoint","useStateWithDependency","useTimer","useUpdateEffect","useBreakpoints","withImmutableActions","withT","withTitle"],"sources":["../../src/react-utils/index.js"],"sourcesContent":["// components\nexport { default as HoneybadgerErrorBoundary } from \"./HoneybadgerErrorBoundary\";\nexport { default as PrivateRoute } from \"./PrivateRoute\";\nexport { default as PageTitle } from \"./PageTitle\";\n\n// hooks\nexport { default as useDebounce } from \"./useDebounce\";\nexport * from \"./useDisplayErrorPage\";\nexport { default as useDisplayErrorPage } from \"./useDisplayErrorPage\";\nexport { default as useFetchNeetoApps } from \"./useFetchNeetoApps\";\nexport { default as useFieldSubmit } from \"./useFieldSubmit\";\nexport { default as useFuncDebounce } from \"./useFuncDebounce\";\nexport { default as useIsElementVisibleInDom } from \"./useIsElementVisibleInDom\";\nexport { default as useKeyboardShortcutsPaneState } from \"./useKeyboardShortcutsPaneState\";\nexport { default as useLocalStorage } from \"./useLocalStorage\";\nexport { default as useMutationWithInvalidation } from \"./useMutationWithInvalidation\";\nexport { default as useOnClickOutside } from \"./useOnClickOutside\";\nexport { default as usePersistedQuery } from \"./usePersistedQuery\";\nexport { default as usePrevious } from \"./usePrevious\";\nexport { default as useQueryParams } from \"./useQueryParams\";\nexport * from \"./useRegisterNavigationCheckpoint\";\nexport { default as useRegisterNavigationCheckpoint } from \"./useRegisterNavigationCheckpoint\";\nexport { default as useStateWithDependency } from \"./useStateWithDependency\";\nexport { default as useTimer } from \"./useTimer\";\nexport { default as useUpdateEffect } from \"./useUpdateEffect\";\nexport { default as useBreakpoints } from \"./useBreakpoints\";\n\n// utils\nexport * from \"./BrowserPushNotifications\";\nexport * from \"./metaClick\";\nexport { default as withImmutableActions } from \"./withImmutableActions\";\nexport { default as withT } from \"./withT\";\nexport { default as withTitle } from \"./withTitle\";\n"],"mappings":"AAAA;AACA,SAASA,OAAO,IAAIC,wBAAwB;AAC5C,SAASD,OAAO,IAAIE,YAAY;AAChC,SAASF,OAAO,IAAIG,SAAS;;AAE7B;AACA,SAASH,OAAO,IAAII,WAAW;AAC/B;AACA,SAASJ,OAAO,IAAIK,mBAAmB;AACvC,SAASL,OAAO,IAAIM,iBAAiB;AACrC,SAASN,OAAO,IAAIO,cAAc;AAClC,SAASP,OAAO,IAAIQ,eAAe;AACnC,SAASR,OAAO,IAAIS,wBAAwB;AAC5C,SAAST,OAAO,IAAIU,6BAA6B;AACjD,SAASV,OAAO,IAAIW,eAAe;AACnC,SAASX,OAAO,IAAIY,2BAA2B;AAC/C,SAASZ,OAAO,IAAIa,iBAAiB;AACrC,SAASb,OAAO,IAAIc,iBAAiB;AACrC,SAASd,OAAO,IAAIe,WAAW;AAC/B,SAASf,OAAO,IAAIgB,cAAc;AAClC;AACA,SAAShB,OAAO,IAAIiB,+BAA+B;AACnD,SAASjB,OAAO,IAAIkB,sBAAsB;AAC1C,SAASlB,OAAO,IAAImB,QAAQ;AAC5B,SAASnB,OAAO,IAAIoB,eAAe;AACnC,SAASpB,OAAO,IAAIqB,cAAc;;
|
|
1
|
+
{"version":3,"file":"index.js","names":["default","HoneybadgerErrorBoundary","PrivateRoute","PageTitle","useDebounce","useDisplayErrorPage","useFetchNeetoApps","useFieldSubmit","useFuncDebounce","useIsElementVisibleInDom","useKeyboardShortcutsPaneState","useLocalStorage","useMutationWithInvalidation","useOnClickOutside","usePersistedQuery","usePrevious","useQueryParams","useRegisterNavigationCheckpoint","useStateWithDependency","useTimer","useUpdateEffect","useBreakpoints","useRestoreScrollPosition","withImmutableActions","withT","withTitle"],"sources":["../../src/react-utils/index.js"],"sourcesContent":["// components\nexport { default as HoneybadgerErrorBoundary } from \"./HoneybadgerErrorBoundary\";\nexport { default as PrivateRoute } from \"./PrivateRoute\";\nexport { default as PageTitle } from \"./PageTitle\";\n\n// hooks\nexport { default as useDebounce } from \"./useDebounce\";\nexport * from \"./useDisplayErrorPage\";\nexport { default as useDisplayErrorPage } from \"./useDisplayErrorPage\";\nexport { default as useFetchNeetoApps } from \"./useFetchNeetoApps\";\nexport { default as useFieldSubmit } from \"./useFieldSubmit\";\nexport { default as useFuncDebounce } from \"./useFuncDebounce\";\nexport { default as useIsElementVisibleInDom } from \"./useIsElementVisibleInDom\";\nexport { default as useKeyboardShortcutsPaneState } from \"./useKeyboardShortcutsPaneState\";\nexport { default as useLocalStorage } from \"./useLocalStorage\";\nexport { default as useMutationWithInvalidation } from \"./useMutationWithInvalidation\";\nexport { default as useOnClickOutside } from \"./useOnClickOutside\";\nexport { default as usePersistedQuery } from \"./usePersistedQuery\";\nexport { default as usePrevious } from \"./usePrevious\";\nexport { default as useQueryParams } from \"./useQueryParams\";\nexport * from \"./useRegisterNavigationCheckpoint\";\nexport { default as useRegisterNavigationCheckpoint } from \"./useRegisterNavigationCheckpoint\";\nexport { default as useStateWithDependency } from \"./useStateWithDependency\";\nexport { default as useTimer } from \"./useTimer\";\nexport { default as useUpdateEffect } from \"./useUpdateEffect\";\nexport { default as useBreakpoints } from \"./useBreakpoints\";\nexport * from \"./useRestoreScrollPosition\";\nexport { default as useRestoreScrollPosition } from \"./useRestoreScrollPosition\";\n\n// utils\nexport * from \"./BrowserPushNotifications\";\nexport * from \"./metaClick\";\nexport { default as withImmutableActions } from \"./withImmutableActions\";\nexport { default as withT } from \"./withT\";\nexport { default as withTitle } from \"./withTitle\";\n"],"mappings":"AAAA;AACA,SAASA,OAAO,IAAIC,wBAAwB;AAC5C,SAASD,OAAO,IAAIE,YAAY;AAChC,SAASF,OAAO,IAAIG,SAAS;;AAE7B;AACA,SAASH,OAAO,IAAII,WAAW;AAC/B;AACA,SAASJ,OAAO,IAAIK,mBAAmB;AACvC,SAASL,OAAO,IAAIM,iBAAiB;AACrC,SAASN,OAAO,IAAIO,cAAc;AAClC,SAASP,OAAO,IAAIQ,eAAe;AACnC,SAASR,OAAO,IAAIS,wBAAwB;AAC5C,SAAST,OAAO,IAAIU,6BAA6B;AACjD,SAASV,OAAO,IAAIW,eAAe;AACnC,SAASX,OAAO,IAAIY,2BAA2B;AAC/C,SAASZ,OAAO,IAAIa,iBAAiB;AACrC,SAASb,OAAO,IAAIc,iBAAiB;AACrC,SAASd,OAAO,IAAIe,WAAW;AAC/B,SAASf,OAAO,IAAIgB,cAAc;AAClC;AACA,SAAShB,OAAO,IAAIiB,+BAA+B;AACnD,SAASjB,OAAO,IAAIkB,sBAAsB;AAC1C,SAASlB,OAAO,IAAImB,QAAQ;AAC5B,SAASnB,OAAO,IAAIoB,eAAe;AACnC,SAASpB,OAAO,IAAIqB,cAAc;AAClC;AACA,SAASrB,OAAO,IAAIsB,wBAAwB;;AAE5C;AACA;AACA;AACA,SAAStB,OAAO,IAAIuB,oBAAoB;AACxC,SAASvB,OAAO,IAAIwB,KAAK;AACzB,SAASxB,OAAO,IAAIyB,SAAS"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["default"],"sources":["../../../src/react-utils/useRestoreScrollPosition/index.js"],"sourcesContent":["export { default } from \"./useRestoreScrollPosition\";\nexport * from \"./useRestoreScrollPosition\";\n"],"mappings":"AAAA,SAASA,OAAO;AAChB"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { useEffect } from "react";
|
|
2
|
+
import { assoc, dissoc, prop } from "ramda";
|
|
3
|
+
import useFuncDebounce from "../useFuncDebounce";
|
|
4
|
+
import withImmutableActions from "../withImmutableActions";
|
|
5
|
+
import { create } from "zustand";
|
|
6
|
+
|
|
7
|
+
/** @type {import("neetocommons/react-utils").ZustandStoreHook} */
|
|
8
|
+
var useScrollStore = create(withImmutableActions(function (set, get) {
|
|
9
|
+
return {
|
|
10
|
+
scrollPositions: {},
|
|
11
|
+
setScrollPosition: function setScrollPosition(key, value) {
|
|
12
|
+
return set(function (state) {
|
|
13
|
+
return {
|
|
14
|
+
scrollPositions: assoc(key, value, state.scrollPositions)
|
|
15
|
+
};
|
|
16
|
+
});
|
|
17
|
+
},
|
|
18
|
+
removeScrollPosition: function removeScrollPosition(key) {
|
|
19
|
+
return set(function (state) {
|
|
20
|
+
return {
|
|
21
|
+
scrollPositions: dissoc(key, state.scrollPositions)
|
|
22
|
+
};
|
|
23
|
+
});
|
|
24
|
+
},
|
|
25
|
+
getScrollPosition: function getScrollPosition(key) {
|
|
26
|
+
return get().scrollPositions[key];
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
}));
|
|
30
|
+
var useRestoreScrollPosition = function useRestoreScrollPosition(key, ref) {
|
|
31
|
+
var setScrollPosition = useScrollStore(prop("setScrollPosition"));
|
|
32
|
+
var getScrollPosition = useScrollStore(prop("getScrollPosition"));
|
|
33
|
+
var handleScroll = useFuncDebounce(function () {
|
|
34
|
+
if (!ref.current) return;
|
|
35
|
+
setScrollPosition(key, ref.current.scrollTop);
|
|
36
|
+
}, 500);
|
|
37
|
+
useEffect(function () {
|
|
38
|
+
if (ref.current) {
|
|
39
|
+
var savedScrollPosition = getScrollPosition(key);
|
|
40
|
+
if (savedScrollPosition !== undefined) {
|
|
41
|
+
ref.current.scrollTop = savedScrollPosition;
|
|
42
|
+
}
|
|
43
|
+
ref.current.addEventListener("scroll", handleScroll);
|
|
44
|
+
}
|
|
45
|
+
return function () {
|
|
46
|
+
if (ref.current) {
|
|
47
|
+
ref.current.removeEventListener("scroll", handleScroll);
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
}, [key]);
|
|
51
|
+
};
|
|
52
|
+
export var useSetScrollPosition = function useSetScrollPosition() {
|
|
53
|
+
return useScrollStore(prop("setScrollPosition"));
|
|
54
|
+
};
|
|
55
|
+
export var useGetScrollPosition = function useGetScrollPosition() {
|
|
56
|
+
return useScrollStore(prop("getScrollPosition"));
|
|
57
|
+
};
|
|
58
|
+
export var useRemoveScrollPosition = function useRemoveScrollPosition() {
|
|
59
|
+
return useScrollStore(prop("removeScrollPosition"));
|
|
60
|
+
};
|
|
61
|
+
export default useRestoreScrollPosition;
|
|
62
|
+
//# sourceMappingURL=useRestoreScrollPosition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useRestoreScrollPosition.js","names":["useEffect","assoc","dissoc","prop","useFuncDebounce","withImmutableActions","create","useScrollStore","set","get","scrollPositions","setScrollPosition","key","value","state","removeScrollPosition","getScrollPosition","useRestoreScrollPosition","ref","handleScroll","current","scrollTop","savedScrollPosition","undefined","addEventListener","removeEventListener","useSetScrollPosition","useGetScrollPosition","useRemoveScrollPosition"],"sources":["../../../src/react-utils/useRestoreScrollPosition/useRestoreScrollPosition.js"],"sourcesContent":["import { useEffect } from \"react\";\n\nimport { assoc, dissoc, prop } from \"ramda\";\nimport useFuncDebounce from \"react-utils/useFuncDebounce\";\nimport withImmutableActions from \"react-utils/withImmutableActions\";\nimport { create } from \"zustand\";\n\n/** @type {import(\"neetocommons/react-utils\").ZustandStoreHook} */\nconst useScrollStore = create(\n withImmutableActions((set, get) => ({\n scrollPositions: {},\n setScrollPosition: (key, value) =>\n set(state => ({\n scrollPositions: assoc(key, value, state.scrollPositions),\n })),\n removeScrollPosition: key =>\n set(state => ({ scrollPositions: dissoc(key, state.scrollPositions) })),\n getScrollPosition: key => get().scrollPositions[key],\n }))\n);\n\nconst useRestoreScrollPosition = (key, ref) => {\n const setScrollPosition = useScrollStore(prop(\"setScrollPosition\"));\n const getScrollPosition = useScrollStore(prop(\"getScrollPosition\"));\n\n const handleScroll = useFuncDebounce(() => {\n if (!ref.current) return;\n setScrollPosition(key, ref.current.scrollTop);\n }, 500);\n\n useEffect(() => {\n if (ref.current) {\n const savedScrollPosition = getScrollPosition(key);\n if (savedScrollPosition !== undefined) {\n ref.current.scrollTop = savedScrollPosition;\n }\n ref.current.addEventListener(\"scroll\", handleScroll);\n }\n\n return () => {\n if (ref.current) {\n ref.current.removeEventListener(\"scroll\", handleScroll);\n }\n };\n }, [key]);\n};\n\nexport const useSetScrollPosition = () =>\n useScrollStore(prop(\"setScrollPosition\"));\n\nexport const useGetScrollPosition = () =>\n useScrollStore(prop(\"getScrollPosition\"));\n\nexport const useRemoveScrollPosition = () =>\n useScrollStore(prop(\"removeScrollPosition\"));\n\nexport default useRestoreScrollPosition;\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,OAAO;AAEjC,SAASC,KAAK,EAAEC,MAAM,EAAEC,IAAI,QAAQ,OAAO;AAC3C,OAAOC,eAAe;AACtB,OAAOC,oBAAoB;AAC3B,SAASC,MAAM,QAAQ,SAAS;;AAEhC;AACA,IAAMC,cAAc,GAAGD,MAAM,CAC3BD,oBAAoB,CAAC,UAACG,GAAG,EAAEC,GAAG;EAAA,OAAM;IAClCC,eAAe,EAAE,CAAC,CAAC;IACnBC,iBAAiB,EAAE,SAAAA,kBAACC,GAAG,EAAEC,KAAK;MAAA,OAC5BL,GAAG,CAAC,UAAAM,KAAK;QAAA,OAAK;UACZJ,eAAe,EAAET,KAAK,CAACW,GAAG,EAAEC,KAAK,EAAEC,KAAK,CAACJ,eAAe;QAC1D,CAAC;MAAA,CAAC,CAAC;IAAA;IACLK,oBAAoB,EAAE,SAAAA,qBAAAH,GAAG;MAAA,OACvBJ,GAAG,CAAC,UAAAM,KAAK;QAAA,OAAK;UAAEJ,eAAe,EAAER,MAAM,CAACU,GAAG,EAAEE,KAAK,CAACJ,eAAe;QAAE,CAAC;MAAA,CAAC,CAAC;IAAA;IACzEM,iBAAiB,EAAE,SAAAA,kBAAAJ,GAAG;MAAA,OAAIH,GAAG,EAAE,CAACC,eAAe,CAACE,GAAG,CAAC;IAAA;EACtD,CAAC;AAAA,CAAC,CAAC,CACJ;AAED,IAAMK,wBAAwB,GAAG,SAA3BA,wBAAwBA,CAAIL,GAAG,EAAEM,GAAG,EAAK;EAC7C,IAAMP,iBAAiB,GAAGJ,cAAc,CAACJ,IAAI,CAAC,mBAAmB,CAAC,CAAC;EACnE,IAAMa,iBAAiB,GAAGT,cAAc,CAACJ,IAAI,CAAC,mBAAmB,CAAC,CAAC;EAEnE,IAAMgB,YAAY,GAAGf,eAAe,CAAC,YAAM;IACzC,IAAI,CAACc,GAAG,CAACE,OAAO,EAAE;IAClBT,iBAAiB,CAACC,GAAG,EAAEM,GAAG,CAACE,OAAO,CAACC,SAAS,CAAC;EAC/C,CAAC,EAAE,GAAG,CAAC;EAEPrB,SAAS,CAAC,YAAM;IACd,IAAIkB,GAAG,CAACE,OAAO,EAAE;MACf,IAAME,mBAAmB,GAAGN,iBAAiB,CAACJ,GAAG,CAAC;MAClD,IAAIU,mBAAmB,KAAKC,SAAS,EAAE;QACrCL,GAAG,CAACE,OAAO,CAACC,SAAS,GAAGC,mBAAmB;MAC7C;MACAJ,GAAG,CAACE,OAAO,CAACI,gBAAgB,CAAC,QAAQ,EAAEL,YAAY,CAAC;IACtD;IAEA,OAAO,YAAM;MACX,IAAID,GAAG,CAACE,OAAO,EAAE;QACfF,GAAG,CAACE,OAAO,CAACK,mBAAmB,CAAC,QAAQ,EAAEN,YAAY,CAAC;MACzD;IACF,CAAC;EACH,CAAC,EAAE,CAACP,GAAG,CAAC,CAAC;AACX,CAAC;AAED,OAAO,IAAMc,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAA;EAAA,OAC/BnB,cAAc,CAACJ,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAAA;AAE3C,OAAO,IAAMwB,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAA;EAAA,OAC/BpB,cAAc,CAACJ,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAAA;AAE3C,OAAO,IAAMyB,uBAAuB,GAAG,SAA1BA,uBAAuBA,CAAA;EAAA,OAClCrB,cAAc,CAACJ,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAAA;AAE9C,eAAec,wBAAwB"}
|
package/react-utils.d.ts
CHANGED
|
@@ -1260,6 +1260,82 @@ export function useNavigationCheckpoints(...keys: string[]): {
|
|
|
1260
1260
|
*
|
|
1261
1261
|
*/
|
|
1262
1262
|
export function useRemoveNavigationCheckpoint(): (key: string) => void;
|
|
1263
|
+
/**
|
|
1264
|
+
*
|
|
1265
|
+
* The useRestoreScrollPosition hook facilitates the restoration and synchronization of scroll positions for components using Zustand store.
|
|
1266
|
+
*
|
|
1267
|
+
* Maintaining scroll positions as users navigate between different routes or interact with dynamic content is crucial for preserving user context and enhancing usability. useRestoreScrollPosition addresses this by allowing components to save and restore scroll positions based on specified keys.
|
|
1268
|
+
*
|
|
1269
|
+
* Here's an example demonstrating how to use useRestoreScrollPosition to manage scroll positions within a React component:
|
|
1270
|
+
*
|
|
1271
|
+
* @example
|
|
1272
|
+
*
|
|
1273
|
+
* import React, { useRef } from "react";
|
|
1274
|
+
* import useRestoreScrollPosition, { useRemoveScrollPosition } from "@bigbinary/neeto-commons-frontend/react-utils/useRestoreScrollPosition";
|
|
1275
|
+
*
|
|
1276
|
+
* const ScrollableComponent = ({ scrollKey }) => {
|
|
1277
|
+
* const ref = useRef(null);
|
|
1278
|
+
*
|
|
1279
|
+
* // Hook to manage scroll position restoration
|
|
1280
|
+
* useRestoreScrollPosition(scrollKey, ref);
|
|
1281
|
+
*
|
|
1282
|
+
* // Example of how to remove a saved scroll position
|
|
1283
|
+
* const removeScrollPosition = useRemoveScrollPosition();
|
|
1284
|
+
* const handleClearScrollPosition = () => {
|
|
1285
|
+
* removeScrollPosition(scrollKey);
|
|
1286
|
+
* };
|
|
1287
|
+
*
|
|
1288
|
+
* return (
|
|
1289
|
+
* <div {...{ ref }}>
|
|
1290
|
+
* { Scrollable content }
|
|
1291
|
+
* <button onClick={handleClearScrollPosition}>Clear Scroll Position</button>
|
|
1292
|
+
* </div>
|
|
1293
|
+
* );
|
|
1294
|
+
* }
|
|
1295
|
+
*
|
|
1296
|
+
* export default ScrollableComponent;
|
|
1297
|
+
* @endexample
|
|
1298
|
+
*/
|
|
1299
|
+
export function useRestoreScrollPosition(key: string, ref: React.RefObject<HTMLElement>): void;
|
|
1300
|
+
/**
|
|
1301
|
+
*
|
|
1302
|
+
* A custom hook that provides access to set scroll positions.
|
|
1303
|
+
*
|
|
1304
|
+
* @example
|
|
1305
|
+
*
|
|
1306
|
+
* import { useSetScrollPosition } from "@bigbinary/neeto-commons-frontend/react-utils/useRestoreScrollPosition
|
|
1307
|
+
*
|
|
1308
|
+
* const setScrollPosition = useSetScrollPosition();
|
|
1309
|
+
* setScrollPosition("myKey", 100);
|
|
1310
|
+
* @endexample
|
|
1311
|
+
*/
|
|
1312
|
+
export function useSetScrollPosition(): (key: string, value: number) => void;
|
|
1313
|
+
/**
|
|
1314
|
+
*
|
|
1315
|
+
* A custom hook that retrieves the scroll position for a given key.
|
|
1316
|
+
*
|
|
1317
|
+
* @example
|
|
1318
|
+
*
|
|
1319
|
+
* import { useGetScrollPosition } from "@bigbinary/neeto-commons-frontend/react-utils/useRestoreScrollPosition
|
|
1320
|
+
*
|
|
1321
|
+
* const getScrollPosition = useGetScrollPosition();
|
|
1322
|
+
* const position = getScrollPosition("myKey");
|
|
1323
|
+
* @endexample
|
|
1324
|
+
*/
|
|
1325
|
+
export function useGetScrollPosition(): (key: string) => number | undefined;
|
|
1326
|
+
/**
|
|
1327
|
+
*
|
|
1328
|
+
* A custom hook that removes a scroll position entry for a specified key.
|
|
1329
|
+
*
|
|
1330
|
+
* @example
|
|
1331
|
+
*
|
|
1332
|
+
* import { useRemoveScrollPosition } from "@bigbinary/neeto-commons-frontend/react-utils/useRestoreScrollPosition
|
|
1333
|
+
*
|
|
1334
|
+
* const removeScrollPosition = useRemoveScrollPosition();
|
|
1335
|
+
* removeScrollPosition("myKey");
|
|
1336
|
+
* @endexample
|
|
1337
|
+
*/
|
|
1338
|
+
export function useRemoveScrollPosition(): (key: string) => void;
|
|
1263
1339
|
/**
|
|
1264
1340
|
*
|
|
1265
1341
|
* The useFuncDebounce hook is a utility that extends the benefits of debouncing
|