41 lines
1.7 KiB
JavaScript
41 lines
1.7 KiB
JavaScript
export function bias(val) {
|
|
const c = 0.501;
|
|
const x = Math.abs(val);
|
|
return Math.sign(val) * (x / ((1 / c - 2) * (1 - x) + 1));
|
|
}
|
|
export function calculateUpdatedOffset(_ref) {
|
|
let {
|
|
selectedElement,
|
|
containerSize,
|
|
contentSize,
|
|
isRtl,
|
|
currentScrollOffset,
|
|
isHorizontal
|
|
} = _ref;
|
|
const clientSize = isHorizontal ? selectedElement.clientWidth : selectedElement.clientHeight;
|
|
const offsetStart = isHorizontal ? selectedElement.offsetLeft : selectedElement.offsetTop;
|
|
const adjustedOffsetStart = isRtl && isHorizontal ? contentSize - offsetStart - clientSize : offsetStart;
|
|
const totalSize = containerSize + currentScrollOffset;
|
|
const itemOffset = clientSize + adjustedOffsetStart;
|
|
const additionalOffset = clientSize * 0.4;
|
|
if (adjustedOffsetStart <= currentScrollOffset) {
|
|
currentScrollOffset = Math.max(adjustedOffsetStart - additionalOffset, 0);
|
|
} else if (totalSize <= itemOffset) {
|
|
currentScrollOffset = Math.min(currentScrollOffset - (totalSize - itemOffset - additionalOffset), contentSize - containerSize);
|
|
}
|
|
return currentScrollOffset;
|
|
}
|
|
export function calculateCenteredOffset(_ref2) {
|
|
let {
|
|
selectedElement,
|
|
containerSize,
|
|
contentSize,
|
|
isRtl,
|
|
isHorizontal
|
|
} = _ref2;
|
|
const clientSize = isHorizontal ? selectedElement.clientWidth : selectedElement.clientHeight;
|
|
const offsetStart = isHorizontal ? selectedElement.offsetLeft : selectedElement.offsetTop;
|
|
const offsetCentered = isRtl && isHorizontal ? contentSize - offsetStart - clientSize / 2 - containerSize / 2 : offsetStart + clientSize / 2 - containerSize / 2;
|
|
return Math.min(contentSize - containerSize, Math.max(0, offsetCentered));
|
|
}
|
|
//# sourceMappingURL=helpers.mjs.map
|