define(function(require,exports,module){const ProjectManager=require("project/ProjectManager"),SidebarView=require("project/SidebarView"),PreferencesManager=require("preferences/PreferencesManager"),Commands=require("command/Commands"),CommandManager=require("command/CommandManager"),Menus=require("command/Menus"),FileSystem=require("filesystem/FileSystem"),AppInit=require("utils/AppInit"),KeyEvent=require("utils/KeyEvent"),FileUtils=require("file/FileUtils"),PopUpManager=require("widgets/PopUpManager"),Strings=require("strings"),Mustache=require("thirdparty/mustache/mustache"),ProjectsMenuTemplate=require("text!./htmlContent/projects-menu.html"),ExtensionInterface=require("utils/ExtensionInterface"),RECENT_PROJECTS_INTERFACE="Extn.Phoenix.recentProjects";ExtensionInterface.registerExtensionInterface(RECENT_PROJECTS_INTERFACE,exports);const RECENT_PROJECT_STATE="recentProjects";var MAX_PROJECTS=20;let $dropdown;function getRecentProjects(){var recentProjects=PreferencesManager.getViewState(RECENT_PROJECT_STATE)||[],i;for(i=0;iMAX_PROJECTS&&(recentProjects=recentProjects.slice(0,MAX_PROJECTS)),PreferencesManager.setViewState(RECENT_PROJECT_STATE,recentProjects)}}function removeFromRecentProject(fullPath){fullPath=FileUtils.stripTrailingSlash(fullPath);let recentProjects=getRecentProjects(),index=recentProjects.indexOf(fullPath),newProjects=[],i;for(i=0;i{ProjectManager.openProject(fullPath).then(resolve).fail(function(){var recentProjects,index;-1!==getRecentProjects().indexOf(fullPath)?FileSystem.resolve(fullPath,function(err,item){err&&removeFromRecentProject(fullPath),reject()}):reject()})})}function _handleListEvents(){$dropdown.on("click",".recent-project-delete",function(e){e.stopPropagation(),removeFromRecentProject($(this).parent().data("path")),$(this).closest("li").remove(),1===getRecentProjects().length&&$dropdown.find(".divider").remove()}).on("click","a",function(){var $link=$(this),id=$link.attr("id"),path=$link.data("path");path?(openProjectWithPath(path),closeDropdown()):"open-folder-link"===id?CommandManager.execute(Commands.FILE_OPEN_FOLDER):"new-project-link"===id?CommandManager.execute(Commands.FILE_NEW_PROJECT):"download-project-link"===id&&CommandManager.execute(Commands.FILE_DOWNLOAD_PROJECT)})}function renderPath(fullPath){let parentDirPath=Phoenix.VFS.ensureTrailingSlash(window.path.dirname(fullPath)),rest;if(parentDirPath.startsWith(Phoenix.VFS.getTauriDir()))rest=" - "+window.fs.getTauriPlatformPath(parentDirPath);else if(parentDirPath.startsWith(Phoenix.VFS.getMountDir())){const displayPath=parentDirPath.replace(Phoenix.VFS.getMountDir(),"");displayPath&&(rest=" - "+displayPath)}else rest=" - "+Strings.PROJECT_FROM_BROWSER_TERSE;return{path:fullPath,folder:window.path.basename(fullPath),rest:rest}}function renderList(){const recentProjects=getRecentProjects(),downloadProjectCommand=CommandManager.get(Commands.FILE_DOWNLOAD_PROJECT),currentProject=FileUtils.stripTrailingSlash(ProjectManager.getProjectRoot().fullPath),templateVars={projectList:[],Strings:Strings,downloadProjectClass:downloadProjectCommand.getEnabled()?"":"forced-hidden"};return recentProjects.forEach(function(root){root!==currentProject&&templateVars.projectList.push(renderPath(root))}),Mustache.render(ProjectsMenuTemplate,templateVars)}function showDropdown(position){$dropdown||(Menus.closeAll(),$dropdown=$(renderList()).css({left:position.pageX,top:position.pageY}).appendTo($("body")),PopUpManager.addPopUp($dropdown,cleanupDropdown,!0,{closeCurrentPopups:!0}),PopUpManager.handleSelectionEvents($dropdown,{enableSearchFilter:!0,keyboardEventHandler:_handlePopupKeyEvents}),$("html").on("click",closeDropdown),$("#project-files-container").on("scroll",closeDropdown),$("#titlebar .nav").on("click",closeDropdown),_handleListEvents())}AppInit.appReady(function(){PreferencesManager.stateManager.definePreference(RECENT_PROJECT_STATE,"array",[]).watchExternalChanges(),ProjectManager.on("projectOpen",add),ProjectManager.on("beforeProjectClose",add),add()}),AppInit.htmlReady(function(){$("#project-dropdown-toggle .dropdown-arrow").removeClass("forced-hidden");var cmenuAdapter={open:showDropdown,close:closeDropdown,isOpen:function(){return!!$dropdown}};Menus.ContextMenu.assignContextMenuToSelector("#project-dropdown-toggle",cmenuAdapter)}),exports.getRecentProjects=getRecentProjects,exports.openProjectWithPath=openProjectWithPath,exports.removeFromRecentProject=removeFromRecentProject});