UNPKG

clarity-js

Version:

An analytics library that uses web page interactions to generate aggregated insights

33 lines (26 loc) 871 B
import { Event } from "@clarity-types/data"; import type { SubmitState } from "@clarity-types/interaction"; import { FunctionNames } from "@clarity-types/performance"; import { bind } from "@src/core/event"; import { schedule } from "@src/core/task"; import { time } from "@src/core/time"; import { target } from "@src/layout/target"; import encode from "./encode"; export let state: SubmitState[] = []; export function start(): void { reset(); } export function observe(root: Node): void { bind(root, "submit", recompute, true); } function recompute(evt: UIEvent): void { recompute.dn = FunctionNames.SubmitRecompute; state.push({ time: time(evt), event: Event.Submit, data: { target: target(evt) } }); schedule(encode.bind(this, Event.Submit)); } export function reset(): void { state = []; } export function stop(): void { reset(); }