@ethlete/cdk 2.9.2 → 2.11.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/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @ethlete/cdk
2
2
 
3
+ ## 2.11.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`089543e`](https://github.com/ethlete-io/ethdk/commit/089543e046c486ef62e22c51a0e0498d7a348723) Thanks [@TomTomB](https://github.com/TomTomB)! - Allow for setting the first page inside pagination util
8
+
9
+ ## 2.10.0
10
+
11
+ ### Minor Changes
12
+
13
+ - [`a53aa52`](https://github.com/ethlete-io/ethdk/commit/a53aa524a2657c657b2e00d0379bf2cc45a92a88) Thanks [@TomTomB](https://github.com/TomTomB)! - Add additional config options to paginate util
14
+
3
15
  ## 2.9.2
4
16
 
5
17
  ### Patch Changes
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvY29tcG9uZW50cy9wYWdpbmF0aW9uL3R5cGVzL3BhZ2luYXRpb24udHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgUGFnaW5hdGVPcHRpb25zIHtcbiAgY3VycmVudFBhZ2U6IG51bWJlcjtcbiAgdG90YWxQYWdlQ291bnQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYWdpbmF0aW9uSXRlbSB7XG4gIGN1cnJlbnQ6IGJvb2xlYW47XG4gIHBhZ2U6IG51bWJlcjtcbiAgYXJpYUxhYmVsOiBzdHJpbmc7XG4gIGRpc2FibGVkOiBib29sZWFuO1xuICB0eXBlOiAncGFnZScgfCAnaG90TGluayc7XG4gIGV4cGxpY2l0VHlwZTogJ2ZpcnN0JyB8ICdsYXN0JyB8ICdwcmV2aW91cycgfCAnbmV4dCcgfCAnY3VycmVudCcgfCAncGFnZS1udW1iZXItY2xvc2UnIHwgJ3BhZ2UtbnVtYmVyLWZhcic7XG4gIHVybDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2luYXRpb25IZWFkU2VydmljZUNvbmZpZyB7XG4gIGZpcnN0UGFnZVRpdGxlOiBzdHJpbmcgfCBudWxsO1xuICB0aXRsZVRlbXBsYXRlOiBzdHJpbmcgfCBudWxsO1xuICBhZGRDYW5vbmljYWxUYWc6IGJvb2xlYW47XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvY29tcG9uZW50cy9wYWdpbmF0aW9uL3R5cGVzL3BhZ2luYXRpb24udHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgUGFnaW5hdGVPcHRpb25zIHtcbiAgY3VycmVudFBhZ2U6IG51bWJlcjtcbiAgdG90YWxQYWdlQ291bnQ6IG51bWJlcjtcblxuICAvKipcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIG9taXRGaXJzdExhc3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgb21pdFByZXZpb3VzTmV4dD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBkZWZhdWx0IDJcbiAgICovXG4gIHBhZ2VzQmVmb3JlQWZ0ZXI/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIGZpcnN0UGFnZT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYWdpbmF0aW9uSXRlbSB7XG4gIGN1cnJlbnQ6IGJvb2xlYW47XG4gIHBhZ2U6IG51bWJlcjtcbiAgYXJpYUxhYmVsOiBzdHJpbmc7XG4gIGRpc2FibGVkOiBib29sZWFuO1xuICB0eXBlOiAncGFnZScgfCAnaG90TGluayc7XG4gIGV4cGxpY2l0VHlwZTogJ2ZpcnN0JyB8ICdsYXN0JyB8ICdwcmV2aW91cycgfCAnbmV4dCcgfCAnY3VycmVudCcgfCAncGFnZS1udW1iZXItY2xvc2UnIHwgJ3BhZ2UtbnVtYmVyLWZhcic7XG4gIHVybDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2luYXRpb25IZWFkU2VydmljZUNvbmZpZyB7XG4gIGZpcnN0UGFnZVRpdGxlOiBzdHJpbmcgfCBudWxsO1xuICB0aXRsZVRlbXBsYXRlOiBzdHJpbmcgfCBudWxsO1xuICBhZGRDYW5vbmljYWxUYWc6IGJvb2xlYW47XG59XG4iXX0=
@@ -3,8 +3,9 @@ export const paginate = (value) => {
3
3
  if (!value) {
4
4
  return null;
5
5
  }
6
+ const { omitFirstLast = false, omitPreviousNext = false, pagesBeforeAfter = 2, firstPage = 1 } = value;
6
7
  const pages = [];
7
- const activePage = clamp(value.currentPage, 1, value.totalPageCount);
8
+ const activePage = clamp(value.currentPage, firstPage, value.totalPageCount);
8
9
  if (value.totalPageCount === 0) {
9
10
  return null;
10
11
  }
@@ -19,27 +20,41 @@ export const paginate = (value) => {
19
20
  }
20
21
  return url.toString();
21
22
  };
22
- pages.push({
23
- page: 1,
24
- current: false,
25
- ariaLabel: 'First page',
26
- disabled: activePage === 1,
27
- type: 'hotLink',
28
- explicitType: 'first',
29
- url: createUrl(1),
30
- });
31
- pages.push({
32
- page: activePage - 1,
33
- current: false,
34
- ariaLabel: `Previous page`,
35
- disabled: activePage === 1,
36
- type: 'hotLink',
37
- explicitType: 'previous',
38
- url: createUrl(activePage - 1),
39
- });
40
- // add 2 pages before and after active page
41
- for (let i = activePage - 2; i <= activePage + 2; i++) {
42
- if (i > 0 && i <= value.totalPageCount) {
23
+ if (!omitFirstLast) {
24
+ pages.push({
25
+ page: firstPage,
26
+ current: false,
27
+ ariaLabel: 'First page',
28
+ disabled: activePage === firstPage,
29
+ type: 'hotLink',
30
+ explicitType: 'first',
31
+ url: createUrl(firstPage),
32
+ });
33
+ }
34
+ if (!omitPreviousNext) {
35
+ pages.push({
36
+ page: activePage - 1,
37
+ current: false,
38
+ ariaLabel: `Previous page`,
39
+ disabled: activePage === 1,
40
+ type: 'hotLink',
41
+ explicitType: 'previous',
42
+ url: createUrl(activePage - 1),
43
+ });
44
+ }
45
+ let pagesBefore = activePage - pagesBeforeAfter;
46
+ let pagesAfter = activePage + pagesBeforeAfter;
47
+ if (pagesBefore < firstPage) {
48
+ pagesAfter += firstPage - pagesBefore;
49
+ pagesBefore = firstPage;
50
+ }
51
+ if (pagesAfter > value.totalPageCount) {
52
+ pagesBefore -= pagesAfter - value.totalPageCount;
53
+ pagesAfter = value.totalPageCount;
54
+ }
55
+ // add N pages before and after active page
56
+ for (let i = pagesBefore; i <= pagesAfter; i++) {
57
+ if (i > firstPage - 1 && i <= value.totalPageCount) {
43
58
  const explicitType = i === activePage
44
59
  ? 'current'
45
60
  : i === activePage - 1 || i === activePage + 1
@@ -56,24 +71,28 @@ export const paginate = (value) => {
56
71
  });
57
72
  }
58
73
  }
59
- pages.push({
60
- page: activePage + 1,
61
- current: false,
62
- ariaLabel: `Next page`,
63
- disabled: activePage === value.totalPageCount,
64
- type: 'hotLink',
65
- explicitType: 'next',
66
- url: createUrl(activePage + 1),
67
- });
68
- pages.push({
69
- page: value.totalPageCount,
70
- current: false,
71
- ariaLabel: `Last page`,
72
- disabled: activePage === value.totalPageCount,
73
- type: 'hotLink',
74
- explicitType: 'last',
75
- url: createUrl(value.totalPageCount),
76
- });
74
+ if (!omitPreviousNext) {
75
+ pages.push({
76
+ page: activePage + 1,
77
+ current: false,
78
+ ariaLabel: `Next page`,
79
+ disabled: activePage === value.totalPageCount,
80
+ type: 'hotLink',
81
+ explicitType: 'next',
82
+ url: createUrl(activePage + 1),
83
+ });
84
+ }
85
+ if (!omitFirstLast) {
86
+ pages.push({
87
+ page: value.totalPageCount,
88
+ current: false,
89
+ ariaLabel: `Last page`,
90
+ disabled: activePage === value.totalPageCount,
91
+ type: 'hotLink',
92
+ explicitType: 'last',
93
+ url: createUrl(value.totalPageCount),
94
+ });
95
+ }
77
96
  return pages;
78
97
  };
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL3BhZ2luYXRpb24vdXRpbHMvcGFnaW5hdGlvbi51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdEMsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQUMsS0FBOEIsRUFBRSxFQUFFO0lBQ3pELElBQUksQ0FBQyxLQUFLLEVBQUU7UUFDVixPQUFPLElBQUksQ0FBQztLQUNiO0lBRUQsTUFBTSxLQUFLLEdBQXFCLEVBQUUsQ0FBQztJQUNuQyxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBRXJFLElBQUksS0FBSyxDQUFDLGNBQWMsS0FBSyxDQUFDLEVBQUU7UUFDOUIsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUVELE1BQU0sVUFBVSxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFakQsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRTtRQUNqQyxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFckMsSUFBSSxJQUFJLEtBQUssQ0FBQyxFQUFFO1lBQ2QsR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDakM7YUFBTTtZQUNMLEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztTQUMvQztRQUVELE9BQU8sR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3hCLENBQUMsQ0FBQztJQUVGLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDVCxJQUFJLEVBQUUsQ0FBQztRQUNQLE9BQU8sRUFBRSxLQUFLO1FBQ2QsU0FBUyxFQUFFLFlBQVk7UUFDdkIsUUFBUSxFQUFFLFVBQVUsS0FBSyxDQUFDO1FBQzFCLElBQUksRUFBRSxTQUFTO1FBQ2YsWUFBWSxFQUFFLE9BQU87UUFDckIsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7S0FDbEIsQ0FBQyxDQUFDO0lBQ0gsS0FBSyxDQUFDLElBQUksQ0FBQztRQUNULElBQUksRUFBRSxVQUFVLEdBQUcsQ0FBQztRQUNwQixPQUFPLEVBQUUsS0FBSztRQUNkLFNBQVMsRUFBRSxlQUFlO1FBQzFCLFFBQVEsRUFBRSxVQUFVLEtBQUssQ0FBQztRQUMxQixJQUFJLEVBQUUsU0FBUztRQUNmLFlBQVksRUFBRSxVQUFVO1FBQ3hCLEdBQUcsRUFBRSxTQUFTLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztLQUMvQixDQUFDLENBQUM7SUFFSCwyQ0FBMkM7SUFDM0MsS0FBSyxJQUFJLENBQUMsR0FBRyxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ3JELElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLGNBQWMsRUFBRTtZQUN0QyxNQUFNLFlBQVksR0FDaEIsQ0FBQyxLQUFLLFVBQVU7Z0JBQ2QsQ0FBQyxDQUFDLFNBQVM7Z0JBQ1gsQ0FBQyxDQUFDLENBQUMsS0FBSyxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxVQUFVLEdBQUcsQ0FBQztvQkFDOUMsQ0FBQyxDQUFDLG1CQUFtQjtvQkFDckIsQ0FBQyxDQUFDLGlCQUFpQixDQUFDO1lBRXhCLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQ1QsSUFBSSxFQUFFLENBQUM7Z0JBQ1AsT0FBTyxFQUFFLENBQUMsS0FBSyxVQUFVO2dCQUN6QixTQUFTLEVBQUUsUUFBUSxDQUFDLEVBQUU7Z0JBQ3RCLFFBQVEsRUFBRSxLQUFLO2dCQUNmLElBQUksRUFBRSxNQUFNO2dCQUNaLFlBQVk7Z0JBQ1osR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7YUFDbEIsQ0FBQyxDQUFDO1NBQ0o7S0FDRjtJQUVELEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDVCxJQUFJLEVBQUUsVUFBVSxHQUFHLENBQUM7UUFDcEIsT0FBTyxFQUFFLEtBQUs7UUFDZCxTQUFTLEVBQUUsV0FBVztRQUN0QixRQUFRLEVBQUUsVUFBVSxLQUFLLEtBQUssQ0FBQyxjQUFjO1FBQzdDLElBQUksRUFBRSxTQUFTO1FBQ2YsWUFBWSxFQUFFLE1BQU07UUFDcEIsR0FBRyxFQUFFLFNBQVMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO0tBQy9CLENBQUMsQ0FBQztJQUNILEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDVCxJQUFJLEVBQUUsS0FBSyxDQUFDLGNBQWM7UUFDMUIsT0FBTyxFQUFFLEtBQUs7UUFDZCxTQUFTLEVBQUUsV0FBVztRQUN0QixRQUFRLEVBQUUsVUFBVSxLQUFLLEtBQUssQ0FBQyxjQUFjO1FBQzdDLElBQUksRUFBRSxTQUFTO1FBQ2YsWUFBWSxFQUFFLE1BQU07UUFDcEIsR0FBRyxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO0tBQ3JDLENBQUMsQ0FBQztJQUVILE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY2xhbXAgfSBmcm9tICdAZXRobGV0ZS9jb3JlJztcbmltcG9ydCB7IFBhZ2luYXRlT3B0aW9ucywgUGFnaW5hdGlvbkl0ZW0gfSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBwYWdpbmF0ZSA9ICh2YWx1ZT86IFBhZ2luYXRlT3B0aW9ucyB8IG51bGwpID0+IHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgcGFnZXM6IFBhZ2luYXRpb25JdGVtW10gPSBbXTtcbiAgY29uc3QgYWN0aXZlUGFnZSA9IGNsYW1wKHZhbHVlLmN1cnJlbnRQYWdlLCAxLCB2YWx1ZS50b3RhbFBhZ2VDb3VudCk7XG5cbiAgaWYgKHZhbHVlLnRvdGFsUGFnZUNvdW50ID09PSAwKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBjdXJyZW50VXJsID0gbmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZik7XG5cbiAgY29uc3QgY3JlYXRlVXJsID0gKHBhZ2U6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IHVybCA9IG5ldyBVUkwoY3VycmVudFVybC5ocmVmKTtcblxuICAgIGlmIChwYWdlID09PSAxKSB7XG4gICAgICB1cmwuc2VhcmNoUGFyYW1zLmRlbGV0ZSgncGFnZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgncGFnZScsIHBhZ2UudG9TdHJpbmcoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVybC50b1N0cmluZygpO1xuICB9O1xuXG4gIHBhZ2VzLnB1c2goe1xuICAgIHBhZ2U6IDEsXG4gICAgY3VycmVudDogZmFsc2UsXG4gICAgYXJpYUxhYmVsOiAnRmlyc3QgcGFnZScsXG4gICAgZGlzYWJsZWQ6IGFjdGl2ZVBhZ2UgPT09IDEsXG4gICAgdHlwZTogJ2hvdExpbmsnLFxuICAgIGV4cGxpY2l0VHlwZTogJ2ZpcnN0JyxcbiAgICB1cmw6IGNyZWF0ZVVybCgxKSxcbiAgfSk7XG4gIHBhZ2VzLnB1c2goe1xuICAgIHBhZ2U6IGFjdGl2ZVBhZ2UgLSAxLFxuICAgIGN1cnJlbnQ6IGZhbHNlLFxuICAgIGFyaWFMYWJlbDogYFByZXZpb3VzIHBhZ2VgLFxuICAgIGRpc2FibGVkOiBhY3RpdmVQYWdlID09PSAxLFxuICAgIHR5cGU6ICdob3RMaW5rJyxcbiAgICBleHBsaWNpdFR5cGU6ICdwcmV2aW91cycsXG4gICAgdXJsOiBjcmVhdGVVcmwoYWN0aXZlUGFnZSAtIDEpLFxuICB9KTtcblxuICAvLyBhZGQgMiBwYWdlcyBiZWZvcmUgYW5kIGFmdGVyIGFjdGl2ZSBwYWdlXG4gIGZvciAobGV0IGkgPSBhY3RpdmVQYWdlIC0gMjsgaSA8PSBhY3RpdmVQYWdlICsgMjsgaSsrKSB7XG4gICAgaWYgKGkgPiAwICYmIGkgPD0gdmFsdWUudG90YWxQYWdlQ291bnQpIHtcbiAgICAgIGNvbnN0IGV4cGxpY2l0VHlwZSA9XG4gICAgICAgIGkgPT09IGFjdGl2ZVBhZ2VcbiAgICAgICAgICA/ICdjdXJyZW50J1xuICAgICAgICAgIDogaSA9PT0gYWN0aXZlUGFnZSAtIDEgfHwgaSA9PT0gYWN0aXZlUGFnZSArIDFcbiAgICAgICAgICA/ICdwYWdlLW51bWJlci1jbG9zZSdcbiAgICAgICAgICA6ICdwYWdlLW51bWJlci1mYXInO1xuXG4gICAgICBwYWdlcy5wdXNoKHtcbiAgICAgICAgcGFnZTogaSxcbiAgICAgICAgY3VycmVudDogaSA9PT0gYWN0aXZlUGFnZSxcbiAgICAgICAgYXJpYUxhYmVsOiBgUGFnZSAke2l9YCxcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICB0eXBlOiAncGFnZScsXG4gICAgICAgIGV4cGxpY2l0VHlwZSxcbiAgICAgICAgdXJsOiBjcmVhdGVVcmwoaSksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwYWdlcy5wdXNoKHtcbiAgICBwYWdlOiBhY3RpdmVQYWdlICsgMSxcbiAgICBjdXJyZW50OiBmYWxzZSxcbiAgICBhcmlhTGFiZWw6IGBOZXh0IHBhZ2VgLFxuICAgIGRpc2FibGVkOiBhY3RpdmVQYWdlID09PSB2YWx1ZS50b3RhbFBhZ2VDb3VudCxcbiAgICB0eXBlOiAnaG90TGluaycsXG4gICAgZXhwbGljaXRUeXBlOiAnbmV4dCcsXG4gICAgdXJsOiBjcmVhdGVVcmwoYWN0aXZlUGFnZSArIDEpLFxuICB9KTtcbiAgcGFnZXMucHVzaCh7XG4gICAgcGFnZTogdmFsdWUudG90YWxQYWdlQ291bnQsXG4gICAgY3VycmVudDogZmFsc2UsXG4gICAgYXJpYUxhYmVsOiBgTGFzdCBwYWdlYCxcbiAgICBkaXNhYmxlZDogYWN0aXZlUGFnZSA9PT0gdmFsdWUudG90YWxQYWdlQ291bnQsXG4gICAgdHlwZTogJ2hvdExpbmsnLFxuICAgIGV4cGxpY2l0VHlwZTogJ2xhc3QnLFxuICAgIHVybDogY3JlYXRlVXJsKHZhbHVlLnRvdGFsUGFnZUNvdW50KSxcbiAgfSk7XG5cbiAgcmV0dXJuIHBhZ2VzO1xufTtcbiJdfQ==
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL3BhZ2luYXRpb24vdXRpbHMvcGFnaW5hdGlvbi51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdEMsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQUMsS0FBOEIsRUFBRSxFQUFFO0lBQ3pELElBQUksQ0FBQyxLQUFLLEVBQUU7UUFDVixPQUFPLElBQUksQ0FBQztLQUNiO0lBRUQsTUFBTSxFQUFFLGFBQWEsR0FBRyxLQUFLLEVBQUUsZ0JBQWdCLEdBQUcsS0FBSyxFQUFFLGdCQUFnQixHQUFHLENBQUMsRUFBRSxTQUFTLEdBQUcsQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBRXZHLE1BQU0sS0FBSyxHQUFxQixFQUFFLENBQUM7SUFDbkMsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUU3RSxJQUFJLEtBQUssQ0FBQyxjQUFjLEtBQUssQ0FBQyxFQUFFO1FBQzlCLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFFRCxNQUFNLFVBQVUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRWpELE1BQU0sU0FBUyxHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUU7UUFDakMsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXJDLElBQUksSUFBSSxLQUFLLENBQUMsRUFBRTtZQUNkLEdBQUcsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ2pDO2FBQU07WUFDTCxHQUFHLENB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LEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDVCxJQUFJLEVBQUUsS0FBSyxDQUFDLGNBQWM7WUFDMUIsT0FBTyxFQUFFLEtBQUs7WUFDZCxTQUFTLEVBQUUsV0FBVztZQUN0QixRQUFRLEVBQUUsVUFBVSxLQUFLLEtBQUssQ0FBQyxjQUFjO1lBQzdDLElBQUksRUFBRSxTQUFTO1lBQ2YsWUFBWSxFQUFFLE1BQU07WUFDcEIsR0FBRyxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO1NBQ3JDLENBQUMsQ0FBQztLQUNKO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjbGFtcCB9IGZyb20gJ0BldGhsZXRlL2NvcmUnO1xuaW1wb3J0IHsgUGFnaW5hdGVPcHRpb25zLCBQYWdpbmF0aW9uSXRlbSB9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IGNvbnN0IHBhZ2luYXRlID0gKHZhbHVlPzogUGFnaW5hdGVPcHRpb25zIHwgbnVsbCkgPT4ge1xuICBpZiAoIXZhbHVlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCB7IG9taXRGaXJzdExhc3QgPSBmYWxzZSwgb21pdFByZXZpb3VzTmV4dCA9IGZhbHNlLCBwYWdlc0JlZm9yZUFmdGVyID0gMiwgZmlyc3RQYWdlID0gMSB9ID0gdmFsdWU7XG5cbiAgY29uc3QgcGFnZXM6IFBhZ2luYXRpb25JdGVtW10gPSBbXTtcbiAgY29uc3QgYWN0aXZlUGFnZSA9IGNsYW1wKHZhbHVlLmN1cnJlbnRQYWdlLCBmaXJzdFBhZ2UsIHZhbHVlLnRvdGFsUGFnZUNvdW50KTtcblxuICBpZiAodmFsdWUudG90YWxQYWdlQ291bnQgPT09IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGN1cnJlbnRVcmwgPSBuZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcblxuICBjb25zdCBjcmVhdGVVcmwgPSAocGFnZTogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgdXJsID0gbmV3IFVSTChjdXJyZW50VXJsLmhyZWYpO1xuXG4gICAgaWYgKHBhZ2UgPT09IDEpIHtcbiAgICAgIHVybC5zZWFyY2hQYXJhbXMuZGVsZXRlKCdwYWdlJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdwYWdlJywgcGFnZS50b1N0cmluZygpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdXJsLnRvU3RyaW5nKCk7XG4gIH07XG5cbiAgaWYgKCFvbWl0Rmlyc3RMYXN0KSB7XG4gICAgcGFnZXMucHVzaCh7XG4gICAgICBwYWdlOiBmaXJzdFBhZ2UsXG4gICAgICBjdXJyZW50OiBmYWxzZSxcbiAgICAgIGFyaWFMYWJlbDogJ0ZpcnN0IHBhZ2UnLFxuICAgICAgZGlzYWJsZWQ6IGFjdGl2ZVBhZ2UgPT09IGZpcnN0UGFnZSxcbiAgICAgIHR5cGU6ICdob3RMaW5rJyxcbiAgICAgIGV4cGxpY2l0VHlwZTogJ2ZpcnN0JyxcbiAgICAgIHVybDogY3JlYXRlVXJsKGZpcnN0UGFnZSksXG4gICAgfSk7XG4gIH1cblxuICBpZiAoIW9taXRQcmV2aW91c05leHQpIHtcbiAgICBwYWdlcy5wdXNoKHtcbiAgICAgIHBhZ2U6IGFjdGl2ZVBhZ2UgLSAxLFxuICAgICAgY3VycmVudDogZmFsc2UsXG4gICAgICBhcmlhTGFiZWw6IGBQcmV2aW91cyBwYWdlYCxcbiAgICAgIGRpc2FibGVkOiBhY3RpdmVQYWdlID09PSAxLFxuICAgICAgdHlwZTogJ2hvdExpbmsnLFxuICAgICAgZXhwbGljaXRUeXBlOiAncHJldmlvdXMnLFxuICAgICAgdXJsOiBjcmVhdGVVcmwoYWN0aXZlUGFnZSAtIDEpLFxuICAgIH0pO1xuICB9XG5cbiAgbGV0IHBhZ2VzQmVmb3JlID0gYWN0aXZlUGFnZSAtIHBhZ2VzQmVmb3JlQWZ0ZXI7XG4gIGxldCBwYWdlc0FmdGVyID0gYWN0aXZlUGFnZSArIHBhZ2VzQmVmb3JlQWZ0ZXI7XG5cbiAgaWYgKHBhZ2VzQmVmb3JlIDwgZmlyc3RQYWdlKSB7XG4gICAgcGFnZXNBZnRlciArPSBmaXJzdFBhZ2UgLSBwYWdlc0JlZm9yZTtcbiAgICBwYWdlc0JlZm9yZSA9IGZpcnN0UGFnZTtcbiAgfVxuXG4gIGlmIChwYWdlc0FmdGVyID4gdmFsdWUudG90YWxQYWdlQ291bnQpIHtcbiAgICBwYWdlc0JlZm9yZSAtPSBwYWdlc0FmdGVyIC0gdmFsdWUudG90YWxQYWdlQ291bnQ7XG4gICAgcGFnZXNBZnRlciA9IHZhbHVlLnRvdGFsUGFnZUNvdW50O1xuICB9XG5cbiAgLy8gYWRkIE4gcGFnZXMgYmVmb3JlIGFuZCBhZnRlciBhY3RpdmUgcGFnZVxuICBmb3IgKGxldCBpID0gcGFnZXNCZWZvcmU7IGkgPD0gcGFnZXNBZnRlcjsgaSsrKSB7XG4gICAgaWYgKGkgPiBmaXJzdFBhZ2UgLSAxICYmIGkgPD0gdmFsdWUudG90YWxQYWdlQ291bnQpIHtcbiAgICAgIGNvbnN0IGV4cGxpY2l0VHlwZSA9XG4gICAgICAgIGkgPT09IGFjdGl2ZVBhZ2VcbiAgICAgICAgICA/ICdjdXJyZW50J1xuICAgICAgICAgIDogaSA9PT0gYWN0aXZlUGFnZSAtIDEgfHwgaSA9PT0gYWN0aXZlUGFnZSArIDFcbiAgICAgICAgICA/ICdwYWdlLW51bWJlci1jbG9zZSdcbiAgICAgICAgICA6ICdwYWdlLW51bWJlci1mYXInO1xuXG4gICAgICBwYWdlcy5wdXNoKHtcbiAgICAgICAgcGFnZTogaSxcbiAgICAgICAgY3VycmVudDogaSA9PT0gYWN0aXZlUGFnZSxcbiAgICAgICAgYXJpYUxhYmVsOiBgUGFnZSAke2l9YCxcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICB0eXBlOiAncGFnZScsXG4gICAgICAgIGV4cGxpY2l0VHlwZSxcbiAgICAgICAgdXJsOiBjcmVhdGVVcmwoaSksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBpZiAoIW9taXRQcmV2aW91c05leHQpIHtcbiAgICBwYWdlcy5wdXNoKHtcbiAgICAgIHBhZ2U6IGFjdGl2ZVBhZ2UgKyAxLFxuICAgICAgY3VycmVudDogZmFsc2UsXG4gICAgICBhcmlhTGFiZWw6IGBOZXh0IHBhZ2VgLFxuICAgICAgZGlzYWJsZWQ6IGFjdGl2ZVBhZ2UgPT09IHZhbHVlLnRvdGFsUGFnZUNvdW50LFxuICAgICAgdHlwZTogJ2hvdExpbmsnLFxuICAgICAgZXhwbGljaXRUeXBlOiAnbmV4dCcsXG4gICAgICB1cmw6IGNyZWF0ZVVybChhY3RpdmVQYWdlICsgMSksXG4gICAgfSk7XG4gIH1cblxuICBpZiAoIW9taXRGaXJzdExhc3QpIHtcbiAgICBwYWdlcy5wdXNoKHtcbiAgICAgIHBhZ2U6IHZhbHVlLnRvdGFsUGFnZUNvdW50LFxuICAgICAgY3VycmVudDogZmFsc2UsXG4gICAgICBhcmlhTGFiZWw6IGBMYXN0IHBhZ2VgLFxuICAgICAgZGlzYWJsZWQ6IGFjdGl2ZVBhZ2UgPT09IHZhbHVlLnRvdGFsUGFnZUNvdW50LFxuICAgICAgdHlwZTogJ2hvdExpbmsnLFxuICAgICAgZXhwbGljaXRUeXBlOiAnbGFzdCcsXG4gICAgICB1cmw6IGNyZWF0ZVVybCh2YWx1ZS50b3RhbFBhZ2VDb3VudCksXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcGFnZXM7XG59O1xuIl19
@@ -8658,8 +8658,9 @@ const paginate = (value) => {
8658
8658
  if (!value) {
8659
8659
  return null;
8660
8660
  }
8661
+ const { omitFirstLast = false, omitPreviousNext = false, pagesBeforeAfter = 2, firstPage = 1 } = value;
8661
8662
  const pages = [];
8662
- const activePage = clamp(value.currentPage, 1, value.totalPageCount);
8663
+ const activePage = clamp(value.currentPage, firstPage, value.totalPageCount);
8663
8664
  if (value.totalPageCount === 0) {
8664
8665
  return null;
8665
8666
  }
@@ -8674,27 +8675,41 @@ const paginate = (value) => {
8674
8675
  }
8675
8676
  return url.toString();
8676
8677
  };
8677
- pages.push({
8678
- page: 1,
8679
- current: false,
8680
- ariaLabel: 'First page',
8681
- disabled: activePage === 1,
8682
- type: 'hotLink',
8683
- explicitType: 'first',
8684
- url: createUrl(1),
8685
- });
8686
- pages.push({
8687
- page: activePage - 1,
8688
- current: false,
8689
- ariaLabel: `Previous page`,
8690
- disabled: activePage === 1,
8691
- type: 'hotLink',
8692
- explicitType: 'previous',
8693
- url: createUrl(activePage - 1),
8694
- });
8695
- // add 2 pages before and after active page
8696
- for (let i = activePage - 2; i <= activePage + 2; i++) {
8697
- if (i > 0 && i <= value.totalPageCount) {
8678
+ if (!omitFirstLast) {
8679
+ pages.push({
8680
+ page: firstPage,
8681
+ current: false,
8682
+ ariaLabel: 'First page',
8683
+ disabled: activePage === firstPage,
8684
+ type: 'hotLink',
8685
+ explicitType: 'first',
8686
+ url: createUrl(firstPage),
8687
+ });
8688
+ }
8689
+ if (!omitPreviousNext) {
8690
+ pages.push({
8691
+ page: activePage - 1,
8692
+ current: false,
8693
+ ariaLabel: `Previous page`,
8694
+ disabled: activePage === 1,
8695
+ type: 'hotLink',
8696
+ explicitType: 'previous',
8697
+ url: createUrl(activePage - 1),
8698
+ });
8699
+ }
8700
+ let pagesBefore = activePage - pagesBeforeAfter;
8701
+ let pagesAfter = activePage + pagesBeforeAfter;
8702
+ if (pagesBefore < firstPage) {
8703
+ pagesAfter += firstPage - pagesBefore;
8704
+ pagesBefore = firstPage;
8705
+ }
8706
+ if (pagesAfter > value.totalPageCount) {
8707
+ pagesBefore -= pagesAfter - value.totalPageCount;
8708
+ pagesAfter = value.totalPageCount;
8709
+ }
8710
+ // add N pages before and after active page
8711
+ for (let i = pagesBefore; i <= pagesAfter; i++) {
8712
+ if (i > firstPage - 1 && i <= value.totalPageCount) {
8698
8713
  const explicitType = i === activePage
8699
8714
  ? 'current'
8700
8715
  : i === activePage - 1 || i === activePage + 1
@@ -8711,24 +8726,28 @@ const paginate = (value) => {
8711
8726
  });
8712
8727
  }
8713
8728
  }
8714
- pages.push({
8715
- page: activePage + 1,
8716
- current: false,
8717
- ariaLabel: `Next page`,
8718
- disabled: activePage === value.totalPageCount,
8719
- type: 'hotLink',
8720
- explicitType: 'next',
8721
- url: createUrl(activePage + 1),
8722
- });
8723
- pages.push({
8724
- page: value.totalPageCount,
8725
- current: false,
8726
- ariaLabel: `Last page`,
8727
- disabled: activePage === value.totalPageCount,
8728
- type: 'hotLink',
8729
- explicitType: 'last',
8730
- url: createUrl(value.totalPageCount),
8731
- });
8729
+ if (!omitPreviousNext) {
8730
+ pages.push({
8731
+ page: activePage + 1,
8732
+ current: false,
8733
+ ariaLabel: `Next page`,
8734
+ disabled: activePage === value.totalPageCount,
8735
+ type: 'hotLink',
8736
+ explicitType: 'next',
8737
+ url: createUrl(activePage + 1),
8738
+ });
8739
+ }
8740
+ if (!omitFirstLast) {
8741
+ pages.push({
8742
+ page: value.totalPageCount,
8743
+ current: false,
8744
+ ariaLabel: `Last page`,
8745
+ disabled: activePage === value.totalPageCount,
8746
+ type: 'hotLink',
8747
+ explicitType: 'last',
8748
+ url: createUrl(value.totalPageCount),
8749
+ });
8750
+ }
8732
8751
  return pages;
8733
8752
  };
8734
8753