@react-pakistan/util-functions 1.9.5 → 1.9.9

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/hooks/index.d.ts CHANGED
@@ -1,2 +1,4 @@
1
- export * from './use-selector';
2
1
  export * from './use-change';
2
+ export * from './use-selector';
3
+ export * from './use-toggle-state';
4
+ export * from './use-window-event-listener';
package/hooks/index.js CHANGED
@@ -10,5 +10,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
10
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
11
  };
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
- __exportStar(require("./use-selector"), exports);
14
13
  __exportStar(require("./use-change"), exports);
14
+ __exportStar(require("./use-selector"), exports);
15
+ __exportStar(require("./use-toggle-state"), exports);
16
+ __exportStar(require("./use-window-event-listener"), exports);
@@ -0,0 +1,10 @@
1
+ /**
2
+ * A util hook to enable force renders.
3
+ *
4
+ * @returns dispatch without action
5
+ * @author Taimoor Khan
6
+ * @remarks
7
+ */
8
+ /** End file docs */
9
+ import { DispatchWithoutAction } from 'react';
10
+ export declare const useForceRender: () => DispatchWithoutAction;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ /**
3
+ * A util hook to enable force renders.
4
+ *
5
+ * @returns dispatch without action
6
+ * @author Taimoor Khan
7
+ * @remarks
8
+ */
9
+ /** End file docs */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.useForceRender = void 0;
12
+ const react_1 = require("react");
13
+ const useForceRender = () => {
14
+ const [, dispatch] = (0, react_1.useReducer)((s) => s + 1, 0);
15
+ return dispatch;
16
+ };
17
+ exports.useForceRender = useForceRender;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * A util hook to stickyness in the app.
3
+ *
4
+ * @param offset - number of pixel which is offset
5
+ * @default offset = 0
6
+ * @returns isSticky as boolean
7
+ * @author Taimoor Khan
8
+ * @remarks
9
+ */
10
+ /** End file docs */
11
+ export declare const useSticky: (offset?: number) => boolean;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ /**
3
+ * A util hook to stickyness in the app.
4
+ *
5
+ * @param offset - number of pixel which is offset
6
+ * @default offset = 0
7
+ * @returns isSticky as boolean
8
+ * @author Taimoor Khan
9
+ * @remarks
10
+ */
11
+ /** End file docs */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.useSticky = void 0;
14
+ /* eslint-disable consistent-return */
15
+ const react_1 = require("react");
16
+ const use_toggle_state_1 = require("./use-toggle-state");
17
+ const useSticky = (offset = 0) => {
18
+ const [isSticky, setSticky, clearSticky] = (0, use_toggle_state_1.useToggleState)();
19
+ (0, react_1.useLayoutEffect)(() => {
20
+ const onScroll = () => {
21
+ window.requestAnimationFrame(() => {
22
+ if (window.pageYOffset > offset) {
23
+ setSticky();
24
+ }
25
+ else {
26
+ clearSticky();
27
+ }
28
+ });
29
+ };
30
+ if (window) {
31
+ window.addEventListener('scroll', onScroll);
32
+ return () => {
33
+ window.removeEventListener('scroll', onScroll);
34
+ };
35
+ }
36
+ }, [setSticky, offset, clearSticky]);
37
+ return isSticky;
38
+ };
39
+ exports.useSticky = useSticky;
@@ -0,0 +1,13 @@
1
+ /**
2
+ * A util hook to enable toggle state.
3
+ *
4
+ * @param defaultValue as an initial state toggle value
5
+ * @default defaultValue as false
6
+ * @returns [state, toggleOn, toggleOff]
7
+ * @author Taimoor Khan
8
+ * @remarks
9
+ */
10
+ /** End file docs */
11
+ declare type ReturnType = [boolean, () => void, () => void];
12
+ export declare const useToggleState: (defaultValue?: boolean) => ReturnType;
13
+ export {};
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ /**
3
+ * A util hook to enable toggle state.
4
+ *
5
+ * @param defaultValue as an initial state toggle value
6
+ * @default defaultValue as false
7
+ * @returns [state, toggleOn, toggleOff]
8
+ * @author Taimoor Khan
9
+ * @remarks
10
+ */
11
+ /** End file docs */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.useToggleState = void 0;
14
+ const react_1 = require("react");
15
+ const useToggleState = (defaultValue = false) => {
16
+ const [state, setState] = (0, react_1.useState)(defaultValue);
17
+ const toggleOn = (0, react_1.useCallback)(() => {
18
+ setState(true);
19
+ }, [setState]);
20
+ const toggleOff = (0, react_1.useCallback)(() => {
21
+ setState(false);
22
+ }, [setState]);
23
+ return [state, toggleOn, toggleOff];
24
+ };
25
+ exports.useToggleState = useToggleState;
@@ -0,0 +1 @@
1
+ export declare const useWindowEventListener: <T extends keyof WindowEventMap>(eventName: T, callback: (event: WindowEventMap[T]) => void) => void;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useWindowEventListener = void 0;
4
+ const react_1 = require("react");
5
+ const useWindowEventListener = (eventName, callback) => {
6
+ (0, react_1.useEffect)(() => {
7
+ window.addEventListener(eventName, callback);
8
+ return () => window.removeEventListener(eventName, callback);
9
+ }, [eventName, callback]);
10
+ };
11
+ exports.useWindowEventListener = useWindowEventListener;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-pakistan/util-functions",
3
- "version": "1.9.5",
3
+ "version": "1.9.9",
4
4
  "description": "A library of all util functions",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -11,7 +11,7 @@
