@ethlete/cdk 2.9.2 → 2.10.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,11 @@
1
1
  # @ethlete/cdk
2
2
 
3
+ ## 2.10.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`a53aa52`](https://github.com/ethlete-io/ethdk/commit/a53aa524a2657c657b2e00d0379bf2cc45a92a88) Thanks [@TomTomB](https://github.com/TomTomB)! - Add additional config options to paginate util
8
+
3
9
  ## 2.9.2
4
10
 
5
11
  ### Patch Changes
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvY29tcG9uZW50cy9wYWdpbmF0aW9uL3R5cGVzL3BhZ2luYXRpb24udHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgUGFnaW5hdGVPcHRpb25zIHtcbiAgY3VycmVudFBhZ2U6IG51bWJlcjtcbiAgdG90YWxQYWdlQ291bnQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYWdpbmF0aW9uSXRlbSB7XG4gIGN1cnJlbnQ6IGJvb2xlYW47XG4gIHBhZ2U6IG51bWJlcjtcbiAgYXJpYUxhYmVsOiBzdHJpbmc7XG4gIGRpc2FibGVkOiBib29sZWFuO1xuICB0eXBlOiAncGFnZScgfCAnaG90TGluayc7XG4gIGV4cGxpY2l0VHlwZTogJ2ZpcnN0JyB8ICdsYXN0JyB8ICdwcmV2aW91cycgfCAnbmV4dCcgfCAnY3VycmVudCcgfCAncGFnZS1udW1iZXItY2xvc2UnIHwgJ3BhZ2UtbnVtYmVyLWZhcic7XG4gIHVybDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2luYXRpb25IZWFkU2VydmljZUNvbmZpZyB7XG4gIGZpcnN0UGFnZVRpdGxlOiBzdHJpbmcgfCBudWxsO1xuICB0aXRsZVRlbXBsYXRlOiBzdHJpbmcgfCBudWxsO1xuICBhZGRDYW5vbmljYWxUYWc6IGJvb2xlYW47XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvY29tcG9uZW50cy9wYWdpbmF0aW9uL3R5cGVzL3BhZ2luYXRpb24udHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgUGFnaW5hdGVPcHRpb25zIHtcbiAgY3VycmVudFBhZ2U6IG51bWJlcjtcbiAgdG90YWxQYWdlQ291bnQ6IG51bWJlcjtcblxuICAvKipcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIG9taXRGaXJzdExhc3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgb21pdFByZXZpb3VzTmV4dD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBkZWZhdWx0IDJcbiAgICovXG4gIHBhZ2VzQmVmb3JlQWZ0ZXI/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFnaW5hdGlvbkl0ZW0ge1xuICBjdXJyZW50OiBib29sZWFuO1xuICBwYWdlOiBudW1iZXI7XG4gIGFyaWFMYWJlbDogc3RyaW5nO1xuICBkaXNhYmxlZDogYm9vbGVhbjtcbiAgdHlwZTogJ3BhZ2UnIHwgJ2hvdExpbmsnO1xuICBleHBsaWNpdFR5cGU6ICdmaXJzdCcgfCAnbGFzdCcgfCAncHJldmlvdXMnIHwgJ25leHQnIHwgJ2N1cnJlbnQnIHwgJ3BhZ2UtbnVtYmVyLWNsb3NlJyB8ICdwYWdlLW51bWJlci1mYXInO1xuICB1cmw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYWdpbmF0aW9uSGVhZFNlcnZpY2VDb25maWcge1xuICBmaXJzdFBhZ2VUaXRsZTogc3RyaW5nIHwgbnVsbDtcbiAgdGl0bGVUZW1wbGF0ZTogc3RyaW5nIHwgbnVsbDtcbiAgYWRkQ2Fub25pY2FsVGFnOiBib29sZWFuO1xufVxuIl19
@@ -3,6 +3,7 @@ export const paginate = (value) => {
3
3
  if (!value) {
4
4
  return null;
5
5
  }
6
+ const { omitFirstLast = false, omitPreviousNext = false, pagesBeforeAfter = 2 } = value;
6
7
  const pages = [];
7
8
  const activePage = clamp(value.currentPage, 1, value.totalPageCount);
8
9
  if (value.totalPageCount === 0) {
@@ -19,26 +20,30 @@ 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++) {
23
+ if (!omitFirstLast) {
24
+ pages.push({
25
+ page: 1,
26
+ current: false,
27
+ ariaLabel: 'First page',
28
+ disabled: activePage === 1,
29
+ type: 'hotLink',
30
+ explicitType: 'first',
31
+ url: createUrl(1),
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
+ // add N pages before and after active page
46
+ for (let i = activePage - pagesBeforeAfter; i <= activePage + pagesBeforeAfter; i++) {
42
47
  if (i > 0 && i <= value.totalPageCount) {
43
48
  const explicitType = i === activePage
44
49
  ? 'current'
@@ -56,24 +61,28 @@ export const paginate = (value) => {
56
61
  });
57
62
  }
58
63
  }
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
- });
64
+ if (!omitPreviousNext) {
65
+ pages.push({
66
+ page: activePage + 1,
67
+ current: false,
68
+ ariaLabel: `Next page`,
69
+ disabled: activePage === value.totalPageCount,
70
+ type: 'hotLink',
71
+ explicitType: 'next',
72
+ url: createUrl(activePage + 1),
73
+ });
74
+ }
75
+ if (!omitFirstLast) {
76
+ pages.push({
77
+ page: value.totalPageCount,
78
+ current: false,
79
+ ariaLabel: `Last page`,
80
+ disabled: activePage === value.totalPageCount,
81
+ type: 'hotLink',
82
+ explicitType: 'last',
83
+ url: createUrl(value.totalPageCount),
84
+ });
85
+ }
77
86
  return pages;
78
87
  };
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL3BhZ2luYXRpb24vdXRpbHMvcGFnaW5hdGlvbi51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdEMsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQUMsS0FBOEIsRUFBRSxFQUFFO0lBQ3pELElBQUksQ0FBQyxLQUFLLEVBQUU7UUFDVixPQUFPLElBQUksQ0FBQztLQUNiO0lBRUQsTUFBTSxLQUFLLEdBQXFCLEVBQUUsQ0FBQztJQUNuQyxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBRXJFLElBQUksS0FBSyxDQUFDLGNBQWMsS0FBSyxDQUFDLEVBQUU7UUFDOUIsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUVELE1BQU0sVUFBVSxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFakQsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRTtRQUNqQyxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFckMsSUFBSSxJQUFJLEtBQUssQ0FBQyxFQUFFO1lBQ2QsR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDakM7YUFBTTtZQUNMLEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztTQUMvQztRQUVELE9BQU8sR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3hCLENBQUMsQ0FBQztJQUVGLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDVCxJQUFJLEVBQUUsQ0FBQztRQUNQLE9BQU8sRUFBRSxLQUFLO1FBQ2QsU0FBUyxFQUFFLFlBQVk7UUFDdkIsUUFBUSxFQUFFLFVBQVUsS0FBSyxDQUFDO1FBQzFCLElBQUksRUFBRSxTQUFTO1FBQ2YsWUFBWSxFQUFFLE9BQU87UUFDckIsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7S0FDbEIsQ0FBQyxDQUFDO0lBQ0gsS0FBSyxDQUFDLElBQUksQ0FBQztRQUNULElBQUksRUFBRSxVQUFVLEdBQUcsQ0FBQztRQUNwQixPQUFPLEVBQUUsS0FBSztRQUNkLFNBQVMsRUFBRSxlQUFlO1FBQzFCLFFBQVEsRUFBRSxVQUFVLEtBQUssQ0FBQztRQUMxQixJQUFJLEVBQUUsU0FBUztRQUNmLFlBQVksRUFBRSxVQUFVO1FBQ3hCLEdBQUcsRUFBRSxTQUFTLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztLQUMvQixDQUFDLENBQUM7SUFFSCwyQ0FBMkM7SUFDM0MsS0FBSyxJQUFJLENBQUMsR0FBRyxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ3JELElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLGNBQWMsRUFBRTtZQUN0QyxNQUFNLFlBQVksR0FDaEIsQ0FBQyxLQUFLLFVBQVU7Z0JBQ2QsQ0FBQyxDQUFDLFNBQVM7Z0JBQ1gsQ0FBQyxDQUFDLENBQUMsS0FBSyxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxVQUFVLEdBQUcsQ0FBQztvQkFDOUMsQ0FBQyxDQUFDLG1CQUFtQjtvQkFDckIsQ0FBQyxDQUFDLGlCQUFpQixDQUFDO1lBRXhCLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQ1QsSUFBSSxFQUFFLENBQUM7Z0JBQ1AsT0FBTyxFQUFFLENBQUMsS0FBSyxVQUFVO2dCQUN6QixTQUFTLEVBQUUsUUFBUSxDQUFDLEVBQUU7Z0JBQ3RCLFFBQVEsRUFBRSxLQUFLO2dCQUNmLElBQUksRUFBRSxNQUFNO2dCQUNaLFlBQVk7Z0JBQ1osR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7YUFDbEIsQ0FBQyxDQUFDO1NBQ0o7S0FDRjtJQUVELEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDVCxJQUFJLEVBQUUsVUFBVSxHQUFHLENBQUM7UUFDcEIsT0FBTyxFQUFFLEtBQUs7UUFDZCxTQUFTLEVBQUUsV0FBVztRQUN0QixRQUFRLEVBQUUsVUFBVSxLQUFLLEtBQUssQ0FBQyxjQUFjO1FBQzdDLElBQUksRUFBRSxTQUFTO1FBQ2YsWUFBWSxFQUFFLE1BQU07UUFDcEIsR0FBRyxFQUFFLFNBQVMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO0tBQy9CLENBQUMsQ0FBQztJQUNILEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDVCxJQUFJLEVBQUUsS0FBSyxDQUFDLGNBQWM7UUFDMUIsT0FBTyxFQUFFLEtBQUs7UUFDZCxTQUFTLEVBQUUsV0FBVztRQUN0QixRQUFRLEVBQUUsVUFBVSxLQUFLLEtBQUssQ0FBQyxjQUFjO1FBQzdDLElBQUksRUFBRSxTQUFTO1FBQ2YsWUFBWSxFQUFFLE1BQU07UUFDcEIsR0FBRyxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO0tBQ3JDLENBQUMsQ0FBQztJQUVILE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY2xhbXAgfSBmcm9tICdAZXRobGV0ZS9jb3JlJztcbmltcG9ydCB7IFBhZ2luYXRlT3B0aW9ucywgUGFnaW5hdGlvbkl0ZW0gfSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBwYWdpbmF0ZSA9ICh2YWx1ZT86IFBhZ2luYXRlT3B0aW9ucyB8IG51bGwpID0+IHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgcGFnZXM6IFBhZ2luYXRpb25JdGVtW10gPSBbXTtcbiAgY29uc3QgYWN0aXZlUGFnZSA9IGNsYW1wKHZhbHVlLmN1cnJlbnRQYWdlLCAxLCB2YWx1ZS50b3RhbFBhZ2VDb3VudCk7XG5cbiAgaWYgKHZhbHVlLnRvdGFsUGFnZUNvdW50ID09PSAwKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBjdXJyZW50VXJsID0gbmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZik7XG5cbiAgY29uc3QgY3JlYXRlVXJsID0gKHBhZ2U6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IHVybCA9IG5ldyBVUkwoY3VycmVudFVybC5ocmVmKTtcblxuICAgIGlmIChwYWdlID09PSAxKSB7XG4gICAgICB1cmwuc2VhcmNoUGFyYW1zLmRlbGV0ZSgncGFnZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgncGFnZScsIHBhZ2UudG9TdHJpbmcoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVybC50b1N0cmluZygpO1xuICB9O1xuXG4gIHBhZ2VzLnB1c2goe1xuICAgIHBhZ2U6IDEsXG4gICAgY3VycmVudDogZmFsc2UsXG4gICAgYXJpYUxhYmVsOiAnRmlyc3QgcGFnZScsXG4gICAgZGlzYWJsZWQ6IGFjdGl2ZVBhZ2UgPT09IDEsXG4gICAgdHlwZTogJ2hvdExpbmsnLFxuICAgIGV4cGxpY2l0VHlwZTogJ2ZpcnN0JyxcbiAgICB1cmw6IGNyZWF0ZVVybCgxKSxcbiAgfSk7XG4gIHBhZ2VzLnB1c2goe1xuICAgIHBhZ2U6IGFjdGl2ZVBhZ2UgLSAxLFxuICAgIGN1cnJlbnQ6IGZhbHNlLFxuICAgIGFyaWFMYWJlbDogYFByZXZpb3VzIHBhZ2VgLFxuICAgIGRpc2FibGVkOiBhY3RpdmVQYWdlID09PSAxLFxuICAgIHR5cGU6ICdob3RMaW5rJyxcbiAgICBleHBsaWNpdFR5cGU6ICdwcmV2aW91cycsXG4gICAgdXJsOiBjcmVhdGVVcmwoYWN0aXZlUGFnZSAtIDEpLFxuICB9KTtcblxuICAvLyBhZGQgMiBwYWdlcyBiZWZvcmUgYW5kIGFmdGVyIGFjdGl2ZSBwYWdlXG4gIGZvciAobGV0IGkgPSBhY3RpdmVQYWdlIC0gMjsgaSA8PSBhY3RpdmVQYWdlICsgMjsgaSsrKSB7XG4gICAgaWYgKGkgPiAwICYmIGkgPD0gdmFsdWUudG90YWxQYWdlQ291bnQpIHtcbiAgICAgIGNvbnN0IGV4cGxpY2l0VHlwZSA9XG4gICAgICAgIGkgPT09IGFjdGl2ZVBhZ2VcbiAgICAgICAgICA/ICdjdXJyZW50J1xuICAgICAgICAgIDogaSA9PT0gYWN0aXZlUGFnZSAtIDEgfHwgaSA9PT0gYWN0aXZlUGFnZSArIDFcbiAgICAgICAgICA/ICdwYWdlLW51bWJlci1jbG9zZSdcbiAgICAgICAgICA6ICdwYWdlLW51bWJlci1mYXInO1xuXG4gICAgICBwYWdlcy5wdXNoKHtcbiAgICAgICAgcGFnZTogaSxcbiAgICAgICAgY3VycmVudDogaSA9PT0gYWN0aXZlUGFnZSxcbiAgICAgICAgYXJpYUxhYmVsOiBgUGFnZSAke2l9YCxcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICB0eXBlOiAncGFnZScsXG4gICAgICAgIGV4cGxpY2l0VHlwZSxcbiAgICAgICAgdXJsOiBjcmVhdGVVcmwoaSksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwYWdlcy5wdXNoKHtcbiAgICBwYWdlOiBhY3RpdmVQYWdlICsgMSxcbiAgICBjdXJyZW50OiBmYWxzZSxcbiAgICBhcmlhTGFiZWw6IGBOZXh0IHBhZ2VgLFxuICAgIGRpc2FibGVkOiBhY3RpdmVQYWdlID09PSB2YWx1ZS50b3RhbFBhZ2VDb3VudCxcbiAgICB0eXBlOiAnaG90TGluaycsXG4gICAgZXhwbGljaXRUeXBlOiAnbmV4dCcsXG4gICAgdXJsOiBjcmVhdGVVcmwoYWN0aXZlUGFnZSArIDEpLFxuICB9KTtcbiAgcGFnZXMucHVzaCh7XG4gICAgcGFnZTogdmFsdWUudG90YWxQYWdlQ291bnQsXG4gICAgY3VycmVudDogZmFsc2UsXG4gICAgYXJpYUxhYmVsOiBgTGFzdCBwYWdlYCxcbiAgICBkaXNhYmxlZDogYWN0aXZlUGFnZSA9PT0gdmFsdWUudG90YWxQYWdlQ291bnQsXG4gICAgdHlwZTogJ2hvdExpbmsnLFxuICAgIGV4cGxpY2l0VHlwZTogJ2xhc3QnLFxuICAgIHVybDogY3JlYXRlVXJsKHZhbHVlLnRvdGFsUGFnZUNvdW50KSxcbiAgfSk7XG5cbiAgcmV0dXJuIHBhZ2VzO1xufTtcbiJdfQ==
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL3BhZ2luYXRpb24vdXRpbHMvcGFnaW5hdGlvbi51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdEMsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQUMsS0FBOEIsRUFBRSxFQUFFO0lBQ3pELElBQUksQ0FBQyxLQUFLLEVBQUU7UUFDVixPQUFPLElBQUksQ0FBQztLQUNiO0lBRUQsTUFBTSxFQUFFLGFBQWEsR0FBRyxLQUFLLEVBQUUsZ0JBQWdCLEdBQUcsS0FBSyxFQUFFLGdCQUFnQixHQUFHLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQztJQUV4RixNQUFNLEtBQUssR0FBcUIsRUFBRSxDQUFDO0lBQ25DLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFckUsSUFBSSxLQUFLLENBQUMsY0FBYyxLQUFLLENBQUMsRUFBRTtRQUM5QixPQUFPLElBQUksQ0FBQztLQUNiO0lBRUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVqRCxNQUFNLFNBQVMsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFO1FBQ2pDLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVyQyxJQUFJLElBQUksS0FBSyxDQUFDLEVBQUU7WUFDZCxHQUFHLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNqQzthQUFNO1lBQ0wsR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLENB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J0BldGhsZXRlL2NvcmUnO1xuaW1wb3J0IHsgUGFnaW5hdGVPcHRpb25zLCBQYWdpbmF0aW9uSXRlbSB9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IGNvbnN0IHBhZ2luYXRlID0gKHZhbHVlPzogUGFnaW5hdGVPcHRpb25zIHwgbnVsbCkgPT4ge1xuICBpZiAoIXZhbHVlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCB7IG9taXRGaXJzdExhc3QgPSBmYWxzZSwgb21pdFByZXZpb3VzTmV4dCA9IGZhbHNlLCBwYWdlc0JlZm9yZUFmdGVyID0gMiB9ID0gdmFsdWU7XG5cbiAgY29uc3QgcGFnZXM6IFBhZ2luYXRpb25JdGVtW10gPSBbXTtcbiAgY29uc3QgYWN0aXZlUGFnZSA9IGNsYW1wKHZhbHVlLmN1cnJlbnRQYWdlLCAxLCB2YWx1ZS50b3RhbFBhZ2VDb3VudCk7XG5cbiAgaWYgKHZhbHVlLnRvdGFsUGFnZUNvdW50ID09PSAwKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBjdXJyZW50VXJsID0gbmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZik7XG5cbiAgY29uc3QgY3JlYXRlVXJsID0gKHBhZ2U6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IHVybCA9IG5ldyBVUkwoY3VycmVudFVybC5ocmVmKTtcblxuICAgIGlmIChwYWdlID09PSAxKSB7XG4gICAgICB1cmwuc2VhcmNoUGFyYW1zLmRlbGV0ZSgncGFnZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgncGFnZScsIHBhZ2UudG9TdHJpbmcoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVybC50b1N0cmluZygpO1xuICB9O1xuXG4gIGlmICghb21pdEZpcnN0TGFzdCkge1xuICAgIHBhZ2VzLnB1c2goe1xuICAgICAgcGFnZTogMSxcbiAgICAgIGN1cnJlbnQ6IGZhbHNlLFxuICAgICAgYXJpYUxhYmVsOiAnRmlyc3QgcGFnZScsXG4gICAgICBkaXNhYmxlZDogYWN0aXZlUGFnZSA9PT0gMSxcbiAgICAgIHR5cGU6ICdob3RMaW5rJyxcbiAgICAgIGV4cGxpY2l0VHlwZTogJ2ZpcnN0JyxcbiAgICAgIHVybDogY3JlYXRlVXJsKDEpLFxuICAgIH0pO1xuICB9XG5cbiAgaWYgKCFvbWl0UHJldmlvdXNOZXh0KSB7XG4gICAgcGFnZXMucHVzaCh7XG4gICAgICBwYWdlOiBhY3RpdmVQYWdlIC0gMSxcbiAgICAgIGN1cnJlbnQ6IGZhbHNlLFxuICAgICAgYXJpYUxhYmVsOiBgUHJldmlvdXMgcGFnZWAsXG4gICAgICBkaXNhYmxlZDogYWN0aXZlUGFnZSA9PT0gMSxcbiAgICAgIHR5cGU6ICdob3RMaW5rJyxcbiAgICAgIGV4cGxpY2l0VHlwZTogJ3ByZXZpb3VzJyxcbiAgICAgIHVybDogY3JlYXRlVXJsKGFjdGl2ZVBhZ2UgLSAxKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIGFkZCBOIHBhZ2VzIGJlZm9yZSBhbmQgYWZ0ZXIgYWN0aXZlIHBhZ2VcbiAgZm9yIChsZXQgaSA9IGFjdGl2ZVBhZ2UgLSBwYWdlc0JlZm9yZUFmdGVyOyBpIDw9IGFjdGl2ZVBhZ2UgKyBwYWdlc0JlZm9yZUFmdGVyOyBpKyspIHtcbiAgICBpZiAoaSA+IDAgJiYgaSA8PSB2YWx1ZS50b3RhbFBhZ2VDb3VudCkge1xuICAgICAgY29uc3QgZXhwbGljaXRUeXBlID1cbiAgICAgICAgaSA9PT0gYWN0aXZlUGFnZVxuICAgICAgICAgID8gJ2N1cnJlbnQnXG4gICAgICAgICAgOiBpID09PSBhY3RpdmVQYWdlIC0gMSB8fCBpID09PSBhY3RpdmVQYWdlICsgMVxuICAgICAgICAgID8gJ3BhZ2UtbnVtYmVyLWNsb3NlJ1xuICAgICAgICAgIDogJ3BhZ2UtbnVtYmVyLWZhcic7XG5cbiAgICAgIHBhZ2VzLnB1c2goe1xuICAgICAgICBwYWdlOiBpLFxuICAgICAgICBjdXJyZW50OiBpID09PSBhY3RpdmVQYWdlLFxuICAgICAgICBhcmlhTGFiZWw6IGBQYWdlICR7aX1gLFxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgICAgIHR5cGU6ICdwYWdlJyxcbiAgICAgICAgZXhwbGljaXRUeXBlLFxuICAgICAgICB1cmw6IGNyZWF0ZVVybChpKSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGlmICghb21pdFByZXZpb3VzTmV4dCkge1xuICAgIHBhZ2VzLnB1c2goe1xuICAgICAgcGFnZTogYWN0aXZlUGFnZSArIDEsXG4gICAgICBjdXJyZW50OiBmYWxzZSxcbiAgICAgIGFyaWFMYWJlbDogYE5leHQgcGFnZWAsXG4gICAgICBkaXNhYmxlZDogYWN0aXZlUGFnZSA9PT0gdmFsdWUudG90YWxQYWdlQ291bnQsXG4gICAgICB0eXBlOiAnaG90TGluaycsXG4gICAgICBleHBsaWNpdFR5cGU6ICduZXh0JyxcbiAgICAgIHVybDogY3JlYXRlVXJsKGFjdGl2ZVBhZ2UgKyAxKSxcbiAgICB9KTtcbiAgfVxuXG4gIGlmICghb21pdEZpcnN0TGFzdCkge1xuICAgIHBhZ2VzLnB1c2goe1xuICAgICAgcGFnZTogdmFsdWUudG90YWxQYWdlQ291bnQsXG4gICAgICBjdXJyZW50OiBmYWxzZSxcbiAgICAgIGFyaWFMYWJlbDogYExhc3QgcGFnZWAsXG4gICAgICBkaXNhYmxlZDogYWN0aXZlUGFnZSA9PT0gdmFsdWUudG90YWxQYWdlQ291bnQsXG4gICAgICB0eXBlOiAnaG90TGluaycsXG4gICAgICBleHBsaWNpdFR5cGU6ICdsYXN0JyxcbiAgICAgIHVybDogY3JlYXRlVXJsKHZhbHVlLnRvdGFsUGFnZUNvdW50KSxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBwYWdlcztcbn07XG4iXX0=
@@ -8658,6 +8658,7 @@ const paginate = (value) => {
8658
8658
  if (!value) {
8659
8659
  return null;
8660
8660
  }
8661
+ const { omitFirstLast = false, omitPreviousNext = false, pagesBeforeAfter = 2 } = value;
8661
8662
  const pages = [];
8662
8663
  const activePage = clamp(value.currentPage, 1, value.totalPageCount);
8663
8664
  if (value.totalPageCount === 0) {
@@ -8674,26 +8675,30 @@ 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++) {
8678
+ if (!omitFirstLast) {
8679
+ pages.push({
8680
+ page: 1,
8681
+ current: false,
8682
+ ariaLabel: 'First page',
8683
+ disabled: activePage === 1,
8684
+ type: 'hotLink',
8685
+ explicitType: 'first',
8686
+ url: createUrl(1),
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
+ // add N pages before and after active page
8701
+ for (let i = activePage - pagesBeforeAfter; i <= activePage + pagesBeforeAfter; i++) {
8697
8702
  if (i > 0 && i <= value.totalPageCount) {
8698
8703
  const explicitType = i === activePage
8699
8704
  ? 'current'
@@ -8711,24 +8716,28 @@ const paginate = (value) => {
8711
8716
  });
8712
8717
  }
8713
8718
  }
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
- });
8719
+ if (!omitPreviousNext) {
8720
+ pages.push({
8721
+ page: activePage + 1,
8722
+ current: false,
8723
+ ariaLabel: `Next page`,
8724
+ disabled: activePage === value.totalPageCount,
8725
+ type: 'hotLink',
8726
+ explicitType: 'next',
8727
+ url: createUrl(activePage + 1),
8728
+ });
8729
+ }
8730
+ if (!omitFirstLast) {
8731
+ pages.push({
8732
+ page: value.totalPageCount,
8733
+ current: false,
8734
+ ariaLabel: `Last page`,
8735
+ disabled: activePage === value.totalPageCount,
8736
+ type: 'hotLink',
8737
+ explicitType: 'last',
8738
+ url: createUrl(value.totalPageCount),
8739
+ });
8740
+ }
8732
8741
  return pages;
8733
8742
  };
8734
8743