Socket
Socket
Sign inDemoInstall

ment.io

Package Overview
Dependencies
Maintainers
1
Versions
15
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ment.io - npm Package Compare versions

Comparing version 0.9.12 to 0.9.14

2

bower.json
{
"name": "ment.io",
"version": "v0.9.12",
"version": "0.9.14",
"homepage": "https://github.com/jeff-collins/ment.io",

@@ -5,0 +5,0 @@ "authors": [

@@ -24,6 +24,6 @@ 'use strict';

remoteScope.search({
term: triggerText
term: triggerText.trim()
});
remoteScope.typedTerm = triggerText;
remoteScope.typedTerm = triggerText.trim();
};

@@ -61,11 +61,8 @@

if ($scope.syncTriggerText) {
$scope.typedTerm = text;
$scope.typedTerm = text.trim();
}
};
$scope.replaceText = function (triggerChar, item) {
var remoteScope = $scope.triggerCharMap[triggerChar];
var text = remoteScope.select({
item: item
});
$scope.replaceText = function (text) {
$scope.hideAll();
mentioUtil.replaceTriggerText($scope.targetElement, $scope.targetElementPath,

@@ -195,3 +192,3 @@ $scope.targetElementSelectedOffset, $scope.triggerCharSet, text, $scope.requireLeadingSpace);

if (activeMenuScope) {
if (event.which === 9) {
if (event.which === 9 || event.which === 13) {
event.preventDefault();

@@ -222,6 +219,5 @@ activeMenuScope.selectActive();

if (event.which === 13 || event.which === 32) {
if (event.which === 37 || event.which === 39) {
event.preventDefault();
activeMenuScope.selectActive();
}
}
}

@@ -284,5 +280,28 @@ }

var mentionInfo = mentioUtil.getTriggerInfo(scope.triggerCharSet, scope.requireLeadingSpace);
var isActive = scope.isActive();
var isContentEditable = scope.isContentEditable();
if (mentionInfo !== undefined) {
var mentionInfo = mentioUtil.getTriggerInfo(scope.triggerCharSet,
scope.requireLeadingSpace, isActive);
if (mentionInfo !== undefined &&
(
!isActive ||
(isActive &&
(
/* content editable selection changes to local nodes which
modifies the start position of the selection over time,
just consider triggerchar changes which
will have the odd effect that deleting a trigger char pops
the menu for a previous
trigger char sequence if one exists in a content editable */
(isContentEditable && mentionInfo.mentionTriggerChar ===
scope.currentMentionTriggerChar) ||
(!isContentEditable && mentionInfo.mentionPosition ===
scope.currentMentionPosition)
)
)
)
)
{
/** save selection info about the target control for later re-selection */

@@ -293,4 +312,7 @@ scope.targetElement = mentionInfo.mentionSelectedElement;

/* publish to external */
/* publish to external ngModel */
scope.setTriggerText(mentionInfo.mentionText);
/* remember current position */
scope.currentMentionPosition = mentionInfo.mentionPosition;
scope.currentMentionTriggerChar = mentionInfo.mentionTriggerChar;
/* perform query */

@@ -346,4 +368,11 @@ scope.query(mentionInfo.mentionTriggerChar, mentionInfo.mentionText);

this.selectItem = $scope.selectItem = function (item) {
$scope.hideMenu();
$scope.parentMentio.replaceText($scope.triggerChar, item);
var text = $scope.select({
item: item
});
if (typeof text.then === 'function') {
/* text is a promise, at least our best guess */
text.then($scope.parentMentio.replaceText);
} else {
$scope.parentMentio.replaceText(text);
}
};

@@ -508,3 +537,3 @@

var coordinates;
var mentionInfo = getTriggerInfo(triggerCharSet, requireLeadingSpace);
var mentionInfo = getTriggerInfo(triggerCharSet, requireLeadingSpace, false);

@@ -707,3 +736,3 @@ if (mentionInfo !== undefined) {

var mentionInfo = getTriggerInfo(triggerCharSet, requireLeadingSpace);
var mentionInfo = getTriggerInfo(triggerCharSet, requireLeadingSpace, true);

@@ -836,3 +865,3 @@ if (mentionInfo !== undefined) {

// public
function getTriggerInfo (triggerCharSet, requireLeadingSpace) {
function getTriggerInfo (triggerCharSet, requireLeadingSpace, menuAlreadyActive) {
var selected, path, offset;

@@ -851,2 +880,3 @@ if (selectedElementIsTextAreaOrInput()) {

var effectiveRange = getTextPrecedingCurrentSelection();
if (effectiveRange !== undefined && effectiveRange !== null) {

@@ -879,3 +909,9 @@ var mostRecentTriggerCharPos = -1;

triggerChar = effectiveRange.substring(mostRecentTriggerCharPos, mostRecentTriggerCharPos+1);
if (!(/[\xA0\s]/g.test(currentTriggerSnippet))) {
var firstSnippetChar = currentTriggerSnippet.substring(0,1);
var leadingSpace = currentTriggerSnippet.length > 0 &&
(
firstSnippetChar === ' ' ||
firstSnippetChar === '\xA0'
);
if (!leadingSpace && (menuAlreadyActive || !(/[\xA0\s]/g.test(currentTriggerSnippet)))) {
return {

@@ -882,0 +918,0 @@ mentionPosition: mostRecentTriggerCharPos,

@@ -1,1 +0,1 @@

"use strict";angular.module("mentio",[]).directive("mentio",["mentioUtil","$compile","$log","$document","$timeout",function(e,t,n,i,r){return{restrict:"A",scope:{macros:"=mentioMacros",search:"&mentioSearch",select:"&mentioSelect",items:"=mentioItems",typedTerm:"=mentioTypedTerm",altId:"=mentioId",requireLeadingSpace:"=mentioRequireLeadingSpace",ngModel:"="},controller:["$scope","$timeout","$attrs",function(t,n,r){t.query=function(e,n){var i=t.triggerCharMap[e];i.showMenu(),i.search({term:n}),i.typedTerm=n},t.defaultSearch=function(e){var n=[];angular.forEach(t.items,function(t){t.label.toUpperCase().indexOf(e.term.toUpperCase())>=0&&n.push(t)}),t.localItems=n},t.bridgeSearch=function(e){var n=r.mentioSearch?t.search:t.defaultSearch;n({term:e})},t.defaultSelect=function(e){return t.defaultTriggerChar+e.item.label},t.bridgeSelect=function(e){var n=r.mentioSelect?t.select:t.defaultSelect;return n({item:e})},t.setTriggerText=function(e){t.syncTriggerText&&(t.typedTerm=e)},t.replaceText=function(i,r){var o=t.triggerCharMap[i],a=o.select({item:r});if(e.replaceTriggerText(t.targetElement,t.targetElementPath,t.targetElementSelectedOffset,t.triggerCharSet,a,t.requireLeadingSpace),t.setTriggerText(""),angular.element(t.targetElement).triggerHandler("change"),t.isContentEditable()){t.contentEditableMenuPasted=!0;var c=n(function(){t.contentEditableMenuPasted=!1},100);t.$on("$destroy",function(){n.cancel(c)})}},t.hideAll=function(){for(var e in t.triggerCharMap)t.triggerCharMap.hasOwnProperty(e)&&t.triggerCharMap[e].hideMenu()},t.getActiveMenuScope=function(){for(var e in t.triggerCharMap)if(t.triggerCharMap.hasOwnProperty(e)&&t.triggerCharMap[e].visible)return t.triggerCharMap[e];return null},t.selectActive=function(){for(var e in t.triggerCharMap)t.triggerCharMap.hasOwnProperty(e)&&t.triggerCharMap[e].visible&&t.triggerCharMap[e].selectActive()},t.isActive=function(){for(var e in t.triggerCharMap)if(t.triggerCharMap.hasOwnProperty(e)&&t.triggerCharMap[e].visible)return!0;return!1},t.isContentEditable=function(){return"INPUT"!==t.targetElement.nodeName&&"TEXTAREA"!==t.targetElement.nodeName},t.replaceMacro=function(i,r){r?e.replaceMacroText(t.targetElement,t.targetElementPath,t.targetElementSelectedOffset,t.macros,t.macros[i]):(t.replacingMacro=!0,t.timer=n(function(){e.replaceMacroText(t.targetElement,t.targetElementPath,t.targetElementSelectedOffset,t.macros,t.macros[i]),angular.element(t.targetElement).triggerHandler("change"),t.replacingMacro=!1},300),t.$on("$destroy",function(){n.cancel(t.timer)}))},t.addMenu=function(e){e.parentScope&&t.triggerCharMap.hasOwnProperty(e.triggerChar)||(t.triggerCharMap[e.triggerChar]=e,void 0===t.triggerCharSet&&(t.triggerCharSet=[]),t.triggerCharSet.push(e.triggerChar),e.setParent(t))},t.$on("menuCreated",function(e,n){(void 0!==r.id||void 0!==r.mentioId)&&(r.id===n.targetElement||void 0!==r.mentioId&&t.altId===n.targetElement)&&t.addMenu(n.scope)}),i.on("click",function(){t.isActive()&&t.$apply(function(){t.hideAll()})}),i.on("keydown keypress paste",function(e){var n=t.getActiveMenuScope();n&&(9===e.which&&(e.preventDefault(),n.selectActive()),27===e.which&&(e.preventDefault(),n.$apply(function(){n.hideMenu()})),40===e.which&&(e.preventDefault(),n.$apply(function(){n.activateNextItem()})),38===e.which&&(e.preventDefault(),n.$apply(function(){n.activatePreviousItem()})),(13===e.which||32===e.which)&&(e.preventDefault(),n.selectActive()))})}],link:function(i,o,a){if(i.triggerCharMap={},i.targetElement=o,a.$set("autocomplete","off"),a.mentioItems){i.localItems=[],i.parentScope=i;var c=a.mentioSearch?' mentio-items="items"':' mentio-items="localItems"';i.defaultTriggerChar=a.mentioTriggerChar?i.$eval(a.mentioTriggerChar):"@";var l='<mentio-menu mentio-search="bridgeSearch(term)" mentio-select="bridgeSelect(item)"'+c;a.mentioTemplateUrl&&(l=l+' mentio-template-url="'+a.mentioTemplateUrl+'"'),l=l+" mentio-trigger-char=\"'"+i.defaultTriggerChar+'\'" mentio-parent-scope="parentScope"/>';var s=t(l),m=s(i);o.parent().append(m)}a.mentioTypedTerm&&(i.syncTriggerText=!0),i.$watch("ngModel",function(){if(void 0===i.triggerCharSet)return void n.error("Error, no mentio-items attribute was provided, and no separate mentio-menus were specified. Nothing to do.");if(i.contentEditableMenuPasted)return void(i.contentEditableMenuPasted=!1);i.replacingMacro&&(r.cancel(i.timer),i.replacingMacro=!1);var t=e.getTriggerInfo(i.triggerCharSet,i.requireLeadingSpace);if(void 0!==t)i.targetElement=t.mentionSelectedElement,i.targetElementPath=t.mentionSelectedPath,i.targetElementSelectedOffset=t.mentionSelectedOffset,i.setTriggerText(t.mentionText),i.query(t.mentionTriggerChar,t.mentionText);else{i.setTriggerText(""),i.hideAll();var o=e.getMacroMatch(i.macros);void 0!==o&&(i.targetElement=o.macroSelectedElement,i.targetElementPath=o.macroSelectedPath,i.targetElementSelectedOffset=o.macroSelectedOffset,i.replaceMacro(o.macroText,o.macroHasTrailingSpace))}})}}}]).directive("mentioMenu",["mentioUtil","$rootScope","$log","$window","$document",function(e,t,n,i,r){return{restrict:"E",scope:{search:"&mentioSearch",select:"&mentioSelect",items:"=mentioItems",triggerChar:"=mentioTriggerChar",forElem:"=mentioFor",parentScope:"=mentioParentScope"},templateUrl:function(e,t){return void 0!==t.mentioTemplateUrl?t.mentioTemplateUrl:"mentio-menu.tpl.html"},controller:["$scope",function(e){e.visible=!1,this.activate=e.activate=function(t){e.activeItem=t},this.isActive=e.isActive=function(t){return e.activeItem===t},this.selectItem=e.selectItem=function(t){e.hideMenu(),e.parentMentio.replaceText(e.triggerChar,t)},e.activateNextItem=function(){var t=e.items.indexOf(e.activeItem);this.activate(e.items[(t+1)%e.items.length])},e.activatePreviousItem=function(){var t=e.items.indexOf(e.activeItem);this.activate(e.items[0===t?e.items.length-1:t-1])},e.selectActive=function(){e.selectItem(e.activeItem)},e.isVisible=function(){return e.visible},e.showMenu=function(){e.visible||(e.requestVisiblePendingSearch=!0)},e.setParent=function(t){e.parentMentio=t,e.targetElement=t.targetElement}}],link:function(o,a){if(a[0].parentNode.removeChild(a[0]),r[0].body.appendChild(a[0]),o.menuElement=a,o.parentScope)o.parentScope.addMenu(o);else{if(!o.forElem)return void n.error("mentio-menu requires a target element in tbe mentio-for attribute");if(!o.triggerChar)return void n.error("mentio-menu requires a trigger char");t.$broadcast("menuCreated",{targetElement:o.forElem,scope:o})}angular.element(i).bind("resize",function(){if(o.isVisible()){var t=[];t.push(o.triggerChar),e.popUnderMention(t,a,o.requireLeadingSpace)}}),o.$watch("items",function(e){e&&e.length>0?(o.activate(e[0]),!o.visible&&o.requestVisiblePendingSearch&&(o.visible=!0,o.requestVisiblePendingSearch=!1)):o.hideMenu()}),o.$watch("isVisible()",function(t){if(t){var n=[];n.push(o.triggerChar),e.popUnderMention(n,a,o.requireLeadingSpace)}}),o.hideMenu=function(){o.visible=!1,a.css("display","none")}}}}]).directive("mentioMenuItem",function(){return{restrict:"A",scope:{item:"=mentioMenuItem"},require:"^mentioMenu",link:function(e,t,n,i){e.$watch(function(){return i.isActive(e.item)},function(e){e?t.addClass("active"):t.removeClass("active")}),t.bind("mouseenter",function(){e.$apply(function(){i.activate(e.item)})}),t.bind("click",function(t){t.preventDefault(),i.selectItem(e.item)})}}}).filter("unsafe",["$sce",function(e){return function(t){return e.trustAsHtml(t)}}]).filter("mentioHighlight",function(){function e(e){return e.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}return function(t,n,i){if(n){var r=i?'<span class="'+i+'">$&</span>':"<strong>$&</strong>";return(""+t).replace(new RegExp(e(n),"gi"),r)}return t}}),angular.module("mentio").factory("mentioUtil",["$window","$location","$anchorScroll","$timeout",function(e,t,n,i){function r(e,t,n){var r,c=p(e,n);void 0!==c?(r=a()?S(document.activeElement,c.mentionPosition):v(c.mentionPosition),t.css({top:r.top+"px",left:r.left+"px",position:"absolute",zIndex:100,display:"block"}),i(function(){o(t)},0)):t.css({display:"none"})}function o(t){for(var n,i=20,r=100,o=t[0];void 0===n||0===n.height;)if(n=o.getBoundingClientRect(),0===n.height&&(o=o.childNodes[0],void 0===o||!o.getBoundingClientRect))return;var a=n.top,c=a+n.height;if(0>a)e.scrollTo(0,e.pageYOffset+n.top-i);else if(c>e.innerHeight){var l=e.pageYOffset+n.top-i;l-e.pageYOffset>r&&(l=e.pageYOffset+r);var s=e.pageYOffset-(e.innerHeight-c);s>l&&(s=l),e.scrollTo(0,s)}}function a(){var e=document.activeElement;if(null!==e){var t=e.nodeName,n=e.getAttribute("type");return"INPUT"===t&&"text"===n||"TEXTAREA"===t}return!1}function c(e,t,n){for(var i,r=e,o=0;o<t.length;o++){if(r=r.childNodes[t[o]],void 0===r)return;for(;r.length<n;)n-=r.length,r=r.nextSibling}if(document.selection&&document.selection.createRange)i=document.selection.createRange().duplicate(),i.select(r),i.selectStartOffset(n),i.selectEndOffset(n),i.collapse(!0),document.selection.removeAllRanges(),document.selection.addRange(i);else if(window.getSelection){var a=window.getSelection();i=document.createRange(),i.setStart(r,n),i.setEnd(r,n),i.collapse(!0);try{a.removeAllRanges()}catch(c){}a.addRange(i),e.focus()}}function l(e,t,n){var i,r;if(document.selection&&document.selection.createRange)i=document.selection.createRange().duplicate(),i.selectStartOffset(t),i.selectEndOffset(n),i.collapse(!1),i.deleteContents(),i.pasteHTML(e);else if(window.getSelection){r=window.getSelection(),i=document.createRange(),i.setStart(r.anchorNode,t),i.setEnd(r.anchorNode,n),i.deleteContents();var o=document.createElement("div");o.innerHTML=e;for(var a,c,l=document.createDocumentFragment();a=o.firstChild;)c=l.appendChild(a);i.insertNode(l),c&&(i=i.cloneRange(),i.setStartAfter(c),i.collapse(!0),r.removeAllRanges(),r.addRange(i))}}function s(e,t,n){var i=e.nodeName;"INPUT"===i||"TEXTAREA"===i?e!==document.activeElement&&e.focus():c(e,t,n)}function m(e,t,n,i,r){s(e,t,n);var o=u(i);if(o.macroHasTrailingSpace&&(o.macroText=o.macroText+" ",r+=" "),void 0!==o){var c=document.activeElement;if(a())if(document.selection){c.focus();var m=document.selection.createRange();m.selectStartOffset(o.macroPosition),m.selectEndOffset(o.macroPosition+o.macroText.length),m.text=r}else{var d=o.macroPosition,g=o.macroPosition+o.macroText.length;c.value=c.value.substring(0,d)+r+c.value.substring(g,c.value.length),c.selectionStart=d+r.length,c.selectionEnd=d+r.length}else l(r,o.macroPosition,o.macroPosition+o.macroText.length)}}function d(e,t,n,i,r,o){s(e,t,n);var c=p(i,o);if(void 0!==c)if(a()){var m=document.activeElement;if(r+=" ",document.selection){m.focus();var d=document.selection.createRange();d.selectStartOffset(c.mentionPosition),d.selectEndOffset(c.mentionPosition+c.mentionText.length),d.text=r}else{var g=c.mentionPosition,u=c.mentionPosition+c.mentionText.length+1;m.value=m.value.substring(0,g)+r+m.value.substring(u,m.value.length),m.selectionStart=g+r.length,m.selectionEnd=g+r.length}}else r+=" ",l(r,c.mentionPosition,c.mentionPosition+c.mentionText.length+1)}function g(e){if(null===e.parentNode)return 0;for(var t=0;t<e.parentNode.childNodes.length;t++){var n=e.parentNode.childNodes[t];if(n===e)return t}}function u(e){var t,n,i=[];if(a())t=document.activeElement;else{var r=f();r&&(t=r.selected,i=r.path,n=r.offset)}var o=h();if(void 0!==o&&null!==o){var c,l=!1;if(o.length>0&&(" "===o.charAt(o.length-1)||" "===o.charAt(o.length-1))&&(l=!0,o=o.substring(0,o.length-1)),angular.forEach(e,function(e,r){var a=o.toUpperCase().lastIndexOf(r.toUpperCase());if(a>=0&&r.length+a===o.length){var s=a-1;(0===a||" "===o.charAt(s)||" "===o.charAt(s))&&(c={macroPosition:a,macroText:r,macroSelectedElement:t,macroSelectedPath:i,macroSelectedOffset:n,macroHasTrailingSpace:l})}}),c)return c}}function f(){var e,t=window.getSelection(),n=t.anchorNode,i=[];if(null!=n){for(var r,o=n.contentEditable;null!==n&&"true"!==o;)r=g(n),i.push(r),n=n.parentNode,null!==n&&(o=n.contentEditable);return i.reverse(),e=t.getRangeAt(0).startOffset,{selected:n,path:i,offset:e}}}function p(e,t){var n,i,r;if(a())n=document.activeElement;else{var o=f();o&&(n=o.selected,i=o.path,r=o.offset)}var c=h();if(void 0!==c&&null!==c){var l,s=-1;if(e.forEach(function(e){var t=c.lastIndexOf(e);t>s&&(s=t,l=e)}),s>=0&&(0===s||!t||/[\xA0\s]/g.test(c.substring(s-1,s)))){var m=c.substring(s+1,c.length);if(l=c.substring(s,s+1),!/[\xA0\s]/g.test(m))return{mentionPosition:s,mentionText:m,mentionSelectedElement:n,mentionSelectedPath:i,mentionSelectedOffset:r,mentionTriggerChar:l}}}}function h(){var e;if(a()){var t=document.activeElement;if(void 0!==document.selection){t.focus();var n=document.selection.createRange();e=n.text}else if(void 0!==t.selectionStart){var i=t.selectionStart;e=t.value.substring(0,i)}}else{var r=window.getSelection().anchorNode;if(null!=r){var o=r.textContent,c=window.getSelection().getRangeAt(0).startOffset;c>=0&&(e=o.substring(0,c))}}return e}function v(e){var t,n,i="",r="&#xfeff;",o="sel_"+(new Date).getTime()+"_"+Math.random().toString().substr(2);if(document.selection&&document.selection.createRange)n=document.selection.createRange().duplicate(),n.selectStartOffset(e),n.selectEndOffset(e),n.collapse(!1),n.pasteHTML('<span id="'+o+'" style="position: relative;">'+r+"</span>"),t=document.getElementById(o);else if(window.getSelection){var a=window.getSelection();n=document.createRange(),n.setStart(a.anchorNode,e),n.setEnd(a.anchorNode,e),n.collapse(!1),t=document.createElement("span"),t.id=o,t.appendChild(document.createTextNode(i)),n.insertNode(t)}var c=t,l={left:0,top:t.offsetHeight};do l.left+=c.offsetLeft,l.top+=c.offsetTop;while(c=c.offsetParent);return t.parentNode.removeChild(t),l}function S(e,t){var n=["direction","boxSizing","width","height","overflowX","overflowY","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","paddingTop","paddingRight","paddingBottom","paddingLeft","fontStyle","fontVariant","fontWeight","fontStretch","fontSize","fontSizeAdjust","lineHeight","fontFamily","textAlign","textTransform","textIndent","textDecoration","letterSpacing","wordSpacing"],i=null!==window.mozInnerScreenX,r=document.createElement("div");r.id="input-textarea-caret-position-mirror-div",document.body.appendChild(r);var o=r.style,a=window.getComputedStyle?getComputedStyle(e):e.currentStyle;o.whiteSpace="pre-wrap","INPUT"!==e.nodeName&&(o.wordWrap="break-word"),o.position="absolute",o.visibility="hidden",n.forEach(function(e){o[e]=a[e]}),i?(o.width=parseInt(a.width)-2+"px",e.scrollHeight>parseInt(a.height)&&(o.overflowY="scroll")):o.overflow="hidden",r.textContent=e.value.substring(0,t),"INPUT"===e.nodeName&&(r.textContent=r.textContent.replace(/\s/g," "));var c=document.createElement("span");c.textContent=e.value.substring(t)||".",r.appendChild(c);var l={top:c.offsetTop+parseInt(a.borderTopWidth)+c.offsetHeight,left:c.offsetLeft+parseInt(a.borderLeftWidth)},s=e;do l.left+=s.offsetLeft,l.top+=s.offsetTop;while(s=s.offsetParent);return document.body.removeChild(r),l}return{popUnderMention:r,replaceMacroText:m,replaceTriggerText:d,getMacroMatch:u,getTriggerInfo:p,selectElement:c,getTextAreaOrInputUnderlinePosition:S,getTextPrecedingCurrentSelection:h,getContentEditableSelectedPath:f,getNodePositionInParent:g,getContentEditableCaretPosition:v,pasteHtml:l,resetSelection:s,scrollIntoView:o}}]),angular.module("mentio").run(["$templateCache",function(e){e.put("mentio-menu.tpl.html",'<style>\n.scrollable-menu {\n height: auto;\n max-height: 300px;\n overflow: auto;\n}\n\n.menu-highlighted {\n font-weight: bold;\n}\n</style>\n<ul class="dropdown-menu scrollable-menu" style="display:block">\n <li mentio-menu-item="item" ng-repeat="item in items track by $index">\n <a class="text-primary" ng-bind-html="item.label | mentioHighlight:typedTerm:\'menu-highlighted\' | unsafe"></a>\n </li>\n</ul>')}]);
"use strict";angular.module("mentio",[]).directive("mentio",["mentioUtil","$compile","$log","$document","$timeout",function(e,t,n,i,r){return{restrict:"A",scope:{macros:"=mentioMacros",search:"&mentioSearch",select:"&mentioSelect",items:"=mentioItems",typedTerm:"=mentioTypedTerm",altId:"=mentioId",requireLeadingSpace:"=mentioRequireLeadingSpace",ngModel:"="},controller:["$scope","$timeout","$attrs",function(t,n,r){t.query=function(e,n){var i=t.triggerCharMap[e];i.showMenu(),i.search({term:n.trim()}),i.typedTerm=n.trim()},t.defaultSearch=function(e){var n=[];angular.forEach(t.items,function(t){t.label.toUpperCase().indexOf(e.term.toUpperCase())>=0&&n.push(t)}),t.localItems=n},t.bridgeSearch=function(e){var n=r.mentioSearch?t.search:t.defaultSearch;n({term:e})},t.defaultSelect=function(e){return t.defaultTriggerChar+e.item.label},t.bridgeSelect=function(e){var n=r.mentioSelect?t.select:t.defaultSelect;return n({item:e})},t.setTriggerText=function(e){t.syncTriggerText&&(t.typedTerm=e.trim())},t.replaceText=function(i){if(t.hideAll(),e.replaceTriggerText(t.targetElement,t.targetElementPath,t.targetElementSelectedOffset,t.triggerCharSet,i,t.requireLeadingSpace),t.setTriggerText(""),angular.element(t.targetElement).triggerHandler("change"),t.isContentEditable()){t.contentEditableMenuPasted=!0;var r=n(function(){t.contentEditableMenuPasted=!1},100);t.$on("$destroy",function(){n.cancel(r)})}},t.hideAll=function(){for(var e in t.triggerCharMap)t.triggerCharMap.hasOwnProperty(e)&&t.triggerCharMap[e].hideMenu()},t.getActiveMenuScope=function(){for(var e in t.triggerCharMap)if(t.triggerCharMap.hasOwnProperty(e)&&t.triggerCharMap[e].visible)return t.triggerCharMap[e];return null},t.selectActive=function(){for(var e in t.triggerCharMap)t.triggerCharMap.hasOwnProperty(e)&&t.triggerCharMap[e].visible&&t.triggerCharMap[e].selectActive()},t.isActive=function(){for(var e in t.triggerCharMap)if(t.triggerCharMap.hasOwnProperty(e)&&t.triggerCharMap[e].visible)return!0;return!1},t.isContentEditable=function(){return"INPUT"!==t.targetElement.nodeName&&"TEXTAREA"!==t.targetElement.nodeName},t.replaceMacro=function(i,r){r?e.replaceMacroText(t.targetElement,t.targetElementPath,t.targetElementSelectedOffset,t.macros,t.macros[i]):(t.replacingMacro=!0,t.timer=n(function(){e.replaceMacroText(t.targetElement,t.targetElementPath,t.targetElementSelectedOffset,t.macros,t.macros[i]),angular.element(t.targetElement).triggerHandler("change"),t.replacingMacro=!1},300),t.$on("$destroy",function(){n.cancel(t.timer)}))},t.addMenu=function(e){e.parentScope&&t.triggerCharMap.hasOwnProperty(e.triggerChar)||(t.triggerCharMap[e.triggerChar]=e,void 0===t.triggerCharSet&&(t.triggerCharSet=[]),t.triggerCharSet.push(e.triggerChar),e.setParent(t))},t.$on("menuCreated",function(e,n){(void 0!==r.id||void 0!==r.mentioId)&&(r.id===n.targetElement||void 0!==r.mentioId&&t.altId===n.targetElement)&&t.addMenu(n.scope)}),i.on("click",function(){t.isActive()&&t.$apply(function(){t.hideAll()})}),i.on("keydown keypress paste",function(e){var n=t.getActiveMenuScope();n&&((9===e.which||13===e.which)&&(e.preventDefault(),n.selectActive()),27===e.which&&(e.preventDefault(),n.$apply(function(){n.hideMenu()})),40===e.which&&(e.preventDefault(),n.$apply(function(){n.activateNextItem()})),38===e.which&&(e.preventDefault(),n.$apply(function(){n.activatePreviousItem()})),(37===e.which||39===e.which)&&e.preventDefault())})}],link:function(i,o,a){if(i.triggerCharMap={},i.targetElement=o,a.$set("autocomplete","off"),a.mentioItems){i.localItems=[],i.parentScope=i;var c=a.mentioSearch?' mentio-items="items"':' mentio-items="localItems"';i.defaultTriggerChar=a.mentioTriggerChar?i.$eval(a.mentioTriggerChar):"@";var l='<mentio-menu mentio-search="bridgeSearch(term)" mentio-select="bridgeSelect(item)"'+c;a.mentioTemplateUrl&&(l=l+' mentio-template-url="'+a.mentioTemplateUrl+'"'),l=l+" mentio-trigger-char=\"'"+i.defaultTriggerChar+'\'" mentio-parent-scope="parentScope"/>';var s=t(l),m=s(i);o.parent().append(m)}a.mentioTypedTerm&&(i.syncTriggerText=!0),i.$watch("ngModel",function(){if(void 0===i.triggerCharSet)return void n.error("Error, no mentio-items attribute was provided, and no separate mentio-menus were specified. Nothing to do.");if(i.contentEditableMenuPasted)return void(i.contentEditableMenuPasted=!1);i.replacingMacro&&(r.cancel(i.timer),i.replacingMacro=!1);var t=i.isActive(),o=i.isContentEditable(),a=e.getTriggerInfo(i.triggerCharSet,i.requireLeadingSpace,t);if(void 0!==a&&(!t||t&&(o&&a.mentionTriggerChar===i.currentMentionTriggerChar||!o&&a.mentionPosition===i.currentMentionPosition)))i.targetElement=a.mentionSelectedElement,i.targetElementPath=a.mentionSelectedPath,i.targetElementSelectedOffset=a.mentionSelectedOffset,i.setTriggerText(a.mentionText),i.currentMentionPosition=a.mentionPosition,i.currentMentionTriggerChar=a.mentionTriggerChar,i.query(a.mentionTriggerChar,a.mentionText);else{i.setTriggerText(""),i.hideAll();var c=e.getMacroMatch(i.macros);void 0!==c&&(i.targetElement=c.macroSelectedElement,i.targetElementPath=c.macroSelectedPath,i.targetElementSelectedOffset=c.macroSelectedOffset,i.replaceMacro(c.macroText,c.macroHasTrailingSpace))}})}}}]).directive("mentioMenu",["mentioUtil","$rootScope","$log","$window","$document",function(e,t,n,i,r){return{restrict:"E",scope:{search:"&mentioSearch",select:"&mentioSelect",items:"=mentioItems",triggerChar:"=mentioTriggerChar",forElem:"=mentioFor",parentScope:"=mentioParentScope"},templateUrl:function(e,t){return void 0!==t.mentioTemplateUrl?t.mentioTemplateUrl:"mentio-menu.tpl.html"},controller:["$scope",function(e){e.visible=!1,this.activate=e.activate=function(t){e.activeItem=t},this.isActive=e.isActive=function(t){return e.activeItem===t},this.selectItem=e.selectItem=function(t){var n=e.select({item:t});"function"==typeof n.then?n.then(e.parentMentio.replaceText):e.parentMentio.replaceText(n)},e.activateNextItem=function(){var t=e.items.indexOf(e.activeItem);this.activate(e.items[(t+1)%e.items.length])},e.activatePreviousItem=function(){var t=e.items.indexOf(e.activeItem);this.activate(e.items[0===t?e.items.length-1:t-1])},e.selectActive=function(){e.selectItem(e.activeItem)},e.isVisible=function(){return e.visible},e.showMenu=function(){e.visible||(e.requestVisiblePendingSearch=!0)},e.setParent=function(t){e.parentMentio=t,e.targetElement=t.targetElement}}],link:function(o,a){if(a[0].parentNode.removeChild(a[0]),r[0].body.appendChild(a[0]),o.menuElement=a,o.parentScope)o.parentScope.addMenu(o);else{if(!o.forElem)return void n.error("mentio-menu requires a target element in tbe mentio-for attribute");if(!o.triggerChar)return void n.error("mentio-menu requires a trigger char");t.$broadcast("menuCreated",{targetElement:o.forElem,scope:o})}angular.element(i).bind("resize",function(){if(o.isVisible()){var t=[];t.push(o.triggerChar),e.popUnderMention(t,a,o.requireLeadingSpace)}}),o.$watch("items",function(e){e&&e.length>0?(o.activate(e[0]),!o.visible&&o.requestVisiblePendingSearch&&(o.visible=!0,o.requestVisiblePendingSearch=!1)):o.hideMenu()}),o.$watch("isVisible()",function(t){if(t){var n=[];n.push(o.triggerChar),e.popUnderMention(n,a,o.requireLeadingSpace)}}),o.hideMenu=function(){o.visible=!1,a.css("display","none")}}}}]).directive("mentioMenuItem",function(){return{restrict:"A",scope:{item:"=mentioMenuItem"},require:"^mentioMenu",link:function(e,t,n,i){e.$watch(function(){return i.isActive(e.item)},function(e){e?t.addClass("active"):t.removeClass("active")}),t.bind("mouseenter",function(){e.$apply(function(){i.activate(e.item)})}),t.bind("click",function(t){t.preventDefault(),i.selectItem(e.item)})}}}).filter("unsafe",["$sce",function(e){return function(t){return e.trustAsHtml(t)}}]).filter("mentioHighlight",function(){function e(e){return e.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}return function(t,n,i){if(n){var r=i?'<span class="'+i+'">$&</span>':"<strong>$&</strong>";return(""+t).replace(new RegExp(e(n),"gi"),r)}return t}}),angular.module("mentio").factory("mentioUtil",["$window","$location","$anchorScroll","$timeout",function(e,t,n,i){function r(e,t,n){var r,c=h(e,n,!1);void 0!==c?(r=a()?S(document.activeElement,c.mentionPosition):v(c.mentionPosition),t.css({top:r.top+"px",left:r.left+"px",position:"absolute",zIndex:100,display:"block"}),i(function(){o(t)},0)):t.css({display:"none"})}function o(t){for(var n,i=20,r=100,o=t[0];void 0===n||0===n.height;)if(n=o.getBoundingClientRect(),0===n.height&&(o=o.childNodes[0],void 0===o||!o.getBoundingClientRect))return;var a=n.top,c=a+n.height;if(0>a)e.scrollTo(0,e.pageYOffset+n.top-i);else if(c>e.innerHeight){var l=e.pageYOffset+n.top-i;l-e.pageYOffset>r&&(l=e.pageYOffset+r);var s=e.pageYOffset-(e.innerHeight-c);s>l&&(s=l),e.scrollTo(0,s)}}function a(){var e=document.activeElement;if(null!==e){var t=e.nodeName,n=e.getAttribute("type");return"INPUT"===t&&"text"===n||"TEXTAREA"===t}return!1}function c(e,t,n){for(var i,r=e,o=0;o<t.length;o++){if(r=r.childNodes[t[o]],void 0===r)return;for(;r.length<n;)n-=r.length,r=r.nextSibling}if(document.selection&&document.selection.createRange)i=document.selection.createRange().duplicate(),i.select(r),i.selectStartOffset(n),i.selectEndOffset(n),i.collapse(!0),document.selection.removeAllRanges(),document.selection.addRange(i);else if(window.getSelection){var a=window.getSelection();i=document.createRange(),i.setStart(r,n),i.setEnd(r,n),i.collapse(!0);try{a.removeAllRanges()}catch(c){}a.addRange(i),e.focus()}}function l(e,t,n){var i,r;if(document.selection&&document.selection.createRange)i=document.selection.createRange().duplicate(),i.selectStartOffset(t),i.selectEndOffset(n),i.collapse(!1),i.deleteContents(),i.pasteHTML(e);else if(window.getSelection){r=window.getSelection(),i=document.createRange(),i.setStart(r.anchorNode,t),i.setEnd(r.anchorNode,n),i.deleteContents();var o=document.createElement("div");o.innerHTML=e;for(var a,c,l=document.createDocumentFragment();a=o.firstChild;)c=l.appendChild(a);i.insertNode(l),c&&(i=i.cloneRange(),i.setStartAfter(c),i.collapse(!0),r.removeAllRanges(),r.addRange(i))}}function s(e,t,n){var i=e.nodeName;"INPUT"===i||"TEXTAREA"===i?e!==document.activeElement&&e.focus():c(e,t,n)}function m(e,t,n,i,r){s(e,t,n);var o=u(i);if(o.macroHasTrailingSpace&&(o.macroText=o.macroText+" ",r+=" "),void 0!==o){var c=document.activeElement;if(a())if(document.selection){c.focus();var m=document.selection.createRange();m.selectStartOffset(o.macroPosition),m.selectEndOffset(o.macroPosition+o.macroText.length),m.text=r}else{var d=o.macroPosition,g=o.macroPosition+o.macroText.length;c.value=c.value.substring(0,d)+r+c.value.substring(g,c.value.length),c.selectionStart=d+r.length,c.selectionEnd=d+r.length}else l(r,o.macroPosition,o.macroPosition+o.macroText.length)}}function d(e,t,n,i,r,o){s(e,t,n);var c=h(i,o,!0);if(void 0!==c)if(a()){var m=document.activeElement;if(r+=" ",document.selection){m.focus();var d=document.selection.createRange();d.selectStartOffset(c.mentionPosition),d.selectEndOffset(c.mentionPosition+c.mentionText.length),d.text=r}else{var g=c.mentionPosition,u=c.mentionPosition+c.mentionText.length+1;m.value=m.value.substring(0,g)+r+m.value.substring(u,m.value.length),m.selectionStart=g+r.length,m.selectionEnd=g+r.length}}else r+=" ",l(r,c.mentionPosition,c.mentionPosition+c.mentionText.length+1)}function g(e){if(null===e.parentNode)return 0;for(var t=0;t<e.parentNode.childNodes.length;t++){var n=e.parentNode.childNodes[t];if(n===e)return t}}function u(e){var t,n,i=[];if(a())t=document.activeElement;else{var r=f();r&&(t=r.selected,i=r.path,n=r.offset)}var o=p();if(void 0!==o&&null!==o){var c,l=!1;if(o.length>0&&(" "===o.charAt(o.length-1)||" "===o.charAt(o.length-1))&&(l=!0,o=o.substring(0,o.length-1)),angular.forEach(e,function(e,r){var a=o.toUpperCase().lastIndexOf(r.toUpperCase());if(a>=0&&r.length+a===o.length){var s=a-1;(0===a||" "===o.charAt(s)||" "===o.charAt(s))&&(c={macroPosition:a,macroText:r,macroSelectedElement:t,macroSelectedPath:i,macroSelectedOffset:n,macroHasTrailingSpace:l})}}),c)return c}}function f(){var e,t=window.getSelection(),n=t.anchorNode,i=[];if(null!=n){for(var r,o=n.contentEditable;null!==n&&"true"!==o;)r=g(n),i.push(r),n=n.parentNode,null!==n&&(o=n.contentEditable);return i.reverse(),e=t.getRangeAt(0).startOffset,{selected:n,path:i,offset:e}}}function h(e,t,n){var i,r,o;if(a())i=document.activeElement;else{var c=f();c&&(i=c.selected,r=c.path,o=c.offset)}var l=p();if(void 0!==l&&null!==l){var s,m=-1;if(e.forEach(function(e){var t=l.lastIndexOf(e);t>m&&(m=t,s=e)}),m>=0&&(0===m||!t||/[\xA0\s]/g.test(l.substring(m-1,m)))){var d=l.substring(m+1,l.length);s=l.substring(m,m+1);var g=d.substring(0,1),u=d.length>0&&(" "===g||" "===g);if(!u&&(n||!/[\xA0\s]/g.test(d)))return{mentionPosition:m,mentionText:d,mentionSelectedElement:i,mentionSelectedPath:r,mentionSelectedOffset:o,mentionTriggerChar:s}}}}function p(){var e;if(a()){var t=document.activeElement;if(void 0!==document.selection){t.focus();var n=document.selection.createRange();e=n.text}else if(void 0!==t.selectionStart){var i=t.selectionStart;e=t.value.substring(0,i)}}else{var r=window.getSelection().anchorNode;if(null!=r){var o=r.textContent,c=window.getSelection().getRangeAt(0).startOffset;c>=0&&(e=o.substring(0,c))}}return e}function v(e){var t,n,i="",r="&#xfeff;",o="sel_"+(new Date).getTime()+"_"+Math.random().toString().substr(2);if(document.selection&&document.selection.createRange)n=document.selection.createRange().duplicate(),n.selectStartOffset(e),n.selectEndOffset(e),n.collapse(!1),n.pasteHTML('<span id="'+o+'" style="position: relative;">'+r+"</span>"),t=document.getElementById(o);else if(window.getSelection){var a=window.getSelection();n=document.createRange(),n.setStart(a.anchorNode,e),n.setEnd(a.anchorNode,e),n.collapse(!1),t=document.createElement("span"),t.id=o,t.appendChild(document.createTextNode(i)),n.insertNode(t)}var c=t,l={left:0,top:t.offsetHeight};do l.left+=c.offsetLeft,l.top+=c.offsetTop;while(c=c.offsetParent);return t.parentNode.removeChild(t),l}function S(e,t){var n=["direction","boxSizing","width","height","overflowX","overflowY","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","paddingTop","paddingRight","paddingBottom","paddingLeft","fontStyle","fontVariant","fontWeight","fontStretch","fontSize","fontSizeAdjust","lineHeight","fontFamily","textAlign","textTransform","textIndent","textDecoration","letterSpacing","wordSpacing"],i=null!==window.mozInnerScreenX,r=document.createElement("div");r.id="input-textarea-caret-position-mirror-div",document.body.appendChild(r);var o=r.style,a=window.getComputedStyle?getComputedStyle(e):e.currentStyle;o.whiteSpace="pre-wrap","INPUT"!==e.nodeName&&(o.wordWrap="break-word"),o.position="absolute",o.visibility="hidden",n.forEach(function(e){o[e]=a[e]}),i?(o.width=parseInt(a.width)-2+"px",e.scrollHeight>parseInt(a.height)&&(o.overflowY="scroll")):o.overflow="hidden",r.textContent=e.value.substring(0,t),"INPUT"===e.nodeName&&(r.textContent=r.textContent.replace(/\s/g," "));var c=document.createElement("span");c.textContent=e.value.substring(t)||".",r.appendChild(c);var l={top:c.offsetTop+parseInt(a.borderTopWidth)+c.offsetHeight,left:c.offsetLeft+parseInt(a.borderLeftWidth)},s=e;do l.left+=s.offsetLeft,l.top+=s.offsetTop;while(s=s.offsetParent);return document.body.removeChild(r),l}return{popUnderMention:r,replaceMacroText:m,replaceTriggerText:d,getMacroMatch:u,getTriggerInfo:h,selectElement:c,getTextAreaOrInputUnderlinePosition:S,getTextPrecedingCurrentSelection:p,getContentEditableSelectedPath:f,getNodePositionInParent:g,getContentEditableCaretPosition:v,pasteHtml:l,resetSelection:s,scrollIntoView:o}}]),angular.module("mentio").run(["$templateCache",function(e){e.put("mentio-menu.tpl.html",'<style>\n.scrollable-menu {\n height: auto;\n max-height: 300px;\n overflow: auto;\n}\n\n.menu-highlighted {\n font-weight: bold;\n}\n</style>\n<ul class="dropdown-menu scrollable-menu" style="display:block">\n <li mentio-menu-item="item" ng-repeat="item in items track by $index">\n <a class="text-primary" ng-bind-html="item.label | mentioHighlight:typedTerm:\'menu-highlighted\' | unsafe"></a>\n </li>\n</ul>')}]);

@@ -87,3 +87,3 @@ 'use strict';

gulp.task('bump', function(){
gulp.src('./package.json')
gulp.src(['./package.json', './bower.json'])
.pipe(bump())

@@ -90,0 +90,0 @@ .pipe(gulp.dest('./'));

@@ -89,3 +89,11 @@ 'use strict';

$scope.getProductTextRaw = function(item) {
return '#' + item.sku;
/* the select() function can also return a Promise which ment.io will handle
propertly during replacement */
return new Promise(function(fulfill) {
// simulated async promise
$timeout(function() {
fulfill('#' + item.sku);
}, 500);
}
);
};

@@ -92,0 +100,0 @@

{
"name": "ment.io",
"version": "0.9.12",
"version": "0.9.14",
"description": "Mentions for Angular",

@@ -5,0 +5,0 @@ "main": "index.html",

@@ -24,6 +24,6 @@ 'use strict';

remoteScope.search({
term: triggerText
term: triggerText.trim()
});
remoteScope.typedTerm = triggerText;
remoteScope.typedTerm = triggerText.trim();
};

@@ -61,11 +61,8 @@

if ($scope.syncTriggerText) {
$scope.typedTerm = text;
$scope.typedTerm = text.trim();
}
};
$scope.replaceText = function (triggerChar, item) {
var remoteScope = $scope.triggerCharMap[triggerChar];
var text = remoteScope.select({
item: item
});
$scope.replaceText = function (text) {
$scope.hideAll();
mentioUtil.replaceTriggerText($scope.targetElement, $scope.targetElementPath,

@@ -195,3 +192,3 @@ $scope.targetElementSelectedOffset, $scope.triggerCharSet, text, $scope.requireLeadingSpace);

if (activeMenuScope) {
if (event.which === 9) {
if (event.which === 9 || event.which === 13) {
event.preventDefault();

@@ -222,6 +219,5 @@ activeMenuScope.selectActive();

if (event.which === 13 || event.which === 32) {
if (event.which === 37 || event.which === 39) {
event.preventDefault();
activeMenuScope.selectActive();
}
}
}

@@ -284,5 +280,28 @@ }

var mentionInfo = mentioUtil.getTriggerInfo(scope.triggerCharSet, scope.requireLeadingSpace);
var isActive = scope.isActive();
var isContentEditable = scope.isContentEditable();
if (mentionInfo !== undefined) {
var mentionInfo = mentioUtil.getTriggerInfo(scope.triggerCharSet,
scope.requireLeadingSpace, isActive);
if (mentionInfo !== undefined &&
(
!isActive ||
(isActive &&
(
/* content editable selection changes to local nodes which
modifies the start position of the selection over time,
just consider triggerchar changes which
will have the odd effect that deleting a trigger char pops
the menu for a previous
trigger char sequence if one exists in a content editable */
(isContentEditable && mentionInfo.mentionTriggerChar ===
scope.currentMentionTriggerChar) ||
(!isContentEditable && mentionInfo.mentionPosition ===
scope.currentMentionPosition)
)
)
)
)
{
/** save selection info about the target control for later re-selection */

@@ -293,4 +312,7 @@ scope.targetElement = mentionInfo.mentionSelectedElement;

/* publish to external */
/* publish to external ngModel */
scope.setTriggerText(mentionInfo.mentionText);
/* remember current position */
scope.currentMentionPosition = mentionInfo.mentionPosition;
scope.currentMentionTriggerChar = mentionInfo.mentionTriggerChar;
/* perform query */

@@ -346,4 +368,11 @@ scope.query(mentionInfo.mentionTriggerChar, mentionInfo.mentionText);

this.selectItem = $scope.selectItem = function (item) {
$scope.hideMenu();
$scope.parentMentio.replaceText($scope.triggerChar, item);
var text = $scope.select({
item: item
});
if (typeof text.then === 'function') {
/* text is a promise, at least our best guess */
text.then($scope.parentMentio.replaceText);
} else {
$scope.parentMentio.replaceText(text);
}
};

@@ -350,0 +379,0 @@

@@ -9,3 +9,3 @@ 'use strict';

var coordinates;
var mentionInfo = getTriggerInfo(triggerCharSet, requireLeadingSpace);
var mentionInfo = getTriggerInfo(triggerCharSet, requireLeadingSpace, false);

@@ -208,3 +208,3 @@ if (mentionInfo !== undefined) {

var mentionInfo = getTriggerInfo(triggerCharSet, requireLeadingSpace);
var mentionInfo = getTriggerInfo(triggerCharSet, requireLeadingSpace, true);

@@ -337,3 +337,3 @@ if (mentionInfo !== undefined) {

// public
function getTriggerInfo (triggerCharSet, requireLeadingSpace) {
function getTriggerInfo (triggerCharSet, requireLeadingSpace, menuAlreadyActive) {
var selected, path, offset;

@@ -352,2 +352,3 @@ if (selectedElementIsTextAreaOrInput()) {

var effectiveRange = getTextPrecedingCurrentSelection();
if (effectiveRange !== undefined && effectiveRange !== null) {

@@ -380,3 +381,9 @@ var mostRecentTriggerCharPos = -1;

triggerChar = effectiveRange.substring(mostRecentTriggerCharPos, mostRecentTriggerCharPos+1);
if (!(/[\xA0\s]/g.test(currentTriggerSnippet))) {
var firstSnippetChar = currentTriggerSnippet.substring(0,1);
var leadingSpace = currentTriggerSnippet.length > 0 &&
(
firstSnippetChar === ' ' ||
firstSnippetChar === '\xA0'
);
if (!leadingSpace && (menuAlreadyActive || !(/[\xA0\s]/g.test(currentTriggerSnippet)))) {
return {

@@ -383,0 +390,0 @@ mentionPosition: mostRecentTriggerCharPos,

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc