@os-design/use-load-next 1.0.19 → 1.0.21
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/cjs/index.js +6 -14
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/index.js +0 -4
- package/dist/esm/index.js.map +1 -1
- package/package.json +5 -5
package/dist/cjs/index.js
CHANGED
|
@@ -4,29 +4,23 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports["default"] = void 0;
|
|
7
|
-
|
|
8
7
|
var _react = require("react");
|
|
9
|
-
|
|
10
8
|
var _useEvent = _interopRequireDefault(require("@os-design/use-event"));
|
|
11
|
-
|
|
12
9
|
var _useSize = _interopRequireDefault(require("@os-design/use-size"));
|
|
13
|
-
|
|
14
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
15
|
-
|
|
16
11
|
var getElement = function getElement(el) {
|
|
17
12
|
return el instanceof Element ? el : el.current;
|
|
18
13
|
};
|
|
19
|
-
|
|
20
14
|
var useLoadNext = function useLoadNext(paginationProps) {
|
|
21
15
|
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
22
16
|
var hasNext = paginationProps.hasNext,
|
|
23
|
-
|
|
24
|
-
|
|
17
|
+
isLoadingNext = paginationProps.isLoadingNext,
|
|
18
|
+
loadNext = paginationProps.loadNext;
|
|
25
19
|
var _options$count = options.count,
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
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;
|
|
30
24
|
var size = (0, _useSize["default"])(container);
|
|
31
25
|
var getScrollHeight = (0, _react.useCallback)(function () {
|
|
32
26
|
if (!container) return document.body.scrollHeight;
|
|
@@ -42,14 +36,12 @@ var useLoadNext = function useLoadNext(paginationProps) {
|
|
|
42
36
|
}, [container]);
|
|
43
37
|
var scrollListener = (0, _react.useCallback)(function () {
|
|
44
38
|
var maxScrollTopBeforeLoad = getScrollHeight() - size.height - threshold;
|
|
45
|
-
|
|
46
39
|
if (getScrollTop() >= maxScrollTopBeforeLoad && hasNext && !isLoadingNext) {
|
|
47
40
|
loadNext(count);
|
|
48
41
|
}
|
|
49
42
|
}, [getScrollHeight, getScrollTop, size.height, threshold, hasNext, isLoadingNext, loadNext, count]);
|
|
50
43
|
(0, _useEvent["default"])(container || (typeof window !== 'undefined' ? window : undefined), 'scroll', scrollListener);
|
|
51
44
|
};
|
|
52
|
-
|
|
53
45
|
var _default = useLoadNext;
|
|
54
46
|
exports["default"] = _default;
|
|
55
47
|
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["getElement","el","Element","current","useLoadNext","paginationProps","options","hasNext","isLoadingNext","loadNext","count","threshold","container","size","useSize","getScrollHeight","useCallback","document","body","scrollHeight","containerElement","getScrollTop","window","pageYOffset","scrollTop","scrollListener","maxScrollTopBeforeLoad","height","useEvent","undefined"],"sources":["../../src/index.ts"],"sourcesContent":["import { RefObject, useCallback } from 'react';\nimport { LoadMoreFn } from 'react-relay';\nimport { OperationType } from 'relay-runtime';\nimport useEvent from '@os-design/use-event';\nimport useSize from '@os-design/use-size';\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":"
|
|
1
|
+
{"version":3,"file":"index.js","names":["getElement","el","Element","current","useLoadNext","paginationProps","options","hasNext","isLoadingNext","loadNext","count","threshold","container","size","useSize","getScrollHeight","useCallback","document","body","scrollHeight","containerElement","getScrollTop","window","pageYOffset","scrollTop","scrollListener","maxScrollTopBeforeLoad","height","useEvent","undefined"],"sources":["../../src/index.ts"],"sourcesContent":["import { RefObject, useCallback } from 'react';\nimport { LoadMoreFn } from 'react-relay';\nimport { OperationType } from 'relay-runtime';\nimport useEvent from '@os-design/use-event';\nimport useSize from '@os-design/use-size';\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;AAGA;AACA;AAA0C;AAc1C,IAAMA,UAAU,GAAG,SAAbA,UAAU,CAAIC,EAAgC;EAAA,OAClDA,EAAE,YAAYC,OAAO,GAAGD,EAAE,GAAGA,EAAE,CAACE,OAAO;AAAA;AAEzC,IAAMC,WAAW,GAAG,SAAdA,WAAW,CACfC,eAAgC,EAEvB;EAAA,IADTC,OAAgB,uEAAG,CAAC,CAAC;EAErB,IAAQC,OAAO,GAA8BF,eAAe,CAApDE,OAAO;IAAEC,aAAa,GAAeH,eAAe,CAA3CG,aAAa;IAAEC,QAAQ,GAAKJ,eAAe,CAA5BI,QAAQ;EACxC,qBAAmDH,OAAO,CAAlDI,KAAK;IAALA,KAAK,+BAAG,EAAE;IAAA,qBAAiCJ,OAAO,CAAtCK,SAAS;IAATA,SAAS,mCAAG,GAAG;IAAEC,SAAS,GAAKN,OAAO,CAArBM,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,GAAGpB,UAAU,CAACY,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,GAAGpB,UAAU,CAACY,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,EAAE,GAAGF,IAAI,CAACc,MAAM,GAAGhB,SAAS;IAC1E,IAAIU,YAAY,EAAE,IAAIK,sBAAsB,IAAInB,OAAO,IAAI,CAACC,aAAa,EAAE;MACzEC,QAAQ,CAACC,KAAK,CAAC;IACjB;EACF,CAAC,EAAE,CACDK,eAAe,EACfM,YAAY,EACZR,IAAI,CAACc,MAAM,EACXhB,SAAS,EACTJ,OAAO,EACPC,aAAa,EACbC,QAAQ,EACRC,KAAK,CACN,CAAC;EAEF,IAAAkB,oBAAQ,EACNhB,SAAS,KACL,OAAOU,MAAM,KAAK,WAAW,GAAGA,MAAM,GAAGO,SAAS,CAAW,EACjE,QAAQ,EACRJ,cAAc,CACf;AACH,CAAC;AAAC,eAEarB,WAAW;AAAA"}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { useCallback } from 'react';
|
|
2
2
|
import useEvent from '@os-design/use-event';
|
|
3
3
|
import useSize from '@os-design/use-size';
|
|
4
|
-
|
|
5
4
|
const getElement = el => el instanceof Element ? el : el.current;
|
|
6
|
-
|
|
7
5
|
const useLoadNext = (paginationProps, options = {}) => {
|
|
8
6
|
const {
|
|
9
7
|
hasNext,
|
|
@@ -30,13 +28,11 @@ const useLoadNext = (paginationProps, options = {}) => {
|
|
|
30
28
|
}, [container]);
|
|
31
29
|
const scrollListener = useCallback(() => {
|
|
32
30
|
const maxScrollTopBeforeLoad = getScrollHeight() - size.height - threshold;
|
|
33
|
-
|
|
34
31
|
if (getScrollTop() >= maxScrollTopBeforeLoad && hasNext && !isLoadingNext) {
|
|
35
32
|
loadNext(count);
|
|
36
33
|
}
|
|
37
34
|
}, [getScrollHeight, getScrollTop, size.height, threshold, hasNext, isLoadingNext, loadNext, count]);
|
|
38
35
|
useEvent(container || (typeof window !== 'undefined' ? window : undefined), 'scroll', scrollListener);
|
|
39
36
|
};
|
|
40
|
-
|
|
41
37
|
export default useLoadNext;
|
|
42
38
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["useCallback","useEvent","useSize","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 { RefObject, useCallback } from 'react';\nimport { LoadMoreFn } from 'react-relay';\nimport { OperationType } from 'relay-runtime';\nimport useEvent from '@os-design/use-event';\nimport useSize from '@os-design/use-size';\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,SAAoBA,
|
|
1
|
+
{"version":3,"file":"index.js","names":["useCallback","useEvent","useSize","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 { RefObject, useCallback } from 'react';\nimport { LoadMoreFn } from 'react-relay';\nimport { OperationType } from 'relay-runtime';\nimport useEvent from '@os-design/use-event';\nimport useSize from '@os-design/use-size';\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,SAAoBA,WAAW,QAAQ,OAAO;AAG9C,OAAOC,QAAQ,MAAM,sBAAsB;AAC3C,OAAOC,OAAO,MAAM,qBAAqB;AAczC,MAAMC,UAAU,GAAIC,EAAgC,IAClDA,EAAE,YAAYC,OAAO,GAAGD,EAAE,GAAGA,EAAE,CAACE,OAAO;AAEzC,MAAMC,WAAW,GAAG,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,GAAGd,OAAO,CAACa,SAAS,CAAC;EAE/B,MAAME,eAAe,GAAGjB,WAAW,CAAC,MAAM;IACxC,IAAI,CAACe,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,GAAGtB,WAAW,CAAC,MAAM;IACrC,IAAI,CAACe,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,GAAG1B,WAAW,CAAC,MAAM;IACvC,MAAM2B,sBAAsB,GAAGV,eAAe,EAAE,GAAGD,IAAI,CAACY,MAAM,GAAGd,SAAS;IAC1E,IAAIQ,YAAY,EAAE,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;EAEFZ,QAAQ,CACNc,SAAS,KACL,OAAOQ,MAAM,KAAK,WAAW,GAAGA,MAAM,GAAGM,SAAS,CAAW,EACjE,QAAQ,EACRH,cAAc,CACf;AACH,CAAC;AAED,eAAenB,WAAW"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@os-design/use-load-next",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.21",
|
|
4
4
|
"license": "UNLICENSED",
|
|
5
5
|
"repository": "git@gitlab.com:os-team/libs/os-design.git",
|
|
6
6
|
"main": "dist/cjs/index.js",
|
|
@@ -29,11 +29,11 @@
|
|
|
29
29
|
"access": "public"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@os-design/use-event": "^1.0.
|
|
33
|
-
"@os-design/use-size": "^1.0.
|
|
32
|
+
"@os-design/use-event": "^1.0.11",
|
|
33
|
+
"@os-design/use-size": "^1.0.11"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
|
-
"@types/react-relay": "^14.1.
|
|
36
|
+
"@types/react-relay": "^14.1.2",
|
|
37
37
|
"react": "^18.2.0",
|
|
38
38
|
"react-relay": "^14.1.0",
|
|
39
39
|
"relay-runtime": "^14.1.0"
|
|
@@ -43,5 +43,5 @@
|
|
|
43
43
|
"react-relay": ">=13",
|
|
44
44
|
"relay-runtime": ">=13"
|
|
45
45
|
},
|
|
46
|
-
"gitHead": "
|
|
46
|
+
"gitHead": "146a53568bed5d88a27183e889dde51a44681366"
|
|
47
47
|
}
|