export type RendererDom = {
subtitleRoot: HTMLElement;
subtitleContainer: HTMLElement;
overlay: HTMLElement;
secondarySubContainer: HTMLElement;
secondarySubRoot: HTMLElement;
jimakuModal: HTMLDivElement;
jimakuTitleInput: HTMLInputElement;
jimakuSeasonInput: HTMLInputElement;
jimakuEpisodeInput: HTMLInputElement;
jimakuSearchButton: HTMLButtonElement;
jimakuCloseButton: HTMLButtonElement;
jimakuStatus: HTMLDivElement;
jimakuEntriesSection: HTMLDivElement;
jimakuEntriesList: HTMLUListElement;
jimakuFilesSection: HTMLDivElement;
jimakuFilesList: HTMLUListElement;
jimakuBroadenButton: HTMLButtonElement;
kikuModal: HTMLDivElement;
kikuCard1: HTMLDivElement;
kikuCard2: HTMLDivElement;
kikuCard1Expression: HTMLDivElement;
kikuCard2Expression: HTMLDivElement;
kikuCard1Sentence: HTMLDivElement;
kikuCard2Sentence: HTMLDivElement;
kikuCard1Meta: HTMLDivElement;
kikuCard2Meta: HTMLDivElement;
kikuConfirmButton: HTMLButtonElement;
kikuCancelButton: HTMLButtonElement;
kikuDeleteDuplicateCheckbox: HTMLInputElement;
kikuSelectionStep: HTMLDivElement;
kikuPreviewStep: HTMLDivElement;
kikuPreviewJson: HTMLPreElement;
kikuPreviewCompactButton: HTMLButtonElement;
kikuPreviewFullButton: HTMLButtonElement;
kikuPreviewError: HTMLDivElement;
kikuBackButton: HTMLButtonElement;
kikuFinalConfirmButton: HTMLButtonElement;
kikuFinalCancelButton: HTMLButtonElement;
kikuHint: HTMLDivElement;
runtimeOptionsModal: HTMLDivElement;
runtimeOptionsClose: HTMLButtonElement;
runtimeOptionsList: HTMLUListElement;
runtimeOptionsStatus: HTMLDivElement;
subsyncModal: HTMLDivElement;
subsyncCloseButton: HTMLButtonElement;
subsyncEngineAlass: HTMLInputElement;
subsyncEngineFfsubsync: HTMLInputElement;
subsyncSourceLabel: HTMLLabelElement;
subsyncSourceSelect: HTMLSelectElement;
subsyncRunButton: HTMLButtonElement;
subsyncStatus: HTMLDivElement;
};
function getRequiredElement(id: string): T {
const element = document.getElementById(id);
if (!element) {
throw new Error(`Missing required DOM element #${id}`);
}
return element as T;
}
export function resolveRendererDom(): RendererDom {
return {
subtitleRoot: getRequiredElement("subtitleRoot"),
subtitleContainer: getRequiredElement("subtitleContainer"),
overlay: getRequiredElement("overlay"),
secondarySubContainer:
getRequiredElement("secondarySubContainer"),
secondarySubRoot: getRequiredElement("secondarySubRoot"),
jimakuModal: getRequiredElement("jimakuModal"),
jimakuTitleInput: getRequiredElement("jimakuTitle"),
jimakuSeasonInput: getRequiredElement("jimakuSeason"),
jimakuEpisodeInput: getRequiredElement("jimakuEpisode"),
jimakuSearchButton: getRequiredElement("jimakuSearch"),
jimakuCloseButton: getRequiredElement("jimakuClose"),
jimakuStatus: getRequiredElement("jimakuStatus"),
jimakuEntriesSection: getRequiredElement("jimakuEntriesSection"),
jimakuEntriesList: getRequiredElement("jimakuEntries"),
jimakuFilesSection: getRequiredElement("jimakuFilesSection"),
jimakuFilesList: getRequiredElement("jimakuFiles"),
jimakuBroadenButton: getRequiredElement("jimakuBroaden"),
kikuModal: getRequiredElement("kikuFieldGroupingModal"),
kikuCard1: getRequiredElement("kikuCard1"),
kikuCard2: getRequiredElement("kikuCard2"),
kikuCard1Expression: getRequiredElement("kikuCard1Expression"),
kikuCard2Expression: getRequiredElement("kikuCard2Expression"),
kikuCard1Sentence: getRequiredElement("kikuCard1Sentence"),
kikuCard2Sentence: getRequiredElement("kikuCard2Sentence"),
kikuCard1Meta: getRequiredElement("kikuCard1Meta"),
kikuCard2Meta: getRequiredElement("kikuCard2Meta"),
kikuConfirmButton: getRequiredElement("kikuConfirmButton"),
kikuCancelButton: getRequiredElement("kikuCancelButton"),
kikuDeleteDuplicateCheckbox:
getRequiredElement("kikuDeleteDuplicate"),
kikuSelectionStep: getRequiredElement("kikuSelectionStep"),
kikuPreviewStep: getRequiredElement("kikuPreviewStep"),
kikuPreviewJson: getRequiredElement("kikuPreviewJson"),
kikuPreviewCompactButton:
getRequiredElement("kikuPreviewCompact"),
kikuPreviewFullButton: getRequiredElement("kikuPreviewFull"),
kikuPreviewError: getRequiredElement("kikuPreviewError"),
kikuBackButton: getRequiredElement("kikuBackButton"),
kikuFinalConfirmButton:
getRequiredElement("kikuFinalConfirmButton"),
kikuFinalCancelButton:
getRequiredElement("kikuFinalCancelButton"),
kikuHint: getRequiredElement("kikuHint"),
runtimeOptionsModal: getRequiredElement("runtimeOptionsModal"),
runtimeOptionsClose: getRequiredElement("runtimeOptionsClose"),
runtimeOptionsList: getRequiredElement("runtimeOptionsList"),
runtimeOptionsStatus: getRequiredElement("runtimeOptionsStatus"),
subsyncModal: getRequiredElement("subsyncModal"),
subsyncCloseButton: getRequiredElement("subsyncClose"),
subsyncEngineAlass: getRequiredElement("subsyncEngineAlass"),
subsyncEngineFfsubsync:
getRequiredElement("subsyncEngineFfsubsync"),
subsyncSourceLabel: getRequiredElement("subsyncSourceLabel"),
subsyncSourceSelect: getRequiredElement("subsyncSourceSelect"),
subsyncRunButton: getRequiredElement("subsyncRun"),
subsyncStatus: getRequiredElement("subsyncStatus"),
};
}