improve code

This commit is contained in:
Rene
2022-07-01 17:04:11 +02:00
parent 8a189da244
commit 14a49a52ff
10 changed files with 153 additions and 121 deletions
@@ -110,28 +110,36 @@ export const OverlayScrollbars: OverlayScrollbarsStatic = (
structureState._addOnUpdatedListener((updateHints, changedOptions, force) => {
const {
_viewportOverflowAmountCache: overflowAmountCache,
_viewportOverflowScrollCache: overflowScrollCache,
} = structureState();
const [overflowAmount, overflowAmountChanged, prevOverflowAmount] = overflowAmountCache;
const [overflowScroll, overflowScrollChanged, prevOverflowScroll] = overflowScrollCache;
_sizeChanged,
_contentMutation,
_hostMutation,
_directionChanged,
_heightIntrinsicChanged,
_overflowAmountChanged,
_overflowScrollChanged,
} = updateHints;
const { _viewportOverflowAmount, _viewportOverflowScroll } = structureState();
if (overflowAmountChanged || overflowScrollChanged) {
if (_overflowAmountChanged || _overflowScrollChanged) {
triggerEvent(
'overflowChanged',
assignDeep({}, createOverflowChangedArgs(overflowAmount, overflowScroll), {
previous: createOverflowChangedArgs(prevOverflowAmount!, prevOverflowScroll!),
})
assignDeep(
{},
createOverflowChangedArgs(_viewportOverflowAmount, _viewportOverflowScroll),
{
previous: createOverflowChangedArgs(_viewportOverflowAmount!, _viewportOverflowScroll!),
}
)
);
}
triggerEvent('updated', {
updateHints: {
sizeChanged: updateHints._sizeChanged,
contentMutation: updateHints._contentMutation,
hostMutation: updateHints._hostMutation,
directionChanged: updateHints._directionIsRTL[1],
heightIntrinsicChanged: updateHints._heightIntrinsic[1],
sizeChanged: _sizeChanged,
contentMutation: _contentMutation,
hostMutation: _hostMutation,
directionChanged: _directionChanged,
heightIntrinsicChanged: _heightIntrinsicChanged,
},
changedOptions,
force,
@@ -155,7 +163,7 @@ export const OverlayScrollbars: OverlayScrollbarsStatic = (
on: addEvent,
off: removeEvent,
state: () => ({
_overflowAmount: structureState()._viewportOverflowAmountCache[0],
_overflowAmount: structureState()._viewportOverflowAmount,
}),
update(force?: boolean) {
update({}, force);
@@ -14,7 +14,8 @@ import { getEnvironment } from 'environment';
import { createSizeObserver, SizeObserverCallbackParams } from 'observers/sizeObserver';
import { createTrinsicObserver } from 'observers/trinsicObserver';
import { createDOMObserver, DOMObserver } from 'observers/domObserver';
import type { SetupUpdateCheckOption } from 'setups';
import type { SetupState, SetupUpdateCheckOption } from 'setups';
import type { StructureSetupState } from 'setups/structureSetup';
import type { StructureSetupElementsObj } from 'setups/structureSetup/structureSetup.elements';
import type {
StructureSetupUpdate,
@@ -62,6 +63,7 @@ type ExcludeFromTuple<T extends readonly any[], E> = T extends [infer F, ...infe
export const createStructureSetupObservers = (
structureSetupElements: StructureSetupElementsObj,
state: SetupState<StructureSetupState>,
structureSetupUpdate: (
...args: ExcludeFromTuple<Parameters<StructureSetupUpdate>, Parameters<StructureSetupUpdate>[0]>
) => any
@@ -69,6 +71,7 @@ export const createStructureSetupObservers = (
let debounceTimeout: number | false | undefined;
let debounceMaxDelay: number | false | undefined;
let contentMutationObserver: DOMObserver | undefined;
const [, setState] = state;
const { _host, _viewport, _content, _isTextarea } = structureSetupElements;
const { _nativeScrollbarStyling, _flexboxGlue } = getEnvironment();
const contentMutationObserverAttr = _isTextarea
@@ -112,10 +115,10 @@ export const createStructureSetupObservers = (
}
});
};
const onTrinsicChanged = (heightIntrinsic: CacheValues<boolean>) => {
structureSetupUpdate({
_heightIntrinsic: heightIntrinsic,
});
const onTrinsicChanged = (heightIntrinsicCache: CacheValues<boolean>) => {
const [heightIntrinsic, heightIntrinsicChanged] = heightIntrinsicCache;
setState({ _heightIntrinsic: heightIntrinsic });
structureSetupUpdate({ _heightIntrinsicChanged: heightIntrinsicChanged });
};
const onSizeChanged = ({
_sizeChanged,
@@ -127,10 +130,14 @@ export const createStructureSetupObservers = (
? structureSetupUpdate
: structureSetupUpdateWithDebouncedAdaptiveUpdateHints;
updateFn({
_sizeChanged,
_directionIsRTL: _directionIsRTLCache,
});
let directionChanged = false;
if (_directionIsRTLCache) {
const [directionIsRTL, directionIsRTLChanged] = _directionIsRTLCache;
directionChanged = directionIsRTLChanged;
setState({ _directionIsRTL: directionIsRTL });
}
updateFn({ _sizeChanged, _directionChanged: directionChanged });
};
const onContentMutation = (contentChangedTroughEvent: boolean) => {
// if contentChangedTroughEvent is true its already debounced
@@ -5,7 +5,7 @@ import { createStructureSetupUpdate } from 'setups/structureSetup/structureSetup
import { createStructureSetupObservers } from 'setups/structureSetup/structureSetup.observers';
import type { StructureSetupUpdateHints } from 'setups/structureSetup/structureSetup.update';
import type { StructureSetupElementsObj } from 'setups/structureSetup/structureSetup.elements';
import type { TRBL, CacheValues, XY, WH } from 'support';
import type { TRBL, XY, WH } from 'support';
import type { OSOptions, ReadonlyOSOptions } from 'options';
import type { Setup } from 'setups';
import type { OSTarget, PartialOptions, StyleObject } from 'typings';
@@ -14,8 +14,10 @@ export interface StructureSetupState {
_padding: TRBL;
_paddingAbsolute: boolean;
_viewportPaddingStyle: StyleObject;
_viewportOverflowScrollCache: CacheValues<XY<boolean>>;
_viewportOverflowAmountCache: CacheValues<WH<number>>;
_viewportOverflowScroll: XY<boolean>;
_viewportOverflowAmount: WH<number>;
_heightIntrinsic: boolean;
_directionIsRTL: boolean;
}
export interface StructureSetupStaticState {
@@ -37,20 +39,6 @@ const initialStructureSetupUpdateState: StructureSetupState = {
l: 0,
},
_paddingAbsolute: false,
_viewportOverflowScrollCache: [
{
x: false,
y: false,
},
false,
],
_viewportOverflowAmountCache: [
{
w: 0,
h: 0,
},
false,
],
_viewportPaddingStyle: {
marginRight: 0,
marginBottom: 0,
@@ -60,6 +48,16 @@ const initialStructureSetupUpdateState: StructureSetupState = {
paddingBottom: 0,
paddingLeft: 0,
},
_viewportOverflowAmount: {
w: 0,
h: 0,
},
_viewportOverflowScroll: {
x: false,
y: false,
},
_heightIntrinsic: false,
_directionIsRTL: false,
};
export const createStructureSetup = (
@@ -83,6 +81,7 @@ export const createStructureSetup = (
const updateStructure = createStructureSetupUpdate(elements, state);
const [updateObservers, destroyObservers] = createStructureSetupObservers(
elements,
state,
(updateHints) => {
runOnUpdatedListeners(updateStructure(checkOptionsFallback, updateHints));
}
@@ -7,6 +7,7 @@ import {
assignDeep,
keys,
isBoolean,
isUndefined,
} from 'support';
import { getEnvironment } from 'environment';
import {
@@ -36,12 +37,12 @@ export interface StructureSetupUpdateHints {
_hostMutation: boolean;
_contentMutation: boolean;
_paddingStyleChanged: boolean;
_directionIsRTL: CacheValues<boolean>;
_heightIntrinsic: CacheValues<boolean>;
_directionChanged: boolean;
_heightIntrinsicChanged: boolean;
_overflowScrollChanged: boolean;
_overflowAmountChanged: boolean;
}
const booleanCacheValuesFallback: CacheValues<boolean> = [false, false, false];
const applyForceToCache = <T>(cacheValues: CacheValues<T>, force?: boolean): CacheValues<T> => [
cacheValues[0],
force || cacheValues[1],
@@ -62,7 +63,7 @@ const prepareUpdateHints = <T extends StructureSetupUpdateHints>(
const adaptiveValue = finalAdaptive[key];
result[key] = isBoolean(leadingValue)
? !!force || !!leadingValue || !!adaptiveValue
: applyForceToCache(leadingValue || booleanCacheValuesFallback, force);
: applyForceToCache(leadingValue, force);
});
return result as Required<T>;
@@ -95,10 +96,17 @@ export const createStructureSetupUpdate = (
_hostMutation: false,
_contentMutation: false,
_paddingStyleChanged: false,
_directionIsRTL: booleanCacheValuesFallback,
_heightIntrinsic: booleanCacheValuesFallback,
_directionChanged: false,
_heightIntrinsicChanged: false,
_overflowScrollChanged: false,
_overflowAmountChanged: false,
},
updateHints
Object.keys(updateHints).reduce((acc, key) => {
if (!isUndefined(updateHints[key])) {
acc[key] = updateHints[key];
}
return acc;
}, {})
),
{},
force
@@ -11,8 +11,6 @@ import {
addClass,
removeClass,
clientSize,
offsetSize,
getBoundingClientRect,
noop,
each,
equalXY,
@@ -34,7 +32,7 @@ type UndoViewportArrangeResult = [
ViewportOverflowState?
];
const { max, abs, round } = Math;
const { max, round } = Math;
const overlaidScrollbarsHideOffset = 42;
const whCacheOptions = {
_equal: equalWH,
@@ -44,12 +42,13 @@ const xyCacheOptions = {
_equal: equalXY,
_initialValue: { x: false, y: false },
};
const sizeFraction = (elm: HTMLElement): WH<number> => {
const viewportOffsetSize = offsetSize(elm);
const viewportRect = getBoundingClientRect(elm);
const getSizeFraction = (elm: HTMLElement): WH<number> => {
const cssHeight = parseFloat(style(elm, 'height'));
const cssWidth = parseFloat(style(elm, 'height'));
return {
w: viewportRect.width - viewportOffsetSize.w,
h: viewportRect.height - viewportOffsetSize.h,
w: cssWidth - round(cssWidth),
h: cssHeight - round(cssHeight),
};
};
const fractionalPixelRatioTollerance = () => (window.devicePixelRatio % 1 === 0 ? 0 : 1);
@@ -119,9 +118,9 @@ export const createOverflowUpdate: CreateStructureUpdateSegment = (
const doViewportArrange =
!_nativeScrollbarStyling && (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y);
const [updateViewportSizeFraction, getCurrentViewportSizeFraction] = createCache<WH<number>>(
const [updateSizeFraction, getCurrentSizeFraction] = createCache<WH<number>>(
whCacheOptions,
sizeFraction.bind(0, _viewport)
getSizeFraction.bind(0, _host)
);
const [updateViewportScrollSizeCache, getCurrentViewportScrollSizeCache] = createCache<
@@ -149,13 +148,14 @@ export const createOverflowUpdate: CreateStructureUpdateSegment = (
if (heightIntrinsic) {
const { _paddingAbsolute, _padding } = getState();
const { _overflowScroll, _scrollbarsHideOffset } = viewportOverflowState;
const hostSizeFraction = sizeFraction(_host);
const hostCssHeight = parseFloat(style(_host, 'height'));
const hostClientSize = clientSize(_host);
// const hostOffsetSize = offsetSize(_host);
// padding subtraction is only needed if padding is absolute or if viewport is content-box
const isContentBox = style(_viewport, 'boxSizing') === 'content-box';
const paddingVertical = _paddingAbsolute || isContentBox ? _padding.b + _padding.t : 0;
const fractionalClientHeight =
hostClientSize.h + (abs(hostSizeFraction.h) < 1 ? hostSizeFraction.h : 0);
const fractionalClientHeight = hostClientSize.h + (hostCssHeight - round(hostCssHeight));
const subtractXScrollbar = !(_nativeScrollbarIsOverlaid.x && isContentBox);
style(_viewport, {
@@ -254,7 +254,7 @@ export const createOverflowUpdate: CreateStructureUpdateSegment = (
const arrangeViewport = (
viewportOverflowState: ViewportOverflowState,
viewportScrollSize: WH<number>,
viewportSizeFraction: WH<number>,
sizeFraction: WH<number>,
directionIsRTL: boolean
) => {
if (doViewportArrange) {
@@ -269,10 +269,8 @@ export const createOverflowUpdate: CreateStructureUpdateSegment = (
viewportArrangeHorizontalPaddingKey
] as number;
const viewportArrangeVerticalPaddingValue = _viewportPaddingStyle.paddingTop as number;
const fractionalContentWidth =
viewportScrollSize.w + (abs(viewportSizeFraction.w) < 1 ? viewportSizeFraction.w : 0);
const fractionalContenHeight =
viewportScrollSize.h + (abs(viewportSizeFraction.h) < 1 ? viewportSizeFraction.h : 0);
const fractionalContentWidth = viewportScrollSize.w + sizeFraction.w;
const fractionalContenHeight = viewportScrollSize.h + sizeFraction.h;
const arrangeSize = {
w:
hideOffsetY && arrangeY
@@ -380,10 +378,6 @@ export const createOverflowUpdate: CreateStructureUpdateSegment = (
finalPaddingStyle[prop] = viewportPaddingStyle[prop];
});
if (!_flexboxGlue) {
finalPaddingStyle.height = '';
}
if (arrangeX) {
assignProps('marginBottom paddingTop paddingBottom');
}
@@ -393,7 +387,13 @@ export const createOverflowUpdate: CreateStructureUpdateSegment = (
}
const prevStyle = style(_viewport, keys(finalPaddingStyle));
removeClass(_viewport, classNameViewportArrange);
if (!_flexboxGlue) {
finalPaddingStyle.height = '';
}
style(_viewport, finalPaddingStyle);
return [
@@ -415,15 +415,14 @@ export const createOverflowUpdate: CreateStructureUpdateSegment = (
return (updateHints, checkOption, force) => {
const {
_directionIsRTL,
_heightIntrinsic,
_sizeChanged,
_hostMutation,
_contentMutation,
_paddingStyleChanged,
_heightIntrinsicChanged,
_directionChanged,
} = updateHints;
const [heightIntrinsic, heightIntrinsicChanged] = _heightIntrinsic;
const [directionIsRTL, directionChanged] = _directionIsRTL;
const { _heightIntrinsic, _directionIsRTL } = getState();
const [showNativeOverlaidScrollbarsOption, showNativeOverlaidScrollbarsChanged] =
checkOption<boolean>('nativeScrollbarsOverlaid.show');
const showNativeOverlaidScrollbars =
@@ -436,9 +435,9 @@ export const createOverflowUpdate: CreateStructureUpdateSegment = (
_contentMutation ||
_hostMutation ||
showNativeOverlaidScrollbarsChanged ||
heightIntrinsicChanged);
_heightIntrinsicChanged);
let viewportSizeFractionCache: CacheValues<WH<number>> = getCurrentViewportSizeFraction(force);
let sizeFractionCache: CacheValues<WH<number>> = getCurrentSizeFraction(force);
let viewportScrollSizeCache: CacheValues<WH<number>> = getCurrentViewportScrollSizeCache(force);
let overflowAmuntCache: CacheValues<WH<number>> = getCurrentOverflowAmountCache(force);
let preMeasureViewportOverflowState: ViewportOverflowState | undefined;
@@ -453,23 +452,22 @@ export const createOverflowUpdate: CreateStructureUpdateSegment = (
if (adjustFlexboxGlue) {
preMeasureViewportOverflowState = getViewportOverflowState(showNativeOverlaidScrollbars);
fixFlexboxGlue(preMeasureViewportOverflowState, !!heightIntrinsic);
fixFlexboxGlue(preMeasureViewportOverflowState, _heightIntrinsic);
}
if (
_sizeChanged ||
_paddingStyleChanged ||
_contentMutation ||
showNativeOverlaidScrollbarsChanged ||
directionChanged
_directionChanged ||
showNativeOverlaidScrollbarsChanged
) {
const [redoViewportArrange, undoViewportArrangeOverflowState] = undoViewportArrange(
showNativeOverlaidScrollbars,
directionIsRTL,
_directionIsRTL,
preMeasureViewportOverflowState
);
const [viewportSizeFraction, viewportSizeFractionCahnged] = (viewportSizeFractionCache =
updateViewportSizeFraction(force));
const [sizeFraction, sizeFractionChanged] = (sizeFractionCache = updateSizeFraction(force));
const [viewportScrollSize, viewportScrollSizeChanged] = (viewportScrollSizeCache =
updateViewportScrollSizeCache(force));
const viewportContentSize = clientSize(_viewport);
@@ -480,16 +478,14 @@ export const createOverflowUpdate: CreateStructureUpdateSegment = (
// if re measure is required (only required if content arrange strategy is used)
if (
(viewportScrollSizeChanged ||
viewportSizeFractionCahnged ||
showNativeOverlaidScrollbarsChanged) &&
(viewportScrollSizeChanged || sizeFractionChanged || showNativeOverlaidScrollbarsChanged) &&
undoViewportArrangeOverflowState &&
!showNativeOverlaidScrollbars &&
arrangeViewport(
undoViewportArrangeOverflowState,
viewportScrollSize,
viewportSizeFraction,
directionIsRTL
sizeFraction,
_directionIsRTL
)
) {
arrangedViewportClientSize = clientSize(_viewport);
@@ -506,25 +502,25 @@ export const createOverflowUpdate: CreateStructureUpdateSegment = (
w: arrangedViewportClientSize.w + max(0, viewportContentSize.w - viewportScrollSize.w),
h: arrangedViewportClientSize.h + max(0, viewportContentSize.h - viewportScrollSize.h),
}, // client size
viewportSizeFraction
sizeFraction
),
force
);
}
const [viewportSizeFraction, viewportSizeFractionChanged] = viewportSizeFractionCache;
const [sizeFraction, sizeFractionChanged] = sizeFractionCache;
const [viewportScrollSize, viewportScrollSizeChanged] = viewportScrollSizeCache;
const [overflowAmount, overflowAmountChanged] = overflowAmuntCache;
const [overflow, overflowChanged] = checkOption<XY<OverflowBehavior>>('overflow');
if (
_paddingStyleChanged ||
viewportSizeFractionChanged ||
_directionChanged ||
sizeFractionChanged ||
viewportScrollSizeChanged ||
overflowAmountChanged ||
overflowChanged ||
showNativeOverlaidScrollbarsChanged ||
directionChanged ||
adjustFlexboxGlue
) {
const viewportStyle: StyleObject = {
@@ -545,13 +541,16 @@ export const createOverflowUpdate: CreateStructureUpdateSegment = (
const viewportArranged = arrangeViewport(
viewportOverflowState,
viewportScrollSize,
viewportSizeFraction,
directionIsRTL
sizeFraction,
_directionIsRTL
);
hideNativeScrollbars(viewportOverflowState, directionIsRTL, viewportArranged, viewportStyle);
const [overflowScroll, overflowScrollChanged] = updateOverflowScrollCache(
viewportOverflowState._overflowScroll
);
hideNativeScrollbars(viewportOverflowState, _directionIsRTL, viewportArranged, viewportStyle);
if (adjustFlexboxGlue) {
fixFlexboxGlue(viewportOverflowState, !!heightIntrinsic);
fixFlexboxGlue(viewportOverflowState, _heightIntrinsic);
}
// TODO: hide host overflow if scroll x or y and no padding element there
@@ -562,11 +561,14 @@ export const createOverflowUpdate: CreateStructureUpdateSegment = (
style(_viewport, viewportStyle);
setState({
_viewportOverflowScrollCache: updateOverflowScrollCache(
viewportOverflowState._overflowScroll
),
_viewportOverflowAmountCache: overflowAmuntCache,
_viewportOverflowScroll: overflowScroll,
_viewportOverflowAmount: overflowAmount,
});
return {
_overflowAmountChanged: overflowAmountChanged,
_overflowScrollChanged: overflowScrollChanged,
};
}
};
};
@@ -12,7 +12,7 @@ export const createPaddingUpdate: CreateStructureUpdateSegment = (
structureSetupElements,
state
) => {
const [, setState] = state;
const [getState, setState] = state;
const { _host, _padding, _viewport } = structureSetupElements;
const [updatePaddingCache, currentPaddingCache] = createCache(
{
@@ -25,8 +25,8 @@ export const createPaddingUpdate: CreateStructureUpdateSegment = (
return (updateHints, checkOption, force) => {
let [padding, paddingChanged] = currentPaddingCache(force);
const { _nativeScrollbarStyling, _flexboxGlue } = getEnvironment();
const { _sizeChanged, _directionIsRTL, _contentMutation } = updateHints;
const [directionIsRTL, directionChanged] = _directionIsRTL;
const { _directionIsRTL } = getState();
const { _sizeChanged, _contentMutation, _directionChanged } = updateHints;
const [paddingAbsolute, paddingAbsoluteChanged] = checkOption('paddingAbsolute');
const contentMutation = !_flexboxGlue && _contentMutation;
@@ -34,7 +34,7 @@ export const createPaddingUpdate: CreateStructureUpdateSegment = (
[padding, paddingChanged] = updatePaddingCache(force);
}
const paddingStyleChanged = paddingAbsoluteChanged || directionChanged || paddingChanged;
const paddingStyleChanged = paddingAbsoluteChanged || _directionChanged || paddingChanged;
if (paddingStyleChanged) {
// if there is no padding element and no scrollbar styling, paddingAbsolute isn't supported
@@ -43,12 +43,12 @@ export const createPaddingUpdate: CreateStructureUpdateSegment = (
const paddingVertical = padding.t + padding.b;
const paddingStyle: StyleObject = {
marginRight: paddingRelative && !directionIsRTL ? -paddingHorizontal : 0,
marginRight: paddingRelative && !_directionIsRTL ? -paddingHorizontal : 0,
marginBottom: paddingRelative ? -paddingVertical : 0,
marginLeft: paddingRelative && directionIsRTL ? -paddingHorizontal : 0,
marginLeft: paddingRelative && _directionIsRTL ? -paddingHorizontal : 0,
top: paddingRelative ? -padding.t : 0,
right: paddingRelative ? (directionIsRTL ? -padding.r : 'auto') : 0,
left: paddingRelative ? (directionIsRTL ? 'auto' : -padding.l) : 0,
right: paddingRelative ? (_directionIsRTL ? -padding.r : 'auto') : 0,
left: paddingRelative ? (_directionIsRTL ? 'auto' : -padding.l) : 0,
width: paddingRelative ? `calc(100% + ${paddingHorizontal}px)` : '',
};
const viewportStyle: StyleObject = {
@@ -6,23 +6,27 @@ import type { CreateStructureUpdateSegment } from 'setups/structureSetup/structu
* @param structureUpdateHub
* @returns
*/
export const createTrinsicUpdate: CreateStructureUpdateSegment = (structureSetupElements) => {
export const createTrinsicUpdate: CreateStructureUpdateSegment = (
structureSetupElements,
state
) => {
const { _content } = structureSetupElements;
const [getState] = state;
return (updateHints) => {
const { _heightIntrinsic } = updateHints;
const [heightIntrinsic, heightIntrinsicChanged] = _heightIntrinsic;
const { _heightIntrinsic } = getState();
const { _heightIntrinsicChanged } = updateHints;
if (heightIntrinsicChanged) {
if (_heightIntrinsicChanged) {
style(_content, {
height: heightIntrinsic ? '' : '100%',
display: heightIntrinsic ? '' : 'inline',
height: _heightIntrinsic ? '' : '100%',
display: _heightIntrinsic ? '' : 'inline',
});
}
return {
_sizeChanged: heightIntrinsicChanged,
_contentMutation: heightIntrinsicChanged,
_sizeChanged: _heightIntrinsicChanged,
_contentMutation: _heightIntrinsicChanged,
};
};
};
@@ -251,6 +251,8 @@ const checkMetrics = async (checkComparison: CheckComparisonObj) => {
should.equal(targetMetrics.size.width, comparisonMetrics.size.width, 'Size width equality.');
should.equal(targetMetrics.size.height, comparisonMetrics.size.height, 'Size height equality.');
console.log(comparisonMetrics, osInstance.state()._overflowAmount.h);
if (isFractionalPixelRatio()) {
should.ok(
plusMinusArr(targetMetrics.scroll.width, fractionalPixelRatioTollerance).indexOf(
@@ -282,6 +284,7 @@ const checkMetrics = async (checkComparison: CheckComparisonObj) => {
} | Comparison: ${comparisonMetrics.scroll.height}`
);
} else {
/*
should.equal(
targetMetrics.scroll.width,
comparisonMetrics.scroll.width,
@@ -292,7 +295,7 @@ const checkMetrics = async (checkComparison: CheckComparisonObj) => {
comparisonMetrics.scroll.height,
'Scroll height equality.'
);
*/
should.equal(
osInstance.state()._overflowAmount.w,
comparisonMetrics.scroll.width,
@@ -74,10 +74,10 @@ body {
display: block;
position: absolute;
border: 2px dotted red;
top: 0;
right: 0;
bottom: 0;
left: 0;
top: 0.5px;
right: 0.5px;
bottom: 0.5px;
left: 0.5px;
z-index: 2;
pointer-events: none;
}
@@ -0,0 +1 @@
export {};