first commit
This commit is contained in:
36
node_modules/dom-helpers/esm/scrollTo.js
generated
vendored
Normal file
36
node_modules/dom-helpers/esm/scrollTo.js
generated
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
/* eslint-disable no-nested-ternary */
|
||||
import { cancel, request } from './animationFrame';
|
||||
import height from './height';
|
||||
import getWindow from './isWindow';
|
||||
import getOffset from './offset';
|
||||
import getScrollParent from './scrollParent';
|
||||
import scrollTop from './scrollTop';
|
||||
export default function scrollTo(selected, scrollParent) {
|
||||
var offset = getOffset(selected);
|
||||
var poff = {
|
||||
top: 0,
|
||||
left: 0
|
||||
};
|
||||
if (!selected) return undefined;
|
||||
var list = scrollParent || getScrollParent(selected);
|
||||
var isWin = getWindow(list);
|
||||
var listScrollTop = scrollTop(list);
|
||||
var listHeight = height(list, true);
|
||||
if (!isWin) poff = getOffset(list);
|
||||
offset = {
|
||||
top: offset.top - poff.top,
|
||||
left: offset.left - poff.left,
|
||||
height: offset.height,
|
||||
width: offset.width
|
||||
};
|
||||
var selectedHeight = offset.height;
|
||||
var selectedTop = offset.top + (isWin ? 0 : listScrollTop);
|
||||
var bottom = selectedTop + selectedHeight;
|
||||
listScrollTop = listScrollTop > selectedTop ? selectedTop : bottom > listScrollTop + listHeight ? bottom - listHeight : listScrollTop;
|
||||
var id = request(function () {
|
||||
return scrollTop(list, listScrollTop);
|
||||
});
|
||||
return function () {
|
||||
return cancel(id);
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user