@studiometa/js-toolkit
Version:
A set of useful little bits of JavaScript to boost your project! 🚀
48 lines (47 loc) • 1.51 kB
TypeScript
import type { Base, BaseProps } from './index.js';
import type { KeyServiceProps, LoadServiceProps, PointerServiceProps, RafServiceProps, ResizeServiceProps, ScrollServiceProps } from '../services/index.js';
export interface BaseInterface {
/**
* Mounted hook.
*/
mounted?(): void;
/**
* Updated hook.
*/
updated?(): void;
/**
* Destroyed hook.
*/
destroyed?(): void;
/**
* Terminated hook.
*/
terminated?(): void;
/**
* Key service, executed when a keyboard key is pressed or released.
*/
keyed?(props: KeyServiceProps): void;
/**
* Load service, executed when the window `load` event is fired.
*/
loaded?(props: LoadServiceProps): void;
/**
* Pointer service, executed when the pointer is moving, pressed or released.
*/
moved?(props: PointerServiceProps): void;
/**
* Raf service, executed on each rendered frame.
*/
ticked?(props: RafServiceProps): void;
/**
* Resize service, executed when the window is resized.
*/
resized?(props: ResizeServiceProps): void;
/**
* Scroll service, executed when the document is scrolled.
*/
scrolled?(props: ScrollServiceProps): void;
}
export type BaseDecorator<S extends BaseInterface, T extends Base, U extends BaseProps = BaseProps> = {
new <W extends BaseProps = BaseProps>(...args: unknown[]): S & T & Base<W & U>;
} & Partial<Pick<T, keyof T>> & Pick<typeof Base, keyof typeof Base>;