UNPKG

7.3 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, '__esModule', { value: true });
4
5function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
6
7require('./slicedToArray-0711941d.js');
8require('./unsupportedIterableToArray-68db1d3b.js');
9var React = require('react');
10var React__default = _interopDefault(React);
11require('./_commonjsHelpers-72d386ba.js');
12var index = require('./index-b0606964.js');
13require('./defineProperty-0921a47c.js');
14var toConsumableArray = require('./toConsumableArray-d8a4a2c3.js');
15var _styled = require('styled-components');
16var _styled__default = _interopDefault(_styled);
17require('./getPrototypeOf-2a661a20.js');
18require('./color.js');
19require('./components.js');
20require('./contains-component.js');
21require('./css.js');
22require('./dayjs.min-e07657bf.js');
23require('./date.js');
24var miscellaneous = require('./miscellaneous.js');
25require('./environment.js');
26require('./font.js');
27require('./math-f4029164.js');
28require('./characters.js');
29require('./format.js');
30require('./keycodes.js');
31require('./url.js');
32require('./web3.js');
33var constants = require('./constants.js');
34require('./breakpoints.js');
35require('./springs.js');
36require('./text-styles.js');
37require('./theme-dark.js');
38require('./theme-light.js');
39require('./Theme.js');
40var _extends = require('./extends-40571110.js');
41var objectWithoutProperties = require('./objectWithoutProperties-35db8ab0.js');
42require('./index-ecc57c9f.js');
43require('./FocusVisible.js');
44require('./ButtonBase.js');
45var PaginationItem = require('./PaginationItem.js');
46require('./IconPropTypes-56de5759.js');
47require('./IconAddUser.js');
48require('./IconAlert.js');
49require('./IconAlignCenter.js');
50require('./IconAlignJustify.js');
51require('./IconAlignLeft.js');
52require('./IconAlignRight.js');
53require('./IconAragon.js');
54require('./IconArrowDown.js');
55require('./IconArrowLeft.js');
56require('./IconArrowRight.js');
57require('./IconArrowUp.js');
58require('./IconAtSign.js');
59require('./IconBlock.js');
60require('./IconBookmark.js');
61require('./IconCalendar.js');
62require('./IconCanvas.js');
63require('./IconCaution.js');
64require('./IconCenter.js');
65require('./IconChart.js');
66require('./IconChat.js');
67require('./IconCheck.js');
68require('./IconChip.js');
69require('./IconCircleCheck.js');
70require('./IconCircleMinus.js');
71require('./IconCirclePlus.js');
72require('./IconClock.js');
73require('./IconCloudDownload.js');
74require('./IconCloudUpload.js');
75require('./IconCoin.js');
76require('./IconConfiguration.js');
77require('./IconConnect.js');
78require('./IconConnection.js');
79require('./IconConsole.js');
80require('./IconCopy.js');
81require('./IconCross.js');
82require('./IconDashedSquare.js');
83require('./IconDown.js');
84require('./IconDownload.js');
85require('./IconEdit.js');
86require('./IconEllipsis.js');
87require('./IconEnter.js');
88require('./IconEthereum.js');
89require('./IconExternal.js');
90require('./IconFile.js');
91require('./IconFilter.js');
92require('./IconFlag.js');
93require('./IconFolder.js');
94require('./IconGraph2.js');
95require('./IconGraph.js');
96require('./IconGrid.js');
97require('./IconGroup.js');
98require('./IconHash.js');
99require('./IconHeart.js');
100require('./IconHide.js');
101require('./IconHome.js');
102require('./IconImage.js');
103require('./IconInfo.js');
104require('./IconLabel.js');
105require('./IconLayers.js');
106require('./IconLeft.js');
107require('./IconLink.js');
108require('./IconLocation.js');
109require('./IconLock.js');
110require('./IconMail.js');
111require('./IconMaximize.js');
112require('./IconMenu.js');
113require('./IconMinimize.js');
114require('./IconMinus.js');
115require('./IconMove.js');
116require('./IconNoPicture.js');
117require('./IconPicture.js');
118require('./IconPlus.js');
119require('./IconPower.js');
120require('./IconPrint.js');
121require('./IconProhibited.js');
122require('./IconQuestion.js');
123require('./IconRefresh.js');
124require('./IconRemoveUser.js');
125require('./IconRight.js');
126require('./IconRotateLeft.js');
127require('./IconRotateRight.js');
128require('./IconSearch.js');
129require('./IconSettings.js');
130require('./IconShare.js');
131require('./IconSquareMinus.js');
132require('./IconSquarePlus.js');
133require('./IconSquare.js');
134require('./IconStarFilled.js');
135require('./IconStar.js');
136require('./IconSwap.js');
137require('./IconTarget.js');
138require('./IconToken.js');
139require('./IconTrash.js');
140require('./IconUnlock.js');
141require('./IconUp.js');
142require('./IconUpload.js');
143require('./IconUser.js');
144require('./IconView.js');
145require('./IconVote.js');
146require('./IconWallet.js');
147require('./IconWarning.js');
148require('./IconWorld.js');
149require('./IconWrite.js');
150require('./IconZoomIn.js');
151require('./IconZoomOut.js');
152var PaginationSeparator = require('./PaginationSeparator.js');
153
154function paginationItems(pages, selected) {
155 var all = toConsumableArray._toConsumableArray(Array(pages)).map(function (_, i) {
156 return i;
157 });
158
159 if (all.length < 6) {
160 return all;
161 }
162
163 var first = 0;
164 var last = all.length - 1;
165 var prev = Math.min(all.length, Math.max(0, selected - 1));
166 var next = Math.min(all.length, Math.max(0, selected + 1));
167 var items = []; // Selected item + previous + next
168
169 items.push.apply(items, toConsumableArray._toConsumableArray(all.slice(prev, next + 1))); // Display three items, even if the first / last one is selected
170
171 if (selected === last) {
172 items.unshift(last - 2);
173 }
174
175 if (selected === first) {
176 items.push(first + 2);
177 } // Ellipsises
178
179
180 if (prev > first + 1) {
181 items.unshift(-1);
182 }
183
184 if (next < last - 1) {
185 items.push(-1);
186 } // Always display the first & last items
187
188
189 if (prev >= first + 1) {
190 items.unshift(all[0]);
191 }
192
193 if (next <= last - 1) {
194 items.push(all[all.length - 1]);
195 }
196
197 return items;
198}
199
200var _StyledDiv = _styled__default("div").withConfig({
201 displayName: "Pagination___StyledDiv",
202 componentId: "sc-10i2kzw-0"
203})(["display:flex;align-items:center;justify-content:center;padding:", "px 0;& > div + div{margin-left:", "px;}"], function (p) {
204 return p._css;
205}, function (p) {
206 return p._css2;
207});
208
209var Pagination = React__default.memo(function Pagination(_ref) {
210 var pages = _ref.pages,
211 selected = _ref.selected,
212 onChange = _ref.onChange,
213 touchMode = _ref.touchMode,
214 props = objectWithoutProperties._objectWithoutProperties(_ref, ["pages", "selected", "onChange", "touchMode"]);
215
216 var items = paginationItems(pages, selected);
217 return /*#__PURE__*/React__default.createElement(_StyledDiv, _extends._extends({}, props, {
218 _css: 2 * constants.GU,
219 _css2: 1 * constants.GU
220 }), items.map(function (pageIndex, i) {
221 return pageIndex === -1 ? /*#__PURE__*/React__default.createElement(PaginationSeparator.PaginationSeparator, {
222 key: "separator-".concat(i)
223 }) : /*#__PURE__*/React__default.createElement(PaginationItem.PaginationItem, {
224 key: pageIndex,
225 index: pageIndex,
226 selected: selected === pageIndex,
227 onChange: onChange,
228 touchMode: touchMode
229 });
230 }));
231});
232Pagination.propTypes = {
233 onChange: index.PropTypes.func,
234 pages: index.PropTypes.number,
235 selected: index.PropTypes.number,
236 touchMode: index.PropTypes.bool
237};
238Pagination.defaultProps = {
239 onChange: miscellaneous.noop,
240 pages: 0,
241 selected: 0,
242 touchMode: false
243};
244
245exports.default = Pagination;
246//# sourceMappingURL=Pagination.js.map