const VideoClipBuilder = (): void => { const form = document.querySelector("form[id=new-video-clip-form]"); if (form) { const videoClipPreviewer = form?.querySelector("video-clip-previewer"); if (videoClipPreviewer) { const themeOptions: NodeListOf = form.querySelectorAll( 'input[name="theme"]' ) as NodeListOf; const formatOptions: NodeListOf = form.querySelectorAll( 'input[name="format"]' ) as NodeListOf; const titleInput = form.querySelector( 'input[name="title"]' ) as HTMLInputElement; if (titleInput) { videoClipPreviewer.setAttribute("title", titleInput.value || ""); titleInput.addEventListener("input", () => { videoClipPreviewer.setAttribute("title", titleInput.value || ""); }); } let format = ( form.querySelector('input[name="format"]:checked') as HTMLInputElement )?.value; videoClipPreviewer.setAttribute("format", format); const watchFormatChange = (event: Event) => { format = (event.target as HTMLInputElement).value; videoClipPreviewer.setAttribute("format", format); }; for (let i = 0; i < formatOptions.length; i++) { formatOptions[i].addEventListener("change", watchFormatChange); } let theme = form .querySelector('input[name="theme"]:checked') ?.parentElement?.style.getPropertyValue("--color-background-preview"); videoClipPreviewer.setAttribute("theme", theme || ""); const watchThemeChange = (event: Event) => { theme = ( event.target as HTMLInputElement ).parentElement?.style.getPropertyValue( "--color-background-preview" ) ?? theme; videoClipPreviewer.setAttribute("theme", theme || ""); }; for (let i = 0; i < themeOptions.length; i++) { themeOptions[i].addEventListener("change", watchThemeChange); } const durationInput = form.querySelector( 'input[name="duration"]' ) as HTMLInputElement; if (durationInput) { videoClipPreviewer.setAttribute("duration", durationInput.value || "0"); durationInput.addEventListener("change", () => { videoClipPreviewer.setAttribute( "duration", durationInput.value || "0" ); }); } } } }; export default VideoClipBuilder;