forked from phcode-dev/staging.phcode.dev
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathErrorPopupHelper.js
More file actions
1 lines (1 loc) · 2.5 KB
/
ErrorPopupHelper.js
File metadata and controls
1 lines (1 loc) · 2.5 KB
1
define(function(require,exports,module){const AnimationUtils=require("utils/AnimationUtils"),PopUpManager=require("widgets/PopUpManager"),ViewUtils=require("utils/ViewUtils");function displayErrorMessageAtCursor(errorMsg){var arrowBelow,cursorPos,cursorCoord,popoverRect,top,left,clip,arrowCenter,arrowLeft,self=this,POPOVER_MARGIN=10,POPOVER_ARROW_HALF_WIDTH=10,POPOVER_ARROW_HALF_BASE=13;function _removeListeners(){self.off(".msgbox")}function _clearMessagePopover(){self._$messagePopover&&self._$messagePopover.length>0&&(self._$messagePopover=null),_removeListeners()}function _removeMessagePopover(){self._$messagePopover&&PopUpManager.removePopUp(self._$messagePopover)}function _addListeners(){self.on("blur.msgbox",_removeMessagePopover).on("change.msgbox",_removeMessagePopover).on("cursorActivity.msgbox",_removeMessagePopover).on("update.msgbox",_removeMessagePopover)}self._$messagePopover&&_removeMessagePopover(),cursorPos=self.getCursorPos(),self._codeMirror.scrollIntoView(cursorPos),arrowBelow=(cursorCoord=self._codeMirror.charCoords(cursorPos)).top>100,self._$messagePopover=$("<div/>").addClass("popover-message").appendTo($("body")),arrowBelow||$("<div/>").addClass("arrowAbove").appendTo(self._$messagePopover),$("<div/>").addClass("text").appendTo(self._$messagePopover).html(errorMsg),arrowBelow&&$("<div/>").addClass("arrowBelow").appendTo(self._$messagePopover),popoverRect={top:top=arrowBelow?cursorCoord.top-self._$messagePopover.height()-10:cursorCoord.bottom+10,left:left=cursorCoord.left-self._$messagePopover.width()/2,height:self._$messagePopover.height(),width:self._$messagePopover.width()},(clip=ViewUtils.getElementClipSize($("#editor-holder"),popoverRect)).left>0?left+=clip.left:clip.right>0&&(left-=clip.right),self._$messagePopover.css({top:top,left:left}),arrowCenter=cursorCoord.left-left,arrowLeft=(arrowCenter=Math.min(popoverRect.width-13,Math.max(arrowCenter,13)))-10,arrowBelow?self._$messagePopover.find(".arrowBelow").css({"margin-left":arrowLeft}):self._$messagePopover.find(".arrowAbove").css({"margin-left":arrowLeft}),PopUpManager.addPopUp(this._$messagePopover,_clearMessagePopover,!0),_addListeners(),AnimationUtils.animateUsingClass(self._$messagePopover[0],"animateOpen").done(function(){self._$messagePopover&&self._$messagePopover.length>0&&(self._$messagePopover.addClass("open"),self.on("scroll.msgbox",_removeMessagePopover),AnimationUtils.animateUsingClass(self._$messagePopover[0],"animateClose",6e3).done(_removeMessagePopover))})}exports.displayErrorMessageAtCursor=displayErrorMessageAtCursor});