Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F121608395
usePagination.js
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Sat, Jul 12, 10:19
Size
5 KB
Mime Type
text/x-java
Expires
Mon, Jul 14, 10:19 (2 d)
Engine
blob
Format
Raw Data
Handle
27357480
Attached To
rOACCT Open Access Compliance Check Tool (OACCT)
usePagination.js
View Options
import
_extends
from
"@babel/runtime/helpers/esm/extends"
;
import
_toConsumableArray
from
"@babel/runtime/helpers/esm/toConsumableArray"
;
import
_slicedToArray
from
"@babel/runtime/helpers/esm/slicedToArray"
;
import
_objectWithoutProperties
from
"@babel/runtime/helpers/esm/objectWithoutProperties"
;
import
{
unstable_useControlled
as
useControlled
}
from
'@mui/utils'
;
export
default
function
usePagination
()
{
var
props
=
arguments
.
length
>
0
&&
arguments
[
0
]
!==
undefined
?
arguments
[
0
]
:
{};
// keep default values in sync with @default tags in Pagination.propTypes
var
_props$boundaryCount
=
props
.
boundaryCount
,
boundaryCount
=
_props$boundaryCount
===
void
0
?
1
:
_props$boundaryCount
,
_props$componentName
=
props
.
componentName
,
componentName
=
_props$componentName
===
void
0
?
'usePagination'
:
_props$componentName
,
_props$count
=
props
.
count
,
count
=
_props$count
===
void
0
?
1
:
_props$count
,
_props$defaultPage
=
props
.
defaultPage
,
defaultPage
=
_props$defaultPage
===
void
0
?
1
:
_props$defaultPage
,
_props$disabled
=
props
.
disabled
,
disabled
=
_props$disabled
===
void
0
?
false
:
_props$disabled
,
_props$hideNextButton
=
props
.
hideNextButton
,
hideNextButton
=
_props$hideNextButton
===
void
0
?
false
:
_props$hideNextButton
,
_props$hidePrevButton
=
props
.
hidePrevButton
,
hidePrevButton
=
_props$hidePrevButton
===
void
0
?
false
:
_props$hidePrevButton
,
handleChange
=
props
.
onChange
,
pageProp
=
props
.
page
,
_props$showFirstButto
=
props
.
showFirstButton
,
showFirstButton
=
_props$showFirstButto
===
void
0
?
false
:
_props$showFirstButto
,
_props$showLastButton
=
props
.
showLastButton
,
showLastButton
=
_props$showLastButton
===
void
0
?
false
:
_props$showLastButton
,
_props$siblingCount
=
props
.
siblingCount
,
siblingCount
=
_props$siblingCount
===
void
0
?
1
:
_props$siblingCount
,
other
=
_objectWithoutProperties
(
props
,
[
"boundaryCount"
,
"componentName"
,
"count"
,
"defaultPage"
,
"disabled"
,
"hideNextButton"
,
"hidePrevButton"
,
"onChange"
,
"page"
,
"showFirstButton"
,
"showLastButton"
,
"siblingCount"
]);
var
_useControlled
=
useControlled
({
controlled
:
pageProp
,
default
:
defaultPage
,
name
:
componentName
,
state
:
'page'
}),
_useControlled2
=
_slicedToArray
(
_useControlled
,
2
),
page
=
_useControlled2
[
0
],
setPageState
=
_useControlled2
[
1
];
var
handleClick
=
function
handleClick
(
event
,
value
)
{
if
(
!
pageProp
)
{
setPageState
(
value
);
}
if
(
handleChange
)
{
handleChange
(
event
,
value
);
}
};
// https://dev.to/namirsab/comment/2050
var
range
=
function
range
(
start
,
end
)
{
var
length
=
end
-
start
+
1
;
return
Array
.
from
({
length
:
length
},
function
(
_
,
i
)
{
return
start
+
i
;
});
};
var
startPages
=
range
(
1
,
Math
.
min
(
boundaryCount
,
count
));
var
endPages
=
range
(
Math
.
max
(
count
-
boundaryCount
+
1
,
boundaryCount
+
1
),
count
);
var
siblingsStart
=
Math
.
max
(
Math
.
min
(
// Natural start
page
-
siblingCount
,
// Lower boundary when page is high
count
-
boundaryCount
-
siblingCount
*
2
-
1
),
// Greater than startPages
boundaryCount
+
2
);
var
siblingsEnd
=
Math
.
min
(
Math
.
max
(
// Natural end
page
+
siblingCount
,
// Upper boundary when page is low
boundaryCount
+
siblingCount
*
2
+
2
),
// Less than endPages
endPages
.
length
>
0
?
endPages
[
0
]
-
2
:
count
-
1
);
// Basic list of items to render
// e.g. itemList = ['first', 'previous', 1, 'ellipsis', 4, 5, 6, 'ellipsis', 10, 'next', 'last']
var
itemList
=
[].
concat
(
_toConsumableArray
(
showFirstButton
?
[
'first'
]
:
[]),
_toConsumableArray
(
hidePrevButton
?
[]
:
[
'previous'
]),
_toConsumableArray
(
startPages
),
_toConsumableArray
(
siblingsStart
>
boundaryCount
+
2
?
[
'start-ellipsis'
]
:
boundaryCount
+
1
<
count
-
boundaryCount
?
[
boundaryCount
+
1
]
:
[]),
_toConsumableArray
(
range
(
siblingsStart
,
siblingsEnd
)),
_toConsumableArray
(
siblingsEnd
<
count
-
boundaryCount
-
1
?
[
'end-ellipsis'
]
:
count
-
boundaryCount
>
boundaryCount
?
[
count
-
boundaryCount
]
:
[]),
_toConsumableArray
(
endPages
),
_toConsumableArray
(
hideNextButton
?
[]
:
[
'next'
]),
_toConsumableArray
(
showLastButton
?
[
'last'
]
:
[]));
// Map the button type to its page number
var
buttonPage
=
function
buttonPage
(
type
)
{
switch
(
type
)
{
case
'first'
:
return
1
;
case
'previous'
:
return
page
-
1
;
case
'next'
:
return
page
+
1
;
case
'last'
:
return
count
;
default
:
return
null
;
}
};
// Convert the basic item list to PaginationItem props objects
var
items
=
itemList
.
map
(
function
(
item
)
{
return
typeof
item
===
'number'
?
{
onClick
:
function
onClick
(
event
)
{
handleClick
(
event
,
item
);
},
type
:
'page'
,
page
:
item
,
selected
:
item
===
page
,
disabled
:
disabled
,
'aria-current'
:
item
===
page
?
'true'
:
undefined
}
:
{
onClick
:
function
onClick
(
event
)
{
handleClick
(
event
,
buttonPage
(
item
));
},
type
:
item
,
page
:
buttonPage
(
item
),
selected
:
false
,
disabled
:
disabled
||
item
.
indexOf
(
'ellipsis'
)
===
-
1
&&
(
item
===
'next'
||
item
===
'last'
?
page
>=
count
:
page
<=
1
)
};
});
return
_extends
({
items
:
items
},
other
);
}
Event Timeline
Log In to Comment