All files / js events.ts

0% Statements 0/3
100% Branches 0/0
0% Functions 0/3
0% Lines 0/3

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30                                                           
export type LektorEvents = {
  "lektor-attachments-changed": string;
  "lektor-dialog": { type: "find-files" | "refresh" | "publish" };
  "lektor-error": unknown;
};
 
/** Dispatch one of the custom events. */
export function dispatch<T extends keyof LektorEvents>(
  type: T,
  detail: LektorEvents[T]
): void {
  document.dispatchEvent(new CustomEvent(type, { detail }));
}
 
/** Subscribe to one of Lektor's custom events. */
export function subscribe<T extends keyof LektorEvents>(
  type: T,
  handler: (ev: CustomEvent<LektorEvents[T]>) => void
): void {
  document.addEventListener(type, handler as EventListener);
}
 
/** Subscribe from one of Lektor's custom events. */
export function unsubscribe<T extends keyof LektorEvents>(
  type: T,
  handler: (ev: CustomEvent<LektorEvents[T]>) => void
): void {
  document.removeEventListener(type, handler as EventListener);
}