define(['loading', 'dialogHelper', 'dom', 'listViewStyle', 'emby-input', 'paper-icon-button-light', 'css!./directorybrowser', 'formDialogStyle', 'emby-button'], function(loading, dialogHelper, dom) { 'use strict'; function getSystemInfo() { return systemInfo ? Promise.resolve(systemInfo) : ApiClient.getPublicSystemInfo().then( function(info) { systemInfo = info; return info; } ) } function onDialogClosed() { loading.hide() } function refreshDirectoryBrowser(page, path, fileOptions, updatePathOnError) { if (path && typeof path !== 'string') { throw new Error("invalid path"); } loading.show(); var promises = []; if ("Network" === path) { promises.push(ApiClient.getNetworkDevices()) } else { if (path) { promises.push(ApiClient.getDirectoryContents(path, fileOptions)); promises.push(ApiClient.getParentPath(path)); } else { promises.push(ApiClient.getDrives()); } } Promise.all(promises).then( function(responses) { var folders = responses[0]; var parentPath = responses[1] || ""; var html = ""; page.querySelector(".results").scrollTop = 0; page.querySelector("#txtDirectoryPickerPath").value = path || ""; if (path) { html += getItem("lnkPath lnkDirectory", "", parentPath, "..."); } for (var i = 0, length = folders.length; i < length; i++) { var folder = folders[i]; var cssClass = "File" === folder.Type ? "lnkPath lnkFile" : "lnkPath lnkDirectory"; html += getItem(cssClass, folder.Type, folder.Path, folder.Name); } if (!path) { html += getItem("lnkPath lnkDirectory", "", "Network", Globalize.translate("ButtonNetwork")); } page.querySelector(".results").innerHTML = html; loading.hide(); }, function() { if (updatePathOnError) { page.querySelector("#txtDirectoryPickerPath").value = ""; page.querySelector(".results").innerHTML = ""; loading.hide(); } } ); } function getItem(cssClass, type, path, name) { var html = ""; html += '