cheapskate
Version:
Low-budget user interface animation
45 lines (43 loc) • 1.32 kB
TypeScript
type Hash = unknown;
interface Delegate<T = any> {
sort: (a: any, b: any) => number;
hash_for_item?: (item: T) => Hash;
set_animated_items: (items: Array<T>) => void;
duration?: () => number;
easing?: () => string;
}
interface Metrics {
left: string;
top: string;
opacity: number;
position: string;
zIndex: number;
}
declare class SiblingAnimator {
private container_element;
private delegate;
private hash_to_animated_metrics_map;
private hash_to_animated_items_map;
private private_element;
private discrete_hashes_set;
private previous_hashes_set;
private addition_items_array;
private rendered_once;
private highest_z_index;
constructor(delegate: Delegate);
set_container_element(element?: HTMLElement): void;
set_discrete_items(items: Array<unknown>): void;
private hash_for_item;
private animated_hashes_set;
get animated_items(): unknown[];
get discrete_items(): Array<unknown>;
set discrete_items(items: Array<unknown>);
private inform_delegate;
private animate_element;
private animate_set;
private numeric_value;
layout(unused_animated_items?: Array<unknown>): void;
metrics_for_item(item: unknown): Metrics;
}
export { SiblingAnimator };
export type { Delegate, Metrics };