@studiometa/js-toolkit
Version:
A set of useful little bits of JavaScript to boost your project! 🚀
68 lines (67 loc) • 1.54 kB
TypeScript
import type { ServiceConfig, ServiceInterface } from './AbstractService.js';
import { AbstractService } from './AbstractService.js';
export interface ScrollServiceProps {
x: number;
y: number;
changed: {
x: boolean;
y: boolean;
};
changedX: boolean;
changedY: boolean;
last: {
x: number;
y: number;
};
lastX: number;
lastY: number;
delta: {
x: number;
y: number;
};
deltaX: number;
deltaY: number;
progress: {
x: number;
y: number;
};
progressX: number;
progressY: number;
max: {
x: number;
y: number;
};
maxX: number;
maxY: number;
direction: {
x: 'LEFT' | 'RIGHT' | 'NONE';
y: 'UP' | 'DOWN' | 'NONE';
};
isUp: boolean;
isRight: boolean;
isDown: boolean;
isLeft: boolean;
}
export type ScrollServiceInterface = ServiceInterface<ScrollServiceProps>;
export declare class ScrollService extends AbstractService<ScrollServiceProps> {
static config: ServiceConfig;
props: ScrollServiceProps;
updateProps(): ScrollServiceProps;
onScrollDebounced: (...args: unknown[]) => void;
/**
* Scroll handler.
*/
handleEvent(): void;
}
/**
* Use the scroll service.
*
* ```js
* import { useScroll } from '@studiometa/js-toolkit/services';
* const { add, remove, props } = useScroll();
* add(key, (props) => {});
* remove(key);
* props();
* ```
*/
export declare function useScroll(): ScrollServiceInterface;