nextcloud/apps/comments/js/comments.js.map

1 line
193 KiB
XML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"jQuery\"","webpack:///./node_modules/css-loader/dist/runtime/api.js","webpack:///./node_modules/style-loader/lib/addStyles.js","webpack:///./apps/comments/src/comments.js","webpack:///./apps/comments/src/app.js","webpack:///./apps/comments/src/templates.js","webpack:///./apps/comments/src/commentmodel.js","webpack:///./apps/comments/src/commentcollection.js","webpack:///./apps/comments/src/commentsummarymodel.js","webpack:///./apps/comments/src/commentstabview.js","webpack:///./apps/comments/src/commentsmodifymenu.js","webpack:///./apps/comments/src/filesplugin.js","webpack:///./apps/comments/src/activitytabviewplugin.js","webpack:///./apps/comments/src/search.js","webpack:///./apps/comments/src/vendor/Caret.js/dist/jquery.caret.min.js","webpack:///./apps/comments/src/vendor/At.js/dist/js/jquery.atwho.min.js","webpack:///./apps/comments/src/style/autocomplete.scss?dc09","webpack:///./apps/comments/src/style/autocomplete.scss","webpack:///./node_modules/style-loader/lib/urls.js","webpack:///./apps/comments/src/style/comments.scss?1960","webpack:///./apps/comments/src/style/comments.scss"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","jQuery","useSourceMap","list","toString","this","map","item","content","cssMapping","btoa","sourceMapping","sourceMap","unescape","encodeURIComponent","JSON","stringify","sourceURLs","sources","source","sourceRoot","concat","join","cssWithMappingToString","mediaQuery","alreadyImportedModules","length","id","push","fn","memo","stylesInDom","isOldIE","window","document","all","atob","apply","arguments","getElement","target","parent","styleTarget","querySelector","HTMLIFrameElement","contentDocument","head","e","singleton","singletonCounter","stylesInsertedAtTop","fixUrls","addStylesToDom","styles","options","domStyle","refs","j","parts","addStyle","listToStyles","newStyles","base","part","css","media","insertStyleElement","style","insertInto","Error","lastStyleElementInsertedAtTop","insertAt","nextSibling","insertBefore","appendChild","firstChild","before","removeStyleElement","parentNode","removeChild","idx","indexOf","splice","createStyleElement","createElement","undefined","attrs","type","nonce","nc","getNonce","addAttrs","el","keys","forEach","setAttribute","obj","update","remove","result","transform","default","styleIndex","applyToSingletonTag","URL","createObjectURL","revokeObjectURL","Blob","link","rel","createLinkElement","autoFixUrls","convertToAbsoluteUrls","blob","oldSrc","href","styleSheet","cssText","createTextNode","newObj","DEBUG","newList","mayRemove","textStore","replaceText","index","replacement","filter","Boolean","cssNode","childNodes","__webpack_exports__","OCA","Comments","template","templates","Handlebars","Templates","1","container","depth0","helpers","partials","data","3","5","7","helper","escapeExpression","actorId","helperMissing","nullContext","hash","9","11","compiler","main","stack1","alias1","alias2","alias3","alias4","isUnread","program","inverse","noop","isLong","_typeof","isUserAuthor","actorDisplayName","timestamp","altDate","date","formattedMessage","useData","iconClass","displayName","2","4","each","items","cancelText","tag","isEditMode","newMessagePlaceholder","message","submitText","countMessage","iconUrl","emptyResultLabel","moreLabel","OC","_","extend","Files","Client","PROPERTY_FILEID","NS_OWNCLOUD","PROPERTY_MESSAGE","PROPERTY_ACTORTYPE","PROPERTY_ACTORID","PROPERTY_ISUNREAD","PROPERTY_OBJECTID","PROPERTY_OBJECTTYPE","PROPERTY_ACTORDISPLAYNAME","PROPERTY_CREATIONDATETIME","PROPERTY_MENTIONS","CommentModel","Backbone","Model","sync","davSync","defaults","actorType","objectType","davProperties","creationDateTime","objectId","mentions","parse","_parseMentions","isUndefined","mention","localName","child","startsWith","textContent","CommentCollection","Collection","model","_objectType","_objectId","_endReached","_limit","initialize","models","url","linkToRemote","setObjectId","hasMoreResults","reset","_summaryModel","fetchNext","self","body","success","resp","initial","set","trigger","getSummaryModel","CommentSummaryModel","updateReadMarker","save","readMarker","Date","toUTCString","PROPERTY_READMARKER","CommentsTabView","DetailTabView","className","_autoCompleteData","_commentsModifyMenu","events","submit .newCommentForm","click .showMore","click .cancel","click .comment","keyup div.message","change div.message","input div.message","paste div.message","_commentMaxLength","collection","on","_onRequest","_onEndRequest","_onAddModel","_onChangeModel","_commentMaxThreshold","bindAll","params","currentUser","getCurrentUser","uid","editCommentTemplate","commentTemplate","editTooltip","_isLong","getLabel","getIcon","setFileInfo","fileInfo","render","_initAutoComplete","$","find","silent","nextPage","$el","html","tooltip","$container","avatar","delegateEvents","_onTypeComment","autosize","focus","$target","limit","appConfig","comments","maxAutoCompleteResults","atwho","at","callbacks","remoteFilter","_onAutoComplete","highlighter","li","$li","sorter","q","displayTpl","escapeHTML","label","insertTpl","searchKey","je","_postRenderItem","query","callback","_autoCompleteRequestTimer","clearTimeout","delay","_autoCompleteRequestCall","abort","ajax","linkToOCS","search","itemType","itemId","beforeSend","request","setRequestHeader","ocs","_formatItem","commentModel","getTime","Util","relativeModifiedDate","formatDate","_formatMessage","attributes","_toggleLoading","state","_loading","toggleClass","addClass","fileInfoModel","findWhere","$comment","eq","append","text","prop","oldMentions","fetch","isEqual","$updated","trim","previous","$row","closest","removeClass","$message","editionMode","inlineAvatars","context","hasClass","$this","attr","username","contactsMenu","modifyCommentMenu","CommentsModifyMenu","show","listenTo","ev","action","_onClickEditComment","_onClickDeleteComment","_postRenderMessage","user","editMode","replace","mentionId","escape","regex","RegExp","_composeHTMLMention","mentionDisplayName","match","p1","OCP","plainToRich","preventDefault","commentId","commentToEdit","$formRow","after","replaceWith","clone","$field","len","$submitButton","count","max","limitExceeded","keyCode","shiftKey","click","_onClickComment","is","_onClickCloseComment","$loading","$moreIcon","destroy","error","Notification","showTemporary","_onClickShowMore","_onSubmitSuccess","$form","$submit","_commentBodyHTML2Plain","oldHtml","$inserted","userId","richToPlain","_onSubmitComment","$commentField","_onSubmitError","verb","wait","_onTextChange","empty","_onPaste","originalEvent","clipboardData","getData","execCommand","View","tagName","_scopes","click a.action","_onClickAction","event","currentTarget","hideMenus","_context","active","offsetIcon","offset","offsetContainer","position","top","left","right","width","showMenu","PROPERTY_COMMENTS_UNREAD","FilesPlugin","ignoreLists","_formatCommentCount","imagePath","attach","fileList","registerTabView","oldGetWebdavProperties","_getWebdavProperties","props","filesClient","addFileInfoParser","response","commentsUnread","propStat","properties","parseInt","oldCreateRow","_createRow","fileData","$tr","fileActions","registerAction","$file","unread","mime","order","permissions","PERMISSION_READ","FileActions","TYPE_INLINE","actionSpec","isDefault","unreadComments","$actionLink","actionHandler","fileName","showDetailsView","oldElementToFile","elementToFile","Plugins","register","ActivityTabViewPlugin","prepareModelForDisplay","view","$overlay","_onClickCollapsedComment","Comment","fileAppLoaded","App","renderCommentResult","$nofilterresults","updateLegacyMimetype","$pathDiv","path","$avatar","authorName","authorId","comment","prepend","dir","dirname","generateUrl","scrollto","handleCommentClick","changeDirectory","scrollTo","mime_type","setFileList","setRenderer","setHandler","Search","a","define","__WEBPACK_AMD_DEFINE_RESULT__","returnExportsGlobal","b","g","h","$inputor","domInputor","setPos","getIEPosition","getPosition","getOffset","getOldIEPos","selection","createRange","createTextRange","moveToElementText","setEndPoint","getPos","range","cloneRange","selectNodeContents","setEnd","endContainer","endOffset","detach","getOldIEOffset","duplicate","moveStart","height","getBoundingClientRect","bottom","f","getSelection","setStart","insertNode","selectNode","scrollTop","scrollLeft","rangeCount","getRangeAt","getIEPos","parentElement","moveToBookmark","getBookmark","collapse","compareEndPoints","selectionStart","move","select","setSelectionRange","getIEOffset","boundingLeft","boundingTop","boundingHeight","test","navigator","userAgent","val","slice","rect","css_attr","mirrorCss","zIndex","$mirror","contentEditable","pos","iframe","contentWindow","caret","isPlainObject","EditableCaret","InputCaret","Utils","apis","__WEBPACK_AMD_DEFINE_ARRAY__","ESC","TAB","ENTER","CTRL","A","P","N","LEFT","UP","RIGHT","DOWN","BACKSPACE","SPACE","beforeSave","arrayToDefaultHash","matcher","decodeURI","exec","String","toLowerCase","atwho_order","sort","tplEval","beforeInsert","beforeReposition","afterMatchFailed","currentFlag","controllers","aliasMaps","setupRootElement","listen","createContainer","ownerDocument","defaultView","parentWindow","frameElement","debug","iframeAsRoot","controller","setContextFor","reg","alias","init","hide","isComposing","setTimeout","dispatch","onKeyup","onKeydown","expectedQueryCBId","getOpt","shutdown","off","lookUp","ctrlKey","visible","prev","next","highlighted","choose","app","setting","u","Math","random","substr","reload","callDefault","insertContentFor","atwho-at","renderView","isArray","catchQuery","_delayLookUp","_lookUp","now","previousCallTime","_stopDelayedCall","delayedCallTimeout","_generateQueryCBId","constructor","proxy","__super__","headPos","endPos","insert","change","_getRange","_setRange","setEndAfter","setStartAfter","setEndBefore","setStartBefore","_clearRange","ctrl_a_pressed","removeAllRanges","addRange","_movingEvent","which","_unwrap","unwrap","nodeValue","collapsed","startContainer","contents","last","nodeType","ELEMENT_NODE","startOffset","cloneContents","TEXT_NODE","previousSibling","siblings","surroundContents","first","getClientRects","storage","saved","load","_load","dataType","done","$elUl","children","timeoutID","bindEvent","charCodeAt","clientX","clientY","expr","filters","stopShowing","reposition","offsetTop","offsetHeight","animate","isNaN","isSelecting","setIframe","run","Array","headerTpl","functionOverrides","suffix","hideWithoutSuffix","startWithSpace","acceptSpaceBar","highlightFirst","maxLen","minLen","displayTimeout","spaceSelectsMatch","tabSelectsMatch","editableAtwhoQueryAttrs","scrollDuration","suspendOnComposing","lookUpOnClick","hmr","locals","location","baseUrl","protocol","host","currentDir","pathname","fullMatch","origUrl","newUrl","unquotedOrigUrl","$1"],"mappings":"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","file":"comments.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/js/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 3);\n","module.exports = jQuery;","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function (useSourceMap) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item, useSourceMap);\n\n if (item[2]) {\n return '@media ' + item[2] + '{' + content + '}';\n } else {\n return content;\n }\n }).join('');\n }; // import a list of modules into the list\n\n\n list.i = function (modules, mediaQuery) {\n if (typeof modules === 'string') {\n modules = [[null, modules, '']];\n }\n\n var alreadyImportedModules = {};\n\n for (var i = 0; i < this.length; i++) {\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n\n for (i = 0; i < modules.length; i++) {\n var item = modules[i]; // skip already imported module\n // this implementation is not 100% perfect for weird media query combinations\n // when a module is imported multiple times with different media queries.\n // I hope this will never occur (Hey this way we have smaller bundles)\n\n if (item[0] == null || !alreadyImportedModules[item[0]]) {\n if (mediaQuery && !item[2]) {\n item[2] = mediaQuery;\n } else if (mediaQuery) {\n item[2] = '(' + item[2] + ') and (' + mediaQuery + ')';\n }\n\n list.push(item);\n }\n }\n };\n\n return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n var content = item[1] || '';\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (useSourceMap && typeof btoa === 'function') {\n var sourceMapping = toComment(cssMapping);\n var sourceURLs = cssMapping.sources.map(function (source) {\n return '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */';\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n }\n\n return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n return '/*# ' + data + ' */';\n}","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\nvar stylesInDom = {};\n\nvar\tmemoize = function (fn) {\n\tvar memo;\n\n\treturn function () {\n\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\treturn memo;\n\t};\n};\n\nvar isOldIE = memoize(function () {\n\t// Test for IE <= 9 as proposed by Browserhacks\n\t// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n\t// Tests for existence of standard globals is to allow style-loader\n\t// to operate correctly into non-standard environments\n\t// @see https://github.com/webpack-contrib/style-loader/issues/177\n\treturn window && document && document.all && !window.atob;\n});\n\nvar getTarget = function (target, parent) {\n if (parent){\n return parent.querySelector(target);\n }\n return document.querySelector(target);\n};\n\nvar getElement = (function (fn) {\n\tvar memo = {};\n\n\treturn function(target, parent) {\n // If passing function in options, then use it for resolve \"head\" element.\n // Useful for Shadow Root style i.e\n // {\n // insertInto: function () { return document.querySelector(\"#foo\").shadowRoot }\n // }\n if (typeof target === 'function') {\n return target();\n }\n if (typeof memo[target] === \"undefined\") {\n\t\t\tvar styleTarget = getTarget.call(this, target, parent);\n\t\t\t// Special case to return head of iframe instead of iframe itself\n\t\t\tif (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n\t\t\t\ttry {\n\t\t\t\t\t// This will throw an exception if access to iframe is blocked\n\t\t\t\t\t// due to cross-origin restrictions\n\t\t\t\t\tstyleTarget = styleTarget.contentDocument.head;\n\t\t\t\t} catch(e) {\n\t\t\t\t\tstyleTarget = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tmemo[target] = styleTarget;\n\t\t}\n\t\treturn memo[target]\n\t};\n})();\n\nvar singleton = null;\nvar\tsingletonCounter = 0;\nvar\tstylesInsertedAtTop = [];\n\nvar\tfixUrls = require(\"./urls\");\n\nmodule.exports = function(list, options) {\n\tif (typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif (typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\n\toptions.attrs = typeof options.attrs === \"object\" ? options.attrs : {};\n\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n\t// tags it will allow on a page\n\tif (!options.singleton && typeof options.singleton !== \"boolean\") options.singleton = isOldIE();\n\n\t// By default, add <style> tags to the <head> element\n if (!options.insertInto) options.insertInto = \"head\";\n\n\t// By default, add <style> tags to the bottom of the target\n\tif (!options.insertAt) options.insertAt = \"bottom\";\n\n\tvar styles = listToStyles(list, options);\n\n\taddStylesToDom(styles, options);\n\n\treturn function update (newList) {\n\t\tvar mayRemove = [];\n\n\t\tfor (var i = 0; i < styles.length; i++) {\n\t\t\tvar item = styles[i];\n\t\t\tvar domStyle = stylesInDom[item.id];\n\n\t\t\tdomStyle.refs--;\n\t\t\tmayRemove.push(domStyle);\n\t\t}\n\n\t\tif(newList) {\n\t\t\tvar newStyles = listToStyles(newList, options);\n\t\t\taddStylesToDom(newStyles, options);\n\t\t}\n\n\t\tfor (var i = 0; i < mayRemove.length; i++) {\n\t\t\tvar domStyle = mayRemove[i];\n\n\t\t\tif(domStyle.refs === 0) {\n\t\t\t\tfor (var j = 0; j < domStyle.parts.length; j++) domStyle.parts[j]();\n\n\t\t\t\tdelete stylesInDom[domStyle.id];\n\t\t\t}\n\t\t}\n\t};\n};\n\nfunction addStylesToDom (styles, options) {\n\tfor (var i = 0; i < styles.length; i++) {\n\t\tvar item = styles[i];\n\t\tvar domStyle = stylesInDom[item.id];\n\n\t\tif(domStyle) {\n\t\t\tdomStyle.refs++;\n\n\t\t\tfor(var j = 0; j < domStyle.parts.length; j++) {\n\t\t\t\tdomStyle.parts[j](item.parts[j]);\n\t\t\t}\n\n\t\t\tfor(; j < item.parts.length; j++) {\n\t\t\t\tdomStyle.parts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\t\t} else {\n\t\t\tvar parts = [];\n\n\t\t\tfor(var j = 0; j < item.parts.length; j++) {\n\t\t\t\tparts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\n\t\t\tstylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};\n\t\t}\n\t}\n}\n\nfunction listToStyles (list, options) {\n\tvar styles = [];\n\tvar newStyles = {};\n\n\tfor (var i = 0; i < list.length; i++) {\n\t\tvar item = list[i];\n\t\tvar id = options.base ? item[0] + options.base : item[0];\n\t\tvar css = item[1];\n\t\tvar media = item[2];\n\t\tvar sourceMap = item[3];\n\t\tvar part = {css: css, media: media, sourceMap: sourceMap};\n\n\t\tif(!newStyles[id]) styles.push(newStyles[id] = {id: id, parts: [part]});\n\t\telse newStyles[id].parts.push(part);\n\t}\n\n\treturn styles;\n}\n\nfunction insertStyleElement (options, style) {\n\tvar target = getElement(options.insertInto)\n\n\tif (!target) {\n\t\tthrow new Error(\"Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.\");\n\t}\n\n\tvar lastStyleElementInsertedAtTop = stylesInsertedAtTop[stylesInsertedAtTop.length - 1];\n\n\tif (options.insertAt === \"top\") {\n\t\tif (!lastStyleElementInsertedAtTop) {\n\t\t\ttarget.insertBefore(style, target.firstChild);\n\t\t} else if (lastStyleElementInsertedAtTop.nextSibling) {\n\t\t\ttarget.insertBefore(style, lastStyleElementInsertedAtTop.nextSibling);\n\t\t} else {\n\t\t\ttarget.appendChild(style);\n\t\t}\n\t\tstylesInsertedAtTop.push(style);\n\t} else if (options.insertAt === \"bottom\") {\n\t\ttarget.appendChild(style);\n\t} else if (typeof options.insertAt === \"object\" && options.insertAt.before) {\n\t\tvar nextSibling = getElement(options.insertAt.before, target);\n\t\ttarget.insertBefore(style, nextSibling);\n\t} else {\n\t\tthrow new Error(\"[Style Loader]\\n\\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\\n Must be 'top', 'bottom', or Object.\\n (https://github.com/webpack-contrib/style-loader#insertat)\\n\");\n\t}\n}\n\nfunction removeStyleElement (style) {\n\tif (style.parentNode === null) return false;\n\tstyle.parentNode.removeChild(style);\n\n\tvar idx = stylesInsertedAtTop.indexOf(style);\n\tif(idx >= 0) {\n\t\tstylesInsertedAtTop.splice(idx, 1);\n\t}\n}\n\nfunction createStyleElement (options) {\n\tvar style = document.createElement(\"style\");\n\n\tif(options.attrs.type === undefined) {\n\t\toptions.attrs.type = \"text/css\";\n\t}\n\n\tif(options.attrs.nonce === undefined) {\n\t\tvar nonce = getNonce();\n\t\tif (nonce) {\n\t\t\toptions.attrs.nonce = nonce;\n\t\t}\n\t}\n\n\taddAttrs(style, options.attrs);\n\tinsertStyleElement(options, style);\n\n\treturn style;\n}\n\nfunction createLinkElement (options) {\n\tvar link = document.createElement(\"link\");\n\n\tif(options.attrs.type === undefined) {\n\t\toptions.attrs.type = \"text/css\";\n\t}\n\toptions.attrs.rel = \"stylesheet\";\n\n\taddAttrs(link, options.attrs);\n\tinsertStyleElement(options, link);\n\n\treturn link;\n}\n\nfunction addAttrs (el, attrs) {\n\tObject.keys(attrs).forEach(function (key) {\n\t\tel.setAttribute(key, attrs[key]);\n\t});\n}\n\nfunction getNonce() {\n\tif (typeof __webpack_nonce__ === 'undefined') {\n\t\treturn null;\n\t}\n\n\treturn __webpack_nonce__;\n}\n\nfunction addStyle (obj, options) {\n\tvar style, update, remove, result;\n\n\t// If a transform function was defined, run it on the css\n\tif (options.transform && obj.css) {\n\t result = typeof options.transform === 'function'\n\t\t ? options.transform(obj.css) \n\t\t : options.transform.default(obj.css);\n\n\t if (result) {\n\t \t// If transform returns a value, use that instead of the original css.\n\t \t// This allows running runtime transformations on the css.\n\t \tobj.css = result;\n\t } else {\n\t \t// If the transform function returns a falsy value, don't add this css.\n\t \t// This allows conditional loading of css\n\t \treturn function() {\n\t \t\t// noop\n\t \t};\n\t }\n\t}\n\n\tif (options.singleton) {\n\t\tvar styleIndex = singletonCounter++;\n\n\t\tstyle = singleton || (singleton = createStyleElement(options));\n\n\t\tupdate = applyToSingletonTag.bind(null, style, styleIndex, false);\n\t\tremove = applyToSingletonTag.bind(null, style, styleIndex, true);\n\n\t} else if (\n\t\tobj.sourceMap &&\n\t\ttypeof URL === \"function\" &&\n\t\ttypeof URL.createObjectURL === \"function\" &&\n\t\ttypeof URL.revokeObjectURL === \"function\" &&\n\t\ttypeof Blob === \"function\" &&\n\t\ttypeof btoa === \"function\"\n\t) {\n\t\tstyle = createLinkElement(options);\n\t\tupdate = updateLink.bind(null, style, options);\n\t\tremove = function () {\n\t\t\tremoveStyleElement(style);\n\n\t\t\tif(style.href) URL.revokeObjectURL(style.href);\n\t\t};\n\t} else {\n\t\tstyle = createStyleElement(options);\n\t\tupdate = applyToTag.bind(null, style);\n\t\tremove = function () {\n\t\t\tremoveStyleElement(style);\n\t\t};\n\t}\n\n\tupdate(obj);\n\n\treturn function updateStyle (newObj) {\n\t\tif (newObj) {\n\t\t\tif (\n\t\t\t\tnewObj.css === obj.css &&\n\t\t\t\tnewObj.media === obj.media &&\n\t\t\t\tnewObj.sourceMap === obj.sourceMap\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tupdate(obj = newObj);\n\t\t} else {\n\t\t\tremove();\n\t\t}\n\t};\n}\n\nvar replaceText = (function () {\n\tvar textStore = [];\n\n\treturn function (index, replacement) {\n\t\ttextStore[index] = replacement;\n\n\t\treturn textStore.filter(Boolean).join('\\n');\n\t};\n})();\n\nfunction applyToSingletonTag (style, index, remove, obj) {\n\tvar css = remove ? \"\" : obj.css;\n\n\tif (style.styleSheet) {\n\t\tstyle.styleSheet.cssText = replaceText(index, css);\n\t} else {\n\t\tvar cssNode = document.createTextNode(css);\n\t\tvar childNodes = style.childNodes;\n\n\t\tif (childNodes[index]) style.removeChild(childNodes[index]);\n\n\t\tif (childNodes.length) {\n\t\t\tstyle.insertBefore(cssNode, childNodes[index]);\n\t\t} else {\n\t\t\tstyle.appendChild(cssNode);\n\t\t}\n\t}\n}\n\nfunction applyToTag (style, obj) {\n\tvar css = obj.css;\n\tvar media = obj.media;\n\n\tif(media) {\n\t\tstyle.setAttribute(\"media\", media)\n\t}\n\n\tif(style.styleSheet) {\n\t\tstyle.styleSheet.cssText = css;\n\t} else {\n\t\twhile(style.firstChild) {\n\t\t\tstyle.removeChild(style.firstChild);\n\t\t}\n\n\t\tstyle.appendChild(document.createTextNode(css));\n\t}\n}\n\nfunction updateLink (link, options, obj) {\n\tvar css = obj.css;\n\tvar sourceMap = obj.sourceMap;\n\n\t/*\n\t\tIf convertToAbsoluteUrls isn't defined, but sourcemaps are enabled\n\t\tand there is no publicPath defined then lets turn convertToAbsoluteUrls\n\t\ton by default. Otherwise default to the convertToAbsoluteUrls option\n\t\tdirectly\n\t*/\n\tvar autoFixUrls = options.convertToAbsoluteUrls === undefined && sourceMap;\n\n\tif (options.convertToAbsoluteUrls || autoFixUrls) {\n\t\tcss = fixUrls(css);\n\t}\n\n\tif (sourceMap) {\n\t\t// http://stackoverflow.com/a/26603875\n\t\tcss += \"\\n/*# sourceMappingURL=data:application/json;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + \" */\";\n\t}\n\n\tvar blob = new Blob([css], { type: \"text/css\" });\n\n\tvar oldSrc = link.href;\n\n\tlink.href = URL.createObjectURL(blob);\n\n\tif(oldSrc) URL.revokeObjectURL(oldSrc);\n}\n","import './app'\nimport './templates'\nimport './commentmodel'\nimport './commentcollection'\nimport './commentsummarymodel'\nimport './commentstabview'\nimport './commentsmodifymenu'\nimport './filesplugin'\nimport './activitytabviewplugin'\nimport './search'\n\nimport './vendor/Caret.js/dist/jquery.caret.min'\nimport './vendor/At.js/dist/js/jquery.atwho.min'\n\nimport './style/autocomplete.scss'\nimport './style/comments.scss'\n\nwindow.OCA.Comments = OCA.Comments;\n","/*\n * Copyright (c) 2016 Vincent Petry <pvince81@owncloud.com>\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n *\n */\n\n(function() {\n\tif (!OCA.Comments) {\n\t\t/**\n\t\t * @namespace\n\t\t */\n\t\tOCA.Comments = {};\n\t}\n\n})();\n\n","(function() {\n var template = Handlebars.template, templates = OCA.Comments.Templates = OCA.Comments.Templates || {};\ntemplates['comment'] = template({\"1\":function(container,depth0,helpers,partials,data) {\n return \" unread\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n return \" collapsed\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n return \" currentUser\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n var helper;\n\n return \"data-username=\\\"\"\n + container.escapeExpression(((helper = (helper = helpers.actorId || (depth0 != null ? depth0.actorId : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"actorId\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\"\";\n},\"9\":function(container,depth0,helpers,partials,data) {\n return \"\t\t\t<a href=\\\"#\\\" class=\\\"action more icon icon-more has-tooltip\\\"></a>\\n\t\t\t<div class=\\\"deleteLoading icon-loading-small hidden\\\"></div>\\n\";\n},\"11\":function(container,depth0,helpers,partials,data) {\n return \"\t\t<div class=\\\"message-overlay\\\"></div>\\n\";\n},\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3=\"function\", alias4=container.escapeExpression;\n\n return \"<li class=\\\"comment\"\n + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isUnread : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isLong : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"\\\" data-id=\\\"\"\n + alias4(((helper = (helper = helpers.id || (depth0 != null ? depth0.id : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"id\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\">\\n\t<div class=\\\"authorRow\\\">\\n\t\t<div class=\\\"avatar\"\n + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isUserAuthor : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"\\\" \"\n + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.actorId : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(7, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"> </div>\\n\t\t<div class=\\\"author\"\n + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isUserAuthor : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"\\\">\"\n + alias4(((helper = (helper = helpers.actorDisplayName || (depth0 != null ? depth0.actorDisplayName : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"actorDisplayName\",\"hash\":{},\"data\":data}) : helper)))\n + \"</div>\\n\"\n + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isUserAuthor : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(9, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"\t\t<div class=\\\"date has-tooltip live-relative-timestamp\\\" data-timestamp=\\\"\"\n + alias4(((helper = (helper = helpers.timestamp || (depth0 != null ? depth0.timestamp : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"timestamp\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\" title=\\\"\"\n + alias4(((helper = (helper = helpers.altDate || (depth0 != null ? depth0.altDate : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"altDate\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\">\"\n + alias4(((helper = (helper = helpers.date || (depth0 != null ? depth0.date : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"date\",\"hash\":{},\"data\":data}) : helper)))\n + \"</div>\\n\t</div>\\n\t<div class=\\\"message\\\">\"\n + ((stack1 = ((helper = (helper = helpers.formattedMessage || (depth0 != null ? depth0.formattedMessage : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"formattedMessage\",\"hash\":{},\"data\":data}) : helper))) != null ? stack1 : \"\")\n + \"</div>\\n\"\n + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isLong : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(11, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"</li>\\n\";\n},\"useData\":true});\ntemplates['commentsmodifymenu'] = template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3=\"function\", alias4=container.escapeExpression;\n\n return \"\t\t<li>\\n\t\t\t<a href=\\\"#\\\" class=\\\"menuitem action \"\n + alias4(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n + \" permanent\\\" data-action=\\\"\"\n + alias4(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\">\\n\"\n + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.iconClass : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.program(4, data, 0),\"data\":data})) != null ? stack1 : \"\")\n + \"\t\t\t\t<span>\"\n + alias4(((helper = (helper = helpers.displayName || (depth0 != null ? depth0.displayName : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"displayName\",\"hash\":{},\"data\":data}) : helper)))\n + \"</span>\\n\t\t\t</a>\\n\t\t</li>\\n\";\n},\"2\":function(container,depth0,helpers,partials,data) {\n var helper;\n\n return \"\t\t\t\t\t<span class=\\\"icon \"\n + container.escapeExpression(((helper = (helper = helpers.iconClass || (depth0 != null ? depth0.iconClass : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"iconClass\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\"></span>\\n\";\n},\"4\":function(container,depth0,helpers,partials,data) {\n return \"\t\t\t\t\t<span class=\\\"no-icon\\\"></span>\\n\";\n},\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1;\n\n return \"<ul>\\n\"\n + ((stack1 = helpers.each.call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.items : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"</ul>\\n\";\n},\"useData\":true});\ntemplates['edit_comment'] = template({\"1\":function(container,depth0,helpers,partials,data) {\n var helper;\n\n return \"\t\t\t<div class=\\\"action-container\\\">\\n\t\t\t\t<a href=\\\"#\\\" class=\\\"action cancel icon icon-close has-tooltip\\\" title=\\\"\"\n + container.escapeExpression(((helper = (helper = helpers.cancelText || (depth0 != null ? depth0.cancelText : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"cancelText\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\"></a>\\n\t\t\t</div>\\n\";\n},\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3=\"function\", alias4=container.escapeExpression;\n\n return \"<\"\n + alias4(((helper = (helper = helpers.tag || (depth0 != null ? depth0.tag : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"tag\",\"hash\":{},\"data\":data}) : helper)))\n + \" class=\\\"newCommentRow comment\\\" data-id=\\\"\"\n + alias4(((helper = (helper = helpers.id || (depth0 != null ? depth0.id : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"id\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\">\\n\t<div class=\\\"authorRow\\\">\\n\t\t<div class=\\\"avatar currentUser\\\" data-username=\\\"\"\n + alias4(((helper = (helper = helpers.actorId || (depth0 != null ? depth0.actorId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"actorId\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\"></div>\\n\t\t<div class=\\\"author currentUser\\\">\"\n + alias4(((helper = (helper = helpers.actorDisplayName || (depth0 != null ? depth0.actorDisplayName : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"actorDisplayName\",\"hash\":{},\"data\":data}) : helper)))\n + \"</div>\\n\"\n + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isEditMode : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"\t</div>\\n\t<form class=\\\"newCommentForm\\\">\\n\t\t<div contentEditable=\\\"true\\\" class=\\\"message\\\" data-placeholder=\\\"\"\n + alias4(((helper = (helper = helpers.newMessagePlaceholder || (depth0 != null ? depth0.newMessagePlaceholder : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"newMessagePlaceholder\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\">\"\n + alias4(((helper = (helper = helpers.message || (depth0 != null ? depth0.message : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"message\",\"hash\":{},\"data\":data}) : helper)))\n + \"</div>\\n\t\t<input class=\\\"submit icon-confirm has-tooltip\\\" type=\\\"submit\\\" value=\\\"\\\" title=\\\"\"\n + alias4(((helper = (helper = helpers.submitText || (depth0 != null ? depth0.submitText : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"submitText\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\"/>\\n\t\t<div class=\\\"submitLoading icon-loading-small hidden\\\"></div>\\n\t</form>\\n</\"\n + alias4(((helper = (helper = helpers.tag || (depth0 != null ? depth0.tag : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"tag\",\"hash\":{},\"data\":data}) : helper)))\n + \">\\n\";\n},\"useData\":true});\ntemplates['filesplugin'] = template({\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3=\"function\", alias4=container.escapeExpression;\n\n return \"<a class=\\\"action action-comment permanent\\\" title=\\\"\"\n + alias4(((helper = (helper = helpers.countMessage || (depth0 != null ? depth0.countMessage : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"countMessage\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\" href=\\\"#\\\">\\n\t<img class=\\\"svg\\\" src=\\\"\"\n + alias4(((helper = (helper = helpers.iconUrl || (depth0 != null ? depth0.iconUrl : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"iconUrl\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\"/>\\n</a>\\n\";\n},\"useData\":true});\ntemplates['view'] = template({\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3=\"function\", alias4=container.escapeExpression;\n\n return \"<ul class=\\\"comments\\\">\\n</ul>\\n<div class=\\\"emptycontent hidden\\\"><div class=\\\"icon-comment\\\"></div>\\n\t<p>\"\n + alias4(((helper = (helper = helpers.emptyResultLabel || (depth0 != null ? depth0.emptyResultLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"emptyResultLabel\",\"hash\":{},\"data\":data}) : helper)))\n + \"</p></div>\\n<input type=\\\"button\\\" class=\\\"showMore hidden\\\" value=\\\"\"\n + alias4(((helper = (helper = helpers.moreLabel || (depth0 != null ? depth0.moreLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"moreLabel\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\" name=\\\"show-more\\\" id=\\\"show-more\\\" />\\n<div class=\\\"loading hidden\\\" style=\\\"height: 50px\\\"></div>\\n\";\n},\"useData\":true});\n})();","/*\n * Copyright (c) 2016\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n *\n */\n\n(function(OC, OCA) {\n\n\t_.extend(OC.Files.Client, {\n\t\tPROPERTY_FILEID:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}id',\n\t\tPROPERTY_MESSAGE: \t'{' + OC.Files.Client.NS_OWNCLOUD + '}message',\n\t\tPROPERTY_ACTORTYPE:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}actorType',\n\t\tPROPERTY_ACTORID:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}actorId',\n\t\tPROPERTY_ISUNREAD:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}isUnread',\n\t\tPROPERTY_OBJECTID:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}objectId',\n\t\tPROPERTY_OBJECTTYPE:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}objectType',\n\t\tPROPERTY_ACTORDISPLAYNAME:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}actorDisplayName',\n\t\tPROPERTY_CREATIONDATETIME:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}creationDateTime',\n\t\tPROPERTY_MENTIONS: '{' + OC.Files.Client.NS_OWNCLOUD + '}mentions'\n\t});\n\n\t/**\n\t * @class OCA.Comments.CommentModel\n\t * @classdesc\n\t *\n\t * Comment\n\t *\n\t */\n\tvar CommentModel = OC.Backbone.Model.extend(\n\t\t/** @lends OCA.Comments.CommentModel.prototype */ {\n\t\tsync: OC.Backbone.davSync,\n\n\t\tdefaults: {\n\t\t\tactorType: 'users',\n\t\t\tobjectType: 'files'\n\t\t},\n\n\t\tdavProperties: {\n\t\t\t'id':\tOC.Files.Client.PROPERTY_FILEID,\n\t\t\t'message':\tOC.Files.Client.PROPERTY_MESSAGE,\n\t\t\t'actorType':\tOC.Files.Client.PROPERTY_ACTORTYPE,\n\t\t\t'actorId':\tOC.Files.Client.PROPERTY_ACTORID,\n\t\t\t'actorDisplayName':\tOC.Files.Client.PROPERTY_ACTORDISPLAYNAME,\n\t\t\t'creationDateTime':\tOC.Files.Client.PROPERTY_CREATIONDATETIME,\n\t\t\t'objectType':\tOC.Files.Client.PROPERTY_OBJECTTYPE,\n\t\t\t'objectId':\tOC.Files.Client.PROPERTY_OBJECTID,\n\t\t\t'isUnread':\tOC.Files.Client.PROPERTY_ISUNREAD,\n\t\t\t'mentions': OC.Files.Client.PROPERTY_MENTIONS\n\t\t},\n\n\t\tparse: function(data) {\n\t\t\treturn {\n\t\t\t\tid: data.id,\n\t\t\t\tmessage: data.message,\n\t\t\t\tactorType: data.actorType,\n\t\t\t\tactorId: data.actorId,\n\t\t\t\tactorDisplayName: data.actorDisplayName,\n\t\t\t\tcreationDateTime: data.creationDateTime,\n\t\t\t\tobjectType: data.objectType,\n\t\t\t\tobjectId: data.objectId,\n\t\t\t\tisUnread: (data.isUnread === 'true'),\n\t\t\t\tmentions: this._parseMentions(data.mentions)\n\t\t\t};\n\t\t},\n\n\t\t_parseMentions: function(mentions) {\n\t\t\tif(_.isUndefined(mentions)) {\n\t\t\t\treturn {};\n\t\t\t}\n\t\t\tvar result = {};\n\t\t\tfor(var i in mentions) {\n\t\t\t\tvar mention = mentions[i];\n\t\t\t\tif(_.isUndefined(mention.localName) || mention.localName !== 'mention') {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tresult[i] = {};\n\t\t\t\tfor (var child = mention.firstChild; child; child = child.nextSibling) {\n\t\t\t\t\tif(_.isUndefined(child.localName) || !child.localName.startsWith('mention')) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tresult[i][child.localName] = child.textContent;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t});\n\n\tOCA.Comments.CommentModel = CommentModel;\n})(OC, OCA);\n","/*\n * Copyright (c) 2016\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n *\n */\n\n(function(OC, OCA) {\n\n\t/**\n\t * @class OCA.Comments.CommentCollection\n\t * @classdesc\n\t *\n\t * Collection of comments assigned to a file\n\t *\n\t */\n\tvar CommentCollection = OC.Backbone.Collection.extend(\n\t\t/** @lends OCA.Comments.CommentCollection.prototype */ {\n\n\t\tsync: OC.Backbone.davSync,\n\n\t\tmodel: OCA.Comments.CommentModel,\n\n\t\t/**\n\t\t * Object type\n\t\t *\n\t\t * @type string\n\t\t */\n\t\t_objectType: 'files',\n\n\t\t/**\n\t\t * Object id\n\t\t *\n\t\t * @type string\n\t\t */\n\t\t_objectId: null,\n\n\t\t/**\n\t\t * True if there are no more page results left to fetch\n\t\t *\n\t\t * @type bool\n\t\t */\n\t\t_endReached: false,\n\n\t\t/**\n\t\t * Number of comments to fetch per page\n\t\t *\n\t\t * @type int\n\t\t */\n\t\t_limit : 20,\n\n\t\t/**\n\t\t * Initializes the collection\n\t\t *\n\t\t * @param {string} [options.objectType] object type\n\t\t * @param {string} [options.objectId] object id\n\t\t */\n\t\tinitialize: function(models, options) {\n\t\t\toptions = options || {};\n\t\t\tif (options.objectType) {\n\t\t\t\tthis._objectType = options.objectType;\n\t\t\t}\n\t\t\tif (options.objectId) {\n\t\t\t\tthis._objectId = options.objectId;\n\t\t\t}\n\t\t},\n\n\t\turl: function() {\n\t\t\treturn OC.linkToRemote('dav') + '/comments/' +\n\t\t\t\tencodeURIComponent(this._objectType) + '/' +\n\t\t\t\tencodeURIComponent(this._objectId) + '/';\n\t\t},\n\n\t\tsetObjectId: function(objectId) {\n\t\t\tthis._objectId = objectId;\n\t\t},\n\n\t\thasMoreResults: function() {\n\t\t\treturn !this._endReached;\n\t\t},\n\n\t\treset: function() {\n\t\t\tthis._endReached = false;\n\t\t\tthis._summaryModel = null;\n\t\t\treturn OC.Backbone.Collection.prototype.reset.apply(this, arguments);\n\t\t},\n\n\t\t/**\n\t\t * Fetch the next set of results\n\t\t */\n\t\tfetchNext: function(options) {\n\t\t\tvar self = this;\n\t\t\tif (!this.hasMoreResults()) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tvar body = '<?xml version=\"1.0\" encoding=\"utf-8\" ?>\\n' +\n\t\t\t\t'<oc:filter-comments xmlns:D=\"DAV:\" xmlns:oc=\"http://owncloud.org/ns\">\\n' +\n\t\t\t\t// load one more so we know there is more\n\t\t\t\t' <oc:limit>' + (this._limit + 1) + '</oc:limit>\\n' +\n\t\t\t\t' <oc:offset>' + this.length + '</oc:offset>\\n' +\n\t\t\t\t'</oc:filter-comments>\\n';\n\n\t\t\toptions = options || {};\n\t\t\tvar success = options.success;\n\t\t\toptions = _.extend({\n\t\t\t\tremove: false,\n\t\t\t\tparse: true,\n\t\t\t\tdata: body,\n\t\t\t\tdavProperties: CommentCollection.prototype.model.prototype.davProperties,\n\t\t\t\tsuccess: function(resp) {\n\t\t\t\t\tif (resp.length <= self._limit) {\n\t\t\t\t\t\t// no new entries, end reached\n\t\t\t\t\t\tself._endReached = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// remove last entry, for next page load\n\t\t\t\t\t\tresp = _.initial(resp);\n\t\t\t\t\t}\n\t\t\t\t\tif (!self.set(resp, options)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (success) {\n\t\t\t\t\t\tsuccess.apply(null, arguments);\n\t\t\t\t\t}\n\t\t\t\t\tself.trigger('sync', 'REPORT', self, options);\n\t\t\t\t}\n\t\t\t}, options);\n\n\t\t\treturn this.sync('REPORT', this, options);\n\t\t},\n\n\t\t/**\n\t\t * Returns the matching summary model\n\t\t *\n\t\t * @return {OCA.Comments.CommentSummaryModel} summary model\n\t\t */\n\t\tgetSummaryModel: function() {\n\t\t\tif (!this._summaryModel) {\n\t\t\t\tthis._summaryModel = new OCA.Comments.CommentSummaryModel({\n\t\t\t\t\tid: this._objectId,\n\t\t\t\t\tobjectType: this._objectType\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn this._summaryModel;\n\t\t},\n\n\t\t/**\n\t\t * Updates the read marker for this comment thread\n\t\t *\n\t\t * @param {Date} [date] optional date, defaults to now\n\t\t * @param {Object} [options] backbone options\n\t\t */\n\t\tupdateReadMarker: function(date, options) {\n\t\t\toptions = options || {};\n\n\t\t\treturn this.getSummaryModel().save({\n\t\t\t\treadMarker: (date || new Date()).toUTCString()\n\t\t\t}, options);\n\t\t}\n\t});\n\n\tOCA.Comments.CommentCollection = CommentCollection;\n})(OC, OCA);\n\n","/*\n * Copyright (c) 2016\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n *\n */\n\n(function(OC, OCA) {\n\n\t_.extend(OC.Files.Client, {\n\t\tPROPERTY_READMARKER:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}readMarker'\n\t});\n\n\t/**\n\t * @class OCA.Comments.CommentSummaryModel\n\t * @classdesc\n\t *\n\t * Model containing summary information related to comments\n\t * like the read marker.\n\t *\n\t */\n\tvar CommentSummaryModel = OC.Backbone.Model.extend(\n\t\t/** @lends OCA.Comments.CommentSummaryModel.prototype */ {\n\t\tsync: OC.Backbone.davSync,\n\n\t\t/**\n\t\t * Object type\n\t\t *\n\t\t * @type string\n\t\t */\n\t\t_objectType: 'files',\n\n\t\t/**\n\t\t * Object id\n\t\t *\n\t\t * @type string\n\t\t */\n\t\t_objectId: null,\n\n\t\tdavProperties: {\n\t\t\t'readMarker': OC.Files.Client.PROPERTY_READMARKER\n\t\t},\n\n\t\t/**\n\t\t * Initializes the summary model\n\t\t *\n\t\t * @param {string} [options.objectType] object type\n\t\t * @param {string} [options.objectId] object id\n\t\t */\n\t\tinitialize: function(attrs, options) {\n\t\t\toptions = options || {};\n\t\t\tif (options.objectType) {\n\t\t\t\tthis._objectType = options.objectType;\n\t\t\t}\n\t\t},\n\n\t\turl: function() {\n\t\t\treturn OC.linkToRemote('dav') + '/comments/' +\n\t\t\t\tencodeURIComponent(this._objectType) + '/' +\n\t\t\t\tencodeURIComponent(this.id) + '/';\n\t\t}\n\t});\n\n\tOCA.Comments.CommentSummaryModel = CommentSummaryModel;\n})(OC, OCA);\n","/*\n * Copyright (c) 2016\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n *\n */\n\n/* global Handlebars, escapeHTML */\n\n(function(OC, OCA) {\n\n\t/**\n\t * @memberof OCA.Comments\n\t */\n\tvar CommentsTabView = OCA.Files.DetailTabView.extend(\n\t\t/** @lends OCA.Comments.CommentsTabView.prototype */ {\n\t\tid: 'commentsTabView',\n\t\tclassName: 'tab commentsTabView',\n\t\t_autoCompleteData: undefined,\n\t\t_commentsModifyMenu: undefined,\n\n\t\tevents: {\n\t\t\t'submit .newCommentForm': '_onSubmitComment',\n\t\t\t'click .showMore': '_onClickShowMore',\n\t\t\t'click .cancel': '_onClickCloseComment',\n\t\t\t'click .comment': '_onClickComment',\n\t\t\t'keyup div.message': '_onTextChange',\n\t\t\t'change div.message': '_onTextChange',\n\t\t\t'input div.message': '_onTextChange',\n\t\t\t'paste div.message': '_onPaste'\n\t\t},\n\n\t\t_commentMaxLength: 1000,\n\n\t\tinitialize: function() {\n\t\t\tOCA.Files.DetailTabView.prototype.initialize.apply(this, arguments);\n\t\t\tthis.collection = new OCA.Comments.CommentCollection();\n\t\t\tthis.collection.on('request', this._onRequest, this);\n\t\t\tthis.collection.on('sync', this._onEndRequest, this);\n\t\t\tthis.collection.on('add', this._onAddModel, this);\n\t\t\tthis.collection.on('change:message', this._onChangeModel, this);\n\n\t\t\tthis._commentMaxThreshold = this._commentMaxLength * 0.9;\n\n\t\t\t// TODO: error handling\n\t\t\t_.bindAll(this, '_onTypeComment', '_initAutoComplete', '_onAutoComplete');\n\t\t},\n\n\t\ttemplate: function(params) {\n\t\t\tvar currentUser = OC.getCurrentUser();\n\t\t\treturn OCA.Comments.Templates['view'](_.extend({\n\t\t\t\tactorId: currentUser.uid,\n\t\t\t\tactorDisplayName: currentUser.displayName\n\t\t\t}, params));\n\t\t},\n\n\t\teditCommentTemplate: function(params) {\n\t\t\tvar currentUser = OC.getCurrentUser();\n\t\t\treturn OCA.Comments.Templates['edit_comment'](_.extend({\n\t\t\t\tactorId: currentUser.uid,\n\t\t\t\tactorDisplayName: currentUser.displayName,\n\t\t\t\tnewMessagePlaceholder: t('comments', 'New comment …'),\n\t\t\t\tsubmitText: t('comments', 'Post'),\n\t\t\t\tcancelText: t('comments', 'Cancel'),\n\t\t\t\ttag: 'li'\n\t\t\t}, params));\n\t\t},\n\n\t\tcommentTemplate: function(params) {\n\t\t\tparams = _.extend({\n\t\t\t\teditTooltip: t('comments', 'Edit comment'),\n\t\t\t\tisUserAuthor: OC.getCurrentUser().uid === params.actorId,\n\t\t\t\tisLong: this._isLong(params.message)\n\t\t\t}, params);\n\n\t\t\tif (params.actorType === 'deleted_users') {\n\t\t\t\t// makes the avatar a X\n\t\t\t\tparams.actorId = null;\n\t\t\t\tparams.actorDisplayName = t('comments', '[Deleted user]');\n\t\t\t}\n\n\t\t\treturn OCA.Comments.Templates['comment'](params);\n\t\t},\n\n\t\tgetLabel: function() {\n\t\t\treturn t('comments', 'Comments');\n\t\t},\n\n\t\tgetIcon: function() {\n\t\t\treturn 'icon-comment';\n\t\t},\n\n\t\tsetFileInfo: function(fileInfo) {\n\t\t\tif (fileInfo) {\n\t\t\t\tthis.model = fileInfo;\n\n\t\t\t\tthis.render();\n\t\t\t\tthis._initAutoComplete($('#commentsTabView').find('.newCommentForm .message'));\n\t\t\t\tthis.collection.setObjectId(this.model.id);\n\t\t\t\t// reset to first page\n\t\t\t\tthis.collection.reset([], {silent: true});\n\t\t\t\tthis.nextPage();\n\t\t\t} else {\n\t\t\t\tthis.model = null;\n\t\t\t\tthis.render();\n\t\t\t\tthis.collection.reset();\n\t\t\t}\n\t\t},\n\n\t\trender: function() {\n\t\t\tthis.$el.html(this.template({\n\t\t\t\temptyResultLabel: t('comments', 'No comments yet, start the conversation!'),\n\t\t\t\tmoreLabel: t('comments', 'More comments …')\n\t\t\t}));\n\t\t\tthis.$el.find('.comments').before(this.editCommentTemplate({ tag: 'div'}));\n\t\t\tthis.$el.find('.has-tooltip').tooltip();\n\t\t\tthis.$container = this.$el.find('ul.comments');\n\t\t\tthis.$el.find('.avatar').avatar(OC.getCurrentUser().uid, 32);\n\t\t\tthis.delegateEvents();\n\t\t\tthis.$el.find('.message').on('keydown input change', this._onTypeComment);\n\n\t\t\tautosize(this.$el.find('.newCommentRow .message'))\n\t\t\tthis.$el.find('.newCommentForm .message').focus();\t\n\t\t},\n\n\t\t_initAutoComplete: function($target) {\n\t\t\tvar s = this;\n\t\t\tvar limit = 10;\n\t\t\tif(!_.isUndefined(OC.appConfig.comments)) {\n\t\t\t\tlimit = OC.appConfig.comments.maxAutoCompleteResults;\n\t\t\t}\n\t\t\t$target.atwho({\n\t\t\t\tat: '@',\n\t\t\t\tlimit: limit,\n\t\t\t\tcallbacks: {\n\t\t\t\t\tremoteFilter: s._onAutoComplete,\n\t\t\t\t\thighlighter: function (li) {\n\t\t\t\t\t\t// misuse the highlighter callback to instead of\n\t\t\t\t\t\t// highlighting loads the avatars.\n\t\t\t\t\t\tvar $li = $(li);\n\t\t\t\t\t\t$li.find('.avatar').avatar(undefined, 32);\n\t\t\t\t\t\treturn $li;\n\t\t\t\t\t},\n\t\t\t\t\tsorter: function (q, items) { return items; }\n\t\t\t\t},\n\t\t\t\tdisplayTpl: function (item) {\n\t\t\t\t\treturn '<li>' +\n\t\t\t\t\t\t'<span class=\"avatar-name-wrapper\">' +\n\t\t\t\t\t\t\t'<span class=\"avatar\" ' +\n\t\t\t\t\t\t\t\t\t'data-username=\"' + escapeHTML(item.id) + '\" ' + // for avatars\n\t\t\t\t\t\t\t\t\t'data-user=\"' + escapeHTML(item.id) + '\" ' + // for contactsmenu\n\t\t\t\t\t\t\t\t\t'data-user-display-name=\"' + escapeHTML(item.label) + '\">' +\n\t\t\t\t\t\t\t'</span>' +\n\t\t\t\t\t\t\t'<strong>' + escapeHTML(item.label) + '</strong>' +\n\t\t\t\t\t\t'</span></li>';\n\t\t\t\t},\n\t\t\t\tinsertTpl: function (item) {\n\t\t\t\t\treturn '' +\n\t\t\t\t\t\t'<span class=\"avatar-name-wrapper\">' +\n\t\t\t\t\t\t\t'<span class=\"avatar\" ' +\n\t\t\t\t\t\t\t\t\t'data-username=\"' + escapeHTML(item.id) + '\" ' + // for avatars\n\t\t\t\t\t\t\t\t\t'data-user=\"' + escapeHTML(item.id) + '\" ' + // for contactsmenu\n\t\t\t\t\t\t\t\t\t'data-user-display-name=\"' + escapeHTML(item.label) + '\">' +\n\t\t\t\t\t\t\t'</span>' +\n\t\t\t\t\t\t\t'<strong>' + escapeHTML(item.label) + '</strong>' +\n\t\t\t\t\t\t'</span>';\n\t\t\t\t},\n\t\t\t\tsearchKey: \"label\"\n\t\t\t});\n\t\t\t$target.on('inserted.atwho', function (je, $el) {\n\t\t\t\tvar editionMode = true;\n\t\t\t\ts._postRenderItem(\n\t\t\t\t\t// we need to pass the parent of the inserted element\n\t\t\t\t\t// passing the whole comments form would re-apply and request\n\t\t\t\t\t// avatars from the server\n\t\t\t\t\t$(je.target).find(\n\t\t\t\t\t\t'span[data-username=\"' + $el.find('[data-username]').data('username') + '\"]'\n\t\t\t\t\t).parent(),\n\t\t\t\t\teditionMode\n\t\t\t\t);\n\t\t\t});\n\t\t},\n\n\t\t_onAutoComplete: function(query, callback) {\n\t\t\tvar s = this;\n\t\t\tif(!_.isUndefined(this._autoCompleteRequestTimer)) {\n\t\t\t\tclearTimeout(this._autoCompleteRequestTimer);\n\t\t\t}\n\t\t\tthis._autoCompleteRequestTimer = _.delay(function() {\n\t\t\t\tif(!_.isUndefined(this._autoCompleteRequestCall)) {\n\t\t\t\t\tthis._autoCompleteRequestCall.abort();\n\t\t\t\t}\n\t\t\t\tthis._autoCompleteRequestCall = $.ajax({\n\t\t\t\t\turl: OC.linkToOCS('core', 2) + 'autocomplete/get',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tsearch: query,\n\t\t\t\t\t\titemType: 'files',\n\t\t\t\t\t\titemId: s.model.get('id'),\n\t\t\t\t\t\tsorter: 'commenters|share-recipients',\n\t\t\t\t\t\tlimit: OC.appConfig.comments.maxAutoCompleteResults\n\t\t\t\t\t},\n\t\t\t\t\tbeforeSend: function (request) {\n\t\t\t\t\t\trequest.setRequestHeader('Accept', 'application/json');\n\t\t\t\t\t},\n\t\t\t\t\tsuccess: function (result) {\n\t\t\t\t\t\tcallback(result.ocs.data);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}, 400);\n\t\t},\n\n\t\t_formatItem: function(commentModel) {\n\t\t\tvar timestamp = new Date(commentModel.get('creationDateTime')).getTime();\n\t\t\tvar data = _.extend({\n\t\t\t\ttimestamp: timestamp,\n\t\t\t\tdate: OC.Util.relativeModifiedDate(timestamp),\n\t\t\t\taltDate: OC.Util.formatDate(timestamp),\n\t\t\t\tformattedMessage: this._formatMessage(commentModel.get('message'), commentModel.get('mentions'))\n\t\t\t}, commentModel.attributes);\n\t\t\treturn data;\n\t\t},\n\n\t\t_toggleLoading: function(state) {\n\t\t\tthis._loading = state;\n\t\t\tthis.$el.find('.loading').toggleClass('hidden', !state);\n\t\t},\n\n\t\t_onRequest: function(type) {\n\t\t\tif (type === 'REPORT') {\n\t\t\t\tthis._toggleLoading(true);\n\t\t\t\tthis.$el.find('.showMore').addClass('hidden');\n\t\t\t}\n\t\t},\n\n\t\t_onEndRequest: function(type) {\n\t\t\tvar fileInfoModel = this.model;\n\t\t\tthis._toggleLoading(false);\n\t\t\tthis.$el.find('.emptycontent').toggleClass('hidden', !!this.collection.length);\n\t\t\tthis.$el.find('.showMore').toggleClass('hidden', !this.collection.hasMoreResults());\n\n\t\t\tif (type !== 'REPORT') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// find first unread comment\n\t\t\tvar firstUnreadComment = this.collection.findWhere({isUnread: true});\n\t\t\tif (firstUnreadComment) {\n\t\t\t\t// update read marker\n\t\t\t\tthis.collection.updateReadMarker(\n\t\t\t\t\tnull,\n\t\t\t\t\t{\n\t\t\t\t\t\tsuccess: function() {\n\t\t\t\t\t\t\tfileInfoModel.set('commentsUnread', 0);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t\tthis.$el.find('.newCommentForm .message').focus();\t\n\t\t\t\n\t\t},\n\n\t\t/**\n\t\t * takes care of post-rendering after a new comment was added to the\n\t\t * collection\n\t\t *\n\t\t * @param model\n\t\t * @param collection\n\t\t * @param options\n\t\t * @private\n\t\t */\n\t\t_onAddModel: function(model, collection, options) {\n\t\t\t// we need to render it immediately, to ensure that the right\n\t\t\t// order of comments is kept on opening comments tab\n\t\t\tvar $comment = $(this.commentTemplate(this._formatItem(model)));\n\t\t\tif (!_.isUndefined(options.at) && collection.length > 1) {\n\t\t\t\tthis.$container.find('li').eq(options.at).before($comment);\n\t\t\t} else {\n\t\t\t\tthis.$container.append($comment);\n\t\t\t}\n\t\t\tthis._postRenderItem($comment);\n\t\t\t$('#commentsTabView').find('.newCommentForm div.message').text('').prop('contenteditable', true);\n\n\t\t\t// we need to update the model, because it consists of client data\n\t\t\t// only, but the server might add meta data, e.g. about mentions\n\t\t\tvar oldMentions = model.get('mentions');\n\t\t\tvar self = this;\n\t\t\tmodel.fetch({\n\t\t\t\tsuccess: function (model) {\n\t\t\t\t\tif(_.isEqual(oldMentions, model.get('mentions'))) {\n\t\t\t\t\t\t// don't attempt to render if unnecessary, avoids flickering\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tvar $updated = $(self.commentTemplate(self._formatItem(model)));\n\t\t\t\t\t$comment.html($updated.html());\n\t\t\t\t\tself._postRenderItem($comment);\n\t\t\t\t}\n\t\t\t})\n\n\t\t},\n\n\t\t/**\n\t\t * takes care of post-rendering after a new comment was edited\n\t\t *\n\t\t * @param model\n\t\t * @private\n\t\t */\n\t\t_onChangeModel: function (model) {\n\t\t\tif(model.get('message').trim() === model.previous('message').trim()) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar $form = this.$container.find('.comment[data-id=\"' + model.id + '\"] form');\n\t\t\tvar $row = $form.closest('.comment');\n\t\t\tvar $target = $row.data('commentEl');\n\t\t\tif(_.isUndefined($target)) {\n\t\t\t\t// ignore noise this is only set after editing a comment and hitting post\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar self = this;\n\n\t\t\t// we need to update the model, because it consists of client data\n\t\t\t// only, but the server might add meta data, e.g. about mentions\n\t\t\tmodel.fetch({\n\t\t\t\tsuccess: function (model) {\n\t\t\t\t\t$target.removeClass('hidden');\n\t\t\t\t\t$row.remove();\n\n\t\t\t\t\tvar $message = $target.find('.message');\n\t\t\t\t\t$message\n\t\t\t\t\t\t.html(self._formatMessage(model.get('message'), model.get('mentions')))\n\t\t\t\t\t\t.find('.avatar')\n\t\t\t\t\t\t.each(function () { $(this).avatar(); });\n\t\t\t\t\tself._postRenderItem($message);\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\t_postRenderItem: function($el, editionMode) {\n\t\t\t$el.find('.has-tooltip').tooltip();\n\t\t\tvar inlineAvatars = $el.find('.message .avatar');\n\t\t\tif ($($el.context).hasClass('message')) {\n\t\t\t\tinlineAvatars = $el.find('.avatar');\n\t\t\t}\n\t\t\tinlineAvatars.each(function () {\n\t\t\t\tvar $this = $(this);\n\t\t\t\t$this.avatar($this.attr('data-username'), 16);\n\t\t\t});\n\t\t\t$el.find('.authorRow .avatar').each(function () {\n\t\t\t\tvar $this = $(this);\n\t\t\t\t$this.avatar($this.attr('data-username'), 32);\n\t\t\t});\n\n\t\t\tvar username = $el.find('.avatar').data('username');\n\t\t\tif (username !== OC.getCurrentUser().uid) {\n\t\t\t\t$el.find('.authorRow .avatar, .authorRow .author').contactsMenu(\n\t\t\t\t\tusername, 0, $el.find('.authorRow'));\n\t\t\t}\n\n\t\t\tvar $message = $el.find('.message');\n\t\t\tif($message.length === 0) {\n\t\t\t\t// it is the case when writing a comment and mentioning a person\n\t\t\t\t$message = $el;\n\t\t\t}\n\n\n\t\t\tif (!editionMode) {\n\t\t\t\tvar self = this;\n\t\t\t\t// add the dropdown menu to display the edit and delete option\n\t\t\t\tvar modifyCommentMenu = new OCA.Comments.CommentsModifyMenu();\n\t\t\t\t$el.find('.authorRow').append(modifyCommentMenu.$el);\n\t\t\t\t$el.find('.more').on('click', _.bind(modifyCommentMenu.show, modifyCommentMenu));\n\n\t\t\t\tself.listenTo(modifyCommentMenu, 'select:menu-item-clicked', function(ev, action) {\n\t\t\t\t\tif (action === 'edit') {\n\t\t\t\t\t\tself._onClickEditComment(ev);\n\t\t\t\t\t} else if (action === 'delete') {\n\t\t\t\t\t\tself._onClickDeleteComment(ev);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis._postRenderMessage($message, editionMode);\n\t\t},\n\n\t\t_postRenderMessage: function($el, editionMode) {\n\t\t\tif (editionMode) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t$el.find('.avatar-name-wrapper').each(function() {\n\t\t\t\tvar $this = $(this);\n\t\t\t\tvar $avatar = $this.find('.avatar');\n\n\t\t\t\tvar user = $avatar.data('user');\n\t\t\t\tif (user !== OC.getCurrentUser().uid) {\n\t\t\t\t\t$this.contactsMenu(user, 0, $this);\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t * Convert a message to be displayed in HTML,\n\t\t * converts newlines to <br> tags.\n\t\t */\n\t\t_formatMessage: function(message, mentions, editMode) {\n\t\t\tmessage = escapeHTML(message).replace(/\\n/g, '<br/>');\n\n\t\t\tfor(var i in mentions) {\n\t\t\t\tif(!mentions.hasOwnProperty(i)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvar mention = '@' + mentions[i].mentionId;\n\t\t\t\tif (mentions[i].mentionId.indexOf(' ') !== -1) {\n\t\t\t\t\tmention = _.escape('@\"' + mentions[i].mentionId + '\"');\n\t\t\t\t}\n\n\t\t\t\t// escape possible regex characters in the name\n\t\t\t\tmention = mention.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\t\t\t\tvar regex = new RegExp(\"(^|\\\\s)(\" + mention + \")\\\\b\", 'g');\n\t\t\t\tif (mentions[i].mentionId.indexOf(' ') !== -1) {\n\t\t\t\t\tregex = new RegExp(\"(^|\\\\s)(\" + mention + \")\", 'g');\n\t\t\t\t}\n\n\t\t\t\tvar displayName = this._composeHTMLMention(mentions[i].mentionId, mentions[i].mentionDisplayName);\n\n\t\t\t\t// replace every mention either at the start of the input or after a whitespace\n\t\t\t\t// followed by a non-word character.\n\t\t\t\tmessage = message.replace(regex,\n\t\t\t\t\tfunction(match, p1) {\n\t\t\t\t\t\t// to get number of whitespaces (0 vs 1) right\n\t\t\t\t\t\treturn p1+displayName;\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t\tif(editMode !== true) {\n\t\t\t\tmessage = OCP.Comments.plainToRich(message);\n\t\t\t}\n\t\t\treturn message;\n\t\t},\n\n\t\t_composeHTMLMention: function(uid, displayName) {\n\t\t\tvar avatar = '' +\n\t\t\t\t'<span class=\"avatar\" ' +\n\t\t\t\t\t\t'data-username=\"' + _.escape(uid) + '\" ' +\n\t\t\t\t\t\t'data-user=\"' + _.escape(uid) + '\" ' +\n\t\t\t\t\t\t'data-user-display-name=\"' + _.escape(displayName) + '\">' +\n\t\t\t\t'</span>';\n\n\t\t\tvar isCurrentUser = (uid === OC.getCurrentUser().uid);\n\n\t\t\treturn '' +\n\t\t\t\t'<span class=\"atwho-inserted\" contenteditable=\"false\">' +\n\t\t\t\t\t'<span class=\"avatar-name-wrapper' + (isCurrentUser ? ' currentUser' : '') + '\">' +\n\t\t\t\t\t\tavatar +\n\t\t\t\t\t\t'<strong>' + _.escape(displayName) + '</strong>' +\n\t\t\t\t\t'</span>' +\n\t\t\t\t'</span>';\n\t\t},\n\n\t\tnextPage: function() {\n\t\t\tif (this._loading || !this.collection.hasMoreResults()) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.collection.fetchNext();\n\t\t},\n\n\t\t_onClickEditComment: function(ev) {\n\t\t\tev.preventDefault();\n\t\t\tvar $comment = $(ev.target).closest('.comment');\n\t\t\tvar commentId = $comment.data('id');\n\t\t\tvar commentToEdit = this.collection.get(commentId);\n\t\t\tvar $formRow = $(this.editCommentTemplate(_.extend({\n\t\t\t\tisEditMode: true,\n\t\t\t\tsubmitText: t('comments', 'Save')\n\t\t\t}, commentToEdit.attributes)));\n\n\t\t\t$comment.addClass('hidden').removeClass('collapsed');\n\t\t\t// spawn form\n\t\t\t$comment.after($formRow);\n\t\t\t$formRow.data('commentEl', $comment);\n\t\t\t$formRow.find('.message').on('keydown input change', this._onTypeComment);\n\n\t\t\t// copy avatar element from original to avoid flickering\n\t\t\t$formRow.find('.avatar:first').replaceWith($comment.find('.avatar:first').clone());\n\t\t\t$formRow.find('.has-tooltip').tooltip();\n\n\t\t\tvar $message = $formRow.find('.message');\n\t\t\t$message\n\t\t\t\t.html(this._formatMessage(commentToEdit.get('message'), commentToEdit.get('mentions'), true))\n\t\t\t\t.find('.avatar')\n\t\t\t\t.each(function () { $(this).avatar(); });\n\t\t\tvar editionMode = true;\n\t\t\tthis._postRenderItem($message, editionMode);\n\n\t\t\t// Enable autosize\n\t\t\tautosize($formRow.find('.message'));\n\n\t\t\t// enable autocomplete\n\t\t\tthis._initAutoComplete($formRow.find('.message'));\n\n\t\t\treturn false;\n\t\t},\n\n\t\t_onTypeComment: function(ev) {\n\t\t\tvar $field = $(ev.target);\n\t\t\tvar len = $field.text().length;\n\t\t\tvar $submitButton = $field.data('submitButtonEl');\n\t\t\tif (!$submitButton) {\n\t\t\t\t$submitButton = $field.closest('form').find('.submit');\n\t\t\t\t$field.data('submitButtonEl', $submitButton);\n\t\t\t}\n\t\t\t$field.tooltip('hide');\n\t\t\tif (len > this._commentMaxThreshold) {\n\t\t\t\t$field.attr('data-original-title', t('comments', 'Allowed characters {count} of {max}', {count: len, max: this._commentMaxLength}));\n\t\t\t\t$field.tooltip({trigger: 'manual'});\n\t\t\t\t$field.tooltip('show');\n\t\t\t\t$field.addClass('error');\n\t\t\t}\n\n\t\t\tvar limitExceeded = (len > this._commentMaxLength);\n\t\t\t$field.toggleClass('error', limitExceeded);\n\t\t\t$submitButton.prop('disabled', limitExceeded);\n\n\t\t\t// Submits form with Enter, but Shift+Enter is a new line. If the\n\t\t\t// autocomplete popover is being shown Enter does not submit the\n\t\t\t// form either; it will be handled by At.js which will add the\n\t\t\t// currently selected item to the message.\n\t\t\tif (ev.keyCode === 13 && !ev.shiftKey && !$field.atwho('isSelecting')) {\n\t\t\t\t$submitButton.click();\n\t\t\t\tev.preventDefault();\n\t\t\t}\n\t\t},\n\n\t\t_onClickComment: function(ev) {\n\t\t\tvar $row = $(ev.target);\n\t\t\tif (!$row.is('.comment')) {\n\t\t\t\t$row = $row.closest('.comment');\n\t\t\t}\n\t\t\t$row.removeClass('collapsed');\n\t\t},\n\n\t\t_onClickCloseComment: function(ev) {\n\t\t\tev.preventDefault();\n\t\t\tvar $row = $(ev.target).closest('.comment');\n\t\t\t$row.data('commentEl').removeClass('hidden');\n\t\t\t$row.remove();\n\t\t\treturn false;\n\t\t},\n\n\t\t_onClickDeleteComment: function(ev) {\n\t\t\tev.preventDefault();\n\t\t\tvar $comment = $(ev.target).closest('.comment');\n\t\t\tvar commentId = $comment.data('id');\n\t\t\tvar $loading = $comment.find('.deleteLoading');\n\t\t\tvar $moreIcon = $comment.find('.more');\n\n\t\t\t$comment.addClass('disabled');\n\t\t\t$loading.removeClass('hidden');\n\t\t\t$moreIcon.addClass('hidden');\n\n\t\t\t$comment.data('commentEl', $comment);\n\n\t\t\tthis.collection.get(commentId).destroy({\n\t\t\t\tsuccess: function() {\n\t\t\t\t\t$comment.data('commentEl').remove();\n\t\t\t\t\t$comment.remove();\n\t\t\t\t},\n\t\t\t\terror: function() {\n\t\t\t\t\t$loading.addClass('hidden');\n\t\t\t\t\t$moreIcon.removeClass('hidden');\n\t\t\t\t\t$comment.removeClass('disabled');\n\n\t\t\t\t\tOC.Notification.showTemporary(t('comments', 'Error occurred while retrieving comment with ID {id}', {id: commentId}));\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn false;\n\t\t},\n\n\t\t_onClickShowMore: function(ev) {\n\t\t\tev.preventDefault();\n\t\t\tthis.nextPage();\n\t\t},\n\n\t\t/**\n\t\t * takes care of updating comment element states after submit (either new\n\t\t * comment or edit).\n\t\t *\n\t\t * @param {OC.Backbone.Model} model\n\t\t * @param {jQuery} $form\n\t\t * @private\n\t\t */\n\t\t_onSubmitSuccess: function(model, $form) {\n\t\t\tvar $submit = $form.find('.submit');\n\t\t\tvar $loading = $form.find('.submitLoading');\n\n\t\t\t$submit.removeClass('hidden');\n\t\t\t$loading.addClass('hidden');\n\t\t},\n\n\t\t_commentBodyHTML2Plain: function($el) {\n\t\t\tvar $comment = $el.clone();\n\n\t\t\t$comment.find('.avatar-name-wrapper').each(function () {\n\t\t\t\tvar $this = $(this),\n\t\t\t\t\t$inserted = $this.parent(),\n\t\t\t\t\tuserId = $this.find('.avatar').data('username');\n\t\t\t\tif (userId.indexOf(' ') !== -1) {\n\t\t\t\t\t$inserted.html('@\"' + userId + '\"');\n\t\t\t\t} else {\n\t\t\t\t\t$inserted.html('@' + userId);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t$comment.html(OCP.Comments.richToPlain($comment.html()));\n\n\t\t\tvar oldHtml;\n\t\t\tvar html = $comment.html();\n\t\t\tdo {\n\t\t\t\t// replace works one by one\n\t\t\t\toldHtml = html;\n\t\t\t\thtml = oldHtml.replace(\"<br>\", \"\\n\");\t// preserve line breaks\n\t\t\t} while(oldHtml !== html);\n\t\t\t$comment.html(html);\n\n\t\t\treturn $comment.text();\n\t\t},\n\n\t\t_onSubmitComment: function(e) {\n\t\t\tvar self = this;\n\t\t\tvar $form = $(e.target);\n\t\t\tvar commentId = $form.closest('.comment').data('id');\n\t\t\tvar currentUser = OC.getCurrentUser();\n\t\t\tvar $submit = $form.find('.submit');\n\t\t\tvar $loading = $form.find('.submitLoading');\n\t\t\tvar $commentField = $form.find('.message');\n\t\t\tvar message = $commentField.text().trim();\n\t\t\te.preventDefault();\n\n\t\t\tif (!message.length || message.length > this._commentMaxLength) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t$commentField.prop('contenteditable', false);\n\t\t\t$submit.addClass('hidden');\n\t\t\t$loading.removeClass('hidden');\n\n\t\t\tmessage = this._commentBodyHTML2Plain($commentField);\n\t\t\tif (commentId) {\n\t\t\t\t// edit mode\n\t\t\t\tvar comment = this.collection.get(commentId);\n\t\t\t\tcomment.save({\n\t\t\t\t\tmessage: message\n\t\t\t\t}, {\n\t\t\t\t\tsuccess: function(model) {\n\t\t\t\t\t\tself._onSubmitSuccess(model, $form);\n\t\t\t\t\t\tif(model.get('message').trim() === model.previous('message').trim()) {\n\t\t\t\t\t\t\t// model change event doesn't trigger, manually remove the row.\n\t\t\t\t\t\t\tvar $row = $form.closest('.comment');\n\t\t\t\t\t\t\t$row.data('commentEl').removeClass('hidden');\n\t\t\t\t\t\t\t$row.remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\terror: function() {\n\t\t\t\t\t\tself._onSubmitError($form, commentId);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.collection.create({\n\t\t\t\t\tactorId: currentUser.uid,\n\t\t\t\t\tactorDisplayName: currentUser.displayName,\n\t\t\t\t\tactorType: 'users',\n\t\t\t\t\tverb: 'comment',\n\t\t\t\t\tmessage: message,\n\t\t\t\t\tcreationDateTime: (new Date()).toUTCString()\n\t\t\t\t}, {\n\t\t\t\t\tat: 0,\n\t\t\t\t\t// wait for real creation before adding\n\t\t\t\t\twait: true,\n\t\t\t\t\tsuccess: function(model) {\n\t\t\t\t\t\tself._onSubmitSuccess(model, $form);\n\t\t\t\t\t},\n\t\t\t\t\terror: function() {\n\t\t\t\t\t\tself._onSubmitError($form, undefined);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\n\t\t/**\n\t\t * takes care of updating the UI after an error on submit (either new\n\t\t * comment or edit).\n\t\t *\n\t\t * @param {jQuery} $form\n\t\t * @param {string|undefined} commentId\n\t\t * @private\n\t\t */\n\t\t_onSubmitError: function($form, commentId) {\n\t\t\t$form.find('.submit').removeClass('hidden');\n\t\t\t$form.find('.submitLoading').addClass('hidden');\n\t\t\t$form.find('.message').prop('contenteditable', true);\n\n\t\t\tif(!_.isUndefined(commentId)) {\n\t\t\t\tOC.Notification.show(t('comments', 'Error occurred while updating comment with id {id}', {id: commentId}), {type: 'error'});\n\t\t\t} else {\n\t\t\t\tOC.Notification.show(t('comments', 'Error occurred while posting comment'), {type: 'error'});\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * ensures the contenteditable div is really empty, when user removed\n\t\t * all input, so that the placeholder will be shown again\n\t\t *\n\t\t * @private\n\t\t */\n\t\t_onTextChange: function() {\n\t\t\tvar $message = $('#commentsTabView').find('.newCommentForm div.message');\n\t\t\tif(!$message.text().trim().length) {\n\t\t\t\t$message.empty();\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Limit pasting to plain text\n\t\t *\n\t\t * @param e\n\t\t * @private\n\t\t */\n\t\t_onPaste: function (e) {\n\t\t\te.preventDefault();\n\t\t\tvar text = e.originalEvent.clipboardData.getData(\"text/plain\");\n\t\t\tdocument.execCommand('insertText', false, text);\n\t\t},\n\n\t\t/**\n\t\t * Returns whether the given message is long and needs\n\t\t * collapsing\n\t\t */\n\t\t_isLong: function(message) {\n\t\t\treturn message.length > 250 || (message.match(/\\n/g) || []).length > 1;\n\t\t}\n\t});\n\n\tOCA.Comments.CommentsTabView = CommentsTabView;\n})(OC, OCA);\n","/*\n * Copyright (c) 2018\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n *\n */\n\n/* global Handlebars */\n(function() {\n\n\t/**\n\t * Construct a new CommentsModifyMenuinstance\n\t * @constructs CommentsModifyMenu\n\t * @memberof OC.Comments\n\t * @private\n\t */\n\tvar CommentsModifyMenu = OC.Backbone.View.extend({\n\t\ttagName: 'div',\n\t\tclassName: 'commentsModifyMenu popovermenu bubble menu',\n\t\t_scopes: [\n\t\t\t{\n\t\t\t\tname: 'edit',\n\t\t\t\tdisplayName: t('comments', 'Edit comment'),\n\t\t\t\ticonClass: 'icon-rename'\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'delete',\n\t\t\t\tdisplayName: t('comments', 'Delete comment'),\n\t\t\t\ticonClass: 'icon-delete'\n\t\t\t}\n\t\t],\n\t\tinitialize: function() {\n\n\t\t},\n\t\tevents: {\n\t\t\t'click a.action': '_onClickAction'\n\t\t},\n\n\t\t/**\n\t\t * Event handler whenever an action has been clicked within the menu\n\t\t *\n\t\t * @param {Object} event event object\n\t\t */\n\t\t_onClickAction: function(event) {\n\t\t\tvar $target = $(event.currentTarget);\n\t\t\tif (!$target.hasClass('menuitem')) {\n\t\t\t\t$target = $target.closest('.menuitem');\n\t\t\t}\n\n\t\t\tOC.hideMenus();\n\n\t\t\tthis.trigger('select:menu-item-clicked', event, $target.data('action'));\n\t\t},\n\n\t\t/**\n\t\t * Renders the menu with the currently set items\n\t\t */\n\t\trender: function() {\n\t\t\tthis.$el.html(OCA.Comments.Templates['commentsmodifymenu']({\n\t\t\t\titems: this._scopes\n\t\t\t}));\n\t\t},\n\n\t\t/**\n\t\t * Displays the menu\n\t\t */\n\t\tshow: function(context) {\n\t\t\tthis._context = context;\n\n\t\t\tfor(var i in this._scopes) {\n\t\t\t\tthis._scopes[i].active = false;\n\t\t\t}\n\n\n\t\t\tvar $el = $(context.target);\n\t\t\tvar offsetIcon = $el.offset();\n\t\t\tvar offsetContainer = $el.closest('.authorRow').offset();\n\n\t\t\t// adding some extra top offset to push the menu below the button.\n\t\t\tvar position = {\n\t\t\t\ttop: offsetIcon.top - offsetContainer.top + 48,\n\t\t\t\tleft: '',\n\t\t\t\tright: ''\n\t\t\t};\n\n\t\t\tposition.left = offsetIcon.left - offsetContainer.left;\n\n\t\t\tif (position.left > 200) {\n\t\t\t\t// we need to position the menu to the right.\n\t\t\t\tposition.left = '';\n\t\t\t\tposition.right = this.$el.closest('.comment').find('.date').width();\n\t\t\t\tthis.$el.removeClass('menu-left').addClass('menu-right');\n\t\t\t} else {\n\t\t\t\tthis.$el.removeClass('menu-right').addClass('menu-left');\n\t\t\t}\n\t\t\tthis.$el.css(position);\n\t\t\tthis.render();\n\t\t\tthis.$el.removeClass('hidden');\n\n\t\t\tOC.showMenu(null, this.$el);\n\t\t}\n\t});\n\n\tOCA.Comments = OCA.Comments || {};\n\tOCA.Comments.CommentsModifyMenu = CommentsModifyMenu;\n})(OC, OCA);\n","/*\n * Copyright (c) 2016 Vincent Petry <pvince81@owncloud.com>\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n *\n */\n\n/* global Handlebars */\n\n(function() {\n\n\t_.extend(OC.Files.Client, {\n\t\tPROPERTY_COMMENTS_UNREAD:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}comments-unread'\n\t});\n\n\tOCA.Comments = _.extend({}, OCA.Comments);\n\tif (!OCA.Comments) {\n\t\t/**\n\t\t * @namespace\n\t\t */\n\t\tOCA.Comments = {};\n\t}\n\n\t/**\n\t * @namespace\n\t */\n\tOCA.Comments.FilesPlugin = {\n\t\tignoreLists: [\n\t\t\t'trashbin',\n\t\t\t'files.public'\n\t\t],\n\n\t\t_formatCommentCount: function(count) {\n\t\t\treturn OCA.Comments.Templates['filesplugin']({\n\t\t\t\tcount: count,\n\t\t\t\tcountMessage: n('comments', '%n unread comment', '%n unread comments', count),\n\t\t\t\ticonUrl: OC.imagePath('core', 'actions/comment')\n\t\t\t});\n\t\t},\n\n\t\tattach: function(fileList) {\n\t\t\tvar self = this;\n\t\t\tif (this.ignoreLists.indexOf(fileList.id) >= 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfileList.registerTabView(new OCA.Comments.CommentsTabView('commentsTabView'));\n\n\t\t\tvar oldGetWebdavProperties = fileList._getWebdavProperties;\n\t\t\tfileList._getWebdavProperties = function() {\n\t\t\t\tvar props = oldGetWebdavProperties.apply(this, arguments);\n\t\t\t\tprops.push(OC.Files.Client.PROPERTY_COMMENTS_UNREAD);\n\t\t\t\treturn props;\n\t\t\t};\n\n\t\t\tfileList.filesClient.addFileInfoParser(function(response) {\n\t\t\t\tvar data = {};\n\t\t\t\tvar props = response.propStat[0].properties;\n\t\t\t\tvar commentsUnread = props[OC.Files.Client.PROPERTY_COMMENTS_UNREAD];\n\t\t\t\tif (!_.isUndefined(commentsUnread) && commentsUnread !== '') {\n\t\t\t\t\tdata.commentsUnread = parseInt(commentsUnread, 10);\n\t\t\t\t}\n\t\t\t\treturn data;\n\t\t\t});\n\n\t\t\tfileList.$el.addClass('has-comments');\n\t\t\tvar oldCreateRow = fileList._createRow;\n\t\t\tfileList._createRow = function(fileData) {\n\t\t\t\tvar $tr = oldCreateRow.apply(this, arguments);\n\t\t\t\tif (fileData.commentsUnread) {\n\t\t\t\t\t$tr.attr('data-comments-unread', fileData.commentsUnread);\n\t\t\t\t}\n\t\t\t\treturn $tr;\n\t\t\t};\n\n\t\t\t// register \"comment\" action for reading comments\n\t\t\tfileList.fileActions.registerAction({\n\t\t\t\tname: 'Comment',\n\t\t\t\tdisplayName: function(context) {\n\t\t\t\t\tif (context && context.$file) {\n\t\t\t\t\t\tvar unread = parseInt(context.$file.data('comments-unread'), 10)\n\t\t\t\t\t\tif (unread >= 0) {\n\t\t\t\t\t\t\treturn n('comments', '1 new comment', '{unread} new comments', unread, { unread: unread })\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn t('comments', 'Comment')\n\t\t\t\t},\n\t\t\t\tmime: 'all',\n\t\t\t\torder: -140,\n\t\t\t\ticonClass: 'icon-comment',\n\t\t\t\tpermissions: OC.PERMISSION_READ,\n\t\t\t\ttype: OCA.Files.FileActions.TYPE_INLINE,\n\t\t\t\trender: function(actionSpec, isDefault, context) {\n\t\t\t\t\tvar $file = context.$file;\n\t\t\t\t\tvar unreadComments = $file.data('comments-unread');\n\t\t\t\t\tif (unreadComments) {\n\t\t\t\t\t\tvar $actionLink = $(self._formatCommentCount(unreadComments));\n\t\t\t\t\t\tcontext.$file.find('a.name>span.fileactions').append($actionLink);\n\t\t\t\t\t\treturn $actionLink;\n\t\t\t\t\t}\n\t\t\t\t\treturn '';\n\t\t\t\t},\n\t\t\t\tactionHandler: function(fileName, context) {\n\t\t\t\t\tcontext.$file.find('.action-comment').tooltip('hide');\n\t\t\t\t\t// open sidebar in comments section\n\t\t\t\t\tcontext.fileList.showDetailsView(fileName, 'commentsTabView');\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// add attribute to \"elementToFile\"\n\t\t\tvar oldElementToFile = fileList.elementToFile;\n\t\t\tfileList.elementToFile = function($el) {\n\t\t\t\tvar fileInfo = oldElementToFile.apply(this, arguments);\n\t\t\t\tvar commentsUnread = $el.data('comments-unread');\n\t\t\t\tif (commentsUnread) {\n\t\t\t\t\tfileInfo.commentsUnread = commentsUnread;\n\t\t\t\t}\n\t\t\t\treturn fileInfo;\n\t\t\t};\n\t\t}\n\t};\n\n})();\n\nOC.Plugins.register('OCA.Files.FileList', OCA.Comments.FilesPlugin);\n","/*\n * @author Joas Schilling <coding@schilljs.com>\n * Copyright (c) 2016\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n */\n\n(function() {\n\tOCA.Comments.ActivityTabViewPlugin = {\n\n\t\t/**\n\t\t * Prepare activity for display\n\t\t *\n\t\t * @param {OCA.Activity.ActivityModel} model for this activity\n\t\t * @param {jQuery} $el jQuery handle for this activity\n\t\t * @param {string} view The view that displayes this activity\n\t\t */\n\t\tprepareModelForDisplay: function (model, $el, view) {\n\t\t\tif (model.get('app') !== 'comments' || model.get('type') !== 'comments') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (view === 'ActivityTabView') {\n\t\t\t\t$el.addClass('comment');\n\t\t\t\tif (model.get('message') && this._isLong(model.get('message'))) {\n\t\t\t\t\t$el.addClass('collapsed');\n\t\t\t\t\tvar $overlay = $('<div>').addClass('message-overlay');\n\t\t\t\t\t$el.find('.activitymessage').after($overlay);\n\t\t\t\t\t$el.on('click', this._onClickCollapsedComment);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/*\n\t\t * Copy of CommentsTabView._onClickComment()\n\t\t */\n\t\t_onClickCollapsedComment: function(ev) {\n\t\t\tvar $row = $(ev.target);\n\t\t\tif (!$row.is('.comment')) {\n\t\t\t\t$row = $row.closest('.comment');\n\t\t\t}\n\t\t\t$row.removeClass('collapsed');\n\t\t},\n\n\t\t/*\n\t\t * Copy of CommentsTabView._isLong()\n\t\t */\n\t\t_isLong: function(message) {\n\t\t\treturn message.length > 250 || (message.match(/\\n/g) || []).length > 1;\n\t\t}\n\t};\n\n\n})();\n\nOC.Plugins.register('OCA.Activity.RenderingPlugins', OCA.Comments.ActivityTabViewPlugin);\n","/*\n * Copyright (c) 2014\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n *\n */\n(function(OC, OCA, $) {\n\t\"use strict\";\n\n\t/**\n\t * Construct a new FileActions instance\n\t * @constructs Files\n\t */\n\tvar Comment = function() {\n\t\tthis.initialize();\n\t};\n\n\tComment.prototype = {\n\n\t\tfileList: null,\n\n\t\t/**\n\t\t * Initialize the file search\n\t\t */\n\t\tinitialize: function() {\n\n\t\t\tvar self = this;\n\n\t\t\tthis.fileAppLoaded = function() {\n\t\t\t\treturn !!OCA.Files && !!OCA.Files.App;\n\t\t\t};\n\t\t\tfunction inFileList($row, result) {\n\t\t\t\treturn false;\n\n\t\t\t\tif (! self.fileAppLoaded()) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tvar dir = self.fileList.getCurrentDirectory().replace(/\\/+$/,'');\n\t\t\t\tvar resultDir = OC.dirname(result.path);\n\t\t\t\treturn dir === resultDir && self.fileList.inList(result.name);\n\t\t\t}\n\t\t\tfunction hideNoFilterResults() {\n\t\t\t\tvar $nofilterresults = $('.nofilterresults');\n\t\t\t\tif ( ! $nofilterresults.hasClass('hidden') ) {\n\t\t\t\t\t$nofilterresults.addClass('hidden');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/**\n\t\t\t *\n\t\t\t * @param {jQuery} $row\n\t\t\t * @param {Object} result\n\t\t\t * @param {int} result.id\n\t\t\t * @param {string} result.comment\n\t\t\t * @param {string} result.authorId\n\t\t\t * @param {string} result.authorName\n\t\t\t * @param {string} result.link\n\t\t\t * @param {string} result.fileName\n\t\t\t * @param {string} result.path\n\t\t\t * @returns {*}\n\t\t\t */\n\t\t\tthis.renderCommentResult = function($row, result) {\n\t\t\t\tif (inFileList($row, result)) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\thideNoFilterResults();\n\t\t\t\t/*render preview icon, show path beneath filename,\n\t\t\t\t show size and last modified date on the right */\n\t\t\t\tthis.updateLegacyMimetype(result);\n\n\t\t\t\tvar $pathDiv = $('<div>').addClass('path').text(result.path);\n\n\t\t\t\tvar $avatar = $('<div>');\n\t\t\t\t$avatar.addClass('avatar')\n\t\t\t\t\t.css('display', 'inline-block')\n\t\t\t\t\t.css('vertical-align', 'middle')\n\t\t\t\t\t.css('margin', '0 5px 2px 3px');\n\n\t\t\t\tif (result.authorName) {\n\t\t\t\t\t$avatar.avatar(result.authorId, 21, undefined, false, undefined, result.authorName);\n\t\t\t\t} else {\n\t\t\t\t\t$avatar.avatar(result.authorId, 21);\n\t\t\t\t}\n\n\t\t\t\t$row.find('td.info div.name').after($pathDiv).text(result.comment).prepend($('<span>').addClass('path').css('margin-right', '5px').text(result.authorName)).prepend($avatar);\n\t\t\t\t$row.find('td.result a').attr('href', result.link);\n\n\t\t\t\t$row.find('td.icon')\n\t\t\t\t\t.css('background-image', 'url(' + OC.imagePath('core', 'actions/comment') + ')')\n\t\t\t\t\t.css('opacity', '.4');\n\t\t\t\tvar dir = OC.dirname(result.path);\n\t\t\t\t// \"result.path\" does not include a leading \"/\", so \"OC.dirname\"\n\t\t\t\t// returns the path itself for files or folders in the root.\n\t\t\t\tif (dir === result.path) {\n\t\t\t\t\tdir = '/';\n\t\t\t\t}\n\t\t\t\t$row.find('td.info a').attr('href',\n\t\t\t\t\tOC.generateUrl('/apps/files/?dir={dir}&scrollto={scrollto}', {dir: dir, scrollto: result.fileName})\n\t\t\t\t);\n\n\t\t\t\treturn $row;\n\t\t\t};\n\n\t\t\tthis.handleCommentClick = function($row, result, event) {\n\t\t\t\tif (self.fileAppLoaded() && self.fileList.id === 'files') {\n\t\t\t\t\tself.fileList.changeDirectory(OC.dirname(result.path));\n\t\t\t\t\tself.fileList.scrollTo(result.name);\n\t\t\t\t\treturn false;\n\t\t\t\t} else {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tthis.updateLegacyMimetype = function (result) {\n\t\t\t\t// backward compatibility:\n\t\t\t\tif (!result.mime && result.mime_type) {\n\t\t\t\t\tresult.mime = result.mime_type;\n\t\t\t\t}\n\t\t\t};\n\t\t\tthis.setFileList = function (fileList) {\n\t\t\t\tthis.fileList = fileList;\n\t\t\t};\n\n\t\t\tOC.Plugins.register('OCA.Search.Core', this);\n\t\t},\n\t\tattach: function(search) {\n\t\t\tsearch.setRenderer('comment', this.renderCommentResult.bind(this));\n\t\t\tsearch.setHandler('comment', this.handleCommentClick.bind(this));\n\t\t}\n\t};\n\n\tOCA.Search.comment = new Comment();\n})(OC, OCA, $);\n","/*! jquery.caret 2015-02-01 */\n!function(a,b){\"function\"==typeof define&&define.amd?define([\"jquery\"],function(c){return a.returnExportsGlobal=b(c)}):\"object\"==typeof exports?module.exports=b(require(\"jquery\")):b(jQuery)}(this,function(a){\"use strict\";var b,c,d,e,f,g,h,i,j,k,l;k=\"caret\",b=function(){function b(a){this.$inputor=a,this.domInputor=this.$inputor[0]}return b.prototype.setPos=function(){return this.domInputor},b.prototype.getIEPosition=function(){return this.getPosition()},b.prototype.getPosition=function(){var a,b;return b=this.getOffset(),a=this.$inputor.offset(),b.left-=a.left,b.top-=a.top,b},b.prototype.getOldIEPos=function(){var a,b;return b=h.selection.createRange(),a=h.body.createTextRange(),a.moveToElementText(this.domInputor),a.setEndPoint(\"EndToEnd\",b),a.text.length},b.prototype.getPos=function(){var a,b,c;return(c=this.range())?(a=c.cloneRange(),a.selectNodeContents(this.domInputor),a.setEnd(c.endContainer,c.endOffset),b=a.toString().length,a.detach(),b):h.selection?this.getOldIEPos():void 0},b.prototype.getOldIEOffset=function(){var a,b;return a=h.selection.createRange().duplicate(),a.moveStart(\"character\",-1),b=a.getBoundingClientRect(),{height:b.bottom-b.top,left:b.left,top:b.top}},b.prototype.getOffset=function(){var b,c,d,e,f;return j.getSelection&&(d=this.range())?(d.endOffset-1>0&&d.endContainer===!this.domInputor&&(b=d.cloneRange(),b.setStart(d.endContainer,d.endOffset-1),b.setEnd(d.endContainer,d.endOffset),e=b.getBoundingClientRect(),c={height:e.height,left:e.left+e.width,top:e.top},b.detach()),c&&0!==(null!=c?c.height:void 0)||(b=d.cloneRange(),f=a(h.createTextNode(\"|\")),b.insertNode(f[0]),b.selectNode(f[0]),e=b.getBoundingClientRect(),c={height:e.height,left:e.left,top:e.top},f.remove(),b.detach())):h.selection&&(c=this.getOldIEOffset()),c&&(c.top+=a(j).scrollTop(),c.left+=a(j).scrollLeft()),c},b.prototype.range=function(){var a;if(j.getSelection)return a=j.getSelection(),a.rangeCount>0?a.getRangeAt(0):null},b}(),c=function(){function b(a){this.$inputor=a,this.domInputor=this.$inputor[0]}return b.prototype.getIEPos=function(){var a,b,c,d,e,f,g;return b=this.domInputor,f=h.selection.createRange(),e=0,f&&f.parentElement()===b&&(d=b.value.replace(/\\r\\n/g,\"\\n\"),c=d.length,g=b.createTextRange(),g.moveToBookmark(f.getBookmark()),a=b.createTextRange(),a.collapse(!1),e=g.compareEndPoints(\"StartToEnd\",a)>-1?c:-g.moveStart(\"character\",-c)),e},b.prototype.getPos=function(){return h.selection?this.getIEPos():this.domInputor.selectionStart},b.prototype.setPos=function(a){var b,c;return b=this.domInputor,h.selection?(c=b.createTextRange(),c.move(\"character\",a),c.select()):b.setSelectionRange&&b.setSelectionRange(a,a),b},b.prototype.getIEOffset=function(a){var b,c,d,e;return c=this.domInputor.createTextRange(),a||(a=this.getPos()),c.move(\"character\",a),d=c.boundingLeft,e=c.boundingTop,b=c.boundingHeight,{left:d,top:e,height:b}},b.prototype.getOffset=function(b){var c,d,e;return c=this.$inputor,h.selection?(d=this.getIEOffset(b),d.top+=a(j).scrollTop()+c.scrollTop(),d.left+=a(j).scrollLeft()+c.scrollLeft(),d):(d=c.offset(),e=this.getPosition(b),d={left:d.left+e.left-c.scrollLeft(),top:d.top+e.top-c.scrollTop(),height:e.height})},b.prototype.getPosition=function(a){var b,c,e,f,g,h,i;return b=this.$inputor,f=function(a){return a=a.replace(/<|>|`|\"|&/g,\"?\").replace(/\\r\\n|\\r|\\n/g,\"<br/>\"),/firefox/i.test(navigator.userAgent)&&(a=a.replace(/\\s/g,\"&nbsp;\")),a},void 0===a&&(a=this.getPos()),i=b.val().slice(0,a),e=b.val().slice(a),g=\"<span style='position: relative; display: inline;'>\"+f(i)+\"</span>\",g+=\"<span id='caret' style='position: relative; display: inline;'>|</span>\",g+=\"<span style='position: relative; display: inline;'>\"+f(e)+\"</span>\",h=new d(b),c=h.create(g).rect()},b.prototype.getIEPosition=function(a){var b,c,d,e,f;return d=this.getIEOffset(a),c=this.$inputor.offset(),e=d.left-c.left,f=d.top-c.top,b=d.height,{left:e,top:f,height:b}},b}(),d=function(){function b(a){this.$inputor=a}return b.prototype.css_attr=[\"borderBottomWidth\",\"borderLeftWidth\",\"borderRightWidth\",\"borderTopStyle\",\"borderRightStyle\",\"borderBottomStyle\",\"borderLeftStyle\",\"borderTopWidth\",\"boxSizing\",\"fontFamily\",\"fontSize\",\"fontWeight\",\"height\",\"letterSpacing\",\"lineHeight\",\"marginBottom\",\"marginLeft\",\"marginRight\",\"marginTop\",\"outlineWidth\",\"overflow\",\"overflowX\",\"overflowY\",\"paddingBottom\",\"paddingLeft\",\"paddingRight\",\"paddingTop\",\"textAlign\",\"textOverflow\",\"textTransform\",\"whiteSpace\",\"wordBreak\",\"wordWrap\"],b.prototype.mirrorCss=function(){var b,c=this;return b={position:\"absolute\",left:-9999,top:0,zIndex:-2e4},\"TEXTAREA\"===this.$inputor.prop(\"tagName\")&&this.css_attr.push(\"width\"),a.each(this.css_attr,function(a,d){return b[d]=c.$inputor.css(d)}),b},b.prototype.create=function(b){return this.$mirror=a(\"<div></div>\"),this.$mirror.css(this.mirrorCss()),this.$mirror.html(b),this.$inputor.after(this.$mirror),this},b.prototype.rect=function(){var a,b,c;return a=this.$mirror.find(\"#caret\"),b=a.position(),c={left:b.left,top:b.top,height:a.height()},this.$mirror.remove(),c},b}(),e={contentEditable:function(a){return!(!a[0].contentEditable||\"true\"!==a[0].contentEditable)}},g={pos:function(a){return a||0===a?this.setPos(a):this.getPos()},position:function(a){return h.selection?this.getIEPosition(a):this.getPosition(a)},offset:function(a){var b;return b=this.getOffset(a)}},h=null,j=null,i=null,l=function(a){var b;return(b=null!=a?a.iframe:void 0)?(i=b,j=b.contentWindow,h=b.contentDocument||j.document):(i=void 0,j=window,h=document)},f=function(a){var b;h=a[0].ownerDocument,j=h.defaultView||h.parentWindow;try{return i=j.frameElement}catch(c){b=c}},a.fn.caret=function(d,f,h){var i;return g[d]?(a.isPlainObject(f)?(l(f),f=void 0):l(h),i=e.contentEditable(this)?new b(this):new c(this),g[d].apply(i,[f])):a.error(\"Method \"+d+\" does not exist on jQuery.caret\")},a.fn.caret.EditableCaret=b,a.fn.caret.InputCaret=c,a.fn.caret.Utils=e,a.fn.caret.apis=g});","!function(t,e){\"function\"==typeof define&&define.amd?define([\"jquery\"],function(t){return e(t)}):\"object\"==typeof exports?module.exports=e(require(\"jquery\")):e(jQuery)}(this,function(t){var e,i;i={ESC:27,TAB:9,ENTER:13,CTRL:17,A:65,P:80,N:78,LEFT:37,UP:38,RIGHT:39,DOWN:40,BACKSPACE:8,SPACE:32},e={beforeSave:function(t){return r.arrayToDefaultHash(t)},matcher:function(t,e,i,n){var r,o,s,a,h;return t=t.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g,\"\\\\$&\"),i&&(t=\"(?:^|\\\\s)\"+t),r=decodeURI(\"%C3%80\"),o=decodeURI(\"%C3%BF\"),h=n?\" \":\"\",a=new RegExp(t+\"([A-Za-z\"+r+\"-\"+o+\"0-9_\"+h+\"'.+-]*)$|\"+t+\"([^\\\\x00-\\\\xff]*)$\",\"gi\"),s=a.exec(e),s?s[2]||s[1]:null},filter:function(t,e,i){var n,r,o,s;for(n=[],r=0,s=e.length;s>r;r++)o=e[r],~new String(o[i]).toLowerCase().indexOf(t.toLowerCase())&&n.push(o);return n},remoteFilter:null,sorter:function(t,e,i){var n,r,o,s;if(!t)return e;for(n=[],r=0,s=e.length;s>r;r++)o=e[r],o.atwho_order=new String(o[i]).toLowerCase().indexOf(t.toLowerCase()),o.atwho_order>-1&&n.push(o);return n.sort(function(t,e){return t.atwho_order-e.atwho_order})},tplEval:function(t,e){var i,n,r;r=t;try{return\"string\"!=typeof t&&(r=t(e)),r.replace(/\\$\\{([^\\}]*)\\}/g,function(t,i,n){return e[i]})}catch(n){return i=n,\"\"}},highlighter:function(t,e){var i;return e?(i=new RegExp(\">\\\\s*([^<]*?)(\"+e.replace(\"+\",\"\\\\+\")+\")([^<]*)\\\\s*<\",\"ig\"),t.replace(i,function(t,e,i,n){return\"> \"+e+\"<strong>\"+i+\"</strong>\"+n+\" <\"})):t},beforeInsert:function(t,e,i){return t},beforeReposition:function(t){return t},afterMatchFailed:function(t,e){}};var n;n=function(){function e(e){this.currentFlag=null,this.controllers={},this.aliasMaps={},this.$inputor=t(e),this.setupRootElement(),this.listen()}return e.prototype.createContainer=function(e){var i;return null!=(i=this.$el)&&i.remove(),t(e.body).append(this.$el=t(\"<div class='atwho-container'></div>\"))},e.prototype.setupRootElement=function(e,i){var n,r;if(null==i&&(i=!1),e)this.window=e.contentWindow,this.document=e.contentDocument||this.window.document,this.iframe=e;else{this.document=this.$inputor[0].ownerDocument,this.window=this.document.defaultView||this.document.parentWindow;try{this.iframe=this.window.frameElement}catch(r){if(n=r,this.iframe=null,t.fn.atwho.debug)throw new Error(\"iframe auto-discovery is failed.\\nPlease use `setIframe` to set the target iframe manually.\\n\"+n)}}return this.createContainer((this.iframeAsRoot=i)?this.document:document)},e.prototype.controller=function(t){var e,i,n,r;if(this.aliasMaps[t])i=this.controllers[this.aliasMaps[t]];else{r=this.controllers;for(n in r)if(e=r[n],n===t){i=e;break}}return i?i:this.controllers[this.currentFlag]},e.prototype.setContextFor=function(t){return this.currentFlag=t,this},e.prototype.reg=function(t,e){var i,n;return n=(i=this.controllers)[t]||(i[t]=this.$inputor.is(\"[contentEditable]\")?new l(this,t):new s(this,t)),e.alias&&(this.aliasMaps[e.alias]=t),n.init(e),this},e.prototype.listen=function(){return this.$inputor.on(\"compositionstart\",function(t){return function(e){var i;return null!=(i=t.controller())&&i.view.hide(),t.isComposing=!0,null}}(this)).on(\"compositionend\",function(t){return function(e){return t.isComposing=!1,setTimeout(function(e){return t.dispatch(e)}),null}}(this)).on(\"keyup.atwhoInner\",function(t){return function(e){return t.onKeyup(e)}}(this)).on(\"keydown.atwhoInner\",function(t){return function(e){return t.onKeydown(e)}}(this)).on(\"blur.atwhoInner\",function(t){return function(e){var i;return(i=t.controller())?(i.expectedQueryCBId=null,i.view.hide(e,i.getOpt(\"displayTimeout\"))):void 0}}(this)).on(\"click.atwhoInner\",function(t){return function(e){return t.dispatch(e)}}(this)).on(\"scroll.atwhoInner\",function(t){return function(){var e;return e=t.$inputor.scrollTop(),function(i){var n,r;return n=i.target.scrollTop,e!==n&&null!=(r=t.controller())&&r.view.hide(i),e=n,!0}}}(this)())},e.prototype.shutdown=function(){var t,e,i;i=this.controllers;for(t in i)e=i[t],e.destroy(),delete this.controllers[t];return this.$inputor.off(\".atwhoInner\"),this.$el.remove()},e.prototype.dispatch=function(t){var e,i,n,r;n=this.controllers,r=[];for(e in n)i=n[e],r.push(i.lookUp(t));return r},e.prototype.onKeyup=function(e){var n;switch(e.keyCode){case i.ESC:e.preventDefault(),null!=(n=this.controller())&&n.view.hide();break;case i.DOWN:case i.UP:case i.CTRL:case i.ENTER:t.noop();break;case i.P:case i.N:e.ctrlKey||this.dispatch(e);break;default:this.dispatch(e)}},e.prototype.onKeydown=function(e){var n,r;if(r=null!=(n=this.controller())?n.view:void 0,r&&r.visible())switch(e.keyCode){case i.ESC:e.preventDefault(),r.hide(e);break;case i.UP:e.preventDefault(),r.prev();break;case i.DOWN:e.preventDefault(),r.next();break;case i.P:if(!e.ctrlKey)return;e.preventDefault(),r.prev();break;case i.N:if(!e.ctrlKey)return;e.preventDefault(),r.next();break;case i.TAB:case i.ENTER:case i.SPACE:if(!r.visible())return;if(!this.controller().getOpt(\"spaceSelectsMatch\")&&e.keyCode===i.SPACE)return;if(!this.controller().getOpt(\"tabSelectsMatch\")&&e.keyCode===i.TAB)return;r.highlighted()?(e.preventDefault(),r.choose(e)):r.hide(e);break;default:t.noop()}},e}();var r,o=[].slice;r=function(){function i(e,i){this.app=e,this.at=i,this.$inputor=this.app.$inputor,this.id=this.$inputor[0].id||this.uid(),this.expectedQueryCBId=null,this.setting=null,this.query=null,this.pos=0,this.range=null,0===(this.$el=t(\"#atwho-ground-\"+this.id,this.app.$el)).length&&this.app.$el.append(this.$el=t(\"<div id='atwho-ground-\"+this.id+\"'></div>\")),this.model=new u(this),this.view=new c(this)}return i.prototype.uid=function(){return(Math.random().toString(16)+\"000000000\").substr(2,8)+(new Date).getTime()},i.prototype.init=function(e){return this.setting=t.extend({},this.setting||t.fn.atwho[\"default\"],e),this.view.init(),this.model.reload(this.setting.data)},i.prototype.destroy=function(){return this.trigger(\"beforeDestroy\"),this.model.destroy(),this.view.destroy(),this.$el.remove()},i.prototype.callDefault=function(){var i,n,r,s;s=arguments[0],i=2<=arguments.length?o.call(arguments,1):[];try{return e[s].apply(this,i)}catch(r){return n=r,t.error(n+\" Or maybe At.js doesn't have function \"+s)}},i.prototype.trigger=function(t,e){var i,n;return null==e&&(e=[]),e.push(this),i=this.getOpt(\"alias\"),n=i?t+\"-\"+i+\".atwho\":t+\".atwho\",this.$inputor.trigger(n,e)},i.prototype.callbacks=function(t){return this.getOpt(\"callbacks\")[t]||e[t]},i.prototype.getOpt=function(t,e){var i,n;try{return this.setting[t]}catch(n){return i=n,null}},i.prototype.insertContentFor=function(e){var i,n;return n=this.getOpt(\"insertTpl\"),i=t.extend({},e.data(\"item-data\"),{\"atwho-at\":this.at}),this.callbacks(\"tplEval\").call(this,n,i,\"onInsert\")},i.prototype.renderView=function(t){var e;return e=this.getOpt(\"searchKey\"),t=this.callbacks(\"sorter\").call(this,this.query.text,t.slice(0,1001),e),this.view.render(t.slice(0,this.getOpt(\"limit\")))},i.arrayToDefaultHash=function(e){var i,n,r,o;if(!t.isArray(e))return e;for(o=[],i=0,r=e.length;r>i;i++)n=e[i],t.isPlainObject(n)?o.push(n):o.push({name:n});return o},i.prototype.lookUp=function(t){var e,i;if((!t||\"click\"!==t.type||this.getOpt(\"lookUpOnClick\"))&&(!this.getOpt(\"suspendOnComposing\")||!this.app.isComposing))return(e=this.catchQuery(t))?(this.app.setContextFor(this.at),(i=this.getOpt(\"delay\"))?this._delayLookUp(e,i):this._lookUp(e),e):(this.expectedQueryCBId=null,e)},i.prototype._delayLookUp=function(t,e){var i,n;return i=Date.now?Date.now():(new Date).getTime(),this.previousCallTime||(this.previousCallTime=i),n=e-(i-this.previousCallTime),n>0&&e>n?(this.previousCallTime=i,this._stopDelayedCall(),this.delayedCallTimeout=setTimeout(function(e){return function(){return e.previousCallTime=0,e.delayedCallTimeout=null,e._lookUp(t)}}(this),e)):(this._stopDelayedCall(),this.previousCallTime!==i&&(this.previousCallTime=0),this._lookUp(t))},i.prototype._stopDelayedCall=function(){return this.delayedCallTimeout?(clearTimeout(this.delayedCallTimeout),this.delayedCallTimeout=null):void 0},i.prototype._generateQueryCBId=function(){return{}},i.prototype._lookUp=function(e){var i;return i=function(t,e){return t===this.expectedQueryCBId?e&&e.length>0?this.renderView(this.constructor.arrayToDefaultHash(e)):this.view.hide():void 0},this.expectedQueryCBId=this._generateQueryCBId(),this.model.query(e.text,t.proxy(i,this,this.expectedQueryCBId))},i}();var s,a=function(t,e){function i(){this.constructor=t}for(var n in e)h.call(e,n)&&(t[n]=e[n]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},h={}.hasOwnProperty;s=function(e){function i(){return i.__super__.constructor.apply(this,arguments)}return a(i,e),i.prototype.catchQuery=function(){var t,e,i,n,r,o,s;return e=this.$inputor.val(),t=this.$inputor.caret(\"pos\",{iframe:this.app.iframe}),s=e.slice(0,t),r=this.callbacks(\"matcher\").call(this,this.at,s,this.getOpt(\"startWithSpace\"),this.getOpt(\"acceptSpaceBar\")),n=\"string\"==typeof r,n&&r.length<this.getOpt(\"minLen\",0)?void 0:(n&&r.length<=this.getOpt(\"maxLen\",20)?(o=t-r.length,i=o+r.length,this.pos=o,r={text:r,headPos:o,endPos:i},this.trigger(\"matched\",[this.at,r.text])):(r=null,this.view.hide()),this.query=r)},i.prototype.rect=function(){var e,i,n;if(e=this.$inputor.caret(\"offset\",this.pos-1,{iframe:this.app.iframe}))return this.app.iframe&&!this.app.iframeAsRoot&&(i=t(this.app.iframe).offset(),e.left+=i.left,e.top+=i.top),n=this.app.document.selection?0:2,{left:e.left,top:e.top,bottom:e.top+e.height+n}},i.prototype.insert=function(t,e){var i,n,r,o,s;return i=this.$inputor,n=i.val(),r=n.slice(0,Math.max(this.query.headPos-this.at.length,0)),o=\"\"===(o=this.getOpt(\"suffix\"))?o:o||\" \",t+=o,s=\"\"+r+t+n.slice(this.query.endPos||0),i.val(s),i.caret(\"pos\",r.length+t.length,{iframe:this.app.iframe}),i.is(\":focus\")||i.focus(),i.change()},i}(r);var l,a=function(t,e){function i(){this.constructor=t}for(var n in e)h.call(e,n)&&(t[n]=e[n]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},h={}.hasOwnProperty;l=function(e){function n(){return n.__super__.constructor.apply(this,arguments)}return a(n,e),n.prototype._getRange=function(){var t;return t=this.app.window.getSelection(),t.rangeCount>0?t.getRangeAt(0):void 0},n.prototype._setRange=function(e,i,n){return null==n&&(n=this._getRange()),n&&i?(i=t(i)[0],\"after\"===e?(n.setEndAfter(i),n.setStartAfter(i)):(n.setEndBefore(i),n.setStartBefore(i)),n.collapse(!1),this._clearRange(n)):void 0},n.prototype._clearRange=function(t){var e;return null==t&&(t=this._getRange()),e=this.app.window.getSelection(),null==this.ctrl_a_pressed?(e.removeAllRanges(),e.addRange(t)):void 0},n.prototype._movingEvent=function(t){var e;return\"click\"===t.type||(e=t.which)===i.RIGHT||e===i.LEFT||e===i.UP||e===i.DOWN},n.prototype._unwrap=function(e){var i;return e=t(e).unwrap().get(0),(i=e.nextSibling)&&i.nodeValue&&(e.nodeValue+=i.nodeValue,t(i).remove()),e},n.prototype.catchQuery=function(e){var n,r,o,s,a,h,l,u,c,p,f,d;if((d=this._getRange())&&d.collapsed){if(e.which===i.ENTER)return(r=t(d.startContainer).closest(\".atwho-query\")).contents().unwrap(),r.is(\":empty\")&&r.remove(),(r=t(\".atwho-query\",this.app.document)).text(r.text()).contents().last().unwrap(),void this._clearRange();if(/firefox/i.test(navigator.userAgent)){if(t(d.startContainer).is(this.$inputor))return void this._clearRange();e.which===i.BACKSPACE&&d.startContainer.nodeType===document.ELEMENT_NODE&&(c=d.startOffset-1)>=0?(o=d.cloneRange(),o.setStart(d.startContainer,c),t(o.cloneContents()).contents().last().is(\".atwho-inserted\")&&(a=t(d.startContainer).contents().get(c),this._setRange(\"after\",t(a).contents().last()))):e.which===i.LEFT&&d.startContainer.nodeType===document.TEXT_NODE&&(n=t(d.startContainer.previousSibling),n.is(\".atwho-inserted\")&&0===d.startOffset&&this._setRange(\"after\",n.contents().last()))}if(t(d.startContainer).closest(\".atwho-inserted\").addClass(\"atwho-query\").siblings().removeClass(\"atwho-query\"),(r=t(\".atwho-query\",this.app.document)).length>0&&r.is(\":empty\")&&0===r.text().length&&r.remove(),this._movingEvent(e)||r.removeClass(\"atwho-inserted\"),r.length>0)switch(e.which){case i.LEFT:return this._setRange(\"before\",r.get(0),d),void r.removeClass(\"atwho-query\");case i.RIGHT:return this._setRange(\"after\",r.get(0).nextSibling,d),void r.removeClass(\"atwho-query\")}if(r.length>0&&(f=r.attr(\"data-atwho-at-query\"))&&(r.empty().html(f).attr(\"data-atwho-at-query\",null),this._setRange(\"after\",r.get(0),d)),o=d.cloneRange(),o.setStart(d.startContainer,0),u=this.callbacks(\"matcher\").call(this,this.at,o.toString(),this.getOpt(\"startWithSpace\"),this.getOpt(\"acceptSpaceBar\")),h=\"string\"==typeof u,0===r.length&&h&&(s=d.startOffset-this.at.length-u.length)>=0&&(d.setStart(d.startContainer,s),r=t(\"<span/>\",this.app.document).attr(this.getOpt(\"editableAtwhoQueryAttrs\")).addClass(\"atwho-query\"),d.surroundContents(r.get(0)),l=r.contents().last().get(0),l&&(/firefox/i.test(navigator.userAgent)?(d.setStart(l,l.length),d.setEnd(l,l.length),this._clearRange(d)):this._setRange(\"after\",l,d))),!(h&&u.length<this.getOpt(\"minLen\",0)))return h&&u.length<=this.getOpt(\"maxLen\",20)?(p={text:u,el:r},this.trigger(\"matched\",[this.at,p.text]),this.query=p):(this.view.hide(),this.query={el:r},r.text().indexOf(this.at)>=0&&(this._movingEvent(e)&&r.hasClass(\"atwho-inserted\")?r.removeClass(\"atwho-query\"):!1!==this.callbacks(\"afterMatchFailed\").call(this,this.at,r)&&this._setRange(\"after\",this._unwrap(r.text(r.text()).contents().first()))),null)}},n.prototype.rect=function(){var e,i,n;return n=this.query.el.offset(),n&&this.query.el[0].getClientRects().length?(this.app.iframe&&!this.app.iframeAsRoot&&(i=(e=t(this.app.iframe)).offset(),n.left+=i.left-this.$inputor.scrollLeft(),n.top+=i.top-this.$inputor.scrollTop()),n.bottom=n.top+this.query.el.height(),n):void 0},n.prototype.insert=function(t,e){var i,n,r,o,s;return this.$inputor.is(\":focus\")||this.$inputor.focus(),n=this.getOpt(\"functionOverrides\"),n.insert?n.insert.call(this,t,e):(o=\"\"===(o=this.getOpt(\"suffix\"))?o:o||\" \",i=e.data(\"item-data\"),this.query.el.removeClass(\"atwho-query\").addClass(\"atwho-inserted\").html(t).attr(\"data-atwho-at-query\",\"\"+i[\"atwho-at\"]+this.query.text).attr(\"contenteditable\",\"false\"),(r=this._getRange())&&(this.query.el.length&&r.setEndAfter(this.query.el[0]),r.collapse(!1),r.insertNode(s=this.app.document.createTextNode(\"\"+o)),this._setRange(\"after\",s,r)),this.$inputor.is(\":focus\")||this.$inputor.focus(),this.$inputor.change())},n}(r);var u;u=function(){function e(t){this.context=t,this.at=this.context.at,this.storage=this.context.$inputor}return e.prototype.destroy=function(){return this.storage.data(this.at,null)},e.prototype.saved=function(){return this.fetch()>0},e.prototype.query=function(t,e){var i,n,r;return n=this.fetch(),r=this.context.getOpt(\"searchKey\"),n=this.context.callbacks(\"filter\").call(this.context,t,n,r)||[],i=this.context.callbacks(\"remoteFilter\"),n.length>0||!i&&0===n.length?e(n):i.call(this.context,t,e)},e.prototype.fetch=function(){return this.storage.data(this.at)||[]},e.prototype.save=function(t){return this.storage.data(this.at,this.context.callbacks(\"beforeSave\").call(this.context,t||[]))},e.prototype.load=function(t){return!this.saved()&&t?this._load(t):void 0},e.prototype.reload=function(t){return this._load(t)},e.prototype._load=function(e){return\"string\"==typeof e?t.ajax(e,{dataType:\"json\"}).done(function(t){return function(e){return t.save(e)}}(this)):this.save(e)},e}();var c;c=function(){function e(e){this.context=e,this.$el=t(\"<div class='atwho-view'><ul class='atwho-view-ul'></ul></div>\"),this.$elUl=this.$el.children(),this.timeoutID=null,this.context.$el.append(this.$el),this.bindEvent()}return e.prototype.init=function(){var t,e;return e=this.context.getOpt(\"alias\")||this.context.at.charCodeAt(0),t=this.context.getOpt(\"headerTpl\"),t&&1===this.$el.children().length&&this.$el.prepend(t),this.$el.attr({id:\"at-view-\"+e})},e.prototype.destroy=function(){return this.$el.remove()},e.prototype.bindEvent=function(){var e,i,n;return e=this.$el.find(\"ul\"),i=0,n=0,e.on(\"mousemove.atwho-view\",\"li\",function(r){return function(r){var o;if((i!==r.clientX||n!==r.clientY)&&(i=r.clientX,n=r.clientY,o=t(r.currentTarget),!o.hasClass(\"cur\")))return e.find(\".cur\").removeClass(\"cur\"),o.addClass(\"cur\")}}(this)).on(\"click.atwho-view\",\"li\",function(i){return function(n){return e.find(\".cur\").removeClass(\"cur\"),t(n.currentTarget).addClass(\"cur\"),i.choose(n),n.preventDefault()}}(this))},e.prototype.visible=function(){return t.expr.filters.visible(this.$el[0])},e.prototype.highlighted=function(){return this.$el.find(\".cur\").length>0},e.prototype.choose=function(t){var e,i;return(e=this.$el.find(\".cur\")).length&&(i=this.context.insertContentFor(e),this.context._stopDelayedCall(),this.context.insert(this.context.callbacks(\"beforeInsert\").call(this.context,i,e,t),e),this.context.trigger(\"inserted\",[e,t]),this.hide(t)),this.context.getOpt(\"hideWithoutSuffix\")?this.stopShowing=!0:void 0},e.prototype.reposition=function(e){var i,n,r,o;return i=this.context.app.iframeAsRoot?this.context.app.window:window,e.bottom+this.$el.height()-t(i).scrollTop()>t(i).height()&&(e.bottom=e.top-this.$el.height()),e.left>(r=t(i).width()-this.$el.width()-5)&&(e.left=r),n={left:e.left,top:e.bottom},null!=(o=this.context.callbacks(\"beforeReposition\"))&&o.call(this.context,n),this.$el.offset(n),this.context.trigger(\"reposition\",[n])},e.prototype.next=function(){var t,e,i,n;return t=this.$el.find(\".cur\").removeClass(\"cur\"),e=t.next(),e.length||(e=this.$el.find(\"li:first\")),e.addClass(\"cur\"),i=e[0],n=i.offsetTop+i.offsetHeight+(i.nextSibling?i.nextSibling.offsetHeight:0),this.scrollTop(Math.max(0,n-this.$el.height()))},e.prototype.prev=function(){var t,e,i,n;return t=this.$el.find(\".cur\").removeClass(\"cur\"),i=t.prev(),i.length||(i=this.$el.find(\"li:last\")),i.addClass(\"cur\"),n=i[0],e=n.offsetTop+n.offsetHeight+(n.nextSibling?n.nextSibling.offsetHeight:0),this.scrollTop(Math.max(0,e-this.$el.height()))},e.prototype.scrollTop=function(t){var e;return e=this.context.getOpt(\"scrollDuration\"),e?this.$elUl.animate({scrollTop:t},e):this.$elUl.scrollTop(t)},e.prototype.show=function(){var t;return this.stopShowing?void(this.stopShowing=!1):(this.visible()||(this.$el.show(),this.$el.scrollTop(0),this.context.trigger(\"shown\")),(t=this.context.rect())?this.reposition(t):void 0)},e.prototype.hide=function(t,e){var i;if(this.visible())return isNaN(e)?(this.$el.hide(),this.context.trigger(\"hidden\",[t])):(i=function(t){return function(){return t.hide()}}(this),clearTimeout(this.timeoutID),this.timeoutID=setTimeout(i,e))},e.prototype.render=function(e){var i,n,r,o,s,a,h;if(!(t.isArray(e)&&e.length>0))return void this.hide();for(this.$el.find(\"ul\").empty(),n=this.$el.find(\"ul\"),h=this.context.getOpt(\"displayTpl\"),r=0,s=e.length;s>r;r++)o=e[r],o=t.extend({},o,{\"atwho-at\":this.context.at}),a=this.context.callbacks(\"tplEval\").call(this.context,h,o,\"onDisplay\"),i=t(this.context.callbacks(\"highlighter\").call(this.context,a,this.context.query.text)),i.data(\"item-data\",o),n.append(i);return this.show(),this.context.getOpt(\"highlightFirst\")?n.find(\"li:first\").addClass(\"cur\"):void 0},e}();var p;p={load:function(t,e){var i;return(i=this.controller(t))?i.model.load(e):void 0},isSelecting:function(){var t;return!!(null!=(t=this.controller())?t.view.visible():void 0)},hide:function(){var t;return null!=(t=this.controller())?t.view.hide():void 0},reposition:function(){var t;return(t=this.controller())?t.view.reposition(t.rect()):void 0},setIframe:function(t,e){return this.setupRootElement(t,e),null},run:function(){return this.dispatch()},destroy:function(){return this.shutdown(),this.$inputor.data(\"atwho\",null)}},t.fn.atwho=function(e){var i,r;return i=arguments,r=null,this.filter('textarea, input, [contenteditable=\"\"], [contenteditable=true]').each(function(){var o,s;return(s=(o=t(this)).data(\"atwho\"))||o.data(\"atwho\",s=new n(this)),\"object\"!=typeof e&&e?p[e]&&s?r=p[e].apply(s,Array.prototype.slice.call(i,1)):t.error(\"Method \"+e+\" does not exist on jQuery.atwho\"):s.reg(e.at,e)}),null!=r?r:this},t.fn.atwho[\"default\"]={at:void 0,alias:void 0,data:null,displayTpl:\"<li>${name}</li>\",insertTpl:\"${atwho-at}${name}\",headerTpl:null,callbacks:e,functionOverrides:{},searchKey:\"name\",suffix:void 0,hideWithoutSuffix:!1,startWithSpace:!0,acceptSpaceBar:!1,highlightFirst:!0,limit:5,maxLen:20,minLen:0,displayTimeout:300,delay:null,spaceSelectsMatch:!1,tabSelectsMatch:!0,editableAtwhoQueryAttrs:{},scrollDuration:150,suspendOnComposing:!0,lookUpOnClick:!0},t.fn.atwho.debug=!1});","\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/lib/loader.js!./autocomplete.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/lib/loader.js!./autocomplete.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/lib/loader.js!./autocomplete.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"/**\\n * based upon apps/comments/js/vendor/At.js/dist/css/jquery.atwho.css,\\n * only changed colors and font-weight\\n */\\n.atwho-view {\\n position: absolute;\\n top: 0;\\n left: 0;\\n display: none;\\n margin-top: 18px;\\n background: var(--color-main-background);\\n color: var(--color-main-text);\\n border: 1px solid var(--color-border);\\n border-radius: var(--border-radius);\\n box-shadow: 0 0 5px var(--color-box-shadow);\\n min-width: 120px;\\n z-index: 11110 !important; }\\n\\n.atwho-view .atwho-header {\\n padding: 5px;\\n margin: 5px;\\n cursor: pointer;\\n border-bottom: solid 1px var(--color-border);\\n color: var(--color-main-text);\\n font-size: 11px;\\n font-weight: bold; }\\n\\n.atwho-view .atwho-header .small {\\n color: var(--color-main-text);\\n float: right;\\n padding-top: 2px;\\n margin-right: -5px;\\n font-size: 12px;\\n font-weight: normal; }\\n\\n.atwho-view .atwho-header:hover {\\n cursor: default; }\\n\\n.atwho-view .cur {\\n background: var(--color-primary);\\n color: var(--color-primary-text); }\\n\\n.atwho-view .cur small {\\n color: var(--color-primary-text); }\\n\\n.atwho-view strong {\\n color: var(--color-main-text);\\n font-weight: normal; }\\n\\n.atwho-view .cur strong {\\n color: var(--color-primary-text);\\n font-weight: normal; }\\n\\n.atwho-view ul {\\n /* width: 100px; */\\n list-style: none;\\n padding: 0;\\n margin: auto;\\n max-height: 200px;\\n overflow-y: auto; }\\n\\n.atwho-view ul li {\\n display: block;\\n padding: 5px 10px;\\n border-bottom: 1px solid var(--color-border);\\n cursor: pointer; }\\n\\n.atwho-view small {\\n font-size: smaller;\\n color: var(--color-main-text);\\n font-weight: normal; }\\n\", \"\"]);\n\n","\n/**\n * When source maps are enabled, `style-loader` uses a link element with a data-uri to\n * embed the css on the page. This breaks all relative urls because now they are relative to a\n * bundle instead of the current page.\n *\n * One solution is to only use full urls, but that may be impossible.\n *\n * Instead, this function \"fixes\" the relative urls to be absolute according to the current page location.\n *\n * A rudimentary test suite is located at `test/fixUrls.js` and can be run via the `npm test` command.\n *\n */\n\nmodule.exports = function (css) {\n // get current location\n var location = typeof window !== \"undefined\" && window.location;\n\n if (!location) {\n throw new Error(\"fixUrls requires window.location\");\n }\n\n\t// blank or null?\n\tif (!css || typeof css !== \"string\") {\n\t return css;\n }\n\n var baseUrl = location.protocol + \"//\" + location.host;\n var currentDir = baseUrl + location.pathname.replace(/\\/[^\\/]*$/, \"/\");\n\n\t// convert each url(...)\n\t/*\n\tThis regular expression is just a way to recursively match brackets within\n\ta string.\n\n\t /url\\s*\\( = Match on the word \"url\" with any whitespace after it and then a parens\n\t ( = Start a capturing group\n\t (?: = Start a non-capturing group\n\t [^)(] = Match anything that isn't a parentheses\n\t | = OR\n\t \\( = Match a start parentheses\n\t (?: = Start another non-capturing groups\n\t [^)(]+ = Match anything that isn't a parentheses\n\t | = OR\n\t \\( = Match a start parentheses\n\t [^)(]* = Match anything that isn't a parentheses\n\t \\) = Match a end parentheses\n\t ) = End Group\n *\\) = Match anything and then a close parens\n ) = Close non-capturing group\n * = Match anything\n ) = Close capturing group\n\t \\) = Match a close parens\n\n\t /gi = Get all matches, not the first. Be case insensitive.\n\t */\n\tvar fixedCss = css.replace(/url\\s*\\(((?:[^)(]|\\((?:[^)(]+|\\([^)(]*\\))*\\))*)\\)/gi, function(fullMatch, origUrl) {\n\t\t// strip quotes (if they exist)\n\t\tvar unquotedOrigUrl = origUrl\n\t\t\t.trim()\n\t\t\t.replace(/^\"(.*)\"$/, function(o, $1){ return $1; })\n\t\t\t.replace(/^'(.*)'$/, function(o, $1){ return $1; });\n\n\t\t// already a full url? no change\n\t\tif (/^(#|data:|http:\\/\\/|https:\\/\\/|file:\\/\\/\\/|\\s*$)/i.test(unquotedOrigUrl)) {\n\t\t return fullMatch;\n\t\t}\n\n\t\t// convert the url to a full url\n\t\tvar newUrl;\n\n\t\tif (unquotedOrigUrl.indexOf(\"//\") === 0) {\n\t\t \t//TODO: should we add protocol?\n\t\t\tnewUrl = unquotedOrigUrl;\n\t\t} else if (unquotedOrigUrl.indexOf(\"/\") === 0) {\n\t\t\t// path should be relative to the base url\n\t\t\tnewUrl = baseUrl + unquotedOrigUrl; // already starts with '/'\n\t\t} else {\n\t\t\t// path should be relative to current directory\n\t\t\tnewUrl = currentDir + unquotedOrigUrl.replace(/^\\.\\//, \"\"); // Strip leading './'\n\t\t}\n\n\t\t// send back the fixed url(...)\n\t\treturn \"url(\" + JSON.stringify(newUrl) + \")\";\n\t});\n\n\t// send back the fixed css\n\treturn fixedCss;\n};\n","\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/lib/loader.js!./comments.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/lib/loader.js!./comments.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/lib/loader.js!./comments.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"/*\\n * Copyright (c) 2016\\n *\\n * This file is licensed under the Affero General Public License version 3\\n * or later.\\n *\\n * See the COPYING-README file.\\n *\\n */\\n#commentsTabView .emptycontent {\\n margin-top: 0; }\\n\\n#commentsTabView .newCommentForm {\\n margin-left: 36px;\\n position: relative; }\\n\\n#commentsTabView .newCommentForm .message {\\n width: 100%;\\n padding: 10px;\\n min-height: 44px;\\n margin: 0;\\n /* Prevent the text from overlapping with the submit button. */\\n padding-right: 30px; }\\n\\n#commentsTabView .newCommentForm .submit,\\n#commentsTabView .newCommentForm .submitLoading {\\n width: 44px;\\n height: 44px;\\n margin: 0;\\n padding: 13px;\\n background-color: transparent;\\n border: none;\\n opacity: .3;\\n position: absolute;\\n bottom: 0;\\n right: 0; }\\n\\n#commentsTabView .deleteLoading {\\n padding: 14px;\\n vertical-align: middle; }\\n\\n#commentsTabView .newCommentForm .submit:not(:disabled):hover,\\n#commentsTabView .newCommentForm .submit:not(:disabled):focus {\\n opacity: 1; }\\n\\n#commentsTabView .newCommentForm div.message {\\n resize: none; }\\n\\n#commentsTabView .newCommentForm div.message:empty:before {\\n content: attr(data-placeholder);\\n color: grey; }\\n\\n#commentsTabView .comment {\\n position: relative;\\n /** padding bottom is little more so that the top and bottom gap look uniform **/\\n padding: 10px 0 15px; }\\n\\n#commentsTabView .comments .comment {\\n border-top: 1px solid var(--color-border); }\\n\\n#commentsTabView .comment .avatar,\\n.atwho-view-ul * .avatar {\\n width: 32px;\\n height: 32px;\\n line-height: 32px;\\n margin-right: 5px; }\\n\\n#commentsTabView .comment .message .avatar,\\n.atwho-view-ul * .avatar {\\n display: inline-block; }\\n\\n#activityTabView li.comment.collapsed .activitymessage,\\n#commentsTabView .comment.collapsed .message {\\n white-space: pre-wrap; }\\n\\n#activityTabView li.comment.collapsed .activitymessage,\\n#commentsTabView .comment.collapsed .message {\\n max-height: 70px;\\n overflow: hidden; }\\n\\n#activityTabView li.comment .message-overlay,\\n#commentsTabView .comment .message-overlay {\\n display: none; }\\n\\n#activityTabView li.comment.collapsed .message-overlay,\\n#commentsTabView .comment.collapsed .message-overlay {\\n display: block;\\n position: absolute;\\n z-index: 2;\\n height: 50px;\\n pointer-events: none;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n background: -moz-linear-gradient(rgba(var(--color-main-background), 0), var(--color-main-background));\\n background: -webkit-linear-gradient(rgba(var(--color-main-background), 0), var(--color-main-background));\\n background: -o-linear-gradient(rgba(var(--color-main-background), 0), var(--color-main-background));\\n background: -ms-linear-gradient(rgba(var(--color-main-background), 0), var(--color-main-background));\\n background: linear-gradient(rgba(var(--color-main-background), 0), var(--color-main-background));\\n background-repeat: no-repeat; }\\n\\n#commentsTabView .hidden {\\n display: none !important; }\\n\\n/** set min-height as 44px to ensure that it fits the button sizes. **/\\n#commentsTabView .comment .authorRow {\\n min-height: 44px; }\\n\\n#commentsTabView .comment .authorRow .tooltip {\\n /** because of the padding on the element, the tooltip appear too far up,\\n\\t adding this brings them closer to the element**/\\n margin-top: 5px; }\\n\\n.atwho-view-ul * .avatar-name-wrapper,\\n#commentsTabView .comment .authorRow {\\n position: relative;\\n display: inline-flex;\\n align-items: center;\\n width: 100%; }\\n\\n#commentsTabView .comment:not(.newCommentRow) .message .avatar-name-wrapper:not(.currentUser),\\n#commentsTabView .comment:not(.newCommentRow) .message .avatar-name-wrapper:not(.currentUser) .avatar,\\n#commentsTabView .comment:not(.newCommentRow) .message .avatar-name-wrapper:not(.currentUser) .avatar img,\\n#commentsTabView .comment .authorRow .avatar:not(.currentUser),\\n#commentsTabView .comment .authorRow .author:not(.currentUser) {\\n cursor: pointer; }\\n\\n.atwho-view-ul .avatar-name-wrapper,\\n.atwho-view-ul .avatar-name-wrapper .avatar,\\n.atwho-view-ul .avatar-name-wrapper .avatar img {\\n cursor: pointer; }\\n\\n#commentsTabView .comments li .message .atwho-inserted .avatar-name-wrapper,\\n#commentsTabView .newCommentForm .atwho-inserted .avatar-name-wrapper {\\n /* Make the wrapper the positioning context of its child contacts\\n\\t\\t * menu. */\\n position: relative;\\n display: inline;\\n vertical-align: top;\\n background-color: var(--color-background-dark);\\n border-radius: 50vh;\\n padding: 1px 7px 1px 1px;\\n /* Ensure that the avatar and the user name will be kept together. */\\n white-space: nowrap; }\\n #commentsTabView .comments li .message .atwho-inserted .avatar-name-wrapper .avatar,\\n #commentsTabView .newCommentForm .atwho-inserted .avatar-name-wrapper .avatar {\\n height: 16px;\\n width: 16px;\\n vertical-align: middle;\\n padding: 1px;\\n margin-top: -3px;\\n margin-left: 0;\\n margin-right: 2px; }\\n #commentsTabView .comments li .message .atwho-inserted .avatar-name-wrapper .avatar img,\\n #commentsTabView .newCommentForm .atwho-inserted .avatar-name-wrapper .avatar img {\\n vertical-align: top; }\\n #commentsTabView .comments li .message .atwho-inserted .avatar-name-wrapper strong,\\n #commentsTabView .newCommentForm .atwho-inserted .avatar-name-wrapper strong {\\n /* Ensure that the user name is shown in bold, as different browsers\\n\\t\\t\\t * use different font weights for strong elements. */\\n font-weight: bold; }\\n\\n#commentsTabView .comments li .message .atwho-inserted .avatar-name-wrapper.currentUser,\\n#commentsTabView .newCommentForm .atwho-inserted .avatar-name-wrapper.currentUser {\\n background-color: var(--color-primary);\\n color: var(--color-primary-text); }\\n\\n.atwho-view-ul * .avatar-name-wrapper {\\n white-space: nowrap; }\\n\\n#commentsTabView .comment .author,\\n#commentsTabView .comment .date {\\n opacity: .5; }\\n\\n#commentsTabView .comment .author {\\n max-width: 210px;\\n text-overflow: ellipsis;\\n overflow: hidden;\\n white-space: nowrap; }\\n\\n#commentsTabView .comment .date {\\n margin-left: auto;\\n /** this is to fix the tooltip being too close due to the margin-top applied\\n\\t to bring the tooltip closer for the action icons **/\\n padding: 10px 0px; }\\n\\n#commentsTabView .comments > li:not(.newCommentRow) .message {\\n padding-left: 40px;\\n word-wrap: break-word;\\n overflow-wrap: break-word; }\\n\\n#commentsTabView .comment .action {\\n opacity: 0.3;\\n padding: 14px;\\n display: block; }\\n\\n#commentsTabView .comment .action:hover,\\n#commentsTabView .comment .action:focus {\\n opacity: 1; }\\n\\n#commentsTabView .newCommentRow .action-container {\\n margin-left: auto; }\\n\\n#commentsTabView .comment.disabled .message {\\n opacity: 0.3; }\\n\\n#commentsTabView .comment.disabled .action {\\n display: none; }\\n\\n#commentsTabView .message.error {\\n color: #e9322d;\\n border-color: #e9322d;\\n box-shadow: 0 0 6px #f8b9b7; }\\n\\n.app-files .action-comment {\\n padding: 16px 14px; }\\n\\n#commentsTabView .comment .message .contactsmenu-popover {\\n left: -6px;\\n top: 24px; }\\n\", \"\"]);\n\n"],"sourceRoot":""}