@os-design/use-load-next 1.0.42 → 1.0.43
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/dist/{types/index.d.ts → index.d.ts} +3 -3
- package/dist/index.d.ts.map +1 -0
- package/dist/{esm/index.js → index.js} +1 -2
- package/package.json +9 -10
- package/src/index.ts +3 -3
- package/dist/cjs/index.js +0 -46
- package/dist/cjs/index.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/types/index.d.ts.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { RefObject } from 'react';
|
|
2
|
-
import { LoadMoreFn } from 'react-relay';
|
|
3
|
-
import { OperationType } from 'relay-runtime';
|
|
1
|
+
import { type RefObject } from 'react';
|
|
2
|
+
import type { LoadMoreFn } from 'react-relay';
|
|
3
|
+
import type { OperationType } from 'relay-runtime';
|
|
4
4
|
interface PaginationProps {
|
|
5
5
|
hasNext: boolean;
|
|
6
6
|
isLoadingNext: boolean;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAe,MAAM,OAAO,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,UAAU,eAAe;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;CACrC;AAED,UAAU,OAAO;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;CAC1C;AAKD,QAAA,MAAM,WAAW,oBACE,eAAe,YACvB,OAAO,KACf,IA0CF,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -34,5 +34,4 @@ const useLoadNext = (paginationProps, options = {}) => {
|
|
|
34
34
|
}, [getScrollHeight, getScrollTop, size.height, threshold, hasNext, isLoadingNext, loadNext, count]);
|
|
35
35
|
useEvent(container || (typeof window !== 'undefined' ? window : undefined), 'scroll', scrollListener);
|
|
36
36
|
};
|
|
37
|
-
export default useLoadNext;
|
|
38
|
-
//# sourceMappingURL=index.js.map
|
|
37
|
+
export default useLoadNext;
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@os-design/use-load-next",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.43",
|
|
4
4
|
"license": "UNLICENSED",
|
|
5
5
|
"repository": "git@gitlab.com:os-team/libs/os-design.git",
|
|
6
|
-
"
|
|
7
|
-
"
|
|
8
|
-
"types": "dist/
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
9
|
"files": [
|
|
10
10
|
"dist",
|
|
11
11
|
"src",
|
|
@@ -20,9 +20,8 @@
|
|
|
20
20
|
"sideEffects": false,
|
|
21
21
|
"scripts": {
|
|
22
22
|
"clean": "rimraf dist",
|
|
23
|
-
"build:esm": "cross-env BABEL_ENV=esm babel src --root-mode upward --extensions .ts,.tsx --out-dir dist
|
|
24
|
-
"build:
|
|
25
|
-
"build:types": "tsc --emitDeclarationOnly --declaration --declarationDir dist/types",
|
|
23
|
+
"build:esm": "cross-env BABEL_ENV=esm babel src --root-mode upward --extensions .ts,.tsx --out-dir dist",
|
|
24
|
+
"build:types": "tsc -p tsconfig.build.json --emitDeclarationOnly --declaration --declarationDir dist",
|
|
26
25
|
"build": "yarn clean && npm-run-all 'build:*'",
|
|
27
26
|
"ncu": "ncu -u"
|
|
28
27
|
},
|
|
@@ -30,8 +29,8 @@
|
|
|
30
29
|
"access": "public"
|
|
31
30
|
},
|
|
32
31
|
"dependencies": {
|
|
33
|
-
"@os-design/use-event": "^1.0.
|
|
34
|
-
"@os-design/use-size": "^1.0.
|
|
32
|
+
"@os-design/use-event": "^1.0.23",
|
|
33
|
+
"@os-design/use-size": "^1.0.24"
|
|
35
34
|
},
|
|
36
35
|
"devDependencies": {
|
|
37
36
|
"@types/react-relay": "^16.0.6",
|
|
@@ -44,5 +43,5 @@
|
|
|
44
43
|
"react-relay": ">=13",
|
|
45
44
|
"relay-runtime": ">=13"
|
|
46
45
|
},
|
|
47
|
-
"gitHead": "
|
|
46
|
+
"gitHead": "86a83e87297a07afe132782ca2c95023b7139276"
|
|
48
47
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import useEvent from '@os-design/use-event';
|
|
2
2
|
import useSize from '@os-design/use-size';
|
|
3
|
-
import { RefObject, useCallback } from 'react';
|
|
4
|
-
import { LoadMoreFn } from 'react-relay';
|
|
5
|
-
import { OperationType } from 'relay-runtime';
|
|
3
|
+
import { type RefObject, useCallback } from 'react';
|
|
4
|
+
import type { LoadMoreFn } from 'react-relay';
|
|
5
|
+
import type { OperationType } from 'relay-runtime';
|
|
6
6
|
|
|
7
7
|
interface PaginationProps {
|
|
8
8
|
hasNext: boolean;
|
package/dist/cjs/index.js
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports["default"] = void 0;
|
|
7
|
-
var _useEvent = _interopRequireDefault(require("@os-design/use-event"));
|
|
8
|
-
var _useSize = _interopRequireDefault(require("@os-design/use-size"));
|
|
9
|
-
var _react = require("react");
|
|
10
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
11
|
-
var getElement = function getElement(el) {
|
|
12
|
-
return el instanceof Element ? el : el.current;
|
|
13
|
-
};
|
|
14
|
-
var useLoadNext = function useLoadNext(paginationProps) {
|
|
15
|
-
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
16
|
-
var hasNext = paginationProps.hasNext,
|
|
17
|
-
isLoadingNext = paginationProps.isLoadingNext,
|
|
18
|
-
loadNext = paginationProps.loadNext;
|
|
19
|
-
var _options$count = options.count,
|
|
20
|
-
count = _options$count === void 0 ? 60 : _options$count,
|
|
21
|
-
_options$threshold = options.threshold,
|
|
22
|
-
threshold = _options$threshold === void 0 ? 500 : _options$threshold,
|
|
23
|
-
container = options.container;
|
|
24
|
-
var size = (0, _useSize["default"])(container);
|
|
25
|
-
var getScrollHeight = (0, _react.useCallback)(function () {
|
|
26
|
-
if (!container) return document.body.scrollHeight;
|
|
27
|
-
var containerElement = getElement(container);
|
|
28
|
-
if (!containerElement) return 0;
|
|
29
|
-
return containerElement.scrollHeight;
|
|
30
|
-
}, [container]);
|
|
31
|
-
var getScrollTop = (0, _react.useCallback)(function () {
|
|
32
|
-
if (!container) return window.pageYOffset;
|
|
33
|
-
var containerElement = getElement(container);
|
|
34
|
-
if (!containerElement) return 0;
|
|
35
|
-
return containerElement.scrollTop;
|
|
36
|
-
}, [container]);
|
|
37
|
-
var scrollListener = (0, _react.useCallback)(function () {
|
|
38
|
-
var maxScrollTopBeforeLoad = getScrollHeight() - size.height - threshold;
|
|
39
|
-
if (getScrollTop() >= maxScrollTopBeforeLoad && hasNext && !isLoadingNext) {
|
|
40
|
-
loadNext(count);
|
|
41
|
-
}
|
|
42
|
-
}, [getScrollHeight, getScrollTop, size.height, threshold, hasNext, isLoadingNext, loadNext, count]);
|
|
43
|
-
(0, _useEvent["default"])(container || (typeof window !== 'undefined' ? window : undefined), 'scroll', scrollListener);
|
|
44
|
-
};
|
|
45
|
-
var _default = exports["default"] = useLoadNext;
|
|
46
|
-
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_useEvent","_interopRequireDefault","require","_useSize","_react","e","__esModule","getElement","el","Element","current","useLoadNext","paginationProps","options","arguments","length","undefined","hasNext","isLoadingNext","loadNext","_options$count","count","_options$threshold","threshold","container","size","useSize","getScrollHeight","useCallback","document","body","scrollHeight","containerElement","getScrollTop","window","pageYOffset","scrollTop","scrollListener","maxScrollTopBeforeLoad","height","useEvent","_default","exports"],"sources":["../../src/index.ts"],"sourcesContent":["import useEvent from '@os-design/use-event';\nimport useSize from '@os-design/use-size';\nimport { RefObject, useCallback } from 'react';\nimport { LoadMoreFn } from 'react-relay';\nimport { OperationType } from 'relay-runtime';\n\ninterface PaginationProps {\n hasNext: boolean;\n isLoadingNext: boolean;\n loadNext: LoadMoreFn<OperationType>;\n}\n\ninterface Options {\n count?: number;\n threshold?: number;\n container?: Element | RefObject<Element>;\n}\n\nconst getElement = (el: Element | RefObject<Element>) =>\n el instanceof Element ? el : el.current;\n\nconst useLoadNext = (\n paginationProps: PaginationProps,\n options: Options = {}\n): void => {\n const { hasNext, isLoadingNext, loadNext } = paginationProps;\n const { count = 60, threshold = 500, container } = options;\n\n const size = useSize(container);\n\n const getScrollHeight = useCallback(() => {\n if (!container) return document.body.scrollHeight;\n const containerElement = getElement(container);\n if (!containerElement) return 0;\n return containerElement.scrollHeight;\n }, [container]);\n\n const getScrollTop = useCallback(() => {\n if (!container) return window.pageYOffset;\n const containerElement = getElement(container);\n if (!containerElement) return 0;\n return containerElement.scrollTop;\n }, [container]);\n\n const scrollListener = useCallback(() => {\n const maxScrollTopBeforeLoad = getScrollHeight() - size.height - threshold;\n if (getScrollTop() >= maxScrollTopBeforeLoad && hasNext && !isLoadingNext) {\n loadNext(count);\n }\n }, [\n getScrollHeight,\n getScrollTop,\n size.height,\n threshold,\n hasNext,\n isLoadingNext,\n loadNext,\n count,\n ]);\n\n useEvent(\n container ||\n ((typeof window !== 'undefined' ? window : undefined) as never),\n 'scroll',\n scrollListener\n );\n};\n\nexport default useLoadNext;\n"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,QAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AAA+C,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,gBAAAA,CAAA;AAgB/C,IAAME,UAAU,GAAG,SAAbA,UAAUA,CAAIC,EAAgC;EAAA,OAClDA,EAAE,YAAYC,OAAO,GAAGD,EAAE,GAAGA,EAAE,CAACE,OAAO;AAAA;AAEzC,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CACfC,eAAgC,EAEvB;EAAA,IADTC,OAAgB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAErB,IAAQG,OAAO,GAA8BL,eAAe,CAApDK,OAAO;IAAEC,aAAa,GAAeN,eAAe,CAA3CM,aAAa;IAAEC,QAAQ,GAAKP,eAAe,CAA5BO,QAAQ;EACxC,IAAAC,cAAA,GAAmDP,OAAO,CAAlDQ,KAAK;IAALA,KAAK,GAAAD,cAAA,cAAG,EAAE,GAAAA,cAAA;IAAAE,kBAAA,GAAiCT,OAAO,CAAtCU,SAAS;IAATA,SAAS,GAAAD,kBAAA,cAAG,GAAG,GAAAA,kBAAA;IAAEE,SAAS,GAAKX,OAAO,CAArBW,SAAS;EAE9C,IAAMC,IAAI,GAAG,IAAAC,mBAAO,EAACF,SAAS,CAAC;EAE/B,IAAMG,eAAe,GAAG,IAAAC,kBAAW,EAAC,YAAM;IACxC,IAAI,CAACJ,SAAS,EAAE,OAAOK,QAAQ,CAACC,IAAI,CAACC,YAAY;IACjD,IAAMC,gBAAgB,GAAGzB,UAAU,CAACiB,SAAS,CAAC;IAC9C,IAAI,CAACQ,gBAAgB,EAAE,OAAO,CAAC;IAC/B,OAAOA,gBAAgB,CAACD,YAAY;EACtC,CAAC,EAAE,CAACP,SAAS,CAAC,CAAC;EAEf,IAAMS,YAAY,GAAG,IAAAL,kBAAW,EAAC,YAAM;IACrC,IAAI,CAACJ,SAAS,EAAE,OAAOU,MAAM,CAACC,WAAW;IACzC,IAAMH,gBAAgB,GAAGzB,UAAU,CAACiB,SAAS,CAAC;IAC9C,IAAI,CAACQ,gBAAgB,EAAE,OAAO,CAAC;IAC/B,OAAOA,gBAAgB,CAACI,SAAS;EACnC,CAAC,EAAE,CAACZ,SAAS,CAAC,CAAC;EAEf,IAAMa,cAAc,GAAG,IAAAT,kBAAW,EAAC,YAAM;IACvC,IAAMU,sBAAsB,GAAGX,eAAe,CAAC,CAAC,GAAGF,IAAI,CAACc,MAAM,GAAGhB,SAAS;IAC1E,IAAIU,YAAY,CAAC,CAAC,IAAIK,sBAAsB,IAAIrB,OAAO,IAAI,CAACC,aAAa,EAAE;MACzEC,QAAQ,CAACE,KAAK,CAAC;IACjB;EACF,CAAC,EAAE,CACDM,eAAe,EACfM,YAAY,EACZR,IAAI,CAACc,MAAM,EACXhB,SAAS,EACTN,OAAO,EACPC,aAAa,EACbC,QAAQ,EACRE,KAAK,CACN,CAAC;EAEF,IAAAmB,oBAAQ,EACNhB,SAAS,KACL,OAAOU,MAAM,KAAK,WAAW,GAAGA,MAAM,GAAGlB,SAAS,CAAW,EACjE,QAAQ,EACRqB,cACF,CAAC;AACH,CAAC;AAAC,IAAAI,QAAA,GAAAC,OAAA,cAEa/B,WAAW","ignoreList":[]}
|
package/dist/esm/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["useEvent","useSize","useCallback","getElement","el","Element","current","useLoadNext","paginationProps","options","hasNext","isLoadingNext","loadNext","count","threshold","container","size","getScrollHeight","document","body","scrollHeight","containerElement","getScrollTop","window","pageYOffset","scrollTop","scrollListener","maxScrollTopBeforeLoad","height","undefined"],"sources":["../../src/index.ts"],"sourcesContent":["import useEvent from '@os-design/use-event';\nimport useSize from '@os-design/use-size';\nimport { RefObject, useCallback } from 'react';\nimport { LoadMoreFn } from 'react-relay';\nimport { OperationType } from 'relay-runtime';\n\ninterface PaginationProps {\n hasNext: boolean;\n isLoadingNext: boolean;\n loadNext: LoadMoreFn<OperationType>;\n}\n\ninterface Options {\n count?: number;\n threshold?: number;\n container?: Element | RefObject<Element>;\n}\n\nconst getElement = (el: Element | RefObject<Element>) =>\n el instanceof Element ? el : el.current;\n\nconst useLoadNext = (\n paginationProps: PaginationProps,\n options: Options = {}\n): void => {\n const { hasNext, isLoadingNext, loadNext } = paginationProps;\n const { count = 60, threshold = 500, container } = options;\n\n const size = useSize(container);\n\n const getScrollHeight = useCallback(() => {\n if (!container) return document.body.scrollHeight;\n const containerElement = getElement(container);\n if (!containerElement) return 0;\n return containerElement.scrollHeight;\n }, [container]);\n\n const getScrollTop = useCallback(() => {\n if (!container) return window.pageYOffset;\n const containerElement = getElement(container);\n if (!containerElement) return 0;\n return containerElement.scrollTop;\n }, [container]);\n\n const scrollListener = useCallback(() => {\n const maxScrollTopBeforeLoad = getScrollHeight() - size.height - threshold;\n if (getScrollTop() >= maxScrollTopBeforeLoad && hasNext && !isLoadingNext) {\n loadNext(count);\n }\n }, [\n getScrollHeight,\n getScrollTop,\n size.height,\n threshold,\n hasNext,\n isLoadingNext,\n loadNext,\n count,\n ]);\n\n useEvent(\n container ||\n ((typeof window !== 'undefined' ? window : undefined) as never),\n 'scroll',\n scrollListener\n );\n};\n\nexport default useLoadNext;\n"],"mappings":"AAAA,OAAOA,QAAQ,MAAM,sBAAsB;AAC3C,OAAOC,OAAO,MAAM,qBAAqB;AACzC,SAAoBC,WAAW,QAAQ,OAAO;AAgB9C,MAAMC,UAAU,GAAIC,EAAgC,IAClDA,EAAE,YAAYC,OAAO,GAAGD,EAAE,GAAGA,EAAE,CAACE,OAAO;AAEzC,MAAMC,WAAW,GAAGA,CAClBC,eAAgC,EAChCC,OAAgB,GAAG,CAAC,CAAC,KACZ;EACT,MAAM;IAAEC,OAAO;IAAEC,aAAa;IAAEC;EAAS,CAAC,GAAGJ,eAAe;EAC5D,MAAM;IAAEK,KAAK,GAAG,EAAE;IAAEC,SAAS,GAAG,GAAG;IAAEC;EAAU,CAAC,GAAGN,OAAO;EAE1D,MAAMO,IAAI,GAAGf,OAAO,CAACc,SAAS,CAAC;EAE/B,MAAME,eAAe,GAAGf,WAAW,CAAC,MAAM;IACxC,IAAI,CAACa,SAAS,EAAE,OAAOG,QAAQ,CAACC,IAAI,CAACC,YAAY;IACjD,MAAMC,gBAAgB,GAAGlB,UAAU,CAACY,SAAS,CAAC;IAC9C,IAAI,CAACM,gBAAgB,EAAE,OAAO,CAAC;IAC/B,OAAOA,gBAAgB,CAACD,YAAY;EACtC,CAAC,EAAE,CAACL,SAAS,CAAC,CAAC;EAEf,MAAMO,YAAY,GAAGpB,WAAW,CAAC,MAAM;IACrC,IAAI,CAACa,SAAS,EAAE,OAAOQ,MAAM,CAACC,WAAW;IACzC,MAAMH,gBAAgB,GAAGlB,UAAU,CAACY,SAAS,CAAC;IAC9C,IAAI,CAACM,gBAAgB,EAAE,OAAO,CAAC;IAC/B,OAAOA,gBAAgB,CAACI,SAAS;EACnC,CAAC,EAAE,CAACV,SAAS,CAAC,CAAC;EAEf,MAAMW,cAAc,GAAGxB,WAAW,CAAC,MAAM;IACvC,MAAMyB,sBAAsB,GAAGV,eAAe,CAAC,CAAC,GAAGD,IAAI,CAACY,MAAM,GAAGd,SAAS;IAC1E,IAAIQ,YAAY,CAAC,CAAC,IAAIK,sBAAsB,IAAIjB,OAAO,IAAI,CAACC,aAAa,EAAE;MACzEC,QAAQ,CAACC,KAAK,CAAC;IACjB;EACF,CAAC,EAAE,CACDI,eAAe,EACfK,YAAY,EACZN,IAAI,CAACY,MAAM,EACXd,SAAS,EACTJ,OAAO,EACPC,aAAa,EACbC,QAAQ,EACRC,KAAK,CACN,CAAC;EAEFb,QAAQ,CACNe,SAAS,KACL,OAAOQ,MAAM,KAAK,WAAW,GAAGA,MAAM,GAAGM,SAAS,CAAW,EACjE,QAAQ,EACRH,cACF,CAAC;AACH,CAAC;AAED,eAAenB,WAAW","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAe,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,UAAU,eAAe;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;CACrC;AAED,UAAU,OAAO;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;CAC1C;AAKD,QAAA,MAAM,WAAW,oBACE,eAAe,YACvB,OAAO,KACf,IA0CF,CAAC;AAEF,eAAe,WAAW,CAAC"}
|