|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- import clamp from 'lodash-es/clamp';
- import { eventScope, getPosition, } from '../utils/';
- export function selectHandler(scrollbar) {
- var addEvent = eventScope(scrollbar);
- var containerEl = scrollbar.containerEl, contentEl = scrollbar.contentEl, offset = scrollbar.offset, limit = scrollbar.limit;
- var isSelected = false;
- var animationID;
- function scroll(_a) {
- var x = _a.x, y = _a.y;
- if (!x && !y)
- return;
- // DISALLOW delta transformation
- scrollbar.setMomentum(clamp(offset.x + x, 0, limit.x) - offset.x, clamp(offset.y + y, 0, limit.y) - offset.y);
- animationID = requestAnimationFrame(function () {
- scroll({ x: x, y: y });
- });
- }
- addEvent(window, 'mousemove', function (evt) {
- if (!isSelected)
- return;
- cancelAnimationFrame(animationID);
- var dir = calcMomentum(scrollbar, evt);
- scroll(dir);
- });
- addEvent(contentEl, 'selectstart', function (evt) {
- evt.stopPropagation();
- cancelAnimationFrame(animationID);
- isSelected = true;
- });
- addEvent(window, 'mouseup blur', function () {
- cancelAnimationFrame(animationID);
- isSelected = false;
- });
- // patch for touch devices
- addEvent(containerEl, 'scroll', function (evt) {
- evt.preventDefault();
- containerEl.scrollTop = containerEl.scrollLeft = 0;
- });
- }
- function calcMomentum(scrollbar, evt) {
- var _a = scrollbar.bounding, top = _a.top, right = _a.right, bottom = _a.bottom, left = _a.left;
- var _b = getPosition(evt), x = _b.x, y = _b.y;
- var res = {
- x: 0,
- y: 0,
- };
- var padding = 20;
- if (x === 0 && y === 0)
- return res;
- if (x > right - padding) {
- res.x = (x - right + padding);
- }
- else if (x < left + padding) {
- res.x = (x - left - padding);
- }
- if (y > bottom - padding) {
- res.y = (y - bottom + padding);
- }
- else if (y < top + padding) {
- res.y = (y - top - padding);
- }
- res.x *= 2;
- res.y *= 2;
- return res;
- }
- //# sourceMappingURL=select.js.map
|