forked from phcode-dev/staging.phcode.dev
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathDefaultPanelView.js
More file actions
1 lines (1 loc) · 3.83 KB
/
DefaultPanelView.js
File metadata and controls
1 lines (1 loc) · 3.83 KB
1
define(function(require,exports,module){const AppInit=require("utils/AppInit"),Commands=require("command/Commands"),CommandManager=require("command/CommandManager"),Strings=require("strings"),WorkspaceManager=require("view/WorkspaceManager"),PanelView=require("view/PanelView"),ExtensionUtils=require("utils/ExtensionUtils"),_panelButtons=[{id:"problems",icon:"fa-solid fa-triangle-exclamation",label:Strings.CMD_VIEW_TOGGLE_PROBLEMS||"Problems",commandID:Commands.VIEW_TOGGLE_PROBLEMS},{id:"search",icon:"fa-solid fa-magnifying-glass",label:Strings.CMD_FIND_IN_FILES||"Find in Files",commandID:Commands.CMD_FIND_IN_FILES},{id:"git",icon:"fa-solid fa-code-branch",label:Strings.GIT_PANEL_TITLE||"Git",commandID:Commands.CMD_GIT_TOGGLE_PANEL},{id:"snippets",icon:"fa-solid fa-code",label:Strings.CUSTOM_SNIPPETS_PANEL_TITLE||"Custom Snippets",commandID:Commands.CMD_CUSTOM_SNIPPETS_PANEL},{id:"shortcuts",icon:"fa-solid fa-keyboard",label:Strings.KEYBOARD_SHORTCUT_PANEL_TITLE||"Keyboard Shortcuts",commandID:Commands.HELP_TOGGLE_SHORTCUTS_PANEL},{id:"terminal",icon:"fa-solid fa-terminal",label:"Terminal",commandID:Commands.VIEW_TERMINAL,nativeOnly:!0}];let _panel,_$panel;function _buildPanelHTML(){let $panel=$('<div id="default-panel" class="bottom-panel"></div>'),$content=$('<div class="default-panel-content"></div>'),$heading=$('<div class="default-panel-heading"></div>').text(Strings.BOTTOM_PANEL_DEFAULT_HEADING);$content.append($heading);let $buttonsRow=$('<div class="default-panel-buttons"></div>');return _panelButtons.forEach(function(btn){if(btn.nativeOnly&&!Phoenix.isNativeApp)return;let $button=$('<button class="default-panel-btn"></button>').attr("data-command",btn.commandID).attr("data-btn-id",btn.id).attr("title",btn.label),$icon=$("<i></i>").addClass(btn.icon),$label=$('<span class="default-panel-btn-label"></span>').text(btn.label);$button.append($icon).append($label),$buttonsRow.append($button)}),$content.append($buttonsRow),$panel.append($content),$panel}function _isGitAvailable(){const $gitIcon=$("#git-toolbar-icon");return $gitIcon.length>0&&!$gitIcon.hasClass("forced-hidden")}function _updateButtonVisibility(){_$panel&&_$panel.find('.default-panel-btn[data-btn-id="git"]').toggle(_isGitAvailable())}function _observeStateChanges(){const gitIcon=document.getElementById("git-toolbar-icon");if(gitIcon){const gitObserver=new MutationObserver(_updateButtonVisibility);gitObserver.observe(gitIcon,{attributes:!0,attributeFilter:["class"]})}}function _init(){_$panel=_buildPanelHTML(),_panel=WorkspaceManager.createBottomPanel(WorkspaceManager.DEFAULT_PANEL_ID,_$panel,void 0,Strings.BOTTOM_PANEL_DEFAULT_TITLE),_$panel.on("click",".default-panel-btn",function(){let commandID=$(this).attr("data-command");commandID&&CommandManager.execute(commandID)});const iconURL=ExtensionUtils.getModulePath(module,"../styles/images/app-drawer.svg");function _addTabIcon(){const $tabTitle=$('#bottom-panel-tab-bar .bottom-panel-tab[data-panel-id="'+WorkspaceManager.DEFAULT_PANEL_ID+'"] .bottom-panel-tab-title');$tabTitle.length&&!$tabTitle.find(".app-drawer-tab-icon").length&&$tabTitle.prepend($('<img class="app-drawer-tab-icon">').attr("src",iconURL).css({width:"12px",height:"12px","vertical-align":"middle","margin-right":"4px"}))}const $drawerBtn=$("#app-drawer-button").attr("title",Strings.BOTTOM_PANEL_DEFAULT_TITLE);$drawerBtn.on("click",function(){_panel.isVisible()?_panel.hide():_panel.show()}),PanelView.on(PanelView.EVENT_PANEL_SHOWN,function(event,panelID){panelID!==WorkspaceManager.DEFAULT_PANEL_ID?_panel.hide():(_updateButtonVisibility(),_addTabIcon()),$drawerBtn.toggleClass("selected-button",panelID===WorkspaceManager.DEFAULT_PANEL_ID)}),PanelView.on(PanelView.EVENT_PANEL_HIDDEN,function(event,panelID){panelID===WorkspaceManager.DEFAULT_PANEL_ID&&$drawerBtn.removeClass("selected-button")}),_updateButtonVisibility(),_observeStateChanges()}AppInit.appReady(_init)});