( pointerPos: number, pointerOffset: number, sizes: Sizes, dir: Direction = 'ltr', )
| 985 | } |
| 986 | |
| 987 | function getScrollPositionFromPointer( |
| 988 | pointerPos: number, |
| 989 | pointerOffset: number, |
| 990 | sizes: Sizes, |
| 991 | dir: Direction = 'ltr', |
| 992 | ) { |
| 993 | const thumbSizePx = getThumbSize(sizes) |
| 994 | const thumbCenter = thumbSizePx / 2 |
| 995 | const offset = pointerOffset || thumbCenter |
| 996 | const thumbOffsetFromEnd = thumbSizePx - offset |
| 997 | const minPointerPos = sizes.scrollbar.paddingStart + offset |
| 998 | const maxPointerPos = sizes.scrollbar.size - sizes.scrollbar.paddingEnd - thumbOffsetFromEnd |
| 999 | const maxScrollPos = sizes.content - sizes.viewport |
| 1000 | const scrollRange = dir === 'ltr' ? [0, maxScrollPos] : [maxScrollPos * -1, 0] |
| 1001 | const interpolate = linearScale([minPointerPos, maxPointerPos], scrollRange as [number, number]) |
| 1002 | return interpolate(pointerPos) |
| 1003 | } |
| 1004 | |
| 1005 | function getThumbOffsetFromScroll(scrollPos: number, sizes: Sizes, dir: Direction = 'ltr') { |
| 1006 | const thumbSizePx = getThumbSize(sizes) |
no test coverage detected
searching dependent graphs…