11
11
  "generate:docs": "typedoc",
12
12
  "lint": "yarn lint:ts",
13
13
  "lint:staged": "lint-staged",
14
- "lint:ts": "eslint --config .eslintrc --fix .",
14
+ "lint:ts": "eslint --config .eslintrc .",
15
15
  "major": "npm version major",
16
16
  "minor": "npm version minor",
17
17
  "patch": "npm version patch",
@@ -40,25 +40,25 @@
40
40
  "@microsoft/tsdoc": "^0.13.2"
41
41
  },
42
42
  "devDependencies": {
43
- "@babel/core": "^7.16.7",
44
- "@babel/eslint-parser": "^7.16.5",
43
+ "@babel/core": "^7.17.0",
44
+ "@babel/eslint-parser": "^7.17.0",
45
45
  "@babel/preset-typescript": "^7.16.7",
46
- "@react-pakistan/eslint-config-shared": "^1.4.10",
46
+ "@react-pakistan/eslint-config-shared": "^1.4.12",
47
47
  "@types/jest": "^27.4.0",
48
- "@types/node": "^17.0.8",
48
+ "@types/node": "^17.0.15",
49
49
  "@types/react-redux": "^7.1.22",
50
- "@types/styled-components": "^5.1.20",
51
- "eslint": "^8.6.0",
50
+ "@types/styled-components": "^5.1.21",
51
+ "eslint": "^8.8.0",
52
52
  "husky": "^7.0.4",
53
- "jest": "^27.4.7",
54
- "lint-staged": "^12.1.7",
53
+ "jest": "^27.5.0",
54
+ "lint-staged": "^12.3.3",
55
55
  "lodash.isequal": "^4.5.0",
56
56
  "react": "^17.0.2",
57
57
  "react-redux": "^7.2.6",
58
58
  "rimraf": "^3.0.2",
59
- "ts-jest": "^27.1.2",
59
+ "ts-jest": "^27.1.3",
60
60
  "ts-loader": "^9.2.6",
61
- "typescript": "^4.5.4"
61
+ "typescript": "^4.5.5"
62
62
  },
63
63
  "peerDependencies": {
64
64
  "@types/react-redux": "^7.1.22",