UNPKG

@clayui/shared

Version:

ClayShared component

42 lines (41 loc) 1.67 kB
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } /** * SPDX-FileCopyrightText: © 2019 Liferay, Inc. <https://liferay.com> * SPDX-License-Identifier: BSD-3-Clause */ import React from 'react'; const getBufferList = (start, end, config) => { const { EllipsisComponent, ellipsisProps, items, spritemap } = config; const removedItems = items.slice(start, Math.max(end, start)); if (removedItems.length > 1) { return [/*#__PURE__*/React.createElement(EllipsisComponent, _extends({ items: removedItems, key: "ellipsisComponent", spritemap: spritemap }, ellipsisProps))]; } return removedItems; }; export const getEllipsisItems = function (config, ellipsisBuffer) { let activeIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0; const { items } = config; const lastIndex = items.length - 1; const leftBufferEnd = activeIndex - ellipsisBuffer; const rightBufferStart = activeIndex + ellipsisBuffer + 1; const leftBuffer = getBufferList(1, leftBufferEnd, config); const rightBuffer = getBufferList(rightBufferStart, lastIndex, config); const newArray = [items[0], ...leftBuffer, ...items.slice(Math.max(activeIndex - ellipsisBuffer, 1), // Add 1 to account for active index Math.min(activeIndex + ellipsisBuffer + 1, lastIndex)), ...rightBuffer]; if (items.length > 1) { newArray.push(items[lastIndex]); } return newArray; };