Files
shiny/srcts/src/events/jQueryEvents.ts
2025-08-04 16:07:39 -04:00

56 lines
1.5 KiB
TypeScript

// Used to avoid isolated module warning
import "jquery";
type EvtPrefix<T extends string> = `${T}.${string}`;
type EvtFn<T extends JQuery.Event> = ((evt: T) => void) | null | undefined;
declare global {
interface JQuery {
on(events: EvtPrefix<"change">, handler: EvtFn<JQuery.DragEvent>): this;
on(
events: EvtPrefix<"mousdown">,
handler: EvtFn<JQuery.MouseDownEvent>,
): this;
on(
events: EvtPrefix<"dblclick">,
handler: EvtFn<JQuery.DoubleClickEvent>,
): this;
on(
events: EvtPrefix<"dblclick2">,
// Note: This may not be the _right type_, but it is how it is handled internally
handler: EvtFn<JQuery.MouseDownEvent>,
): this;
on(
events: EvtPrefix<"mousemove">,
handler: EvtFn<JQuery.MouseMoveEvent>,
): this;
on(
events: EvtPrefix<"mouseout">,
handler: EvtFn<JQuery.MouseOutEvent>,
): this;
on(
events: EvtPrefix<"mousedown">,
handler: EvtFn<JQuery.MouseDownEvent>,
): this;
on(
events: EvtPrefix<"mousedown2">,
handler: EvtFn<JQuery.MouseDownEvent>,
): this;
on(events: EvtPrefix<"mouseup">, handler: EvtFn<JQuery.MouseUpEvent>): this;
on(events: EvtPrefix<"resize">, handler: EvtFn<JQuery.ResizeEvent>): this;
on(
events: `shown.bs.${string}.sendImageSize`,
selector: string,
handler: (
this: HTMLElement,
e: JQuery.EventHandlerBase<HTMLElement, any>,
// e: JQuery.Event & {
// namespace: string;
// }
) => void,
): this;
}
}