define(["dialogHelper", "dom", "layoutManager", "connectionManager", "globalize", "loading", "material-icons", "formDialogStyle", "emby-button", "emby-itemscontainer", "cardStyle"], function(dialogHelper, dom, layoutManager, connectionManager, globalize, loading) { "use strict"; function getEditorHtml() { var html = ""; return html += '
', html += '
', html += '
', html += "

" + globalize.translate("DetectingDevices") + "...

", html += "

" + globalize.translate("MessagePleaseWait") + "

", html += "
", html += '

' + globalize.translate("HeaderNewDevices") + "

", html += '
', html += "
", html += "
", html += "
" } function getDeviceHtml(device) { var padderClass, html = "", cssClass = "card scalableCard", cardBoxCssClass = "cardBox visualCardBox"; return cssClass += " backdropCard backdropCard-scalable", padderClass = "cardPadder-backdrop", layoutManager.tv && (cssClass += " card-focusscale", cardBoxCssClass += " cardBox-focustransform"), cardBoxCssClass += " card-focuscontent", html += '" } function getTunerName(providerId) { switch (providerId = providerId.toLowerCase()) { case "m3u": return "M3U"; case "hdhomerun": return "HDHomerun"; case "hauppauge": return "Hauppauge"; case "satip": return "DVB"; default: return "Unknown" } } function renderDevices(view, devices) { var i, length, html = ""; for (i = 0, length = devices.length; i < length; i++) html += getDeviceHtml(devices[i]); devices.length ? view.querySelector(".devicesHeader").classList.remove("hide") : (html = "


" + globalize.translate("NoNewDevicesFound") + "

", view.querySelector(".devicesHeader").classList.add("hide")); var elem = view.querySelector(".results"); elem.innerHTML = html, layoutManager.tv && focusManager.autoFocus(elem) } function discoverDevices(view, apiClient) { return loading.show(), view.querySelector(".loadingContent").classList.remove("hide"), ApiClient.getJSON(ApiClient.getUrl("LiveTv/Tuners/Discvover", { NewDevicesOnly: !0 })).then(function(devices) { currentDevices = devices, renderDevices(view, devices), view.querySelector(".loadingContent").classList.add("hide"), loading.hide() }) } function tunerPicker() { this.show = function(options) { var dialogOptions = { removeOnClose: !0, scrollY: !1 }; layoutManager.tv ? dialogOptions.size = "fullscreen" : dialogOptions.size = "small"; var dlg = dialogHelper.createDialog(dialogOptions); dlg.classList.add("formDialog"); var html = ""; html += '
', html += '', html += '

', html += globalize.translate("HeaderLiveTvTunerSetup"), html += "

", html += "
", html += getEditorHtml(), dlg.innerHTML = html, dlg.querySelector(".btnCancel").addEventListener("click", function() { dialogHelper.close(dlg) }); var deviceResult; dlg.querySelector(".results").addEventListener("click", function(e) { var tunerCard = dom.parentWithClass(e.target, "card"); if (tunerCard) { var deviceId = tunerCard.getAttribute("data-id"); deviceResult = currentDevices.filter(function(d) { return d.DeviceId === deviceId })[0], dialogHelper.close(dlg) } }), layoutManager.tv && centerFocus(dlg.querySelector(".formDialogContent"), !1, !0); var apiClient = connectionManager.getApiClient(options.serverId); return discoverDevices(dlg, apiClient), layoutManager.tv && centerFocus(dlg.querySelector(".formDialogContent"), !1, !1), dialogHelper.open(dlg).then(function() { return deviceResult ? Promise.resolve(deviceResult) : Promise.reject() }) } } var currentDevices = []; return tunerPicker });