mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
Merge pull request #1174 from puschie286/es6-subtitlesettings
Migrate subtitlesettings to es6
This commit is contained in:
commit
1f8ce6e6f4
6 changed files with 380 additions and 339 deletions
|
@ -121,12 +121,16 @@
|
||||||
"src/components/playmenu.js",
|
"src/components/playmenu.js",
|
||||||
"src/components/sanatizefilename.js",
|
"src/components/sanatizefilename.js",
|
||||||
"src/components/scrollManager.js",
|
"src/components/scrollManager.js",
|
||||||
|
"src/components/settingshelper.js",
|
||||||
|
"src/components/subtitlesettings/subtitlesettings.js",
|
||||||
|
"src/components/subtitlesettings/subtitleappearancehelper.js",
|
||||||
"src/components/shortcuts.js",
|
"src/components/shortcuts.js",
|
||||||
"src/components/syncPlay/groupSelectionMenu.js",
|
"src/components/syncPlay/groupSelectionMenu.js",
|
||||||
"src/components/syncPlay/playbackPermissionManager.js",
|
"src/components/syncPlay/playbackPermissionManager.js",
|
||||||
"src/components/syncPlay/syncPlayManager.js",
|
"src/components/syncPlay/syncPlayManager.js",
|
||||||
"src/components/syncPlay/timeSyncManager.js",
|
"src/components/syncPlay/timeSyncManager.js",
|
||||||
"src/controllers/dashboard/logs.js",
|
"src/controllers/dashboard/logs.js",
|
||||||
|
"src/controllers/user/subtitles.js",
|
||||||
"src/controllers/dashboard/plugins/repositories.js",
|
"src/controllers/dashboard/plugins/repositories.js",
|
||||||
"src/plugins/bookPlayer/plugin.js",
|
"src/plugins/bookPlayer/plugin.js",
|
||||||
"src/plugins/bookPlayer/tableOfContents.js",
|
"src/plugins/bookPlayer/tableOfContents.js",
|
||||||
|
|
22
src/components/settingshelper.js
Normal file
22
src/components/settingshelper.js
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
import globalize from 'globalize';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper for handling settings.
|
||||||
|
* @module components/settingsHelper
|
||||||
|
*/
|
||||||
|
|
||||||
|
export function populateLanguages(select, languages) {
|
||||||
|
let html = '';
|
||||||
|
|
||||||
|
html += "<option value=''>" + globalize.translate('AnyLanguage') + '</option>';
|
||||||
|
for (let i = 0, length = languages.length; i < length; i++) {
|
||||||
|
const culture = languages[i];
|
||||||
|
html += "<option value='" + culture.ThreeLetterISOLanguageName + "'>" + culture.DisplayName + '</option>';
|
||||||
|
}
|
||||||
|
|
||||||
|
select.innerHTML = html;
|
||||||
|
}
|
||||||
|
|
||||||
|
export default {
|
||||||
|
populateLanguages: populateLanguages
|
||||||
|
};
|
|
@ -1,9 +1,11 @@
|
||||||
define([], function () {
|
/**
|
||||||
'use strict';
|
* Subtitle settings visual helper.
|
||||||
|
* @module components/subtitleSettings/subtitleAppearanceHelper
|
||||||
|
*/
|
||||||
|
|
||||||
function getTextStyles(settings, isCue) {
|
function getTextStyles(settings, isCue) {
|
||||||
|
|
||||||
var list = [];
|
let list = [];
|
||||||
|
|
||||||
if (isCue) {
|
if (isCue) {
|
||||||
switch (settings.textSize || '') {
|
switch (settings.textSize || '') {
|
||||||
|
@ -72,12 +74,12 @@ define([], function () {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
var background = settings.textBackground || 'transparent';
|
const background = settings.textBackground || 'transparent';
|
||||||
if (background) {
|
if (background) {
|
||||||
list.push({ name: 'background-color', value: background });
|
list.push({ name: 'background-color', value: background });
|
||||||
}
|
}
|
||||||
|
|
||||||
var textColor = settings.textColor || '#ffffff';
|
const textColor = settings.textColor || '#ffffff';
|
||||||
if (textColor) {
|
if (textColor) {
|
||||||
list.push({ name: 'color', value: textColor });
|
list.push({ name: 'color', value: textColor });
|
||||||
}
|
}
|
||||||
|
@ -117,32 +119,27 @@ define([], function () {
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getWindowStyles(settings) {
|
export function getStyles(settings, isCue) {
|
||||||
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
|
|
||||||
function getStyles(settings, isCue) {
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
text: getTextStyles(settings, isCue),
|
text: getTextStyles(settings, isCue),
|
||||||
window: getWindowStyles(settings)
|
window: []
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
function applyStyleList(styles, elem) {
|
function applyStyleList(styles, elem) {
|
||||||
|
|
||||||
for (var i = 0, length = styles.length; i < length; i++) {
|
for (let i = 0, length = styles.length; i < length; i++) {
|
||||||
|
|
||||||
var style = styles[i];
|
let style = styles[i];
|
||||||
|
|
||||||
elem.style[style.name] = style.value;
|
elem.style[style.name] = style.value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function applyStyles(elements, appearanceSettings) {
|
export function applyStyles(elements, appearanceSettings) {
|
||||||
|
|
||||||
var styles = getStyles(appearanceSettings);
|
let styles = getStyles(appearanceSettings);
|
||||||
|
|
||||||
if (elements.text) {
|
if (elements.text) {
|
||||||
applyStyleList(styles.text, elements.text);
|
applyStyleList(styles.text, elements.text);
|
||||||
|
@ -151,9 +148,7 @@ define([], function () {
|
||||||
applyStyleList(styles.window, elements.window);
|
applyStyleList(styles.window, elements.window);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
export default {
|
||||||
return {
|
|
||||||
getStyles: getStyles,
|
getStyles: getStyles,
|
||||||
applyStyles: applyStyles
|
applyStyles: applyStyles
|
||||||
};
|
};
|
||||||
});
|
|
||||||
|
|
|
@ -1,20 +1,27 @@
|
||||||
define(['require', 'globalize', 'appSettings', 'apphost', 'focusManager', 'loading', 'connectionManager', 'subtitleAppearanceHelper', 'dom', 'events', 'listViewStyle', 'emby-select', 'emby-input', 'emby-checkbox', 'flexStyles'], function (require, globalize, appSettings, appHost, focusManager, loading, connectionManager, subtitleAppearanceHelper, dom, events) {
|
import require from 'require';
|
||||||
'use strict';
|
import globalize from 'globalize';
|
||||||
|
import appHost from 'apphost';
|
||||||
|
import appSettings from 'appSettings';
|
||||||
|
import focusManager from 'focusManager';
|
||||||
|
import loading from 'loading';
|
||||||
|
import connectionManager from 'connectionManager';
|
||||||
|
import subtitleAppearanceHelper from 'subtitleAppearanceHelper';
|
||||||
|
import settingsHelper from 'settingsHelper';
|
||||||
|
import dom from 'dom';
|
||||||
|
import events from 'events';
|
||||||
|
import 'listViewStyle';
|
||||||
|
import 'emby-select';
|
||||||
|
import 'emby-input';
|
||||||
|
import 'emby-checkbox';
|
||||||
|
import 'flexStyles';
|
||||||
|
|
||||||
function populateLanguages(select, languages) {
|
/**
|
||||||
var html = '';
|
* Subtitle settings.
|
||||||
|
* @module components/subtitleSettings/subtitleSettings
|
||||||
html += "<option value=''>" + globalize.translate('AnyLanguage') + '</option>';
|
*/
|
||||||
for (var i = 0, length = languages.length; i < length; i++) {
|
|
||||||
var culture = languages[i];
|
|
||||||
html += "<option value='" + culture.ThreeLetterISOLanguageName + "'>" + culture.DisplayName + '</option>';
|
|
||||||
}
|
|
||||||
|
|
||||||
select.innerHTML = html;
|
|
||||||
}
|
|
||||||
|
|
||||||
function getSubtitleAppearanceObject(context) {
|
function getSubtitleAppearanceObject(context) {
|
||||||
var appearanceSettings = {};
|
let appearanceSettings = {};
|
||||||
|
|
||||||
appearanceSettings.textSize = context.querySelector('#selectTextSize').value;
|
appearanceSettings.textSize = context.querySelector('#selectTextSize').value;
|
||||||
appearanceSettings.dropShadow = context.querySelector('#selectDropShadow').value;
|
appearanceSettings.dropShadow = context.querySelector('#selectDropShadow').value;
|
||||||
|
@ -33,9 +40,9 @@ define(['require', 'globalize', 'appSettings', 'apphost', 'focusManager', 'loadi
|
||||||
context.querySelector('.fldBurnIn').classList.remove('hide');
|
context.querySelector('.fldBurnIn').classList.remove('hide');
|
||||||
}
|
}
|
||||||
|
|
||||||
var selectSubtitleLanguage = context.querySelector('#selectSubtitleLanguage');
|
let selectSubtitleLanguage = context.querySelector('#selectSubtitleLanguage');
|
||||||
|
|
||||||
populateLanguages(selectSubtitleLanguage, allCultures);
|
settingsHelper.populateLanguages(selectSubtitleLanguage, allCultures);
|
||||||
|
|
||||||
selectSubtitleLanguage.value = user.Configuration.SubtitleLanguagePreference || '';
|
selectSubtitleLanguage.value = user.Configuration.SubtitleLanguagePreference || '';
|
||||||
context.querySelector('#selectSubtitlePlaybackMode').value = user.Configuration.SubtitleMode || '';
|
context.querySelector('#selectSubtitlePlaybackMode').value = user.Configuration.SubtitleMode || '';
|
||||||
|
@ -60,7 +67,7 @@ define(['require', 'globalize', 'appSettings', 'apphost', 'focusManager', 'loadi
|
||||||
|
|
||||||
function saveUser(context, user, userSettingsInstance, appearanceKey, apiClient) {
|
function saveUser(context, user, userSettingsInstance, appearanceKey, apiClient) {
|
||||||
|
|
||||||
var appearanceSettings = userSettingsInstance.getSubtitleAppearanceSettings(appearanceKey);
|
let appearanceSettings = userSettingsInstance.getSubtitleAppearanceSettings(appearanceKey);
|
||||||
appearanceSettings = Object.assign(appearanceSettings, getSubtitleAppearanceObject(context));
|
appearanceSettings = Object.assign(appearanceSettings, getSubtitleAppearanceObject(context));
|
||||||
|
|
||||||
userSettingsInstance.setSubtitleAppearanceSettings(appearanceSettings, appearanceKey);
|
userSettingsInstance.setSubtitleAppearanceSettings(appearanceSettings, appearanceKey);
|
||||||
|
@ -96,31 +103,12 @@ define(['require', 'globalize', 'appSettings', 'apphost', 'focusManager', 'loadi
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function onSubmit(e) {
|
|
||||||
var self = this;
|
|
||||||
var apiClient = connectionManager.getApiClient(self.options.serverId);
|
|
||||||
var userId = self.options.userId;
|
|
||||||
var userSettings = self.options.userSettings;
|
|
||||||
|
|
||||||
userSettings.setUserInfo(userId, apiClient).then(function () {
|
|
||||||
var enableSaveConfirmation = self.options.enableSaveConfirmation;
|
|
||||||
save(self, self.options.element, userId, userSettings, apiClient, enableSaveConfirmation);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Disable default form submission
|
|
||||||
if (e) {
|
|
||||||
e.preventDefault();
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
function onSubtitleModeChange(e) {
|
function onSubtitleModeChange(e) {
|
||||||
|
|
||||||
var view = dom.parentWithClass(e.target, 'subtitlesettings');
|
let view = dom.parentWithClass(e.target, 'subtitlesettings');
|
||||||
|
|
||||||
var subtitlesHelp = view.querySelectorAll('.subtitlesHelp');
|
let subtitlesHelp = view.querySelectorAll('.subtitlesHelp');
|
||||||
for (var i = 0, length = subtitlesHelp.length; i < length; i++) {
|
for (let i = 0, length = subtitlesHelp.length; i < length; i++) {
|
||||||
subtitlesHelp[i].classList.add('hide');
|
subtitlesHelp[i].classList.add('hide');
|
||||||
}
|
}
|
||||||
view.querySelector('.subtitles' + this.value + 'Help').classList.remove('hide');
|
view.querySelector('.subtitles' + this.value + 'Help').classList.remove('hide');
|
||||||
|
@ -128,11 +116,11 @@ define(['require', 'globalize', 'appSettings', 'apphost', 'focusManager', 'loadi
|
||||||
|
|
||||||
function onAppearanceFieldChange(e) {
|
function onAppearanceFieldChange(e) {
|
||||||
|
|
||||||
var view = dom.parentWithClass(e.target, 'subtitlesettings');
|
let view = dom.parentWithClass(e.target, 'subtitlesettings');
|
||||||
|
|
||||||
var appearanceSettings = getSubtitleAppearanceObject(view);
|
let appearanceSettings = getSubtitleAppearanceObject(view);
|
||||||
|
|
||||||
var elements = {
|
let elements = {
|
||||||
window: view.querySelector('.subtitleappearance-preview-window'),
|
window: view.querySelector('.subtitleappearance-preview-window'),
|
||||||
text: view.querySelector('.subtitleappearance-preview-text')
|
text: view.querySelector('.subtitleappearance-preview-text')
|
||||||
};
|
};
|
||||||
|
@ -147,7 +135,7 @@ define(['require', 'globalize', 'appSettings', 'apphost', 'focusManager', 'loadi
|
||||||
options.element.classList.add('subtitlesettings');
|
options.element.classList.add('subtitlesettings');
|
||||||
options.element.innerHTML = globalize.translateDocument(template, 'core');
|
options.element.innerHTML = globalize.translateDocument(template, 'core');
|
||||||
|
|
||||||
options.element.querySelector('form').addEventListener('submit', onSubmit.bind(self));
|
options.element.querySelector('form').addEventListener('submit', self.onSubmit.bind(self));
|
||||||
|
|
||||||
options.element.querySelector('#selectSubtitlePlaybackMode').addEventListener('change', onSubtitleModeChange);
|
options.element.querySelector('#selectSubtitlePlaybackMode').addEventListener('change', onSubtitleModeChange);
|
||||||
options.element.querySelector('#selectTextSize').addEventListener('change', onAppearanceFieldChange);
|
options.element.querySelector('#selectTextSize').addEventListener('change', onAppearanceFieldChange);
|
||||||
|
@ -172,42 +160,62 @@ define(['require', 'globalize', 'appSettings', 'apphost', 'focusManager', 'loadi
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function SubtitleSettings(options) {
|
export class SubtitleSettings {
|
||||||
|
|
||||||
|
constructor(options) {
|
||||||
|
|
||||||
this.options = options;
|
this.options = options;
|
||||||
|
|
||||||
embed(options, this);
|
embed(options, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
SubtitleSettings.prototype.loadData = function () {
|
loadData() {
|
||||||
|
let self = this;
|
||||||
var self = this;
|
let context = self.options.element;
|
||||||
var context = self.options.element;
|
|
||||||
|
|
||||||
loading.show();
|
loading.show();
|
||||||
|
|
||||||
var userId = self.options.userId;
|
let userId = self.options.userId;
|
||||||
var apiClient = connectionManager.getApiClient(self.options.serverId);
|
let apiClient = connectionManager.getApiClient(self.options.serverId);
|
||||||
var userSettings = self.options.userSettings;
|
let userSettings = self.options.userSettings;
|
||||||
|
|
||||||
apiClient.getUser(userId).then(function (user) {
|
apiClient.getUser(userId).then(function (user) {
|
||||||
userSettings.setUserInfo(userId, apiClient).then(function () {
|
userSettings.setUserInfo(userId, apiClient).then(function () {
|
||||||
self.dataLoaded = true;
|
self.dataLoaded = true;
|
||||||
|
|
||||||
var appearanceSettings = userSettings.getSubtitleAppearanceSettings(self.options.appearanceKey);
|
let appearanceSettings = userSettings.getSubtitleAppearanceSettings(self.options.appearanceKey);
|
||||||
|
|
||||||
loadForm(context, user, userSettings, appearanceSettings, apiClient);
|
loadForm(context, user, userSettings, appearanceSettings, apiClient);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
};
|
}
|
||||||
|
|
||||||
SubtitleSettings.prototype.submit = function () {
|
submit() {
|
||||||
onSubmit.call(this);
|
this.onSubmit(null);
|
||||||
};
|
}
|
||||||
|
|
||||||
SubtitleSettings.prototype.destroy = function () {
|
destroy() {
|
||||||
this.options = null;
|
this.options = null;
|
||||||
};
|
}
|
||||||
|
|
||||||
return SubtitleSettings;
|
onSubmit(e) {
|
||||||
|
const self = this;
|
||||||
|
let apiClient = connectionManager.getApiClient(self.options.serverId);
|
||||||
|
let userId = self.options.userId;
|
||||||
|
let userSettings = self.options.userSettings;
|
||||||
|
|
||||||
|
userSettings.setUserInfo(userId, apiClient).then(function () {
|
||||||
|
|
||||||
|
let enableSaveConfirmation = self.options.enableSaveConfirmation;
|
||||||
|
save(self, self.options.element, userId, userSettings, apiClient, enableSaveConfirmation);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Disable default form submission
|
||||||
|
if (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default SubtitleSettings;
|
||||||
|
|
|
@ -1,52 +1,63 @@
|
||||||
define(['subtitleSettings', 'userSettings', 'autoFocuser'], function (SubtitleSettings, userSettings, autoFocuser) {
|
import subtitleSettings from 'subtitleSettings';
|
||||||
'use strict';
|
import {UserSettings, currentSettings as userSettings} from 'userSettings';
|
||||||
|
import autoFocuser from 'autoFocuser';
|
||||||
|
|
||||||
// Shortcuts
|
export class SubtitleController {
|
||||||
const UserSettings = userSettings.UserSettings;
|
constructor(view, params) {
|
||||||
|
this.userId = params.userId || ApiClient.getCurrentUserId();
|
||||||
|
this.currentSettings = this.userId === ApiClient.getCurrentUserId() ? userSettings : new UserSettings();
|
||||||
|
this.hasChanges = false;
|
||||||
|
this.subtitleSettingsInstance = null;
|
||||||
|
this.view = view;
|
||||||
|
|
||||||
return function (view, params) {
|
view.addEventListener('viewshow', this.viewShow.bind(this));
|
||||||
function onBeforeUnload(e) {
|
view.addEventListener('change', this.change.bind(this));
|
||||||
if (hasChanges) {
|
view.addEventListener('viewbeforehide', this.viewBeforeHide.bind(this));
|
||||||
e.returnValue = 'You currently have unsaved changes. Are you sure you wish to leave?';
|
view.addEventListener('viewdestroy', this.viewDestroy.bind(this));
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var subtitleSettingsInstance;
|
viewShow() {
|
||||||
var hasChanges;
|
window.addEventListener('beforeunload', this.beforeUnload.bind(this));
|
||||||
var userId = params.userId || ApiClient.getCurrentUserId();
|
|
||||||
var currentSettings = userId === ApiClient.getCurrentUserId() ? userSettings : new UserSettings();
|
|
||||||
view.addEventListener('viewshow', function () {
|
|
||||||
window.addEventListener('beforeunload', onBeforeUnload);
|
|
||||||
|
|
||||||
if (subtitleSettingsInstance) {
|
if (this.subtitleSettingsInstance) {
|
||||||
subtitleSettingsInstance.loadData();
|
this.subtitleSettingsInstance.loadData();
|
||||||
} else {
|
} else {
|
||||||
subtitleSettingsInstance = new SubtitleSettings({
|
this.subtitleSettingsInstance = new subtitleSettings({
|
||||||
serverId: ApiClient.serverId(),
|
serverId: ApiClient.serverId(),
|
||||||
userId: userId,
|
userId: this.userId,
|
||||||
element: view.querySelector('.settingsContainer'),
|
element: this.view.querySelector('.settingsContainer'),
|
||||||
userSettings: currentSettings,
|
userSettings: this.currentSettings,
|
||||||
enableSaveButton: false,
|
enableSaveButton: false,
|
||||||
enableSaveConfirmation: false,
|
enableSaveConfirmation: false,
|
||||||
autoFocus: autoFocuser.isEnabled()
|
autoFocus: autoFocuser.isEnabled()
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
view.addEventListener('change', function () {
|
|
||||||
hasChanges = true;
|
|
||||||
});
|
|
||||||
view.addEventListener('viewbeforehide', function () {
|
|
||||||
hasChanges = false;
|
|
||||||
|
|
||||||
if (subtitleSettingsInstance) {
|
viewDestroy() {
|
||||||
subtitleSettingsInstance.submit();
|
if (this.subtitleSettingsInstance) {
|
||||||
|
this.subtitleSettingsInstance.destroy();
|
||||||
|
this.subtitleSettingsInstance = null;
|
||||||
}
|
}
|
||||||
});
|
|
||||||
view.addEventListener('viewdestroy', function () {
|
|
||||||
if (subtitleSettingsInstance) {
|
|
||||||
subtitleSettingsInstance.destroy();
|
|
||||||
subtitleSettingsInstance = null;
|
|
||||||
}
|
}
|
||||||
});
|
|
||||||
};
|
viewBeforeHide() {
|
||||||
});
|
this.hasChanges = false;
|
||||||
|
|
||||||
|
if (this.subtitleSettingsInstance) {
|
||||||
|
this.subtitleSettingsInstance.submit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
change() {
|
||||||
|
this.hasChanges = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
beforeUnload(e) {
|
||||||
|
if (this.hasChanges) {
|
||||||
|
e.returnValue = 'You currently have unsaved changes. Are you sure you wish to leave?';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default SubtitleController;
|
||||||
|
|
|
@ -817,6 +817,7 @@ var AppInfo = {};
|
||||||
define('upNextDialog', [componentsPath + '/upnextdialog/upnextdialog'], returnFirstDependency);
|
define('upNextDialog', [componentsPath + '/upnextdialog/upnextdialog'], returnFirstDependency);
|
||||||
define('subtitleAppearanceHelper', [componentsPath + '/subtitlesettings/subtitleappearancehelper'], returnFirstDependency);
|
define('subtitleAppearanceHelper', [componentsPath + '/subtitlesettings/subtitleappearancehelper'], returnFirstDependency);
|
||||||
define('subtitleSettings', [componentsPath + '/subtitlesettings/subtitlesettings'], returnFirstDependency);
|
define('subtitleSettings', [componentsPath + '/subtitlesettings/subtitlesettings'], returnFirstDependency);
|
||||||
|
define('settingsHelper', [componentsPath + '/settingshelper'], returnFirstDependency);
|
||||||
define('displaySettings', [componentsPath + '/displaySettings/displaySettings'], returnFirstDependency);
|
define('displaySettings', [componentsPath + '/displaySettings/displaySettings'], returnFirstDependency);
|
||||||
define('playbackSettings', [componentsPath + '/playbackSettings/playbackSettings'], returnFirstDependency);
|
define('playbackSettings', [componentsPath + '/playbackSettings/playbackSettings'], returnFirstDependency);
|
||||||
define('homescreenSettings', [componentsPath + '/homeScreenSettings/homeScreenSettings'], returnFirstDependency);
|
define('homescreenSettings', [componentsPath + '/homeScreenSettings/homeScreenSettings'], returnFirstDependency);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue