Files
QOffice/src/hooks/useQOfficeCommand.ts
T
Курнат Андрей 9bf4dd3672 Initial QOffice implementation
2026-06-01 05:31:05 +03:00

26 lines
789 B
TypeScript

import { useEffect, useRef } from "react";
export type QOfficeCommand = "open" | "save" | "export-pdf" | "print";
export type QOfficeCommandHandlers = Partial<Record<QOfficeCommand, () => void | Promise<void>>>;
export function useQOfficeCommand(handlers: QOfficeCommandHandlers) {
const handlersRef = useRef(handlers);
useEffect(() => {
handlersRef.current = handlers;
}, [handlers]);
useEffect(() => {
function onCommand(event: WindowEventMap["qoffice-command"]) {
const command = event.detail.command;
const handler = handlersRef.current[command];
if (handler) {
void handler();
}
}
window.addEventListener("qoffice-command", onCommand);
return () => window.removeEventListener("qoffice-command", onCommand);
}, []);
}