react-firebase-pagination 1.1.1 → 1.1.16

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 CHANGED
@@ -1,67 +1,80 @@
1
- # react-firebase-pagination
2
-
3
- A React Hook that makes it easy to paginate Firestore collections.
4
- This hook provides _cumulative_ pagination and maintains references to previous documents, so it might not be suitable for large document sets.
5
-
6
- ## Support for Firebase 9
7
-
8
- support for Firebase 9 and are backwards _incompatible_ with previous versions of Firebase.
9
-
10
- ## Install
11
-
12
- ```
13
- npm install react-firebase-pagination
14
- ```
15
-
16
- OR
17
-
18
- ```
19
- yarn add react-firebase-pagination
20
- ```
21
-
22
- ### Options
23
-
24
- | **prop** | **Type** | **Default** | **description** | **Required** |
25
- | ---------- | --------- | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ |
26
- | query | `Query` | null | The query of your Firebase database. e.g. `query(collection(db, '[collection]'))`. | ✔ |
27
- | pageSize | `Number` | 10 | The number of items per page. | |
28
- | pageByPage | `Boolean` | false | When this option is True, data is loaded page by page like Google search, and when it's not, it loads data on a single page and appends new data on the bottom of current data like a Facebook feed. | |
29
- | liveUpdate | `Boolean` | false | Add Firebase snapshot listener to update data live | |
30
-
31
- ### State
32
-
33
- | **prop** | **value** | **description** |
34
- | ----------- | ---------- | ------------------------------------------------------------------------- |
35
- | loading | `Boolean` | Is true when a page is loading. |
36
- | data | `Object` | Data object with the current page, total page, total docs, and docs array |
37
- | getNext | `Function` | W'll render the next page when called. Take no arguments. |
38
- | getPrevious | `Function` | W'll render the previous page when called. Take no arguments. |
39
- | hasNext | `Boolean` | It's true when a previous page has data. |
40
- | hasPrevious | `Boolean` | It's true when the next page has data. |
41
-
42
- ## Example Use
43
-
44
- This is an example of a [Firestore](https://firebase.google.com/docs/firestore/).
45
-
46
- You can also change query during runtime. Hook will detect new query and start pagination from the beginning.
47
- Here is an example of controlling query's `orderDirection` by React's state:
48
-
49
- ```jsx
50
- import usePaginate from 'react-firebase-pagination';
51
-
52
- const mainQuery = query(collection(db, '[collection]'), orderBy('created_timestamp', 'desc'));
53
-
54
- const App = () => {
55
- const { getNext, getPrevious, data, loading } = usePaginate({
56
- pageSize: 10,
57
- pageByPage: true,
58
- query: mainQuery,
59
- })
60
-
61
- if (loading) {
62
- return <LoadingComponent />
63
- }
64
-
65
- ...
66
- }
67
- ```
1
+ [![npm version](https://badge.fury.io/js/react-firebase-pagination.svg)](https://badge.fury.io/js/react-firebase-pagination)
2
+
3
+ # react-firebase-pagination
4
+
5
+ A React Hook that makes it easy to paginate Firestore collections.
6
+ This hook provides _cumulative_ pagination and maintains references to previous documents, so it might not be suitable for large document sets.
7
+
8
+ ## Support for Firebase 9
9
+
10
+ support for Firebase 9 and are backwards _incompatible_ with previous versions of Firebase.
11
+
12
+ ## Install
13
+
14
+ ```
15
+ npm install react-firebase-pagination
16
+ ```
17
+
18
+ OR
19
+
20
+ ```
21
+ yarn add react-firebase-pagination
22
+ ```
23
+
24
+ ### Options
25
+
26
+ | **prop** | **Type** | **Default** | **description** | **Required** |
27
+ | ---------- | --------- | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ |
28
+ | query | `Query` | null | The query of your Firebase database. e.g. `query(collection(db, '[collection]'))`. | ✔ |
29
+ | pageSize | `Number` | 10 | The number of items per page. | |
30
+ | pageByPage | `Boolean` | false | When this option is True, data is loaded page by page like Google search, and when it's not, it loads data on a single page and appends new data on the bottom of current data like a Facebook feed. | |
31
+ | liveUpdate | `Boolean` | false | Add Firebase snapshot listener to update data live | |
32
+
33
+ ### State
34
+
35
+ | **prop** | **value** | **description** |
36
+ | ----------- | ---------- | ----------------------------------------------------------------------------------------------------------- |
37
+ | loading | `Boolean` | Is true when a page is loading. |
38
+ | data | `Object` | [Data Object](#data-object-contain) |
39
+ | getNext | `Function` | W'll render the next page when called. (Take no arguments) |
40
+ | getPrevious | `Function` | W'll render the previous page when called. (Take no arguments and work only in [pageByPage](#options) mode) |
41
+ | hasNext | `Boolean` | It's true when the next page has data. |
42
+ | hasPrevious | `Boolean` | It's true when a previous page has data. (Work only in [pageByPage](#options) mode) |
43
+
44
+ ### Data Object Contain
45
+
46
+ | **prop** | **value** | **description** |
47
+ | ----------- | ----------- | -------------------------------------------------------------------------------------------------- |
48
+ | docs | `Documents` | Document Array. |
49
+ | totalDocs | `Number` | Total Document count. |
50
+ | totalPages | `Number` | Total Page count. |
51
+ | currentPage | `Number` | Current Page Number in [pageByPage](#options) mode or how may time's data load on the current page |
52
+
53
+ ## Example Use
54
+
55
+ This is an example of a [Firestore](https://firebase.google.com/docs/firestore/).
56
+
57
+ You can also change query during runtime. Hook will detect new query and start pagination from the beginning.
58
+ Here is an example of controlling query's `orderDirection` by React's state:
59
+
60
+ ```jsx
61
+ import usePagination from 'react-firebase-pagination';
62
+ import { query, orderBy, collection } from 'firebase/firestore'
63
+ import db from './your/database/path';
64
+
65
+ const mainQuery = query(collection(db, '[collection]'), orderBy('created_timestamp', 'desc'));
66
+
67
+ const App = () => {
68
+ const { getNext, getPrevious, data, loading } = usePagination({
69
+ pageSize: 10,
70
+ pageByPage: true,
71
+ query: mainQuery,
72
+ })
73
+
74
+ if (loading) {
75
+ return <LoadingComponent />
76
+ }
77
+
78
+ ...
79
+ }
80
+ ```
package/dist/cjs/App.d.ts CHANGED
@@ -1,20 +1,23 @@
1
1
  import { Query, QueryDocumentSnapshot } from 'firebase/firestore';
2
2
  type data = {
3
- docs: QueryDocumentSnapshot[];
4
3
  totalDocs: number;
5
4
  totalPages: number;
6
5
  currentPage: number;
6
+ docs: QueryDocumentSnapshot[];
7
7
  };
8
- type usePaginateType = (props: {
9
- query: Query;
10
- pageSize: number;
11
- pageByPage: boolean;
12
- liveUpdate: boolean;
13
- }) => {
14
- getNext: () => void;
15
- getPrevious: () => void;
8
+ type hookReturnValue = {
16
9
  data: data;
10
+ error?: Error;
17
11
  loading: boolean;
12
+ getNext: () => void;
13
+ getPrevious: () => void;
14
+ };
15
+ type hookProps = {
16
+ query: Query;
17
+ pageSize: number;
18
+ pageByPage?: boolean;
19
+ liveUpdate?: boolean;
18
20
  };
19
- declare const usePaginate: usePaginateType;
20
- export default usePaginate;
21
+ type usePaginateType = (props: hookProps) => hookReturnValue;
22
+ declare const usePagination: usePaginateType;
23
+ export default usePagination;
package/dist/cjs/App.js CHANGED
@@ -4,34 +4,38 @@ var tslib_1 = require("tslib");
4
4
  var react_1 = require("react");
5
5
  var firestore_1 = require("firebase/firestore");
6
6
  var addQuery = function (q, fun, value) {
7
- value && (q = (0, firestore_1.query)(q, fun(value)));
8
- return q;
7
+ return value ? (0, firestore_1.query)(q, fun(value)) : q;
9
8
  };
10
- var usePaginate = function (_a) {
11
- var mainQuery = _a.query, _b = _a.pageSize, pageSize = _b === void 0 ? 10 : _b, _c = _a.pageByPage, pageByPage = _c === void 0 ? false : _c, _d = _a.liveUpdate, liveUpdate = _d === void 0 ? false : _d;
12
- var _e = (0, react_1.useState)(false), loading = _e[0], setLoading = _e[1];
13
- var _f = (0, react_1.useState)([]), docs = _f[0], setDocs = _f[1];
14
- var _g = (0, react_1.useState)([]), lastSnap = _g[0], setLastSnap = _g[1];
15
- var _h = (0, react_1.useState)(addQuery(mainQuery, firestore_1.limit, pageSize)), query = _h[0], setQuery = _h[1];
16
- var _j = (0, react_1.useState)({
9
+ var usePagination = function (_a) {
10
+ var _b = _a.pageSize, pageSize = _b === void 0 ? 10 : _b, mainQuery = _a.query, _c = _a.pageByPage, pageByPage = _c === void 0 ? false : _c, _d = _a.liveUpdate, liveUpdate = _d === void 0 ? false : _d;
11
+ var _e = (0, react_1.useState)(), error = _e[0], setError = _e[1];
12
+ var _f = (0, react_1.useState)(false), loading = _f[0], setLoading = _f[1];
13
+ var _g = (0, react_1.useState)([]), docs = _g[0], setDocs = _g[1];
14
+ var _h = (0, react_1.useState)([]), lastSnap = _h[0], setLastSnap = _h[1];
15
+ var _j = (0, react_1.useState)(addQuery(mainQuery, firestore_1.limit, pageSize)), query = _j[0], setQuery = _j[1];
16
+ var _k = (0, react_1.useState)({
17
17
  totalDocs: 0,
18
18
  totalPages: 0,
19
- }), totals = _j[0], setTotals = _j[1];
20
- var setDoc = function (res) {
19
+ }), totals = _k[0], setTotals = _k[1];
20
+ var onRes = function (res) {
21
21
  if (res.docs.length) {
22
- setDocs(function (e) { return (pageByPage ? res.docs : tslib_1.__spreadArray(tslib_1.__spreadArray([], e, true), res.docs, true)); });
23
22
  setLastSnap(function (e) { return tslib_1.__spreadArray(tslib_1.__spreadArray([], e, true), [res.docs[pageSize - 1]], false); });
23
+ setDocs(function (e) { return (pageByPage ? res.docs : tslib_1.__spreadArray(tslib_1.__spreadArray([], e, true), res.docs, true)); });
24
24
  }
25
25
  setLoading(false);
26
26
  };
27
+ var onErr = function (err) {
28
+ setError(err);
29
+ setLoading(false);
30
+ };
27
31
  (0, react_1.useEffect)(function () {
32
+ setLoading(true);
28
33
  if (liveUpdate) {
29
- setLoading(true);
30
- var unsubscribe = (0, firestore_1.onSnapshot)(query, setDoc);
34
+ var unsubscribe = (0, firestore_1.onSnapshot)(query, onRes, onErr);
31
35
  return unsubscribe;
32
36
  }
33
37
  else {
34
- (0, firestore_1.getDocs)(query).then(setDoc);
38
+ (0, firestore_1.getDocs)(query).then(onRes).catch(onErr);
35
39
  return function () { return null; };
36
40
  }
37
41
  // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -64,13 +68,16 @@ var usePaginate = function (_a) {
64
68
  }
65
69
  };
66
70
  return (0, react_1.useMemo)(function () { return ({
71
+ error: error,
72
+ loading: loading,
67
73
  getNext: getNext,
68
74
  getPrevious: getPrevious,
69
- loading: loading,
70
- data: tslib_1.__assign(tslib_1.__assign({ docs: docs }, totals), { currentPage: lastSnap.length, hasNext: lastSnap.length < totals.totalPages, hasPrevious: 1 < lastSnap.length }),
75
+ hasNext: lastSnap.length < totals.totalPages,
76
+ hasPrevious: pageByPage ? 1 < lastSnap.length : false,
77
+ data: tslib_1.__assign(tslib_1.__assign({ docs: docs }, totals), { currentPage: lastSnap.length }),
71
78
  }); },
72
79
  // eslint-disable-next-line react-hooks/exhaustive-deps
73
80
  [docs]);
74
81
  };
75
- exports.default = usePaginate;
82
+ exports.default = usePagination;
76
83
  //# sourceMappingURL=App.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"App.js","sourceRoot":"","sources":["../../src/App.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"App.js","sourceRoot":"","sources":["../../src/App.tsx"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import usePaginate from './App';
2
- export default usePaginate;
1
+ import usePagination from './App';
2
+ export default usePagination;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,sDAA+B;AAE/B,kBAAe,aAAW,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,sDAAiC;AAEjC,kBAAe,aAAa,CAAA"}
package/dist/esm/App.d.ts CHANGED
@@ -1,20 +1,23 @@
1
1
  import { Query, QueryDocumentSnapshot } from 'firebase/firestore';
2
2
  type data = {
3
- docs: QueryDocumentSnapshot[];
4
3
  totalDocs: number;
5
4
  totalPages: number;
6
5
  currentPage: number;
6
+ docs: QueryDocumentSnapshot[];
7
7
  };
8
- type usePaginateType = (props: {
9
- query: Query;
10
- pageSize: number;
11
- pageByPage: boolean;
12
- liveUpdate: boolean;
13
- }) => {
14
- getNext: () => void;
15
- getPrevious: () => void;
8
+ type hookReturnValue = {
16
9
  data: data;
10
+ error?: Error;
17
11
  loading: boolean;
12
+ getNext: () => void;
13
+ getPrevious: () => void;
14
+ };
15
+ type hookProps = {
16
+ query: Query;
17
+ pageSize: number;
18
+ pageByPage?: boolean;
19
+ liveUpdate?: boolean;
18
20
  };
19
- declare const usePaginate: usePaginateType;
20
- export default usePaginate;
21
+ type usePaginateType = (props: hookProps) => hookReturnValue;
22
+ declare const usePagination: usePaginateType;
23
+ export default usePagination;
package/dist/esm/App.js CHANGED
@@ -2,34 +2,38 @@ import { __assign, __spreadArray } from "tslib";
2
2
  import { useState, useEffect, useMemo } from 'react';
3
3
  import { query, limit, getDocs, startAfter, onSnapshot, getCountFromServer, } from 'firebase/firestore';
4
4
  var addQuery = function (q, fun, value) {
5
- value && (q = query(q, fun(value)));
6
- return q;
5
+ return value ? query(q, fun(value)) : q;
7
6
  };
8
- var usePaginate = function (_a) {
9
- var mainQuery = _a.query, _b = _a.pageSize, pageSize = _b === void 0 ? 10 : _b, _c = _a.pageByPage, pageByPage = _c === void 0 ? false : _c, _d = _a.liveUpdate, liveUpdate = _d === void 0 ? false : _d;
10
- var _e = useState(false), loading = _e[0], setLoading = _e[1];
11
- var _f = useState([]), docs = _f[0], setDocs = _f[1];
12
- var _g = useState([]), lastSnap = _g[0], setLastSnap = _g[1];
13
- var _h = useState(addQuery(mainQuery, limit, pageSize)), query = _h[0], setQuery = _h[1];
14
- var _j = useState({
7
+ var usePagination = function (_a) {
8
+ var _b = _a.pageSize, pageSize = _b === void 0 ? 10 : _b, mainQuery = _a.query, _c = _a.pageByPage, pageByPage = _c === void 0 ? false : _c, _d = _a.liveUpdate, liveUpdate = _d === void 0 ? false : _d;
9
+ var _e = useState(), error = _e[0], setError = _e[1];
10
+ var _f = useState(false), loading = _f[0], setLoading = _f[1];
11
+ var _g = useState([]), docs = _g[0], setDocs = _g[1];
12
+ var _h = useState([]), lastSnap = _h[0], setLastSnap = _h[1];
13
+ var _j = useState(addQuery(mainQuery, limit, pageSize)), query = _j[0], setQuery = _j[1];
14
+ var _k = useState({
15
15
  totalDocs: 0,
16
16
  totalPages: 0,
17
- }), totals = _j[0], setTotals = _j[1];
18
- var setDoc = function (res) {
17
+ }), totals = _k[0], setTotals = _k[1];
18
+ var onRes = function (res) {
19
19
  if (res.docs.length) {
20
- setDocs(function (e) { return (pageByPage ? res.docs : __spreadArray(__spreadArray([], e, true), res.docs, true)); });
21
20
  setLastSnap(function (e) { return __spreadArray(__spreadArray([], e, true), [res.docs[pageSize - 1]], false); });
21
+ setDocs(function (e) { return (pageByPage ? res.docs : __spreadArray(__spreadArray([], e, true), res.docs, true)); });
22
22
  }
23
23
  setLoading(false);
24
24
  };
25
+ var onErr = function (err) {
26
+ setError(err);
27
+ setLoading(false);
28
+ };
25
29
  useEffect(function () {
30
+ setLoading(true);
26
31
  if (liveUpdate) {
27
- setLoading(true);
28
- var unsubscribe = onSnapshot(query, setDoc);
32
+ var unsubscribe = onSnapshot(query, onRes, onErr);
29
33
  return unsubscribe;
30
34
  }
31
35
  else {
32
- getDocs(query).then(setDoc);
36
+ getDocs(query).then(onRes).catch(onErr);
33
37
  return function () { return null; };
34
38
  }
35
39
  // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -62,13 +66,16 @@ var usePaginate = function (_a) {
62
66
  }
63
67
  };
64
68
  return useMemo(function () { return ({
69
+ error: error,
70
+ loading: loading,
65
71
  getNext: getNext,
66
72
  getPrevious: getPrevious,
67
- loading: loading,
68
- data: __assign(__assign({ docs: docs }, totals), { currentPage: lastSnap.length, hasNext: lastSnap.length < totals.totalPages, hasPrevious: 1 < lastSnap.length }),
73
+ hasNext: lastSnap.length < totals.totalPages,
74
+ hasPrevious: pageByPage ? 1 < lastSnap.length : false,
75
+ data: __assign(__assign({ docs: docs }, totals), { currentPage: lastSnap.length }),
69
76
  }); },
70
77
  // eslint-disable-next-line react-hooks/exhaustive-deps
71
78
  [docs]);
72
79
  };
73
- export default usePaginate;
80
+ export default usePagination;
74
81
  //# sourceMappingURL=App.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"App.js","sourceRoot":"","sources":["../../src/App.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"App.js","sourceRoot":"","sources":["../../src/App.tsx"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import usePaginate from './App';
2
- export default usePaginate;
1
+ import usePagination from './App';
2
+ export default usePagination;
package/dist/esm/index.js CHANGED
@@ -1,3 +1,3 @@
1
- import usePaginate from './App';
2
- export default usePaginate;
1
+ import usePagination from './App';
2
+ export default usePagination;
3
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,OAAO,CAAA;AAE/B,eAAe,WAAW,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,OAAO,CAAA;AAEjC,eAAe,aAAa,CAAA"}
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const Page: () => React.JSX.Element;
3
+ export default Page;
@@ -0,0 +1,58 @@
1
+ 'use client';
2
+ import { collection, query, limit } from 'firebase/firestore';
3
+ import React from 'react';
4
+ import { db } from '../../../firebase';
5
+ import usePagination from 'react-firebase-pagination';
6
+ var mainQuery = query(collection(db, 'formData'), limit(5));
7
+ var Page = function () {
8
+ var _a;
9
+ var _b = usePagination({
10
+ pageSize: 6,
11
+ pageByPage: true,
12
+ query: mainQuery
13
+ }), getNext = _b.getNext, getPrevious = _b.getPrevious, data = _b.data, loading = _b.loading;
14
+ console.log("this is data -----> ", data);
15
+ if (loading) {
16
+ return React.createElement("div", { className: 'flex w-screen h-screen items-center justify-center' }, "Loading...");
17
+ }
18
+ return (
19
+ // loading ? <span>Loading...</span> : <div className='flex flex-col ' >
20
+ React.createElement("div", { className: 'flex flex-col' },
21
+ React.createElement("div", { className: 'flex w-full h-12' }, ['username',
22
+ 'firstName ',
23
+ 'lastName ',
24
+ 'email ',
25
+ 'about ',
26
+ 'address ',
27
+ 'city ',
28
+ 'region ',
29
+ 'country ',
30
+ 'pinCode ',
31
+ 'candidate ',
32
+ 'everything ',
33
+ ].map(function (e) {
34
+ return React.createElement("div", { className: 'w-32 text-ellipsis overflow-hidden whitespace-nowrap text-center border-x' }, e);
35
+ })),
36
+ React.createElement("div", { className: 'flex flex-col w-full h-full' }, (_a = data === null || data === void 0 ? void 0 : data.docs) === null || _a === void 0 ? void 0 :
37
+ _a.map(function (e) {
38
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
39
+ return (React.createElement(React.Fragment, null,
40
+ React.createElement("div", { key: (_a = e.data()) === null || _a === void 0 ? void 0 : _a.id, className: 'flex w-full' },
41
+ React.createElement("span", { className: 'w-32 text-ellipsis overflow-hidden whitespace-nowrap text-center border-x' }, (_b = e.data()) === null || _b === void 0 ? void 0 : _b.userName),
42
+ React.createElement("span", { className: 'w-32 text-ellipsis overflow-hidden whitespace-nowrap text-center border-x' }, (_c = e.data()) === null || _c === void 0 ? void 0 : _c.firstName),
43
+ React.createElement("span", { className: 'w-32 text-ellipsis overflow-hidden whitespace-nowrap text-center border-x' }, (_d = e.data()) === null || _d === void 0 ? void 0 : _d.lastName),
44
+ React.createElement("span", { className: 'w-32 text-ellipsis overflow-hidden whitespace-nowrap text-center border-x' }, (_e = e.data()) === null || _e === void 0 ? void 0 : _e.email),
45
+ React.createElement("span", { className: 'w-32 text-ellipsis overflow-hidden whitespace-nowrap text-center border-x' }, (_f = e.data()) === null || _f === void 0 ? void 0 : _f.about),
46
+ React.createElement("span", { className: 'w-32 text-ellipsis overflow-hidden whitespace-nowrap text-center border-x' }, (_g = e.data()) === null || _g === void 0 ? void 0 : _g.address),
47
+ React.createElement("span", { className: 'w-32 text-ellipsis overflow-hidden whitespace-nowrap text-center border-x' }, (_h = e.data()) === null || _h === void 0 ? void 0 : _h.city),
48
+ React.createElement("span", { className: 'w-32 text-ellipsis overflow-hidden whitespace-nowrap text-center border-x' }, (_j = e.data()) === null || _j === void 0 ? void 0 : _j.region),
49
+ React.createElement("span", { className: 'w-32 text-ellipsis overflow-hidden whitespace-nowrap text-center border-x' }, (_k = e.data()) === null || _k === void 0 ? void 0 : _k.country),
50
+ React.createElement("span", { className: 'w-32 text-ellipsis overflow-hidden whitespace-nowrap text-center border-x' }, (_l = e.data()) === null || _l === void 0 ? void 0 : _l.pinCode),
51
+ React.createElement("span", { className: 'w-32 text-ellipsis overflow-hidden whitespace-nowrap text-center border-x' }, String((_m = e.data()) === null || _m === void 0 ? void 0 : _m.candidate)),
52
+ React.createElement("span", { className: 'w-32 text-ellipsis overflow-hidden whitespace-nowrap text-center border-x' }, String((_o = e.data()) === null || _o === void 0 ? void 0 : _o.everything)))));
53
+ }),
54
+ React.createElement("button", { className: 'bg-transparent w-32 hover:bg-blue-500 text-blue-700 font-semibold hover:text-white py-2 px-4 border border-blue-500 hover:border-transparent rounded', onClick: function () { return getNext(); } }, "Next"),
55
+ React.createElement("button", { className: 'bg-transparent w-32 hover:bg-blue-500 text-blue-700 font-semibold hover:text-white py-2 px-4 border border-blue-500 hover:border-transparent rounded', onClick: function () { return getPrevious(); } }, "Previous"))));
56
+ };
57
+ export default Page;
58
+ //# sourceMappingURL=test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/test.tsx"],"names":[],"mappings":"AACA,YAAY,CAAA;AACZ,OAAO,EAAU,UAAU,EAAW,KAAK,EAAW,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACxF,OAAO,KAA8B,MAAM,OAAO,CAAA;AAClD,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AACvC,OAAO,aAAa,MAAM,2BAA2B,CAAC;AAGtD,IAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAwB9D,IAAM,IAAI,GAAG;;IACH,IAAA,KAA0C,aAAa,CAAC;QAC1D,QAAQ,EAAE,CAAC;QACX,UAAU,EAAE,IAAI;QAChB,KAAK,EAAE,SAAS;KACnB,CAAC,EAJM,OAAO,aAAA,EAAE,WAAW,iBAAA,EAAE,IAAI,UAAA,EAAE,OAAO,aAIzC,CAAA;IACF,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC;IAE1C,IAAI,OAAO,EAAE;QACT,OAAO,6BAAK,SAAS,EAAC,oDAAoD,iBAEpE,CAAA;KACT;IAED,OAAO;IACH,wEAAwE;IACxE,6BAAK,SAAS,EAAC,eAAe;QAC1B,6BAAK,SAAS,EAAC,kBAAkB,IAEzB,CAAC,UAAU;YACP,YAAY;YACZ,WAAW;YACX,QAAQ;YACR,QAAQ;YACR,UAAU;YACV,OAAO;YACP,SAAS;YACT,UAAU;YACV,UAAU;YACV,YAAY;YACZ,aAAa;SAChB,CAAC,GAAG,CAAC,UAAA,CAAC;YACH,OAAA,6BAAK,SAAS,EAAC,2EAA2E,IAAG,CAAC,CAAO;QAArG,CAAqG,CACxG,CAEH;QACN,6BAAK,SAAS,EAAC,6BAA6B,IACvC,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI;eAAE,GAAG,CAAC,UAAC,CAAC;;gBACf,OAAO,CACH;oBACI,6BAAK,GAAG,EAAE,MAAA,CAAC,CAAC,IAAI,EAAE,0CAAE,EAAE,EAAE,SAAS,EAAC,aAAa;wBAC3C,8BAAM,SAAS,EAAC,2EAA2E,IAAG,MAAA,CAAC,CAAC,IAAI,EAAE,0CAAE,QAAQ,CAAQ;wBACxH,8BAAM,SAAS,EAAC,2EAA2E,IAAE,MAAA,CAAC,CAAC,IAAI,EAAE,0CAAE,SAAS,CAAQ;wBACxH,8BAAM,SAAS,EAAC,2EAA2E,IAAE,MAAA,CAAC,CAAC,IAAI,EAAE,0CAAE,QAAQ,CAAQ;wBACvH,8BAAM,SAAS,EAAC,2EAA2E,IAAE,MAAA,CAAC,CAAC,IAAI,EAAE,0CAAE,KAAK,CAAQ;wBACpH,8BAAM,SAAS,EAAC,2EAA2E,IAAE,MAAA,CAAC,CAAC,IAAI,EAAE,0CAAE,KAAK,CAAQ;wBACpH,8BAAM,SAAS,EAAC,2EAA2E,IAAE,MAAA,CAAC,CAAC,IAAI,EAAE,0CAAE,OAAO,CAAQ;wBACtH,8BAAM,SAAS,EAAC,2EAA2E,IAAE,MAAA,CAAC,CAAC,IAAI,EAAE,0CAAE,IAAI,CAAQ;wBACnH,8BAAM,SAAS,EAAC,2EAA2E,IAAE,MAAA,CAAC,CAAC,IAAI,EAAE,0CAAE,MAAM,CAAQ;wBACrH,8BAAM,SAAS,EAAC,2EAA2E,IAAE,MAAA,CAAC,CAAC,IAAI,EAAE,0CAAE,OAAO,CAAQ;wBACtH,8BAAM,SAAS,EAAC,2EAA2E,IAAE,MAAA,CAAC,CAAC,IAAI,EAAE,0CAAE,OAAO,CAAQ;wBACtH,8BAAM,SAAS,EAAC,2EAA2E,IAAE,MAAM,CAAC,MAAA,CAAC,CAAC,IAAI,EAAE,0CAAE,SAAS,CAAC,CAAQ;wBAChI,8BAAM,SAAS,EAAC,2EAA2E,IAAE,MAAM,CAAC,MAAA,CAAC,CAAC,IAAI,EAAE,0CAAE,UAAU,CAAC,CAAQ,CAC/H,CAEP,CACN,CAAA;YACL,CAAC,CAAC;YACF,gCAAQ,SAAS,EAAC,sJAAsJ,EAAC,OAAO,EAAE,cAAM,OAAA,OAAO,EAAE,EAAT,CAAS,WAAe;YAChN,gCAAQ,SAAS,EAAC,sJAAsJ,EAAC,OAAO,EAAE,cAAM,OAAA,WAAW,EAAE,EAAb,CAAa,eAAmB,CACtN,CAEJ,CACT,CAAA;AACL,CAAC,CAAA;AAED,eAAe,IAAI,CAAA"}
package/package.json CHANGED
@@ -1,55 +1,61 @@
1
- {
2
- "name": "react-firebase-pagination",
3
- "version": "1.1.1",
4
- "main": "./dist/cjs/index.js",
5
- "module": "./dist/esm/index.js",
6
- "types": "./dist/esm/index.d.ts",
7
- "author": "Chirag Codealchemy",
8
- "license": "MIT",
9
- "repository": {
10
- "type": "git",
11
- "url": "git+https://github.com/chirag-codealchemy/react-firebase-pagination.git"
12
- },
13
- "scripts": {
14
- "build": "yarn build:esm && yarn build:cjs",
15
- "build:esm": "tsc",
16
- "build:cjs": "tsc --module commonjs --outDir dist/cjs",
17
- "lint": "eslint \"{**/*,*}.{js,ts,jsx,tsx}\"",
18
- "prettier": "prettier --write \"src/**.{js,ts,jsx,tsx}\"",
19
- "prepare": "yarn build",
20
- "prepublishOnly": "yarn prettier && yarn lint"
21
- },
22
- "peerDependencies": {
23
- "firebase": ">=9",
24
- "react": ">=16"
25
- },
26
- "files": [
27
- "dist",
28
- "LICENSE",
29
- "README.md"
30
- ],
31
- "keywords": [
32
- "react",
33
- "firebase",
34
- "pagination",
35
- "firebase pagination",
36
- "firebase-pagination",
37
- "react firebase pagination",
38
- "react-firebase-pagination"
39
- ],
40
- "devDependencies": {
41
- "@types/react": "^18.2.8",
42
- "@typescript-eslint/eslint-plugin": "^5.59.8",
43
- "@typescript-eslint/parser": "^5.59.8",
44
- "eslint": "^8.42.0",
45
- "eslint-config-prettier": "^8.8.0",
46
- "eslint-plugin-prettier": "^4.2.1",
47
- "eslint-plugin-react": "^7.32.2",
48
- "eslint-plugin-react-hooks": "^4.6.0",
49
- "firebase": "^9",
50
- "prettier": "^2.8.8",
51
- "react": "^18.2.0",
52
- "react-dom": "^18.2.0",
53
- "typescript": "5.1.3"
54
- }
55
- }
1
+ {
2
+ "name": "react-firebase-pagination",
3
+ "version": "1.1.16",
4
+ "main": "./dist/cjs/index.js",
5
+ "module": "./dist/esm/index.js",
6
+ "types": "./dist/esm/index.d.ts",
7
+ "author": "Patel Chirag",
8
+ "license": "MIT",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/Chirag7096/react-firebase-pagination.git"
12
+ },
13
+ "scripts": {
14
+ "build": "yarn build:esm && yarn build:cjs",
15
+ "build:esm": "tsc",
16
+ "build:cjs": "tsc --module commonjs --outDir dist/cjs",
17
+ "lint": "eslint \"{**/*,*}.{js,ts,jsx,tsx}\"",
18
+ "prettier": "prettier --write \"src/**.{js,ts,jsx,tsx}\"",
19
+ "prepare": "yarn build",
20
+ "prepublishOnly": "yarn prettier && yarn lint"
21
+ },
22
+ "peerDependencies": {
23
+ "firebase": ">=9",
24
+ "react": ">=16"
25
+ },
26
+ "files": [
27
+ "dist",
28
+ "LICENSE",
29
+ "README.md"
30
+ ],
31
+ "keywords": [
32
+ "expo",
33
+ "next",
34
+ "react",
35
+ "firebase",
36
+ "pagination",
37
+ "firebase pagination",
38
+ "firebase-pagination",
39
+ "expo firebase pagination",
40
+ "expo-firebase-pagination",
41
+ "next-firebase-pagination",
42
+ "next firebase pagination",
43
+ "react firebase pagination",
44
+ "react-firebase-pagination"
45
+ ],
46
+ "devDependencies": {
47
+ "@types/react": "^18.2.8",
48
+ "@typescript-eslint/eslint-plugin": "^5.59.8",
49
+ "@typescript-eslint/parser": "^5.59.8",
50
+ "eslint": "^8.42.0",
51
+ "eslint-config-prettier": "^8.8.0",
52
+ "eslint-plugin-prettier": "^4.2.1",
53
+ "eslint-plugin-react": "^7.32.2",
54
+ "eslint-plugin-react-hooks": "^4.6.0",
55
+ "firebase": "^9",
56
+ "prettier": "^2.8.8",
57
+ "react": "^18.2.0",
58
+ "react-dom": "^18.2.0",
59
+ "typescript": "5.1.3"
60
+ }
61
+ }