1234567891011121314151617181920212223242526272829303132333435363738394041 |
- import * as React from 'react';
- import { fullWidthClassName, zeroRightClassName } from 'react-remove-scroll-bar/constants';
- import { useMergeRefs } from 'use-callback-ref';
- import { effectCar } from './medium';
- const nothing = () => {
- return;
- };
- /**
- * Removes scrollbar from the page and contain the scroll within the Lock
- */
- const RemoveScroll = React.forwardRef((props, parentRef) => {
- const ref = React.useRef(null);
- const [callbacks, setCallbacks] = React.useState({
- onScrollCapture: nothing,
- onWheelCapture: nothing,
- onTouchMoveCapture: nothing,
- });
- const { forwardProps, children, className, removeScrollBar, enabled, shards, sideCar, noIsolation, inert, allowPinchZoom, as: Container = 'div', ...rest } = props;
- const SideCar = sideCar;
- const containerRef = useMergeRefs([ref, parentRef]);
- const containerProps = {
- ...rest,
- ...callbacks,
- };
- return (React.createElement(React.Fragment, null,
- enabled && (React.createElement(SideCar, { sideCar: effectCar, removeScrollBar: removeScrollBar, shards: shards, noIsolation: noIsolation, inert: inert, setCallbacks: setCallbacks, allowPinchZoom: !!allowPinchZoom, lockRef: ref })),
- forwardProps ? (React.cloneElement(React.Children.only(children), {
- ...containerProps,
- ref: containerRef,
- })) : (React.createElement(Container, { ...containerProps, className: className, ref: containerRef }, children))));
- });
- RemoveScroll.defaultProps = {
- enabled: true,
- removeScrollBar: true,
- inert: false,
- };
- RemoveScroll.classNames = {
- fullWidth: fullWidthClassName,
- zeroRight: zeroRightClassName,
- };
- export { RemoveScroll };
|