mirror of
https://github.com/tenrok/OverlayScrollbars.git
synced 2026-05-22 15:24:08 +03:00
improve body init
This commit is contained in:
@@ -85,15 +85,15 @@ export const createScrollbarsSetupElements = (
|
||||
structureSetupElements: StructureSetupElementsObj
|
||||
): ScrollbarsSetupElements => {
|
||||
const { _getDefaultInitialization } = getEnvironment();
|
||||
const { scrollbarsSlot: defaultScrollbarSlot } = _getDefaultInitialization();
|
||||
const { scrollbarsSlot: defaultScrollbarsSlot } = _getDefaultInitialization();
|
||||
const { _documentElm, _target, _host, _viewport, _targetIsElm } = structureSetupElements;
|
||||
const scrollbarSlot = _targetIsElm ? null : (target as ScrollbarsInitialization).scrollbarsSlot;
|
||||
const { scrollbarsSlot } = (_targetIsElm ? {} : target) as ScrollbarsInitialization;
|
||||
const evaluatedScrollbarSlot =
|
||||
generalDynamicInitializationElement<ScrollbarsDynamicInitializationElement>(
|
||||
[_target, _host, _viewport],
|
||||
() => _host,
|
||||
defaultScrollbarSlot,
|
||||
scrollbarSlot
|
||||
defaultScrollbarsSlot,
|
||||
scrollbarsSlot
|
||||
);
|
||||
const scrollbarsAddRemoveClass = (
|
||||
scrollbarStructures: ScrollbarStructure[],
|
||||
|
||||
@@ -133,13 +133,15 @@ export const createScrollbarsSetup = (
|
||||
target,
|
||||
structureSetupState._elements
|
||||
);
|
||||
const { _host, _viewport, _viewportIsTarget, _isBody } = structureSetupState._elements;
|
||||
const { _host, _viewport, _viewportIsTarget, _isBody, _documentElm } =
|
||||
structureSetupState._elements;
|
||||
const scrollOffsetElement = _isBody ? _documentElm.documentElement : _viewport;
|
||||
const { _horizontal, _vertical } = elements;
|
||||
const { _addRemoveClass: addRemoveClassHorizontal, _handleStyle: styleHorizontal } = _horizontal;
|
||||
const { _addRemoveClass: addRemoveClassVertical, _handleStyle: styleVertical } = _vertical;
|
||||
const styleScrollbarPosition = (structure: ScrollbarStructure) => {
|
||||
const { _scrollbar } = structure;
|
||||
const elm = _viewportIsTarget && _isBody && parent(_scrollbar) === _viewport && _scrollbar;
|
||||
const elm = _viewportIsTarget && !_isBody && parent(_scrollbar) === _viewport && _scrollbar;
|
||||
return [
|
||||
elm,
|
||||
{
|
||||
@@ -193,11 +195,11 @@ export const createScrollbarsSetup = (
|
||||
});
|
||||
});
|
||||
}),
|
||||
on(_viewport, 'scroll', () => {
|
||||
on(_isBody ? _documentElm : _viewport, 'scroll', () => {
|
||||
requestScrollAnimationFrame(() => {
|
||||
const structureState = structureSetupState();
|
||||
refreshScrollbarHandleOffset(styleHorizontal, structureState, _viewport, true);
|
||||
refreshScrollbarHandleOffset(styleVertical, structureState, _viewport);
|
||||
refreshScrollbarHandleOffset(styleHorizontal, structureState, scrollOffsetElement, true);
|
||||
refreshScrollbarHandleOffset(styleVertical, structureState, scrollOffsetElement);
|
||||
|
||||
autoHideNotNever && manageScrollbarsAutoHide(true);
|
||||
scrollTimeout(() => {
|
||||
@@ -275,8 +277,13 @@ export const createScrollbarsSetup = (
|
||||
refreshScrollbarHandleLength(styleHorizontal, currStructureSetupState, true);
|
||||
refreshScrollbarHandleLength(styleVertical, currStructureSetupState);
|
||||
|
||||
refreshScrollbarHandleOffset(styleHorizontal, currStructureSetupState, _viewport, true);
|
||||
refreshScrollbarHandleOffset(styleVertical, currStructureSetupState, _viewport);
|
||||
refreshScrollbarHandleOffset(
|
||||
styleHorizontal,
|
||||
currStructureSetupState,
|
||||
scrollOffsetElement,
|
||||
true
|
||||
);
|
||||
refreshScrollbarHandleOffset(styleVertical, currStructureSetupState, scrollOffsetElement);
|
||||
}
|
||||
},
|
||||
scrollbarsSetupState,
|
||||
|
||||
Reference in New Issue
Block a user