export type RendererDom = {
subtitleRoot: HTMLElement;
subtitleContainer: HTMLElement;
overlay: HTMLElement;
controllerStatusToast: HTMLDivElement;
overlayErrorToast: HTMLDivElement;
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;
controllerSelectModal: HTMLDivElement;
controllerSelectClose: HTMLButtonElement;
controllerSelectPicker: HTMLSelectElement;
controllerSelectSummary: HTMLDivElement;
controllerSelectStatus: HTMLDivElement;
controllerConfigList: HTMLDivElement;
controllerSelectSave: HTMLButtonElement;
controllerDebugModal: HTMLDivElement;
controllerDebugClose: HTMLButtonElement;
controllerDebugCopy: HTMLButtonElement;
controllerDebugToast: HTMLDivElement;
controllerDebugStatus: HTMLDivElement;
controllerDebugSummary: HTMLDivElement;
controllerDebugAxes: HTMLPreElement;
controllerDebugButtons: HTMLPreElement;
controllerDebugButtonIndices: HTMLPreElement;
subtitleSidebarModal: HTMLDivElement;
subtitleSidebarContent: HTMLDivElement;
subtitleSidebarClose: HTMLButtonElement;
subtitleSidebarStatus: HTMLDivElement;
subtitleSidebarList: HTMLUListElement;
sessionHelpModal: HTMLDivElement;
sessionHelpClose: HTMLButtonElement;
sessionHelpShortcut: HTMLDivElement;
sessionHelpWarning: HTMLDivElement;
sessionHelpStatus: HTMLDivElement;
sessionHelpFilter: HTMLInputElement;
sessionHelpContent: 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'),
controllerStatusToast: getRequiredElement('controllerStatusToast'),
overlayErrorToast: getRequiredElement('overlayErrorToast'),
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'),
controllerSelectModal: getRequiredElement('controllerSelectModal'),
controllerSelectClose: getRequiredElement('controllerSelectClose'),
controllerSelectPicker: getRequiredElement('controllerSelectPicker'),
controllerSelectSummary: getRequiredElement('controllerSelectSummary'),
controllerSelectStatus: getRequiredElement('controllerSelectStatus'),
controllerConfigList: getRequiredElement('controllerConfigList'),
controllerSelectSave: getRequiredElement('controllerSelectSave'),
controllerDebugModal: getRequiredElement('controllerDebugModal'),
controllerDebugClose: getRequiredElement('controllerDebugClose'),
controllerDebugCopy: getRequiredElement('controllerDebugCopy'),
controllerDebugToast: getRequiredElement('controllerDebugToast'),
controllerDebugStatus: getRequiredElement('controllerDebugStatus'),
controllerDebugSummary: getRequiredElement('controllerDebugSummary'),
controllerDebugAxes: getRequiredElement('controllerDebugAxes'),
controllerDebugButtons: getRequiredElement('controllerDebugButtons'),
controllerDebugButtonIndices: getRequiredElement(
'controllerDebugButtonIndices',
),
subtitleSidebarModal: getRequiredElement('subtitleSidebarModal'),
subtitleSidebarContent: getRequiredElement('subtitleSidebarContent'),
subtitleSidebarClose: getRequiredElement('subtitleSidebarClose'),
subtitleSidebarStatus: getRequiredElement('subtitleSidebarStatus'),
subtitleSidebarList: getRequiredElement('subtitleSidebarList'),
sessionHelpModal: getRequiredElement('sessionHelpModal'),
sessionHelpClose: getRequiredElement('sessionHelpClose'),
sessionHelpShortcut: getRequiredElement('sessionHelpShortcut'),
sessionHelpWarning: getRequiredElement('sessionHelpWarning'),
sessionHelpStatus: getRequiredElement('sessionHelpStatus'),
sessionHelpFilter: getRequiredElement('sessionHelpFilter'),
sessionHelpContent: getRequiredElement('sessionHelpContent'),
};
}