* Make /db top-level module * Create Album type * Pin pnpm version * Generalize query modules * Finalize album postgres data type * Remove temp albums prop * Create basic album primitives * Fix temporary album bugs * Add albums to sidebar * Disambiguate string date utilities * Localize album language * Add album join option to core photo queries * Tweak album icon placement * Add album photo detail page * Refine Album data model * Display album subhead when available * Generate album og images * Finalize album share modal * Add albums to sitemap * Statically pre-render albums * Display tags on albums * Add albums to cmd-k menu * Handle album tag overflow * Stop truncating album subheads * Create core admin album views * Make albums editable * Create/edit albums on photo save, add delete album
49 lines
932 B
TypeScript
49 lines
932 B
TypeScript
'use client';
|
|
|
|
import { HTMLAttributes, RefObject, useRef } from 'react';
|
|
import useMaskedScroll from './useMaskedScroll';
|
|
|
|
export default function MaskedScroll({
|
|
ref: refProp,
|
|
enabled = true,
|
|
direction,
|
|
fadeSize,
|
|
animationDuration,
|
|
setMaxSize,
|
|
hideScrollbar,
|
|
updateMaskOnEvents,
|
|
scrollToEndOnMount,
|
|
style,
|
|
children,
|
|
...props
|
|
}: {
|
|
ref?: RefObject<HTMLDivElement | null>
|
|
enabled?: boolean
|
|
} & HTMLAttributes<HTMLDivElement>
|
|
& Omit<Parameters<typeof useMaskedScroll>[0], 'ref'>) {
|
|
const refInternal = useRef<HTMLDivElement>(null);
|
|
const ref = refProp ?? refInternal;
|
|
|
|
const { styleMask } = useMaskedScroll({
|
|
ref,
|
|
direction,
|
|
fadeSize,
|
|
animationDuration,
|
|
setMaxSize,
|
|
hideScrollbar,
|
|
updateMaskOnEvents,
|
|
scrollToEndOnMount,
|
|
});
|
|
|
|
return <div
|
|
{...props}
|
|
ref={ref}
|
|
style={{
|
|
...enabled && styleMask,
|
|
...style,
|
|
}}
|
|
>
|
|
{children}
|
|
</div>;
|
|
}
|