@fluritheme/spider
Version:
A tiny, expressive spider for your website. Delicate webs that follow DOM layers, blinking eyes, and playful pointer reactions.
49 lines • 1.86 kB
TypeScript
import { type Box, type Point } from './geometry.js';
import type { PageObject } from './objects.js';
import type { SilkAnchor } from './silk.js';
import { type WeaveTask, type SilkKind } from './weaving.js';
export { curvePoint } from './weaving.js';
export type Behavior = 'descending' | 'exploring' | 'weaving' | 'hiding' | 'resting' | 'fleeing';
export interface SilkThread {
from: Point;
to: Point;
group: number;
sag: number;
laid: number;
born: number;
ink: string;
kind: SilkKind;
grain: number;
}
export interface Resident extends Point {
destination: Point;
dragFrom: Point | null;
tip: Point | null;
angle: number;
gait: number;
velocity: number;
behavior: Behavior;
behind: boolean;
until: number;
target: PageObject | null;
scared: boolean;
visible: boolean;
threads: SilkThread[];
tasks: WeaveTask[];
task: WeaveTask | null;
activeThread: SilkThread | null;
attachment: SilkAnchor | null;
nextAttachment: SilkAnchor | null;
route: number;
tether: Point | null;
landing: Point;
ink: string;
woven: number;
silkInk: string;
}
export declare function makeResident(point: Point, index: number, descend?: boolean, top?: number): Resident;
/** Keep completed silk. At the resource ceiling the resident explores until explicitly cleared. */
export declare const threadBudget = 2048;
export declare function stepResident(r: Resident, dt: number, time: number, pointer: Point | null, fearRadius: number, speed: number, box: Box, objects: readonly PageObject[], index: number, anchors?: readonly SilkAnchor[], density?: number, span?: number, color?: string): void;
export declare function paintThreads(ctx: CanvasRenderingContext2D, threads: readonly SilkThread[], opacity: number): void;
//# sourceMappingURL=resident.d.ts.map