Merge pull request #224 from vitorsemeano/webpack_part5

Conversion to webpack - part5 - module resolution, data-require cleaned
This commit is contained in:
Joshua M. Boniface 2019-05-10 09:07:38 -04:00 committed by GitHub
commit a14b2b337c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
74 changed files with 1494 additions and 671 deletions

View File

@ -5,7 +5,16 @@
"repository": "https://github.com/jellyfin/jellyfin-web",
"license": "GPL-2",
"devDependencies": {
"connect": "^3.6.6",
"css-loader": "^2.1.0",
"file-loader": "^3.0.1",
"serve-static": "^1.13.2",
"style-loader": "^0.23.1",
"webpack": "^4.29.5",
"webpack-cli": "^3.2.3"
},
"dependencies": {
"howler": "^2.1.1",
"jstree": "^3.3.7"
}
}

View File

@ -1,4 +1,4 @@
<div id="addPluginPage" data-role="page" class="page type-interior pluginConfigurationPage" data-backbutton="true" data-require="emby-select,emby-collapse,emby-button">
<div id="addPluginPage" data-role="page" class="page type-interior pluginConfigurationPage" data-backbutton="true">
<div>
<div class="content-primary">

View File

@ -1,7 +0,0 @@
.card-round:focus > .cardBox-focustransform {
transform: scale(1.26, 1.26);
}
.cardImageContainer-round, .cardImage-round {
border-radius: 1000px;
}

View File

@ -132,8 +132,7 @@ define(["loading", "libraryBrowser", "cardBuilder", "dom", "apphost", "imageLoad
overlayMoreButton: section.overlayMoreButton && !cardLayout,
action: section.action,
allowBottomPadding: !enableScrollX(),
cardLayout: cardLayout,
vibrant: supportsImageAnalysis && cardLayout
cardLayout: cardLayout
}), html += "</div>"
}
elem.innerHTML = html, imageLoader.lazyChildren(elem)

View File

