define(function(require,exports,module){var _=require("thirdparty/lodash"),EditorManager=require("editor/EditorManager"),DocumentManager=require("document/DocumentManager"),PreferencesManager=require("preferences/PreferencesManager"),ProjectManager=require("project/ProjectManager"),CommandManager=require("command/CommandManager"),Commands=require("command/Commands"),StringMatch=require("utils/StringMatch"),CodeInspection=require("language/CodeInspection"),LanguageManager=require("language/LanguageManager"),QuickViewManager=require("features/QuickViewManager"),FileSystem=require("filesystem/FileSystem"),PathConverters=require("languageTools/PathConverters"),TabstopManager=require("editor/TabstopManager"),Strings=require("strings"),StringUtils=require("utils/StringUtils"),Metrics=require("utils/Metrics"),FileUtils=require("file/FileUtils"),InlineMenu=require("widgets/InlineMenu").InlineMenu,marked=require("thirdparty/marked.min"),matcher=new StringMatch.StringMatcher({preferPrefixMatches:!0}),$lspDocPopup=null,_docTrackRAF=null,_docTrackList=null,_docLastPos="";function _hideDocPopup(){_docTrackRAF&&(cancelAnimationFrame(_docTrackRAF),_docTrackRAF=null),_docTrackList=null,_docLastPos="",$lspDocPopup&&$lspDocPopup.hide().empty()}function _positionDocPopup(){if($lspDocPopup&&_docTrackList&&_docTrackList.length){var listEl=_docTrackList[0];if(listEl.isConnected){var anchor=listEl.getBoundingClientRect();if(0!==anchor.width||0!==anchor.height){var GAP=0,winW=$(window).width(),winH=$(window).height(),pw=$lspDocPopup.outerWidth(),ph=$lspDocPopup.outerHeight(),left=anchor.right+0;left+pw>winW-8&&(left=anchor.left-pw-0),left=Math.max(8,left);var top=Math.max(8,Math.min(anchor.top,winH-ph-8)),pos=Math.round(left)+","+Math.round(top);pos!==_docLastPos&&(_docLastPos=pos,$lspDocPopup.css({left:left,top:top}))}}else _hideDocPopup()}}function _trackDocPopup(){_positionDocPopup(),_docTrackRAF=requestAnimationFrame(_trackDocPopup)}function _highlightCode(html){var hljs="undefined"!=typeof Phoenix&&Phoenix.libs&&Phoenix.libs.hljs;if(!hljs)return html;var $wrap=$("
").html(html);return $wrap.find("pre > code").each(function(){var $code=$(this),match=($code.attr("class")||"").match(/language-([\w-]+)/),lang=match&&match[1];if(lang&&hljs.getLanguage(lang))try{$code.html(hljs.highlight($code.text(),{language:lang}).value).addClass("hljs")}catch(e){}}),$wrap.html()}function _docToHtml(documentation){if(!documentation)return"";var md="string"==typeof documentation?documentation:documentation.value||"";if(!md.trim())return"";try{return _highlightCode(marked.parse(md))}catch(e){return _.escape(md)}}var SIGNATURE_HLJS_LANG={javascript:"typescript",jsx:"tsx",typescript:"typescript",tsx:"tsx"};function _signatureLang(){var editor=EditorManager.getActiveEditor(),id=editor&&editor.getLanguageForSelection&&editor.getLanguageForSelection().getId();return id?SIGNATURE_HLJS_LANG[id]||id:"typescript"}function _docPopupHtml(token){var parts=[],label=(token.label||"").trim(),detail=(token.detail||"").trim(),paramList=(token.labelDetails&&token.labelDetails.detail||"").trim(),signature=detail;if("("===paramList.charAt(0)&&-1===detail.indexOf("(")&&(signature=label+paramList+(detail?": "+detail:"")),signature&&signature!==label)try{parts.push(_highlightCode(marked.parse("```"+_signatureLang()+"\n"+signature+"\n```")))}catch(e){}var docHtml=_docToHtml(token.documentation);return docHtml&&parts.push(docHtml),parts.join("")}const COPY_ICON='';function _copyText(text){return navigator.clipboard&&navigator.clipboard.writeText?navigator.clipboard.writeText(text):new Promise(function(resolve,reject){try{const ta=document.createElement("textarea");ta.value=text,ta.style.cssText="position:fixed;opacity:0;pointer-events:none;",document.body.appendChild(ta),ta.select(),document.execCommand("copy"),document.body.removeChild(ta),resolve()}catch(e){reject(e)}})}function _addCopyButtons($popup){$popup.find("pre").each(function(){const $pre=$(this);$pre.children(".lsp-copy-btn").length||$("