import connectionManager from"./../emby-apiclient/connectionmanager.js";import globalize from"./../common/globalize.js";import layoutManager from"./../layoutmanager.js";import focusManager from"./../focusmanager.js";import loading from"./../loading/loading.js";import"./../emby-elements/emby-scroller/emby-scroller.js";import"./../emby-elements/emby-input/emby-input.js";import listView from"./../listview/listview.js";import"./../emby-elements/emby-button/paper-icon-button-light.js";import"./../emby-elements/emby-button/emby-button.js";import"./../emby-elements/emby-dialogclosebutton/emby-dialogclosebutton.js";import dialogHelper from"./../dialoghelper/dialoghelper.js";import dom from"./../dom.js";import responseHelper from"./../common/responsehelper.js";function showAlert(options){return Emby.importModule("./modules/common/dialogs/alert.js").then(function(alert){return alert(options)})}function onDialogClosed(){loading.hide(),this.destroy()}function getEditorHtml(options,apiClient,systemInfo){let html="";html+='
',options.pathReadOnly||(instruction=options.instruction?options.instruction+"

":"",html=(html=(html+='
')+'
'+instruction)+globalize.translate("MessageDirectoryPickerInstruction").replace("{0}","\\\\server").replace("{1}","\\\\192.168.1.101"),"synology"===(systemInfo.PackageName||"").toLowerCase()?html=(html+="

")+''+globalize.translate("LearnHowToCreateSynologyShares")+"":"bsd"===systemInfo.OperatingSystem.toLowerCase()?html=(html=(html+="

")+globalize.translate("MessageDirectoryPickerBSDInstruction")+"
")+''+globalize.translate("LearnMore")+"":"linux"===systemInfo.OperatingSystem.toLowerCase()&&(html=(html+="

")+globalize.translate("MessageDirectoryPickerLinuxInstruction")+"
"),html+="
"),html=(html+='
')+'
';var instruction=!0!==options.includeFiles?"Folder":"LabelPath",readOnlyAttribute=options.pathReadOnly?" readonly":"";return html=html+('')+"
",readOnlyAttribute||(html+=''),html+="
",options.enableLoginCredentials&&"windows"!==systemInfo.OperatingSystem.toLowerCase()&&apiClient.isMinServerVersion("4.8.0.40")&&(html=(html=(html=(html=(html=(html=(html+='
')+'
')+globalize.translate("UsernameForFolderHelp")+"
")+'
')+'
')+globalize.translate("PasswordForFolderHelp"))+"
"),readOnlyAttribute||(html+='
'),options.enableNetworkSharePath&&(html=(html=(html=(html+='
')+'
')+globalize.translate("LabelOptionalNetworkPathHelp"))+"
"),html=(html=(html=(html+='
')+('")+"
")+"
"+"
")+"
"+""}function validatePath(path,validateWriteable,username,password,apiClient){return apiClient.ajax({type:"POST",url:apiClient.getUrl("Environment/ValidatePath"),data:{ValidateWriteable:validateWriteable,Path:path,Username:username,Password:password}}).catch(function(response){return response&&500===response.status&&validateWriteable?(showAlert("Emby Server requires write access to this folder. Please ensure write access and try again."),Promise.reject()):responseHelper.handleErrorResponse(response)})}function initEditor(instance,content,options,apiClient,fileOptions){var btnRefreshDirectories=content.querySelector(".btnRefreshDirectories");function onPathTextChange(e){var value=this.value,value=value&&(value.startsWith("\\\\")||value.toLowerCase().startsWith("smb://")),fldUsername=content.querySelector(".fldUsername"),fldPassword=content.querySelector(".fldPassword");value?(fldUsername&&fldUsername.classList.remove("hide"),fldPassword&&fldPassword.classList.remove("hide")):(fldUsername&&fldUsername.classList.add("hide"),fldPassword&&fldPassword.classList.add("hide"))}btnRefreshDirectories&&btnRefreshDirectories.addEventListener("click",function(e){instance.path=content.querySelector(".txtDirectoryPickerPath").value,instance.username=content.querySelector(".txtUsername")?.value,instance.password=content.querySelector(".txtPassword")?.value,instance.itemsContainer.resume({refresh:!0}).catch(responseHelper.handleErrorResponse)}),content.querySelector(".txtDirectoryPickerPath").addEventListener("change",onPathTextChange),content.querySelector(".txtDirectoryPickerPath").addEventListener("input",onPathTextChange),content.querySelector("form").addEventListener("submit",function(e){if(options.callback){let path=this.querySelector(".txtDirectoryPickerPath").value,username=this.querySelector(".txtUsername")?.value||null,password=this.querySelector(".txtPassword")?.value||null,networkSharePath=this.querySelector(".txtNetworkPath")?.value||null;validatePath(path,options.validateWriteable,username,password,apiClient).then(function(){options.callback(path,networkSharePath,username,password)})}return e.preventDefault(),e.stopPropagation(),!1})}function getDefaultPath(options,apiClient){return options.path?Promise.resolve(options.path):apiClient.getJSON(apiClient.getUrl("Environment/DefaultDirectoryBrowser")).then(function(result){return result.Path||""},function(){return""})}function onItemAction(e){var e=e.detail.item,path=e.Path;"File"===e.FileType?(this.dlg.querySelector(".txtDirectoryPickerPath").value=path,this.dlg.querySelector(".txtDirectoryPickerPath").dispatchEvent(new CustomEvent("change",{bubbles:!0}))):(this.path=path,this.username=this.dlg.querySelector(".txtUsername")?.value,this.password=this.dlg.querySelector(".txtPassword")?.value,this.itemsContainer.resume({refresh:!0}))}function getItems(query){let path=this.path;if(path&&"string"!=typeof path)return Promise.resolve({Items:[],TotalRecordCount:0});let instance=this;if(instance.options.pathReadOnly)return Promise.resolve({Items:[],TotalRecordCount:0});let apiClient=this.apiClient;var fileOptions=this.fileOptions,promises=[];return"Network"===path?promises.push(apiClient.getNetworkDevices()):path?((fileOptions=Object.assign({},fileOptions)).username=this.username,fileOptions.password=this.password,promises.push(apiClient.getDirectoryContents(path,fileOptions)),promises.push(apiClient.getParentPath(path))):promises.push(apiClient.getDrives()),Promise.all(promises).then(function(responses){var folders=responses[0],responses=responses[1]||"";instance.dlg.querySelector(".txtDirectoryPickerPath").value=path||"";let items=[];path&&items.push({Path:responses,Name:".. ["+globalize.translate("Back")+"]",Icon:"arrow_back"}),items=items.concat(folders.map(function(f){return{Path:f.Path,Name:f.Name,FileType:f.Type,Icon:"File"===f.Type?"description":"folder"}})),path||items.push({Path:"Network",Name:globalize.translate("Network"),Icon:"wifi"});for(let i=0,length=items.length;i')+''+'

')+(options.header||globalize.translate("HeaderSelectPath")))+"

"+"")+getEditorHtml(options,apiClient,systemInfo),dlg.innerHTML=html,initEditor(instance,dlg,options,apiClient,fileOptions),dlg.addEventListener("close",onDialogClosed.bind(instance)),dlg.querySelector(".itemsContainer")),html=(systemInfo&&(systemInfo.addEventListener("action-null",onItemAction.bind(instance)),systemInfo.fetchData=getItems.bind(instance),systemInfo.afterRefresh=afterRefresh.bind(instance),systemInfo.getListOptions=getListOptions,instance.itemsContainer=systemInfo),dlg.querySelector(".txtDirectoryPickerPath")),systemInfo=(html.value=responses,instance.path=responses,dlg.querySelector(".txtNetworkPath")),responses=(systemInfo&&(systemInfo.value=options.networkSharePath||""),dlg.querySelector(".txtUsername")),systemInfo=(responses&&(responses.value=options.username||""),instance.username=options.username,dlg.querySelector(".txtPassword"));systemInfo&&(systemInfo.value=options.password||""),instance.password=options.password,dialogHelper.open(dlg),html.dispatchEvent(new CustomEvent("change",{bubbles:!0})),dlg.addEventListener("opened",onOpened.bind(instance))})},DirectoryBrowser.prototype.close=function(){this.dlg&&dialogHelper.close(this.dlg)},DirectoryBrowser.prototype.destroy=function(){this.itemsContainer=null,this.dlg=null,this.path=null,this.options=null,this.fileOptions=null,this.apiClient=null};export default DirectoryBrowser;