One-time mechanical sweep, isolated from any functional change. - oxfmt defaults: double quotes, semicolons, 2-space indent, LF, printWidth 100, trailing commas, bracket spacing, arrow parens. - vite.config.ts gains an fmt.ignorePatterns block for web/static: vendored/minified assets (htmx.min.js, compiled css) must never be reformatted. - Verified: rebuild after the sweep produces byte-identical JS/CSS bundles; only sourcemaps changed (they embed sourcesContent).
114 lines
2.8 KiB
TypeScript
114 lines
2.8 KiB
TypeScript
function onDelegatedClick(
|
|
selector: string,
|
|
handler: (element: HTMLElement, event: MouseEvent) => void,
|
|
): void {
|
|
document.addEventListener("click", (event: MouseEvent) => {
|
|
const target = event.target as HTMLElement;
|
|
const element = target.closest(selector) as HTMLElement | null;
|
|
if (element) {
|
|
handler(element, event);
|
|
}
|
|
});
|
|
}
|
|
|
|
function onDelegatedSubmit(
|
|
selector: string,
|
|
handler: (form: HTMLFormElement, event: Event) => void,
|
|
): void {
|
|
document.addEventListener("submit", (event: Event) => {
|
|
const target = event.target as HTMLElement;
|
|
const form = target.closest(selector) as HTMLFormElement | null;
|
|
if (form) {
|
|
handler(form, event);
|
|
}
|
|
});
|
|
}
|
|
|
|
function onDelegatedChange(
|
|
selector: string,
|
|
handler: (element: HTMLElement, event: Event) => void,
|
|
): void {
|
|
document.addEventListener("change", (event: Event) => {
|
|
const target = event.target as HTMLElement;
|
|
const element = target.closest(selector) as HTMLElement | null;
|
|
if (element) {
|
|
handler(element, event);
|
|
}
|
|
});
|
|
}
|
|
|
|
function onDelegatedKeydown(
|
|
selector: string,
|
|
handler: (element: HTMLElement, event: KeyboardEvent) => void,
|
|
): void {
|
|
document.addEventListener("keydown", (event: KeyboardEvent) => {
|
|
const target = event.target as HTMLElement;
|
|
const element = target.closest(selector) as HTMLElement | null;
|
|
if (element) {
|
|
handler(element, event);
|
|
}
|
|
});
|
|
}
|
|
|
|
function getDataAttribute(element: HTMLElement, name: string): string | undefined {
|
|
return element.dataset[name];
|
|
}
|
|
|
|
function setDataAttribute(element: HTMLElement, name: string, value: string): void {
|
|
element.dataset[name] = value;
|
|
}
|
|
|
|
function onClick(element: HTMLElement | null, handler: (event: MouseEvent) => void): void {
|
|
if (element) {
|
|
element.addEventListener("click", handler);
|
|
}
|
|
}
|
|
|
|
function onSubmit(element: HTMLFormElement | null, handler: (event: Event) => void): void {
|
|
if (element) {
|
|
element.addEventListener("submit", handler);
|
|
}
|
|
}
|
|
|
|
function onChange(element: HTMLElement | null, handler: (event: Event) => void): void {
|
|
if (element) {
|
|
element.addEventListener("change", handler);
|
|
}
|
|
}
|
|
|
|
function onKeydown(element: HTMLElement | null, handler: (event: KeyboardEvent) => void): void {
|
|
if (element) {
|
|
element.addEventListener("keydown", handler);
|
|
}
|
|
}
|
|
|
|
function onInput(element: HTMLElement | null, handler: (event: Event) => void): void {
|
|
if (element) {
|
|
element.addEventListener("input", handler);
|
|
}
|
|
}
|
|
|
|
function preventDefault(event: Event): void {
|
|
event.preventDefault();
|
|
}
|
|
|
|
function stopPropagation(event: Event): void {
|
|
event.stopPropagation();
|
|
}
|
|
|
|
export {
|
|
getDataAttribute,
|
|
onChange,
|
|
onClick,
|
|
onDelegatedChange,
|
|
onDelegatedClick,
|
|
onDelegatedKeydown,
|
|
onDelegatedSubmit,
|
|
onInput,
|
|
onKeydown,
|
|
onSubmit,
|
|
preventDefault,
|
|
setDataAttribute,
|
|
stopPropagation,
|
|
};
|