@ -30,9 +30,7 @@ define(['lazyLoader', 'imageFetcher', 'layoutManager', 'browser', 'appSettings',
function fillImageElement(elem, source, enableEffects) {
imageFetcher.loadImage(elem, source).then(function () {
var fillingVibrant = false;//fillVibrant(elem, source);
if (enableFade && enableEffects !== false && !fillingVibrant) {
if (enableFade && enableEffects !== false) {
fadeIn(elem);
}
@ -40,131 +38,6 @@ define(['lazyLoader', 'imageFetcher', 'layoutManager', 'browser', 'appSettings',
});
}
function fillVibrant(img, url, canvas, canvasContext) {
var vibrantElement = img.getAttribute('data-vibrant');
if (!vibrantElement) {
return false;
}
if (window.Vibrant) {
fillVibrantOnLoaded(img, url, vibrantElement, canvas, canvasContext);
return true;
}
require(['vibrant'], function () {
fillVibrantOnLoaded(img, url, vibrantElement, canvas, canvasContext);
});
return true;
}
function fillVibrantOnLoaded(img, url, vibrantElement) {
vibrantElement = document.getElementById(vibrantElement);
if (!vibrantElement) {
return;
}
requestIdleCallback(function () {
//var now = new Date().getTime();
getVibrantInfoFromElement(img, url).then(function (vibrantInfo) {
var swatch = vibrantInfo.split('|');
//console.log('vibrant took ' + (new Date().getTime() - now) + 'ms');
if (swatch.length) {
var index = 0;
var style = vibrantElement.style;
style.backgroundColor = swatch[index];
style.color = swatch[index + 1];
var classList = vibrantElement.classList;
if (classList.contains('cardFooter')) {
classList.add('cardFooter-vibrant');
} else {
classList.add('vibrant');
}
}
});
});
/*
* Results into:
* Vibrant #7a4426
* Muted #7b9eae
* DarkVibrant #348945
* DarkMuted #141414
* LightVibrant #f3ccb4
*/
}
function getVibrantInfoFromElement(elem, url) {
return new Promise(function (resolve, reject) {
require(['vibrant'], function () {
if (elem.tagName === 'IMG') {
resolve(getVibrantInfo(elem, url));
return;
}
var img = new Image();
img.onload = function () {
resolve(getVibrantInfo(img, url));
};
img.src = url;
});
});
}
function getSettingsKey(url) {
var parts = url.split('://');
url = parts[parts.length - 1];
url = url.substring(url.indexOf('/') + 1);
url = url.split('?')[0];
var cacheKey = 'vibrant31';
//cacheKey = 'vibrant' + new Date().getTime();
return cacheKey + url;
}
function getCachedVibrantInfo(url) {
return appSettings.get(getSettingsKey(url));
}
function getVibrantInfo(img, url) {
var value = getCachedVibrantInfo(url);
if (value) {
return value;
}
var vibrant = new Vibrant(img);
var swatches = vibrant.swatches();
value = '';
var swatch = swatches.DarkVibrant;
value += getSwatchString(swatch);
appSettings.set(getSettingsKey(url), value);
return value;
}
function getSwatchString(swatch) {
if (swatch) {
return swatch.getHex() + '|' + swatch.getBodyTextColor() + '|' + swatch.getTitleTextColor();
}
return '||';
}
function fadeIn(elem) {
var cssClass = 'lazy-image-fadein';
@ -248,8 +121,6 @@ define(['lazyLoader', 'imageFetcher', 'layoutManager', 'browser', 'appSettings',
self.lazyImage = fillImage;
self.lazyChildren = lazyChildren;
self.getPrimaryImageAspectRatio = getPrimaryImageAspectRatio;
self.getCachedVibrantInfo = getCachedVibrantInfo;
self.getVibrantInfoFromElement = getVibrantInfoFromElement;
return self;
});

View File

@ -1,121 +1,262 @@
define(["browser", "dom", "layoutManager", "css!components/viewManager/viewContainer"], function(browser, dom, layoutManager) {
define(["browser", "dom", "layoutManager", "css!components/viewManager/viewContainer"], function (browser, dom, layoutManager) {
"use strict";
function setControllerClass(view, options) {
if (options.controllerFactory) return Promise.resolve();
if (options.controllerFactory) {
return Promise.resolve();
}
var controllerUrl = view.getAttribute("data-controller");
return controllerUrl ? (0 === controllerUrl.indexOf("__plugin/") && (controllerUrl = controllerUrl.substring("__plugin/".length)), controllerUrl = Dashboard.getConfigurationResourceUrl(controllerUrl), getRequirePromise([controllerUrl]).then(function(ControllerFactory) {
options.controllerFactory = ControllerFactory
})) : Promise.resolve()
if (controllerUrl) {
if (0 === controllerUrl.indexOf("__plugin/")) {
controllerUrl = controllerUrl.substring("__plugin/".length);
}
controllerUrl = Dashboard.getConfigurationResourceUrl(controllerUrl);
return getRequirePromise([controllerUrl]).then(function (ControllerFactory) {
options.controllerFactory = ControllerFactory;
});
}
return Promise.resolve();
}
function getRequirePromise(deps) {
return new Promise(function(resolve, reject) {
require(deps, resolve)
})
return new Promise(function (resolve, reject) {
require(deps, resolve);
});
}
function loadView(options) {
if (!options.cancel) {
var selected = selectedPageIndex,
previousAnimatable = -1 === selected ? null : allPages[selected],
pageIndex = selected + 1;
pageIndex >= pageContainerCount && (pageIndex = 0);
var isPluginpage = -1 !== options.url.toLowerCase().indexOf("/configurationpage"),
newViewInfo = normalizeNewView(options, isPluginpage),
newView = newViewInfo.elem,
dependencies = "string" == typeof newView ? null : newView.getAttribute("data-require");
return dependencies = dependencies ? dependencies.split(",") : [], isPluginpage && dependencies.push("legacy/dashboard"), newViewInfo.hasjQuerySelect && dependencies.push("legacy/selectmenu"), newViewInfo.hasjQueryChecked && dependencies.push("fnchecked"), newViewInfo.hasjQuery && dependencies.push("jQuery"), (isPluginpage || newView.classList && newView.classList.contains("type-interior")) && dependencies.push("dashboardcss"), new Promise(function(resolve, reject) {
dependencies.join(",");
require(dependencies, function() {
var currentPage = allPages[pageIndex];
currentPage && triggerDestroy(currentPage);
var view = newView;
"string" == typeof view && (view = document.createElement("div"), view.innerHTML = newView), view.classList.add("mainAnimatedPage"), currentPage ? newViewInfo.hasScript && window.$ ? (view = $(view).appendTo(mainAnimatedPages)[0], mainAnimatedPages.removeChild(currentPage)) : mainAnimatedPages.replaceChild(view, currentPage) : newViewInfo.hasScript && window.$ ? view = $(view).appendTo(mainAnimatedPages)[0] : mainAnimatedPages.appendChild(view), options.type && view.setAttribute("data-type", options.type);
var properties = [];
options.fullscreen && properties.push("fullscreen"), properties.length && view.setAttribute("data-properties", properties.join(","));
allPages[pageIndex] = view, setControllerClass(view, options).then(function() {
onBeforeChange && onBeforeChange(view, !1, options), beforeAnimate(allPages, pageIndex, selected), selectedPageIndex = pageIndex, currentUrls[pageIndex] = options.url, !options.cancel && previousAnimatable && afterAnimate(allPages, pageIndex), window.$ && ($.mobile = $.mobile || {}, $.mobile.activePage = view), resolve(view)
})
})
})
var selected = selectedPageIndex;
var previousAnimatable = -1 === selected ? null : allPages[selected];
var pageIndex = selected + 1;
if (pageIndex >= pageContainerCount) {
pageIndex = 0;
}
var isPluginpage = -1 !== options.url.toLowerCase().indexOf("/configurationpage");
var newViewInfo = normalizeNewView(options, isPluginpage);
var newView = newViewInfo.elem;
if (isPluginpage) {
require(["legacy/dashboard"]);
}
if (newViewInfo.hasjQuerySelect) {
require(["legacy/selectmenu"]);
}
if (newViewInfo.hasjQueryChecked) {
require(["fnchecked"]);
}
return new Promise(function (resolve) {
var currentPage = allPages[pageIndex];
if (currentPage) {
triggerDestroy(currentPage);
}
var view = newView;
if ("string" == typeof view) {
view = document.createElement("div");
view.innerHTML = newView;
}
view.classList.add("mainAnimatedPage");
if (currentPage) {
if (newViewInfo.hasScript && window.$) {
view = $(view).appendTo(mainAnimatedPages)[0];
mainAnimatedPages.removeChild(currentPage);
} else {
mainAnimatedPages.replaceChild(view, currentPage);
}
} else {
if (newViewInfo.hasScript && window.$) {
view = $(view).appendTo(mainAnimatedPages)[0];
} else {
mainAnimatedPages.appendChild(view);
}
}
if (options.type) {
view.setAttribute("data-type", options.type);
}
var properties = [];
if (options.fullscreen) {
properties.push("fullscreen");
}
if (properties.length) {
view.setAttribute("data-properties", properties.join(","));
}
allPages[pageIndex] = view;
setControllerClass(view, options).then(function () {
if (onBeforeChange) {
onBeforeChange(view, false, options);
}
beforeAnimate(allPages, pageIndex, selected);
selectedPageIndex = pageIndex;
currentUrls[pageIndex] = options.url;
if (!options.cancel && previousAnimatable) {
afterAnimate(allPages, pageIndex);
}
if (window.$) {
$.mobile = $.mobile || {};
$.mobile.activePage = view;
}
resolve(view);
});
});
}
}
function replaceAll(str, find, replace) {
return str.split(find).join(replace)
return str.split(find).join(replace);
}
function parseHtml(html, hasScript) {
hasScript && (html = replaceAll(html, "\x3c!--<script", "<script"), html = replaceAll(html, "<\/script>--\x3e", "<\/script>"));
if (hasScript) {
html = replaceAll(html, "\x3c!--<script", "<script");
html = replaceAll(html, "<\/script>--\x3e", "<\/script>");
}
var wrapper = document.createElement("div");
return wrapper.innerHTML = html, wrapper.querySelector('div[data-role="page"]')
wrapper.innerHTML = html;
return wrapper.querySelector('div[data-role="page"]');
}
function normalizeNewView(options, isPluginpage) {
var viewHtml = options.view;
if (-1 === viewHtml.indexOf('data-role="page"')) return viewHtml;
var hasScript = -1 !== viewHtml.indexOf("<script"),
elem = parseHtml(viewHtml, hasScript);
hasScript && (hasScript = null != elem.querySelector("script"));
var hasjQuery = !1,
hasjQuerySelect = !1,
hasjQueryChecked = !1;
return isPluginpage && (hasjQuery = -1 != viewHtml.indexOf("jQuery") || -1 != viewHtml.indexOf("$(") || -1 != viewHtml.indexOf("$."), hasjQueryChecked = -1 != viewHtml.indexOf(".checked("), hasjQuerySelect = -1 != viewHtml.indexOf(".selectmenu(")), {
if (-1 === viewHtml.indexOf('data-role="page"')) {
return viewHtml;
}
var hasScript = -1 !== viewHtml.indexOf("<script");
var elem = parseHtml(viewHtml, hasScript);
if (hasScript) {
hasScript = null != elem.querySelector("script");
}
var hasjQuery = false;
var hasjQuerySelect = false;
var hasjQueryChecked = false;
if (isPluginpage) {
hasjQuery = -1 != viewHtml.indexOf("jQuery") || -1 != viewHtml.indexOf("$(") || -1 != viewHtml.indexOf("$.");
hasjQueryChecked = -1 != viewHtml.indexOf(".checked(");
hasjQuerySelect = -1 != viewHtml.indexOf(".selectmenu(");
}
return {
elem: elem,
hasScript: hasScript,
hasjQuerySelect: hasjQuerySelect,
hasjQueryChecked: hasjQueryChecked,
hasjQuery: hasjQuery
}
};
}
function beforeAnimate(allPages, newPageIndex, oldPageIndex) {
for (var i = 0, length = allPages.length; i < length; i++) newPageIndex === i || oldPageIndex === i || allPages[i].classList.add("hide")
for (var index = 0, length = allPages.length; index < length; index++) {
if (newPageIndex !== index && oldPageIndex !== index) {
allPages[index].classList.add("hide");
}
}
}
function afterAnimate(allPages, newPageIndex) {
for (var i = 0, length = allPages.length; i < length; i++) newPageIndex === i || allPages[i].classList.add("hide")
for (var index = 0, length = allPages.length; index < length; index++) {
if (newPageIndex !== index) {
allPages[index].classList.add("hide");
}
}
}
function setOnBeforeChange(fn) {
onBeforeChange = fn
onBeforeChange = fn;
}
function tryRestoreView(options) {
var url = options.url,
index = currentUrls.indexOf(url);
var url = options.url;
var index = currentUrls.indexOf(url);
if (-1 !== index) {
var animatable = allPages[index],
view = animatable;
var animatable = allPages[index];
var view = animatable;
if (view) {
if (options.cancel) return;
var selected = selectedPageIndex,
previousAnimatable = -1 === selected ? null : allPages[selected];
return setControllerClass(view, options).then(function() {
return onBeforeChange && onBeforeChange(view, !0, options), beforeAnimate(allPages, index, selected), animatable.classList.remove("hide"), selectedPageIndex = index, !options.cancel && previousAnimatable && afterAnimate(allPages, index), window.$ && ($.mobile = $.mobile || {}, $.mobile.activePage = view), view
})
if (options.cancel) {
return;
}
var selected = selectedPageIndex;
var previousAnimatable = -1 === selected ? null : allPages[selected];
return setControllerClass(view, options).then(function () {
if (onBeforeChange) {
onBeforeChange(view, true, options);
}
beforeAnimate(allPages, index, selected);
animatable.classList.remove("hide");
selectedPageIndex = index;
if (!options.cancel && previousAnimatable) {
afterAnimate(allPages, index);
}
if (window.$) {
$.mobile = $.mobile || {};
$.mobile.activePage = view;
}
return view;
});
}
}
return Promise.reject()
return Promise.reject();
}
function triggerDestroy(view) {
view.dispatchEvent(new CustomEvent("viewdestroy", {}))
view.dispatchEvent(new CustomEvent("viewdestroy", {}));
}
function reset() {
allPages = [], currentUrls = [], mainAnimatedPages.innerHTML = "", selectedPageIndex = -1
}
var onBeforeChange, mainAnimatedPages = document.querySelector(".mainAnimatedPages"),
allPages = [],
currentUrls = [],
pageContainerCount = 3,
allPages = [];
currentUrls = [];
mainAnimatedPages.innerHTML = "";
selectedPageIndex = -1;
return reset(), mainAnimatedPages.classList.remove("hide"), {
}
var onBeforeChange;
var mainAnimatedPages = document.querySelector(".mainAnimatedPages");
var allPages = [];
var currentUrls = [];
var pageContainerCount = 3;
var selectedPageIndex = -1;
reset();
mainAnimatedPages.classList.remove("hide");
return {
loadView: loadView,
tryRestoreView: tryRestoreView,
reset: reset,
setOnBeforeChange: setOnBeforeChange
}
});
};
});

View File

@ -1,10 +1,10 @@
define(['viewcontainer', 'focusManager', 'queryString', 'layoutManager'], function (viewcontainer, focusManager, queryString, layoutManager) {
define(['viewContainer', 'focusManager', 'queryString', 'layoutManager'], function (viewContainer, focusManager, queryString, layoutManager) {
'use strict';
var currentView;
var dispatchPageEvents;
viewcontainer.setOnBeforeChange(function (newView, isRestored, options) {
viewContainer.setOnBeforeChange(function (newView, isRestored, options) {
var lastView = currentView;
if (lastView) {
@ -21,7 +21,7 @@ define(['viewcontainer', 'focusManager', 'queryString', 'layoutManager'], functi
if (!newView.initComplete) {
newView.initComplete = true;
if (options.controllerFactory) {
if (typeof options.controllerFactory === 'function') {
// Use controller method
var controller = new options.controllerFactory(newView, eventDetail.detail.params);
@ -125,7 +125,7 @@ define(['viewcontainer', 'focusManager', 'queryString', 'layoutManager'], functi
function resetCachedViews() {
// Reset all cached views whenever the skin changes
viewcontainer.reset();
viewContainer.reset();
}
document.addEventListener('skinunload', resetCachedViews);
@ -146,7 +146,7 @@ define(['viewcontainer', 'focusManager', 'queryString', 'layoutManager'], functi
return;
}
viewcontainer.loadView(options).then(function (view) {
viewContainer.loadView(options).then(function (view) {
onViewChange(view, options);
});
@ -163,7 +163,7 @@ define(['viewcontainer', 'focusManager', 'queryString', 'layoutManager'], functi
currentView.activeElement = document.activeElement;
}
return viewcontainer.tryRestoreView(options).then(function (view) {
return viewContainer.tryRestoreView(options).then(function (view) {
onViewChanging();
onViewChange(view, options, true);

View File

@ -0,0 +1,829 @@
define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-input", "emby-checkbox", "listViewStyle", "emby-button"], function ($, loading) {
"use strict";
function loadProfile(page) {
loading.show();
var promise1 = getProfile();
var promise2 = ApiClient.getUsers();
Promise.all([promise1, promise2]).then(function (responses) {
currentProfile = responses[0];
renderProfile(page, currentProfile, responses[1]);
loading.hide();
});
}
function getProfile() {
var id = getParameterByName("id");
var url = id ? "Dlna/Profiles/" + id : "Dlna/Profiles/Default";
return ApiClient.getJSON(ApiClient.getUrl(url));
}
function renderProfile(page, profile, users) {
$("#txtName", page).val(profile.Name);
$(".chkMediaType", page).each(function () {
this.checked = -1 != (profile.SupportedMediaTypes || "").split(",").indexOf(this.getAttribute("data-value"));
});
$("#chkEnableAlbumArtInDidl", page).checked(profile.EnableAlbumArtInDidl);
$("#chkEnableSingleImageLimit", page).checked(profile.EnableSingleAlbumArtLimit);
renderXmlDocumentAttributes(page, profile.XmlRootAttributes || []);
var idInfo = profile.Identification || {};
renderIdentificationHeaders(page, idInfo.Headers || []);
renderSubtitleProfiles(page, profile.SubtitleProfiles || []);
$("#txtInfoFriendlyName", page).val(profile.FriendlyName || "");
$("#txtInfoModelName", page).val(profile.ModelName || "");
$("#txtInfoModelNumber", page).val(profile.ModelNumber || "");
$("#txtInfoModelDescription", page).val(profile.ModelDescription || "");
$("#txtInfoModelUrl", page).val(profile.ModelUrl || "");
$("#txtInfoManufacturer", page).val(profile.Manufacturer || "");
$("#txtInfoManufacturerUrl", page).val(profile.ManufacturerUrl || "");
$("#txtInfoSerialNumber", page).val(profile.SerialNumber || "");
$("#txtIdFriendlyName", page).val(idInfo.FriendlyName || "");
$("#txtIdModelName", page).val(idInfo.ModelName || "");
$("#txtIdModelNumber", page).val(idInfo.ModelNumber || "");
$("#txtIdModelDescription", page).val(idInfo.ModelDescription || "");
$("#txtIdModelUrl", page).val(idInfo.ModelUrl || "");
$("#txtIdManufacturer", page).val(idInfo.Manufacturer || "");
$("#txtIdManufacturerUrl", page).val(idInfo.ManufacturerUrl || "");
$("#txtIdSerialNumber", page).val(idInfo.SerialNumber || "");
$("#txtIdDeviceDescription", page).val(idInfo.DeviceDescription || "");
$("#txtAlbumArtPn", page).val(profile.AlbumArtPn || "");
$("#txtAlbumArtMaxWidth", page).val(profile.MaxAlbumArtWidth || "");
$("#txtAlbumArtMaxHeight", page).val(profile.MaxAlbumArtHeight || "");
$("#txtIconMaxWidth", page).val(profile.MaxIconWidth || "");
$("#txtIconMaxHeight", page).val(profile.MaxIconHeight || "");
$("#chkIgnoreTranscodeByteRangeRequests", page).checked(profile.IgnoreTranscodeByteRangeRequests);
$("#txtMaxAllowedBitrate", page).val(profile.MaxStreamingBitrate || "");
$("#txtMusicStreamingTranscodingBitrate", page).val(profile.MusicStreamingTranscodingBitrate || "");
$("#chkRequiresPlainFolders", page).checked(profile.RequiresPlainFolders);
$("#chkRequiresPlainVideoItems", page).checked(profile.RequiresPlainVideoItems);
$("#txtProtocolInfo", page).val(profile.ProtocolInfo || "");
$("#txtXDlnaCap", page).val(profile.XDlnaCap || "");
$("#txtXDlnaDoc", page).val(profile.XDlnaDoc || "");
$("#txtSonyAggregationFlags", page).val(profile.SonyAggregationFlags || "");
profile.DirectPlayProfiles = profile.DirectPlayProfiles || [];
profile.TranscodingProfiles = profile.TranscodingProfiles || [];
profile.ContainerProfiles = profile.ContainerProfiles || [];
profile.CodecProfiles = profile.CodecProfiles || [];
profile.ResponseProfiles = profile.ResponseProfiles || [];
var usersHtml = "<option></option>" + users.map(function (u__w) {
return '<option value="' + u__w.Id + '">' + u__w.Name + "</option>";
}).join("");
$("#selectUser", page).html(usersHtml).val(profile.UserId || "");
renderSubProfiles(page, profile);
}
function renderIdentificationHeaders(page, headers) {
var index = 0;
var html = '<div class="paperList">' + headers.map(function (h__e) {
var li = '<div class="listItem">';
li += '<i class="md-icon listItemIcon">info</i>';
li += '<div class="listItemBody">';
li += '<h3 class="listItemBodyText">' + h__e.Name + ": " + (h__e.Value || "") + "</h3>";
li += '<div class="listItemBodyText secondary">' + (h__e.Match || "") + "</div>";
li += "</div>";
li += '<button type="button" is="paper-icon-button-light" class="btnDeleteIdentificationHeader listItemButton" data-index="' + index + '"><i class="md-icon">delete</i></button>';
li += "</div>";
index++;
return li;
}).join("") + "</div>";
var elem = $(".httpHeaderIdentificationList", page).html(html).trigger("create");
$(".btnDeleteIdentificationHeader", elem).on("click", function () {
var itemIndex = parseInt(this.getAttribute("data-index"));
currentProfile.Identification.Headers.splice(itemIndex, 1);
renderIdentificationHeaders(page, currentProfile.Identification.Headers);
});
}
function openPopup(elem) {
elem.classList.remove("hide");
}
function closePopup(elem) {
elem.classList.add("hide");
}
function editIdentificationHeader(page, header) {
isSubProfileNew = null == header;
header = header || {};
currentSubProfile = header;
var popup = $("#identificationHeaderPopup", page);
$("#txtIdentificationHeaderName", popup).val(header.Name || "");
$("#txtIdentificationHeaderValue", popup).val(header.Value || "");
$("#selectMatchType", popup).val(header.Match || "Equals");
openPopup(popup[0]);
}
function saveIdentificationHeader(page) {
currentSubProfile.Name = $("#txtIdentificationHeaderName", page).val();
currentSubProfile.Value = $("#txtIdentificationHeaderValue", page).val();
currentSubProfile.Match = $("#selectMatchType", page).val();
if (isSubProfileNew) {
currentProfile.Identification = currentProfile.Identification || {};
currentProfile.Identification.Headers = currentProfile.Identification.Headers || [];
currentProfile.Identification.Headers.push(currentSubProfile);
}
renderIdentificationHeaders(page, currentProfile.Identification.Headers);
currentSubProfile = null;
closePopup($("#identificationHeaderPopup", page)[0]);
}
function renderXmlDocumentAttributes(page, attribute) {
var html = '<div class="paperList">' + attribute.map(function (h__r) {
var li = '<div class="listItem">';
li += '<i class="md-icon listItemIcon">info</i>';
li += '<div class="listItemBody">';
li += '<h3 class="listItemBodyText">' + h__r.Name + " = " + (h__r.Value || "") + "</h3>";
li += "</div>";
li += '<button type="button" is="paper-icon-button-light" class="btnDeleteXmlAttribute listItemButton" data-index="0"><i class="md-icon">delete</i></button>';
return li += "</div>";
}).join("") + "</div>";
var elem = $(".xmlDocumentAttributeList", page).html(html).trigger("create");
$(".btnDeleteXmlAttribute", elem).on("click", function () {
var itemIndex = parseInt(this.getAttribute("data-index"));
currentProfile.XmlRootAttributes.splice(itemIndex, 1);
renderXmlDocumentAttributes(page, currentProfile.XmlRootAttributes);
});
}
function editXmlDocumentAttribute(page, attribute) {
isSubProfileNew = null == attribute;
attribute = attribute || {};
currentSubProfile = attribute;
var popup = $("#xmlAttributePopup", page);
$("#txtXmlAttributeName", popup).val(attribute.Name || "");
$("#txtXmlAttributeValue", popup).val(attribute.Value || "");
openPopup(popup[0]);
}
function saveXmlDocumentAttribute(page) {
currentSubProfile.Name = $("#txtXmlAttributeName", page).val();
currentSubProfile.Value = $("#txtXmlAttributeValue", page).val();
if (isSubProfileNew) {
currentProfile.XmlRootAttributes.push(currentSubProfile);
}
renderXmlDocumentAttributes(page, currentProfile.XmlRootAttributes);
currentSubProfile = null;
closePopup($("#xmlAttributePopup", page)[0]);
}
function renderSubtitleProfiles(page, profiles) {
var index = 0;
var html = '<div class="paperList">' + profiles.map(function (h__t) {
var li = '<div class="listItem lnkEditSubProfile" data-index="' + index + '">';
li += '<i class="md-icon listItemIcon">info</i>';
li += '<div class="listItemBody">';
li += '<h3 class="listItemBodyText">' + (h__t.Format || "") + "</h3>";
li += "</div>";
li += '<button type="button" is="paper-icon-button-light" class="btnDeleteProfile listItemButton" data-index="' + index + '"><i class="md-icon">delete</i></button>';
li += "</div>";
index++;
return li;
}).join("") + "</div>";
var elem = $(".subtitleProfileList", page).html(html).trigger("create");
$(".btnDeleteProfile", elem).on("click", function () {
var itemIndex = parseInt(this.getAttribute("data-index"));
currentProfile.SubtitleProfiles.splice(itemIndex, 1);
renderSubtitleProfiles(page, currentProfile.SubtitleProfiles);
});
$(".lnkEditSubProfile", elem).on("click", function () {
var itemIndex = parseInt(this.getAttribute("data-index"));
editSubtitleProfile(page, currentProfile.SubtitleProfiles[itemIndex]);
});
}
function editSubtitleProfile(page, profile) {
isSubProfileNew = null == profile;
profile = profile || {};
currentSubProfile = profile;
var popup = $("#subtitleProfilePopup", page);
$("#txtSubtitleProfileFormat", popup).val(profile.Format || "");
$("#selectSubtitleProfileMethod", popup).val(profile.Method || "");
$("#selectSubtitleProfileDidlMode", popup).val(profile.DidlMode || "");
openPopup(popup[0]);
}
function saveSubtitleProfile(page) {
currentSubProfile.Format = $("#txtSubtitleProfileFormat", page).val();
currentSubProfile.Method = $("#selectSubtitleProfileMethod", page).val();
currentSubProfile.DidlMode = $("#selectSubtitleProfileDidlMode", page).val();
if (isSubProfileNew) {
currentProfile.SubtitleProfiles.push(currentSubProfile);
}
renderSubtitleProfiles(page, currentProfile.SubtitleProfiles);
currentSubProfile = null;
closePopup($("#subtitleProfilePopup", page)[0]);
}
function renderSubProfiles(page, profile) {
renderDirectPlayProfiles(page, profile.DirectPlayProfiles);
renderTranscodingProfiles(page, profile.TranscodingProfiles);
renderContainerProfiles(page, profile.ContainerProfiles);
renderCodecProfiles(page, profile.CodecProfiles);
renderResponseProfiles(page, profile.ResponseProfiles);
}
function saveDirectPlayProfile(page) {
currentSubProfile.Type = $("#selectDirectPlayProfileType", page).val();
currentSubProfile.Container = $("#txtDirectPlayContainer", page).val();
currentSubProfile.AudioCodec = $("#txtDirectPlayAudioCodec", page).val();
currentSubProfile.VideoCodec = $("#txtDirectPlayVideoCodec", page).val();
if (isSubProfileNew) {
currentProfile.DirectPlayProfiles.push(currentSubProfile);
}
renderSubProfiles(page, currentProfile);
currentSubProfile = null;
closePopup($("#popupEditDirectPlayProfile", page)[0]);
}
function renderDirectPlayProfiles(page, profiles) {
var html = "";
html += '<ul data-role="listview" data-inset="true" data-split-icon="delete">';
var currentType;
for (var i__y = 0, length = profiles.length; i__y < length; i__y++) {
var profile = profiles[i__y];
if (profile.Type !== currentType) {
html += '<li data-role="list-divider">' + profile.Type + "</li>";
currentType = profile.Type;
}
html += "<li>";
html += '<a data-profileindex="' + i__y + '" class="lnkEditSubProfile" is="emby-linkbutton" href="#">';
html += "<p>" + Globalize.translate("ValueContainer").replace("{0}", profile.Container || allText) + "</p>";
if ("Video" == profile.Type) {
html += "<p>" + Globalize.translate("ValueVideoCodec").replace("{0}", profile.VideoCodec || allText) + "</p>";
html += "<p>" + Globalize.translate("ValueAudioCodec").replace("{0}", profile.AudioCodec || allText) + "</p>";
} else {
if ("Audio" == profile.Type) {
html += "<p>" + Globalize.translate("ValueCodec").replace("{0}", profile.AudioCodec || allText) + "</p>";
}
}
html += "</a>";
html += '<a is="emby-linkbutton" href="#" data-icon="delete" class="btnDeleteProfile" data-profileindex="' + i__y + '">Delete</a>';
html += "</li>";
}
html += "</ul>";
var elem = $(".directPlayProfiles", page).html(html).trigger("create");
$(".btnDeleteProfile", elem).on("click", function () {
var index = this.getAttribute("data-profileindex");
deleteDirectPlayProfile(page, index);
});
$(".lnkEditSubProfile", elem).on("click", function () {
var index = parseInt(this.getAttribute("data-profileindex"));
editDirectPlayProfile(page, currentProfile.DirectPlayProfiles[index]);
});
}
function deleteDirectPlayProfile(page, index) {
currentProfile.DirectPlayProfiles.splice(index, 1);
renderDirectPlayProfiles(page, currentProfile.DirectPlayProfiles);
}
function editDirectPlayProfile(page, directPlayProfile) {
isSubProfileNew = null == directPlayProfile;
directPlayProfile = directPlayProfile || {};
currentSubProfile = directPlayProfile;
var popup = $("#popupEditDirectPlayProfile", page);
$("#selectDirectPlayProfileType", popup).val(directPlayProfile.Type || "Video").trigger("change");
$("#txtDirectPlayContainer", popup).val(directPlayProfile.Container || "");
$("#txtDirectPlayAudioCodec", popup).val(directPlayProfile.AudioCodec || "");
$("#txtDirectPlayVideoCodec", popup).val(directPlayProfile.VideoCodec || "");
openPopup(popup[0]);
}
function renderTranscodingProfiles(page, profiles) {
var html = "";
html += '<ul data-role="listview" data-inset="true" data-split-icon="delete">';
var currentType;
for (var i__u = 0, length = profiles.length; i__u < length; i__u++) {
var profile = profiles[i__u];
if (profile.Type !== currentType) {
html += '<li data-role="list-divider">' + profile.Type + "</li>";
currentType = profile.Type;
}
html += "<li>";
html += '<a data-profileindex="' + i__u + '" class="lnkEditSubProfile" is="emby-linkbutton" href="#">';
html += "<p>Protocol: " + (profile.Protocol || "Http") + "</p>";
html += "<p>" + Globalize.translate("ValueContainer").replace("{0}", profile.Container || allText) + "</p>";
if ("Video" == profile.Type) {
html += "<p>" + Globalize.translate("ValueVideoCodec").replace("{0}", profile.VideoCodec || allText) + "</p>";
html += "<p>" + Globalize.translate("ValueAudioCodec").replace("{0}", profile.AudioCodec || allText) + "</p>";
} else {
if ("Audio" == profile.Type) {
html += "<p>" + Globalize.translate("ValueCodec").replace("{0}", profile.AudioCodec || allText) + "</p>";
}
}
html += "</a>";
html += '<a is="emby-linkbutton" href="#" data-icon="delete" class="btnDeleteProfile" data-profileindex="' + i__u + '">Delete</a>';
html += "</li>";
}
html += "</ul>";
var elem = $(".transcodingProfiles", page).html(html).trigger("create");
$(".btnDeleteProfile", elem).on("click", function () {
var index = this.getAttribute("data-profileindex");
deleteTranscodingProfile(page, index);
});
$(".lnkEditSubProfile", elem).on("click", function () {
var index = parseInt(this.getAttribute("data-profileindex"));
editTranscodingProfile(page, currentProfile.TranscodingProfiles[index]);
});
}
function editTranscodingProfile(page, transcodingProfile) {
isSubProfileNew = null == transcodingProfile;
transcodingProfile = transcodingProfile || {};
currentSubProfile = transcodingProfile;
var popup = $("#transcodingProfilePopup", page);
$("#selectTranscodingProfileType", popup).val(transcodingProfile.Type || "Video").trigger("change");
$("#txtTranscodingContainer", popup).val(transcodingProfile.Container || "");
$("#txtTranscodingAudioCodec", popup).val(transcodingProfile.AudioCodec || "");
$("#txtTranscodingVideoCodec", popup).val(transcodingProfile.VideoCodec || "");
$("#selectTranscodingProtocol", popup).val(transcodingProfile.Protocol || "Http");
$("#chkEnableMpegtsM2TsMode", popup).checked(transcodingProfile.EnableMpegtsM2TsMode || false);
$("#chkEstimateContentLength", popup).checked(transcodingProfile.EstimateContentLength || false);
$("#chkReportByteRangeRequests", popup).checked("Bytes" == transcodingProfile.TranscodeSeekInfo);
$(".radioTabButton:first", popup).trigger("click");
openPopup(popup[0]);
}
function deleteTranscodingProfile(page, index) {
currentProfile.TranscodingProfiles.splice(index, 1);
renderTranscodingProfiles(page, currentProfile.TranscodingProfiles);
}
function saveTranscodingProfile(page) {
currentSubProfile.Type = $("#selectTranscodingProfileType", page).val();
currentSubProfile.Container = $("#txtTranscodingContainer", page).val();
currentSubProfile.AudioCodec = $("#txtTranscodingAudioCodec", page).val();
currentSubProfile.VideoCodec = $("#txtTranscodingVideoCodec", page).val();
currentSubProfile.Protocol = $("#selectTranscodingProtocol", page).val();
currentSubProfile.Context = "Streaming";
currentSubProfile.EnableMpegtsM2TsMode = $("#chkEnableMpegtsM2TsMode", page).checked();
currentSubProfile.EstimateContentLength = $("#chkEstimateContentLength", page).checked();
currentSubProfile.TranscodeSeekInfo = $("#chkReportByteRangeRequests", page).checked() ? "Bytes" : "Auto";
if (isSubProfileNew) {
currentProfile.TranscodingProfiles.push(currentSubProfile);
}
renderSubProfiles(page, currentProfile);
currentSubProfile = null;
closePopup($("#transcodingProfilePopup", page)[0]);
}
function renderContainerProfiles(page, profiles) {
var html = "";
html += '<ul data-role="listview" data-inset="true" data-split-icon="delete">';
var currentType;
for (var i__i = 0, length = profiles.length; i__i < length; i__i++) {
var profile = profiles[i__i];
if (profile.Type !== currentType) {
html += '<li data-role="list-divider">' + profile.Type + "</li>";
currentType = profile.Type;
}
html += "<li>";
html += '<a data-profileindex="' + i__i + '" class="lnkEditSubProfile" is="emby-linkbutton" href="#">';
html += "<p>" + Globalize.translate("ValueContainer").replace("{0}", profile.Container || allText) + "</p>";
if (profile.Conditions && profile.Conditions.length) {
html += "<p>";
html += Globalize.translate("ValueConditions").replace("{0}", profile.Conditions.map(function (c__o) {
return c__o.Property;
}).join(", "));
html += "</p>";
}
html += "</a>";
html += '<a is="emby-linkbutton" href="#" data-icon="delete" class="btnDeleteProfile" data-profileindex="' + i__i + '">Delete</a>';
html += "</li>";
}
html += "</ul>";
var elem = $(".containerProfiles", page).html(html).trigger("create");
$(".btnDeleteProfile", elem).on("click", function () {
var index = this.getAttribute("data-profileindex");
deleteContainerProfile(page, index);
});
$(".lnkEditSubProfile", elem).on("click", function () {
var index = parseInt(this.getAttribute("data-profileindex"));
editContainerProfile(page, currentProfile.ContainerProfiles[index]);
});
}
function deleteContainerProfile(page, index) {
currentProfile.ContainerProfiles.splice(index, 1);
renderContainerProfiles(page, currentProfile.ContainerProfiles);
}
function editContainerProfile(page, containerProfile) {
isSubProfileNew = null == containerProfile;
containerProfile = containerProfile || {};
currentSubProfile = containerProfile;
var popup = $("#containerProfilePopup", page);
$("#selectContainerProfileType", popup).val(containerProfile.Type || "Video").trigger("change");
$("#txtContainerProfileContainer", popup).val(containerProfile.Container || "");
$(".radioTabButton:first", popup).trigger("click");
openPopup(popup[0]);
}
function saveContainerProfile(page) {
currentSubProfile.Type = $("#selectContainerProfileType", page).val();
currentSubProfile.Container = $("#txtContainerProfileContainer", page).val();
if (isSubProfileNew) {
currentProfile.ContainerProfiles.push(currentSubProfile);
}
renderSubProfiles(page, currentProfile);
currentSubProfile = null;
closePopup($("#containerProfilePopup", page)[0]);
}
function renderCodecProfiles(page, profiles) {
var html = "";
html += '<ul data-role="listview" data-inset="true" data-split-icon="delete">';
var currentType;
for (var i__p = 0, length = profiles.length; i__p < length; i__p++) {
var profile = profiles[i__p];
var type = profile.Type.replace("VideoAudio", "Video Audio");
if (type !== currentType) {
html += '<li data-role="list-divider">' + type + "</li>";
currentType = type;
}
html += "<li>";
html += '<a data-profileindex="' + i__p + '" class="lnkEditSubProfile" is="emby-linkbutton" href="#">';
html += "<p>" + Globalize.translate("ValueCodec").replace("{0}", profile.Codec || allText) + "</p>";
if (profile.Conditions && profile.Conditions.length) {
html += "<p>";
html += Globalize.translate("ValueConditions").replace("{0}", profile.Conditions.map(function (c__a) {
return c__a.Property;
}).join(", "));
html += "</p>";
}
html += "</a>";
html += '<a is="emby-linkbutton" href="#" data-icon="delete" class="btnDeleteProfile" data-profileindex="' + i__p + '">Delete</a>';
html += "</li>";
}
html += "</ul>";
var elem = $(".codecProfiles", page).html(html).trigger("create");
$(".btnDeleteProfile", elem).on("click", function () {
var index = this.getAttribute("data-profileindex");
deleteCodecProfile(page, index);
});
$(".lnkEditSubProfile", elem).on("click", function () {
var index = parseInt(this.getAttribute("data-profileindex"));
editCodecProfile(page, currentProfile.CodecProfiles[index]);
});
}
function deleteCodecProfile(page, index) {
currentProfile.CodecProfiles.splice(index, 1);
renderCodecProfiles(page, currentProfile.CodecProfiles);
}
function editCodecProfile(page, codecProfile) {
isSubProfileNew = null == codecProfile;
codecProfile = codecProfile || {};
currentSubProfile = codecProfile;
var popup = $("#codecProfilePopup", page);
$("#selectCodecProfileType", popup).val(codecProfile.Type || "Video").trigger("change");
$("#txtCodecProfileCodec", popup).val(codecProfile.Codec || "");
$(".radioTabButton:first", popup).trigger("click");
openPopup(popup[0]);
}
function saveCodecProfile(page) {
currentSubProfile.Type = $("#selectCodecProfileType", page).val();
currentSubProfile.Codec = $("#txtCodecProfileCodec", page).val();
if (isSubProfileNew) {
currentProfile.CodecProfiles.push(currentSubProfile);
}
renderSubProfiles(page, currentProfile);
currentSubProfile = null;
closePopup($("#codecProfilePopup", page)[0]);
}
function renderResponseProfiles(page, profiles) {
var html = "";
html += '<ul data-role="listview" data-inset="true" data-split-icon="delete">';
var currentType;
for (var i__s = 0, length = profiles.length; i__s < length; i__s++) {
var profile = profiles[i__s];
if (profile.Type !== currentType) {
html += '<li data-role="list-divider">' + profile.Type + "</li>";
currentType = profile.Type;
}
html += "<li>";
html += '<a data-profileindex="' + i__s + '" class="lnkEditSubProfile" is="emby-linkbutton" href="#">';
html += "<p>" + Globalize.translate("ValueContainer").replace("{0}", profile.Container || allText) + "</p>";
if ("Video" == profile.Type) {
html += "<p>" + Globalize.translate("ValueVideoCodec").replace("{0}", profile.VideoCodec || allText) + "</p>";
html += "<p>" + Globalize.translate("ValueAudioCodec").replace("{0}", profile.AudioCodec || allText) + "</p>";
} else {
if ("Audio" == profile.Type) {
html += "<p>" + Globalize.translate("ValueCodec").replace("{0}", profile.AudioCodec || allText) + "</p>";
}
}
if (profile.Conditions && profile.Conditions.length) {
html += "<p>";
html += Globalize.translate("ValueConditions").replace("{0}", profile.Conditions.map(function (c__d) {
return c__d.Property;
}).join(", "));
html += "</p>";
}
html += "</a>";
html += '<a is="emby-linkbutton" href="#" data-icon="delete" class="btnDeleteProfile" data-profileindex="' + i__s + '">Delete</a>';
html += "</li>";
}
html += "</ul>";
var elem = $(".mediaProfiles", page).html(html).trigger("create");
$(".btnDeleteProfile", elem).on("click", function () {
var index = this.getAttribute("data-profileindex");
deleteResponseProfile(page, index);
});
$(".lnkEditSubProfile", elem).on("click", function () {
var index = parseInt(this.getAttribute("data-profileindex"));
editResponseProfile(page, currentProfile.ResponseProfiles[index]);
});
}
function deleteResponseProfile(page, index) {
currentProfile.ResponseProfiles.splice(index, 1);
renderResponseProfiles(page, currentProfile.ResponseProfiles);
}
function editResponseProfile(page, responseProfile) {
isSubProfileNew = null == responseProfile;
responseProfile = responseProfile || {};
currentSubProfile = responseProfile;
var popup = $("#responseProfilePopup", page);
$("#selectResponseProfileType", popup).val(responseProfile.Type || "Video").trigger("change");
$("#txtResponseProfileContainer", popup).val(responseProfile.Container || "");
$("#txtResponseProfileAudioCodec", popup).val(responseProfile.AudioCodec || "");
$("#txtResponseProfileVideoCodec", popup).val(responseProfile.VideoCodec || "");
$(".radioTabButton:first", popup).trigger("click");
openPopup(popup[0]);
}
function saveResponseProfile(page) {
currentSubProfile.Type = $("#selectResponseProfileType", page).val();
currentSubProfile.Container = $("#txtResponseProfileContainer", page).val();
currentSubProfile.AudioCodec = $("#txtResponseProfileAudioCodec", page).val();
currentSubProfile.VideoCodec = $("#txtResponseProfileVideoCodec", page).val();
if (isSubProfileNew) {
currentProfile.ResponseProfiles.push(currentSubProfile);
}
renderSubProfiles(page, currentProfile);
currentSubProfile = null;
closePopup($("#responseProfilePopup", page)[0]);
}
function saveProfile(page, profile) {
updateProfile(page, profile);
var id = getParameterByName("id");
if (id) {
ApiClient.ajax({
type: "POST",
url: ApiClient.getUrl("Dlna/Profiles/" + id),
data: JSON.stringify(profile),
contentType: "application/json"
}).then(function () {
require(["toast"], function (toast) {
toast("Settings saved.");
});
}, Dashboard.processErrorResponse);
} else {
ApiClient.ajax({
type: "POST",
url: ApiClient.getUrl("Dlna/Profiles"),
data: JSON.stringify(profile),
contentType: "application/json"
}).then(function () {
Dashboard.navigate("dlnaprofiles.html");
}, Dashboard.processErrorResponse);
}
loading.hide();
}
function updateProfile(page, profile) {
profile.Name = $("#txtName", page).val();
profile.EnableAlbumArtInDidl = $("#chkEnableAlbumArtInDidl", page).checked();
profile.EnableSingleAlbumArtLimit = $("#chkEnableSingleImageLimit", page).checked();
profile.SupportedMediaTypes = $(".chkMediaType:checked", page).get().map(function (c__f) {
return c__f.getAttribute("data-value");
}).join(",");
profile.Identification = profile.Identification || {};
profile.FriendlyName = $("#txtInfoFriendlyName", page).val();
profile.ModelName = $("#txtInfoModelName", page).val();
profile.ModelNumber = $("#txtInfoModelNumber", page).val();
profile.ModelDescription = $("#txtInfoModelDescription", page).val();
profile.ModelUrl = $("#txtInfoModelUrl", page).val();
profile.Manufacturer = $("#txtInfoManufacturer", page).val();
profile.ManufacturerUrl = $("#txtInfoManufacturerUrl", page).val();
profile.SerialNumber = $("#txtInfoSerialNumber", page).val();
profile.Identification.FriendlyName = $("#txtIdFriendlyName", page).val();
profile.Identification.ModelName = $("#txtIdModelName", page).val();
profile.Identification.ModelNumber = $("#txtIdModelNumber", page).val();
profile.Identification.ModelDescription = $("#txtIdModelDescription", page).val();
profile.Identification.ModelUrl = $("#txtIdModelUrl", page).val();
profile.Identification.Manufacturer = $("#txtIdManufacturer", page).val();
profile.Identification.ManufacturerUrl = $("#txtIdManufacturerUrl", page).val();
profile.Identification.SerialNumber = $("#txtIdSerialNumber", page).val();
profile.Identification.DeviceDescription = $("#txtIdDeviceDescription", page).val();
profile.AlbumArtPn = $("#txtAlbumArtPn", page).val();
profile.MaxAlbumArtWidth = $("#txtAlbumArtMaxWidth", page).val();
profile.MaxAlbumArtHeight = $("#txtAlbumArtMaxHeight", page).val();
profile.MaxIconWidth = $("#txtIconMaxWidth", page).val();
profile.MaxIconHeight = $("#txtIconMaxHeight", page).val();
profile.RequiresPlainFolders = $("#chkRequiresPlainFolders", page).checked();
profile.RequiresPlainVideoItems = $("#chkRequiresPlainVideoItems", page).checked();
profile.IgnoreTranscodeByteRangeRequests = $("#chkIgnoreTranscodeByteRangeRequests", page).checked();
profile.MaxStreamingBitrate = $("#txtMaxAllowedBitrate", page).val();
profile.MusicStreamingTranscodingBitrate = $("#txtMusicStreamingTranscodingBitrate", page).val();
profile.ProtocolInfo = $("#txtProtocolInfo", page).val();
profile.XDlnaCap = $("#txtXDlnaCap", page).val();
profile.XDlnaDoc = $("#txtXDlnaDoc", page).val();
profile.SonyAggregationFlags = $("#txtSonyAggregationFlags", page).val();
profile.UserId = $("#selectUser", page).val();
}
var currentProfile;
var currentSubProfile;
var isSubProfileNew;
var allText = Globalize.translate("LabelAll");
$(document).on("pageinit", "#dlnaProfilePage", function () {
var page = this;
$(".radioTabButton", page).on("click", function () {
$(this).siblings().removeClass("ui-btn-active");
$(this).addClass("ui-btn-active");
var value = "A" == this.tagName ? this.getAttribute("data-value") : this.value;
var elem = $("." + value, page);
elem.siblings(".tabContent").hide();
elem.show();
});
$("#selectDirectPlayProfileType", page).on("change", function () {
if ("Video" == this.value) {
$("#fldDirectPlayVideoCodec", page).show();
} else {
$("#fldDirectPlayVideoCodec", page).hide();
}
if ("Photo" == this.value) {
$("#fldDirectPlayAudioCodec", page).hide();
} else {
$("#fldDirectPlayAudioCodec", page).show();
}
});
$("#selectTranscodingProfileType", page).on("change", function () {
if ("Video" == this.value) {
$("#fldTranscodingVideoCodec", page).show();
$("#fldTranscodingProtocol", page).show();
$("#fldEnableMpegtsM2TsMode", page).show();
} else {
$("#fldTranscodingVideoCodec", page).hide();
$("#fldTranscodingProtocol", page).hide();
$("#fldEnableMpegtsM2TsMode", page).hide();
}
if ("Photo" == this.value) {
$("#fldTranscodingAudioCodec", page).hide();
$("#fldEstimateContentLength", page).hide();
$("#fldReportByteRangeRequests", page).hide();
} else {
$("#fldTranscodingAudioCodec", page).show();
$("#fldEstimateContentLength", page).show();
$("#fldReportByteRangeRequests", page).show();
}
});
$("#selectResponseProfileType", page).on("change", function () {
if ("Video" == this.value) {
$("#fldResponseProfileVideoCodec", page).show();
} else {
$("#fldResponseProfileVideoCodec", page).hide();
}
if ("Photo" == this.value) {
$("#fldResponseProfileAudioCodec", page).hide();
} else {
$("#fldResponseProfileAudioCodec", page).show();
}
});
$(".btnAddDirectPlayProfile", page).on("click", function () {
editDirectPlayProfile(page);
});
$(".btnAddTranscodingProfile", page).on("click", function () {
editTranscodingProfile(page);
});
$(".btnAddContainerProfile", page).on("click", function () {
editContainerProfile(page);
});
$(".btnAddCodecProfile", page).on("click", function () {
editCodecProfile(page);
});
$(".btnAddResponseProfile", page).on("click", function () {
editResponseProfile(page);
});
$(".btnAddIdentificationHttpHeader", page).on("click", function () {
editIdentificationHeader(page);
});
$(".btnAddXmlDocumentAttribute", page).on("click", function () {
editXmlDocumentAttribute(page);
});
$(".btnAddSubtitleProfile", page).on("click", function () {
editSubtitleProfile(page);
});
$(".dlnaProfileForm").off("submit", DlnaProfilePage.onSubmit).on("submit", DlnaProfilePage.onSubmit);
$(".editDirectPlayProfileForm").off("submit", DlnaProfilePage.onDirectPlayFormSubmit).on("submit", DlnaProfilePage.onDirectPlayFormSubmit);
$(".transcodingProfileForm").off("submit", DlnaProfilePage.onTranscodingProfileFormSubmit).on("submit", DlnaProfilePage.onTranscodingProfileFormSubmit);
$(".containerProfileForm").off("submit", DlnaProfilePage.onContainerProfileFormSubmit).on("submit", DlnaProfilePage.onContainerProfileFormSubmit);
$(".codecProfileForm").off("submit", DlnaProfilePage.onCodecProfileFormSubmit).on("submit", DlnaProfilePage.onCodecProfileFormSubmit);
$(".editResponseProfileForm").off("submit", DlnaProfilePage.onResponseProfileFormSubmit).on("submit", DlnaProfilePage.onResponseProfileFormSubmit);
$(".identificationHeaderForm").off("submit", DlnaProfilePage.onIdentificationHeaderFormSubmit).on("submit", DlnaProfilePage.onIdentificationHeaderFormSubmit);
$(".xmlAttributeForm").off("submit", DlnaProfilePage.onXmlAttributeFormSubmit).on("submit", DlnaProfilePage.onXmlAttributeFormSubmit);
$(".subtitleProfileForm").off("submit", DlnaProfilePage.onSubtitleProfileFormSubmit).on("submit", DlnaProfilePage.onSubtitleProfileFormSubmit);
}).on("pageshow", "#dlnaProfilePage", function () {
var page = this;
$("#radioInfo", page).trigger("click");
loadProfile(page);
});
window.DlnaProfilePage = {
onSubmit: function () {
loading.show();
saveProfile($(this).parents(".page"), currentProfile);
return false;
},
onDirectPlayFormSubmit: function () {
saveDirectPlayProfile($(this).parents(".page"));
return false;
},
onTranscodingProfileFormSubmit: function () {
saveTranscodingProfile($(this).parents(".page"));
return false;
},
onContainerProfileFormSubmit: function () {
saveContainerProfile($(this).parents(".page"));
return false;
},
onCodecProfileFormSubmit: function () {
saveCodecProfile($(this).parents(".page"));
return false;
},
onResponseProfileFormSubmit: function () {
saveResponseProfile($(this).parents(".page"));
return false;
},
onIdentificationHeaderFormSubmit: function () {
saveIdentificationHeader($(this).parents(".page"));
return false;
},
onXmlAttributeFormSubmit: function () {
saveXmlDocumentAttribute($(this).parents(".page"));
return false;
},
onSubtitleProfileFormSubmit: function () {
saveSubtitleProfile($(this).parents(".page"));
return false;
}
};
});

View File

@ -54,6 +54,7 @@ define(["jQuery", "globalize", "loading", "libraryMenu", "listViewStyle", "emby-
name: globalize.translate("TabProfiles")
}]
}
$(document).on("pageshow", "#dlnaProfilesPage", function() {
libraryMenu.setTabs("dlna", 1, getTabs), loadProfiles(this)
})

View File

@ -1,4 +1,4 @@
define(["loading"], function(loading) {
define(["loading", "scripts/editorsidebar"], function(loading) {
"use strict";
function reload(context, itemId) {

View File

@ -69,6 +69,7 @@ define(["jQuery", "loading", "globalize", "dom"], function($, loading, globalize
-1 === c.getAttribute("data-types").split(",").indexOf(value) ? dom.parentWithTag(c, "LABEL").classList.add("hide") : (dom.parentWithTag(c, "LABEL").classList.remove("hide"), any = !0)
}), any ? context.querySelector(".decodingCodecsList").classList.remove("hide") : context.querySelector(".decodingCodecsList").classList.add("hide")
}
$(document).on("pageinit", "#encodingSettingsPage", function() {
var page = this;
page.querySelector("#selectVideoDecoder").addEventListener("change", function() {

View File

@ -167,7 +167,6 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap
action: section.action,
allowBottomPadding: !enableScrollX(),
cardLayout: cardLayout,
vibrant: supportsImageAnalysis && cardLayout,
leadingButtons: leadingButtons,
lines: lines
})

View File

@ -41,7 +41,6 @@ define(["browser", "layoutManager", "userSettings", "inputManager", "loading", "
overlayPlayButton: !supportsImageAnalysis,
allowBottomPadding: !enableScrollX(),
cardLayout: supportsImageAnalysis,
vibrant: supportsImageAnalysis,
coverImage: !0
}), imageLoader.lazyChildren(elem), loading.hide()
})
@ -78,7 +77,6 @@ define(["browser", "layoutManager", "userSettings", "inputManager", "loading", "
overlayMoreButton: !supportsImageAnalysis,
allowBottomPadding: !enableScrollX(),
cardLayout: supportsImageAnalysis,
vibrant: supportsImageAnalysis,
coverImage: !0
}), imageLoader.lazyChildren(itemsContainer)
})
@ -115,7 +113,6 @@ define(["browser", "layoutManager", "userSettings", "inputManager", "loading", "
overlayMoreButton: !supportsImageAnalysis,
allowBottomPadding: !enableScrollX(),
cardLayout: supportsImageAnalysis,
vibrant: supportsImageAnalysis,
coverImage: !0
}), imageLoader.lazyChildren(itemsContainer)
})

View File

@ -1,4 +1,4 @@
<div id="dlnaProfilePage" data-role="page" class="page type-interior dlnaPage withTabs" data-require="jQuery,emby-collapse,scripts/dlnaprofile,emby-button">
<div id="dlnaProfilePage" data-role="page" class="page type-interior dlnaPage withTabs">
<div data-role="content">
<div class="content-primary">

View File

@ -1,4 +1,4 @@
<div id="dlnaProfilesPage" data-role="page" class="page type-interior dlnaPage withTabs" data-require="scripts/dlnaprofiles,emby-button">
<div id="dlnaProfilesPage" data-role="page" class="page type-interior dlnaPage withTabs">
<div>
<div class="content-primary">

View File

@ -1,4 +1,4 @@
<div id="dlnaSettingsPage" data-role="page" class="page type-interior withTabs" data-require="scripts/dlnasettings,emby-select,emby-input,emby-checkbox,emby-button">
<div id="dlnaSettingsPage" data-role="page" class="page type-interior withTabs">
<div>
<div class="content-primary">

View File

@ -1,4 +1,4 @@
<div id="editItemMetadataPage" data-role="page" class="page libraryPage metadataEditorPage noSecondaryNavPage" data-title="${MetadataManager}" data-require="scripts/editorsidebar,controllers/edititemmetadata">
<div id="editItemMetadataPage" data-role="page" class="page libraryPage metadataEditorPage noSecondaryNavPage" data-title="${MetadataManager}">
<style>
#editItemMetadataPage .editMetadataForm {

View File

@ -1,4 +1,4 @@
<div id="encodingSettingsPage" data-role="page" class="page type-interior playbackConfigurationPage" data-require="scripts/encodingsettings,emby-input,emby-checkbox,emby-button,emby-select">
<div id="encodingSettingsPage" data-role="page" class="page type-interior playbackConfigurationPage">
<div>
<div class="content-primary">

View File

@ -55,7 +55,6 @@
width: 10px;
}
</style>
</head>
<body>
<div class="backdropContainer"></div>

View File

@ -1,4 +1,4 @@
<div id="mediaLibraryPage" data-role="page" class="page type-interior mediaLibraryPage librarySectionPage withTabs fullWidthContent" data-require="scripts/medialibrarypage">
<div id="mediaLibraryPage" data-role="page" class="page type-interior mediaLibraryPage librarySectionPage withTabs fullWidthContent">
<div>
<div class="content-primary">

View File

@ -1,4 +1,4 @@
<div id="liveTvGuideProviderPage" data-role="page" class="page type-interior liveTvSettingsPage" data-require="scripts/livetvguideprovider">
<div id="liveTvGuideProviderPage" data-role="page" class="page type-interior liveTvSettingsPage">
<div>
<div class="content-primary">

View File

@ -1,4 +1,4 @@
<div id="liveTvSettingsPage" data-role="page" class="page type-interior liveTvPage" data-require="scripts/livetvsettings,emby-checkbox,emby-input,emby-select,emby-collapse,emby-button">
<div id="liveTvSettingsPage" data-role="page" class="page type-interior liveTvPage">
<div>
<div class="content-primary">
<div class="verticalSection">

View File

@ -1,4 +1,4 @@
<div id="liveTvStatusPage" data-role="page" class="page type-interior liveTvSettingsPage" data-require="scripts/livetvstatus,emby-button">
<div id="liveTvStatusPage" data-role="page" class="page type-interior liveTvSettingsPage">
<div>
<div class="content-primary">
<div class="verticalSection verticalSection-extrabottompadding">

View File

@ -1,4 +1,4 @@
<div id="metadataImagesConfigurationPage" data-role="page" class="page type-interior metadataConfigurationPage withTabs" data-require="emby-collapse,scripts/metadataimagespage,emby-checkbox,emby-button,emby-input,emby-select">
<div id="metadataImagesConfigurationPage" data-role="page" class="page type-interior metadataConfigurationPage withTabs">
<div>

View File

@ -1,4 +1,4 @@
<div id="metadataNfoPage" data-role="page" class="page type-interior metadataConfigurationPage withTabs" data-require="scripts/metadatanfo,emby-checkbox,emby-button,emby-select">
<div id="metadataNfoPage" data-role="page" class="page type-interior metadataConfigurationPage withTabs">
<div>

View File

@ -1,4 +1,4 @@
<div id="notificationSettingPage" data-role="page" class="page type-interior notificationConfigurationPage withTabs" data-require="scripts/notificationsetting,emby-select,emby-input,emby-checkbox,emby-button">
<div id="notificationSettingPage" data-role="page" class="page type-interior notificationConfigurationPage withTabs">
<div>
<div class="content-primary">

View File

@ -1,4 +1,4 @@
<div id="playbackConfigurationPage" data-role="page" class="page type-interior playbackConfigurationPage withTabs" data-require="scripts/playbackconfiguration,emby-input,emby-button">
<div id="playbackConfigurationPage" data-role="page" class="page type-interior playbackConfigurationPage withTabs">
<div>
<div class="content-primary">

View File

@ -1,371 +0,0 @@
define(["jQuery", "loading", "fnchecked", "emby-select", "emby-button", "emby-input", "emby-checkbox", "listViewStyle", "emby-button"], function($, loading) {
"use strict";
function loadProfile(page) {
loading.show();
var promise1 = getProfile(),
promise2 = ApiClient.getUsers();
Promise.all([promise1, promise2]).then(function(responses) {
currentProfile = responses[0], renderProfile(page, currentProfile, responses[1]), loading.hide()
})
}
function getProfile() {
var id = getParameterByName("id"),
url = id ? "Dlna/Profiles/" + id : "Dlna/Profiles/Default";
return ApiClient.getJSON(ApiClient.getUrl(url))
}
function renderProfile(page, profile, users) {
$("#txtName", page).val(profile.Name), $(".chkMediaType", page).each(function() {
this.checked = -1 != (profile.SupportedMediaTypes || "").split(",").indexOf(this.getAttribute("data-value"))
}), $("#chkEnableAlbumArtInDidl", page).checked(profile.EnableAlbumArtInDidl), $("#chkEnableSingleImageLimit", page).checked(profile.EnableSingleAlbumArtLimit), renderXmlDocumentAttributes(page, profile.XmlRootAttributes || []);
var idInfo = profile.Identification || {};
renderIdentificationHeaders(page, idInfo.Headers || []), renderSubtitleProfiles(page, profile.SubtitleProfiles || []), $("#txtInfoFriendlyName", page).val(profile.FriendlyName || ""), $("#txtInfoModelName", page).val(profile.ModelName || ""), $("#txtInfoModelNumber", page).val(profile.ModelNumber || ""), $("#txtInfoModelDescription", page).val(profile.ModelDescription || ""), $("#txtInfoModelUrl", page).val(profile.ModelUrl || ""), $("#txtInfoManufacturer", page).val(profile.Manufacturer || ""), $("#txtInfoManufacturerUrl", page).val(profile.ManufacturerUrl || ""), $("#txtInfoSerialNumber", page).val(profile.SerialNumber || ""), $("#txtIdFriendlyName", page).val(idInfo.FriendlyName || ""), $("#txtIdModelName", page).val(idInfo.ModelName || ""), $("#txtIdModelNumber", page).val(idInfo.ModelNumber || ""), $("#txtIdModelDescription", page).val(idInfo.ModelDescription || ""), $("#txtIdModelUrl", page).val(idInfo.ModelUrl || ""), $("#txtIdManufacturer", page).val(idInfo.Manufacturer || ""), $("#txtIdManufacturerUrl", page).val(idInfo.ManufacturerUrl || ""), $("#txtIdSerialNumber", page).val(idInfo.SerialNumber || ""), $("#txtIdDeviceDescription", page).val(idInfo.DeviceDescription || ""), $("#txtAlbumArtPn", page).val(profile.AlbumArtPn || ""), $("#txtAlbumArtMaxWidth", page).val(profile.MaxAlbumArtWidth || ""), $("#txtAlbumArtMaxHeight", page).val(profile.MaxAlbumArtHeight || ""), $("#txtIconMaxWidth", page).val(profile.MaxIconWidth || ""), $("#txtIconMaxHeight", page).val(profile.MaxIconHeight || ""), $("#chkIgnoreTranscodeByteRangeRequests", page).checked(profile.IgnoreTranscodeByteRangeRequests), $("#txtMaxAllowedBitrate", page).val(profile.MaxStreamingBitrate || ""), $("#txtMusicStreamingTranscodingBitrate", page).val(profile.MusicStreamingTranscodingBitrate || ""), $("#chkRequiresPlainFolders", page).checked(profile.RequiresPlainFolders), $("#chkRequiresPlainVideoItems", page).checked(profile.RequiresPlainVideoItems), $("#txtProtocolInfo", page).val(profile.ProtocolInfo || ""), $("#txtXDlnaCap", page).val(profile.XDlnaCap || ""), $("#txtXDlnaDoc", page).val(profile.XDlnaDoc || ""), $("#txtSonyAggregationFlags", page).val(profile.SonyAggregationFlags || ""), profile.DirectPlayProfiles = profile.DirectPlayProfiles || [], profile.TranscodingProfiles = profile.TranscodingProfiles || [], profile.ContainerProfiles = profile.ContainerProfiles || [], profile.CodecProfiles = profile.CodecProfiles || [], profile.ResponseProfiles = profile.ResponseProfiles || [];
var usersHtml = "<option></option>" + users.map(function(u) {
return '<option value="' + u.Id + '">' + u.Name + "</option>"
}).join("");
$("#selectUser", page).html(usersHtml).val(profile.UserId || ""), renderSubProfiles(page, profile)
}
function renderIdentificationHeaders(page, headers) {
var index = 0,
html = '<div class="paperList">' + headers.map(function(h) {
var li = '<div class="listItem">';
return li += '<i class="md-icon listItemIcon">info</i>', li += '<div class="listItemBody">', li += '<h3 class="listItemBodyText">' + h.Name + ": " + (h.Value || "") + "</h3>", li += '<div class="listItemBodyText secondary">' + (h.Match || "") + "</div>", li += "</div>", li += '<button type="button" is="paper-icon-button-light" class="btnDeleteIdentificationHeader listItemButton" data-index="' + index + '"><i class="md-icon">delete</i></button>', li += "</div>", index++, li
}).join("") + "</div>",
elem = $(".httpHeaderIdentificationList", page).html(html).trigger("create");
$(".btnDeleteIdentificationHeader", elem).on("click", function() {
var itemIndex = parseInt(this.getAttribute("data-index"));
currentProfile.Identification.Headers.splice(itemIndex, 1), renderIdentificationHeaders(page, currentProfile.Identification.Headers)
})
}
function openPopup(elem) {
elem.classList.remove("hide")
}
function closePopup(elem) {
elem.classList.add("hide")
}
function editIdentificationHeader(page, header) {
isSubProfileNew = null == header, header = header || {}, currentSubProfile = header;
var popup = $("#identificationHeaderPopup", page);
$("#txtIdentificationHeaderName", popup).val(header.Name || ""), $("#txtIdentificationHeaderValue", popup).val(header.Value || ""), $("#selectMatchType", popup).val(header.Match || "Equals"), openPopup(popup[0])
}
function saveIdentificationHeader(page) {
currentSubProfile.Name = $("#txtIdentificationHeaderName", page).val(), currentSubProfile.Value = $("#txtIdentificationHeaderValue", page).val(), currentSubProfile.Match = $("#selectMatchType", page).val(), isSubProfileNew && (currentProfile.Identification = currentProfile.Identification || {}, currentProfile.Identification.Headers = currentProfile.Identification.Headers || [], currentProfile.Identification.Headers.push(currentSubProfile)), renderIdentificationHeaders(page, currentProfile.Identification.Headers), currentSubProfile = null, closePopup($("#identificationHeaderPopup", page)[0])
}
function renderXmlDocumentAttributes(page, attribute) {
var html = '<div class="paperList">' + attribute.map(function(h) {
var li = '<div class="listItem">';
return li += '<i class="md-icon listItemIcon">info</i>', li += '<div class="listItemBody">', li += '<h3 class="listItemBodyText">' + h.Name + " = " + (h.Value || "") + "</h3>", li += "</div>", li += '<button type="button" is="paper-icon-button-light" class="btnDeleteXmlAttribute listItemButton" data-index="0"><i class="md-icon">delete</i></button>', li += "</div>"
}).join("") + "</div>",
elem = $(".xmlDocumentAttributeList", page).html(html).trigger("create");
$(".btnDeleteXmlAttribute", elem).on("click", function() {
var itemIndex = parseInt(this.getAttribute("data-index"));
currentProfile.XmlRootAttributes.splice(itemIndex, 1), renderXmlDocumentAttributes(page, currentProfile.XmlRootAttributes)
})
}
function editXmlDocumentAttribute(page, attribute) {
isSubProfileNew = null == attribute, attribute = attribute || {}, currentSubProfile = attribute;
var popup = $("#xmlAttributePopup", page);
$("#txtXmlAttributeName", popup).val(attribute.Name || ""), $("#txtXmlAttributeValue", popup).val(attribute.Value || ""), openPopup(popup[0])
}
function saveXmlDocumentAttribute(page) {
currentSubProfile.Name = $("#txtXmlAttributeName", page).val(), currentSubProfile.Value = $("#txtXmlAttributeValue", page).val(), isSubProfileNew && currentProfile.XmlRootAttributes.push(currentSubProfile), renderXmlDocumentAttributes(page, currentProfile.XmlRootAttributes), currentSubProfile = null, closePopup($("#xmlAttributePopup", page)[0])
}
function renderSubtitleProfiles(page, profiles) {
var index = 0,
html = '<div class="paperList">' + profiles.map(function(h) {
var li = '<div class="listItem lnkEditSubProfile" data-index="' + index + '">';
return li += '<i class="md-icon listItemIcon">info</i>', li += '<div class="listItemBody">', li += '<h3 class="listItemBodyText">' + (h.Format || "") + "</h3>", li += "</div>", li += '<button type="button" is="paper-icon-button-light" class="btnDeleteProfile listItemButton" data-index="' + index + '"><i class="md-icon">delete</i></button>', li += "</div>", index++, li
}).join("") + "</div>",
elem = $(".subtitleProfileList", page).html(html).trigger("create");
$(".btnDeleteProfile", elem).on("click", function() {
var itemIndex = parseInt(this.getAttribute("data-index"));
currentProfile.SubtitleProfiles.splice(itemIndex, 1), renderSubtitleProfiles(page, currentProfile.SubtitleProfiles)
}), $(".lnkEditSubProfile", elem).on("click", function() {
var itemIndex = parseInt(this.getAttribute("data-index"));
editSubtitleProfile(page, currentProfile.SubtitleProfiles[itemIndex])
})
}
function editSubtitleProfile(page, profile) {
isSubProfileNew = null == profile, profile = profile || {}, currentSubProfile = profile;
var popup = $("#subtitleProfilePopup", page);
$("#txtSubtitleProfileFormat", popup).val(profile.Format || ""), $("#selectSubtitleProfileMethod", popup).val(profile.Method || ""), $("#selectSubtitleProfileDidlMode", popup).val(profile.DidlMode || ""), openPopup(popup[0])
}
function saveSubtitleProfile(page) {
currentSubProfile.Format = $("#txtSubtitleProfileFormat", page).val(), currentSubProfile.Method = $("#selectSubtitleProfileMethod", page).val(), currentSubProfile.DidlMode = $("#selectSubtitleProfileDidlMode", page).val(), isSubProfileNew && currentProfile.SubtitleProfiles.push(currentSubProfile), renderSubtitleProfiles(page, currentProfile.SubtitleProfiles), currentSubProfile = null, closePopup($("#subtitleProfilePopup", page)[0])
}
function renderSubProfiles(page, profile) {
renderDirectPlayProfiles(page, profile.DirectPlayProfiles), renderTranscodingProfiles(page, profile.TranscodingProfiles), renderContainerProfiles(page, profile.ContainerProfiles), renderCodecProfiles(page, profile.CodecProfiles), renderResponseProfiles(page, profile.ResponseProfiles)
}
function saveDirectPlayProfile(page) {
currentSubProfile.Type = $("#selectDirectPlayProfileType", page).val(), currentSubProfile.Container = $("#txtDirectPlayContainer", page).val(), currentSubProfile.AudioCodec = $("#txtDirectPlayAudioCodec", page).val(), currentSubProfile.VideoCodec = $("#txtDirectPlayVideoCodec", page).val(), isSubProfileNew && currentProfile.DirectPlayProfiles.push(currentSubProfile), renderSubProfiles(page, currentProfile), currentSubProfile = null, closePopup($("#popupEditDirectPlayProfile", page)[0])
}
function renderDirectPlayProfiles(page, profiles) {
var html = "";
html += '<ul data-role="listview" data-inset="true" data-split-icon="delete">';
for (var currentType, i = 0, length = profiles.length; i < length; i++) {
var profile = profiles[i];
profile.Type !== currentType && (html += '<li data-role="list-divider">' + profile.Type + "</li>", currentType = profile.Type), html += "<li>", html += '<a data-profileindex="' + i + '" class="lnkEditSubProfile" is="emby-linkbutton" href="#">', html += "<p>" + Globalize.translate("ValueContainer").replace("{0}", profile.Container || allText) + "</p>", "Video" == profile.Type ? (html += "<p>" + Globalize.translate("ValueVideoCodec").replace("{0}", profile.VideoCodec || allText) + "</p>", html += "<p>" + Globalize.translate("ValueAudioCodec").replace("{0}", profile.AudioCodec || allText) + "</p>") : "Audio" == profile.Type && (html += "<p>" + Globalize.translate("ValueCodec").replace("{0}", profile.AudioCodec || allText) + "</p>"), html += "</a>", html += '<a is="emby-linkbutton" href="#" data-icon="delete" class="btnDeleteProfile" data-profileindex="' + i + '">Delete</a>', html += "</li>"
}
html += "</ul>";
var elem = $(".directPlayProfiles", page).html(html).trigger("create");
$(".btnDeleteProfile", elem).on("click", function() {
var index = this.getAttribute("data-profileindex");
deleteDirectPlayProfile(page, index)
}), $(".lnkEditSubProfile", elem).on("click", function() {
var index = parseInt(this.getAttribute("data-profileindex"));
editDirectPlayProfile(page, currentProfile.DirectPlayProfiles[index])
})
}
function deleteDirectPlayProfile(page, index) {
currentProfile.DirectPlayProfiles.splice(index, 1), renderDirectPlayProfiles(page, currentProfile.DirectPlayProfiles)
}
function editDirectPlayProfile(page, directPlayProfile) {
isSubProfileNew = null == directPlayProfile, directPlayProfile = directPlayProfile || {}, currentSubProfile = directPlayProfile;
var popup = $("#popupEditDirectPlayProfile", page);
$("#selectDirectPlayProfileType", popup).val(directPlayProfile.Type || "Video").trigger("change"), $("#txtDirectPlayContainer", popup).val(directPlayProfile.Container || ""), $("#txtDirectPlayAudioCodec", popup).val(directPlayProfile.AudioCodec || ""), $("#txtDirectPlayVideoCodec", popup).val(directPlayProfile.VideoCodec || ""), openPopup(popup[0])
}
function renderTranscodingProfiles(page, profiles) {
var html = "";
html += '<ul data-role="listview" data-inset="true" data-split-icon="delete">';
for (var currentType, i = 0, length = profiles.length; i < length; i++) {
var profile = profiles[i];
profile.Type !== currentType && (html += '<li data-role="list-divider">' + profile.Type + "</li>", currentType = profile.Type), html += "<li>", html += '<a data-profileindex="' + i + '" class="lnkEditSubProfile" is="emby-linkbutton" href="#">', html += "<p>Protocol: " + (profile.Protocol || "Http") + "</p>", html += "<p>" + Globalize.translate("ValueContainer").replace("{0}", profile.Container || allText) + "</p>", "Video" == profile.Type ? (html += "<p>" + Globalize.translate("ValueVideoCodec").replace("{0}", profile.VideoCodec || allText) + "</p>", html += "<p>" + Globalize.translate("ValueAudioCodec").replace("{0}", profile.AudioCodec || allText) + "</p>") : "Audio" == profile.Type && (html += "<p>" + Globalize.translate("ValueCodec").replace("{0}", profile.AudioCodec || allText) + "</p>"), html += "</a>", html += '<a is="emby-linkbutton" href="#" data-icon="delete" class="btnDeleteProfile" data-profileindex="' + i + '">Delete</a>', html += "</li>"
}
html += "</ul>";
var elem = $(".transcodingProfiles", page).html(html).trigger("create");
$(".btnDeleteProfile", elem).on("click", function() {
var index = this.getAttribute("data-profileindex");
deleteTranscodingProfile(page, index)
}), $(".lnkEditSubProfile", elem).on("click", function() {
var index = parseInt(this.getAttribute("data-profileindex"));
editTranscodingProfile(page, currentProfile.TranscodingProfiles[index])
})
}
function editTranscodingProfile(page, transcodingProfile) {
isSubProfileNew = null == transcodingProfile, transcodingProfile = transcodingProfile || {}, currentSubProfile = transcodingProfile;
var popup = $("#transcodingProfilePopup", page);
$("#selectTranscodingProfileType", popup).val(transcodingProfile.Type || "Video").trigger("change"), $("#txtTranscodingContainer", popup).val(transcodingProfile.Container || ""), $("#txtTranscodingAudioCodec", popup).val(transcodingProfile.AudioCodec || ""), $("#txtTranscodingVideoCodec", popup).val(transcodingProfile.VideoCodec || ""), $("#selectTranscodingProtocol", popup).val(transcodingProfile.Protocol || "Http"), $("#chkEnableMpegtsM2TsMode", popup).checked(transcodingProfile.EnableMpegtsM2TsMode || !1), $("#chkEstimateContentLength", popup).checked(transcodingProfile.EstimateContentLength || !1), $("#chkReportByteRangeRequests", popup).checked("Bytes" == transcodingProfile.TranscodeSeekInfo), $(".radioTabButton:first", popup).trigger("click"), openPopup(popup[0])
}
function deleteTranscodingProfile(page, index) {
currentProfile.TranscodingProfiles.splice(index, 1), renderTranscodingProfiles(page, currentProfile.TranscodingProfiles)
}
function saveTranscodingProfile(page) {
currentSubProfile.Type = $("#selectTranscodingProfileType", page).val(), currentSubProfile.Container = $("#txtTranscodingContainer", page).val(), currentSubProfile.AudioCodec = $("#txtTranscodingAudioCodec", page).val(), currentSubProfile.VideoCodec = $("#txtTranscodingVideoCodec", page).val(), currentSubProfile.Protocol = $("#selectTranscodingProtocol", page).val(), currentSubProfile.Context = "Streaming", currentSubProfile.EnableMpegtsM2TsMode = $("#chkEnableMpegtsM2TsMode", page).checked(), currentSubProfile.EstimateContentLength = $("#chkEstimateContentLength", page).checked(), currentSubProfile.TranscodeSeekInfo = $("#chkReportByteRangeRequests", page).checked() ? "Bytes" : "Auto", isSubProfileNew && currentProfile.TranscodingProfiles.push(currentSubProfile), renderSubProfiles(page, currentProfile), currentSubProfile = null, closePopup($("#transcodingProfilePopup", page)[0])
}
function renderContainerProfiles(page, profiles) {
var html = "";
html += '<ul data-role="listview" data-inset="true" data-split-icon="delete">';
for (var currentType, i = 0, length = profiles.length; i < length; i++) {
var profile = profiles[i];
profile.Type !== currentType && (html += '<li data-role="list-divider">' + profile.Type + "</li>", currentType = profile.Type), html += "<li>", html += '<a data-profileindex="' + i + '" class="lnkEditSubProfile" is="emby-linkbutton" href="#">', html += "<p>" + Globalize.translate("ValueContainer").replace("{0}", profile.Container || allText) + "</p>", profile.Conditions && profile.Conditions.length && (html += "<p>", html += Globalize.translate("ValueConditions").replace("{0}", profile.Conditions.map(function(c) {
return c.Property
}).join(", ")), html += "</p>"), html += "</a>", html += '<a is="emby-linkbutton" href="#" data-icon="delete" class="btnDeleteProfile" data-profileindex="' + i + '">Delete</a>', html += "</li>"
}
html += "</ul>";
var elem = $(".containerProfiles", page).html(html).trigger("create");
$(".btnDeleteProfile", elem).on("click", function() {
var index = this.getAttribute("data-profileindex");
deleteContainerProfile(page, index)
}), $(".lnkEditSubProfile", elem).on("click", function() {
var index = parseInt(this.getAttribute("data-profileindex"));
editContainerProfile(page, currentProfile.ContainerProfiles[index])
})
}
function deleteContainerProfile(page, index) {
currentProfile.ContainerProfiles.splice(index, 1), renderContainerProfiles(page, currentProfile.ContainerProfiles)
}
function editContainerProfile(page, containerProfile) {
isSubProfileNew = null == containerProfile, containerProfile = containerProfile || {}, currentSubProfile = containerProfile;
var popup = $("#containerProfilePopup", page);
$("#selectContainerProfileType", popup).val(containerProfile.Type || "Video").trigger("change"), $("#txtContainerProfileContainer", popup).val(containerProfile.Container || ""), $(".radioTabButton:first", popup).trigger("click"), openPopup(popup[0])
}
function saveContainerProfile(page) {
currentSubProfile.Type = $("#selectContainerProfileType", page).val(), currentSubProfile.Container = $("#txtContainerProfileContainer", page).val(), isSubProfileNew && currentProfile.ContainerProfiles.push(currentSubProfile), renderSubProfiles(page, currentProfile), currentSubProfile = null, closePopup($("#containerProfilePopup", page)[0])
}
function renderCodecProfiles(page, profiles) {
var html = "";
html += '<ul data-role="listview" data-inset="true" data-split-icon="delete">';
for (var currentType, i = 0, length = profiles.length; i < length; i++) {
var profile = profiles[i],
type = profile.Type.replace("VideoAudio", "Video Audio");
type !== currentType && (html += '<li data-role="list-divider">' + type + "</li>", currentType = type), html += "<li>", html += '<a data-profileindex="' + i + '" class="lnkEditSubProfile" is="emby-linkbutton" href="#">', html += "<p>" + Globalize.translate("ValueCodec").replace("{0}", profile.Codec || allText) + "</p>", profile.Conditions && profile.Conditions.length && (html += "<p>", html += Globalize.translate("ValueConditions").replace("{0}", profile.Conditions.map(function(c) {
return c.Property
}).join(", ")), html += "</p>"), html += "</a>", html += '<a is="emby-linkbutton" href="#" data-icon="delete" class="btnDeleteProfile" data-profileindex="' + i + '">Delete</a>', html += "</li>"
}
html += "</ul>";
var elem = $(".codecProfiles", page).html(html).trigger("create");
$(".btnDeleteProfile", elem).on("click", function() {
var index = this.getAttribute("data-profileindex");
deleteCodecProfile(page, index)
}), $(".lnkEditSubProfile", elem).on("click", function() {
var index = parseInt(this.getAttribute("data-profileindex"));
editCodecProfile(page, currentProfile.CodecProfiles[index])
})
}
function deleteCodecProfile(page, index) {
currentProfile.CodecProfiles.splice(index, 1), renderCodecProfiles(page, currentProfile.CodecProfiles)
}
function editCodecProfile(page, codecProfile) {
isSubProfileNew = null == codecProfile, codecProfile = codecProfile || {}, currentSubProfile = codecProfile;
var popup = $("#codecProfilePopup", page);
$("#selectCodecProfileType", popup).val(codecProfile.Type || "Video").trigger("change"), $("#txtCodecProfileCodec", popup).val(codecProfile.Codec || ""), $(".radioTabButton:first", popup).trigger("click"), openPopup(popup[0])
}
function saveCodecProfile(page) {
currentSubProfile.Type = $("#selectCodecProfileType", page).val(), currentSubProfile.Codec = $("#txtCodecProfileCodec", page).val(), isSubProfileNew && currentProfile.CodecProfiles.push(currentSubProfile), renderSubProfiles(page, currentProfile), currentSubProfile = null, closePopup($("#codecProfilePopup", page)[0])
}
function renderResponseProfiles(page, profiles) {
var html = "";
html += '<ul data-role="listview" data-inset="true" data-split-icon="delete">';
for (var currentType, i = 0, length = profiles.length; i < length; i++) {
var profile = profiles[i];
profile.Type !== currentType && (html += '<li data-role="list-divider">' + profile.Type + "</li>", currentType = profile.Type), html += "<li>", html += '<a data-profileindex="' + i + '" class="lnkEditSubProfile" is="emby-linkbutton" href="#">', html += "<p>" + Globalize.translate("ValueContainer").replace("{0}", profile.Container || allText) + "</p>", "Video" == profile.Type ? (html += "<p>" + Globalize.translate("ValueVideoCodec").replace("{0}", profile.VideoCodec || allText) + "</p>", html += "<p>" + Globalize.translate("ValueAudioCodec").replace("{0}", profile.AudioCodec || allText) + "</p>") : "Audio" == profile.Type && (html += "<p>" + Globalize.translate("ValueCodec").replace("{0}", profile.AudioCodec || allText) + "</p>"), profile.Conditions && profile.Conditions.length && (html += "<p>", html += Globalize.translate("ValueConditions").replace("{0}", profile.Conditions.map(function(c) {
return c.Property
}).join(", ")), html += "</p>"), html += "</a>", html += '<a is="emby-linkbutton" href="#" data-icon="delete" class="btnDeleteProfile" data-profileindex="' + i + '">Delete</a>', html += "</li>"
}
html += "</ul>";
var elem = $(".mediaProfiles", page).html(html).trigger("create");
$(".btnDeleteProfile", elem).on("click", function() {
var index = this.getAttribute("data-profileindex");
deleteResponseProfile(page, index)
}), $(".lnkEditSubProfile", elem).on("click", function() {
var index = parseInt(this.getAttribute("data-profileindex"));
editResponseProfile(page, currentProfile.ResponseProfiles[index])
})
}
function deleteResponseProfile(page, index) {
currentProfile.ResponseProfiles.splice(index, 1), renderResponseProfiles(page, currentProfile.ResponseProfiles)
}
function editResponseProfile(page, responseProfile) {
isSubProfileNew = null == responseProfile, responseProfile = responseProfile || {}, currentSubProfile = responseProfile;
var popup = $("#responseProfilePopup", page);
$("#selectResponseProfileType", popup).val(responseProfile.Type || "Video").trigger("change"), $("#txtResponseProfileContainer", popup).val(responseProfile.Container || ""), $("#txtResponseProfileAudioCodec", popup).val(responseProfile.AudioCodec || ""), $("#txtResponseProfileVideoCodec", popup).val(responseProfile.VideoCodec || ""), $(".radioTabButton:first", popup).trigger("click"), openPopup(popup[0])
}
function saveResponseProfile(page) {
currentSubProfile.Type = $("#selectResponseProfileType", page).val(), currentSubProfile.Container = $("#txtResponseProfileContainer", page).val(), currentSubProfile.AudioCodec = $("#txtResponseProfileAudioCodec", page).val(), currentSubProfile.VideoCodec = $("#txtResponseProfileVideoCodec", page).val(), isSubProfileNew && currentProfile.ResponseProfiles.push(currentSubProfile), renderSubProfiles(page, currentProfile), currentSubProfile = null, closePopup($("#responseProfilePopup", page)[0])
}
function saveProfile(page, profile) {
updateProfile(page, profile);
var id = getParameterByName("id");
id ? ApiClient.ajax({
type: "POST",
url: ApiClient.getUrl("Dlna/Profiles/" + id),
data: JSON.stringify(profile),
contentType: "application/json"
}).then(function() {
require(["toast"], function(toast) {
toast("Settings saved.")
})
}, Dashboard.processErrorResponse) : ApiClient.ajax({
type: "POST",
url: ApiClient.getUrl("Dlna/Profiles"),
data: JSON.stringify(profile),
contentType: "application/json"
}).then(function() {
Dashboard.navigate("dlnaprofiles.html")
}, Dashboard.processErrorResponse), loading.hide()
}
function updateProfile(page, profile) {
profile.Name = $("#txtName", page).val(), profile.EnableAlbumArtInDidl = $("#chkEnableAlbumArtInDidl", page).checked(), profile.EnableSingleAlbumArtLimit = $("#chkEnableSingleImageLimit", page).checked(), profile.SupportedMediaTypes = $(".chkMediaType:checked", page).get().map(function(c) {
return c.getAttribute("data-value")
}).join(","), profile.Identification = profile.Identification || {}, profile.FriendlyName = $("#txtInfoFriendlyName", page).val(), profile.ModelName = $("#txtInfoModelName", page).val(), profile.ModelNumber = $("#txtInfoModelNumber", page).val(), profile.ModelDescription = $("#txtInfoModelDescription", page).val(), profile.ModelUrl = $("#txtInfoModelUrl", page).val(), profile.Manufacturer = $("#txtInfoManufacturer", page).val(), profile.ManufacturerUrl = $("#txtInfoManufacturerUrl", page).val(), profile.SerialNumber = $("#txtInfoSerialNumber", page).val(), profile.Identification.FriendlyName = $("#txtIdFriendlyName", page).val(), profile.Identification.ModelName = $("#txtIdModelName", page).val(), profile.Identification.ModelNumber = $("#txtIdModelNumber", page).val(), profile.Identification.ModelDescription = $("#txtIdModelDescription", page).val(), profile.Identification.ModelUrl = $("#txtIdModelUrl", page).val(), profile.Identification.Manufacturer = $("#txtIdManufacturer", page).val(), profile.Identification.ManufacturerUrl = $("#txtIdManufacturerUrl", page).val(), profile.Identification.SerialNumber = $("#txtIdSerialNumber", page).val(), profile.Identification.DeviceDescription = $("#txtIdDeviceDescription", page).val(), profile.AlbumArtPn = $("#txtAlbumArtPn", page).val(), profile.MaxAlbumArtWidth = $("#txtAlbumArtMaxWidth", page).val(), profile.MaxAlbumArtHeight = $("#txtAlbumArtMaxHeight", page).val(), profile.MaxIconWidth = $("#txtIconMaxWidth", page).val(), profile.MaxIconHeight = $("#txtIconMaxHeight", page).val(), profile.RequiresPlainFolders = $("#chkRequiresPlainFolders", page).checked(), profile.RequiresPlainVideoItems = $("#chkRequiresPlainVideoItems", page).checked(), profile.IgnoreTranscodeByteRangeRequests = $("#chkIgnoreTranscodeByteRangeRequests", page).checked(), profile.MaxStreamingBitrate = $("#txtMaxAllowedBitrate", page).val(), profile.MusicStreamingTranscodingBitrate = $("#txtMusicStreamingTranscodingBitrate", page).val(), profile.ProtocolInfo = $("#txtProtocolInfo", page).val(), profile.XDlnaCap = $("#txtXDlnaCap", page).val(), profile.XDlnaDoc = $("#txtXDlnaDoc", page).val(), profile.SonyAggregationFlags = $("#txtSonyAggregationFlags", page).val(), profile.UserId = $("#selectUser", page).val()
}
var currentProfile, currentSubProfile, isSubProfileNew, allText = Globalize.translate("LabelAll");
$(document).on("pageinit", "#dlnaProfilePage", function() {
var page = this;
$(".radioTabButton", page).on("click", function() {
$(this).siblings().removeClass("ui-btn-active"), $(this).addClass("ui-btn-active");
var value = "A" == this.tagName ? this.getAttribute("data-value") : this.value,
elem = $("." + value, page);
elem.siblings(".tabContent").hide(), elem.show()
}), $("#selectDirectPlayProfileType", page).on("change", function() {
"Video" == this.value ? $("#fldDirectPlayVideoCodec", page).show() : $("#fldDirectPlayVideoCodec", page).hide(), "Photo" == this.value ? $("#fldDirectPlayAudioCodec", page).hide() : $("#fldDirectPlayAudioCodec", page).show()
}), $("#selectTranscodingProfileType", page).on("change", function() {
"Video" == this.value ? ($("#fldTranscodingVideoCodec", page).show(), $("#fldTranscodingProtocol", page).show(), $("#fldEnableMpegtsM2TsMode", page).show()) : ($("#fldTranscodingVideoCodec", page).hide(), $("#fldTranscodingProtocol", page).hide(), $("#fldEnableMpegtsM2TsMode", page).hide()), "Photo" == this.value ? ($("#fldTranscodingAudioCodec", page).hide(), $("#fldEstimateContentLength", page).hide(), $("#fldReportByteRangeRequests", page).hide()) : ($("#fldTranscodingAudioCodec", page).show(), $("#fldEstimateContentLength", page).show(), $("#fldReportByteRangeRequests", page).show())
}), $("#selectResponseProfileType", page).on("change", function() {
"Video" == this.value ? $("#fldResponseProfileVideoCodec", page).show() : $("#fldResponseProfileVideoCodec", page).hide(), "Photo" == this.value ? $("#fldResponseProfileAudioCodec", page).hide() : $("#fldResponseProfileAudioCodec", page).show()
}), $(".btnAddDirectPlayProfile", page).on("click", function() {
editDirectPlayProfile(page)
}), $(".btnAddTranscodingProfile", page).on("click", function() {
editTranscodingProfile(page)
}), $(".btnAddContainerProfile", page).on("click", function() {
editContainerProfile(page)
}), $(".btnAddCodecProfile", page).on("click", function() {
editCodecProfile(page)
}), $(".btnAddResponseProfile", page).on("click", function() {
editResponseProfile(page)
}), $(".btnAddIdentificationHttpHeader", page).on("click", function() {
editIdentificationHeader(page)
}), $(".btnAddXmlDocumentAttribute", page).on("click", function() {
editXmlDocumentAttribute(page)
}), $(".btnAddSubtitleProfile", page).on("click", function() {
editSubtitleProfile(page)
}), $(".dlnaProfileForm").off("submit", DlnaProfilePage.onSubmit).on("submit", DlnaProfilePage.onSubmit), $(".editDirectPlayProfileForm").off("submit", DlnaProfilePage.onDirectPlayFormSubmit).on("submit", DlnaProfilePage.onDirectPlayFormSubmit), $(".transcodingProfileForm").off("submit", DlnaProfilePage.onTranscodingProfileFormSubmit).on("submit", DlnaProfilePage.onTranscodingProfileFormSubmit), $(".containerProfileForm").off("submit", DlnaProfilePage.onContainerProfileFormSubmit).on("submit", DlnaProfilePage.onContainerProfileFormSubmit), $(".codecProfileForm").off("submit", DlnaProfilePage.onCodecProfileFormSubmit).on("submit", DlnaProfilePage.onCodecProfileFormSubmit), $(".editResponseProfileForm").off("submit", DlnaProfilePage.onResponseProfileFormSubmit).on("submit", DlnaProfilePage.onResponseProfileFormSubmit), $(".identificationHeaderForm").off("submit", DlnaProfilePage.onIdentificationHeaderFormSubmit).on("submit", DlnaProfilePage.onIdentificationHeaderFormSubmit), $(".xmlAttributeForm").off("submit", DlnaProfilePage.onXmlAttributeFormSubmit).on("submit", DlnaProfilePage.onXmlAttributeFormSubmit), $(".subtitleProfileForm").off("submit", DlnaProfilePage.onSubtitleProfileFormSubmit).on("submit", DlnaProfilePage.onSubtitleProfileFormSubmit)
}).on("pageshow", "#dlnaProfilePage", function() {
var page = this;
$("#radioInfo", page).trigger("click"), loadProfile(page)
}), window.DlnaProfilePage = {
onSubmit: function() {
return loading.show(), saveProfile($(this).parents(".page"), currentProfile), !1
},
onDirectPlayFormSubmit: function() {
return saveDirectPlayProfile($(this).parents(".page")), !1
},
onTranscodingProfileFormSubmit: function() {
return saveTranscodingProfile($(this).parents(".page")), !1
},
onContainerProfileFormSubmit: function() {
return saveContainerProfile($(this).parents(".page")), !1
},
onCodecProfileFormSubmit: function() {
return saveCodecProfile($(this).parents(".page")), !1
},
onResponseProfileFormSubmit: function() {
return saveResponseProfile($(this).parents(".page")), !1
},
onIdentificationHeaderFormSubmit: function() {
return saveIdentificationHeader($(this).parents(".page")), !1
},
onXmlAttributeFormSubmit: function() {
return saveXmlDocumentAttribute($(this).parents(".page")), !1
},
onSubtitleProfileFormSubmit: function() {
return saveSubtitleProfile($(this).parents(".page")), !1
}
}
});

View File

@ -15,7 +15,6 @@ define(["layoutManager", "loading", "cardBuilder", "apphost", "imageLoader", "sc
coverImage: !0,
cardLayout: !1,
centerText: !0,
vibrant: !1,
allowBottomPadding: !scrollX,
preferThumb: "auto",
overlayText: !1

View File

@ -19,7 +19,6 @@ define(["layoutManager", "cardBuilder", "apphost", "imageLoader", "loading", "sc
coverImage: !0,
cardLayout: cardLayout,
centerText: !cardLayout,
vibrant: cardLayout && supportsImageAnalysis,
allowBottomPadding: !enableScrollX(),
preferThumb: "auto"
}, cardOptions || {})), imageLoader.lazyChildren(recordingItems)

View File

@ -80,8 +80,7 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB
context: "movies",
lazy: !0,
cardLayout: !0,
showTitle: !0,
vibrant: !0
showTitle: !0
}) : "Banner" == viewStyle ? cardBuilder.getCardsHtml({
items: result.Items,
shape: "banner",
@ -98,8 +97,7 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB
context: "movies",
showTitle: !0,
centerText: !1,
cardLayout: !0,
vibrant: !0
cardLayout: !0
}) : cardBuilder.getCardsHtml({
items: result.Items,
shape: "auto",

View File

@ -80,7 +80,6 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader
scalable: !0,
centerText: !1,
cardLayout: !0,
vibrant: supportsImageAnalysis,
showYear: !0
}) : "PosterCard" == viewStyle ? cardBuilder.buildCards(result.Items, {
itemsContainer: elem,
@ -89,7 +88,6 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader
scalable: !0,
centerText: !1,
cardLayout: !0,
vibrant: supportsImageAnalysis,
showYear: !0
}) : "Poster" == viewStyle && cardBuilder.buildCards(result.Items, {
itemsContainer: elem,

View File

@ -67,8 +67,7 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", "
context: "movies",
cardLayout: !0,
showTitle: !0,
showYear: !0,
vibrant: !0
showYear: !0
}) : "Banner" == viewStyle ? cardBuilder.getCardsHtml({
items: result.Items,
shape: "banner",
@ -84,8 +83,7 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", "
context: "movies",
showTitle: !0,
showYear: !0,
cardLayout: !0,
vibrant: !0
cardLayout: !0
}) : cardBuilder.getCardsHtml({
items: result.Items,
shape: "portrait",

View File

@ -49,15 +49,13 @@ define(["libraryBrowser", "cardBuilder", "apphost", "imageLoader", "loading"], f
preferThumb: !0,
context: "music",
cardLayout: !0,
showTitle: !0,
vibrant: !0
showTitle: !0
}) : "PosterCard" == viewStyle ? html = cardBuilder.getCardsHtml({
items: result.Items,
shape: "auto",
context: "music",
cardLayout: !0,
showTitle: !0,
vibrant: !0
showTitle: !0
}) : "Poster" == viewStyle && (html = cardBuilder.getCardsHtml({
items: result.Items,
shape: "auto",

View File

@ -43,8 +43,7 @@ define(["libraryBrowser", "cardBuilder", "apphost", "imageLoader", "loading"], f
centerText: !0,
overlayPlayButton: !0,
allowBottomPadding: !0,
cardLayout: !1,
vibrant: !1
cardLayout: !1
});
var elem = context.querySelector("#items");
elem.innerHTML = html, imageLoader.lazyChildren(elem), libraryBrowser.saveQueryValues(getSavedQueryKey(), query), loading.hide()

View File

@ -69,8 +69,7 @@ define(["loading", "listView", "cardBuilder", "libraryMenu", "libraryBrowser", "
shape: "square",
coverImage: !0,
showTitle: !0,
cardLayout: !0,
vibrant: !0
cardLayout: !0
}) : "Thumb" == viewStyle ? cardBuilder.getCardsHtml({
items: result.Items,
shape: "backdrop",
@ -83,8 +82,7 @@ define(["loading", "listView", "cardBuilder", "libraryMenu", "libraryBrowser", "
shape: "backdrop",
showTitle: !0,
preferThumb: !0,
cardLayout: !0,
vibrant: !0
cardLayout: !0
}) : cardBuilder.getCardsHtml({
items: result.Items,
shape: "square",

View File

@ -1,4 +1,5 @@
define([
"jQuery",
"emby-button",
"emby-input",
"scripts/livetvcomponents",
@ -10,7 +11,8 @@ define([
"emby-checkbox",
"emby-slider",
"listViewStyle",
"dashboardcss"], function () {
"dashboardcss",
"detailtablecss"], function () {
function defineRoute(newRoute) {
var path = newRoute.path;
@ -76,17 +78,20 @@ define([
defineRoute({
path: "/dlnaprofile.html",
autoFocus: false,
roles: "admin"
roles: "admin",
controller: "dlnaprofile"
});
defineRoute({
path: "/dlnaprofiles.html",
autoFocus: false,
roles: "admin"
roles: "admin",
controller: "dlnaprofiles"
});
defineRoute({
path: "/dlnasettings.html",
autoFocus: false,
roles: "admin"
roles: "admin",
controller: "dlnasettings"
});
defineRoute({
path: "/edititemmetadata.html",
@ -96,7 +101,8 @@ define([
defineRoute({
path: "/encodingsettings.html",
autoFocus: false,
roles: "admin"
roles: "admin",
controller: "encodingsettings"
});
defineRoute({
path: "/forgotpassword.html",
@ -138,7 +144,8 @@ define([
defineRoute({
path: "/library.html",
autoFocus: false,
roles: "admin"
roles: "admin",
controller: "medialibrarypage"
});
defineRoute({
path: "/librarydisplay.html",
@ -161,16 +168,19 @@ define([
defineRoute({
path: "/livetvguideprovider.html",
autoFocus: false,
roles: "admin"
roles: "admin",
controller: "livetvguideprovider"
});
defineRoute({
path: "/livetvsettings.html",
autoFocus: false
autoFocus: false,
controller: "livetvsettings"
});
defineRoute({
path: "/livetvstatus.html",
autoFocus: false,
roles: "admin"
roles: "admin",
controller: "livetvstatus"
});
defineRoute({
path: "/livetvtuner.html",
@ -198,12 +208,14 @@ define([
defineRoute({
path: "/metadataimages.html",
autoFocus: false,
roles: "admin"
roles: "admin",
controller: "metadataimagespage"
});
defineRoute({
path: "/metadatanfo.html",
autoFocus: false,
roles: "admin"
roles: "admin",
controller: "metadatanfo"
});
defineRoute({
path: "/movies.html",
@ -256,7 +268,8 @@ define([
defineRoute({
path: "/notificationsetting.html",
autoFocus: false,
roles: "admin"
roles: "admin",
controller: "notificationsetting"
});
defineRoute({
path: "/notificationsettings.html",
@ -276,7 +289,8 @@ define([
defineRoute({
path: "/playbackconfiguration.html",
autoFocus: false,
roles: "admin"
roles: "admin",
controller: "playbackconfiguration"
});
defineRoute({
path: "/availableplugins.html",
@ -322,12 +336,14 @@ define([
defineRoute({
path: "/serversecurity.html",
autoFocus: false,
roles: "admin"
roles: "admin",
controller: "serversecurity"
});
defineRoute({
path: "/streamingsettings.html",
autoFocus: false,
roles: "admin"
roles: "admin",
controller: "streamingsettings"
});
defineRoute({
path: "/support.html",
@ -343,22 +359,26 @@ define([
defineRoute({
path: "/useredit.html",
autoFocus: false,
roles: "admin"
roles: "admin",
controller: "useredit"
});
defineRoute({
path: "/userlibraryaccess.html",
autoFocus: false,
roles: "admin"
roles: "admin",
controller: "userlibraryaccess"
});
defineRoute({
path: "/usernew.html",
autoFocus: false,
roles: "admin"
roles: "admin",
controller: "usernew"
});
defineRoute({
path: "/userparentalcontrol.html",
autoFocus: false,
roles: "admin"
roles: "admin",
controller: "userparentalcontrol"
});
defineRoute({
path: "/userpassword.html",
@ -368,7 +388,8 @@ define([
defineRoute({
path: "/userprofiles.html",
autoFocus: false,
roles: "admin"
roles: "admin",
controller: "userprofilespage"
});
defineRoute({
path: "/wizardremoteaccess.html",
@ -385,7 +406,8 @@ define([
defineRoute({
path: "/wizardlibrary.html",
autoFocus: false,
anonymous: true
anonymous: true,
controller: "medialibrarypage"
});
defineRoute({
path: "/wizardsettings.html",

View File

@ -673,7 +673,6 @@ var AppInfo = {};
var componentsPath = "components";
var paths = {
velocity: bowerPath + "/velocity/velocity.min",
vibrant: bowerPath + "/vibrant/dist/vibrant",
ironCardList: "components/ironcardlist/ironcardlist",
scrollThreshold: "components/scrollthreshold",
playlisteditor: "components/playlisteditor/playlisteditor",
@ -687,16 +686,16 @@ var AppInfo = {};
humanedate: "components/humanedate",
libraryBrowser: "scripts/librarybrowser",
events: apiClientBowerPath + "/events",
credentialprovider: apiClientBowerPath + "/credentials",
credentialprovider: apiClientBowerPath + "/credentialprovider",
connectionManagerFactory: bowerPath + "/apiclient/connectionmanager",
visibleinviewport: componentsPath + "/visibleinviewport",
browserdeviceprofile: componentsPath + "/browserdeviceprofile",
browser: componentsPath + "/browser",
inputManager: componentsPath + "/inputmanager",
inputManager: componentsPath + "/inputManager",
qualityoptions: componentsPath + "/qualityoptions",
hammer: bowerPath + "/hammerjs/hammer.min",
page: "thirdparty/page",
focusManager: componentsPath + "/focusmanager",
focusManager: componentsPath + "/focusManager",
datetime: componentsPath + "/datetime",
globalize: componentsPath + "/globalize",
itemHelper: componentsPath + "/itemhelper",
@ -704,7 +703,7 @@ var AppInfo = {};
playQueueManager: componentsPath + "/playback/playqueuemanager",
autoPlayDetect: componentsPath + "/playback/autoplaydetect",
nowPlayingHelper: componentsPath + "/playback/nowplayinghelper",
pluginManager: componentsPath + "/pluginmanager",
pluginManager: componentsPath + "/pluginManager",
packageManager: componentsPath + "/packagemanager"
};
paths.hlsjs = bowerPath + "/hlsjs/dist/hls.min";
@ -778,15 +777,14 @@ var AppInfo = {};
define("homescreenSettings", [componentsPath + "/homescreensettings/homescreensettings"], returnFirstDependency);
define("homescreenSettingsDialog", [componentsPath + "/homescreensettings/homescreensettingsdialog"], returnFirstDependency);
define("playbackManager", [componentsPath + "/playback/playbackmanager"], getPlaybackManager);
define("layoutManager", [componentsPath + "/layoutmanager", "apphost"], getLayoutManager);
define("layoutManager", [componentsPath + "/layoutManager", "apphost"], getLayoutManager);
define("homeSections", [componentsPath + "/homesections/homesections"], returnFirstDependency);
define("playMenu", [componentsPath + "/playmenu"], returnFirstDependency);
define("refreshDialog", [componentsPath + "/refreshdialog/refreshdialog"], returnFirstDependency);
define("backdrop", [componentsPath + "/backdrop/backdrop"], returnFirstDependency);
define("fetchHelper", [componentsPath + "/fetchhelper"], returnFirstDependency);
define("roundCardStyle", ["cardStyle", "css!" + componentsPath + "/cardbuilder/roundcard"], returnFirstDependency);
define("cardStyle", ["css!" + componentsPath + "/cardbuilder/card"], returnFirstDependency);
define("cardBuilder", [componentsPath + "/cardbuilder/cardbuilder"], returnFirstDependency);
define("cardBuilder", [componentsPath + "/cardbuilder/cardBuilder"], returnFirstDependency);
define("peoplecardbuilder", [componentsPath + "/cardbuilder/peoplecardbuilder"], returnFirstDependency);
define("chaptercardbuilder", [componentsPath + "/cardbuilder/chaptercardbuilder"], returnFirstDependency);
define("flexStyles", ["css!" + componentsPath + "/flexstyles"], returnFirstDependency);
@ -831,7 +829,6 @@ var AppInfo = {};
define("viewSettings", [componentsPath + "/viewsettings/viewsettings"], returnFirstDependency);
define("filterMenu", [componentsPath + "/filtermenu/filtermenu"], returnFirstDependency);
define("sortMenu", [componentsPath + "/sortmenu/sortmenu"], returnFirstDependency);
define("connectionmanager", [apiClientBowerPath + "/connectionmanager"]);
define("serversync", [apiClientBowerPath + "/sync/serversync"], returnFirstDependency);
define("multiserversync", [apiClientBowerPath + "/sync/multiserversync"], returnFirstDependency);
define("mediasync", [apiClientBowerPath + "/sync/mediasync"], returnFirstDependency);
@ -844,7 +841,7 @@ var AppInfo = {};
define("toast", [componentsPath + "/toast/toast"], returnFirstDependency);
define("scrollHelper", [componentsPath + "/scrollhelper"], returnFirstDependency);
define("touchHelper", [componentsPath + "/touchhelper"], returnFirstDependency);
define("appSettings", [componentsPath + "/appsettings"], returnFirstDependency);
define("appSettings", [componentsPath + "/appSettings"], returnFirstDependency);
define("userSettings", [componentsPath + "/usersettings/usersettings"], returnFirstDependency);
define("userSettingsBuilder", [componentsPath + "/usersettings/usersettingsbuilder", "layoutManager", "browser"], getSettingsBuilder);
define("material-icons", ["css!css/material-icons/style"], returnFirstDependency);
@ -854,7 +851,7 @@ var AppInfo = {};
define("imageUploader", [componentsPath + "/imageuploader/imageuploader"], returnFirstDependency);
define("navdrawer", ["components/navdrawer/navdrawer"], returnFirstDependency);
define("htmlMediaHelper", [componentsPath + "/htmlMediaHelper"], returnFirstDependency);
define("viewcontainer", ["components/viewContainer"], returnFirstDependency);
define("viewContainer", ["components/viewContainer"], returnFirstDependency);
define("queryString", [bowerPath + "/query-string/index"], function () {
return queryString;
});

View File

@ -80,7 +80,6 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader
scalable: !0,
centerText: !1,
cardLayout: !0,
vibrant: supportsImageAnalysis,
showYear: !0
}) : "PosterCard" == viewStyle ? cardBuilder.buildCards(result.Items, {
itemsContainer: elem,
@ -89,7 +88,6 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader
scalable: !0,
centerText: !1,
cardLayout: !0,
vibrant: supportsImageAnalysis,
showYear: !0
}) : "Poster" == viewStyle && cardBuilder.buildCards(result.Items, {
itemsContainer: elem,

View File

@ -34,7 +34,6 @@ define(["loading", "components/groupedcards", "cardBuilder", "apphost", "imageLo
centerText: !0,
lazy: !0,
overlayPlayButton: !0,
vibrant: !1,
lines: 2
});
var elem = context.querySelector("#latestEpisodes");

View File

@ -73,7 +73,6 @@ define(["layoutManager", "loading", "datetime", "libraryBrowser", "cardBuilder",
overlayText: !1,
allowBottomPadding: allowBottomPadding,
cardLayout: supportsImageAnalysis,
vibrant: supportsImageAnalysis,
overlayMoreButton: !0,
missingIndicator: !1
}), html += "</div>", html += "</div>"

View File

@ -1,4 +1,4 @@
<div id="serverSecurityPage" data-role="page" class="page type-interior advancedConfigurationPage withTabs fullWidthContent" data-require="scripts/serversecurity,detailtablecss,emby-button">
<div id="serverSecurityPage" data-role="page" class="page type-interior advancedConfigurationPage withTabs fullWidthContent">
<div>
<div class="content-primary">
<div class="detailSectionHeader">

View File

@ -1,4 +1,4 @@
<div id="streamingSettingsPage" data-role="page" class="page type-interior playbackConfigurationPage withTabs" data-require="scripts/streamingsettings,emby-input,emby-button,emby-select">
<div id="streamingSettingsPage" data-role="page" class="page type-interior playbackConfigurationPage withTabs">
<div>
<div class="content-primary">

View File

@ -1,4 +1,4 @@
<div id="editUserPage" data-role="page" class="page type-interior" data-require="scripts/useredit,emby-select,emby-input,emby-checkbox,emby-button">
<div id="editUserPage" data-role="page" class="page type-interior">
<div>
<div class="content-primary">

View File

@ -1,4 +1,4 @@
<div id="userLibraryAccessPage" data-role="page" class="page type-interior" data-require="scripts/userlibraryaccess,emby-checkbox,emby-button">
<div id="userLibraryAccessPage" data-role="page" class="page type-interior">
<div>
<div class="content-primary">

View File

@ -1,4 +1,4 @@
<div id="newUserPage" data-role="page" class="page type-interior" data-require="scripts/usernew,emby-input,emby-button">
<div id="newUserPage" data-role="page" class="page type-interior">
<div>
<div class="content-primary">

View File

@ -1,4 +1,4 @@
<div id="userParentalControlPage" data-role="page" class="page type-interior" data-require="scripts/userparentalcontrol,emby-checkbox,emby-button,emby-select">
<div id="userParentalControlPage" data-role="page" class="page type-interior">
<div>
<div class="content-primary">

View File

@ -1,4 +1,4 @@
<div id="userProfilesPage" data-role="page" class="page type-interior userProfilesPage fullWidthContent" data-require="scripts/userprofilespage,emby-button">
<div id="userProfilesPage" data-role="page" class="page type-interior userProfilesPage fullWidthContent">
<div>
<div class="content-primary">

View File

@ -1,4 +1,4 @@
<div id="wizardLibraryPage" data-role="page" class="page standalonePage wizardPage mediaLibraryPage" data-require="scripts/medialibrarypage,scripts/taskbutton,emby-button">
<div id="wizardLibraryPage" data-role="page" class="page standalonePage wizardPage mediaLibraryPage">
<div class="padded-left padded-right padded-top">

35
webpack.config.js Normal file
View File

@ -0,0 +1,35 @@
const path = require('path');
module.exports = {
context: __dirname + '/src',
entry: './scripts/site.js',
output: {
filename: 'main.js',
path: path.resolve(__dirname, 'dist')
},
resolve: {
modules: [
path.resolve(__dirname, 'src/scripts'),
path.resolve(__dirname, 'src/components'),
path.resolve(__dirname, 'src/components/playback'),
path.resolve(__dirname, 'src/components/emby-button'),
path.resolve(__dirname, 'src/components/usersettings'),
path.resolve(__dirname, 'src/components/images'),
path.resolve(__dirname, 'src/bower_components'),
path.resolve(__dirname, 'src/bower_components/apiclient'),
path.resolve(__dirname, 'src/bower_components/apiclient/sync'),
path.resolve(__dirname, 'src/components/cardbuilder'),
'node_modules'
]
},
module: {
rules: [
{
test: /\.css$/,
use: ['style-loader', 'css-loader']
}
]
}
};

324
yarn.lock
View File

@ -477,7 +477,7 @@ camelcase@^5.0.0:
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42"
integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==
chalk@^2.4.1:
chalk@^2.4.1, chalk@^2.4.2:
version "2.4.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
@ -599,6 +599,16 @@ concat-stream@^1.5.0:
readable-stream "^2.2.2"
typedarray "^0.0.6"
connect@^3.6.6:
version "3.6.6"
resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.6.tgz#09eff6c55af7236e137135a72574858b6786f524"
integrity sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=
dependencies:
debug "2.6.9"
finalhandler "1.1.0"
parseurl "~1.3.2"
utils-merge "1.0.1"
console-browserify@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10"
@ -697,6 +707,36 @@ crypto-browserify@^3.11.0:
randombytes "^2.0.0"
randomfill "^1.0.3"
css-loader@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-2.1.0.tgz#42952ac22bca5d076978638e9813abce49b8f0cc"
integrity sha512-MoOu+CStsGrSt5K2OeZ89q3Snf+IkxRfAIt9aAKg4piioTrhtP1iEFPu+OVn3Ohz24FO6L+rw9UJxBILiSBw5Q==
dependencies:
icss-utils "^4.0.0"
loader-utils "^1.2.1"
lodash "^4.17.11"
postcss "^7.0.6"
postcss-modules-extract-imports "^2.0.0"
postcss-modules-local-by-default "^2.0.3"
postcss-modules-scope "^2.0.0"
postcss-modules-values "^2.0.0"
postcss-value-parser "^3.3.0"
schema-utils "^1.0.0"
css-selector-tokenizer@^0.7.0:
version "0.7.1"
resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz#a177271a8bca5019172f4f891fc6eed9cbf68d5d"
integrity sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==
dependencies:
cssesc "^0.1.0"
fastparse "^1.1.1"
regexpu-core "^1.0.0"
cssesc@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4"
integrity sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=
cyclist@~0.2.2:
version "0.2.2"
resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640"
@ -707,7 +747,7 @@ date-now@^0.1.4:
resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=
debug@^2.1.2, debug@^2.2.0, debug@^2.3.3:
debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3:
version "2.6.9"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
@ -756,6 +796,11 @@ delegates@^1.0.0:
resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
depd@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
des.js@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc"
@ -764,6 +809,11 @@ des.js@^1.0.0:
inherits "^2.0.1"
minimalistic-assert "^1.0.0"
destroy@~1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
detect-file@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7"
@ -798,6 +848,11 @@ duplexify@^3.4.2, duplexify@^3.6.0:
readable-stream "^2.0.0"
stream-shift "^1.0.0"
ee-first@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
elliptic@^6.0.0:
version "6.4.1"
resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a"
@ -816,6 +871,11 @@ emojis-list@^2.0.0:
resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k=
encodeurl@~1.0.1, encodeurl@~1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
end-of-stream@^1.0.0, end-of-stream@^1.1.0:
version "1.4.1"
resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43"
@ -839,6 +899,11 @@ errno@^0.1.3, errno@~0.1.7:
dependencies:
prr "~1.0.1"
escape-html@~1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
escape-string-regexp@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
@ -864,6 +929,11 @@ estraverse@^4.1.0, estraverse@^4.1.1:
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=
etag@~1.8.1:
version "1.8.1"
resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
events@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88"
@ -949,11 +1019,24 @@ fast-json-stable-stringify@^2.0.0:
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I=
fastparse@^1.1.1:
version "1.1.2"
resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9"
integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==
figgy-pudding@^3.5.1:
version "3.5.1"
resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790"
integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==
file-loader@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-3.0.1.tgz#f8e0ba0b599918b51adfe45d66d1e771ad560faa"
integrity sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw==
dependencies:
loader-utils "^1.0.2"
schema-utils "^1.0.0"
fill-range@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
@ -964,6 +1047,19 @@ fill-range@^4.0.0:
repeat-string "^1.6.1"
to-regex-range "^2.1.0"
finalhandler@1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5"
integrity sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=
dependencies:
debug "2.6.9"
encodeurl "~1.0.1"
escape-html "~1.0.3"
on-finished "~2.3.0"
parseurl "~1.3.2"
statuses "~1.3.1"
unpipe "~1.0.0"
find-cache-dir@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.0.0.tgz#4c1faed59f45184530fb9d7fa123a4d04a98472d"
@ -1010,6 +1106,11 @@ fragment-cache@^0.2.1:
dependencies:
map-cache "^0.2.2"
fresh@0.5.2:
version "0.5.2"
resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
from2@^2.1.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af"
@ -1197,6 +1298,21 @@ homedir-polyfill@^1.0.1:
dependencies:
parse-passwd "^1.0.0"
howler@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/howler/-/howler-2.1.1.tgz#b8ae44b83f4b8a5b5ef354030ed0927314d8a996"
integrity sha512-9nwyDCGxhAGMmNXDfMLv0M/uS/WUg2//jG6t96D8DqbbsVZgXQzsP/ZMItbWO/Fqg7Gg69kOv3xVSDzJdd7aqA==
http-errors@~1.6.2:
version "1.6.3"
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=
dependencies:
depd "~1.1.2"
inherits "2.0.3"
setprototypeof "1.1.0"
statuses ">= 1.4.0 < 2"
https-browserify@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
@ -1209,6 +1325,18 @@ iconv-lite@^0.4.4:
dependencies:
safer-buffer ">= 2.1.2 < 3"
icss-replace-symbols@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded"
integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=
icss-utils@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.0.0.tgz#d52cf4bcdcfa1c45c2dbefb4ffdf6b00ef608098"
integrity sha512-bA/xGiwWM17qjllIs9X/y0EjsB7e0AV08F3OL8UPsoNkNRibIuu8f1eKTnQ8QO1DteKKTxTUAn+IEWUToIwGOA==
dependencies:
postcss "^7.0.5"
ieee754@^1.1.4:
version "1.1.12"
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b"
@ -1424,6 +1552,16 @@ isobject@^3.0.0, isobject@^3.0.1:
resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
jquery@>=1.9.1:
version "3.3.1"
resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.3.1.tgz#958ce29e81c9790f31be7792df5d4d95fc57fbca"
integrity sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==
jsesc@~0.5.0:
version "0.5.0"
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
json-parse-better-errors@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
@ -1441,6 +1579,13 @@ json5@^1.0.1:
dependencies:
minimist "^1.2.0"
jstree@^3.3.7:
version "3.3.7"
resolved "https://registry.yarnpkg.com/jstree/-/jstree-3.3.7.tgz#41df485d66148836ac389603a3e12f4574b06251"
integrity sha512-yzzalO1TbZ4HdPezO43LesGI4Wv2sB0Nl+4GfwO0YYvehGws5qtTAhlBISxfur9phMLwCtf9GjHlRx2ZLXyRnw==
dependencies:
jquery ">=1.9.1"
kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
version "3.2.2"
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
@ -1477,7 +1622,7 @@ loader-runner@^2.3.0:
resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357"
integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==
loader-utils@^1.1.0:
loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.1:
version "1.2.3"
resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7"
integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==
@ -1494,6 +1639,11 @@ locate-path@^3.0.0:
p-locate "^3.0.0"
path-exists "^3.0.0"
lodash@^4.17.11:
version "4.17.11"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==
lru-cache@^5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
@ -1585,6 +1735,11 @@ miller-rabin@^4.0.0:
bn.js "^4.0.0"
brorand "^1.0.1"
mime@1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6"
integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==
mimic-fn@^1.0.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
@ -1849,6 +2004,13 @@ object.pick@^1.3.0:
dependencies:
isobject "^3.0.1"
on-finished@~2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=
dependencies:
ee-first "1.1.1"
once@^1.3.0, once@^1.3.1, once@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
@ -1953,6 +2115,11 @@ parse-passwd@^1.0.0:
resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=
parseurl@~1.3.2:
version "1.3.2"
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3"
integrity sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=
pascalcase@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
@ -2011,6 +2178,52 @@ posix-character-classes@^0.1.0:
resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
postcss-modules-extract-imports@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e"
integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==
dependencies:
postcss "^7.0.5"
postcss-modules-local-by-default@^2.0.3:
version "2.0.5"
resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.5.tgz#7f387f68f5555598068e4d6d1ea0b7d6fa984272"
integrity sha512-iFgxlCAVLno5wIJq+4hyuOmc4VjZEZxzpdeuZcBytLNWEK5Bx2oRF9PPcAz5TALbaFvrZm8sJYtJ3hV+tMSEIg==
dependencies:
css-selector-tokenizer "^0.7.0"
postcss "^7.0.6"
postcss-value-parser "^3.3.1"
postcss-modules-scope@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.0.1.tgz#2c0f2394cde4cd09147db054c68917e38f6d43a4"
integrity sha512-7+6k9c3/AuZ5c596LJx9n923A/j3nF3ormewYBF1RrIQvjvjXe1xE8V8A1KFyFwXbvnshT6FBZFX0k/F1igneg==
dependencies:
css-selector-tokenizer "^0.7.0"
postcss "^7.0.6"
postcss-modules-values@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz#479b46dc0c5ca3dc7fa5270851836b9ec7152f64"
integrity sha512-Ki7JZa7ff1N3EIMlPnGTZfUMe69FFwiQPnVSXC9mnn3jozCRBYIxiZd44yJOV2AmabOo4qFf8s0dC/+lweG7+w==
dependencies:
icss-replace-symbols "^1.1.0"
postcss "^7.0.6"
postcss-value-parser@^3.3.0, postcss-value-parser@^3.3.1:
version "3.3.1"
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281"
integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==
postcss@^7.0.5, postcss@^7.0.6:
version "7.0.14"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.14.tgz#4527ed6b1ca0d82c53ce5ec1a2041c2346bbd6e5"
integrity sha512-NsbD6XUUMZvBxtQAJuWDJeeC4QFsmWsfozWxCJPWf3M55K9iu2iMDaKqyoOdTJ1R4usBXuxlVFAIo8rZPQD4Bg==
dependencies:
chalk "^2.4.2"
source-map "^0.6.1"
supports-color "^6.1.0"
process-nextick-args@~2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
@ -2108,6 +2321,11 @@ randomfill@^1.0.3:
randombytes "^2.0.5"
safe-buffer "^5.1.0"
range-parser@~1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e"
integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=
rc@^1.2.7:
version "1.2.8"
resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
@ -2140,6 +2358,11 @@ readdirp@^2.2.1:
micromatch "^3.1.10"
readable-stream "^2.0.2"
regenerate@^1.2.1:
version "1.4.0"
resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11"
integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==
regex-not@^1.0.0, regex-not@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
@ -2148,6 +2371,27 @@ regex-not@^1.0.0, regex-not@^1.0.2:
extend-shallow "^3.0.2"
safe-regex "^1.1.0"
regexpu-core@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b"
integrity sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=
dependencies:
regenerate "^1.2.1"
regjsgen "^0.2.0"
regjsparser "^0.1.4"
regjsgen@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7"
integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=
regjsparser@^0.1.4:
version "0.1.5"
resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c"
integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=
dependencies:
jsesc "~0.5.0"
remove-trailing-separator@^1.0.1:
version "1.1.0"
resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
@ -2261,11 +2505,40 @@ semver@^5.3.0, semver@^5.5.0:
resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004"
integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==
send@0.16.2:
version "0.16.2"
resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1"
integrity sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==
dependencies:
debug "2.6.9"
depd "~1.1.2"
destroy "~1.0.4"
encodeurl "~1.0.2"
escape-html "~1.0.3"
etag "~1.8.1"
fresh "0.5.2"
http-errors "~1.6.2"
mime "1.4.1"
ms "2.0.0"
on-finished "~2.3.0"
range-parser "~1.2.0"
statuses "~1.4.0"
serialize-javascript@^1.4.0:
version "1.6.1"
resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.6.1.tgz#4d1f697ec49429a847ca6f442a2a755126c4d879"
integrity sha512-A5MOagrPFga4YaKQSWHryl7AXvbQkEqpw4NNYMTNYUNV51bA8ABHgYFpqKx+YFFrw59xMV1qGH1R4AgoNIVgCw==
serve-static@^1.13.2:
version "1.13.2"
resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1"
integrity sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==
dependencies:
encodeurl "~1.0.2"
escape-html "~1.0.3"
parseurl "~1.3.2"
send "0.16.2"
set-blocking@^2.0.0, set-blocking@~2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
@ -2296,6 +2569,11 @@ setimmediate@^1.0.4:
resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=
setprototypeof@1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==
sha.js@^2.4.0, sha.js@^2.4.8:
version "2.4.11"
resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7"
@ -2412,6 +2690,21 @@ static-extend@^0.1.1:
define-property "^0.2.5"
object-copy "^0.1.0"
"statuses@>= 1.4.0 < 2":
version "1.5.0"
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
statuses@~1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e"
integrity sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=
statuses@~1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087"
integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==
stream-browserify@^2.0.1:
version "2.0.2"
resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b"
@ -2499,6 +2792,14 @@ strip-json-comments@~2.0.1:
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
style-loader@^0.23.1:
version "0.23.1"
resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925"
integrity sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==
dependencies:
loader-utils "^1.1.0"
schema-utils "^1.0.0"
supports-color@^5.3.0, supports-color@^5.5.0:
version "5.5.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
@ -2506,6 +2807,13 @@ supports-color@^5.3.0, supports-color@^5.5.0:
dependencies:
has-flag "^3.0.0"
supports-color@^6.1.0:
version "6.1.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3"
integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==
dependencies:
has-flag "^3.0.0"
tapable@^1.0.0, tapable@^1.1.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.1.tgz#4d297923c5a72a42360de2ab52dadfaaec00018e"
@ -2631,6 +2939,11 @@ unique-slug@^2.0.0:
dependencies:
imurmurhash "^0.1.4"
unpipe@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
unset-value@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
@ -2688,6 +3001,11 @@ util@^0.11.0:
dependencies:
inherits "2.0.3"
utils-merge@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
v8-compile-cache@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz#a428b28bb26790734c4fc8bc9fa106fccebf6a6c"