@nekobird/controls
Version:
A collection of opinionated user-interface controls.
31 lines (30 loc) • 1.65 kB
TypeScript
import { AfterActionCallback, BeforeActionCallback, ConditionHook, Hook } from '../index';
import { SequenceController } from './sequence-controller';
import { SequenceAction, SequenceActionName } from './action-manager';
export interface SequenceTriggerMap {
trigger: HTMLElement;
action: SequenceActionName;
payload?: string;
}
export interface SequenceConfig {
cooldown: number;
listenToKeydown: boolean;
items: NodeListOf<HTMLElement> | HTMLElement[];
isTrigger: (element: HTMLElement) => boolean;
mapTriggerToAction: (trigger: HTMLElement) => SequenceTriggerMap | false;
getItemId: (item: HTMLElement) => string | false;
conditionPrevious: ConditionHook<SequenceAction, SequenceController>;
conditionNext: ConditionHook<SequenceAction, SequenceController>;
conditionJump: ConditionHook<SequenceAction, SequenceController>;
beforeActivate: Hook<SequenceAction, SequenceController>;
beforeDeactivate: Hook<SequenceAction, SequenceController>;
itemIsActive: (item: HTMLElement, controller: SequenceController) => boolean;
activateItem: (item: HTMLElement, controller: SequenceController) => void;
deactivateItem: (item: HTMLElement, controller: SequenceController) => void;
afterActivate: Hook<SequenceAction, SequenceController>;
afterDeactivate: Hook<SequenceAction, SequenceController>;
beforeAction: BeforeActionCallback<SequenceAction, SequenceController>;
afterAction: AfterActionCallback<SequenceAction, SequenceController>;
onKeydown: (event: KeyboardEvent, context: SequenceController) => void;
}
export declare const DEFAULT_CONFIG: SequenceConfig;