Add helper function to export ts functions to html

This commit is contained in:
Antoine Bartuccio 2024-10-13 01:53:23 +02:00 committed by Bartuccio Antoine
parent 3b1d06a71d
commit b6e1c3bc88
2 changed files with 225 additions and 215 deletions

View File

@ -4,3 +4,17 @@ declare global {
const Alpine: AlpineType;
const gettext: (text: string) => string;
}
/**
* Helper function to export typescript functions to regular html and jinja files
* Without it, you either have to use the any keyword and suppress warnings or do a
* very painful type conversion workaround which is only here to please the linter
*
* This is only useful if you're using typescript, this is equivalent to doing
* window.yourFunction = yourFunction
**/
// biome-ignore lint/suspicious/noExplicitAny: Avoid strange tricks to export functions
export function exportToHtml(name: string, func: any) {
// biome-ignore lint/suspicious/noExplicitAny: Avoid strange tricks to export functions
(window as any)[name] = func;
}

View File

@ -1,4 +1,5 @@
import { makeUrl, paginated } from "#core:utils/api";
import { exportToHtml } from "#core:utils/globals";
import { History } from "#core:utils/history";
import {
type AjaxResponse,
@ -97,8 +98,7 @@ interface ViewerConfig {
/**
* Load user picture page with a nice download bar
**/
(window as unknown as { loadViewer: (config: ViewerConfig) => undefined }).loadViewer =
(config: ViewerConfig) => {
exportToHtml("loadViewer", (config: ViewerConfig) => {
document.addEventListener("alpine:init", () => {
Alpine.data("picture_viewer", () => ({
/**
@ -227,11 +227,7 @@ interface ViewerConfig {
);
this.pushstate = History.Push;
} else {
window.history.pushState(
updateArgs.data,
updateArgs.unused,
updateArgs.url,
);
window.history.pushState(updateArgs.data, updateArgs.unused, updateArgs.url);
}
this.moderationError = "";
@ -321,4 +317,4 @@ interface ViewerConfig {
},
}));
});
};
});