From 2689c51b843f9c0243546da3a414247c3e7fe8cb Mon Sep 17 00:00:00 2001 From: venkata nadha reddy <45334400+venkat-karasani@users.noreply.github.com> Date: Fri, 24 Jan 2025 14:46:45 -0600 Subject: [PATCH] Add subtitle setting for native vs custom element (#5737) * Fixed subtitles styling in firefox. * Fixed subtitles styling in firefox. * Initial changes to support native or custom styling. * Changes to support native or custom styling. * linting changes. * Changes to support native or custom styling. * Changes to support native or custom styling. * minor changes. * indentation changes and simplification changes. * minor changes. --------- Co-authored-by: Bill Thornton --- .../subtitlesettings/subtitlesettings.js | 14 +++ .../subtitlesettings.template.html | 11 +++ src/plugins/htmlVideoPlayer/plugin.js | 96 +++++++++++-------- src/strings/en-us.json | 6 ++ 4 files changed, 85 insertions(+), 42 deletions(-) diff --git a/src/components/subtitlesettings/subtitlesettings.js b/src/components/subtitlesettings/subtitlesettings.js index b7852a79fb..0ae3d6e9d1 100644 --- a/src/components/subtitlesettings/subtitlesettings.js +++ b/src/components/subtitlesettings/subtitlesettings.js @@ -26,6 +26,7 @@ import template from './subtitlesettings.template.html'; function getSubtitleAppearanceObject(context) { return { + subtitleStyling: context.querySelector('#selectSubtitleStyling').value, textSize: context.querySelector('#selectTextSize').value, textWeight: context.querySelector('#selectTextWeight').value, dropShadow: context.querySelector('#selectDropShadow').value, @@ -51,6 +52,8 @@ function loadForm(context, user, userSettings, appearanceSettings, apiClient) { context.querySelector('#selectSubtitlePlaybackMode').dispatchEvent(new CustomEvent('change', {})); + context.querySelector('#selectSubtitleStyling').value = appearanceSettings.subtitleStyling || 'Auto'; + context.querySelector('#selectSubtitleStyling').dispatchEvent(new CustomEvent('change', {})); context.querySelector('#selectTextSize').value = appearanceSettings.textSize || ''; context.querySelector('#selectTextWeight').value = appearanceSettings.textWeight || 'normal'; context.querySelector('#selectDropShadow').value = appearanceSettings.dropShadow || ''; @@ -117,6 +120,16 @@ function onSubtitleModeChange(e) { view.querySelector('.subtitles' + this.value + 'Help').classList.remove('hide'); } +function onSubtitleStyleChange(e) { + const view = dom.parentWithClass(e.target, 'subtitlesettings'); + + const subtitleStylingHelperElements = view.querySelectorAll('.subtitleStylingHelp'); + subtitleStylingHelperElements.forEach((elem)=>{ + elem.classList.add('hide'); + }); + view.querySelector(`.subtitleStyling${this.value}Help`).classList.remove('hide'); +} + function onSubtitleBurnInChange(e) { const view = dom.parentWithClass(e.target, 'subtitlesettings'); const fieldRenderPgs = view.querySelector('.fldRenderPgs'); @@ -180,6 +193,7 @@ function embed(options, self) { options.element.querySelector('form').addEventListener('submit', self.onSubmit.bind(self)); options.element.querySelector('#selectSubtitlePlaybackMode').addEventListener('change', onSubtitleModeChange); + options.element.querySelector('#selectSubtitleStyling').addEventListener('change', onSubtitleStyleChange); options.element.querySelector('#selectSubtitleBurnIn').addEventListener('change', onSubtitleBurnInChange); options.element.querySelector('#selectTextSize').addEventListener('change', onAppearanceFieldChange); options.element.querySelector('#selectTextWeight').addEventListener('change', onAppearanceFieldChange); diff --git a/src/components/subtitlesettings/subtitlesettings.template.html b/src/components/subtitlesettings/subtitlesettings.template.html index 32584fc6da..f2c774f00c 100644 --- a/src/components/subtitlesettings/subtitlesettings.template.html +++ b/src/components/subtitlesettings/subtitlesettings.template.html @@ -77,6 +77,17 @@
${SubtitleAppearanceSettingsAlsoPassedToCastDevices}
+
+ +
${AutoSubtitleStylingHelp}
+
${CustomSubtitleStylingHelp}
+
${NativeSubtitleStylingHelp}
+
+